/** * 工具桥接:运行时从灵枢拉取工具清单(tools/list),把 JSON Schema * 转换为 dsh-tools 的 ParameterSchemaSpec,经 defineTool 注册进 ctx.tools。 * * 动态拉取意味着灵枢库升级新增工具后,DSH 侧零改动即可获得新能力。 */ import type { Context } from '@deepseek-ai/cordis'; import type { ParameterSchemaSpec } from '@deepseek-ai/dsh-tools'; import type { LingshuBridge } from './bridge.ts'; /** 默认暴露的核心工具集合:**记忆面已基元化**,只注册 `cg` / `stg` 两个认知基元。 * * 三层拆分 S4 收敛后,插件工具面真源是 `md_cg.mcp_server`(不再是 pip aeis); * 旧的 aeis 工具名(remember/recall/think…)已不存在,写在这里只会被筛成空集 * ——「工具永久缺失」的根因,故一并移除。全部记忆/召回/时间线/落图能力由 * `cg(op=…)` / `stg(op=…)` 覆盖(见 src/lib/mdcg_client.ts 的显式映射)。 */ export declare const CORE_TOOLS: readonly ["cg", "stg"]; /** * 大脑模式工具集:`cg`/`stg` 基元 + md_cg 全部细粒度工具(`MDCG_MCP_SURFACE=full`)。 * * 即「完整认知面」。不再区分身体/视觉——那些工具随 aeis 剥离,主仓无对应物。 * 管理类(forget / restore / review_decide)按映射表裁定「收窄后不留」,不在此列 * (如需显式启用,用 `tools: ['mdcg_forget', …]` 显式数组——显式配置不受 RISK 限制)。 */ export declare const BRAIN_TOOLS: readonly ["cg", "stg", "mdcg_remember", "mdcg_recall", "mdcg_search", "mdcg_get", "mdcg_reflect", "mdcg_verify", "mdcg_flywheel", "mdcg_mine_fix_pairs", "mdcg_rejected", "mdcg_unresolved", "mdcg_propose", "mdcg_review_list", "mdcg_review_records", "mdcg_protect", "mdcg_forgetting_history", "mdcg_identity", "mdcg_consistency", "mdcg_metacognition", "mdcg_self_state", "mdcg_predict", "mdcg_causal", "mdcg_evolution", "mdcg_health", "mdcg_whoami", "mdcg_ingest", "mdcg_watermarks", "mdcg_whitebox", "mdcg_service_info"]; /** tools 配置:'core' | 'brain' | 'all' | 显式名称数组。 */ export type ToolSelection = 'core' | 'brain' | 'all' | string[]; /** 按工具名判定并发安全(只读查询 true;写操作 false) */ export declare function isToolConcurrencySafe(name: string): boolean; /** * P1 完善(GPT 审查·tools:all 自动扩权):即使 selection='all' 也排除的宿主级 * 风险工具——此前后端新增工具即自动暴露给 Agent(动态扩权无 denylist)。 * 排除原则:宿主命令执行/权限终裁/外部设备/自主生命周期控制/角色卡写入。 * 显式名称数组(显式配置)不受此名单限制(配置者已明确选择)。 */ export declare const RISK_TOOLS: Set; /** 按配置筛选工具名('all' 时排除 RISK_TOOLS 宿主级危险工具)。 */ export declare function selectTools(all: string[], selection: ToolSelection): string[]; /** 把 MCP JSON Schema 的属性表转换为 ParameterSchemaSpec。 */ export declare function schemaToParameters(inputSchema: Record | undefined): ParameterSchemaSpec; /** 从灵枢 content 数组中提取文本(MCP text block 拼接)。 */ /** 工具面返回文本的插件级兜底上限(issue #563②)。 * * 服务端 `cg(op=read)` 等已有 `offset`/`truncated` 分页(`_clip_text`),本上限**不**替代 * 它、也不重新定义预算:只兜「一次把整库搬进上下文」的极端形态。取 64KiB——远大于 * 单页预算(服务端 preview 200 字 / read 分页 KB 级),正常调用不会触发。 */ export declare const TOOL_RENDER_MAX_CHARS = 65536; export declare function extractText(content: Array<{ type: string; text?: string; [key: string]: unknown; }>): string; /** 注册灵枢工具到 ctx.tools;返回取消注册函数。 * * #222:`defineTool` 在**这里**惰性导入(而不是模块顶层静态导入)——本包对 * `@deepseek-ai/dsh-tools` 的声明是 optional peer,静态导入会让「干净安装后 * import 本包」在模块求值前就失败。惰性导入后:不在 DSH 宿主内时包仍可加载, * 只有真正注册工具才报错,且错误消息点名缺哪个包。 */ /** 工具对外名(issue #634):正式名 + 可选兼容别名。 * * 0.9.9 起去掉了 `${serverName}_` 前缀(lingshu_cg -> cg),升级瞬间 * 已存在会话里的旧名调用全部变成 unknown tool。这里给出「一个工具要注册哪些名字」的 * 纯函数,注册面与测试共用,避免两处各写一份判据。 */ export declare function toolPublicNames(toolName: string, prefix: string, legacyAliases?: boolean): string[]; export declare function registerLingshuTools(ctx: Context, bridge: LingshuBridge, opts: { selection: ToolSelection; toolPrefix: string; legacyAliases?: boolean; }): Promise<() => void>;