@sema-agent/sdk 8.0.0 → 8.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -70,7 +70,7 @@ export type ToolApprovalDecision = "allow" | "allow_session" | "deny";
70
70
  * (client-core 自持同名闭集 copy)做机器对账用——照 registry-core 值拷贝+同源锚先例。下游测试断言
71
71
  * 自己的 copy 键集 ⊇/== 本清单,SDK 每次 additive 增键(如 1.307 的 `toolCallId`)对方当天红,
72
72
  * 不再靠人肉追平。**新增帧字段必须同步进本清单**(有测试钉)。 */
73
- export declare const TOOL_APPROVAL_FRAME_KEYS: readonly ["type", "approvalId", "toolCallId", "toolName", "sourceTaskId", "fromSubagent", "sourceAgentName", "message", "args", "argsOmitted", "governanceForced", "ruleSuggestions", "persistedRuleShadowed", "probeCause", "ruleEvidence", "delegation", "outcome"];
73
+ export declare const TOOL_APPROVAL_FRAME_KEYS: readonly ["type", "approvalId", "toolCallId", "toolName", "sourceTaskId", "fromSubagent", "sourceAgentName", "message", "args", "argsOmitted", "governanceForced", "ruleSuggestions", "ruleOffers", "persistedRuleShadowed", "probeCause", "ruleEvidence", "delegation", "outcome"];
74
74
  /** #154 车二(core 5.18.0 design/179):**引擎铸的**一条规则候选 —— 一格「不再询问」按下去会持久化的东西。
75
75
  *
76
76
  * 🔴 文本由 ENGINE 铸,不由壳拼:`rule` 是 server 从被裁决命令的原字节交给引擎算出来的规范文本,回决时
@@ -88,6 +88,197 @@ export interface RuleSuggestion {
88
88
  /** 规则里的命令模式(渲染用;不必再解析 `rule`)。 */
89
89
  command: string;
90
90
  }
91
+ /**
92
+ * 一条规则的**匹配形**闭词表 —— server `PERSISTED_RULE_MATCHES` 逐字四员(词表属主是 core 的
93
+ * `PersistedRuleMatch`,server 只转录并钉全等)。
94
+ *
95
+ * · `exact` —— 只放行这一条命令(`Bash(git status)`);
96
+ * · `prefix` —— 历史 colon-star 词界前缀(`Bash(git status:*)`),**复合前缀形的唯一拼写**,永久兼容读;
97
+ * · `wildcard` —— 尾 space-star(`Bash(npm run *)`);在**单命令体**上与 `prefix` 是同一个谓词,
98
+ * core 自 design/382 / #510 起建议面铸它。⚠️ 这是 sdk 8.1.0 的 `RuleSuggestion.match`(两员)与本形的
99
+ * 实质差别:老两员形会把一条合法的 `wildcard` 候选判成坏形丢掉(整格「不再询问」消失);
100
+ * · `subpath` —— `Read(//abs-dir/**)` 的目录只读形,**永不容纳任何命令**。
101
+ *
102
+ * 🔴 **为什么四员而不是照抄「今天的 miner 只铸三员」**:类型描述的是**消费端可能收到**的值域,而 server
103
+ * 的 wire 校验器(`RuleMatchSchema = z.enum(PERSISTED_RULE_MATCHES)`)对这四个词一律放行。比铸点更窄的
104
+ * 消费型面就是一句谎——它让 `switch` 在编译期自称穷尽,而运行期真会来第四个词。
105
+ */
106
+ export declare const RULE_OFFER_MATCHES: readonly ["exact", "prefix", "wildcard", "subpath"];
107
+ export type RuleOfferMatch = (typeof RULE_OFFER_MATCHES)[number];
108
+ /**
109
+ * `batch` 臂的**一个成员** —— 复合命令某一段折出来的规则。判别位 `kind`(server
110
+ * `RULE_OFFER_BATCH_MEMBER_KINDS` 两员,core `RuleOfferBatchMember["kind"]` 全等钉)。
111
+ *
112
+ * `segment` = 这条成员是从**哪一段**折叠后的命令原字节铸出来的:core 明写它是**渲染座、永不参与裁决**,
113
+ * 与 `rule`/`command`/`directory` 同属 UNTRUSTED-for-display。⚠️ 只有 `segment` 会被 server 截长
114
+ * (诚实省略);`rule`/`command`/`directory` 是兑付等式的左边,**永不截**。
115
+ *
116
+ * 🔴 **成员 `kind` 不识 ⇒ 丢整只 batch,绝不丢单个成员**(core 规范性降级臂):少一个成员的合取批把
117
+ * 「对 N 条说 yes」渲成「对 N−1 条说 yes」,比不渲更坏;旁边的 `single` 是完整诚实的,照留。
118
+ */
119
+ export declare const RULE_OFFER_BATCH_MEMBER_KINDS: readonly ["command", "directoryRead"];
120
+ export type RuleOfferBatchMember =
121
+ /** 历史形 + 判别位:一段 Bash 命令的规则。 */
122
+ {
123
+ kind: "command";
124
+ rule: string;
125
+ match: RuleOfferMatch;
126
+ command: string;
127
+ segment: string;
128
+ }
129
+ /** `cd <dir>` 段铸的**目录只读**授权。`directory` = 词法规范形绝对目录(渲染座,免二次解析);
130
+ * 本臂**没有** `match`/`command` 两座 —— 拿 `RuleSuggestion` 那种「三元组」窄读器读它会整只判假。 */
131
+ | {
132
+ kind: "directoryRead";
133
+ rule: string;
134
+ directory: string;
135
+ segment: string;
136
+ };
137
+ /** 一段「为什么仍未被覆盖」的闭三词集(server `UNCOVERED_SEGMENT_REASONS`,core 属主):
138
+ * `redirection` 永久逐次问 / `no_rule_form` 无可覆盖形 / `cap_overflow` 去重+帽挤出。 */
139
+ export declare const RULE_OFFER_UNCOVERED_REASONS: readonly ["redirection", "no_rule_form", "cap_overflow"];
140
+ export type RuleOfferUncoveredReason = (typeof RULE_OFFER_UNCOVERED_REASONS)[number];
141
+ /** design/382 §3.5 additive 明细座:`segment` 是折叠后的段原字节(与成员 `segment` 同一条脱敏/截长纪律,
142
+ * UNTRUSTED-for-display),`reason` 是上面那张闭三词集。 */
143
+ export interface RuleOfferUncoveredDetail {
144
+ segment: string;
145
+ reason: RuleOfferUncoveredReason;
146
+ }
147
+ /**
148
+ * 一张审批卡上的**一个**「不再询问」选项(core design/375 §3.1 的判别联合;server ≥7.46.0 在
149
+ * `tool_approval` 帧 / `card_json` / durable park 行**三腿同形**发出,**BREAKING 换键**,前名
150
+ * `ruleSuggestions`、旧键同批退役无 alias)。
151
+ *
152
+ * 🔴 **判形读 `kind`,不许按下标假设形**。**序即契约**:whole-string exact 的 `single` 在场时恒 index 0、
153
+ * `batch` 至多一条且恒末位;core 契约基数 ≤2,server 执法帽 4(容忍余量,消费端按 ≤4 布局)。
154
+ *
155
+ * 🔴 **在场性即承诺**:本键只在**规则店真装配**时在场(与引擎 `permissionRules.storeWired` 同一个对象)。
156
+ * 反向**不成立**:缺席只读作「**本卡**无此选项」—— 店在场也可能没有这一格(mandated / `requiresRealApproval` /
157
+ * shadowed / hook 产 / inherited-unresolved / ancestor-resolved / anonymous 七族一律不带)。既不能读成
158
+ * 「本部署没有规则车道」(那句话看 `capabilities.permissionRules`),也不能读成「你的规则坏了」(那句话看
159
+ * {@link ToolApprovalFrame.persistedRuleShadowed})。
160
+ *
161
+ * 🔴 **兑付两臂,选择键不同**(见 {@link PersistRuleSelection}):`single` 臂把 `rule` 文本**原样**抄回
162
+ * (server 按**文本**定位,抄错 = `rule_not_offered`);`batch` 臂没有单条文本可抄(它是对全体成员的**一个**
163
+ * 「是」,无逐成员勾选),选择键 = 这条 offer 在数组里的**下标**。
164
+ *
165
+ * 🔴 **下标语义随腿不同**(server 两条腿的顶注逐字,消费端必读):活卡帧腿 / `card_json` / 重放帧上
166
+ * server 是**纯前缀截、零逐条丢弃** ⇒ 下标恒等于 core 的 offer index,**是**合法选择键;而耐久队列行腿
167
+ * ({@link import("../types.js").PendingCheckpoint.ruleOffers})server 对形不合的 offer 是**逐条丢弃并压紧**的
168
+ * ⇒ 下标会前移,且那条腿**没有兑付口** ⇒ 只能当展示/分诊座,**禁**当 `batchOfferIndex` 回兑。
169
+ * 消费端自己再丢坏形时同理:core 的规范性条款是「保住每个留下来成员的**原始 wire 下标**,做不到就
170
+ * must suppress its persistence actions entirely(fail toward asking)」。
171
+ */
172
+ export type RuleOffer =
173
+ /** 一条覆盖整命令的规则。 */
174
+ {
175
+ kind: "single";
176
+ rule: string;
177
+ match: RuleOfferMatch;
178
+ command: string;
179
+ }
180
+ /** 复合命令的**合取批**:勾这一项 = 对 `rules[]` 全体成员一次性说是。 */
181
+ | {
182
+ kind: "batch";
183
+ /** 1..N 条逐段成员(段序,按规则文本去重)。core 契约 1..5,server 容忍帽 8。 */
184
+ rules: RuleOfferBatchMember[];
185
+ /** 铸卡那一刻的**诚实盈余**:这批兑完之后,按当时的覆盖快照仍未被任何规则放行的段数。
186
+ * `0` = 「兑完这批,这条复合命令在那份快照的口径下就全覆盖了」。它是**对铸卡快照的陈述**,
187
+ * 不是长期保证(并发删规则会让它过时)。 */
188
+ uncoveredSegments: number;
189
+ /** design/382 §3.5 **additive** 明细座:逐段给闭三词集的因由。在场时行数恒 = `uncoveredSegments`
190
+ * —— 但 **count 才是真源**:server 对坏形的座只丢座不丢批,所以本键缺席**不是**「没有未覆盖段」。 */
191
+ uncoveredDetail?: RuleOfferUncoveredDetail[];
192
+ };
193
+ /**
194
+ * P-39(server ≥7.48.0,**additive、零能力位**;cli [5254] 请托 / [5263] 定形 = offer 空间)——
195
+ * batch 臂成功回执上一条规则的**逐条自描述归属锚**。
196
+ *
197
+ * 病:{@link ToolApprovalRespondAck.persistedRules} 的逐条归属此前**只能靠位置**推,而位置在 wire 上
198
+ * 证不出来(回执序取自服务端**重铸批**的成员走序,与文档承诺的展示序只是碰巧一致——防漂等式是**集合**
199
+ * 等式,序不在里面)。
200
+ *
201
+ * 🔴 **两级下标同在 offer 空间 ⇒ 消费端零映射**:`offerIndex` **逐字回显**请求体的
202
+ * `persistRule.batchOfferIndex`(相关性确认 = 「这份回执确属我发出的那次兑付」);`memberIndex` = 帧上
203
+ * 那只批 `rules[]` 里的位置(逐条归属)。core 的 candidate 空间**刻意不上 wire**。
204
+ */
205
+ export interface PersistedRuleAnchor {
206
+ /** 逐字回显请求体的 `persistRule.batchOfferIndex`。 */
207
+ offerIndex: number;
208
+ /** 帧上 `ruleOffers[offerIndex].rules[]` 里的位置。 */
209
+ memberIndex: number;
210
+ /** 这条成员**真正落盘**的规范文本(与 `persistedRules` 同 index 的那一条相等)。 */
211
+ rule: string;
212
+ }
213
+ /**
214
+ * S-134 锚①(server ≥7.46.0)—— 回决体 `persistRule` 的**两臂互斥**形,与 server
215
+ * `ParsedPersistRule` 逐字对位(`{kind:"text", rule, edited}` | `{kind:"batch", batchOfferIndex}`)。
216
+ *
217
+ * 🔴 **wire 上没有 `kind`**:那是 server 解析后自铸的内部判别位。sdk **不铸 server 不收的键** ——
218
+ * 两臂靠「哪个字段在场」区分,与 server 的手写 parser 逐字同判。
219
+ *
220
+ * 🔴 **互斥是 400,不是「同场取一」**(server 常量 `PERSIST_RULE_BATCH_EXCLUSIVE_ERROR`,文案逐字):
221
+ * `"persistRule.batchOfferIndex is mutually exclusive with persistRule.rule / persistRule.edited — send
222
+ * exactly one arm"`。两臂说的是**两次不同的授权**,猜哪个都等于替人改主意 ⇒ 类型层用 `?: never` 把它
223
+ * 挡在编译期,那句 400 因此永远打不到线上。
224
+ *
225
+ * 🔴 **坏形也是 400,不折不猜**(`PERSIST_RULE_BATCH_INDEX_ERROR`,文案逐字):
226
+ * `"persistRule.batchOfferIndex must be a non-negative integer when present"` —— 负数 / 非整数 / 非数
227
+ * 一律响亮拒(一个被 `|0` 折过的下标指向的是**另一条 offer**)。同族还有
228
+ * `PERSIST_RULE_TEXT_ERROR`(`rule` 非空且 ≤512 字符)与 `PERSIST_RULE_EDITED_FLAG_ERROR`
229
+ * (`"persistRule.edited must be a boolean when present"` —— 非 boolean **绝不静默当 false**,那会把一次
230
+ * 「我要落自由文本」悄悄折回候选臂,回来一句 `rule_not_offered`,而人以为自己写的规则被拒了)。
231
+ *
232
+ * 🔴 **体不收 scope**:顶层 `scope` 与 `persistRule.scope` 都是响亮 400
233
+ * (`"this endpoint does not accept a rule scope — the server mints it from where the approval happened
234
+ * (send neither `scope` nor `persistRule.scope`)"`)。落盘作用域由 server 从**授权发生地**自铸 ——
235
+ * 让携带方指定 scope = 让一次「在项目 A 里点的同意」写成覆盖项目 B(或全局)的常驻放行。
236
+ *
237
+ * ⚠️ **`decision:"deny"` 下整个 `persistRule` 根本不解析**(宽收、忽略、不 400,与 `updatedInput` 同姿势)
238
+ * —— 人拒了这次操作,谈持久化同意没有意义。所以上面几条 400 只在 allow 族生效(顶层 `scope` 的 400 不分
239
+ * decision)。
240
+ */
241
+ export type PersistRuleSelection =
242
+ /**
243
+ * **候选臂 / 编辑臂**(同一个字段两种含义,判别位是 `edited`)。
244
+ *
245
+ * · `edited` 缺席或 `false` = **候选臂**:`rule` 必须是 {@link ToolApprovalFrame.ruleOffers} 里某条
246
+ * `kind:"single"` 的 `rule` **原样文本**。别拼、别改大小写、别自己加 `:*` —— server 按文本定位,
247
+ * 对不上就拒(`ruleRefusal: "rule_not_offered"`),不猜。
248
+ * · `edited: true` = **自由文本臂**(server ≥7.44.0 / #340;**先探能力位**
249
+ * {@link import("../types.js").Capabilities.respondFreeFormRules}):
250
+ * `rule` 是人在卡上手改的文本。老 worker 不认识 `edited`(未知键静默丢)会把它当候选判 ⇒ 回一句
251
+ * `rule_not_offered`(诚实但会被误读成「我写错了」)。落盘走引擎三道门(共享校验器 / 覆盖门:
252
+ * 编辑后的规则必须仍**容纳本次被裁决的命令** / scope 继承这张卡自己的),成功回执带
253
+ * {@link ToolApprovalRespondAck.persistedRule} = **真正落盘的规范拼写**(`Bash(adb *)` ⇒ `Bash(adb:*)`),
254
+ * 壳应回显它而不是输入框里的原字节。
255
+ *
256
+ * ⚠️ 与 `updatedInput`(ctrl+g 编辑放行)**同时在场 ⇒ server 拒绝这次持久化**
257
+ * (`rule_input_edited`):生效的调用是编辑后那份,而候选是引擎从**原始**命令铸的,给原始那条装规则
258
+ * 是真扩权。裁决本身照常生效。
259
+ */
260
+ {
261
+ rule: string;
262
+ edited?: boolean;
263
+ batchOfferIndex?: never;
264
+ }
265
+ /**
266
+ * **批臂**(server ≥7.46.0 / design/377;能力位
267
+ * {@link import("../types.js").Capabilities.respondBatchRuleOffers})—— 人勾的是一条
268
+ * `kind:"batch"` 的合取批。值 = 那条 offer 在**帧上 `ruleOffers` 里的下标**。
269
+ *
270
+ * 🔴 **窄开只指 batch**:下标指不到 offer、或指到 `single` ⇒ `rulePersisted:false + rule_not_offered`
271
+ * (没渲出来的恒兑不动;`single` 臂的防伪锚是**文本等式**,index 不许旁路它)。
272
+ * 🔴 server 兑付前另过**防漂等式**:从被裁决命令重铸的批与人看到的批**成员文本集合逐字相等**才 confirm
273
+ * (coverage 漂移 ⇒ 拒,出路 = 重触发命令取新卡)。
274
+ * 🔴 **先探能力位**:老 worker 把本键当未知键丢掉 ⇒ 按「缺 `rule`」判 400 文本形拒(诚实,但读不出
275
+ * 「人勾了批」)。位缺席就别渲 batch 兑付格。
276
+ */
277
+ | {
278
+ batchOfferIndex: number;
279
+ rule?: never;
280
+ edited?: never;
281
+ };
91
282
  /**
92
283
  * #154 车二:回决回执上 `ruleRefusal` 的**闭词表**——「不再询问」这次为什么没存上
93
284
  * (server `src/tool-approval.ts` 的 `RuleRefusalReason` 逐字)。
@@ -120,7 +311,32 @@ export interface RuleSuggestion {
120
311
  * `rule_lane_unavailable` 禁据以判部署,这一格同理。要判「这台部署供不供规则」只有一个正确来源:
121
312
  * `capabilities.permissionRules`。处置 = 这一只不渲「不再询问」,**下一只照常渲**。
122
313
  */
123
- export type RuleRefusalReason = "no-candidates" | "unknown-candidate" | "confirm-refused" | "redeem-refused" | "rule_lane_unavailable" | "rule_input_edited" | "rule_not_offered" | "rule_store_error" | "rule_governance_forced";
314
+ export type RuleRefusalReason = "no-candidates" | "unknown-candidate" | "confirm-refused" | "redeem-refused"
315
+ /** #340(server ≥7.44.0)—— **编辑面在这只卡上用不了**:卡没有绑定锚(`boundInputHash` 缺席 ⇒ 无从证明
316
+ * 「我编辑的是显示了这条命令的那张卡」),或这台部署没打开编辑面。
317
+ * 🔴 **与下面的 `edit-rejected` 刻意分家,壳要做的事完全相反**:这个说「**别再渲那个输入框**」,
318
+ * 那个说「你写的这条不行,**改一下再来**」。 */
319
+ | "edit-unsupported"
320
+ /** #340(server ≥7.44.0)—— 人写的文本**被引擎的门拒了**:共享校验器不认这个拼写,或它不覆盖本次被裁决
321
+ * 的命令(「编辑可以更宽,不许换成另一条授权」)。
322
+ * ⚠️ **射程自 #345(server ≥7.51.0 / core 5.57.0)起收窄**:文本能独立判定的那一半(语法门 + 覆盖门)
323
+ * 搬到了**裁决之前** —— 那条路上 respond 在结算前就 400、**卡还在**,所以「改一下再来」今天真能来。
324
+ * 剩到这个词的是纵深残余(预检被跳过的路径 / 预检过了但记录级仍拒),此时卡已消费,同一把
325
+ * `approvalId` 再回决是 404。 */
326
+ | "edit-rejected"
327
+ /** core 7.0.0 #490②(design/382 §4.4,server ≥7.2.x 提货)—— **silent-global 死**:既无显式 scope 又无
328
+ * cwd 时车道**响亮拒**,不再默落 global。在没接 `ruleScopeRootFor`(host lane 未注册 launch dir)的部署上
329
+ * 这是**常规答复**,不是异常。出路 = 部署接上那只 resolver;server **刻意不在兑付时刻补一个
330
+ * `process.cwd()`**(core 契约明写 cwd = 被裁决调用的工作目录,never inferred from the process ——
331
+ * 编一个等于把规则锚到错误的射程上,比默落 global 更糟)。裁决照常生效。 */
332
+ | "scope-unresolved" | "rule_lane_unavailable" | "rule_input_edited" | "rule_not_offered" | "rule_store_error" | "rule_governance_forced"
333
+ /** server ≥7.48.0(#363)—— **这一行**没有可铸规则的素材:**durable(PARKED)迟到决议腿专属**。
334
+ * 成因闭集三条(处置相同):①这只 ask 从没进过规则车道(治理档 / 无属主 / 引擎没铸候选 / args 里读不出
335
+ * 命令原字节);②行由加这两列**之前**的构建落下;③行上的卡读不回来(信封 schema 判假)。
336
+ * 🔴 **与 `rule_lane_unavailable` 刻意分词**(与 `rule_governance_forced` 同源理由):那个词意为
337
+ * 「这台部署压根不供规则」,壳据它可以从此不渲这一格;而这里的真相是「车道好好的,只是**这一行**上
338
+ * 没有素材」—— 折成同一个词,一次 park 迟到答就能让壳把一台正常部署的整条车道判死。 */
339
+ | "rule_material_absent";
124
340
  export interface ToolApprovalFrame {
125
341
  type: "tool_approval" | "tool_approval_complete";
126
342
  /** The id to echo back to {@link ToolApprovalsResource.respond}. */
@@ -204,6 +420,23 @@ export interface ToolApprovalFrame {
204
420
  * has; do not read a replayed suggestion as a promise that it is still redeemable.
205
421
  */
206
422
  ruleSuggestions?: RuleSuggestion[];
423
+ /**
424
+ * "tool_approval" only(server ≥7.46.0;core 5.58.0 design/375。**BREAKING 换键** —— 它整体取代上面那条
425
+ * 退役键 {@link ruleSuggestions},server ≥7.46.0 的三腿上旧键**一个字都不铸**,无 alias)——
426
+ * 引擎为这次 ask 铸的「不再询问」选项,**判别联合** `single | batch`。
427
+ *
428
+ * 形、序、在场性契约、两臂兑付法与**下标语义随腿不同**的硬条款,逐字见 {@link RuleOffer} 顶注。
429
+ *
430
+ * 🔴 **两代键并列声明,取舍序归消费端**:一台 ≥7.46.0 的引擎不会同时按两代形铸候选,所以正确的读法是
431
+ * 「新键**有载体**即定局(读出空也不回落),整只缺席才看旧键」—— 拿旧键顶上去等于把一份异源素材冒充成
432
+ * 这次 ask 的候选。现成的单点窄读器 = `@sema-agent/client-core` 的 `readRuleOfferSupply(offers, legacy)`
433
+ * (0.57.0 起是公面),自己再写一遍就是多一份会漂的判官。
434
+ *
435
+ * ⚠️ **兑付射程**同 {@link ruleSuggestions}:唯一兑付通道是按本帧 `approvalId` 的 **live respond 腿**
436
+ * (单副本进程内映射)。重放到另一副本 / 重启后那把 `approvalId` 是 404,人只能走 durable decide 腿,
437
+ * 而**那条腿的体不带规则位**——别把一条重放出来的 offer 读成「它还兑得动」。
438
+ */
439
+ ruleOffers?: RuleOffer[];
207
440
  /**
208
441
  * "tool_approval" only, ADDITIVE (server ≥7.13.0 / core 5.25.0 #144): this ask **matched** one of the caller's
209
442
  * persisted allow rules, and that rule **could not silence it**. The value is the shadowed rule's VERBATIM text
@@ -370,6 +603,11 @@ export interface ApprovalCard {
370
603
  * 语义、**「在场性即承诺」**(只在规则店真装配时在场)与兑付面的射程逐字见
371
604
  * {@link ToolApprovalFrame.ruleSuggestions} —— live 帧 / `card_json` / 重放帧三面**同一份素材**。 */
372
605
  ruleSuggestions?: RuleSuggestion[];
606
+ /** server ≥7.46.0(core 5.58.0 design/375,**BREAKING 换键**,取代上面那条退役键):引擎为这次 ask 铸的
607
+ * 「不再询问」选项,判别联合 `single | batch`。语义、序即契约、在场性即承诺、两臂兑付法与**下标语义
608
+ * 随腿不同**的硬条款,逐字见 {@link RuleOffer} 与 {@link ToolApprovalFrame.ruleOffers} ——
609
+ * live 帧 / `card_json` / 重放帧三面**同一份素材**(server 侧同一只 `copyRuleOffer` 投影)。 */
610
+ ruleOffers?: RuleOffer[];
373
611
  /** ADDITIVE(server ≥7.13.0 / core 5.25.0 #144):被越级的那条持久规则**原文**(已脱敏 + 限长,
374
612
  * UNTRUSTED-for-display)。语义、**「缺席 ≠ 你没有规则」** 的硬条款、以及与 {@link governanceForced}
375
613
  * 刻意分列的理由,逐字见 {@link ToolApprovalFrame.persistedRuleShadowed} —— live 帧 / `card_json` /
@@ -410,7 +648,7 @@ export interface ApprovalCard {
410
648
  * **新增帧字段必须同步进本清单**(有测试钉)。 */
411
649
  export declare const APPROVAL_REQUEST_FRAME_KEYS: readonly ["type", "schemaVersion", "askId", "taskId", "kind", "card", "expiresInMs", "expiresAtMs", "serverNowMs", "approvalId"];
412
650
  /** {@link ApprovalCard} 的字段名清单(同上,卡是嵌套结构,单独一份)。 */
413
- export declare const APPROVAL_CARD_KEYS: readonly ["toolName", "message", "args", "argsOmitted", "toolCallId", "risk", "governanceForced", "ruleSuggestions", "persistedRuleShadowed", "fromSubagent", "sourceTaskId", "sourceAgentName", "delegation", "inputHasBidi", "probeCause", "ruleEvidence"];
651
+ export declare const APPROVAL_CARD_KEYS: readonly ["toolName", "message", "args", "argsOmitted", "toolCallId", "risk", "governanceForced", "ruleSuggestions", "ruleOffers", "persistedRuleShadowed", "fromSubagent", "sourceTaskId", "sourceAgentName", "delegation", "inputHasBidi", "probeCause", "ruleEvidence"];
414
652
  /** 流内审批呈卡帧(SSE,`type` 即事件名;design/172 §3.1 + 车3 §4.1)。**两腿两形**:live 腿上它与
415
653
  * `tool_approval`/`question`/`elicitation` 同一条 out-of-band 通道、在 token 流上交织,**不是**
416
654
  * `AgentEvent` 臂(按 SSE `event:` 名分派);durable 腿上 server 会 append 它,于是同一帧在
@@ -622,6 +860,36 @@ export interface ToolApprovalRespondAck {
622
860
  * 东西」(`rule_lane_unavailable`)。🔴 后者**四种成因共用一格、两种是本卡局限** ⇒ 禁据它判断整台部署,
623
861
  * 逐条见 {@link RuleRefusalReason}。 */
624
862
  ruleRefusal?: RuleRefusalReason;
863
+ /**
864
+ * #340,ADDITIVE(server ≥7.44.0)—— **自由文本臂专属**回显:真正落盘的那条规则的**规范拼写**
865
+ * (core 可能把 `Bash(adb *)` 规范成 `Bash(adb:*)`)。壳应当回显它,而不是输入框里的原字节。
866
+ *
867
+ * 🔴 **缺席的三种真实含义,别混**:①这次走的是**候选臂**(`edited` 未带)——server 的
868
+ * `editedArmEcho` 是本键的唯一成形口,候选臂回执因此**逐字节不变**(老壳按固定键集解析,多一个键就是
869
+ * 一次没人要的 wire 变更);②这次没落上(读 {@link rulePersisted} / {@link ruleRefusal});
870
+ * ③整只 `persistRule` 没带。**都不是**「规则丢了」。
871
+ */
872
+ persistedRule?: string;
873
+ /**
874
+ * design/377,ADDITIVE(server ≥7.46.0)—— **batch 臂专属**成功回执:这次一次性落地的**全部成员**的
875
+ * 规范文本。合取批是**一次 yes 全体落地**;任一成员兑付被拒 ⇒ `rulePersisted:false` +
876
+ * `ruleRefusal:"redeem-refused"`(已落地成员**不回滚** —— dot 记录在案,重触发新卡时 deduped 幂等)。
877
+ *
878
+ * 🔴 **序**:server ≥7.48.0 起按**请求那只 batch offer 的成员序**(帧上 `ruleOffers[batchOfferIndex].rules`
879
+ * 的序)交付,是**承诺**不是碰巧;7.46–7.47 上它继承的是服务端重铸批的走序 —— 所以要逐条归属请读
880
+ * {@link persistedRuleAnchors},别按位置推。
881
+ * 🔴 与 {@link persistedRule} **不是同一件事**:单数键属 single/编辑臂,复数键属 batch 臂,两键不会同场。
882
+ */
883
+ persistedRules?: string[];
884
+ /**
885
+ * P-39,ADDITIVE(server ≥7.48.0,**零能力位**)—— {@link persistedRules} 的**逐条自描述归属锚**,
886
+ * 与它 **index 对齐**。形与两级下标的空间见 {@link PersistedRuleAnchor}。
887
+ *
888
+ * 🔴 **只在 batch 臂铸**(single/编辑臂无批成员坐标可言 ⇒ 整键缺席);服务端**证不出归属时同样整键缺席**
889
+ * (诚实缺席,绝不编一个下标)⇒ 读到缺席即知这次只能按旧的位置法读,而 `persistedRules` 本身**一个字节
890
+ * 不变**(老消费方忽略未知键 ⇒ 零感知)。
891
+ */
892
+ persistedRuleAnchors?: PersistedRuleAnchor[];
625
893
  /**
626
894
  * #229,ADDITIVE(server ≥7.15.0):这次回决携带的 `note` 到底有没有**落进持久 ask 行**。
627
895
  *
@@ -657,21 +925,28 @@ export declare class ToolApprovalsResource {
657
925
  * `updatedInputForwarded`。 */
658
926
  updatedInput?: unknown;
659
927
  /**
660
- * #154 车二,ADDITIVE —— 人勾了「不再询问」:把 {@link ToolApprovalFrame.ruleSuggestions} 里**选中那条
661
- * 的 `rule` 文本原样**报回来。allow 族才有意义(deny 上 server 宽收后忽略,同 `updatedInput` 姿势)。
928
+ * #154 车二起座、7.44.0/7.46.0 长成**两臂**(S-134)—— 人勾了「不再询问」时这次回决要兑付的东西。
929
+ * 形、两臂互斥的编译期钉、server 四条 400 文案原文、以及 `deny` 下整字段不解析的姿势,
930
+ * 逐字见 {@link PersistRuleSelection}。
931
+ *
932
+ * 简表:
933
+ * · **候选臂** `{ rule }` —— 把 {@link ToolApprovalFrame.ruleOffers} 里**选中那条 `kind:"single"`
934
+ * 的 `rule` 文本原样**报回(server 按**文本**定位,别拼、别改大小写、别自己加 `:*`);
935
+ * · **编辑臂** `{ rule, edited: true }`(≥7.44.0,先探 `capabilities.respondFreeFormRules` —— 本包
936
+ * {@link import("../types.js").Capabilities.respondFreeFormRules})——
937
+ * 人手改的自由文本,成功回执带 {@link ToolApprovalRespondAck.persistedRule} = 落盘的规范拼写;
938
+ * · **批臂** `{ batchOfferIndex }`(≥7.46.0,先探 `capabilities.respondBatchRuleOffers` —— 本包
939
+ * {@link import("../types.js").Capabilities.respondBatchRuleOffers})——
940
+ * 合取批没有单条文本可抄,选择键 = 帧上 `ruleOffers` 的**下标**;成功回执带
941
+ * {@link ToolApprovalRespondAck.persistedRules} + {@link ToolApprovalRespondAck.persistedRuleAnchors}。
662
942
  *
663
- * 🔴 **只能是候选之一,不是自由规则**:server 拿这段文本在引擎铸的候选表里定位下标,对不上就拒
664
- * (`ruleRefusal: "rule_not_offered"`)。所以别拼、别改大小写、别自己加 `:*` —— 原样取自帧。
665
- * 🔴 与 `updatedInput` **同时**在场 ⇒ server 拒绝这次持久化(`rule_input_edited`):生效的调用是编辑后
666
- * 那份,而候选是引擎从原始命令铸的,给原始那条装规则是真扩权。裁决本身照常生效。
667
- * ⚠️ 帧上没有 `ruleSuggestions` 时**别发这一键**:**这张卡**没有可兑的东西,发了拿回的必定是
668
- * `rulePersisted:false` + **`rule_lane_unavailable`**(素材缺席在候选比对**之前**就短路了,所以不会是
669
- * `rule_not_offered`)。缺席有**三个**可能成因 —— 没接规则店 / 引擎对这条命令铸不出候选(复合、重定向、
670
- * 替换)/ 命令原字节读不出 —— 所以**别**据一帧、也别据这一个拒绝理由去判断整台部署的规则车道在不在。
943
+ * ⚠️ 帧上 `ruleOffers`(与退役键 `ruleSuggestions`)都缺席时**别发这一键**:**这张卡**没有可兑的
944
+ * 东西,发了拿回的必定是 `rulePersisted:false` + **`rule_lane_unavailable`**(素材缺席在候选比对
945
+ * **之前**就短路了,所以不会是 `rule_not_offered`)。缺席有多个成因 —— 没接规则店 / 引擎对这条命令
946
+ * 铸不出候选 / 命令原字节读不出 / 这只 ask 属七族不铸 offer 之一 —— 所以**别**据一帧、也别据这一个
947
+ * 拒绝理由去判断整台部署的规则车道在不在(那句话看 `capabilities.permissionRules`)。
671
948
  */
672
- persistRule?: {
673
- rule: string;
674
- };
949
+ persistRule?: PersistRuleSelection;
675
950
  /**
676
951
  * #229,ADDITIVE(server ≥7.15.0)—— 这次回决的**理由**(自由文本,**≤2048 字符**,超限/非串是响亮
677
952
  * `400 request.body_shape`,不静默截断)。落进持久 ask 行的 `decision_note` 列 = 审计面;与 durable
@@ -1 +1 @@
1
- {"version":3,"file":"tool-approvals.d.ts","sourceRoot":"","sources":["../../src/resources/tool-approvals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-approvals.d.ts","sourceRoot":"","sources":["../../src/resources/tool-approvals.ts"],"names":[],"mappings":"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"}
@@ -22,12 +22,60 @@ export const TOOL_APPROVAL_FRAME_KEYS = [
22
22
  "argsOmitted",
23
23
  "governanceForced",
24
24
  "ruleSuggestions",
25
+ "ruleOffers",
25
26
  "persistedRuleShadowed",
26
27
  "probeCause",
27
28
  "ruleEvidence",
28
29
  "delegation",
29
30
  "outcome",
30
31
  ];
32
+ // ═══════════════════════════════════════════════════════════════════════════════════════════════════
33
+ // S-134(sdk 8.2.0)—— **规则候选的换形**:`RuleSuggestion`(≤7.45)→ `RuleOffer` 判别联合(≥7.46.0)。
34
+ //
35
+ // 真源逐字(server 树亲读,非 d.ts 推断):`src/approval-card.ts` 的 `RuleOfferSchema` /
36
+ // `RuleOfferBatchMemberSchema` / `UncoveredSegmentDetailSchema`;闭词表的**单一属主是 core**,server 侧
37
+ // 转录在 `src/permission-rule-vocab.ts`(每张表带 `Exact<>` 双向全等钉 —— core 加员 ⇒ server 编译红)。
38
+ //
39
+ // 🔴 **本包只是型面供给口,不是第二个判官**:两代 wire 键(新 `ruleOffers` / 旧 `ruleSuggestions`)在
40
+ // 型面上**并列声明**,取舍序归消费端的窄读器(client-core `readRuleOfferSupply`:新键在场即定局、旧键
41
+ // 整条不看)。sdk 不在类型层替消费端做取舍 —— 那会让「新键有载体但读不出」这一格在两个地方各判一次。
42
+ // ═══════════════════════════════════════════════════════════════════════════════════════════════════
43
+ // 🔴 三张闭词表各只有**一处真源**(`as const` 数组 ⇒ 类型派生 ⇒ 运行时校验器读同一数组),与 server
44
+ // `src/permission-rule-vocab.ts` 的 `PERSISTED_RULE_MATCHES` / `RULE_OFFER_BATCH_MEMBER_KINDS` /
45
+ // `UNCOVERED_SEGMENT_REASONS` 同形。类型与校验器各抄一遍字面量 = 两份会各自漂的判官(加员时没有任何编译信号)。
46
+ /**
47
+ * 一条规则的**匹配形**闭词表 —— server `PERSISTED_RULE_MATCHES` 逐字四员(词表属主是 core 的
48
+ * `PersistedRuleMatch`,server 只转录并钉全等)。
49
+ *
50
+ * · `exact` —— 只放行这一条命令(`Bash(git status)`);
51
+ * · `prefix` —— 历史 colon-star 词界前缀(`Bash(git status:*)`),**复合前缀形的唯一拼写**,永久兼容读;
52
+ * · `wildcard` —— 尾 space-star(`Bash(npm run *)`);在**单命令体**上与 `prefix` 是同一个谓词,
53
+ * core 自 design/382 / #510 起建议面铸它。⚠️ 这是 sdk 8.1.0 的 `RuleSuggestion.match`(两员)与本形的
54
+ * 实质差别:老两员形会把一条合法的 `wildcard` 候选判成坏形丢掉(整格「不再询问」消失);
55
+ * · `subpath` —— `Read(//abs-dir/**)` 的目录只读形,**永不容纳任何命令**。
56
+ *
57
+ * 🔴 **为什么四员而不是照抄「今天的 miner 只铸三员」**:类型描述的是**消费端可能收到**的值域,而 server
58
+ * 的 wire 校验器(`RuleMatchSchema = z.enum(PERSISTED_RULE_MATCHES)`)对这四个词一律放行。比铸点更窄的
59
+ * 消费型面就是一句谎——它让 `switch` 在编译期自称穷尽,而运行期真会来第四个词。
60
+ */
61
+ export const RULE_OFFER_MATCHES = ["exact", "prefix", "wildcard", "subpath"];
62
+ /**
63
+ * `batch` 臂的**一个成员** —— 复合命令某一段折出来的规则。判别位 `kind`(server
64
+ * `RULE_OFFER_BATCH_MEMBER_KINDS` 两员,core `RuleOfferBatchMember["kind"]` 全等钉)。
65
+ *
66
+ * `segment` = 这条成员是从**哪一段**折叠后的命令原字节铸出来的:core 明写它是**渲染座、永不参与裁决**,
67
+ * 与 `rule`/`command`/`directory` 同属 UNTRUSTED-for-display。⚠️ 只有 `segment` 会被 server 截长
68
+ * (诚实省略);`rule`/`command`/`directory` 是兑付等式的左边,**永不截**。
69
+ *
70
+ * 🔴 **成员 `kind` 不识 ⇒ 丢整只 batch,绝不丢单个成员**(core 规范性降级臂):少一个成员的合取批把
71
+ * 「对 N 条说 yes」渲成「对 N−1 条说 yes」,比不渲更坏;旁边的 `single` 是完整诚实的,照留。
72
+ */
73
+ export const RULE_OFFER_BATCH_MEMBER_KINDS = ["command", "directoryRead"];
74
+ const MEMBER_KINDS_PIN = true;
75
+ void MEMBER_KINDS_PIN;
76
+ /** 一段「为什么仍未被覆盖」的闭三词集(server `UNCOVERED_SEGMENT_REASONS`,core 属主):
77
+ * `redirection` 永久逐次问 / `no_rule_form` 无可覆盖形 / `cap_overflow` 去重+帽挤出。 */
78
+ export const RULE_OFFER_UNCOVERED_REASONS = ["redirection", "no_rule_form", "cap_overflow"];
31
79
  /** 同源锚对账面(照 {@link TOOL_APPROVAL_FRAME_KEYS} 先例):`ApprovalRequestFrame` 的**字段名清单**,
32
80
  * 给下游值拷贝(client-core / web 各自持同名闭集 copy)做机器对账用。
33
81
  * **新增帧字段必须同步进本清单**(有测试钉)。 */
@@ -53,6 +101,7 @@ export const APPROVAL_CARD_KEYS = [
53
101
  "risk",
54
102
  "governanceForced",
55
103
  "ruleSuggestions",
104
+ "ruleOffers",
56
105
  "persistedRuleShadowed",
57
106
  "fromSubagent",
58
107
  "sourceTaskId",
@@ -96,6 +145,43 @@ function isRuleSuggestionV1(v) {
96
145
  const s = v;
97
146
  return isStr(s.rule) && isStr(s.command) && (s.match === "exact" || s.match === "prefix");
98
147
  }
148
+ /** 一条 offer 的逐键判据(判别联合两臂 + 成员两臂)。**闭集判别位与闭词表都真判** —— 理由与
149
+ * {@link isRuleSuggestionV1} 逐字同源:一条被窄化成「可信」的坏 offer 会让壳渲出一格按下去必被 server
150
+ * 拒的「不再询问」,而人已经以为自己存下了规则。
151
+ * 🔴 成员 `kind` 不识 ⇒ **整只 batch 判假**(core 规范性降级臂:少一个成员的合取批比不渲更坏)。 */
152
+ function isRuleOfferV1(v) {
153
+ if (typeof v !== "object" || v === null)
154
+ return false;
155
+ const o = v;
156
+ const isMatch = (m) => RULE_OFFER_MATCHES.includes(m);
157
+ if (o.kind === "single")
158
+ return isStr(o.rule) && isStr(o.command) && isMatch(o.match);
159
+ if (o.kind !== "batch")
160
+ return false; // 闭集判别位:不认识的 kind 不猜、不降级成 single
161
+ if (!Array.isArray(o.rules) || o.rules.length === 0)
162
+ return false;
163
+ if (typeof o.uncoveredSegments !== "number" || !Number.isSafeInteger(o.uncoveredSegments) || o.uncoveredSegments < 0)
164
+ return false;
165
+ const memberOk = (m) => {
166
+ if (typeof m !== "object" || m === null)
167
+ return false;
168
+ const r = m;
169
+ if (r.kind === "command")
170
+ return isStr(r.rule) && isStr(r.command) && isStr(r.segment) && isMatch(r.match);
171
+ if (r.kind === "directoryRead")
172
+ return isStr(r.rule) && isStr(r.directory) && isStr(r.segment);
173
+ return false;
174
+ };
175
+ if (!o.rules.every(memberOk))
176
+ return false;
177
+ const detailOk = (d) => {
178
+ if (typeof d !== "object" || d === null)
179
+ return false;
180
+ const x = d;
181
+ return isStr(x.segment) && RULE_OFFER_UNCOVERED_REASONS.includes(x.reason);
182
+ };
183
+ return optIs(o.uncoveredDetail, (x) => Array.isArray(x) && x.every(detailOk));
184
+ }
99
185
  function isApprovalCardV1(v) {
100
186
  if (typeof v !== "object" || v === null)
101
187
  return false;
@@ -106,6 +192,7 @@ function isApprovalCardV1(v) {
106
192
  return (optTrue(c.argsOmitted) &&
107
193
  optIs(c.toolCallId, isStr) &&
108
194
  optIs(c.ruleSuggestions, (x) => Array.isArray(x) && x.every(isRuleSuggestionV1)) &&
195
+ optIs(c.ruleOffers, (x) => Array.isArray(x) && x.every(isRuleOfferV1)) &&
109
196
  // 在场形也校验(同 `ruleSuggestions` 那条纪律):这一格是**展示解释**,一个非串的值渲出来是
110
197
  // `[object Object]`,而人正指望这一行告诉他「你的规则怎么了」。
111
198
  optIs(c.persistedRuleShadowed, isStr) &&
@@ -1 +1 @@
1
- {"version":3,"file":"tool-approvals.js","sourceRoot":"","sources":["../../src/resources/tool-approvals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-approvals.js","sourceRoot":"","sources":["../../src/resources/tool-approvals.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -57,6 +57,7 @@
57
57
  * null" may be correct — check for a normalizer at the boundary before widening it to `| null`.
58
58
  */
59
59
  import type { SemaSettings } from "./settings.js";
60
+ import type { RuleOffer } from "./resources/tool-approvals.js";
60
61
  /** Authenticated end-user identity. Opaque to the service (used as memory scope + session owner). The SDK
61
62
  * normalizes; the service does NOT validate the format. Convention: `user:` / `org:` / `ai:` / `anon:`. */
62
63
  export type Principal = string;
@@ -2288,6 +2289,31 @@ export interface Capabilities {
2288
2289
  * 「这个二进制认识这个键」——与 {@link permissionRulesRevoke} 的存在性信号同族,刻意不挂任何设施谓词。
2289
2290
  */
2290
2291
  approvalDecisionNote?: boolean;
2292
+ /**
2293
+ * #340(server ≥7.44.0,`routes/capabilities.ts` 的能力对象**硬编码 true**)—— live 回决口
2294
+ * `POST /v1/tool-approvals/:id/respond` 收 `persistRule.edited: true` 的**版本探测位**:
2295
+ * 「这次要落的规则是人在卡上**手改**的自由文本」,而不是候选表里的某一条。
2296
+ *
2297
+ * 🔴 **必须先探再渲那个可编辑输入框**:live 回决口的体校验是**非 strict** 的手写 parser,老 worker
2298
+ * 会把 `edited` 当未知键**静默丢掉**、然后按**候选文本**判 ⇒ 回一句 `rule_not_offered` —— 诚实,但人
2299
+ * 只会读成「我写错了」。位缺席 = 老 server,别渲这一格。
2300
+ * 🔴 **它不承诺「你这次一定落得下」**(与 {@link approvalDecisionNote} 同族,刻意不挂任何设施谓词):
2301
+ * 那是 per-call 的事实,由每次回执的 `rulePersisted` / `ruleRefusal` 逐次回答 ——
2302
+ * `edit-unsupported`(这张卡没有绑定锚 ⇒ **别再渲那个输入框**)与 `edit-rejected`(**改一下再来**)。
2303
+ * ⚠️ **车道在不在**由 {@link permissionRules} 那一位答(按调用方算),两位配对读才是完整判据。
2304
+ */
2305
+ respondFreeFormRules?: boolean;
2306
+ /**
2307
+ * design/377(server ≥7.46.0,同上硬编码 true)—— live 回决口收 `persistRule.batchOfferIndex` 的
2308
+ * **版本探测位**:「人勾了一条 `kind:"batch"` 的合取批」,选择键 = 帧上 `ruleOffers` 的下标。
2309
+ *
2310
+ * 🔴 **先探再渲 batch 兑付格**:老 worker 把本键当未知键丢掉后按「缺 `rule`」判 ⇒ 400 文本形拒
2311
+ * (诚实,但读不出「人勾了批」)。位缺席 ⇒ batch offer 只渲不兑。
2312
+ * 🔴 同样只答「这个二进制认识这个键」;这次兑不兑得动看逐次回执(成功时另带 `persistedRules` 复数键,
2313
+ * server ≥7.48.0 再带逐条归属锚 `persistedRuleAnchors` —— 那条 additive 加键**刻意不开第二个能力位**:
2314
+ * 它在同一条 batch 兑付通道上,消费方按键在不在读即可,再开一位只会让「批兑付在不在」有两个说话人)。
2315
+ */
2316
+ respondBatchRuleOffers?: boolean;
2291
2317
  /** E12 suggestNextPrompts 认词(`routes/capabilities.ts` 的能力对象 硬编码 true)。 */
2292
2318
  promptSuggestions?: boolean;
2293
2319
  /** PUT /v1/sessions/:id/policy 面(`routes/capabilities.ts` 的能力对象 `Boolean(sessionPolicyStore)`)。 */
@@ -2425,6 +2451,24 @@ export interface PendingCheckpoint {
2425
2451
  match: "exact" | "prefix";
2426
2452
  command: string;
2427
2453
  }>;
2454
+ /**
2455
+ * S-134(server ≥7.46.0;core 5.58.0 design/375)—— 上一条**退役键的换形继任**:同一条 core 契约
2456
+ * (`PendingAction.ruleOffers` ≡ 同步腿 `AskRequest.ruleOffers`),形是判别联合 `single | batch`,
2457
+ * 逐字见 {@link import("./resources/tool-approvals.js").RuleOffer}。
2458
+ * server ≥7.46.0 的行上**只铸新键**;pre-5.58 的老行按新窄读逐条不合 ⇒ 整格「无供给」(不做兼容读)。
2459
+ *
2460
+ * 🔴 **本腿的下标不是选择键**(server `checkpoint-store-sql.ts` 顶注逐字,必须随类型搬到消费端眼前):
2461
+ * 耐久腿的投影对形不合的 offer 是**逐条丢弃并压紧**的 ⇒ 中间剔除会让后面的下标整体前移;它站得住
2462
+ * **只因为本腿没有兑付口**(`POST /v1/approvals/:sessionId/decide` 的体不带规则位)。⇒ 拿它当
2463
+ * `persistRule.batchOfferIndex` 回兑 = 人点的第 k 个与服务端兑的第 k 个指向两条不同规则。
2464
+ * 活卡帧腿相反({@link import("./resources/tool-approvals.js").ToolApprovalFrame.ruleOffers}):
2465
+ * 那侧 server 是纯前缀截、零逐条丢弃,下标恒等于 core 的 offer index,兑付真发生在那条腿上。
2466
+ *
2467
+ * 🔴 **display/triage-only** 与 {@link ruleSuggestions} 同律;**缺席 = 真的没有供给**(规则车道没武装 /
2468
+ * 命令说不出规则 / 规则清不掉这只 ask / 老行),不是「投影层漏了」—— 后者正是 server 把这一格搬上
2469
+ * 耐久腿要修的病。恒不铸 `null`、不铸 `[]`。
2470
+ */
2471
+ ruleOffers?: RuleOffer[];
2428
2472
  /** server 7.16.0([3684]②):出身徽记——这道门是运维治理层强制的。判据属主=`governanceOriginOf`
2429
2473
  * (行上取证格 ∧ 部署姿态合取),它是 **`/v1/approvals` 行 + 409 体**两面的单一属主;活卡帧
2430
2474
  * `ToolApprovalFrame.governanceForced` 是**语义同族、判据不同源**(进程内治理标记表)——同一只 ask