mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-19 16:56:12 +01:00
⏲️ feat: Defer Loading MCP Tools (#11270)
* WIP: code ptc
* refactor: tool classification and calling logic
* 🔧 fix: Update @librechat/agents dependency to version 3.0.68
* chore: import order and correct renamed tool name for tool search
* refactor: streamline tool classification logic for local and programmatic tools
* feat: add per-tool configuration options for agents, including deferred loading and allowed callers
- Introduced `tool_options` in agent forms to manage tool behavior.
- Updated tool classification logic to prioritize agent-level configurations.
- Enhanced UI components to support tool deferral functionality.
- Added localization strings for new tool options and actions.
* feat: enhance agent schema with per-tool options for configuration
- Added `tool_options` schema to support per-tool configurations, including `defer_loading` and `allowed_callers`.
- Updated agent data model to incorporate new tool options, ensuring flexibility in tool behavior management.
- Modified type definitions to reflect the new `tool_options` structure for agents.
* feat: add tool_options parameter to loadTools and initializeAgent for enhanced agent configuration
* chore: update @librechat/agents dependency to version 3.0.71 and enhance agent tool loading logic
- Updated the @librechat/agents package to version 3.0.71 across multiple files.
- Added support for handling deferred loading of tools in agent initialization and execution processes.
- Improved the extraction of discovered tools from message history to optimize tool loading behavior.
* chore: update @librechat/agents dependency to version 3.0.72
* chore: update @librechat/agents dependency to version 3.0.75
* refactor: simplify tool defer loading logic in MCPTool component
- Removed local state management for deferred tools, relying on form state instead.
- Updated related functions to directly use form values for checking and toggling defer loading.
- Cleaned up code by eliminating unnecessary optimistic updates and local state dependencies.
* chore: remove deprecated localization strings for tool deferral in translation.json
- Eliminated unused strings related to deferred loading descriptions in the English translation file.
- Streamlined localization to reflect recent changes in tool loading logic.
* refactor: improve tool defer loading handling in MCPTool component
- Enhanced the logic for managing deferred loading of tools by simplifying the update process for tool options.
- Ensured that the state reflects the correct loading behavior based on the new deferred loading conditions.
- Cleaned up the code to remove unnecessary complexity in handling tool options.
* refactor: update agent mocks in callbacks test to use actual implementations
- Modified the agent mocks in the callbacks test to include actual implementations from the @librechat/agents module.
- This change enhances the accuracy of the tests by ensuring they reflect the real behavior of the agent functions.
This commit is contained in:
parent
f7893d9507
commit
5aaf87a73c
24 changed files with 1002 additions and 75 deletions
|
|
@ -1750,6 +1750,8 @@ export enum Constants {
|
|||
LC_TRANSFER_TO_ = 'lc_transfer_to_',
|
||||
/** Placeholder Agent ID for Ephemeral Agents */
|
||||
EPHEMERAL_AGENT_ID = 'ephemeral',
|
||||
/** Programmatic Tool Calling tool name */
|
||||
PROGRAMMATIC_TOOL_CALLING = 'run_tools_with_code',
|
||||
}
|
||||
|
||||
export enum LocalStorageKeys {
|
||||
|
|
|
|||
|
|
@ -225,6 +225,7 @@ export const defaultAgentFormValues = {
|
|||
model: '',
|
||||
model_parameters: {},
|
||||
tools: [],
|
||||
tool_options: {},
|
||||
provider: {},
|
||||
projectIds: [],
|
||||
edges: [],
|
||||
|
|
|
|||
|
|
@ -206,6 +206,38 @@ export type SupportContact = {
|
|||
email?: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Specifies who can invoke a tool.
|
||||
* - 'direct': LLM can call directly
|
||||
* - 'code_execution': Only callable via programmatic tool calling (PTC)
|
||||
*/
|
||||
export type AllowedCaller = 'direct' | 'code_execution';
|
||||
|
||||
/**
|
||||
* Per-tool configuration options stored at the agent level.
|
||||
* Keyed by tool_id (e.g., "search_mcp_github").
|
||||
*/
|
||||
export type ToolOptions = {
|
||||
/**
|
||||
* If true, the tool uses deferred loading (discoverable via tool search).
|
||||
* @default false
|
||||
*/
|
||||
defer_loading?: boolean;
|
||||
/**
|
||||
* Specifies who can invoke this tool.
|
||||
* - 'direct': LLM can call directly (default behavior)
|
||||
* - 'code_execution': Only callable via PTC sandbox
|
||||
* @default ['direct']
|
||||
*/
|
||||
allowed_callers?: AllowedCaller[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Map of tool_id to its configuration options.
|
||||
* Used to customize tool behavior per agent.
|
||||
*/
|
||||
export type AgentToolOptions = Record<string, ToolOptions>;
|
||||
|
||||
export type Agent = {
|
||||
_id?: string;
|
||||
id: string;
|
||||
|
|
@ -241,6 +273,8 @@ export type Agent = {
|
|||
version?: number;
|
||||
category?: string;
|
||||
support_contact?: SupportContact;
|
||||
/** Per-tool configuration options (deferred loading, allowed callers, etc.) */
|
||||
tool_options?: AgentToolOptions;
|
||||
};
|
||||
|
||||
export type TAgentsMap = Record<string, Agent | undefined>;
|
||||
|
|
@ -265,6 +299,7 @@ export type AgentCreateParams = {
|
|||
| 'recursion_limit'
|
||||
| 'category'
|
||||
| 'support_contact'
|
||||
| 'tool_options'
|
||||
>;
|
||||
|
||||
export type AgentUpdateParams = {
|
||||
|
|
@ -291,6 +326,7 @@ export type AgentUpdateParams = {
|
|||
| 'recursion_limit'
|
||||
| 'category'
|
||||
| 'support_contact'
|
||||
| 'tool_options'
|
||||
>;
|
||||
|
||||
export type AgentListParams = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue