@agentdock/wire 0.0.1

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 (82) hide show
  1. package/README.md +152 -0
  2. package/dist/agentCapabilities.d.ts +30 -0
  3. package/dist/agentCapabilities.d.ts.map +1 -0
  4. package/dist/agentCapabilities.js +103 -0
  5. package/dist/agentCapabilities.js.map +1 -0
  6. package/dist/agentInstallGuide.d.ts +15 -0
  7. package/dist/agentInstallGuide.d.ts.map +1 -0
  8. package/dist/agentInstallGuide.js +63 -0
  9. package/dist/agentInstallGuide.js.map +1 -0
  10. package/dist/agentModels.d.ts +23 -0
  11. package/dist/agentModels.d.ts.map +1 -0
  12. package/dist/agentModels.js +77 -0
  13. package/dist/agentModels.js.map +1 -0
  14. package/dist/controlLevel.d.ts +12 -0
  15. package/dist/controlLevel.d.ts.map +1 -0
  16. package/dist/controlLevel.js +11 -0
  17. package/dist/controlLevel.js.map +1 -0
  18. package/dist/envelope.d.ts +582 -0
  19. package/dist/envelope.d.ts.map +1 -0
  20. package/dist/envelope.js +64 -0
  21. package/dist/envelope.js.map +1 -0
  22. package/dist/events.d.ts +441 -0
  23. package/dist/events.d.ts.map +1 -0
  24. package/dist/events.js +88 -0
  25. package/dist/events.js.map +1 -0
  26. package/dist/index.d.ts +38 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +42 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/interactionEvents.d.ts +182 -0
  31. package/dist/interactionEvents.d.ts.map +1 -0
  32. package/dist/interactionEvents.js +92 -0
  33. package/dist/interactionEvents.js.map +1 -0
  34. package/dist/legacyProtocol.d.ts +385 -0
  35. package/dist/legacyProtocol.d.ts.map +1 -0
  36. package/dist/legacyProtocol.js +30 -0
  37. package/dist/legacyProtocol.js.map +1 -0
  38. package/dist/machine.d.ts +45 -0
  39. package/dist/machine.d.ts.map +1 -0
  40. package/dist/machine.js +28 -0
  41. package/dist/machine.js.map +1 -0
  42. package/dist/messageMeta.d.ts +49 -0
  43. package/dist/messageMeta.d.ts.map +1 -0
  44. package/dist/messageMeta.js +33 -0
  45. package/dist/messageMeta.js.map +1 -0
  46. package/dist/messages.d.ts +1843 -0
  47. package/dist/messages.d.ts.map +1 -0
  48. package/dist/messages.js +35 -0
  49. package/dist/messages.js.map +1 -0
  50. package/dist/pairing.d.ts +133 -0
  51. package/dist/pairing.d.ts.map +1 -0
  52. package/dist/pairing.js +115 -0
  53. package/dist/pairing.js.map +1 -0
  54. package/dist/rpc.d.ts +340 -0
  55. package/dist/rpc.d.ts.map +1 -0
  56. package/dist/rpc.js +115 -0
  57. package/dist/rpc.js.map +1 -0
  58. package/dist/sessionResult.d.ts +40 -0
  59. package/dist/sessionResult.d.ts.map +1 -0
  60. package/dist/sessionResult.js +23 -0
  61. package/dist/sessionResult.js.map +1 -0
  62. package/dist/spawnError.d.ts +40 -0
  63. package/dist/spawnError.d.ts.map +1 -0
  64. package/dist/spawnError.js +31 -0
  65. package/dist/spawnError.js.map +1 -0
  66. package/dist/stats.d.ts +1213 -0
  67. package/dist/stats.d.ts.map +1 -0
  68. package/dist/stats.js +79 -0
  69. package/dist/stats.js.map +1 -0
  70. package/dist/sync.d.ts +721 -0
  71. package/dist/sync.d.ts.map +1 -0
  72. package/dist/sync.js +62 -0
  73. package/dist/sync.js.map +1 -0
  74. package/dist/team.d.ts +1557 -0
  75. package/dist/team.d.ts.map +1 -0
  76. package/dist/team.js +93 -0
  77. package/dist/team.js.map +1 -0
  78. package/dist/utils.d.ts +2 -0
  79. package/dist/utils.d.ts.map +1 -0
  80. package/dist/utils.js +2 -0
  81. package/dist/utils.js.map +1 -0
  82. package/package.json +40 -0
@@ -0,0 +1,582 @@
1
+ /**
2
+ * Session envelope schema — aligned with Happy sessionProtocol.
3
+ *
4
+ * Wraps a SessionEvent with metadata (id, time, role, turn, subagent).
5
+ */
6
+ import { z } from 'zod';
7
+ import type { SessionEvent } from './events.js';
8
+ export declare const SessionRoleSchema: z.ZodEnum<["user", "agent"]>;
9
+ export type SessionRole = z.infer<typeof SessionRoleSchema>;
10
+ export declare const SessionEnvelopeSchema: z.ZodEffects<z.ZodObject<{
11
+ id: z.ZodString;
12
+ time: z.ZodNumber;
13
+ role: z.ZodEnum<["user", "agent"]>;
14
+ turn: z.ZodOptional<z.ZodString>;
15
+ subagent: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
16
+ ev: z.ZodDiscriminatedUnion<"t", [z.ZodObject<{
17
+ t: z.ZodLiteral<"text">;
18
+ text: z.ZodString;
19
+ thinking: z.ZodOptional<z.ZodBoolean>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ t: "text";
22
+ text: string;
23
+ thinking?: boolean | undefined;
24
+ }, {
25
+ t: "text";
26
+ text: string;
27
+ thinking?: boolean | undefined;
28
+ }>, z.ZodObject<{
29
+ t: z.ZodLiteral<"service">;
30
+ text: z.ZodString;
31
+ }, "strip", z.ZodTypeAny, {
32
+ t: "service";
33
+ text: string;
34
+ }, {
35
+ t: "service";
36
+ text: string;
37
+ }>, z.ZodObject<{
38
+ t: z.ZodLiteral<"tool-call-start">;
39
+ call: z.ZodString;
40
+ name: z.ZodString;
41
+ title: z.ZodString;
42
+ description: z.ZodString;
43
+ args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ description: string;
46
+ t: "tool-call-start";
47
+ args: Record<string, unknown>;
48
+ call: string;
49
+ name: string;
50
+ title: string;
51
+ }, {
52
+ description: string;
53
+ t: "tool-call-start";
54
+ args: Record<string, unknown>;
55
+ call: string;
56
+ name: string;
57
+ title: string;
58
+ }>, z.ZodObject<{
59
+ t: z.ZodLiteral<"tool-call-end">;
60
+ call: z.ZodString;
61
+ result: z.ZodOptional<z.ZodString>;
62
+ error: z.ZodOptional<z.ZodBoolean>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ t: "tool-call-end";
65
+ call: string;
66
+ result?: string | undefined;
67
+ error?: boolean | undefined;
68
+ }, {
69
+ t: "tool-call-end";
70
+ call: string;
71
+ result?: string | undefined;
72
+ error?: boolean | undefined;
73
+ }>, z.ZodObject<{
74
+ t: z.ZodLiteral<"file">;
75
+ ref: z.ZodString;
76
+ name: z.ZodString;
77
+ size: z.ZodNumber;
78
+ image: z.ZodOptional<z.ZodObject<{
79
+ width: z.ZodNumber;
80
+ height: z.ZodNumber;
81
+ thumbhash: z.ZodString;
82
+ }, "strip", z.ZodTypeAny, {
83
+ width: number;
84
+ height: number;
85
+ thumbhash: string;
86
+ }, {
87
+ width: number;
88
+ height: number;
89
+ thumbhash: string;
90
+ }>>;
91
+ }, "strip", z.ZodTypeAny, {
92
+ t: "file";
93
+ name: string;
94
+ ref: string;
95
+ size: number;
96
+ image?: {
97
+ width: number;
98
+ height: number;
99
+ thumbhash: string;
100
+ } | undefined;
101
+ }, {
102
+ t: "file";
103
+ name: string;
104
+ ref: string;
105
+ size: number;
106
+ image?: {
107
+ width: number;
108
+ height: number;
109
+ thumbhash: string;
110
+ } | undefined;
111
+ }>, z.ZodObject<{
112
+ t: z.ZodLiteral<"turn-start">;
113
+ }, "strip", z.ZodTypeAny, {
114
+ t: "turn-start";
115
+ }, {
116
+ t: "turn-start";
117
+ }>, z.ZodObject<{
118
+ t: z.ZodLiteral<"turn-end">;
119
+ status: z.ZodEnum<["completed", "failed", "cancelled"]>;
120
+ usage: z.ZodOptional<z.ZodObject<{
121
+ inputTokens: z.ZodNumber;
122
+ outputTokens: z.ZodNumber;
123
+ cacheReadTokens: z.ZodOptional<z.ZodNumber>;
124
+ cacheWriteTokens: z.ZodOptional<z.ZodNumber>;
125
+ }, "strip", z.ZodTypeAny, {
126
+ inputTokens: number;
127
+ outputTokens: number;
128
+ cacheReadTokens?: number | undefined;
129
+ cacheWriteTokens?: number | undefined;
130
+ }, {
131
+ inputTokens: number;
132
+ outputTokens: number;
133
+ cacheReadTokens?: number | undefined;
134
+ cacheWriteTokens?: number | undefined;
135
+ }>>;
136
+ model: z.ZodOptional<z.ZodString>;
137
+ }, "strip", z.ZodTypeAny, {
138
+ status: "completed" | "failed" | "cancelled";
139
+ t: "turn-end";
140
+ model?: string | undefined;
141
+ usage?: {
142
+ inputTokens: number;
143
+ outputTokens: number;
144
+ cacheReadTokens?: number | undefined;
145
+ cacheWriteTokens?: number | undefined;
146
+ } | undefined;
147
+ }, {
148
+ status: "completed" | "failed" | "cancelled";
149
+ t: "turn-end";
150
+ model?: string | undefined;
151
+ usage?: {
152
+ inputTokens: number;
153
+ outputTokens: number;
154
+ cacheReadTokens?: number | undefined;
155
+ cacheWriteTokens?: number | undefined;
156
+ } | undefined;
157
+ }>, z.ZodObject<{
158
+ t: z.ZodLiteral<"start">;
159
+ title: z.ZodOptional<z.ZodString>;
160
+ }, "strip", z.ZodTypeAny, {
161
+ t: "start";
162
+ title?: string | undefined;
163
+ }, {
164
+ t: "start";
165
+ title?: string | undefined;
166
+ }>, z.ZodObject<{
167
+ t: z.ZodLiteral<"stop">;
168
+ }, "strip", z.ZodTypeAny, {
169
+ t: "stop";
170
+ }, {
171
+ t: "stop";
172
+ }>, z.ZodObject<{
173
+ t: z.ZodLiteral<"question">;
174
+ requestId: z.ZodString;
175
+ text: z.ZodString;
176
+ questionType: z.ZodDefault<z.ZodEnum<["free-text", "yes-no", "single-select", "multi-select"]>>;
177
+ header: z.ZodOptional<z.ZodString>;
178
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
179
+ label: z.ZodString;
180
+ description: z.ZodDefault<z.ZodString>;
181
+ }, "strip", z.ZodTypeAny, {
182
+ label: string;
183
+ description: string;
184
+ }, {
185
+ label: string;
186
+ description?: string | undefined;
187
+ }>, "many">>;
188
+ multiSelect: z.ZodOptional<z.ZodBoolean>;
189
+ }, "strip", z.ZodTypeAny, {
190
+ t: "question";
191
+ requestId: string;
192
+ text: string;
193
+ questionType: "free-text" | "yes-no" | "single-select" | "multi-select";
194
+ options?: {
195
+ label: string;
196
+ description: string;
197
+ }[] | undefined;
198
+ header?: string | undefined;
199
+ multiSelect?: boolean | undefined;
200
+ }, {
201
+ t: "question";
202
+ requestId: string;
203
+ text: string;
204
+ options?: {
205
+ label: string;
206
+ description?: string | undefined;
207
+ }[] | undefined;
208
+ questionType?: "free-text" | "yes-no" | "single-select" | "multi-select" | undefined;
209
+ header?: string | undefined;
210
+ multiSelect?: boolean | undefined;
211
+ }>, z.ZodObject<{
212
+ t: z.ZodLiteral<"permission-request">;
213
+ requestId: z.ZodString;
214
+ toolName: z.ZodString;
215
+ toolCallId: z.ZodString;
216
+ args: z.ZodRecord<z.ZodString, z.ZodUnknown>;
217
+ description: z.ZodDefault<z.ZodString>;
218
+ }, "strip", z.ZodTypeAny, {
219
+ description: string;
220
+ t: "permission-request";
221
+ requestId: string;
222
+ toolName: string;
223
+ toolCallId: string;
224
+ args: Record<string, unknown>;
225
+ }, {
226
+ t: "permission-request";
227
+ requestId: string;
228
+ toolName: string;
229
+ toolCallId: string;
230
+ args: Record<string, unknown>;
231
+ description?: string | undefined;
232
+ }>, z.ZodObject<{
233
+ t: z.ZodLiteral<"answer">;
234
+ requestId: z.ZodString;
235
+ text: z.ZodString;
236
+ }, "strip", z.ZodTypeAny, {
237
+ t: "answer";
238
+ requestId: string;
239
+ text: string;
240
+ }, {
241
+ t: "answer";
242
+ requestId: string;
243
+ text: string;
244
+ }>, z.ZodObject<{
245
+ t: z.ZodLiteral<"permission-resolved">;
246
+ requestId: z.ZodString;
247
+ action: z.ZodEnum<["approve", "approve-all-edits", "approve-tool", "deny"]>;
248
+ }, "strip", z.ZodTypeAny, {
249
+ t: "permission-resolved";
250
+ requestId: string;
251
+ action: "approve" | "approve-all-edits" | "approve-tool" | "deny";
252
+ }, {
253
+ t: "permission-resolved";
254
+ requestId: string;
255
+ action: "approve" | "approve-all-edits" | "approve-tool" | "deny";
256
+ }>]>;
257
+ }, "strip", z.ZodTypeAny, {
258
+ id: string;
259
+ time: number;
260
+ role: "user" | "agent";
261
+ ev: {
262
+ t: "question";
263
+ requestId: string;
264
+ text: string;
265
+ questionType: "free-text" | "yes-no" | "single-select" | "multi-select";
266
+ options?: {
267
+ label: string;
268
+ description: string;
269
+ }[] | undefined;
270
+ header?: string | undefined;
271
+ multiSelect?: boolean | undefined;
272
+ } | {
273
+ description: string;
274
+ t: "permission-request";
275
+ requestId: string;
276
+ toolName: string;
277
+ toolCallId: string;
278
+ args: Record<string, unknown>;
279
+ } | {
280
+ t: "answer";
281
+ requestId: string;
282
+ text: string;
283
+ } | {
284
+ t: "permission-resolved";
285
+ requestId: string;
286
+ action: "approve" | "approve-all-edits" | "approve-tool" | "deny";
287
+ } | {
288
+ t: "text";
289
+ text: string;
290
+ thinking?: boolean | undefined;
291
+ } | {
292
+ t: "service";
293
+ text: string;
294
+ } | {
295
+ description: string;
296
+ t: "tool-call-start";
297
+ args: Record<string, unknown>;
298
+ call: string;
299
+ name: string;
300
+ title: string;
301
+ } | {
302
+ t: "tool-call-end";
303
+ call: string;
304
+ result?: string | undefined;
305
+ error?: boolean | undefined;
306
+ } | {
307
+ t: "file";
308
+ name: string;
309
+ ref: string;
310
+ size: number;
311
+ image?: {
312
+ width: number;
313
+ height: number;
314
+ thumbhash: string;
315
+ } | undefined;
316
+ } | {
317
+ t: "turn-start";
318
+ } | {
319
+ status: "completed" | "failed" | "cancelled";
320
+ t: "turn-end";
321
+ model?: string | undefined;
322
+ usage?: {
323
+ inputTokens: number;
324
+ outputTokens: number;
325
+ cacheReadTokens?: number | undefined;
326
+ cacheWriteTokens?: number | undefined;
327
+ } | undefined;
328
+ } | {
329
+ t: "start";
330
+ title?: string | undefined;
331
+ } | {
332
+ t: "stop";
333
+ };
334
+ turn?: string | undefined;
335
+ subagent?: string | undefined;
336
+ }, {
337
+ id: string;
338
+ time: number;
339
+ role: "user" | "agent";
340
+ ev: {
341
+ t: "question";
342
+ requestId: string;
343
+ text: string;
344
+ options?: {
345
+ label: string;
346
+ description?: string | undefined;
347
+ }[] | undefined;
348
+ questionType?: "free-text" | "yes-no" | "single-select" | "multi-select" | undefined;
349
+ header?: string | undefined;
350
+ multiSelect?: boolean | undefined;
351
+ } | {
352
+ t: "permission-request";
353
+ requestId: string;
354
+ toolName: string;
355
+ toolCallId: string;
356
+ args: Record<string, unknown>;
357
+ description?: string | undefined;
358
+ } | {
359
+ t: "answer";
360
+ requestId: string;
361
+ text: string;
362
+ } | {
363
+ t: "permission-resolved";
364
+ requestId: string;
365
+ action: "approve" | "approve-all-edits" | "approve-tool" | "deny";
366
+ } | {
367
+ t: "text";
368
+ text: string;
369
+ thinking?: boolean | undefined;
370
+ } | {
371
+ t: "service";
372
+ text: string;
373
+ } | {
374
+ description: string;
375
+ t: "tool-call-start";
376
+ args: Record<string, unknown>;
377
+ call: string;
378
+ name: string;
379
+ title: string;
380
+ } | {
381
+ t: "tool-call-end";
382
+ call: string;
383
+ result?: string | undefined;
384
+ error?: boolean | undefined;
385
+ } | {
386
+ t: "file";
387
+ name: string;
388
+ ref: string;
389
+ size: number;
390
+ image?: {
391
+ width: number;
392
+ height: number;
393
+ thumbhash: string;
394
+ } | undefined;
395
+ } | {
396
+ t: "turn-start";
397
+ } | {
398
+ status: "completed" | "failed" | "cancelled";
399
+ t: "turn-end";
400
+ model?: string | undefined;
401
+ usage?: {
402
+ inputTokens: number;
403
+ outputTokens: number;
404
+ cacheReadTokens?: number | undefined;
405
+ cacheWriteTokens?: number | undefined;
406
+ } | undefined;
407
+ } | {
408
+ t: "start";
409
+ title?: string | undefined;
410
+ } | {
411
+ t: "stop";
412
+ };
413
+ turn?: string | undefined;
414
+ subagent?: string | undefined;
415
+ }>, {
416
+ id: string;
417
+ time: number;
418
+ role: "user" | "agent";
419
+ ev: {
420
+ t: "question";
421
+ requestId: string;
422
+ text: string;
423
+ questionType: "free-text" | "yes-no" | "single-select" | "multi-select";
424
+ options?: {
425
+ label: string;
426
+ description: string;
427
+ }[] | undefined;
428
+ header?: string | undefined;
429
+ multiSelect?: boolean | undefined;
430
+ } | {
431
+ description: string;
432
+ t: "permission-request";
433
+ requestId: string;
434
+ toolName: string;
435
+ toolCallId: string;
436
+ args: Record<string, unknown>;
437
+ } | {
438
+ t: "answer";
439
+ requestId: string;
440
+ text: string;
441
+ } | {
442
+ t: "permission-resolved";
443
+ requestId: string;
444
+ action: "approve" | "approve-all-edits" | "approve-tool" | "deny";
445
+ } | {
446
+ t: "text";
447
+ text: string;
448
+ thinking?: boolean | undefined;
449
+ } | {
450
+ t: "service";
451
+ text: string;
452
+ } | {
453
+ description: string;
454
+ t: "tool-call-start";
455
+ args: Record<string, unknown>;
456
+ call: string;
457
+ name: string;
458
+ title: string;
459
+ } | {
460
+ t: "tool-call-end";
461
+ call: string;
462
+ result?: string | undefined;
463
+ error?: boolean | undefined;
464
+ } | {
465
+ t: "file";
466
+ name: string;
467
+ ref: string;
468
+ size: number;
469
+ image?: {
470
+ width: number;
471
+ height: number;
472
+ thumbhash: string;
473
+ } | undefined;
474
+ } | {
475
+ t: "turn-start";
476
+ } | {
477
+ status: "completed" | "failed" | "cancelled";
478
+ t: "turn-end";
479
+ model?: string | undefined;
480
+ usage?: {
481
+ inputTokens: number;
482
+ outputTokens: number;
483
+ cacheReadTokens?: number | undefined;
484
+ cacheWriteTokens?: number | undefined;
485
+ } | undefined;
486
+ } | {
487
+ t: "start";
488
+ title?: string | undefined;
489
+ } | {
490
+ t: "stop";
491
+ };
492
+ turn?: string | undefined;
493
+ subagent?: string | undefined;
494
+ }, {
495
+ id: string;
496
+ time: number;
497
+ role: "user" | "agent";
498
+ ev: {
499
+ t: "question";
500
+ requestId: string;
501
+ text: string;
502
+ options?: {
503
+ label: string;
504
+ description?: string | undefined;
505
+ }[] | undefined;
506
+ questionType?: "free-text" | "yes-no" | "single-select" | "multi-select" | undefined;
507
+ header?: string | undefined;
508
+ multiSelect?: boolean | undefined;
509
+ } | {
510
+ t: "permission-request";
511
+ requestId: string;
512
+ toolName: string;
513
+ toolCallId: string;
514
+ args: Record<string, unknown>;
515
+ description?: string | undefined;
516
+ } | {
517
+ t: "answer";
518
+ requestId: string;
519
+ text: string;
520
+ } | {
521
+ t: "permission-resolved";
522
+ requestId: string;
523
+ action: "approve" | "approve-all-edits" | "approve-tool" | "deny";
524
+ } | {
525
+ t: "text";
526
+ text: string;
527
+ thinking?: boolean | undefined;
528
+ } | {
529
+ t: "service";
530
+ text: string;
531
+ } | {
532
+ description: string;
533
+ t: "tool-call-start";
534
+ args: Record<string, unknown>;
535
+ call: string;
536
+ name: string;
537
+ title: string;
538
+ } | {
539
+ t: "tool-call-end";
540
+ call: string;
541
+ result?: string | undefined;
542
+ error?: boolean | undefined;
543
+ } | {
544
+ t: "file";
545
+ name: string;
546
+ ref: string;
547
+ size: number;
548
+ image?: {
549
+ width: number;
550
+ height: number;
551
+ thumbhash: string;
552
+ } | undefined;
553
+ } | {
554
+ t: "turn-start";
555
+ } | {
556
+ status: "completed" | "failed" | "cancelled";
557
+ t: "turn-end";
558
+ model?: string | undefined;
559
+ usage?: {
560
+ inputTokens: number;
561
+ outputTokens: number;
562
+ cacheReadTokens?: number | undefined;
563
+ cacheWriteTokens?: number | undefined;
564
+ } | undefined;
565
+ } | {
566
+ t: "start";
567
+ title?: string | undefined;
568
+ } | {
569
+ t: "stop";
570
+ };
571
+ turn?: string | undefined;
572
+ subagent?: string | undefined;
573
+ }>;
574
+ export type SessionEnvelope = z.infer<typeof SessionEnvelopeSchema>;
575
+ export interface CreateEnvelopeOptions {
576
+ readonly id?: string;
577
+ readonly time?: number;
578
+ readonly turn?: string;
579
+ readonly subagent?: string;
580
+ }
581
+ export declare function createEnvelope(role: SessionRole, ev: SessionEvent, opts?: CreateEnvelopeOptions): SessionEnvelope;
582
+ //# sourceMappingURL=envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,iBAAiB,8BAA4B,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4C9B,CAAC;AAEL,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,YAAY,EAChB,IAAI,GAAE,qBAA0B,GAC/B,eAAe,CASjB"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Session envelope schema — aligned with Happy sessionProtocol.
3
+ *
4
+ * Wraps a SessionEvent with metadata (id, time, role, turn, subagent).
5
+ */
6
+ import { z } from 'zod';
7
+ import { isCuid } from '@paralleldrive/cuid2';
8
+ import { createId } from './utils.js';
9
+ import { SessionEventSchema } from './events.js';
10
+ export const SessionRoleSchema = z.enum(['user', 'agent']);
11
+ export const SessionEnvelopeSchema = z
12
+ .object({
13
+ id: z.string(),
14
+ time: z.number(),
15
+ role: SessionRoleSchema,
16
+ turn: z.string().optional(),
17
+ subagent: z
18
+ .string()
19
+ .refine((value) => isCuid(value), { message: 'subagent must be a cuid2 value' })
20
+ .optional(),
21
+ ev: SessionEventSchema,
22
+ })
23
+ .superRefine((envelope, ctx) => {
24
+ if (envelope.ev.t === 'service' && envelope.role !== 'agent') {
25
+ ctx.addIssue({
26
+ code: z.ZodIssueCode.custom,
27
+ message: 'service events must use role "agent"',
28
+ path: ['role'],
29
+ });
30
+ }
31
+ if ((envelope.ev.t === 'start' || envelope.ev.t === 'stop') && envelope.role !== 'agent') {
32
+ ctx.addIssue({
33
+ code: z.ZodIssueCode.custom,
34
+ message: `${envelope.ev.t} events must use role "agent"`,
35
+ path: ['role'],
36
+ });
37
+ }
38
+ if ((envelope.ev.t === 'question' || envelope.ev.t === 'permission-request') &&
39
+ envelope.role !== 'agent') {
40
+ ctx.addIssue({
41
+ code: z.ZodIssueCode.custom,
42
+ message: `${envelope.ev.t} events must use role "agent"`,
43
+ path: ['role'],
44
+ });
45
+ }
46
+ if (envelope.ev.t === 'answer' && envelope.role !== 'user') {
47
+ ctx.addIssue({
48
+ code: z.ZodIssueCode.custom,
49
+ message: 'answer events must use role "user"',
50
+ path: ['role'],
51
+ });
52
+ }
53
+ });
54
+ export function createEnvelope(role, ev, opts = {}) {
55
+ return SessionEnvelopeSchema.parse({
56
+ id: opts.id ?? createId(),
57
+ time: opts.time ?? Date.now(),
58
+ role,
59
+ ...(opts.turn ? { turn: opts.turn } : {}),
60
+ ...(opts.subagent ? { subagent: opts.subagent } : {}),
61
+ ev,
62
+ });
63
+ }
64
+ //# sourceMappingURL=envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"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"}