* 📝 chore: Add comment to clarify purpose of check_updates.sh script
* feat: mcp package
* feat: add librechat-mcp package and update dependencies
* feat: refactor MCPConnectionSingleton to handle transport initialization and connection management
* feat: change private methods to public in MCPConnectionSingleton for improved accessibility
* feat: filesystem demo
* chore: everything demo and move everything under mcp workspace
* chore: move ts-node to mcp workspace
* feat: mcp examples
* feat: working sse MCP example
* refactor: rename MCPConnectionSingleton to MCPConnection for clarity
* refactor: replace MCPConnectionSingleton with MCPConnection for consistency
* refactor: manager/connections
* refactor: update MCPConnection to use type definitions from mcp types
* refactor: update MCPManager to use winston logger and enhance server initialization
* refactor: share logger between connections and manager
* refactor: add schema definitions and update MCPManager to accept logger parameter
* feat: map available MCP tools
* feat: load manifest tools
* feat: add MCP tools delimiter constant and update plugin key generation
* feat: call MCP tools
* feat: update librechat-data-provider version to 0.7.63 and enhance StdioOptionsSchema with additional properties
* refactor: simplify typing
* chore: update types/packages
* feat: MCP Tool Content parsing
* chore: update dependencies and improve package configurations
* feat: add 'mcp' directory to package and update configurations
* refactor: return CONTENT_AND_ARTIFACT format for MCP callTool
* chore: bump @librechat/agents
* WIP: MCP artifacts
* chore: bump @librechat/agents to v1.8.7
* fix: ensure filename has extension when saving base64 image
* fix: move base64 buffer conversion before filename extension check
* chore: update backend review workflow to install MCP package
* fix: use correct `mime` method
* fix: enhance file metadata with message and tool call IDs in image saving process
* fix: refactor ToolCall component to handle MCP tool calls and improve domain extraction
* fix: update ToolItem component for default isInstalled value and improve localization in ToolSelectDialog
* fix: update ToolItem component to use consistent text color for tool description
* style: add theming to ToolSelectDialog
* fix: improve domain extraction logic in ToolCall component
* refactor: conversation item theming, fix rename UI bug, optimize props, add missing types
* feat: enhance MCP options schema with base options (iconPath to start) and make transport type optional, infer based on other option fields
* fix: improve reconnection logic with parallel init and exponential backoff and enhance transport debug logging
* refactor: improve logging format
* refactor: improve logging of available tools by displaying tool names
* refactor: improve reconnection/connection logic
* feat: add MCP package build process to Dockerfile
* feat: add fallback icon for tools without an image in ToolItem component
* feat: Assistants Support for MCP Tools
* fix(build): configure rollup to use output.dir for dynamic imports
* chore: update @librechat/agents to version 1.8.8 and add @langchain/anthropic dependency
* fix: update CONFIG_VERSION to 1.2.0
* 🔃 fix: Safeguard against null token in SSE refresh token handling
* 🔃 fix: Update import path for AnnounceOptions in LiveAnnouncer component
* 🔃 a11y: Add aria-live attribute for accessibility in error messages
* fix: prevent double screen reader notification for toast
* 🔃 a11y: Enhance accessibility for main menus and buttons with ARIA roles and labels
* refactor: better alt text for logo on login page #4095
* refactor: remove unused import for DropdownNoState in Voices component
* fix: Focus management issue in the Export Options Modal #4100
* style: update AdminSettings dialog content styles for improved accessibility/theming
* style: update icon colors in ExportAndShareMenu for improved theming
* feat: enhance DropdownPopup component with additional props for customization
* feat: add role selection dropdown to AdminSettings for enhanced user permissions management
* feat: add role selection dropdown to AdminSettings for Prompt permission management
* style: add gap to button in AdminSettings for improved layout
* feat: add warning message for Admin role access in Permissions settings
* feat: Code Interpreter API & File Search Agent Uploads
chore: add back code files
wip: first pass, abstract key dialog
refactor: influence checkbox on key changes
refactor: update localization keys for 'execute code' to 'run code'
wip: run code button
refactor: add throwError parameter to loadAuthValues and getUserPluginAuthValue functions
feat: first pass, API tool calling
fix: handle missing toolId in callTool function and return 404 for non-existent tools
feat: show code outputs
fix: improve error handling in callTool function and log errors
fix: handle potential null value for filepath in attachment destructuring
fix: normalize language before rendering and prevent null return
fix: add loading indicator in RunCode component while executing code
feat: add support for conditional code execution in Markdown components
feat: attachments
refactor: remove bash
fix: pass abort signal to graph/run
refactor: debounce and rate limit tool call
refactor: increase debounce delay for execute function
feat: set code output attachments
feat: image attachments
refactor: apply message context
refactor: pass `partIndex`
feat: toolCall schema/model/methods
feat: block indexing
feat: get tool calls
chore: imports
chore: typing
chore: condense type imports
feat: get tool calls
fix: block indexing
chore: typing
refactor: update tool calls mapping to support multiple results
fix: add unique key to nav link for rendering
wip: first pass, tool call results
refactor: update query cache from successful tool call mutation
style: improve result switcher styling
chore: note on using \`.toObject()\`
feat: add agent_id field to conversation schema
chore: typing
refactor: rename agentMap to agentsMap for consistency
feat: Agent Name as chat input placeholder
chore: bump agents
📦 chore: update @langchain dependencies to latest versions to match agents package
📦 chore: update @librechat/agents dependency to version 1.8.0
fix: Aborting agent stream removes sender; fix(bedrock): completion removes preset name label
refactor: remove direct file parameter to use req.file, add `processAgentFileUpload` for image uploads
feat: upload menu
feat: prime message_file resources
feat: implement conversation access validation in chat route
refactor: remove file parameter from processFileUpload and use req.file instead
feat: add savedMessageIds set to track saved message IDs in BaseClient, to prevent unnecessary double-write to db
feat: prevent duplicate message saves by checking savedMessageIds in AgentController
refactor: skip legacy RAG API handling for agents
feat: add files field to convoSchema
refactor: update request type annotations from Express.Request to ServerRequest in file processing functions
feat: track conversation files
fix: resendFiles, addPreviousAttachments handling
feat: add ID validation for session_id and file_id in download route
feat: entity_id for code file uploads/downloads
fix: code file edge cases
feat: delete related tool calls
feat: add stream rate handling for LLM configuration
feat: enhance system content with attached file information
fix: improve error logging in resource priming function
* WIP: PoC, sequential agents
WIP: PoC Sequential Agents, first pass content data + bump agents package
fix: package-lock
WIP: PoC, o1 support, refactor bufferString
feat: convertJsonSchemaToZod
fix: form issues and schema defining erroneous model
fix: max length issue on agent form instructions, limit conversation messages to sequential agents
feat: add abort signal support to createRun function and AgentClient
feat: PoC, hide prior sequential agent steps
fix: update parameter naming from config to metadata in event handlers for clarity, add model to usage data
refactor: use only last contentData, track model for usage data
chore: bump agents package
fix: content parts issue
refactor: filter contentParts to include tool calls and relevant indices
feat: show function calls
refactor: filter context messages to exclude tool calls when no tools are available to the agent
fix: ensure tool call content is not undefined in formatMessages
feat: add agent_id field to conversationPreset schema
feat: hide sequential agents
feat: increase upload toast duration to 10 seconds
* refactor: tool context handling & update Code API Key Dialog
feat: toolContextMap
chore: skipSpecs -> useSpecs
ci: fix handleTools tests
feat: API Key Dialog
* feat: Agent Permissions Admin Controls
feat: replace label with button for prompt permission toggle
feat: update agent permissions
feat: enable experimental agents and streamline capability configuration
feat: implement access control for agents and enhance endpoint menu items
feat: add welcome message for agent selection in localization
feat: add agents permission to access control and update version to 0.7.57
* fix: update types in useAssistantListMap and useMentions hooks for better null handling
* feat: mention agents
* fix: agent tool resource race conditions when deleting agent tool resource files
* feat: add error handling for code execution with user feedback
* refactor: rename AdminControls to AdminSettings for clarity
* style: add gap to button in AdminSettings for improved layout
* refactor: separate agent query hooks and check access to enable fetching
* fix: remove unused provider from agent initialization options, creates issue with custom endpoints
* refactor: remove redundant/deprecated modelOptions from AgentClient processes
* chore: update @librechat/agents to version 1.8.5 in package.json and package-lock.json
* fix: minor styling issues + agent panel uniformity
* fix: agent edge cases when set endpoint is no longer defined
* refactor: remove unused cleanup function call from AppService
* fix: update link in ApiKeyDialog to point to pricing page
* fix: improve type handling and layout calculations in SidePanel component
* fix: add missing localization string for agent selection in SidePanel
* chore: form styling and localizations for upload filesearch/code interpreter
* fix: model selection placeholder logic in AgentConfig component
* style: agent capabilities
* fix: add localization for provider selection and improve dropdown styling in ModelPanel
* refactor: use gpt-4o-mini > gpt-3.5-turbo
* fix: agents configuration for loadDefaultInterface and update related tests
* feat: DALLE Agents support
* 🔧 refactor: replace doubleClickHandler with onDoubleClick in slider components
* 🔧 refactor: consolidate DynamicInput and DynamicInputNumber components into a single DynamicInput component; fix: UI crashing when typing a character instead of number in max context/output tokens
* 🔧 style: update component styles to use bg-surface-secondary and bg-surface-tertiary for improved UI consistency
* 🔘 a11y: Improve Contrast of Switch/Toggles to WCAG Standard
* refactor: Improve file attachment accessibility in Chat Input component
* refactor: clear input ref value before clicks
* feat: Refactor ChatForm and StopButton components for improved styling and localization
* feat: Refactor AudioRecorder, ChatForm, AttachFile, and SendButton components for improved styling and layout
* feat: Add RevokeAllKeys component and update styling for buttons and inputs
* feat: Refactor ClearChats component and update ClearConvos functionality for improved clarity and user experience
* feat: Remove ClearConvos component and update related imports and functionality in Avatar and DeleteCacheButton components
* feat: Rename DeleteCacheButton to DeleteCache and update related imports; enhance confirmation message in localization
* feat: Update ChatForm layout for RTL support and improve component structure
* feat: Adjust ChatForm layout for improved RTL support and alignment
* feat: Refactor Bookmark components to use new UI elements and improve styling
* feat: Update FileSearch and ShareAgent components for improved button styling and layout
* feat: Update ChatForm and TextareaHeader styles for improved UI consistency
* feat: Refactor Nav components for improved styling and layout adjustments
* feat: Update button sizes and padding for improved UI consistency across chat components
* feat: Remove ClearChatsButton test file as part of code cleanup
* fix: modal styling issue, where buttons in light mode are not accessible/visible
* refactor: use MarkdownLite instead
* chore: make inner content accessible
* inital Tooltip implementation and test
* style(tooltip): L/R sidePanel and Nav
* style(tooltip): unarchive button; refactor: `useArchiveHandler` and `ArchiveButton`
* style(tooltip): Delete button
* refactor: remove unused className prop in DeleteButton component
* style(tooltip): finish final tooltip and fix bookmark edit and delete button
* refactor(ui): remove TooltipTest and DropDownMenu component and unused imports
* style: update mobile UI
* fix: sidePanel icon not showing
* feat(AttachFile): add tooltip
* fix(NavToggle): remove button
without this button, kb users don't have to manually press 2 times to change the focus
Also, tooltips with buttons focus don't trigger
* fix: right side panel issue with double button
* fix: merge issues
* fix: sharedLink table issue
* chore: update ariakit and framer-motion version
* a11y: kb toggle for sidebar
* feat: tooltip for some buttons
* feat: Add banner schema and model
* feat: Add optional JwtAuth
To handle the conditional logic with and without authentication within the model.
* feat: Add an endpoint to retrieve a banner
* feat: Add implementation for client to use banner and access API
* feat: Display a banner on UI
* feat: Script for updating and deleting banners
* style: Update banner style
* fix: Adjust the height when the banner is displayed
* fix: failed specs
* feat: settings tba accessible
* refactor: cleanup unused code
* refactor: improve accessibility and user experience in ChatDirection component
* style: focus ring primary class
* improve a11y of avatar dialog
* style: a11y improvements for Settings
* style: focus ring primary class in OriginalDialog component
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
* feat: Add BedrockIcon component to SVG library
* feat: EModelEndpoint.bedrock
* feat: first pass, bedrock chat. note: AgentClient is returning `agents` as conversation.endpoint
* fix: declare endpoint in initialization step
* chore: Update @librechat/agents dependency to version 1.4.5
* feat: backend content aggregation for agents/bedrock
* feat: abort agent requests
* feat: AWS Bedrock icons
* WIP: agent provider schema parsing
* chore: Update EditIcon props type
* refactor(useGenerationsByLatest): make agents and bedrock editable
* refactor: non-assistant message content, parts
* fix: Bedrock response `sender`
* fix: use endpointOption.model_parameters not endpointOption.modelOptions
* fix: types for step handler
* refactor: Update Agents.ToolCallDelta type
* refactor: Remove unnecessary assignment of parentMessageId in AskController
* refactor: remove unnecessary assignment of parentMessageId (agent request handler)
* fix(bedrock/agents): message regeneration
* refactor: dynamic form elements using react-hook-form Controllers
* fix: agent icons/labels for messages
* fix: agent actions
* fix: use of new dynamic tags causing application crash
* refactor: dynamic settings touch-ups
* refactor: update Slider component to allow custom track class name
* refactor: update DynamicSlider component styles
* refactor: use Constants value for GLOBAL_PROJECT_NAME (enum)
* feat: agent share global methods/controllers
* fix: agents query
* fix: `getResponseModel`
* fix: share prompt a11y issue
* refactor: update SharePrompt dialog theme styles
* refactor: explicit typing for SharePrompt
* feat: add agent roles/permissions
* chore: update @librechat/agents dependency to version 1.4.7 for tool_call_ids edge case
* fix(Anthropic): messages.X.content.Y.tool_use.input: Input should be a valid dictionary
* fix: handle text parts with tool_call_ids and empty text
* fix: role initialization
* refactor: don't make instructions required
* refactor: improve typing of Text part
* fix: setShowStopButton for agents route
* chore: remove params for now
* fix: add streamBuffer and streamRate to help prevent 'Overloaded' errors from Anthropic API
* refactor: remove console.log statement in ContentRender component
* chore: typing, rename Context to Delete Button
* chore(DeleteButton): logging
* refactor(Action): make accessible
* style(Action): improve a11y again
* refactor: remove use/mention of mongoose sessions
* feat: first pass, sharing agents
* feat: visual indicator for global agent, remove author when serving to non-author
* wip: params
* chore: fix typing issues
* fix(schemas): typing
* refactor: improve accessibility of ListCard component and fix console React warning
* wip: reset templates for non-legacy new convos
* Revert "wip: params"
This reverts commit f8067e91d4.
* Revert "refactor: dynamic form elements using react-hook-form Controllers"
This reverts commit 2150c4815d.
* fix(Parameters): types and parameter effect update to only update local state to parameters
* refactor: optimize useDebouncedInput hook for better performance
* feat: first pass, anthropic bedrock params
* chore: paramEndpoints check for endpointType too
* fix: maxTokens to use coerceNumber.optional(),
* feat: extra chat model params
* chore: reduce code repetition
* refactor: improve preset title handling in SaveAsPresetDialog component
* refactor: improve preset handling in HeaderOptions component
* chore: improve typing, replace legacy dialog for SaveAsPresetDialog
* feat: save as preset from parameters panel
* fix: multi-search in select dropdown when using Option type
* refactor: update default showDefault value to false in Dynamic components
* feat: Bedrock presets settings
* chore: config, fix agents schema, update config version
* refactor: update AWS region variable name in bedrock options endpoint to BEDROCK_AWS_DEFAULT_REGION
* refactor: update baseEndpointSchema in config.ts to include baseURL property
* refactor: update createRun function to include req parameter and set streamRate based on provider
* feat: availableRegions via config
* refactor: remove unused demo agent controller file
* WIP: title
* Update @librechat/agents to version 1.5.0
* chore: addTitle.js to handle empty responseText
* feat: support images and titles
* feat: context token updates
* Refactor BaseClient test to use expect.objectContaining
* refactor: add model select, remove header options params, move side panel params below prompts
* chore: update models list, catch title error
* feat: model service for bedrock models (env)
* chore: Remove verbose debug log in AgentClient class following stream
* feat(bedrock): track token spend; fix: token rates, value key mapping for AWS models
* refactor: handle streamRate in `handleLLMNewToken` callback
* chore: AWS Bedrock example config in `.env.example`
* refactor: Rename bedrockMeta to bedrockGeneral in settings.ts and use for AI21 and Amazon Bedrock providers
* refactor: Update `.env.example` with AWS Bedrock model IDs URL and additional notes
* feat: titleModel support for bedrock
* refactor: Update `.env.example` with additional notes for AWS Bedrock model IDs
* fix focus for cancel button in convo delete modal window #3829
* add aria-hidden and aria-label to X and Check svg/button respectively and updated OGDialogClose focus color
* update rename, newchat, newchat icon, ConvoOptions icon
* agents - phase 1 (#30)
* chore: copy assistant files
* feat: frontend and data-provider
* feat: backend get endpoint test
* fix(MessageEndpointIcon): switched to AgentName and AgentAvatar
* fix: small fixes
* fix: agent endpoint config
* fix: show Agent Builder
* chore: install agentus
* chore: initial scaffolding for agents
* fix: updated Assistant logic to Agent Logic for some Agent components
* WIP first pass, demo of agent package
* WIP: initial backend infra for agents
* fix: agent list error
* wip: agents routing
* chore: Refactor useSSE hook to handle different data events
* wip: correctly emit events
* chore: Update @librechat/agentus npm dependency to version 1.0.9
* remove comment
* first pass: streaming agent text
* chore: Remove @librechat/agentus root-level workspace npm dependency
* feat: Agent Schema and Model
* fix: content handling fixes
* fix: content message save
* WIP: new content data
* fix: run step issue with tool calls
* chore: Update @librechat/agentus npm dependency to version 1.1.5
* feat: update controller and agent routes
* wip: initial backend tool and tool error handling support
* wip: tool chunks
* chore: Update @librechat/agentus npm dependency to version 1.1.7
* chore: update tool_call typing, add test conditions and logs
* fix: create agent
* fix: create agent
* first pass: render completed content parts
* fix: remove logging, fix step handler typing
* chore: Update @librechat/agentus npm dependency to version 1.1.9
* refactor: cleanup maps on unmount
* chore: Update BaseClient.js to safely count tokens for string, number, and boolean values
* fix: support subsequent messages with tool_calls
* chore: export order
* fix: select agent
* fix: tool call types and handling
* chore: switch to anthropic for testing
* fix: AgentSelect
* refactor: experimental: OpenAIClient to use array for intermediateReply
* fix(useSSE): revert old condition for streaming legacy client tokens
* fix: lint
* revert `agent_id` to `id`
* chore: update localization keys for agent-related components
* feat: zod schema handling for actions
* refactor(actions): if no params, no zodSchema
* chore: Update @librechat/agentus npm dependency to version 1.2.1
* feat: first pass, actions
* refactor: empty schema for actions without params
* feat: Update createRun function to accept additional options
* fix: message payload formatting; feat: add more client options
* fix: ToolCall component rendering when action has no args but has output
* refactor(ToolCall): allow non-stringy args
* WIP: first pass, correctly formatted tool_calls between providers
* refactor: Remove duplicate import of 'roles' module
* refactor: Exclude 'vite.config.ts' from TypeScript compilation
* refactor: fix agent related types
> - no need to use endpoint/model fields for identifying agent metadata
> - add `provider` distinction for agent-configured 'endpoint'
- no need for agent-endpoint map
- reduce complexity of tools as functions into tools as string[]
- fix types related to above changes
- reduce unnecessary variables for queries/mutations and corresponding react-query keys
* refactor: Add tools and tool_kwargs fields to agent schema
* refactor: Remove unused code and update dependencies
* refactor: Update updateAgentHandler to use req.body directly
* refactor: Update AgentSelect component to use localized hooks
* refactor: Update agent schema to include tools and provider fields
* refactor(AgentPanel): add scrollbar gutter, add provider field to form, fix agent schema required values
* refactor: Update AgentSwitcher component to use selectedAgentId instead of selectedAgent
* refactor: Update AgentPanel component to include alternateName import and defaultAgentFormValues
* refactor(SelectDropDown): allow setting value as option while still supporting legacy usage (string values only)
* refactor: SelectDropdown changes - Only necessary when the available values are objects with label/value fields and the selected value is expected to be a string.
* refactor: TypeError issues and handle provider as option
* feat: Add placeholder for provider selection in AgentPanel component
* refactor: Update agent schema to include author and provider fields
* fix: show expected 'create agent' placeholder when creating agent
* chore: fix localization strings, hide capabilities form for now
* chore: typing
* refactor: import order and use compact agents schema for now
* chore: typing
* refactor: Update AgentForm type to use AgentCapabilities
* fix agent form agent selection issues
* feat: responsive agent selection
* fix: Handle cancelled fetch in useSelectAgent hook
* fix: reset agent form on accordion close/open
* feat: Add agent_id to default conversation for agents endpoint
* feat: agents endpoint request handling
* refactor: reset conversation model on agent select
* refactor: add `additional_instructions` to conversation schema, organize other fields
* chore: casing
* chore: types
* refactor(loadAgentTools): explicitly pass agent_id, do not pass `model` to loadAgentTools for now, load action sets by agent_id
* WIP: initial draft of real agent client initialization
* WIP: first pass, anthropic agent requests
* feat: remember last selected agent
* feat: openai and azure connected
* fix: prioritize agent model for runs unless an explicit override model is passed from client
* feat: Agent Actions
* fix: save agent id to convo
* feat: model panel (#29)
* feat: model panel
* bring back comments
* fix: method still null
* fix: AgentPanel FormContext
* feat: add more parameters
* fix: style issues; refactor: Agent Controller
* fix: cherry-pick
* fix: Update AgentAvatar component to use AssistantIcon instead of BrainCircuit
* feat: OGDialog for delete agent; feat(assistant): update Agent types, introduced `model_parameters`
* feat: icon and general `model_parameters` update
* feat: use react-hook-form better
* fix: agent builder form reset issue when switching panels
* refactor: modularize agent builder form
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
* fix: AgentPanel and ModelPanel type issues and use `useFormContext` and `watch` instead of `methods` directly and `useWatch`.
* fix: tool call issues due to invalid input (anthropic) of empty string
* fix: handle empty text in Part component
---------
Co-authored-by: Marco Beretta <81851188+berry-13@users.noreply.github.com>
* refactor: remove form ModelPanel and fixed nested ternary expressions in AgentConfig
* fix: Model Parameters not saved correctly
* refactor: remove console log
* feat: avatar upload and get for Agents (#36)
Co-authored-by: Marco Beretta <81851188+berry-13@users.noreply.github.com>
* chore: update to public package
* fix: typing, optional chaining
* fix: cursor not showing for content parts
* chore: conditionally enable agents
* ci: fix azure test
* ci: fix frontend tests, fix eslint api
* refactor: Remove unused errorContentPart variable
* continue of the agent message PR (#40)
* last fixes
* fix: agentMap
* pr merge test (#41)
* fix: model icon not fetching correctly
* remove console logs
* feat: agent name
* refactor: pass documentsMap as a prop to allow re-render of assistant form
* refactor: pass documentsMap as a prop to allow re-render of assistant form
* chore: Bump version to 0.7.419
* fix: TypeError: Cannot read properties of undefined (reading 'id')
* refactor: update AgentSwitcher component to use ControlCombobox instead of Combobox
---------
Co-authored-by: Marco Beretta <81851188+berry-13@users.noreply.github.com>
* Added UI for Terms and Conditions Modal Dialogue
* Handled the logout on not accepting
* Added logic for terms acceptance
* Add terms and conditions modal
* Fixed bug on terms and conditions modal, clicking out of it won't close it now
* Added acceptance of Terms to Database
* Removed unnecessary api endpoints from index.js
* Added NPM script to reset terms acceptance
* Added translations, markdown terms and samples
* Merged terms and conditions modal feature
* feat/Modal Terms and Conditions Dialog
* Amendments as requested by maintainers
* Reset package-lock (again)
* fix: type issues
* feat: Fix document title setting in Conversation component
* style: new chat theme
* fix: No keyboard access to chat menus in the chat history #3788
* fix: Menu button in the chat history area does not indicate its state #3823
* refactor: use ariakit for DropdownPopup
* style: update sticky z-index in NewChat component
* style: update ConvoOptions menu button styling
* refactor(DropdownPopup): set MenuButton `as` prop to `div` to prevent React warning: validateDOMNesting(...): <button> cannot appear as a descendant of <button>
* refactor: memoize ChatGroupItem and ControlCombobox components
* refactor(OpenAIClient): await stream process finish before finalCompletion event handling
* refactor: update useSSE.ts typing to handle null and undefined values in data properties
* refactor: set abort scroll to false on SSE connection open
* refactor: improve logger functionality with filter support
* refactor: update handleScroll typing in MessageContainer component
* refactor: update logger.dir call in useChatFunctions to log 'message_stream' tag format instead of the entire submission object as first arg
* refactor: fix null check for message object in Message component
* refactor: throttle handleScroll to help prevent auto-scrolling issues on new message requests; fix type issues within useMessageProcess
* refactor: add abortScrollByIndex logging effect
* refactor: update MessageIcon and Icon components to use React.memo for performance optimization
* refactor: memoize ConvoIconURL component for performance optimization
* chore: type issues
* chore: update package version to 0.7.414
* feat: Add SimpleCombobox component
* feat: Add labelClassName and add manual focus handling
* feat: Update VariableForm component to use SimpleCombobox
The VariableForm component in the client/src/components/Prompts/Groups/VariableForm.tsx file has been updated to use the SimpleCombobox component instead of the InputWithDropdown component. This change improves the functionality and styling of the form.
* chore: Update VariableForm component placeholder text
* refactor: Improve VariableForm component
The VariableForm component in the client/src/components/Prompts/Groups/VariableForm.tsx file has been refactored to improve its functionality. The `parseFieldConfig` function now trims the `variable` string before processing it. Additionally, the `onSubmit` function now properly escapes potential regex special chars that may cause issues when replacing text
* refactor: Improve VariableForm using ariakit helpers/custom fields, open menu on input focus
* refactor: rename SimpleCombobox to InputCombobox
* chore: Update @ariakit/react dependency to version 0.4.8
* refactor: Fix Combobox Android issue with radix-ui
* fix: Improve scrolling behavior by setting abort scroll state to false after scrolling to end
* wip: first pass switcher rewrite
* feat: Add button width calculation for ComboboxComponent
* refactor: Update ComboboxComponent styling for improved layout and appearance
* refactor: Update AssistantSwitcher component to handle null values for assistant names and avatar URLs
* refactor: Update ModelSwitcher component to use SimpleCombobox for improved functionality and styling
* refactor: Update Switcher Separator styling for improved layout and appearance
* refactor: Improve accessibility by adding aria-label to ComboboxComponent select items
* refactor: rename SimpleCombobox -> ControlCombobox
* feat: Add extended inputs for promts library variables
* feat: Add maxRows prop to VariableForm input field
* 📩 feat: invite user (#3012)
* feat: basic invite-user script
* feat: add invite user functionality and registration validation middleware
* fix: invite user fixes
* refactor: consolidate direct model access to a central place of functions
* style(Registration): add spinner to continue button
* refactor: import ordrer
* feat: improve invite user script and error handling
* fix: merge conflict
* refactor: remove `console.log` and use `logger`
* fix: token operation and checkinvite issues
* bring back comment and remove console log
* fix: return invalid token when token is not found
* fix: getInvite fix
* refactor: Update Token.js to use async/await syntax for update and delete operations
* feat: Refactor Token.js to use async/await syntax for createToken and findToken functions
* refactor(inviteUser): define functions outside of module.exports
* Update AuthService.js
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
* style: improve OpenAI.tsx input field focus styling
* refactor: update import statement in Input.tsx
* refactor: remove multi-line
* refactor: update placeholder text to use localization
* style: new dropdown variable info and markdown styling for info
* Add ReactMarkdown
* chore: styling, import order
* refactor: update ReactMarkdown usage in VariableForm
* style: remove markdown class
* refactor: update mobile styling and use code renderer
* style(InputWithDropDown): update focus trigger style
* style(OptionsPopover): update Save As Preset `focus` and `dark:bg`
---------
Co-authored-by: Konstantin Meshcheryakov <kmeshcheryakov@klika-tech.com>
Co-authored-by: Marco Beretta <81851188+berry-13@users.noreply.github.com>
Co-authored-by: bsu3338 <bsu3338@users.noreply.github.com>
* feat: new dropdown
* fix: maintain popover active when open
* fix: update DeleteButton and ShareButton component to use useState for managing dialog state
* BREAKING: style improvement of base Button component
* style: update export button
* a11y: ExportAndShareButton
* add border
* quick style fix
* fix: flick issue on convo
* fix: DropDown opens when renaming
* chore: update radix-ui/react-dropdown-menu to latest
* small fix
* style: bookmarks update
* reorder export modal
* feat: imporved dropdowns
* style: a lot of changes; header, bookmarks, export, nav, convo, convoOptions
* fix: small style issues
* fix: button
* fix: bookmarks header menu
* fix: dropdown close glitch
* feat: Improve accessibility and keyboard navigation in ModelSpec component
* fix: Nav related type issues
* style: ConvoOptions theming and focus ring
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
* refactor: do not call await inside useCallbacks, rely on updates for dropdown
* fix: remember last selected voice
* refactor: Update Speech component to use TypeScript in useCallback
* refactor: Update Dropdown component styles to match header theme
* refactor: scrollToEnd
* fix(validateConvoAccess): search conversation by ID for proper validation
* feat: Add unique index for conversationId and user in convoSchema
* refactor: Update font sizes 1 rem -> font-size-base in style.css
* fix: Assistants map type issues
* refactor: Remove obsolete scripts
* fix: Update DropdownNoState component to handle both string and OptionType values
* refactor: Remove config/loader.js file
* fix: remove crypto.randomBytes(); refactor: Create reusable function for generating token and hash
* chore: playwright setup update
* refactor: update ChatRoute component with accessible loading spinner with live region
* chore(Message): typing
* ci: first pass, a11y testing
* refactor: update lang attribute in index.html to "en-US"
* ci: jsx-a11y dev eslint plugin
* ci: jsx plugin
* fix: Exclude 'vite.config.ts' from TypeScript compilation for testing
* fix(a11y): Remove tabIndex from non-interactive element in MessagesView component
* fix(a11y):
- Visible, non-interactive elements with click handlers must have at least one keyboard listener.eslintjsx-a11y/click-events-have-key-events
- Avoid non-native interactive elements. If using native HTML is not possible, add an appropriate role and support for tabbing, mouse, keyboard, and touch inputs to an interactive content element.eslintjsx-a11y/no-static-element-interactions
chore: remove unused bookmarks panel
- fix some "Unexpected nullable boolean value in conditional" warnings
* fix(NewChat): a11y, nested button issue, add aria-label, remove implicit role
* fix(a11y):
- partially address #3515 with `main` landmark
other:
- eslint@typescript-eslint/strict-boolean-expressions
* chore(MenuButton): Use button element instead of div for accessibility
* chore: Update TitleButton to use button element for accessibility
* chore: Update TitleButton to use button element for accessibility
* refactor(ChatMenuItem): Improve focus accessibility and code readability
* chore(MenuButton): Update aria-label to dynamically include primaryText
* fix(a11y): SearchBar
- If a form control does not have a properly associated text label, the function or purpose of that form control may not be presented to screen reader users. Visible form labels also provide visible descriptions and larger clickable targets for form controls which placeholders do not.
* chore: remove duplicate SearchBar twcss
* fix(a11y):
- The edit and copy buttons that are visually hidden are exposed to Assistive technology and are announced to screen reader users.
* fix(a11y): visible focus outline
* fix(a11y): The button to select the LLM Model has the aria-haspopup and aria- expanded attributes which makes its role ambuguous and unclear. It functions like a combobox but doesn't fully support that interaction and also fucntions like a dialog but doesn't completely support that interaction either.
* fix(a11y): fix visible focus outline
* fix(a11y): Scroll to bottom button missing accessible name #3474
* fix(a11y): The page lacks any heading structure. There should be at least one H1 and other headings to help users understand the orgainzation of the page and the contents.
Note: h1 won't be correct here so made it h2
* fix(a11y): LLM controls aria-labels
* fix(a11y): There is no visible focus outline to the 'send message' button
* fix(a11y): fix visible focus outline for Fork button
* refactor(MessageRender): add focus ring to message cards, consolidate complex conditions, add logger for setting latest message, add tabindex for card
* fix: focus border color and fix set latest message card condition
* fix(a11y): Adequate contrast for MessageAudio buttton
* feat: Add GitHub Actions workflow for accessibility linting
* chore: Update GitHub Actions workflow for accessibility linting to include client/src/** path
* fix(Nav): navmask and accessibility
* fix: Update Nav component to handle potential undefined type in SearchContext
* fix(a11y): add focus visibility to attach files button #3475
* fix(a11y): discernible text for NewChat button
* fix(a11y): accessible landmark names, all page content in landmarks, ensures landmarks are unique #3514#3515
* fix(Prompts): update isChatRoute prop to be required in List component
* fix(a11y): buttons must have discernible text
* feat: add tags property in Conversation model
* feat: add ConversationTag model
* feat: add the tags parameter to getConvosByPage
* feat: add API route to ConversationTag
* feat: add types of ConversationTag
* feat: add data access functions for conversation tags
* feat: add Bookmark table component
* feat: Add an action to bookmark
* feat: add Bookmark nav component
* fix: failed test
* refactor: made 'Saved' tag a constant
* feat: add new bookmark to current conversation
* chore: Add comment
* fix: delete tag from conversations when it's deleted
* fix: Update the query cache when the tag title is changed.
* chore: fix typo
* refactor: add description of rebuilding bookmarks
* chore: remove unused variables
* fix: position when adding a new bookmark
* refactor: add comment, rename a function
* refactor: add a unique constraint in ConversationTag
* chore: add localizations
* fix: dropdown overflow
* fix: make dropdown work on mobile
* feat: update headlessui to 2.0 and use portal
* feat: rewrite modal using headlessui
* fix: applying of maxHeight
* fix: optimize backdrop for dark mode
* fix: rendering dropdown width
* feat: match small screen layout to radix-ui dialog
* revert: mobile modifications
* fix: modal animations
* fix: z-index
* chore: Migrate from HeadlessUI 1.0 to 2.0
* fix: h2 nesting
* fix: use lighter border for PopoverButtons
* feat: Move modal to the top if using a small screen
* fix: mobile position
* fix: frontend tests
* feat: use row layout in mobile instead of col
* fix: remove config path from tsconfig
* fix: fix dropdown tests (gpt4o ftw!)
* feat: Upgrade to latest headlessui version
* fix:test1
* fix: ThemeSelector test
* fix: re-add speech tab
* style: use pl and pr-3
* fix: speech tab dropdowns
* style: use maxHeight for language
* feat: convert DropdownNoState to v2.0
* fix: use v2 params for voiceDropdown
* style: reduce maxHeight for VoiceDropdown and set fixed width
* chore: rebuild package-lock
* style(fix): copy over the same styles for the settingsTab
* style(fix): use -top-1 for speech tabs
* style(fix): use max-w-[400px]
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
* 🗨️ feat: Prompts (#7)
* WIP: MERGE prompts/frontend (#1)
* added schema for prompt and promptgroup, added model methods for prompts, added routes for prompts
* * updated promptGroup Schema
* updated model methods for prompts (get, add, delete)
* slight fixes in prompt routes
* * Created Files Management components
* Created Vector Stores components
* Added file management route in the routes folder
* Completed UI for Files list, Compeleted UI for vector stores list, Completed UI for upload file modal, Completed UI for preview file, Completed UI for preview vector store
* Fixed style and UI fixes for file dashboard, file list and vector stores list
* added responsiveness classes for vector store page
* fixed responsiveness of file page, dashboard page, and main page
* fixed styling and responsiveness issues on dashboard page, file list page and vector store page
* added queries and mutations for prompts and promptGroups, added relevant endpoints in data-provider, added relevant components prompts, added and updated relevant APIs
* added types on mutation queries data service, updated prompt attributes
* feature: Prompts and prompt groups management, added relevant APIs, added types for data service/queries/mutations, added relevant mutation and queries
* chore: typing clarifications
* added drop down on prompts mgmt dashboard
* Fixes: fixed version switching issue on tags update or labels update, added cross button on create prompt group, fixed list updation on prompt group renaiming, added CSV upload button
* Feature: Added oneliner and category attributes in prompt group, added schema for categories, added schema methods and route for categories
* chore: typing and lint issues
* chore: more type and linter fixes
* chore: linting
* chore: prompt controller and backend typing example; MOVE TO CONTROLLER DIRECTORY
* chore: more type fixes
* style: prompt name changes
* chore: more type changes, and stateful prompt name change without flickering
* fix: Return result of savePrompt in patchPrompt API endpoint
* fix: navigation prompt queries; refactor: name 'prompt-groups' to just 'groups'
* refactor: fetch prompt groups rewrite
* refactor(prompts): query/mutation statefulness
* refactor: remove `isActive` field
* refactor: remove labels, consolidate logic
* style: width, layout shift
* refactor: improve hover toggle behavior and styling
* refactor: add useParams hook to PromptListItem for dynamic rendering and add timeout ref for blur timeout
* chore: hide upload button
* refactor: import Button component from correct location in PromptSidePanel
* style: prompt editor styling
* style: fix more layout shifts
* style: container scroll
* refactor: Rename CreatePrompt component to CreatePromptForm
* refactor: use react-hook-form
* refactor: Add Prompts components and routes to Dashboard
* style: skeletons for loading
* fix: optimize makePromptProduction
* refactor: consolidate variables
* feat: create prompt form validation
* refactor: Consolidate variables and update mutation hooks
* style: minor touchups
* chore: Update lucide-react npm dependency to version 0.394.0 and npm audit fix
* refactor: add a new icon for the Prompts heading.
* style: Update PromptsView heading to use h1 instead of h2 and other minor margin issues
* chore: wording
* refactor: Update PromptsView heading to use h1 instead of h2, consolidate variables, and add new icons
* refactor: Prompts Button for Mobile
* feature: added category field in prompt group, added relevant API and static data on BE to support FE UI for category in prompt group
* chore: template for prompt cards
---------
Co-authored-by: Fawadpot <contactfawada@gmail.com>
* WIP: Prompts/frontend Continued (#2)
* chore: loading style, remove unused component
* feat: Add CategorySelector component for prompt group category selection
* feat: add categories to create prompt
* feat: prompt versions styling
* feat: optimistic updates for prompt production state
* refactor: optimize form state and show if prompt field is dirty with cross icon, also other styling changes
* chore: remove unused code and localizations
* fix: light mode styling
* WIP: SidePanel Prompts
* refactor: move to groups directory
* refactor: rename GroupsSidePanel to GroupSidePanel and update imports
* style: ListCard
* refactor: isProduction changes
* refactor: infinite query with productionPrompt
* refactor: optimize snippets and prompts, and styling
* refactor: Update getSnippet function to accept a length parameter
* chore: localizations
* feat: prompts navigation to chat and vice versa
* fix: create prompt
* feat: remember last selected category for creating prompts
* fix(promptGroups): fix pagination and add usePromptGroupsNav hook
* Prompts/frontend 3 (#3)
* fix: stateful issues with prompt groups
* style: improved layout
* refactor: improve variable naming in Eng.ts
* refactor: theme selector styling improvements
* added prompt cards on chat new page, with dark mode, added API to fetch random prompts, added types for useQuery
Slightly improved usePromptGroupNav logic to fetch updated result for pageSize, updated prompt cards view with darkmode and responsiveness
fixed page size option buttons styling to match the theme
added dark mode on create prompt page and prompt edit/preview page
fixed page size option buttons styling to match the theme
added dark mode on create prompt page and prompt edit/preview page
* WIP: Prompts/frontend (#4)
* fix: optimize and fix paginated query
* fix: remove unique constraint on names
* refactor: button links and styling
* style: menu border light mode
* feat: Add Auto-Send Switch component for prompts groups
* refactor(ChatView): use form context for submission text
* chore: clear convo state on navigation to dashboard routes
* chore: save prompt edit name on tab, remove console log
* feat: basic prompt submission
* refactor: move Auto-Send Switch
* style(ListCard): border styling
* feat: Add function to detect variables in text
* feat: Add OriginalDialog component to UI library
* chore(ui): Update SelectDropDown options list class to use text-xs size
* refactor: submitMessage hook now includes submitPrompt, make compatible to document query selector
* WIP: Variable Dialog
* feat: variable submission working for both auto-send and non-autosend
* feat: dashboard breadcrumbs and prompts/chat navigation
* refactor: dashboard breadcrumb and dashboard link to chat navigation
* refactor: Update VariableDialog and VariableForm styles
* Prompts: Admin features (#5)
* fix: link issue
* fix: usePromptGroupsNav add missing dep.
* style: dashbreadcrumb and sidepanel text color
* temp fix: remove refetch on pageNumber change
* fix: handle multiple variable replacement
* WIP: create project schema and add project groups to fetch
* feat: Add functionality to add prompt group IDs to a project
* feat: Add caching for startup config in config route
* chore: remove prompt landing
* style: Update Skeleton component with additional background styling
* chore: styling and types
* WIP: SharePrompt first draft
* feat(SharePrompt): form validation
* feat: shared global indicators
* refactor: prompt details
* refactor: change NoPromptGroup directory
* feat: preview prompt
* feat: remove/add global prompts, add rbac-related enums
* refactor: manage prompts location
* WIP: first draft admin settings for prompts
* feat: SystemRoles enum
* refactor: update PromptDetails component styling
* style: ellipsis custom class for showing more preview text
* WIP: initial role schema and initialization
* style: improved margins for single unordered lists
* fix: use custom chat form context to prevent re-renders from FormProvider
* feat: Role mutations for Prompt Permissions
* feat: fetch user role
* feat: update AdminSettings form default values from user role values
* refactor: rename PromptPermissions to Permissions for general definitions
* feat: initial role checks
* feat: Add optional `bodyProps` parameter to generateCheckAccess middleware
* refactor: UI access checks
* Prompts: delete (#6)
* Fixed delete prompt version API, fixed types and logic for prompt version deletion, updated prompt delete mutation logic
* chore: Update return type of deletePrompt function in Prompt.js
---------
Co-authored-by: Fawadpot <contactfawada@gmail.com>
* chore: Update package-lock.json version to 0.7.4-rc1 and fast-xml-parser to 4.4.0
* feat: toast for saving admin settings, add timer no-access navigation
* feat: always make prod
* feat: Add localization to category labels in CategorySelector component
* feat: Update category label localization in CategorySelector component
* fix: Enable making prompt production in Prompt API
---------
Co-authored-by: Fawadpot <contactfawada@gmail.com>
* feat: Add helper fn for dark mode detection in ThemeProvider
* style: surface-primary definition
* fix(useHasAccess): utilize user.role and not just USER role
* fix: empty category and role fetch
* refactort: increase max height to options list and use label if no localization is found
* fix: update CategorySelector to handle empty category value and improve localization
* refactor: move prompts to own store/reactquery modules, add in filter WIP
* refactor: Rename AutoSendSwitch to AutoSendPrompt
* style: theming commit
* style: fix slight coloring issue for convos in dark mode
* style: better composition for prompts side panel
* style: remove gray-750 and make it gray-850
* chore: adjust theming
* feat: filter all prompt groups and properly remove prompts from projects
* refactor: optimize delete prompt groups further
* chore: localization
* feat: Add uniqueProperty filtering to normalizeData function
* WIP: filter prompts
* chore: Update FilterPrompts component to include User icon in FilterItem
* feat(FilterPrompts): set categories
* feat: more system filters and show selected category icon
* style: always make prod, flips switch to avoid mis-clicks
* style: ui/ux loading/no prompts
* chore: style FilterPrompts ChatView
* fix: handle missing role edge case
* style: special variables
* feat: special variables
* refactor: improve replaceSpecialVars function in prompts.ts
* feat: simple/advanced editor modes
* chore: bump versions
* feat: localizations and hide production button on simple mode
* fix: error connecting layout shift
* fix: prompts CRUD for admins
* fix: secure single group fetch
* style: sidepanel styling
* style(PromptName): bring edit button closer to name
* style: mobile prompts header
* style: mobile prompts header continued
* style: align send prompts switch right
* feat: description
* Update special variables description in Eng.ts
* feat: update/create/preview oneliner
* fix: allow empty oneliner update
* style: loading improvement and always make selected prompt Production if simple mode
* fix: production index set and remove unused props
* fix(ci): mock initializeRoles
* fix: address #3128
* fix: address #3128
* feat: add deletion confirmation dialog
* fix: mobile UI issues
* style: prompt library UI update
* style: focus, logcal tab order
* style: Refactor SelectDropDown component to improve code readability and maintainability
* chore: bump data-provider
* chore: fix labels
* refactor: confirm delete prompt version
---------
Co-authored-by: Marco Beretta <81851188+berry-13@users.noreply.github.com>
* refactor(EditPresetDialog): dynamically update current editable preset model on endpoint change
* feat: Add null check for models in EditPresetDialog
* chore(AlertDialogPortal): typing
* fix(EditPresetDialog): prevent Unknown endpoint edge case for custom endpoints
* chore: remove unused code
* refactor: Update NewChatButtonIcon component to use JSX syntax
The NewChatButtonIcon component in the Nav folder has been updated to use JSX syntax instead of calling the Icon function directly. This change improves code readability and maintainability.
* remove use memo
* refactor: allow passing `select` to messages db query
* fix: initial fix for non-recursive messages
* ci: first pass, importers test rewrite
* fix(groupConversationsByDate): handle edge case of conversation.updatedAt being null
* fix: correctly handle non-recursive uploads
* feat: imports non-recursive conversations with branches correctly
* feat: support retaining original options on import
* refactor: Allow `messageTree` field for Import of non-recursive conversations
* fix: hide audio element on mobile
* chore: add tts docs link
* fix: select voice option on first render
* fix: NotAllowedError, prevent async playback for mobile triggers, consolidate MessageAudio code, user user-triggered unmutes
* fix: Firefox/unsupported type for MediaSource hack
* refactor(STT): make icon red when recording. consolidate logic to AudioRecorder component
* fix: revert Redis changes to use separate client for sessions
* Update TextChat.jsx
* Update SubmitButton.jsx
* Update TextChat.jsx
* Update SubmitButton.jsx
* Create ListeningIcon.tsx
* Update index.ts
* Update SubmitButton.jsx
* Update TextChat.jsx
* Update ListeningIcon.tsx
* Update ListeningIcon.tsx
* Create SpeechRecognition.tsx
* Update TextChat.jsx
* Update TextChat.jsx
* Update SpeechRecognition.tsx
* Update TextChat.jsx
* Update SpeechRecognition.tsx
* Update SpeechRecognition.tsx
* Update SpeechRecognition.tsx
* Update SpeechRecognition.tsx
* Update SubmitButton.jsx
* Update TextChat.jsx
* Update SpeechRecognition.tsx
* Create SpeechSynthesis.tsx
* Update index.jsx
* Update SpeechSynthesis.tsx
* Update SpeechRecognition.tsx
* Update TextChat.jsx
* Update SpeechRecognition.tsx
* Update SpeechRecognition.tsx
* Update SpeechRecognition.tsx
* Update TextChat.jsx
* Squashed commit of the following:
commit 28230d9305
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Sun Sep 3 02:44:26 2023 +0200
feat: delete button confirm (#875)
* base for confirm delete
* more like OpenAI
commit 2b54e3f9fe
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Fri Sep 1 14:20:51 2023 -0400
update: install script (#858)
commit 1cd0fd9d5a
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Fri Sep 1 08:12:35 2023 -0400
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
commit aeeb3d3050
Author: Mu Yuan <yuanmu.email@gmail.com>
Date: Thu Aug 31 07:21:27 2023 +0800
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
commit 80e2e2675b
Author: Raí <140329135+itzraiss@users.noreply.github.com>
Date: Mon Aug 28 18:05:46 2023 -0300
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
commit 3574d0b823
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 28 14:49:26 2023 -0400
docs: make_your_own.md formatting fix for mkdocs (#855)
commit d672ac690d
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 28 14:24:10 2023 -0400
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
commit d3e7627046
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 28 12:03:08 2023 -0400
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
commit 66b8580487
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Mon Aug 28 09:18:25 2023 -0400
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>
commit 9791a78161
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Mon Aug 28 15:14:05 2023 +0200
adjust the animation (#843)
commit 3797ec6082
Author: Ronith <87087292+ronith256@users.noreply.github.com>
Date: Mon Aug 28 18:43:50 2023 +0530
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
commit e2397076a2
Author: Alex Zhang <ztc2011@gmail.com>
Date: Mon Aug 28 00:55:34 2023 +0800
🌐: Chinese Translation (#846)
commit 50c15c704f
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Sat Aug 26 19:36:59 2023 -0400
Language translation: Polish (#840)
* Language translation: Polish
* Language translation: Polish
* Revert changes in language-contributions.md
commit 29d3640546
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Sat Aug 26 19:36:25 2023 -0400
docs: updates (#841)
commit 39c626aa8e
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 25 09:29:19 2023 -0400
fix: isEdited edge case where latest Message is not saved due to aborting too quickly
commit ae5c06f381
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 25 09:13:50 2023 -0400
fix(chatGPTBrowser): render markdown formatting by setting isCreatedByUser, fix(useMessageHandler): avoid double appearance of cursor by setting latest message at initial response creation time
commit 9ef1686e18
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Thu Aug 24 20:24:47 2023 -0400
Update mkdocs.yml
commit 5bbe411569
Author: Flynn <dev@flynnbuckingham.com>
Date: Thu Aug 24 20:20:37 2023 -0400
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
commit 887fec99ca
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Fri Aug 25 02:11:27 2023 +0200
🌐: Russian Translation (#830)
commit 007d51ede1
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Fri Aug 25 02:10:48 2023 +0200
feat: facebook login (#820)
* Facebook strategy
* Update user_auth_system.md
* Update user_auth_system.md
commit a569020312
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Thu Aug 24 21:59:11 2023 +0200
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
commit 37347d4683
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Wed Aug 23 16:14:17 2023 -0400
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
commit d38e463d34
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Wed Aug 23 13:44:40 2023 -0400
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
commit 7dc27b10f1
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Tue Aug 22 18:44:59 2023 -0400
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
commit db77163f5d
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Tue Aug 22 14:15:14 2023 +0200
docs: update chimeragpt (#826)
* Update free_ai_apis.md
* Update free_ai_apis.md
commit 4a4e803df3
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Mon Aug 21 20:15:18 2023 +0200
style(Dialog): Improved Close Button ("X") position (#824)
commit 909b00c752
Author: Daniel Avila <messagedaniel@protonmail.com>
Date: Sun Aug 20 21:04:36 2023 -0400
fix(HoverButtons): light/dark styling to match official site
commit 61dcb4d307
Author: Naosuke Yokoe <ankerasoy@gmail.com>
Date: Sat Aug 19 20:11:31 2023 +0900
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.
commit 3c7f67fa76
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 18 12:40:33 2023 -0400
fix(abortMiddleware): handle early abort error where userMessage.conversationId is undefined. In this case, the userId will be used as the abortKey
commit c74c68a135
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 18 12:10:30 2023 -0400
refactor(MessageHandler -> useServerStream): convert all relating files to TS and correct typings based on this change: properly refactor MessageHandler to a custom hook, where it's passed a submission object to instantiate the stream. This is the bare minimum groundwork for potentially having multiple streams running, which would be a big project to modularize a lot of the global state into maps/multiple streams, particular useful for having multiple views in place
commit 8b4d3c2c21
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 18 12:04:29 2023 -0400
refactor(routes): convert to TS
commit d612cfcb45
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 18 12:02:39 2023 -0400
chore(Auth): reorder exports in Auth component
fix(PluginAuthForm): handle case when pluginKey is null or undefined
fix(PluginStoreDialog): handle case when getAvailablePluginFromKey is null or undefined
fix(AuthContext): make authConfig optional in AuthContextProvider
feat(hooks): add useServerStream hook
fix(conversation): setSubmission to null instead of empty object
fix(preset): specify type for presets atom
fix(search): specify type for isSearchEnabled atom
fix(submission): specify type for submission atom
commit c40b95f424
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Fri Aug 18 16:11:00 2023 +0200
feat: Disable Registration with social login (#813)
* Google, Github and Discord
* update .env.example with ALLOW_SOCIAL_REGISTRATION
* fix some conflict
* refactor strategy
* Update user_auth_system.md
* Update user_auth_system.md
commit 46ed5aaccd
Author: Patrick <psarnowski@gmail.com>
Date: Fri Aug 18 09:38:24 2023 -0400
Show the response scores from Bing. (#814)
commit 1dacfa49f0
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Thu Aug 17 20:32:31 2023 +0200
update profile picture (#792)
commit afd43afb60
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Thu Aug 17 12:50:05 2023 -0400
feat(GPT/Anthropic): Continue Regenerating & Generation Buttons (#808)
* feat(useMessageHandler.js/ts): Refactor and add features to handle user messages, support multiple endpoints/models, generate placeholder responses, regeneration, and stopGeneration function
fix(conversation.ts, buildTree.ts): Import TMessage type, handle null parentMessageId
feat(schemas.ts): Update and add schemas for various AI services, add default values, optional fields, and endpoint-to-schema mapping, create parseConvo function
chore(useMessageHandler.js, schemas.ts): Remove unused imports, variables, and chatGPT enum
* wip: add generation buttons
* refactor(cleanupPreset.ts): simplify cleanupPreset function
refactor(getDefaultConversation.js): remove unused code and simplify getDefaultConversation function
feat(utils): add getDefaultConversation function
This commit adds a new utility function called `getDefaultConversation` to the `client/src/utils/getDefaultConversation.ts` file. This function is responsible for generating a default conversation object based on the provided parameters.
The `getDefaultConversation` function takes in an object with the following properties:
- `conversation`: The conversation object to be used as a base.
- `endpointsConfig`: The configuration object containing information about the available endpoints.
- `preset`: An optional preset object that can be used to override the default behavior.
The function first tries to determine the target endpoint based on the preset object. If a valid endpoint is found, it is used as the target endpoint. If not, the function tries to retrieve the last conversation setup from the local storage and uses its endpoint if it is valid. If neither the preset nor the local storage contains a valid endpoint, the function falls back to a default endpoint.
Once the target endpoint is determined,
* fix(utils): remove console.error statement in buildDefaultConversation function
fix(schemas): add default values for catch blocks in openAISchema, googleSchema, bingAISchema, anthropicSchema, chatGPTBrowserSchema, and gptPluginsSchema
* fix: endpoint not changing on change of preset from other endpoint, wip: refactor
* refactor: preset items to TSX
* refactor: convert resetConvo to TS
* refactor(getDefaultConversation.ts): move defaultEndpoints array to the top of the file for better readability
refactor(getDefaultConversation.ts): extract getDefaultEndpoint function for better code organization and reusability
* feat(svg): add ContinueIcon component
feat(svg): add RegenerateIcon component
feat(svg): add ContinueIcon and RegenerateIcon components to index.ts
* feat(Button.tsx): add onClick and className props to Button component
feat(GenerationButtons.tsx): add logic to display Regenerate or StopGenerating button based on isSubmitting and messages
feat(Regenerate.tsx): create Regenerate component with RegenerateIcon and handleRegenerate function
feat(StopGenerating.tsx): create StopGenerating component with StopGeneratingIcon and handleStopGenerating function
* fix(TextChat.jsx): reorder imports and variables for better readability
fix(TextChat.jsx): fix typo in condition for isNotAppendable variable
fix(TextChat.jsx): remove unused handleStopGenerating function
fix(ContinueIcon.tsx): remove unnecessary closing tags for polygon elements
fix(useMessageHandler.ts): add missing type annotations for handleStopGenerating and handleRegenerate functions
fix(useMessageHandler.ts): remove unused variables in return statement
* fix(getDefaultConversation.ts): refactor code to use getLocalStorageItems function
feat(getLocalStorageItems.ts): add utility function to retrieve items from local storage
* fix(OpenAIClient.js): add support for streaming result in sendCompletion method
feat(OpenAIClient.js): add finish_reason metadata to opts in sendCompletion method
feat(Message.js): add finish_reason field to Message model
feat(messageSchema.js): add finish_reason field to messageSchema
feat(openAI.js): parse chatGptLabel and promptPrefix from req.body and pass rest of the modelOptions to endpointOption
feat(openAI.js): add addMetadata function to store metadata in ask function
feat(openAI.js): add metadata to response if available
feat(schemas.ts): add finish_reason field to tMessageSchema
* feat(types.ts): add TOnClick and TGenButtonProps types for button components
feat(Continue.tsx): create Continue component for generating button
feat(GenerationButtons.tsx): update GenerationButtons component to use Continue component
feat(Regenerate.tsx): create Regenerate component for regenerating button
feat(Stop.tsx): create Stop component for stop generating button
* feat(MessageHandler.jsx): add MessageHandler component to handle messages and conversations
fix(Root.jsx): fix import paths for Nav and MessageHandler components
* feat(useMessageHandler.ts): add support for generation parameter in ask function
feat(useMessageHandler.ts): add support for isEdited parameter in ask function
feat(useMessageHandler.ts): add support for continueGeneration function
fix(createPayload.ts): replace endpoint URL when isEdited parameter is true
* chore(client): set skipLibCheck to true in tsconfig.json
* fix(useMessageHandler.ts): remove unused clientId variable
fix(schemas.ts): make clientId field in tMessageSchema nullable and optional
* wip: edit route for continue generation
* refactor(api): move handlers to root of routes dir
* fix(useMessageHandler.ts): initialize currentMessages to an empty array if messages is null
fix(useMessageHandler.ts): update initialResponse text to use responseText variable
fix(useMessageHandler.ts): update setMessages logic for isRegenerate case
fix(MessageHandler.jsx): update setMessages logic for cancelHandler, createdHandler, and finalHandler
* fix(schemas.ts): make createdAt and updatedAt fields optional and set default values using new Date().toISOString()
fix(schemas.ts): change type annotation of TMessage from infer to input
* refactor(useMessageHandler.ts): rename AskProps type to TAskProps
refactor(useMessageHandler.ts): remove generation property from ask function arguments
refactor(useMessageHandler.ts): use nullish coalescing operator (??) instead of logical OR (||)
refactor(useMessageHandler.ts): pass the responseMessageId to message prop of submission
* fix(BaseClient.js): use nullish coalescing operator (??) instead of logical OR (||) for default values
* fix(BaseClient.js): fix responseMessageId assignment in handleStartMethods method
feat(BaseClient.js): add support for isEdited flag in sendMessage method
feat(BaseClient.js): add generation to responseMessage text in sendMessage method
* fix(openAI.js): remove unused imports and commented out code
feat(openAI.js): add support for generation parameter in request body
fix(openAI.js): remove console.log statement
fix(openAI.js): remove unused variables and parameters
fix(openAI.js): update response text in case of error
fix(openAI.js): handle error and abort message in case of error
fix(handlers.js): add generation parameter to createOnProgress function
fix(useMessageHandler.ts): update responseText variable to use generation parameter
* refactor(api/middleware): move inside server dir
* refactor: add endpoint specific, modular functions to build options and initialize clients, create server/utils, move middleware, separate utils into api general utils and server specific utils
* fix(abortMiddleware.js): import getConvo and getConvoTitle functions from models
feat(abortMiddleware.js): add abortAsk function to abortController to handle aborting of requests
fix(openAI.js): import buildOptions and initializeClient functions from endpoints/openAI
refactor(openAI.js): use getAbortData function to get data for abortAsk function
* refactor: move endpoint specific logic to an endpoints dir
* refactor(PluginService.js): fix import path for encrypt and decrypt functions in PluginService.js
* feat(openAI): add new endpoint for adding a title to a conversation
- Added a new file `addTitle.js` in the `api/server/routes/endpoints/openAI` directory.
- The `addTitle.js` file exports a function `addTitle` that takes in request parameters and performs the following actions:
- If the `parentMessageId` is `'00000000-0000-0000-0000-000000000000'` and `newConvo` is true, it proceeds with the following steps:
- Calls the `titleConvo` function from the `titleConvo` module, passing in the necessary parameters.
- Calls the `saveConvo` function from the `saveConvo` module, passing in the user ID and conversation details.
- Updated the `index.js` file in the `api/server/routes/endpoints/openAI` directory to export the `addTitle` function.
- This change adds
* fix(abortMiddleware.js): remove console.log statement
refactor(gptPlugins.js): update imports and function parameters
feat(gptPlugins.js): add support for abortController and getAbortData
refactor(openAI.js): update imports and function parameters
feat(openAI.js): add support for abortController and getAbortData
fix(openAI.js): refactor code to use modularized functions and middleware
fix(buildOptions.js): refactor code to use destructuring and update variable names
* refactor(askChatGPTBrowser.js, bingAI.js, google.js): remove duplicate code for setting response headers
feat(askChatGPTBrowser.js, bingAI.js, google.js): add setHeaders middleware to set response headers
* feat(middleware): validateEndpoint, refactor buildOption to only be concerned of endpointOption
* fix(abortMiddleware.js): add 'finish_reason' property with value 'incomplete' to responseMessage object
fix(abortMessage.js): remove console.log statement for aborted message
fix(handlers.js): modify tokens assignment to handle empty generation string and trailing space
* fix(BaseClient.js): import addSpaceIfNeeded function from server/utils
fix(BaseClient.js): add space before generation in text property
fix(index.js): remove getCitations and citeText exports
feat(buildEndpointOption.js): add buildEndpointOption middleware
fix(index.js): import buildEndpointOption middleware
fix(anthropic.js): remove buildOptions function and use endpointOption from req.body
fix(gptPlugins.js): remove buildOptions function and use endpointOption from req.body
fix(openAI.js): remove buildOptions function and use endpointOption from req.body
feat(utils): add citations.js and handleText.js modules
fix(utils): fix import statements in index.js module
* refactor(gptPlugins.js): use getResponseSender function from librechat-data-provider
* feat(gptPlugins): complete 'continue generating'
* wip: anthropic continue regen
* feat(middleware): add validateRegistration middleware
A new middleware function called `validateRegistration` has been added to the list of exported middleware functions in `index.js`. This middleware is responsible for validating registration data before allowing the registration process to proceed.
* feat(Anthropic): complete continue regen
* chore: add librechat-data-provider to api/package.json
* fix(ci): backend-review will mock meilisearch, also installs data-provider as now needed
* chore(ci): remove unneeded SEARCH env var
* style(GenerationButtons): make text shorter for sake of space economy, even though this diverges from chat.openai.com
* style(GenerationButtons/ScrollToBottom): adjust visibility/position based on screen size
* chore(client): 'Editting' typo
* feat(GenerationButtons.tsx): add support for endpoint prop in GenerationButtons component
feat(OptionsBar.tsx): pass endpoint prop to GenerationButtons component
feat(useGenerations.ts): create useGenerations hook to handle generation logic
fix(schemas.ts): add searchResult field to tMessageSchema
* refactor(HoverButtons): convert to TSX and utilize new useGenerations hook
* fix(abortMiddleware): handle error with res headers set, or abortController not found, to ensure proper API error is sent to the client, chore(BaseClient): remove console log for onStart message meant for debugging
* refactor(api): remove librechat-data-provider dep for now as it complicates deployed docker build stage, re-use code in CJS, located in server/endpoints/schemas
* chore: remove console.logs from test files
* ci: add backend tests for AnthropicClient, focusing on new buildMessages logic
* refactor(FakeClient): use actual BaseClient sendMessage method for testing
* test(BaseClient.test.js): add test for loading chat history
test(BaseClient.test.js): add test for sendMessage logic with isEdited flag
* fix(buildEndpointOption.js): add support for azureOpenAI in buildFunction object
wip(endpoints.js): fetch Azure models from Azure OpenAI API if opts.azure is true
* fix(Button.tsx): add data-testid attribute to button component
fix(SelectDropDown.tsx): add data-testid attribute to Listbox.Button component
fix(messages.spec.ts): add waitForServerStream function to consolidate logic for awaiting the server response
feat(messages.spec.ts): add test for stopping and continuing message and improve browser/page context order and closing
* refactor(onProgress): speed up time to save initial message for editable routes
* chore: disable AI message editing (for now), was accidentally allowed
* refactor: ensure continue is only supported for latest message style: improve styling in dark mode and across all hover buttons/icons, including making edit icon for AI invisible (for now)
* fix: add test id to generation buttons so they never resolve to 2+ items
* chore(package.json): add 'packages/' to the list of ignored directories
chore(data-provider/package.json): bump version to 0.1.5
commit ae5b7d3d53
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Tue Aug 15 18:27:54 2023 -0400
fix(PluginsClient.js): fix ChatOpenAI Azure Config Issue (#812)
* fix(PluginsClient.js): fix issue with creating LLM when using Azure
* chore(PluginsClient.js): omit azure logging
* refactor(PluginsClient.js): simplify assignment of azure variable
The code was simplified by directly assigning the value of `this.azure` to the `azure` variable using object destructuring. This makes the code cleaner and more concise.
commit b85f3bf91e
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Tue Aug 15 18:42:24 2023 +0200
update from lang to localize (#810)
commit 80aab73bf6
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Mon Aug 14 19:19:04 2023 -0400
chore: rebuilt package-lock file
commit bbe4931a97
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Mon Aug 14 19:13:24 2023 -0400
refactor(ScreenshotContext): use html-to-image for lighter bundle, faster processing
commit 74802dd720
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Mon Aug 14 17:51:03 2023 +0200
chore: Translation Fixes, Lint Error Corrections, and Additional Translations (#788)
* fix translation and small lint error
* changed from localize to useLocalize hook
* changed to useLocalize
commit b64cc71d88
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 14 10:23:00 2023 -0400
chore(docker-compose.yml): comment out meilisearch ports in docker-compose.yml (#807)
commit 89f260bc78
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 14 10:12:00 2023 -0400
fix(CodeBlock.tsx): fix copy-to-clipboard functionality. The code has been updated to use the copy function from the copy-to-clipboard library instead of the (#806)
avigator.clipboard.writeText method. This should fix the issue with browser incompatibility with navigator SDK and allow users to copy code from the CodeBlock component successfully.
commit d00c7354cd
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 14 09:45:44 2023 -0400
fix: Corrected Registration Validation, Case-Insensitive Variable Handling, Playwright workflow (#805)
* feat(auth.js): add validation for registration endpoint using validateRegistration middleware
feat(validateRegistration.js): add middleware to validate registration based on ALLOW_REGISTRATION environment variable
* fix(config.js): fix registrationEnabled and socialLoginEnabled variables to handle case-insensitive environment variable values
* refactor(validateRegistration.js): remove console.log statement
* chore(playwright.yml): skip browser download during yarn install
chore(playwright.yml): place Playwright binaries to node_modules/@playwright/test
chore(playwright.yml): install Playwright dependencies using npx playwright install-deps
chore(playwright.yml): install Playwright chromium browser using npx playwright install chromium
chore(playwright.yml): install @playwright/test@latest using npm install -D @playwright/test@latest
chore(playwright.yml): run Playwright tests using npm run e2e:ci
* chore(playwright.yml): change npm install order and update comment
The order of the npm install commands in the "Install Playwright Browsers" step has been changed to first install @playwright/test@latest and then install chromium. Additionally, the comment explaining the PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD variable has been updated to mention npm install instead of yarn install.
* chore(playwright.yml): remove commented out code for caching and add separate steps for installing Playwright dependencies and browsers
commit 1aa4b34dc6
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Fri Aug 11 19:02:52 2023 +0200
added the dot (.) username rules (#787)
* Create VolumeMuteIcon.tsx
* Create VolumeIcon.tsx
* Update index.ts
* Update SubmitButton.jsx
* Update SubmitButton.jsx
* Update TextChat.jsx
* Update TextChat.jsx
* Update SpeechRecognition.tsx
* Update SpeechRecognition.tsx
* Update TextChat.jsx
* Update SpeechRecognition.tsx
* Update TextChat.jsx
* Update HoverButtons.tsx
* Update useServerStream.ts
* Update useServerStream.ts
* Update HoverButtons.tsx
* Update useServerStream.ts
* Update useServerStream.ts
* Update HoverButtons.tsx
* Update VolumeIcon.tsx
* Update VolumeMuteIcon.tsx
* Update HoverButtons.tsx
* Update SpeechSynthesis.tsx
* Update HoverButtons.tsx
* Update HoverButtons.tsx
* Update SpeechSynthesis.tsx
* Update SpeechSynthesis.tsx
* Update HoverButtons.tsx
* Update SpeechSynthesis.tsx
* Update package.json
* Update SpeechRecognition.tsx
* Update SpeechRecognition.tsx
* Update SpeechRecognition.tsx
* Update SpeechRecognition.tsx
* Squashed commit of the following:
commit 1019529634
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 23:12:14 2023 -0500
Update SpeechRecognition.tsx
commit 67f111ccd0
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 23:08:48 2023 -0500
Update SpeechRecognition.tsx
commit 0b35dbe196
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 23:04:50 2023 -0500
Update SpeechRecognition.tsx
commit 6686126dc0
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 22:49:08 2023 -0500
Update SpeechRecognition.tsx
commit 5b80ddfba7
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 22:45:02 2023 -0500
Update package.json
commit 39e84efa81
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 22:35:48 2023 -0500
Update SpeechSynthesis.tsx
commit 4c6d067cb9
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 22:24:29 2023 -0500
Update HoverButtons.tsx
commit c5ce576fb8
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 22:13:20 2023 -0500
Update SpeechSynthesis.tsx
commit d95fa19539
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 22:11:38 2023 -0500
Update SpeechSynthesis.tsx
commit c794f07678
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 22:03:34 2023 -0500
Update HoverButtons.tsx
commit 7ae0e7e97c
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 21:59:45 2023 -0500
Update HoverButtons.tsx
commit e9882dedad
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 21:58:07 2023 -0500
Update SpeechSynthesis.tsx
commit 95cf300782
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 21:44:49 2023 -0500
Update HoverButtons.tsx
commit 37c828d7fb
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 21:30:34 2023 -0500
Update VolumeMuteIcon.tsx
commit 6133531737
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 21:29:54 2023 -0500
Update VolumeIcon.tsx
commit 4b4afcdd37
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 21:20:14 2023 -0500
Update HoverButtons.tsx
commit 609d1dfefb
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 20:49:52 2023 -0500
Update useServerStream.ts
commit 875ce4b77e
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 20:48:26 2023 -0500
Update useServerStream.ts
commit 8ed04e496b
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 20:37:59 2023 -0500
Update HoverButtons.tsx
commit 4b30c132df
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 20:14:01 2023 -0500
Update useServerStream.ts
commit c041c329cf
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 20:07:14 2023 -0500
Update useServerStream.ts
commit 3e36c16817
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 19:36:21 2023 -0500
Update HoverButtons.tsx
commit c7eea96759
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 19:28:03 2023 -0500
Update TextChat.jsx
commit 5542f8e85d
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 19:21:50 2023 -0500
Update SpeechRecognition.tsx
commit 9a27e56f8b
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 19:16:01 2023 -0500
Update TextChat.jsx
commit 7f101bd122
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 19:09:51 2023 -0500
Update SpeechRecognition.tsx
commit d405454bf5
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 19:03:34 2023 -0500
Update SpeechRecognition.tsx
commit 6033eb3ed1
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 19:01:06 2023 -0500
Update TextChat.jsx
commit 9a3e67fcd2
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 18:53:19 2023 -0500
Update TextChat.jsx
commit 6583877cb3
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 17:53:18 2023 -0500
Update SubmitButton.jsx
commit 8d5114bfae
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 17:39:20 2023 -0500
Update SubmitButton.jsx
commit 29a5b55883
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 17:28:03 2023 -0500
Update index.ts
commit b03001d01d
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 17:25:43 2023 -0500
Create VolumeIcon.tsx
commit 863af2c959
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 17:21:43 2023 -0500
Create VolumeMuteIcon.tsx
commit ad3c78f867
Merge: ed4b25b228230d93
Author: bsu3338 <bsu3338@users.noreply.github.com>
Date: Sun Sep 3 16:49:56 2023 -0500
Merge branch 'danny-avila:main' into Speech-September
commit ed4b25b2c1
Author: bsu3338 <bsu3338@yahoo.com>
Date: Sun Sep 3 16:49:03 2023 -0500
Squashed commit of the following:
commit 28230d9305
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Sun Sep 3 02:44:26 2023 +0200
feat: delete button confirm (#875)
* base for confirm delete
* more like OpenAI
commit 2b54e3f9fe
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Fri Sep 1 14:20:51 2023 -0400
update: install script (#858)
commit 1cd0fd9d5a
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Fri Sep 1 08:12:35 2023 -0400
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
commit aeeb3d3050
Author: Mu Yuan <yuanmu.email@gmail.com>
Date: Thu Aug 31 07:21:27 2023 +0800
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
commit 80e2e2675b
Author: Raí <140329135+itzraiss@users.noreply.github.com>
Date: Mon Aug 28 18:05:46 2023 -0300
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
commit 3574d0b823
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 28 14:49:26 2023 -0400
docs: make_your_own.md formatting fix for mkdocs (#855)
commit d672ac690d
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 28 14:24:10 2023 -0400
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
commit d3e7627046
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 28 12:03:08 2023 -0400
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
commit 66b8580487
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Mon Aug 28 09:18:25 2023 -0400
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>
commit 9791a78161
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Mon Aug 28 15:14:05 2023 +0200
adjust the animation (#843)
commit 3797ec6082
Author: Ronith <87087292+ronith256@users.noreply.github.com>
Date: Mon Aug 28 18:43:50 2023 +0530
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
commit e2397076a2
Author: Alex Zhang <ztc2011@gmail.com>
Date: Mon Aug 28 00:55:34 2023 +0800
🌐: Chinese Translation (#846)
commit 50c15c704f
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Sat Aug 26 19:36:59 2023 -0400
Language translation: Polish (#840)
* Language translation: Polish
* Language translation: Polish
* Revert changes in language-contributions.md
commit 29d3640546
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Sat Aug 26 19:36:25 2023 -0400
docs: updates (#841)
commit 39c626aa8e
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 25 09:29:19 2023 -0400
fix: isEdited edge case where latest Message is not saved due to aborting too quickly
commit ae5c06f381
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 25 09:13:50 2023 -0400
fix(chatGPTBrowser): render markdown formatting by setting isCreatedByUser, fix(useMessageHandler): avoid double appearance of cursor by setting latest message at initial response creation time
commit 9ef1686e18
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Thu Aug 24 20:24:47 2023 -0400
Update mkdocs.yml
commit 5bbe411569
Author: Flynn <dev@flynnbuckingham.com>
Date: Thu Aug 24 20:20:37 2023 -0400
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
commit 887fec99ca
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Fri Aug 25 02:11:27 2023 +0200
🌐: Russian Translation (#830)
commit 007d51ede1
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Fri Aug 25 02:10:48 2023 +0200
feat: facebook login (#820)
* Facebook strategy
* Update user_auth_system.md
* Update user_auth_system.md
commit a569020312
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Thu Aug 24 21:59:11 2023 +0200
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
commit 37347d4683
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Wed Aug 23 16:14:17 2023 -0400
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
commit d38e463d34
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Wed Aug 23 13:44:40 2023 -0400
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
commit 7dc27b10f1
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Tue Aug 22 18:44:59 2023 -0400
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
commit db77163f5d
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Tue Aug 22 14:15:14 2023 +0200
docs: update chimeragpt (#826)
* Update free_ai_apis.md
* Update free_ai_apis.md
commit 4a4e803df3
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Mon Aug 21 20:15:18 2023 +0200
style(Dialog): Improved Close Button ("X") position (#824)
commit 909b00c752
Author: Daniel Avila <messagedaniel@protonmail.com>
Date: Sun Aug 20 21:04:36 2023 -0400
fix(HoverButtons): light/dark styling to match official site
commit 61dcb4d307
Author: Naosuke Yokoe <ankerasoy@gmail.com>
Date: Sat Aug 19 20:11:31 2023 +0900
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.
commit 3c7f67fa76
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 18 12:40:33 2023 -0400
fix(abortMiddleware): handle early abort error where userMessage.conversationId is undefined. In this case, the userId will be used as the abortKey
commit c74c68a135
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 18 12:10:30 2023 -0400
refactor(MessageHandler -> useServerStream): convert all relating files to TS and correct typings based on this change: properly refactor MessageHandler to a custom hook, where it's passed a submission object to instantiate the stream. This is the bare minimum groundwork for potentially having multiple streams running, which would be a big project to modularize a lot of the global state into maps/multiple streams, particular useful for having multiple views in place
commit 8b4d3c2c21
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 18 12:04:29 2023 -0400
refactor(routes): convert to TS
commit d612cfcb45
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 18 12:02:39 2023 -0400
chore(Auth): reorder exports in Auth component
fix(PluginAuthForm): handle case when pluginKey is null or undefined
fix(PluginStoreDialog): handle case when getAvailablePluginFromKey is null or undefined
fix(AuthContext): make authConfig optional in AuthContextProvider
feat(hooks): add useServerStream hook
fix(conversation): setSubmission to null instead of empty object
fix(preset): specify type for presets atom
fix(search): specify type for isSearchEnabled atom
fix(submission): specify type for submission atom
commit c40b95f424
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Fri Aug 18 16:11:00 2023 +0200
feat: Disable Registration with social login (#813)
* Google, Github and Discord
* update .env.example with ALLOW_SOCIAL_REGISTRATION
* fix some conflict
* refactor strategy
* Update user_auth_system.md
* Update user_auth_system.md
commit 46ed5aaccd
Author: Patrick <psarnowski@gmail.com>
Date: Fri Aug 18 09:38:24 2023 -0400
Show the response scores from Bing. (#814)
commit 1dacfa49f0
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Thu Aug 17 20:32:31 2023 +0200
update profile picture (#792)
commit afd43afb60
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Thu Aug 17 12:50:05 2023 -0400
feat(GPT/Anthropic): Continue Regenerating & Generation Buttons (#808)
* feat(useMessageHandler.js/ts): Refactor and add features to handle user messages, support multiple endpoints/models, generate placeholder responses, regeneration, and stopGeneration function
fix(conversation.ts, buildTree.ts): Import TMessage type, handle null parentMessageId
feat(schemas.ts): Update and add schemas for various AI services, add default values, optional fields, and endpoint-to-schema mapping, create parseConvo function
chore(useMessageHandler.js, schemas.ts): Remove unused imports, variables, and chatGPT enum
* wip: add generation buttons
* refactor(cleanupPreset.ts): simplify cleanupPreset function
refactor(getDefaultConversation.js): remove unused code and simplify getDefaultConversation function
feat(utils): add getDefaultConversation function
This commit adds a new utility function called `getDefaultConversation` to the `client/src/utils/getDefaultConversation.ts` file. This function is responsible for generating a default conversation object based on the provided parameters.
The `getDefaultConversation` function takes in an object with the following properties:
- `conversation`: The conversation object to be used as a base.
- `endpointsConfig`: The configuration object containing information about the available endpoints.
- `preset`: An optional preset object that can be used to override the default behavior.
The function first tries to determine the target endpoint based on the preset object. If a valid endpoint is found, it is used as the target endpoint. If not, the function tries to retrieve the last conversation setup from the local storage and uses its endpoint if it is valid. If neither the preset nor the local storage contains a valid endpoint, the function falls back to a default endpoint.
Once the target endpoint is determined,
* fix(utils): remove console.error statement in buildDefaultConversation function
fix(schemas): add default values for catch blocks in openAISchema, googleSchema, bingAISchema, anthropicSchema, chatGPTBrowserSchema, and gptPluginsSchema
* fix: endpoint not changing on change of preset from other endpoint, wip: refactor
* refactor: preset items to TSX
* refactor: convert resetConvo to TS
* refactor(getDefaultConversation.ts): move defaultEndpoints array to the top of the file for better readability
refactor(getDefaultConversation.ts): extract getDefaultEndpoint function for better code organization and reusability
* feat(svg): add ContinueIcon component
feat(svg): add RegenerateIcon component
feat(svg): add ContinueIcon and RegenerateIcon components to index.ts
* feat(Button.tsx): add onClick and className props to Button component
feat(GenerationButtons.tsx): add logic to display Regenerate or StopGenerating button based on isSubmitting and messages
feat(Regenerate.tsx): create Regenerate component with RegenerateIcon and handleRegenerate function
feat(StopGenerating.tsx): create StopGenerating component with StopGeneratingIcon and handleStopGenerating function
* fix(TextChat.jsx): reorder imports and variables for better readability
fix(TextChat.jsx): fix typo in condition for isNotAppendable variable
fix(TextChat.jsx): remove unused handleStopGenerating function
fix(ContinueIcon.tsx): remove unnecessary closing tags for polygon elements
fix(useMessageHandler.ts): add missing type annotations for handleStopGenerating and handleRegenerate functions
fix(useMessageHandler.ts): remove unused variables in return statement
* fix(getDefaultConversation.ts): refactor code to use getLocalStorageItems function
feat(getLocalStorageItems.ts): add utility function to retrieve items from local storage
* fix(OpenAIClient.js): add support for streaming result in sendCompletion method
feat(OpenAIClient.js): add finish_reason metadata to opts in sendCompletion method
feat(Message.js): add finish_reason field to Message model
feat(messageSchema.js): add finish_reason field to messageSchema
feat(openAI.js): parse chatGptLabel and promptPrefix from req.body and pass rest of the modelOptions to endpointOption
feat(openAI.js): add addMetadata function to store metadata in ask function
feat(openAI.js): add metadata to response if available
feat(schemas.ts): add finish_reason field to tMessageSchema
* feat(types.ts): add TOnClick and TGenButtonProps types for button components
feat(Continue.tsx): create Continue component for generating button
feat(GenerationButtons.tsx): update GenerationButtons component to use Continue component
feat(Regenerate.tsx): create Regenerate component for regenerating button
feat(Stop.tsx): create Stop component for stop generating button
* feat(MessageHandler.jsx): add MessageHandler component to handle messages and conversations
fix(Root.jsx): fix import paths for Nav and MessageHandler components
* feat(useMessageHandler.ts): add support for generation parameter in ask function
feat(useMessageHandler.ts): add support for isEdited parameter in ask function
feat(useMessageHandler.ts): add support for continueGeneration function
fix(createPayload.ts): replace endpoint URL when isEdited parameter is true
* chore(client): set skipLibCheck to true in tsconfig.json
* fix(useMessageHandler.ts): remove unused clientId variable
fix(schemas.ts): make clientId field in tMessageSchema nullable and optional
* wip: edit route for continue generation
* refactor(api): move handlers to root of routes dir
* fix(useMessageHandler.ts): initialize currentMessages to an empty array if messages is null
fix(useMessageHandler.ts): update initialResponse text to use responseText variable
fix(useMessageHandler.ts): update setMessages logic for isRegenerate case
fix(MessageHandler.jsx): update setMessages logic for cancelHandler, createdHandler, and finalHandler
* fix(schemas.ts): make createdAt and updatedAt fields optional and set default values using new Date().toISOString()
fix(schemas.ts): change type annotation of TMessage from infer to input
* refactor(useMessageHandler.ts): rename AskProps type to TAskProps
refactor(useMessageHandler.ts): remove generation property from ask function arguments
refactor(useMessageHandler.ts): use nullish coalescing operator (??) instead of logical OR (||)
refactor(useMessageHandler.ts): pass the responseMessageId to message prop of submission
* fix(BaseClient.js): use nullish coalescing operator (??) instead of logical OR (||) for default values
* fix(BaseClient.js): fix responseMessageId assignment in handleStartMethods method
feat(BaseClient.js): add support for isEdited flag in sendMessage method
feat(BaseClient.js): add generation to responseMessage text in sendMessage method
* fix(openAI.js): remove unused imports and commented out code
feat(openAI.js): add support for generation parameter in request body
fix(openAI.js): remove console.log statement
fix(openAI.js): remove unused variables and parameters
fix(openAI.js): update response text in case of error
fix(openAI.js): handle error and abort message in case of error
fix(handlers.js): add generation parameter to createOnProgress function
fix(useMessageHandler.ts): update responseText variable to use generation parameter
* refactor(api/middleware): move inside server dir
* refactor: add endpoint specific, modular functions to build options and initialize clients, create server/utils, move middleware, separate utils into api general utils and server specific utils
* fix(abortMiddleware.js): import getConvo and getConvoTitle functions from models
feat(abortMiddleware.js): add abortAsk function to abortController to handle aborting of requests
fix(openAI.js): import buildOptions and initializeClient functions from endpoints/openAI
refactor(openAI.js): use getAbortData function to get data for abortAsk function
* refactor: move endpoint specific logic to an endpoints dir
* refactor(PluginService.js): fix import path for encrypt and decrypt functions in PluginService.js
* feat(openAI): add new endpoint for adding a title to a conversation
- Added a new file `addTitle.js` in the `api/server/routes/endpoints/openAI` directory.
- The `addTitle.js` file exports a function `addTitle` that takes in request parameters and performs the following actions:
- If the `parentMessageId` is `'00000000-0000-0000-0000-000000000000'` and `newConvo` is true, it proceeds with the following steps:
- Calls the `titleConvo` function from the `titleConvo` module, passing in the necessary parameters.
- Calls the `saveConvo` function from the `saveConvo` module, passing in the user ID and conversation details.
- Updated the `index.js` file in the `api/server/routes/endpoints/openAI` directory to export the `addTitle` function.
- This change adds
* fix(abortMiddleware.js): remove console.log statement
refactor(gptPlugins.js): update imports and function parameters
feat(gptPlugins.js): add support for abortController and getAbortData
refactor(openAI.js): update imports and function parameters
feat(openAI.js): add support for abortController and getAbortData
fix(openAI.js): refactor code to use modularized functions and middleware
fix(buildOptions.js): refactor code to use destructuring and update variable names
* refactor(askChatGPTBrowser.js, bingAI.js, google.js): remove duplicate code for setting response headers
feat(askChatGPTBrowser.js, bingAI.js, google.js): add setHeaders middleware to set response headers
* feat(middleware): validateEndpoint, refactor buildOption to only be concerned of endpointOption
* fix(abortMiddleware.js): add 'finish_reason' property with value 'incomplete' to responseMessage object
fix(abortMessage.js): remove console.log statement for aborted message
fix(handlers.js): modify tokens assignment to handle empty generation string and trailing space
* fix(BaseClient.js): import addSpaceIfNeeded function from server/utils
fix(BaseClient.js): add space before generation in text property
fix(index.js): remove getCitations and citeText exports
feat(buildEndpointOption.js): add buildEndpointOption middleware
fix(index.js): import buildEndpointOption middleware
fix(anthropic.js): remove buildOptions function and use endpointOption from req.body
fix(gptPlugins.js): remove buildOptions function and use endpointOption from req.body
fix(openAI.js): remove buildOptions function and use endpointOption from req.body
feat(utils): add citations.js and handleText.js modules
fix(utils): fix import statements in index.js module
* refactor(gptPlugins.js): use getResponseSender function from librechat-data-provider
* feat(gptPlugins): complete 'continue generating'
* wip: anthropic continue regen
* feat(middleware): add validateRegistration middleware
A new middleware function called `validateRegistration` has been added to the list of exported middleware functions in `index.js`. This middleware is responsible for validating registration data before allowing the registration process to proceed.
* feat(Anthropic): complete continue regen
* chore: add librechat-data-provider to api/package.json
* fix(ci): backend-review will mock meilisearch, also installs data-provider as now needed
* chore(ci): remove unneeded SEARCH env var
* style(GenerationButtons): make text shorter for sake of space economy, even though this diverges from chat.openai.com
* style(GenerationButtons/ScrollToBottom): adjust visibility/position based on screen size
* chore(client): 'Editting' typo
* feat(GenerationButtons.tsx): add support for endpoint prop in GenerationButtons component
feat(OptionsBar.tsx): pass endpoint prop to GenerationButtons component
feat(useGenerations.ts): create useGenerations hook to handle generation logic
fix(schemas.ts): add searchResult field to tMessageSchema
* refactor(HoverButtons): convert to TSX and utilize new useGenerations hook
* fix(abortMiddleware): handle error with res headers set, or abortController not found, to ensure proper API error is sent to the client, chore(BaseClient): remove console log for onStart message meant for debugging
* refactor(api): remove librechat-data-provider dep for now as it complicates deployed docker build stage, re-use code in CJS, located in server/endpoints/schemas
* chore: remove console.logs from test files
* ci: add backend tests for AnthropicClient, focusing on new buildMessages logic
* refactor(FakeClient): use actual BaseClient sendMessage method for testing
* test(BaseClient.test.js): add test for loading chat history
test(BaseClient.test.js): add test for sendMessage logic with isEdited flag
* fix(buildEndpointOption.js): add support for azureOpenAI in buildFunction object
wip(endpoints.js): fetch Azure models from Azure OpenAI API if opts.azure is true
* fix(Button.tsx): add data-testid attribute to button component
fix(SelectDropDown.tsx): add data-testid attribute to Listbox.Button component
fix(messages.spec.ts): add waitForServerStream function to consolidate logic for awaiting the server response
feat(messages.spec.ts): add test for stopping and continuing message and improve browser/page context order and closing
* refactor(onProgress): speed up time to save initial message for editable routes
* chore: disable AI message editing (for now), was accidentally allowed
* refactor: ensure continue is only supported for latest message style: improve styling in dark mode and across all hover buttons/icons, including making edit icon for AI invisible (for now)
* fix: add test id to generation buttons so they never resolve to 2+ items
* chore(package.json): add 'packages/' to the list of ignored directories
chore(data-provider/package.json): bump version to 0.1.5
commit ae5b7d3d53
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Tue Aug 15 18:27:54 2023 -0400
fix(PluginsClient.js): fix ChatOpenAI Azure Config Issue (#812)
* fix(PluginsClient.js): fix issue with creating LLM when using Azure
* chore(PluginsClient.js): omit azure logging
* refactor(PluginsClient.js): simplify assignment of azure variable
The code was simplified by directly assigning the value of `this.azure` to the `azure` variable using object destructuring. This makes the code cleaner and more concise.
commit b85f3bf91e
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Tue Aug 15 18:42:24 2023 +0200
update from lang to localize (#810)
commit 80aab73bf6
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Mon Aug 14 19:19:04 2023 -0400
chore: rebuilt package-lock file
commit bbe4931a97
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Mon Aug 14 19:13:24 2023 -0400
refactor(ScreenshotContext): use html-to-image for lighter bundle, faster processing
commit 74802dd720
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Mon Aug 14 17:51:03 2023 +0200
chore: Translation Fixes, Lint Error Corrections, and Additional Translations (#788)
* fix translation and small lint error
* changed from localize to useLocalize hook
* changed to useLocalize
commit b64cc71d88
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 14 10:23:00 2023 -0400
chore(docker-compose.yml): comment out meilisearch ports in docker-compose.yml (#807)
commit 89f260bc78
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 14 10:12:00 2023 -0400
fix(CodeBlock.tsx): fix copy-to-clipboard functionality. The code has been updated to use the copy function from the copy-to-clipboard library instead of the (#806)
avigator.clipboard.writeText method. This should fix the issue with browser incompatibility with navigator SDK and allow users to copy code from the CodeBlock component successfully.
commit d00c7354cd
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 14 09:45:44 2023 -0400
fix: Corrected Registration Validation, Case-Insensitive Variable Handling, Playwright workflow (#805)
* feat(auth.js): add validation for registration endpoint using validateRegistration middleware
feat(validateRegistration.js): add middleware to validate registration based on ALLOW_REGISTRATION environment variable
* fix(config.js): fix registrationEnabled and socialLoginEnabled variables to handle case-insensitive environment variable values
* refactor(validateRegistration.js): remove console.log statement
* chore(playwright.yml): skip browser download during yarn install
chore(playwright.yml): place Playwright binaries to node_modules/@playwright/test
chore(playwright.yml): install Playwright dependencies using npx playwright install-deps
chore(playwright.yml): install Playwright chromium browser using npx playwright install chromium
chore(playwright.yml): install @playwright/test@latest using npm install -D @playwright/test@latest
chore(playwright.yml): run Playwright tests using npm run e2e:ci
* chore(playwright.yml): change npm install order and update comment
The order of the npm install commands in the "Install Playwright Browsers" step has been changed to first install @playwright/test@latest and then install chromium. Additionally, the comment explaining the PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD variable has been updated to mention npm install instead of yarn install.
* chore(playwright.yml): remove commented out code for caching and add separate steps for installing Playwright dependencies and browsers
commit 1aa4b34dc6
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Fri Aug 11 19:02:52 2023 +0200
added the dot (.) username rules (#787)
commit 28230d9305
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Sun Sep 3 02:44:26 2023 +0200
feat: delete button confirm (#875)
* base for confirm delete
* more like OpenAI
commit 2b54e3f9fe
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Fri Sep 1 14:20:51 2023 -0400
update: install script (#858)
commit 1cd0fd9d5a
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Fri Sep 1 08:12:35 2023 -0400
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
commit aeeb3d3050
Author: Mu Yuan <yuanmu.email@gmail.com>
Date: Thu Aug 31 07:21:27 2023 +0800
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
commit 80e2e2675b
Author: Raí <140329135+itzraiss@users.noreply.github.com>
Date: Mon Aug 28 18:05:46 2023 -0300
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
commit 3574d0b823
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 28 14:49:26 2023 -0400
docs: make_your_own.md formatting fix for mkdocs (#855)
commit d672ac690d
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 28 14:24:10 2023 -0400
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
commit d3e7627046
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Mon Aug 28 12:03:08 2023 -0400
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
commit 66b8580487
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Mon Aug 28 09:18:25 2023 -0400
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>
commit 9791a78161
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Mon Aug 28 15:14:05 2023 +0200
adjust the animation (#843)
commit 3797ec6082
Author: Ronith <87087292+ronith256@users.noreply.github.com>
Date: Mon Aug 28 18:43:50 2023 +0530
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
commit e2397076a2
Author: Alex Zhang <ztc2011@gmail.com>
Date: Mon Aug 28 00:55:34 2023 +0800
🌐: Chinese Translation (#846)
commit 50c15c704f
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Sat Aug 26 19:36:59 2023 -0400
Language translation: Polish (#840)
* Language translation: Polish
* Language translation: Polish
* Revert changes in language-contributions.md
commit 29d3640546
Author: Fuegovic <32828263+fuegovic@users.noreply.github.com>
Date: Sat Aug 26 19:36:25 2023 -0400
docs: updates (#841)
commit 39c626aa8e
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 25 09:29:19 2023 -0400
fix: isEdited edge case where latest Message is not saved due to aborting too quickly
commit ae5c06f381
Author: Danny Avila <messagedaniel@protonmail.com>
Date: Fri Aug 25 09:13:50 2023 -0400
fix(chatGPTBrowser): render markdown formatting by setting isCreatedByUser, fix(useMessageHandler): avoid double appearance of cursor by setting latest message at initial response creation time
commit 9ef1686e18
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Thu Aug 24 20:24:47 2023 -0400
Update mkdocs.yml
commit 5bbe411569
Author: Flynn <dev@flynnbuckingham.com>
Date: Thu Aug 24 20:20:37 2023 -0400
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
commit 887fec99ca
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Fri Aug 25 02:11:27 2023 +0200
🌐: Russian Translation (#830)
commit 007d51ede1
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Fri Aug 25 02:10:48 2023 +0200
feat: facebook login (#820)
* Facebook strategy
* Update user_auth_system.md
* Update user_auth_system.md
commit a569020312
Author: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Date: Thu Aug 24 21:59:11 2023 +0200
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
commit 37347d4683
Author: Danny Avila <110412045+danny-avila@users.noreply.github.com>
Date: Wed Aug 23 16:14:17 2023 -0400
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 …
* Update package-lock.json
* Update SubmitButton.tsx
* Update SpeechRecognition.tsx
* fix: typescript error
* style: moved to new UI
* fix:(SpeechRecognition) lint error
* moved everything to hooks
* feat: support stt external
* fix(useExternalSpeechRecognition): recording the audio
* feat: whisper api support
* refactor(SpeechReecognition); fix(HoverButtons): set isSpeakling correctly
* fix: spelling errors
* fix: renamed files
* BIG FIX
* feat: whisper support
* fixed some ChatForm bugs and added the tts route
* handling more errors
* Fix audio stream initialization and cleanup in useSpeechToTextExternal
* feat: Elevenlabs TTS
* fixed some req issues
* fix: stt not activating on Mac
* fix: send audio blob to frontend
* fix(ChatForm): startupConfig var
* Update text-to-speech and speech-to-text services
* handle more errors correctly
* Remove console.log statements
* feat: added manual trigger with button
* fix: SpeechToText and SpeechToTextExernal + AudioRecorder
* refactor: TTS component
* chore: removed unused variable
* feat: azure stt
* feat: dedicated speech panel
* feat: STT button switch: fix: TextArea pr value adapted
* refactor: textToSpeech function and useTextToSpeechMutation
* fix: typo data-service
* fix: blob backend to frontend
* feat: TTS button for external
* feat: librechat.yaml
* style: spinner when loading TTS
* feat: hold click to download file
* style: disabled when apiKey not provided
* fix: typo startupConfig?.speechToTextExternal
* style: update icons
* fix(useTextToSpeech): set isSpeaking when audio finish
* fix: small issues with local TTS
* style: update settings dark theme
* docs: STT & TTS
* WIP: chat audio automatic; docs(custom_config): update to new .yaml version; chore: updated librechat.yaml version
* fix: send button disabled
* fix: interval update
* localization
* removed unused test code
* revert interval update to 100
* feat: auto-send message
* fix: chat audio automatic, default false
* refactor: moved all logic to hooks
* chore: renamed ChatAudio to conversationMode
* refactor: organized Speech panel
* feat: autoSendText switch
* feat: moved chataudio to conversationMode and improved error handling; docs: update localai model
* refactor: Auto transcribe audio
* test: AutoSendTextSwitch, AutoTranscribeAudioSwitch and ConversationModeSwitch.spec: refactor: removed hark
* fix: various speechTab fixes
* refactor(useSpeechToTextBrowser):: handle more errors
* feat: engine select
* feat: advanced mode
* chore: converted hooks to TS
* feat: cache TTS
* feat: delete cache; fix: cache issues
* refactor(useTextToSpeechExternal): removed unused import
* feat: cache switch; refactor: moved to dir STT/TTS
* tests: CacheTTS, TextToSpeech, SpeechToText
* feat: custom elevenlabs compatibility
* fix(useTextToSpeechExternal): cache switch not working
* feat: animation for STT
* fix: settings var not working
* chore: remove unused var
* feat: voice dropdown; refactor: yaml changes
* fix(textToSpeech): remove undefined properties
* refactor: Remove console logs and unused variable
* fix: TTS; feat: support coqui and piper
* fix: some STT issues
* fix: stt test
* fix: STT backend sending wrong data
* BREAKING: switch to react-speech-recognition, add regenerator-runtime/runtime in main.jsx
* feat: websocket backend
* foundations for websocket
* first pass elevenlabs streaming
* streaming audio
* stream changes
* input streaming implementation
* fix: client build errors
* WIP: streaming rewrite
* audio stream working but not the loop
* WIP: looping audio stream working
* WIP tts routes rewrite
* feat: track SSE runs by runId, which enables us to better track audio streams per message request
* chore: set activeRunId on data.created
* rate limit tts and only allow once
* WIP: streaming audio
* refactor(useSSE): simplify messageId/parentMessageId assignment in message stream
* delete unused component
* streaming working
* first pass but need to investigate forever pending bug
* optimize audio stream handling client and initial request
* fix(StreamAudio): null exception
* refactor(tts): add limiters for db polling and timeout promise by intervals and not elapsed time
* refactor(textToSpeech): reduce polling delay
* feat(StreamAudio): add caching
* refactor: rename global variable, add setIsPlaying, remove mediasource ref
* feat: use custom hook for audioRef to help determine audio end state
* fix: voices mutation -> query
* fix: voices mutation -> query 2/2
* feat: successful TTS for manual playback
* fix: tts voice init
* feat: playback rate
* feat: global audio toggles
* chore: Add renderIcon function for chat message hover buttons, update schemas with notes
* chore: add debug logging instead of console.logs
* fix: edge case undefined user id
* feat: Automatic Playback switch
* feat: add caching bump data-provider
* chore: tts add auth
* use global state for audio run
* feat: assistants support for TTS read aloud
* ci: uncomment tests for now until they are refactored
* stream audio tests are WIP
* refactor: make automatic playback false as default
---------
Co-authored-by: bsu3338 <bsu3338@users.noreply.github.com>
Co-authored-by: bsu3338 <bsu3338@yahoo.com>
Co-authored-by: Marco Beretta <81851188+Berry-13@users.noreply.github.com>
Co-authored-by: Berry-13 <marco13beretta@gmail.com>
Co-authored-by: Super User <root@Berry>
Co-authored-by: Marco Beretta <marco13beretta@proton.me>
* feat: Minor design changes to mimic OpenAI's latest login page
* fix: Optimize ThemeSelector for mobile
* fix: Use a svg for the logo for transperency in dark mode
* feat: Update styles for Registration
* feat: Update error colors for login & registration
* fix: remove medium font
* wip: Dropdown menu
* feat: Update dropdown to match ChatGPT
* feat: Improve rounding and padding
* feat: Add UI Updates to RequestPasswordReset, PasswordRest and increase width for theme dropdown
* fix: Modify the My Files modal's width to not touch the screen
* feat: fix scrolling for dropdown, and make border width lighter
* feat: Match popup menu design to OpenAI (p1/2)
* fix+feat: fix dark mode, add user email, add lighter borders
* fix: Add border color on focus of chat input.
* feat: Move Export Conversation to a seperate button (testing)
* fix: Properly center Login, Registration, Reset Password Flow
* fix: Border colors on dark mode for settings modal
* feat: Improve wording for settings menu
* fix: Optimize settings modal for mobile and fix height for modal
* feat: Optimize for desktop
* fix: make TooltipTrigger asChild of button, improve settings mobile responsiveness
* feat: Handle dropdowns properly
TODO: Make height dynamic, fix dark mode colors
* fix: input styles
fix: make endpoint icon smaller
* feat: Update UI to Match ChatGPT Style
- Updated the dropdown styles to match the aesthetic of ChatGPT.
- Decreased spacing within the conversation area for cleanliness.
- Replaced the current archive icon with the ChatGPT's icon.
* fix: fix colors for EditMenuButton & ArchiveButton for dark mode and light mode
* fix: ui fixes
* fix: Fix Conversation UI Bugs
* fix: transparency of HoverToggle to make buttons not visible
* fix: dark mode HoverToggle & compress menu item spacing
* fix: responsiveness of export icon
* fix: first mentionitem is set to always be highlighted
* fix: improve hover state to text instead of bg
* feat: Update icons to ChatGPT Style
* fix: dark mode hover for PanelFileCell
* fix: change navlinks z-index to 100
* fix: hover states for DataTable
* feat: Move ExportButton to seperate component
* chore: remove unused imports
* 🔧chore: add internationalization labels for archive feature
* ✨ feat: Add function to useArchiveConversationMutation()
This commit adds a new mutation function `useArchiveConversationMutation()` for archiving conversations. This function takes the ID string of the conversation to be archived and returns a mutation result object. Upon successful archiving, it removes and refreshes the conversation from the query data cache.
While ChatGPT PATCHes the archived status by sending `{is_archived: true}` to the URL `/backend-api/conversation/$conversation_id`, this implementation uses the `dataService.updateConversation(payload)` with a POST method, aligning with the existing code conventions.
* ✨ feat(api): add is_archived field to Conversation schema and update getConvosByPage method
This commit adds a new field `is_archived` with a default value of false to the Conversation schema. It also modifies the `getConvosByPage` method within the Conversation API to adjust the query to only target conversations where `is_archived` is set to false or where the `is_archived` field does not exist. The function `getConvosQueried`, which returns conversations for a specified Conversation ID, was determined not to require consideration of whether `is_archived` is true or false, and thus was not modified.
* ♻️ refactor: add className prop to DotsIcon component
To enhance the versatility of the DotsIcon component, this commit introduces the ability to specify a className prop, allowing for greater customization.
* ✨ feat(ui): add Edit Button to group Title change and Conversation delete buttons
Added a new Edit Button to the conversations, similar to the ChatGPT UI, which groups options for editing the conversation title and deleting conversations. This grouping is accessible through a dialogue that appears when the three-dot icon is clicked.
* ♻️ refactor(ui): enhance Delete Button to accept className and label options
Enhanced the Delete Button component to accept a `className` for customization and an optional `appendLabel`. The DeleteButton component is used by both `Convo.tsx` and `Conversation.tsx`, but currently only `Convo.tsx` is active and `Conversation.tsx `is apparently not used; removing `Conversation.tsx` may eliminate the need for the `appendLabel` property in the future.
* ♻️ refactor(ui): enhance RenameButton to accept label options
Added the ability to optionally display labels; the Rename Button component is used by both `Convo.tsx` and `Conversation.tsx`, but currently only `Convo.tsx` is active and `Conversation.tsx `is apparently not used; removing `Conversation.tsx` may eliminate the need for the `appendLabel` property in the future.
* 🔧 chors: additional localization labels
* ♻️ refactor: change is_archived property of conversation to camelCase
* Refactor the is_archived property of conversation to camelCase (isArchived) to adhere to the existing code conventions
* Modify the function that retrieves conversations to accept the isArchived parameter
* ♻️ refactor: add archiveConversation mutation
I thought I could divert dataService.updateConversation, but added a new archiveConversation because the request types are different. It might be better to make them common, but to avoid side effects, I added a new function this time.
Added process to deleteConversationMutation to delete archived conversations
* ✨ feat: Add the function to hide a cancel button in DialogTemplate component
The Cancel button is not needed when displaying the archive list, so I made the Cancel button optional.
* ♻️ refactor: Add support for filtering archived conversations in Nav component
This commit modifies the Nav component to add the ability to filter out archived conversations when fetching data. This is done by adding `isArchived: false` to the query parameters for both the `useConversationsInfiniteQuery()` and `useSearchInfiniteQuery()` hooks, effectively excluding any archived conversations from the results returned.
* ♻️ refactor: add Tooltip to DeleteButton
* Add Tooltip to DeleteButton component
* Display Tooltip when DeleteButton only shows an Icon without text
* ✨ feat(ui): add ArchiveButton component for archiving conversations
To be compatible with the ChatGPT UI, no confirmation dialog is displayed when ArchiveButton is clicked. The basic behavior conforms to DeleteButton and RenameButton.
* ✨ feat(ui): add Archive button to list of conversations
Modify the Nav of the conversation list to include a dropdown that contains the Rename and Delete options, similar to the ChatGPT UI. Additionally, an Archive button has been added adjacent to the dropdown menu.
* ✨ feat: Add ArchivedChatsTable component
Adds the `ArchivedChatsTable` component, which displays a table of archived chats. It has been implemented to be as compatible with the ChatGPT UI as possible.
* 🚑 fix(tooltip): increase z-index to ensure visibility over Dialog
Resolve an issue where tooltips were not visible when displayed over a Dialog. The z-index of `DialogPrimitive.Portal` in `Dialog.tsx` is set to 999. Since the rationale for this value is unclear, the z-index of the tooltip has been increased to 1000 to guarantee its visibility above the Dialog component.
* 🔧 chors: add internationalization labels
* WIP: first pass ModelSpecs
* refactor(onSelectEndpoint): use `getConvoSwitchLogic`
* feat: introduce iconURL, greeting, frontend fields for conversations/presets/messages
* feat: conversation.iconURL & greeting in Landing
* feat: conversation.iconURL & greeting in New Chat button
* feat: message.iconURL
* refactor: ConversationIcon -> ConvoIconURL
* WIP: add spec as a conversation field
* refactor: useAppStartup, set spec on initial load for new chat, allow undefined spec, add localStorage keys enum, additional type fields for spec
* feat: handle `showIconInMenu`, `showIconInHeader`, undefined `iconURL` and no specs on initial load
* chore: handle undefined or empty modelSpecs
* WIP: first pass, modelSpec schema for custom config
* refactor: move default filtered tools definition to ToolService
* feat: pass modelSpecs from backend via startupConfig
* refactor: modelSpecs config, return and define list
* fix: react error and include iconURL in responseMessage
* refactor: add iconURL to responseMessage only
* refactor: getIconEndpoint
* refactor: pass TSpecsConfig
* fix(assistants): differentiate compactAssistantSchema, correctly resets shared conversation state with other endpoints
* refactor: assistant id prefix localStorage key
* refactor: add more LocalStorageKeys and replace hardcoded values
* feat: prioritize spec on new chat behavior: last selected modelSpec behavior (localStorage)
* feat: first pass, interface config
* chore: WIP, todo: add warnings based on config.modelSpecs settings.
* feat: enforce modelSpecs if configured
* feat: show config file yaml errors
* chore: delete unused legacy Plugins component
* refactor: set tools to localStorage from recoil store
* chore: add stable recoil setter to useEffect deps
* refactor: save tools to conversation documents
* style(MultiSelectPop): dynamic height, remove unused import
* refactor(react-query): use localstorage keys and pass config to useAvailablePluginsQuery
* feat(utils): add mapPlugins
* refactor(Convo): use conversation.tools if defined, lastSelectedTools if not
* refactor: remove unused legacy code using `useSetOptions`, remove conditional flag `isMultiChat` for using legacy settings
* refactor(PluginStoreDialog): add exhaustive-deps which are stable react state setters
* fix(HeaderOptions): pass `popover` as true
* refactor(useSetStorage): use project enums
* refactor: use LocalStorageKeys enum
* fix: prevent setConversation from setting falsy values in lastSelectedTools
* refactor: use map for availableTools state and available Plugins query
* refactor(updateLastSelectedModel): organize logic better and add note on purpose
* fix(setAgentOption): prevent reseting last model to secondary model for gptPlugins
* refactor(buildDefaultConvo): use enum
* refactor: remove `useSetStorage` and consolidate areas where conversation state is saved to localStorage
* fix: conversations retain tools on refresh
* fix(gptPlugins): prevent nullish tools from being saved
* chore: delete useServerStream
* refactor: move initial plugins logic to useAppStartup
* refactor(MultiSelectDropDown): add more pass-in className props
* feat: use tools in presets
* chore: delete unused usePresetOptions
* refactor: new agentOptions default handling
* chore: note
* feat: add label and custom instructions to agents
* chore: remove 'disabled with tools' message
* style: move plugins to 2nd column in parameters
* fix: TPreset type for agentOptions
* fix: interface controls
* refactor: add interfaceConfig, use Separator within Switcher
* refactor: hide Assistants panel if interface.parameters are disabled
* fix(Header): only modelSpecs if list is greater than 0
* refactor: separate MessageIcon logic from useMessageHelpers for better react rule-following
* fix(AppService): don't use reserved keyword 'interface'
* feat: set existing Icon for custom endpoints through iconURL
* fix(ci): tests passing for App Service
* docs: refactor custom_config.md for readability and better organization, also include missing values
* docs: interface section and re-organize docs
* docs: update modelSpecs info
* chore: remove unused files
* chore: remove unused files
* chore: move useSetIndexOptions
* chore: remove unused file
* chore: move useConversation(s)
* chore: move useDefaultConvo
* chore: move useNavigateToConvo
* refactor: use plugin install hook so it can be used elsewhere
* chore: import order
* update docs
* refactor(OpenAI/Plugins): allow modelLabel as an initial value for chatGptLabel
* chore: remove unused EndpointOptionsPopover and hide 'Save as Preset' button if preset UI visibility disabled
* feat(loadDefaultInterface): issue warnings based on values
* feat: changelog for custom config file
* docs: add additional changelog note
* fix: prevent unavailable tool selection from preset and update availableTools on Plugin installations
* feat: add `filteredTools` option in custom config
* chore: changelog
* fix(MessageIcon): always overwrite conversation.iconURL in messageSettings
* fix(ModelSpecsMenu): icon edge cases
* fix(NewChat): dynamic icon
* fix(PluginsClient): always include endpoint in responseMessage
* fix: always include endpoint and iconURL in responseMessage across different response methods
* feat: interchangeable keys for modelSpec enforcing