autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
59 lines (58 loc) • 1.92 kB
TypeScript
/**
* 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 {};