/** * Tool Section Builder -- 从 engine.ts 抽离的工具定义解析、摘要化、 * 动态工具区构建、占位符渲染等逻辑。 * * 设计说明:engine.ts 主类保留 `prepareRun` 等编排入口,将"工具段拼装" * 的细节委托给此模块的独立函数。函数签名以 `ToolSectionDeps` 接收依赖, * 避免运行时循环引用。 */ import type { ToolDefinition, ToolContext } from '../tool/types.js'; import type { RunOptions, AgentConfig } from './types.js'; /** 工具段构建器所需的 Engine 依赖 */ export interface ToolSectionDeps { config: AgentConfig; summarizedToolNames: Set; } /** 创建空壳 shell 执行器(当 options.context.custom.shell 未提供时使用) */ export declare function createNoopShell(): ToolContext['shell']; /** * 解析本次 run 的工具定义集合。 * * 1. 从 config.defaultTools + options.extraTools 获取初始列表 * 2. 按 deniedTools 过滤 * 3. 按 toolDiscovery 模式(summary / summary-all)对非核心工具做摘要化 */ export declare function resolveToolDefs(deps: ToolSectionDeps, options: RunOptions): ToolDefinition[]; /** * 将工具定义转为摘要形式(截断 description + 清空 parameters)。 * 实现抽离至 ./compaction.ts,保持单一来源。 */ export declare function summarizeToolDefImpl(deps: ToolSectionDeps, def: ToolDefinition, scope: 'mcp' | 'all' | null): ToolDefinition; /** 构建 ToolContext */ export declare function buildToolContext(deps: ToolSectionDeps, options: RunOptions, internalAbort: AbortController): ToolContext; /** 动态构建工具区 prompt(Available Tools + Tool Usage Guidelines)。 * 从 state.toolDefs 现场拼装,确保与可执行工具集一致,消除静态穿透。 */ export declare function buildDynamicToolSection(deps: ToolSectionDeps, toolDefs: ToolDefinition[]): string; /** * 渲染工具提示中对其它工具的引用,避免「提示穿透」: * 文案中使用 `{{TOOL:name}}` 包裹对其它工具的引用。 * - 若该工具在当前能力集(available)中,渲染为 `name`; * - 若该工具未注册(不在 available,也未出现在 relatedTools 声明中),则整段(含该占位符的整行/整句)被剔除, * 避免诱导 LLM 调用不存在的工具。 * * @param text 原始文案 * @param available 当前可用的工具名集合(用于判定 {{TOOL:name}} 是否可见) * @param relatedTools 声明式引用清单(可选)。留空的占位符若不在 available 中则被剔除; * 显式声明在 relatedTools 中的工具名也可被识别为「已知引用」参与裁剪。 */ export declare function renderToolRefs(text: string, available: Set, relatedTools?: string[]): string; /** 刷新 system prompt 中的工具区,确保与 state.toolDefs 一致 */ export declare function refreshToolSection(deps: ToolSectionDeps, state: { messages: any[]; stableSystemPrompt: string | null; toolDefs: ToolDefinition[]; }): void; //# sourceMappingURL=tool-section-builder.d.ts.map