pilotswarm-sdk 0.5.56 → 0.5.58

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 (145) hide show
  1. package/api/README.md +6 -0
  2. package/api/index.d.ts +19 -0
  3. package/api/src/api-client.js +196 -1
  4. package/api/src/http-api-transport.js +18 -0
  5. package/api/src/protocol.js +3 -2
  6. package/dist/agent-loader.d.ts +12 -1
  7. package/dist/agent-loader.d.ts.map +1 -1
  8. package/dist/agent-loader.js +36 -5
  9. package/dist/agent-loader.js.map +1 -1
  10. package/dist/agent-package-format.d.ts +1 -0
  11. package/dist/agent-package-format.d.ts.map +1 -1
  12. package/dist/agent-package-format.js +8 -4
  13. package/dist/agent-package-format.js.map +1 -1
  14. package/dist/cms-migrations.d.ts.map +1 -1
  15. package/dist/cms-migrations.js +102 -0
  16. package/dist/cms-migrations.js.map +1 -1
  17. package/dist/cms.d.ts +50 -0
  18. package/dist/cms.d.ts.map +1 -1
  19. package/dist/cms.js +81 -0
  20. package/dist/cms.js.map +1 -1
  21. package/dist/facts-store.d.ts +1 -0
  22. package/dist/facts-store.d.ts.map +1 -1
  23. package/dist/facts-store.js +1 -1
  24. package/dist/facts-store.js.map +1 -1
  25. package/dist/facts-tools.d.ts +10 -0
  26. package/dist/facts-tools.d.ts.map +1 -1
  27. package/dist/facts-tools.js +114 -19
  28. package/dist/facts-tools.js.map +1 -1
  29. package/dist/graph-tools.d.ts +2 -0
  30. package/dist/graph-tools.d.ts.map +1 -1
  31. package/dist/graph-tools.js +17 -1
  32. package/dist/graph-tools.js.map +1 -1
  33. package/dist/index.d.ts +3 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/live-turn.d.ts +60 -0
  38. package/dist/live-turn.d.ts.map +1 -0
  39. package/dist/live-turn.js +256 -0
  40. package/dist/live-turn.js.map +1 -0
  41. package/dist/managed-session.d.ts +3 -0
  42. package/dist/managed-session.d.ts.map +1 -1
  43. package/dist/managed-session.js +134 -1
  44. package/dist/managed-session.js.map +1 -1
  45. package/dist/management-client.d.ts +7 -0
  46. package/dist/management-client.d.ts.map +1 -1
  47. package/dist/management-client.js +25 -15
  48. package/dist/management-client.js.map +1 -1
  49. package/dist/orchestration/agents.d.ts.map +1 -1
  50. package/dist/orchestration/agents.js +3 -1
  51. package/dist/orchestration/agents.js.map +1 -1
  52. package/dist/orchestration/index.d.ts +2 -2
  53. package/dist/orchestration/index.js +1 -1
  54. package/dist/orchestration/queue.d.ts.map +1 -1
  55. package/dist/orchestration/queue.js +5 -0
  56. package/dist/orchestration/queue.js.map +1 -1
  57. package/dist/orchestration/runtime.d.ts +3 -1
  58. package/dist/orchestration/runtime.d.ts.map +1 -1
  59. package/dist/orchestration/runtime.js +6 -1
  60. package/dist/orchestration/runtime.js.map +1 -1
  61. package/dist/orchestration/state.d.ts +2 -0
  62. package/dist/orchestration/state.d.ts.map +1 -1
  63. package/dist/orchestration/state.js.map +1 -1
  64. package/dist/orchestration/turn.d.ts +1 -1
  65. package/dist/orchestration/turn.d.ts.map +1 -1
  66. package/dist/orchestration/turn.js +49 -7
  67. package/dist/orchestration/turn.js.map +1 -1
  68. package/dist/orchestration-registry.d.ts.map +1 -1
  69. package/dist/orchestration-registry.js +4 -2
  70. package/dist/orchestration-registry.js.map +1 -1
  71. package/dist/orchestration-version.d.ts +1 -1
  72. package/dist/orchestration-version.js +1 -1
  73. package/dist/orchestration.d.ts +2 -2
  74. package/dist/orchestration.js +1 -1
  75. package/dist/orchestration_1_0_46.d.ts +1 -1
  76. package/dist/orchestration_1_0_47.d.ts +1 -1
  77. package/dist/orchestration_1_0_48.d.ts +1 -1
  78. package/dist/orchestration_1_0_49.d.ts +1 -1
  79. package/dist/orchestration_1_0_50.d.ts +1 -1
  80. package/dist/orchestration_1_0_71/agents.d.ts +61 -0
  81. package/dist/orchestration_1_0_71/agents.d.ts.map +1 -0
  82. package/dist/orchestration_1_0_71/agents.js +840 -0
  83. package/dist/orchestration_1_0_71/agents.js.map +1 -0
  84. package/dist/orchestration_1_0_71/index.d.ts +28 -0
  85. package/dist/orchestration_1_0_71/index.d.ts.map +1 -0
  86. package/dist/orchestration_1_0_71/index.js +13 -0
  87. package/dist/orchestration_1_0_71/index.js.map +1 -0
  88. package/dist/orchestration_1_0_71/lifecycle.d.ts +51 -0
  89. package/dist/orchestration_1_0_71/lifecycle.d.ts.map +1 -0
  90. package/dist/orchestration_1_0_71/lifecycle.js +973 -0
  91. package/dist/orchestration_1_0_71/lifecycle.js.map +1 -0
  92. package/dist/orchestration_1_0_71/queue.d.ts +20 -0
  93. package/dist/orchestration_1_0_71/queue.d.ts.map +1 -0
  94. package/dist/orchestration_1_0_71/queue.js +875 -0
  95. package/dist/orchestration_1_0_71/queue.js.map +1 -0
  96. package/dist/orchestration_1_0_71/runtime.d.ts +29 -0
  97. package/dist/orchestration_1_0_71/runtime.d.ts.map +1 -0
  98. package/dist/orchestration_1_0_71/runtime.js +225 -0
  99. package/dist/orchestration_1_0_71/runtime.js.map +1 -0
  100. package/dist/orchestration_1_0_71/state.d.ts +212 -0
  101. package/dist/orchestration_1_0_71/state.d.ts.map +1 -0
  102. package/dist/orchestration_1_0_71/state.js +178 -0
  103. package/dist/orchestration_1_0_71/state.js.map +1 -0
  104. package/dist/orchestration_1_0_71/turn.d.ts +34 -0
  105. package/dist/orchestration_1_0_71/turn.d.ts.map +1 -0
  106. package/dist/orchestration_1_0_71/turn.js +1392 -0
  107. package/dist/orchestration_1_0_71/turn.js.map +1 -0
  108. package/dist/orchestration_1_0_71/utils.d.ts +39 -0
  109. package/dist/orchestration_1_0_71/utils.d.ts.map +1 -0
  110. package/dist/orchestration_1_0_71/utils.js +322 -0
  111. package/dist/orchestration_1_0_71/utils.js.map +1 -0
  112. package/dist/session-manager.d.ts +2 -0
  113. package/dist/session-manager.d.ts.map +1 -1
  114. package/dist/session-manager.js +22 -0
  115. package/dist/session-manager.js.map +1 -1
  116. package/dist/session-proxy.d.ts +7 -1
  117. package/dist/session-proxy.d.ts.map +1 -1
  118. package/dist/session-proxy.js +37 -5
  119. package/dist/session-proxy.js.map +1 -1
  120. package/dist/session-status.d.ts +16 -0
  121. package/dist/session-status.d.ts.map +1 -1
  122. package/dist/session-status.js +21 -0
  123. package/dist/session-status.js.map +1 -1
  124. package/dist/system-agents.d.ts.map +1 -1
  125. package/dist/system-agents.js +9 -3
  126. package/dist/system-agents.js.map +1 -1
  127. package/dist/tool-facts-accessor.d.ts +44 -0
  128. package/dist/tool-facts-accessor.d.ts.map +1 -0
  129. package/dist/tool-facts-accessor.js +72 -0
  130. package/dist/tool-facts-accessor.js.map +1 -0
  131. package/dist/types.d.ts +11 -1
  132. package/dist/types.d.ts.map +1 -1
  133. package/dist/types.js.map +1 -1
  134. package/dist/web/generated-op-methods.d.ts +8 -0
  135. package/dist/web/generated-op-methods.d.ts.map +1 -1
  136. package/dist/web/generated-op-methods.js +2 -0
  137. package/dist/web/generated-op-methods.js.map +1 -1
  138. package/dist/web/web-management-client.d.ts +7 -0
  139. package/dist/web/web-management-client.d.ts.map +1 -1
  140. package/dist/web/web-management-client.js +3 -0
  141. package/dist/web/web-management-client.js.map +1 -1
  142. package/dist/worker.d.ts.map +1 -1
  143. package/dist/worker.js +6 -1
  144. package/dist/worker.js.map +1 -1
  145. package/package.json +3 -3
package/api/README.md CHANGED
@@ -21,8 +21,14 @@ const api = new ApiClient({
21
21
  const session = await api.call("createSession", { model: "anthropic:claude-sonnet-4-6" });
22
22
  await api.call("sendMessage", { sessionId: session.sessionId, prompt: "hello" });
23
23
  const unsubscribe = api.subscribeSession(session.sessionId, (event) => console.log(event));
24
+ const unsubscribeLive = api.subscribeLive(session.sessionId, "turn", (update) => console.log(update));
24
25
  ```
25
26
 
27
+ `subscribeLive` carries ephemeral last-value topics such as in-progress turn
28
+ text. It resubscribes automatically, ignores duplicate sequence values, and
29
+ refetches a topic snapshot with `getLive` after a sequence gap. Live values
30
+ are never part of the durable session event log.
31
+
26
32
  ## Modules
27
33
 
28
34
  - `src/protocol.js` — the **operations table**: every JSON operation's name,
package/api/index.d.ts CHANGED
@@ -62,6 +62,23 @@ export interface ApiClientOptions {
62
62
  WebSocketImpl?: unknown;
63
63
  }
64
64
 
65
+ /** Generic ephemeral topic delivery; never a durable replay event. */
66
+ export type LiveUpdate = {
67
+ sessionId: string;
68
+ topic: string;
69
+ updatedAt?: string;
70
+ } & ({ kind: "snapshot" | "patch"; seq: number; data: Record<string, unknown> }
71
+ | { kind: "signal"; seq?: number | null }
72
+ | { kind: "unavailable" });
73
+
74
+ export interface LiveStateRow {
75
+ topic: string;
76
+ seq: number;
77
+ payload: Record<string, unknown>;
78
+ updatedBy: string;
79
+ updatedAt: string;
80
+ }
81
+
65
82
  export declare class ApiClient {
66
83
  constructor(options: ApiClientOptions);
67
84
  apiUrl: string;
@@ -81,6 +98,7 @@ export declare class ApiClient {
81
98
  start(): Promise<void>;
82
99
  stop(): Promise<void>;
83
100
  subscribeSession(sessionId: string, handler: (event: unknown) => void, onResubscribe?: () => void): () => void;
101
+ subscribeLive(sessionId: string, topic: string, handler: (update: LiveUpdate) => void): () => void;
84
102
  subscribeLogs(handler: (entry: unknown) => void): () => void;
85
103
  }
86
104
 
@@ -103,6 +121,7 @@ export declare class HttpApiTransport {
103
121
  bootstrap: any;
104
122
  start(): Promise<void>;
105
123
  stop(): Promise<void>;
124
+ getLive(sessionId: string, topics?: string[]): Promise<LiveStateRow[]>;
106
125
  [method: string]: any;
107
126
  }
108
127
 
@@ -1,4 +1,5 @@
1
1
  import { API_PREFIX, ApiError, WS_PATH, artifactDownloadPath, buildOperationRequest } from "./protocol.js";
2
+ import { jsonMergePatch } from "./canvas-live-mirror.js";
2
3
 
3
4
  const RECONNECT_DELAY_MS = 1500;
4
5
 
@@ -66,6 +67,11 @@ export class ApiClient {
66
67
  this.sessionResubscribeHandlers = new Map();
67
68
  this.logSubscribers = new Set();
68
69
  this.canvasSubscribers = new Map();
70
+ this.liveSubscribers = new Map();
71
+ this.liveSequences = new Map();
72
+ this.liveRefetches = new Map();
73
+ this.liveValues = new Map();
74
+ this.liveRefetchTargets = new Map();
69
75
  }
70
76
 
71
77
  // ── HTTP ────────────────────────────────────────────────────────────
@@ -212,13 +218,22 @@ export class ApiClient {
212
218
  this.socket = null;
213
219
  this.socketOpenPromise = null;
214
220
  this.sessionSubscribers.clear();
221
+ this.sessionResubscribeHandlers.clear();
215
222
  this.logSubscribers.clear();
216
223
  this.canvasSubscribers.clear();
224
+ this.liveSubscribers.clear();
225
+ this.liveSequences.clear();
226
+ this.liveRefetches.clear();
227
+ this.liveValues.clear();
228
+ this.liveRefetchTargets.clear();
217
229
  }
218
230
 
219
231
  scheduleReconnect() {
220
232
  if (this.stopped || this.reconnectTimer) return;
221
- if (this.sessionSubscribers.size === 0 && this.logSubscribers.size === 0) return;
233
+ if (this.sessionSubscribers.size === 0
234
+ && this.logSubscribers.size === 0
235
+ && this.canvasSubscribers.size === 0
236
+ && this.liveSubscribers.size === 0) return;
222
237
  this.reconnectTimer = setTimeout(() => {
223
238
  this.reconnectTimer = null;
224
239
  this.ensureSocket().catch(() => {});
@@ -280,6 +295,10 @@ export class ApiClient {
280
295
  }
281
296
  return;
282
297
  }
298
+ if (message.type === "live") {
299
+ void this.handleLiveMessage(message);
300
+ return;
301
+ }
283
302
  // A canvas-scope error (plane unavailable, authz change,
284
303
  // server rollback) releases the mirror's takeover of that
285
304
  // session — otherwise legacy events would stay suppressed
@@ -291,12 +310,25 @@ export class ApiClient {
291
310
  for (const handler of handlers) handler({ kind: "unavailable", sessionId: message.sessionId });
292
311
  }
293
312
  }
313
+ if (message.type === "error" && message.scope === "live" && message.sessionId) {
314
+ for (const key of this.liveSubscribers.keys()) {
315
+ if (!key.startsWith(`${message.sessionId}\u0000`)) continue;
316
+ void this.handleLiveMessage({ kind: "unavailable", sessionId: message.sessionId, topic: key.split("\u0000")[1] });
317
+ }
318
+ }
294
319
  } catch {}
295
320
  });
296
321
 
297
322
  socket.addEventListener("close", (event) => {
298
323
  this.socket = null;
299
324
  this.socketOpenPromise = null;
325
+ for (const [key, handlers] of this.liveSubscribers) {
326
+ const [sessionId, topic] = key.split("\u0000");
327
+ for (const handler of handlers) {
328
+ try { handler({ kind: "unavailable", sessionId, topic }); } catch {}
329
+ }
330
+ }
331
+ this.liveValues.clear();
300
332
  if (event.code === 4401) {
301
333
  this.onUnauthorized();
302
334
  return;
@@ -342,7 +374,114 @@ export class ApiClient {
342
374
  }
343
375
  }
344
376
 
377
+ async handleLiveMessage(message) {
378
+ const key = `${message.sessionId}\u0000${message.topic}`;
379
+ const handlers = this.liveSubscribers.get(key);
380
+ if (!handlers || handlers.size === 0) return;
381
+ if (message.kind === "unavailable") {
382
+ this.liveSequences.delete(key);
383
+ this.liveValues.delete(key);
384
+ this.liveRefetches.delete(key);
385
+ this.liveRefetchTargets.delete(key);
386
+ for (const handler of handlers) { try { handler(message); } catch {} }
387
+ return;
388
+ }
389
+ if (message.kind === "signal") {
390
+ for (const handler of handlers) {
391
+ try { handler(message); } catch {}
392
+ }
393
+ return;
394
+ }
395
+
396
+ const seq = Number(message.seq);
397
+ if (!Number.isFinite(seq) || seq < 1) return;
398
+ const previous = this.liveSequences.get(key);
399
+ if (previous != null && seq === previous) return;
400
+ if (message.kind === "snapshot" && previous != null && seq < previous) return;
401
+
402
+ // A patch is meaningful only against its immediate predecessor. The
403
+ // subscribe burst is a snapshot, so no predecessor means a missed
404
+ // burst too. Collapse concurrent gaps into one authoritative read.
405
+ if (message.kind === "patch" && (previous == null || seq !== previous + 1)) {
406
+ if (seq > Number(this.liveRefetchTargets.get(key)?.seq || 0)) {
407
+ this.liveRefetchTargets.set(key, message);
408
+ }
409
+ if (!this.liveRefetches.has(key)) {
410
+ const allowSequenceReset = previous != null && seq < previous;
411
+ const refetch = this.call("getLive", {
412
+ sessionId: message.sessionId,
413
+ topics: [message.topic],
414
+ }).then((rows) => {
415
+ const row = (rows || []).find((candidate) => candidate?.topic === message.topic);
416
+ const currentHandlers = this.liveSubscribers.get(key);
417
+ // The last subscriber may have left and a new subscription
418
+ // for the same key may already exist. Do not let the old
419
+ // request inject its snapshot into that new subscription.
420
+ if (!row || currentHandlers !== handlers || currentHandlers.size === 0
421
+ || this.liveRefetches.get(key) !== refetch) return;
422
+ const snapshotSeq = Number(row.seq);
423
+ if (!Number.isFinite(snapshotSeq) || snapshotSeq < 1) return;
424
+ const seen = this.liveSequences.get(key);
425
+ if (seen != null && (
426
+ (!allowSequenceReset && snapshotSeq <= seen)
427
+ || (allowSequenceReset && (snapshotSeq === seen || (snapshotSeq < seen && seen !== previous)))
428
+ )) return;
429
+ this.liveSequences.set(key, snapshotSeq);
430
+ const snapshot = {
431
+ type: "live",
432
+ sessionId: message.sessionId,
433
+ topic: message.topic,
434
+ seq: snapshotSeq,
435
+ kind: "snapshot",
436
+ data: row.payload || {},
437
+ ...(row.updatedAt ? { updatedAt: row.updatedAt } : {}),
438
+ };
439
+ this.liveValues.set(key, snapshot);
440
+ for (const handler of currentHandlers) {
441
+ try { handler(snapshot); } catch {}
442
+ }
443
+ }).catch(() => {
444
+ // A later notification retries the authoritative read;
445
+ // durable session events remain the product fallback.
446
+ }).finally(() => {
447
+ // A replacement subscription can already have started a
448
+ // newer refetch for this key; do not erase its guard.
449
+ if (this.liveRefetches.get(key) === refetch) {
450
+ this.liveRefetches.delete(key);
451
+ const latest = this.liveRefetchTargets.get(key);
452
+ this.liveRefetchTargets.delete(key);
453
+ // A notification that arrived DURING the read may be
454
+ // newer than its snapshot. Do not lose that last tick.
455
+ if (latest && latest !== message && this.liveSubscribers.get(key) === handlers) {
456
+ void this.handleLiveMessage(latest);
457
+ }
458
+ }
459
+ });
460
+ this.liveRefetches.set(key, refetch);
461
+ }
462
+ await this.liveRefetches.get(key);
463
+ return;
464
+ }
465
+
466
+ this.liveSequences.set(key, seq);
467
+ this.liveValues.set(key, {
468
+ ...message, kind: "snapshot",
469
+ data: message.kind === "patch"
470
+ ? jsonMergePatch(this.liveValues.get(key)?.data || {}, message.data || {})
471
+ : message.data,
472
+ });
473
+ for (const handler of handlers) {
474
+ try { handler(message); } catch {}
475
+ }
476
+ }
477
+
345
478
  resubscribeAll(isReconnect = false) {
479
+ if (isReconnect) {
480
+ this.liveSequences.clear();
481
+ this.liveValues.clear();
482
+ this.liveRefetches.clear();
483
+ this.liveRefetchTargets.clear();
484
+ }
346
485
  for (const sessionId of this.sessionSubscribers.keys()) {
347
486
  this.socketSend({ type: "subscribeSession", sessionId });
348
487
  // On a RECONNECT, live delivery resumes but events emitted during
@@ -363,6 +502,15 @@ export class ApiClient {
363
502
  for (const sessionId of this.canvasSubscribers.keys()) {
364
503
  this.socketSend({ type: "subscribeCanvas", sessionId });
365
504
  }
505
+ const liveBySession = new Map();
506
+ for (const key of this.liveSubscribers.keys()) {
507
+ const [sessionId, topic] = key.split("\u0000");
508
+ if (!liveBySession.has(sessionId)) liveBySession.set(sessionId, []);
509
+ liveBySession.get(sessionId).push(topic);
510
+ }
511
+ for (const [sessionId, topics] of liveBySession) {
512
+ this.socketSend({ type: "subscribeLive", sessionId, topics });
513
+ }
366
514
  }
367
515
 
368
516
  /**
@@ -432,6 +580,53 @@ export class ApiClient {
432
580
  };
433
581
  }
434
582
 
583
+ /** Subscribe to one generic live-plane topic for a session. */
584
+ subscribeLive(sessionId, topic, handler) {
585
+ const normalizedSessionId = String(sessionId || "").trim();
586
+ const normalizedTopic = String(topic || "").trim();
587
+ if (!normalizedSessionId || !/^[a-z][a-z0-9_.:-]{0,63}$/.test(normalizedTopic)) {
588
+ throw new Error("subscribeLive requires a session id and valid topic");
589
+ }
590
+ const key = `${normalizedSessionId}\u0000${normalizedTopic}`;
591
+ const alreadySubscribed = this.liveSubscribers.has(key);
592
+ if (!alreadySubscribed && [...this.liveSubscribers.keys()].filter((candidate) => candidate.startsWith(`${normalizedSessionId}\u0000`)).length >= 16) {
593
+ throw new Error("At most 16 live topics per session are supported");
594
+ }
595
+ if (!this.liveSubscribers.has(key)) this.liveSubscribers.set(key, new Set());
596
+ const handlers = this.liveSubscribers.get(key);
597
+ handlers.add(handler);
598
+ const topics = [];
599
+ for (const candidate of this.liveSubscribers.keys()) {
600
+ const [sid, liveTopic] = candidate.split("\u0000");
601
+ if (sid === normalizedSessionId) topics.push(liveTopic);
602
+ }
603
+ if (!alreadySubscribed) this.announceSubscription({ type: "subscribeLive", sessionId: normalizedSessionId, topics });
604
+ else if (this.liveValues.has(key)) {
605
+ try { handler(this.liveValues.get(key)); } catch {}
606
+ }
607
+ let active = true;
608
+ return () => {
609
+ if (!active) return;
610
+ active = false;
611
+ handlers.delete(handler);
612
+ if (handlers.size > 0 || this.liveSubscribers.get(key) !== handlers) return;
613
+ this.liveSubscribers.delete(key);
614
+ this.liveSequences.delete(key);
615
+ this.liveRefetches.delete(key);
616
+ this.liveRefetchTargets.delete(key);
617
+ this.liveValues.delete(key);
618
+ const remaining = [];
619
+ for (const candidate of this.liveSubscribers.keys()) {
620
+ const [sid, liveTopic] = candidate.split("\u0000");
621
+ if (sid === normalizedSessionId) remaining.push(liveTopic);
622
+ }
623
+ this.socketSend({ type: "unsubscribeLive", sessionId: normalizedSessionId });
624
+ if (remaining.length > 0) {
625
+ this.socketSend({ type: "subscribeLive", sessionId: normalizedSessionId, topics: remaining });
626
+ }
627
+ };
628
+ }
629
+
435
630
  subscribeLogs(handler) {
436
631
  this.logSubscribers.add(handler);
437
632
  this.announceSubscription({ type: "subscribeLogs" });
@@ -496,6 +496,10 @@ export class HttpApiTransport {
496
496
  return this.api.call("getCanvasLive", { sessionId });
497
497
  }
498
498
 
499
+ async getLive(sessionId, topics) {
500
+ return this.api.call("getLive", { sessionId, topics });
501
+ }
502
+
499
503
  // The canvas KV store (door 1 — signed-in browser).
500
504
  async readCanvasKv(sessionId, slot, query = {}) {
501
505
  return this.api.call("readCanvasKv", {
@@ -667,9 +671,23 @@ export class HttpApiTransport {
667
671
  }
668
672
  }
669
673
  });
674
+ const unsubscribeLive = this.api.subscribeLive(sessionId, "turn", (message) => {
675
+ if (message?.kind === "signal") return;
676
+ const data = message?.kind === "unavailable" ? { phase: "idle" } : message?.data;
677
+ if (!data || typeof data !== "object") return;
678
+ handler({
679
+ eventType: "assistant.live_tick",
680
+ sessionId,
681
+ transient: true,
682
+ liveSeq: Number(message.seq) || 0,
683
+ liveUpdatedAt: message.updatedAt,
684
+ data,
685
+ });
686
+ });
670
687
  return () => {
671
688
  unsubscribeEvents();
672
689
  unsubscribeCanvas();
690
+ unsubscribeLive();
673
691
  const handlers = this._canvasEmitHandlers.get(sessionId);
674
692
  if (handlers) {
675
693
  handlers.delete(handler);
@@ -41,8 +41,8 @@ export const API_VERSION = 1;
41
41
  export const WS_PATH = "/api/v1/ws";
42
42
 
43
43
  /** WebSocket message vocabulary (same as the legacy /portal-ws, minus theme). */
44
- export const WS_CLIENT_MESSAGES = ["subscribeSession", "unsubscribeSession", "subscribeLogs", "unsubscribeLogs"];
45
- export const WS_SERVER_MESSAGES = ["ready", "subscribedSession", "sessionEvent", "subscribedLogs", "logEntry", "error"];
44
+ export const WS_CLIENT_MESSAGES = ["subscribeSession", "unsubscribeSession", "subscribeLive", "unsubscribeLive", "subscribeLogs", "unsubscribeLogs"];
45
+ export const WS_SERVER_MESSAGES = ["ready", "subscribedSession", "sessionEvent", "subscribedLive", "live", "subscribedLogs", "logEntry", "error"];
46
46
 
47
47
  /** Error code used when an SDK web-mode method has no API equivalent. */
48
48
  export const WEB_MODE_UNSUPPORTED = "WEB_MODE_UNSUPPORTED";
@@ -114,6 +114,7 @@ export const OPERATIONS = [
114
114
  { name: "getSessionEvents", access: "session:read", method: "GET", path: "/management/sessions/:sessionId/events", params: { sessionId: path("sessionId"), afterSeq: query("number"), limit: query("number"), eventTypes: query("json") }, summary: "Session events after a sequence number (reconnect catch-up). Optional eventTypes (JSON string array) narrows to those event types server-side." },
115
115
  { name: "getSessionEventsBefore", access: "session:read", method: "GET", path: "/management/sessions/:sessionId/events-before", params: { sessionId: path("sessionId"), beforeSeq: query("number"), limit: query("number"), eventTypes: query("json") }, summary: "Older session events for history paging. Optional eventTypes (JSON string array) narrows to those event types server-side (chat transcript paging)." },
116
116
  { name: "getCanvasLive", access: "session:read", method: "GET", path: "/management/sessions/:sessionId/canvas-live", params: { sessionId: path("sessionId") }, summary: "The canvas data plane's last-value rows: current doc pointer + latest merged tick per slot. Snapshot source for live canvas subscriptions; empty when the deployment predates the plane." },
117
+ { name: "getLive", access: "session:read", method: "GET", path: "/management/sessions/:sessionId/live", params: { sessionId: path("sessionId"), topics: query("json") }, summary: "Current retained values from the ephemeral live plane, optionally filtered by topic." },
117
118
  // The canvas KV store (interactive-canvas-apps Part C). canvas:read and
118
119
  // canvas:write are their OWN access classes: both gate on session read
119
120
  // (a canvas reader may hold no session write), and whether a read-only
@@ -68,6 +68,8 @@ export interface AgentConfig {
68
68
  splashMobile?: string;
69
69
  /** Initial prompt to send when the system agent is first created. */
70
70
  initialPrompt?: string;
71
+ /** Declared tool with a registered handler that must run during the named agent's initial prompt turn. */
72
+ initialRequiredTool?: string;
71
73
  /** Source plugin namespace (e.g. "pilotswarm", "smelter"). Set by the worker during plugin loading. */
72
74
  namespace?: string;
73
75
  /** Internal: identifies which prompt layering path this agent should use. */
@@ -115,6 +117,15 @@ export interface AgentConfig {
115
117
  /** Absolute path the agent was loaded from, when known. Used for diagnostics. */
116
118
  sourcePath?: string;
117
119
  }
120
+ export interface AgentDefinitionIssue {
121
+ code: "initial_required_tool_schema" | "initial_required_tool_not_declared";
122
+ message: string;
123
+ }
124
+ export declare function validateAgentDefinition(agent: Pick<AgentConfig, "schemaVersion" | "tools" | "initialRequiredTool">): AgentDefinitionIssue[];
125
+ export interface LoadAgentFilesOptions {
126
+ /** Package validation keeps invalid definitions long enough to report structured issue codes. */
127
+ includeInvalid?: boolean;
128
+ }
118
129
  /**
119
130
  * `supportsDirectStart` with its default applied. The default is the inverse
120
131
  * of "is a sub-agent", so a package that declares neither field behaves
@@ -130,7 +141,7 @@ export declare function agentSupportsDirectStart(agent: {
130
141
  * @param agentsDir - Path to the agents directory.
131
142
  * @returns Array of agent configs. Files that fail to parse are skipped with a warning.
132
143
  */
133
- export declare function loadAgentFiles(agentsDir: string): AgentConfig[];
144
+ export declare function loadAgentFiles(agentsDir: string, options?: LoadAgentFilesOptions): AgentConfig[];
134
145
  /**
135
146
  * Names of every agent bundled with the SDK itself (system, mgmt, and
136
147
  * optional default-agents tiers), INCLUDING system agents. This is the
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loader.d.ts","sourceRoot":"","sources":["../src/agent-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYpD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAclF;AAID,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qGAAqG;IACrG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qHAAqH;IACrH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oIAAoI;IACpI,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,WAAW,GAAG,kBAAkB,GAAG,yBAAyB,CAAC;IAC/E;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC5C,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACxC,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG7B;AAuLD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CA+E/D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAYhD"}
1
+ {"version":3,"file":"agent-loader.d.ts","sourceRoot":"","sources":["../src/agent-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYpD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAclF;AAID,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qGAAqG;IACrG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qHAAqH;IACrH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oIAAoI;IACpI,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0GAA0G;IAC1G,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,WAAW,GAAG,kBAAkB,GAAG,yBAAyB,CAAC;IAC/E;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,8BAA8B,GAAG,oCAAoC,CAAC;IAC5E,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,GAAG,qBAAqB,CAAC,GAC5E,oBAAoB,EAAE,CAoBxB;AAED,MAAM,WAAW,qBAAqB;IAClC,iGAAiG;IACjG,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC5C,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACxC,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG7B;AAyLD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,WAAW,EAAE,CAsFpG;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAYhD"}
@@ -60,6 +60,27 @@ export function systemChildAgentUUID(parentSessionId, slug) {
60
60
  hash.slice(20, 32),
61
61
  ].join("-");
62
62
  }
63
+ export function validateAgentDefinition(agent) {
64
+ const requiredTool = typeof agent.initialRequiredTool === "string"
65
+ ? agent.initialRequiredTool.trim()
66
+ : "";
67
+ if (!requiredTool)
68
+ return [];
69
+ const issues = [];
70
+ if (agent.schemaVersion !== 3) {
71
+ issues.push({
72
+ code: "initial_required_tool_schema",
73
+ message: "initialRequiredTool requires schemaVersion 3 so older workers skip rather than silently ignore the contract",
74
+ });
75
+ }
76
+ if (!agent.tools?.includes(requiredTool)) {
77
+ issues.push({
78
+ code: "initial_required_tool_not_declared",
79
+ message: `initialRequiredTool "${requiredTool}" must also appear in tools`,
80
+ });
81
+ }
82
+ return issues;
83
+ }
63
84
  /**
64
85
  * `supportsDirectStart` with its default applied. The default is the inverse
65
86
  * of "is a sub-agent", so a package that declares neither field behaves
@@ -257,6 +278,9 @@ function parseAgentFrontmatter(content) {
257
278
  else if (key === "initialPrompt") {
258
279
  meta.initialPrompt = value;
259
280
  }
281
+ else if (key === "initialRequiredTool") {
282
+ meta.initialRequiredTool = value || undefined;
283
+ }
260
284
  }
261
285
  flushMultiline();
262
286
  const body = content.slice(endIdx + 4).trimStart(); // skip closing "---\n"
@@ -269,7 +293,7 @@ function parseAgentFrontmatter(content) {
269
293
  * @param agentsDir - Path to the agents directory.
270
294
  * @returns Array of agent configs. Files that fail to parse are skipped with a warning.
271
295
  */
272
- export function loadAgentFiles(agentsDir) {
296
+ export function loadAgentFiles(agentsDir, options = {}) {
273
297
  const absDir = path.resolve(agentsDir);
274
298
  if (!fs.existsSync(absDir)) {
275
299
  return [];
@@ -291,8 +315,8 @@ export function loadAgentFiles(agentsDir) {
291
315
  console.warn(`[agent-loader] Skipping ${entry.name}: empty prompt body`);
292
316
  continue;
293
317
  }
294
- if (meta.schemaVersion !== undefined && meta.schemaVersion !== 1 && meta.schemaVersion !== 2) {
295
- console.warn(`[agent-loader] Skipping ${entry.name}: unsupported schemaVersion ${meta.schemaVersion}; expected schemaVersion 1 or 2`);
318
+ if (meta.schemaVersion !== undefined && ![1, 2, 3].includes(meta.schemaVersion)) {
319
+ console.warn(`[agent-loader] Skipping ${entry.name}: unsupported schemaVersion ${meta.schemaVersion}; expected schemaVersion 1, 2, or 3`);
296
320
  continue;
297
321
  }
298
322
  // MCP-bearing frontmatter is a schemaVersion-2 shape: version-1
@@ -304,7 +328,7 @@ export function loadAgentFiles(agentsDir) {
304
328
  console.warn(`[agent-loader] ${entry.name}: declares MCP servers but schemaVersion ${meta.schemaVersion ?? 1}; declare 'schemaVersion: 2' so older loaders skip this agent instead of silently dropping its MCP configuration.`);
305
329
  }
306
330
  const crawler = meta.crawler === true || meta.harvester === true;
307
- agents.push({
331
+ const agent = {
308
332
  name: meta.name,
309
333
  description: meta.description,
310
334
  prompt: body,
@@ -319,6 +343,7 @@ export function loadAgentFiles(agentsDir) {
319
343
  splash: meta.splash,
320
344
  splashMobile: meta.splashMobile,
321
345
  initialPrompt: meta.initialPrompt,
346
+ initialRequiredTool: meta.initialRequiredTool,
322
347
  crawler,
323
348
  harvester: crawler,
324
349
  schemaVersion: meta.schemaVersion,
@@ -326,7 +351,13 @@ export function loadAgentFiles(agentsDir) {
326
351
  startedBy: meta.startedBy && meta.startedBy.length > 0 ? meta.startedBy : undefined,
327
352
  supportsDirectStart: meta.supportsDirectStart,
328
353
  sourcePath: filePath,
329
- });
354
+ };
355
+ const definitionIssues = validateAgentDefinition(agent);
356
+ if (definitionIssues.length > 0 && !options.includeInvalid) {
357
+ console.warn(`[agent-loader] Skipping ${entry.name}: ${definitionIssues.map((issue) => issue.message).join("; ")}`);
358
+ continue;
359
+ }
360
+ agents.push(agent);
330
361
  if (meta.schemaVersion === undefined) {
331
362
  console.warn(`[agent-loader] ${entry.name}: missing frontmatter 'schemaVersion'. Defaulting to 1; add 'schemaVersion: 1' to silence this warning.`);
332
363
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../src/agent-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../src/agent-loader.ts"],"names":[],"mappings":"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"}
@@ -151,6 +151,7 @@ export interface AgentPackageManifest {
151
151
  splash?: string;
152
152
  splashMobile?: string;
153
153
  initialPrompt?: string;
154
+ initialRequiredTool?: string;
154
155
  startedBy?: string[];
155
156
  supportsDirectStart?: boolean;
156
157
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-package-format.d.ts","sourceRoot":"","sources":["../src/agent-package-format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-package-format.d.ts","sourceRoot":"","sources":["../src/agent-package-format.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ import * as zlib from "zlib";
29
29
  import * as os from "os";
30
30
  import * as crypto from "crypto";
31
31
  import { spawn } from "child_process";
32
- import { loadAgentFiles } from "./agent-loader.js";
32
+ import { loadAgentFiles, validateAgentDefinition } from "./agent-loader.js";
33
33
  import { loadSkillsSync } from "./skills.js";
34
34
  // ─── Reserved artifact identity ──────────────────────────────────
35
35
  /**
@@ -635,7 +635,7 @@ export async function validateAgentPackageDir(rootDir, opts = {}) {
635
635
  let agents = [];
636
636
  if (fs.existsSync(agentsDir)) {
637
637
  const agentFiles = fs.readdirSync(agentsDir).filter((f) => f.endsWith(".agent.md")).sort();
638
- agents = loadAgentFiles(agentsDir);
638
+ agents = loadAgentFiles(agentsDir, { includeInvalid: true });
639
639
  if (agents.length < agentFiles.length) {
640
640
  // Name the ACTUAL skip reason — these messages are contractual UX
641
641
  // and "failed to parse" for an empty body sends users editing the
@@ -651,8 +651,8 @@ export async function validateAgentPackageDir(rootDir, opts = {}) {
651
651
  catch { /* fallthrough */ }
652
652
  const schemaMatch = /(?:^|\n)schemaVersion:\s*(\S+)/.exec(raw);
653
653
  const body = raw.replace(/^---\n[\s\S]*?\n---\n?/, "").trim();
654
- if (schemaMatch && !["1", "2"].includes(schemaMatch[1])) {
655
- err(errors, "unsupported_agent_schema_version", `agents/${f}: schemaVersion ${schemaMatch[1]} is not supported (use 1 or 2)`, `agents/${f}`);
654
+ if (schemaMatch && !["1", "2", "3"].includes(schemaMatch[1])) {
655
+ err(errors, "unsupported_agent_schema_version", `agents/${f}: schemaVersion ${schemaMatch[1]} is not supported (use 1, 2, or 3)`, `agents/${f}`);
656
656
  }
657
657
  else if (!body) {
658
658
  err(errors, "empty_agent_body", `agents/${f}: the markdown body is empty — it becomes the agent's prompt and cannot be blank`, `agents/${f}`);
@@ -672,6 +672,9 @@ export async function validateAgentPackageDir(rootDir, opts = {}) {
672
672
  if (agent.name === "default") {
673
673
  err(errors, "default_agent_forbidden", `${file}: an agent named "default" is a prompt overlay, not a selectable agent, and is not allowed in packages`, file);
674
674
  }
675
+ for (const issue of validateAgentDefinition(agent)) {
676
+ err(errors, issue.code, `${file}: ${issue.message}`, file);
677
+ }
675
678
  // Collision checks use the RESOLVER's normalization: the runtime
676
679
  // matches case/punctuation-insensitively with an "agent"-suffix
677
680
  // fallback, so "Swee-per" genuinely shadows "sweeper".
@@ -848,6 +851,7 @@ export async function validateAgentPackageDir(rootDir, opts = {}) {
848
851
  splash: a.splash,
849
852
  splashMobile: a.splashMobile,
850
853
  initialPrompt: a.initialPrompt,
854
+ initialRequiredTool: a.initialRequiredTool,
851
855
  startedBy: a.startedBy,
852
856
  supportsDirectStart: a.supportsDirectStart,
853
857
  })),