agent-relay 2.3.2 → 2.3.4

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 (62) hide show
  1. package/dist/index.cjs +1 -1
  2. package/package.json +18 -18
  3. package/packages/acp-bridge/package.json +2 -2
  4. package/packages/api-types/package.json +1 -1
  5. package/packages/benchmark/package.json +5 -5
  6. package/packages/bridge/package.json +7 -7
  7. package/packages/cli-tester/package.json +1 -1
  8. package/packages/config/dist/cloud-config.d.ts +1 -1
  9. package/packages/config/dist/cloud-config.d.ts.map +1 -1
  10. package/packages/config/dist/cloud-config.js.map +1 -1
  11. package/packages/config/dist/schemas.d.ts +5 -5
  12. package/packages/config/dist/schemas.js +1 -1
  13. package/packages/config/dist/schemas.js.map +1 -1
  14. package/packages/config/package.json +2 -2
  15. package/packages/config/src/cloud-config.ts +2 -2
  16. package/packages/config/src/schemas.test.ts +48 -0
  17. package/packages/config/src/schemas.ts +1 -1
  18. package/packages/continuity/package.json +2 -2
  19. package/packages/daemon/package.json +12 -12
  20. package/packages/hooks/package.json +4 -4
  21. package/packages/mcp/package.json +5 -5
  22. package/packages/memory/package.json +2 -2
  23. package/packages/policy/package.json +2 -2
  24. package/packages/protocol/package.json +1 -1
  25. package/packages/resiliency/package.json +1 -1
  26. package/packages/sdk/package.json +3 -3
  27. package/packages/sdk-ts/dist/__tests__/facade.test.d.ts +2 -0
  28. package/packages/sdk-ts/dist/__tests__/facade.test.d.ts.map +1 -0
  29. package/packages/sdk-ts/dist/__tests__/facade.test.js +257 -0
  30. package/packages/sdk-ts/dist/__tests__/facade.test.js.map +1 -0
  31. package/packages/sdk-ts/dist/__tests__/unit.test.d.ts +2 -0
  32. package/packages/sdk-ts/dist/__tests__/unit.test.d.ts.map +1 -0
  33. package/packages/sdk-ts/dist/__tests__/unit.test.js +124 -0
  34. package/packages/sdk-ts/dist/__tests__/unit.test.js.map +1 -0
  35. package/packages/sdk-ts/dist/client.d.ts +2 -0
  36. package/packages/sdk-ts/dist/client.d.ts.map +1 -1
  37. package/packages/sdk-ts/dist/client.js +2 -0
  38. package/packages/sdk-ts/dist/client.js.map +1 -1
  39. package/packages/sdk-ts/dist/protocol.d.ts +1 -0
  40. package/packages/sdk-ts/dist/protocol.d.ts.map +1 -1
  41. package/packages/sdk-ts/dist/relay.d.ts +44 -0
  42. package/packages/sdk-ts/dist/relay.d.ts.map +1 -1
  43. package/packages/sdk-ts/dist/relay.js +89 -11
  44. package/packages/sdk-ts/dist/relay.js.map +1 -1
  45. package/packages/sdk-ts/dist/relaycast.js +2 -2
  46. package/packages/sdk-ts/dist/relaycast.js.map +1 -1
  47. package/packages/sdk-ts/package.json +3 -3
  48. package/packages/sdk-ts/src/__tests__/facade.test.ts +296 -0
  49. package/packages/sdk-ts/src/__tests__/unit.test.ts +152 -0
  50. package/packages/sdk-ts/src/client.ts +4 -0
  51. package/packages/sdk-ts/src/protocol.ts +1 -1
  52. package/packages/sdk-ts/src/relay.ts +112 -11
  53. package/packages/sdk-ts/src/relaycast.ts +2 -2
  54. package/packages/spawner/package.json +1 -1
  55. package/packages/state/package.json +1 -1
  56. package/packages/storage/package.json +2 -2
  57. package/packages/telemetry/package.json +1 -1
  58. package/packages/trajectory/package.json +2 -2
  59. package/packages/user-directory/package.json +2 -2
  60. package/packages/utils/package.json +3 -3
  61. package/packages/wrapper/package.json +6 -6
  62. package/scripts/postinstall.js +106 -2
@@ -1 +1 @@
1
- {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,7 @@ import { randomBytes } from "node:crypto";
26
26
  import path from "node:path";
27
27
  import { AgentRelayClient, AgentRelayProtocolError, } from "./client.js";
28
28
  import { RelaycastApi } from "./relaycast.js";
29
+ import { getLogs as getLogsFromFile, listLoggedAgents as listLoggedAgentsFromFile } from "./logs.js";
29
30
  function isUnsupportedOperation(error) {
30
31
  return error instanceof AgentRelayProtocolError && error.code === "unsupported_operation";
31
32
  }
@@ -46,6 +47,7 @@ export class AgentRelay {
46
47
  onAgentSpawned = null;
47
48
  onAgentReleased = null;
48
49
  onAgentExited = null;
50
+ onAgentReady = null;
49
51
  onWorkerOutput = null;
50
52
  onDeliveryUpdate = null;
51
53
  // Shorthand spawners
@@ -59,6 +61,7 @@ export class AgentRelay {
59
61
  unsubEvent;
60
62
  knownAgents = new Map();
61
63
  exitResolvers = new Map();
64
+ exitResolverSeq = 0;
62
65
  relaycastByName = new Map();
63
66
  constructor(options = {}) {
64
67
  this.defaultChannels = options.channels ?? ["general"];
@@ -85,6 +88,7 @@ export class AgentRelay {
85
88
  cli: input.cli,
86
89
  args: input.args,
87
90
  channels,
91
+ task: input.task,
88
92
  });
89
93
  const agent = this.makeAgent(result.name, result.runtime, channels);
90
94
  this.knownAgents.set(agent.name, agent);
@@ -129,6 +133,16 @@ export class AgentRelay {
129
133
  },
130
134
  };
131
135
  }
136
+ // ── Messaging ─────────────────────────────────────────────────────────
137
+ /**
138
+ * Broadcast a message to all connected agents.
139
+ * @param text — the message body
140
+ * @param options — optional sender name (defaults to "human:orchestrator")
141
+ */
142
+ async broadcast(text, options) {
143
+ const from = options?.from ?? "human:orchestrator";
144
+ return this.human({ name: from }).sendMessage({ to: "*", text });
145
+ }
132
146
  // ── Listing ─────────────────────────────────────────────────────────────
133
147
  async listAgents() {
134
148
  const client = await this.ensureStarted();
@@ -147,6 +161,47 @@ export class AgentRelay {
147
161
  const client = await this.ensureStarted();
148
162
  return client.getStatus();
149
163
  }
164
+ // ── Logs ──────────────────────────────────────────────────────────────
165
+ /**
166
+ * Read the last N lines of an agent's log file.
167
+ *
168
+ * @example
169
+ * ```ts
170
+ * const logs = await relay.getLogs("Worker1", { lines: 100 });
171
+ * if (logs.found) console.log(logs.content);
172
+ * ```
173
+ */
174
+ async getLogs(agentName, options) {
175
+ const cwd = this.clientOptions.cwd ?? process.cwd();
176
+ const logsDir = path.join(cwd, ".agent-relay", "worker-logs");
177
+ return getLogsFromFile(agentName, { logsDir, lines: options?.lines });
178
+ }
179
+ /** List all agents that have log files. */
180
+ async listLoggedAgents() {
181
+ const cwd = this.clientOptions.cwd ?? process.cwd();
182
+ const logsDir = path.join(cwd, ".agent-relay", "worker-logs");
183
+ return listLoggedAgentsFromFile(logsDir);
184
+ }
185
+ // ── Wait helpers ──────────────────────────────────────────────────────
186
+ /**
187
+ * Wait for any one of the given agents to exit. Returns the first agent
188
+ * that exits along with its exit reason.
189
+ *
190
+ * @example
191
+ * ```ts
192
+ * const { agent, result } = await AgentRelay.waitForAny([worker1, worker2], 60_000);
193
+ * console.log(`${agent.name} finished: ${result}`);
194
+ * ```
195
+ */
196
+ static async waitForAny(agents, timeoutMs) {
197
+ if (agents.length === 0) {
198
+ throw new Error("waitForAny requires at least one agent");
199
+ }
200
+ return Promise.race(agents.map(async (agent) => {
201
+ const result = await agent.waitForExit(timeoutMs);
202
+ return { agent, result };
203
+ }));
204
+ }
150
205
  // ── Lifecycle ───────────────────────────────────────────────────────────
151
206
  async shutdown() {
152
207
  if (this.unsubEvent) {
@@ -158,8 +213,8 @@ export class AgentRelay {
158
213
  this.client = undefined;
159
214
  }
160
215
  this.knownAgents.clear();
161
- for (const resolve of this.exitResolvers.values()) {
162
- resolve("released");
216
+ for (const entry of this.exitResolvers.values()) {
217
+ entry.resolve("released");
163
218
  }
164
219
  this.exitResolvers.clear();
165
220
  }
@@ -233,19 +288,31 @@ export class AgentRelay {
233
288
  this.makeAgent(event.name, "pty", []);
234
289
  this.onAgentReleased?.(agent);
235
290
  this.knownAgents.delete(event.name);
236
- this.exitResolvers.get(event.name)?.("released");
291
+ this.exitResolvers.get(event.name)?.resolve("released");
237
292
  this.exitResolvers.delete(event.name);
238
293
  break;
239
294
  }
240
295
  case "agent_exited": {
241
296
  const agent = this.knownAgents.get(event.name) ??
242
297
  this.makeAgent(event.name, "pty", []);
298
+ // Populate exit info before firing the hook
299
+ agent.exitCode = event.code;
300
+ agent.exitSignal = event.signal;
243
301
  this.onAgentExited?.(agent);
244
302
  this.knownAgents.delete(event.name);
245
- this.exitResolvers.get(event.name)?.("exited");
303
+ this.exitResolvers.get(event.name)?.resolve("exited");
246
304
  this.exitResolvers.delete(event.name);
247
305
  break;
248
306
  }
307
+ case "worker_ready": {
308
+ let agent = this.knownAgents.get(event.name);
309
+ if (!agent) {
310
+ agent = this.makeAgent(event.name, event.runtime, []);
311
+ this.knownAgents.set(event.name, agent);
312
+ }
313
+ this.onAgentReady?.(agent);
314
+ break;
315
+ }
249
316
  case "worker_stream": {
250
317
  this.onWorkerOutput?.({
251
318
  name: event.name,
@@ -266,6 +333,8 @@ export class AgentRelay {
266
333
  name,
267
334
  runtime,
268
335
  channels,
336
+ exitCode: undefined,
337
+ exitSignal: undefined,
269
338
  async release() {
270
339
  const client = await relay.ensureStarted();
271
340
  await client.release(name);
@@ -283,14 +352,22 @@ export class AgentRelay {
283
352
  return;
284
353
  }
285
354
  let timer;
286
- relay.exitResolvers.set(name, (reason) => {
287
- if (timer)
288
- clearTimeout(timer);
289
- resolve(reason);
355
+ const token = ++relay.exitResolverSeq;
356
+ relay.exitResolvers.set(name, {
357
+ resolve(reason) {
358
+ if (timer)
359
+ clearTimeout(timer);
360
+ resolve(reason);
361
+ },
362
+ token,
290
363
  });
291
364
  if (timeoutMs !== undefined) {
292
365
  timer = setTimeout(() => {
293
- relay.exitResolvers.delete(name);
366
+ // Only delete if this is still our resolver (not one from a later call)
367
+ const current = relay.exitResolvers.get(name);
368
+ if (current?.token === token) {
369
+ relay.exitResolvers.delete(name);
370
+ }
294
371
  resolve("timeout");
295
372
  }, timeoutMs);
296
373
  }
@@ -338,12 +415,13 @@ export class AgentRelay {
338
415
  const name = options?.name ?? defaultName;
339
416
  const channels = options?.channels ?? ["general"];
340
417
  const args = options?.args ?? [];
418
+ const task = options?.task;
341
419
  let result;
342
420
  if (runtime === "headless_claude") {
343
- result = await client.spawnHeadlessClaude({ name, args, channels });
421
+ result = await client.spawnHeadlessClaude({ name, args, channels, task });
344
422
  }
345
423
  else {
346
- result = await client.spawnPty({ name, cli, args, channels });
424
+ result = await client.spawnPty({ name, cli, args, channels, task });
347
425
  }
348
426
  const agent = relay.makeAgent(result.name, result.runtime, channels);
349
427
  relay.knownAgents.set(agent.name, agent);
@@ -1 +1 @@
1
- {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GAGxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,SAAS,sBAAsB,CAAC,KAAc;IAC5C,OAAO,KAAK,YAAY,uBAAuB,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,CAAC;AAC5F,CAAC;AAED,SAAS,gCAAgC,CACvC,IAAY,EACZ,KAAsD;IAEtD,OAAO;QACL,OAAO,EAAE,uBAAuB;QAChC,IAAI;QACJ,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;AACJ,CAAC;AA4DD,+EAA+E;AAE/E,MAAM,OAAO,UAAU;IACrB,oDAAoD;IACpD,iBAAiB,GAAuB,IAAI,CAAC;IAC7C,aAAa,GAAuB,IAAI,CAAC;IACzC,cAAc,GAAqB,IAAI,CAAC;IACxC,eAAe,GAAqB,IAAI,CAAC;IACzC,aAAa,GAAqB,IAAI,CAAC;IACvC,cAAc,GAA+D,IAAI,CAAC;IAClF,gBAAgB,GAA2B,IAAI,CAAC;IAEhD,qBAAqB;IACZ,KAAK,CAAe;IACpB,MAAM,CAAe;IACrB,MAAM,CAAe;IAEb,aAAa,CAA0B;IACvC,eAAe,CAAW;IACnC,MAAM,CAAoB;IAC1B,YAAY,CAA6B;IACzC,UAAU,CAAc;IACf,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;IACvC,aAAa,GAAG,IAAI,GAAG,EAAmD,CAAC;IAC3E,eAAe,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEnE,YAAY,UAA6B,EAAE;QACzC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG;YACnB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,IAAI,CAAC,eAAe;YAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC7C,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED,2EAA2E;IAE3E,KAAK,CAAC,QAAQ,CAAC,KAAoB;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACnC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2EAA2E;IAE3E,KAAK,CAAC,IAAsB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC;QACnB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,CAAC,WAAW,CAAC,KAAK;gBACrB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,MAAsD,CAAC;gBAC3D,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;wBAChC,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;qBACzB,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClC,OAAO,gCAAgC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC5D,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,IAAI,MAAM,EAAE,QAAQ,KAAK,uBAAuB,EAAE,CAAC;oBACjD,OAAO,gCAAgC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC5D,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACnE,MAAM,GAAG,GAAY;oBACnB,OAAO;oBACP,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC;gBACF,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC3B,OAAO,GAAG,CAAC;YACb,CAAC;SACF,CAAC;IACJ,CAAC;IAED,2EAA2E;IAE3E,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IAEzE,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;IAED,2EAA2E;IAE3E,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,OAAO,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,2EAA2E;IAE3E;;8DAE0D;IAClD,cAAc,CAAC,EAAU;QAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAEO,eAAe,CAAC,SAAiB;QACvC,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACpD,EAAE,GAAG,IAAI,YAAY,CAAC;gBACpB,SAAS;gBACT,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,gBAAgB,CAAC;aAC5D,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAEhD,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;aAC3D,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;QAEL,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEO,UAAU,CAAC,MAAwB;QACzC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAkB,EAAE,EAAE;YACtD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,MAAM,GAAG,GAAY;wBACnB,OAAO,EAAE,KAAK,CAAC,QAAQ;wBACvB,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,EAAE,EAAE,KAAK,CAAC,MAAM;wBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,QAAQ,EAAE,KAAK,CAAC,SAAS;qBAC1B,CAAC;oBACF,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC9B,MAAM;gBACR,CAAC;gBACD,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;wBACtD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC1C,CAAC;oBACD,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM;gBACR,CAAC;gBACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,MAAM,KAAK,GACT,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;wBAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBACxC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;oBACjD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,MAAM;gBACR,CAAC;gBACD,KAAK,cAAc,CAAC,CAAC,CAAC;oBACpB,MAAM,KAAK,GACT,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;wBAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBACxC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC5B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;oBAC/C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,MAAM;gBACR,CAAC;gBACD,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;qBACnB,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CACf,IAAY,EACZ,OAAqB,EACrB,QAAkB;QAElB,MAAM,KAAK,GAAG,IAAI,CAAC;QACnB,OAAO;YACL,IAAI;YACJ,OAAO;YACP,QAAQ;YACR,KAAK,CAAC,OAAO;gBACX,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC3C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,WAAW,CAAC,SAAkB;gBAC5B,OAAO,IAAI,OAAO,CAAoC,CAAC,OAAO,EAAE,EAAE;oBAChE,uCAAuC;oBACvC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBACjC,OAAO,CAAC,QAAQ,CAAC,CAAC;wBAClB,OAAO;oBACT,CAAC;oBACD,2EAA2E;oBAC3E,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;wBACpB,OAAO,CAAC,SAAS,CAAC,CAAC;wBACnB,OAAO;oBACT,CAAC;oBACD,IAAI,KAAgD,CAAC;oBACrD,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;wBACvC,IAAI,KAAK;4BAAE,YAAY,CAAC,KAAK,CAAC,CAAC;wBAC/B,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC,CAAC,CAAC;oBACH,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBAC5B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;4BACtB,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;4BACjC,OAAO,CAAC,SAAS,CAAC,CAAC;wBACrB,CAAC,EAAE,SAAS,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YACD,KAAK,CAAC,WAAW,CAAC,KAAK;gBACrB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,MAAsD,CAAC;gBAC3D,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;wBAChC,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;qBACzB,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClC,OAAO,gCAAgC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACvD,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,IAAI,MAAM,EAAE,QAAQ,KAAK,uBAAuB,EAAE,CAAC;oBACjD,OAAO,gCAAgC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvD,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACnE,MAAM,GAAG,GAAY;oBACnB,OAAO;oBACP,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC;gBACF,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC3B,OAAO,GAAG,CAAC;YACb,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,aAAa,CACnB,GAAW,EACX,WAAmB,EACnB,OAAqB;QAErB,MAAM,KAAK,GAAG,IAAI,CAAC;QACnB,OAAO;YACL,KAAK,CAAC,KAAK,CAAC,OAAQ;gBAClB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,WAAW,CAAC;gBAC1C,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;gBAEjC,IAAI,MAA+C,CAAC;gBACpD,IAAI,OAAO,KAAK,iBAAiB,EAAE,CAAC;oBAClC,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACtE,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAED,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACrE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzC,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { randomBytes } from "node:crypto";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { homedir } from "node:os";
4
4
  import { join } from "node:path";
5
- import { Relay, RelayError } from "@relaycast/sdk";
5
+ import { RelayCast, RelayError } from "@relaycast/sdk";
6
6
  const DEFAULT_BASE_URL = "https://api.relaycast.dev";
7
7
  /**
8
8
  * Convenience wrapper around `@relaycast/sdk` that manages workspace
@@ -57,7 +57,7 @@ export class RelaycastApi {
57
57
  if (this.agentClient)
58
58
  return this.agentClient;
59
59
  const apiKey = await this.resolveApiKey();
60
- const relay = new Relay({ apiKey, baseUrl: this.baseUrl });
60
+ const relay = new RelayCast({ apiKey, baseUrl: this.baseUrl });
61
61
  // Register — retry with a suffixed name on 409 conflict.
62
62
  let name = this.agentName;
63
63
  let registration;
@@ -1 +1 @@
1
- {"version":3,"file":"relaycast.js","sourceRoot":"","sources":["../src/relaycast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relaycast.js","sourceRoot":"","sources":["../src/relaycast.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/broker-sdk",
3
- "version": "2.3.2",
3
+ "version": "2.3.4",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -63,13 +63,13 @@
63
63
  "demo": "node dist/examples/demo.js",
64
64
  "ralph": "node dist/examples/ralph-loop.js",
65
65
  "example": "node dist/examples/example.js",
66
- "prepack": "npm run build"
66
+ "prepack": "npm run build:full"
67
67
  },
68
68
  "devDependencies": {
69
69
  "@types/node": "^22.13.10",
70
70
  "typescript": "^5.7.3"
71
71
  },
72
72
  "dependencies": {
73
- "@relaycast/sdk": "^0.2.1"
73
+ "@relaycast/sdk": "^0.2.5"
74
74
  }
75
75
  }
@@ -0,0 +1,296 @@
1
+ /**
2
+ * Facade integration tests — exercises new AgentRelay capabilities:
3
+ * spawn with initial task, getLogs, waitForAny, broadcast, onAgentReady, exit code.
4
+ *
5
+ * Run:
6
+ * npm run build && node --test dist/__tests__/facade.test.js
7
+ *
8
+ * Requires:
9
+ * RELAY_API_KEY — Relaycast workspace key
10
+ * AGENT_RELAY_BIN (optional) — path to agent-relay binary
11
+ */
12
+ import assert from "node:assert/strict";
13
+ import fs from "node:fs";
14
+ import path from "node:path";
15
+ import test, { type TestContext } from "node:test";
16
+
17
+ import { AgentRelay, type Agent, type Message } from "../relay.js";
18
+
19
+ // ── helpers ─────────────────────────────────────────────────────────────────
20
+
21
+ function resolveBinaryPath(): string {
22
+ if (process.env.AGENT_RELAY_BIN) {
23
+ return process.env.AGENT_RELAY_BIN;
24
+ }
25
+ return path.resolve(process.cwd(), "../../target/debug/agent-relay");
26
+ }
27
+
28
+ function requireRelaycast(t: TestContext): boolean {
29
+ if (!process.env.RELAY_API_KEY?.trim()) {
30
+ t.skip("RELAY_API_KEY is required");
31
+ return false;
32
+ }
33
+ return true;
34
+ }
35
+
36
+ function requireBinary(t: TestContext): string | null {
37
+ const bin = resolveBinaryPath();
38
+ if (!fs.existsSync(bin)) {
39
+ t.skip(`agent-relay binary not found at ${bin}`);
40
+ return null;
41
+ }
42
+ return bin;
43
+ }
44
+
45
+ function makeRelay(bin: string): AgentRelay {
46
+ return new AgentRelay({
47
+ binaryPath: bin,
48
+ requestTimeoutMs: 10_000,
49
+ env: process.env,
50
+ });
51
+ }
52
+
53
+ // ── spawn with initial task ─────────────────────────────────────────────────
54
+
55
+ test("facade: spawn with initial task delivers task after worker_ready", async (t) => {
56
+ if (!requireRelaycast(t)) return;
57
+ const bin = requireBinary(t);
58
+ if (!bin) return;
59
+
60
+ const suffix = Date.now().toString(36);
61
+ const relay = makeRelay(bin);
62
+ const readyNames: string[] = [];
63
+ relay.onAgentReady = (agent) => readyNames.push(agent.name);
64
+
65
+ try {
66
+ const agent = await relay.spawnPty({
67
+ name: `Task-${suffix}`,
68
+ cli: "cat",
69
+ channels: ["general"],
70
+ task: "Hello from initial task",
71
+ });
72
+
73
+ // Wait a bit for worker_ready event to propagate
74
+ await new Promise((r) => setTimeout(r, 2_000));
75
+
76
+ assert.ok(readyNames.includes(agent.name), "onAgentReady should fire for spawned agent");
77
+
78
+ await agent.release();
79
+ } finally {
80
+ await relay.shutdown();
81
+ }
82
+ });
83
+
84
+ // ── onAgentReady ────────────────────────────────────────────────────────────
85
+
86
+ test("facade: onAgentReady fires when worker becomes ready", async (t) => {
87
+ if (!requireRelaycast(t)) return;
88
+ const bin = requireBinary(t);
89
+ if (!bin) return;
90
+
91
+ const suffix = Date.now().toString(36);
92
+ const relay = makeRelay(bin);
93
+
94
+ const readyAgents: Agent[] = [];
95
+ relay.onAgentReady = (agent) => readyAgents.push(agent);
96
+
97
+ try {
98
+ const agent = await relay.spawnPty({
99
+ name: `Ready-${suffix}`,
100
+ cli: "cat",
101
+ channels: ["general"],
102
+ });
103
+
104
+ // Give the worker time to send worker_ready
105
+ await new Promise((r) => setTimeout(r, 2_000));
106
+
107
+ assert.ok(
108
+ readyAgents.some((a) => a.name === agent.name),
109
+ "onAgentReady should fire with the correct agent",
110
+ );
111
+
112
+ await agent.release();
113
+ } finally {
114
+ await relay.shutdown();
115
+ }
116
+ });
117
+
118
+ // ── broadcast ───────────────────────────────────────────────────────────────
119
+
120
+ test("facade: broadcast sends to all agents", async (t) => {
121
+ if (!requireRelaycast(t)) return;
122
+ const bin = requireBinary(t);
123
+ if (!bin) return;
124
+
125
+ const suffix = Date.now().toString(36);
126
+ const relay = makeRelay(bin);
127
+ const sentMessages: Message[] = [];
128
+ relay.onMessageSent = (msg) => sentMessages.push(msg);
129
+
130
+ try {
131
+ const agent = await relay.spawnPty({
132
+ name: `Broadcast-${suffix}`,
133
+ cli: "cat",
134
+ channels: ["general"],
135
+ });
136
+
137
+ const msg = await relay.broadcast("Hello everyone!");
138
+ assert.equal(msg.to, "*");
139
+ assert.equal(msg.text, "Hello everyone!");
140
+ assert.equal(msg.from, "human:orchestrator");
141
+ assert.equal(sentMessages.length, 1);
142
+
143
+ // Broadcast with custom from
144
+ const msg2 = await relay.broadcast("Custom sender", { from: "System" });
145
+ assert.equal(msg2.from, "System");
146
+
147
+ await agent.release();
148
+ } finally {
149
+ await relay.shutdown();
150
+ }
151
+ });
152
+
153
+ // ── waitForAny ──────────────────────────────────────────────────────────────
154
+
155
+ test("facade: waitForAny returns first agent to exit", async (t) => {
156
+ if (!requireRelaycast(t)) return;
157
+ const bin = requireBinary(t);
158
+ if (!bin) return;
159
+
160
+ const suffix = Date.now().toString(36);
161
+ const relay = makeRelay(bin);
162
+
163
+ try {
164
+ const [a, b] = await Promise.all([
165
+ relay.spawnPty({ name: `WaitA-${suffix}`, cli: "cat", channels: ["general"] }),
166
+ relay.spawnPty({ name: `WaitB-${suffix}`, cli: "cat", channels: ["general"] }),
167
+ ]);
168
+
169
+ // Release agent A — it should be the first to exit
170
+ setTimeout(() => a.release(), 500);
171
+
172
+ const { agent, result } = await AgentRelay.waitForAny([a, b], 10_000);
173
+ assert.equal(agent.name, a.name);
174
+ assert.equal(result, "released");
175
+
176
+ await b.release();
177
+ } finally {
178
+ await relay.shutdown();
179
+ }
180
+ });
181
+
182
+ // ── waitForAny with timeout ─────────────────────────────────────────────────
183
+
184
+ test("facade: waitForAny respects timeout", async (t) => {
185
+ if (!requireRelaycast(t)) return;
186
+ const bin = requireBinary(t);
187
+ if (!bin) return;
188
+
189
+ const suffix = Date.now().toString(36);
190
+ const relay = makeRelay(bin);
191
+
192
+ try {
193
+ const agent = await relay.spawnPty({
194
+ name: `Timeout-${suffix}`,
195
+ cli: "cat",
196
+ channels: ["general"],
197
+ });
198
+
199
+ const { result } = await AgentRelay.waitForAny([agent], 500);
200
+ assert.equal(result, "timeout");
201
+
202
+ await agent.release();
203
+ } finally {
204
+ await relay.shutdown();
205
+ }
206
+ });
207
+
208
+ // ── exit code ───────────────────────────────────────────────────────────────
209
+
210
+ test("facade: onAgentExited populates exitCode and exitSignal", async (t) => {
211
+ if (!requireRelaycast(t)) return;
212
+ const bin = requireBinary(t);
213
+ if (!bin) return;
214
+
215
+ const suffix = Date.now().toString(36);
216
+ const relay = makeRelay(bin);
217
+ const exitedAgents: Agent[] = [];
218
+ relay.onAgentExited = (agent) => exitedAgents.push(agent);
219
+
220
+ try {
221
+ const agent = await relay.spawnPty({
222
+ name: `Exit-${suffix}`,
223
+ cli: "cat",
224
+ channels: ["general"],
225
+ });
226
+
227
+ await agent.release();
228
+ // Give time for exit event to propagate
229
+ await new Promise((r) => setTimeout(r, 1_000));
230
+
231
+ // The agent should have exited — check that exitCode or exitSignal is set
232
+ // (exact values depend on how cat is terminated)
233
+ const exited = exitedAgents.find((a) => a.name === agent.name);
234
+ if (exited) {
235
+ assert.ok(
236
+ exited.exitCode !== undefined || exited.exitSignal !== undefined,
237
+ "exitCode or exitSignal should be populated",
238
+ );
239
+ }
240
+ // It's also valid for only onAgentReleased to fire (not onAgentExited)
241
+ // since the broker may clean up before the process exits
242
+ } finally {
243
+ await relay.shutdown();
244
+ }
245
+ });
246
+
247
+ // ── getLogs ──────────────────────────────────────────────────────────────────
248
+
249
+ test("facade: getLogs returns log content for agent", async (t) => {
250
+ if (!requireRelaycast(t)) return;
251
+ const bin = requireBinary(t);
252
+ if (!bin) return;
253
+
254
+ const suffix = Date.now().toString(36);
255
+ const relay = makeRelay(bin);
256
+
257
+ try {
258
+ const agent = await relay.spawnPty({
259
+ name: `Logs-${suffix}`,
260
+ cli: "cat",
261
+ channels: ["general"],
262
+ });
263
+
264
+ // Give time for some output to be logged
265
+ await new Promise((r) => setTimeout(r, 2_000));
266
+
267
+ const logs = await relay.getLogs(agent.name);
268
+ // Logs may or may not be found depending on whether the worker writes to the log file
269
+ // The important thing is the API works without error
270
+ assert.equal(logs.agent, agent.name);
271
+ assert.equal(typeof logs.found, "boolean");
272
+ assert.equal(typeof logs.content, "string");
273
+
274
+ await agent.release();
275
+ } finally {
276
+ await relay.shutdown();
277
+ }
278
+ });
279
+
280
+ // ── listLoggedAgents ────────────────────────────────────────────────────────
281
+
282
+ test("facade: listLoggedAgents returns array", async (t) => {
283
+ if (!requireRelaycast(t)) return;
284
+ const bin = requireBinary(t);
285
+ if (!bin) return;
286
+
287
+ const relay = makeRelay(bin);
288
+
289
+ try {
290
+ // Just verify the API works and returns an array
291
+ const agents = await relay.listLoggedAgents();
292
+ assert.ok(Array.isArray(agents));
293
+ } finally {
294
+ await relay.shutdown();
295
+ }
296
+ });