UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

59 lines (58 loc) 1.92 kB
/** * DynamicComposer — 运行时动态工具组合 * * 将已有的原子工具按 sequential / parallel / conditional 策略组合成复合工具。 * 组合结果注册为临时工具(通过 TemporaryToolRegistry)。 * * 与 PipelineStrategy 的区别: * - PipelineStrategy 是 Agent 执行策略(Agent 层) * - DynamicComposer 是工具组合(Tool 层),产出物是单个工具 */ interface ToolRegistryLike { has(name: string): boolean; execute(name: string, params: Record<string, unknown>, context?: Record<string, unknown>): Promise<unknown>; } export interface CompositionStep { /** 要调用的工具名 */ tool: string; /** 静态参数或从前一步结果构造参数的函数 */ args: Record<string, unknown> | ((prevResult: unknown) => Record<string, unknown>); /** 可选:提取该步结果中的特定字段传给下一步 */ extractKey?: string; } export interface CompositionSpec { /** 组合工具的名称 */ name: string; /** 描述 */ description: string; /** 执行步骤 */ steps: CompositionStep[]; /** 合并策略 */ mergeStrategy: 'sequential' | 'parallel'; /** JSON Schema 参数定义 */ parameters?: Record<string, unknown>; } export interface CompositionResult { /** 是否成功 */ success: boolean; /** 组合工具 handler */ handler?: (params: Record<string, unknown>, context: Record<string, unknown>) => Promise<unknown>; /** 失败原因 */ error?: string; } export declare class DynamicComposer { #private; constructor(registry: ToolRegistryLike); /** * 验证组合 spec 的可行性(所有工具是否存在) */ validate(spec: CompositionSpec): { valid: boolean; missingTools: string[]; }; /** * 构建组合工具 */ compose(spec: CompositionSpec): CompositionResult; } export {};