@sema-agent/sdk 18.0.0 → 18.1.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.
- package/README.md +77 -0
- package/dist/errors.d.ts +8 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -0
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +4 -2
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/resources/approvals.d.ts +6 -3
- package/dist/resources/approvals.d.ts.map +1 -1
- package/dist/resources/approvals.js +4 -2
- package/dist/resources/approvals.js.map +1 -1
- package/dist/resources/assistant.d.ts +5 -4
- package/dist/resources/assistant.d.ts.map +1 -1
- package/dist/resources/assistant.js +5 -4
- package/dist/resources/assistant.js.map +1 -1
- package/dist/resources/leader.d.ts +7 -1
- package/dist/resources/leader.d.ts.map +1 -1
- package/dist/resources/leader.js +7 -1
- package/dist/resources/leader.js.map +1 -1
- package/dist/settings.d.ts +2 -2
- package/dist/types.d.ts +46 -17
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/openapi.yaml +109 -29
- package/package.json +1 -1
|
@@ -67,10 +67,11 @@ export class AssistantResource {
|
|
|
67
67
|
* 🔴 **体键闭集**(server ≥7.86.0 / S-438):受理集 = `boundCallId` / `decision` / `editedPlan` /
|
|
68
68
|
* `permissionModeAfter` / `reason`;其余顶层键 400 `request.body_shape`(拒**不**丢,拒体带 `unknownKeys` /
|
|
69
69
|
* `unsupportedKeys` 两张机读表)。
|
|
70
|
-
* 🔴 **`permissionModeAfter`**(server ≥7.86.0
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* (
|
|
70
|
+
* 🔴 **`permissionModeAfter`**(server ≥7.86.0):批准之后这条 task 继续跑在哪一档 ——
|
|
71
|
+
* 三条 400 各有自己的码(按码匹配,句子文案在 7.122.0 改过):值出闭集 `request.field_invalid` ·
|
|
72
|
+
* 配了 `reject`(server ≥7.122.0:`approve` 与 `edit` 都把计划带出 plan、都收这一位;≤7.121.x 只收 `approve`)`request.field_conflict` ·
|
|
73
|
+
* 这条 task 的**存储**模式词不是 `plan`(7.122.0 起 run 的模式词只有存储体一个源;运维 `AUTONOMY=plan` 盖进入口的任务存储词就是 plan,照收)`request.field_conflict`。
|
|
74
|
+
* 缺席折 `"default"`(老壳零改动照常执行计划,只是每次写仍征询)。语义与直连门签名形见 {@link PlanReviewRequest.permissionModeAfter}。
|
|
74
75
|
* 🔴 [2400] HITL-13 前置:同 {@link AssistantResource.resume} —— checkpointStore(先读 `capabilities().approvals`)
|
|
75
76
|
* + durable run store(无则 501 `capability.run_store_required`,`routes/approvals-assistant.ts:362`)。 */
|
|
76
77
|
async planReview(taskId, req, opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant.js","sourceRoot":"","sources":["../../src/resources/assistant.ts"],"names":[],"mappings":"AAgCA,2EAA2E;AAC3E,SAAS,aAAa,CAAC,CAAmB;IACxC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,CAAmB;IACxC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C;;wGAEoG;IACpG,KAAK,CAAC,KAAK,CAAC,IAA+C;QACzD,yFAAyF;QACzF,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAwB;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,CAAC,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;sFAIkF;IAClF,KAAK,CAAC,KAAK,CAAC,IAA+C;QACzD,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,kGAAkG;QAClG,wFAAwF;QACxF,8EAA8E;QAC9E,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAgC;YAC5D,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,CAAC,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,mEAAmE;QACnE,yDAAyD;QACzD,+DAA+D;QAC/D,+DAA+D;QAC/D,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED;;;;4GAIwG;IACxG,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,IAA+B;QAC1D,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAsB;YACzC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,uBAAuB,kBAAkB,CAAC,MAAM,CAAC,SAAS;YAChE,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"assistant.js","sourceRoot":"","sources":["../../src/resources/assistant.ts"],"names":[],"mappings":"AAgCA,2EAA2E;AAC3E,SAAS,aAAa,CAAC,CAAmB;IACxC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,CAAmB;IACxC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C;;wGAEoG;IACpG,KAAK,CAAC,KAAK,CAAC,IAA+C;QACzD,yFAAyF;QACzF,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAwB;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,CAAC,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;sFAIkF;IAClF,KAAK,CAAC,KAAK,CAAC,IAA+C;QACzD,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,kGAAkG;QAClG,wFAAwF;QACxF,8EAA8E;QAC9E,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAgC;YAC5D,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,CAAC,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,mEAAmE;QACnE,yDAAyD;QACzD,+DAA+D;QAC/D,+DAA+D;QAC/D,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED;;;;4GAIwG;IACxG,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,IAA+B;QAC1D,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAsB;YACzC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,uBAAuB,kBAAkB,CAAC,MAAM,CAAC,SAAS;YAChE,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;2GAauG;IACvG,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,GAAsB,EAAE,IAA+B;QACtF,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAsB;YACzC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,uBAAuB,kBAAkB,CAAC,MAAM,CAAC,cAAc;YACrE,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;8FAK0F;IAC1F,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,IAA+B;QAC3D,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAsB;YACzC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,uBAAuB,kBAAkB,CAAC,MAAM,CAAC,UAAU;YACjE,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -14,9 +14,15 @@ export declare class LeaderResource {
|
|
|
14
14
|
* 🔴 **leader 面缺席时的答法(server ≥7.116.0 改了)**:≤7.115.x 的 `LEADER_ENABLED` 关闭时 `if (deps.leaderEndpoint)` 不成立 ⇒ 整条路由**未匹配**,落全局 404 `not_found.route`
|
|
15
15
|
* (4.3.0 更正,FW-11:那时「没有 501 这条臂」);**7.116.0 起路由恒挂载**,没有 leader 面的部署上 `POST /v1/leader` 与 `GET /v1/leader/:id` 一律答
|
|
16
16
|
* **501 `capability.leader_endpoint_required`**(新码,{@link import("../errors.js").CapabilityUnavailableError};多租户形下身份门 401 仍先于 501,不泄露部署形)。
|
|
17
|
-
* ⇒ **面缺席的判别按 `errorCode`,别按状态码**(404 在 ≥7.116.0 上只剩「真不存在 / 非 owner」);要预判读 `capabilities().leader`(
|
|
17
|
+
* ⇒ **面缺席的判别按 `errorCode`,别按状态码**(404 在 ≥7.116.0 上只剩「真不存在 / 非 owner」);要预判读 `capabilities().leader`(≥7.122.0:面在场 ∧ 运维入口地板收 leader 提交,读法单写在 `Capabilities.leader` 型注;位为 false 时按提交答的 `errorCode` 分 501 面缺席 / 422 入口地板不收)。
|
|
18
18
|
* 对老 server(≤7.115.x)面缺席仍是 404 —— 同一分支两种答法并存,所以 `catch` 里认 `CapabilityUnavailableError` **与** 404 `not_found.route` 两种。(SDK 全覆盖批 2026-07-17:原 TODO(M3+) 桩接线。)
|
|
19
19
|
*
|
|
20
|
+
* 🔴 **`AUTONOMY=plan` 的部署拒这条车道(server ≥7.122.0)**:运维设了 `AUTONOMY=plan` 时 `POST /v1/leader` 答 **422 `request.autonomy_lane_refused`**
|
|
21
|
+
* ({@link import("../errors.js").BadRequestError};`capabilities().leader` 位读 **false** —— 与受理口读同一对判据;≤7.121.x 上它只读面在场、不预言受理)—— leader 的 worker 会话没有计划审阅通道,
|
|
22
|
+
* 交出计划就停在一张没人能决的卡上,所以受理口响亮拒、**一条 run 都不建**(同一个 `Idempotency-Key` 重投也是 422,**不消费**键)。出路:改走 `POST /v1/runs`
|
|
23
|
+
* (计划经 `assistant.planReview` 审阅),或请运维改设 `AUTONOMY=read-only` / `ask`。事先读 `client.policy` 的 `autonomy`;按 `errorCode` 分支。
|
|
24
|
+
* 与 `request.host_posture_refused` 不同轴(那枚是托管 / 租户姿态)。
|
|
25
|
+
*
|
|
20
26
|
* 🔴 facade 审计(2026-07-24,SDK 全量核查 GD 组):此前这五个字段里只有 `objective` 是类型必填,
|
|
21
27
|
* `durableRemote`/`testCmd`/`seedCmd`/`baseSha` 全靠 `[k:string]:unknown` 兜底——但服务端后台
|
|
22
28
|
* runLeader 实际无条件要求全部五个非空(`wire.ts:368`),同步 HTTP 门此前只查 `objective`,一个
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leader.d.ts","sourceRoot":"","sources":["../../src/resources/leader.ts"],"names":[],"mappings":"AAAA;;;;;qGAKqG;AACrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAEzC
|
|
1
|
+
{"version":3,"file":"leader.d.ts","sourceRoot":"","sources":["../../src/resources/leader.ts"],"names":[],"mappings":"AAAA;;;;;qGAKqG;AACrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDA8CmD;IAC7C,MAAM,CACV,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EAC1H,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB;;;;0EAIkE;QAClE,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GACA,OAAO,CAAC,aAAa,CAAC;IAiBzB,gEAAgE;IAC1D,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;CAGvF"}
|
package/dist/resources/leader.js
CHANGED
|
@@ -8,9 +8,15 @@ export class LeaderResource {
|
|
|
8
8
|
* 🔴 **leader 面缺席时的答法(server ≥7.116.0 改了)**:≤7.115.x 的 `LEADER_ENABLED` 关闭时 `if (deps.leaderEndpoint)` 不成立 ⇒ 整条路由**未匹配**,落全局 404 `not_found.route`
|
|
9
9
|
* (4.3.0 更正,FW-11:那时「没有 501 这条臂」);**7.116.0 起路由恒挂载**,没有 leader 面的部署上 `POST /v1/leader` 与 `GET /v1/leader/:id` 一律答
|
|
10
10
|
* **501 `capability.leader_endpoint_required`**(新码,{@link import("../errors.js").CapabilityUnavailableError};多租户形下身份门 401 仍先于 501,不泄露部署形)。
|
|
11
|
-
* ⇒ **面缺席的判别按 `errorCode`,别按状态码**(404 在 ≥7.116.0 上只剩「真不存在 / 非 owner」);要预判读 `capabilities().leader`(
|
|
11
|
+
* ⇒ **面缺席的判别按 `errorCode`,别按状态码**(404 在 ≥7.116.0 上只剩「真不存在 / 非 owner」);要预判读 `capabilities().leader`(≥7.122.0:面在场 ∧ 运维入口地板收 leader 提交,读法单写在 `Capabilities.leader` 型注;位为 false 时按提交答的 `errorCode` 分 501 面缺席 / 422 入口地板不收)。
|
|
12
12
|
* 对老 server(≤7.115.x)面缺席仍是 404 —— 同一分支两种答法并存,所以 `catch` 里认 `CapabilityUnavailableError` **与** 404 `not_found.route` 两种。(SDK 全覆盖批 2026-07-17:原 TODO(M3+) 桩接线。)
|
|
13
13
|
*
|
|
14
|
+
* 🔴 **`AUTONOMY=plan` 的部署拒这条车道(server ≥7.122.0)**:运维设了 `AUTONOMY=plan` 时 `POST /v1/leader` 答 **422 `request.autonomy_lane_refused`**
|
|
15
|
+
* ({@link import("../errors.js").BadRequestError};`capabilities().leader` 位读 **false** —— 与受理口读同一对判据;≤7.121.x 上它只读面在场、不预言受理)—— leader 的 worker 会话没有计划审阅通道,
|
|
16
|
+
* 交出计划就停在一张没人能决的卡上,所以受理口响亮拒、**一条 run 都不建**(同一个 `Idempotency-Key` 重投也是 422,**不消费**键)。出路:改走 `POST /v1/runs`
|
|
17
|
+
* (计划经 `assistant.planReview` 审阅),或请运维改设 `AUTONOMY=read-only` / `ask`。事先读 `client.policy` 的 `autonomy`;按 `errorCode` 分支。
|
|
18
|
+
* 与 `request.host_posture_refused` 不同轴(那枚是托管 / 租户姿态)。
|
|
19
|
+
*
|
|
14
20
|
* 🔴 facade 审计(2026-07-24,SDK 全量核查 GD 组):此前这五个字段里只有 `objective` 是类型必填,
|
|
15
21
|
* `durableRemote`/`testCmd`/`seedCmd`/`baseSha` 全靠 `[k:string]:unknown` 兜底——但服务端后台
|
|
16
22
|
* runLeader 实际无条件要求全部五个非空(`wire.ts:368`),同步 HTTP 门此前只查 `objective`,一个
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leader.js","sourceRoot":"","sources":["../../src/resources/leader.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C
|
|
1
|
+
{"version":3,"file":"leader.js","sourceRoot":"","sources":["../../src/resources/leader.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDA8CmD;IACnD,KAAK,CAAC,MAAM,CACV,GAA0H,EAC1H,IAQC;QAED,2EAA2E;QAC3E,2DAA2D;QAC3D,wDAAwD;QACxD,qDAAqD;QACrD,+BAA+B;QAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YACpB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,IAAI,EAAE,MAAM;YACpB,oEAAoE;YACpE,iEAAiE;YACjE,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvF,CAAC,CAAC;IACL,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,IAA+B;QAC5D,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,kBAAkB,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACxH,CAAC;CACF"}
|
package/dist/settings.d.ts
CHANGED
|
@@ -129,8 +129,8 @@ export interface SettingsPermissions {
|
|
|
129
129
|
* this onto the core substrate (no engine `permissionMode` field): `default`=gate 非豁免路径写(toolPolicy+onAsk
|
|
130
130
|
* ask-list;scratchpad 目录/已记住的会话豁免不问,非「逐次无一例外问」)· `acceptEdits`=cwd 内自动批准 Edit/Write、
|
|
131
131
|
* 其余仍 gate(toolPolicy 合成;**仅当 server 侧有可信 cwd 可绑时**——沙箱执行道可能无 cwd 可接线,此时
|
|
132
|
-
* acceptEdits 退化为同 default 逐次问,非静默放宽,只是自动批准域比常见宿主道窄)· `plan
|
|
133
|
-
* (`handsReadOnly:true`+present_plan)· `bypassPermissions`= gate-shape 选择「不追加 mode 派生的 fs-write ask
|
|
132
|
+
* acceptEdits 退化为同 default 逐次问,非静默放宽,只是自动批准域比常见宿主道窄)· `plan`=引擎的 plan 模式
|
|
133
|
+
* (server ≥7.122.0:服务端不另加任何东西 —— 工具表与 `default` 同面、写与非只读调用在调用时由引擎的 plan 门问 / 拒;≤7.121.x:`handsReadOnly:true`+present_plan 的只读规划)· `bypassPermissions`= gate-shape 选择「不追加 mode 派生的 fs-write ask
|
|
134
134
|
* 门」——**恒不能放宽部署/operator 基线**(server 侧 tightenTaskSpec deny-wins 折叠照压,不是「开门」)· `auto`=
|
|
135
135
|
* server 侧发的 policy 与 `default` **完全相同**(task-settings.ts 同一分支);真正的 auto-mode classifier 由
|
|
136
136
|
* core `runtimeCaps.autoMode===true && deps.autoMode!==undefined` 单独武装(与请求携带的 mode 词**无关**)——
|
package/dist/types.d.ts
CHANGED
|
@@ -606,7 +606,10 @@ export interface TaskRequest {
|
|
|
606
606
|
* · `bypassPermissions` **放行并披露**可放的十类 ask(写保护、根外读探针、MCP / A2A 工具标记、transcript 写、规则店读不出〔安全轴 fail-open,单列〕、
|
|
607
607
|
* 他人共享 artifact 读、模式自己的问、没人表态的服务器工具调用〔`unstated`,server ≥7.115.0〕、普通 / 形状层的问)—— 逐调用记在 `tool_end.gate.disposition.released`({@link ModeRelease}),每 (模式, 类)
|
|
608
608
|
* 每 run 一帧 `engine_notice` `permission.ask_released_by_mode`;免疫类(部署出身 `operator_forced`、ask / org 规则、hook、祖先、问答 …)照问。
|
|
609
|
-
*
|
|
609
|
+
* 判不出保护目标的写在文件工具上仍拒(`deniedBy:"mode"`);server ≥7.122.0 / core 7.47.0 起在**壳面**(线名恰为 `Bash` / `Monitor`、且声明了写路径目标的调用方工具)
|
|
610
|
+
* **放行**——第十一类 `write_protection_unresolved`,披露在 {@link ModeRelease.reason}。
|
|
611
|
+
* · `plan`(server ≥7.122.0)= 引擎的 plan 模式,服务端不另加任何东西:工具表与 `default` 同面、引擎挂交计划工具,写与非只读调用在**调用时**由引擎的 plan 门问(有人可答 ⇒ 一张卡)/ 拒(无人可答);
|
|
612
|
+
* 委派子代以 plan 为天花板。≤7.121.x 服务端另把 plan 翻成只读手、剥掉委派工具并拒 `Workflow`。
|
|
610
613
|
* · `auto` 武装 ⟺ `permissionMode === "auto"` ∧ 部署挂了分类器席 ∧ `caps.autoMode !== false`(单极;答旧极性的那一位 server 7.107.0 起删,
|
|
611
614
|
* 读 `capabilities.permissionModeAuto.armed` / `reason`)。请求的模式没生效 ⇒ 流上一帧 `engine_notice` `config.permission_mode_unavailable`(`effective` 恒 `default`)。
|
|
612
615
|
* · 词表:请求面**六词** = {@link PermissionMode}(server ≥7.119.0 起 `dontAsk` 受理、原样过境引擎:引擎按模式拒要问的调用 —— 零卡、`tool_end.gate.disposition`
|
|
@@ -623,7 +626,8 @@ export interface TaskRequest {
|
|
|
623
626
|
* The shell/web frontend carries
|
|
624
627
|
* the RAW mode; the SERVICE INTERPRETS it (axis-aware, tighten-only vs the deployment/operator baseline):
|
|
625
628
|
* `plan` ⇒ mount the first-party `present_plan` tool (core `TaskSpec.enablePlanMode`, CC ExitPlanMode parity) +
|
|
626
|
-
* read-only hands (`handsReadOnly`) = CC EnterPlanMode read-only research;
|
|
629
|
+
* read-only hands (`handsReadOnly`) = CC EnterPlanMode read-only research (that is the <= 7.121.x reading; server >= 7.122.0: see the
|
|
630
|
+
* `plan` bullet in the K-32 block above); `default` adds a manual fs-write ask
|
|
627
631
|
* gate on non-exempt writes (scratchpad dirs / remembered session exemptions still auto-allow — NOT literally
|
|
628
632
|
* every Write/Edit); `acceptEdits` adds the SAME gate narrowed to auto-allow inside `cwd` — but ONLY when
|
|
629
633
|
* the service has a trusted `cwd` to scope it to (host lane); on a sandbox execution lane the server may have no
|
|
@@ -2446,8 +2450,10 @@ export type PermissionMode = "default" | "acceptEdits" | "plan" | "auto" | "bypa
|
|
|
2446
2450
|
* K-37 扩项 / server ≥7.109.0(S-934 ②)起也在审批面:活卡帧 / 卡面 / 运维队列行 / `/stream` `pending` 帧的 `askClass` / `classes`
|
|
2447
2451
|
* (同样经 core `isAskClass` 筛,读不出整对不投;见 {@link import("./resources/tool-approvals.js").ToolApprovalFrame.askClass})。
|
|
2448
2452
|
* 🔴 **门记录这一面是真闭集**(server 按 core `isAskClass` 筛,出集整条不上帧)。`bypassPermissions` 只放行其中**可放**的十类
|
|
2449
|
-
* (
|
|
2450
|
-
* `artifact_shared_read` / `mode` / `unstated` / `ordinary`)
|
|
2453
|
+
* (每一面都可放:`transcript_write` / `rule_unreadable` / `probe` / `write_protection` / `tool_marks_mcp` / `tool_marks_a2a` /
|
|
2454
|
+
* `artifact_shared_read` / `mode` / `unstated` / `ordinary`)—— 另加:core 7.47.0 / server ≥7.122.0 起,**壳面**(线名恰为 `Bash` / `Monitor`、声明了写路径目标的调用方工具)
|
|
2455
|
+
* 还放第十一类 `write_protection_unresolved`(core `releasableAskClassesFor(face)`:壳面 11、其余面 10;≤7.121.x 的 `RELEASABLE_ASK_CLASSES` 常量在 core 7.47.0 已删;
|
|
2456
|
+
* 文件工具上这一类照拒);其余(`operator_forced` 部署出身、`ask_rule` / `org_rule`、`hook`、`ancestor`、`content_question`、
|
|
2451
2457
|
* `dangerous_delete`(core 7.45.0)、`unverifiable_delete`、`governance_unavailable`、`policy_rra`、`requires_user_interaction` …)任何模式下都照问。
|
|
2452
2458
|
*
|
|
2453
2459
|
* 🔴 **`requires_user_interaction`(core 7.41.0;server ≥7.116.0 提货)= 服务器声明「这只工具每次都要用户在场」**:MCP 服务器在工具申报里声明
|
|
@@ -2494,8 +2500,16 @@ export interface ModeRelease {
|
|
|
2494
2500
|
origin?: AskOrigin;
|
|
2495
2501
|
/** 卡上本会显示的强制词(六词闭集,见 {@link PersistedRuleMandate})。 */
|
|
2496
2502
|
mandate?: PersistedRuleMandate;
|
|
2497
|
-
/**
|
|
2498
|
-
|
|
2503
|
+
/**
|
|
2504
|
+
* 🔴 放行**越过了什么**:一个词,取 core `MODE_RELEASE_REASONS` 数组序里这只 ask 的类集持有的**第一位**;类集不持有任何成员 ⇒ 缺席。
|
|
2505
|
+
* 🔴 **闭集**(server 按 core `isModeReleaseReason` 筛,出集整条 `gate` 不上帧;core 加词本筛随之放行,所以按词分派的消费端要认新词):
|
|
2506
|
+
* · `"rule_unreadable"` —— 放行越过了一条**这次调用读不出**的规则(规则店读不出 —— 安全轴 fail-open 方向,server 单列披露);
|
|
2507
|
+
* · `"write_protection_unresolved"`(server ≥7.122.0 / core 7.47.0 起上 wire)—— 放行越过了一次**写保护判官解不出目标**的写(它落不落在受保护表上是未知)。
|
|
2508
|
+
* 只在**壳面**放:线名恰为 `Bash` / `Monitor`、且声明了写路径目标的**调用方工具**,在 `bypassPermissions` 下;文件工具上同一类问照拒(`deniedBy: "mode"`)。
|
|
2509
|
+
* 引擎自带的 `Bash` / `Monitor` 铸不出这一类,server 自己也不挂这样的工具 —— 它出自调用方(嵌入方)自带的同名工具。
|
|
2510
|
+
* 7.122.0 / core 7.47.0 之前这里只有 `"rule_unreadable"` 一个词。
|
|
2511
|
+
*/
|
|
2512
|
+
reason?: "rule_unreadable" | "write_protection_unresolved";
|
|
2499
2513
|
}
|
|
2500
2514
|
/**
|
|
2501
2515
|
* 这一次分类的**模型归属**(core 7.18.0 #742 `AutoModeClassifierRound`,server ≥7.78.0)——「这次 auto 模式
|
|
@@ -3013,7 +3027,9 @@ export type TraceBlock = {
|
|
|
3013
3027
|
* whitelisted at append). MULTIPLE per task on cascade/verify runs.
|
|
3014
3028
|
* - `turn` — `{ seq, tokens? }` a turn boundary (+ usage if present).
|
|
3015
3029
|
* - `done` — `{ seq, suspended? }` terminal (suspended:true = paused on HITL, NOT completed).
|
|
3016
|
-
* - `error` — `{ errorCode, message }` terminal failure / `WORKER_DOWN` (stalled) / `STREAM_MAX_DURATION`
|
|
3030
|
+
* - `error` — `{ errorCode, message }` terminal failure / `WORKER_DOWN` (stalled) / `STREAM_MAX_DURATION` /
|
|
3031
|
+
* `draining` (server >= 7.122.0: the instance entered drain, the server closes the stream right after the frame —
|
|
3032
|
+
* reconnect to the replacement instance)
|
|
3017
3033
|
* (机器键 = `errorCode`,与 HTTP 错误体同一个单键;server 3.0.0 [1989]/[1990]).
|
|
3018
3034
|
* - `heartbeat` — `{}` keep-alive (the SDK reader swallows these; not yielded). */
|
|
3019
3035
|
/** Facade note (2026-07-24 audit): `data` used to be a bare `Record<string, unknown>` for every `event` —
|
|
@@ -3529,6 +3545,11 @@ export interface Capabilities {
|
|
|
3529
3545
|
maxFileBytes?: number;
|
|
3530
3546
|
[k: string]: unknown;
|
|
3531
3547
|
};
|
|
3548
|
+
/** `POST /v1/leader` 车道位。**server ≥7.122.0 读两个条件的合取**:leader 面在场(`LEADER_ENABLED` 等挂着)**且**运维入口地板收 leader 提交 ——
|
|
3549
|
+
* 后者与受理口 422 `request.autonomy_lane_refused` 读**同一对判据**(入口词是 `plan` 的 leader run 没有计划审阅通道)。所以运维 `AUTONOMY=plan` 的部署上本位读 **false**
|
|
3550
|
+
* (直接提交仍答 422 `request.autonomy_lane_refused`);`AUTONOMY=read-only` / `ask` / 缺席时本位随面在场。面缺席的 false 在提交时答 501 `capability.leader_endpoint_required`
|
|
3551
|
+
* (≤7.115.x 答 404 `not_found.route`)—— 两种 false 按提交答的 `errorCode` 分,或事先读 `client.policy` 的 `autonomy`。
|
|
3552
|
+
* ≤7.121.x(历史读法):本位只读面在场,`AUTONOMY=plan` 的部署上仍是 true,不预言受理。 */
|
|
3532
3553
|
leader?: boolean;
|
|
3533
3554
|
/** 🔴 K-2(core SHIPPED 1.155.0;service `src/http/routes/capabilities.ts`)—— worker 支持工作流编排。
|
|
3534
3555
|
* 🔴 更正:这一位的谓词**不是** `Boolean(deps.workflowRunStore)`,而是
|
|
@@ -4233,11 +4254,13 @@ export interface Capabilities {
|
|
|
4233
4254
|
* ⚠️ 缺席 = 老 server(<7.87.1)⇒ 判不出推面带不带 live 族,**别把「等不到 `live_pending`」读成「这台不推」**
|
|
4234
4255
|
* ——两者在老 server 上不可分,按 `GET /v1/approvals` 的 `livePending` 拉面兜底。 */
|
|
4235
4256
|
approvalsStreamLive?: boolean;
|
|
4236
|
-
/** **写容纳面的披露位**(server ≥7.95.0 / S-591;7.96.0 S-613 改值义;铸点 `routes/capabilities.ts
|
|
4237
|
-
* `taskWriteFaceRefusal(deps.config) === undefined &&
|
|
4257
|
+
/** **写容纳面的披露位**(server ≥7.95.0 / S-591;7.96.0 S-613 改值义;铸点 `routes/capabilities.ts` =
|
|
4258
|
+
* `taskWriteFaceRefusal(deps.config) === undefined && autonomyKeepsOpenWriteFace(deps.config.autonomy)`〔server ≥7.122.0;≤7.121.x 的右半是
|
|
4259
|
+
* `autonomyOverrides(deps.config.autonomy).writeFace !== "roots"`〕)——
|
|
4238
4260
|
* 这台部署认不认任务层「掀开写围栏」那条声明(`permissionMode:"bypassPermissions"` 派生的 `TaskSpec.writeFace:"open"`,
|
|
4239
4261
|
* 工作区根**之外**也能写)。`false` 有两形:① 托管门拒 ⇒ 发那个模式拿 `422 request.host_posture_refused`;
|
|
4240
|
-
* ② 部署 `AUTONOMY=read-only
|
|
4262
|
+
* ② 部署 `AUTONOMY=read-only` ⇒ 请求照常受理,但写面被钳回 roots —— 声明落空;server ≥7.122.0:`AUTONOMY=plan` 同样读 `false`,成因是入口模式词在受理时被钳成 `plan`
|
|
4263
|
+
* (跑引擎的 plan 模式、不跑 `bypassPermissions`;≤7.121.x 它与 `AUTONOMY=read-only` 同是「只读手 + 写面 roots」的钳,托管部署上发 bypass 还会 422 `request.host_posture_refused`,现在受理并在 plan 里起步)。三态压成一位是刻意的
|
|
4241
4264
|
* (调用方要做的决定只有一个:还发不发那个键);档位与证据在拒因与 operator 的 `GET /v1/diagnostics/wiring`。
|
|
4242
4265
|
* ⚠️ 它**只**说写容纳面这一格 —— `bypassPermissions` 其余两列不受本位影响。
|
|
4243
4266
|
* 🔴 K-32 扩项(server ≥7.106.0 / S-895):它**不是** {@link TaskRequest.inheritEnv} `"all"` 的读数 —— 两者共用托管门那一只射程谓词,但本位
|
|
@@ -5725,18 +5748,24 @@ export interface PlanReviewRequest {
|
|
|
5725
5748
|
editedPlan?: string;
|
|
5726
5749
|
reason?: string;
|
|
5727
5750
|
/**
|
|
5728
|
-
* 🔴 **批准计划之后这条 task 继续跑在哪一档权限模式**(server ≥7.86.0
|
|
5729
|
-
*
|
|
5730
|
-
* 计划批了,可写工具仍然逐次征询,只读钳没有解除。
|
|
5751
|
+
* 🔴 **批准计划之后这条 task 继续跑在哪一档权限模式**(server ≥7.86.0)—— 把计划带出 plan 的决定把这一位写回这条任务的存储体,
|
|
5752
|
+
* 此后每一次挂起→续跑都沿用它,不回 plan。
|
|
5731
5753
|
*
|
|
5732
5754
|
* · `"acceptEdits"` —— 批准后按「接受编辑」跑(写不再逐次征询);
|
|
5733
5755
|
* · `"default"` —— 批准后仍每次写都征询(**= 缺席时的折叠值**,所以老壳一行不改也能执行计划)。
|
|
5756
|
+
* 🔴 **server ≥7.122.0:plan 只有引擎一个判官,服务端没有只读钳可解**:工具表与 `default` 同面,写与非只读调用在**调用时**由引擎的 plan 门问(有人可答)/ 拒(无人可答)。
|
|
5757
|
+
* ≤7.121.x 服务端另把 plan 翻成只读手;7.86.0 之前批准计划是一张**空头支票**(计划批了、只读钳还在、每次写仍征询),这一位就是为它加的;
|
|
5758
|
+
* 7.86.0–7.121.x 上 `edit` 带这一位也是 400,`edit` 本身写回 `plan`、续跑仍被只读手钳着。这些在 7.122.0 都已不存在。
|
|
5759
|
+
* (部署 `AUTONOMY=read-only` 的静态围栏是另一件事:server 7.122.0 起治理层每段续跑重折的只剩这类静态围栏,与计划批准无关,批准不会也不该解开它。)
|
|
5734
5760
|
* 🔴 **闭集只有这两个词**:`"plan"` / `"bypassPermissions"` 之类一律 400 `request.field_invalid`
|
|
5735
5761
|
* (零宽臂 —— 这一位选的是批准之后模型有没有手,把拼错的词折成任一档都是安全轴上的静默降级)。
|
|
5736
|
-
* 🔴
|
|
5737
|
-
*
|
|
5738
|
-
*
|
|
5739
|
-
* `
|
|
5762
|
+
* 🔴 **只配把计划带出 plan 的决定:`approve` 与 `edit`**(server ≥7.122.0;判据与引擎同句 —— 只有 `reject` 不出 plan):`reject` 带它 ⇒ 400 `request.field_conflict`,
|
|
5763
|
+
* 服务端句 `permissionModeAfter is only valid with a decision that carries the plan out ('approve' or 'edit'; got 'reject')`
|
|
5764
|
+
* (`reject` 把评审意见送回去重做计划、plan 保留 —— 在那里静默丢掉它,调用方会以为自己已经把模式说定了)。≤7.121.x 上只有 `approve` 收这一位,`edit` 带它同样是 400。
|
|
5765
|
+
* 🔴 **只对存储模式词是 `plan` 的 task 成立**(server ≥7.122.0 起 run 的模式词只有存储体一个源):该 task 的存储词不是 plan(模型自己进的 plan,批准由引擎把它送回进 plan 之前的档)⇒
|
|
5766
|
+
* 400 `request.field_conflict`,服务端句 `permissionModeAfter does not apply to this task: it was not started in plan mode (its stored permission mode is not "plan"), so approving the plan returns it to the mode it was in before planning`。
|
|
5767
|
+
* plan 起步 = 请求选的,或运维 `AUTONOMY=plan` 在提交入口盖下的 —— 后者的存储词就是 plan,这一位照收。
|
|
5768
|
+
* 🔴 三条 400 一律**按码匹配**(`request.field_invalid` / `request.field_conflict`),不按句子 —— 两句 `request.field_conflict` 的文案在 7.122.0 改过(码不变)。
|
|
5740
5769
|
* ⚠️ 它**不是**一个能顺带关掉征询面的旋钮 —— 两个词之外没有第三档。
|
|
5741
5770
|
* ⚠️ **直连门部署**:本键进 HMAC 信封的**尾位扩展对象**(server 7.87.0 起 `{answer?, permissionModeAfter?}`,
|
|
5742
5771
|
* 在场键按字典序;7.86.0 的裸尾位形已删、零双读)⇒ 签名器必须按新形签,混版两向皆 401。
|