@proxyhuman/protocol 0.2.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.
@@ -0,0 +1,3601 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * @proxyhuman/protocol — wire-format contract for the ProxyHuman platform.
5
+ *
6
+ * Every type is defined as a zod schema and a `z.infer`-ed TypeScript type.
7
+ * Consumers can `safeParse` incoming messages to validate before acting.
8
+ *
9
+ * Three actors:
10
+ * Publisher — agent-side runtime (the MCP server, ffmpeg + CDP).
11
+ * API — Cloudflare Worker + Durable Objects (api.proxyhuman.ai).
12
+ * Viewer — human's browser at app.proxyhuman.ai/browser/:sid.
13
+ *
14
+ * Naming conventions:
15
+ * Commands (imperative): new_session, cancel_handoff
16
+ * Events (past tense): viewer_joined, state_changed, publish_started
17
+ * Responses: session_ready, stream_ready
18
+ * All wire `type` values are snake_case.
19
+ */
20
+
21
+ declare const IceServerSchema: z.ZodObject<{
22
+ urls: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
23
+ username: z.ZodOptional<z.ZodString>;
24
+ credential: z.ZodOptional<z.ZodString>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ urls: string | string[];
27
+ username?: string | undefined;
28
+ credential?: string | undefined;
29
+ }, {
30
+ urls: string | string[];
31
+ username?: string | undefined;
32
+ credential?: string | undefined;
33
+ }>;
34
+ type IceServer = z.infer<typeof IceServerSchema>;
35
+ declare const KeyboardModifiersSchema: z.ZodObject<{
36
+ shiftKey: z.ZodOptional<z.ZodBoolean>;
37
+ ctrlKey: z.ZodOptional<z.ZodBoolean>;
38
+ altKey: z.ZodOptional<z.ZodBoolean>;
39
+ metaKey: z.ZodOptional<z.ZodBoolean>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ shiftKey?: boolean | undefined;
42
+ ctrlKey?: boolean | undefined;
43
+ altKey?: boolean | undefined;
44
+ metaKey?: boolean | undefined;
45
+ }, {
46
+ shiftKey?: boolean | undefined;
47
+ ctrlKey?: boolean | undefined;
48
+ altKey?: boolean | undefined;
49
+ metaKey?: boolean | undefined;
50
+ }>;
51
+ type KeyboardModifiers = z.infer<typeof KeyboardModifiersSchema>;
52
+ declare const ViewportSchema: z.ZodObject<{
53
+ width: z.ZodNumber;
54
+ height: z.ZodNumber;
55
+ }, "strip", z.ZodTypeAny, {
56
+ width: number;
57
+ height: number;
58
+ }, {
59
+ width: number;
60
+ height: number;
61
+ }>;
62
+ type Viewport = z.infer<typeof ViewportSchema>;
63
+ /**
64
+ * Self-reported publisher identity, persisted on SessionInfo so the
65
+ * dashboard can show "which client opened this handoff".
66
+ */
67
+ declare const PublisherInfoSchema: z.ZodObject<{
68
+ /** Package name, e.g. "@proxyhuman/mcp". */
69
+ name: z.ZodString;
70
+ /** Package version, e.g. "0.2.0". */
71
+ version: z.ZodString;
72
+ /** Optional host descriptor (OS / hostname) for diagnostic logs. */
73
+ host: z.ZodOptional<z.ZodString>;
74
+ }, "strip", z.ZodTypeAny, {
75
+ name: string;
76
+ version: string;
77
+ host?: string | undefined;
78
+ }, {
79
+ name: string;
80
+ version: string;
81
+ host?: string | undefined;
82
+ }>;
83
+ type PublisherInfo = z.infer<typeof PublisherInfoSchema>;
84
+ /**
85
+ * Per-session info about the browser the publisher attached to. Captured
86
+ * once at attach time so the dashboard can show "session N attached to
87
+ * Chrome 148 at 1920x1080 starting at example.com". Useful for post-mortems.
88
+ */
89
+ declare const TargetInfoSchema: z.ZodObject<{
90
+ /** Chrome DevTools Protocol HTTP endpoint — diagnostic only. */
91
+ cdpUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
92
+ /** Page URL when the publisher attached (first frame_navigated). */
93
+ initialUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
94
+ /** Encoder viewport — the actual stream resolution. */
95
+ viewport: z.ZodOptional<z.ZodNullable<z.ZodObject<{
96
+ width: z.ZodNumber;
97
+ height: z.ZodNumber;
98
+ }, "strip", z.ZodTypeAny, {
99
+ width: number;
100
+ height: number;
101
+ }, {
102
+ width: number;
103
+ height: number;
104
+ }>>>;
105
+ /** Browser identity from CDP `Browser.getVersion` (`product` field). */
106
+ browserVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
107
+ /** Full user-agent string of the attached page. */
108
+ userAgent: z.ZodOptional<z.ZodNullable<z.ZodString>>;
109
+ }, "strip", z.ZodTypeAny, {
110
+ cdpUrl?: string | null | undefined;
111
+ initialUrl?: string | null | undefined;
112
+ viewport?: {
113
+ width: number;
114
+ height: number;
115
+ } | null | undefined;
116
+ browserVersion?: string | null | undefined;
117
+ userAgent?: string | null | undefined;
118
+ }, {
119
+ cdpUrl?: string | null | undefined;
120
+ initialUrl?: string | null | undefined;
121
+ viewport?: {
122
+ width: number;
123
+ height: number;
124
+ } | null | undefined;
125
+ browserVersion?: string | null | undefined;
126
+ userAgent?: string | null | undefined;
127
+ }>;
128
+ type TargetInfo = z.infer<typeof TargetInfoSchema>;
129
+ /**
130
+ * Per-viewer client info captured at WS upgrade. The server fills in what
131
+ * the browser tells us (User-Agent, Cloudflare's `cf-connecting-ip`) plus
132
+ * a stable `deviceId` — a random opaque string set as a cookie on the
133
+ * viewer's first connection and echoed back on every subsequent one. The
134
+ * dashboard uses this to render "watched from this device" timelines and
135
+ * detect URL leaks (same viewerUrl, two different deviceIds).
136
+ */
137
+ declare const ViewerInfoSchema: z.ZodObject<{
138
+ /** Random opaque id; persisted as the `ph_device` cookie on the viewer. */
139
+ deviceId: z.ZodNullable<z.ZodString>;
140
+ userAgent: z.ZodNullable<z.ZodString>;
141
+ ip: z.ZodNullable<z.ZodString>;
142
+ }, "strip", z.ZodTypeAny, {
143
+ userAgent: string | null;
144
+ deviceId: string | null;
145
+ ip: string | null;
146
+ }, {
147
+ userAgent: string | null;
148
+ deviceId: string | null;
149
+ ip: string | null;
150
+ }>;
151
+ type ViewerInfo = z.infer<typeof ViewerInfoSchema>;
152
+ /**
153
+ * One human-intent record. The API recorder collapses adjacent low-level
154
+ * events into these coarser entries. Tap coordinates are normalized [0, 1].
155
+ *
156
+ * `redacted: true` on `type` / `paste` means the user was typing into a
157
+ * sensitive field (e.g. `<input type="password">`) at the time, so the
158
+ * actual text was replaced with `[REDACTED]` of the same length before
159
+ * persisting. The publisher signals sensitive context via `focus_changed`.
160
+ */
161
+ declare const RecordedActionSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
162
+ ts: z.ZodNumber;
163
+ type: z.ZodLiteral<"type">;
164
+ text: z.ZodString;
165
+ redacted: z.ZodOptional<z.ZodBoolean>;
166
+ }, "strip", z.ZodTypeAny, {
167
+ type: "type";
168
+ ts: number;
169
+ text: string;
170
+ redacted?: boolean | undefined;
171
+ }, {
172
+ type: "type";
173
+ ts: number;
174
+ text: string;
175
+ redacted?: boolean | undefined;
176
+ }>, z.ZodObject<{
177
+ ts: z.ZodNumber;
178
+ type: z.ZodLiteral<"paste">;
179
+ text: z.ZodString;
180
+ redacted: z.ZodOptional<z.ZodBoolean>;
181
+ }, "strip", z.ZodTypeAny, {
182
+ type: "paste";
183
+ ts: number;
184
+ text: string;
185
+ redacted?: boolean | undefined;
186
+ }, {
187
+ type: "paste";
188
+ ts: number;
189
+ text: string;
190
+ redacted?: boolean | undefined;
191
+ }>, z.ZodObject<{
192
+ ts: z.ZodNumber;
193
+ type: z.ZodLiteral<"press">;
194
+ key: z.ZodString;
195
+ modifiers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
196
+ }, "strip", z.ZodTypeAny, {
197
+ type: "press";
198
+ ts: number;
199
+ key: string;
200
+ modifiers?: string[] | undefined;
201
+ }, {
202
+ type: "press";
203
+ ts: number;
204
+ key: string;
205
+ modifiers?: string[] | undefined;
206
+ }>, z.ZodObject<{
207
+ ts: z.ZodNumber;
208
+ type: z.ZodLiteral<"tap">;
209
+ x: z.ZodNumber;
210
+ y: z.ZodNumber;
211
+ }, "strip", z.ZodTypeAny, {
212
+ type: "tap";
213
+ ts: number;
214
+ x: number;
215
+ y: number;
216
+ }, {
217
+ type: "tap";
218
+ ts: number;
219
+ x: number;
220
+ y: number;
221
+ }>, z.ZodObject<{
222
+ ts: z.ZodNumber;
223
+ type: z.ZodLiteral<"scroll">;
224
+ x: z.ZodNumber;
225
+ y: z.ZodNumber;
226
+ deltaX: z.ZodNumber;
227
+ deltaY: z.ZodNumber;
228
+ }, "strip", z.ZodTypeAny, {
229
+ type: "scroll";
230
+ ts: number;
231
+ x: number;
232
+ y: number;
233
+ deltaX: number;
234
+ deltaY: number;
235
+ }, {
236
+ type: "scroll";
237
+ ts: number;
238
+ x: number;
239
+ y: number;
240
+ deltaX: number;
241
+ deltaY: number;
242
+ }>, z.ZodObject<{
243
+ ts: z.ZodNumber;
244
+ type: z.ZodLiteral<"navigate">;
245
+ url: z.ZodString;
246
+ }, "strip", z.ZodTypeAny, {
247
+ type: "navigate";
248
+ ts: number;
249
+ url: string;
250
+ }, {
251
+ type: "navigate";
252
+ ts: number;
253
+ url: string;
254
+ }>, z.ZodObject<{
255
+ ts: z.ZodNumber;
256
+ type: z.ZodLiteral<"back">;
257
+ }, "strip", z.ZodTypeAny, {
258
+ type: "back";
259
+ ts: number;
260
+ }, {
261
+ type: "back";
262
+ ts: number;
263
+ }>, z.ZodObject<{
264
+ ts: z.ZodNumber;
265
+ type: z.ZodLiteral<"forward">;
266
+ }, "strip", z.ZodTypeAny, {
267
+ type: "forward";
268
+ ts: number;
269
+ }, {
270
+ type: "forward";
271
+ ts: number;
272
+ }>, z.ZodObject<{
273
+ ts: z.ZodNumber;
274
+ type: z.ZodLiteral<"reload">;
275
+ }, "strip", z.ZodTypeAny, {
276
+ type: "reload";
277
+ ts: number;
278
+ }, {
279
+ type: "reload";
280
+ ts: number;
281
+ }>, z.ZodObject<{
282
+ ts: z.ZodNumber;
283
+ type: z.ZodLiteral<"url_update">;
284
+ url: z.ZodString;
285
+ }, "strip", z.ZodTypeAny, {
286
+ type: "url_update";
287
+ ts: number;
288
+ url: string;
289
+ }, {
290
+ type: "url_update";
291
+ ts: number;
292
+ url: string;
293
+ }>, z.ZodObject<{
294
+ ts: z.ZodNumber;
295
+ type: z.ZodLiteral<"human_done">;
296
+ }, "strip", z.ZodTypeAny, {
297
+ type: "human_done";
298
+ ts: number;
299
+ }, {
300
+ type: "human_done";
301
+ ts: number;
302
+ }>]>;
303
+ type RecordedAction = z.infer<typeof RecordedActionSchema>;
304
+ declare const SessionStateSchema: z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>;
305
+ type SessionState = z.infer<typeof SessionStateSchema>;
306
+ declare const TERMINAL_STATES: readonly ["complete", "failed", "cancelled"];
307
+ declare function isTerminalState(state: SessionState): boolean;
308
+ declare const SessionOutcomeSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
309
+ type: z.ZodLiteral<"human_done">;
310
+ }, "strip", z.ZodTypeAny, {
311
+ type: "human_done";
312
+ }, {
313
+ type: "human_done";
314
+ }>, z.ZodObject<{
315
+ type: z.ZodLiteral<"disconnected">;
316
+ }, "strip", z.ZodTypeAny, {
317
+ type: "disconnected";
318
+ }, {
319
+ type: "disconnected";
320
+ }>, z.ZodObject<{
321
+ type: z.ZodLiteral<"timeout">;
322
+ }, "strip", z.ZodTypeAny, {
323
+ type: "timeout";
324
+ }, {
325
+ type: "timeout";
326
+ }>, z.ZodObject<{
327
+ type: z.ZodLiteral<"cancelled">;
328
+ reason: z.ZodOptional<z.ZodString>;
329
+ }, "strip", z.ZodTypeAny, {
330
+ type: "cancelled";
331
+ reason?: string | undefined;
332
+ }, {
333
+ type: "cancelled";
334
+ reason?: string | undefined;
335
+ }>, z.ZodObject<{
336
+ type: z.ZodLiteral<"cdp_lost">;
337
+ }, "strip", z.ZodTypeAny, {
338
+ type: "cdp_lost";
339
+ }, {
340
+ type: "cdp_lost";
341
+ }>, z.ZodObject<{
342
+ type: z.ZodLiteral<"encoder_crash">;
343
+ }, "strip", z.ZodTypeAny, {
344
+ type: "encoder_crash";
345
+ }, {
346
+ type: "encoder_crash";
347
+ }>, z.ZodObject<{
348
+ type: z.ZodLiteral<"relay_error">;
349
+ detail: z.ZodOptional<z.ZodString>;
350
+ }, "strip", z.ZodTypeAny, {
351
+ type: "relay_error";
352
+ detail?: string | undefined;
353
+ }, {
354
+ type: "relay_error";
355
+ detail?: string | undefined;
356
+ }>]>;
357
+ type SessionOutcome = z.infer<typeof SessionOutcomeSchema>;
358
+ declare const SessionEventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
359
+ ts: z.ZodNumber;
360
+ type: z.ZodLiteral<"state_changed">;
361
+ from: z.ZodNullable<z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>>;
362
+ to: z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>;
363
+ }, "strip", z.ZodTypeAny, {
364
+ type: "state_changed";
365
+ ts: number;
366
+ from: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled" | null;
367
+ to: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
368
+ }, {
369
+ type: "state_changed";
370
+ ts: number;
371
+ from: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled" | null;
372
+ to: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
373
+ }>, z.ZodObject<{
374
+ ts: z.ZodNumber;
375
+ type: z.ZodLiteral<"viewer_joined">;
376
+ viewerCount: z.ZodNumber;
377
+ viewer: z.ZodOptional<z.ZodObject<{
378
+ /** Random opaque id; persisted as the `ph_device` cookie on the viewer. */
379
+ deviceId: z.ZodNullable<z.ZodString>;
380
+ userAgent: z.ZodNullable<z.ZodString>;
381
+ ip: z.ZodNullable<z.ZodString>;
382
+ }, "strip", z.ZodTypeAny, {
383
+ userAgent: string | null;
384
+ deviceId: string | null;
385
+ ip: string | null;
386
+ }, {
387
+ userAgent: string | null;
388
+ deviceId: string | null;
389
+ ip: string | null;
390
+ }>>;
391
+ }, "strip", z.ZodTypeAny, {
392
+ type: "viewer_joined";
393
+ ts: number;
394
+ viewerCount: number;
395
+ viewer?: {
396
+ userAgent: string | null;
397
+ deviceId: string | null;
398
+ ip: string | null;
399
+ } | undefined;
400
+ }, {
401
+ type: "viewer_joined";
402
+ ts: number;
403
+ viewerCount: number;
404
+ viewer?: {
405
+ userAgent: string | null;
406
+ deviceId: string | null;
407
+ ip: string | null;
408
+ } | undefined;
409
+ }>, z.ZodObject<{
410
+ ts: z.ZodNumber;
411
+ type: z.ZodLiteral<"viewer_left">;
412
+ viewerCount: z.ZodNumber;
413
+ viewer: z.ZodOptional<z.ZodObject<{
414
+ /** Random opaque id; persisted as the `ph_device` cookie on the viewer. */
415
+ deviceId: z.ZodNullable<z.ZodString>;
416
+ userAgent: z.ZodNullable<z.ZodString>;
417
+ ip: z.ZodNullable<z.ZodString>;
418
+ }, "strip", z.ZodTypeAny, {
419
+ userAgent: string | null;
420
+ deviceId: string | null;
421
+ ip: string | null;
422
+ }, {
423
+ userAgent: string | null;
424
+ deviceId: string | null;
425
+ ip: string | null;
426
+ }>>;
427
+ }, "strip", z.ZodTypeAny, {
428
+ type: "viewer_left";
429
+ ts: number;
430
+ viewerCount: number;
431
+ viewer?: {
432
+ userAgent: string | null;
433
+ deviceId: string | null;
434
+ ip: string | null;
435
+ } | undefined;
436
+ }, {
437
+ type: "viewer_left";
438
+ ts: number;
439
+ viewerCount: number;
440
+ viewer?: {
441
+ userAgent: string | null;
442
+ deviceId: string | null;
443
+ ip: string | null;
444
+ } | undefined;
445
+ }>, z.ZodObject<{
446
+ ts: z.ZodNumber;
447
+ type: z.ZodLiteral<"action_recorded">;
448
+ action: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
449
+ ts: z.ZodNumber;
450
+ type: z.ZodLiteral<"type">;
451
+ text: z.ZodString;
452
+ redacted: z.ZodOptional<z.ZodBoolean>;
453
+ }, "strip", z.ZodTypeAny, {
454
+ type: "type";
455
+ ts: number;
456
+ text: string;
457
+ redacted?: boolean | undefined;
458
+ }, {
459
+ type: "type";
460
+ ts: number;
461
+ text: string;
462
+ redacted?: boolean | undefined;
463
+ }>, z.ZodObject<{
464
+ ts: z.ZodNumber;
465
+ type: z.ZodLiteral<"paste">;
466
+ text: z.ZodString;
467
+ redacted: z.ZodOptional<z.ZodBoolean>;
468
+ }, "strip", z.ZodTypeAny, {
469
+ type: "paste";
470
+ ts: number;
471
+ text: string;
472
+ redacted?: boolean | undefined;
473
+ }, {
474
+ type: "paste";
475
+ ts: number;
476
+ text: string;
477
+ redacted?: boolean | undefined;
478
+ }>, z.ZodObject<{
479
+ ts: z.ZodNumber;
480
+ type: z.ZodLiteral<"press">;
481
+ key: z.ZodString;
482
+ modifiers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
483
+ }, "strip", z.ZodTypeAny, {
484
+ type: "press";
485
+ ts: number;
486
+ key: string;
487
+ modifiers?: string[] | undefined;
488
+ }, {
489
+ type: "press";
490
+ ts: number;
491
+ key: string;
492
+ modifiers?: string[] | undefined;
493
+ }>, z.ZodObject<{
494
+ ts: z.ZodNumber;
495
+ type: z.ZodLiteral<"tap">;
496
+ x: z.ZodNumber;
497
+ y: z.ZodNumber;
498
+ }, "strip", z.ZodTypeAny, {
499
+ type: "tap";
500
+ ts: number;
501
+ x: number;
502
+ y: number;
503
+ }, {
504
+ type: "tap";
505
+ ts: number;
506
+ x: number;
507
+ y: number;
508
+ }>, z.ZodObject<{
509
+ ts: z.ZodNumber;
510
+ type: z.ZodLiteral<"scroll">;
511
+ x: z.ZodNumber;
512
+ y: z.ZodNumber;
513
+ deltaX: z.ZodNumber;
514
+ deltaY: z.ZodNumber;
515
+ }, "strip", z.ZodTypeAny, {
516
+ type: "scroll";
517
+ ts: number;
518
+ x: number;
519
+ y: number;
520
+ deltaX: number;
521
+ deltaY: number;
522
+ }, {
523
+ type: "scroll";
524
+ ts: number;
525
+ x: number;
526
+ y: number;
527
+ deltaX: number;
528
+ deltaY: number;
529
+ }>, z.ZodObject<{
530
+ ts: z.ZodNumber;
531
+ type: z.ZodLiteral<"navigate">;
532
+ url: z.ZodString;
533
+ }, "strip", z.ZodTypeAny, {
534
+ type: "navigate";
535
+ ts: number;
536
+ url: string;
537
+ }, {
538
+ type: "navigate";
539
+ ts: number;
540
+ url: string;
541
+ }>, z.ZodObject<{
542
+ ts: z.ZodNumber;
543
+ type: z.ZodLiteral<"back">;
544
+ }, "strip", z.ZodTypeAny, {
545
+ type: "back";
546
+ ts: number;
547
+ }, {
548
+ type: "back";
549
+ ts: number;
550
+ }>, z.ZodObject<{
551
+ ts: z.ZodNumber;
552
+ type: z.ZodLiteral<"forward">;
553
+ }, "strip", z.ZodTypeAny, {
554
+ type: "forward";
555
+ ts: number;
556
+ }, {
557
+ type: "forward";
558
+ ts: number;
559
+ }>, z.ZodObject<{
560
+ ts: z.ZodNumber;
561
+ type: z.ZodLiteral<"reload">;
562
+ }, "strip", z.ZodTypeAny, {
563
+ type: "reload";
564
+ ts: number;
565
+ }, {
566
+ type: "reload";
567
+ ts: number;
568
+ }>, z.ZodObject<{
569
+ ts: z.ZodNumber;
570
+ type: z.ZodLiteral<"url_update">;
571
+ url: z.ZodString;
572
+ }, "strip", z.ZodTypeAny, {
573
+ type: "url_update";
574
+ ts: number;
575
+ url: string;
576
+ }, {
577
+ type: "url_update";
578
+ ts: number;
579
+ url: string;
580
+ }>, z.ZodObject<{
581
+ ts: z.ZodNumber;
582
+ type: z.ZodLiteral<"human_done">;
583
+ }, "strip", z.ZodTypeAny, {
584
+ type: "human_done";
585
+ ts: number;
586
+ }, {
587
+ type: "human_done";
588
+ ts: number;
589
+ }>]>;
590
+ }, "strip", z.ZodTypeAny, {
591
+ type: "action_recorded";
592
+ ts: number;
593
+ action: {
594
+ type: "type";
595
+ ts: number;
596
+ text: string;
597
+ redacted?: boolean | undefined;
598
+ } | {
599
+ type: "paste";
600
+ ts: number;
601
+ text: string;
602
+ redacted?: boolean | undefined;
603
+ } | {
604
+ type: "press";
605
+ ts: number;
606
+ key: string;
607
+ modifiers?: string[] | undefined;
608
+ } | {
609
+ type: "tap";
610
+ ts: number;
611
+ x: number;
612
+ y: number;
613
+ } | {
614
+ type: "scroll";
615
+ ts: number;
616
+ x: number;
617
+ y: number;
618
+ deltaX: number;
619
+ deltaY: number;
620
+ } | {
621
+ type: "navigate";
622
+ ts: number;
623
+ url: string;
624
+ } | {
625
+ type: "back";
626
+ ts: number;
627
+ } | {
628
+ type: "forward";
629
+ ts: number;
630
+ } | {
631
+ type: "reload";
632
+ ts: number;
633
+ } | {
634
+ type: "url_update";
635
+ ts: number;
636
+ url: string;
637
+ } | {
638
+ type: "human_done";
639
+ ts: number;
640
+ };
641
+ }, {
642
+ type: "action_recorded";
643
+ ts: number;
644
+ action: {
645
+ type: "type";
646
+ ts: number;
647
+ text: string;
648
+ redacted?: boolean | undefined;
649
+ } | {
650
+ type: "paste";
651
+ ts: number;
652
+ text: string;
653
+ redacted?: boolean | undefined;
654
+ } | {
655
+ type: "press";
656
+ ts: number;
657
+ key: string;
658
+ modifiers?: string[] | undefined;
659
+ } | {
660
+ type: "tap";
661
+ ts: number;
662
+ x: number;
663
+ y: number;
664
+ } | {
665
+ type: "scroll";
666
+ ts: number;
667
+ x: number;
668
+ y: number;
669
+ deltaX: number;
670
+ deltaY: number;
671
+ } | {
672
+ type: "navigate";
673
+ ts: number;
674
+ url: string;
675
+ } | {
676
+ type: "back";
677
+ ts: number;
678
+ } | {
679
+ type: "forward";
680
+ ts: number;
681
+ } | {
682
+ type: "reload";
683
+ ts: number;
684
+ } | {
685
+ type: "url_update";
686
+ ts: number;
687
+ url: string;
688
+ } | {
689
+ type: "human_done";
690
+ ts: number;
691
+ };
692
+ }>, z.ZodObject<{
693
+ ts: z.ZodNumber;
694
+ type: z.ZodLiteral<"error">;
695
+ message: z.ZodString;
696
+ detail: z.ZodOptional<z.ZodString>;
697
+ }, "strip", z.ZodTypeAny, {
698
+ message: string;
699
+ type: "error";
700
+ ts: number;
701
+ detail?: string | undefined;
702
+ }, {
703
+ message: string;
704
+ type: "error";
705
+ ts: number;
706
+ detail?: string | undefined;
707
+ }>]>;
708
+ type SessionEvent = z.infer<typeof SessionEventSchema>;
709
+ /**
710
+ * Publisher's first message. Authenticates + requests a new session, and
711
+ * carries the metadata that will be persisted on SessionInfo (prompt,
712
+ * publisher identity, target info).
713
+ */
714
+ declare const NewSessionSchema: z.ZodObject<{
715
+ type: z.ZodLiteral<"new_session">;
716
+ apiKey: z.ZodString;
717
+ /** Free-text context shown to the human in the dashboard. */
718
+ prompt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
719
+ publisher: z.ZodOptional<z.ZodObject<{
720
+ /** Package name, e.g. "@proxyhuman/mcp". */
721
+ name: z.ZodString;
722
+ /** Package version, e.g. "0.2.0". */
723
+ version: z.ZodString;
724
+ /** Optional host descriptor (OS / hostname) for diagnostic logs. */
725
+ host: z.ZodOptional<z.ZodString>;
726
+ }, "strip", z.ZodTypeAny, {
727
+ name: string;
728
+ version: string;
729
+ host?: string | undefined;
730
+ }, {
731
+ name: string;
732
+ version: string;
733
+ host?: string | undefined;
734
+ }>>;
735
+ target: z.ZodOptional<z.ZodObject<{
736
+ /** Chrome DevTools Protocol HTTP endpoint — diagnostic only. */
737
+ cdpUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
738
+ /** Page URL when the publisher attached (first frame_navigated). */
739
+ initialUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
740
+ /** Encoder viewport — the actual stream resolution. */
741
+ viewport: z.ZodOptional<z.ZodNullable<z.ZodObject<{
742
+ width: z.ZodNumber;
743
+ height: z.ZodNumber;
744
+ }, "strip", z.ZodTypeAny, {
745
+ width: number;
746
+ height: number;
747
+ }, {
748
+ width: number;
749
+ height: number;
750
+ }>>>;
751
+ /** Browser identity from CDP `Browser.getVersion` (`product` field). */
752
+ browserVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
753
+ /** Full user-agent string of the attached page. */
754
+ userAgent: z.ZodOptional<z.ZodNullable<z.ZodString>>;
755
+ }, "strip", z.ZodTypeAny, {
756
+ cdpUrl?: string | null | undefined;
757
+ initialUrl?: string | null | undefined;
758
+ viewport?: {
759
+ width: number;
760
+ height: number;
761
+ } | null | undefined;
762
+ browserVersion?: string | null | undefined;
763
+ userAgent?: string | null | undefined;
764
+ }, {
765
+ cdpUrl?: string | null | undefined;
766
+ initialUrl?: string | null | undefined;
767
+ viewport?: {
768
+ width: number;
769
+ height: number;
770
+ } | null | undefined;
771
+ browserVersion?: string | null | undefined;
772
+ userAgent?: string | null | undefined;
773
+ }>>;
774
+ }, "strip", z.ZodTypeAny, {
775
+ type: "new_session";
776
+ apiKey: string;
777
+ prompt?: string | null | undefined;
778
+ publisher?: {
779
+ name: string;
780
+ version: string;
781
+ host?: string | undefined;
782
+ } | undefined;
783
+ target?: {
784
+ cdpUrl?: string | null | undefined;
785
+ initialUrl?: string | null | undefined;
786
+ viewport?: {
787
+ width: number;
788
+ height: number;
789
+ } | null | undefined;
790
+ browserVersion?: string | null | undefined;
791
+ userAgent?: string | null | undefined;
792
+ } | undefined;
793
+ }, {
794
+ type: "new_session";
795
+ apiKey: string;
796
+ prompt?: string | null | undefined;
797
+ publisher?: {
798
+ name: string;
799
+ version: string;
800
+ host?: string | undefined;
801
+ } | undefined;
802
+ target?: {
803
+ cdpUrl?: string | null | undefined;
804
+ initialUrl?: string | null | undefined;
805
+ viewport?: {
806
+ width: number;
807
+ height: number;
808
+ } | null | undefined;
809
+ browserVersion?: string | null | undefined;
810
+ userAgent?: string | null | undefined;
811
+ } | undefined;
812
+ }>;
813
+ type NewSession = z.infer<typeof NewSessionSchema>;
814
+ declare const UrlUpdateSchema: z.ZodObject<{
815
+ type: z.ZodLiteral<"url_update">;
816
+ url: z.ZodString;
817
+ }, "strip", z.ZodTypeAny, {
818
+ type: "url_update";
819
+ url: string;
820
+ }, {
821
+ type: "url_update";
822
+ url: string;
823
+ }>;
824
+ type UrlUpdate = z.infer<typeof UrlUpdateSchema>;
825
+ /** Publisher signals its WHIP upload is live → API notifies subscribed viewers. */
826
+ declare const PublishStartedSchema: z.ZodObject<{
827
+ type: z.ZodLiteral<"publish_started">;
828
+ }, "strip", z.ZodTypeAny, {
829
+ type: "publish_started";
830
+ }, {
831
+ type: "publish_started";
832
+ }>;
833
+ type PublishStarted = z.infer<typeof PublishStartedSchema>;
834
+ /** Publisher signals a state-machine transition. */
835
+ declare const StateChangedSchema: z.ZodObject<{
836
+ type: z.ZodLiteral<"state_changed">;
837
+ from: z.ZodNullable<z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>>;
838
+ to: z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>;
839
+ outcome: z.ZodNullable<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
840
+ type: z.ZodLiteral<"human_done">;
841
+ }, "strip", z.ZodTypeAny, {
842
+ type: "human_done";
843
+ }, {
844
+ type: "human_done";
845
+ }>, z.ZodObject<{
846
+ type: z.ZodLiteral<"disconnected">;
847
+ }, "strip", z.ZodTypeAny, {
848
+ type: "disconnected";
849
+ }, {
850
+ type: "disconnected";
851
+ }>, z.ZodObject<{
852
+ type: z.ZodLiteral<"timeout">;
853
+ }, "strip", z.ZodTypeAny, {
854
+ type: "timeout";
855
+ }, {
856
+ type: "timeout";
857
+ }>, z.ZodObject<{
858
+ type: z.ZodLiteral<"cancelled">;
859
+ reason: z.ZodOptional<z.ZodString>;
860
+ }, "strip", z.ZodTypeAny, {
861
+ type: "cancelled";
862
+ reason?: string | undefined;
863
+ }, {
864
+ type: "cancelled";
865
+ reason?: string | undefined;
866
+ }>, z.ZodObject<{
867
+ type: z.ZodLiteral<"cdp_lost">;
868
+ }, "strip", z.ZodTypeAny, {
869
+ type: "cdp_lost";
870
+ }, {
871
+ type: "cdp_lost";
872
+ }>, z.ZodObject<{
873
+ type: z.ZodLiteral<"encoder_crash">;
874
+ }, "strip", z.ZodTypeAny, {
875
+ type: "encoder_crash";
876
+ }, {
877
+ type: "encoder_crash";
878
+ }>, z.ZodObject<{
879
+ type: z.ZodLiteral<"relay_error">;
880
+ detail: z.ZodOptional<z.ZodString>;
881
+ }, "strip", z.ZodTypeAny, {
882
+ type: "relay_error";
883
+ detail?: string | undefined;
884
+ }, {
885
+ type: "relay_error";
886
+ detail?: string | undefined;
887
+ }>]>>;
888
+ }, "strip", z.ZodTypeAny, {
889
+ type: "state_changed";
890
+ from: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled" | null;
891
+ to: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
892
+ outcome: {
893
+ type: "human_done";
894
+ } | {
895
+ type: "disconnected";
896
+ } | {
897
+ type: "timeout";
898
+ } | {
899
+ type: "cancelled";
900
+ reason?: string | undefined;
901
+ } | {
902
+ type: "cdp_lost";
903
+ } | {
904
+ type: "encoder_crash";
905
+ } | {
906
+ type: "relay_error";
907
+ detail?: string | undefined;
908
+ } | null;
909
+ }, {
910
+ type: "state_changed";
911
+ from: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled" | null;
912
+ to: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
913
+ outcome: {
914
+ type: "human_done";
915
+ } | {
916
+ type: "disconnected";
917
+ } | {
918
+ type: "timeout";
919
+ } | {
920
+ type: "cancelled";
921
+ reason?: string | undefined;
922
+ } | {
923
+ type: "cdp_lost";
924
+ } | {
925
+ type: "encoder_crash";
926
+ } | {
927
+ type: "relay_error";
928
+ detail?: string | undefined;
929
+ } | null;
930
+ }>;
931
+ type StateChanged = z.infer<typeof StateChangedSchema>;
932
+ /**
933
+ * Publisher reports a DOM focus change. The API recorder uses `isSensitive`
934
+ * to toggle redaction mode — when true, subsequent `type`/`paste` actions
935
+ * have their text replaced with `[REDACTED]` of the same length before
936
+ * being persisted in the event log.
937
+ *
938
+ * The publisher observes focus via CDP (`Runtime.evaluate` on
939
+ * `document.activeElement` after input dispatch, or a MutationObserver),
940
+ * and considers a field "sensitive" if any of:
941
+ * - `<input type="password">`
942
+ * - `autocomplete` value includes `current-password` / `new-password` /
943
+ * `one-time-code` / `cc-number` / `cc-csc`
944
+ * - explicit `data-private` / `data-redact` attribute (opt-in)
945
+ */
946
+ declare const FocusChangedSchema: z.ZodObject<{
947
+ type: z.ZodLiteral<"focus_changed">;
948
+ isSensitive: z.ZodBoolean;
949
+ /** Diagnostic only — `password` / `text` / `email` etc. May be omitted. */
950
+ fieldType: z.ZodOptional<z.ZodString>;
951
+ }, "strip", z.ZodTypeAny, {
952
+ type: "focus_changed";
953
+ isSensitive: boolean;
954
+ fieldType?: string | undefined;
955
+ }, {
956
+ type: "focus_changed";
957
+ isSensitive: boolean;
958
+ fieldType?: string | undefined;
959
+ }>;
960
+ type FocusChanged = z.infer<typeof FocusChangedSchema>;
961
+ declare const PublisherToApiSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
962
+ type: z.ZodLiteral<"new_session">;
963
+ apiKey: z.ZodString;
964
+ /** Free-text context shown to the human in the dashboard. */
965
+ prompt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
966
+ publisher: z.ZodOptional<z.ZodObject<{
967
+ /** Package name, e.g. "@proxyhuman/mcp". */
968
+ name: z.ZodString;
969
+ /** Package version, e.g. "0.2.0". */
970
+ version: z.ZodString;
971
+ /** Optional host descriptor (OS / hostname) for diagnostic logs. */
972
+ host: z.ZodOptional<z.ZodString>;
973
+ }, "strip", z.ZodTypeAny, {
974
+ name: string;
975
+ version: string;
976
+ host?: string | undefined;
977
+ }, {
978
+ name: string;
979
+ version: string;
980
+ host?: string | undefined;
981
+ }>>;
982
+ target: z.ZodOptional<z.ZodObject<{
983
+ /** Chrome DevTools Protocol HTTP endpoint — diagnostic only. */
984
+ cdpUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
985
+ /** Page URL when the publisher attached (first frame_navigated). */
986
+ initialUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
987
+ /** Encoder viewport — the actual stream resolution. */
988
+ viewport: z.ZodOptional<z.ZodNullable<z.ZodObject<{
989
+ width: z.ZodNumber;
990
+ height: z.ZodNumber;
991
+ }, "strip", z.ZodTypeAny, {
992
+ width: number;
993
+ height: number;
994
+ }, {
995
+ width: number;
996
+ height: number;
997
+ }>>>;
998
+ /** Browser identity from CDP `Browser.getVersion` (`product` field). */
999
+ browserVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1000
+ /** Full user-agent string of the attached page. */
1001
+ userAgent: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1002
+ }, "strip", z.ZodTypeAny, {
1003
+ cdpUrl?: string | null | undefined;
1004
+ initialUrl?: string | null | undefined;
1005
+ viewport?: {
1006
+ width: number;
1007
+ height: number;
1008
+ } | null | undefined;
1009
+ browserVersion?: string | null | undefined;
1010
+ userAgent?: string | null | undefined;
1011
+ }, {
1012
+ cdpUrl?: string | null | undefined;
1013
+ initialUrl?: string | null | undefined;
1014
+ viewport?: {
1015
+ width: number;
1016
+ height: number;
1017
+ } | null | undefined;
1018
+ browserVersion?: string | null | undefined;
1019
+ userAgent?: string | null | undefined;
1020
+ }>>;
1021
+ }, "strip", z.ZodTypeAny, {
1022
+ type: "new_session";
1023
+ apiKey: string;
1024
+ prompt?: string | null | undefined;
1025
+ publisher?: {
1026
+ name: string;
1027
+ version: string;
1028
+ host?: string | undefined;
1029
+ } | undefined;
1030
+ target?: {
1031
+ cdpUrl?: string | null | undefined;
1032
+ initialUrl?: string | null | undefined;
1033
+ viewport?: {
1034
+ width: number;
1035
+ height: number;
1036
+ } | null | undefined;
1037
+ browserVersion?: string | null | undefined;
1038
+ userAgent?: string | null | undefined;
1039
+ } | undefined;
1040
+ }, {
1041
+ type: "new_session";
1042
+ apiKey: string;
1043
+ prompt?: string | null | undefined;
1044
+ publisher?: {
1045
+ name: string;
1046
+ version: string;
1047
+ host?: string | undefined;
1048
+ } | undefined;
1049
+ target?: {
1050
+ cdpUrl?: string | null | undefined;
1051
+ initialUrl?: string | null | undefined;
1052
+ viewport?: {
1053
+ width: number;
1054
+ height: number;
1055
+ } | null | undefined;
1056
+ browserVersion?: string | null | undefined;
1057
+ userAgent?: string | null | undefined;
1058
+ } | undefined;
1059
+ }>, z.ZodObject<{
1060
+ type: z.ZodLiteral<"url_update">;
1061
+ url: z.ZodString;
1062
+ }, "strip", z.ZodTypeAny, {
1063
+ type: "url_update";
1064
+ url: string;
1065
+ }, {
1066
+ type: "url_update";
1067
+ url: string;
1068
+ }>, z.ZodObject<{
1069
+ type: z.ZodLiteral<"publish_started">;
1070
+ }, "strip", z.ZodTypeAny, {
1071
+ type: "publish_started";
1072
+ }, {
1073
+ type: "publish_started";
1074
+ }>, z.ZodObject<{
1075
+ type: z.ZodLiteral<"state_changed">;
1076
+ from: z.ZodNullable<z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>>;
1077
+ to: z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>;
1078
+ outcome: z.ZodNullable<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
1079
+ type: z.ZodLiteral<"human_done">;
1080
+ }, "strip", z.ZodTypeAny, {
1081
+ type: "human_done";
1082
+ }, {
1083
+ type: "human_done";
1084
+ }>, z.ZodObject<{
1085
+ type: z.ZodLiteral<"disconnected">;
1086
+ }, "strip", z.ZodTypeAny, {
1087
+ type: "disconnected";
1088
+ }, {
1089
+ type: "disconnected";
1090
+ }>, z.ZodObject<{
1091
+ type: z.ZodLiteral<"timeout">;
1092
+ }, "strip", z.ZodTypeAny, {
1093
+ type: "timeout";
1094
+ }, {
1095
+ type: "timeout";
1096
+ }>, z.ZodObject<{
1097
+ type: z.ZodLiteral<"cancelled">;
1098
+ reason: z.ZodOptional<z.ZodString>;
1099
+ }, "strip", z.ZodTypeAny, {
1100
+ type: "cancelled";
1101
+ reason?: string | undefined;
1102
+ }, {
1103
+ type: "cancelled";
1104
+ reason?: string | undefined;
1105
+ }>, z.ZodObject<{
1106
+ type: z.ZodLiteral<"cdp_lost">;
1107
+ }, "strip", z.ZodTypeAny, {
1108
+ type: "cdp_lost";
1109
+ }, {
1110
+ type: "cdp_lost";
1111
+ }>, z.ZodObject<{
1112
+ type: z.ZodLiteral<"encoder_crash">;
1113
+ }, "strip", z.ZodTypeAny, {
1114
+ type: "encoder_crash";
1115
+ }, {
1116
+ type: "encoder_crash";
1117
+ }>, z.ZodObject<{
1118
+ type: z.ZodLiteral<"relay_error">;
1119
+ detail: z.ZodOptional<z.ZodString>;
1120
+ }, "strip", z.ZodTypeAny, {
1121
+ type: "relay_error";
1122
+ detail?: string | undefined;
1123
+ }, {
1124
+ type: "relay_error";
1125
+ detail?: string | undefined;
1126
+ }>]>>;
1127
+ }, "strip", z.ZodTypeAny, {
1128
+ type: "state_changed";
1129
+ from: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled" | null;
1130
+ to: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
1131
+ outcome: {
1132
+ type: "human_done";
1133
+ } | {
1134
+ type: "disconnected";
1135
+ } | {
1136
+ type: "timeout";
1137
+ } | {
1138
+ type: "cancelled";
1139
+ reason?: string | undefined;
1140
+ } | {
1141
+ type: "cdp_lost";
1142
+ } | {
1143
+ type: "encoder_crash";
1144
+ } | {
1145
+ type: "relay_error";
1146
+ detail?: string | undefined;
1147
+ } | null;
1148
+ }, {
1149
+ type: "state_changed";
1150
+ from: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled" | null;
1151
+ to: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
1152
+ outcome: {
1153
+ type: "human_done";
1154
+ } | {
1155
+ type: "disconnected";
1156
+ } | {
1157
+ type: "timeout";
1158
+ } | {
1159
+ type: "cancelled";
1160
+ reason?: string | undefined;
1161
+ } | {
1162
+ type: "cdp_lost";
1163
+ } | {
1164
+ type: "encoder_crash";
1165
+ } | {
1166
+ type: "relay_error";
1167
+ detail?: string | undefined;
1168
+ } | null;
1169
+ }>, z.ZodObject<{
1170
+ type: z.ZodLiteral<"focus_changed">;
1171
+ isSensitive: z.ZodBoolean;
1172
+ /** Diagnostic only — `password` / `text` / `email` etc. May be omitted. */
1173
+ fieldType: z.ZodOptional<z.ZodString>;
1174
+ }, "strip", z.ZodTypeAny, {
1175
+ type: "focus_changed";
1176
+ isSensitive: boolean;
1177
+ fieldType?: string | undefined;
1178
+ }, {
1179
+ type: "focus_changed";
1180
+ isSensitive: boolean;
1181
+ fieldType?: string | undefined;
1182
+ }>]>;
1183
+ type PublisherToApi = z.infer<typeof PublisherToApiSchema>;
1184
+ declare const SessionReadySchema: z.ZodObject<{
1185
+ type: z.ZodLiteral<"session_ready">;
1186
+ sessionId: z.ZodString;
1187
+ whipUrl: z.ZodString;
1188
+ viewerUrl: z.ZodString;
1189
+ }, "strip", z.ZodTypeAny, {
1190
+ type: "session_ready";
1191
+ sessionId: string;
1192
+ whipUrl: string;
1193
+ viewerUrl: string;
1194
+ }, {
1195
+ type: "session_ready";
1196
+ sessionId: string;
1197
+ whipUrl: string;
1198
+ viewerUrl: string;
1199
+ }>;
1200
+ type SessionReady = z.infer<typeof SessionReadySchema>;
1201
+ declare const ViewerJoinedSchema: z.ZodObject<{
1202
+ type: z.ZodLiteral<"viewer_joined">;
1203
+ viewerCount: z.ZodNumber;
1204
+ /** Set for the just-joined viewer; null on summary broadcasts. */
1205
+ viewer: z.ZodOptional<z.ZodObject<{
1206
+ /** Random opaque id; persisted as the `ph_device` cookie on the viewer. */
1207
+ deviceId: z.ZodNullable<z.ZodString>;
1208
+ userAgent: z.ZodNullable<z.ZodString>;
1209
+ ip: z.ZodNullable<z.ZodString>;
1210
+ }, "strip", z.ZodTypeAny, {
1211
+ userAgent: string | null;
1212
+ deviceId: string | null;
1213
+ ip: string | null;
1214
+ }, {
1215
+ userAgent: string | null;
1216
+ deviceId: string | null;
1217
+ ip: string | null;
1218
+ }>>;
1219
+ }, "strip", z.ZodTypeAny, {
1220
+ type: "viewer_joined";
1221
+ viewerCount: number;
1222
+ viewer?: {
1223
+ userAgent: string | null;
1224
+ deviceId: string | null;
1225
+ ip: string | null;
1226
+ } | undefined;
1227
+ }, {
1228
+ type: "viewer_joined";
1229
+ viewerCount: number;
1230
+ viewer?: {
1231
+ userAgent: string | null;
1232
+ deviceId: string | null;
1233
+ ip: string | null;
1234
+ } | undefined;
1235
+ }>;
1236
+ type ViewerJoined = z.infer<typeof ViewerJoinedSchema>;
1237
+ declare const ViewerLeftSchema: z.ZodObject<{
1238
+ type: z.ZodLiteral<"viewer_left">;
1239
+ viewerCount: z.ZodNumber;
1240
+ /** Set for the just-left viewer when known. */
1241
+ viewer: z.ZodOptional<z.ZodObject<{
1242
+ /** Random opaque id; persisted as the `ph_device` cookie on the viewer. */
1243
+ deviceId: z.ZodNullable<z.ZodString>;
1244
+ userAgent: z.ZodNullable<z.ZodString>;
1245
+ ip: z.ZodNullable<z.ZodString>;
1246
+ }, "strip", z.ZodTypeAny, {
1247
+ userAgent: string | null;
1248
+ deviceId: string | null;
1249
+ ip: string | null;
1250
+ }, {
1251
+ userAgent: string | null;
1252
+ deviceId: string | null;
1253
+ ip: string | null;
1254
+ }>>;
1255
+ }, "strip", z.ZodTypeAny, {
1256
+ type: "viewer_left";
1257
+ viewerCount: number;
1258
+ viewer?: {
1259
+ userAgent: string | null;
1260
+ deviceId: string | null;
1261
+ ip: string | null;
1262
+ } | undefined;
1263
+ }, {
1264
+ type: "viewer_left";
1265
+ viewerCount: number;
1266
+ viewer?: {
1267
+ userAgent: string | null;
1268
+ deviceId: string | null;
1269
+ ip: string | null;
1270
+ } | undefined;
1271
+ }>;
1272
+ type ViewerLeft = z.infer<typeof ViewerLeftSchema>;
1273
+ /** API directs the publisher to cancel the handoff (agent or admin action). */
1274
+ declare const CancelHandoffSchema: z.ZodObject<{
1275
+ type: z.ZodLiteral<"cancel_handoff">;
1276
+ reason: z.ZodNullable<z.ZodString>;
1277
+ }, "strip", z.ZodTypeAny, {
1278
+ type: "cancel_handoff";
1279
+ reason: string | null;
1280
+ }, {
1281
+ type: "cancel_handoff";
1282
+ reason: string | null;
1283
+ }>;
1284
+ type CancelHandoff = z.infer<typeof CancelHandoffSchema>;
1285
+ /**
1286
+ * Input commands the viewer sends. The API records each + forwards verbatim
1287
+ * to the publisher — including `human_done`, which the publisher uses to
1288
+ * transition state to `complete`.
1289
+ *
1290
+ * `x`, `y` are normalized [0, 1] of the viewport.
1291
+ *
1292
+ * `paste` is sent when the desktop browser intercepts a paste event; the
1293
+ * publisher dispatches the text via CDP `Input.insertText` (one call, IME-safe)
1294
+ * instead of char-by-char keypress. Recorder treats it like a `type` action.
1295
+ */
1296
+ declare const ViewerCommandSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
1297
+ type: z.ZodLiteral<"tap">;
1298
+ x: z.ZodNumber;
1299
+ y: z.ZodNumber;
1300
+ }, "strip", z.ZodTypeAny, {
1301
+ type: "tap";
1302
+ x: number;
1303
+ y: number;
1304
+ }, {
1305
+ type: "tap";
1306
+ x: number;
1307
+ y: number;
1308
+ }>, z.ZodObject<{
1309
+ type: z.ZodLiteral<"scroll">;
1310
+ x: z.ZodNumber;
1311
+ y: z.ZodNumber;
1312
+ deltaX: z.ZodNumber;
1313
+ deltaY: z.ZodNumber;
1314
+ }, "strip", z.ZodTypeAny, {
1315
+ type: "scroll";
1316
+ x: number;
1317
+ y: number;
1318
+ deltaX: number;
1319
+ deltaY: number;
1320
+ }, {
1321
+ type: "scroll";
1322
+ x: number;
1323
+ y: number;
1324
+ deltaX: number;
1325
+ deltaY: number;
1326
+ }>, z.ZodObject<{
1327
+ type: z.ZodLiteral<"key">;
1328
+ event: z.ZodEnum<["keydown", "keyup"]>;
1329
+ key: z.ZodString;
1330
+ code: z.ZodString;
1331
+ modifiers: z.ZodOptional<z.ZodObject<{
1332
+ shiftKey: z.ZodOptional<z.ZodBoolean>;
1333
+ ctrlKey: z.ZodOptional<z.ZodBoolean>;
1334
+ altKey: z.ZodOptional<z.ZodBoolean>;
1335
+ metaKey: z.ZodOptional<z.ZodBoolean>;
1336
+ }, "strip", z.ZodTypeAny, {
1337
+ shiftKey?: boolean | undefined;
1338
+ ctrlKey?: boolean | undefined;
1339
+ altKey?: boolean | undefined;
1340
+ metaKey?: boolean | undefined;
1341
+ }, {
1342
+ shiftKey?: boolean | undefined;
1343
+ ctrlKey?: boolean | undefined;
1344
+ altKey?: boolean | undefined;
1345
+ metaKey?: boolean | undefined;
1346
+ }>>;
1347
+ }, "strip", z.ZodTypeAny, {
1348
+ code: string;
1349
+ type: "key";
1350
+ key: string;
1351
+ event: "keydown" | "keyup";
1352
+ modifiers?: {
1353
+ shiftKey?: boolean | undefined;
1354
+ ctrlKey?: boolean | undefined;
1355
+ altKey?: boolean | undefined;
1356
+ metaKey?: boolean | undefined;
1357
+ } | undefined;
1358
+ }, {
1359
+ code: string;
1360
+ type: "key";
1361
+ key: string;
1362
+ event: "keydown" | "keyup";
1363
+ modifiers?: {
1364
+ shiftKey?: boolean | undefined;
1365
+ ctrlKey?: boolean | undefined;
1366
+ altKey?: boolean | undefined;
1367
+ metaKey?: boolean | undefined;
1368
+ } | undefined;
1369
+ }>, z.ZodObject<{
1370
+ type: z.ZodLiteral<"paste">;
1371
+ text: z.ZodString;
1372
+ }, "strip", z.ZodTypeAny, {
1373
+ type: "paste";
1374
+ text: string;
1375
+ }, {
1376
+ type: "paste";
1377
+ text: string;
1378
+ }>, z.ZodObject<{
1379
+ type: z.ZodLiteral<"navigate">;
1380
+ url: z.ZodString;
1381
+ }, "strip", z.ZodTypeAny, {
1382
+ type: "navigate";
1383
+ url: string;
1384
+ }, {
1385
+ type: "navigate";
1386
+ url: string;
1387
+ }>, z.ZodObject<{
1388
+ type: z.ZodLiteral<"history_back">;
1389
+ }, "strip", z.ZodTypeAny, {
1390
+ type: "history_back";
1391
+ }, {
1392
+ type: "history_back";
1393
+ }>, z.ZodObject<{
1394
+ type: z.ZodLiteral<"history_forward">;
1395
+ }, "strip", z.ZodTypeAny, {
1396
+ type: "history_forward";
1397
+ }, {
1398
+ type: "history_forward";
1399
+ }>, z.ZodObject<{
1400
+ type: z.ZodLiteral<"reload">;
1401
+ }, "strip", z.ZodTypeAny, {
1402
+ type: "reload";
1403
+ }, {
1404
+ type: "reload";
1405
+ }>, z.ZodObject<{
1406
+ type: z.ZodLiteral<"human_done">;
1407
+ }, "strip", z.ZodTypeAny, {
1408
+ type: "human_done";
1409
+ }, {
1410
+ type: "human_done";
1411
+ }>]>;
1412
+ type ViewerCommand = z.infer<typeof ViewerCommandSchema>;
1413
+ declare const ApiToPublisherSchema: z.ZodUnion<[z.ZodObject<{
1414
+ type: z.ZodLiteral<"session_ready">;
1415
+ sessionId: z.ZodString;
1416
+ whipUrl: z.ZodString;
1417
+ viewerUrl: z.ZodString;
1418
+ }, "strip", z.ZodTypeAny, {
1419
+ type: "session_ready";
1420
+ sessionId: string;
1421
+ whipUrl: string;
1422
+ viewerUrl: string;
1423
+ }, {
1424
+ type: "session_ready";
1425
+ sessionId: string;
1426
+ whipUrl: string;
1427
+ viewerUrl: string;
1428
+ }>, z.ZodObject<{
1429
+ type: z.ZodLiteral<"viewer_joined">;
1430
+ viewerCount: z.ZodNumber;
1431
+ /** Set for the just-joined viewer; null on summary broadcasts. */
1432
+ viewer: z.ZodOptional<z.ZodObject<{
1433
+ /** Random opaque id; persisted as the `ph_device` cookie on the viewer. */
1434
+ deviceId: z.ZodNullable<z.ZodString>;
1435
+ userAgent: z.ZodNullable<z.ZodString>;
1436
+ ip: z.ZodNullable<z.ZodString>;
1437
+ }, "strip", z.ZodTypeAny, {
1438
+ userAgent: string | null;
1439
+ deviceId: string | null;
1440
+ ip: string | null;
1441
+ }, {
1442
+ userAgent: string | null;
1443
+ deviceId: string | null;
1444
+ ip: string | null;
1445
+ }>>;
1446
+ }, "strip", z.ZodTypeAny, {
1447
+ type: "viewer_joined";
1448
+ viewerCount: number;
1449
+ viewer?: {
1450
+ userAgent: string | null;
1451
+ deviceId: string | null;
1452
+ ip: string | null;
1453
+ } | undefined;
1454
+ }, {
1455
+ type: "viewer_joined";
1456
+ viewerCount: number;
1457
+ viewer?: {
1458
+ userAgent: string | null;
1459
+ deviceId: string | null;
1460
+ ip: string | null;
1461
+ } | undefined;
1462
+ }>, z.ZodObject<{
1463
+ type: z.ZodLiteral<"viewer_left">;
1464
+ viewerCount: z.ZodNumber;
1465
+ /** Set for the just-left viewer when known. */
1466
+ viewer: z.ZodOptional<z.ZodObject<{
1467
+ /** Random opaque id; persisted as the `ph_device` cookie on the viewer. */
1468
+ deviceId: z.ZodNullable<z.ZodString>;
1469
+ userAgent: z.ZodNullable<z.ZodString>;
1470
+ ip: z.ZodNullable<z.ZodString>;
1471
+ }, "strip", z.ZodTypeAny, {
1472
+ userAgent: string | null;
1473
+ deviceId: string | null;
1474
+ ip: string | null;
1475
+ }, {
1476
+ userAgent: string | null;
1477
+ deviceId: string | null;
1478
+ ip: string | null;
1479
+ }>>;
1480
+ }, "strip", z.ZodTypeAny, {
1481
+ type: "viewer_left";
1482
+ viewerCount: number;
1483
+ viewer?: {
1484
+ userAgent: string | null;
1485
+ deviceId: string | null;
1486
+ ip: string | null;
1487
+ } | undefined;
1488
+ }, {
1489
+ type: "viewer_left";
1490
+ viewerCount: number;
1491
+ viewer?: {
1492
+ userAgent: string | null;
1493
+ deviceId: string | null;
1494
+ ip: string | null;
1495
+ } | undefined;
1496
+ }>, z.ZodObject<{
1497
+ type: z.ZodLiteral<"cancel_handoff">;
1498
+ reason: z.ZodNullable<z.ZodString>;
1499
+ }, "strip", z.ZodTypeAny, {
1500
+ type: "cancel_handoff";
1501
+ reason: string | null;
1502
+ }, {
1503
+ type: "cancel_handoff";
1504
+ reason: string | null;
1505
+ }>, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
1506
+ type: z.ZodLiteral<"tap">;
1507
+ x: z.ZodNumber;
1508
+ y: z.ZodNumber;
1509
+ }, "strip", z.ZodTypeAny, {
1510
+ type: "tap";
1511
+ x: number;
1512
+ y: number;
1513
+ }, {
1514
+ type: "tap";
1515
+ x: number;
1516
+ y: number;
1517
+ }>, z.ZodObject<{
1518
+ type: z.ZodLiteral<"scroll">;
1519
+ x: z.ZodNumber;
1520
+ y: z.ZodNumber;
1521
+ deltaX: z.ZodNumber;
1522
+ deltaY: z.ZodNumber;
1523
+ }, "strip", z.ZodTypeAny, {
1524
+ type: "scroll";
1525
+ x: number;
1526
+ y: number;
1527
+ deltaX: number;
1528
+ deltaY: number;
1529
+ }, {
1530
+ type: "scroll";
1531
+ x: number;
1532
+ y: number;
1533
+ deltaX: number;
1534
+ deltaY: number;
1535
+ }>, z.ZodObject<{
1536
+ type: z.ZodLiteral<"key">;
1537
+ event: z.ZodEnum<["keydown", "keyup"]>;
1538
+ key: z.ZodString;
1539
+ code: z.ZodString;
1540
+ modifiers: z.ZodOptional<z.ZodObject<{
1541
+ shiftKey: z.ZodOptional<z.ZodBoolean>;
1542
+ ctrlKey: z.ZodOptional<z.ZodBoolean>;
1543
+ altKey: z.ZodOptional<z.ZodBoolean>;
1544
+ metaKey: z.ZodOptional<z.ZodBoolean>;
1545
+ }, "strip", z.ZodTypeAny, {
1546
+ shiftKey?: boolean | undefined;
1547
+ ctrlKey?: boolean | undefined;
1548
+ altKey?: boolean | undefined;
1549
+ metaKey?: boolean | undefined;
1550
+ }, {
1551
+ shiftKey?: boolean | undefined;
1552
+ ctrlKey?: boolean | undefined;
1553
+ altKey?: boolean | undefined;
1554
+ metaKey?: boolean | undefined;
1555
+ }>>;
1556
+ }, "strip", z.ZodTypeAny, {
1557
+ code: string;
1558
+ type: "key";
1559
+ key: string;
1560
+ event: "keydown" | "keyup";
1561
+ modifiers?: {
1562
+ shiftKey?: boolean | undefined;
1563
+ ctrlKey?: boolean | undefined;
1564
+ altKey?: boolean | undefined;
1565
+ metaKey?: boolean | undefined;
1566
+ } | undefined;
1567
+ }, {
1568
+ code: string;
1569
+ type: "key";
1570
+ key: string;
1571
+ event: "keydown" | "keyup";
1572
+ modifiers?: {
1573
+ shiftKey?: boolean | undefined;
1574
+ ctrlKey?: boolean | undefined;
1575
+ altKey?: boolean | undefined;
1576
+ metaKey?: boolean | undefined;
1577
+ } | undefined;
1578
+ }>, z.ZodObject<{
1579
+ type: z.ZodLiteral<"paste">;
1580
+ text: z.ZodString;
1581
+ }, "strip", z.ZodTypeAny, {
1582
+ type: "paste";
1583
+ text: string;
1584
+ }, {
1585
+ type: "paste";
1586
+ text: string;
1587
+ }>, z.ZodObject<{
1588
+ type: z.ZodLiteral<"navigate">;
1589
+ url: z.ZodString;
1590
+ }, "strip", z.ZodTypeAny, {
1591
+ type: "navigate";
1592
+ url: string;
1593
+ }, {
1594
+ type: "navigate";
1595
+ url: string;
1596
+ }>, z.ZodObject<{
1597
+ type: z.ZodLiteral<"history_back">;
1598
+ }, "strip", z.ZodTypeAny, {
1599
+ type: "history_back";
1600
+ }, {
1601
+ type: "history_back";
1602
+ }>, z.ZodObject<{
1603
+ type: z.ZodLiteral<"history_forward">;
1604
+ }, "strip", z.ZodTypeAny, {
1605
+ type: "history_forward";
1606
+ }, {
1607
+ type: "history_forward";
1608
+ }>, z.ZodObject<{
1609
+ type: z.ZodLiteral<"reload">;
1610
+ }, "strip", z.ZodTypeAny, {
1611
+ type: "reload";
1612
+ }, {
1613
+ type: "reload";
1614
+ }>, z.ZodObject<{
1615
+ type: z.ZodLiteral<"human_done">;
1616
+ }, "strip", z.ZodTypeAny, {
1617
+ type: "human_done";
1618
+ }, {
1619
+ type: "human_done";
1620
+ }>]>]>;
1621
+ type ApiToPublisher = z.infer<typeof ApiToPublisherSchema>;
1622
+ declare const ViewerToApiSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
1623
+ type: z.ZodLiteral<"tap">;
1624
+ x: z.ZodNumber;
1625
+ y: z.ZodNumber;
1626
+ }, "strip", z.ZodTypeAny, {
1627
+ type: "tap";
1628
+ x: number;
1629
+ y: number;
1630
+ }, {
1631
+ type: "tap";
1632
+ x: number;
1633
+ y: number;
1634
+ }>, z.ZodObject<{
1635
+ type: z.ZodLiteral<"scroll">;
1636
+ x: z.ZodNumber;
1637
+ y: z.ZodNumber;
1638
+ deltaX: z.ZodNumber;
1639
+ deltaY: z.ZodNumber;
1640
+ }, "strip", z.ZodTypeAny, {
1641
+ type: "scroll";
1642
+ x: number;
1643
+ y: number;
1644
+ deltaX: number;
1645
+ deltaY: number;
1646
+ }, {
1647
+ type: "scroll";
1648
+ x: number;
1649
+ y: number;
1650
+ deltaX: number;
1651
+ deltaY: number;
1652
+ }>, z.ZodObject<{
1653
+ type: z.ZodLiteral<"key">;
1654
+ event: z.ZodEnum<["keydown", "keyup"]>;
1655
+ key: z.ZodString;
1656
+ code: z.ZodString;
1657
+ modifiers: z.ZodOptional<z.ZodObject<{
1658
+ shiftKey: z.ZodOptional<z.ZodBoolean>;
1659
+ ctrlKey: z.ZodOptional<z.ZodBoolean>;
1660
+ altKey: z.ZodOptional<z.ZodBoolean>;
1661
+ metaKey: z.ZodOptional<z.ZodBoolean>;
1662
+ }, "strip", z.ZodTypeAny, {
1663
+ shiftKey?: boolean | undefined;
1664
+ ctrlKey?: boolean | undefined;
1665
+ altKey?: boolean | undefined;
1666
+ metaKey?: boolean | undefined;
1667
+ }, {
1668
+ shiftKey?: boolean | undefined;
1669
+ ctrlKey?: boolean | undefined;
1670
+ altKey?: boolean | undefined;
1671
+ metaKey?: boolean | undefined;
1672
+ }>>;
1673
+ }, "strip", z.ZodTypeAny, {
1674
+ code: string;
1675
+ type: "key";
1676
+ key: string;
1677
+ event: "keydown" | "keyup";
1678
+ modifiers?: {
1679
+ shiftKey?: boolean | undefined;
1680
+ ctrlKey?: boolean | undefined;
1681
+ altKey?: boolean | undefined;
1682
+ metaKey?: boolean | undefined;
1683
+ } | undefined;
1684
+ }, {
1685
+ code: string;
1686
+ type: "key";
1687
+ key: string;
1688
+ event: "keydown" | "keyup";
1689
+ modifiers?: {
1690
+ shiftKey?: boolean | undefined;
1691
+ ctrlKey?: boolean | undefined;
1692
+ altKey?: boolean | undefined;
1693
+ metaKey?: boolean | undefined;
1694
+ } | undefined;
1695
+ }>, z.ZodObject<{
1696
+ type: z.ZodLiteral<"paste">;
1697
+ text: z.ZodString;
1698
+ }, "strip", z.ZodTypeAny, {
1699
+ type: "paste";
1700
+ text: string;
1701
+ }, {
1702
+ type: "paste";
1703
+ text: string;
1704
+ }>, z.ZodObject<{
1705
+ type: z.ZodLiteral<"navigate">;
1706
+ url: z.ZodString;
1707
+ }, "strip", z.ZodTypeAny, {
1708
+ type: "navigate";
1709
+ url: string;
1710
+ }, {
1711
+ type: "navigate";
1712
+ url: string;
1713
+ }>, z.ZodObject<{
1714
+ type: z.ZodLiteral<"history_back">;
1715
+ }, "strip", z.ZodTypeAny, {
1716
+ type: "history_back";
1717
+ }, {
1718
+ type: "history_back";
1719
+ }>, z.ZodObject<{
1720
+ type: z.ZodLiteral<"history_forward">;
1721
+ }, "strip", z.ZodTypeAny, {
1722
+ type: "history_forward";
1723
+ }, {
1724
+ type: "history_forward";
1725
+ }>, z.ZodObject<{
1726
+ type: z.ZodLiteral<"reload">;
1727
+ }, "strip", z.ZodTypeAny, {
1728
+ type: "reload";
1729
+ }, {
1730
+ type: "reload";
1731
+ }>, z.ZodObject<{
1732
+ type: z.ZodLiteral<"human_done">;
1733
+ }, "strip", z.ZodTypeAny, {
1734
+ type: "human_done";
1735
+ }, {
1736
+ type: "human_done";
1737
+ }>]>;
1738
+ type ViewerToApi = z.infer<typeof ViewerToApiSchema>;
1739
+ /** API tells a freshly-attached viewer the WHIP stream is live + how to subscribe. */
1740
+ declare const StreamReadySchema: z.ZodObject<{
1741
+ type: z.ZodLiteral<"stream_ready">;
1742
+ whepUrl: z.ZodString;
1743
+ iceServers: z.ZodArray<z.ZodObject<{
1744
+ urls: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
1745
+ username: z.ZodOptional<z.ZodString>;
1746
+ credential: z.ZodOptional<z.ZodString>;
1747
+ }, "strip", z.ZodTypeAny, {
1748
+ urls: string | string[];
1749
+ username?: string | undefined;
1750
+ credential?: string | undefined;
1751
+ }, {
1752
+ urls: string | string[];
1753
+ username?: string | undefined;
1754
+ credential?: string | undefined;
1755
+ }>, "many">;
1756
+ }, "strip", z.ZodTypeAny, {
1757
+ type: "stream_ready";
1758
+ whepUrl: string;
1759
+ iceServers: {
1760
+ urls: string | string[];
1761
+ username?: string | undefined;
1762
+ credential?: string | undefined;
1763
+ }[];
1764
+ }, {
1765
+ type: "stream_ready";
1766
+ whepUrl: string;
1767
+ iceServers: {
1768
+ urls: string | string[];
1769
+ username?: string | undefined;
1770
+ credential?: string | undefined;
1771
+ }[];
1772
+ }>;
1773
+ type StreamReady = z.infer<typeof StreamReadySchema>;
1774
+ declare const SessionEndedSchema: z.ZodObject<{
1775
+ type: z.ZodLiteral<"session_ended">;
1776
+ reason: z.ZodString;
1777
+ }, "strip", z.ZodTypeAny, {
1778
+ type: "session_ended";
1779
+ reason: string;
1780
+ }, {
1781
+ type: "session_ended";
1782
+ reason: string;
1783
+ }>;
1784
+ type SessionEnded = z.infer<typeof SessionEndedSchema>;
1785
+ declare const ApiToViewerSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
1786
+ type: z.ZodLiteral<"stream_ready">;
1787
+ whepUrl: z.ZodString;
1788
+ iceServers: z.ZodArray<z.ZodObject<{
1789
+ urls: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
1790
+ username: z.ZodOptional<z.ZodString>;
1791
+ credential: z.ZodOptional<z.ZodString>;
1792
+ }, "strip", z.ZodTypeAny, {
1793
+ urls: string | string[];
1794
+ username?: string | undefined;
1795
+ credential?: string | undefined;
1796
+ }, {
1797
+ urls: string | string[];
1798
+ username?: string | undefined;
1799
+ credential?: string | undefined;
1800
+ }>, "many">;
1801
+ }, "strip", z.ZodTypeAny, {
1802
+ type: "stream_ready";
1803
+ whepUrl: string;
1804
+ iceServers: {
1805
+ urls: string | string[];
1806
+ username?: string | undefined;
1807
+ credential?: string | undefined;
1808
+ }[];
1809
+ }, {
1810
+ type: "stream_ready";
1811
+ whepUrl: string;
1812
+ iceServers: {
1813
+ urls: string | string[];
1814
+ username?: string | undefined;
1815
+ credential?: string | undefined;
1816
+ }[];
1817
+ }>, z.ZodObject<{
1818
+ type: z.ZodLiteral<"session_ended">;
1819
+ reason: z.ZodString;
1820
+ }, "strip", z.ZodTypeAny, {
1821
+ type: "session_ended";
1822
+ reason: string;
1823
+ }, {
1824
+ type: "session_ended";
1825
+ reason: string;
1826
+ }>, z.ZodObject<{
1827
+ type: z.ZodLiteral<"url_update">;
1828
+ url: z.ZodString;
1829
+ }, "strip", z.ZodTypeAny, {
1830
+ type: "url_update";
1831
+ url: string;
1832
+ }, {
1833
+ type: "url_update";
1834
+ url: string;
1835
+ }>]>;
1836
+ type ApiToViewer = z.infer<typeof ApiToViewerSchema>;
1837
+ /** Per-session record persisted in the DO + returned by detail/summary endpoints. */
1838
+ declare const SessionInfoSchema: z.ZodObject<{
1839
+ sessionId: z.ZodString;
1840
+ state: z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>;
1841
+ viewerCount: z.ZodNumber;
1842
+ createdAt: z.ZodNumber;
1843
+ /** Set when a terminal state is reached, null while still active. */
1844
+ endedAt: z.ZodNullable<z.ZodNumber>;
1845
+ outcome: z.ZodNullable<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
1846
+ type: z.ZodLiteral<"human_done">;
1847
+ }, "strip", z.ZodTypeAny, {
1848
+ type: "human_done";
1849
+ }, {
1850
+ type: "human_done";
1851
+ }>, z.ZodObject<{
1852
+ type: z.ZodLiteral<"disconnected">;
1853
+ }, "strip", z.ZodTypeAny, {
1854
+ type: "disconnected";
1855
+ }, {
1856
+ type: "disconnected";
1857
+ }>, z.ZodObject<{
1858
+ type: z.ZodLiteral<"timeout">;
1859
+ }, "strip", z.ZodTypeAny, {
1860
+ type: "timeout";
1861
+ }, {
1862
+ type: "timeout";
1863
+ }>, z.ZodObject<{
1864
+ type: z.ZodLiteral<"cancelled">;
1865
+ reason: z.ZodOptional<z.ZodString>;
1866
+ }, "strip", z.ZodTypeAny, {
1867
+ type: "cancelled";
1868
+ reason?: string | undefined;
1869
+ }, {
1870
+ type: "cancelled";
1871
+ reason?: string | undefined;
1872
+ }>, z.ZodObject<{
1873
+ type: z.ZodLiteral<"cdp_lost">;
1874
+ }, "strip", z.ZodTypeAny, {
1875
+ type: "cdp_lost";
1876
+ }, {
1877
+ type: "cdp_lost";
1878
+ }>, z.ZodObject<{
1879
+ type: z.ZodLiteral<"encoder_crash">;
1880
+ }, "strip", z.ZodTypeAny, {
1881
+ type: "encoder_crash";
1882
+ }, {
1883
+ type: "encoder_crash";
1884
+ }>, z.ZodObject<{
1885
+ type: z.ZodLiteral<"relay_error">;
1886
+ detail: z.ZodOptional<z.ZodString>;
1887
+ }, "strip", z.ZodTypeAny, {
1888
+ type: "relay_error";
1889
+ detail?: string | undefined;
1890
+ }, {
1891
+ type: "relay_error";
1892
+ detail?: string | undefined;
1893
+ }>]>>;
1894
+ prompt: z.ZodNullable<z.ZodString>;
1895
+ publisher: z.ZodNullable<z.ZodObject<{
1896
+ /** Package name, e.g. "@proxyhuman/mcp". */
1897
+ name: z.ZodString;
1898
+ /** Package version, e.g. "0.2.0". */
1899
+ version: z.ZodString;
1900
+ /** Optional host descriptor (OS / hostname) for diagnostic logs. */
1901
+ host: z.ZodOptional<z.ZodString>;
1902
+ }, "strip", z.ZodTypeAny, {
1903
+ name: string;
1904
+ version: string;
1905
+ host?: string | undefined;
1906
+ }, {
1907
+ name: string;
1908
+ version: string;
1909
+ host?: string | undefined;
1910
+ }>>;
1911
+ target: z.ZodNullable<z.ZodObject<{
1912
+ /** Chrome DevTools Protocol HTTP endpoint — diagnostic only. */
1913
+ cdpUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1914
+ /** Page URL when the publisher attached (first frame_navigated). */
1915
+ initialUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1916
+ /** Encoder viewport — the actual stream resolution. */
1917
+ viewport: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1918
+ width: z.ZodNumber;
1919
+ height: z.ZodNumber;
1920
+ }, "strip", z.ZodTypeAny, {
1921
+ width: number;
1922
+ height: number;
1923
+ }, {
1924
+ width: number;
1925
+ height: number;
1926
+ }>>>;
1927
+ /** Browser identity from CDP `Browser.getVersion` (`product` field). */
1928
+ browserVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1929
+ /** Full user-agent string of the attached page. */
1930
+ userAgent: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1931
+ }, "strip", z.ZodTypeAny, {
1932
+ cdpUrl?: string | null | undefined;
1933
+ initialUrl?: string | null | undefined;
1934
+ viewport?: {
1935
+ width: number;
1936
+ height: number;
1937
+ } | null | undefined;
1938
+ browserVersion?: string | null | undefined;
1939
+ userAgent?: string | null | undefined;
1940
+ }, {
1941
+ cdpUrl?: string | null | undefined;
1942
+ initialUrl?: string | null | undefined;
1943
+ viewport?: {
1944
+ width: number;
1945
+ height: number;
1946
+ } | null | undefined;
1947
+ browserVersion?: string | null | undefined;
1948
+ userAgent?: string | null | undefined;
1949
+ }>>;
1950
+ }, "strip", z.ZodTypeAny, {
1951
+ viewerCount: number;
1952
+ prompt: string | null;
1953
+ publisher: {
1954
+ name: string;
1955
+ version: string;
1956
+ host?: string | undefined;
1957
+ } | null;
1958
+ target: {
1959
+ cdpUrl?: string | null | undefined;
1960
+ initialUrl?: string | null | undefined;
1961
+ viewport?: {
1962
+ width: number;
1963
+ height: number;
1964
+ } | null | undefined;
1965
+ browserVersion?: string | null | undefined;
1966
+ userAgent?: string | null | undefined;
1967
+ } | null;
1968
+ outcome: {
1969
+ type: "human_done";
1970
+ } | {
1971
+ type: "disconnected";
1972
+ } | {
1973
+ type: "timeout";
1974
+ } | {
1975
+ type: "cancelled";
1976
+ reason?: string | undefined;
1977
+ } | {
1978
+ type: "cdp_lost";
1979
+ } | {
1980
+ type: "encoder_crash";
1981
+ } | {
1982
+ type: "relay_error";
1983
+ detail?: string | undefined;
1984
+ } | null;
1985
+ sessionId: string;
1986
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
1987
+ createdAt: number;
1988
+ endedAt: number | null;
1989
+ }, {
1990
+ viewerCount: number;
1991
+ prompt: string | null;
1992
+ publisher: {
1993
+ name: string;
1994
+ version: string;
1995
+ host?: string | undefined;
1996
+ } | null;
1997
+ target: {
1998
+ cdpUrl?: string | null | undefined;
1999
+ initialUrl?: string | null | undefined;
2000
+ viewport?: {
2001
+ width: number;
2002
+ height: number;
2003
+ } | null | undefined;
2004
+ browserVersion?: string | null | undefined;
2005
+ userAgent?: string | null | undefined;
2006
+ } | null;
2007
+ outcome: {
2008
+ type: "human_done";
2009
+ } | {
2010
+ type: "disconnected";
2011
+ } | {
2012
+ type: "timeout";
2013
+ } | {
2014
+ type: "cancelled";
2015
+ reason?: string | undefined;
2016
+ } | {
2017
+ type: "cdp_lost";
2018
+ } | {
2019
+ type: "encoder_crash";
2020
+ } | {
2021
+ type: "relay_error";
2022
+ detail?: string | undefined;
2023
+ } | null;
2024
+ sessionId: string;
2025
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
2026
+ createdAt: number;
2027
+ endedAt: number | null;
2028
+ }>;
2029
+ type SessionInfo = z.infer<typeof SessionInfoSchema>;
2030
+ declare const SessionSummarySchema: z.ZodObject<{
2031
+ sessionId: z.ZodString;
2032
+ state: z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>;
2033
+ outcome: z.ZodNullable<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2034
+ type: z.ZodLiteral<"human_done">;
2035
+ }, "strip", z.ZodTypeAny, {
2036
+ type: "human_done";
2037
+ }, {
2038
+ type: "human_done";
2039
+ }>, z.ZodObject<{
2040
+ type: z.ZodLiteral<"disconnected">;
2041
+ }, "strip", z.ZodTypeAny, {
2042
+ type: "disconnected";
2043
+ }, {
2044
+ type: "disconnected";
2045
+ }>, z.ZodObject<{
2046
+ type: z.ZodLiteral<"timeout">;
2047
+ }, "strip", z.ZodTypeAny, {
2048
+ type: "timeout";
2049
+ }, {
2050
+ type: "timeout";
2051
+ }>, z.ZodObject<{
2052
+ type: z.ZodLiteral<"cancelled">;
2053
+ reason: z.ZodOptional<z.ZodString>;
2054
+ }, "strip", z.ZodTypeAny, {
2055
+ type: "cancelled";
2056
+ reason?: string | undefined;
2057
+ }, {
2058
+ type: "cancelled";
2059
+ reason?: string | undefined;
2060
+ }>, z.ZodObject<{
2061
+ type: z.ZodLiteral<"cdp_lost">;
2062
+ }, "strip", z.ZodTypeAny, {
2063
+ type: "cdp_lost";
2064
+ }, {
2065
+ type: "cdp_lost";
2066
+ }>, z.ZodObject<{
2067
+ type: z.ZodLiteral<"encoder_crash">;
2068
+ }, "strip", z.ZodTypeAny, {
2069
+ type: "encoder_crash";
2070
+ }, {
2071
+ type: "encoder_crash";
2072
+ }>, z.ZodObject<{
2073
+ type: z.ZodLiteral<"relay_error">;
2074
+ detail: z.ZodOptional<z.ZodString>;
2075
+ }, "strip", z.ZodTypeAny, {
2076
+ type: "relay_error";
2077
+ detail?: string | undefined;
2078
+ }, {
2079
+ type: "relay_error";
2080
+ detail?: string | undefined;
2081
+ }>]>>;
2082
+ prompt: z.ZodNullable<z.ZodString>;
2083
+ viewerCount: z.ZodNumber;
2084
+ actionCount: z.ZodNumber;
2085
+ createdAt: z.ZodNumber;
2086
+ endedAt: z.ZodNullable<z.ZodNumber>;
2087
+ /** Last event-log append timestamp. */
2088
+ updatedAt: z.ZodNumber;
2089
+ }, "strip", z.ZodTypeAny, {
2090
+ viewerCount: number;
2091
+ prompt: string | null;
2092
+ outcome: {
2093
+ type: "human_done";
2094
+ } | {
2095
+ type: "disconnected";
2096
+ } | {
2097
+ type: "timeout";
2098
+ } | {
2099
+ type: "cancelled";
2100
+ reason?: string | undefined;
2101
+ } | {
2102
+ type: "cdp_lost";
2103
+ } | {
2104
+ type: "encoder_crash";
2105
+ } | {
2106
+ type: "relay_error";
2107
+ detail?: string | undefined;
2108
+ } | null;
2109
+ sessionId: string;
2110
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
2111
+ createdAt: number;
2112
+ endedAt: number | null;
2113
+ actionCount: number;
2114
+ updatedAt: number;
2115
+ }, {
2116
+ viewerCount: number;
2117
+ prompt: string | null;
2118
+ outcome: {
2119
+ type: "human_done";
2120
+ } | {
2121
+ type: "disconnected";
2122
+ } | {
2123
+ type: "timeout";
2124
+ } | {
2125
+ type: "cancelled";
2126
+ reason?: string | undefined;
2127
+ } | {
2128
+ type: "cdp_lost";
2129
+ } | {
2130
+ type: "encoder_crash";
2131
+ } | {
2132
+ type: "relay_error";
2133
+ detail?: string | undefined;
2134
+ } | null;
2135
+ sessionId: string;
2136
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
2137
+ createdAt: number;
2138
+ endedAt: number | null;
2139
+ actionCount: number;
2140
+ updatedAt: number;
2141
+ }>;
2142
+ type SessionSummary = z.infer<typeof SessionSummarySchema>;
2143
+ /** `GET /sessions/:sid/actions` */
2144
+ declare const SessionActionsResponseSchema: z.ZodObject<{
2145
+ sessionId: z.ZodString;
2146
+ currentUrl: z.ZodString;
2147
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2148
+ ts: z.ZodNumber;
2149
+ type: z.ZodLiteral<"type">;
2150
+ text: z.ZodString;
2151
+ redacted: z.ZodOptional<z.ZodBoolean>;
2152
+ }, "strip", z.ZodTypeAny, {
2153
+ type: "type";
2154
+ ts: number;
2155
+ text: string;
2156
+ redacted?: boolean | undefined;
2157
+ }, {
2158
+ type: "type";
2159
+ ts: number;
2160
+ text: string;
2161
+ redacted?: boolean | undefined;
2162
+ }>, z.ZodObject<{
2163
+ ts: z.ZodNumber;
2164
+ type: z.ZodLiteral<"paste">;
2165
+ text: z.ZodString;
2166
+ redacted: z.ZodOptional<z.ZodBoolean>;
2167
+ }, "strip", z.ZodTypeAny, {
2168
+ type: "paste";
2169
+ ts: number;
2170
+ text: string;
2171
+ redacted?: boolean | undefined;
2172
+ }, {
2173
+ type: "paste";
2174
+ ts: number;
2175
+ text: string;
2176
+ redacted?: boolean | undefined;
2177
+ }>, z.ZodObject<{
2178
+ ts: z.ZodNumber;
2179
+ type: z.ZodLiteral<"press">;
2180
+ key: z.ZodString;
2181
+ modifiers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2182
+ }, "strip", z.ZodTypeAny, {
2183
+ type: "press";
2184
+ ts: number;
2185
+ key: string;
2186
+ modifiers?: string[] | undefined;
2187
+ }, {
2188
+ type: "press";
2189
+ ts: number;
2190
+ key: string;
2191
+ modifiers?: string[] | undefined;
2192
+ }>, z.ZodObject<{
2193
+ ts: z.ZodNumber;
2194
+ type: z.ZodLiteral<"tap">;
2195
+ x: z.ZodNumber;
2196
+ y: z.ZodNumber;
2197
+ }, "strip", z.ZodTypeAny, {
2198
+ type: "tap";
2199
+ ts: number;
2200
+ x: number;
2201
+ y: number;
2202
+ }, {
2203
+ type: "tap";
2204
+ ts: number;
2205
+ x: number;
2206
+ y: number;
2207
+ }>, z.ZodObject<{
2208
+ ts: z.ZodNumber;
2209
+ type: z.ZodLiteral<"scroll">;
2210
+ x: z.ZodNumber;
2211
+ y: z.ZodNumber;
2212
+ deltaX: z.ZodNumber;
2213
+ deltaY: z.ZodNumber;
2214
+ }, "strip", z.ZodTypeAny, {
2215
+ type: "scroll";
2216
+ ts: number;
2217
+ x: number;
2218
+ y: number;
2219
+ deltaX: number;
2220
+ deltaY: number;
2221
+ }, {
2222
+ type: "scroll";
2223
+ ts: number;
2224
+ x: number;
2225
+ y: number;
2226
+ deltaX: number;
2227
+ deltaY: number;
2228
+ }>, z.ZodObject<{
2229
+ ts: z.ZodNumber;
2230
+ type: z.ZodLiteral<"navigate">;
2231
+ url: z.ZodString;
2232
+ }, "strip", z.ZodTypeAny, {
2233
+ type: "navigate";
2234
+ ts: number;
2235
+ url: string;
2236
+ }, {
2237
+ type: "navigate";
2238
+ ts: number;
2239
+ url: string;
2240
+ }>, z.ZodObject<{
2241
+ ts: z.ZodNumber;
2242
+ type: z.ZodLiteral<"back">;
2243
+ }, "strip", z.ZodTypeAny, {
2244
+ type: "back";
2245
+ ts: number;
2246
+ }, {
2247
+ type: "back";
2248
+ ts: number;
2249
+ }>, z.ZodObject<{
2250
+ ts: z.ZodNumber;
2251
+ type: z.ZodLiteral<"forward">;
2252
+ }, "strip", z.ZodTypeAny, {
2253
+ type: "forward";
2254
+ ts: number;
2255
+ }, {
2256
+ type: "forward";
2257
+ ts: number;
2258
+ }>, z.ZodObject<{
2259
+ ts: z.ZodNumber;
2260
+ type: z.ZodLiteral<"reload">;
2261
+ }, "strip", z.ZodTypeAny, {
2262
+ type: "reload";
2263
+ ts: number;
2264
+ }, {
2265
+ type: "reload";
2266
+ ts: number;
2267
+ }>, z.ZodObject<{
2268
+ ts: z.ZodNumber;
2269
+ type: z.ZodLiteral<"url_update">;
2270
+ url: z.ZodString;
2271
+ }, "strip", z.ZodTypeAny, {
2272
+ type: "url_update";
2273
+ ts: number;
2274
+ url: string;
2275
+ }, {
2276
+ type: "url_update";
2277
+ ts: number;
2278
+ url: string;
2279
+ }>, z.ZodObject<{
2280
+ ts: z.ZodNumber;
2281
+ type: z.ZodLiteral<"human_done">;
2282
+ }, "strip", z.ZodTypeAny, {
2283
+ type: "human_done";
2284
+ ts: number;
2285
+ }, {
2286
+ type: "human_done";
2287
+ ts: number;
2288
+ }>]>, "many">;
2289
+ }, "strip", z.ZodTypeAny, {
2290
+ sessionId: string;
2291
+ currentUrl: string;
2292
+ actions: ({
2293
+ type: "type";
2294
+ ts: number;
2295
+ text: string;
2296
+ redacted?: boolean | undefined;
2297
+ } | {
2298
+ type: "paste";
2299
+ ts: number;
2300
+ text: string;
2301
+ redacted?: boolean | undefined;
2302
+ } | {
2303
+ type: "press";
2304
+ ts: number;
2305
+ key: string;
2306
+ modifiers?: string[] | undefined;
2307
+ } | {
2308
+ type: "tap";
2309
+ ts: number;
2310
+ x: number;
2311
+ y: number;
2312
+ } | {
2313
+ type: "scroll";
2314
+ ts: number;
2315
+ x: number;
2316
+ y: number;
2317
+ deltaX: number;
2318
+ deltaY: number;
2319
+ } | {
2320
+ type: "navigate";
2321
+ ts: number;
2322
+ url: string;
2323
+ } | {
2324
+ type: "back";
2325
+ ts: number;
2326
+ } | {
2327
+ type: "forward";
2328
+ ts: number;
2329
+ } | {
2330
+ type: "reload";
2331
+ ts: number;
2332
+ } | {
2333
+ type: "url_update";
2334
+ ts: number;
2335
+ url: string;
2336
+ } | {
2337
+ type: "human_done";
2338
+ ts: number;
2339
+ })[];
2340
+ }, {
2341
+ sessionId: string;
2342
+ currentUrl: string;
2343
+ actions: ({
2344
+ type: "type";
2345
+ ts: number;
2346
+ text: string;
2347
+ redacted?: boolean | undefined;
2348
+ } | {
2349
+ type: "paste";
2350
+ ts: number;
2351
+ text: string;
2352
+ redacted?: boolean | undefined;
2353
+ } | {
2354
+ type: "press";
2355
+ ts: number;
2356
+ key: string;
2357
+ modifiers?: string[] | undefined;
2358
+ } | {
2359
+ type: "tap";
2360
+ ts: number;
2361
+ x: number;
2362
+ y: number;
2363
+ } | {
2364
+ type: "scroll";
2365
+ ts: number;
2366
+ x: number;
2367
+ y: number;
2368
+ deltaX: number;
2369
+ deltaY: number;
2370
+ } | {
2371
+ type: "navigate";
2372
+ ts: number;
2373
+ url: string;
2374
+ } | {
2375
+ type: "back";
2376
+ ts: number;
2377
+ } | {
2378
+ type: "forward";
2379
+ ts: number;
2380
+ } | {
2381
+ type: "reload";
2382
+ ts: number;
2383
+ } | {
2384
+ type: "url_update";
2385
+ ts: number;
2386
+ url: string;
2387
+ } | {
2388
+ type: "human_done";
2389
+ ts: number;
2390
+ })[];
2391
+ }>;
2392
+ type SessionActionsResponse = z.infer<typeof SessionActionsResponseSchema>;
2393
+ /** `GET /sessions/:sid` */
2394
+ declare const SessionDetailResponseSchema: z.ZodObject<{
2395
+ info: z.ZodObject<{
2396
+ sessionId: z.ZodString;
2397
+ state: z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>;
2398
+ viewerCount: z.ZodNumber;
2399
+ createdAt: z.ZodNumber;
2400
+ /** Set when a terminal state is reached, null while still active. */
2401
+ endedAt: z.ZodNullable<z.ZodNumber>;
2402
+ outcome: z.ZodNullable<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2403
+ type: z.ZodLiteral<"human_done">;
2404
+ }, "strip", z.ZodTypeAny, {
2405
+ type: "human_done";
2406
+ }, {
2407
+ type: "human_done";
2408
+ }>, z.ZodObject<{
2409
+ type: z.ZodLiteral<"disconnected">;
2410
+ }, "strip", z.ZodTypeAny, {
2411
+ type: "disconnected";
2412
+ }, {
2413
+ type: "disconnected";
2414
+ }>, z.ZodObject<{
2415
+ type: z.ZodLiteral<"timeout">;
2416
+ }, "strip", z.ZodTypeAny, {
2417
+ type: "timeout";
2418
+ }, {
2419
+ type: "timeout";
2420
+ }>, z.ZodObject<{
2421
+ type: z.ZodLiteral<"cancelled">;
2422
+ reason: z.ZodOptional<z.ZodString>;
2423
+ }, "strip", z.ZodTypeAny, {
2424
+ type: "cancelled";
2425
+ reason?: string | undefined;
2426
+ }, {
2427
+ type: "cancelled";
2428
+ reason?: string | undefined;
2429
+ }>, z.ZodObject<{
2430
+ type: z.ZodLiteral<"cdp_lost">;
2431
+ }, "strip", z.ZodTypeAny, {
2432
+ type: "cdp_lost";
2433
+ }, {
2434
+ type: "cdp_lost";
2435
+ }>, z.ZodObject<{
2436
+ type: z.ZodLiteral<"encoder_crash">;
2437
+ }, "strip", z.ZodTypeAny, {
2438
+ type: "encoder_crash";
2439
+ }, {
2440
+ type: "encoder_crash";
2441
+ }>, z.ZodObject<{
2442
+ type: z.ZodLiteral<"relay_error">;
2443
+ detail: z.ZodOptional<z.ZodString>;
2444
+ }, "strip", z.ZodTypeAny, {
2445
+ type: "relay_error";
2446
+ detail?: string | undefined;
2447
+ }, {
2448
+ type: "relay_error";
2449
+ detail?: string | undefined;
2450
+ }>]>>;
2451
+ prompt: z.ZodNullable<z.ZodString>;
2452
+ publisher: z.ZodNullable<z.ZodObject<{
2453
+ /** Package name, e.g. "@proxyhuman/mcp". */
2454
+ name: z.ZodString;
2455
+ /** Package version, e.g. "0.2.0". */
2456
+ version: z.ZodString;
2457
+ /** Optional host descriptor (OS / hostname) for diagnostic logs. */
2458
+ host: z.ZodOptional<z.ZodString>;
2459
+ }, "strip", z.ZodTypeAny, {
2460
+ name: string;
2461
+ version: string;
2462
+ host?: string | undefined;
2463
+ }, {
2464
+ name: string;
2465
+ version: string;
2466
+ host?: string | undefined;
2467
+ }>>;
2468
+ target: z.ZodNullable<z.ZodObject<{
2469
+ /** Chrome DevTools Protocol HTTP endpoint — diagnostic only. */
2470
+ cdpUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2471
+ /** Page URL when the publisher attached (first frame_navigated). */
2472
+ initialUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2473
+ /** Encoder viewport — the actual stream resolution. */
2474
+ viewport: z.ZodOptional<z.ZodNullable<z.ZodObject<{
2475
+ width: z.ZodNumber;
2476
+ height: z.ZodNumber;
2477
+ }, "strip", z.ZodTypeAny, {
2478
+ width: number;
2479
+ height: number;
2480
+ }, {
2481
+ width: number;
2482
+ height: number;
2483
+ }>>>;
2484
+ /** Browser identity from CDP `Browser.getVersion` (`product` field). */
2485
+ browserVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2486
+ /** Full user-agent string of the attached page. */
2487
+ userAgent: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2488
+ }, "strip", z.ZodTypeAny, {
2489
+ cdpUrl?: string | null | undefined;
2490
+ initialUrl?: string | null | undefined;
2491
+ viewport?: {
2492
+ width: number;
2493
+ height: number;
2494
+ } | null | undefined;
2495
+ browserVersion?: string | null | undefined;
2496
+ userAgent?: string | null | undefined;
2497
+ }, {
2498
+ cdpUrl?: string | null | undefined;
2499
+ initialUrl?: string | null | undefined;
2500
+ viewport?: {
2501
+ width: number;
2502
+ height: number;
2503
+ } | null | undefined;
2504
+ browserVersion?: string | null | undefined;
2505
+ userAgent?: string | null | undefined;
2506
+ }>>;
2507
+ }, "strip", z.ZodTypeAny, {
2508
+ viewerCount: number;
2509
+ prompt: string | null;
2510
+ publisher: {
2511
+ name: string;
2512
+ version: string;
2513
+ host?: string | undefined;
2514
+ } | null;
2515
+ target: {
2516
+ cdpUrl?: string | null | undefined;
2517
+ initialUrl?: string | null | undefined;
2518
+ viewport?: {
2519
+ width: number;
2520
+ height: number;
2521
+ } | null | undefined;
2522
+ browserVersion?: string | null | undefined;
2523
+ userAgent?: string | null | undefined;
2524
+ } | null;
2525
+ outcome: {
2526
+ type: "human_done";
2527
+ } | {
2528
+ type: "disconnected";
2529
+ } | {
2530
+ type: "timeout";
2531
+ } | {
2532
+ type: "cancelled";
2533
+ reason?: string | undefined;
2534
+ } | {
2535
+ type: "cdp_lost";
2536
+ } | {
2537
+ type: "encoder_crash";
2538
+ } | {
2539
+ type: "relay_error";
2540
+ detail?: string | undefined;
2541
+ } | null;
2542
+ sessionId: string;
2543
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
2544
+ createdAt: number;
2545
+ endedAt: number | null;
2546
+ }, {
2547
+ viewerCount: number;
2548
+ prompt: string | null;
2549
+ publisher: {
2550
+ name: string;
2551
+ version: string;
2552
+ host?: string | undefined;
2553
+ } | null;
2554
+ target: {
2555
+ cdpUrl?: string | null | undefined;
2556
+ initialUrl?: string | null | undefined;
2557
+ viewport?: {
2558
+ width: number;
2559
+ height: number;
2560
+ } | null | undefined;
2561
+ browserVersion?: string | null | undefined;
2562
+ userAgent?: string | null | undefined;
2563
+ } | null;
2564
+ outcome: {
2565
+ type: "human_done";
2566
+ } | {
2567
+ type: "disconnected";
2568
+ } | {
2569
+ type: "timeout";
2570
+ } | {
2571
+ type: "cancelled";
2572
+ reason?: string | undefined;
2573
+ } | {
2574
+ type: "cdp_lost";
2575
+ } | {
2576
+ type: "encoder_crash";
2577
+ } | {
2578
+ type: "relay_error";
2579
+ detail?: string | undefined;
2580
+ } | null;
2581
+ sessionId: string;
2582
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
2583
+ createdAt: number;
2584
+ endedAt: number | null;
2585
+ }>;
2586
+ events: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2587
+ ts: z.ZodNumber;
2588
+ type: z.ZodLiteral<"state_changed">;
2589
+ from: z.ZodNullable<z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>>;
2590
+ to: z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>;
2591
+ }, "strip", z.ZodTypeAny, {
2592
+ type: "state_changed";
2593
+ ts: number;
2594
+ from: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled" | null;
2595
+ to: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
2596
+ }, {
2597
+ type: "state_changed";
2598
+ ts: number;
2599
+ from: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled" | null;
2600
+ to: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
2601
+ }>, z.ZodObject<{
2602
+ ts: z.ZodNumber;
2603
+ type: z.ZodLiteral<"viewer_joined">;
2604
+ viewerCount: z.ZodNumber;
2605
+ viewer: z.ZodOptional<z.ZodObject<{
2606
+ /** Random opaque id; persisted as the `ph_device` cookie on the viewer. */
2607
+ deviceId: z.ZodNullable<z.ZodString>;
2608
+ userAgent: z.ZodNullable<z.ZodString>;
2609
+ ip: z.ZodNullable<z.ZodString>;
2610
+ }, "strip", z.ZodTypeAny, {
2611
+ userAgent: string | null;
2612
+ deviceId: string | null;
2613
+ ip: string | null;
2614
+ }, {
2615
+ userAgent: string | null;
2616
+ deviceId: string | null;
2617
+ ip: string | null;
2618
+ }>>;
2619
+ }, "strip", z.ZodTypeAny, {
2620
+ type: "viewer_joined";
2621
+ ts: number;
2622
+ viewerCount: number;
2623
+ viewer?: {
2624
+ userAgent: string | null;
2625
+ deviceId: string | null;
2626
+ ip: string | null;
2627
+ } | undefined;
2628
+ }, {
2629
+ type: "viewer_joined";
2630
+ ts: number;
2631
+ viewerCount: number;
2632
+ viewer?: {
2633
+ userAgent: string | null;
2634
+ deviceId: string | null;
2635
+ ip: string | null;
2636
+ } | undefined;
2637
+ }>, z.ZodObject<{
2638
+ ts: z.ZodNumber;
2639
+ type: z.ZodLiteral<"viewer_left">;
2640
+ viewerCount: z.ZodNumber;
2641
+ viewer: z.ZodOptional<z.ZodObject<{
2642
+ /** Random opaque id; persisted as the `ph_device` cookie on the viewer. */
2643
+ deviceId: z.ZodNullable<z.ZodString>;
2644
+ userAgent: z.ZodNullable<z.ZodString>;
2645
+ ip: z.ZodNullable<z.ZodString>;
2646
+ }, "strip", z.ZodTypeAny, {
2647
+ userAgent: string | null;
2648
+ deviceId: string | null;
2649
+ ip: string | null;
2650
+ }, {
2651
+ userAgent: string | null;
2652
+ deviceId: string | null;
2653
+ ip: string | null;
2654
+ }>>;
2655
+ }, "strip", z.ZodTypeAny, {
2656
+ type: "viewer_left";
2657
+ ts: number;
2658
+ viewerCount: number;
2659
+ viewer?: {
2660
+ userAgent: string | null;
2661
+ deviceId: string | null;
2662
+ ip: string | null;
2663
+ } | undefined;
2664
+ }, {
2665
+ type: "viewer_left";
2666
+ ts: number;
2667
+ viewerCount: number;
2668
+ viewer?: {
2669
+ userAgent: string | null;
2670
+ deviceId: string | null;
2671
+ ip: string | null;
2672
+ } | undefined;
2673
+ }>, z.ZodObject<{
2674
+ ts: z.ZodNumber;
2675
+ type: z.ZodLiteral<"action_recorded">;
2676
+ action: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2677
+ ts: z.ZodNumber;
2678
+ type: z.ZodLiteral<"type">;
2679
+ text: z.ZodString;
2680
+ redacted: z.ZodOptional<z.ZodBoolean>;
2681
+ }, "strip", z.ZodTypeAny, {
2682
+ type: "type";
2683
+ ts: number;
2684
+ text: string;
2685
+ redacted?: boolean | undefined;
2686
+ }, {
2687
+ type: "type";
2688
+ ts: number;
2689
+ text: string;
2690
+ redacted?: boolean | undefined;
2691
+ }>, z.ZodObject<{
2692
+ ts: z.ZodNumber;
2693
+ type: z.ZodLiteral<"paste">;
2694
+ text: z.ZodString;
2695
+ redacted: z.ZodOptional<z.ZodBoolean>;
2696
+ }, "strip", z.ZodTypeAny, {
2697
+ type: "paste";
2698
+ ts: number;
2699
+ text: string;
2700
+ redacted?: boolean | undefined;
2701
+ }, {
2702
+ type: "paste";
2703
+ ts: number;
2704
+ text: string;
2705
+ redacted?: boolean | undefined;
2706
+ }>, z.ZodObject<{
2707
+ ts: z.ZodNumber;
2708
+ type: z.ZodLiteral<"press">;
2709
+ key: z.ZodString;
2710
+ modifiers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2711
+ }, "strip", z.ZodTypeAny, {
2712
+ type: "press";
2713
+ ts: number;
2714
+ key: string;
2715
+ modifiers?: string[] | undefined;
2716
+ }, {
2717
+ type: "press";
2718
+ ts: number;
2719
+ key: string;
2720
+ modifiers?: string[] | undefined;
2721
+ }>, z.ZodObject<{
2722
+ ts: z.ZodNumber;
2723
+ type: z.ZodLiteral<"tap">;
2724
+ x: z.ZodNumber;
2725
+ y: z.ZodNumber;
2726
+ }, "strip", z.ZodTypeAny, {
2727
+ type: "tap";
2728
+ ts: number;
2729
+ x: number;
2730
+ y: number;
2731
+ }, {
2732
+ type: "tap";
2733
+ ts: number;
2734
+ x: number;
2735
+ y: number;
2736
+ }>, z.ZodObject<{
2737
+ ts: z.ZodNumber;
2738
+ type: z.ZodLiteral<"scroll">;
2739
+ x: z.ZodNumber;
2740
+ y: z.ZodNumber;
2741
+ deltaX: z.ZodNumber;
2742
+ deltaY: z.ZodNumber;
2743
+ }, "strip", z.ZodTypeAny, {
2744
+ type: "scroll";
2745
+ ts: number;
2746
+ x: number;
2747
+ y: number;
2748
+ deltaX: number;
2749
+ deltaY: number;
2750
+ }, {
2751
+ type: "scroll";
2752
+ ts: number;
2753
+ x: number;
2754
+ y: number;
2755
+ deltaX: number;
2756
+ deltaY: number;
2757
+ }>, z.ZodObject<{
2758
+ ts: z.ZodNumber;
2759
+ type: z.ZodLiteral<"navigate">;
2760
+ url: z.ZodString;
2761
+ }, "strip", z.ZodTypeAny, {
2762
+ type: "navigate";
2763
+ ts: number;
2764
+ url: string;
2765
+ }, {
2766
+ type: "navigate";
2767
+ ts: number;
2768
+ url: string;
2769
+ }>, z.ZodObject<{
2770
+ ts: z.ZodNumber;
2771
+ type: z.ZodLiteral<"back">;
2772
+ }, "strip", z.ZodTypeAny, {
2773
+ type: "back";
2774
+ ts: number;
2775
+ }, {
2776
+ type: "back";
2777
+ ts: number;
2778
+ }>, z.ZodObject<{
2779
+ ts: z.ZodNumber;
2780
+ type: z.ZodLiteral<"forward">;
2781
+ }, "strip", z.ZodTypeAny, {
2782
+ type: "forward";
2783
+ ts: number;
2784
+ }, {
2785
+ type: "forward";
2786
+ ts: number;
2787
+ }>, z.ZodObject<{
2788
+ ts: z.ZodNumber;
2789
+ type: z.ZodLiteral<"reload">;
2790
+ }, "strip", z.ZodTypeAny, {
2791
+ type: "reload";
2792
+ ts: number;
2793
+ }, {
2794
+ type: "reload";
2795
+ ts: number;
2796
+ }>, z.ZodObject<{
2797
+ ts: z.ZodNumber;
2798
+ type: z.ZodLiteral<"url_update">;
2799
+ url: z.ZodString;
2800
+ }, "strip", z.ZodTypeAny, {
2801
+ type: "url_update";
2802
+ ts: number;
2803
+ url: string;
2804
+ }, {
2805
+ type: "url_update";
2806
+ ts: number;
2807
+ url: string;
2808
+ }>, z.ZodObject<{
2809
+ ts: z.ZodNumber;
2810
+ type: z.ZodLiteral<"human_done">;
2811
+ }, "strip", z.ZodTypeAny, {
2812
+ type: "human_done";
2813
+ ts: number;
2814
+ }, {
2815
+ type: "human_done";
2816
+ ts: number;
2817
+ }>]>;
2818
+ }, "strip", z.ZodTypeAny, {
2819
+ type: "action_recorded";
2820
+ ts: number;
2821
+ action: {
2822
+ type: "type";
2823
+ ts: number;
2824
+ text: string;
2825
+ redacted?: boolean | undefined;
2826
+ } | {
2827
+ type: "paste";
2828
+ ts: number;
2829
+ text: string;
2830
+ redacted?: boolean | undefined;
2831
+ } | {
2832
+ type: "press";
2833
+ ts: number;
2834
+ key: string;
2835
+ modifiers?: string[] | undefined;
2836
+ } | {
2837
+ type: "tap";
2838
+ ts: number;
2839
+ x: number;
2840
+ y: number;
2841
+ } | {
2842
+ type: "scroll";
2843
+ ts: number;
2844
+ x: number;
2845
+ y: number;
2846
+ deltaX: number;
2847
+ deltaY: number;
2848
+ } | {
2849
+ type: "navigate";
2850
+ ts: number;
2851
+ url: string;
2852
+ } | {
2853
+ type: "back";
2854
+ ts: number;
2855
+ } | {
2856
+ type: "forward";
2857
+ ts: number;
2858
+ } | {
2859
+ type: "reload";
2860
+ ts: number;
2861
+ } | {
2862
+ type: "url_update";
2863
+ ts: number;
2864
+ url: string;
2865
+ } | {
2866
+ type: "human_done";
2867
+ ts: number;
2868
+ };
2869
+ }, {
2870
+ type: "action_recorded";
2871
+ ts: number;
2872
+ action: {
2873
+ type: "type";
2874
+ ts: number;
2875
+ text: string;
2876
+ redacted?: boolean | undefined;
2877
+ } | {
2878
+ type: "paste";
2879
+ ts: number;
2880
+ text: string;
2881
+ redacted?: boolean | undefined;
2882
+ } | {
2883
+ type: "press";
2884
+ ts: number;
2885
+ key: string;
2886
+ modifiers?: string[] | undefined;
2887
+ } | {
2888
+ type: "tap";
2889
+ ts: number;
2890
+ x: number;
2891
+ y: number;
2892
+ } | {
2893
+ type: "scroll";
2894
+ ts: number;
2895
+ x: number;
2896
+ y: number;
2897
+ deltaX: number;
2898
+ deltaY: number;
2899
+ } | {
2900
+ type: "navigate";
2901
+ ts: number;
2902
+ url: string;
2903
+ } | {
2904
+ type: "back";
2905
+ ts: number;
2906
+ } | {
2907
+ type: "forward";
2908
+ ts: number;
2909
+ } | {
2910
+ type: "reload";
2911
+ ts: number;
2912
+ } | {
2913
+ type: "url_update";
2914
+ ts: number;
2915
+ url: string;
2916
+ } | {
2917
+ type: "human_done";
2918
+ ts: number;
2919
+ };
2920
+ }>, z.ZodObject<{
2921
+ ts: z.ZodNumber;
2922
+ type: z.ZodLiteral<"error">;
2923
+ message: z.ZodString;
2924
+ detail: z.ZodOptional<z.ZodString>;
2925
+ }, "strip", z.ZodTypeAny, {
2926
+ message: string;
2927
+ type: "error";
2928
+ ts: number;
2929
+ detail?: string | undefined;
2930
+ }, {
2931
+ message: string;
2932
+ type: "error";
2933
+ ts: number;
2934
+ detail?: string | undefined;
2935
+ }>]>, "many">;
2936
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
2937
+ ts: z.ZodNumber;
2938
+ type: z.ZodLiteral<"type">;
2939
+ text: z.ZodString;
2940
+ redacted: z.ZodOptional<z.ZodBoolean>;
2941
+ }, "strip", z.ZodTypeAny, {
2942
+ type: "type";
2943
+ ts: number;
2944
+ text: string;
2945
+ redacted?: boolean | undefined;
2946
+ }, {
2947
+ type: "type";
2948
+ ts: number;
2949
+ text: string;
2950
+ redacted?: boolean | undefined;
2951
+ }>, z.ZodObject<{
2952
+ ts: z.ZodNumber;
2953
+ type: z.ZodLiteral<"paste">;
2954
+ text: z.ZodString;
2955
+ redacted: z.ZodOptional<z.ZodBoolean>;
2956
+ }, "strip", z.ZodTypeAny, {
2957
+ type: "paste";
2958
+ ts: number;
2959
+ text: string;
2960
+ redacted?: boolean | undefined;
2961
+ }, {
2962
+ type: "paste";
2963
+ ts: number;
2964
+ text: string;
2965
+ redacted?: boolean | undefined;
2966
+ }>, z.ZodObject<{
2967
+ ts: z.ZodNumber;
2968
+ type: z.ZodLiteral<"press">;
2969
+ key: z.ZodString;
2970
+ modifiers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2971
+ }, "strip", z.ZodTypeAny, {
2972
+ type: "press";
2973
+ ts: number;
2974
+ key: string;
2975
+ modifiers?: string[] | undefined;
2976
+ }, {
2977
+ type: "press";
2978
+ ts: number;
2979
+ key: string;
2980
+ modifiers?: string[] | undefined;
2981
+ }>, z.ZodObject<{
2982
+ ts: z.ZodNumber;
2983
+ type: z.ZodLiteral<"tap">;
2984
+ x: z.ZodNumber;
2985
+ y: z.ZodNumber;
2986
+ }, "strip", z.ZodTypeAny, {
2987
+ type: "tap";
2988
+ ts: number;
2989
+ x: number;
2990
+ y: number;
2991
+ }, {
2992
+ type: "tap";
2993
+ ts: number;
2994
+ x: number;
2995
+ y: number;
2996
+ }>, z.ZodObject<{
2997
+ ts: z.ZodNumber;
2998
+ type: z.ZodLiteral<"scroll">;
2999
+ x: z.ZodNumber;
3000
+ y: z.ZodNumber;
3001
+ deltaX: z.ZodNumber;
3002
+ deltaY: z.ZodNumber;
3003
+ }, "strip", z.ZodTypeAny, {
3004
+ type: "scroll";
3005
+ ts: number;
3006
+ x: number;
3007
+ y: number;
3008
+ deltaX: number;
3009
+ deltaY: number;
3010
+ }, {
3011
+ type: "scroll";
3012
+ ts: number;
3013
+ x: number;
3014
+ y: number;
3015
+ deltaX: number;
3016
+ deltaY: number;
3017
+ }>, z.ZodObject<{
3018
+ ts: z.ZodNumber;
3019
+ type: z.ZodLiteral<"navigate">;
3020
+ url: z.ZodString;
3021
+ }, "strip", z.ZodTypeAny, {
3022
+ type: "navigate";
3023
+ ts: number;
3024
+ url: string;
3025
+ }, {
3026
+ type: "navigate";
3027
+ ts: number;
3028
+ url: string;
3029
+ }>, z.ZodObject<{
3030
+ ts: z.ZodNumber;
3031
+ type: z.ZodLiteral<"back">;
3032
+ }, "strip", z.ZodTypeAny, {
3033
+ type: "back";
3034
+ ts: number;
3035
+ }, {
3036
+ type: "back";
3037
+ ts: number;
3038
+ }>, z.ZodObject<{
3039
+ ts: z.ZodNumber;
3040
+ type: z.ZodLiteral<"forward">;
3041
+ }, "strip", z.ZodTypeAny, {
3042
+ type: "forward";
3043
+ ts: number;
3044
+ }, {
3045
+ type: "forward";
3046
+ ts: number;
3047
+ }>, z.ZodObject<{
3048
+ ts: z.ZodNumber;
3049
+ type: z.ZodLiteral<"reload">;
3050
+ }, "strip", z.ZodTypeAny, {
3051
+ type: "reload";
3052
+ ts: number;
3053
+ }, {
3054
+ type: "reload";
3055
+ ts: number;
3056
+ }>, z.ZodObject<{
3057
+ ts: z.ZodNumber;
3058
+ type: z.ZodLiteral<"url_update">;
3059
+ url: z.ZodString;
3060
+ }, "strip", z.ZodTypeAny, {
3061
+ type: "url_update";
3062
+ ts: number;
3063
+ url: string;
3064
+ }, {
3065
+ type: "url_update";
3066
+ ts: number;
3067
+ url: string;
3068
+ }>, z.ZodObject<{
3069
+ ts: z.ZodNumber;
3070
+ type: z.ZodLiteral<"human_done">;
3071
+ }, "strip", z.ZodTypeAny, {
3072
+ type: "human_done";
3073
+ ts: number;
3074
+ }, {
3075
+ type: "human_done";
3076
+ ts: number;
3077
+ }>]>, "many">;
3078
+ currentUrl: z.ZodString;
3079
+ }, "strip", z.ZodTypeAny, {
3080
+ currentUrl: string;
3081
+ actions: ({
3082
+ type: "type";
3083
+ ts: number;
3084
+ text: string;
3085
+ redacted?: boolean | undefined;
3086
+ } | {
3087
+ type: "paste";
3088
+ ts: number;
3089
+ text: string;
3090
+ redacted?: boolean | undefined;
3091
+ } | {
3092
+ type: "press";
3093
+ ts: number;
3094
+ key: string;
3095
+ modifiers?: string[] | undefined;
3096
+ } | {
3097
+ type: "tap";
3098
+ ts: number;
3099
+ x: number;
3100
+ y: number;
3101
+ } | {
3102
+ type: "scroll";
3103
+ ts: number;
3104
+ x: number;
3105
+ y: number;
3106
+ deltaX: number;
3107
+ deltaY: number;
3108
+ } | {
3109
+ type: "navigate";
3110
+ ts: number;
3111
+ url: string;
3112
+ } | {
3113
+ type: "back";
3114
+ ts: number;
3115
+ } | {
3116
+ type: "forward";
3117
+ ts: number;
3118
+ } | {
3119
+ type: "reload";
3120
+ ts: number;
3121
+ } | {
3122
+ type: "url_update";
3123
+ ts: number;
3124
+ url: string;
3125
+ } | {
3126
+ type: "human_done";
3127
+ ts: number;
3128
+ })[];
3129
+ info: {
3130
+ viewerCount: number;
3131
+ prompt: string | null;
3132
+ publisher: {
3133
+ name: string;
3134
+ version: string;
3135
+ host?: string | undefined;
3136
+ } | null;
3137
+ target: {
3138
+ cdpUrl?: string | null | undefined;
3139
+ initialUrl?: string | null | undefined;
3140
+ viewport?: {
3141
+ width: number;
3142
+ height: number;
3143
+ } | null | undefined;
3144
+ browserVersion?: string | null | undefined;
3145
+ userAgent?: string | null | undefined;
3146
+ } | null;
3147
+ outcome: {
3148
+ type: "human_done";
3149
+ } | {
3150
+ type: "disconnected";
3151
+ } | {
3152
+ type: "timeout";
3153
+ } | {
3154
+ type: "cancelled";
3155
+ reason?: string | undefined;
3156
+ } | {
3157
+ type: "cdp_lost";
3158
+ } | {
3159
+ type: "encoder_crash";
3160
+ } | {
3161
+ type: "relay_error";
3162
+ detail?: string | undefined;
3163
+ } | null;
3164
+ sessionId: string;
3165
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
3166
+ createdAt: number;
3167
+ endedAt: number | null;
3168
+ };
3169
+ events: ({
3170
+ type: "state_changed";
3171
+ ts: number;
3172
+ from: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled" | null;
3173
+ to: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
3174
+ } | {
3175
+ type: "viewer_joined";
3176
+ ts: number;
3177
+ viewerCount: number;
3178
+ viewer?: {
3179
+ userAgent: string | null;
3180
+ deviceId: string | null;
3181
+ ip: string | null;
3182
+ } | undefined;
3183
+ } | {
3184
+ type: "viewer_left";
3185
+ ts: number;
3186
+ viewerCount: number;
3187
+ viewer?: {
3188
+ userAgent: string | null;
3189
+ deviceId: string | null;
3190
+ ip: string | null;
3191
+ } | undefined;
3192
+ } | {
3193
+ type: "action_recorded";
3194
+ ts: number;
3195
+ action: {
3196
+ type: "type";
3197
+ ts: number;
3198
+ text: string;
3199
+ redacted?: boolean | undefined;
3200
+ } | {
3201
+ type: "paste";
3202
+ ts: number;
3203
+ text: string;
3204
+ redacted?: boolean | undefined;
3205
+ } | {
3206
+ type: "press";
3207
+ ts: number;
3208
+ key: string;
3209
+ modifiers?: string[] | undefined;
3210
+ } | {
3211
+ type: "tap";
3212
+ ts: number;
3213
+ x: number;
3214
+ y: number;
3215
+ } | {
3216
+ type: "scroll";
3217
+ ts: number;
3218
+ x: number;
3219
+ y: number;
3220
+ deltaX: number;
3221
+ deltaY: number;
3222
+ } | {
3223
+ type: "navigate";
3224
+ ts: number;
3225
+ url: string;
3226
+ } | {
3227
+ type: "back";
3228
+ ts: number;
3229
+ } | {
3230
+ type: "forward";
3231
+ ts: number;
3232
+ } | {
3233
+ type: "reload";
3234
+ ts: number;
3235
+ } | {
3236
+ type: "url_update";
3237
+ ts: number;
3238
+ url: string;
3239
+ } | {
3240
+ type: "human_done";
3241
+ ts: number;
3242
+ };
3243
+ } | {
3244
+ message: string;
3245
+ type: "error";
3246
+ ts: number;
3247
+ detail?: string | undefined;
3248
+ })[];
3249
+ }, {
3250
+ currentUrl: string;
3251
+ actions: ({
3252
+ type: "type";
3253
+ ts: number;
3254
+ text: string;
3255
+ redacted?: boolean | undefined;
3256
+ } | {
3257
+ type: "paste";
3258
+ ts: number;
3259
+ text: string;
3260
+ redacted?: boolean | undefined;
3261
+ } | {
3262
+ type: "press";
3263
+ ts: number;
3264
+ key: string;
3265
+ modifiers?: string[] | undefined;
3266
+ } | {
3267
+ type: "tap";
3268
+ ts: number;
3269
+ x: number;
3270
+ y: number;
3271
+ } | {
3272
+ type: "scroll";
3273
+ ts: number;
3274
+ x: number;
3275
+ y: number;
3276
+ deltaX: number;
3277
+ deltaY: number;
3278
+ } | {
3279
+ type: "navigate";
3280
+ ts: number;
3281
+ url: string;
3282
+ } | {
3283
+ type: "back";
3284
+ ts: number;
3285
+ } | {
3286
+ type: "forward";
3287
+ ts: number;
3288
+ } | {
3289
+ type: "reload";
3290
+ ts: number;
3291
+ } | {
3292
+ type: "url_update";
3293
+ ts: number;
3294
+ url: string;
3295
+ } | {
3296
+ type: "human_done";
3297
+ ts: number;
3298
+ })[];
3299
+ info: {
3300
+ viewerCount: number;
3301
+ prompt: string | null;
3302
+ publisher: {
3303
+ name: string;
3304
+ version: string;
3305
+ host?: string | undefined;
3306
+ } | null;
3307
+ target: {
3308
+ cdpUrl?: string | null | undefined;
3309
+ initialUrl?: string | null | undefined;
3310
+ viewport?: {
3311
+ width: number;
3312
+ height: number;
3313
+ } | null | undefined;
3314
+ browserVersion?: string | null | undefined;
3315
+ userAgent?: string | null | undefined;
3316
+ } | null;
3317
+ outcome: {
3318
+ type: "human_done";
3319
+ } | {
3320
+ type: "disconnected";
3321
+ } | {
3322
+ type: "timeout";
3323
+ } | {
3324
+ type: "cancelled";
3325
+ reason?: string | undefined;
3326
+ } | {
3327
+ type: "cdp_lost";
3328
+ } | {
3329
+ type: "encoder_crash";
3330
+ } | {
3331
+ type: "relay_error";
3332
+ detail?: string | undefined;
3333
+ } | null;
3334
+ sessionId: string;
3335
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
3336
+ createdAt: number;
3337
+ endedAt: number | null;
3338
+ };
3339
+ events: ({
3340
+ type: "state_changed";
3341
+ ts: number;
3342
+ from: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled" | null;
3343
+ to: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
3344
+ } | {
3345
+ type: "viewer_joined";
3346
+ ts: number;
3347
+ viewerCount: number;
3348
+ viewer?: {
3349
+ userAgent: string | null;
3350
+ deviceId: string | null;
3351
+ ip: string | null;
3352
+ } | undefined;
3353
+ } | {
3354
+ type: "viewer_left";
3355
+ ts: number;
3356
+ viewerCount: number;
3357
+ viewer?: {
3358
+ userAgent: string | null;
3359
+ deviceId: string | null;
3360
+ ip: string | null;
3361
+ } | undefined;
3362
+ } | {
3363
+ type: "action_recorded";
3364
+ ts: number;
3365
+ action: {
3366
+ type: "type";
3367
+ ts: number;
3368
+ text: string;
3369
+ redacted?: boolean | undefined;
3370
+ } | {
3371
+ type: "paste";
3372
+ ts: number;
3373
+ text: string;
3374
+ redacted?: boolean | undefined;
3375
+ } | {
3376
+ type: "press";
3377
+ ts: number;
3378
+ key: string;
3379
+ modifiers?: string[] | undefined;
3380
+ } | {
3381
+ type: "tap";
3382
+ ts: number;
3383
+ x: number;
3384
+ y: number;
3385
+ } | {
3386
+ type: "scroll";
3387
+ ts: number;
3388
+ x: number;
3389
+ y: number;
3390
+ deltaX: number;
3391
+ deltaY: number;
3392
+ } | {
3393
+ type: "navigate";
3394
+ ts: number;
3395
+ url: string;
3396
+ } | {
3397
+ type: "back";
3398
+ ts: number;
3399
+ } | {
3400
+ type: "forward";
3401
+ ts: number;
3402
+ } | {
3403
+ type: "reload";
3404
+ ts: number;
3405
+ } | {
3406
+ type: "url_update";
3407
+ ts: number;
3408
+ url: string;
3409
+ } | {
3410
+ type: "human_done";
3411
+ ts: number;
3412
+ };
3413
+ } | {
3414
+ message: string;
3415
+ type: "error";
3416
+ ts: number;
3417
+ detail?: string | undefined;
3418
+ })[];
3419
+ }>;
3420
+ type SessionDetailResponse = z.infer<typeof SessionDetailResponseSchema>;
3421
+ /**
3422
+ * `GET /users/me/sessions` (Clerk JWT) and `GET /sessions` (API key, used by
3423
+ * the CLI to enumerate historical handoffs from the agent's box).
3424
+ */
3425
+ declare const UserSessionsResponseSchema: z.ZodObject<{
3426
+ sessions: z.ZodArray<z.ZodObject<{
3427
+ sessionId: z.ZodString;
3428
+ state: z.ZodEnum<["awaiting_viewer", "streaming", "paused", "complete", "failed", "cancelled"]>;
3429
+ outcome: z.ZodNullable<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
3430
+ type: z.ZodLiteral<"human_done">;
3431
+ }, "strip", z.ZodTypeAny, {
3432
+ type: "human_done";
3433
+ }, {
3434
+ type: "human_done";
3435
+ }>, z.ZodObject<{
3436
+ type: z.ZodLiteral<"disconnected">;
3437
+ }, "strip", z.ZodTypeAny, {
3438
+ type: "disconnected";
3439
+ }, {
3440
+ type: "disconnected";
3441
+ }>, z.ZodObject<{
3442
+ type: z.ZodLiteral<"timeout">;
3443
+ }, "strip", z.ZodTypeAny, {
3444
+ type: "timeout";
3445
+ }, {
3446
+ type: "timeout";
3447
+ }>, z.ZodObject<{
3448
+ type: z.ZodLiteral<"cancelled">;
3449
+ reason: z.ZodOptional<z.ZodString>;
3450
+ }, "strip", z.ZodTypeAny, {
3451
+ type: "cancelled";
3452
+ reason?: string | undefined;
3453
+ }, {
3454
+ type: "cancelled";
3455
+ reason?: string | undefined;
3456
+ }>, z.ZodObject<{
3457
+ type: z.ZodLiteral<"cdp_lost">;
3458
+ }, "strip", z.ZodTypeAny, {
3459
+ type: "cdp_lost";
3460
+ }, {
3461
+ type: "cdp_lost";
3462
+ }>, z.ZodObject<{
3463
+ type: z.ZodLiteral<"encoder_crash">;
3464
+ }, "strip", z.ZodTypeAny, {
3465
+ type: "encoder_crash";
3466
+ }, {
3467
+ type: "encoder_crash";
3468
+ }>, z.ZodObject<{
3469
+ type: z.ZodLiteral<"relay_error">;
3470
+ detail: z.ZodOptional<z.ZodString>;
3471
+ }, "strip", z.ZodTypeAny, {
3472
+ type: "relay_error";
3473
+ detail?: string | undefined;
3474
+ }, {
3475
+ type: "relay_error";
3476
+ detail?: string | undefined;
3477
+ }>]>>;
3478
+ prompt: z.ZodNullable<z.ZodString>;
3479
+ viewerCount: z.ZodNumber;
3480
+ actionCount: z.ZodNumber;
3481
+ createdAt: z.ZodNumber;
3482
+ endedAt: z.ZodNullable<z.ZodNumber>;
3483
+ /** Last event-log append timestamp. */
3484
+ updatedAt: z.ZodNumber;
3485
+ }, "strip", z.ZodTypeAny, {
3486
+ viewerCount: number;
3487
+ prompt: string | null;
3488
+ outcome: {
3489
+ type: "human_done";
3490
+ } | {
3491
+ type: "disconnected";
3492
+ } | {
3493
+ type: "timeout";
3494
+ } | {
3495
+ type: "cancelled";
3496
+ reason?: string | undefined;
3497
+ } | {
3498
+ type: "cdp_lost";
3499
+ } | {
3500
+ type: "encoder_crash";
3501
+ } | {
3502
+ type: "relay_error";
3503
+ detail?: string | undefined;
3504
+ } | null;
3505
+ sessionId: string;
3506
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
3507
+ createdAt: number;
3508
+ endedAt: number | null;
3509
+ actionCount: number;
3510
+ updatedAt: number;
3511
+ }, {
3512
+ viewerCount: number;
3513
+ prompt: string | null;
3514
+ outcome: {
3515
+ type: "human_done";
3516
+ } | {
3517
+ type: "disconnected";
3518
+ } | {
3519
+ type: "timeout";
3520
+ } | {
3521
+ type: "cancelled";
3522
+ reason?: string | undefined;
3523
+ } | {
3524
+ type: "cdp_lost";
3525
+ } | {
3526
+ type: "encoder_crash";
3527
+ } | {
3528
+ type: "relay_error";
3529
+ detail?: string | undefined;
3530
+ } | null;
3531
+ sessionId: string;
3532
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
3533
+ createdAt: number;
3534
+ endedAt: number | null;
3535
+ actionCount: number;
3536
+ updatedAt: number;
3537
+ }>, "many">;
3538
+ /** Opaque cursor for the next page, or null when there are no more. */
3539
+ nextCursor: z.ZodNullable<z.ZodString>;
3540
+ }, "strip", z.ZodTypeAny, {
3541
+ sessions: {
3542
+ viewerCount: number;
3543
+ prompt: string | null;
3544
+ outcome: {
3545
+ type: "human_done";
3546
+ } | {
3547
+ type: "disconnected";
3548
+ } | {
3549
+ type: "timeout";
3550
+ } | {
3551
+ type: "cancelled";
3552
+ reason?: string | undefined;
3553
+ } | {
3554
+ type: "cdp_lost";
3555
+ } | {
3556
+ type: "encoder_crash";
3557
+ } | {
3558
+ type: "relay_error";
3559
+ detail?: string | undefined;
3560
+ } | null;
3561
+ sessionId: string;
3562
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
3563
+ createdAt: number;
3564
+ endedAt: number | null;
3565
+ actionCount: number;
3566
+ updatedAt: number;
3567
+ }[];
3568
+ nextCursor: string | null;
3569
+ }, {
3570
+ sessions: {
3571
+ viewerCount: number;
3572
+ prompt: string | null;
3573
+ outcome: {
3574
+ type: "human_done";
3575
+ } | {
3576
+ type: "disconnected";
3577
+ } | {
3578
+ type: "timeout";
3579
+ } | {
3580
+ type: "cancelled";
3581
+ reason?: string | undefined;
3582
+ } | {
3583
+ type: "cdp_lost";
3584
+ } | {
3585
+ type: "encoder_crash";
3586
+ } | {
3587
+ type: "relay_error";
3588
+ detail?: string | undefined;
3589
+ } | null;
3590
+ sessionId: string;
3591
+ state: "awaiting_viewer" | "streaming" | "paused" | "complete" | "failed" | "cancelled";
3592
+ createdAt: number;
3593
+ endedAt: number | null;
3594
+ actionCount: number;
3595
+ updatedAt: number;
3596
+ }[];
3597
+ nextCursor: string | null;
3598
+ }>;
3599
+ type UserSessionsResponse = z.infer<typeof UserSessionsResponseSchema>;
3600
+
3601
+ export { type ApiToPublisher, ApiToPublisherSchema, type ApiToViewer, ApiToViewerSchema, type CancelHandoff, CancelHandoffSchema, type FocusChanged, FocusChangedSchema, type IceServer, IceServerSchema, type KeyboardModifiers, KeyboardModifiersSchema, type NewSession, NewSessionSchema, type PublishStarted, PublishStartedSchema, type PublisherInfo, PublisherInfoSchema, type PublisherToApi, PublisherToApiSchema, type RecordedAction, RecordedActionSchema, type SessionActionsResponse, SessionActionsResponseSchema, type SessionDetailResponse, SessionDetailResponseSchema, type SessionEnded, SessionEndedSchema, type SessionEvent, SessionEventSchema, type SessionInfo, SessionInfoSchema, type SessionOutcome, SessionOutcomeSchema, type SessionReady, SessionReadySchema, type SessionState, SessionStateSchema, type SessionSummary, SessionSummarySchema, type StateChanged, StateChangedSchema, type StreamReady, StreamReadySchema, TERMINAL_STATES, type TargetInfo, TargetInfoSchema, type UrlUpdate, UrlUpdateSchema, type UserSessionsResponse, UserSessionsResponseSchema, type ViewerCommand, ViewerCommandSchema, type ViewerInfo, ViewerInfoSchema, type ViewerJoined, ViewerJoinedSchema, type ViewerLeft, ViewerLeftSchema, type ViewerToApi, ViewerToApiSchema, type Viewport, ViewportSchema, isTerminalState };