@sema-agent/sdk 0.0.75 → 0.0.77

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.
Files changed (171) hide show
  1. package/dist/client.d.ts +48 -0
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +55 -2
  4. package/dist/client.js.map +1 -1
  5. package/dist/control-client.d.ts +21 -0
  6. package/dist/control-client.d.ts.map +1 -1
  7. package/dist/control-client.js +42 -1
  8. package/dist/control-client.js.map +1 -1
  9. package/dist/control-types.d.ts +108 -0
  10. package/dist/control-types.d.ts.map +1 -1
  11. package/dist/control-types.js +15 -0
  12. package/dist/control-types.js.map +1 -1
  13. package/dist/errors.d.ts +88 -2
  14. package/dist/errors.d.ts.map +1 -1
  15. package/dist/errors.js +105 -8
  16. package/dist/errors.js.map +1 -1
  17. package/dist/events.d.ts +214 -20
  18. package/dist/events.d.ts.map +1 -1
  19. package/dist/events.js +5 -0
  20. package/dist/events.js.map +1 -1
  21. package/dist/health.d.ts +44 -0
  22. package/dist/health.d.ts.map +1 -1
  23. package/dist/health.js +32 -0
  24. package/dist/health.js.map +1 -1
  25. package/dist/idempotency.d.ts +8 -0
  26. package/dist/idempotency.d.ts.map +1 -1
  27. package/dist/idempotency.js +8 -0
  28. package/dist/idempotency.js.map +1 -1
  29. package/dist/index.d.ts +19 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +13 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/resources/approvals.d.ts +43 -0
  34. package/dist/resources/approvals.d.ts.map +1 -1
  35. package/dist/resources/approvals.js +23 -3
  36. package/dist/resources/approvals.js.map +1 -1
  37. package/dist/resources/assistant.d.ts +23 -0
  38. package/dist/resources/assistant.d.ts.map +1 -1
  39. package/dist/resources/assistant.js +22 -0
  40. package/dist/resources/assistant.js.map +1 -1
  41. package/dist/resources/control/auth-providers.d.ts +17 -0
  42. package/dist/resources/control/auth-providers.d.ts.map +1 -1
  43. package/dist/resources/control/auth-providers.js +6 -0
  44. package/dist/resources/control/auth-providers.js.map +1 -1
  45. package/dist/resources/control/config.d.ts +22 -0
  46. package/dist/resources/control/config.d.ts.map +1 -1
  47. package/dist/resources/control/config.js +12 -0
  48. package/dist/resources/control/config.js.map +1 -1
  49. package/dist/resources/control/fleet.d.ts +15 -0
  50. package/dist/resources/control/fleet.d.ts.map +1 -1
  51. package/dist/resources/control/fleet.js +8 -0
  52. package/dist/resources/control/fleet.js.map +1 -1
  53. package/dist/resources/control/images.d.ts +20 -0
  54. package/dist/resources/control/images.d.ts.map +1 -1
  55. package/dist/resources/control/images.js +10 -0
  56. package/dist/resources/control/images.js.map +1 -1
  57. package/dist/resources/control/lifecycle.d.ts +8 -0
  58. package/dist/resources/control/lifecycle.d.ts.map +1 -1
  59. package/dist/resources/control/lifecycle.js +3 -0
  60. package/dist/resources/control/lifecycle.js.map +1 -1
  61. package/dist/resources/control/publish.d.ts +12 -0
  62. package/dist/resources/control/publish.d.ts.map +1 -1
  63. package/dist/resources/control/publish.js +6 -0
  64. package/dist/resources/control/publish.js.map +1 -1
  65. package/dist/resources/control/secrets.d.ts +28 -0
  66. package/dist/resources/control/secrets.d.ts.map +1 -1
  67. package/dist/resources/control/secrets.js +16 -0
  68. package/dist/resources/control/secrets.js.map +1 -1
  69. package/dist/resources/control/users.d.ts +22 -0
  70. package/dist/resources/control/users.d.ts.map +1 -1
  71. package/dist/resources/control/users.js +12 -0
  72. package/dist/resources/control/users.js.map +1 -1
  73. package/dist/resources/control/versioning.d.ts +12 -0
  74. package/dist/resources/control/versioning.d.ts.map +1 -1
  75. package/dist/resources/control/versioning.js +6 -0
  76. package/dist/resources/control/versioning.js.map +1 -1
  77. package/dist/resources/control/workers.d.ts +14 -0
  78. package/dist/resources/control/workers.d.ts.map +1 -1
  79. package/dist/resources/control/workers.js +7 -0
  80. package/dist/resources/control/workers.js.map +1 -1
  81. package/dist/resources/elicitations.d.ts +43 -0
  82. package/dist/resources/elicitations.d.ts.map +1 -1
  83. package/dist/resources/elicitations.js +8 -0
  84. package/dist/resources/elicitations.js.map +1 -1
  85. package/dist/resources/fleet.d.ts +101 -0
  86. package/dist/resources/fleet.d.ts.map +1 -1
  87. package/dist/resources/fleet.js +27 -4
  88. package/dist/resources/fleet.js.map +1 -1
  89. package/dist/resources/images.d.ts +34 -0
  90. package/dist/resources/images.d.ts.map +1 -1
  91. package/dist/resources/images.js +29 -3
  92. package/dist/resources/images.js.map +1 -1
  93. package/dist/resources/leader.d.ts +10 -0
  94. package/dist/resources/leader.d.ts.map +1 -1
  95. package/dist/resources/leader.js +4 -0
  96. package/dist/resources/leader.js.map +1 -1
  97. package/dist/resources/memory.d.ts +37 -0
  98. package/dist/resources/memory.d.ts.map +1 -1
  99. package/dist/resources/memory.js +28 -0
  100. package/dist/resources/memory.js.map +1 -1
  101. package/dist/resources/models.d.ts +12 -0
  102. package/dist/resources/models.d.ts.map +1 -1
  103. package/dist/resources/models.js +4 -0
  104. package/dist/resources/models.js.map +1 -1
  105. package/dist/resources/ops.d.ts +16 -0
  106. package/dist/resources/ops.d.ts.map +1 -1
  107. package/dist/resources/ops.js +6 -0
  108. package/dist/resources/ops.js.map +1 -1
  109. package/dist/resources/policy.d.ts +8 -0
  110. package/dist/resources/policy.d.ts.map +1 -1
  111. package/dist/resources/policy.js +1 -0
  112. package/dist/resources/policy.js.map +1 -1
  113. package/dist/resources/questions.d.ts +57 -0
  114. package/dist/resources/questions.d.ts.map +1 -1
  115. package/dist/resources/questions.js +9 -0
  116. package/dist/resources/questions.js.map +1 -1
  117. package/dist/resources/runs.d.ts +147 -0
  118. package/dist/resources/runs.d.ts.map +1 -1
  119. package/dist/resources/runs.js +129 -2
  120. package/dist/resources/runs.js.map +1 -1
  121. package/dist/resources/session-sync.d.ts +61 -0
  122. package/dist/resources/session-sync.d.ts.map +1 -1
  123. package/dist/resources/session-sync.js +54 -1
  124. package/dist/resources/session-sync.js.map +1 -1
  125. package/dist/resources/sessions.d.ts +74 -0
  126. package/dist/resources/sessions.d.ts.map +1 -1
  127. package/dist/resources/sessions.js +64 -2
  128. package/dist/resources/sessions.js.map +1 -1
  129. package/dist/resources/side-query.d.ts +18 -0
  130. package/dist/resources/side-query.d.ts.map +1 -1
  131. package/dist/resources/side-query.js +1 -0
  132. package/dist/resources/side-query.js.map +1 -1
  133. package/dist/resources/tasks.d.ts +19 -0
  134. package/dist/resources/tasks.d.ts.map +1 -1
  135. package/dist/resources/tasks.js +21 -2
  136. package/dist/resources/tasks.js.map +1 -1
  137. package/dist/resources/tool-approvals.d.ts +60 -0
  138. package/dist/resources/tool-approvals.d.ts.map +1 -1
  139. package/dist/resources/tool-approvals.js +10 -0
  140. package/dist/resources/tool-approvals.js.map +1 -1
  141. package/dist/resources/trace.d.ts +23 -0
  142. package/dist/resources/trace.d.ts.map +1 -1
  143. package/dist/resources/trace.js +27 -2
  144. package/dist/resources/trace.js.map +1 -1
  145. package/dist/resources/usage.d.ts +21 -0
  146. package/dist/resources/usage.d.ts.map +1 -1
  147. package/dist/resources/usage.js +8 -0
  148. package/dist/resources/usage.js.map +1 -1
  149. package/dist/resources/workflows.d.ts +48 -0
  150. package/dist/resources/workflows.d.ts.map +1 -1
  151. package/dist/resources/workflows.js +40 -3
  152. package/dist/resources/workflows.js.map +1 -1
  153. package/dist/settings.d.ts +90 -0
  154. package/dist/settings.d.ts.map +1 -1
  155. package/dist/settings.js +24 -0
  156. package/dist/settings.js.map +1 -1
  157. package/dist/sse.d.ts +36 -0
  158. package/dist/sse.d.ts.map +1 -1
  159. package/dist/sse.js +53 -8
  160. package/dist/sse.js.map +1 -1
  161. package/dist/sync.d.ts +56 -0
  162. package/dist/sync.d.ts.map +1 -1
  163. package/dist/sync.js +48 -4
  164. package/dist/sync.js.map +1 -1
  165. package/dist/transport.d.ts +32 -0
  166. package/dist/transport.d.ts.map +1 -1
  167. package/dist/transport.js +40 -8
  168. package/dist/transport.js.map +1 -1
  169. package/dist/types.d.ts +709 -1
  170. package/dist/types.d.ts.map +1 -1
  171. package/package.json +1 -1
package/dist/events.js CHANGED
@@ -1,3 +1,8 @@
1
+ /** Exhaustiveness helper for consumers' switch statements.
2
+ * ⚠️ COMPILE-TIME aid only ([1543] SDK-H): the wire is an OPEN set — a newer server may emit frame types
3
+ * this union does not yet name, and a `default: assertNever(ev)` switch would then THROW AT RUNTIME on a
4
+ * perfectly valid frame. Use it to keep your switch exhaustive over the KNOWN arms during development, but
5
+ * ship a tolerant default (ignore/log unknown frames) — e.g. `default: { const _x: never = ev; break; }`. */
1
6
  export function assertNever(x) {
2
7
  throw new Error(`unhandled AgentEvent: ${JSON.stringify(x)}`);
3
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AA2LA,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AA6NA;;;;8GAI8G;AAC9G,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC"}
package/dist/health.d.ts CHANGED
@@ -1,4 +1,26 @@
1
+ /**
2
+ * 免构造工具(SDK 宪法例外①②收编,clay 拍 2026-07-16)—— the TWO sanctioned raw-HTTP shapes that must NOT
3
+ * require an AgentClient:
4
+ *
5
+ * ① {@link probeHealth} — process-noise liveness. `/health` is the worker's UNAUTHENTICATED door
6
+ * (server 1.214 server.js:296 — no token, no principal), and the probe's whole job is "is anything
7
+ * alive there?" BEFORE credentials/TOFU exist (engine spawn wait-loops, port arbitration, dead-engine
8
+ * triage, teardown confirmation — the shell's 6-strong probe family). Constructing a principal-first,
9
+ * token-bearing client to ask that would invert the trust order, so the SDK ships the probe as a STATIC
10
+ * function: zero-throw, judgement-typed, and — deliberately — sending NO credentials ever.
11
+ *
12
+ * ② {@link engineUrl} — the single-source URL builder for the teardown last-resort raw fetch
13
+ * (fire-and-forget on a dying process, where awaiting a Transport is wrong) and for anything else the
14
+ * constitution grudgingly allows raw. One join semantic (identical to Transport's), so a hand-built URL
15
+ * can never drift from what the client would have called.
16
+ *
17
+ * Everything ELSE goes through AgentClient — these two are the WHOLE exception surface (plus labelled
18
+ * contract-probe raws in tests; see the SDK constitution in the repo CLAUDE.md).
19
+ */
20
+ /** The `/health` 200 body, subset-typed (server 1.214 server.js:296-320 — exact producer; open set for the
21
+ * conditional fields: draining/durable/ready/restartRequired etc. appear only when true/degraded). */
1
22
  export interface EngineHealth {
23
+ /** "ok" on the live door — {@link probeHealth} requires it for `alive` (a 200 with anything else is `not_ok`). */
2
24
  status: string;
3
25
  version?: string;
4
26
  model?: string;
@@ -6,15 +28,24 @@ export interface EngineHealth {
6
28
  sessions?: number;
7
29
  instanceId?: string;
8
30
  dataRoot?: string;
31
+ /** sha256[0:16] over the engine's identity config (model/backends/dataRoot/port) — the shell's drift detector. */
9
32
  configHash?: string;
10
33
  pid?: number;
11
34
  port?: number;
12
35
  draining?: boolean;
36
+ /** false = model roster pending (first effective-config pull) — alive but not accepting billable submits. */
13
37
  ready?: boolean;
14
38
  storeDegraded?: boolean;
15
39
  restartRequired?: boolean;
16
40
  [k: string]: unknown;
17
41
  }
42
+ /** Judgement-typed probe outcome. `alive` iff HTTP 200 AND `status === "ok"`; every dead arm carries WHY:
43
+ * - `timeout` — no answer inside the budget (process wedged / port filtered);
44
+ * - `network` — connect refused / DNS / TLS (nothing listening — the common "engine is down");
45
+ * - `http` — the port answered with a non-2xx (`status` = the code; something ELSE squats on the port,
46
+ * or the engine is mid-boot behind a proxy);
47
+ * - `not_ok` — 2xx but not the health contract (`status` field ≠ "ok" or unparseable body — port reuse by
48
+ * a non-engine HTTP server). */
18
49
  export type ProbeHealthResult = {
19
50
  alive: true;
20
51
  health: EngineHealth;
@@ -26,6 +57,19 @@ export type ProbeHealthResult = {
26
57
  reason: "http" | "not_ok";
27
58
  status: number;
28
59
  };
60
+ /**
61
+ * Zero-throw unauthenticated liveness probe: `GET <baseUrl>/health` with a hard `timeoutMs` budget
62
+ * (default 2000 — process-noise cadence; pass more for slow cold boots). NEVER throws, NEVER sends
63
+ * credentials (TOFU discipline: nothing secret may leave before trust is established — same posture as the
64
+ * shell's probeEngineHealthUrl). Static on purpose: usable before/without an AgentClient (constitution
65
+ * exception ①).
66
+ */
29
67
  export declare function probeHealth(baseUrl: string, timeoutMs?: number, fetchImpl?: typeof fetch): Promise<ProbeHealthResult>;
68
+ /**
69
+ * Single-source engine URL builder (constitution exception ② — the teardown fire-and-forget raw's URL comes
70
+ * from HERE, never hand-concatenated). Join semantic is byte-identical to Transport's:
71
+ * trailing slashes are stripped off `baseUrl`, `path` is used verbatim (a missing leading `/` is added).
72
+ * 🔴 Path SEGMENTS are the caller's to encode (`encodeURIComponent` per segment) — this joins, it does not encode.
73
+ */
30
74
  export declare function engineUrl(baseUrl: string, path: string): string;
31
75
  //# sourceMappingURL=health.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,YAAY;IAE3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AASD,MAAM,MAAM,iBAAiB,GACzB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACrC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAShE,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,SAAO,EAChB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAqB5B;AAQD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/D"}
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;uGACuG;AACvG,MAAM,WAAW,YAAY;IAC3B,kHAAkH;IAClH,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kHAAkH;IAClH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6GAA6G;IAC7G,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;;;;;;gDAMgD;AAChD,MAAM,MAAM,iBAAiB,GACzB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACrC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,SAAO,EAChB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAqB5B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/D"}
package/dist/health.js CHANGED
@@ -1,3 +1,29 @@
1
+ /**
2
+ * 免构造工具(SDK 宪法例外①②收编,clay 拍 2026-07-16)—— the TWO sanctioned raw-HTTP shapes that must NOT
3
+ * require an AgentClient:
4
+ *
5
+ * ① {@link probeHealth} — process-noise liveness. `/health` is the worker's UNAUTHENTICATED door
6
+ * (server 1.214 server.js:296 — no token, no principal), and the probe's whole job is "is anything
7
+ * alive there?" BEFORE credentials/TOFU exist (engine spawn wait-loops, port arbitration, dead-engine
8
+ * triage, teardown confirmation — the shell's 6-strong probe family). Constructing a principal-first,
9
+ * token-bearing client to ask that would invert the trust order, so the SDK ships the probe as a STATIC
10
+ * function: zero-throw, judgement-typed, and — deliberately — sending NO credentials ever.
11
+ *
12
+ * ② {@link engineUrl} — the single-source URL builder for the teardown last-resort raw fetch
13
+ * (fire-and-forget on a dying process, where awaiting a Transport is wrong) and for anything else the
14
+ * constitution grudgingly allows raw. One join semantic (identical to Transport's), so a hand-built URL
15
+ * can never drift from what the client would have called.
16
+ *
17
+ * Everything ELSE goes through AgentClient — these two are the WHOLE exception surface (plus labelled
18
+ * contract-probe raws in tests; see the SDK constitution in the repo CLAUDE.md).
19
+ */
20
+ /**
21
+ * Zero-throw unauthenticated liveness probe: `GET <baseUrl>/health` with a hard `timeoutMs` budget
22
+ * (default 2000 — process-noise cadence; pass more for slow cold boots). NEVER throws, NEVER sends
23
+ * credentials (TOFU discipline: nothing secret may leave before trust is established — same posture as the
24
+ * shell's probeEngineHealthUrl). Static on purpose: usable before/without an AgentClient (constitution
25
+ * exception ①).
26
+ */
1
27
  export async function probeHealth(baseUrl, timeoutMs = 2000, fetchImpl = fetch) {
2
28
  const controller = new AbortController();
3
29
  const timer = setTimeout(() => controller.abort(), timeoutMs);
@@ -24,6 +50,12 @@ export async function probeHealth(baseUrl, timeoutMs = 2000, fetchImpl = fetch)
24
50
  clearTimeout(timer);
25
51
  }
26
52
  }
53
+ /**
54
+ * Single-source engine URL builder (constitution exception ② — the teardown fire-and-forget raw's URL comes
55
+ * from HERE, never hand-concatenated). Join semantic is byte-identical to Transport's:
56
+ * trailing slashes are stripped off `baseUrl`, `path` is used verbatim (a missing leading `/` is added).
57
+ * 🔴 Path SEGMENTS are the caller's to encode (`encodeURIComponent` per segment) — this joins, it does not encode.
58
+ */
27
59
  export function engineUrl(baseUrl, path) {
28
60
  const base = baseUrl.replace(/\/+$/, "");
29
61
  return path.startsWith("/") ? base + path : `${base}/${path}`;
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AA8DA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,SAAS,GAAG,IAAI,EAChB,YAA0B,KAAK;IAE/B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACzG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QACzE,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAK,IAA6B,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAChG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAoB,EAAE,CAAC;QACvD,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/G,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAQD,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,IAAY;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAqCH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,SAAS,GAAG,IAAI,EAChB,YAA0B,KAAK;IAE/B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACzG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QACzE,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAK,IAA6B,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAChG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAoB,EAAE,CAAC;QACvD,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/G,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,IAAY;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAChE,CAAC"}
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Idempotency — auto UUID key for submit-class requests (DESIGN §2.3) + the RED LINE: a submit (POST tasks/
3
+ * runs) is retried ONLY when an idempotency key exists. The SDK auto-generates one, so retries are safe by
4
+ * default; a caller that explicitly sets `idempotencyKey: null` to disable it also LOSES auto-retry on submits.
5
+ * (The worker dedups by this key: same key in-flight/settled → reuse, concurrent → 409 — server-verified.)
6
+ */
1
7
  export declare function newIdempotencyKey(): string;
8
+ /** Resolve the effective key: explicit string keeps it; `null` disables (and disables submit retry); undefined
9
+ * → auto-generate. Returned to the transport, which sets the `Idempotency-Key` header and gates retry on it. */
2
10
  export declare function resolveIdempotencyKey(explicit: string | null | undefined): string | null;
3
11
  //# sourceMappingURL=idempotency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"AAMA,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAID,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGxF"}
1
+ {"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;iHACiH;AACjH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGxF"}
@@ -1,6 +1,14 @@
1
+ /**
2
+ * Idempotency — auto UUID key for submit-class requests (DESIGN §2.3) + the RED LINE: a submit (POST tasks/
3
+ * runs) is retried ONLY when an idempotency key exists. The SDK auto-generates one, so retries are safe by
4
+ * default; a caller that explicitly sets `idempotencyKey: null` to disable it also LOSES auto-retry on submits.
5
+ * (The worker dedups by this key: same key in-flight/settled → reuse, concurrent → 409 — server-verified.)
6
+ */
1
7
  export function newIdempotencyKey() {
2
8
  return crypto.randomUUID();
3
9
  }
10
+ /** Resolve the effective key: explicit string keeps it; `null` disables (and disables submit retry); undefined
11
+ * → auto-generate. Returned to the transport, which sets the `Idempotency-Key` header and gates retry on it. */
4
12
  export function resolveIdempotencyKey(explicit) {
5
13
  if (explicit === null)
6
14
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC;AAID,MAAM,UAAU,qBAAqB,CAAC,QAAmC;IACvE,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,QAAQ,IAAI,iBAAiB,EAAE,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC;AAED;iHACiH;AACjH,MAAM,UAAU,qBAAqB,CAAC,QAAmC;IACvE,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,QAAQ,IAAI,iBAAiB,EAAE,CAAC;AACzC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,13 @@
1
+ /** @sema-agent/sdk — usage-plane SDK (the shared substrate for both doors). Server-side only. */
1
2
  export { AgentClient, type AgentClientConfig, type AgentAuthToken } from "./client.js";
3
+ /** Control plane (TOB): sema-registry / config-center `/api/config/*`. A peer client (different backend +
4
+ * secret) for managing the fleet config — see control-client.ts. */
2
5
  export { ControlClient, type ControlClientConfig } from "./control-client.js";
3
6
  export type { Principal, Scenario, RunStatus, TaskStats, TaskRequest, TaskAgentDefinition, TaskResult, RunReceipt, RunRecord, CancelAck, Artifact, LeaderReceipt, LeaderRecord, Capabilities, ScenarioDetail, PendingCheckpoint, SessionRecord, SkillSpec, MemoryRecord, MemoryWriteAck, TaskSummary, CheckpointGate, TraceTurn, TraceBlock, PromptManifest, PromptEpoch, SessionSummary, SessionListPage, SessionPermissionRules, StoredSessionRules, McpServerStatus, McpStatusPanel, SessionWindow, SessionMessageEnvelope, SyncEntry, SyncSnapshot, SyncAnchor, SessionRulesRecord, SessionManifest, SessionBundle, SyncRelation, SyncConflictRelation, ImportStaged, ImportCommitted, TraceStreamEvent, WorkflowStreamEvent, CheckpointSummary, InboxRow, AssistantGate, AssistantTask, PlanReviewRequest, AssistantTaskStatus, ImageIndexEntry, ImageSelectResult, ModelInfo, UsageInfo, PolicyInfo, WorkflowRunStatus, WorkflowRunSummary, WorkflowRun, WorkflowAgentRow, WorkflowActivityBeat, } from "./types.js";
7
+ /** TOC `settings.json` — the SHARED environment-customization contract (CC-parity v1: permissions/hooks/env/model/
8
+ * outputStyle). ONE schema, two wirings: TOC-local (shell adapter → local Runner) + TOB-fleet (carried to service via
9
+ * {@link TaskRequest.settings}). SDK owns the CONTRACT only — no interpreter, no shell-hook runner. core/search AI
10
+ * 2026-06-27 / research/toc-settings-adapter/01-design.md §5①. */
4
11
  export type { SemaSettings, SettingsPermissions, SettingsHooks, SettingsHookMatcher, SettingsHookCommand, SettingsEnv, } from "./settings.js";
5
12
  export type { AgentEvent, EventIdentity, BrainStatusPhase } from "./events.js";
6
13
  export type { StampedAgentEvent } from "./sse.js";
@@ -9,25 +16,37 @@ export { MetricsResource, OutcomesResource, SendfileLinksResource, type OutcomeR
9
16
  export { BakesResource, type BakeClaim } from "./resources/images.js";
10
17
  export { type UsageAnalyticsParams, type UsageMetric, type UsageGranularity, type UsageTotals, type UsageSummary, type UsageSeries, type UsageBreakdown, type UsageDimension } from "./resources/usage.js";
11
18
  export { APIError, AuthError, RateLimitedError, QuotaExhaustedError, ScenarioNotAllowedError, BudgetExceededError, ConflictError, SyncConflictError, ApprovalStaleError, ApprovalBindingMismatchError, ApprovalConcurrentlyReopenedError, SteeringNotRunningError, SteeringInvalidContentError, PrincipalUnverifiedError, PrincipalUnboundError, ApprovalMacRequiredError, ApprovalMacInvalidError, GateNotResumableError, GateNotPlanReviewError } from "./errors.js";
19
+ /** E4 quota deny (pinned wire shape) — structured detail on the 429 `quota_exhausted` typed error. */
12
20
  export type { QuotaExhaustedDetail } from "./errors.js";
21
+ /** 2c session-sync — the NDJSON entry-stream truncation error + the PURE §7 relation classifier (the local peer
22
+ * decides fast-forward/fork BEFORE pulling/pushing). */
13
23
  export { SyncTruncatedError } from "./sse.js";
24
+ /** P0-2 S1 — typed heartbeat-silence watchdog error (tasks.stream / readSseFrames). Message literal is FROZEN
25
+ * (`SSE: no data for ${ms}ms (heartbeat silence)`); carries `elapsedMs` for the caller's idle diagnosis. */
14
26
  export { SseIdleError } from "./sse.js";
15
27
  export { classifySyncRelationshipByIds, pushSessionBundle, pullSessionBundle, importSessionBundle } from "./sync.js";
28
+ /** S2 会话搬运 — the peer-symmetric orchestration verbs over the sync primitives (push local↔cloud both ways). */
16
29
  export type { SessionSyncPeer, PushSessionOptions, PushSessionResult, PullSessionOptions, PulledSession } from "./sync.js";
17
30
  export { SessionSyncResource } from "./resources/session-sync.js";
18
31
  export { SideQueryResource, type SideQueryRequest, type SideQueryResult } from "./resources/side-query.js";
19
32
  export type { SubagentSteerReceipt, SubagentOutputResult, CompactAck, DetachAck } from "./resources/runs.js";
20
33
  export type { SessionGetParams } from "./resources/sessions.js";
21
34
  export type { WorkflowAgentSteerReceipt } from "./resources/workflows.js";
35
+ /** Control-plane (sema-registry) typed errors — distinct hierarchy from the worker APIError tree. */
22
36
  export { ControlError, ControlAuthError, ControlForbiddenError, ControlNotFoundError, ControlValidationError, ControlConflictError, toControlError } from "./errors.js";
37
+ /** Control-plane wire types (sema-registry /api/config/*). */
23
38
  export type { ConfigDomain, ControlRole, DomainRead, PutResult, BatchChange, BatchResult, ControlIssue, SchemaAll, SchemaOne, ExportResult, ConfigChange, ChangeDiff, RollbackResult, PublishedMeta, PendingPublish, PublishState, PublishResult, ApprovePublishResult, CancelPublishResult, FleetSnapshot, FleetMetrics, SchedulePlan, ScheduleApplyResult, WorkerStatuses, RollResult, RotateResult, CascadeOwnerResult, SweepResult, ControlImageEntry, ControlImageList, ImageListQuery, ImageSelectQuery, ImageSelectResolution, SecretInventory, SecretWriteResult, SecretRotateResult, SecretDeleteResult, SecretRefsResult, AuthProviderConfig, AuthProviderUpsert, AuthProvidersResult, AuthProviderUpsertResult, ControlUser, UsersResult, UserUpsertResult, UserTokenMintResult, UserTokenRevokeResult, } from "./control-types.js";
24
39
  export { newIdempotencyKey } from "./idempotency.js";
40
+ /** SDK 宪法例外①②收编(免构造工具)— unauthenticated liveness probe + the single-source URL builder for the
41
+ * teardown fire-and-forget raw. Static on purpose: usable before/without an AgentClient. */
25
42
  export { probeHealth, engineUrl } from "./health.js";
26
43
  export type { EngineHealth, ProbeHealthResult } from "./health.js";
27
44
  export type { ApprovalDecision, ApprovalStreamEvent, ApprovalExemption } from "./resources/approvals.js";
28
45
  export type { ElicitationFrame, ElicitResponse, ElicitRespondAck } from "./resources/elicitations.js";
29
46
  export type { QuestionFrame, AskQuestion, AskQuestionOption, QuestionAnswer, QuestionAnswerItem, QuestionRespondAck } from "./resources/questions.js";
30
47
  export type { ToolApprovalFrame, ToolApprovalDecision, ToolApprovalRespondAck } from "./resources/tool-approvals.js";
48
+ /** MF-Fleet (shell-host data contract) — `client.fleet.stream()` LIVE multi-row fleet view (usage-plane;
49
+ * DISTINCT from the control-plane `ControlClient.fleet`). The SDK produces frames; the consumer keeps state. */
31
50
  export { FleetResource } from "./resources/fleet.js";
32
51
  export type { FleetTaskRow, FleetWorkflowRow, FleetTaskStatus, FleetFrame, FleetMeta, FleetBgNotification } from "./resources/fleet.js";
33
52
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,16 +1,29 @@
1
+ /** @sema-agent/sdk — usage-plane SDK (the shared substrate for both doors). Server-side only. */
1
2
  export { AgentClient } from "./client.js";
3
+ /** Control plane (TOB): sema-registry / config-center `/api/config/*`. A peer client (different backend +
4
+ * secret) for managing the fleet config — see control-client.ts. */
2
5
  export { ControlClient } from "./control-client.js";
3
6
  export { assertNever } from "./events.js";
7
+ // SDK 全覆盖批(2026-07-17,clay 令:server API 保证=server AI 直责):运维观测/烧制/用量分析面。
4
8
  export { MetricsResource, OutcomesResource, SendfileLinksResource } from "./resources/ops.js";
5
9
  export { BakesResource } from "./resources/images.js";
6
10
  export { APIError, AuthError, RateLimitedError, QuotaExhaustedError, ScenarioNotAllowedError, BudgetExceededError, ConflictError, SyncConflictError, ApprovalStaleError, ApprovalBindingMismatchError, ApprovalConcurrentlyReopenedError, SteeringNotRunningError, SteeringInvalidContentError, PrincipalUnverifiedError, PrincipalUnboundError, ApprovalMacRequiredError, ApprovalMacInvalidError, GateNotResumableError, GateNotPlanReviewError } from "./errors.js";
11
+ /** 2c session-sync — the NDJSON entry-stream truncation error + the PURE §7 relation classifier (the local peer
12
+ * decides fast-forward/fork BEFORE pulling/pushing). */
7
13
  export { SyncTruncatedError } from "./sse.js";
14
+ /** P0-2 S1 — typed heartbeat-silence watchdog error (tasks.stream / readSseFrames). Message literal is FROZEN
15
+ * (`SSE: no data for ${ms}ms (heartbeat silence)`); carries `elapsedMs` for the caller's idle diagnosis. */
8
16
  export { SseIdleError } from "./sse.js";
9
17
  export { classifySyncRelationshipByIds, pushSessionBundle, pullSessionBundle, importSessionBundle } from "./sync.js";
10
18
  export { SessionSyncResource } from "./resources/session-sync.js";
11
19
  export { SideQueryResource } from "./resources/side-query.js";
20
+ /** Control-plane (sema-registry) typed errors — distinct hierarchy from the worker APIError tree. */
12
21
  export { ControlError, ControlAuthError, ControlForbiddenError, ControlNotFoundError, ControlValidationError, ControlConflictError, toControlError } from "./errors.js";
13
22
  export { newIdempotencyKey } from "./idempotency.js";
23
+ /** SDK 宪法例外①②收编(免构造工具)— unauthenticated liveness probe + the single-source URL builder for the
24
+ * teardown fire-and-forget raw. Static on purpose: usable before/without an AgentClient. */
14
25
  export { probeHealth, engineUrl } from "./health.js";
26
+ /** MF-Fleet (shell-host data contract) — `client.fleet.stream()` LIVE multi-row fleet view (usage-plane;
27
+ * DISTINCT from the control-plane `ControlClient.fleet`). The SDK produces frames; the consumer keeps state. */
15
28
  export { FleetResource } from "./resources/fleet.js";
16
29
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAA+C,MAAM,aAAa,CAAC;AAGvF,OAAO,EAAE,aAAa,EAA4B,MAAM,qBAAqB,CAAC;AAwB9E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAyC,MAAM,oBAAoB,CAAC;AACrI,OAAO,EAAE,aAAa,EAAkB,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,iCAAiC,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAKvc,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGrH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAA+C,MAAM,2BAA2B,CAAC;AAK3G,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAaxK,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,OAAO,EAAE,WAAW,EAA+C,MAAM,aAAa,CAAC;AACvF;qEACqE;AACrE,OAAO,EAAE,aAAa,EAA4B,MAAM,qBAAqB,CAAC;AAwB9E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,wEAAwE;AACxE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAyC,MAAM,oBAAoB,CAAC;AACrI,OAAO,EAAE,aAAa,EAAkB,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,iCAAiC,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGvc;yDACyD;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C;6GAC6G;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGrH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAA+C,MAAM,2BAA2B,CAAC;AAI3G,qGAAqG;AACrG,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAaxK,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD;6FAC6F;AAC7F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMrD;iHACiH;AACjH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,41 +1,84 @@
1
+ /** approvals — HITL (SERVICE-CORE-CONTEXT §3.4). A run `suspended` event means a human must decide: an F4
2
+ * policy gate (approve/deny a dangerous tool) or an AskUserQuestion (answer). LOAD-BEARING for web frontends
3
+ * (web-native, non-expert users authorizing/answering); also usable by door A. */
1
4
  import type { Transport } from "../transport.js";
2
5
  import type { PendingCheckpoint } from "../types.js";
6
+ /** One per-session approval exemption ("本会话不再询问", service exemptions ruling — an APPROVAL MEMORY, not a
7
+ * policy loosen: deny/neverAuto always outrank it). Keyed in CANONICAL tool-name space (service
8
+ * `ApprovalExemptionRow`, approval-exemption-store.ts). */
3
9
  export interface ApprovalExemption {
4
10
  toolName: string;
11
+ /** Principal that granted it; null = ownerless/anonymous grant. */
5
12
  grantedBy: string | null;
13
+ /** Epoch MS of the FIRST grant (a re-grant refreshes grantedBy, not this). */
6
14
  createdAt: number;
7
15
  }
16
+ /** A delta event from `GET /v1/approvals/stream` (native push, service [83]). Open shape — `type` discriminates
17
+ * `pending` / `resolved` / `synced` (initial) / `heartbeat`; payload fields are FORWARD-DRAFT pending service's
18
+ * shape confirmation. A consumer that doesn't parse the delta can treat any non-heartbeat event
19
+ * as a "changed" signal and refetch the authoritative list (`list()`). */
8
20
  export interface ApprovalStreamEvent {
9
21
  type: "pending" | "resolved" | "synced" | "heartbeat" | (string & {});
10
22
  [k: string]: unknown;
11
23
  }
12
24
  export interface ApprovalDecision {
13
25
  decision: "approve" | "deny";
26
+ /** For AskUserQuestion: the operator's answer. Omit for a plain F4 approve/deny. */
14
27
  answer?: unknown;
15
28
  reason?: string;
29
+ /** @deprecated ASSISTANT-WIRE-CONTRACT §4a:`checkpointToken` 是 server-INTERNAL,**永不**在 `/v1/approvals`
30
+ * 记录上 surface(server 自按 sessionId 解析);合规 client **只发 boundCallId+boundInputHash 两件套**,绝不注入
31
+ * checkpointToken(可选 checkpointToken→409 approval_stale 是 deprecated legacy 路径)。字段保留仅为向后兼容编译,
32
+ * 不应再有来源填它(SDK 富 PendingCheckpoint 已无此字段)。 */
16
33
  checkpointToken?: string;
34
+ /** design/80 D-1 — action binding (TOCTOU guard). Read these TWO off the `PendingCheckpoint` the human saw
35
+ * and pass them back VERBATIM; the server resolves THIS exact checkpoint, fail-closed on mismatch
36
+ * (→ `ApprovalBindingMismatchError`). Omit only against a pre-D-1 worker (legacy resolve-by-sessionId).
37
+ * = `toolCallId` of the action the human saw (the bound call). */
17
38
  boundCallId?: string;
39
+ /** Echo `PendingCheckpoint.boundInputHash` byte-for-byte — opaque, NEVER hashed/recomputed on the client. */
18
40
  boundInputHash?: string;
41
+ /** Approve-with-edit (design/37 last-wins): the operator's rewritten tool args, applied AFTER the binding
42
+ * check. `boundInputHash` STILL binds the ORIGINAL input the human saw — never hash `updatedInput`. */
19
43
  updatedInput?: unknown;
20
44
  }
21
45
  export declare class ApprovalsResource {
22
46
  private readonly t;
23
47
  constructor(t: Transport);
48
+ /** GET /v1/approvals/:id — 按 id 读单条 durable 审批(server.ts:4342 实拆)。行含完整 tool-call args
49
+ * (高危操作的命令/路径/内容)——owner 边界与列表面同门:operator 跨租户,其余只读本人(非本人=404
50
+ * 无存在性 oracle)。 */
24
51
  get(id: string, opts?: {
25
52
  signal?: AbortSignal;
26
53
  }): Promise<Record<string, unknown>>;
54
+ /** GET /v1/approvals — pending checkpoints (operator-scoped; envelope key `pending`).
55
+ * NEVER returns the capability token. ⚠️ item createdAt/deadline are epoch MS. */
27
56
  list(opts?: {
28
57
  signal?: AbortSignal;
29
58
  }): Promise<PendingCheckpoint[]>;
59
+ /** POST /v1/approvals/:sessionId/decide — resolve a suspend; the resumed run continues its stream.
60
+ * Not a submit → no SDK retry (a decide must not double-act). */
30
61
  decide(sessionId: string, decision: ApprovalDecision, opts?: {
31
62
  signal?: AbortSignal;
32
63
  }): Promise<unknown>;
64
+ /** GET /v1/approvals/:sessionId/exemptions — the session's granted "don't ask again" exemptions (* contract; envelope key `exemptions`). OWNER-GATED with a 404 (no existence oracle): non-owner AND unknown
65
+ * session both 404. A worker without an exemption store backend → 501. */
33
66
  listExemptions(sessionId: string, opts?: {
34
67
  signal?: AbortSignal;
35
68
  }): Promise<ApprovalExemption[]>;
69
+ /** DELETE /v1/approvals/:sessionId/exemptions/:toolName — revoke ONE exemption (the tool asks again).
70
+ * contract. Idempotent at the SDK surface: `true` = revoked; `false` = the service 404'd — nothing to revoke
71
+ * OR not-owner/unknown session (deliberately indistinguishable, no existence oracle). `toolName` should be the
72
+ * canonical name off {@link ApprovalExemption.toolName} (the service canonicalizes, but echo what you listed). */
36
73
  revokeExemption(sessionId: string, toolName: string, opts?: {
37
74
  signal?: AbortSignal;
38
75
  }): Promise<boolean>;
76
+ /** GET /v1/approvals/stream — native push (SSE delta, meta `mode:"approvals-delta"`, service [83]). Replaces
77
+ * BFF-side polling of `list()`. LONG-LIVED + operator-scoped: there is NO terminal event — this reconnects on
78
+ * drops / heartbeat-silence and tails on (uses `readSseFrames`, NOT `parseSse`, which would end on done/failed).
79
+ * A non-`ok` first response (e.g. 404 on a worker without the endpoint) throws → caller falls back to polling.
80
+ * FORWARD-DRAFT: event payloads pending service confirmation — consumers refetch `list()` on
81
+ * any non-heartbeat event rather than trusting an unconfirmed delta shape. */
39
82
  stream(opts?: {
40
83
  signal?: AbortSignal;
41
84
  }): AsyncGenerator<ApprovalStreamEvent>;
@@ -1 +1 @@
1
- {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/resources/approvals.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOrD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IAEjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,GAAG,MAAM,CAAC;IAE7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAKhB,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAKnC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMlF,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAOnE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAWxG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAahG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBtG,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,cAAc,CAAC,mBAAmB,CAAC;CA8BpF"}
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,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIrD;;4DAE4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;2EAG2E;AAC3E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,oFAAoF;IACpF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;mDAG+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;uEAGmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6GAA6G;IAC7G,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;4GACwG;IACxG,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAEzC;;wBAEoB;IACd,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIxF;uFACmF;IAC7E,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKzE;sEACkE;IAC5D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9G;+EAC2E;IACrE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAStG;;;uHAGmH;IAC7G,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAc7G;;;;;mFAK+E;IACxE,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,cAAc,CAAC,mBAAmB,CAAC;CA8BpF"}
@@ -5,13 +5,20 @@ export class ApprovalsResource {
5
5
  constructor(t) {
6
6
  this.t = t;
7
7
  }
8
+ /** GET /v1/approvals/:id — 按 id 读单条 durable 审批(server.ts:4342 实拆)。行含完整 tool-call args
9
+ * (高危操作的命令/路径/内容)——owner 边界与列表面同门:operator 跨租户,其余只读本人(非本人=404
10
+ * 无存在性 oracle)。 */
8
11
  async get(id, opts) {
9
12
  return this.t.request({ method: "GET", path: `/v1/approvals/${encodeURIComponent(id)}`, signal: opts?.signal });
10
13
  }
14
+ /** GET /v1/approvals — pending checkpoints (operator-scoped; envelope key `pending`).
15
+ * NEVER returns the capability token. ⚠️ item createdAt/deadline are epoch MS. */
11
16
  async list(opts) {
12
17
  const r = await this.t.request({ method: "GET", path: "/v1/approvals", signal: opts?.signal });
13
18
  return r.pending;
14
19
  }
20
+ /** POST /v1/approvals/:sessionId/decide — resolve a suspend; the resumed run continues its stream.
21
+ * Not a submit → no SDK retry (a decide must not double-act). */
15
22
  async decide(sessionId, decision, opts) {
16
23
  return this.t.request({
17
24
  method: "POST",
@@ -20,6 +27,8 @@ export class ApprovalsResource {
20
27
  signal: opts?.signal,
21
28
  });
22
29
  }
30
+ /** GET /v1/approvals/:sessionId/exemptions — the session's granted "don't ask again" exemptions (* contract; envelope key `exemptions`). OWNER-GATED with a 404 (no existence oracle): non-owner AND unknown
31
+ * session both 404. A worker without an exemption store backend → 501. */
23
32
  async listExemptions(sessionId, opts) {
24
33
  const r = await this.t.request({
25
34
  method: "GET",
@@ -28,6 +37,10 @@ export class ApprovalsResource {
28
37
  });
29
38
  return r.exemptions;
30
39
  }
40
+ /** DELETE /v1/approvals/:sessionId/exemptions/:toolName — revoke ONE exemption (the tool asks again).
41
+ * contract. Idempotent at the SDK surface: `true` = revoked; `false` = the service 404'd — nothing to revoke
42
+ * OR not-owner/unknown session (deliberately indistinguishable, no existence oracle). `toolName` should be the
43
+ * canonical name off {@link ApprovalExemption.toolName} (the service canonicalizes, but echo what you listed). */
31
44
  async revokeExemption(sessionId, toolName, opts) {
32
45
  try {
33
46
  await this.t.request({
@@ -43,6 +56,12 @@ export class ApprovalsResource {
43
56
  throw e;
44
57
  }
45
58
  }
59
+ /** GET /v1/approvals/stream — native push (SSE delta, meta `mode:"approvals-delta"`, service [83]). Replaces
60
+ * BFF-side polling of `list()`. LONG-LIVED + operator-scoped: there is NO terminal event — this reconnects on
61
+ * drops / heartbeat-silence and tails on (uses `readSseFrames`, NOT `parseSse`, which would end on done/failed).
62
+ * A non-`ok` first response (e.g. 404 on a worker without the endpoint) throws → caller falls back to polling.
63
+ * FORWARD-DRAFT: event payloads pending service confirmation — consumers refetch `list()` on
64
+ * any non-heartbeat event rather than trusting an unconfirmed delta shape. */
46
65
  async *stream(opts) {
47
66
  let failures = 0;
48
67
  for (;;) {
@@ -62,16 +81,17 @@ export class ApprovalsResource {
62
81
  continue;
63
82
  }
64
83
  if (!res.ok)
65
- throw toApiError(res.status, await res.json().catch(() => ({})));
84
+ throw toApiError(res.status, await res.json().catch(() => ({}))); // 404/4xx → caller polls
66
85
  try {
67
86
  for await (const frame of readSseFrames(res, HEARTBEAT_GRACE_MS, opts?.signal)) {
68
- failures = 0;
87
+ failures = 0; // a frame arrived = progress
69
88
  if (!frame.data)
70
- continue;
89
+ continue; // heartbeat comment
71
90
  yield JSON.parse(frame.data);
72
91
  }
73
92
  }
74
93
  catch {
94
+ // mid-stream drop or heartbeat silence → reconnect (long-lived stream has no terminal event)
75
95
  }
76
96
  finally {
77
97
  res.body?.cancel().catch(() => { });
@@ -1 +1 @@
1
- {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/resources/approvals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/resources/approvals.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,44 @@
1
+ /** assistant — assistant-scheduler + HITL 决策面(ASSISTANT-WIRE-CONTRACT.md, service main 6cd0164 /
2
+ * core 1.110.0, LIVE on worker)。解锁 CLI 的 severity inbox(N2) / 总览抢占(N4) / plan_review(N3)。
3
+ *
4
+ * 🔴 拓扑铁律: CLI/web 前端 → BFF /api/* → `sdk(principal).assistant.*` → worker(worker token 留 BFF)。
5
+ * SDK 服务端用, 不进浏览器/CLI。withPrincipal 自动重建本 resource —— BFF 的 sdk(principal).assistant.* 天然成立。
6
+ *
7
+ * 🔴 D-G 边界(§6): 这 5 个 verb **不需要**签名证明 —— 走 owner 门(principal header, transport 已注入 x-agent-principal)。
8
+ * 只 /decide 要签名(approvals.decide + BFF 签, 不在本 resource)。owner 非属 → 404(无存在性 oracle)不是 403。 */
1
9
  import type { Transport } from "../transport.js";
2
10
  import type { InboxRow, AssistantTask, PlanReviewRequest, AssistantTaskStatus } from "../types.js";
3
11
  export declare class AssistantResource {
4
12
  private readonly t;
5
13
  constructor(t: Transport);
14
+ /** §2 GET /v1/assistant/inbox —— 单一 severity-sorted inbox(每用户视图)。operator 可用 `?owner=` 看某 owner,
15
+ * 否则看自己。返回行已由 core listPending 按 severity 排序 —— 消费方**不要再排**(且须容 undefined severity)。
16
+ * 解包 envelope `{inbox:[...]}`。owner query 在此手拼(transport.request 的 path 是裸串直拼, 无 query helper)。 */
6
17
  inbox(opts?: {
7
18
  owner?: string;
8
19
  signal?: AbortSignal;
9
20
  }): Promise<InboxRow[]>;
21
+ /** §3 GET /v1/assistant/tasks —— N-task 调度总览(每用户跨任务视图)。Triage 序由 core 给定(needsAttention 优先,
22
+ * 再 severity DESC, 再 spend DESC)—— **不要再排**。需 TiDB run store, 否则 worker 回 `{tasks:[]}`(原样透传)。 */
10
23
  tasks(opts?: {
11
24
  signal?: AbortSignal;
12
25
  }): Promise<AssistantTask[]>;
26
+ /** §4b POST /v1/assistant/tasks/:id/resume(:id = taskId)—— resource_limit CONTINUE。**无 body**。
27
+ * 非 submit → 不重试(一次决策不重放)。🔴 GATE-KIND GUARD: human/policy_ask 门 → 409 gate_not_resumable
28
+ * ("continue" 绝不绕过人审, 那条路是 /decide)。owner 非属 → 404。 */
13
29
  resume(taskId: string, opts?: {
14
30
  signal?: AbortSignal;
15
31
  }): Promise<AssistantTaskStatus>;
32
+ /** §4c POST /v1/assistant/tasks/:id/plan_review(:id = taskId)—— PRE-ACTION plan_review 门的 3-state 决策。
33
+ * body = {decision, editedPlan?, reason?}。approve/edit/reject 全跑模型 → 计费。非 submit → 不重试。
34
+ * 🔴 GATE-KIND GUARD: 非 plan_review 门 → 409 gate_not_plan_review。400: 坏/缺 decision; edit 缺非空 editedPlan;
35
+ * approve/reject 带 editedPlan; reason 非串。owner 非属 → 404。 */
16
36
  planReview(taskId: string, req: PlanReviewRequest, opts?: {
17
37
  signal?: AbortSignal;
18
38
  }): Promise<AssistantTaskStatus>;
39
+ /** §4d POST /v1/assistant/tasks/:id/preempt(:id = taskId)—— 优雅 YIELD(跨副本让位, 与 runs.cancel 的 kill 相反)。
40
+ * **无 body**。202 {status}(terminal → 202 no-op)。非 submit → 不重试。NOT billable。
41
+ * suspended → 409; RESOURCE_SUSPEND off → 501; owner 非属 → 404。 */
19
42
  preempt(taskId: string, opts?: {
20
43
  signal?: AbortSignal;
21
44
  }): Promise<AssistantTaskStatus>;
@@ -1 +1 @@
1
- {"version":3,"file":"assistant.d.ts","sourceRoot":"","sources":["../../src/resources/assistant.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAiB,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAyBlH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAKnC,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAmB3E,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAehE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAYrF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAYjH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAO7F"}
1
+ {"version":3,"file":"assistant.d.ts","sourceRoot":"","sources":["../../src/resources/assistant.ts"],"names":[],"mappings":"AAAA;;;;;;;+FAO+F;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAiB,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAyBlH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,SAAS;IAEzC;;wGAEoG;IAC9F,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAiBjF;sGACkG;IAC5F,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAYtE;;4DAEwD;IAClD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ3F;;;iEAG6D;IACvD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IASvH;;uEAEmE;IAC7D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAO7F"}