import type { ToolContext, ToolInstance } from './tool'; import type { Tool, ToolMetadata } from '@agforge/core'; import type { ZodObject, infer as ZInfer } from 'zod'; /** * `extra` 中存放 `structResult` 的 key。 * * 应用层可通过 `chunk.extra?.[TOOL_STRUCT_RESULT_KEY]` 获取结构化数据。 */ export declare const TOOL_STRUCT_RESULT_KEY = "structResult"; /** * 工具工厂函数(柯里化)。 * * 封装 core 层的 `Tool` 类型转换,开发者只需面向 `{ llmMessage, structResult }` 编程。 * * - 自动将 `structResult` 映射到 core 层的 `extra[TOOL_STRUCT_RESULT_KEY]` * - 上下文由 `createBuiltinToolContextInterceptor` 注入,包含 `permissionManager` 和 `executionLocker` * * @example * ```typescript * const myTool = createTool({ * name: 'my_tool', * description: 'A tool', * parameters: z.object({ input: z.string() }), * })(() => ({ * execute: async function* (params, context) { * yield { * llmMessage: { type: 'text', text: 'result' }, * structResult: { data: 'for UI' }, * isCompleted: true, * }; * }, * stop: async () => {}, * })); * ``` * * @param metadata - 工具元信息(name、description、parameters) * @returns 接受工具实例工厂函数的函数,返回 core 层 `Tool` */ export declare const createTool: (metadata: ToolMetadata) => >(fn: () => ToolInstance, R>) => Tool;