@agent-relay/wrapper 2.0.32 → 2.0.34

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.
@@ -0,0 +1,489 @@
1
+ /**
2
+ * Typed Event Definitions for Agent Relay Wrapper
3
+ *
4
+ * Inspired by opencode's BusEvent pattern, this provides type-safe event
5
+ * definitions with Zod schema validation. Events can be used for:
6
+ * - Wrapper internal notifications
7
+ * - SDK client subscriptions
8
+ * - OpenAPI spec generation
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { RelayEvent, emitEvent, onEvent } from './wrapper-events.js';
13
+ *
14
+ * // Subscribe to events
15
+ * onEvent(RelayEvent.AgentConnected, (event) => {
16
+ * console.log(`Agent ${event.properties.agentName} connected`);
17
+ * });
18
+ *
19
+ * // Emit events
20
+ * emitEvent(RelayEvent.AgentConnected, {
21
+ * agentName: 'MyAgent',
22
+ * connectionId: 'abc123',
23
+ * });
24
+ * ```
25
+ */
26
+ import { z } from 'zod';
27
+ import { EventEmitter } from 'node:events';
28
+ /**
29
+ * Event definition with type and schema
30
+ */
31
+ export interface EventDefinition<Type extends string = string, Schema extends z.ZodType = z.ZodType> {
32
+ type: Type;
33
+ schema: Schema;
34
+ }
35
+ /**
36
+ * Define a typed event with Zod schema validation
37
+ */
38
+ export declare function defineEvent<Type extends string, Schema extends z.ZodType>(type: Type, schema: Schema): EventDefinition<Type, Schema>;
39
+ /**
40
+ * Infer the properties type from an event definition
41
+ */
42
+ export type EventProperties<E extends EventDefinition> = z.infer<E['schema']>;
43
+ /**
44
+ * Event payload with type and properties
45
+ */
46
+ export interface EventPayload<E extends EventDefinition = EventDefinition> {
47
+ type: E['type'];
48
+ properties: EventProperties<E>;
49
+ timestamp: number;
50
+ }
51
+ export declare namespace RelayEvent {
52
+ const AgentConnected: EventDefinition<"daemon.agent.connected", z.ZodObject<{
53
+ agentName: z.ZodString;
54
+ connectionId: z.ZodString;
55
+ cli: z.ZodOptional<z.ZodString>;
56
+ task: z.ZodOptional<z.ZodString>;
57
+ workingDirectory: z.ZodOptional<z.ZodString>;
58
+ }, "strip", z.ZodTypeAny, {
59
+ agentName: string;
60
+ connectionId: string;
61
+ cli?: string | undefined;
62
+ task?: string | undefined;
63
+ workingDirectory?: string | undefined;
64
+ }, {
65
+ agentName: string;
66
+ connectionId: string;
67
+ cli?: string | undefined;
68
+ task?: string | undefined;
69
+ workingDirectory?: string | undefined;
70
+ }>>;
71
+ const AgentDisconnected: EventDefinition<"daemon.agent.disconnected", z.ZodObject<{
72
+ agentName: z.ZodString;
73
+ connectionId: z.ZodString;
74
+ reason: z.ZodOptional<z.ZodEnum<["clean", "error", "timeout", "replaced"]>>;
75
+ }, "strip", z.ZodTypeAny, {
76
+ agentName: string;
77
+ connectionId: string;
78
+ reason?: "error" | "timeout" | "clean" | "replaced" | undefined;
79
+ }, {
80
+ agentName: string;
81
+ connectionId: string;
82
+ reason?: "error" | "timeout" | "clean" | "replaced" | undefined;
83
+ }>>;
84
+ const AgentSpawned: EventDefinition<"daemon.agent.spawned", z.ZodObject<{
85
+ agentName: z.ZodString;
86
+ parentAgent: z.ZodString;
87
+ cli: z.ZodString;
88
+ task: z.ZodString;
89
+ }, "strip", z.ZodTypeAny, {
90
+ agentName: string;
91
+ cli: string;
92
+ task: string;
93
+ parentAgent: string;
94
+ }, {
95
+ agentName: string;
96
+ cli: string;
97
+ task: string;
98
+ parentAgent: string;
99
+ }>>;
100
+ const AgentReleased: EventDefinition<"daemon.agent.released", z.ZodObject<{
101
+ agentName: z.ZodString;
102
+ releasedBy: z.ZodString;
103
+ }, "strip", z.ZodTypeAny, {
104
+ agentName: string;
105
+ releasedBy: string;
106
+ }, {
107
+ agentName: string;
108
+ releasedBy: string;
109
+ }>>;
110
+ const MessageRouted: EventDefinition<"daemon.message.routed", z.ZodObject<{
111
+ messageId: z.ZodString;
112
+ from: z.ZodString;
113
+ to: z.ZodString;
114
+ kind: z.ZodOptional<z.ZodString>;
115
+ bodyPreview: z.ZodOptional<z.ZodString>;
116
+ }, "strip", z.ZodTypeAny, {
117
+ to: string;
118
+ from: string;
119
+ messageId: string;
120
+ kind?: string | undefined;
121
+ bodyPreview?: string | undefined;
122
+ }, {
123
+ to: string;
124
+ from: string;
125
+ messageId: string;
126
+ kind?: string | undefined;
127
+ bodyPreview?: string | undefined;
128
+ }>>;
129
+ const MessageDelivered: EventDefinition<"daemon.message.delivered", z.ZodObject<{
130
+ messageId: z.ZodString;
131
+ to: z.ZodString;
132
+ deliverySeq: z.ZodNumber;
133
+ }, "strip", z.ZodTypeAny, {
134
+ to: string;
135
+ messageId: string;
136
+ deliverySeq: number;
137
+ }, {
138
+ to: string;
139
+ messageId: string;
140
+ deliverySeq: number;
141
+ }>>;
142
+ const MessageFailed: EventDefinition<"daemon.message.failed", z.ZodObject<{
143
+ messageId: z.ZodString;
144
+ to: z.ZodString;
145
+ error: z.ZodString;
146
+ }, "strip", z.ZodTypeAny, {
147
+ error: string;
148
+ to: string;
149
+ messageId: string;
150
+ }, {
151
+ error: string;
152
+ to: string;
153
+ messageId: string;
154
+ }>>;
155
+ const ChannelJoined: EventDefinition<"daemon.channel.joined", z.ZodObject<{
156
+ channel: z.ZodString;
157
+ member: z.ZodString;
158
+ }, "strip", z.ZodTypeAny, {
159
+ channel: string;
160
+ member: string;
161
+ }, {
162
+ channel: string;
163
+ member: string;
164
+ }>>;
165
+ const ChannelLeft: EventDefinition<"daemon.channel.left", z.ZodObject<{
166
+ channel: z.ZodString;
167
+ member: z.ZodString;
168
+ }, "strip", z.ZodTypeAny, {
169
+ channel: string;
170
+ member: string;
171
+ }, {
172
+ channel: string;
173
+ member: string;
174
+ }>>;
175
+ const ChannelMessage: EventDefinition<"daemon.channel.message", z.ZodObject<{
176
+ channel: z.ZodString;
177
+ from: z.ZodString;
178
+ bodyPreview: z.ZodOptional<z.ZodString>;
179
+ }, "strip", z.ZodTypeAny, {
180
+ from: string;
181
+ channel: string;
182
+ bodyPreview?: string | undefined;
183
+ }, {
184
+ from: string;
185
+ channel: string;
186
+ bodyPreview?: string | undefined;
187
+ }>>;
188
+ const AgentProcessingStarted: EventDefinition<"daemon.agent.processing.started", z.ZodObject<{
189
+ agentName: z.ZodString;
190
+ messageId: z.ZodString;
191
+ }, "strip", z.ZodTypeAny, {
192
+ agentName: string;
193
+ messageId: string;
194
+ }, {
195
+ agentName: string;
196
+ messageId: string;
197
+ }>>;
198
+ const AgentProcessingEnded: EventDefinition<"daemon.agent.processing.ended", z.ZodObject<{
199
+ agentName: z.ZodString;
200
+ durationMs: z.ZodOptional<z.ZodNumber>;
201
+ }, "strip", z.ZodTypeAny, {
202
+ agentName: string;
203
+ durationMs?: number | undefined;
204
+ }, {
205
+ agentName: string;
206
+ durationMs?: number | undefined;
207
+ }>>;
208
+ const ShadowBound: EventDefinition<"daemon.shadow.bound", z.ZodObject<{
209
+ shadowAgent: z.ZodString;
210
+ primaryAgent: z.ZodString;
211
+ speakOn: z.ZodArray<z.ZodString, "many">;
212
+ }, "strip", z.ZodTypeAny, {
213
+ shadowAgent: string;
214
+ primaryAgent: string;
215
+ speakOn: string[];
216
+ }, {
217
+ shadowAgent: string;
218
+ primaryAgent: string;
219
+ speakOn: string[];
220
+ }>>;
221
+ const ShadowUnbound: EventDefinition<"daemon.shadow.unbound", z.ZodObject<{
222
+ shadowAgent: z.ZodString;
223
+ primaryAgent: z.ZodString;
224
+ }, "strip", z.ZodTypeAny, {
225
+ shadowAgent: string;
226
+ primaryAgent: string;
227
+ }, {
228
+ shadowAgent: string;
229
+ primaryAgent: string;
230
+ }>>;
231
+ const DaemonStarted: EventDefinition<"daemon.system.started", z.ZodObject<{
232
+ socketPath: z.ZodString;
233
+ version: z.ZodOptional<z.ZodString>;
234
+ }, "strip", z.ZodTypeAny, {
235
+ socketPath: string;
236
+ version?: string | undefined;
237
+ }, {
238
+ socketPath: string;
239
+ version?: string | undefined;
240
+ }>>;
241
+ const DaemonStopped: EventDefinition<"daemon.system.stopped", z.ZodObject<{
242
+ reason: z.ZodOptional<z.ZodString>;
243
+ }, "strip", z.ZodTypeAny, {
244
+ reason?: string | undefined;
245
+ }, {
246
+ reason?: string | undefined;
247
+ }>>;
248
+ const RateLimitExceeded: EventDefinition<"daemon.system.rate_limit_exceeded", z.ZodObject<{
249
+ agentName: z.ZodString;
250
+ }, "strip", z.ZodTypeAny, {
251
+ agentName: string;
252
+ }, {
253
+ agentName: string;
254
+ }>>;
255
+ const all: readonly [EventDefinition<"daemon.agent.connected", z.ZodObject<{
256
+ agentName: z.ZodString;
257
+ connectionId: z.ZodString;
258
+ cli: z.ZodOptional<z.ZodString>;
259
+ task: z.ZodOptional<z.ZodString>;
260
+ workingDirectory: z.ZodOptional<z.ZodString>;
261
+ }, "strip", z.ZodTypeAny, {
262
+ agentName: string;
263
+ connectionId: string;
264
+ cli?: string | undefined;
265
+ task?: string | undefined;
266
+ workingDirectory?: string | undefined;
267
+ }, {
268
+ agentName: string;
269
+ connectionId: string;
270
+ cli?: string | undefined;
271
+ task?: string | undefined;
272
+ workingDirectory?: string | undefined;
273
+ }>>, EventDefinition<"daemon.agent.disconnected", z.ZodObject<{
274
+ agentName: z.ZodString;
275
+ connectionId: z.ZodString;
276
+ reason: z.ZodOptional<z.ZodEnum<["clean", "error", "timeout", "replaced"]>>;
277
+ }, "strip", z.ZodTypeAny, {
278
+ agentName: string;
279
+ connectionId: string;
280
+ reason?: "error" | "timeout" | "clean" | "replaced" | undefined;
281
+ }, {
282
+ agentName: string;
283
+ connectionId: string;
284
+ reason?: "error" | "timeout" | "clean" | "replaced" | undefined;
285
+ }>>, EventDefinition<"daemon.agent.spawned", z.ZodObject<{
286
+ agentName: z.ZodString;
287
+ parentAgent: z.ZodString;
288
+ cli: z.ZodString;
289
+ task: z.ZodString;
290
+ }, "strip", z.ZodTypeAny, {
291
+ agentName: string;
292
+ cli: string;
293
+ task: string;
294
+ parentAgent: string;
295
+ }, {
296
+ agentName: string;
297
+ cli: string;
298
+ task: string;
299
+ parentAgent: string;
300
+ }>>, EventDefinition<"daemon.agent.released", z.ZodObject<{
301
+ agentName: z.ZodString;
302
+ releasedBy: z.ZodString;
303
+ }, "strip", z.ZodTypeAny, {
304
+ agentName: string;
305
+ releasedBy: string;
306
+ }, {
307
+ agentName: string;
308
+ releasedBy: string;
309
+ }>>, EventDefinition<"daemon.message.routed", z.ZodObject<{
310
+ messageId: z.ZodString;
311
+ from: z.ZodString;
312
+ to: z.ZodString;
313
+ kind: z.ZodOptional<z.ZodString>;
314
+ bodyPreview: z.ZodOptional<z.ZodString>;
315
+ }, "strip", z.ZodTypeAny, {
316
+ to: string;
317
+ from: string;
318
+ messageId: string;
319
+ kind?: string | undefined;
320
+ bodyPreview?: string | undefined;
321
+ }, {
322
+ to: string;
323
+ from: string;
324
+ messageId: string;
325
+ kind?: string | undefined;
326
+ bodyPreview?: string | undefined;
327
+ }>>, EventDefinition<"daemon.message.delivered", z.ZodObject<{
328
+ messageId: z.ZodString;
329
+ to: z.ZodString;
330
+ deliverySeq: z.ZodNumber;
331
+ }, "strip", z.ZodTypeAny, {
332
+ to: string;
333
+ messageId: string;
334
+ deliverySeq: number;
335
+ }, {
336
+ to: string;
337
+ messageId: string;
338
+ deliverySeq: number;
339
+ }>>, EventDefinition<"daemon.message.failed", z.ZodObject<{
340
+ messageId: z.ZodString;
341
+ to: z.ZodString;
342
+ error: z.ZodString;
343
+ }, "strip", z.ZodTypeAny, {
344
+ error: string;
345
+ to: string;
346
+ messageId: string;
347
+ }, {
348
+ error: string;
349
+ to: string;
350
+ messageId: string;
351
+ }>>, EventDefinition<"daemon.channel.joined", z.ZodObject<{
352
+ channel: z.ZodString;
353
+ member: z.ZodString;
354
+ }, "strip", z.ZodTypeAny, {
355
+ channel: string;
356
+ member: string;
357
+ }, {
358
+ channel: string;
359
+ member: string;
360
+ }>>, EventDefinition<"daemon.channel.left", z.ZodObject<{
361
+ channel: z.ZodString;
362
+ member: z.ZodString;
363
+ }, "strip", z.ZodTypeAny, {
364
+ channel: string;
365
+ member: string;
366
+ }, {
367
+ channel: string;
368
+ member: string;
369
+ }>>, EventDefinition<"daemon.channel.message", z.ZodObject<{
370
+ channel: z.ZodString;
371
+ from: z.ZodString;
372
+ bodyPreview: z.ZodOptional<z.ZodString>;
373
+ }, "strip", z.ZodTypeAny, {
374
+ from: string;
375
+ channel: string;
376
+ bodyPreview?: string | undefined;
377
+ }, {
378
+ from: string;
379
+ channel: string;
380
+ bodyPreview?: string | undefined;
381
+ }>>, EventDefinition<"daemon.agent.processing.started", z.ZodObject<{
382
+ agentName: z.ZodString;
383
+ messageId: z.ZodString;
384
+ }, "strip", z.ZodTypeAny, {
385
+ agentName: string;
386
+ messageId: string;
387
+ }, {
388
+ agentName: string;
389
+ messageId: string;
390
+ }>>, EventDefinition<"daemon.agent.processing.ended", z.ZodObject<{
391
+ agentName: z.ZodString;
392
+ durationMs: z.ZodOptional<z.ZodNumber>;
393
+ }, "strip", z.ZodTypeAny, {
394
+ agentName: string;
395
+ durationMs?: number | undefined;
396
+ }, {
397
+ agentName: string;
398
+ durationMs?: number | undefined;
399
+ }>>, EventDefinition<"daemon.shadow.bound", z.ZodObject<{
400
+ shadowAgent: z.ZodString;
401
+ primaryAgent: z.ZodString;
402
+ speakOn: z.ZodArray<z.ZodString, "many">;
403
+ }, "strip", z.ZodTypeAny, {
404
+ shadowAgent: string;
405
+ primaryAgent: string;
406
+ speakOn: string[];
407
+ }, {
408
+ shadowAgent: string;
409
+ primaryAgent: string;
410
+ speakOn: string[];
411
+ }>>, EventDefinition<"daemon.shadow.unbound", z.ZodObject<{
412
+ shadowAgent: z.ZodString;
413
+ primaryAgent: z.ZodString;
414
+ }, "strip", z.ZodTypeAny, {
415
+ shadowAgent: string;
416
+ primaryAgent: string;
417
+ }, {
418
+ shadowAgent: string;
419
+ primaryAgent: string;
420
+ }>>, EventDefinition<"daemon.system.started", z.ZodObject<{
421
+ socketPath: z.ZodString;
422
+ version: z.ZodOptional<z.ZodString>;
423
+ }, "strip", z.ZodTypeAny, {
424
+ socketPath: string;
425
+ version?: string | undefined;
426
+ }, {
427
+ socketPath: string;
428
+ version?: string | undefined;
429
+ }>>, EventDefinition<"daemon.system.stopped", z.ZodObject<{
430
+ reason: z.ZodOptional<z.ZodString>;
431
+ }, "strip", z.ZodTypeAny, {
432
+ reason?: string | undefined;
433
+ }, {
434
+ reason?: string | undefined;
435
+ }>>, EventDefinition<"daemon.system.rate_limit_exceeded", z.ZodObject<{
436
+ agentName: z.ZodString;
437
+ }, "strip", z.ZodTypeAny, {
438
+ agentName: string;
439
+ }, {
440
+ agentName: string;
441
+ }>>];
442
+ }
443
+ /**
444
+ * Type-safe event bus for daemon events
445
+ */
446
+ declare class RelayEventBus extends EventEmitter {
447
+ private static instance;
448
+ private constructor();
449
+ static getInstance(): RelayEventBus;
450
+ /**
451
+ * Emit a typed event
452
+ */
453
+ emitEvent<E extends EventDefinition>(definition: E, properties: EventProperties<E>): void;
454
+ /**
455
+ * Subscribe to a typed event
456
+ */
457
+ onEvent<E extends EventDefinition>(definition: E, callback: (event: EventPayload<E>) => void): () => void;
458
+ /**
459
+ * Subscribe to all events (wildcard)
460
+ */
461
+ onAnyEvent(callback: (event: EventPayload) => void): () => void;
462
+ /**
463
+ * Subscribe to an event once
464
+ */
465
+ onceEvent<E extends EventDefinition>(definition: E, callback: (event: EventPayload<E>) => void): void;
466
+ }
467
+ /**
468
+ * Global daemon event bus instance
469
+ */
470
+ export declare const relayEventBus: RelayEventBus;
471
+ /**
472
+ * Emit a daemon event
473
+ */
474
+ export declare function emitEvent<E extends EventDefinition>(definition: E, properties: EventProperties<E>): void;
475
+ /**
476
+ * Subscribe to a daemon event
477
+ */
478
+ export declare function onEvent<E extends EventDefinition>(definition: E, callback: (event: EventPayload<E>) => void): () => void;
479
+ /**
480
+ * Subscribe to all daemon events
481
+ */
482
+ export declare function onAnyEvent(callback: (event: EventPayload) => void): () => void;
483
+ /**
484
+ * Generate OpenAPI-compatible schema for all daemon events
485
+ * This can be used to auto-generate SDK types
486
+ */
487
+ export declare function generateEventSchemas(): Record<string, unknown>;
488
+ export {};
489
+ //# sourceMappingURL=wrapper-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapper-events.d.ts","sourceRoot":"","sources":["../src/wrapper-events.ts"],"names":[],"mappings":"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"}