@sema-agent/sdk 18.0.0 → 18.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +171 -0
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +23 -1
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +8 -2
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/health.d.ts +40 -0
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/resources/admin.d.ts +3 -5
- package/dist/resources/admin.d.ts.map +1 -1
- package/dist/resources/admin.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/resources/models.d.ts +5 -10
- package/dist/resources/models.d.ts.map +1 -1
- package/dist/resources/models.js +3 -1
- package/dist/resources/models.js.map +1 -1
- package/dist/resources/tasks.d.ts +9 -2
- package/dist/resources/tasks.d.ts.map +1 -1
- package/dist/resources/tasks.js +9 -2
- package/dist/resources/tasks.js.map +1 -1
- package/dist/settings.d.ts +6 -2
- package/dist/settings.d.ts.map +1 -1
- package/dist/types.d.ts +119 -27
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/openapi.yaml +256 -56
- package/package.json +2 -2
|
@@ -45,12 +45,19 @@ export declare class TasksResource {
|
|
|
45
45
|
* · **allow 侧的名字层交引擎**:`settings.permissions.allow` 与请求自带技能的 `allowedTools` 里写退役名 / 无前缀短名 / 铸不出的协议名(`Task`、`bash`、`figma__x`、`mcp__*`)
|
|
46
46
|
* **不再 422 / 400**,而是受理、开跑时收通告 `permission.allowed_tool_not_granted`(`detail.entries[].reason:"tool_name"`,带 `currentName`)—— 这些条目从来什么都不授予,
|
|
47
47
|
* 只是不再在提交时拦。依赖「写错名字当场被拒」的调用方改读那条通告。`deny` / `ask` 两桶里同一族照旧 **422**(句子换成引擎的,带现名);技能 `disallowedTools` 里照旧 **400**;
|
|
48
|
-
* 工具段为空的协议名(`mcp__srv__`)
|
|
48
|
+
* 工具段为空的协议名(`mcp__srv__`)在 **7.118.0–7.122.x** 每张表都拒(**7.123.0 起按面三分,见下一条**)。`settings.permissions.{ask,deny}` 里 `Skill(<名>)` / `Skill(<前缀>:*)` 现在受理(此前 422),参数面拼法
|
|
49
49
|
* `Skill(skill:<名>)` 现在 **422**;
|
|
50
50
|
* · **501 `capability.checkpoint_store_required`**(既有码,新来路)—— 装配里有审批名单(`APPROVAL_REQUIRE` / `APPROVAL_NEVER_AUTO` / `APPROVAL_DENY` 任一非空)或显式
|
|
51
51
|
* `DURABLE_APPROVAL=true`、却**没有检查点店** ⇒ 每个任务提交(含续跑腿)拒在一切副作用之前 ⇒ {@link import("../errors.js").CapabilityUnavailableError}。只有自己装配
|
|
52
52
|
* `resolveSpec` 的嵌入方会撞到(`sema-server` 起服对同一形早就拒启);7.117.0 上这一形是静默放行。出路在部署:给装配一只检查点店,或去掉名单;
|
|
53
|
-
* · 顶层请求键 `approvalReach`(见 {@link TaskRequest.approvalReach}):集外值 ⇒ **400** `request.field_invalid`。
|
|
53
|
+
* · 顶层请求键 `approvalReach`(见 {@link TaskRequest.approvalReach}):集外值 ⇒ **400** `request.field_invalid`。
|
|
54
|
+
*
|
|
55
|
+
* 🔴 **server ≥7.123.0(core 7.48.0 过境)—— 工具段为空的协议名(`mcp__<server>__` / `a2a__<peer>__`)按面三分**(7.118.0–7.122.x 它在每张表都拒):
|
|
56
|
+
* · **allow 面收 + 通告**:`settings.permissions.allow` 与请求自带技能的 `allowedTools` **受理**(由 422 / 400 变收);开跑时引擎把它读成 `tool_name`(判词 `unmintable_segment`)并发
|
|
57
|
+
* `permission.allowed_tool_not_granted`(server 原样过境,按 `engine_notice` 读)—— 与同面其他名字层条目同一读法;它从来不授予任何东西,只是不再在提交时拦。依赖「写成这样当场被拒」的调用方改读那条通告;
|
|
58
|
+
* · **deny / ask 面拒**:`settings.permissions.{deny,ask}` 照旧 **422**(句子是引擎的)、技能 `disallowedTools` 照旧 **400** `request.field_invalid`(句子换成引擎条目读法那一句);
|
|
59
|
+
* · **会话规则写口答 `400 rules.legacy_tool_name`**(`PUT /v1/sessions/:id/policy`、`POST /v1/sessions/:id/sync/import`;体带 `verdict: "unmintable_segment"`;7.116.0–7.122.x 是 `request.field_invalid`,
|
|
60
|
+
* 读法见 {@link import("../errors.js").BadRequestError})。 */
|
|
54
61
|
submit(req: TaskRequest, opts?: {
|
|
55
62
|
idempotencyKey?: string | null;
|
|
56
63
|
signal?: AbortSignal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/resources/tasks.ts"],"names":[],"mappings":"AAAA;;iEAEiE;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAEzC
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/resources/tasks.ts"],"names":[],"mappings":"AAAA;;iEAEiE;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iEAkD6D;IACvD,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAW1H;;;;;8GAK0G;IACpG,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAevJ;;;;;;;;;;;;sGAYkG;IAC3F,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE;QAAE,WAAW,EAAE,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,cAAc,CAAC,UAAU,CAAC;CAqBlP"}
|
package/dist/resources/tasks.js
CHANGED
|
@@ -42,12 +42,19 @@ export class TasksResource {
|
|
|
42
42
|
* · **allow 侧的名字层交引擎**:`settings.permissions.allow` 与请求自带技能的 `allowedTools` 里写退役名 / 无前缀短名 / 铸不出的协议名(`Task`、`bash`、`figma__x`、`mcp__*`)
|
|
43
43
|
* **不再 422 / 400**,而是受理、开跑时收通告 `permission.allowed_tool_not_granted`(`detail.entries[].reason:"tool_name"`,带 `currentName`)—— 这些条目从来什么都不授予,
|
|
44
44
|
* 只是不再在提交时拦。依赖「写错名字当场被拒」的调用方改读那条通告。`deny` / `ask` 两桶里同一族照旧 **422**(句子换成引擎的,带现名);技能 `disallowedTools` 里照旧 **400**;
|
|
45
|
-
* 工具段为空的协议名(`mcp__srv__`)
|
|
45
|
+
* 工具段为空的协议名(`mcp__srv__`)在 **7.118.0–7.122.x** 每张表都拒(**7.123.0 起按面三分,见下一条**)。`settings.permissions.{ask,deny}` 里 `Skill(<名>)` / `Skill(<前缀>:*)` 现在受理(此前 422),参数面拼法
|
|
46
46
|
* `Skill(skill:<名>)` 现在 **422**;
|
|
47
47
|
* · **501 `capability.checkpoint_store_required`**(既有码,新来路)—— 装配里有审批名单(`APPROVAL_REQUIRE` / `APPROVAL_NEVER_AUTO` / `APPROVAL_DENY` 任一非空)或显式
|
|
48
48
|
* `DURABLE_APPROVAL=true`、却**没有检查点店** ⇒ 每个任务提交(含续跑腿)拒在一切副作用之前 ⇒ {@link import("../errors.js").CapabilityUnavailableError}。只有自己装配
|
|
49
49
|
* `resolveSpec` 的嵌入方会撞到(`sema-server` 起服对同一形早就拒启);7.117.0 上这一形是静默放行。出路在部署:给装配一只检查点店,或去掉名单;
|
|
50
|
-
* · 顶层请求键 `approvalReach`(见 {@link TaskRequest.approvalReach}):集外值 ⇒ **400** `request.field_invalid`。
|
|
50
|
+
* · 顶层请求键 `approvalReach`(见 {@link TaskRequest.approvalReach}):集外值 ⇒ **400** `request.field_invalid`。
|
|
51
|
+
*
|
|
52
|
+
* 🔴 **server ≥7.123.0(core 7.48.0 过境)—— 工具段为空的协议名(`mcp__<server>__` / `a2a__<peer>__`)按面三分**(7.118.0–7.122.x 它在每张表都拒):
|
|
53
|
+
* · **allow 面收 + 通告**:`settings.permissions.allow` 与请求自带技能的 `allowedTools` **受理**(由 422 / 400 变收);开跑时引擎把它读成 `tool_name`(判词 `unmintable_segment`)并发
|
|
54
|
+
* `permission.allowed_tool_not_granted`(server 原样过境,按 `engine_notice` 读)—— 与同面其他名字层条目同一读法;它从来不授予任何东西,只是不再在提交时拦。依赖「写成这样当场被拒」的调用方改读那条通告;
|
|
55
|
+
* · **deny / ask 面拒**:`settings.permissions.{deny,ask}` 照旧 **422**(句子是引擎的)、技能 `disallowedTools` 照旧 **400** `request.field_invalid`(句子换成引擎条目读法那一句);
|
|
56
|
+
* · **会话规则写口答 `400 rules.legacy_tool_name`**(`PUT /v1/sessions/:id/policy`、`POST /v1/sessions/:id/sync/import`;体带 `verdict: "unmintable_segment"`;7.116.0–7.122.x 是 `request.field_invalid`,
|
|
57
|
+
* 读法见 {@link import("../errors.js").BadRequestError})。 */
|
|
51
58
|
async submit(req, opts) {
|
|
52
59
|
return this.t.request({
|
|
53
60
|
method: "POST",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/resources/tasks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAA0B,MAAM,WAAW,CAAC;AAElE,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/resources/tasks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAA0B,MAAM,WAAW,CAAC;AAElE,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iEAkD6D;IAC7D,KAAK,CAAC,MAAM,CAAC,GAAgB,EAAE,IAA+D;QAC5F,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAmB;YACtC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI,EAAE,cAAc;YACpC,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;8GAK0G;IAC1G,KAAK,CAAC,SAAS,CAAC,GAAgB,EAAE,IAAiG;QACjI,MAAM,CAAC,GAA2C;YAChD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI,EAAE,cAAc;SACrC,CAAC;QACF,IAAI,IAAI,EAAE,OAAO;YAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5C,IAAI,IAAI,EAAE,MAAM;YAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,mDAAmD;QACnG,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;;;;;;;sGAYkG;IAClG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAgB,EAAE,IAAoL;QAClN,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5C,mGAAmG;QACnG,+FAA+F;QAC/F,IAAI,CAAC;YAAC,IAAI,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iDAAiD,CAAC,CAAC;QAC5F,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;gBACnF,sFAAsF;gBACtF,0EAA0E;gBAC1E,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,IAAI;oBAAE,SAAS;gBACzD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;gBAChD,oEAAoE;gBACpE,4EAA4E;gBAC5E,IAAI,KAAK,CAAC,EAAE;oBAAG,EAAwB,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;gBACtD,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ;oBAAE,OAAO;YACzD,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,6CAA6C;QACnF,CAAC;IACH,CAAC;CACF"}
|
package/dist/settings.d.ts
CHANGED
|
@@ -103,6 +103,10 @@ export interface SettingsPermissions {
|
|
|
103
103
|
* 🔴 **这条 422 的读法(7.117.0 起)**:`error` 句首是 `request settings cannot be applied as written: `(≤7.116.x 是另一句、带「tighten-only」字样的旧句首;三只桶共用这一个出口,旧句首对写收紧规则的调用方是误导、对 allow 桶是假话,所以换成不带方向的一句)——
|
|
104
104
|
* **别按句子分派,读 `errorCode`**:它不带自有码,落状态派生粗码 `request.unprocessable`(sdk 落 `BadRequestError`,`status` 422;不自动重试)。
|
|
105
105
|
* 请求自带技能的 `allowedTools`({@link import("./types.js").SkillSpec.allowedTools})与本键**同一读法**。
|
|
106
|
+
* 🔴 **上面「名字 ⇒ 整请求 422」这一判随 server 代际再变**:**server ≥7.118.0** 起 allow 侧的名字层交引擎 —— 退役名 / 无前缀短名 / 铸不出的协议名在 allow 桶**受理**,开跑时收
|
|
107
|
+
* `permission.allowed_tool_not_granted`(`entries[].reason:"tool_name"`),`deny` / `ask` 两桶这一族照旧 422;**server ≥7.123.0** 起连**工具段为空的协议名**(`mcp__<server>__` / `a2a__<peer>__`)在 allow 桶也受理
|
|
108
|
+
* (7.118.0–7.122.x 它在每张表都拒)。按面三分:allow 面**收 + 通告**,`deny` / `ask` 面**拒**(整请求 422),会话规则写口答 **`400 rules.legacy_tool_name`**
|
|
109
|
+
* (`verdict: "unmintable_segment"`,见 {@link import("./errors.js").BadRequestError})。同一条目的三种下场,读法单写在 `client.tasks.submit` 的动词注。
|
|
106
110
|
*
|
|
107
111
|
* **7.115.0–7.116.x(只有 `allowGrant`、没有 `allowLayer`)—— allow 规则(= 表态),不是名单,不是免问**(先探 `capabilities.settings.permissions.allowGrant === true`,键缺席 = 老 server、按名单读 —— 别投这只桶)。
|
|
108
112
|
* 一条 allow 规则命中 = **带理由的放行**,即给出「有人表态」:它回答的是**没人表态**的 MCP 服务器工具 / A2A 技能调用(否则询问类模式下那一问出一张 `askClass:"unstated"` 的卡,无审批面则拒);
|
|
@@ -129,8 +133,8 @@ export interface SettingsPermissions {
|
|
|
129
133
|
* this onto the core substrate (no engine `permissionMode` field): `default`=gate 非豁免路径写(toolPolicy+onAsk
|
|
130
134
|
* ask-list;scratchpad 目录/已记住的会话豁免不问,非「逐次无一例外问」)· `acceptEdits`=cwd 内自动批准 Edit/Write、
|
|
131
135
|
* 其余仍 gate(toolPolicy 合成;**仅当 server 侧有可信 cwd 可绑时**——沙箱执行道可能无 cwd 可接线,此时
|
|
132
|
-
* acceptEdits 退化为同 default 逐次问,非静默放宽,只是自动批准域比常见宿主道窄)· `plan
|
|
133
|
-
* (`handsReadOnly:true`+present_plan)· `bypassPermissions`= gate-shape 选择「不追加 mode 派生的 fs-write ask
|
|
136
|
+
* acceptEdits 退化为同 default 逐次问,非静默放宽,只是自动批准域比常见宿主道窄)· `plan`=引擎的 plan 模式
|
|
137
|
+
* (server ≥7.122.0:服务端不另加任何东西 —— 工具表与 `default` 同面、写与非只读调用在调用时由引擎的 plan 门问 / 拒;≤7.121.x:`handsReadOnly:true`+present_plan 的只读规划)· `bypassPermissions`= gate-shape 选择「不追加 mode 派生的 fs-write ask
|
|
134
138
|
* 门」——**恒不能放宽部署/operator 基线**(server 侧 tightenTaskSpec deny-wins 折叠照压,不是「开门」)· `auto`=
|
|
135
139
|
* server 侧发的 policy 与 `default` **完全相同**(task-settings.ts 同一分支);真正的 auto-mode classifier 由
|
|
136
140
|
* core `runtimeCaps.autoMode===true && deps.autoMode!==undefined` 单独武装(与请求携带的 mode 词**无关**)——
|
package/dist/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,8GAA8G;AAC9G,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,IAAI,EAAE,SAAS,CAAC;IAChB;;wJAEoJ;IACpJ,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iHAAiH;IACjH,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;;;;;;;;;;;;;gEAwB4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2GAA2G;IAC3G,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED;;;;yEAIyE;AACzE,MAAM,WAAW,aAAa;IAC5B;;;;;;mIAM+H;IAC/H,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,gIAAgI;IAChI,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC,iIAAiI;IACjI,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACzC,oDAAoD;IACpD,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,EAAE,GAAG,SAAS,CAAC;CACpD;AAED;;;0LAG0L;AAC1L,MAAM,WAAW,mBAAmB;IAClC
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
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
|
|
@@ -1460,6 +1464,58 @@ export interface ModelInfo {
|
|
|
1460
1464
|
routePairing?: RoutePairingStatus;
|
|
1461
1465
|
[k: string]: unknown;
|
|
1462
1466
|
}
|
|
1467
|
+
/**
|
|
1468
|
+
* `droppedEntries[].reasonCode` —— 一条目录条目为什么被读腿丢掉(server ≥7.123.0;词表属主 = 契约包 settings-schema 的 `DROPPED_ENTRY_REASON_CODES`,server 原样过境、不手抄不改写,
|
|
1469
|
+
* 包加词 ⇒ server 编译红、逼一次显式决定)。**闭三词**,序 = server 词出口的臂序:
|
|
1470
|
+
* · `entry-schema-invalid` —— 条目没过它自己的 schema;
|
|
1471
|
+
* · `entry-key-invalid` —— Record 形集合的键没过键 schema。目录是数组,所以今天不会出现在 `droppedEntries` 上(settings-schema 只在 Record 集合上铸它;模型域里那一形落在 `roles.<键>`,只进 server 日志)—— 消费端仍按整个闭集处置;
|
|
1472
|
+
* · `entry-unreadable` —— 判的过程抛了(病态访问器);引擎从不把它抛出的文案带出来。
|
|
1473
|
+
* 契约加词 = 一次 additive,本型随之加员;**认不出的词按「被丢,原因未知」渲**(switch 留 default 臂)。
|
|
1474
|
+
*/
|
|
1475
|
+
export type DroppedEntryReasonCode = "entry-schema-invalid" | "entry-key-invalid" | "entry-unreadable";
|
|
1476
|
+
/**
|
|
1477
|
+
* 被丢条目的**可披露身份**(契约包 settings-schema 的条目身份形 `{ name?, id?, enabled? }`)。`name` / `id` 只在是**可披露标识符**时出现(白名单字符集、无密钥形、无 URL userinfo;
|
|
1478
|
+
* server 在出口再问一次),不可披露 ⇒ 该键缺席 —— **不打码**(打过码的串不再是身份);`enabled` 是条目自己写的布尔(停用的被丢条目照样列出,带 `enabled: false`)。
|
|
1479
|
+
* 三键都没有 ⇒ `identity` 整个缺席(空对象不上 wire)。
|
|
1480
|
+
*/
|
|
1481
|
+
export interface DroppedEntryIdentity {
|
|
1482
|
+
name?: string;
|
|
1483
|
+
id?: string;
|
|
1484
|
+
enabled?: boolean;
|
|
1485
|
+
}
|
|
1486
|
+
/**
|
|
1487
|
+
* `GET /v1/models` 的 `droppedEntries` 的一行(server ≥7.123.0):本代目录里被读腿丢掉的一条。🔐 **零自由文本**:不带 schema 的诊断句、不带条目原值、不带 Record 键 —— 那些只走 server 本机日志。
|
|
1488
|
+
* · `index` —— 条目在**这次读到的那份目录文档** `models` 数组里的原下标(本地腿 = `config.d/models.json` 的位置;中心腿 = 中心发给本 worker 的那份目录);
|
|
1489
|
+
* · `reasonCode` —— {@link DroppedEntryReasonCode};
|
|
1490
|
+
* · `identity` —— {@link DroppedEntryIdentity};可缺。
|
|
1491
|
+
*/
|
|
1492
|
+
export interface DroppedEntry {
|
|
1493
|
+
index: number;
|
|
1494
|
+
reasonCode: DroppedEntryReasonCode;
|
|
1495
|
+
identity?: DroppedEntryIdentity;
|
|
1496
|
+
}
|
|
1497
|
+
/**
|
|
1498
|
+
* `GET /v1/models` 的 200 体(信封;{@link ModelsResource.list} 的返回型)。`models` / `default` / `defaultModel` 先前就有,本版起有了具名型(此前是 `list()` 上的内联形),新键挂在上面。
|
|
1499
|
+
* · `droppedEntries` —— server ≥7.123.0 恒在场的数组:**本代目录里被读腿逐条丢掉的条目**(条目不合 settings-schema 的 `ModelEntry` 形,目录其余条目照常服务)。壳 / 管理面据此知道「我写下的哪一条引擎没收、为什么」,
|
|
1500
|
+
* 不必自己再判一遍 schema。**键缺席 = 更早的 server**(≤7.122.x);零条被丢 = `[]`(在场的空数组),没有目录在管(env 腿)同样是 `[]` —— 消费端据此分「引擎说没丢」(`[]`)与「引擎说不了」(缺席 ⇒ 用自己的判官)。
|
|
1501
|
+
* 所以本型把它写成可选:本包的 server 支持底线是 `3.0.0`。
|
|
1502
|
+
* · **与 `models` 同一代**:两者是同一代目录的两面。候选的模型面这一组被拒时(例如默认模型不在目录里),或候选目录**一条启用条目也没有**时(幸存条目与被丢条目都按条目自己写的 `enabled` 算,
|
|
1503
|
+
* 被丢行读不出启用与否按启用算),`models` 与 `droppedEntries` 一起停在上一代 —— 本键**不报**那份没落地候选的条目(那份候选为什么落不了地,读 `/health.modelRefusals`);
|
|
1504
|
+
* 所以停用的被丢条目只在「有启用条目、模型面落了地」的目录里上本键。
|
|
1505
|
+
* · 与 `/health.modelRefusals` 分工(不是同一问):那张表答「本机**不服务**哪几个名、引擎的拒因码」,本键答「本代目录里**读腿丢了**哪几条、schema 的原因词」(含无名 / 停用的行,描述正在服务的这一代)。
|
|
1506
|
+
* · 升级窗:7.122.x 及以前写的盘上 LKG 只记了「有名且启用」的被丢条目;从它起服、配置中心还断着的那段时间,本键只列它记下的那几行(可能是 `[]`),中心可达后的第一拍拉取补全。
|
|
1507
|
+
*/
|
|
1508
|
+
export interface ModelsResponse {
|
|
1509
|
+
models: ModelInfo[];
|
|
1510
|
+
/** 部署默认模型 id(展示用;legacy id 形,字节不动;内部 `default` 别名已隐藏)。 */
|
|
1511
|
+
default: string;
|
|
1512
|
+
/** 同一个默认模型,`{id, name?}` 一件给齐:`name` = 目录里与 `config.model` 同一实例的 `@handle`,未命中(如 env 单模型车道)则省略,不是空串。 */
|
|
1513
|
+
defaultModel: {
|
|
1514
|
+
id: string;
|
|
1515
|
+
name?: string;
|
|
1516
|
+
};
|
|
1517
|
+
droppedEntries?: DroppedEntry[];
|
|
1518
|
+
}
|
|
1463
1519
|
/** §cost/usage 面板(service `GET /v1/usage`,实测形态已按源审计)—— per-principal 成本配额 + 单任务上限。
|
|
1464
1520
|
* CLI `/cost` `/usage` 面板 + 门B 用量条据此渲染真数据(取代静态占位)。🔴 owner-scoped:worker 据 request principal 自算。
|
|
1465
1521
|
* 无配额时 `enabled:false` + 仅 `windowSec`/`maxTask*`(金额/limit 字段缺)→ 渲染须容缺。permissive 开集容未来字段。 */
|
|
@@ -2446,8 +2502,10 @@ export type PermissionMode = "default" | "acceptEdits" | "plan" | "auto" | "bypa
|
|
|
2446
2502
|
* K-37 扩项 / server ≥7.109.0(S-934 ②)起也在审批面:活卡帧 / 卡面 / 运维队列行 / `/stream` `pending` 帧的 `askClass` / `classes`
|
|
2447
2503
|
* (同样经 core `isAskClass` 筛,读不出整对不投;见 {@link import("./resources/tool-approvals.js").ToolApprovalFrame.askClass})。
|
|
2448
2504
|
* 🔴 **门记录这一面是真闭集**(server 按 core `isAskClass` 筛,出集整条不上帧)。`bypassPermissions` 只放行其中**可放**的十类
|
|
2449
|
-
* (
|
|
2450
|
-
* `artifact_shared_read` / `mode` / `unstated` / `ordinary`)
|
|
2505
|
+
* (每一面都可放:`transcript_write` / `rule_unreadable` / `probe` / `write_protection` / `tool_marks_mcp` / `tool_marks_a2a` /
|
|
2506
|
+
* `artifact_shared_read` / `mode` / `unstated` / `ordinary`)—— 另加:core 7.47.0 / server ≥7.122.0 起,**壳面**(线名恰为 `Bash` / `Monitor`、声明了写路径目标的调用方工具)
|
|
2507
|
+
* 还放第十一类 `write_protection_unresolved`(core `releasableAskClassesFor(face)`:壳面 11、其余面 10;≤7.121.x 的 `RELEASABLE_ASK_CLASSES` 常量在 core 7.47.0 已删;
|
|
2508
|
+
* 文件工具上这一类照拒);其余(`operator_forced` 部署出身、`ask_rule` / `org_rule`、`hook`、`ancestor`、`content_question`、
|
|
2451
2509
|
* `dangerous_delete`(core 7.45.0)、`unverifiable_delete`、`governance_unavailable`、`policy_rra`、`requires_user_interaction` …)任何模式下都照问。
|
|
2452
2510
|
*
|
|
2453
2511
|
* 🔴 **`requires_user_interaction`(core 7.41.0;server ≥7.116.0 提货)= 服务器声明「这只工具每次都要用户在场」**:MCP 服务器在工具申报里声明
|
|
@@ -2494,8 +2552,16 @@ export interface ModeRelease {
|
|
|
2494
2552
|
origin?: AskOrigin;
|
|
2495
2553
|
/** 卡上本会显示的强制词(六词闭集,见 {@link PersistedRuleMandate})。 */
|
|
2496
2554
|
mandate?: PersistedRuleMandate;
|
|
2497
|
-
/**
|
|
2498
|
-
|
|
2555
|
+
/**
|
|
2556
|
+
* 🔴 放行**越过了什么**:一个词,取 core `MODE_RELEASE_REASONS` 数组序里这只 ask 的类集持有的**第一位**;类集不持有任何成员 ⇒ 缺席。
|
|
2557
|
+
* 🔴 **闭集**(server 按 core `isModeReleaseReason` 筛,出集整条 `gate` 不上帧;core 加词本筛随之放行,所以按词分派的消费端要认新词):
|
|
2558
|
+
* · `"rule_unreadable"` —— 放行越过了一条**这次调用读不出**的规则(规则店读不出 —— 安全轴 fail-open 方向,server 单列披露);
|
|
2559
|
+
* · `"write_protection_unresolved"`(server ≥7.122.0 / core 7.47.0 起上 wire)—— 放行越过了一次**写保护判官解不出目标**的写(它落不落在受保护表上是未知)。
|
|
2560
|
+
* 只在**壳面**放:线名恰为 `Bash` / `Monitor`、且声明了写路径目标的**调用方工具**,在 `bypassPermissions` 下;文件工具上同一类问照拒(`deniedBy: "mode"`)。
|
|
2561
|
+
* 引擎自带的 `Bash` / `Monitor` 铸不出这一类,server 自己也不挂这样的工具 —— 它出自调用方(嵌入方)自带的同名工具。
|
|
2562
|
+
* 7.122.0 / core 7.47.0 之前这里只有 `"rule_unreadable"` 一个词。
|
|
2563
|
+
*/
|
|
2564
|
+
reason?: "rule_unreadable" | "write_protection_unresolved";
|
|
2499
2565
|
}
|
|
2500
2566
|
/**
|
|
2501
2567
|
* 这一次分类的**模型归属**(core 7.18.0 #742 `AutoModeClassifierRound`,server ≥7.78.0)——「这次 auto 模式
|
|
@@ -3013,7 +3079,9 @@ export type TraceBlock = {
|
|
|
3013
3079
|
* whitelisted at append). MULTIPLE per task on cascade/verify runs.
|
|
3014
3080
|
* - `turn` — `{ seq, tokens? }` a turn boundary (+ usage if present).
|
|
3015
3081
|
* - `done` — `{ seq, suspended? }` terminal (suspended:true = paused on HITL, NOT completed).
|
|
3016
|
-
* - `error` — `{ errorCode, message }` terminal failure / `WORKER_DOWN` (stalled) / `STREAM_MAX_DURATION`
|
|
3082
|
+
* - `error` — `{ errorCode, message }` terminal failure / `WORKER_DOWN` (stalled) / `STREAM_MAX_DURATION` /
|
|
3083
|
+
* `draining` (server >= 7.122.0: the instance entered drain, the server closes the stream right after the frame —
|
|
3084
|
+
* reconnect to the replacement instance)
|
|
3017
3085
|
* (机器键 = `errorCode`,与 HTTP 错误体同一个单键;server 3.0.0 [1989]/[1990]).
|
|
3018
3086
|
* - `heartbeat` — `{}` keep-alive (the SDK reader swallows these; not yielded). */
|
|
3019
3087
|
/** Facade note (2026-07-24 audit): `data` used to be a bare `Record<string, unknown>` for every `event` —
|
|
@@ -3306,6 +3374,9 @@ export interface SkillSpec {
|
|
|
3306
3374
|
* 值形:字符串数组(含空数组)⇒ 受理;裸串 / 含非串 / 对象 ⇒ 400 `request.field_invalid`;协议名的服务器段铸不出 / 缺段 / 带通配(`mcp__*`)⇒ 400
|
|
3307
3375
|
* (顶层 `skills[]` 与子代 `agents[].skills[]` 两处受理口同判)。🔴 **7.117.0 起另有两道**(两张清单、顶层与子代两处受理口同判):**名字层**与 `settings.permissions.allow` 同一只判官 —— 退役名 / 无前缀短名(例 `Task`)
|
|
3308
3376
|
* 提交即 400(7.116.x 受理,引擎读作一个永不命中的名字);每张清单**超过 1000 条** ⇒ 400(句子给写法「合并成更宽的条目」;7.116.x 无帽)。
|
|
3377
|
+
* 🔴 **名字层的读法随 server 代际再变(上面两处「提交即 400」只对 7.116.x–7.117.x 成立)**:**server ≥7.118.0** 起 allow 侧的名字层交引擎 —— 退役名 / 无前缀短名 / 铸不出的协议名**受理**,开跑时收
|
|
3378
|
+
* `permission.allowed_tool_not_granted`(`entries[].reason:"tool_name"`);**server ≥7.123.0** 起连**工具段为空的协议名**(`mcp__<server>__` / `a2a__<peer>__`)在本清单也受理(7.118.0–7.122.x 400)。
|
|
3379
|
+
* 按面三分:allow 面(本清单、`settings.permissions.allow`)**收 + 通告**;deny 面(`disallowedTools`、`settings.permissions.{deny,ask}`)**拒**;会话规则写口答 **`400 rules.legacy_tool_name`**。
|
|
3309
3380
|
* 🔴 **先探 `capabilities.skillToolLists`**:位缺席 = 老 server ⇒ 顶层技能上的两只清单**照收但引擎不读**(静默不生效,没有 400 可探 ——
|
|
3310
3381
|
* 别指望清单拦得住工具,圈工具用 deny 规则),子代技能上是未知键整条拒。
|
|
3311
3382
|
* 🔴 `manifest` 键 server ≥7.116.0 **提交即拒**(顶层 400 `request.field_invalid`、子代整条技能拒);改写 `manifest.allowTools` → 本键;
|
|
@@ -3318,7 +3389,9 @@ export interface SkillSpec {
|
|
|
3318
3389
|
* 为什么拒:一条以为拒了、其实什么也不拒的条目,比没有更坏(≤7.116.x 受理这种条目,只发一条 operator 受众、不上会话流的通告;**那个旧码已改名**为 `permission.allowed_tool_not_granted`,user 受众、上会话流 —— 见 `engine_notice` 臂)。
|
|
3319
3390
|
* 🔴 **续跑同判**:升级时还停驻、提交体里带这种条目的任务,续跑 ⇒ 认领之前 **409 `resume_blocked_by_policy`**(`blockedBy:"request.field_invalid"`,`error` 带同一句;行与卡一个字节不动,出路 = 取消、改好条目重提;
|
|
3320
3391
|
* 终态 run 的 `POST /v1/runs/:id/steer` 在铸唤醒卡之前当场同答)—— 因为引擎 7.41 去首尾空白(`"Bash "` 曾是一条有效的拒)而 7.42 逐字读(读成空),不判就是升级后那条拒无声消失。
|
|
3321
|
-
* allow 侧不拒(`allowedTools` 里读成空的条目发通告)。位缺席 = 老 server(见 {@link allowedTools})。
|
|
3392
|
+
* allow 侧不拒(`allowedTools` 里读成空的条目发通告)。位缺席 = 老 server(见 {@link allowedTools})。
|
|
3393
|
+
* 🔴 **工具段为空的协议名(`mcp__<server>__` / `a2a__<peer>__`)在本清单照旧拒**(400 `request.field_invalid`;server ≥7.123.0 起 `error` 是引擎条目读法那一句,`… reads as nothing (tool_name) …`),
|
|
3394
|
+
* 而 `allowedTools` 里同一条目 server ≥7.123.0 起受理 + 通告 —— 同一条理由:读成空的 deny 条目看着像拒、其实什么也不拒,读成空的 allow 条目只是不放行、有通告可看。 */
|
|
3322
3395
|
disallowedTools?: string[];
|
|
3323
3396
|
}
|
|
3324
3397
|
/** A per-request MCP server (CC `.mcp.json` parity) — core-native `McpServerSpec` shape (core types.ts:277).
|
|
@@ -3421,12 +3494,16 @@ export interface McpToolFace {
|
|
|
3421
3494
|
/** Worker capability map (`GET /v1/capabilities`). Open set — ignore unknown keys. Booleans
|
|
3422
3495
|
* share deps with the route gates ("says yes but 501s" is structurally impossible, producer-tested). */
|
|
3423
3496
|
/**
|
|
3424
|
-
* `permissionModeAuto` 的**武装未达成因由**(server `AUTO_MODE_UNARMED_REASONS`
|
|
3425
|
-
* 🔴
|
|
3426
|
-
*
|
|
3427
|
-
*
|
|
3497
|
+
* `permissionModeAuto` 的**武装未达成因由**(server `AUTO_MODE_UNARMED_REASONS` **闭七词**,序 = 判序;server ≥7.123.0 为七词,≤7.122.x 为六词 —— 多出来的是 `operator_floor`)。
|
|
3498
|
+
* 🔴 **按开集读**:词表已经从四词长到六词、再到七词,server 再加员时未知词必须落进 `default` 臂当「未知因由」,不许被当成「没有因由」。
|
|
3499
|
+
* `local_denied`(本机 `PERMISSIONS_DISABLE_AUTO_MODE`)与 `org_denied`(center deny)**分词就是为了让壳指不同的路**(改本机 env vs 找组织),消费端别把两者折在一起;
|
|
3500
|
+
* 同理 `operator_floor` 与 `mode_not_auto` 分词:前者的出路在运维换档,后者的出路在请求的词。
|
|
3501
|
+
* · `mode_not_auto` —— 本次意图不是 auto(`?permissionMode=` 查询串给的),且那个词原样到得了引擎(本部署的入口地板没改它);
|
|
3502
|
+
* · `operator_floor`(**server ≥7.123.0**)—— 本部署的运维入口地板(`AUTONOMY=plan`)把**本次意图**改成了别的词、那个词不是 auto:能到引擎的词由运维定,出路是请运维换档,改请求的词到不了 auto。
|
|
3503
|
+
* `AUTONOMY=plan` 的部署上,意图缺席(按 auto 意图答)/ `auto` / 任何比 `plan` 松的词都读这一词;意图本身是 `plan` 时仍是 `mode_not_auto`(词原样到了引擎,不是地板改的)。
|
|
3504
|
+
* **server ≤7.122.x 对这两种都答 `mode_not_auto`**(读不出「是谁定了那个词」)。
|
|
3428
3505
|
*/
|
|
3429
|
-
export type AutoModeUnarmedReason = "mode_not_auto" | "deployment_incapable" | "org_denied" | "local_denied" | "settings_denied" | "resolver_fault" | (string & {});
|
|
3506
|
+
export type AutoModeUnarmedReason = "mode_not_auto" | "operator_floor" | "deployment_incapable" | "org_denied" | "local_denied" | "settings_denied" | "resolver_fault" | (string & {});
|
|
3430
3507
|
/** 三代形共有的三位 —— server **≤7.56.0 只发这三位**(见 {@link PermissionModeAutoCapability})。 */
|
|
3431
3508
|
interface PermissionModeAutoBase {
|
|
3432
3509
|
/** 提交面按闭集收 `"auto"`(server 写的是字面量,恒 `true`)。 */
|
|
@@ -3474,7 +3551,7 @@ export type PermissionModeAutoCapability =
|
|
|
3474
3551
|
reason?: undefined;
|
|
3475
3552
|
model?: string;
|
|
3476
3553
|
})
|
|
3477
|
-
/** **server ≥7.57.0** · 不会武装 ⇒ `reason` 必在场(
|
|
3554
|
+
/** **server ≥7.57.0** · 不会武装 ⇒ `reason` 必在场(闭七词,按开集分支;第七词 `operator_floor` 随 server ≥7.123.0)。 */
|
|
3478
3555
|
| (PermissionModeAutoBase & {
|
|
3479
3556
|
armed: false;
|
|
3480
3557
|
reason: AutoModeUnarmedReason;
|
|
@@ -3529,6 +3606,11 @@ export interface Capabilities {
|
|
|
3529
3606
|
maxFileBytes?: number;
|
|
3530
3607
|
[k: string]: unknown;
|
|
3531
3608
|
};
|
|
3609
|
+
/** `POST /v1/leader` 车道位。**server ≥7.122.0 读两个条件的合取**:leader 面在场(`LEADER_ENABLED` 等挂着)**且**运维入口地板收 leader 提交 ——
|
|
3610
|
+
* 后者与受理口 422 `request.autonomy_lane_refused` 读**同一对判据**(入口词是 `plan` 的 leader run 没有计划审阅通道)。所以运维 `AUTONOMY=plan` 的部署上本位读 **false**
|
|
3611
|
+
* (直接提交仍答 422 `request.autonomy_lane_refused`);`AUTONOMY=read-only` / `ask` / 缺席时本位随面在场。面缺席的 false 在提交时答 501 `capability.leader_endpoint_required`
|
|
3612
|
+
* (≤7.115.x 答 404 `not_found.route`)—— 两种 false 按提交答的 `errorCode` 分,或事先读 `client.policy` 的 `autonomy`。
|
|
3613
|
+
* ≤7.121.x(历史读法):本位只读面在场,`AUTONOMY=plan` 的部署上仍是 true,不预言受理。 */
|
|
3532
3614
|
leader?: boolean;
|
|
3533
3615
|
/** 🔴 K-2(core SHIPPED 1.155.0;service `src/http/routes/capabilities.ts`)—— worker 支持工作流编排。
|
|
3534
3616
|
* 🔴 更正:这一位的谓词**不是** `Boolean(deps.workflowRunStore)`,而是
|
|
@@ -3756,6 +3838,8 @@ export interface Capabilities {
|
|
|
3756
3838
|
* **内容形受理**(`Bash(git:*)`、`Read(//dir/<glob>)`);引擎读成空的条目(`*`、写路径 / 域名形、带空白的名字、`Read(~/…)`)**不拒**,开跑时收 `engine_notice` `permission.allowed_tool_not_granted`(user 受众);
|
|
3757
3839
|
* 清不掉的:任何一层的 deny / ask 规则、运维强制类(`APPROVAL_REQUIRE` / `APPROVAL_NEVER_AUTO` / `MANUAL_MODE_SHELL_GATE=always` / 写保护 / 敏感写 / 治理)、hook 的问、plan 的问 —— 清不掉而命中时卡上带 `allowRuleShadowed`
|
|
3758
3840
|
* ({@link import("./resources/tool-approvals.js").ToolApprovalFrame.allowRuleShadowed});受理口只判**名字**(退役名 / 无前缀短名 / 协议名对端段铸不出 ⇒ 422)与条数(≤1000,超了 400),内容不判。
|
|
3841
|
+
* 🔴 **名字这一判 server ≥7.118.0 起 allow 侧交引擎**(退役名 / 短名 / 铸不出的协议名受理 + 通告,`deny` / `ask` 仍 422);**server ≥7.123.0** 起工具段为空的协议名(`mcp__<server>__`)在 allow 侧也**收 + 通告**
|
|
3842
|
+
* (细节见 {@link SettingsPermissions.allow})。
|
|
3759
3843
|
* 🔴 **键缺席 = 7.115.0–7.116.x(allow 只表态:不放掉内置工具的写门 / shell 检查,内容形整请求 422)或更老 —— 别指望内置工具免问、别投内容形**。
|
|
3760
3844
|
* ⚠️ 与 `taskSettings.permissions` 不是一件事:那一位不变、仍是布尔(只说「受理这一面」,读 `=== true` 的旧端不失明);判 allow 的读法只看本位。
|
|
3761
3845
|
* 运维侧「替谁表了态」(env `APPROVAL_GRANT`)不在能力面,在 operator 诊断面 {@link ServerWiringGates.approvalGrant}。 */
|
|
@@ -4071,12 +4155,12 @@ export interface Capabilities {
|
|
|
4071
4155
|
* · ~~`intentArming`~~ —— ⚰️ K-35:7.57.0–7.106.0 在这里还有一只「意图武装式 / 旧式 org 授予」极性位(7.106.0 起单极恒真),
|
|
4072
4156
|
* server 7.107.0 起**恒缺席**(wire-changes R2),本包删声明;缺席不是「旧式极性」—— 读下面两键;
|
|
4073
4157
|
* · `armed` —— **此刻会不会武装**(按当前运行时真值答;旧式 core 下按旧谓词答,不得假阴);
|
|
4074
|
-
* · `reason` —— **仅** `armed:false` 时在场,server
|
|
4158
|
+
* · `reason` —— **仅** `armed:false` 时在场,server 闭七词集(`AUTO_MODE_UNARMED_REASONS`;{@link AutoModeUnarmedReason}:`operator_floor` 是 server ≥7.123.0 的第七词)。
|
|
4075
4159
|
* `local_denied` = 本机 `PERMISSIONS_DISABLE_AUTO_MODE`,`org_denied` = center deny ——
|
|
4076
|
-
* **分词就是为了让壳指不同的路**(改本机 env vs 找组织)。按开集读:server
|
|
4160
|
+
* **分词就是为了让壳指不同的路**(改本机 env vs 找组织)。按开集读:server 已经从四词长到六词、再到七词。
|
|
4077
4161
|
* · `model` —— 分类器**配置**的模型路由(core 的 role 回落链 `classifier → summarize → default`);
|
|
4078
4162
|
* 解不出时 server **不写这个键**(把 core 的拒句当数据记进日志,读面不 500)。
|
|
4079
|
-
* 🔴 查询串 `?permissionMode=<模式词>` 把「本次意图」折进裁决(缺席 = 按 auto 意图答;server ≥7.119.0 收六词,`dontAsk` 答 `armed:false` / `reason:"mode_not_auto"`,≤7.118.x
|
|
4163
|
+
* 🔴 查询串 `?permissionMode=<模式词>` 把「本次意图」折进裁决(缺席 = 按 auto 意图答;server ≥7.119.0 收六词,`dontAsk` 答 `armed:false` / `reason:"mode_not_auto"`,≤7.118.x 只收五词;🔴 server ≥7.123.0 在运维 `AUTONOMY=plan` 的部署上,意图缺席 / `auto` / `dontAsk` 这类比 `plan` 松的词读 `reason:"operator_floor"`〔入口地板改了词〕,意图 `plan` 本身仍 `mode_not_auto`);闭集之外
|
|
4080
4164
|
* server 回 **400 `request.field_invalid`**(读面也不静默折词)。 */
|
|
4081
4165
|
permissionModeAuto?: PermissionModeAutoCapability;
|
|
4082
4166
|
/** READ 容纳面的**生效档**披露位(server `routes/capabilities.ts:484` = `deps.config.readFace ?? null`;#A4)。
|
|
@@ -4233,11 +4317,13 @@ export interface Capabilities {
|
|
|
4233
4317
|
* ⚠️ 缺席 = 老 server(<7.87.1)⇒ 判不出推面带不带 live 族,**别把「等不到 `live_pending`」读成「这台不推」**
|
|
4234
4318
|
* ——两者在老 server 上不可分,按 `GET /v1/approvals` 的 `livePending` 拉面兜底。 */
|
|
4235
4319
|
approvalsStreamLive?: boolean;
|
|
4236
|
-
/** **写容纳面的披露位**(server ≥7.95.0 / S-591;7.96.0 S-613 改值义;铸点 `routes/capabilities.ts
|
|
4237
|
-
* `taskWriteFaceRefusal(deps.config) === undefined &&
|
|
4320
|
+
/** **写容纳面的披露位**(server ≥7.95.0 / S-591;7.96.0 S-613 改值义;铸点 `routes/capabilities.ts` =
|
|
4321
|
+
* `taskWriteFaceRefusal(deps.config) === undefined && autonomyKeepsOpenWriteFace(deps.config.autonomy)`〔server ≥7.122.0;≤7.121.x 的右半是
|
|
4322
|
+
* `autonomyOverrides(deps.config.autonomy).writeFace !== "roots"`〕)——
|
|
4238
4323
|
* 这台部署认不认任务层「掀开写围栏」那条声明(`permissionMode:"bypassPermissions"` 派生的 `TaskSpec.writeFace:"open"`,
|
|
4239
4324
|
* 工作区根**之外**也能写)。`false` 有两形:① 托管门拒 ⇒ 发那个模式拿 `422 request.host_posture_refused`;
|
|
4240
|
-
* ② 部署 `AUTONOMY=read-only
|
|
4325
|
+
* ② 部署 `AUTONOMY=read-only` ⇒ 请求照常受理,但写面被钳回 roots —— 声明落空;server ≥7.122.0:`AUTONOMY=plan` 同样读 `false`,成因是入口模式词在受理时被钳成 `plan`
|
|
4326
|
+
* (跑引擎的 plan 模式、不跑 `bypassPermissions`;≤7.121.x 它与 `AUTONOMY=read-only` 同是「只读手 + 写面 roots」的钳,托管部署上发 bypass 还会 422 `request.host_posture_refused`,现在受理并在 plan 里起步)。三态压成一位是刻意的
|
|
4241
4327
|
* (调用方要做的决定只有一个:还发不发那个键);档位与证据在拒因与 operator 的 `GET /v1/diagnostics/wiring`。
|
|
4242
4328
|
* ⚠️ 它**只**说写容纳面这一格 —— `bypassPermissions` 其余两列不受本位影响。
|
|
4243
4329
|
* 🔴 K-32 扩项(server ≥7.106.0 / S-895):它**不是** {@link TaskRequest.inheritEnv} `"all"` 的读数 —— 两者共用托管门那一只射程谓词,但本位
|
|
@@ -5725,18 +5811,24 @@ export interface PlanReviewRequest {
|
|
|
5725
5811
|
editedPlan?: string;
|
|
5726
5812
|
reason?: string;
|
|
5727
5813
|
/**
|
|
5728
|
-
* 🔴 **批准计划之后这条 task 继续跑在哪一档权限模式**(server ≥7.86.0
|
|
5729
|
-
*
|
|
5730
|
-
* 计划批了,可写工具仍然逐次征询,只读钳没有解除。
|
|
5814
|
+
* 🔴 **批准计划之后这条 task 继续跑在哪一档权限模式**(server ≥7.86.0)—— 把计划带出 plan 的决定把这一位写回这条任务的存储体,
|
|
5815
|
+
* 此后每一次挂起→续跑都沿用它,不回 plan。
|
|
5731
5816
|
*
|
|
5732
5817
|
* · `"acceptEdits"` —— 批准后按「接受编辑」跑(写不再逐次征询);
|
|
5733
5818
|
* · `"default"` —— 批准后仍每次写都征询(**= 缺席时的折叠值**,所以老壳一行不改也能执行计划)。
|
|
5819
|
+
* 🔴 **server ≥7.122.0:plan 只有引擎一个判官,服务端没有只读钳可解**:工具表与 `default` 同面,写与非只读调用在**调用时**由引擎的 plan 门问(有人可答)/ 拒(无人可答)。
|
|
5820
|
+
* ≤7.121.x 服务端另把 plan 翻成只读手;7.86.0 之前批准计划是一张**空头支票**(计划批了、只读钳还在、每次写仍征询),这一位就是为它加的;
|
|
5821
|
+
* 7.86.0–7.121.x 上 `edit` 带这一位也是 400,`edit` 本身写回 `plan`、续跑仍被只读手钳着。这些在 7.122.0 都已不存在。
|
|
5822
|
+
* (部署 `AUTONOMY=read-only` 的静态围栏是另一件事:server 7.122.0 起治理层每段续跑重折的只剩这类静态围栏,与计划批准无关,批准不会也不该解开它。)
|
|
5734
5823
|
* 🔴 **闭集只有这两个词**:`"plan"` / `"bypassPermissions"` 之类一律 400 `request.field_invalid`
|
|
5735
5824
|
* (零宽臂 —— 这一位选的是批准之后模型有没有手,把拼错的词折成任一档都是安全轴上的静默降级)。
|
|
5736
|
-
* 🔴
|
|
5737
|
-
*
|
|
5738
|
-
*
|
|
5739
|
-
* `
|
|
5825
|
+
* 🔴 **只配把计划带出 plan 的决定:`approve` 与 `edit`**(server ≥7.122.0;判据与引擎同句 —— 只有 `reject` 不出 plan):`reject` 带它 ⇒ 400 `request.field_conflict`,
|
|
5826
|
+
* 服务端句 `permissionModeAfter is only valid with a decision that carries the plan out ('approve' or 'edit'; got 'reject')`
|
|
5827
|
+
* (`reject` 把评审意见送回去重做计划、plan 保留 —— 在那里静默丢掉它,调用方会以为自己已经把模式说定了)。≤7.121.x 上只有 `approve` 收这一位,`edit` 带它同样是 400。
|
|
5828
|
+
* 🔴 **只对存储模式词是 `plan` 的 task 成立**(server ≥7.122.0 起 run 的模式词只有存储体一个源):该 task 的存储词不是 plan(模型自己进的 plan,批准由引擎把它送回进 plan 之前的档)⇒
|
|
5829
|
+
* 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`。
|
|
5830
|
+
* plan 起步 = 请求选的,或运维 `AUTONOMY=plan` 在提交入口盖下的 —— 后者的存储词就是 plan,这一位照收。
|
|
5831
|
+
* 🔴 三条 400 一律**按码匹配**(`request.field_invalid` / `request.field_conflict`),不按句子 —— 两句 `request.field_conflict` 的文案在 7.122.0 改过(码不变)。
|
|
5740
5832
|
* ⚠️ 它**不是**一个能顺带关掉征询面的旋钮 —— 两个词之外没有第三档。
|
|
5741
5833
|
* ⚠️ **直连门部署**:本键进 HMAC 信封的**尾位扩展对象**(server 7.87.0 起 `{answer?, permissionModeAfter?}`,
|
|
5742
5834
|
* 在场键按字典序;7.86.0 的裸尾位形已删、零双读)⇒ 签名器必须按新形签,混版两向皆 401。
|