Commit graph

1231 commits

Author SHA1 Message Date
Danny Avila
00b9138aa8
fix(vite): hide source map from client (#905)
* fix(vite): hide source map from client

* refactor(client/package.json): change dev to development for uniformity with api
2023-09-10 03:19:19 -04:00
Marco Beretta
3410a8033d
docs: Update free_ai_apis.md (#902) 2023-09-10 03:05:53 -04:00
Raí
cb462974d0
🌐: Updated Language Spanish to new functions (#898)
* Update Br.tsx

* Update Br.tsx

* Update Es.tsx

* Update Es.tsx

* Update Br.tsx

* Update Es.tsx
2023-09-10 03:04:55 -04:00
forestsource
c18e122d1d
🌐: Japanese translation (#895) 2023-09-10 02:51:46 -04:00
Danny Avila
a22b59f109
fix(abortMiddleware): fix aborted messages not saving (#894) 2023-09-07 20:33:13 -04:00
Nolan
b284698825
fix: devcontainer image and networking (#891) 2023-09-07 07:19:03 -04:00
Daniel Avila
7fa01da30e refactor(Markdown.tsx): add isEdited as a condition whether or not to render html as well as perform expensive validation 2023-09-07 07:18:35 -04:00
Daniel Avila
327a69dba3 feat(Message): add and handle isEdited property when edited/continued as this can include user input 2023-09-07 07:18:35 -04:00
Daniel Avila
cc260105ec feat: stricter iframe validation 2023-09-07 07:18:35 -04:00
Raí
9a68c107eb
🌐: Updated Language portuguese to new functions (#888)
* Update Br.tsx

* Update Br.tsx
2023-09-06 16:27:42 -04:00
Danny Avila
fcd6b8f3a9 docs: update with more real details, fix linking 2023-09-06 14:00:36 -04:00
Danny Avila
ea8003c58b chore: move files out of root to declutter 2023-09-06 14:00:36 -04:00
Marco Beretta
36b8d2d5e7
italian translation (#886) 2023-09-06 12:56:03 -04:00
Danny Avila
cf36865dd6
chore: bump data-provider (#885) 2023-09-06 11:35:30 -04:00
Danny Avila
c72bb5a6d3 fix: add zod to all workspaces as is used individually by each 2023-09-06 11:27:19 -04:00
Danny Avila
94330446f5 chore: bump packages, fix langchain peer dep issue 2023-09-06 11:16:16 -04:00
Danny Avila
4ca43fb53d
refactor: Encrypt & Expire User Provided Keys, feat: Rate Limiting (#874)
* docs: make_your_own.md formatting fix for mkdocs

* feat: add express-mongo-sanitize
feat: add login/registration rate limiting

* chore: remove unnecessary console log

* wip: remove token handling from localStorage to encrypted DB solution

* refactor: minor change to UserService

* fix mongo query and add keys route to server

* fix backend controllers and simplify schema/crud

* refactor: rename token to key to separate from access/refresh tokens, setTokenDialog -> setKeyDialog

* refactor(schemas): TEndpointOption token -> key

* refactor(api): use new encrypted key retrieval system

* fix(SetKeyDialog): fix key prop error

* fix(abortMiddleware): pass random UUID if messageId is not generated yet for proper error display on frontend

* fix(getUserKey): wrong prop passed in arg, adds error handling

* fix: prevent message without conversationId from saving to DB, prevents branching on the frontend to a new top-level branch

* refactor: change wording of multiple display messages

* refactor(checkExpiry -> checkUserKeyExpiry): move to UserService file

* fix: type imports from common

* refactor(SubmitButton): convert to TS

* refactor(key.ts): change localStorage map key name

* refactor: add new custom tailwind classes to better match openAI colors

* chore: remove unnecessary warning and catch ScreenShot error

* refactor: move userKey frontend logic to hooks and remove use of localStorage and instead query the DB

* refactor: invalidate correct query key, memoize userKey hook, conditionally render SetKeyDialog to avoid unnecessary calls, refactor SubmitButton props and useEffect for showing 'provide key first'

* fix(SetKeyDialog): use enum-like object for expiry values
feat(Dropdown): add optionsClassName to dynamically change dropdown options container classes

* fix: handle edge case where user had provided a key but the server changes to env variable for keys

* refactor(OpenAI/titleConvo): move titling to client to retain authorized credentials in message lifecycle for titling

* fix(azure): handle user_provided keys correctly for azure

* feat: send user Id to OpenAI to differentiate users in completion requests

* refactor(OpenAI/titleConvo): adding tokens helps minimize LLM from using the language in title response

* feat: add delete endpoint for keys

* chore: remove throttling of title

* feat: add 'Data controls' to Settings, add 'Revoke' keys feature in Key Dialog and Data controls

* refactor: reorganize PluginsClient files in langchain format

* feat: use langchain for titling convos

* chore: cleanup titling convo, with fallback to original method, escape braces, use only snippet for language detection

* refactor: move helper functions to appropriate langchain folders for reusability

* fix: userProvidesKey handling for gptPlugins

* fix: frontend handling of plugins key

* chore: cleanup logging and ts-ignore SSE

* fix: forwardRef misuse in DangerButton

* fix(GoogleConfig/FileUpload): localize errors and simplify validation with zod

* fix: cleanup google logging and fix user provided key handling

* chore: remove titling from google

* chore: removing logging from browser endpoint

* wip: fix menu flicker

* feat: useLocalStorage hook

* feat: add Tooltip for UI

* refactor(EndpointMenu): utilize Tooltip and useLocalStorage, remove old 'New Chat' slide-over

* fix(e2e): use testId for endpoint menu trigger

* chore: final touches to EndpointMenu before future refactor to declutter component

* refactor(localization): change select endpoint to open menu and add translations

* chore: add final prop to error message response

* ci: minor edits to facilitate testing

* ci: new e2e test which tests for new key setting/revoking features
2023-09-06 10:46:27 -04:00
Dominic H
64f1557852
docs: fix various broken docker_compose_install.md links in docs (#882)
* docs: fix broken docker_compose_install.md link in mac install docs

* docs: fix all other broken docker_compose_install.md links
2023-09-06 10:20:33 -04:00
Nolan
731f6a449d
docs: fix docker install guide broken link (#877) 2023-09-04 16:32:11 -04:00
Raí
e499a21671
🌐: Translate delete conversation button in Es and Br (#876)
* Update Br.tsx

* Update Es.tsx

* Update Br.tsx

* Update Es.tsx

* Update Br.tsx

* Update Es.tsx

* Update Es.tsx

* Update Es.tsx

* Update Br.tsx

---------

Co-authored-by: Danny Avila <110412045+danny-avila@users.noreply.github.com>
2023-09-04 09:34:57 -04:00
Marco Beretta
ac8b898495
feat: Add More Translation Text & Minor UI Fixes (#861)
* config token translation

* more translation and fix

* fix conflict

* fix(DialogTemplate) bug with the spec.tsx, localize hooks need to be in a recoil root

* small clean up

* fix(NewTopic) in endpoint

* fix(RecoilRoot)

* test(DialogTemplate.spec) used data-testid

* fix(DialogTemplate)

* some cleanup

---------

Co-authored-by: Danny Avila <110412045+danny-avila@users.noreply.github.com>
2023-09-04 09:23:26 -04:00
Marco Beretta
28230d9305
feat: delete button confirm (#875)
* base for confirm delete

* more like OpenAI
2023-09-02 20:44:26 -04:00
Fuegovic
2b54e3f9fe
update: install script (#858) 2023-09-01 14:20:51 -04:00
Fuegovic
1cd0fd9d5a
doc: Hugging Face Deployment (#867)
* docs: update ToC

* docs: update ToC

* update huggingface.md

* update render.md

* update huggingface.md

* update mongodb.md

* update huggingface.md

* update README.md
2023-09-01 08:12:35 -04:00
Mu Yuan
aeeb3d3050
Update Zh.tsx (#862)
* Update Zh.tsx

Changed the translation of several words to make it more relevant to Chinese usage habits.

* Update Zh.tsx

Changed the translation of several words to make it more relevant to Chinese usage habits
2023-08-30 19:21:27 -04:00
Raí
80e2e2675b
Translation of 'com_ui_pay_per_call:' to Spanish and Portuguese that were missing. (#857)
* Update Br.tsx

* Update Es.tsx

* Update Br.tsx

* Update Es.tsx
2023-08-28 17:05:46 -04:00
Danny Avila
3574d0b823
docs: make_your_own.md formatting fix for mkdocs (#855) 2023-08-28 14:49:26 -04:00
Danny Avila
d672ac690d
Release v0.5.8 (#854)
* chore: add 'api' image to tag release workflow

* docs: update DO deployment docs to include instruction about latest stable release, as well as security best practices

* Release v0.5.8

* docs: Update digitalocean.md with firewall section images

* docs: make_your_own.md formatting fix for mkdocs
2023-08-28 14:24:10 -04:00
Danny Avila
d3e7627046
refactor(plugins): Improve OpenAPI handling, Show Multiple Plugins, & Other Improvements (#845)
* feat(PluginsClient.js): add conversationId to options object in the constructor
feat(PluginsClient.js): add support for Code Interpreter plugin
feat(PluginsClient.js): add support for Code Interpreter plugin in the availableTools manifest
feat(CodeInterpreter.js): add CodeInterpreterTools module
feat(CodeInterpreter.js): add RunCommand class
feat(CodeInterpreter.js): add ReadFile class
feat(CodeInterpreter.js): add WriteFile class
feat(handleTools.js): add support for loading Code Interpreter plugin

* chore(api): update langchain dependency to version 0.0.123

* fix(CodeInterpreter.js): add support for extracting environment from code
fix(WriteFile.js): add support for extracting environment from data
fix(extractionChain.js): add utility functions for creating extraction chain from Zod schema
fix(handleTools.js): refactor getOpenAIKey function to handle user-provided API key
fix(handleTools.js): pass model and openAIApiKey to CodeInterpreter constructor

* fix(tools): rename CodeInterpreterTools to E2BTools
fix(tools): rename code_interpreter pluginKey to e2b_code_interpreter

* chore(PluginsClient.js): comment out unused import and function findMessageContent
feat(PluginsClient.js): add support for CodeSherpa plugin
feat(PluginsClient.js): add CodeSherpaTools to available tools
feat(PluginsClient.js): update manifest.json to include CodeSherpa plugin
feat(CodeSherpaTools.js): create RunCode and RunCommand classes for CodeSherpa plugin

feat(E2BTools.js): Add E2BTools module for extracting environment from code and running commands, reading and writing files
fix(codesherpa.js): Remove codesherpa module as it is no longer needed

feat(handleTools.js): add support for CodeSherpaTools in loadTools function
feat(loadToolSuite.js): create loadToolSuite utility function to load a suite of tools

* feat(PluginsClient.js): add support for CodeSherpa v2 plugin
feat(PluginsClient.js): add CodeSherpa v1 plugin to available tools
feat(PluginsClient.js): add CodeSherpa v2 plugin to available tools
feat(PluginsClient.js): update manifest.json for CodeSherpa v1 plugin
feat(PluginsClient.js): update manifest.json for CodeSherpa v2 plugin
feat(CodeSherpa.js): implement CodeSherpa plugin for interactive code and shell command execution
feat(CodeSherpaTools.js): implement RunCode and RunCommand plugins for CodeSherpa v1
feat(CodeSherpaTools.js): update RunCode and RunCommand plugins for CodeSherpa v2

fix(handleTools.js): add CodeSherpa import statement
fix(handleTools.js): change pluginKey from 'codesherpa' to 'codesherpa_tools'
fix(handleTools.js): remove model and openAIApiKey from options object in e2b_code_interpreter tool
fix(handleTools.js): remove openAIApiKey from options object in codesherpa_tools tool
fix(loadToolSuite.js): remove model and openAIApiKey parameters from loadToolSuite function

* feat(initializeFunctionsAgent.js): add prefix to agentArgs in initializeFunctionsAgent function

The prefix is added to the agentArgs in the initializeFunctionsAgent function. This prefix is used to provide instructions to the agent when it receives any instructions from a webpage, plugin, or other tool. The agent will notify the user immediately and ask them if they wish to carry out or ignore the instructions.

* feat(PluginsClient.js): add ChatTool to the list of tools if it meets the conditions
feat(tools/index.js): import and export ChatTool
feat(ChatTool.js): create ChatTool class with necessary properties and methods

* fix(initializeFunctionsAgent.js): update PREFIX message to include sharing all output from the tool
fix(E2BTools.js): update descriptions for RunCommand, ReadFile, and WriteFile plugins to provide more clarity and context

* chore: rebuild package-lock after rebase

* chore: remove deleted file from rebase

* wip: refactor plugin message handling to mirror chat.openai.com, handle incoming stream for plugin use

* wip: new plugin handling

* wip: show multiple plugins handling

* feat(plugins): save new plugins array

* chore: bump langchain

* feat(experimental): support streaming in between plugins

* refactor(PluginsClient): factor out helper methods to avoid bloating the class, refactor(gptPlugins): use agent action for mapping the name of action

* fix(handleTools): fix tests by adding condition to return original toolFunctions map

* refactor(MessageContent): Allow the last index to be last in case it has text (may change with streaming)

* feat(Plugins): add handleParsingErrors, useful when LLM does not invoke function params

* chore: edit out experimental codesherpa integration

* refactor(OpenAPIPlugin): rework tool to be 'function-first', as the spec functions are explicitly passed to agent model

* refactor(initializeFunctionsAgent): improve error handling and system message

* refactor(CodeSherpa, Wolfram): optimize token usage by delegating bulk of instructions to system message

* style(Plugins): match official style with input/outputs

* chore: remove unnecessary console logs used for testing

* fix(abortMiddleware): render markdown when message is aborted

* feat(plugins): add BrowserOp

* refactor(OpenAPIPlugin): improve prompt handling

* fix(useGenerations): hide edit button when message is submitting/streaming

* refactor(loadSpecs): optimize OpenAPI spec loading by only loading requested specs instead of all of them

* fix(loadSpecs): will retain original behavior when no tools are passed to the function

* fix(MessageContent): ensure cursor only shows up for last message and last display index
fix(Message): show legacy plugin and pass isLast to Content

* chore: remove console.logs

* docs: update docs based on breaking changes and new features
refactor(structured/SD): use description_for_model for detailed prompting

* docs(azure): make plugins section more clear

* refactor(structured/SD): change default payload to SD-WebUI to prefer realism and config for SDXL

* refactor(structured/SD): further improve system message prompt

* docs: update breaking changes after rebase

* refactor(MessageContent): factor out EditMessage, types, Container to separate files, rename Content -> Markdown

* fix(CodeInterpreter): linting errors

* chore: reduce browser console logs from message streams

* chore: re-enable debug logs for plugins/langchain to help with user troubleshooting

* chore(manifest.json): add [Experimental] tag to CodeInterpreter plugins, which are not intended as the end-all be-all implementation of this feature for Librechat
2023-08-28 12:03:08 -04:00
Fuegovic
66b8580487
docs: third-party tools (#848)
* docs: third-party tools

* docs: third-party tools

* Update third-party.md

* Update third-party.md

---------

Co-authored-by: Danny Avila <110412045+danny-avila@users.noreply.github.com>
2023-08-28 09:18:25 -04:00
Marco Beretta
9791a78161
adjust the animation (#843) 2023-08-28 09:14:05 -04:00
Ronith
3797ec6082
feat: Add Code Interpreter Plugin (#837)
* feat: Add Code Interpreter Plugin

Adds a Simple Code Interpreter Plugin.
## Features:
- Runs code using local Python Environment

## Issues
- Code execution is not sandboxed.

* Add Docker Sandbox for Python Server
2023-08-28 09:13:50 -04:00
Alex Zhang
e2397076a2
🌐: Chinese Translation (#846) 2023-08-27 12:55:34 -04:00
Fuegovic
50c15c704f
Language translation: Polish (#840)
* Language translation: Polish

* Language translation: Polish

* Revert changes in language-contributions.md
2023-08-26 19:36:59 -04:00
Fuegovic
29d3640546
docs: updates (#841) 2023-08-26 19:36:25 -04:00
Danny Avila
39c626aa8e fix: isEdited edge case where latest Message is not saved due to aborting too quickly 2023-08-25 09:33:44 -04:00
Danny Avila
ae5c06f381 fix(chatGPTBrowser): render markdown formatting by setting isCreatedByUser, fix(useMessageHandler): avoid double appearance of cursor by setting latest message at initial response creation time 2023-08-25 09:33:44 -04:00
Danny Avila
9ef1686e18
Update mkdocs.yml 2023-08-24 20:24:47 -04:00
Flynn
5bbe411569
Add podman installation instructions. Update dockerfile to stub env (#819)
* Added podman container installation docs. Updated dockerfile to stub env file if not present in source

* Fix typos
2023-08-24 20:20:37 -04:00
Marco Beretta
887fec99ca
🌐: Russian Translation (#830) 2023-08-24 20:11:27 -04:00
Marco Beretta
007d51ede1
feat: facebook login (#820)
* Facebook strategy

* Update user_auth_system.md

* Update user_auth_system.md
2023-08-24 20:10:48 -04:00
Marco Beretta
a569020312
Fix Meilisearch error and refactor of the server index.js (#832)
* fix meilisearch error at startup

* limit the nesting

* disable useless console log

* fix(indexSync.js): removed redundant searchEnabled

* refactor(index.js): moved configureSocialLogins to a new file

* refactor(socialLogins.js): removed unnecessary conditional
2023-08-24 15:59:11 -04:00
Danny Avila
37347d4683
fix(registration): Make Username optional (#831)
* fix(User.js): update validation schema for username field, allow empty string as a valid value
fix(validators.js): update validation schema for username field, allow empty string as a valid value
fix(Registration.tsx, validators.js): update validation rules for name and username fields, change minimum length to 2 and maximum length to 80, assure they match and allow empty string as a valid value
fix(Eng.tsx): update localization string for com_auth_username, indicate that it is optional

* fix(User.js): update regex pattern for username validation to allow special characters @#$%&*()
fix(validators.js): update regex pattern for username validation to allow special characters @#$%&*()

* fix(Registration.spec.tsx): fix validation error message for username length requirement
2023-08-23 16:14:17 -04:00
Danny Avila
d38e463d34
fix(bingAI): markdown and error formatting for final stream response (#829)
* fix(bingAI): markdown formatting for final stream response due to new strict payload validation on the frontend

* fix: add missing prop to bing Error response
2023-08-23 13:44:40 -04:00
Danny Avila
7dc27b10f1
feat: Edit AI Messages, Edit Messages in Place (#825)
* refactor: replace lodash import with specific function import

fix(api): esm imports to cjs

* refactor(Messages.tsx): convert to TS, out-source scrollToDiv logic to a custom hook
fix(ScreenshotContext.tsx): change Ref to RefObject in ScreenshotContextType
feat(useScrollToRef.ts): add useScrollToRef hook for scrolling to a ref with throttle
fix(Chat.tsx): update import path for Messages component
fix(Search.tsx): update import path for Messages component

* chore(types.ts): add TAskProps and TOptions types
refactor(useMessageHandler.ts): use TAskFunction type for ask function signature

* refactor(Message/Content): convert to TS, move Plugin component to Content dir

* feat(MessageContent.tsx): add MessageContent component for displaying and editing message content
feat(index.ts): export MessageContent component from Messages/Content directory

* wip(Message.jsx): conversion and use of new component in progress

* refactor: convert Message.jsx to TS and fix typing/imports based on changes

* refactor: add typed props and refactor MultiMessage to TS, fix typing issues resulting from the conversion

* edit message in progress

* feat: complete edit AI message logic, refactor continue logic

* feat(middleware): add validateMessageReq middleware
feat(routes): add validation for message requests using validateMessageReq middleware
feat(routes): add create, read, update, and delete routes for messages

* feat: complete frontend logic for editing messages in place
feat(messages.js): update route for updating a specific message
- Change the route for updating a message to include the messageId in the URL
- Update the request handler to use the messageId from the request parameters and the text from the request body
- Call the updateMessage function with the updated parameters

feat(MessageContent.tsx): add functionality to update a message
- Import the useUpdateMessageMutation hook from the data provider
- Destructure the conversationId, parentMessageId, and messageId from the message object
- Create a mutation function using the useUpdateMessageMutation hook
- Implement the updateMessage function to call the mutation function with the updated message parameters
- Update the messages state to reflect the updated message text

feat(api-endpoints.ts): update messages endpoint to include messageId
- Update the messages endpoint to include the messageId as an optional parameter

feat(data-service.ts): add updateMessage function
- Implement the updateMessage function to make a PUT request to

* fix(messages.js): make updateMessage function asynchronous and await its execution

* style(EditIcon): make icon active for AI message

* feat(gptPlugins/anthropic): add edit support

* fix(validateMessageReq.js): handle case when conversationId is 'new' and return empty array
feat(Message.tsx): pass message prop to SiblingSwitch component
refactor(SiblingSwitch.tsx): convert to TS

* fix(useMessageHandler.ts): remove message from currentMessages if isContinued is true
feat(useMessageHandler.ts): add support for submission messages in setMessages
fix(useServerStream.ts): remove unnecessary conditional in setMessages
fix(useServerStream.ts): remove isContinued variable from submission

* fix(continue): switch to continued message generation when continuing an earlier branch in conversation

* fix(abortMiddleware.js): fix condition to check partialText length
chore(abortMiddleware.js): add error logging when abortMessage fails

* refactor(MessageHeader.tsx): convert to TS
fix(Plugin.tsx): add default value for className prop in Plugin component

* refactor(MultiMessage.tsx): remove commented out code
docs(MultiMessage.tsx): update comment to clarify when siblingIdx is reset

* fix(GenerationButtons): optimistic state for continue button

* fix(MessageContent.tsx): add data-testid attribute to message text editor
fix(messages.spec.ts): update waitForServerStream function to include edit endpoint check
feat(messages.spec.ts): add test case for editing messages

* fix(HoverButtons & Message & useGenerations): Refactor edit functionality and related conditions

- Update enterEdit function signature and prop
- Create and utilize hideEditButton variable
- Enhance conditions for edit button visibility and active state
- Update button event handlers
- Introduce isEditableEndpoint in useGenerations and refine continueSupported condition.

* fix(useGenerations.ts): fix condition for hideEditButton to include error and searchResult
chore(data-provider): bump version to 0.1.6
fix(types.ts): add status property to TError type

* chore: bump @dqbd/tiktoken to 1.0.7

* fix(abortMiddleware.js): add required isCreatedByUser property to the error response object

* refactor(Message.tsx): remove unnecessary props from SiblingSwitch component, as setLatestMessage is firing on every switch already
refactor(SiblingSwitch.tsx): remove unused imports and code

* chore(BaseClient.js): move console.debug statements back inside if block
2023-08-22 18:44:59 -04:00
Marco Beretta
db77163f5d
docs: update chimeragpt (#826)
* Update free_ai_apis.md

* Update free_ai_apis.md
2023-08-22 08:15:14 -04:00
Marco Beretta
4a4e803df3
style(Dialog): Improved Close Button ("X") position (#824) 2023-08-21 14:15:18 -04:00
Daniel Avila
909b00c752 fix(HoverButtons): light/dark styling to match official site 2023-08-20 21:10:48 -04:00
Naosuke Yokoe
61dcb4d307
feat: Azure Cognitive Search Plugin (#815)
* feat(AzureCognitiveSearchPlugin)

* feat(tools/AzureCognitiveSearch.js): Add a new plugin (not structured
  version)
* feat(tools/structured/AzureCognitiveSearch.js): Add a new plugin (structured version)
* feat(tools/manifest.json, tools/index.js, tools/util/handleTools.js):
  Add configurations for the plugin
* feat(api/package.json, package-lock.json): Installed a new package for the
  plugin (@azure/search-documents)
* feat(.env.example): Add new environment variables for the plugin

Here is the link to the corresponding discussion page:
https://github.com/danny-avila/LibreChat/discussions/567

* docs(AzureCognitiveSearchPlugin)

* docs(features/plugins/azure_cognitive_search.md): Add a new document
  for the plugin

* (fix:.env.example)

* reverted extra whitespaces removed by the editor

* docs(mkdocs.yml)

* Add the Azure Cognitive Search Plugin's documentation item to
mkdocs.yml.
2023-08-19 07:11:31 -04:00
Danny Avila
3c7f67fa76 fix(abortMiddleware): handle early abort error where userMessage.conversationId is undefined. In this case, the userId will be used as the abortKey 2023-08-18 12:49:35 -04:00