@sema-agent/sdk 8.1.0 → 8.3.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.
@@ -21,13 +21,91 @@ export const TOOL_APPROVAL_FRAME_KEYS = [
21
21
  "args",
22
22
  "argsOmitted",
23
23
  "governanceForced",
24
+ // S-139(8.3.0):对 server 7.60.0 整体重对账补进来的 9 位。
25
+ "requiresRealApproval",
26
+ "origin",
27
+ "inputHasBidi",
28
+ "expiresAtMs",
29
+ "expiresInMs",
30
+ "serverNowMs",
24
31
  "ruleSuggestions",
32
+ "ruleOffers",
33
+ "ruleOffersAbsence",
34
+ "denialLimitFallback",
25
35
  "persistedRuleShadowed",
26
36
  "probeCause",
27
37
  "ruleEvidence",
28
38
  "delegation",
39
+ "parked",
29
40
  "outcome",
30
41
  ];
42
+ // ═══════════════════════════════════════════════════════════════════════════════════════════════════
43
+ // S-134(sdk 8.2.0)—— **规则候选的换形**:`RuleSuggestion`(≤7.45)→ `RuleOffer` 判别联合(≥7.46.0)。
44
+ //
45
+ // 真源逐字(server 树亲读,非 d.ts 推断):`src/approval-card.ts` 的 `RuleOfferSchema` /
46
+ // `RuleOfferBatchMemberSchema` / `UncoveredSegmentDetailSchema`;闭词表的**单一属主是 core**,server 侧
47
+ // 转录在 `src/permission-rule-vocab.ts`(每张表带 `Exact<>` 双向全等钉 —— core 加员 ⇒ server 编译红)。
48
+ //
49
+ // 🔴 **本包只是型面供给口,不是第二个判官**:两代 wire 键(新 `ruleOffers` / 旧 `ruleSuggestions`)在
50
+ // 型面上**并列声明**,取舍序归消费端的窄读器(client-core `readRuleOfferSupply`:新键在场即定局、旧键
51
+ // 整条不看)。sdk 不在类型层替消费端做取舍 —— 那会让「新键有载体但读不出」这一格在两个地方各判一次。
52
+ // ═══════════════════════════════════════════════════════════════════════════════════════════════════
53
+ // 🔴 三张闭词表各只有**一处真源**(`as const` 数组 ⇒ 类型派生 ⇒ 运行时校验器读同一数组),与 server
54
+ // `src/permission-rule-vocab.ts` 的 `PERSISTED_RULE_MATCHES` / `RULE_OFFER_BATCH_MEMBER_KINDS` /
55
+ // `UNCOVERED_SEGMENT_REASONS` 同形。类型与校验器各抄一遍字面量 = 两份会各自漂的判官(加员时没有任何编译信号)。
56
+ /**
57
+ * 一条规则的**匹配形**闭词表 —— server `PERSISTED_RULE_MATCHES` 逐字四员(词表属主是 core 的
58
+ * `PersistedRuleMatch`,server 只转录并钉全等)。
59
+ *
60
+ * · `exact` —— 只放行这一条命令(`Bash(git status)`);
61
+ * · `prefix` —— 历史 colon-star 词界前缀(`Bash(git status:*)`),**复合前缀形的唯一拼写**,永久兼容读;
62
+ * · `wildcard` —— 尾 space-star(`Bash(npm run *)`);在**单命令体**上与 `prefix` 是同一个谓词,
63
+ * core 自 design/382 / #510 起建议面铸它。⚠️ 这是 sdk 8.1.0 的 `RuleSuggestion.match`(两员)与本形的
64
+ * 实质差别:老两员形会把一条合法的 `wildcard` 候选判成坏形丢掉(整格「不再询问」消失);
65
+ * · `subpath` —— `Read(//abs-dir/**)` 的目录只读形,**永不容纳任何命令**。
66
+ *
67
+ * 🔴 **为什么四员而不是照抄「今天的 miner 只铸三员」**:类型描述的是**消费端可能收到**的值域,而 server
68
+ * 的 wire 校验器(`RuleMatchSchema = z.enum(PERSISTED_RULE_MATCHES)`)对这四个词一律放行。比铸点更窄的
69
+ * 消费型面就是一句谎——它让 `switch` 在编译期自称穷尽,而运行期真会来第四个词。
70
+ */
71
+ export const RULE_OFFER_MATCHES = ["exact", "prefix", "wildcard", "subpath"];
72
+ /**
73
+ * `batch` 臂的**一个成员** —— 复合命令某一段折出来的规则。判别位 `kind`(server
74
+ * `RULE_OFFER_BATCH_MEMBER_KINDS` 两员,core `RuleOfferBatchMember["kind"]` 全等钉)。
75
+ *
76
+ * `segment` = 这条成员是从**哪一段**折叠后的命令原字节铸出来的:core 明写它是**渲染座、永不参与裁决**,
77
+ * 与 `rule`/`command`/`directory` 同属 UNTRUSTED-for-display。⚠️ 只有 `segment` 会被 server 截长
78
+ * (诚实省略);`rule`/`command`/`directory` 是兑付等式的左边,**永不截**。
79
+ *
80
+ * 🔴 **成员 `kind` 不识 ⇒ 丢整只 batch,绝不丢单个成员**(core 规范性降级臂):少一个成员的合取批把
81
+ * 「对 N 条说 yes」渲成「对 N−1 条说 yes」,比不渲更坏;旁边的 `single` 是完整诚实的,照留。
82
+ */
83
+ export const RULE_OFFER_BATCH_MEMBER_KINDS = ["command", "directoryRead"];
84
+ const MEMBER_KINDS_PIN = true;
85
+ void MEMBER_KINDS_PIN;
86
+ /** 一段「为什么仍未被覆盖」的闭三词集(server `UNCOVERED_SEGMENT_REASONS`,core 属主):
87
+ * `redirection` 永久逐次问 / `no_rule_form` 无可覆盖形 / `cap_overflow` 去重+帽挤出。 */
88
+ export const RULE_OFFER_UNCOVERED_REASONS = ["redirection", "no_rule_form", "cap_overflow"];
89
+ // ═══════════════════════════════════════════════════════════════════════════════════════════════════
90
+ // S-139(sdk 8.3.0)—— 对 **server 7.60.0** 的整体重对账带进来的三张型面。真源逐字亲读 server 树
91
+ // (`src/tool-approval.ts` 的 `ToolApprovalFrame`、`src/approval-card.ts` 的窄读器),不信 d.ts 注释。
92
+ // ═══════════════════════════════════════════════════════════════════════════════════════════════════
93
+ /**
94
+ * `ruleOffers` **缺席的因由**(server `approval-card.ts` 的 `RuleOffersAbsenceSchema`;S-15 第五单 /
95
+ * core #490 修②)—— 规则车道**在场却无可给**时,引擎点名哪扇门关了:
96
+ * · `mandated` —— 这只 ask 是**强制逐次确认**的(治理令 / doctrine `always` / 工具自带 mark);
97
+ * 🔴 这一臂**不得**把人指向"去写条规则" —— 写了也不会消音,那是把用户送进一个死循环;
98
+ * · `shadowed` —— 有规则命中却清不掉它(与 {@link ToolApprovalFrame.persistedRuleShadowed} 同一件事的机读位);
99
+ * · `lane_cannot_speak` —— 车道这一次说不出话(引擎没能为这条命令铸出任何可覆盖形)。
100
+ *
101
+ * 🔴 **闭三词集,server 侧对词表外的值 `不铸键`**(不透传未知词)⇒ 消费端读到的一定是这三个之一;
102
+ * 尽管如此仍按**开集**分支(`default` 臂),因为 core 是词表属主、加员时 server 会随之放行。
103
+ * 🔴 **缺席不是断言**:它同时覆盖「有 offers」与上面三扇结构门,一帧分不出来。
104
+ * 🔴 **ADVISORY 展示元数据,永不是裁决输入**。
105
+ */
106
+ export const RULE_OFFERS_ABSENCE_REASONS = ["mandated", "shadowed", "lane_cannot_speak"];
107
+ /** {@link DenialLimitFallback.limit} 的闭二词表 —— 触的是哪一道界(连续拒 / 累计拒)。 */
108
+ export const DENIAL_LIMIT_KINDS = ["consecutive", "total"];
31
109
  /** 同源锚对账面(照 {@link TOOL_APPROVAL_FRAME_KEYS} 先例):`ApprovalRequestFrame` 的**字段名清单**,
32
110
  * 给下游值拷贝(client-core / web 各自持同名闭集 copy)做机器对账用。
33
111
  * **新增帧字段必须同步进本清单**(有测试钉)。 */
@@ -53,6 +131,7 @@ export const APPROVAL_CARD_KEYS = [
53
131
  "risk",
54
132
  "governanceForced",
55
133
  "ruleSuggestions",
134
+ "ruleOffers",
56
135
  "persistedRuleShadowed",
57
136
  "fromSubagent",
58
137
  "sourceTaskId",
@@ -61,6 +140,9 @@ export const APPROVAL_CARD_KEYS = [
61
140
  "inputHasBidi",
62
141
  "probeCause",
63
142
  "ruleEvidence",
143
+ // S-139(8.3.0):帧与卡同源两位。
144
+ "ruleOffersAbsence",
145
+ "denialLimitFallback",
64
146
  ];
65
147
  /** {@link ApprovalRevokeFrame} 的字段名清单(同源锚对账面)。 */
66
148
  export const APPROVAL_REVOKE_FRAME_KEYS = ["type", "schemaVersion", "batchId", "askIds", "reason", "serverNowMs", "taskId"];
@@ -96,6 +178,87 @@ function isRuleSuggestionV1(v) {
96
178
  const s = v;
97
179
  return isStr(s.rule) && isStr(s.command) && (s.match === "exact" || s.match === "prefix");
98
180
  }
181
+ /** 一条 offer 的逐键判据(判别联合两臂 + 成员两臂)。**闭集判别位与闭词表都真判** —— 理由与
182
+ * {@link isRuleSuggestionV1} 逐字同源:一条被窄化成「可信」的坏 offer 会让壳渲出一格按下去必被 server
183
+ * 拒的「不再询问」,而人已经以为自己存下了规则。
184
+ * 🔴 成员 `kind` 不识 ⇒ **整只 batch 判假**(core 规范性降级臂:少一个成员的合取批比不渲更坏)。 */
185
+ function isRuleOfferV1(v) {
186
+ if (typeof v !== "object" || v === null)
187
+ return false;
188
+ const o = v;
189
+ const isMatch = (m) => RULE_OFFER_MATCHES.includes(m);
190
+ if (o.kind === "single")
191
+ return isStr(o.rule) && isStr(o.command) && isMatch(o.match);
192
+ if (o.kind !== "batch")
193
+ return false; // 闭集判别位:不认识的 kind 不猜、不降级成 single
194
+ if (!Array.isArray(o.rules) || o.rules.length === 0)
195
+ return false;
196
+ if (typeof o.uncoveredSegments !== "number" || !Number.isSafeInteger(o.uncoveredSegments) || o.uncoveredSegments < 0)
197
+ return false;
198
+ const memberOk = (m) => {
199
+ if (typeof m !== "object" || m === null)
200
+ return false;
201
+ const r = m;
202
+ if (r.kind === "command")
203
+ return isStr(r.rule) && isStr(r.command) && isStr(r.segment) && isMatch(r.match);
204
+ if (r.kind === "directoryRead")
205
+ return isStr(r.rule) && isStr(r.directory) && isStr(r.segment);
206
+ return false;
207
+ };
208
+ if (!o.rules.every(memberOk))
209
+ return false;
210
+ const detailOk = (d) => {
211
+ if (typeof d !== "object" || d === null)
212
+ return false;
213
+ const x = d;
214
+ return isStr(x.segment) && RULE_OFFER_UNCOVERED_REASONS.includes(x.reason);
215
+ };
216
+ return optIs(o.uncoveredDetail, (x) => Array.isArray(x) && x.every(detailOk));
217
+ }
218
+ /** `probeCause` 的逐键判据 —— `{code, roots:{shown,total}, further?}`。`code` 是**开集**串(按 default 臂
219
+ * 分支),两个操作数族的 `total` 必须是真实基数(`shown` 可能被 server 截短,`shown.length < total` 正是
220
+ * 「另有 N 条」的算式)⇒ `total` 非数就整只判假,否则壳会渲出一个错的计数。 */
221
+ function isProbeCauseOperandsV1(v) {
222
+ if (typeof v !== "object" || v === null)
223
+ return false;
224
+ const o = v;
225
+ return Array.isArray(o.shown) && o.shown.every(isStr) && isNum(o.total);
226
+ }
227
+ function isProbeCauseV1(v) {
228
+ if (typeof v !== "object" || v === null)
229
+ return false;
230
+ const c = v;
231
+ return isStr(c.code) && isProbeCauseOperandsV1(c.roots) && optIs(c.further, isProbeCauseOperandsV1);
232
+ }
233
+ /** `ruleEvidence` 的判据 —— 🔴 **成员级开集**(顶注「窄读域纪律」逐字):**不认识的成员原样留着**,
234
+ * 只对**认识的成员**查形。闭集白名单会让一个陌生的新成员把整只记录判假,**连坐吞掉兄弟成员的合法证据**
235
+ * (同一张卡上本来读得到的 `orgRule` 会随之消失),而 server 侧对畸形记录本来就是整只拒读 —— 消费端的
236
+ * 读域只许 **≥** 铸点域。 */
237
+ function isRuleEvidenceV1(v) {
238
+ if (typeof v !== "object" || v === null)
239
+ return false;
240
+ const e = v;
241
+ const dotOk = (d) => {
242
+ if (typeof d !== "object" || d === null)
243
+ return false;
244
+ const x = d;
245
+ return isStr(x.actor) && isNum(x.counter);
246
+ };
247
+ return (optIs(e.orgRevision, isNum) &&
248
+ optIs(e.orgRevisionAbsent, isStr) &&
249
+ optIs(e.orgRule, isStr) &&
250
+ optIs(e.orgRuleAbsent, isStr) &&
251
+ optIs(e.personalRuleDots, (x) => Array.isArray(x) && x.every(dotOk)) &&
252
+ optIs(e.personalRuleDotsAbsent, isStr));
253
+ }
254
+ /** `denialLimitFallback` 的判据 —— **四成员全必填**(core 形上没有可选位 ⇒「少一位」是坏值不是老 core)。
255
+ * 半铸一张卡会让人读到一个错的拒次计数,所以形不合 ⇒ 整只判假。`limit` 按开集读(闭二词只给补全)。 */
256
+ function isDenialLimitFallbackV1(v) {
257
+ if (typeof v !== "object" || v === null)
258
+ return false;
259
+ const d = v;
260
+ return isNum(d.consecutive) && isNum(d.total) && isStr(d.limit) && isNum(d.autoDenyAfterMs);
261
+ }
99
262
  function isApprovalCardV1(v) {
100
263
  if (typeof v !== "object" || v === null)
101
264
  return false;
@@ -106,13 +269,24 @@ function isApprovalCardV1(v) {
106
269
  return (optTrue(c.argsOmitted) &&
107
270
  optIs(c.toolCallId, isStr) &&
108
271
  optIs(c.ruleSuggestions, (x) => Array.isArray(x) && x.every(isRuleSuggestionV1)) &&
272
+ optIs(c.ruleOffers, (x) => Array.isArray(x) && x.every(isRuleOfferV1)) &&
109
273
  // 在场形也校验(同 `ruleSuggestions` 那条纪律):这一格是**展示解释**,一个非串的值渲出来是
110
274
  // `[object Object]`,而人正指望这一行告诉他「你的规则怎么了」。
111
275
  optIs(c.persistedRuleShadowed, isStr) &&
112
276
  optTrue(c.fromSubagent) &&
113
277
  optIs(c.sourceTaskId, isStr) &&
114
278
  optIs(c.sourceAgentName, isStr) &&
115
- optIs(c.delegation, isApprovalCardDelegationV1));
279
+ optIs(c.delegation, isApprovalCardDelegationV1) &&
280
+ // ── S-139:把"在场可选键也校验"这条纪律**补齐到整只卡**(此前 3 位声明了却没进谓词)──────────
281
+ // 顶注写的是「判据 = 协议判别位 + 全部必填键的类型 + **在场可选键的类型**」。`inputHasBidi` /
282
+ // `probeCause` / `ruleEvidence` 三位声明在型面上却从来没进过这个谓词 ⇒ 那句话对它们是假的。
283
+ // 本批补两位新键时按**类**一起补齐,而不是只给新键开一条特例(加特例会让规则集变大)。
284
+ optTrue(c.inputHasBidi) &&
285
+ optIs(c.probeCause, isProbeCauseV1) &&
286
+ optIs(c.ruleEvidence, isRuleEvidenceV1) &&
287
+ // 闭三词集**真判**:一个词表外的值渲出来是一句壳读不懂的解释,而 server 承诺不透传未知词。
288
+ optIs(c.ruleOffersAbsence, isStr) &&
289
+ optIs(c.denialLimitFallback, isDenialLimitFallbackV1));
116
290
  }
117
291
  /** 窄化谓词:给定值是否是**本包所描述的** v1 呈卡帧。
118
292
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tool-approvals.js","sourceRoot":"","sources":["../../src/resources/tool-approvals.ts"],"names":[],"mappings":"AA+DA;;;;;;kEAMkE;AAClE;;;uCAGuC;AACvC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,MAAM;IACN,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,cAAc;IACd,cAAc;IACd,iBAAiB;IACjB,SAAS;IACT,MAAM;IACN,aAAa;IACb,kBAAkB;IAClB,iBAAiB;IACjB,uBAAuB;IACvB,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,SAAS;CACD,CAAC;AAkVX;;+BAE+B;AAC/B,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,MAAM;IACN,eAAe;IACf,OAAO;IACP,QAAQ;IACR,MAAM;IACN,MAAM;IACN,aAAa;IACb,aAAa;IACb,aAAa;IACb,YAAY;CACJ,CAAC;AAEX,mDAAmD;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU;IACV,SAAS;IACT,MAAM;IACN,aAAa;IACb,YAAY;IACZ,MAAM;IACN,kBAAkB;IAClB,iBAAiB;IACjB,uBAAuB;IACvB,cAAc;IACd,cAAc;IACd,iBAAiB;IACjB,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,cAAc;CACN,CAAC;AAiDX,kDAAkD;AAClD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAU,CAAC;AAsDrI,2FAA2F;AAC3F,0DAA0D;AAC1D,qFAAqF;AACrF,oEAAoE;AACpE,mDAAmD;AACnD,MAAM,KAAK,GAAG,CAAC,CAAU,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AAC7D,MAAM,KAAK,GAAG,CAAC,CAAU,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AAC7D,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,EAA2B,EAAW,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7F,MAAM,OAAO,GAAG,CAAC,CAAU,EAAW,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;AAEvE,SAAS,oBAAoB,CAAC,CAAU;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,IAAI,OAAO,CAAC,CAAC,oBAAoB,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC9D,OAAO,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC;AAChH,CAAC;AAED,SAAS,0BAA0B,CAAC,CAAU;IAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAClF,CAAC;AAED;;4CAE4C;AAC5C,SAAS,kBAAkB,CAAC,CAAU;IACpC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3F,gEAAgE;IAChE,OAAO,CACL,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;QACtB,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC;QAC1B,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAChF,2DAA2D;QAC3D,0CAA0C;QAC1C,KAAK,CAAC,CAAC,CAAC,qBAAqB,EAAE,KAAK,CAAC;QACrC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;QACvB,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC;QAC5B,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC;QAC/B,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAChD,CAAC;AACJ,CAAC;AAED;;;;;mDAKmD;AACnD,MAAM,UAAU,wBAAwB,CAAC,CAAU;IACjD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IACpG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1F,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;gCAIgC;AAChC,MAAM,UAAU,uBAAuB,CAAC,CAAU;IAChD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IACjF,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAsHD,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C;;;;;;;;;;uGAUmG;IACnG,KAAK,CAAC,OAAO,CACX,EAAU,EACV,IAiCC,EACD,IAA+B;QAE/B,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAyB;YAC5C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,UAAU;YAC5D,IAAI;YACJ,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iEAmC6D;IAC7D,KAAK,CAAC,SAAS,CACb,MAAc,EACd,KAAa,EACb,IAAqB,EACrB,IAA+B;QAE/B,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAiB;YACpC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,aAAa,kBAAkB,CAAC,MAAM,CAAC,SAAS,kBAAkB,CAAC,KAAK,CAAC,WAAW;YAC1F,IAAI;YACJ,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;CACF"}
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;
@@ -1997,6 +1998,66 @@ export interface McpServerSpec {
1997
1998
  }
1998
1999
  /** Worker capability map (`GET /v1/capabilities`). Open set — ignore unknown keys. Booleans
1999
2000
  * share deps with the route gates ("says yes but 501s" is structurally impossible, producer-tested). */
2001
+ /**
2002
+ * `permissionModeAuto` 的**武装未达成因由**(server `AUTO_MODE_UNARMED_REASONS` 闭六词;S-80)。
2003
+ * 🔴 **按开集读**:词表已经从四词长到六词,server 再加员时未知词必须落进 `default` 臂当「未知因由」,
2004
+ * 不许被当成「没有因由」。`local_denied`(本机 `PERMISSIONS_DISABLE_AUTO_MODE`)与 `org_denied`
2005
+ * (center deny)**分词就是为了让壳指不同的路**(改本机 env vs 找组织),消费端别把两者折在一起。
2006
+ */
2007
+ export type AutoModeUnarmedReason = "mode_not_auto" | "deployment_incapable" | "org_denied" | "local_denied" | "settings_denied" | "resolver_fault" | (string & {});
2008
+ /** 三代形共有的三位 —— server **≤7.56.0 只发这三位**(见 {@link PermissionModeAutoCapability})。 */
2009
+ interface PermissionModeAutoBase {
2010
+ /** 提交面按五词闭集收 `"auto"`(server 写的是字面量,恒 `true`)。 */
2011
+ accepted: true;
2012
+ /** 分类器席位真挂上了(桩 / 一次性 CLI 不挂席位时如实 `false`)。 */
2013
+ classifierSeat: boolean;
2014
+ /** **center 源在不在**,绝不冒充「你被授权了」—— 授权是 per-principal 的,部署级布尔对它说不了话。 */
2015
+ entitlementSource: boolean;
2016
+ [k: string]: unknown;
2017
+ }
2018
+ /**
2019
+ * `capabilities.permissionModeAuto` 的**两代形**(判别位 = `armed` 的**三态**)。
2020
+ *
2021
+ * 🔴 **武装三键(`intentArming` / `armed` / `reason`)是 server ≥7.57.0(S-80)才有的**,而本包声明的
2022
+ * 支持地板是 **3.0.0** ⇒ 每一台 7.x ≤7.56.0 的 server 都在承诺面内,它们**只发** {@link PermissionModeAutoBase}
2023
+ * 那三位(亲核 server tag `v7.50.0` / `v7.56.0` 的 `routes/capabilities.ts` 逐字确认)。
2024
+ * 所以 `armed` **不能**写成必填:写成必填会让
2025
+ * ```ts
2026
+ * if (!auto.armed) console.log(auto.reason.toUpperCase()); // 老 server 上 reason 根本不在场
2027
+ * ```
2028
+ * **编译通过、运行期炸**,而 spec 侧同样会把一台受支持 server 的**合法**响应判成非法。
2029
+ *
2030
+ * 🔴 正确读法是**三态**,不是二值:
2031
+ * · `armed === true` —— 此刻会武装;
2032
+ * · `armed === false` —— 此刻不会,`reason` **必在场**(按开集分支);
2033
+ * · `armed === undefined` —— **老 server,武装态不可知**。禁折成 `false`(那会把一台正在武装的
2034
+ * 7.50 部署渲成「auto 是 default 的别名」),该渲成「这台 worker 不报武装态」。
2035
+ *
2036
+ * 四位披露键**刻意不合成一个布尔**:合成后「这份二进制不认识 auto」与「认识但本机没有 entitlement 源」
2037
+ * 会得到同一个 `false`,而壳对这两种要做的事不同(前者别给这一档;后者给,但别宣称在筛)。
2038
+ */
2039
+ export type PermissionModeAutoCapability =
2040
+ /** **server ≤7.56.0**:只有三位,武装三键**整体缺席**(`armed` 缺席 = 武装态不可知)。 */
2041
+ (PermissionModeAutoBase & {
2042
+ intentArming?: undefined;
2043
+ armed?: undefined;
2044
+ reason?: undefined;
2045
+ model?: undefined;
2046
+ })
2047
+ /** **server ≥7.57.0** · 会武装。`model` = 分类器**配置**的模型路由;解不出时 server 不写这个键。 */
2048
+ | (PermissionModeAutoBase & {
2049
+ intentArming: boolean;
2050
+ armed: true;
2051
+ reason?: undefined;
2052
+ model?: string;
2053
+ })
2054
+ /** **server ≥7.57.0** · 不会武装 ⇒ `reason` 必在场(闭六词,按开集分支)。 */
2055
+ | (PermissionModeAutoBase & {
2056
+ intentArming: boolean;
2057
+ armed: false;
2058
+ reason: AutoModeUnarmedReason;
2059
+ model?: string;
2060
+ });
2000
2061
  export interface Capabilities {
2001
2062
  asyncRuns?: boolean;
2002
2063
  /** [1833] G6(server `src/http/routes/capabilities.ts` 的 `sideQuery` 位,恒 `true` —— runner 自带):
@@ -2288,6 +2349,31 @@ export interface Capabilities {
2288
2349
  * 「这个二进制认识这个键」——与 {@link permissionRulesRevoke} 的存在性信号同族,刻意不挂任何设施谓词。
2289
2350
  */
2290
2351
  approvalDecisionNote?: boolean;
2352
+ /**
2353
+ * #340(server ≥7.44.0,`routes/capabilities.ts` 的能力对象**硬编码 true**)—— live 回决口
2354
+ * `POST /v1/tool-approvals/:id/respond` 收 `persistRule.edited: true` 的**版本探测位**:
2355
+ * 「这次要落的规则是人在卡上**手改**的自由文本」,而不是候选表里的某一条。
2356
+ *
2357
+ * 🔴 **必须先探再渲那个可编辑输入框**:live 回决口的体校验是**非 strict** 的手写 parser,老 worker
2358
+ * 会把 `edited` 当未知键**静默丢掉**、然后按**候选文本**判 ⇒ 回一句 `rule_not_offered` —— 诚实,但人
2359
+ * 只会读成「我写错了」。位缺席 = 老 server,别渲这一格。
2360
+ * 🔴 **它不承诺「你这次一定落得下」**(与 {@link approvalDecisionNote} 同族,刻意不挂任何设施谓词):
2361
+ * 那是 per-call 的事实,由每次回执的 `rulePersisted` / `ruleRefusal` 逐次回答 ——
2362
+ * `edit-unsupported`(这张卡没有绑定锚 ⇒ **别再渲那个输入框**)与 `edit-rejected`(**改一下再来**)。
2363
+ * ⚠️ **车道在不在**由 {@link permissionRules} 那一位答(按调用方算),两位配对读才是完整判据。
2364
+ */
2365
+ respondFreeFormRules?: boolean;
2366
+ /**
2367
+ * design/377(server ≥7.46.0,同上硬编码 true)—— live 回决口收 `persistRule.batchOfferIndex` 的
2368
+ * **版本探测位**:「人勾了一条 `kind:"batch"` 的合取批」,选择键 = 帧上 `ruleOffers` 的下标。
2369
+ *
2370
+ * 🔴 **先探再渲 batch 兑付格**:老 worker 把本键当未知键丢掉后按「缺 `rule`」判 ⇒ 400 文本形拒
2371
+ * (诚实,但读不出「人勾了批」)。位缺席 ⇒ batch offer 只渲不兑。
2372
+ * 🔴 同样只答「这个二进制认识这个键」;这次兑不兑得动看逐次回执(成功时另带 `persistedRules` 复数键,
2373
+ * server ≥7.48.0 再带逐条归属锚 `persistedRuleAnchors` —— 那条 additive 加键**刻意不开第二个能力位**:
2374
+ * 它在同一条 batch 兑付通道上,消费方按键在不在读即可,再开一位只会让「批兑付在不在」有两个说话人)。
2375
+ */
2376
+ respondBatchRuleOffers?: boolean;
2291
2377
  /** E12 suggestNextPrompts 认词(`routes/capabilities.ts` 的能力对象 硬编码 true)。 */
2292
2378
  promptSuggestions?: boolean;
2293
2379
  /** PUT /v1/sessions/:id/policy 面(`routes/capabilities.ts` 的能力对象 `Boolean(sessionPolicyStore)`)。 */
@@ -2306,6 +2392,194 @@ export interface Capabilities {
2306
2392
  sendUserFileLedger?: boolean;
2307
2393
  /** GET /v1/workflows 列表面(`routes/capabilities.ts` 的能力对象 `Boolean(workflowRunStore)`;`workflows` 总位见上)。 */
2308
2394
  workflowsList?: boolean;
2395
+ /** device lane 探测位(server `routes/capabilities.ts:162`;design/device-executor-lane-v2 §4.8)——
2396
+ * **一个诚实对象或 `false`**,与 {@link fleet} / {@link workspace} 同族三态形。谓词 = `deps.deviceHub`
2397
+ * 在场,而那正是 `GET /v1/device/ws` 的 upgrade 处理器挂没挂的**同一个**判据(`server.ts` 的
2398
+ * `deps.deviceHub?.attach(server)`)⇒「说 yes ⟺ 设备连得上」是结构性的,executor 不必
2399
+ * trial-by-upgrade-404。三个字段各答一件 executor 在**首连之前**就必须知道的事:
2400
+ * · `protocolVersion` —— 本 server 说第几版(§5.6:不满足最低版 = 响亮 helloReject,**不静默降级**);
2401
+ * · `maxInflightPerDevice` —— per-device 在途上限(§5.5 背压;超额在云侧排队,到期 `device.busy`);
2402
+ * · `wsPath` —— upgrade 路径。**刻意上 wire** 而不让客户端硬编码:路径是 server 铸的 wire 契约的
2403
+ * 一部分,硬编码在别的仓里 = 把「改路径」变成一次跨仓破坏性变更。
2404
+ * 🔴 server **刻意不广告**设备台数 / 在线态:那是管理面(`/v1/devices/*`)的事,能力面暴露它等于给
2405
+ * 未鉴权探测送一个组织规模 oracle。 */
2406
+ deviceExecutor?: false | {
2407
+ enabled: true;
2408
+ protocolVersion: number;
2409
+ maxInflightPerDevice: number;
2410
+ wsPath: string;
2411
+ [k: string]: unknown;
2412
+ };
2413
+ /** 记忆**引擎**位(server `routes/capabilities.ts:210` = `projectMemoryEngineCapability(deps.memoryPosture)`,
2414
+ * 实现在 `src/memory-posture.ts:143`)—— 对象 = 本部署的记忆面**真点亮**,`false` = 暗。判据**逐字**是
2415
+ * boot 的 `memoryPosture`(`boot/stores.ts` 的单一推导点)的窄投影,与 operator 诊断面
2416
+ * `GET /v1/diagnostics/wiring` 的 `memoryPosture` 段同源 ⇒「诊断页说亮、能力位说暗」结构上不可能。
2417
+ * 🔴 与 {@link memory} / {@link memoryWrite} **不是**一回事:那两位说的是**退役的** MemoryStore HTTP
2418
+ * 动词(恒假,且会一直恒假);本位说的是**引擎接线**,它没有 HTTP 动词面 —— 记忆是模型在注入目录上的
2419
+ * 文件技能。所以本位为真**不**意味着有记忆读写端点可打(那正是 legacy 两位在否认的东西)。
2420
+ * 🔴 `vectorMode: null` = 这条腿**没有档位指示面**(`file` 引擎),**不是**「档位是词面」。 */
2421
+ memoryEngine?: false | {
2422
+ backend: "file" | "pg" | "tidb" | (string & {});
2423
+ vectorMode: "native" | "portable" | "lexical" | null;
2424
+ [k: string]: unknown;
2425
+ };
2426
+ /** 本部署的 **SQL 事务读语义**(server `routes/capabilities.ts:216` =
2427
+ * `projectSqlEngineCapability(deps.sqlEngineFacts?.())`,实现在 `src/sql-engine-posture.ts:57`;S-131)。
2428
+ * 判据**逐字**是驱动连接初始化**回读复核过**的那份事实(`plugins/sql-driver.ts` 的 `SqlEngineFacts`),
2429
+ * 与 operator 面 `GET /v1/diagnostics/wiring` 的 `sqlEngine` 段同源(那一段另有一个 `version`,纯排障料,
2430
+ * 刻意不进本位)⇒「诊断页说悲观、能力位说乐观」结构上不可能。
2431
+ * 🔴 `null` = 本部署**没有 SQL 后端**(env-only worker / local 文件后端),**不是**「读不出来」。
2432
+ * 🔴 `txnMode: null` = 这个引擎**没有该指示面**,**不是** `"optimistic"`。
2433
+ * 受众是运维与部署自述:一个多副本部署不登服务器就能答出「本仓的连接跑在什么读语义上」。 */
2434
+ sql?: null | {
2435
+ engine: "tidb" | "innodb" | "pg" | (string & {});
2436
+ isolation: string;
2437
+ txnMode: "pessimistic" | null;
2438
+ [k: string]: unknown;
2439
+ };
2440
+ /** **远端车道可 detach**(server `routes/capabilities.ts:233` = `Boolean(deps.runStore)`)—— 零新机制,
2441
+ * 说的就是既有的那条腿:`POST /v1/tasks/stream` 带请求头 `x-detach-on-disconnect: true` ⇒ 客户端断连
2442
+ * **不杀** run,它在 server 跑完;回来按响应头 `X-Task-Id` 走 `GET /v1/runs/:id` 与 `/events`
2443
+ * (durable 事件日志重放 + `Last-Event-ID` 续流)拿全离开期间的帧。
2444
+ * 谓词 = **部署半场**,逐字就是那条腿自己的前置判据(`routes/tasks.ts` 缺 runStore ⇒ 400
2445
+ * `request.precondition_unmet`「detached 的结果无处可查」);**per-request 半场(调用方必须带
2446
+ * `sessionId`)不在本位里** —— 那是每次调用自己的事,部署级布尔对它说不了话。
2447
+ * 🔴 **辖域只到远端车道**:本地车道的转后台归壳自己的判据,本位不覆盖、也不许被拿去禁本地。
2448
+ * 🔴 **不承诺** detach 期间流内审批的存活(那条另有 {@link approvals} / {@link streamApproval} 广告;
2449
+ * 本位为真而它们为假的部署上 detach 照常工作,只是断连那刻挂起的审批走 core 的 fail-closed 臂)。
2450
+ * 今天取值与 {@link asyncRuns} 相同是**诚实记账不是冗余**:那一位问「异步 run API 在不在」,本位问
2451
+ * 「壳的转后台键在远端车道该不该映射成 detach」。 */
2452
+ sessionBackgroundable?: boolean;
2453
+ /** 中途翻转 verb `POST /v1/runs/:id/memory/capture-optout` 的在场位(server `routes/capabilities.ts:237`
2454
+ * = `Boolean(deps.runStore)`;design/383 S-8①)。谓词与 {@link sessionBackgroundable} 同源:该 verb 需要
2455
+ * 持久 run 账面做属主门 + 活流句柄。缺席(老 worker)⇒ 壳**不渲入口**(假 affordance 纪律)。
2456
+ * 🔴 位为真只保证**端点在场**,不保证这一次是 live —— 非 live ⇒ 409 指路声明形。 */
2457
+ runMemoryCaptureOptOut?: boolean;
2458
+ /** 治理携出 bundle 两口 `POST /v1/memory/{export,import}`(operator lane)的位
2459
+ * —— server `routes/capabilities.ts:261` = `Boolean(deps.memoryBundleExport && deps.memoryBundleImport)
2460
+ * && deps.config.operatorPrincipals.length > 0`(#264 v2-c)。
2461
+ * ⚠️ 位为真**不**保证后端真有 bundle 复合面:server 的两只 SQL 记忆孪生未实现
2462
+ * `exportSnapshotOf`/`importBundleCommit`,那时 core 响亮拒 `memory.export_incomplete`。 */
2463
+ memoryBundle?: boolean;
2464
+ /** 出处 / 抹除合规两口 `GET /v1/memory/entries/:entryId/provenance` · `POST /v1/memory/erase`
2465
+ * (operator lane)的位 —— server `routes/capabilities.ts:273` = `Boolean(deps.memoryCompliance) &&
2466
+ * operatorPrincipals.length > 0`(design/316 件③)。第一项在**挂载期**判后端有没有控制面归属(缺则整口不挂)。
2467
+ * ⚠️ 与 {@link memoryBundle} **不同源**:一个部署可以有 bundle 复合面而没有控制面归属,反之亦然。 */
2468
+ memoryCompliance?: boolean;
2469
+ /** 外源标记人面三口 `GET /v1/memory/origin/external` · `GET /v1/memory/origin/clearances` ·
2470
+ * `POST /v1/memory/origin/entries/:entryId/clear`(operator lane)的位 —— server
2471
+ * `routes/capabilities.ts:287` = `Boolean(deps.memoryOriginFace) && operatorPrincipals.length > 0`
2472
+ * (design/316 件②)。
2473
+ * ⚠️ 与 {@link memoryCompliance} **同判据不同位**:两族今天查后端的同一个面(`controlPlaneRoot`),
2474
+ * 但它们是**两个产品面**(合规问询/抹除 vs 外源审计/清标),一个部署可以只想开其中一族 ——
2475
+ * server 刻意不合并,即使今天两位恒同值。
2476
+ * ⚠️ 位为真**也不**保证 `GET …/external` 的答案完备:server v1 没有 scope 枚举读面,答案只覆盖调用方
2477
+ * 点名的那些 scope,**空答绝不读作「本店干净」**。 */
2478
+ memoryOrigin?: boolean;
2479
+ /** consolidation 阀门两口 `POST /v1/admin/memory/consolidation/run` ·
2480
+ * `GET /v1/admin/memory/consolidation`(operator lane)的位 —— server `routes/capabilities.ts:301`
2481
+ * = `Boolean(deps.memoryConsolidation) && operatorPrincipals.length > 0`(design/378 D4)。
2482
+ * 第一项 ⟺ `MEMORY_CONSOLIDATION_DRIVER=on` **且**座解析成功(座配不出 / 引擎没接线 / 后端无控制面
2483
+ * 归属 / provenance=off 四形都在**启动期**被拒,那些机器根本起不来)。
2484
+ * 🔴 位为假时两口是 **404**(整域不挂)**而不是 501** —— 消费端别按 501 分支(阀门未开是一句运维表态,
2485
+ * 不是部署能力缺失);与 {@link memoryOptOutGrant} 的 501 分家。
2486
+ * ⚠️ 位为真不保证这一轮跑得完:模型失败 / fuse 残留 / 被 park 都是运行期事实,落在收执的 `outcome` 上
2487
+ * (200 + 一个非 converged 的停因)。 */
2488
+ memoryConsolidationDriver?: boolean;
2489
+ /** memory-capture opt-out **授权表**管理四口 `/v1/admin/memory-optout[/default|/:principal]`
2490
+ * (operator-only)的位 —— server `routes/capabilities.ts:307` = `Boolean(deps.memoryOptOutGrant) &&
2491
+ * operatorPrincipals.length > 0`(design/383 S-2)。第一项 = 授权表在场(SQL 后端有;**local 车道刻意无源**
2492
+ * ⇒ 四口 501 `capability.memory_optout_grant_required`)。
2493
+ * 🔴 位为假时是 **501**(换部署形态),与 {@link memoryConsolidationDriver} 的 404(开旋钮)分家。 */
2494
+ memoryOptOutGrant?: boolean;
2495
+ /** `permissionMode: "auto"` 的**缺省态披露**(server `routes/capabilities.ts:463`;裁决在
2496
+ * `src/auto-mode-face.ts` 的 `judgeAutoModeArming`)。**四项刻意不合成一个布尔** —— 合成后
2497
+ * 「这份二进制不认识 auto」与「认识但本机没有 entitlement 源」会得到同一个 `false`,而壳对这两种要做的
2498
+ * 事不同(前者别给这一档;后者给,但别宣称在筛)。
2499
+ * · `accepted` —— 提交面按五词闭集收 `"auto"`(恒 `true`,server 写的是字面量);
2500
+ * · `classifierSeat` —— 分类器席位真挂上了(server 读装配面递来的 `autoModeFace.seatMounted`,
2501
+ * 桩 / 一次性 CLI 不挂席位时如实 `false`);
2502
+ * · `entitlementSource` —— **center 源在不在**,绝不冒充「你被授权了」(授权是 per-principal 的,
2503
+ * 部署级布尔对它说不了话);自 S-80 起它是**三态里的一格**,`false` 不再意味着 auto 不武装;
2504
+ * · `intentArming` —— 这对 server+core 走的是哪套极性:`true` = core #521 的**意图武装式**
2505
+ * (用户开 + org 拒),`false` = 旧式「org 授予」。壳据此渲「无 center 也能 auto」与否;
2506
+ * · `armed` —— **此刻会不会武装**(按当前运行时真值答;旧式 core 下按旧谓词答,不得假阴);
2507
+ * · `reason` —— **仅** `armed:false` 时在场,server 闭六词集(`AUTO_MODE_UNARMED_REASONS`)。
2508
+ * `local_denied` = 本机 `PERMISSIONS_DISABLE_AUTO_MODE`,`org_denied` = center deny ——
2509
+ * **分词就是为了让壳指不同的路**(改本机 env vs 找组织)。按开集读:server 已经从四词长到六词。
2510
+ * · `model` —— 分类器**配置**的模型路由(core 的 role 回落链 `classifier → summarize → default`);
2511
+ * 解不出时 server **不写这个键**(把 core 的拒句当数据记进日志,读面不 500)。
2512
+ * 🔴 查询串 `?permissionMode=<五词>` 把「本次意图」折进裁决(缺席 = 按 auto 意图答);五词闭集之外
2513
+ * server 回 **400 `request.field_invalid`**(读面也不静默折词)。 */
2514
+ permissionModeAuto?: PermissionModeAutoCapability;
2515
+ /** READ 容纳面的**生效档**披露位(server `routes/capabilities.ts:484` = `deps.config.readFace ?? null`;#A4)。
2516
+ * 值 = 本部署**显式**表态的那一档(env `READ_FACE`,或 config-center 的 `readFace.face` —— 两条腿落的是
2517
+ * 同一个 config 键,所以这一位对「组织下发」与「本机 env」不做区分,它说的是**最终生效值**)。
2518
+ * 🔴 `null` = **本部署没有钉这一档**,由引擎默认接管。server 刻意**不**把 `null` 折成 `"roots"`:
2519
+ * 在这条轴上从不复制上游默认 —— 把引擎默认抄进 wire 会在 core 改默认的那天变成一句谎,而消费端无从察觉。
2520
+ * 🔴 **最小披露**:deny 表(pattern 表 / 内建档位 / 排除行名)**不上**能力面 —— 那是策略内容。
2521
+ * ⚠️ 与 `TaskRequest` 无关:这条轴上**没有** per-request 接收臂(部署 env 席,负控钉在
2522
+ * `test/capabilities-full.test.ts` 的「A4 / [4073] readFace 定界」那组)。 */
2523
+ readFace?: "open" | "roots" | (string & {}) | null;
2524
+ /** 调用方给的 `cwd` **到底兑不兑现**的精确位(server `routes/capabilities.ts:541` =
2525
+ * `cwdHonored(deps.config) || deviceCwdHonored(deps.config)`)。真 ⟺ 单用户 `host` lane **或**
2526
+ * `device` lane(路径落在**发起者自己的**机器上,host 闸防的跨租户宿主穿越在那儿结构性不存在)。
2527
+ * 谓词与提交侧 `boot/resolve-spec.ts` 的写侧闸**逐字同源** —— 它漂了就是「说没有其实有」。
2528
+ * 消费端读法:**优先读本位**;缺席(老 worker)⇒ 按 {@link projectContext} 兜底 = 本位出现前的逐字行为。 */
2529
+ callerCwd?: boolean;
2530
+ /** A2A **client** 读面 `GET /v1/sessions/:id/a2a` 在场位(server `routes/capabilities.ts:555`,恒 `true`;
2531
+ * DESIGN-269 车1 件4)。与 {@link mcp} 同姿势的无条件位:没配 peer 时它回一个**诚实的空面板**,
2532
+ * 所以根本没有 501 路可门。
2533
+ * 🔴 与 {@link a2aInjection} **刻意两位不同谓词**(一位诚实不了两件事):本位答「读面在不在」。 */
2534
+ a2a?: boolean;
2535
+ /** 本部署**是否兑现**调用方送的 `body.a2aPeers`(server `routes/capabilities.ts:556` =
2536
+ * `a2aInjectionHonored(deps.config)`,属主 `src/task-a2a.ts`)。三条否决全归那只函数:
2537
+ * 单用户 ∧ `a2a` 未锁 ∧ 合规允许。
2538
+ * 🔴 `false` 的行为是**字段门**形:请求照样 200,字段被 **warn + 忽略**(不是 4xx)——
2539
+ * **例外**是配置被 lock 时,提交口 400 `config.locked_key`(那条 veto 正是让「说 yes ⟺ 路真能用」
2540
+ * 在这一形上仍成立的东西)。 */
2541
+ a2aInjection?: boolean;
2542
+ /** server-as-peer 半场的**旋钮实况**(server `routes/capabilities.ts:564` =
2543
+ * `deps.config.a2aServe !== undefined`;DESIGN-269 车2)—— 这台 worker 是否作为一个 A2A agent 对外存在。
2544
+ * `true` ⟺ `A2A_SERVE_ENABLED` 开 ⟺ `GET /.well-known/agent-card.json` 与 `POST /v1/a2a` 两条路由存在;
2545
+ * `false` ⟺ 两条都 **404**(设计稿 §3.3「卡都不发 = 对外不存在」)。缺席即关。
2546
+ * ⚠️ **辖域 = 路由在不在,不是「每个方法都能跑」**:`message/send` / `tasks/get` 还需要 durable run store
2547
+ * (缺它时两个方法回具名 JSON-RPC `-32004`,不是静默降级)。server 刻意不把 runStore 折进本位 ——
2548
+ * 那会造出「卡还在发、位却是 false」这种更糟的谎。 */
2549
+ a2aServe?: boolean;
2550
+ /** 后台 agent **名册读面** `GET /v1/agents/roster` 的位(server `routes/capabilities.ts:640` =
2551
+ * `Boolean(deps.backgroundAgentStore)`;#A1)。谓词**逐字**是那条路由的 501 门 ⇒「说 yes ⟺ 路由真能用」
2552
+ * 是结构性的。
2553
+ * ⚠️ **辖域 = 列举面**:名册回的是 content-free 投影(handle / name / agentType / status / 三个时间戳);
2554
+ * 要子代**产物正文**走 `/v1/runs/:id/subagents/:handle/output`(那条口有它自己的谓词 {@link subagentOutput})。 */
2555
+ agentRoster?: boolean;
2556
+ /** **托管留存**的部署事实(server `routes/capabilities.ts:654` = `retentionAdvertisement(deps.config)`;#270 车2)。
2557
+ * `null` = sweep lane 关着(缺省);在场 = `{mode, maxAgeDays}` —— 两格都是**部署事实不是秘密**
2558
+ * (策略数值本来就该告诉用户「你的数据留多久」)。`mode: "audit-only"` = 照跑照判、只记审计行、
2559
+ * **不调任何破坏性方法**;`"enforce"` = 真删。
2560
+ * 🔴 谓词只看 config 而不合取「执行器在场」是**结构性**的,不是疏漏:`intervalSec > 0` 而没有真执行器的
2561
+ * 那台机器**根本起不来**(`boot/retention-lane.ts` 的 `assertRetentionLaneWirable` 在 boot 期就拒了)。 */
2562
+ retention?: null | {
2563
+ mode: "audit-only" | "enforce" | (string & {});
2564
+ maxAgeDays: number;
2565
+ [k: string]: unknown;
2566
+ };
2567
+ /** 自编排(workflows)的**拒因披露**(server `routes/capabilities.ts:739`;S-81)。**两项刻意不合成一个
2568
+ * 布尔**(与 {@link permissionModeAuto} 同判据):
2569
+ * · `engineCan` —— core 的 `workflowsCapability`(硬化脚本 runner ∧ 治理基线)。`false` = 这台机器压根
2570
+ * 没有工作流引擎,壳别给这一格;
2571
+ * · `denial` —— **部署级准入**拒因闭集(今日唯一成员 `"entitlement_resolver_absent"`),`null` = 这一层
2572
+ * 不拒。非 `null` = 引擎在、但本部署对**任何** principal 都授不出去(半配置:阀门开着而配不出来)——
2573
+ * 壳该提示运维接 config-center(或关掉 `SELF_ORCHESTRATION_ENABLED`),**而不是提示用户重试**。
2574
+ * 🔴 `denial: null` **不**等于「你被授权了」:授权是 per-principal 的(core 逐 principal 解 `allowWorkflows`),
2575
+ * 部署级布尔对它说不了话 —— 与 `permissionModeAuto.entitlementSource` 同一条辖域线。
2576
+ * 🔴 与 {@link workflows} 的关系:那一位是 `engineCan × 准入` 的**乘积**(「说 yes ⟺ 这台机器上真跑得起来」),
2577
+ * 本位把两个因子拆开给壳看拒因。 */
2578
+ workflowsGate?: {
2579
+ engineCan: boolean;
2580
+ denial: "entitlement_resolver_absent" | (string & {}) | null;
2581
+ [k: string]: unknown;
2582
+ };
2309
2583
  [k: string]: unknown;
2310
2584
  }
2311
2585
  /** One scenario's detail card (`GET /v1/capabilities/scenarios/:name` — server handler = the
@@ -2425,6 +2699,24 @@ export interface PendingCheckpoint {
2425
2699
  match: "exact" | "prefix";
2426
2700
  command: string;
2427
2701
  }>;
2702
+ /**
2703
+ * S-134(server ≥7.46.0;core 5.58.0 design/375)—— 上一条**退役键的换形继任**:同一条 core 契约
2704
+ * (`PendingAction.ruleOffers` ≡ 同步腿 `AskRequest.ruleOffers`),形是判别联合 `single | batch`,
2705
+ * 逐字见 {@link import("./resources/tool-approvals.js").RuleOffer}。
2706
+ * server ≥7.46.0 的行上**只铸新键**;pre-5.58 的老行按新窄读逐条不合 ⇒ 整格「无供给」(不做兼容读)。
2707
+ *
2708
+ * 🔴 **本腿的下标不是选择键**(server `checkpoint-store-sql.ts` 顶注逐字,必须随类型搬到消费端眼前):
2709
+ * 耐久腿的投影对形不合的 offer 是**逐条丢弃并压紧**的 ⇒ 中间剔除会让后面的下标整体前移;它站得住
2710
+ * **只因为本腿没有兑付口**(`POST /v1/approvals/:sessionId/decide` 的体不带规则位)。⇒ 拿它当
2711
+ * `persistRule.batchOfferIndex` 回兑 = 人点的第 k 个与服务端兑的第 k 个指向两条不同规则。
2712
+ * 活卡帧腿相反({@link import("./resources/tool-approvals.js").ToolApprovalFrame.ruleOffers}):
2713
+ * 那侧 server 是纯前缀截、零逐条丢弃,下标恒等于 core 的 offer index,兑付真发生在那条腿上。
2714
+ *
2715
+ * 🔴 **display/triage-only** 与 {@link ruleSuggestions} 同律;**缺席 = 真的没有供给**(规则车道没武装 /
2716
+ * 命令说不出规则 / 规则清不掉这只 ask / 老行),不是「投影层漏了」—— 后者正是 server 把这一格搬上
2717
+ * 耐久腿要修的病。恒不铸 `null`、不铸 `[]`。
2718
+ */
2719
+ ruleOffers?: RuleOffer[];
2428
2720
  /** server 7.16.0([3684]②):出身徽记——这道门是运维治理层强制的。判据属主=`governanceOriginOf`
2429
2721
  * (行上取证格 ∧ 部署姿态合取),它是 **`/v1/approvals` 行 + 409 体**两面的单一属主;活卡帧
2430
2722
  * `ToolApprovalFrame.governanceForced` 是**语义同族、判据不同源**(进程内治理标记表)——同一只 ask
@@ -3067,4 +3359,5 @@ export interface WiringDiagnostics {
3067
3359
  static: WiringManifest;
3068
3360
  serverGates: ServerWiringGates;
3069
3361
  }
3362
+ export {};
3070
3363
  //# sourceMappingURL=types.d.ts.map