@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/client.d.ts CHANGED
@@ -18,15 +18,27 @@ import { PolicyResource } from "./resources/policy.js";
18
18
  import { WorkflowsResource } from "./resources/workflows.js";
19
19
  import { FleetResource } from "./resources/fleet.js";
20
20
  import type { Principal, Capabilities, ScenarioDetail } from "./types.js";
21
+ /** Auth posture for the worker door.
22
+ * - `string` — the worker `SERVICE_AUTH_TOKEN` (the normal, fail-closed path).
23
+ * - `{ mode: "loopback-unauthed" }` — EXPLICIT unauthenticated posture for a loopback dev engine
24
+ * (a server started with `ALLOW_UNAUTHED_WRITES`). Honest alternative to passing a fake token:
25
+ * no `Authorization` header is ever sent, and construction REFUSES any non-loopback `baseUrl`
26
+ * (127.0.0.1/localhost/::1 only) so it can't be pointed at a remote worker by mistake. */
21
27
  export type AgentAuthToken = string | {
22
28
  mode: "loopback-unauthed";
23
29
  };
24
30
  export interface AgentClientConfig {
31
+ /** Worker base URL (e.g. `http://oa.a2.svc` or via Traefik `http://<node>/<routePrefix>`). */
25
32
  baseUrl: string;
33
+ /** Worker `SERVICE_AUTH_TOKEN`. SERVER-SIDE ONLY (the browser guard enforces this).
34
+ * For a loopback dev engine, `{ mode: "loopback-unauthed" }` is the explicit no-token posture. */
26
35
  authToken: AgentAuthToken;
36
+ /** Authenticated end-user identity — REQUIRED (principal-first). Anonymous must be explicit: `anon:<id>`. */
27
37
  principal: Principal;
38
+ /** openai-node-style defaults. */
28
39
  timeoutMs?: number;
29
40
  maxRetries?: number;
41
+ /** Escape hatch for tests / a deliberate browser BFF that injects the token itself. Default false. */
30
42
  allowBrowser?: boolean;
31
43
  fetch?: typeof fetch;
32
44
  }
@@ -35,32 +47,68 @@ export declare class AgentClient {
35
47
  readonly runs: RunsResource;
36
48
  readonly sessions: SessionsResource;
37
49
  readonly approvals: ApprovalsResource;
50
+ /** §E23 inbound-MCP-elicitation HITL(service `MCP_ELICITATION_ENABLED`)— answer a mid-tool-call form prompt
51
+ * an opted-in MCP server pushed on the live stream (`POST /v1/elicitations/:id/respond`)。LIVE-ONLY + same-replica。 */
38
52
  readonly elicitations: ElicitationsResource;
53
+ /** §4④ live-stream AskUserQuestion HITL (core `RunnerDeps.onQuestion` → service QuestionCoordinator — LIVE-only,
54
+ * same-replica). The agent's OWN structured multiple-choice ask to the end user; SIBLING of `elicitations`.
55
+ * Consume the `question`/`question_complete` frames off `tasks.streamRaw` (event: name), answer via
56
+ * `POST /v1/questions/:id/respond`. */
39
57
  readonly questions: QuestionsResource;
58
+ /** [830]① live-stream TOOL-APPROVAL HITL (server `TOOL_APPROVAL_ENABLED`) — the engine's permission gate
59
+ * ("may I run this tool?") surfaced to a live human. THIRD sibling of `elicitations`/`questions`; the
60
+ * `steer()`-class LIVE decide面, NOT the durable checkpoint class (`approvals`). Consume the
61
+ * `tool_approval`/`tool_approval_complete` frames off `tasks.streamRaw`, decide via
62
+ * `POST /v1/tool-approvals/:id/respond`. Gate on `capabilities.toolApproval`. */
40
63
  readonly toolApprovals: ToolApprovalsResource;
64
+ /** [1469] `POST /v1/side-query`(server 1.242/core 1.361)— 一次性 brain 路由问答,无 session 副作用/
65
+ * 无工具执行/无流式(v1)。壳侧 utility 传输层。探测 `capabilities.sideQuery`。 */
41
66
  readonly sideQuery: SideQueryResource;
67
+ /** assistant-scheduler + HITL 决策面(inbox/tasks/resume/planReview/preempt; ASSISTANT-WIRE-CONTRACT, LIVE on worker)。 */
42
68
  readonly assistant: AssistantResource;
43
69
  readonly trace: TraceResource;
44
70
  readonly leader: LeaderResource;
45
71
  readonly memory: MemoryResource;
72
+ /** §sandbox-image catalog(IMAGE-API §7)— 门B「选沙箱模板」只读数据源(list/select 预览)。 */
46
73
  readonly images: ImagesResource;
74
+ /** §model catalog(core 1.116 `@model` 线;service GET /v1/models)— `@model` 切换的只读模型名目录(picker/autocomplete)。 */
47
75
  readonly models: ModelsResource;
76
+ /** §cost/usage(service GET /v1/usage)— per-principal 成本配额 + 单任务上限(CLI `/cost` 面板真数据)。 */
48
77
  readonly usage: UsageResource;
78
+ /** §permissions(service GET /v1/policy)— 生效自治档/命令策略/上限快照(CLI `/permissions` 面板真数据)。 */
49
79
  readonly policy: PolicyResource;
80
+ /** §workflow 可观测(core 1.116 design/97;service GET /v1/workflows*)— owner-scoped run 列表/详情(S8-off 时 501)。 */
50
81
  readonly workflows: WorkflowsResource;
82
+ /** §MF-Fleet(shell-host data contract;service GET /v1/fleet/stream)— LIVE 多行舰队视图 SSE:snapshot + 逐行
83
+ * task/workflow upsert/remove 帧(FULL row,update-in-place)。owner-scoped、scope 已 wire 剥、不 resumable。
84
+ * 🔴 与 control-plane 的 `ControlClient.fleet`(config-center 控制面)是不同类、不同 backend,勿混。 */
51
85
  readonly fleet: FleetResource;
86
+ /** 运维观测面(SDK 全覆盖批 2026-07-17):/metrics 三读面。 */
52
87
  readonly metrics: MetricsResource;
88
+ /** GET /v1/outcomes — 任务结局台账(design/73 §7 只读底座)。 */
53
89
  readonly outcomes: OutcomesResource;
90
+ /** GET /v1/sendfile-links — SendUserFile 分发链接台账。 */
54
91
  readonly sendfileLinks: SendfileLinksResource;
92
+ /** sandbox 镜像烧制控制面(client.images 的 bake 半场;operator/runner 两主体)。 */
55
93
  readonly bakes: BakesResource;
56
94
  private readonly config;
57
95
  private readonly transport;
96
+ /** GET /v1/capabilities — one call replaces probe-by-501 (LIVE, service 7aa0f3d).
97
+ * Open set; booleans share deps with the route gates. Render UI by capability, not by trial. */
58
98
  capabilities(opts?: {
59
99
  signal?: AbortSignal;
60
100
  }): Promise<Capabilities>;
101
+ /** GET /v1/capabilities/scenarios/:name — one scenario's detail card (server 1.214 server.js:567-576;
102
+ * `capabilities().scenarios` lists the names, THIS resolves one to its {@link ScenarioDetail}: toolset/tools/
103
+ * prompt digest/enabled). Same family as {@link capabilities} — a worker-config read, not a resource.
104
+ * Unknown name → 404 with the OBJECT-shaped body `{error:{code:"scenario_not_found"}}` (surfaced as a typed
105
+ * APIError with `code === "scenario_not_found"`). */
61
106
  scenarioCapabilities(name: string, opts?: {
62
107
  signal?: AbortSignal;
63
108
  }): Promise<ScenarioDetail>;
109
+ /** Per-request principal (pinned wire contract): the wire principal is a per-request header, so multi-tenant
110
+ * callers (façade/BFF) scope a cheap view per end-user instead of caching principal as ambient state.
111
+ * Principal stays REQUIRED and explicit — no default, no fallback (fail-closed structure unchanged). */
64
112
  withPrincipal(principal: Principal): AgentClient;
65
113
  constructor(config: AgentClientConfig);
66
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -1,3 +1,11 @@
1
+ /**
2
+ * AgentClient — config + resource roots. This file is where the体系铁律 become STRUCTURAL constraints (so the
3
+ * design can't drift into the SDK):
4
+ * - principal-first (DESIGN §2.4): `principal` is REQUIRED at the type level — no anonymous-by-default.
5
+ * - secret discipline (DESIGN §2.5): `authToken` is a server-side construct param. The browser guard refuses
6
+ * to construct a token-bearing client when `window` exists — the SDK gives NO sugar for browser→worker
7
+ * direct calls (a web frontend's browser talks to its own BFF, which holds the token).
8
+ */
1
9
  import { Transport } from "./transport.js";
2
10
  import { TasksResource } from "./resources/tasks.js";
3
11
  import { RunsResource } from "./resources/runs.js";
@@ -18,13 +26,14 @@ import { UsageResource } from "./resources/usage.js";
18
26
  import { PolicyResource } from "./resources/policy.js";
19
27
  import { WorkflowsResource } from "./resources/workflows.js";
20
28
  import { FleetResource } from "./resources/fleet.js";
29
+ /** true iff the URL's host is a loopback address (localhost / 127.0.0.0/8 / ::1). */
21
30
  function isLoopbackBaseUrl(baseUrl) {
22
31
  let hostname;
23
32
  try {
24
33
  hostname = new URL(baseUrl).hostname;
25
34
  }
26
35
  catch {
27
- return false;
36
+ return false; // unparseable baseUrl can't be proven loopback — fail closed
28
37
  }
29
38
  const h = hostname.toLowerCase();
30
39
  return h === "localhost" || h === "[::1]" || h === "::1" || /^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(h);
@@ -34,29 +43,62 @@ export class AgentClient {
34
43
  runs;
35
44
  sessions;
36
45
  approvals;
46
+ /** §E23 inbound-MCP-elicitation HITL(service `MCP_ELICITATION_ENABLED`)— answer a mid-tool-call form prompt
47
+ * an opted-in MCP server pushed on the live stream (`POST /v1/elicitations/:id/respond`)。LIVE-ONLY + same-replica。 */
37
48
  elicitations;
49
+ /** §4④ live-stream AskUserQuestion HITL (core `RunnerDeps.onQuestion` → service QuestionCoordinator — LIVE-only,
50
+ * same-replica). The agent's OWN structured multiple-choice ask to the end user; SIBLING of `elicitations`.
51
+ * Consume the `question`/`question_complete` frames off `tasks.streamRaw` (event: name), answer via
52
+ * `POST /v1/questions/:id/respond`. */
38
53
  questions;
54
+ /** [830]① live-stream TOOL-APPROVAL HITL (server `TOOL_APPROVAL_ENABLED`) — the engine's permission gate
55
+ * ("may I run this tool?") surfaced to a live human. THIRD sibling of `elicitations`/`questions`; the
56
+ * `steer()`-class LIVE decide面, NOT the durable checkpoint class (`approvals`). Consume the
57
+ * `tool_approval`/`tool_approval_complete` frames off `tasks.streamRaw`, decide via
58
+ * `POST /v1/tool-approvals/:id/respond`. Gate on `capabilities.toolApproval`. */
39
59
  toolApprovals;
60
+ /** [1469] `POST /v1/side-query`(server 1.242/core 1.361)— 一次性 brain 路由问答,无 session 副作用/
61
+ * 无工具执行/无流式(v1)。壳侧 utility 传输层。探测 `capabilities.sideQuery`。 */
40
62
  sideQuery;
63
+ /** assistant-scheduler + HITL 决策面(inbox/tasks/resume/planReview/preempt; ASSISTANT-WIRE-CONTRACT, LIVE on worker)。 */
41
64
  assistant;
42
65
  trace;
43
66
  leader;
44
67
  memory;
68
+ /** §sandbox-image catalog(IMAGE-API §7)— 门B「选沙箱模板」只读数据源(list/select 预览)。 */
45
69
  images;
70
+ /** §model catalog(core 1.116 `@model` 线;service GET /v1/models)— `@model` 切换的只读模型名目录(picker/autocomplete)。 */
46
71
  models;
72
+ /** §cost/usage(service GET /v1/usage)— per-principal 成本配额 + 单任务上限(CLI `/cost` 面板真数据)。 */
47
73
  usage;
74
+ /** §permissions(service GET /v1/policy)— 生效自治档/命令策略/上限快照(CLI `/permissions` 面板真数据)。 */
48
75
  policy;
76
+ /** §workflow 可观测(core 1.116 design/97;service GET /v1/workflows*)— owner-scoped run 列表/详情(S8-off 时 501)。 */
49
77
  workflows;
78
+ /** §MF-Fleet(shell-host data contract;service GET /v1/fleet/stream)— LIVE 多行舰队视图 SSE:snapshot + 逐行
79
+ * task/workflow upsert/remove 帧(FULL row,update-in-place)。owner-scoped、scope 已 wire 剥、不 resumable。
80
+ * 🔴 与 control-plane 的 `ControlClient.fleet`(config-center 控制面)是不同类、不同 backend,勿混。 */
50
81
  fleet;
82
+ /** 运维观测面(SDK 全覆盖批 2026-07-17):/metrics 三读面。 */
51
83
  metrics;
84
+ /** GET /v1/outcomes — 任务结局台账(design/73 §7 只读底座)。 */
52
85
  outcomes;
86
+ /** GET /v1/sendfile-links — SendUserFile 分发链接台账。 */
53
87
  sendfileLinks;
88
+ /** sandbox 镜像烧制控制面(client.images 的 bake 半场;operator/runner 两主体)。 */
54
89
  bakes;
55
90
  config;
56
91
  transport;
92
+ /** GET /v1/capabilities — one call replaces probe-by-501 (LIVE, service 7aa0f3d).
93
+ * Open set; booleans share deps with the route gates. Render UI by capability, not by trial. */
57
94
  capabilities(opts) {
58
95
  return this.transport.request({ method: "GET", path: "/v1/capabilities", signal: opts?.signal });
59
96
  }
97
+ /** GET /v1/capabilities/scenarios/:name — one scenario's detail card (server 1.214 server.js:567-576;
98
+ * `capabilities().scenarios` lists the names, THIS resolves one to its {@link ScenarioDetail}: toolset/tools/
99
+ * prompt digest/enabled). Same family as {@link capabilities} — a worker-config read, not a resource.
100
+ * Unknown name → 404 with the OBJECT-shaped body `{error:{code:"scenario_not_found"}}` (surfaced as a typed
101
+ * APIError with `code === "scenario_not_found"`). */
60
102
  scenarioCapabilities(name, opts) {
61
103
  return this.transport.request({
62
104
  method: "GET",
@@ -64,15 +106,20 @@ export class AgentClient {
64
106
  signal: opts?.signal,
65
107
  });
66
108
  }
109
+ /** Per-request principal (pinned wire contract): the wire principal is a per-request header, so multi-tenant
110
+ * callers (façade/BFF) scope a cheap view per end-user instead of caching principal as ambient state.
111
+ * Principal stays REQUIRED and explicit — no default, no fallback (fail-closed structure unchanged). */
67
112
  withPrincipal(principal) {
68
113
  if (!principal)
69
114
  throw new Error("AgentClient.withPrincipal: principal is required (use 'anon:<id>' to be explicitly anonymous).");
70
115
  return new AgentClient({ ...this.config, principal });
71
116
  }
72
117
  constructor(config) {
73
- this.config = { ...config };
118
+ this.config = { ...config }; // own copy — later caller mutation must not leak into scoped views
74
119
  if (!config.principal)
75
120
  throw new Error("AgentClient: `principal` is required (principal-first). Use 'anon:<id>' to be explicitly anonymous.");
121
+ // loopback-unauthed (by design): the only way to construct without a token is to SAY SO, and it is
122
+ // structurally pinned to a loopback baseUrl — a remote worker always requires a real token.
76
123
  const loopbackUnauthed = typeof config.authToken === "object" && config.authToken !== null;
77
124
  if (loopbackUnauthed) {
78
125
  if (config.authToken.mode !== "loopback-unauthed") {
@@ -85,9 +132,15 @@ export class AgentClient {
85
132
  else if (!config.authToken) {
86
133
  throw new Error("AgentClient: `authToken` is required (worker is fail-closed).");
87
134
  }
135
+ // 🔴 secret discipline: a token must never live in a browser. If `window` exists and the caller didn't
136
+ // explicitly opt in (allowBrowser, for a BFF that injects per-request), refuse to construct.
88
137
  if (!config.allowBrowser && typeof globalThis.window !== "undefined") {
89
138
  throw new Error("AgentClient: refusing to construct a token-bearing client in a browser (secret discipline). A browser must call its own BFF; only the server holds SERVICE_AUTH_TOKEN.");
90
139
  }
140
+ // 🔴 secret discipline: the worker token + principal are captured in this closure ONLY — never stored as
141
+ // a Transport field. The header shape (Bearer authToken + x-agent-principal) is byte-identical to before;
142
+ // it has just moved from Transport.headers() to here so worker + registry share one request/retry engine.
143
+ // loopback-unauthed sends NO Authorization header at all (no fake token on the wire).
91
144
  const authToken = typeof config.authToken === "string" ? config.authToken : undefined;
92
145
  const principal = config.principal;
93
146
  const opts = {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -9,27 +9,48 @@ import { ControlSecretsResource } from "./resources/control/secrets.js";
9
9
  import { ControlAuthProvidersResource } from "./resources/control/auth-providers.js";
10
10
  import { ControlUsersResource } from "./resources/control/users.js";
11
11
  export interface ControlClientConfig {
12
+ /** sema-registry base URL — your registry deployment host (NOT the worker endpoint). The caller
13
+ * resolves this from the env-NAME SEMA_REGISTRY_URL (legacy CONFIG_CENTER_URL) or a flag. */
12
14
  baseUrl: string;
15
+ /** editor/admin Bearer. 🔴 SERVER-SIDE ONLY (the browser guard enforces it). The caller reads it from the
16
+ * env-NAME SEMA_REGISTRY_TOKEN (legacy CONFIG_CENTER_TOKEN) and passes the VALUE in — the SDK never reads
17
+ * env (env-agnostic, same as AgentClient.authToken). */
13
18
  token: string;
19
+ /** Audit principal (OPTIONAL). Maps to the registry's x-agent-principal → audited as `ai:<principal>`.
20
+ * Omitted ⇒ the header is not sent ⇒ the registry records `unknown`. (Registry does NOT require principal-
21
+ * first, unlike the worker — so this is optional here.) */
14
22
  principal?: string;
15
23
  timeoutMs?: number;
16
24
  maxRetries?: number;
25
+ /** Escape hatch for tests / a deliberate BFF that injects the token itself. Default false. */
17
26
  allowBrowser?: boolean;
18
27
  fetch?: typeof fetch;
19
28
  }
20
29
  export declare class ControlClient {
30
+ /** config domain CRUD + atomic batch + schema introspection + portable export (the CLI fleet.ts归宿). */
21
31
  readonly config: ControlConfigResource;
32
+ /** audit trail: list changes / diff one change / rollback to a past snapshot. */
22
33
  readonly versioning: ControlVersioningResource;
34
+ /** the draft→production publish gate + N-approver approval workflow. */
23
35
  readonly publish: ControlPublishResource;
36
+ /** operations dashboard read + 多主机调度 (placement / rebalance / reschedule preview+apply). */
24
37
  readonly fleet: ControlFleetResource;
38
+ /** per-worker ops: status read / image roll (full-auto CD) / rotate (force recreate). */
25
39
  readonly workers: ControlWorkersResource;
40
+ /** fleet lifecycle: cascade-delete an owner's workers / run one sweep pass. */
26
41
  readonly lifecycle: ControlLifecycleResource;
42
+ /** shared sandbox-image pool (BFF relay over the worker /v1/images): list / get / by-digest / resolve-preview. */
27
43
  readonly images: ControlImagesResource;
44
+ /** worker app-secret write-through + inventory + batch-rotate + reclaim. 🔴 values go UP once, never read back. */
28
45
  readonly secrets: ControlSecretsResource;
46
+ /** login auth-provider config (Gitea/OAuth2). 🔴 client_secret is an env-NAME, never a value. */
29
47
  readonly authProviders: ControlAuthProvidersResource;
48
+ /** console user (RBAC) management + per-user scoped API tokens (minted plaintext shown once). */
30
49
  readonly users: ControlUsersResource;
31
50
  private readonly config_;
32
51
  private readonly transport;
52
+ /** Per-request audit principal — a scoped view that stamps `x-agent-principal` for THIS caller's actions
53
+ * (a multi-tenant BFF scopes audit identity per operator without re-reading the token from env). */
33
54
  withPrincipal(principal: string): ControlClient;
34
55
  constructor(config: ControlClientConfig);
35
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"control-client.d.ts","sourceRoot":"","sources":["../src/control-client.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAGlC,OAAO,EAAE,MAAM,CAAC;IAIhB,KAAK,EAAE,MAAM,CAAC;IAId,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,qBAAa,aAAa;IAExB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAEvC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAE/C,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IAEzC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IAErC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IAEzC,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;IAE7C,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAEvC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IAEzC,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC;IAErD,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAItC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;gBAInC,MAAM,EAAE,mBAAmB;CA0CxC"}
1
+ {"version":3,"file":"control-client.d.ts","sourceRoot":"","sources":["../src/control-client.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC;kGAC8F;IAC9F,OAAO,EAAE,MAAM,CAAC;IAChB;;6DAEyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd;;gEAE4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8FAA8F;IAC9F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,uGAAuG;IACvG,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,iFAAiF;IACjF,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;IAC7C,kHAAkH;IAClH,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,mHAAmH;IACnH,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,iGAAiG;IACjG,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC;IACrD,iGAAiG;IACjG,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC;yGACqG;IACrG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;gBAInC,MAAM,EAAE,mBAAmB;CA0CxC"}
@@ -1,3 +1,28 @@
1
+ /**
2
+ * ControlClient — the TOB CONTROL PLANE client: sema-registry (config-center) `/api/config/*`. This is a
3
+ * peer to AgentClient, NOT a part of it: it talks to a DIFFERENT backend (SEMA_REGISTRY_URL — your
4
+ * registry deployment, NOT the worker endpoint) with a DIFFERENT secret (editor/admin Bearer
5
+ * SEMA_REGISTRY_TOKEN — NOT a worker session token).
6
+ *
7
+ * 🔴 WHY A SEPARATE CLIENT (structural, not stylistic):
8
+ * - Two同级 secrets must never share one object: a single client would force a "pick the token by path
9
+ * prefix" branch in header assembly — exactly the fail-open shape to avoid. Two clients = two header
10
+ * closures = two independently-captured secrets; it is structurally impossible to send the registry token
11
+ * to the worker (or vice-versa).
12
+ * - principal semantics differ: the worker REQUIRES principal-first; the registry's x-agent-principal is
13
+ * OPTIONAL (audit slug `ai:<principal>`, absent → `unknown`). Forcing it into AgentClient's REQUIRED
14
+ * principal would be a semantic mismatch.
15
+ *
16
+ * It REUSES Transport's request/retry/timeout/Retry-After/parseJson engine (token-agnostic) via two injection
17
+ * points: `buildHeaders` (registry Bearer + optional principal) and `mapError` (toControlError — the registry's
18
+ * `{error}` envelope, NOT the worker's errorCode envelope).
19
+ *
20
+ * 🔴 secret discipline (sema-cli/fleet.ts parity): the registry token is a server-side construct param. The
21
+ * SDK is env-AGNOSTIC — it does NOT read SEMA_REGISTRY_TOKEN/_URL itself; the CLI/BFF reads the env-NAME and
22
+ * passes the value in (so the SDK has no opinion about which env-NAME holds it). The browser guard refuses
23
+ * to hold the token when `window` exists. The token never appears in any return type, any error message
24
+ * (scrub), any log, and is never echoed back as an Authorization header.
25
+ */
1
26
  import { Transport } from "./transport.js";
2
27
  import { toControlError } from "./errors.js";
3
28
  import { ControlConfigResource } from "./resources/control/config.js";
@@ -11,30 +36,44 @@ import { ControlSecretsResource } from "./resources/control/secrets.js";
11
36
  import { ControlAuthProvidersResource } from "./resources/control/auth-providers.js";
12
37
  import { ControlUsersResource } from "./resources/control/users.js";
13
38
  export class ControlClient {
39
+ /** config domain CRUD + atomic batch + schema introspection + portable export (the CLI fleet.ts归宿). */
14
40
  config;
41
+ /** audit trail: list changes / diff one change / rollback to a past snapshot. */
15
42
  versioning;
43
+ /** the draft→production publish gate + N-approver approval workflow. */
16
44
  publish;
45
+ /** operations dashboard read + 多主机调度 (placement / rebalance / reschedule preview+apply). */
17
46
  fleet;
47
+ /** per-worker ops: status read / image roll (full-auto CD) / rotate (force recreate). */
18
48
  workers;
49
+ /** fleet lifecycle: cascade-delete an owner's workers / run one sweep pass. */
19
50
  lifecycle;
51
+ /** shared sandbox-image pool (BFF relay over the worker /v1/images): list / get / by-digest / resolve-preview. */
20
52
  images;
53
+ /** worker app-secret write-through + inventory + batch-rotate + reclaim. 🔴 values go UP once, never read back. */
21
54
  secrets;
55
+ /** login auth-provider config (Gitea/OAuth2). 🔴 client_secret is an env-NAME, never a value. */
22
56
  authProviders;
57
+ /** console user (RBAC) management + per-user scoped API tokens (minted plaintext shown once). */
23
58
  users;
24
59
  config_;
25
60
  transport;
61
+ /** Per-request audit principal — a scoped view that stamps `x-agent-principal` for THIS caller's actions
62
+ * (a multi-tenant BFF scopes audit identity per operator without re-reading the token from env). */
26
63
  withPrincipal(principal) {
27
64
  return new ControlClient({ ...this.config_, principal });
28
65
  }
29
66
  constructor(config) {
30
- this.config_ = { ...config };
67
+ this.config_ = { ...config }; // own copy — later caller mutation must not leak into scoped views
31
68
  if (!config.baseUrl)
32
69
  throw new Error("ControlClient: `baseUrl` is required (the sema-registry base URL).");
33
70
  if (!config.token)
34
71
  throw new Error("ControlClient: `token` is required (the registry is fail-closed). Read it from the env-NAME SEMA_REGISTRY_TOKEN (legacy CONFIG_CENTER_TOKEN) and pass the value in.");
72
+ // 🔴 secret discipline: an editor/admin Bearer must never live in a browser. Same guard as AgentClient.
35
73
  if (!config.allowBrowser && typeof globalThis.window !== "undefined") {
36
74
  throw new Error("ControlClient: refusing to construct a token-bearing control-plane client in a browser (secret discipline). The browser must call its own BFF; only the server holds SEMA_REGISTRY_TOKEN.");
37
75
  }
76
+ // 🔴 token captured in the buildHeaders closure ONLY — never stored as a Transport field, never serializable.
38
77
  const token = config.token;
39
78
  const principal = config.principal;
40
79
  const opts = {
@@ -42,6 +81,7 @@ export class ControlClient {
42
81
  timeoutMs: config.timeoutMs ?? 60_000,
43
82
  maxRetries: config.maxRetries ?? 2,
44
83
  fetchImpl: config.fetch ?? fetch,
84
+ // registry header装配: editor/admin Bearer + content-type, and x-agent-principal ONLY when set.
45
85
  buildHeaders: (idempotencyKey) => {
46
86
  const h = {
47
87
  authorization: `Bearer ${token}`,
@@ -53,6 +93,7 @@ export class ControlClient {
53
93
  h["idempotency-key"] = idempotencyKey;
54
94
  return h;
55
95
  },
96
+ // registry error envelope is `{error, issues?, currentVersion?}` — NOT the worker errorCode envelope.
56
97
  mapError: toControlError,
57
98
  };
58
99
  const t = new Transport(opts);
@@ -1 +1 @@
1
- {"version":3,"file":"control-client.js","sourceRoot":"","sources":["../src/control-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-client.js","sourceRoot":"","sources":["../src/control-client.ts"],"names":[],"mappings":"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"}