@agent-relay/sdk 6.3.4 → 7.0.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 (55) hide show
  1. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  2. package/bin/agent-relay-broker-darwin-x64 +0 -0
  3. package/bin/agent-relay-broker-linux-arm64 +0 -0
  4. package/bin/agent-relay-broker-linux-x64 +0 -0
  5. package/bin/agent-relay-broker-win32-x64.exe +0 -0
  6. package/dist/client.d.ts +34 -0
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +167 -46
  9. package/dist/client.js.map +1 -1
  10. package/dist/event-bus.d.ts +45 -0
  11. package/dist/event-bus.d.ts.map +1 -0
  12. package/dist/event-bus.js +68 -0
  13. package/dist/event-bus.js.map +1 -0
  14. package/dist/examples/demo.js +27 -27
  15. package/dist/examples/demo.js.map +1 -1
  16. package/dist/examples/persona-spawn.js +9 -10
  17. package/dist/examples/persona-spawn.js.map +1 -1
  18. package/dist/examples/quickstart.js +17 -17
  19. package/dist/examples/quickstart.js.map +1 -1
  20. package/dist/examples/ralph-loop.js +37 -37
  21. package/dist/examples/ralph-loop.js.map +1 -1
  22. package/dist/index.d.ts +2 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/lifecycle-hooks.d.ts +140 -0
  27. package/dist/lifecycle-hooks.d.ts.map +1 -0
  28. package/dist/lifecycle-hooks.js +29 -0
  29. package/dist/lifecycle-hooks.js.map +1 -0
  30. package/dist/relay.d.ts +37 -29
  31. package/dist/relay.d.ts.map +1 -1
  32. package/dist/relay.js +52 -30
  33. package/dist/relay.js.map +1 -1
  34. package/dist/shadow.d.ts +4 -4
  35. package/dist/shadow.d.ts.map +1 -1
  36. package/dist/shadow.js +9 -9
  37. package/dist/shadow.js.map +1 -1
  38. package/dist/spawn-from-env.d.ts.map +1 -1
  39. package/dist/spawn-from-env.js +20 -22
  40. package/dist/spawn-from-env.js.map +1 -1
  41. package/dist/workflows/__tests__/budget-enforcement.test.js +1 -7
  42. package/dist/workflows/__tests__/budget-enforcement.test.js.map +1 -1
  43. package/dist/workflows/__tests__/e2e-permissions.test.js +18 -11
  44. package/dist/workflows/__tests__/e2e-permissions.test.js.map +1 -1
  45. package/dist/workflows/__tests__/permissions-integration.test.js +18 -9
  46. package/dist/workflows/__tests__/permissions-integration.test.js.map +1 -1
  47. package/dist/workflows/__tests__/verification-custom.test.js +1 -7
  48. package/dist/workflows/__tests__/verification-custom.test.js.map +1 -1
  49. package/dist/workflows/__tests__/verification-traceback.test.js +1 -7
  50. package/dist/workflows/__tests__/verification-traceback.test.js.map +1 -1
  51. package/dist/workflows/runner.d.ts +1 -0
  52. package/dist/workflows/runner.d.ts.map +1 -1
  53. package/dist/workflows/runner.js +24 -23
  54. package/dist/workflows/runner.js.map +1 -1
  55. package/package.json +12 -12
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Typed lifecycle-hook surface for `AgentRelay` / `AgentRelayClient`.
3
+ *
4
+ * Two kinds of events flow through the same registry:
5
+ *
6
+ * 1. **Broker events** — `agentSpawned`, `agentReleased`, `agentExited`,
7
+ * `agentReady`, `agentIdle`, `agentExitRequested`,
8
+ * `agentActivityChanged`, `messageReceived`, `messageSent`,
9
+ * `workerOutput`, `deliveryUpdate`, `channelSubscribed`,
10
+ * `channelUnsubscribed`. These fire when the broker emits the
11
+ * corresponding event over the WS stream.
12
+ * 2. **Call-site hooks** — `beforeAgentSpawn`, `afterAgentSpawn`,
13
+ * `beforeAgentRelease`, `afterAgentRelease`. These fire at the SDK
14
+ * call site (before / after the HTTP request), so handlers can
15
+ * observe — and, for `beforeAgentSpawn`, *modify* — the spawn input
16
+ * before it reaches the broker.
17
+ *
18
+ * The `beforeAgentSpawn` contract is the only one that supports
19
+ * mutation: handlers may return a {@link SpawnPatch} to merge into the
20
+ * input via shallow merge in registration order. All other hooks are
21
+ * observe-only — return type `void | Promise<void>`.
22
+ *
23
+ * Types from `relay.ts` are pulled in with `import type` to avoid a
24
+ * runtime circular import; TypeScript erases type-only imports so the
25
+ * runtime dependency graph stays unidirectional
26
+ * (`relay.ts` → `event-bus.ts` → no further).
27
+ */
28
+ import type { AgentRuntime, BrokerEvent } from './protocol.js';
29
+ import type { Agent, AgentActivityChange, Message } from './relay.js';
30
+ import type { SpawnPtyInput, SpawnProviderInput } from './types.js';
31
+ /**
32
+ * The subset of {@link SpawnPtyInput} / {@link SpawnProviderInput} fields a
33
+ * `beforeAgentSpawn` handler may patch. Keeping this narrower than the full
34
+ * input type stops handlers from rewriting identity (`name`, `cli`,
35
+ * `provider`, `cwd`) — those need to come from the caller.
36
+ *
37
+ * For array fields (`args`, `channels`) a patch *replaces* the array. To
38
+ * extend rather than replace, spread the current value:
39
+ *
40
+ * ```ts
41
+ * relay.addListener('beforeAgentSpawn', (ctx) => ({
42
+ * args: [...(ctx.input.args ?? []), '--session-id', uuid],
43
+ * }));
44
+ * ```
45
+ *
46
+ * When multiple handlers return patches, they merge in registration order
47
+ * via shallow `Object.assign` — later handlers override earlier ones for
48
+ * the same key.
49
+ */
50
+ export type SpawnPatch = Partial<Pick<SpawnPtyInput & SpawnProviderInput, 'args' | 'channels' | 'task' | 'model' | 'team' | 'agentToken'>>;
51
+ export interface BeforeAgentSpawnContext {
52
+ /** Which spawn API was called. */
53
+ kind: 'pty' | 'provider';
54
+ /** Raw input the caller passed in. Treat as read-only — return a {@link SpawnPatch} to modify. */
55
+ input: Readonly<SpawnPtyInput | SpawnProviderInput>;
56
+ /** `process.pid` of the calling Node process. Useful for burn-style stamping. */
57
+ spawnerPid: number;
58
+ /** ISO timestamp captured the instant the hook chain started. */
59
+ spawnStartTs: string;
60
+ /** Resolved broker base URL the spawn will POST to. */
61
+ baseUrl: string;
62
+ }
63
+ export type BeforeAgentSpawnHandler = (ctx: BeforeAgentSpawnContext) => void | SpawnPatch | Promise<void | SpawnPatch>;
64
+ export interface AfterAgentSpawnContext extends BeforeAgentSpawnContext {
65
+ /** Final input that was sent to the broker — original input merged with every handler's patch. */
66
+ resolvedInput: SpawnPtyInput | SpawnProviderInput;
67
+ /** Broker reply on success. */
68
+ result?: {
69
+ name: string;
70
+ runtime: AgentRuntime;
71
+ };
72
+ /** Set when the broker call rejected. Mutually exclusive with `result`. */
73
+ error?: Error;
74
+ /** Wall-clock duration from `beforeAgentSpawn` start to here. */
75
+ durationMs: number;
76
+ }
77
+ export interface BeforeAgentReleaseContext {
78
+ name: string;
79
+ reason?: string;
80
+ baseUrl: string;
81
+ }
82
+ export interface AfterAgentReleaseContext extends BeforeAgentReleaseContext {
83
+ error?: Error;
84
+ durationMs: number;
85
+ }
86
+ export interface AgentIdlePayload {
87
+ name: string;
88
+ idleSecs: number;
89
+ }
90
+ export interface AgentExitRequestedPayload {
91
+ name: string;
92
+ reason: string;
93
+ }
94
+ export interface WorkerOutputPayload {
95
+ name: string;
96
+ stream: string;
97
+ chunk: string;
98
+ }
99
+ /**
100
+ * Object-shaped payload for channel subscribe / unsubscribe events. The
101
+ * pre-2.x single-callback fields took two positional args
102
+ * (`(agent, channels) => void`); the registry standardizes on an object
103
+ * payload so all events share the one-arg shape and future fields can be
104
+ * added without breaking handlers.
105
+ */
106
+ export interface ChannelSubscriptionPayload {
107
+ agent: string;
108
+ channels: string[];
109
+ }
110
+ /**
111
+ * Typed event map consumed by the {@link EventBus} that backs
112
+ * `AgentRelay.addListener` / `removeListener`.
113
+ *
114
+ * Each entry's tuple is the handler argument list (always length 1 here —
115
+ * payloads are objects rather than positional args).
116
+ *
117
+ * Declared as a `type` alias rather than an `interface` so it satisfies
118
+ * the `EventBus<E extends EventMap>` constraint without requiring callers
119
+ * to spell out an index signature.
120
+ */
121
+ export type AgentRelayEvents = {
122
+ messageReceived: [Message];
123
+ messageSent: [Message];
124
+ agentSpawned: [Agent];
125
+ agentReleased: [Agent];
126
+ agentExited: [Agent];
127
+ agentReady: [Agent];
128
+ workerOutput: [WorkerOutputPayload];
129
+ deliveryUpdate: [BrokerEvent];
130
+ agentExitRequested: [AgentExitRequestedPayload];
131
+ agentIdle: [AgentIdlePayload];
132
+ agentActivityChanged: [AgentActivityChange];
133
+ channelSubscribed: [ChannelSubscriptionPayload];
134
+ channelUnsubscribed: [ChannelSubscriptionPayload];
135
+ beforeAgentSpawn: [BeforeAgentSpawnContext];
136
+ afterAgentSpawn: [AfterAgentSpawnContext];
137
+ beforeAgentRelease: [BeforeAgentReleaseContext];
138
+ afterAgentRelease: [AfterAgentReleaseContext];
139
+ };
140
+ //# sourceMappingURL=lifecycle-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-hooks.d.ts","sourceRoot":"","sources":["../src/lifecycle-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIpE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,IAAI,CAAC,aAAa,GAAG,kBAAkB,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC,CACzG,CAAC;AAIF,MAAM,WAAW,uBAAuB;IACtC,kCAAkC;IAClC,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC;IACzB,kGAAkG;IAClG,KAAK,EAAE,QAAQ,CAAC,aAAa,GAAG,kBAAkB,CAAC,CAAC;IACpD,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,uBAAuB,GAAG,CACpC,GAAG,EAAE,uBAAuB,KACzB,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;AAEpD,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACrE,kGAAkG;IAClG,aAAa,EAAE,aAAa,GAAG,kBAAkB,CAAC;IAClD,+BAA+B;IAC/B,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC;IACjD,2EAA2E;IAC3E,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;IACzE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAID;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAE7B,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC;IAC3B,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC;IACvB,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;IACtB,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;IACrB,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;IACpB,YAAY,EAAE,CAAC,mBAAmB,CAAC,CAAC;IACpC,cAAc,EAAE,CAAC,WAAW,CAAC,CAAC;IAC9B,kBAAkB,EAAE,CAAC,yBAAyB,CAAC,CAAC;IAChD,SAAS,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC9B,oBAAoB,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC5C,iBAAiB,EAAE,CAAC,0BAA0B,CAAC,CAAC;IAChD,mBAAmB,EAAE,CAAC,0BAA0B,CAAC,CAAC;IAGlD,gBAAgB,EAAE,CAAC,uBAAuB,CAAC,CAAC;IAC5C,eAAe,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAC1C,kBAAkB,EAAE,CAAC,yBAAyB,CAAC,CAAC;IAChD,iBAAiB,EAAE,CAAC,wBAAwB,CAAC,CAAC;CAC/C,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Typed lifecycle-hook surface for `AgentRelay` / `AgentRelayClient`.
3
+ *
4
+ * Two kinds of events flow through the same registry:
5
+ *
6
+ * 1. **Broker events** — `agentSpawned`, `agentReleased`, `agentExited`,
7
+ * `agentReady`, `agentIdle`, `agentExitRequested`,
8
+ * `agentActivityChanged`, `messageReceived`, `messageSent`,
9
+ * `workerOutput`, `deliveryUpdate`, `channelSubscribed`,
10
+ * `channelUnsubscribed`. These fire when the broker emits the
11
+ * corresponding event over the WS stream.
12
+ * 2. **Call-site hooks** — `beforeAgentSpawn`, `afterAgentSpawn`,
13
+ * `beforeAgentRelease`, `afterAgentRelease`. These fire at the SDK
14
+ * call site (before / after the HTTP request), so handlers can
15
+ * observe — and, for `beforeAgentSpawn`, *modify* — the spawn input
16
+ * before it reaches the broker.
17
+ *
18
+ * The `beforeAgentSpawn` contract is the only one that supports
19
+ * mutation: handlers may return a {@link SpawnPatch} to merge into the
20
+ * input via shallow merge in registration order. All other hooks are
21
+ * observe-only — return type `void | Promise<void>`.
22
+ *
23
+ * Types from `relay.ts` are pulled in with `import type` to avoid a
24
+ * runtime circular import; TypeScript erases type-only imports so the
25
+ * runtime dependency graph stays unidirectional
26
+ * (`relay.ts` → `event-bus.ts` → no further).
27
+ */
28
+ export {};
29
+ //# sourceMappingURL=lifecycle-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-hooks.js","sourceRoot":"","sources":["../src/lifecycle-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG"}
package/dist/relay.d.ts CHANGED
@@ -10,8 +10,8 @@
10
10
  *
11
11
  * const relay = new AgentRelay();
12
12
  *
13
- * relay.onMessageReceived = (message) => console.log(message);
14
- * relay.onAgentSpawned = (agent) => console.log("spawned", agent.name);
13
+ * relay.addListener('messageReceived', (message) => console.log(message));
14
+ * relay.addListener('agentSpawned', (agent) => console.log("spawned", agent.name));
15
15
  *
16
16
  * const codex = await relay.codex.spawn();
17
17
  * const human = relay.human({ name: "System" });
@@ -23,9 +23,11 @@
23
23
  * ```
24
24
  */
25
25
  import { type AgentRelayBrokerInitArgs } from './client.js';
26
+ import { EventBus } from './event-bus.js';
27
+ import type { AgentRelayEvents } from './lifecycle-hooks.js';
26
28
  import { type PersonaTier, type ResolvedPersona } from './personas.js';
27
29
  import type { SendMessageInput, SpawnPtyInput } from './types.js';
28
- import type { AgentRuntime, BrokerEvent, BrokerStatus, MessageInjectionMode, RestartPolicy } from './protocol.js';
30
+ import type { AgentRuntime, BrokerStatus, MessageInjectionMode, RestartPolicy } from './protocol.js';
29
31
  import { type FollowLogsOptions, type LogFollowHandle, type LogsResult } from './logs.js';
30
32
  export interface Message {
31
33
  eventId: string;
@@ -154,11 +156,11 @@ export interface Agent {
154
156
  readonly channels: string[];
155
157
  /** Current lifecycle status of the agent. */
156
158
  readonly status: AgentStatus;
157
- /** Set when the agent exits. Available after `onAgentExited` fires. */
159
+ /** Set when the agent exits. Available once the `agentExited` event fires. */
158
160
  exitCode?: number;
159
- /** Set when the agent exits via signal. Available after `onAgentExited` fires. */
161
+ /** Set when the agent exits via signal. Available once the `agentExited` event fires. */
160
162
  exitSignal?: string;
161
- /** Set when the agent requests exit via /exit. Available after `onAgentExitRequested` fires. */
163
+ /** Set when the agent requests exit via /exit. Available once the `agentExitRequested` event fires. */
162
164
  exitReason?: string;
163
165
  release(reasonOrOptions?: string | ReleaseOptions): Promise<void>;
164
166
  waitForReady(timeoutMs?: number): Promise<void>;
@@ -265,29 +267,35 @@ export interface AgentRelayOptions {
265
267
  personaDirs?: string[];
266
268
  }
267
269
  export declare class AgentRelay {
268
- onMessageReceived: EventHook<Message>;
269
- onMessageSent: EventHook<Message>;
270
- onAgentSpawned: EventHook<Agent>;
271
- onAgentReleased: EventHook<Agent>;
272
- onAgentExited: EventHook<Agent>;
273
- onAgentReady: EventHook<Agent>;
274
- onWorkerOutput: EventHook<{
275
- name: string;
276
- stream: string;
277
- chunk: string;
278
- }>;
279
- onDeliveryUpdate: EventHook<BrokerEvent>;
280
- onAgentExitRequested: EventHook<{
281
- name: string;
282
- reason: string;
283
- }>;
284
- onAgentIdle: EventHook<{
285
- name: string;
286
- idleSecs: number;
287
- }>;
288
- onAgentActivityChanged: EventHook<AgentActivityChange>;
289
- onChannelSubscribed: ((agent: string, channels: string[]) => void) | null;
290
- onChannelUnsubscribed: ((agent: string, channels: string[]) => void) | null;
270
+ /**
271
+ * Multi-listener event registry. Subscribe via {@link addListener} or
272
+ * `bus.addListener` directly; emit happens internally as broker events
273
+ * arrive and at SDK call sites for the spawn / release lifecycle hooks.
274
+ *
275
+ * The bus is shared with the underlying `AgentRelayClient` (created via
276
+ * {@link ensureStarted}) so listeners registered on either object see
277
+ * the same events.
278
+ */
279
+ readonly bus: EventBus<AgentRelayEvents>;
280
+ /**
281
+ * Register a listener for a relay lifecycle event. Returns an
282
+ * unsubscribe function.
283
+ *
284
+ * Example:
285
+ * ```ts
286
+ * const off = relay.addListener('agentSpawned', (agent) => console.log(agent.name));
287
+ * // later:
288
+ * off();
289
+ * ```
290
+ *
291
+ * Replaces the pre-2.x single-callback `on*` fields. Multiple listeners
292
+ * can register for the same event; they fire sequentially in
293
+ * registration order. Async handlers are awaited. Handler exceptions
294
+ * are caught and logged; one bad listener never blocks the others.
295
+ */
296
+ addListener<K extends keyof AgentRelayEvents>(event: K, handler: (...args: AgentRelayEvents[K]) => void | Promise<void>): () => void;
297
+ /** Remove a previously-registered listener. Idempotent. */
298
+ removeListener<K extends keyof AgentRelayEvents>(event: K, handler: (...args: AgentRelayEvents[K]) => void | Promise<void>): void;
291
299
  /** The resolved Relaycast workspace API key (available after first spawn). */
292
300
  get workspaceKey(): string | undefined;
293
301
  /** Observer URL for the auto-created workspace (available after first spawn). */
@@ -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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"}
package/dist/relay.js CHANGED
@@ -10,8 +10,8 @@
10
10
  *
11
11
  * const relay = new AgentRelay();
12
12
  *
13
- * relay.onMessageReceived = (message) => console.log(message);
14
- * relay.onAgentSpawned = (agent) => console.log("spawned", agent.name);
13
+ * relay.addListener('messageReceived', (message) => console.log(message));
14
+ * relay.addListener('agentSpawned', (agent) => console.log("spawned", agent.name));
15
15
  *
16
16
  * const codex = await relay.codex.spawn();
17
17
  * const human = relay.human({ name: "System" });
@@ -27,6 +27,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
27
27
  import path from 'node:path';
28
28
  import { RelayCast } from '@relaycast/sdk';
29
29
  import { AgentRelayClient } from './client.js';
30
+ import { EventBus } from './event-bus.js';
30
31
  import { buildPersonaSpawnSpec, composePersonaTask, loadPersona, materializePersonaConfigFiles, restorePersonaConfigFiles, } from './personas.js';
31
32
  import { AgentRelayProtocolError } from './transport.js';
32
33
  import { followLogs as followLogsFromFile, getLogs as getLogsFromFile, listLoggedAgents as listLoggedAgentsFromFile, } from './logs.js';
@@ -93,20 +94,40 @@ function toWorkspaceRegistryEntry(value) {
93
94
  }
94
95
  // ── AgentRelay facade ───────────────────────────────────────────────────────
95
96
  export class AgentRelay {
96
- // Event hooks — assign a callback or null to clear.
97
- onMessageReceived = null;
98
- onMessageSent = null;
99
- onAgentSpawned = null;
100
- onAgentReleased = null;
101
- onAgentExited = null;
102
- onAgentReady = null;
103
- onWorkerOutput = null;
104
- onDeliveryUpdate = null;
105
- onAgentExitRequested = null;
106
- onAgentIdle = null;
107
- onAgentActivityChanged = null;
108
- onChannelSubscribed = null;
109
- onChannelUnsubscribed = null;
97
+ /**
98
+ * Multi-listener event registry. Subscribe via {@link addListener} or
99
+ * `bus.addListener` directly; emit happens internally as broker events
100
+ * arrive and at SDK call sites for the spawn / release lifecycle hooks.
101
+ *
102
+ * The bus is shared with the underlying `AgentRelayClient` (created via
103
+ * {@link ensureStarted}) so listeners registered on either object see
104
+ * the same events.
105
+ */
106
+ bus = new EventBus();
107
+ // ── Listener registration ───────────────────────────────────────────────
108
+ /**
109
+ * Register a listener for a relay lifecycle event. Returns an
110
+ * unsubscribe function.
111
+ *
112
+ * Example:
113
+ * ```ts
114
+ * const off = relay.addListener('agentSpawned', (agent) => console.log(agent.name));
115
+ * // later:
116
+ * off();
117
+ * ```
118
+ *
119
+ * Replaces the pre-2.x single-callback `on*` fields. Multiple listeners
120
+ * can register for the same event; they fire sequentially in
121
+ * registration order. Async handlers are awaited. Handler exceptions
122
+ * are caught and logged; one bad listener never blocks the others.
123
+ */
124
+ addListener(event, handler) {
125
+ return this.bus.addListener(event, handler);
126
+ }
127
+ /** Remove a previously-registered listener. Idempotent. */
128
+ removeListener(event, handler) {
129
+ this.bus.removeListener(event, handler);
130
+ }
110
131
  // ── Public accessors ────────────────────────────────────────────────────
111
132
  /** The resolved Relaycast workspace API key (available after first spawn). */
112
133
  get workspaceKey() {
@@ -475,7 +496,7 @@ export class AgentRelay {
475
496
  data: input.data,
476
497
  mode: input.mode,
477
498
  };
478
- this.onMessageSent?.(msg);
499
+ void this.bus.emit('messageSent', msg);
479
500
  return msg;
480
501
  },
481
502
  };
@@ -860,7 +881,7 @@ export class AgentRelay {
860
881
  return;
861
882
  }
862
883
  state.active = active;
863
- this.onAgentActivityChanged?.({
884
+ void this.bus.emit('agentActivityChanged', {
864
885
  name,
865
886
  active,
866
887
  pendingDeliveries: state.pendingDeliveries.size,
@@ -988,6 +1009,7 @@ export class AgentRelay {
988
1009
  this.startPromise = this.ensureRelaycastApiKey()
989
1010
  .then(() => AgentRelayClient.spawn({
990
1011
  ...this.clientOptions,
1012
+ eventBus: this.bus,
991
1013
  onStderr: (line) => {
992
1014
  for (const listener of this.stderrListeners) {
993
1015
  try {
@@ -1046,7 +1068,7 @@ export class AgentRelay {
1046
1068
  threadId: event.thread_id,
1047
1069
  mode: event.injection_mode ?? event.mode,
1048
1070
  };
1049
- this.onMessageReceived?.(msg);
1071
+ void this.bus.emit('messageReceived', msg);
1050
1072
  break;
1051
1073
  }
1052
1074
  case 'agent_spawned': {
@@ -1055,7 +1077,7 @@ export class AgentRelay {
1055
1077
  this.messageReadyAgents.delete(event.name);
1056
1078
  this.exitedAgents.delete(event.name);
1057
1079
  this.idleAgents.delete(event.name);
1058
- this.onAgentSpawned?.(agent);
1080
+ void this.bus.emit('agentSpawned', agent);
1059
1081
  break;
1060
1082
  }
1061
1083
  case 'agent_released': {
@@ -1065,7 +1087,7 @@ export class AgentRelay {
1065
1087
  this.readyAgents.delete(event.name);
1066
1088
  this.messageReadyAgents.delete(event.name);
1067
1089
  this.idleAgents.delete(event.name);
1068
- this.onAgentReleased?.(agent);
1090
+ void this.bus.emit('agentReleased', agent);
1069
1091
  this.knownAgents.delete(event.name);
1070
1092
  this.outputListeners.delete(event.name);
1071
1093
  this.exitResolvers.get(event.name)?.resolve('released');
@@ -1087,7 +1109,7 @@ export class AgentRelay {
1087
1109
  if (event.reason !== undefined) {
1088
1110
  agent.exitReason = event.reason;
1089
1111
  }
1090
- this.onAgentExited?.(agent);
1112
+ void this.bus.emit('agentExited', agent);
1091
1113
  this.knownAgents.delete(event.name);
1092
1114
  this.outputListeners.delete(event.name);
1093
1115
  this.exitResolvers.get(event.name)?.resolve('exited');
@@ -1099,7 +1121,7 @@ export class AgentRelay {
1099
1121
  case 'agent_exit': {
1100
1122
  const agent = this.knownAgents.get(event.name) ?? this.ensureAgentHandle(event.name, 'pty', []);
1101
1123
  agent.exitReason = event.reason;
1102
- this.onAgentExitRequested?.({ name: event.name, reason: event.reason });
1124
+ void this.bus.emit('agentExitRequested', { name: event.name, reason: event.reason });
1103
1125
  break;
1104
1126
  }
1105
1127
  case 'worker_ready': {
@@ -1107,17 +1129,17 @@ export class AgentRelay {
1107
1129
  this.readyAgents.add(event.name);
1108
1130
  this.exitedAgents.delete(event.name);
1109
1131
  this.idleAgents.delete(event.name);
1110
- this.onAgentReady?.(agent);
1132
+ void this.bus.emit('agentReady', agent);
1111
1133
  break;
1112
1134
  }
1113
1135
  case 'channel_subscribed': {
1114
1136
  this.addAgentChannels(event.name, event.channels);
1115
- this.onChannelSubscribed?.(event.name, event.channels);
1137
+ void this.bus.emit('channelSubscribed', { agent: event.name, channels: event.channels });
1116
1138
  break;
1117
1139
  }
1118
1140
  case 'channel_unsubscribed': {
1119
1141
  this.removeAgentChannels(event.name, event.channels);
1120
- this.onChannelUnsubscribed?.(event.name, event.channels);
1142
+ void this.bus.emit('channelUnsubscribed', { agent: event.name, channels: event.channels });
1121
1143
  break;
1122
1144
  }
1123
1145
  case 'delivery_queued': {
@@ -1167,7 +1189,7 @@ export class AgentRelay {
1167
1189
  case 'worker_stream': {
1168
1190
  // Agent producing output is no longer idle
1169
1191
  this.idleAgents.delete(event.name);
1170
- this.onWorkerOutput?.({
1192
+ void this.bus.emit('workerOutput', {
1171
1193
  name: event.name,
1172
1194
  stream: event.stream,
1173
1195
  chunk: event.chunk,
@@ -1179,7 +1201,7 @@ export class AgentRelay {
1179
1201
  case 'agent_idle': {
1180
1202
  this.clearAgentDeliveries(event.name, 'agent_idle');
1181
1203
  this.idleAgents.add(event.name);
1182
- this.onAgentIdle?.({
1204
+ void this.bus.emit('agentIdle', {
1183
1205
  name: event.name,
1184
1206
  idleSecs: event.idle_secs,
1185
1207
  });
@@ -1190,7 +1212,7 @@ export class AgentRelay {
1190
1212
  }
1191
1213
  }
1192
1214
  if (event.kind.startsWith('delivery_') || event.kind.startsWith('message_delivery_')) {
1193
- this.onDeliveryUpdate?.(event);
1215
+ void this.bus.emit('deliveryUpdate', event);
1194
1216
  }
1195
1217
  });
1196
1218
  }
@@ -1355,7 +1377,7 @@ export class AgentRelay {
1355
1377
  data: input.data,
1356
1378
  mode: input.mode,
1357
1379
  };
1358
- relay.onMessageSent?.(msg);
1380
+ void relay.bus.emit('messageSent', msg);
1359
1381
  return msg;
1360
1382
  },
1361
1383
  async subscribe(channelsToAdd) {