@allin-ai/agent-client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/bin/allinai-agent +4 -0
  4. package/dist/capabilities/context.d.ts +16 -0
  5. package/dist/capabilities/context.d.ts.map +1 -0
  6. package/dist/capabilities/context.js +98 -0
  7. package/dist/capabilities/context.js.map +1 -0
  8. package/dist/capabilities/input.d.ts +7 -0
  9. package/dist/capabilities/input.d.ts.map +1 -0
  10. package/dist/capabilities/input.js +224 -0
  11. package/dist/capabilities/input.js.map +1 -0
  12. package/dist/capabilities/manifest.d.ts +15 -0
  13. package/dist/capabilities/manifest.d.ts.map +1 -0
  14. package/dist/capabilities/manifest.js +292 -0
  15. package/dist/capabilities/manifest.js.map +1 -0
  16. package/dist/capabilities/policy.d.ts +17 -0
  17. package/dist/capabilities/policy.d.ts.map +1 -0
  18. package/dist/capabilities/policy.js +57 -0
  19. package/dist/capabilities/policy.js.map +1 -0
  20. package/dist/capabilities/shell-host.d.ts +32 -0
  21. package/dist/capabilities/shell-host.d.ts.map +1 -0
  22. package/dist/capabilities/shell-host.js +378 -0
  23. package/dist/capabilities/shell-host.js.map +1 -0
  24. package/dist/capabilities/shell-wire.d.ts +13 -0
  25. package/dist/capabilities/shell-wire.d.ts.map +1 -0
  26. package/dist/capabilities/shell-wire.js +60 -0
  27. package/dist/capabilities/shell-wire.js.map +1 -0
  28. package/dist/capabilities/types.d.ts +46 -0
  29. package/dist/capabilities/types.d.ts.map +1 -0
  30. package/dist/capabilities/types.js +7 -0
  31. package/dist/capabilities/types.js.map +1 -0
  32. package/dist/cli/commands.d.ts +83 -0
  33. package/dist/cli/commands.d.ts.map +1 -0
  34. package/dist/cli/commands.js +638 -0
  35. package/dist/cli/commands.js.map +1 -0
  36. package/dist/cli/main.d.ts +2 -0
  37. package/dist/cli/main.d.ts.map +1 -0
  38. package/dist/cli/main.js +7 -0
  39. package/dist/cli/main.js.map +1 -0
  40. package/dist/client/state-store.d.ts +80 -0
  41. package/dist/client/state-store.d.ts.map +1 -0
  42. package/dist/client/state-store.js +422 -0
  43. package/dist/client/state-store.js.map +1 -0
  44. package/dist/client/supervisor.d.ts +118 -0
  45. package/dist/client/supervisor.d.ts.map +1 -0
  46. package/dist/client/supervisor.js +627 -0
  47. package/dist/client/supervisor.js.map +1 -0
  48. package/dist/client/transport.d.ts +30 -0
  49. package/dist/client/transport.d.ts.map +1 -0
  50. package/dist/client/transport.js +2 -0
  51. package/dist/client/transport.js.map +1 -0
  52. package/dist/client/types.d.ts +65 -0
  53. package/dist/client/types.d.ts.map +1 -0
  54. package/dist/client/types.js +13 -0
  55. package/dist/client/types.js.map +1 -0
  56. package/dist/client/wire.d.ts +32 -0
  57. package/dist/client/wire.d.ts.map +1 -0
  58. package/dist/client/wire.js +302 -0
  59. package/dist/client/wire.js.map +1 -0
  60. package/dist/client/ws-transport.d.ts +54 -0
  61. package/dist/client/ws-transport.d.ts.map +1 -0
  62. package/dist/client/ws-transport.js +229 -0
  63. package/dist/client/ws-transport.js.map +1 -0
  64. package/dist/config.d.ts +38 -0
  65. package/dist/config.d.ts.map +1 -0
  66. package/dist/config.js +125 -0
  67. package/dist/config.js.map +1 -0
  68. package/dist/control.d.ts +59 -0
  69. package/dist/control.d.ts.map +1 -0
  70. package/dist/control.js +217 -0
  71. package/dist/control.js.map +1 -0
  72. package/dist/credentials.d.ts +44 -0
  73. package/dist/credentials.d.ts.map +1 -0
  74. package/dist/credentials.js +229 -0
  75. package/dist/credentials.js.map +1 -0
  76. package/dist/hub.d.ts +83 -0
  77. package/dist/hub.d.ts.map +1 -0
  78. package/dist/hub.js +412 -0
  79. package/dist/hub.js.map +1 -0
  80. package/dist/index.d.ts +20 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +18 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/logger.d.ts +47 -0
  85. package/dist/logger.d.ts.map +1 -0
  86. package/dist/logger.js +175 -0
  87. package/dist/logger.js.map +1 -0
  88. package/dist/paths.d.ts +29 -0
  89. package/dist/paths.d.ts.map +1 -0
  90. package/dist/paths.js +50 -0
  91. package/dist/paths.js.map +1 -0
  92. package/dist/plugins/git.d.ts +30 -0
  93. package/dist/plugins/git.d.ts.map +1 -0
  94. package/dist/plugins/git.js +80 -0
  95. package/dist/plugins/git.js.map +1 -0
  96. package/dist/plugins/manager.d.ts +41 -0
  97. package/dist/plugins/manager.d.ts.map +1 -0
  98. package/dist/plugins/manager.js +328 -0
  99. package/dist/plugins/manager.js.map +1 -0
  100. package/dist/plugins/manifest.d.ts +9 -0
  101. package/dist/plugins/manifest.d.ts.map +1 -0
  102. package/dist/plugins/manifest.js +63 -0
  103. package/dist/plugins/manifest.js.map +1 -0
  104. package/dist/plugins/types.d.ts +39 -0
  105. package/dist/plugins/types.d.ts.map +1 -0
  106. package/dist/plugins/types.js +2 -0
  107. package/dist/plugins/types.js.map +1 -0
  108. package/dist/runtime/claude.d.ts +30 -0
  109. package/dist/runtime/claude.d.ts.map +1 -0
  110. package/dist/runtime/claude.js +163 -0
  111. package/dist/runtime/claude.js.map +1 -0
  112. package/dist/runtime/codex.d.ts +44 -0
  113. package/dist/runtime/codex.d.ts.map +1 -0
  114. package/dist/runtime/codex.js +192 -0
  115. package/dist/runtime/codex.js.map +1 -0
  116. package/dist/runtime/events.d.ts +7 -0
  117. package/dist/runtime/events.d.ts.map +1 -0
  118. package/dist/runtime/events.js +37 -0
  119. package/dist/runtime/events.js.map +1 -0
  120. package/dist/runtime/index.d.ts +10 -0
  121. package/dist/runtime/index.d.ts.map +1 -0
  122. package/dist/runtime/index.js +10 -0
  123. package/dist/runtime/index.js.map +1 -0
  124. package/dist/runtime/pi.d.ts +34 -0
  125. package/dist/runtime/pi.d.ts.map +1 -0
  126. package/dist/runtime/pi.js +211 -0
  127. package/dist/runtime/pi.js.map +1 -0
  128. package/dist/runtime/registry.d.ts +16 -0
  129. package/dist/runtime/registry.d.ts.map +1 -0
  130. package/dist/runtime/registry.js +22 -0
  131. package/dist/runtime/registry.js.map +1 -0
  132. package/dist/runtime/runner-child.d.ts +2 -0
  133. package/dist/runtime/runner-child.d.ts.map +1 -0
  134. package/dist/runtime/runner-child.js +41 -0
  135. package/dist/runtime/runner-child.js.map +1 -0
  136. package/dist/runtime/runner-manager.d.ts +77 -0
  137. package/dist/runtime/runner-manager.d.ts.map +1 -0
  138. package/dist/runtime/runner-manager.js +295 -0
  139. package/dist/runtime/runner-manager.js.map +1 -0
  140. package/dist/runtime/runner-wire.d.ts +23 -0
  141. package/dist/runtime/runner-wire.d.ts.map +1 -0
  142. package/dist/runtime/runner-wire.js +93 -0
  143. package/dist/runtime/runner-wire.js.map +1 -0
  144. package/dist/runtime/types.d.ts +43 -0
  145. package/dist/runtime/types.d.ts.map +1 -0
  146. package/dist/runtime/types.js +3 -0
  147. package/dist/runtime/types.js.map +1 -0
  148. package/dist/runtime/zcode.d.ts +14 -0
  149. package/dist/runtime/zcode.d.ts.map +1 -0
  150. package/dist/runtime/zcode.js +21 -0
  151. package/dist/runtime/zcode.js.map +1 -0
  152. package/dist/service/launchd.d.ts +34 -0
  153. package/dist/service/launchd.d.ts.map +1 -0
  154. package/dist/service/launchd.js +86 -0
  155. package/dist/service/launchd.js.map +1 -0
  156. package/dist/service/systemd.d.ts +16 -0
  157. package/dist/service/systemd.d.ts.map +1 -0
  158. package/dist/service/systemd.js +89 -0
  159. package/dist/service/systemd.js.map +1 -0
  160. package/dist/wire.d.ts +24 -0
  161. package/dist/wire.d.ts.map +1 -0
  162. package/dist/wire.js +7 -0
  163. package/dist/wire.js.map +1 -0
  164. package/package.json +140 -0
@@ -0,0 +1,627 @@
1
+ import { buildCapabilityContext, } from "../capabilities/context.js";
2
+ import { validateCapabilityInput } from "../capabilities/input.js";
3
+ import { decideCapability, } from "../capabilities/policy.js";
4
+ export const LOCAL_POLICY_DECISIONS = ["auto", "approval", "deny"];
5
+ const ACTIVE_STATES = [
6
+ "received",
7
+ "awaiting_approval",
8
+ "running",
9
+ ];
10
+ function isActive(state) {
11
+ return ACTIVE_STATES.includes(state);
12
+ }
13
+ function runnerStartFailurePayload(error) {
14
+ return {
15
+ reason: "runner_start_failed",
16
+ message: error instanceof Error ? error.message : String(error),
17
+ };
18
+ }
19
+ function runnerStreamFailurePayload(error) {
20
+ return {
21
+ reason: "runner_stream_failed",
22
+ message: error instanceof Error ? error.message : String(error),
23
+ };
24
+ }
25
+ function platformRunInput(command) {
26
+ const prompt = command.payload.prompt;
27
+ if (typeof prompt !== "string" || prompt.trim().length === 0) {
28
+ throw new TypeError("agent.run payload.prompt must be a nonempty string");
29
+ }
30
+ const optionalString = (value) => typeof value === "string" && value.length > 0 ? value : undefined;
31
+ return {
32
+ platform: command.runtime,
33
+ prompt,
34
+ cwd: optionalString(command.payload.cwd),
35
+ sessionId: optionalString(command.payload.sessionId),
36
+ model: optionalString(command.payload.model),
37
+ context: command.payload,
38
+ };
39
+ }
40
+ function progressPayload(event) {
41
+ return {
42
+ ...(event.payload ?? {}),
43
+ eventType: event.type,
44
+ };
45
+ }
46
+ function capabilityProgressPayload(event) {
47
+ return { ...event.payload, eventType: event.type };
48
+ }
49
+ function workspaceFromLocalContext(source) {
50
+ if (typeof source.workspace === "string")
51
+ return source.workspace;
52
+ if (source.workspace &&
53
+ typeof source.workspace === "object" &&
54
+ !Array.isArray(source.workspace) &&
55
+ typeof source.workspace.path === "string") {
56
+ return source.workspace.path;
57
+ }
58
+ return "";
59
+ }
60
+ function executionContext(command) {
61
+ return {
62
+ executionId: command.executionId,
63
+ taskId: command.taskId,
64
+ commandId: command.commandId,
65
+ attempt: command.attempt,
66
+ };
67
+ }
68
+ /**
69
+ * Coordinates durable task admission, local execution policy, and outbox
70
+ * delivery. Vendor runtimes and shell hosts remain outside this class.
71
+ */
72
+ export class ClientSupervisor {
73
+ options;
74
+ policy;
75
+ capabilityContext;
76
+ maxConcurrentRuns;
77
+ pluginSyncInFlight = new Map();
78
+ capabilityAbortControllers = new Map();
79
+ runnerConsumptionTasks = new Map();
80
+ capabilityConsumptionTasks = new Map();
81
+ started = false;
82
+ shuttingDown = false;
83
+ constructor(options) {
84
+ this.options = options;
85
+ this.policy = options.policy ?? (() => "deny");
86
+ this.capabilityContext = options.capabilityContext ?? (() => ({}));
87
+ this.maxConcurrentRuns =
88
+ options.maxConcurrentRuns ?? Number.MAX_SAFE_INTEGER;
89
+ if (!Number.isSafeInteger(this.maxConcurrentRuns) ||
90
+ this.maxConcurrentRuns < 1) {
91
+ throw new RangeError("maxConcurrentRuns must be a positive safe integer");
92
+ }
93
+ }
94
+ async start() {
95
+ if (this.started)
96
+ return;
97
+ await this.options.transport.connect({
98
+ command: async (command) => this.handleCommand(command),
99
+ pluginSync: async (input) => this.handlePluginSync(input),
100
+ connected: async () => this.flush(),
101
+ });
102
+ this.started = true;
103
+ }
104
+ async stop() {
105
+ if (!this.started)
106
+ return;
107
+ this.started = false;
108
+ await this.options.transport.close();
109
+ }
110
+ /**
111
+ * Service shutdown has a stricter lifecycle than an ordinary transport
112
+ * disconnect: persist cancellation and signal every locally owned child
113
+ * before the socket and state store are released.
114
+ */
115
+ async shutdown() {
116
+ this.shuttingDown = true;
117
+ for (const execution of this.options.store.listExecutions()) {
118
+ if (isActive(execution.state)) {
119
+ await this.cancelActiveExecution(execution.executionId);
120
+ }
121
+ }
122
+ await this.waitForConsumptionTasks();
123
+ await this.options.runner.waitForIdle?.();
124
+ await this.stop();
125
+ }
126
+ /**
127
+ * Approval only resumes the exact persisted structured command. It never
128
+ * accepts a replacement command, entrypoint, or argument vector.
129
+ */
130
+ async approve(executionId) {
131
+ const execution = this.requireExecution(executionId);
132
+ if (execution.state !== "awaiting_approval") {
133
+ throw new Error(`Execution ${executionId} is not awaiting approval`);
134
+ }
135
+ if (execution.command.kind === "agent.run") {
136
+ await this.startPersistedAgentRun(execution);
137
+ return;
138
+ }
139
+ if (execution.command.kind === "capability.invoke") {
140
+ await this.startApprovedCapability(execution);
141
+ return;
142
+ }
143
+ throw new Error(`Execution ${executionId} cannot be approved`);
144
+ }
145
+ /**
146
+ * Pushes durable outbox rows and removes only the watermark each execution
147
+ * actually received. A failed push does not touch local state, so reconnect
148
+ * replay remains possible.
149
+ */
150
+ async flush() {
151
+ const events = this.options.store.listUnackedEvents();
152
+ if (events.length === 0)
153
+ return;
154
+ const receivedWatermarks = await this.options.transport.push(events);
155
+ const sentWatermarks = new Map();
156
+ for (const event of events) {
157
+ const current = sentWatermarks.get(event.executionId) ?? 0;
158
+ sentWatermarks.set(event.executionId, Math.max(current, event.eventSeq));
159
+ }
160
+ const acknowledgements = [];
161
+ for (const [executionId, watermark] of Object.entries(receivedWatermarks)) {
162
+ const sentWatermark = sentWatermarks.get(executionId);
163
+ if (sentWatermark === undefined)
164
+ continue;
165
+ if (!Number.isSafeInteger(watermark) || watermark < 0) {
166
+ throw new RangeError(`Invalid acknowledgement watermark for ${executionId}`);
167
+ }
168
+ acknowledgements.push([executionId, Math.min(watermark, sentWatermark)]);
169
+ }
170
+ for (const [executionId, watermark] of acknowledgements) {
171
+ this.options.store.acknowledge(executionId, watermark);
172
+ }
173
+ }
174
+ async handleCommand(command) {
175
+ if (command.kind === "cancel") {
176
+ await this.cancelActiveExecution(command.executionId);
177
+ return;
178
+ }
179
+ const pluginSnapshot = command.kind === "agent.run"
180
+ ? (this.options.plugins?.snapshotActivePlugins(command.runtime) ?? [])
181
+ : [];
182
+ const admission = this.options.store.admit(command, { pluginSnapshot });
183
+ if (admission.disposition === "duplicate")
184
+ return;
185
+ if (command.kind === "capability.invoke") {
186
+ await this.handleCapabilityCommand(command);
187
+ return;
188
+ }
189
+ const decision = await this.decide(command);
190
+ const execution = this.options.store.getExecution(command.executionId);
191
+ if (!execution || execution.state !== "received")
192
+ return;
193
+ if (decision === "deny") {
194
+ this.options.store.transition(command.executionId, "rejected", {
195
+ reason: "local_policy_denied",
196
+ });
197
+ return;
198
+ }
199
+ if (decision === "approval") {
200
+ this.options.store.transition(command.executionId, "awaiting_approval", {
201
+ reason: "local_policy_requires_approval",
202
+ });
203
+ return;
204
+ }
205
+ await this.startPersistedAgentRun(execution);
206
+ }
207
+ async decide(command) {
208
+ try {
209
+ const decision = await this.policy(command);
210
+ return LOCAL_POLICY_DECISIONS.includes(decision) ? decision : "deny";
211
+ }
212
+ catch {
213
+ return "deny";
214
+ }
215
+ }
216
+ async handleCapabilityCommand(command) {
217
+ const resolved = await this.resolveActiveCapability(command.executionId, command);
218
+ if (!resolved)
219
+ return;
220
+ if (!this.validateCapabilityInput(command.executionId, resolved, command.input)) {
221
+ return;
222
+ }
223
+ let source;
224
+ let context;
225
+ try {
226
+ source = this.capabilityContext(command, resolved);
227
+ context = buildCapabilityContext(resolved.capability.contextKeys, {
228
+ ...source,
229
+ execution: executionContext(command),
230
+ });
231
+ }
232
+ catch {
233
+ this.options.store.transition(command.executionId, "rejected", {
234
+ reason: "capability_context_invalid",
235
+ });
236
+ return;
237
+ }
238
+ const decision = this.options.capabilityPolicy
239
+ ? decideCapability(this.options.capabilityPolicy, resolved.plugin, resolved.capability, workspaceFromLocalContext(source))
240
+ : { mode: "deny", reason: "capability_policy_unavailable" };
241
+ if (decision.mode === "deny") {
242
+ this.options.store.transition(command.executionId, "rejected", {
243
+ reason: decision.reason,
244
+ });
245
+ return;
246
+ }
247
+ if (decision.mode === "approval") {
248
+ this.options.store.transition(command.executionId, "awaiting_approval", {
249
+ reason: decision.reason,
250
+ });
251
+ return;
252
+ }
253
+ this.startPersistedCapability(command.executionId, resolved, context);
254
+ }
255
+ async startApprovedCapability(execution) {
256
+ if (execution.command.kind !== "capability.invoke")
257
+ return;
258
+ const command = execution.command;
259
+ const resolved = await this.resolveActiveCapability(execution.executionId, command);
260
+ if (!resolved)
261
+ return;
262
+ if (!this.validateCapabilityInput(execution.executionId, resolved, command.input)) {
263
+ return;
264
+ }
265
+ let source;
266
+ let context;
267
+ try {
268
+ source = this.capabilityContext(command, resolved);
269
+ context = buildCapabilityContext(resolved.capability.contextKeys, {
270
+ ...source,
271
+ execution: executionContext(command),
272
+ });
273
+ }
274
+ catch {
275
+ this.options.store.transition(execution.executionId, "rejected", {
276
+ reason: "capability_context_invalid",
277
+ });
278
+ return;
279
+ }
280
+ const decision = this.options.capabilityPolicy
281
+ ? decideCapability(this.options.capabilityPolicy, resolved.plugin, resolved.capability, workspaceFromLocalContext(source))
282
+ : { mode: "deny", reason: "capability_policy_unavailable" };
283
+ if (decision.mode === "deny") {
284
+ this.options.store.transition(execution.executionId, "rejected", {
285
+ reason: decision.reason,
286
+ });
287
+ return;
288
+ }
289
+ this.startPersistedCapability(execution.executionId, resolved, context);
290
+ }
291
+ async resolveActiveCapability(executionId, command) {
292
+ const host = this.options.capabilityHost;
293
+ if (!host) {
294
+ this.options.store.transition(executionId, "rejected", {
295
+ reason: "capability_host_unavailable",
296
+ });
297
+ return null;
298
+ }
299
+ try {
300
+ const resolved = await host.resolveActiveCapability(command.capabilityId);
301
+ if (resolved)
302
+ return resolved;
303
+ }
304
+ catch {
305
+ this.options.store.transition(executionId, "rejected", {
306
+ reason: "capability_resolution_failed",
307
+ });
308
+ return null;
309
+ }
310
+ this.options.store.transition(executionId, "rejected", {
311
+ reason: "capability_not_found",
312
+ });
313
+ return null;
314
+ }
315
+ validateCapabilityInput(executionId, resolved, input) {
316
+ if (validateCapabilityInput(resolved.capability.inputSchema, input)) {
317
+ return true;
318
+ }
319
+ this.options.store.transition(executionId, "rejected", {
320
+ reason: "capability_input_invalid",
321
+ });
322
+ return false;
323
+ }
324
+ startPersistedCapability(executionId, resolved, context) {
325
+ const execution = this.options.store.getExecution(executionId);
326
+ if (!execution ||
327
+ execution.command.kind !== "capability.invoke" ||
328
+ (execution.state !== "received" &&
329
+ execution.state !== "awaiting_approval")) {
330
+ return;
331
+ }
332
+ const host = this.options.capabilityHost;
333
+ if (!host) {
334
+ this.options.store.transition(executionId, "rejected", {
335
+ reason: "capability_host_unavailable",
336
+ });
337
+ return;
338
+ }
339
+ if (this.shuttingDown) {
340
+ this.options.store.transition(executionId, "cancelled", {
341
+ reason: "daemon_stopping",
342
+ });
343
+ return;
344
+ }
345
+ if (!this.hasCapacity()) {
346
+ this.options.store.transition(executionId, "rejected", {
347
+ reason: "local_capacity_exhausted",
348
+ });
349
+ return;
350
+ }
351
+ const controller = new AbortController();
352
+ this.options.store.transition(executionId, "running", {
353
+ capabilityId: resolved.capability.id,
354
+ pluginSnapshot: [
355
+ {
356
+ id: resolved.plugin.id,
357
+ resolvedCommit: resolved.plugin.resolvedCommit,
358
+ },
359
+ ],
360
+ });
361
+ this.capabilityAbortControllers.set(executionId, controller);
362
+ try {
363
+ const events = host.invoke(resolved, execution.command.input, context, controller.signal);
364
+ this.trackConsumptionTask(this.capabilityConsumptionTasks, executionId, this.consumeCapabilityEvents(executionId, events, controller));
365
+ }
366
+ catch {
367
+ this.capabilityAbortControllers.delete(executionId);
368
+ this.transitionRunningExecution(executionId, "failed", {
369
+ reason: "capability_start_failed",
370
+ });
371
+ }
372
+ }
373
+ async consumeCapabilityEvents(executionId, events, controller) {
374
+ try {
375
+ for await (const event of events) {
376
+ if (event.type === "progress" || event.type === "log") {
377
+ if (this.options.store.getExecution(executionId)?.state === "running") {
378
+ this.options.store.appendEvent({
379
+ executionId,
380
+ type: "progress",
381
+ occurredAt: new Date().toISOString(),
382
+ payload: capabilityProgressPayload(event),
383
+ });
384
+ }
385
+ continue;
386
+ }
387
+ if (event.type === "result") {
388
+ this.transitionRunningExecution(executionId, "done", event.payload);
389
+ return;
390
+ }
391
+ this.transitionRunningExecution(executionId, "failed", event.payload);
392
+ return;
393
+ }
394
+ this.transitionRunningExecution(executionId, "failed", {
395
+ reason: "capability_stream_ended",
396
+ });
397
+ }
398
+ catch {
399
+ this.transitionRunningExecution(executionId, "failed", {
400
+ reason: "capability_stream_failed",
401
+ });
402
+ }
403
+ finally {
404
+ if (this.capabilityAbortControllers.get(executionId) === controller) {
405
+ this.capabilityAbortControllers.delete(executionId);
406
+ }
407
+ }
408
+ }
409
+ /**
410
+ * Plugin desired state is independent of task admission. A failure records no
411
+ * successful revision, reports a typed rejection if the transport supports
412
+ * it, and deliberately leaves all in-flight runners untouched.
413
+ */
414
+ async handlePluginSync(input) {
415
+ const existing = this.pluginSyncInFlight.get(input.revision);
416
+ if (existing)
417
+ return existing;
418
+ const work = this.syncPluginRevision(input);
419
+ this.pluginSyncInFlight.set(input.revision, work);
420
+ try {
421
+ await work;
422
+ }
423
+ finally {
424
+ if (this.pluginSyncInFlight.get(input.revision) === work) {
425
+ this.pluginSyncInFlight.delete(input.revision);
426
+ }
427
+ }
428
+ }
429
+ async syncPluginRevision(input) {
430
+ const plugins = this.options.plugins;
431
+ if (!plugins) {
432
+ await this.reportPluginSync({
433
+ type: "plugin.sync.ack",
434
+ revision: input.revision,
435
+ status: "failed",
436
+ plugins: [],
437
+ error: {
438
+ code: "plugin_sync_failed",
439
+ message: "plugin_manager_unavailable",
440
+ },
441
+ });
442
+ return;
443
+ }
444
+ if (this.options.store.getLastPluginSyncRevision() === input.revision) {
445
+ await this.reportPluginSync({
446
+ type: "plugin.sync.ack",
447
+ revision: input.revision,
448
+ status: "already_applied",
449
+ plugins: plugins.snapshotActivePlugins(),
450
+ });
451
+ return;
452
+ }
453
+ try {
454
+ const result = await plugins.sync(input.plugins);
455
+ const failed = result.find((plugin) => plugin.status === "failed");
456
+ if (failed) {
457
+ await this.reportPluginSync({
458
+ type: "plugin.sync.ack",
459
+ revision: input.revision,
460
+ status: "failed",
461
+ plugins: plugins.snapshotActivePlugins(),
462
+ error: {
463
+ code: "plugin_sync_failed",
464
+ message: failed.lastError ?? `Plugin ${failed.id} could not sync`,
465
+ },
466
+ });
467
+ return;
468
+ }
469
+ this.options.store.recordPluginSyncSuccess(input.revision);
470
+ await this.reportPluginSync({
471
+ type: "plugin.sync.ack",
472
+ revision: input.revision,
473
+ status: "applied",
474
+ plugins: plugins.snapshotActivePlugins(),
475
+ });
476
+ }
477
+ catch (error) {
478
+ await this.reportPluginSync({
479
+ type: "plugin.sync.ack",
480
+ revision: input.revision,
481
+ status: "failed",
482
+ plugins: plugins.snapshotActivePlugins(),
483
+ error: {
484
+ code: "plugin_sync_failed",
485
+ message: error instanceof Error ? error.message : String(error),
486
+ },
487
+ });
488
+ }
489
+ }
490
+ async reportPluginSync(acknowledgement) {
491
+ try {
492
+ await this.options.transport.reportPluginSync?.(acknowledgement);
493
+ }
494
+ catch {
495
+ // The revision outcome is durable locally; a later plugin.sync delivery
496
+ // receives an already_applied or retryable failed acknowledgement.
497
+ }
498
+ }
499
+ async startPersistedAgentRun(execution) {
500
+ if (execution.command.kind !== "agent.run") {
501
+ throw new Error(`Execution ${execution.executionId} is not an agent run`);
502
+ }
503
+ if (execution.state !== "received" &&
504
+ execution.state !== "awaiting_approval") {
505
+ return;
506
+ }
507
+ if (this.shuttingDown) {
508
+ this.options.store.transition(execution.executionId, "cancelled", {
509
+ reason: "daemon_stopping",
510
+ });
511
+ return;
512
+ }
513
+ if (!this.hasCapacity()) {
514
+ this.options.store.transition(execution.executionId, "rejected", {
515
+ reason: "local_capacity_exhausted",
516
+ });
517
+ return;
518
+ }
519
+ this.options.store.transition(execution.executionId, "running", {
520
+ runtime: execution.command.runtime,
521
+ pluginSnapshot: execution.pluginSnapshot,
522
+ });
523
+ try {
524
+ const events = this.options.runner.start(execution.executionId, platformRunInput(execution.command));
525
+ this.trackConsumptionTask(this.runnerConsumptionTasks, execution.executionId, this.consumeRunnerEvents(execution.executionId, events));
526
+ }
527
+ catch (error) {
528
+ this.transitionRunningExecution(execution.executionId, "failed", runnerStartFailurePayload(error));
529
+ }
530
+ }
531
+ async cancelActiveExecution(executionId) {
532
+ const execution = this.options.store.getExecution(executionId);
533
+ if (!execution || !isActive(execution.state))
534
+ return;
535
+ this.options.store.transition(executionId, "cancelled", {
536
+ reason: "cancel_requested",
537
+ });
538
+ const capabilityAbort = this.capabilityAbortControllers.get(executionId);
539
+ if (capabilityAbort) {
540
+ capabilityAbort.abort();
541
+ return;
542
+ }
543
+ if (execution.command.kind === "capability.invoke") {
544
+ return;
545
+ }
546
+ try {
547
+ await this.options.runner.cancel(executionId);
548
+ }
549
+ catch {
550
+ // Cancellation intent is already durable. Runner cleanup must not cause
551
+ // a retrying Hub transport to reverse or replace that terminal state.
552
+ }
553
+ }
554
+ async consumeRunnerEvents(executionId, events) {
555
+ try {
556
+ for await (const event of events) {
557
+ if (event.type === "init" ||
558
+ event.type === "text_delta" ||
559
+ event.type === "thinking_delta" ||
560
+ event.type === "tool") {
561
+ this.appendProgressIfRunning(executionId, event);
562
+ continue;
563
+ }
564
+ if (event.type === "done") {
565
+ this.transitionRunningExecution(executionId, "done", event.payload);
566
+ return;
567
+ }
568
+ this.transitionRunningExecution(executionId, "failed", event.payload ?? { reason: "runner_error" });
569
+ return;
570
+ }
571
+ this.transitionRunningExecution(executionId, "failed", {
572
+ reason: "runner_stream_ended",
573
+ });
574
+ }
575
+ catch (error) {
576
+ this.transitionRunningExecution(executionId, "failed", runnerStreamFailurePayload(error));
577
+ }
578
+ }
579
+ hasCapacity() {
580
+ return (this.options.store.listExecutions().filter((execution) => {
581
+ return execution.state === "running";
582
+ }).length < this.maxConcurrentRuns);
583
+ }
584
+ trackConsumptionTask(tasks, executionId, task) {
585
+ tasks.set(executionId, task);
586
+ void task.then(() => {
587
+ if (tasks.get(executionId) === task)
588
+ tasks.delete(executionId);
589
+ }, () => {
590
+ if (tasks.get(executionId) === task)
591
+ tasks.delete(executionId);
592
+ });
593
+ }
594
+ async waitForConsumptionTasks() {
595
+ while (this.runnerConsumptionTasks.size > 0 ||
596
+ this.capabilityConsumptionTasks.size > 0) {
597
+ await Promise.all([
598
+ ...this.runnerConsumptionTasks.values(),
599
+ ...this.capabilityConsumptionTasks.values(),
600
+ ]);
601
+ }
602
+ }
603
+ appendProgressIfRunning(executionId, event) {
604
+ if (this.options.store.getExecution(executionId)?.state !== "running") {
605
+ return;
606
+ }
607
+ this.options.store.appendEvent({
608
+ executionId,
609
+ type: "progress",
610
+ occurredAt: new Date().toISOString(),
611
+ payload: progressPayload(event),
612
+ });
613
+ }
614
+ transitionRunningExecution(executionId, nextState, payload) {
615
+ if (this.options.store.getExecution(executionId)?.state !== "running") {
616
+ return;
617
+ }
618
+ this.options.store.transition(executionId, nextState, payload);
619
+ }
620
+ requireExecution(executionId) {
621
+ const execution = this.options.store.getExecution(executionId);
622
+ if (!execution)
623
+ throw new Error(`Unknown execution ${executionId}`);
624
+ return execution;
625
+ }
626
+ }
627
+ //# sourceMappingURL=supervisor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../src/client/supervisor.ts"],"names":[],"mappings":"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"}