@sema-agent/sdk 6.13.0 → 6.15.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.
@@ -1,9 +1,14 @@
1
1
  /**
2
- * rules — **持久权限规则**的导入面(#154 车二 / design/179 §7;server `src/http/routes/rules.ts`)。
2
+ * rules — **持久权限规则**的导入面 + 撤销面(#154 车二 / design/179 §7 + design/203 §2;
3
+ * server `src/http/routes/rules.ts`)。
3
4
  *
4
5
  * `ccImportPrepare(layers)` → POST /v1/rules/cc-import/prepare — 读交上来的 CC settings 层,回**预览** +
5
6
  * 一张一次性票(还没有任何规则落库)
6
7
  * `ccImportRedeem(ticket)` → POST /v1/rules/cc-import/redeem — 原子消费票 → 确认 → 批量兑付进店
8
+ * `list(params?)` → GET /v1/rules — 列自己名下**活着**的规则(keyset 分页,
9
+ * 游标绑 rev)
10
+ * `revoke(input)` → DELETE /v1/rules — 按 `(rule, scope)` **内容**撤销
11
+ * (**路径上没有 `:id` 段**)
7
12
  *
8
13
  * 🔴 **两步不是仪式,是同意协议的形**:第一步只产生「如果确认会发生什么」的预览;只有第二步够得着写面。
9
14
  * 中间那张票是 **principal 绑定 / 有期(10 分钟)/ 一次性原子消费 / 载荷绑定** 的 —— 它不是可缓存的凭据,
@@ -14,9 +19,16 @@
14
19
  * 所以别把它当可随手重放的预览接口:预览一次、呈给人看、然后兑付或丢弃。(超候选帽的拒绝会 best-effort
15
20
  * 收掉刚落的那条记录 —— 收不掉只是留一条不影响任何判决的孤儿行,但那也不是「零残留」的承诺。)
16
21
  *
17
- * 🔴 **lane = principal,不是 operator**:用户导的是**他自己**的规则,一条规则的语义就是「这个人自己说过
18
- * yes」。运维在这条路上没有位置(他既不该替租户扩权,也不该被要求代人点确认);一个 operator 要给自己
19
- * 导规则,用他自己的 principal 走同一条路即可。
22
+ * 🔴 **导入两口 lane = principal,不是 operator**:用户导的是**他自己**的规则,一条规则的语义就是「这个人
23
+ * 自己说过 yes」。运维在这条路上没有位置(他既不该替租户扩权,也不该被要求代人点确认);一个 operator 要
24
+ * 给自己导规则,用他自己的 principal 走同一条路即可。连 operator 旁路都不给。
25
+ *
26
+ * 🔴 **撤销面两口多一条 operator 越权域,而这不是上面那句话的例外、是它的对偶**:`principal` 让一个显式
27
+ * 列名的 operator 读**或**收回任一租户的规则。**方向决定授权** —— 收回是**收紧**(core `removePersistedRule`
28
+ * 头注逐字:a host may narrow on a user's behalf, it may not widen),而多租户管理员能回收权限正是撤销面的
29
+ * 本义。读那一半同样只开给 operator(规则文本含命令样式,跨 principal 读是信息面泄露),且**不开**第三方
30
+ * principal 相互读。判据是**显式名单**:`OPERATOR_PRINCIPALS` 为空 = **谁都不是** operator(不是「全员」),
31
+ * 也绝不从 service token 推断身份 —— 一个共享的部署凭证不是一个人。
20
32
  *
21
33
  * 🔴 **只读 allow 桶**:deny/ask 桶是**收紧**方向,有自己的通道 —— 从一条放松的车道导进来是走错门。
22
34
  * 预览的 `uncovered` 把「本版没读的两层」写进 TYPE(两键记录,不是列表):一份只报了自己读过的层的预览,
@@ -29,11 +41,17 @@
29
41
  * 日志)。唯一可分的是 503 `state.rule_import_retry`(→ {@link import("../errors.js").ServiceStateError}):
30
42
  * 那一支意味着**票还在**,原样重试即可,与「这张票没了」是相反的处置。
31
43
  *
32
- * 🔴 **部署位:整条车道默认关**(server `PERMISSION_RULES_ENABLED` 默认 false)+ 需真装配规则店 ——
33
- * 缺一 ⇒ 两口都 501 `capability.rule_store_required`(→
44
+ * 🔴 **部署位分两段读**(codex 对抗复审 [high],亲读 server `config.ts` 的 `boolEnv` 默认值验真 ——
45
+ * 旧文只写「默认关」,自 server 7.12.0 起是**假话**):`PERMISSION_RULES_ENABLED` 在 **server ≤7.11.0
46
+ * 默认 `false`(opt-in)**,自 **7.12.0 起默认 `true`(opt-out)**。所以「运维没表态」在新旧两代 server 上
47
+ * 是**相反**的结局 —— 显式写 `false` 才是关。⚠️ 连带后果(server boot 期为此专门加了休眠行审计):
48
+ * 一台旧部署里因为旋钮关着而**躺着没生效**的持久规则,升到 7.12.0 之后会随默认 ON **一起激活**。
49
+ * 车道还需真装配规则店 —— 旋钮与店缺一 ⇒ **四口全部** 501 `capability.rule_store_required`(→
34
50
  * {@link import("../errors.js").CapabilityUnavailableError}),同一条谓词也让审批帧上不带 `ruleSuggestions`。
35
- * `/v1/capabilities` 上**今天没有**这一族的能力位,所以壳只能按「面在不在」渲染:发一次看 501,或读帧上有没有
36
- * 候选 —— 别按 server 版本号猜。
51
+ * 🔴 **更正(6.14.0):旧文写「`/v1/capabilities` 上今天没有这一族的能力位」,已作废** ——
52
+ * `capabilities.permissionRules` 就是这一位,且它与这台 server **所有**规则口的 501 是**同一条**谓词
53
+ * (说 yes ⟺ 它有的那些口全都活,不是「有一口活」)。**按它 gate,别 trial-by-501**,更别按版本号猜。
54
+ * ⚠️ 面的条数随 server 版本长(撤销面两口自 7.12.0 起才有),本位说的是「车道在不在」而非「有几条口」。
37
55
  */
38
56
  import type { Transport } from "../transport.js";
39
57
  /** 本版读的三个用户可编辑 settings 层(core `ImportedSettingsLayer`)。 */
@@ -145,6 +163,137 @@ export interface CcImportResult {
145
163
  export interface CcImportRedeemResult {
146
164
  result: CcImportResult;
147
165
  }
166
+ /**
167
+ * 一次 add 的因果身份(core `RuleDot`)。
168
+ *
169
+ * 🔴 **按身份比,不按因果序比**:不同副本铸的单点之间没有序可比。`counter` 只在**同一个 `actor` 内**
170
+ * 单调,跨 actor 比大小是无意义的;它也不是时间戳、不是排序键 —— 当不透明二元组用。
171
+ */
172
+ export interface RuleDot {
173
+ /** 铸出这次 add 的副本身份。 */
174
+ actor: string;
175
+ /** 该副本铸这一点时的单调计数(**仅**同 actor 内可比)。 */
176
+ counter: number;
177
+ }
178
+ /**
179
+ * 一次 add 的来源(core `RuleAddOrigin`)。**按 add 存,绝不跨 dot 折叠** —— 折过的来源没法跟着某一个
180
+ * 单独被删掉的 dot 走。
181
+ *
182
+ * `user` = 审批卡上点的「不再询问」;`imported-cc` = 走 CC settings 导入道兑付进来的;`starter` = 部署
183
+ * 预置。wire 上是闭集,读的时候仍然带 default 臂(词表属主在引擎侧)。
184
+ */
185
+ export type RuleAddOrigin = "user" | "imported-cc" | "starter";
186
+ /**
187
+ * 一条规则的**一次** add(core `RuleAdd`)。
188
+ *
189
+ * 🔴 **这是一个真集合,不是标量**:同一个 `(rule, scope)` 可以被批准过多次(不同 dot、不同来源、不同
190
+ * 时刻),而一条规则**活着**的判据是它至少有一次 add 没被墓碑盖掉。折成一个 `addedAt` 会让「这条规则是
191
+ * 我导进来的还是我点卡点出来的」在治理面上不可分 —— 而那恰恰是唯一需要分清的地方。
192
+ */
193
+ export interface RuleAdd {
194
+ dot: RuleDot;
195
+ origin: RuleAddOrigin;
196
+ /** 这次 **add** 的记录时刻(引擎盖的 ISO-8601)。它记的是 add 不是规则:多 add 的规则有多个这种时刻。 */
197
+ createdAt: string;
198
+ }
199
+ /**
200
+ * `GET /v1/rules` 列出来的一条**活着**的持久 allow 规则(server `PersistedRuleWireRow`)。墓碑已折算 ——
201
+ * 这里的每一行在 {@link RuleListResult.rev} 那一刻都是活的。
202
+ *
203
+ * 🔴 `scope` 是**判别式串**(`global` / `project:<root>`),**不是**导入道说的 {@link RuleScope} 对象:
204
+ * 它就是撤销体想要回去的那串字节,所以**原样回传**,别拿解析后的形重新序列化(拼法等价但不逐字相同的
205
+ * root 什么都匹配不上,而且会得到一个笑呵呵的 `no-op`)。
206
+ *
207
+ * 🔴 规则车道**只有 allow**:deny/ask 是收紧方向,有自己的通道,永远不会出现在这里。
208
+ */
209
+ export interface PersistedRule {
210
+ /** 规范规则文本 —— `Bash(git status)`(exact)或 `Bash(git status:*)`(prefix)。撤销时**原样**回传。 */
211
+ rule: string;
212
+ /** 作用域判别式串:`global`,或 `project:<root>`(root **非空**)。撤销时**原样**回传。 */
213
+ scope: string;
214
+ /** v1 规则车道只说这一个工具。字段留着是为了下一版能不改形地加员 —— **读它**,别假定。 */
215
+ tool: "Bash";
216
+ /** `exact` = 只这一条命令;`prefix` = 词边界前缀。(core 给 v2 预留了 `wildcard`,现役任何版本都不产。) */
217
+ match: "exact" | "prefix";
218
+ /** 匹配器**真正**拿去比的东西:铸规则时从 `rule` 里解出来存下的,省得每个消费端各自重解一遍。
219
+ * 信它 + `match`,别信你自己对 `rule` 的解析。 */
220
+ command: string;
221
+ /** 这条规则**全部活着的** add(见 {@link RuleAdd} —— 真集合,刻意不折叠)。 */
222
+ adds: RuleAdd[];
223
+ }
224
+ /**
225
+ * `rules.list()` 的 200 体。
226
+ *
227
+ * `nextCursor` **缺席 = 这是最后一页**(没有空串哨兵)。`rev` 是规则桶的 OCC 版本,游标绑着它 ——
228
+ * 拿旧游标翻页会被**拒**,而不是静默从头开始。
229
+ */
230
+ export interface RuleListResult {
231
+ /** 活着的规则,按 `(scope, rule)` 字典序 —— 由 server 定的确定性序(keyset 分页全靠它)。 */
232
+ rules: PersistedRule[];
233
+ /** 规则桶的 OCC 版本。🔴 **桶局部**:两位租户各有一条规则时两边都读到 `rev: 1` ——
234
+ * 它不是全局时钟,跨 principal 之间不可比。 */
235
+ rev: number;
236
+ /** 下一页的不透明 base64url 游标。**缺席 ⇒ 没有下一页**。原样回传,别解析、别自己铸。 */
237
+ nextCursor?: string;
238
+ }
239
+ /**
240
+ * `rules.list()` 的查询入参(纯客户端调用参数 —— wire 上它们是 path 的 query parameters)。
241
+ */
242
+ export interface RuleListParams {
243
+ /**
244
+ * 🔴 **operator 越权域**:读**别人**名下的规则。缺席(或等于自己的 principal)= 读自己的,零授权提问。
245
+ * 给别人的名字则**必须**是 `OPERATOR_PRINCIPALS` 里显式列名的身份,否则 403 `auth.operator_only`
246
+ * (**空名单 = 谁都不是**,不是「全员」;也绝不从 service token 推断 —— 一个共享部署凭证不是一个人)。
247
+ * 规则文本里含命令样式,跨 principal 读是信息面泄露,所以**不开**第三方 principal 相互读。
248
+ */
249
+ principal?: string;
250
+ /** 只看一个作用域:`global` 或 `project:<root>`(root **非空**)。读不出形 ⇒ 400
251
+ * `request.query_invalid`,**不会**被当成「没过滤」—— 那会把一次「只看这个项目」悄悄变成全量列举,
252
+ * 而调用方会照单全收当成该项目的清单。过滤按**规范形**比对。 */
253
+ scope?: string;
254
+ /** 页大小。**夹取**(非数/越界一律夹进 1..200)而不是拒绝 —— 一个分页参数写错不该让治理面整个打不开。
255
+ * 缺省 50。 */
256
+ limit?: number;
257
+ /** 上一页的 {@link RuleListResult.nextCursor},**原样**。见 {@link RulesResource.list} 的游标段。 */
258
+ cursor?: string;
259
+ }
260
+ /** `rules.revoke()` 的请求体。规则**按内容**寻址 —— 这条面上下没有任何 id。 */
261
+ export interface RuleRevokeRequest {
262
+ /** 规范规则文本,**逐字**照 {@link PersistedRule.rule}。 */
263
+ rule: string;
264
+ /** 作用域判别式串,**逐字**照 {@link PersistedRule.scope}(`global` / `project:<非空 root>`)。 */
265
+ scope: string;
266
+ /** operator 越权域:替**别人**收回。缺席(或自己的 principal)= 收自己的。判据同读半场。 */
267
+ principal?: string;
268
+ }
269
+ /**
270
+ * `rules.revoke()` 的 200 体。
271
+ *
272
+ * `removed` = 落了墓碑;`no-op` = 没匹配上(幂等重删,或本来就没有 —— **刻意不是 404**,那会是一台
273
+ * 存在性 oracle)。**两支都带 `stillLive`**,键集刻意同形,消费端一套分支读得通。
274
+ */
275
+ export interface RuleRevokeResult {
276
+ /** 这次调用有没有落墓碑。`no-op` 对「这条规则曾经存在过吗」**什么都没说** —— 别渲成「找不到」。 */
277
+ status: "removed" | "no-op";
278
+ /** 操作后规则桶的 OCC 版本。 */
279
+ rev: number;
280
+ /**
281
+ * 🔴 `true` = 这条规则**仍然活着**:add-wins 之下,本次调用期间又落了一次批准。
282
+ * **没读它之前别对人说「规则已经没了」。**
283
+ * `no-op` 那一支也带它,理由同族:引擎按初始快照就回 `no-op`、不做读回,所以并发批准会让规则活着而
284
+ * 动词报「没什么可删」。
285
+ *
286
+ * 🔴 **两个真值的证明力不对称,而这条不对称在引擎里、不在这里**(codex 对抗复审 [high],亲读 core
287
+ * `removePersistedRule` 验真):`true` 是**正证据**(真的观察到它还活着);`false` 只是「没有它还活着
288
+ * 的证据」—— `removed` 那一支的确认读回被引擎包在一个 `catch { stillLive = false }` 里,于是**店抖动
289
+ * 时**回出来的 `{status:"removed", stillLive:false}` 与一次真验证过的撤销**逐字节相同**。
290
+ * (`no-op` 支没有这个洞:那次读回是 server 自己做的,失败就让它抛 500,不编答案。)
291
+ * 处置:见 `true` 就当真;而当「它到底没了没有」**要紧**时(运维收回一条常驻放行),用
292
+ * {@link RulesResource.list} 对账,别把 `false` 当成证明。已作为上游请托登记(不确定该是它自己的一个
293
+ * 状态,而不是折进 `false`)。
294
+ */
295
+ stillLive: boolean;
296
+ }
148
297
  export declare class RulesResource {
149
298
  private readonly t;
150
299
  constructor(t: Transport);
@@ -171,5 +320,62 @@ export declare class RulesResource {
171
320
  ccImportRedeem(ticket: string, opts?: {
172
321
  signal?: AbortSignal;
173
322
  }): Promise<CcImportRedeemResult>;
323
+ /**
324
+ * `GET /v1/rules` —— 列出一位 principal 名下**活着**的规则(墓碑已折算),keyset 分页。
325
+ *
326
+ * 序 = `(scope, rule)` 字典序,由 **server** 定死(core 的 `list()` 不承诺顺序)—— keyset 分页的全部
327
+ * 前提就是「同一份数据每次以同一个顺序出现」。
328
+ *
329
+ * 🔴 **游标绑 `(rev, principal, scope)`,对不上是「拒」不是「重来」。** 规则集是**整份读**的,所以一页
330
+ * 之内没有撕裂;撕裂发生在**两页之间** —— 第一页之后有人加了或删了一条,第二页的 keyset 起点就落在
331
+ * 一份不同的集合上,结果是静默漏行或重行。拿一个在别的 rev / 别的 principal / 别的 scope 过滤上铸的
332
+ * 游标来翻页 ⇒ 400 `request.query_invalid`(体里带当前 `rev`),**丢掉游标从头列**即可。静默重置的代价
333
+ * 是客户端把第二页当成「接着上一页」,治理面上于是出现一份既漏行又重行的清单,而没有任何人知道。
334
+ *
335
+ * 🔴 **翻页要翻完**:`nextCursor` 缺席才是终点。半途停下拿到的是**一份不全的清单**,而这条面的消费者
336
+ * (治理视图)恰恰最不能拿不全的清单当全量。
337
+ *
338
+ * 越权读见 {@link RuleListParams.principal}(403 `auth.operator_only`);未接规则店 ⇒ 501
339
+ * `capability.rule_store_required`(→ {@link import("../errors.js").CapabilityUnavailableError})。
340
+ * GET ⇒ SDK 的重试矩阵**会**自动重试瞬时失败(纯读,无副作用)。
341
+ *
342
+ * 🔴 **版本偏斜:gate 用 `capabilities.permissionRulesRevoke`,不是 `permissionRules`**(codex 对抗复审
343
+ * R2 [medium] 提出,上游采纳后 server 7.12.0 加位)。`permissionRules` 比撤销面**早出生** —— 一台
344
+ * 7.11.0 worker 完全可以报 `true`(导入两口真的活着)而这两口根本没被路由;那个位已发布的成文语义
345
+ * 修不动,所以上游**加了一位**而不是追改旧位。判据两段:
346
+ * · `permissionRulesRevoke` **在场** ⇒ 路由已铸(接着答不答仍看 `permissionRules`);
347
+ * · **缺席** ⇒ 这台 worker 比撤销面老 ⇒ 直接藏起治理入口。真打了也能认:server 的未命中路由臂是
348
+ * **404 `not_found.route`**(已鉴权的调用方;未鉴权会先撞全局 401 `auth.unauthorized`)⇒ 拿到
349
+ * {@link import("../errors.js").NotFoundError} 且 `errorCode` 为 `not_found.route`,与 501(没接店)
350
+ * 和本族其它 404 都可分。
351
+ */
352
+ list(params?: RuleListParams, opts?: {
353
+ signal?: AbortSignal;
354
+ }): Promise<RuleListResult>;
355
+ /**
356
+ * `DELETE /v1/rules` —— 按**内容** `(rule, scope)` 撤销一条持久规则。**路径上没有 `:id` 段**:一条规则
357
+ * 的身份就是那个内容对,server 不铸行 id,引擎的 `removePersistedRule` 原语按 observed-remove 形在 add
358
+ * 的 dot 上工作。
359
+ *
360
+ * 🔴 **幂等,而且刻意不是 404**:重复删 / 本来就没有 ⇒ `200 {status:"no-op"}`。一个「这条规则存在过吗」
361
+ * 的 404 就是一台存在性 oracle(在 operator 越权域下更是跨租户的那种),而删除对「有没有过」本来就不
362
+ * 该作 oracle。要判「我删到东西了吗」,读 `status`。
363
+ *
364
+ * 🔴 **读 {@link RuleRevokeResult.stillLive} 再对人下结论**:它为真意味着墓碑落了但规则**仍然活着**
365
+ * (add-wins;本次调用期间又落了一次批准)。两支 200 都带这一位,所以一套分支读得通。
366
+ * ⚠️ 但**两个真值证明力不对称**:`false` 不是「已经没了」的证明(`removed` 支的确认读回在引擎里被
367
+ * `catch` 吞成 `false`)—— 要紧的场合用 {@link list} 对账,逐条理由见该字段的注。
368
+ *
369
+ * 🔴 **SDK 不自动重试**(非 submit 类的 DELETE):503 `state.rule_remove_failed`(→
370
+ * {@link import("../errors.js").ServiceStateError})的语义是「读回确认什么都没写,**或者**读回本身也
371
+ * 失败、结局不定」—— 两种都是重试可改判的,所以**自己**重试,然后用 {@link list} 对账。
372
+ *
373
+ * 越权撤销见 {@link RuleRevokeRequest.principal}(403 `auth.operator_only`);未接规则店 ⇒ 501。
374
+ * 🔴 **版本偏斜判据同 {@link list}**:gate 用 `capabilities.permissionRulesRevoke`(缺席 = 这台 worker
375
+ * 比撤销面老,真打会拿 404 `not_found.route`);`permissionRules` 为 true **不蕴含**这口在。
376
+ */
377
+ revoke(input: RuleRevokeRequest, opts?: {
378
+ signal?: AbortSignal;
379
+ }): Promise<RuleRevokeResult>;
174
380
  }
175
381
  //# sourceMappingURL=rules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/resources/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,4DAA4D;AAC5D,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAEzF,6EAA6E;AAC7E,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,qBAAqB,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,kEAAkE;IAClE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,cAAc;IACd,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,mCAAmC;IACnC,SAAS,EAAE;QAAE,YAAY,EAAE,iBAAiB,CAAC;QAAC,cAAc,EAAE,iBAAiB,CAAA;KAAE,CAAC;CACnF;AAED;oCACoC;AACpC,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,gBAAgB;IAChB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,4BAA4B;IAC5B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,iBAAiB;IACjB,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAwB;AACxB,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAEzC;;;;;;;;yDAQqD;IAC/C,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAS/G;;;;;;;yDAOqD;IAC/C,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAQrG"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/resources/rules.ts"],"names":[],"mappings":"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"}
@@ -36,5 +36,85 @@ export class RulesResource {
36
36
  signal: opts?.signal,
37
37
  });
38
38
  }
39
+ /**
40
+ * `GET /v1/rules` —— 列出一位 principal 名下**活着**的规则(墓碑已折算),keyset 分页。
41
+ *
42
+ * 序 = `(scope, rule)` 字典序,由 **server** 定死(core 的 `list()` 不承诺顺序)—— keyset 分页的全部
43
+ * 前提就是「同一份数据每次以同一个顺序出现」。
44
+ *
45
+ * 🔴 **游标绑 `(rev, principal, scope)`,对不上是「拒」不是「重来」。** 规则集是**整份读**的,所以一页
46
+ * 之内没有撕裂;撕裂发生在**两页之间** —— 第一页之后有人加了或删了一条,第二页的 keyset 起点就落在
47
+ * 一份不同的集合上,结果是静默漏行或重行。拿一个在别的 rev / 别的 principal / 别的 scope 过滤上铸的
48
+ * 游标来翻页 ⇒ 400 `request.query_invalid`(体里带当前 `rev`),**丢掉游标从头列**即可。静默重置的代价
49
+ * 是客户端把第二页当成「接着上一页」,治理面上于是出现一份既漏行又重行的清单,而没有任何人知道。
50
+ *
51
+ * 🔴 **翻页要翻完**:`nextCursor` 缺席才是终点。半途停下拿到的是**一份不全的清单**,而这条面的消费者
52
+ * (治理视图)恰恰最不能拿不全的清单当全量。
53
+ *
54
+ * 越权读见 {@link RuleListParams.principal}(403 `auth.operator_only`);未接规则店 ⇒ 501
55
+ * `capability.rule_store_required`(→ {@link import("../errors.js").CapabilityUnavailableError})。
56
+ * GET ⇒ SDK 的重试矩阵**会**自动重试瞬时失败(纯读,无副作用)。
57
+ *
58
+ * 🔴 **版本偏斜:gate 用 `capabilities.permissionRulesRevoke`,不是 `permissionRules`**(codex 对抗复审
59
+ * R2 [medium] 提出,上游采纳后 server 7.12.0 加位)。`permissionRules` 比撤销面**早出生** —— 一台
60
+ * 7.11.0 worker 完全可以报 `true`(导入两口真的活着)而这两口根本没被路由;那个位已发布的成文语义
61
+ * 修不动,所以上游**加了一位**而不是追改旧位。判据两段:
62
+ * · `permissionRulesRevoke` **在场** ⇒ 路由已铸(接着答不答仍看 `permissionRules`);
63
+ * · **缺席** ⇒ 这台 worker 比撤销面老 ⇒ 直接藏起治理入口。真打了也能认:server 的未命中路由臂是
64
+ * **404 `not_found.route`**(已鉴权的调用方;未鉴权会先撞全局 401 `auth.unauthorized`)⇒ 拿到
65
+ * {@link import("../errors.js").NotFoundError} 且 `errorCode` 为 `not_found.route`,与 501(没接店)
66
+ * 和本族其它 404 都可分。
67
+ */
68
+ async list(params, opts) {
69
+ const q = new URLSearchParams();
70
+ if (params?.principal !== undefined)
71
+ q.set("principal", params.principal);
72
+ if (params?.scope !== undefined)
73
+ q.set("scope", params.scope);
74
+ if (params?.limit !== undefined)
75
+ q.set("limit", String(params.limit));
76
+ if (params?.cursor !== undefined)
77
+ q.set("cursor", params.cursor);
78
+ const qs = q.toString();
79
+ return this.t.request({
80
+ method: "GET",
81
+ path: qs === "" ? "/v1/rules" : `/v1/rules?${qs}`,
82
+ signal: opts?.signal,
83
+ });
84
+ }
85
+ /**
86
+ * `DELETE /v1/rules` —— 按**内容** `(rule, scope)` 撤销一条持久规则。**路径上没有 `:id` 段**:一条规则
87
+ * 的身份就是那个内容对,server 不铸行 id,引擎的 `removePersistedRule` 原语按 observed-remove 形在 add
88
+ * 的 dot 上工作。
89
+ *
90
+ * 🔴 **幂等,而且刻意不是 404**:重复删 / 本来就没有 ⇒ `200 {status:"no-op"}`。一个「这条规则存在过吗」
91
+ * 的 404 就是一台存在性 oracle(在 operator 越权域下更是跨租户的那种),而删除对「有没有过」本来就不
92
+ * 该作 oracle。要判「我删到东西了吗」,读 `status`。
93
+ *
94
+ * 🔴 **读 {@link RuleRevokeResult.stillLive} 再对人下结论**:它为真意味着墓碑落了但规则**仍然活着**
95
+ * (add-wins;本次调用期间又落了一次批准)。两支 200 都带这一位,所以一套分支读得通。
96
+ * ⚠️ 但**两个真值证明力不对称**:`false` 不是「已经没了」的证明(`removed` 支的确认读回在引擎里被
97
+ * `catch` 吞成 `false`)—— 要紧的场合用 {@link list} 对账,逐条理由见该字段的注。
98
+ *
99
+ * 🔴 **SDK 不自动重试**(非 submit 类的 DELETE):503 `state.rule_remove_failed`(→
100
+ * {@link import("../errors.js").ServiceStateError})的语义是「读回确认什么都没写,**或者**读回本身也
101
+ * 失败、结局不定」—— 两种都是重试可改判的,所以**自己**重试,然后用 {@link list} 对账。
102
+ *
103
+ * 越权撤销见 {@link RuleRevokeRequest.principal}(403 `auth.operator_only`);未接规则店 ⇒ 501。
104
+ * 🔴 **版本偏斜判据同 {@link list}**:gate 用 `capabilities.permissionRulesRevoke`(缺席 = 这台 worker
105
+ * 比撤销面老,真打会拿 404 `not_found.route`);`permissionRules` 为 true **不蕴含**这口在。
106
+ */
107
+ async revoke(input, opts) {
108
+ return this.t.request({
109
+ method: "DELETE",
110
+ path: "/v1/rules",
111
+ body: {
112
+ rule: input.rule,
113
+ scope: input.scope,
114
+ ...(input.principal !== undefined ? { principal: input.principal } : {}),
115
+ },
116
+ signal: opts?.signal,
117
+ });
118
+ }
39
119
  }
40
120
  //# sourceMappingURL=rules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/resources/rules.ts"],"names":[],"mappings":"AAsJA,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C;;;;;;;;yDAQqD;IACrD,KAAK,CAAC,eAAe,CAAC,MAAuB,EAAE,IAA+B;QAC5E,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAwB;YAC3C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,6BAA6B;YACnC,IAAI,EAAE,EAAE,MAAM,EAAE;YAChB,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;yDAOqD;IACrD,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,IAA+B;QAClE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAuB;YAC1C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,EAAE,MAAM,EAAE;YAChB,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/resources/rules.ts"],"names":[],"mappings":"AAqTA,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C;;;;;;;;yDAQqD;IACrD,KAAK,CAAC,eAAe,CAAC,MAAuB,EAAE,IAA+B;QAC5E,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAwB;YAC3C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,6BAA6B;YACnC,IAAI,EAAE,EAAE,MAAM,EAAE;YAChB,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;yDAOqD;IACrD,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,IAA+B;QAClE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAuB;YAC1C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,EAAE,MAAM,EAAE;YAChB,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,KAAK,CAAC,IAAI,CAAC,MAAuB,EAAE,IAA+B;QACjE,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1E,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAiB;YACpC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE;YACjD,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,MAAM,CAAC,KAAwB,EAAE,IAA+B;QACpE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAmB;YACtC,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE;gBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzE;YACD,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -110,9 +110,15 @@ export interface RuleSuggestion {
110
110
  * 引擎从**原始**命令铸的 ⇒ v1 拒绝这次持久化(否则「把危险命令改安全 + 勾上不再询问」会给原始那条
111
111
  * 危险命令装上常驻放行规则);
112
112
  * · `rule_not_offered` —— 报回的文本不在这只 ask 的候选里(旧卡残留 / 有人在试着自铸规则);
113
- * · `rule_store_error` —— 规则店抖动。裁决**照常生效**,只是没存上。
113
+ * · `rule_store_error` —— 规则店抖动。裁决**照常生效**,只是没存上;
114
+ * · `rule_governance_forced`(server ≥7.12.0,#204)—— 这只 ask 的门来自部署的**运维治理层**
115
+ * (`governanceForced`),所以它压根没进规则车道。🔴 **与 `rule_lane_unavailable` 刻意分词**:后者是
116
+ * 「规则店/候选/命令字节/属主」四缺其一(其中两件是本卡局限),这个是「车道好好的,只是**这一只**
117
+ * ask 归 operator 管」。⚠️ **两个词都是 per-ask 结局,谁都不是部署级判据** —— 上一格已经写死了
118
+ * `rule_lane_unavailable` 禁据以判部署,这一格同理。要判「这台部署供不供规则」只有一个正确来源:
119
+ * `capabilities.permissionRules`。处置 = 这一只不渲「不再询问」,**下一只照常渲**。
114
120
  */
115
- export type RuleRefusalReason = "no-candidates" | "unknown-candidate" | "confirm-refused" | "redeem-refused" | "rule_lane_unavailable" | "rule_input_edited" | "rule_not_offered" | "rule_store_error";
121
+ 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";
116
122
  export interface ToolApprovalFrame {
117
123
  type: "tool_approval" | "tool_approval_complete";
118
124
  /** The id to echo back to {@link ToolApprovalsResource.respond}. */
@@ -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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"}
@@ -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
@@ -454,6 +454,31 @@ export interface TaskRequest {
454
454
  * deployment supports them). Probe `capabilities.interactiveTools` (server hardcodes true — the `interactiveTools` bit in `routes/capabilities.ts`)
455
455
  * before sending to OLDER servers — an unknown-field deployment on the strict lane would 400. */
456
456
  interactiveTools?: boolean;
457
+ /**
458
+ * 🔴 ONE-SHOT SUBMISSION declaration (core ≥5.23.0 `TaskSpec.oneShot`, server ≥7.12.0 —
459
+ * `src/http/wire-types.ts` 的请求形;非 boolean = fail-loud 400 `request.field_invalid`
460
+ * "oneShot must be a boolean",不是静默强转).
461
+ *
462
+ * `true` = **这次提交**是一次性的:不存在一个后续回合能接住异步的后台通知。原型就是 headless `sema -p`
463
+ * ——回合一结束进程就退了。
464
+ *
465
+ * 🔴 **它什么权限都不给,也什么都不保证** —— core 只把它当**给模型的指引**用:`RunWorkflow` / 委派回执
466
+ * 里那句话从「结束回合,到时会通知你」(有下一回合时才对)改成「用 `TaskOutput({block:true})` 主动
467
+ * 阻塞等」。**不发**,headless 调用方会丢后台结果 —— 这是这个键存在的理由;但**发了也只是尽力而为**,
468
+ * 不是完成契约(codex 对抗复审 [medium]):模型可以不听那句话、也可能预算先耗尽,而且有的腿根本没有
469
+ * 轮询路径。真需要拿到结果的调用方,自己那步等待/对账**不能省**。没有租户门,因为没有可 gate 的能力。
470
+ *
471
+ * 🔴 **发它之前先探 {@link Capabilities.oneShot}**(codex 对抗复审 R2 [medium] 提出,上游采纳后
472
+ * server 7.12.0 加位):提交体是**开集**(server 不拒未知键),所以一台还没接这个键的 worker 收下
473
+ * `oneShot: true`、回 200、然后照旧告诉模型「结束回合等通知」—— 没有 400、没有警告。**能力位缺席就是
474
+ * 那台 worker** ⇒ 键正被忽略,自己那步等待/对账不能省。
475
+ * ⚠️ 位**在场**也不解除那步:它证明的是「键被消费」,不是「结果一定收得到」(见上一段:指引 ≠ 契约)。
476
+ *
477
+ * **按请求走**是刻意的:「这次提交期不期待被继续」是**提交**的属性,不是它到达的那条连接的属性。
478
+ * 与 {@link interactiveTools}(同一个 `-p` 姿态)是姊妹键,透传方式逐字相同:布尔才上路,**缺席 ⇒ 键
479
+ * 被省略**、core 的默认(交互态)生效。会随持久化的 body 骑到 resume 腿上。
480
+ */
481
+ oneShot?: boolean;
457
482
  /** 🔴 Retain background processes past the turn (server `src/http/wire-types.ts:179` 的请求形 — STRICT boolean, else 400).
458
483
  * `true` = backgrounded Bash tasks (b*) survive the run's turn end instead of being reaped (long dev servers,
459
484
  * watch builds). HONORED only on a single-user deployment (`capabilities.retainBackgroundProcesses` =
@@ -626,6 +651,28 @@ export interface TaskAgentDefinition {
626
651
  /** Message template the observer sends. ≤4096 chars. */
627
652
  observerMessage?: string;
628
653
  }
654
+ /**
655
+ * 409 `conflict.session_active_run` 的**待批门材料**(409 体与 SSE `done` 帧拒绝形共用一形;server
656
+ * `src/http/active-run-conflict.ts` 的 `PendingGateMaterial`)。
657
+ *
658
+ * `kind`/`decidePath` = **出路**(去哪决议;`decidePath` 是 parked run 的那一个正确 resume 入口,
659
+ * sessionId 寻址,checkpoint token 永不上 wire)。
660
+ *
661
+ * `governanceForced`(#220,server ≥ 7.12:**ADDITIVE / tolerate-absent**)= **出身**:这道门是运维治理层
662
+ * (`AUTONOMY` / `commandPolicy` / `MANUAL_MODE_SHELL_GATE` / 守卫集)强制的。语义与活卡帧
663
+ * `ToolApprovalFrame.governanceForced` **同族**:
664
+ * - **只在为真时在场**,server 恒不写 `false`;
665
+ * - 🔴 **缺席 ≠「这不是治理门」** —— 缺席的含义是「没有治理来源的证据」(判据够不着的形也落在缺席里)。
666
+ * 消费端禁把缺席读成否定。渲染「治理强制」徽标只认在场;
667
+ * - 🔴 **分诊提示,不是裁决**:server 侧的判据是「持久行上的 doctrine ∧ 该部署的治理层本来就要求它」,
668
+ * 后一半在**应答时刻**读,而行是更早铸的 ⇒ 运维热改治理旋钮会让老行的归因两个方向都可能漂。
669
+ * 它不参与任何门/决策路径,只供展示。
670
+ */
671
+ export interface PendingGateMaterial {
672
+ kind: string;
673
+ decidePath: string;
674
+ governanceForced?: true;
675
+ }
629
676
  /** Synchronous task result (`POST /v1/tasks`). */
630
677
  export interface TaskResult {
631
678
  taskId: string;
@@ -637,10 +684,7 @@ export interface TaskResult {
637
684
  * ADDITIVE / tolerate-absent。pendingGate.decidePath = parked run 的那一个正确 resume 入口。 */
638
685
  activeTaskId?: string | null;
639
686
  activeTaskStatus?: string;
640
- pendingGate?: {
641
- kind: string;
642
- decidePath: string;
643
- };
687
+ pendingGate?: PendingGateMaterial;
644
688
  errorCode?: string;
645
689
  errorMessage?: string;
646
690
  /** 🔴 **等待提示的 2xx 形**(复审车 C,2026-08-05)—— 引擎 result 里的等待提示,**毫秒、未换算**
@@ -714,10 +758,7 @@ export interface ActiveRunConflictDoneResult {
714
758
  errorMessage: string;
715
759
  activeTaskId: string | null;
716
760
  activeTaskStatus?: string;
717
- pendingGate?: {
718
- kind: string;
719
- decidePath: string;
720
- };
761
+ pendingGate?: PendingGateMaterial;
721
762
  }
722
763
  /** Async run receipt (`POST /v1/runs` → 202). The capability token is NEVER on the wire (server-internal). */
723
764
  export interface RunReceipt {
@@ -1711,9 +1752,48 @@ export interface Capabilities {
1711
1752
  * server 谓词与 handleAdoption 的 501 同源(SQL backend 的 adoptionLog 工厂在场;local 后端诚实缺席)。
1712
1753
  * probe before use,勿 trial-by-501。 */
1713
1754
  adoption?: boolean;
1714
- /** #154 规则车道(`/v1/rules/cc-import/*` 两口 + respond `persistRule` 兑付口)可用。server 谓词=
1715
- * `PERMISSION_RULES_ENABLED=true ∧ 规则店 wired`(默认 OFF ⇒ false;撤销面为开启前置)。 */
1755
+ /** #154 + design/203 §2 规则车道(`/v1/rules/cc-import/*` 两口 + `GET`/`DELETE /v1/rules` 撤销面两口 +
1756
+ * respond `persistRule` 兑付口)可用。server 谓词=`PERMISSION_RULES_ENABLED ∧ 规则店 wired`
1757
+ * (🔴 旋钮默认**分两段**:≤7.11.0 默认 `false`,7.12.0 起默认 `true` ⇒ 别按「默认关」推断这一位),
1758
+ * 与这台 server **所有**规则口的 501 **同一条**谓词 ⇒ 说 yes ⟺ 它有的那些口**全都**活(不是「有一口活」)。
1759
+ * ⚠️ 面的条数随 server 版本长:≤7.11.0 是导入两口 + 兑付口,7.12.0 起再加撤销面两口 —— 本位说的是
1760
+ * 「车道在不在」,不是「有几条口」,所以别拿它反推 server 版本。 */
1716
1761
  permissionRules?: boolean;
1762
+ /** design/203 §2(server ≥7.12.0):撤销面两口(`GET`/`DELETE /v1/rules`)在这台 worker 上**已被路由**。
1763
+ * deps 谓词与 {@link permissionRules} **同源**,真正带信息的是这一位的**在场性本身**。
1764
+ * 🔴 这正是它必须是**第二个位**而不是把第一个位改严的理由:≤7.11.0 的 worker 上 `permissionRules`
1765
+ * 已经报 true 而这两口 404(位早于路由),那个位因此分不出「车道没开」与「这份二进制比撤销面老」,
1766
+ * 而它已发布的成文语义(「四口都活」)在那些包上本来就是谎 —— **只能加位,不能追改位**。
1767
+ * **缺席 ⇒ 老 worker**:`rules.list` / `rules.revoke` 会拿到 404 `not_found.route`,治理入口该藏起来;
1768
+ * **在场 ⇒ 路由在**(它接着答不答,照旧看 {@link permissionRules})。 */
1769
+ permissionRulesRevoke?: boolean;
1770
+ /** server ≥7.12.0:这台 worker **真的消费** {@link TaskRequest.oneShot}(布尔才投影进 TaskSpec、缺席不写
1771
+ * 键、非布尔 400)。恒 true —— 消费不依赖任何可选设施。
1772
+ * 🔴 **用那个字段之前先探这一位**:提交体是**开集**,不消费这个键的 worker 照样收下并回 200 ——
1773
+ * 一个 headless 调用方会以为自己声明了一次性形,却拿不到 core 的 block-wait 指引,后台结果就这么丢了,
1774
+ * 而 wire 上没有任何迹象。**缺席 ⇒ 键正被忽略**,自己那步等待/对账不能省。
1775
+ * (⚠️ 这一位**在场**也不解除那步:该字段是给模型的指引,不是完成契约。) */
1776
+ oneShot?: boolean;
1777
+ /** design/201 §3(server ≥7.12.0):这份二进制里**有没有** `permissionMode` → `spec.shellGate` 的翻译表
1778
+ * (bypassPermissions ⇒ off;auto/default/acceptEdits/plan ⇒ classify;表态缺席 ⇒ 不写键)。
1779
+ * **恒 true 且与翻译表同一个 commit** —— 这一位说的不是「配置在不在」而是「这份二进制里有没有那张表」,
1780
+ * 所以「says yes ⟺ 翻译真在」是结构性的,没有任何 deps 缺席能让它变假。
1781
+ * 🔴 **判据必须是「所连 server 广告本位」,绝不是壳自身版本**:壳据它撤掉对 `MANUAL_MODE_SHELL_GATE`
1782
+ * 的无条件 env 注入,而按壳版本判会在三种真部署下开天窗(新壳连老 server / 副本回滚到旧二进制 / 混版
1783
+ * fleet)—— 那正是「翻译还没到货但壳已经撤注」的放宽窗。缺席/false ⇒ 继续注。 */
1784
+ modeShellGateTranslation?: boolean;
1785
+ /** design/73 §7.2(server ≥7.12.0):`GET /v1/outcomes` 机械信号只读聚合面可用。server 谓词逐项对着该
1786
+ * 路由的拒绝臂:①可查询的账面在场(`outcomeSink.summary` —— File sink 只写 JSONL、没有查询面 ⇒ 501);
1787
+ * ②多租户下 operator 名单非空(单用户形无此门 —— 唯一的用户就是 operator)。
1788
+ * 补这一位是因为该面此前**有 501 拒而无能力位**,消费端只能 trial-by-501 —— 而那正是能力面存在的目的。 */
1789
+ outcomeLedger?: boolean;
1790
+ /** #F1(server ≥7.12):sandbox-image-pool 的 **P1 面**(`GET /v1/images`、`/v1/images/:profile`、
1791
+ * `/v1/images/digests/:digest`、`POST /v1/images/select`)可用。谓词逐字 = 该域的挂载条件
1792
+ * `deps.imageIndex`;缺席时那一族此前落**全局 404**(与拼错路由同码 —— 消费端分不出「没接这个面」
1793
+ * 与「URL 写错了」),现在是 501 `capability.image_index_required`。`local` 后端刻意不接镜像索引
1794
+ * (池是 cloud/fleet-only)⇒ 单机形上恒 false。
1795
+ * ⚠️ 辖域只到 P1:`/v1/images/bakes*`(P2 烤制控制面)是另一条依赖 + operator/runner 内部面,不由本位承诺。 */
1796
+ images?: boolean;
1717
1797
  /** 2c session-sync (P1d) — the `/v1/sessions/:id/sync/*` peer routes resolve. The server predicate is a
1718
1798
  * **FOUR-way** conjunction (`src/http/routes/capabilities.ts`): durable backend ∧ `exportEntries` ∧
1719
1799
  * `beginImportStaging` ∧ a file-snapshot store. 🔴 The fourth conjunct is the correction: this doc used to