* fix: missing console color methods for admin scripts
* feat: Anthropic Claude 3.7 Sonnet Support
* feat: update eventsource to version 3.0.2 and upgrade @modelcontextprotocol/sdk to 1.4.1
* fix: update DynamicInput to handle number type and improve initial value logic
* feat: first pass Anthropic Reasoning (Claude 3.7)
* feat: implement streaming support in AnthropicClient with reasoning UI handling
* feat: add missing xAI (grok) models
* feat: Add 'Run Code' and 'Temporary Chat' permissions to role management
* feat: Add NextFunction typedef to api/typedefs.js
* feat: Add temporary chat and run code permissions to role schema
* refactor: Enhance access check middleware with logging for permission errors and better typing
* refactor: Set default value of USE permission to true in multiConvoPermissionsSchema
* refactor: Implement checkAccess function for separation of permission validation logic from middleware
* feat: Integrate permission checks for tool execution and enhance Markdown code block with execution capability
* fix: Convert REDIS_MAX_LISTENERS to a number, closes#5979
* 🔒 feat: add Two-Factor Authentication (2FA) with backup codes & QR support (#5684)
* working version for generating TOTP and authenticate.
* better looking UI
* refactored + better TOTP logic
* fixed issue with UI
* fixed issue: remove initial setup when closing window before completion.
* added: onKeyDown for verify and disable
* refactored some code and cleaned it up a bit.
* refactored some code and cleaned it up a bit.
* refactored some code and cleaned it up a bit.
* refactored some code and cleaned it up a bit.
* fixed issue after updating to new main branch
* updated example
* refactored controllers
* removed `passport-totp` not used.
* update the generateBackupCodes function to generate 10 codes by default:
* update the backup codes to an object.
* fixed issue with backup codes not working
* be able to disable 2FA with backup codes.
* removed new env. replaced with JWT_SECRET
* ✨ style: improved a11y and style for TwoFactorAuthentication
* 🔒 fix: small types checks
* ✨ feat: improve 2FA UI components
* fix: remove unnecessary console log
* add option to disable 2FA with backup codes
* - add option to refresh backup codes
- (optional) maybe show the user which backup codes have already been used?
* removed text to be able to merge the main.
* removed eng tx to be able to merge
* fix: migrated lang to new format.
* feat: rewrote whole 2FA UI + refactored 2FA backend
* chore: resolving conflicts
* chore: resolving conflicts
* fix: missing packages, because of resolving conflicts.
* fix: UI issue and improved a11y
* fix: 2FA backup code not working
* fix: update localization keys for UI consistency
* fix: update button label to use localized text
* fix: refactor backup codes regeneration and update localization keys
* fix: remove outdated translation for shared links management
* fix: remove outdated 2FA code prompts from translation.json
* fix: add cursor styles for backup codes item based on usage state
* fix: resolve conflict issue
* fix: resolve conflict issue
* fix: resolve conflict issue
* fix: missing packages in package-lock.json
* fix: add disabled opacity to the verify button in TwoFactorScreen
* ⚙ fix: update 2FA logic to rely on backup codes instead of TOTP status
* ⚙️ fix: Simplify user retrieval in 2FA logic by removing unnecessary TOTP secret query
* ⚙️ test: Add unit tests for TwoFactorAuthController and twoFactorControllers
* ⚙️ fix: Ensure backup codes are validated as an array before usage in 2FA components
* ⚙️ fix: Update module path mappings in tests to use relative paths
* ⚙️ fix: Update moduleNameMapper in jest.config.js to remove the caret from path mapping
* ⚙️ refactor: Simplify import paths in TwoFactorAuthController and twoFactorControllers test files
* ⚙️ test: Mock twoFactorService methods in twoFactorControllers tests
* ⚙️ refactor: Comment out unused imports and mock setups in test files for two-factor authentication
* ⚙️ refactor: removed files
* refactor: Exclude totpSecret from user data retrieval in AuthController, LoginController, and jwtStrategy
* refactor: Consolidate backup code verification to apply DRY and remove default array in user schema
* refactor: Enhance two-factor authentication ux/flow with improved error handling and loading state management, prevent redirect to /login
---------
Co-authored-by: Marco Beretta <81851188+berry-13@users.noreply.github.com>
Co-authored-by: Danny Avila <danny@librechat.ai>
* chore: bump https-proxy-agent and @librechat/agents
* refactor: Improve error logging in OllamaClient for API fetch failures
* feat: Add DeepSeek provider support and enhance provider name handling
* refactor: Use Providers.OLLAMA constant for model name check in fetchModels function
* feat: Enhance formatAgentMessages to handle reasoning content type
* feat: OpenRouter Agent Reasoning
* hard work and dedicationgit add .env.example :)
* fix: Handle Google social login with missing last name
Social login with Google was previously displaying 'undefined' when
a user's last name was empty or not provided.
Changes:
- Conditionally render last name only if it exists
- Prevent displaying 'undefined' when last name is missing
* fix: add missing file endings for developers yml,yaml and log
---------
Co-authored-by: Mohamed Al-Duraji <mbalduraji@college.harvard.edu>
Co-authored-by: Deepak Kendole <deepakdpk101@gmail.com>
Co-authored-by: Peter Rothlaender <peter.rothlaender@ginkgo.com>
* fix: Missing Translations in Prompt Filters in Prompt Library
* fix: fixed issue with `zh`
feat: added `Estonian` language option
* fix: test for `i18n.ts`
* refactor: `pt` --> `pt-BR` and `pt-PT`
* feat: request access to another language. default is only one language during invite.
* chore: enforcing language keys to adhere to the new standard.
* chore: enforcing i18n forbids to write plain text in JSX markup
* chore: enforcing i18n forbids to write plain text in JSX markup
* fix: ci with checkbox for unused keys :)
* refactor: removed all the unused `i18n` keys
* refactor: remove artifacts toggle
* refactor: allow hiding side panel while allowing artifacts view
* chore: rename SidePanelGroup to SidePanel for clarity
* Revert "refactor: remove artifacts toggle"
This reverts commit f884c2cfcd.
* feat: add artifacts capability to agent configuration
* refactor: conditionally set artifacts mode based on endpoint type
* feat: Artifacts Capability for Agents
* refactor: enhance getStreamText method to handle intermediate replies and add `stream_options` for openai/azure
* feat: localize progress text and improve UX in CodeAnalyze and ExecuteCode components for expanding analysis
* chore: started with updating packages to new version.
(a lot are outdated)
* fix: eslint to pass when no matching files changed.
* fix: eslint to pass when no matching files changed.
* fix: issue with strict in actions with the test
* chore: update more dependencies
* feat: scan for unused imported packages
* feat: scan for unused imported packages
* feat: scan for unused imported packages
* feat: scan for unused imported packages
* feat: scan for unused imported packages
* feat: scan for unused imported packages
* feat: scan for unused imported packages
* chore: removed Unused NPM Packages
* chore: removed Unused NPM Packages in `client/package.json`
* chore: removed Unused NPM Packages in `client/package.json`
* chore: Only comments when there are actual unused dependencies.
* chore: Only comments when there are actual unused dependencies.
* ci: test if it detects unused packages.
* ci: removed unused packages.
* ci: both static and dynamic i18n keys
* ci: revert back to no dynamic. use official nesting
* chore: remove override package: ajv
* feat: manage an 'x-strict': true attribute in openapi specs for assistants which generates function calls with stric attribute
* fix typo and lint errors
---------
Co-authored-by: Olivier Schiavo <olivier.schiavo@wengo.com>
* ✨feat: OAuth for Actions
* WIP: PoC flow state manager
* refactor: Add identifier field to token model from action schema
* chore: fix potential file type issues
* ci: fix type issue with action metadata auth
* fix: ensure FlowManagerOptions has a default ttl value
* WIP: OAUTH actions
* WIP: first pass OAuth Action
* fix: standardize identifier usage in OAuth flow handling
* fix: update token retrieval to include userId in query and use correct identifier
* refacotr: update token retrieval to use userId for OAuth token query
* feat: Tool Call Auth styling
* fix: streamline token creation and add type field to token schema
* refactor: cleanup OAuth flow by encrypting client credentials and ensuring oauth operations only run under condition
* refactor: use encrypted credentials in OAuth callback
* fix: update Token collection indexes to use expiresAt TTL index and not createdAt legacy index
* refactor: enhance Token index cleanup by improving logging and removing redundant index creation logic
* refactor: remove unused OAuth login route and related logic for improved clarity
* refactor: replace fetch with axios for OAuth token exchange and improve error handling
* refactor: better UX after authentication before oauth tool execution
* refactor: implement cleanup handlers for FlowStateManager intervals to enhance resource management
* refactor: encrypt OAuth tokens before storing and decrypt upon retrieval for enhanced security
* refactor: enhance authentication success page with improved styling and countdown feature
* refactor: add response_type parameter to OAuth redirect URI for improved compatibility
* chore: update translation.json new localizations
* chore: remove unused OGDialog import from OGDialogTemplate component
* refactor: Actions Auth using new Dialog styling, use same component with Agents/Assistants
* refactor: update removeNullishValues function to support removal of empty strings and adjust transform usage in schemas
* chore: bump version of librechat-data-provider to 0.7.6991
* refactor: integrate removeNullishValues function to clean metadata before encryption in agent and assistant routes
* refactor: update OAuth input fields to use 'password' type for better security
* refactor: update localization placeholders for sign-in message to use double curly braces
* refactor: add access_type parameter for offline access in createActionTool function
* refactor: implement handleOAuthToken function for token management and encryption
* feat: refresh token support
* refactor: add default expiration for access token and error handling for missing token
* feat: localizations for ActionAuth
* refactor: set refresh token expiration to null to not expire if expiry never given
* fix: prevent crash fromerror within async handleAbortError in AskController, EditController, and AgentController
* feat: Action Callback URL
* 🌍 i18n: Update translation.json with latest translations
* refactor: handle errors in flow state checking to prevent unhandled promise rejections
* fix: improve flow state concurrency to prevent multiple token creation calls
* refactor: RequestExecutor to use separate axios instance
* refactor: improve concurrency flows by keeping completed state until TTL expiry
* refactor: increase TTL for flow state management and adjust monitoring interval
* ci: mock axios instance creation in actions spec
* feat: add Babel and Jest configuration files; implement FlowStateManager tests with concurrency handling
* chore: add disableOAuth prop to ActionsAuth (not implemented for Assistants yet)
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* 🤖 refactor: streamline model selection logic for title model in GoogleClient
* refactor: add options for empty object schemas in convertJsonSchemaToZod
* refactor: add utility function to check for empty object schemas in convertJsonSchemaToZod
* fix: Google MCP Tool errors, and remove Object Unescaping as Google fixed this
* fix: google safetySettings
* feat: add safety settings exclusion via GOOGLE_EXCLUDE_SAFETY_SETTINGS environment variable
* fix: rename environment variable for console JSON string length
* fix: disable portal for dropdown in ExportModal component
* fix: screenshot functionality to use image placeholder for remote images
* feat: add visionMode property to BaseClient and initialize in GoogleClient to fix resendFiles issue
* fix: enhance formatMessages to include image URLs in message content for Vertex AI
* fix: safety settings for titleChatCompletion
* fix: remove deprecated model assignment in GoogleClient and streamline title model retrieval
* fix: remove unused image preloading logic in ScreenshotContext
* chore: update default google models to latest models shared by vertex ai and gen ai
* refactor: enhance Google error messaging
* fix: update token values and model limits for Gemini models
* ci: fix model matching
* chore: bump version of librechat-data-provider to 0.7.699
* feat: add expiredAt property to Conversation and Message models
Added `expiredAt` property to both Conversation and Message schemas.
Configured `expireAfterSeconds` index in MongoDB to automatically delete documents after a specified period.
* feat(data-provider): add isTemporary and expiredAt properties to support temporary chats
Added `isTemporary` property to TPayload and TSubmission for API calls for temporary chat.
Additionally, added `expiredAt` property to `tConversationSchema` to determine if a chat is temporary.
* feat: implement isTemporary state management
Add Recoil state for tracking temporary conversations, update event handlers to respect temporary chat status
* feat: add configuration to interfaceconfig to hide the temporary chat switch
* feat: add Temporary Chat UI with switch and modify related behaviors
- Added a Temporary Chat switch button at the end of dropdown lists in each model.
- Updated the form background color to black when Temporary Chat is enabled.
- Modified Navigation to exclude Temporary Chats from the chat list.
* fix: exclude Temporary Chats from search results
Updated the getConvosQueried query to ensure that Temporary Chats are not included in the search results.
* fix: hide bookmark button for Temporary Chats
Updated the UI to ensure that the bookmark button is not displayed when a chat is as Temporary Chat.
* chore: update isTemporary state management in ChatRoute
* chore: fix to pass the tests
* WIP: end session endpoint
* refactor: move useGetBannerQuery outside of package
* refactor: add queriesEnabled and move useGetEndpointsConfigQuery to data-provider (local)
* refactor: move useGetEndpointsQuery import to data-provider
* refactor: relocate useGetEndpointsQuery import to improve module organization
* refactor: move `useGetStartupConfig` from package to `~/data-provider`
* refactor: move useGetUserBalance to data-provider and update imports
* refactor: update query enabled conditions to include config check
* refactor: remove unused useConfigOverride import from useAppStartup
* refactor: integrate queriesEnabled state into file and search queries and move useGetSearchEnabledQuery to data-provider (local)
* refactor: move useGetUserQuery to data-provider and update imports
* refactor: enhance loginUser mutation with success and error handling as pass in options to hook
* refactor: update enabled condition in queries to handle undefined config
* refactor: enhance authentication mutations with queriesEnabled state management
* refactor: improve conditional rendering for error messages and feature flags in Login component
* refactor: remove unused queriesEnabled state from AuthContextProvider
* refactor: implement queriesEnabled state management in LoginLayout with timeout handling
* refactor: add conditional check for end session endpoint in OpenID strategy
* ci: fix tests after changes
* refactor: remove endSessionEndpoint from user schema and update logoutController to use OpenID issuer's end_session_endpoint
* refactor: update logoutController to use end_session_endpoint from issuer metadata
* adding youtube tool
* refactor: use short `url` param instead of `videoUrl`
* refactor: move API key retrieval to a separate credentials module
* refactor: remove unnecessary `isEdited` message property
* refactor: remove unnecessary `isEdited` message property pt. 2
* refactor: YouTube Tool with new `tool()` generator, handle tools already created by new `tool` generator
* fix: only reset request data for multi-convo messages
* refactor: enhance YouTube tool by adding transcript parsing and returning structured JSON responses
* refactor: update transcript parsing to handle raw response and clean up text output
* feat: support toolkits and refactor YouTube tool as a toolkit for better LLM usage
* refactor: remove unused OpenAPI specs and streamline tools transformation in loadAsyncEndpoints
* refactor: implement manifestToolMap for better tool management and streamline authentication handling
* feat: support toolkits for assistants
* refactor: rename loadedTools to toolDefinitions for clarity in PluginController and assistant controllers
* feat: complete support of toolkits for assistants
---------
Co-authored-by: Danilo Pejakovic <danilo.pejakovic@leoninestudios.com>
* implemented Apple Auth login.
Closes: #3438
TODO:
- write config Doc
* removed some comments
* removed comment
* Add unit tests for Apple login strategy
Introduce comprehensive tests for the Apple login strategy, covering new user creation, existing user updates, and error handling scenarios during the authentication flow. Mocks implemented for external dependencies to ensure isolated testing.
* Remove unnecessary blank line in socialLogins.js
* chore: remove all bing code
* chore: remove bing code and auto-focus effects
* chore: add back escapeRegExp helper function for regex special character handling
* chore: remove deprecated fields from settings and conversation schema
* fix: ensure default endpoint is set correctly in conversation setup
* feat: add disableFocus option to newConversation for improved search behavior
* ✨ feat: Implement Show Thinking feature; refactor: testing thinking render optimizations
* ✨ feat: Refactor Thinking component styles and enhance Markdown rendering
* chore: add back removed code, revert type changes
* chore: Add back resetCounter effect to Markdown component for improved code block indexing
* chore: bump @librechat/agents and google langchain packages
* WIP: reasoning type updates
* WIP: first pass, reasoning content blocks
* chore: revert code
* chore: bump @librechat/agents
* refactor: optimize reasoning tag handling
* style: ul indent padding
* feat: add Reasoning component to handle reasoning display
* feat: first pass, content reasoning part styling
* refactor: add content placeholder for endpoints using new stream handler
* refactor: only cache messages when requesting stream audio
* fix: circular dep.
* fix: add default param
* refactor: tts, only request after message stream, fix chrome autoplay
* style: update label for submitting state and add localization for 'Thinking...'
* fix: improve global audio pause logic and reset active run ID
* fix: handle artifact edge cases
* fix: remove unnecessary console log from artifact update test
* feat: add support for continued message handling with new streaming method
---------
Co-authored-by: Marco Beretta <81851188+berry-13@users.noreply.github.com>
* feat: Google Model Parameters
* fix: dynamic input number value, previously coerced by zod schema
* refactor: support openrouter reasoning tokens and XML for thinking directive to conform to ollama
* fix: virtualize combobox to prevent performance drop on re-renders of long model/agent/assistant lists
* refactor: simplify Fork component by removing unnecessary chat context index
* fix: prevent rendering of Thinking component when children are null
* refactor: update Markdown component to replace <think> tags and simplify remarkPlugins configuration
* refactor: reorder remarkPlugins to improve plugin configuration in Markdown component
* 🔄 refactor: frontend and backend share link logic; feat: qrcode for share link; feat: refresh link
* 🐛 fix: Conditionally render shared link and refactor share link creation logic
* 🐛 fix: Correct conditional check for shareId in ShareButton component
* 🔄 refactor: Update shared links API and data handling; improve query parameters and response structure
* 🔄 refactor: Update shared links pagination and response structure; replace pageNumber with cursor for improved data fetching
* 🔄 refactor: DataTable performance optimization
* fix: delete shared link cache update
* 🔄 refactor: Enhance shared links functionality; add conversationId to shared link model and update related components
* 🔄 refactor: Add delete functionality to SharedLinkButton; integrate delete mutation and confirmation dialog
* 🔄 feat: Add AnimatedSearchInput component with gradient animations and search functionality; update search handling in API and localization
* 🔄 refactor: Improve SharedLinks component; enhance delete functionality and loading states, optimize AnimatedSearchInput, and refine DataTable scrolling behavior
* fix: mutation type issues with deleted shared link mutation
* fix: MutationOptions types
* fix: Ensure only public shared links are retrieved in getSharedLink function
* fix: `qrcode.react` install location
* fix: ensure non-public shared links are not fetched when checking for existing shared links, and remove deprecated .exec() method for queries
* fix: types and import order
* refactor: cleanup share button UI logic, make more intuitive
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
* refactor: SearchBar and Nav components to streamline search functionality and improve state management
* refactor: remove refresh conversations
* chore: update useNewConvo calls to remove hardcoded default index
* refactor: null check for submission in useSSE hook
* refactor: remove useConversation hook and update useSearch to utilize useNewConvo
* refactor: remove conversation and banner store files; consolidate state management into misc; improve typing of families and add messagesSiblingIdxFamily
* refactor: more effectively clear all user/convo state without side effects on logout/delete user
* refactor: replace useParams with useLocation in SearchBar to correctly load conversation
* refactor: update SearchButtons to use button element and improve conversation ID handling
* refactor: use named function for `newConversation` for better call stack tracing
* refactor: enhance TermsAndConditionsModal to support array content and improve type definitions for terms of service
* refactor: add SetConvoProvider and message invalidation when navigating from search results to prevent initial route rendering edge cases
* refactor: rename getLocalStorageItems to localStorage and update imports for consistency
* refactor: move clearLocalStorage function to utils and simplify localStorage clearing logic
* refactor: migrate authentication mutations to a dedicated Auth data provider and update related tests
* 🐛 fix: default modelSpecs not being set
* feat: Add imageDetail parameter for OpenAI endpoints in tQueryParamsSchema
* feat: Implement processModelSpecs function to enhance model specs processing from configuration
* feat: Refactor configuration schemas and types for improved structure and clarity
* feat: Add append_current_datetime parameter to tQueryParamsSchema for enhanced endpoint functionality
* fix: Add endpointType to getSaveOptions and enhance endpoint handling in Settings component
* fix: Change endpointType to be nullable and optional in tConversationSchema for improved flexibility
* fix: allow save & submit for google endpoint
* fix: agent modelSpec iconURLs not being recorded
* fix: prioritize message properties over conversation defaults in icon data
* fix: determine endpoint type from endpointsConfig
* chore: type issue with setting.columnSpan
* chore: remove redundant key indexing for keySchema
* chore: bump version to 0.7.691 in package.json
* chore: add stricter remark-gfm and mdast-util-gfm resolutions/overrides
* chore: remove rollup override and bump vite-plugin-pwa
* chore: reinstall remark-gfm for correct module resolution
* chore: reinstall vite-plugun-pwa
* chore: bump @librechat/agents to v1.9.8 for rscript support
* chore: fix @langchain/google-genai dep., match agents
* chore: fix @langchain/google-vertexai to v0.1.5, match with agents
* chore: bump @librechat/agents to v1.9.9
* chore: update @librechat/agents to v1.9.91 and @langchain/google-vertexai to v0.1.6
* chore: increase MAX_FILE_SIZE to 150MB for file uploads
* chore: bump @librechat/agents to v1.9.92
* feat: support `recursionLimit` for agents
* chore: update configuration version to 1.2.1 in librechat.yaml and config.ts
* feat: add R language SVG icon to the assets and include it in ApiKeyDialog
* feat: add support for new vision model 'o1' and exclude 'o1-mini'
* 🎨 feat: improve file display and overflow handling in SidePanel components
* 🎨 feat: enhance bookmarks management UI and improve accessibility features
* 🎨 feat: enhance BookmarkTable and BookmarkTableRow components for improved layout and performance
* 🎨 feat: enhance file display and interaction in FilesView and ImagePreview components
* 🎨 feat: adjust minimum width for filename filter input in DataTable component
* 🎨 feat: enhance file upload UI with improved layout and styling adjustments
* 🎨 feat: add surface-hover-alt color and update FileContainer styling for improved UI
* 🎨 feat: update ImagePreview component styling for improved visual consistency
* 🎨 feat: add MaximizeChatSpace component and integrate chat space maximization feature
* 🎨 feat: enhance DataTable component with transition effects and update Checkbox styling for improved accessibility
* fix: enhance a11y for Bookmark buttons by adding space key support, ARIA labels, and correct html role for key presses
* fix: return focus back to trigger for BookmarkEditDialog (Edit and new bookmark buttons)
* refactor: ShareButton and ExportModal components children prop support; refactor DropdownPopup item handling
* refactor: enhance ExportAndShareMenu and ShareButton components with improved props handling and accessibility features
* refactor: add ref prop support to MenuItemProps and update ExportAndShareMenu and DropdownPopup components so focus correctly returns to menu item
* refactor: enhance ConvoOptions and DeleteButton components with improved props handling and accessibility features
* refactor: add triggerRef support to DeleteButton and update ConvoOptions for improved dialog handling
* refactor: accessible bookmarks menu
* refactor: improve styling and accessibility for bookmarks components
* refactor: add focusLoop support to DropdownPopup and update BookmarkMenu with Tooltip
* refactor: integrate TooltipAnchor into ExportAndShareMenu for enhanced accessibility
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
* docs: Update README to include Model Context Protocol support and enhance access descriptions
* fix: Update civic integrity threshold to use 'BLOCK_NONE' as default
* fix: Update GOOGLE_MODELS in .env.example and adjust civic integrity threshold for new model compatibility
* ✨ v0.7.6
* feat: Add 'gemini-2.0-flash-thinking-exp' model to googleModels context windows
* 📝 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
* Feature: Added ability to send current date and time to v1 and v2 assistants
* remove date_feature.patch
* fix: rename append_today_date to append_current_datetime
* feat: Refactor time handling in chatV1 and chatV2, add date and time utility functions
* fix: Add warning log and response for missing run values in abortRun middleware
---------
Co-authored-by: Max Sanna <max@maxsanna.com>
* fix: double decoding of URL params
* fix: prevent streaming options for O1 model (azure)
* fix: update @langchain/openai to version 0.3.14 in package-lock.json
* chore(AuthContext): typing
* chore(useTimeout): typing
* fix: shared link redirecting to login when code block includes "Run Code" button
* fix: typing
* 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
* fix: azure validation/extraction types
* fix: typing, add optional chaining for modelGroup and groupMap properties; expect azureOpenAIApiVersion in serverless tests
* fix: add support for azureOpenAIApiVersion and api-key in serverless mode across clients
* chore: update CONFIG_VERSION to 1.1.8, data-provider bump