@sema-agent/sdk 26.1.0 → 27.0.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 +81 -1
- package/dist/abort.d.ts +25 -0
- package/dist/abort.d.ts.map +1 -0
- package/dist/abort.js +42 -0
- package/dist/abort.js.map +1 -0
- package/dist/client.d.ts +8 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -4
- package/dist/client.js.map +1 -1
- package/dist/control-client.d.ts +4 -2
- package/dist/control-client.d.ts.map +1 -1
- package/dist/control-client.js +3 -3
- package/dist/control-client.js.map +1 -1
- package/dist/errors.d.ts +32 -10
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +15 -6
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +3 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/model-route-env/index.d.ts +11 -4
- package/dist/model-route-env/index.d.ts.map +1 -1
- package/dist/model-route-env/index.js +52 -3
- package/dist/model-route-env/index.js.map +1 -1
- package/dist/registry/auth.d.ts.map +1 -1
- package/dist/registry/auth.js +23 -13
- package/dist/registry/auth.js.map +1 -1
- package/dist/registry/client.d.ts +9 -1
- package/dist/registry/client.d.ts.map +1 -1
- package/dist/registry/client.js +17 -2
- package/dist/registry/client.js.map +1 -1
- package/dist/registry/read-body.d.ts +2 -0
- package/dist/registry/read-body.d.ts.map +1 -0
- package/dist/registry/read-body.js +24 -0
- package/dist/registry/read-body.js.map +1 -0
- package/dist/registry/scopes-effective.d.ts.map +1 -1
- package/dist/registry/scopes-effective.js +4 -2
- package/dist/registry/scopes-effective.js.map +1 -1
- package/dist/resources/approvals.d.ts +23 -8
- package/dist/resources/approvals.d.ts.map +1 -1
- package/dist/resources/approvals.js +4 -3
- package/dist/resources/approvals.js.map +1 -1
- package/dist/resources/attachments.d.ts +2 -1
- package/dist/resources/attachments.d.ts.map +1 -1
- package/dist/resources/attachments.js +3 -9
- package/dist/resources/attachments.js.map +1 -1
- package/dist/resources/fleet.d.ts +0 -36
- package/dist/resources/fleet.d.ts.map +1 -1
- package/dist/resources/fleet.js +40 -1
- package/dist/resources/fleet.js.map +1 -1
- package/dist/resources/ops.d.ts +2 -1
- package/dist/resources/ops.d.ts.map +1 -1
- package/dist/resources/ops.js +4 -6
- package/dist/resources/ops.js.map +1 -1
- package/dist/resources/session-sync.d.ts +11 -3
- package/dist/resources/session-sync.d.ts.map +1 -1
- package/dist/resources/session-sync.js +7 -8
- package/dist/resources/session-sync.js.map +1 -1
- package/dist/resources/sessions.d.ts +9 -3
- package/dist/resources/sessions.d.ts.map +1 -1
- package/dist/resources/sessions.js +10 -12
- package/dist/resources/sessions.js.map +1 -1
- package/dist/resources/tool-approvals.d.ts +14 -5
- package/dist/resources/tool-approvals.d.ts.map +1 -1
- package/dist/resources/tool-approvals.js +14 -6
- package/dist/resources/tool-approvals.js.map +1 -1
- package/dist/sse.d.ts.map +1 -1
- package/dist/sse.js +4 -4
- package/dist/sse.js.map +1 -1
- package/dist/transport.d.ts +61 -21
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +123 -25
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +30 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/openapi.yaml +88 -26
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/registry/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/registry/auth.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,oDAAoD;AACpD,eAAO,MAAM,mBAAmB;;;;;;CAMtB,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,0BAA0B,iDAAiD,CAAC;AAEzF;;;wCAGwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB;oDACgD;IAChD,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,cAAc;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;gGACgG;AAChG,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,QAAQ,CAAC;IACrB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AA8BD,iEAAiE;AACjE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAC7E,OAAO,CAAC,kBAAkB,CAAC,CAS7B;AAED;;;;;qCAKqC;AACrC,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,GAAG,UAAU,GAAG,YAAY,CAAC,EAC3E,IAAI,EAAE;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACjH,OAAO,CAAC,kBAAkB,CAAC,CA2B7B;AAED;;6CAE6C;AAC7C,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC1E,OAAO,CAAC,kBAAkB,CAAC,CAiB7B;AAED;2DAC2D;AAC3D,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC1E,OAAO,CAAC,IAAI,CAAC,CAUf"}
|
package/dist/registry/auth.js
CHANGED
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* WIRE CASING:OAuth 标准端点,wire 字段 snake_case(access_token/device_code/…)——故意破本包
|
|
12
12
|
* camelCase 习惯,勿"修"(settings-schema 同句)。
|
|
13
13
|
*/
|
|
14
|
+
import { sleep as abortableSleep, throwIfAborted } from "../abort.js";
|
|
14
15
|
import { OAuthFlowError, RegistryApiError } from "./errors.js";
|
|
16
|
+
import { readJsonBody } from "./read-body.js";
|
|
15
17
|
/** 值拷贝 ← settings-schema AUTH_V1_PATHS(同源锚测试对账)。 */
|
|
16
18
|
export const REGISTRY_AUTH_PATHS = {
|
|
17
19
|
deviceCode: "/api/v1/auth/device/code",
|
|
@@ -24,14 +26,20 @@ export const REGISTRY_AUTH_PATHS = {
|
|
|
24
26
|
export const REGISTRY_DEVICE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
|
|
25
27
|
const joinUrl = (baseUrl, path) => baseUrl.replace(/\/+$/, "") + path;
|
|
26
28
|
const postJson = async (fetchImpl, url, body, signal) => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
let res;
|
|
30
|
+
try {
|
|
31
|
+
res = await fetchImpl(url, {
|
|
32
|
+
method: "POST",
|
|
33
|
+
headers: { "content-type": "application/json" },
|
|
34
|
+
body: JSON.stringify(body),
|
|
35
|
+
...(signal ? { signal } : {}),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
throwIfAborted(signal); // 取消律(与 `RegistryClient` 的 catch 同一句):飞行中 abort 而请求失败 ⇒ 以 signal.reason 拒,不论 fetch 拿什么拒
|
|
40
|
+
throw e;
|
|
41
|
+
}
|
|
42
|
+
return { status: res.status, body: await readJsonBody(res, signal) }; // 子路径唯一的读体口:体被 abort 截断 ⇒ signal.reason;读完的体从不因 abort 丢弃
|
|
35
43
|
};
|
|
36
44
|
const oauthCodeOf = (body) => {
|
|
37
45
|
const e = body?.error;
|
|
@@ -57,14 +65,16 @@ export async function requestDeviceCode(baseUrl, opts = {}) {
|
|
|
57
65
|
* `sleep` 可注入(测试);`signal` 中断轮询。 */
|
|
58
66
|
export async function pollUntilApproved(baseUrl, device, opts) {
|
|
59
67
|
const f = opts.fetch ?? fetch;
|
|
60
|
-
|
|
68
|
+
// 默认睡眠听 `signal`(abort ⇒ 立即醒来;醒后的 `throwIfAborted` 以 `signal.reason` 拒)。`opts.sleep` 是测试接缝,原样用。
|
|
69
|
+
const sleep = opts.sleep ?? ((ms) => abortableSleep(ms, opts.signal).catch(() => undefined));
|
|
61
70
|
let intervalSeconds = device.interval;
|
|
62
71
|
for (;;) {
|
|
63
|
-
// [2400] RC-8(5.0.0):调用方 abort
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
|
|
72
|
+
// [2400] RC-8(5.0.0):调用方 abort 是客户端事件,不盗用服务端码 `expired_token`(其成文语义=「重开流程」,
|
|
73
|
+
// 把用户取消编成它 ⇒ 宿主自动重开,取消不掉)。27.0.0 起拒因 = 调用方 `signal.reason`(与传输层同一只 `throwIfAborted`):
|
|
74
|
+
// 裸 `abort()` 时名字仍是 AbortError;`AbortSignal.timeout()` ⇒ TimeoutError;显式原因原样。环首 / 间隔 / 飞行中三个落点同一句。
|
|
75
|
+
throwIfAborted(opts.signal);
|
|
67
76
|
await sleep(intervalSeconds * 1000);
|
|
77
|
+
throwIfAborted(opts.signal); // 间隔里被 abort:醒来就拒,不再发 device/token
|
|
68
78
|
const { status, body } = await postJson(f, joinUrl(baseUrl, REGISTRY_AUTH_PATHS.deviceToken), { grant_type: REGISTRY_DEVICE_GRANT_TYPE, device_code: device.device_code }, opts.signal);
|
|
69
79
|
if (status === 200) {
|
|
70
80
|
const grant = body;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/registry/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAA2B,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/registry/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,15 +24,23 @@ export declare class RegistryClient {
|
|
|
24
24
|
* single-use,两个并发 refresh 里后到的那个必吃 invalid_grant 并把刚续上的会话整个清掉。 */
|
|
25
25
|
private refreshInFlight;
|
|
26
26
|
constructor(config: RegistryClientConfig);
|
|
27
|
+
/** 同 {@link RegistryClient.requestRaw}(非 2xx 抛类型错);取消律在共享刷新在飞时的例外见 `requestRaw`。 */
|
|
27
28
|
request<T>(opts: RegistryRequestOptions): Promise<T>;
|
|
28
29
|
/** 非抛的原始面(R2 的条件请求用:304/412 等**语义状态**要直出给调用方判别,不是错误)。
|
|
29
|
-
* 401 仍在这里走 single-flight refresh + 重试一次——凭证生命周期对所有面统一,绝不旁路。
|
|
30
|
+
* 401 仍在这里走 single-flight refresh + 重试一次——凭证生命周期对所有面统一,绝不旁路。
|
|
31
|
+
* 🔴 **取消律的一处例外(共享刷新)**:请求在 401 后加入一次**在飞的共享刷新**再被 abort,不会立即以 `signal.reason` 拒 —— 它等这次刷新落定:
|
|
32
|
+
* 刷新失败 ⇒ 以**刷新自己的错误**拒(不是 `signal.reason`);刷新成功 ⇒ 不再重发、以 `signal.reason` 拒。
|
|
33
|
+
* 另一面:刷新用的是发起它的那个请求的 `signal` —— 发起者 abort ⇒ 刷新随之取消(`fetch` 听 signal 时),加入这次刷新的别的请求哪怕自己没 abort,也以发起者的 `signal.reason` 拒(abort 落在刷新请求在途时两版同;落在读刷新应答体时 26.1.0 拒 `TypeError`)。 */
|
|
30
34
|
requestRaw(opts: RegistryRequestOptions): Promise<{
|
|
31
35
|
status: number;
|
|
32
36
|
body: unknown;
|
|
33
37
|
headers: Headers;
|
|
34
38
|
}>;
|
|
35
39
|
private refreshOnce;
|
|
40
|
+
/** 单发一次(网络重试不在本引擎,见模块头)。取消律与 worker 传输层的重试器同一条规则(同一只 `throwIfAborted`):
|
|
41
|
+
* 已 abort ⇒ 以 `signal.reason` 拒、**不发请求**(本引擎把调用方 signal 经 `abort` 事件桥到自己的 controller,监听器挂在一只**已** abort 的 signal 上永不触发 ——
|
|
42
|
+
* 所以查在取令牌与「没登录」判之后、挂监听之前 —— 没登录的事实先于取消,与 26.1.0 同);飞行中 abort 而请求以失败告终 ⇒ 以 `signal.reason` 拒(内部 controller 的拒因是平台 `AbortError`,不交出去);
|
|
43
|
+
* 读体走子路径唯一的读体口 {@link readJsonBody}(体被 abort 截断 ⇒ `signal.reason`;读完的体从不因 abort 丢弃)。 */
|
|
36
44
|
private rawRequest;
|
|
37
45
|
/** 非 2xx ⇒ 本子路径唯一的构造点 {@link toRegistryApiError}(scope-gone 409 ⇒ `ScopeGoneError`,仍是 `RegistryApiError`)。 */
|
|
38
46
|
private settle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/registry/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/registry/client.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC;uEACmE;IACnE,OAAO,CAAC,eAAe,CAA+B;gBAE1C,MAAM,EAAE,oBAAoB;IAOxC,oFAAoF;IAC9E,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D;;;;oLAIgL;IAC1K,UAAU,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAQ5G,OAAO,CAAC,WAAW;IASnB;;;6FAGyF;YAC3E,UAAU;IA8BxB,8GAA8G;IAC9G,OAAO,CAAC,MAAM;CAIf"}
|
package/dist/registry/client.js
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* buildHeaders 闭包捕获静态 token,而这里 token 每次请求都可能已被 refresh 换新(必须 per-request
|
|
9
9
|
* 从 TokenProvider 读)。故 R1 用一个薄 fetch 引擎;若 R2 发现网络重试确有需要,再评估共享底座。
|
|
10
10
|
*/
|
|
11
|
+
import { throwIfAborted } from "../abort.js";
|
|
11
12
|
import { OAuthFlowError, toRegistryApiError } from "./errors.js";
|
|
13
|
+
import { readJsonBody } from "./read-body.js";
|
|
12
14
|
import { refreshTokens } from "./auth.js";
|
|
13
15
|
export class RegistryClient {
|
|
14
16
|
baseUrl;
|
|
@@ -24,11 +26,15 @@ export class RegistryClient {
|
|
|
24
26
|
this.fetchImpl = config.fetch ?? fetch;
|
|
25
27
|
this.timeoutMs = config.timeoutMs ?? 30_000;
|
|
26
28
|
}
|
|
29
|
+
/** 同 {@link RegistryClient.requestRaw}(非 2xx 抛类型错);取消律在共享刷新在飞时的例外见 `requestRaw`。 */
|
|
27
30
|
async request(opts) {
|
|
28
31
|
return this.settle(await this.requestRaw(opts));
|
|
29
32
|
}
|
|
30
33
|
/** 非抛的原始面(R2 的条件请求用:304/412 等**语义状态**要直出给调用方判别,不是错误)。
|
|
31
|
-
* 401 仍在这里走 single-flight refresh + 重试一次——凭证生命周期对所有面统一,绝不旁路。
|
|
34
|
+
* 401 仍在这里走 single-flight refresh + 重试一次——凭证生命周期对所有面统一,绝不旁路。
|
|
35
|
+
* 🔴 **取消律的一处例外(共享刷新)**:请求在 401 后加入一次**在飞的共享刷新**再被 abort,不会立即以 `signal.reason` 拒 —— 它等这次刷新落定:
|
|
36
|
+
* 刷新失败 ⇒ 以**刷新自己的错误**拒(不是 `signal.reason`);刷新成功 ⇒ 不再重发、以 `signal.reason` 拒。
|
|
37
|
+
* 另一面:刷新用的是发起它的那个请求的 `signal` —— 发起者 abort ⇒ 刷新随之取消(`fetch` 听 signal 时),加入这次刷新的别的请求哪怕自己没 abort,也以发起者的 `signal.reason` 拒(abort 落在刷新请求在途时两版同;落在读刷新应答体时 26.1.0 拒 `TypeError`)。 */
|
|
32
38
|
async requestRaw(opts) {
|
|
33
39
|
const first = await this.rawRequest(opts);
|
|
34
40
|
if (first.status !== 401)
|
|
@@ -45,10 +51,15 @@ export class RegistryClient {
|
|
|
45
51
|
}
|
|
46
52
|
return this.refreshInFlight;
|
|
47
53
|
}
|
|
54
|
+
/** 单发一次(网络重试不在本引擎,见模块头)。取消律与 worker 传输层的重试器同一条规则(同一只 `throwIfAborted`):
|
|
55
|
+
* 已 abort ⇒ 以 `signal.reason` 拒、**不发请求**(本引擎把调用方 signal 经 `abort` 事件桥到自己的 controller,监听器挂在一只**已** abort 的 signal 上永不触发 ——
|
|
56
|
+
* 所以查在取令牌与「没登录」判之后、挂监听之前 —— 没登录的事实先于取消,与 26.1.0 同);飞行中 abort 而请求以失败告终 ⇒ 以 `signal.reason` 拒(内部 controller 的拒因是平台 `AbortError`,不交出去);
|
|
57
|
+
* 读体走子路径唯一的读体口 {@link readJsonBody}(体被 abort 截断 ⇒ `signal.reason`;读完的体从不因 abort 丢弃)。 */
|
|
48
58
|
async rawRequest(opts) {
|
|
49
59
|
const current = await this.tokens.get();
|
|
50
60
|
if (!current)
|
|
51
61
|
throw new OAuthFlowError("invalid_grant", "not logged in (TokenProvider is empty) — run the device flow first");
|
|
62
|
+
throwIfAborted(opts.signal);
|
|
52
63
|
const ac = new AbortController();
|
|
53
64
|
const timer = setTimeout(() => ac.abort(), this.timeoutMs);
|
|
54
65
|
const onOuterAbort = () => ac.abort();
|
|
@@ -64,9 +75,13 @@ export class RegistryClient {
|
|
|
64
75
|
...(opts.body !== undefined ? { body: JSON.stringify(opts.body) } : {}),
|
|
65
76
|
signal: ac.signal,
|
|
66
77
|
});
|
|
67
|
-
const body = await res.
|
|
78
|
+
const body = await readJsonBody(res, opts.signal);
|
|
68
79
|
return { status: res.status, body, headers: res.headers };
|
|
69
80
|
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
throwIfAborted(opts.signal); // 取消律:飞行中 abort 而请求失败 ⇒ 以 signal.reason 拒,不论 fetch 拿什么拒
|
|
83
|
+
throw e;
|
|
84
|
+
}
|
|
70
85
|
finally {
|
|
71
86
|
clearTimeout(timer);
|
|
72
87
|
opts.signal?.removeEventListener("abort", onOuterAbort);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/registry/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAqB1C,MAAM,OAAO,cAAc;IACR,OAAO,CAAS;IAChB,MAAM,CAAgB;IACtB,SAAS,CAAe;IACxB,SAAS,CAAS;IACnC;uEACmE;IAC3D,eAAe,CAA+B;IAEtD,YAAY,MAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,IAA4B;QAC3C,OAAO,IAAI,CAAC,MAAM,CAAI,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/registry/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-body.d.ts","sourceRoot":"","sources":["../../src/registry/read-body.ts"],"names":[],"mappings":"AAQA,wBAAsB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAanG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* registry 子路径**唯一的读体口**(`RegistryClient.rawRequest` 与设备码 / 刷新 / 登出共用的 `postJson` 都经它读应答体)。一条规则:
|
|
3
|
+
* · 体**读不出**(读到一半被截断)⇒ 调用方已 abort 则以 `signal.reason` 拒(取消不报成「200 空体」/ 丢了码的错 / `TypeError`);没 abort(连接被重置、本引擎自己的超时)⇒ `undefined`(既有读法);
|
|
4
|
+
* · 体**读完了** ⇒ 从不因 abort 丢弃(取消不吞一次已经发生的写 / 换发):JSON 解析失败(空体 / 非 JSON)读作 `undefined`,与是否 abort 无关。
|
|
5
|
+
* 读与解析分两步做,正是为了把「读不出」与「读完了但不是 JSON」分开 —— 一只 `res.json().catch(…)` 分不出这两件事。
|
|
6
|
+
*/
|
|
7
|
+
import { throwIfAborted } from "../abort.js";
|
|
8
|
+
export async function readJsonBody(res, signal) {
|
|
9
|
+
let text;
|
|
10
|
+
try {
|
|
11
|
+
text = await res.text();
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
throwIfAborted(signal);
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
return text ? JSON.parse(text) : undefined;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=read-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-body.js","sourceRoot":"","sources":["../../src/registry/read-body.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAa,EAAE,MAA+B;IAC/E,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopes-effective.d.ts","sourceRoot":"","sources":["../../src/registry/scopes-effective.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,sDAAsD;AACtD,eAAO,MAAM,qBAAqB;;;CAGxB,CAAC;AAEX;;;;+EAI+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACrF,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;;mGAEmG;AACnG,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,QAAQ,CAAC;IACrB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,IAAI,EAAE,WAAW,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE/G;AAED;;;kBAGkB;AAClB,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAK9B;AAED,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7G;;oEAEoE;AACpE,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"scopes-effective.d.ts","sourceRoot":"","sources":["../../src/registry/scopes-effective.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,sDAAsD;AACtD,eAAO,MAAM,qBAAqB;;;CAGxB,CAAC;AAEX;;;;+EAI+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACrF,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;;mGAEmG;AACnG,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,QAAQ,CAAC;IACrB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,IAAI,EAAE,WAAW,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE/G;AAED;;;kBAGkB;AAClB,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAK9B;AAED,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7G;;oEAEoE;AACpE,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAavJ"}
|
|
@@ -23,14 +23,16 @@ export async function switchScope(client, tokens, scope, opts) {
|
|
|
23
23
|
* `principal` ⇒ `?principal=` query([1864] C2-10 管理面消费形:查看**别人**的生效配置)。
|
|
24
24
|
* 走 RegistryClient 同一引擎(Bearer + 401 单飞 refresh 重试)——凭证生命周期不旁路。 */
|
|
25
25
|
export async function getEffective(client, opts) {
|
|
26
|
+
// 304 只是条件请求的答案(与 worker 传输层同一条律):带了非空 `etag` ⇒ 发 `if-none-match`、304 读作没变;没带 ⇒ 304 与其它非 2xx 同是类型错(调用方没有缓存可复用)。
|
|
27
|
+
const validator = opts?.etag || undefined;
|
|
26
28
|
const r = await client.requestRaw({
|
|
27
29
|
method: "GET",
|
|
28
30
|
path: `/api/v1/effective${opts?.principal ? `?principal=${encodeURIComponent(opts.principal)}` : ""}`,
|
|
29
|
-
...(
|
|
31
|
+
...(validator !== undefined ? { headers: { "if-none-match": validator } } : {}),
|
|
30
32
|
...(opts?.signal ? { signal: opts.signal } : {}),
|
|
31
33
|
});
|
|
32
34
|
const etag = r.headers.get("etag") ?? undefined;
|
|
33
|
-
if (r.status === 304)
|
|
35
|
+
if (r.status === 304 && validator !== undefined)
|
|
34
36
|
return { status: 304, ...(etag !== undefined ? { etag } : {}) };
|
|
35
37
|
if (r.status >= 200 && r.status < 300)
|
|
36
38
|
return { status: 200, ...(etag !== undefined ? { etag } : {}), body: r.body };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopes-effective.js","sourceRoot":"","sources":["../../src/registry/scopes-effective.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIjD,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,oBAAoB;CACvB,CAAC;AA4BX,kEAAkE;AAClE,MAAM,UAAU,UAAU,CAAC,MAAsB,EAAE,IAA+B;IAChF,OAAO,MAAM,CAAC,OAAO,CAAqB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrJ,CAAC;AAED;;;kBAGkB;AAClB,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAsB,EACtB,MAAqB,EACrB,KAAa,EACb,IAA+B;IAE/B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAsB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpL,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IAChC,IAAI,IAAI;QAAE,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/F,OAAO,GAAG,CAAC;AACb,CAAC;AAKD;;oEAEoE;AACpE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAsB,EAAE,IAAkE;IAC3H,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;QAChC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,oBAAoB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACrG,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"scopes-effective.js","sourceRoot":"","sources":["../../src/registry/scopes-effective.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import type { Transport } from "../transport.js";
|
|
5
5
|
import type { ApprovalDecisionResult, AskClass, PendingList } from "../types.js";
|
|
6
6
|
import type { QuestionAnswer } from "./questions.js";
|
|
7
|
-
import type { AskOrigin, BoundGrantAbsence, PersistedRuleMandate, RuleOffersAbsence, ToolApprovalCardWord } from "./tool-approvals.js";
|
|
7
|
+
import type { AskOrigin, AutoModeFallbackCause, BoundGrantAbsence, BoundSkillGrants, PersistedRuleMandate, RuleOffersAbsence, ToolApprovalCardWord } from "./tool-approvals.js";
|
|
8
8
|
/** One per-session approval exemption ("本会话不再询问", service exemptions ruling — an APPROVAL MEMORY, not a
|
|
9
9
|
* policy loosen: deny/neverAuto always outrank it). Keyed in CANONICAL tool-name space (service
|
|
10
10
|
* `ApprovalExemptionRow`, approval-exemption-store.ts). */
|
|
@@ -72,6 +72,11 @@ export interface ApprovalStreamEvent {
|
|
|
72
72
|
/** 只 `pending` 帧(server ≥7.129.0 / core 7.51.0 #1688):park 行的授予绑定缺席词,= {@link PendingCheckpoint.boundGrantAbsence} 展开(读法同那一键)。
|
|
73
73
|
* `live_pending` 帧的行顶层**不带** —— 那一位在它的 `frame` 里({@link LivePendingRow.frame})。 */
|
|
74
74
|
boundGrantAbsence?: BoundGrantAbsence;
|
|
75
|
+
/** 只 `pending` 帧(server ≥7.136.0):停驻的技能卡的授予绑定三位 = {@link PendingCheckpoint.boundGrantDigest} / `.boundGrants` / `.classifierNoRuling` 展开(同一只投影;读法逐键见那三键;在场才带,普通卡三位都缺席)。
|
|
76
|
+
* `live_pending` 帧的行顶层**不带** —— 三位在它的 `frame` 里({@link LivePendingRow.frame})。 */
|
|
77
|
+
boundGrantDigest?: string;
|
|
78
|
+
boundGrants?: BoundSkillGrants;
|
|
79
|
+
classifierNoRuling?: AutoModeFallbackCause;
|
|
75
80
|
/** 只 `pending` 帧(K-37 扩项;server ≥7.109.0 / S-934 ②):park 行的类对(= {@link PendingCheckpoint.askClass} / `.classes` 展开,两键同在同缺)。
|
|
76
81
|
* `live_pending` 帧的行顶层**不带** —— 那一对在它的 `frame` 里({@link LivePendingRow.frame})。 */
|
|
77
82
|
askClass?: AskClass;
|
|
@@ -188,17 +193,27 @@ export interface ApprovalDecision {
|
|
|
188
193
|
feedback?: string;
|
|
189
194
|
}
|
|
190
195
|
/** Accepted shape of a decide that hit a **parked background agent** checkpoint (server 1.267, design/153
|
|
191
|
-
* 件3d;ASSISTANT-WIRE-CONTRACT §4a parked variant).
|
|
192
|
-
* not completed;
|
|
196
|
+
* 件3d;ASSISTANT-WIRE-CONTRACT §4a parked variant). **Two arms, read by `status`** —
|
|
197
|
+
* · `status: "resuming"` —— **受理回执**:复活异步驱动,200 = accepted, not completed;a failed drive honestly re-parks the row and the pending re-appears on `list()`;
|
|
198
|
+
* · `status: "failed"`(**server ≥7.136.0**,`decision` 恒 `"deny"`)—— **作废回执**:复活不了的停驻行(后台子代省略了 `name` 的无名行 / 行上没有根会话锚)上 **deny = 作废这张卡**:
|
|
199
|
+
* 卡按自己的 scope CAS 作废、离开待决队列与 `/v1/approvals/stream` 快照,子代由引擎的对账翻成终局 `failed`,被门的工具零执行、不授予 `remember`;**没有任何续跑在飞**(别等一个永远不来的复活)。
|
|
200
|
+
* 这两形的 approve 仍是 `409 decide.row_unrevivable`;作废的 CAS 输了(卡已被窗到期收走 / 另一次作废)⇒ 既有的 `409 decide.gate_moved`。
|
|
193
201
|
* ⚠️ #316(server ≥7.37):`status === "resuming"` **不再单独判别这形** —— 任务级 decide 在 durable 部署
|
|
194
202
|
* 上也改答受理形 `{taskId, sessionId, status:"resuming", bindingEnforced:true}`(见 `decide()` 顶注)。
|
|
195
|
-
* 判别改用:`decision`
|
|
196
|
-
|
|
203
|
+
* 判别改用:`decision` 在场且 `sessionId` 缺席 = parked 回执(两臂都是),再看 `status` 分臂;`sessionId`/`bindingEnforced` 在场 = 任务级受理。
|
|
204
|
+
* 🔴 27.0.0:输出型放宽 —— 此前本型的 `status` 恒为字面 `"resuming"`,把它当字面读的代码(`const s: "resuming" = r.status`)编不过,按 `status` 穷举 switch 补一臂 `"failed"`。
|
|
205
|
+
* 另:本型由 interface 改成**联合型别名**,所以 `interface X extends ParkedDecideAccepted` ⇒ TS2312、`class X implements ParkedDecideAccepted` ⇒ TS2422(改成 `type X = ParkedDecideAccepted & { … }` 或按臂各自声明)。 */
|
|
206
|
+
export type ParkedDecideAccepted = {
|
|
197
207
|
/** The background agent handle (`a*`). */
|
|
198
208
|
taskId: string;
|
|
199
209
|
status: "resuming";
|
|
200
210
|
decision: "approve" | "deny";
|
|
201
|
-
}
|
|
211
|
+
} | {
|
|
212
|
+
/** The background agent handle (`a*`). */
|
|
213
|
+
taskId: string;
|
|
214
|
+
status: "failed";
|
|
215
|
+
decision: "deny";
|
|
216
|
+
};
|
|
202
217
|
export declare class ApprovalsResource {
|
|
203
218
|
private readonly t;
|
|
204
219
|
constructor(t: Transport);
|
|
@@ -247,8 +262,8 @@ export declare class ApprovalsResource {
|
|
|
247
262
|
* 等于把结果扔掉,腿如实保持同步)。
|
|
248
263
|
*
|
|
249
264
|
* **Parked background-agent variant**(server 1.267,ASSISTANT-WIRE-CONTRACT §4a):当该 sessionId 的
|
|
250
|
-
* pending checkpoint 属于一个 parked 后台子代时,成功形是 {@link ParkedDecideAccepted}(
|
|
251
|
-
* `
|
|
265
|
+
* pending checkpoint 属于一个 parked 后台子代时,成功形是 {@link ParkedDecideAccepted}(两臂,按 `status` 读:
|
|
266
|
+
* `"resuming"` = 受理语义,复活异步驱动,失败会诚实 re-park 并重新出现在 `list()`;`"failed"`〔server ≥7.136.0〕= 复活不了的行上 deny 的作废回执,卡已关、没有续跑)。该腿的专有 4xx/5xx:
|
|
252
267
|
* `decide.claim_lost`/`decide.gate_moved`/`decide.not_parked`(409,行被并发 decide/stop 抢走——重查列表)、
|
|
253
268
|
* `decide.revive_rejected`(409)/`decide.revive_failed`(500,claim 已回滚可重试)、`decide.store_unreachable`
|
|
254
269
|
* (503)、`decide.parked_question_unsupported`/`decide.parked_answer_unsupported`(400——parked 腿不支持
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/resources/approvals.ts"],"names":[],"mappings":"AAAA;;mFAEmF;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAqC,WAAW,EAAE,MAAM,aAAa,CAAC;AACpH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/resources/approvals.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { readSseFrames, HEARTBEAT_GRACE_MS, isTerminalFrame, STREAM_READ_ADVISORY_CODE } from "../sse.js";
|
|
2
|
+
import { sleep } from "../abort.js";
|
|
2
3
|
import { APIError } from "../errors.js";
|
|
3
4
|
/**
|
|
4
5
|
* `GET /v1/approvals/stream` **读失败**的两只机读错误帧的码(server ≥7.133.0;`event: error` `{ type: "error", errorCode, message }`)。此前读失败只会让这条流静默成「只有心跳」,
|
|
@@ -109,8 +110,8 @@ export class ApprovalsResource {
|
|
|
109
110
|
* 等于把结果扔掉,腿如实保持同步)。
|
|
110
111
|
*
|
|
111
112
|
* **Parked background-agent variant**(server 1.267,ASSISTANT-WIRE-CONTRACT §4a):当该 sessionId 的
|
|
112
|
-
* pending checkpoint 属于一个 parked 后台子代时,成功形是 {@link ParkedDecideAccepted}(
|
|
113
|
-
* `
|
|
113
|
+
* pending checkpoint 属于一个 parked 后台子代时,成功形是 {@link ParkedDecideAccepted}(两臂,按 `status` 读:
|
|
114
|
+
* `"resuming"` = 受理语义,复活异步驱动,失败会诚实 re-park 并重新出现在 `list()`;`"failed"`〔server ≥7.136.0〕= 复活不了的行上 deny 的作废回执,卡已关、没有续跑)。该腿的专有 4xx/5xx:
|
|
114
115
|
* `decide.claim_lost`/`decide.gate_moved`/`decide.not_parked`(409,行被并发 decide/stop 抢走——重查列表)、
|
|
115
116
|
* `decide.revive_rejected`(409)/`decide.revive_failed`(500,claim 已回滚可重试)、`decide.store_unreachable`
|
|
116
117
|
* (503)、`decide.parked_question_unsupported`/`decide.parked_answer_unsupported`(400——parked 腿不支持
|
|
@@ -228,7 +229,7 @@ export class ApprovalsResource {
|
|
|
228
229
|
catch (e) {
|
|
229
230
|
if (++failures >= 5)
|
|
230
231
|
throw e;
|
|
231
|
-
await
|
|
232
|
+
await sleep(500 * failures, opts?.signal).catch(() => undefined); // 重连退避可被 abort 打断:醒来后环首的 aborted 检查安静结束(`sleep` 只会因 abort 而拒)
|
|
232
233
|
continue;
|
|
233
234
|
}
|
|
234
235
|
if (!res.ok)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/resources/approvals.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/resources/approvals.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,8 @@ export declare class AttachmentsResource {
|
|
|
42
42
|
mime?: string;
|
|
43
43
|
signal?: AbortSignal;
|
|
44
44
|
}): Promise<AttachmentInfo>;
|
|
45
|
-
/** GET /v1/attachments/:id — 取回字节(content-type=存储 mime)。未知/他人 → 404(NotFoundError)。
|
|
45
|
+
/** GET /v1/attachments/:id — 取回字节(content-type=存储 mime)。未知/他人 → 404(NotFoundError)。
|
|
46
|
+
* 开请求遇可重试状态(408 / 429 / 5xx,`permanence: "terminal"` 与确定性失败码除外)由本包重试(至多 `maxRetries` 次、只在首字节之前、abort 立即停)—— GET 读口同律,与 `manifest()` 同一只重试器;读体失败不重试。 */
|
|
46
47
|
get(id: string, opts?: {
|
|
47
48
|
signal?: AbortSignal;
|
|
48
49
|
}): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/resources/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAEzC;wEACoE;IAC9D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAYtH
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/resources/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAEzC;wEACoE;IAC9D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAYtH;4JACwJ;IAClJ,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAKpG,mEAAmE;IAC7D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CASzE"}
|
|
@@ -17,16 +17,10 @@ export class AttachmentsResource {
|
|
|
17
17
|
throw await this.t.errorFrom(res);
|
|
18
18
|
return (await res.json());
|
|
19
19
|
}
|
|
20
|
-
/** GET /v1/attachments/:id — 取回字节(content-type=存储 mime)。未知/他人 → 404(NotFoundError)。
|
|
20
|
+
/** GET /v1/attachments/:id — 取回字节(content-type=存储 mime)。未知/他人 → 404(NotFoundError)。
|
|
21
|
+
* 开请求遇可重试状态(408 / 429 / 5xx,`permanence: "terminal"` 与确定性失败码除外)由本包重试(至多 `maxRetries` 次、只在首字节之前、abort 立即停)—— GET 读口同律,与 `manifest()` 同一只重试器;读体失败不重试。 */
|
|
21
22
|
async get(id, opts) {
|
|
22
|
-
const res = await this.t.
|
|
23
|
-
method: "GET",
|
|
24
|
-
path: `/v1/attachments/${encodeURIComponent(id)}`,
|
|
25
|
-
accept: "*/*",
|
|
26
|
-
...(opts?.signal ? { signal: opts.signal } : {}),
|
|
27
|
-
});
|
|
28
|
-
if (!res.ok)
|
|
29
|
-
throw await this.t.errorFrom(res);
|
|
23
|
+
const res = await this.t.openRawGet({ path: `/v1/attachments/${encodeURIComponent(id)}`, accept: "*/*", signal: opts?.signal }); // success = 2xx only (no validator sent ⇒ a 304 is a typed error too); a failed open throws the typed error after the retrier is done
|
|
30
24
|
return { bytes: new Uint8Array(await res.arrayBuffer()), mime: res.headers.get("content-type") ?? "application/octet-stream" };
|
|
31
25
|
}
|
|
32
26
|
/** DELETE /v1/attachments/:id — 204;未知/他人 → 404(NotFoundError)。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/resources/attachments.ts"],"names":[],"mappings":"AAqCA,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C;wEACoE;IACpE,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,KAAiB,EAAE,IAA8C;QAC1F,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,wBAAwB,kBAAkB,CAAC,IAAI,CAAC,EAAE;YACxD,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,0BAA0B;YACrD,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmB,CAAC;IAC9C,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/resources/attachments.ts"],"names":[],"mappings":"AAqCA,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,CAAY;QAAZ,MAAC,GAAD,CAAC,CAAW;IAAG,CAAC;IAE7C;wEACoE;IACpE,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,KAAiB,EAAE,IAA8C;QAC1F,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,wBAAwB,kBAAkB,CAAC,IAAI,CAAC,EAAE;YACxD,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,0BAA0B;YACrD,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmB,CAAC;IAC9C,CAAC;IAED;4JACwJ;IACxJ,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,IAA+B;QACnD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,mBAAmB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,sIAAsI;QACvQ,OAAO,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,0BAA0B,EAAE,CAAC;IACjI,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAA+B;QACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,mBAAmB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YACjD,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO;QAC/B,MAAM,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -1,39 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MF-Fleet (shell-host data contract) — `GET /v1/fleet/stream` LIVE multi-row fleet view as an SSE PUSH stream.
|
|
3
|
-
*
|
|
4
|
-
* The fleet view animates a MULTI-ROW tree: every active task's `status/elapsedMs/tokens` and every
|
|
5
|
-
* workflow's `doneCount N/M · failedCount` TRANSITION over time. This is a *push* stream, not a one-shot read —
|
|
6
|
-
* the service sends a SNAPSHOT on connect, then a per-row delta for every transition, with STABLE per-row
|
|
7
|
-
* identity (`row.id`) so the consumer updates the right row in place.
|
|
8
|
-
*
|
|
9
|
-
* 🔴 THE SDK PRODUCES FRAMES, IT DOES NOT MAINTAIN STATE. `stream()` yields each decoded {@link FleetFrame}; the
|
|
10
|
-
* consumer (the shell renderer) owns the active-set Map and does the update-in-place / remove. The shell-local
|
|
11
|
-
* render state (`main`/tree-`selection`/`timeline`/`depth`/`viewed`/`bulletColor`, MF-Fleet.md) is NOT on the
|
|
12
|
-
* wire and the SDK does NOT synthesize it — only the data that transitions rides the frames.
|
|
13
|
-
*
|
|
14
|
-
* 🔒 owner-scoped: the route filters to the caller's own active runs (by the credential-derived principal — NOT a
|
|
15
|
-
* spoofable header) UNLESS the caller is fleet-wide (an operator / deployment trace token sees every tenant's
|
|
16
|
-
* rows, like the trace API). The `scope` field is wire-STRIPPED by the service after the owner-gate — it never
|
|
17
|
-
* reaches this SDK, so {@link FleetTaskRow}/{@link FleetWorkflowRow} carry NO `scope`. The connect-time `meta`
|
|
18
|
-
* frame's `scoped` flag tells the consumer whether this view is owner-scoped (true) or fleet-wide (false).
|
|
19
|
-
* 🔴 **server ≥7.134.0:「service 凭据 + 验过的主体头」= 那位主体** —— 带主体头的 service 凭据读到的是那位主体的行(`meta.scoped: true`),
|
|
20
|
-
* 不再是全舰队;`?owner=` / `?scope=` / `?principal=` 对钉住的主体不生效。全舰队视图 = 不带主体头的 service 凭据,或只读令牌。
|
|
21
|
-
* (≤7.133.x:出示 service 凭据即全舰队,不看主体头。)同一读法也落在 `GET /v1/sessions`、`GET /v1/agents/roster`、trace / 用量各口与同步族上。
|
|
22
|
-
*
|
|
23
|
-
* 🔁 SNAPSHOT-RESUME semantics(#13,server ≥1.296 advertises `capabilities.fleet.resume === "snapshot"`):
|
|
24
|
-
* a drop ends the iterator, and re-`stream()` IS the resume — the bus is latest-state (not an event log)
|
|
25
|
-
* and every connection OPENS with a full `snapshot` frame, so row state cannot be "missed"; transient
|
|
26
|
-
* bg_notification frames re-deliver through the durable completion inbox. There is deliberately NO
|
|
27
|
-
* last-event-id cursor (it would duplicate what the snapshot already guarantees).
|
|
28
|
-
* Mirrors `workflows.stream`/`trace.stream` framing but with the fleet vocabulary
|
|
29
|
-
* (`meta`/`snapshot`/`task`/`task_remove`/`workflow`/`workflow_remove`). Deliberately uses the vocabulary-
|
|
30
|
-
* agnostic `readSseFrames` (NOT `parseSse`, which is hardcoded to the AgentEvent union + auto-reconnect).
|
|
31
|
-
* Gated off (no `fleetBus` wired) → 501 (typed error) before any frame.
|
|
32
|
-
*
|
|
33
|
-
* Verified against sema-server **5.3.0** (2026-08-02 亲读): handler `streamFleet` (`src/http/routes/fleet.ts`)
|
|
34
|
-
* + `src/fleet/fleet-bus.ts` types. (4.3.0 坐标刷新:此前钉的是 commit `1bf7a5c`,在 server 仓已不可定位为
|
|
35
|
-
* 近期点 —— 版本号比 commit 短哈希更能被下一个人重放。)
|
|
36
|
-
*/
|
|
37
1
|
import type { Transport } from "../transport.js";
|
|
38
2
|
/** The fleet vocabulary the shell renders (MF-Fleet `FleetTask.status`, byte-aligned to service `FleetTaskStatus`
|
|
39
3
|
* fleet-bus.ts:27-36). The service maps its run/workflow status onto this NEUTRAL set:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/resources/fleet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/resources/fleet.ts"],"names":[],"mappings":"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"}
|