/** * S-249(DT-13)—— per-tool **风险轴覆写**的值域词表与谓词,**两面共用一份**。 * * ## 病(修前) * `task-mcp.ts` 与 `task-a2a.ts` 各自在请求腿上逐键校验同一个三成员结构 * (`effect` / `egress` / `irreversibility`),而两个**闭集词表**是**手抄的字面串**:四份字面量 * (两文件 × 两个词轴),没有一份钉在 core 的型上。后果不是「今天判错了」,而是**判据比声明窄**这件事 * 没有任何门看得见 —— core 哪天给 `ToolEffect` 加一个词(或把 `irreversibility` 的两词改成三词,它在 * `AskOrigin` 那一面**已经**是 `never|maybe|always` 三词了),两条请求腿会把那个**合法**的新词 * **静默剔除**(MCP 腿)或**整条 server 判假**(A2A 腿),而 tsc 一声不吭。 * * ## 修法 * 词表留在本仓(运行期要它),但**两向钉死在 core 的型上**:core 加词 ⇒ 正向门红;本表留了一个 core * 已经没有的词 ⇒ 反向门红。两个面共用**同一只**谓词,于是「什么算一个合法的轴值」在本仓只有一个答案。 * * 🔴 **只管值域,不管处置**:两条腿对坏值的处置**刻意不同**(MCP = 丢这一键、留 server;A2A = 整条拒), * 判据与理由各写在各自的调用点。合并处置会抹掉那条真实的分歧(MCP 的 `toolAxes` 有 server-hint 腿可折, * A2A 收下的就是最终值),而分歧本身是裁定过的。 */ import type { McpServerSpec, ToolEffect } from "@sema-agent/core"; /** 一条 per-tool 轴覆写的形。取 MCP 那一面作代表 —— 下面的同型钉证明两面逐字同声明。 */ export type ToolAxisEntry = NonNullable[string]; /** 轴覆写上那个**两词**的不可逆档(⚠️ 与 `AskOrigin` 面的**三词** `never|maybe|always` 不是同一个词表: * 覆写面只收两极,`maybe` 是引擎按工具自己的声明定的,调用方说不出口)。 */ export type ToolAxisIrreversibility = NonNullable; /** 值是不是一个合法的 `effect` 词(两条请求腿共用)。 */ export declare function isToolEffect(v: unknown): v is ToolEffect; /** 值是不是一个合法的**覆写面** `irreversibility` 词(两条请求腿共用)。 */ export declare function isToolAxisIrreversibility(v: unknown): v is ToolAxisIrreversibility; //# sourceMappingURL=tool-axis-words.d.ts.map