import type { ToolDefinition, ToolExecutor, ToolContext, RegisteredTool, ToolCategory } from './types.js'; /** defineTool 简化参数(OpenAI Function Calling 格式) */ export interface DefineToolOptions { name: string; description: string; parameters: ToolDefinition['function']['parameters']; executor: ToolExecutor; category?: ToolCategory; concurrent?: boolean; metadata?: Record; /** 工具使用引导,注册时自动注入 system prompt(见 RegisteredTool.prompt) */ prompt?: string; } /** * defineFlatTool 简化参数(扁平格式,兼容 BI 项目风格) * * 扁平格式更直观:直接声明 id / name / description / parameters / execute, * 内部自动转换为 OpenAI Function Calling 格式。 * * @example * registry.defineFlatTool({ * id: 'web_search', * name: '网络搜索', * description: 'Search the web for information', * parameters: { * type: 'object', * properties: { query: { type: 'string', description: '...' } }, * required: ['query'], * }, * execute: async (input, ctx) => { ... }, * }); */ export interface FlatToolOptions { /** 工具唯一标识(将作为 OpenAI function name) */ id: string; /** 工具显示名(仅用于展示,不影响 LLM 调用) */ name?: string; /** 工具描述(给 LLM 理解用途) */ description: string; /** 参数 Schema(JSON Schema 子集) */ parameters: ToolDefinition['function']['parameters']; /** 执行函数 */ execute: ToolExecutor; /** 工具分类 */ category?: ToolCategory; /** 是否支持并行执行 */ concurrent?: boolean; /** 扩展元数据 */ metadata?: Record; /** 工具使用引导,注册时自动注入 system prompt(见 RegisteredTool.prompt) */ prompt?: string; } export declare class ToolRegistry { private tools; /** 注册工具 */ register(tool: RegisteredTool): void; /** * 简化注册(一行完成 name + description + parameters + executor) * * @example * registry.defineTool({ * name: 'execute_command', * description: 'Run a shell command', * parameters: { * type: 'object', * properties: { command: { type: 'string', description: '...' } }, * required: ['command'], * }, * executor: async (args, ctx) => { ... }, * }); */ defineTool(options: DefineToolOptions): void; /** * 扁平格式注册(兼容 BI 项目风格,内部自动转换为 OpenAI Function Calling 格式) * * @example * registry.defineFlatTool({ * id: 'search_data_sources', * description: '搜索候选数据源', * parameters: { type: 'object', properties: { query: { type: 'string', description: '...' } } }, * execute: async (args, ctx) => { ... }, * }); */ defineFlatTool(options: FlatToolOptions): void; /** 批量注册 */ registerAll(tools: RegisteredTool[]): void; /** 注销工具 */ unregister(name: string): void; /** 克隆当前注册表(浅拷贝工具定义与 executor 引用) */ clone(filter?: { category?: ToolCategory; names?: string[]; predicate?: (tool: RegisteredTool) => boolean; }): ToolRegistry; /** 按分类生成新注册表 */ filterByCategory(category: ToolCategory): ToolRegistry; /** 按 metadata 条件生成新注册表 */ filterByMetadata(predicate: (metadata: Record, tool: RegisteredTool) => boolean): ToolRegistry; /** 导出扁平工具定义(用于使用方适配旧 API 或 UI 展示) */ toFlatTools(): Array & { execute: ToolExecutor; }>; /** 转为 OpenAI function calling tools 格式 */ toOpenAITools(filter?: { category?: ToolCategory; names?: string[]; }): ToolDefinition[]; /** 生成工具摘要,适合注入 prompt 或 UI 列表 */ summary(options?: { maxDescriptionLength?: number; category?: ToolCategory; names?: string[]; }): string; /** 获取指定工具 */ get(name: string): RegisteredTool | undefined; /** 获取所有工具定义(传给 LLM) */ getDefinitions(filter?: { category?: ToolCategory; names?: string[]; }): ToolDefinition[]; /** 执行工具(内部调用,AgentEngine 使用) */ execute(name: string, args: Record, ctx: ToolContext): Promise; /** 列出所有已注册工具名称 */ listNames(): string[]; /** 检查工具是否存在 */ has(name: string): boolean; } //# sourceMappingURL=registry.d.ts.map