autokap 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1165 @@
1
+ /**
2
+ * AUT-57 — Video narration overlay schema.
3
+ *
4
+ * The opcode-based video demo feature stores a regular `ExecutionProgram`
5
+ * in a preset config. Narration is authored on `SLEEP` opcodes via stable
6
+ * `stepId` anchors plus `narrationTextByLocale`; `autokap run` extracts those
7
+ * anchors into this overlay shape, renders TTS, then persists the overlay and
8
+ * audio assets under `presets.config.videoDemo`.
9
+ */
10
+ import { z } from 'zod';
11
+ export declare const SUPPORTED_TTS_LOCALES: readonly ["en", "fr"];
12
+ export type SupportedTtsLocale = (typeof SUPPORTED_TTS_LOCALES)[number];
13
+ export declare function normalizeLocaleTag(locale: string): string;
14
+ export declare function primaryLocaleSubtag(locale: string): string;
15
+ export declare function resolveSupportedTtsLocale(locale: string): SupportedTtsLocale | null;
16
+ /**
17
+ * One narration segment anchored to a single opcode `stepId`. The TTS provider
18
+ * receives `text` verbatim; `estimated_duration_ms` is the assistant's guess
19
+ * (used for diagnostics, not authoritative — the run-time TTS step
20
+ * (PR #4) measures the real audio length via ffprobe).
21
+ */
22
+ export declare const NarrationSegmentSchema: z.ZodObject<{
23
+ stepId: z.ZodString;
24
+ text: z.ZodString;
25
+ estimated_duration_ms: z.ZodNumber;
26
+ }, z.core.$strict>;
27
+ export type NarrationSegment = z.infer<typeof NarrationSegmentSchema>;
28
+ /**
29
+ * Locale-aware narration overlay. `voice` is an opaque provider-side handle
30
+ * (e.g. `openai/gpt-4o-mini-tts:nova`); the backend validates it against the
31
+ * cached OpenRouter voice list (PR #3+).
32
+ *
33
+ * TTS support is intentionally catalog-gated: app locales can be arbitrary,
34
+ * but narration locales must currently resolve to `en` or `fr`.
35
+ */
36
+ export declare const VideoNarrationOverlaySchema: z.ZodObject<{
37
+ voice: z.ZodString;
38
+ locale: z.ZodString;
39
+ segments: z.ZodArray<z.ZodObject<{
40
+ stepId: z.ZodString;
41
+ text: z.ZodString;
42
+ estimated_duration_ms: z.ZodNumber;
43
+ }, z.core.$strict>>;
44
+ }, z.core.$strict>;
45
+ export type VideoNarrationOverlay = z.infer<typeof VideoNarrationOverlaySchema>;
46
+ /**
47
+ * Legacy ingest payload shape retained for compatibility tests. The current
48
+ * demo-video flow persists the program as `presets.config.program`; narration
49
+ * is extracted from `SLEEP.narrationTextByLocale` during `autokap run`.
50
+ *
51
+ * Cross-validation:
52
+ * 1. `program.mediaMode === 'video'`.
53
+ * 2. When `narration` is present, every `narration.segments[*].stepId` must
54
+ * match a `program.steps[*].stepId`.
55
+ */
56
+ export declare const VideoIngestPayloadSchema: z.ZodObject<{
57
+ program: z.ZodObject<{
58
+ presetId: z.ZodString;
59
+ programVersion: z.ZodNumber;
60
+ mediaMode: z.ZodEnum<{
61
+ video: "video";
62
+ clip: "clip";
63
+ screenshot: "screenshot";
64
+ }>;
65
+ baseUrl: z.ZodString;
66
+ maxParallelCaptures: z.ZodOptional<z.ZodNumber>;
67
+ variants: z.ZodArray<z.ZodObject<{
68
+ id: z.ZodString;
69
+ viewport: z.ZodObject<{
70
+ width: z.ZodNumber;
71
+ height: z.ZodNumber;
72
+ }, z.core.$strict>;
73
+ deviceScaleFactor: z.ZodOptional<z.ZodNumber>;
74
+ locale: z.ZodOptional<z.ZodString>;
75
+ theme: z.ZodOptional<z.ZodEnum<{
76
+ light: "light";
77
+ dark: "dark";
78
+ }>>;
79
+ targetId: z.ZodOptional<z.ZodString>;
80
+ targetLabel: z.ZodOptional<z.ZodString>;
81
+ deviceFrame: z.ZodOptional<z.ZodString>;
82
+ mockupOptions: z.ZodOptional<z.ZodObject<{
83
+ orientation: z.ZodOptional<z.ZodEnum<{
84
+ portrait: "portrait";
85
+ landscape: "landscape";
86
+ }>>;
87
+ outputScale: z.ZodOptional<z.ZodNumber>;
88
+ showStatusBar: z.ZodOptional<z.ZodBoolean>;
89
+ showSafeAreaTop: z.ZodOptional<z.ZodBoolean>;
90
+ showSafeAreaBottom: z.ZodOptional<z.ZodBoolean>;
91
+ showSafeAreaLeft: z.ZodOptional<z.ZodBoolean>;
92
+ showSafeAreaRight: z.ZodOptional<z.ZodBoolean>;
93
+ showHomeIndicator: z.ZodOptional<z.ZodBoolean>;
94
+ safeAreaTopColor: z.ZodOptional<z.ZodString>;
95
+ safeAreaBottomColor: z.ZodOptional<z.ZodString>;
96
+ safeAreaLeftColor: z.ZodOptional<z.ZodString>;
97
+ safeAreaRightColor: z.ZodOptional<z.ZodString>;
98
+ statusBar: z.ZodOptional<z.ZodObject<{
99
+ time: z.ZodOptional<z.ZodString>;
100
+ date: z.ZodOptional<z.ZodString>;
101
+ menuBarApp: z.ZodOptional<z.ZodString>;
102
+ menuBarItems: z.ZodOptional<z.ZodArray<z.ZodString>>;
103
+ signalStrength: z.ZodOptional<z.ZodNumber>;
104
+ showNetworkType: z.ZodOptional<z.ZodBoolean>;
105
+ networkType: z.ZodOptional<z.ZodString>;
106
+ wifiStrength: z.ZodOptional<z.ZodNumber>;
107
+ batteryLevel: z.ZodOptional<z.ZodNumber>;
108
+ batteryCharging: z.ZodOptional<z.ZodBoolean>;
109
+ showBatteryPercentage: z.ZodOptional<z.ZodBoolean>;
110
+ colorScheme: z.ZodOptional<z.ZodEnum<{
111
+ light: "light";
112
+ dark: "dark";
113
+ }>>;
114
+ carrierName: z.ZodOptional<z.ZodString>;
115
+ autoLocale: z.ZodOptional<z.ZodBoolean>;
116
+ }, z.core.$strict>>;
117
+ browserBar: z.ZodOptional<z.ZodObject<{
118
+ url: z.ZodOptional<z.ZodString>;
119
+ pageTitle: z.ZodOptional<z.ZodString>;
120
+ tabIconUrl: z.ZodOptional<z.ZodString>;
121
+ }, z.core.$strict>>;
122
+ windowBorder: z.ZodOptional<z.ZodObject<{
123
+ color: z.ZodString;
124
+ width: z.ZodNumber;
125
+ radius: z.ZodNumber;
126
+ }, z.core.$strict>>;
127
+ colorScheme: z.ZodOptional<z.ZodEnum<{
128
+ light: "light";
129
+ dark: "dark";
130
+ }>>;
131
+ }, z.core.$strict>>;
132
+ }, z.core.$strict>>;
133
+ preconditions: z.ZodObject<{
134
+ credentialsId: z.ZodOptional<z.ZodString>;
135
+ credentials: z.ZodOptional<z.ZodObject<{
136
+ email: z.ZodOptional<z.ZodString>;
137
+ password: z.ZodOptional<z.ZodString>;
138
+ loginUrl: z.ZodOptional<z.ZodString>;
139
+ }, z.core.$strict>>;
140
+ storageState: z.ZodOptional<z.ZodObject<{
141
+ cookies: z.ZodArray<z.ZodObject<{
142
+ name: z.ZodString;
143
+ value: z.ZodString;
144
+ domain: z.ZodString;
145
+ path: z.ZodString;
146
+ expires: z.ZodNumber;
147
+ httpOnly: z.ZodBoolean;
148
+ secure: z.ZodBoolean;
149
+ sameSite: z.ZodEnum<{
150
+ Strict: "Strict";
151
+ Lax: "Lax";
152
+ None: "None";
153
+ }>;
154
+ }, z.core.$strict>>;
155
+ origins: z.ZodArray<z.ZodObject<{
156
+ origin: z.ZodString;
157
+ localStorage: z.ZodArray<z.ZodObject<{
158
+ name: z.ZodString;
159
+ value: z.ZodString;
160
+ }, z.core.$strict>>;
161
+ }, z.core.$strict>>;
162
+ }, z.core.$strict>>;
163
+ sessionStorage: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
164
+ cookies: z.ZodOptional<z.ZodArray<z.ZodObject<{
165
+ name: z.ZodString;
166
+ value: z.ZodString;
167
+ domain: z.ZodString;
168
+ path: z.ZodOptional<z.ZodString>;
169
+ }, z.core.$strict>>>;
170
+ }, z.core.$strict>;
171
+ steps: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
172
+ url: z.ZodString;
173
+ description: z.ZodString;
174
+ postcondition: z.ZodObject<{
175
+ type: z.ZodEnum<{
176
+ route_matches: "route_matches";
177
+ element_visible: "element_visible";
178
+ element_absent: "element_absent";
179
+ text_contains: "text_contains";
180
+ overlay_dismissed: "overlay_dismissed";
181
+ screenshot_stable: "screenshot_stable";
182
+ any_change: "any_change";
183
+ always: "always";
184
+ }>;
185
+ pattern: z.ZodOptional<z.ZodString>;
186
+ selector: z.ZodOptional<z.ZodString>;
187
+ text: z.ZodOptional<z.ZodString>;
188
+ threshold: z.ZodOptional<z.ZodNumber>;
189
+ waitMs: z.ZodOptional<z.ZodNumber>;
190
+ }, z.core.$strict>;
191
+ recovery: z.ZodObject<{
192
+ retries: z.ZodNumber;
193
+ useSelectorMemory: z.ZodBoolean;
194
+ useAltInteraction: z.ZodBoolean;
195
+ allowReload: z.ZodBoolean;
196
+ allowHealer: z.ZodBoolean;
197
+ }, z.core.$strict>;
198
+ timeoutMs: z.ZodNumber;
199
+ maxFailures: z.ZodNumber;
200
+ stepId: z.ZodOptional<z.ZodString>;
201
+ kind: z.ZodLiteral<"NAVIGATE">;
202
+ }, z.core.$strict>, z.ZodObject<{
203
+ description: z.ZodString;
204
+ postcondition: z.ZodObject<{
205
+ type: z.ZodEnum<{
206
+ route_matches: "route_matches";
207
+ element_visible: "element_visible";
208
+ element_absent: "element_absent";
209
+ text_contains: "text_contains";
210
+ overlay_dismissed: "overlay_dismissed";
211
+ screenshot_stable: "screenshot_stable";
212
+ any_change: "any_change";
213
+ always: "always";
214
+ }>;
215
+ pattern: z.ZodOptional<z.ZodString>;
216
+ selector: z.ZodOptional<z.ZodString>;
217
+ text: z.ZodOptional<z.ZodString>;
218
+ threshold: z.ZodOptional<z.ZodNumber>;
219
+ waitMs: z.ZodOptional<z.ZodNumber>;
220
+ }, z.core.$strict>;
221
+ recovery: z.ZodObject<{
222
+ retries: z.ZodNumber;
223
+ useSelectorMemory: z.ZodBoolean;
224
+ useAltInteraction: z.ZodBoolean;
225
+ allowReload: z.ZodBoolean;
226
+ allowHealer: z.ZodBoolean;
227
+ }, z.core.$strict>;
228
+ timeoutMs: z.ZodNumber;
229
+ maxFailures: z.ZodNumber;
230
+ stepId: z.ZodOptional<z.ZodString>;
231
+ kind: z.ZodLiteral<"DISMISS_OVERLAYS">;
232
+ }, z.core.$strict>, z.ZodObject<{
233
+ urlPattern: z.ZodString;
234
+ description: z.ZodString;
235
+ postcondition: z.ZodObject<{
236
+ type: z.ZodEnum<{
237
+ route_matches: "route_matches";
238
+ element_visible: "element_visible";
239
+ element_absent: "element_absent";
240
+ text_contains: "text_contains";
241
+ overlay_dismissed: "overlay_dismissed";
242
+ screenshot_stable: "screenshot_stable";
243
+ any_change: "any_change";
244
+ always: "always";
245
+ }>;
246
+ pattern: z.ZodOptional<z.ZodString>;
247
+ selector: z.ZodOptional<z.ZodString>;
248
+ text: z.ZodOptional<z.ZodString>;
249
+ threshold: z.ZodOptional<z.ZodNumber>;
250
+ waitMs: z.ZodOptional<z.ZodNumber>;
251
+ }, z.core.$strict>;
252
+ recovery: z.ZodObject<{
253
+ retries: z.ZodNumber;
254
+ useSelectorMemory: z.ZodBoolean;
255
+ useAltInteraction: z.ZodBoolean;
256
+ allowReload: z.ZodBoolean;
257
+ allowHealer: z.ZodBoolean;
258
+ }, z.core.$strict>;
259
+ timeoutMs: z.ZodNumber;
260
+ maxFailures: z.ZodNumber;
261
+ stepId: z.ZodOptional<z.ZodString>;
262
+ kind: z.ZodLiteral<"ASSERT_ROUTE">;
263
+ }, z.core.$strict>, z.ZodObject<{
264
+ selectors: z.ZodArray<z.ZodString>;
265
+ matchAll: z.ZodBoolean;
266
+ description: z.ZodString;
267
+ postcondition: z.ZodObject<{
268
+ type: z.ZodEnum<{
269
+ route_matches: "route_matches";
270
+ element_visible: "element_visible";
271
+ element_absent: "element_absent";
272
+ text_contains: "text_contains";
273
+ overlay_dismissed: "overlay_dismissed";
274
+ screenshot_stable: "screenshot_stable";
275
+ any_change: "any_change";
276
+ always: "always";
277
+ }>;
278
+ pattern: z.ZodOptional<z.ZodString>;
279
+ selector: z.ZodOptional<z.ZodString>;
280
+ text: z.ZodOptional<z.ZodString>;
281
+ threshold: z.ZodOptional<z.ZodNumber>;
282
+ waitMs: z.ZodOptional<z.ZodNumber>;
283
+ }, z.core.$strict>;
284
+ recovery: z.ZodObject<{
285
+ retries: z.ZodNumber;
286
+ useSelectorMemory: z.ZodBoolean;
287
+ useAltInteraction: z.ZodBoolean;
288
+ allowReload: z.ZodBoolean;
289
+ allowHealer: z.ZodBoolean;
290
+ }, z.core.$strict>;
291
+ timeoutMs: z.ZodNumber;
292
+ maxFailures: z.ZodNumber;
293
+ stepId: z.ZodOptional<z.ZodString>;
294
+ kind: z.ZodLiteral<"ASSERT_SURFACE">;
295
+ }, z.core.$strict>, z.ZodObject<{
296
+ selector: z.ZodString;
297
+ target: z.ZodOptional<z.ZodObject<{
298
+ text: z.ZodOptional<z.ZodString>;
299
+ role: z.ZodOptional<z.ZodString>;
300
+ label: z.ZodOptional<z.ZodString>;
301
+ near: z.ZodOptional<z.ZodString>;
302
+ placeholder: z.ZodOptional<z.ZodString>;
303
+ exact: z.ZodOptional<z.ZodBoolean>;
304
+ }, z.core.$strict>>;
305
+ button: z.ZodOptional<z.ZodEnum<{
306
+ right: "right";
307
+ middle: "middle";
308
+ }>>;
309
+ fingerprint: z.ZodOptional<z.ZodString>;
310
+ selectorAlternates: z.ZodOptional<z.ZodArray<z.ZodString>>;
311
+ description: z.ZodString;
312
+ postcondition: z.ZodObject<{
313
+ type: z.ZodEnum<{
314
+ route_matches: "route_matches";
315
+ element_visible: "element_visible";
316
+ element_absent: "element_absent";
317
+ text_contains: "text_contains";
318
+ overlay_dismissed: "overlay_dismissed";
319
+ screenshot_stable: "screenshot_stable";
320
+ any_change: "any_change";
321
+ always: "always";
322
+ }>;
323
+ pattern: z.ZodOptional<z.ZodString>;
324
+ selector: z.ZodOptional<z.ZodString>;
325
+ text: z.ZodOptional<z.ZodString>;
326
+ threshold: z.ZodOptional<z.ZodNumber>;
327
+ waitMs: z.ZodOptional<z.ZodNumber>;
328
+ }, z.core.$strict>;
329
+ recovery: z.ZodObject<{
330
+ retries: z.ZodNumber;
331
+ useSelectorMemory: z.ZodBoolean;
332
+ useAltInteraction: z.ZodBoolean;
333
+ allowReload: z.ZodBoolean;
334
+ allowHealer: z.ZodBoolean;
335
+ }, z.core.$strict>;
336
+ timeoutMs: z.ZodNumber;
337
+ maxFailures: z.ZodNumber;
338
+ stepId: z.ZodOptional<z.ZodString>;
339
+ kind: z.ZodLiteral<"CLICK">;
340
+ }, z.core.$strict>, z.ZodObject<{
341
+ selector: z.ZodString;
342
+ target: z.ZodOptional<z.ZodObject<{
343
+ text: z.ZodOptional<z.ZodString>;
344
+ role: z.ZodOptional<z.ZodString>;
345
+ label: z.ZodOptional<z.ZodString>;
346
+ near: z.ZodOptional<z.ZodString>;
347
+ placeholder: z.ZodOptional<z.ZodString>;
348
+ exact: z.ZodOptional<z.ZodBoolean>;
349
+ }, z.core.$strict>>;
350
+ text: z.ZodString;
351
+ textByLocale: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
352
+ clearFirst: z.ZodBoolean;
353
+ fingerprint: z.ZodOptional<z.ZodString>;
354
+ selectorAlternates: z.ZodOptional<z.ZodArray<z.ZodString>>;
355
+ description: z.ZodString;
356
+ postcondition: z.ZodObject<{
357
+ type: z.ZodEnum<{
358
+ route_matches: "route_matches";
359
+ element_visible: "element_visible";
360
+ element_absent: "element_absent";
361
+ text_contains: "text_contains";
362
+ overlay_dismissed: "overlay_dismissed";
363
+ screenshot_stable: "screenshot_stable";
364
+ any_change: "any_change";
365
+ always: "always";
366
+ }>;
367
+ pattern: z.ZodOptional<z.ZodString>;
368
+ selector: z.ZodOptional<z.ZodString>;
369
+ text: z.ZodOptional<z.ZodString>;
370
+ threshold: z.ZodOptional<z.ZodNumber>;
371
+ waitMs: z.ZodOptional<z.ZodNumber>;
372
+ }, z.core.$strict>;
373
+ recovery: z.ZodObject<{
374
+ retries: z.ZodNumber;
375
+ useSelectorMemory: z.ZodBoolean;
376
+ useAltInteraction: z.ZodBoolean;
377
+ allowReload: z.ZodBoolean;
378
+ allowHealer: z.ZodBoolean;
379
+ }, z.core.$strict>;
380
+ timeoutMs: z.ZodNumber;
381
+ maxFailures: z.ZodNumber;
382
+ stepId: z.ZodOptional<z.ZodString>;
383
+ kind: z.ZodLiteral<"TYPE">;
384
+ }, z.core.$strict>, z.ZodObject<{
385
+ key: z.ZodString;
386
+ description: z.ZodString;
387
+ postcondition: z.ZodObject<{
388
+ type: z.ZodEnum<{
389
+ route_matches: "route_matches";
390
+ element_visible: "element_visible";
391
+ element_absent: "element_absent";
392
+ text_contains: "text_contains";
393
+ overlay_dismissed: "overlay_dismissed";
394
+ screenshot_stable: "screenshot_stable";
395
+ any_change: "any_change";
396
+ always: "always";
397
+ }>;
398
+ pattern: z.ZodOptional<z.ZodString>;
399
+ selector: z.ZodOptional<z.ZodString>;
400
+ text: z.ZodOptional<z.ZodString>;
401
+ threshold: z.ZodOptional<z.ZodNumber>;
402
+ waitMs: z.ZodOptional<z.ZodNumber>;
403
+ }, z.core.$strict>;
404
+ recovery: z.ZodObject<{
405
+ retries: z.ZodNumber;
406
+ useSelectorMemory: z.ZodBoolean;
407
+ useAltInteraction: z.ZodBoolean;
408
+ allowReload: z.ZodBoolean;
409
+ allowHealer: z.ZodBoolean;
410
+ }, z.core.$strict>;
411
+ timeoutMs: z.ZodNumber;
412
+ maxFailures: z.ZodNumber;
413
+ stepId: z.ZodOptional<z.ZodString>;
414
+ kind: z.ZodLiteral<"PRESS_KEY">;
415
+ }, z.core.$strict>, z.ZodObject<{
416
+ selector: z.ZodOptional<z.ZodString>;
417
+ target: z.ZodOptional<z.ZodObject<{
418
+ text: z.ZodOptional<z.ZodString>;
419
+ role: z.ZodOptional<z.ZodString>;
420
+ label: z.ZodOptional<z.ZodString>;
421
+ near: z.ZodOptional<z.ZodString>;
422
+ placeholder: z.ZodOptional<z.ZodString>;
423
+ exact: z.ZodOptional<z.ZodBoolean>;
424
+ }, z.core.$strict>>;
425
+ state: z.ZodEnum<{
426
+ visible: "visible";
427
+ attached: "attached";
428
+ }>;
429
+ description: z.ZodString;
430
+ postcondition: z.ZodObject<{
431
+ type: z.ZodEnum<{
432
+ route_matches: "route_matches";
433
+ element_visible: "element_visible";
434
+ element_absent: "element_absent";
435
+ text_contains: "text_contains";
436
+ overlay_dismissed: "overlay_dismissed";
437
+ screenshot_stable: "screenshot_stable";
438
+ any_change: "any_change";
439
+ always: "always";
440
+ }>;
441
+ pattern: z.ZodOptional<z.ZodString>;
442
+ selector: z.ZodOptional<z.ZodString>;
443
+ text: z.ZodOptional<z.ZodString>;
444
+ threshold: z.ZodOptional<z.ZodNumber>;
445
+ waitMs: z.ZodOptional<z.ZodNumber>;
446
+ }, z.core.$strict>;
447
+ recovery: z.ZodObject<{
448
+ retries: z.ZodNumber;
449
+ useSelectorMemory: z.ZodBoolean;
450
+ useAltInteraction: z.ZodBoolean;
451
+ allowReload: z.ZodBoolean;
452
+ allowHealer: z.ZodBoolean;
453
+ }, z.core.$strict>;
454
+ timeoutMs: z.ZodNumber;
455
+ maxFailures: z.ZodNumber;
456
+ stepId: z.ZodOptional<z.ZodString>;
457
+ kind: z.ZodLiteral<"WAIT_FOR">;
458
+ }, z.core.$strict>, z.ZodObject<{
459
+ durationMs: z.ZodNumber;
460
+ narrationText: z.ZodOptional<z.ZodString>;
461
+ narrationTextByLocale: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
462
+ description: z.ZodString;
463
+ postcondition: z.ZodObject<{
464
+ type: z.ZodEnum<{
465
+ route_matches: "route_matches";
466
+ element_visible: "element_visible";
467
+ element_absent: "element_absent";
468
+ text_contains: "text_contains";
469
+ overlay_dismissed: "overlay_dismissed";
470
+ screenshot_stable: "screenshot_stable";
471
+ any_change: "any_change";
472
+ always: "always";
473
+ }>;
474
+ pattern: z.ZodOptional<z.ZodString>;
475
+ selector: z.ZodOptional<z.ZodString>;
476
+ text: z.ZodOptional<z.ZodString>;
477
+ threshold: z.ZodOptional<z.ZodNumber>;
478
+ waitMs: z.ZodOptional<z.ZodNumber>;
479
+ }, z.core.$strict>;
480
+ recovery: z.ZodObject<{
481
+ retries: z.ZodNumber;
482
+ useSelectorMemory: z.ZodBoolean;
483
+ useAltInteraction: z.ZodBoolean;
484
+ allowReload: z.ZodBoolean;
485
+ allowHealer: z.ZodBoolean;
486
+ }, z.core.$strict>;
487
+ timeoutMs: z.ZodNumber;
488
+ maxFailures: z.ZodNumber;
489
+ stepId: z.ZodOptional<z.ZodString>;
490
+ kind: z.ZodLiteral<"SLEEP">;
491
+ }, z.core.$strict>, z.ZodObject<{
492
+ locale: z.ZodString;
493
+ method: z.ZodEnum<{
494
+ browser_context: "browser_context";
495
+ ui_interaction: "ui_interaction";
496
+ storage: "storage";
497
+ }>;
498
+ selector: z.ZodOptional<z.ZodString>;
499
+ storageHints: z.ZodOptional<z.ZodArray<z.ZodObject<{
500
+ storage: z.ZodEnum<{
501
+ localStorage: "localStorage";
502
+ sessionStorage: "sessionStorage";
503
+ cookie: "cookie";
504
+ }>;
505
+ key: z.ZodString;
506
+ value: z.ZodString;
507
+ }, z.core.$strict>>>;
508
+ description: z.ZodString;
509
+ postcondition: z.ZodObject<{
510
+ type: z.ZodEnum<{
511
+ route_matches: "route_matches";
512
+ element_visible: "element_visible";
513
+ element_absent: "element_absent";
514
+ text_contains: "text_contains";
515
+ overlay_dismissed: "overlay_dismissed";
516
+ screenshot_stable: "screenshot_stable";
517
+ any_change: "any_change";
518
+ always: "always";
519
+ }>;
520
+ pattern: z.ZodOptional<z.ZodString>;
521
+ selector: z.ZodOptional<z.ZodString>;
522
+ text: z.ZodOptional<z.ZodString>;
523
+ threshold: z.ZodOptional<z.ZodNumber>;
524
+ waitMs: z.ZodOptional<z.ZodNumber>;
525
+ }, z.core.$strict>;
526
+ recovery: z.ZodObject<{
527
+ retries: z.ZodNumber;
528
+ useSelectorMemory: z.ZodBoolean;
529
+ useAltInteraction: z.ZodBoolean;
530
+ allowReload: z.ZodBoolean;
531
+ allowHealer: z.ZodBoolean;
532
+ }, z.core.$strict>;
533
+ timeoutMs: z.ZodNumber;
534
+ maxFailures: z.ZodNumber;
535
+ stepId: z.ZodOptional<z.ZodString>;
536
+ kind: z.ZodLiteral<"SET_LOCALE">;
537
+ }, z.core.$strict>, z.ZodObject<{
538
+ theme: z.ZodEnum<{
539
+ light: "light";
540
+ dark: "dark";
541
+ $variant: "$variant";
542
+ }>;
543
+ method: z.ZodEnum<{
544
+ ui_interaction: "ui_interaction";
545
+ storage: "storage";
546
+ color_scheme: "color_scheme";
547
+ }>;
548
+ selector: z.ZodOptional<z.ZodString>;
549
+ storageHints: z.ZodOptional<z.ZodArray<z.ZodObject<{
550
+ storage: z.ZodEnum<{
551
+ localStorage: "localStorage";
552
+ sessionStorage: "sessionStorage";
553
+ cookie: "cookie";
554
+ }>;
555
+ key: z.ZodString;
556
+ value: z.ZodString;
557
+ }, z.core.$strict>>>;
558
+ description: z.ZodString;
559
+ postcondition: z.ZodObject<{
560
+ type: z.ZodEnum<{
561
+ route_matches: "route_matches";
562
+ element_visible: "element_visible";
563
+ element_absent: "element_absent";
564
+ text_contains: "text_contains";
565
+ overlay_dismissed: "overlay_dismissed";
566
+ screenshot_stable: "screenshot_stable";
567
+ any_change: "any_change";
568
+ always: "always";
569
+ }>;
570
+ pattern: z.ZodOptional<z.ZodString>;
571
+ selector: z.ZodOptional<z.ZodString>;
572
+ text: z.ZodOptional<z.ZodString>;
573
+ threshold: z.ZodOptional<z.ZodNumber>;
574
+ waitMs: z.ZodOptional<z.ZodNumber>;
575
+ }, z.core.$strict>;
576
+ recovery: z.ZodObject<{
577
+ retries: z.ZodNumber;
578
+ useSelectorMemory: z.ZodBoolean;
579
+ useAltInteraction: z.ZodBoolean;
580
+ allowReload: z.ZodBoolean;
581
+ allowHealer: z.ZodBoolean;
582
+ }, z.core.$strict>;
583
+ timeoutMs: z.ZodNumber;
584
+ maxFailures: z.ZodNumber;
585
+ stepId: z.ZodOptional<z.ZodString>;
586
+ kind: z.ZodLiteral<"SET_THEME">;
587
+ }, z.core.$strict>, z.ZodObject<{
588
+ direction: z.ZodEnum<{
589
+ up: "up";
590
+ down: "down";
591
+ left: "left";
592
+ right: "right";
593
+ }>;
594
+ amount: z.ZodOptional<z.ZodNumber>;
595
+ targetSelector: z.ZodOptional<z.ZodString>;
596
+ target: z.ZodOptional<z.ZodObject<{
597
+ text: z.ZodOptional<z.ZodString>;
598
+ role: z.ZodOptional<z.ZodString>;
599
+ label: z.ZodOptional<z.ZodString>;
600
+ near: z.ZodOptional<z.ZodString>;
601
+ placeholder: z.ZodOptional<z.ZodString>;
602
+ exact: z.ZodOptional<z.ZodBoolean>;
603
+ }, z.core.$strict>>;
604
+ description: z.ZodString;
605
+ postcondition: z.ZodObject<{
606
+ type: z.ZodEnum<{
607
+ route_matches: "route_matches";
608
+ element_visible: "element_visible";
609
+ element_absent: "element_absent";
610
+ text_contains: "text_contains";
611
+ overlay_dismissed: "overlay_dismissed";
612
+ screenshot_stable: "screenshot_stable";
613
+ any_change: "any_change";
614
+ always: "always";
615
+ }>;
616
+ pattern: z.ZodOptional<z.ZodString>;
617
+ selector: z.ZodOptional<z.ZodString>;
618
+ text: z.ZodOptional<z.ZodString>;
619
+ threshold: z.ZodOptional<z.ZodNumber>;
620
+ waitMs: z.ZodOptional<z.ZodNumber>;
621
+ }, z.core.$strict>;
622
+ recovery: z.ZodObject<{
623
+ retries: z.ZodNumber;
624
+ useSelectorMemory: z.ZodBoolean;
625
+ useAltInteraction: z.ZodBoolean;
626
+ allowReload: z.ZodBoolean;
627
+ allowHealer: z.ZodBoolean;
628
+ }, z.core.$strict>;
629
+ timeoutMs: z.ZodNumber;
630
+ maxFailures: z.ZodNumber;
631
+ stepId: z.ZodOptional<z.ZodString>;
632
+ kind: z.ZodLiteral<"SCROLL">;
633
+ }, z.core.$strict>, z.ZodObject<{
634
+ captureId: z.ZodOptional<z.ZodString>;
635
+ captureName: z.ZodOptional<z.ZodString>;
636
+ elementSelector: z.ZodOptional<z.ZodString>;
637
+ description: z.ZodString;
638
+ postcondition: z.ZodObject<{
639
+ type: z.ZodEnum<{
640
+ route_matches: "route_matches";
641
+ element_visible: "element_visible";
642
+ element_absent: "element_absent";
643
+ text_contains: "text_contains";
644
+ overlay_dismissed: "overlay_dismissed";
645
+ screenshot_stable: "screenshot_stable";
646
+ any_change: "any_change";
647
+ always: "always";
648
+ }>;
649
+ pattern: z.ZodOptional<z.ZodString>;
650
+ selector: z.ZodOptional<z.ZodString>;
651
+ text: z.ZodOptional<z.ZodString>;
652
+ threshold: z.ZodOptional<z.ZodNumber>;
653
+ waitMs: z.ZodOptional<z.ZodNumber>;
654
+ }, z.core.$strict>;
655
+ recovery: z.ZodObject<{
656
+ retries: z.ZodNumber;
657
+ useSelectorMemory: z.ZodBoolean;
658
+ useAltInteraction: z.ZodBoolean;
659
+ allowReload: z.ZodBoolean;
660
+ allowHealer: z.ZodBoolean;
661
+ }, z.core.$strict>;
662
+ timeoutMs: z.ZodNumber;
663
+ maxFailures: z.ZodNumber;
664
+ stepId: z.ZodOptional<z.ZodString>;
665
+ kind: z.ZodLiteral<"CAPTURE_SCREENSHOT">;
666
+ }, z.core.$strict>, z.ZodObject<{
667
+ clipId: z.ZodOptional<z.ZodString>;
668
+ clipName: z.ZodOptional<z.ZodString>;
669
+ description: z.ZodString;
670
+ postcondition: z.ZodObject<{
671
+ type: z.ZodEnum<{
672
+ route_matches: "route_matches";
673
+ element_visible: "element_visible";
674
+ element_absent: "element_absent";
675
+ text_contains: "text_contains";
676
+ overlay_dismissed: "overlay_dismissed";
677
+ screenshot_stable: "screenshot_stable";
678
+ any_change: "any_change";
679
+ always: "always";
680
+ }>;
681
+ pattern: z.ZodOptional<z.ZodString>;
682
+ selector: z.ZodOptional<z.ZodString>;
683
+ text: z.ZodOptional<z.ZodString>;
684
+ threshold: z.ZodOptional<z.ZodNumber>;
685
+ waitMs: z.ZodOptional<z.ZodNumber>;
686
+ }, z.core.$strict>;
687
+ recovery: z.ZodObject<{
688
+ retries: z.ZodNumber;
689
+ useSelectorMemory: z.ZodBoolean;
690
+ useAltInteraction: z.ZodBoolean;
691
+ allowReload: z.ZodBoolean;
692
+ allowHealer: z.ZodBoolean;
693
+ }, z.core.$strict>;
694
+ timeoutMs: z.ZodNumber;
695
+ maxFailures: z.ZodNumber;
696
+ stepId: z.ZodOptional<z.ZodString>;
697
+ kind: z.ZodLiteral<"BEGIN_CLIP">;
698
+ }, z.core.$strict>, z.ZodObject<{
699
+ clipId: z.ZodOptional<z.ZodString>;
700
+ clipName: z.ZodOptional<z.ZodString>;
701
+ description: z.ZodString;
702
+ postcondition: z.ZodObject<{
703
+ type: z.ZodEnum<{
704
+ route_matches: "route_matches";
705
+ element_visible: "element_visible";
706
+ element_absent: "element_absent";
707
+ text_contains: "text_contains";
708
+ overlay_dismissed: "overlay_dismissed";
709
+ screenshot_stable: "screenshot_stable";
710
+ any_change: "any_change";
711
+ always: "always";
712
+ }>;
713
+ pattern: z.ZodOptional<z.ZodString>;
714
+ selector: z.ZodOptional<z.ZodString>;
715
+ text: z.ZodOptional<z.ZodString>;
716
+ threshold: z.ZodOptional<z.ZodNumber>;
717
+ waitMs: z.ZodOptional<z.ZodNumber>;
718
+ }, z.core.$strict>;
719
+ recovery: z.ZodObject<{
720
+ retries: z.ZodNumber;
721
+ useSelectorMemory: z.ZodBoolean;
722
+ useAltInteraction: z.ZodBoolean;
723
+ allowReload: z.ZodBoolean;
724
+ allowHealer: z.ZodBoolean;
725
+ }, z.core.$strict>;
726
+ timeoutMs: z.ZodNumber;
727
+ maxFailures: z.ZodNumber;
728
+ stepId: z.ZodOptional<z.ZodString>;
729
+ kind: z.ZodLiteral<"END_CLIP">;
730
+ }, z.core.$strict>, z.ZodObject<{
731
+ selector: z.ZodString;
732
+ target: z.ZodOptional<z.ZodObject<{
733
+ text: z.ZodOptional<z.ZodString>;
734
+ role: z.ZodOptional<z.ZodString>;
735
+ label: z.ZodOptional<z.ZodString>;
736
+ near: z.ZodOptional<z.ZodString>;
737
+ placeholder: z.ZodOptional<z.ZodString>;
738
+ exact: z.ZodOptional<z.ZodBoolean>;
739
+ }, z.core.$strict>>;
740
+ fingerprint: z.ZodOptional<z.ZodString>;
741
+ selectorAlternates: z.ZodOptional<z.ZodArray<z.ZodString>>;
742
+ description: z.ZodString;
743
+ postcondition: z.ZodObject<{
744
+ type: z.ZodEnum<{
745
+ route_matches: "route_matches";
746
+ element_visible: "element_visible";
747
+ element_absent: "element_absent";
748
+ text_contains: "text_contains";
749
+ overlay_dismissed: "overlay_dismissed";
750
+ screenshot_stable: "screenshot_stable";
751
+ any_change: "any_change";
752
+ always: "always";
753
+ }>;
754
+ pattern: z.ZodOptional<z.ZodString>;
755
+ selector: z.ZodOptional<z.ZodString>;
756
+ text: z.ZodOptional<z.ZodString>;
757
+ threshold: z.ZodOptional<z.ZodNumber>;
758
+ waitMs: z.ZodOptional<z.ZodNumber>;
759
+ }, z.core.$strict>;
760
+ recovery: z.ZodObject<{
761
+ retries: z.ZodNumber;
762
+ useSelectorMemory: z.ZodBoolean;
763
+ useAltInteraction: z.ZodBoolean;
764
+ allowReload: z.ZodBoolean;
765
+ allowHealer: z.ZodBoolean;
766
+ }, z.core.$strict>;
767
+ timeoutMs: z.ZodNumber;
768
+ maxFailures: z.ZodNumber;
769
+ stepId: z.ZodOptional<z.ZodString>;
770
+ kind: z.ZodLiteral<"HOVER">;
771
+ }, z.core.$strict>, z.ZodObject<{
772
+ selector: z.ZodString;
773
+ target: z.ZodOptional<z.ZodObject<{
774
+ text: z.ZodOptional<z.ZodString>;
775
+ role: z.ZodOptional<z.ZodString>;
776
+ label: z.ZodOptional<z.ZodString>;
777
+ near: z.ZodOptional<z.ZodString>;
778
+ placeholder: z.ZodOptional<z.ZodString>;
779
+ exact: z.ZodOptional<z.ZodBoolean>;
780
+ }, z.core.$strict>>;
781
+ optionLabel: z.ZodOptional<z.ZodString>;
782
+ optionValue: z.ZodOptional<z.ZodString>;
783
+ optionIndex: z.ZodOptional<z.ZodNumber>;
784
+ fingerprint: z.ZodOptional<z.ZodString>;
785
+ selectorAlternates: z.ZodOptional<z.ZodArray<z.ZodString>>;
786
+ description: z.ZodString;
787
+ postcondition: z.ZodObject<{
788
+ type: z.ZodEnum<{
789
+ route_matches: "route_matches";
790
+ element_visible: "element_visible";
791
+ element_absent: "element_absent";
792
+ text_contains: "text_contains";
793
+ overlay_dismissed: "overlay_dismissed";
794
+ screenshot_stable: "screenshot_stable";
795
+ any_change: "any_change";
796
+ always: "always";
797
+ }>;
798
+ pattern: z.ZodOptional<z.ZodString>;
799
+ selector: z.ZodOptional<z.ZodString>;
800
+ text: z.ZodOptional<z.ZodString>;
801
+ threshold: z.ZodOptional<z.ZodNumber>;
802
+ waitMs: z.ZodOptional<z.ZodNumber>;
803
+ }, z.core.$strict>;
804
+ recovery: z.ZodObject<{
805
+ retries: z.ZodNumber;
806
+ useSelectorMemory: z.ZodBoolean;
807
+ useAltInteraction: z.ZodBoolean;
808
+ allowReload: z.ZodBoolean;
809
+ allowHealer: z.ZodBoolean;
810
+ }, z.core.$strict>;
811
+ timeoutMs: z.ZodNumber;
812
+ maxFailures: z.ZodNumber;
813
+ stepId: z.ZodOptional<z.ZodString>;
814
+ kind: z.ZodLiteral<"SELECT_OPTION">;
815
+ }, z.core.$strict>, z.ZodObject<{
816
+ selector: z.ZodString;
817
+ target: z.ZodOptional<z.ZodObject<{
818
+ text: z.ZodOptional<z.ZodString>;
819
+ role: z.ZodOptional<z.ZodString>;
820
+ label: z.ZodOptional<z.ZodString>;
821
+ near: z.ZodOptional<z.ZodString>;
822
+ placeholder: z.ZodOptional<z.ZodString>;
823
+ exact: z.ZodOptional<z.ZodBoolean>;
824
+ }, z.core.$strict>>;
825
+ checked: z.ZodBoolean;
826
+ fingerprint: z.ZodOptional<z.ZodString>;
827
+ selectorAlternates: z.ZodOptional<z.ZodArray<z.ZodString>>;
828
+ description: z.ZodString;
829
+ postcondition: z.ZodObject<{
830
+ type: z.ZodEnum<{
831
+ route_matches: "route_matches";
832
+ element_visible: "element_visible";
833
+ element_absent: "element_absent";
834
+ text_contains: "text_contains";
835
+ overlay_dismissed: "overlay_dismissed";
836
+ screenshot_stable: "screenshot_stable";
837
+ any_change: "any_change";
838
+ always: "always";
839
+ }>;
840
+ pattern: z.ZodOptional<z.ZodString>;
841
+ selector: z.ZodOptional<z.ZodString>;
842
+ text: z.ZodOptional<z.ZodString>;
843
+ threshold: z.ZodOptional<z.ZodNumber>;
844
+ waitMs: z.ZodOptional<z.ZodNumber>;
845
+ }, z.core.$strict>;
846
+ recovery: z.ZodObject<{
847
+ retries: z.ZodNumber;
848
+ useSelectorMemory: z.ZodBoolean;
849
+ useAltInteraction: z.ZodBoolean;
850
+ allowReload: z.ZodBoolean;
851
+ allowHealer: z.ZodBoolean;
852
+ }, z.core.$strict>;
853
+ timeoutMs: z.ZodNumber;
854
+ maxFailures: z.ZodNumber;
855
+ stepId: z.ZodOptional<z.ZodString>;
856
+ kind: z.ZodLiteral<"CHECK">;
857
+ }, z.core.$strict>, z.ZodObject<{
858
+ selector: z.ZodString;
859
+ target: z.ZodOptional<z.ZodObject<{
860
+ text: z.ZodOptional<z.ZodString>;
861
+ role: z.ZodOptional<z.ZodString>;
862
+ label: z.ZodOptional<z.ZodString>;
863
+ near: z.ZodOptional<z.ZodString>;
864
+ placeholder: z.ZodOptional<z.ZodString>;
865
+ exact: z.ZodOptional<z.ZodBoolean>;
866
+ }, z.core.$strict>>;
867
+ fingerprint: z.ZodOptional<z.ZodString>;
868
+ selectorAlternates: z.ZodOptional<z.ZodArray<z.ZodString>>;
869
+ description: z.ZodString;
870
+ postcondition: z.ZodObject<{
871
+ type: z.ZodEnum<{
872
+ route_matches: "route_matches";
873
+ element_visible: "element_visible";
874
+ element_absent: "element_absent";
875
+ text_contains: "text_contains";
876
+ overlay_dismissed: "overlay_dismissed";
877
+ screenshot_stable: "screenshot_stable";
878
+ any_change: "any_change";
879
+ always: "always";
880
+ }>;
881
+ pattern: z.ZodOptional<z.ZodString>;
882
+ selector: z.ZodOptional<z.ZodString>;
883
+ text: z.ZodOptional<z.ZodString>;
884
+ threshold: z.ZodOptional<z.ZodNumber>;
885
+ waitMs: z.ZodOptional<z.ZodNumber>;
886
+ }, z.core.$strict>;
887
+ recovery: z.ZodObject<{
888
+ retries: z.ZodNumber;
889
+ useSelectorMemory: z.ZodBoolean;
890
+ useAltInteraction: z.ZodBoolean;
891
+ allowReload: z.ZodBoolean;
892
+ allowHealer: z.ZodBoolean;
893
+ }, z.core.$strict>;
894
+ timeoutMs: z.ZodNumber;
895
+ maxFailures: z.ZodNumber;
896
+ stepId: z.ZodOptional<z.ZodString>;
897
+ kind: z.ZodLiteral<"DOUBLE_CLICK">;
898
+ }, z.core.$strict>, z.ZodObject<{
899
+ selector: z.ZodString;
900
+ target: z.ZodOptional<z.ZodObject<{
901
+ text: z.ZodOptional<z.ZodString>;
902
+ role: z.ZodOptional<z.ZodString>;
903
+ label: z.ZodOptional<z.ZodString>;
904
+ near: z.ZodOptional<z.ZodString>;
905
+ placeholder: z.ZodOptional<z.ZodString>;
906
+ exact: z.ZodOptional<z.ZodBoolean>;
907
+ }, z.core.$strict>>;
908
+ fingerprint: z.ZodOptional<z.ZodString>;
909
+ selectorAlternates: z.ZodOptional<z.ZodArray<z.ZodString>>;
910
+ toSelector: z.ZodOptional<z.ZodString>;
911
+ toTarget: z.ZodOptional<z.ZodObject<{
912
+ text: z.ZodOptional<z.ZodString>;
913
+ role: z.ZodOptional<z.ZodString>;
914
+ label: z.ZodOptional<z.ZodString>;
915
+ near: z.ZodOptional<z.ZodString>;
916
+ placeholder: z.ZodOptional<z.ZodString>;
917
+ exact: z.ZodOptional<z.ZodBoolean>;
918
+ }, z.core.$strict>>;
919
+ toSelectorAlternates: z.ZodOptional<z.ZodArray<z.ZodString>>;
920
+ offset: z.ZodOptional<z.ZodObject<{
921
+ dx: z.ZodNumber;
922
+ dy: z.ZodNumber;
923
+ }, z.core.$strict>>;
924
+ description: z.ZodString;
925
+ postcondition: z.ZodObject<{
926
+ type: z.ZodEnum<{
927
+ route_matches: "route_matches";
928
+ element_visible: "element_visible";
929
+ element_absent: "element_absent";
930
+ text_contains: "text_contains";
931
+ overlay_dismissed: "overlay_dismissed";
932
+ screenshot_stable: "screenshot_stable";
933
+ any_change: "any_change";
934
+ always: "always";
935
+ }>;
936
+ pattern: z.ZodOptional<z.ZodString>;
937
+ selector: z.ZodOptional<z.ZodString>;
938
+ text: z.ZodOptional<z.ZodString>;
939
+ threshold: z.ZodOptional<z.ZodNumber>;
940
+ waitMs: z.ZodOptional<z.ZodNumber>;
941
+ }, z.core.$strict>;
942
+ recovery: z.ZodObject<{
943
+ retries: z.ZodNumber;
944
+ useSelectorMemory: z.ZodBoolean;
945
+ useAltInteraction: z.ZodBoolean;
946
+ allowReload: z.ZodBoolean;
947
+ allowHealer: z.ZodBoolean;
948
+ }, z.core.$strict>;
949
+ timeoutMs: z.ZodNumber;
950
+ maxFailures: z.ZodNumber;
951
+ stepId: z.ZodOptional<z.ZodString>;
952
+ kind: z.ZodLiteral<"DRAG">;
953
+ }, z.core.$strict>, z.ZodObject<{
954
+ sourceSelector: z.ZodString;
955
+ containerSelector: z.ZodString;
956
+ count: z.ZodNumber;
957
+ removeSource: z.ZodOptional<z.ZodBoolean>;
958
+ description: z.ZodString;
959
+ postcondition: z.ZodObject<{
960
+ type: z.ZodEnum<{
961
+ route_matches: "route_matches";
962
+ element_visible: "element_visible";
963
+ element_absent: "element_absent";
964
+ text_contains: "text_contains";
965
+ overlay_dismissed: "overlay_dismissed";
966
+ screenshot_stable: "screenshot_stable";
967
+ any_change: "any_change";
968
+ always: "always";
969
+ }>;
970
+ pattern: z.ZodOptional<z.ZodString>;
971
+ selector: z.ZodOptional<z.ZodString>;
972
+ text: z.ZodOptional<z.ZodString>;
973
+ threshold: z.ZodOptional<z.ZodNumber>;
974
+ waitMs: z.ZodOptional<z.ZodNumber>;
975
+ }, z.core.$strict>;
976
+ recovery: z.ZodObject<{
977
+ retries: z.ZodNumber;
978
+ useSelectorMemory: z.ZodBoolean;
979
+ useAltInteraction: z.ZodBoolean;
980
+ allowReload: z.ZodBoolean;
981
+ allowHealer: z.ZodBoolean;
982
+ }, z.core.$strict>;
983
+ timeoutMs: z.ZodNumber;
984
+ maxFailures: z.ZodNumber;
985
+ stepId: z.ZodOptional<z.ZodString>;
986
+ kind: z.ZodLiteral<"CLONE_ELEMENT">;
987
+ }, z.core.$strict>, z.ZodObject<{
988
+ groupName: z.ZodString;
989
+ containerSelector: z.ZodOptional<z.ZodString>;
990
+ templateSelector: z.ZodOptional<z.ZodString>;
991
+ count: z.ZodOptional<z.ZodNumber>;
992
+ removeTemplate: z.ZodOptional<z.ZodBoolean>;
993
+ slotMappings: z.ZodOptional<z.ZodArray<z.ZodObject<{
994
+ slot: z.ZodString;
995
+ selector: z.ZodString;
996
+ attribute: z.ZodOptional<z.ZodString>;
997
+ }, z.core.$strict>>>;
998
+ inputSelector: z.ZodOptional<z.ZodString>;
999
+ triggerSelector: z.ZodOptional<z.ZodString>;
1000
+ description: z.ZodString;
1001
+ postcondition: z.ZodObject<{
1002
+ type: z.ZodEnum<{
1003
+ route_matches: "route_matches";
1004
+ element_visible: "element_visible";
1005
+ element_absent: "element_absent";
1006
+ text_contains: "text_contains";
1007
+ overlay_dismissed: "overlay_dismissed";
1008
+ screenshot_stable: "screenshot_stable";
1009
+ any_change: "any_change";
1010
+ always: "always";
1011
+ }>;
1012
+ pattern: z.ZodOptional<z.ZodString>;
1013
+ selector: z.ZodOptional<z.ZodString>;
1014
+ text: z.ZodOptional<z.ZodString>;
1015
+ threshold: z.ZodOptional<z.ZodNumber>;
1016
+ waitMs: z.ZodOptional<z.ZodNumber>;
1017
+ }, z.core.$strict>;
1018
+ recovery: z.ZodObject<{
1019
+ retries: z.ZodNumber;
1020
+ useSelectorMemory: z.ZodBoolean;
1021
+ useAltInteraction: z.ZodBoolean;
1022
+ allowReload: z.ZodBoolean;
1023
+ allowHealer: z.ZodBoolean;
1024
+ }, z.core.$strict>;
1025
+ timeoutMs: z.ZodNumber;
1026
+ maxFailures: z.ZodNumber;
1027
+ stepId: z.ZodOptional<z.ZodString>;
1028
+ kind: z.ZodLiteral<"INJECT_MOCK_DATA">;
1029
+ }, z.core.$strict>, z.ZodObject<{
1030
+ selector: z.ZodString;
1031
+ description: z.ZodString;
1032
+ postcondition: z.ZodObject<{
1033
+ type: z.ZodEnum<{
1034
+ route_matches: "route_matches";
1035
+ element_visible: "element_visible";
1036
+ element_absent: "element_absent";
1037
+ text_contains: "text_contains";
1038
+ overlay_dismissed: "overlay_dismissed";
1039
+ screenshot_stable: "screenshot_stable";
1040
+ any_change: "any_change";
1041
+ always: "always";
1042
+ }>;
1043
+ pattern: z.ZodOptional<z.ZodString>;
1044
+ selector: z.ZodOptional<z.ZodString>;
1045
+ text: z.ZodOptional<z.ZodString>;
1046
+ threshold: z.ZodOptional<z.ZodNumber>;
1047
+ waitMs: z.ZodOptional<z.ZodNumber>;
1048
+ }, z.core.$strict>;
1049
+ recovery: z.ZodObject<{
1050
+ retries: z.ZodNumber;
1051
+ useSelectorMemory: z.ZodBoolean;
1052
+ useAltInteraction: z.ZodBoolean;
1053
+ allowReload: z.ZodBoolean;
1054
+ allowHealer: z.ZodBoolean;
1055
+ }, z.core.$strict>;
1056
+ timeoutMs: z.ZodNumber;
1057
+ maxFailures: z.ZodNumber;
1058
+ stepId: z.ZodOptional<z.ZodString>;
1059
+ kind: z.ZodLiteral<"REMOVE_ELEMENT">;
1060
+ }, z.core.$strict>, z.ZodObject<{
1061
+ selector: z.ZodString;
1062
+ attribute: z.ZodString;
1063
+ value: z.ZodString;
1064
+ description: z.ZodString;
1065
+ postcondition: z.ZodObject<{
1066
+ type: z.ZodEnum<{
1067
+ route_matches: "route_matches";
1068
+ element_visible: "element_visible";
1069
+ element_absent: "element_absent";
1070
+ text_contains: "text_contains";
1071
+ overlay_dismissed: "overlay_dismissed";
1072
+ screenshot_stable: "screenshot_stable";
1073
+ any_change: "any_change";
1074
+ always: "always";
1075
+ }>;
1076
+ pattern: z.ZodOptional<z.ZodString>;
1077
+ selector: z.ZodOptional<z.ZodString>;
1078
+ text: z.ZodOptional<z.ZodString>;
1079
+ threshold: z.ZodOptional<z.ZodNumber>;
1080
+ waitMs: z.ZodOptional<z.ZodNumber>;
1081
+ }, z.core.$strict>;
1082
+ recovery: z.ZodObject<{
1083
+ retries: z.ZodNumber;
1084
+ useSelectorMemory: z.ZodBoolean;
1085
+ useAltInteraction: z.ZodBoolean;
1086
+ allowReload: z.ZodBoolean;
1087
+ allowHealer: z.ZodBoolean;
1088
+ }, z.core.$strict>;
1089
+ timeoutMs: z.ZodNumber;
1090
+ maxFailures: z.ZodNumber;
1091
+ stepId: z.ZodOptional<z.ZodString>;
1092
+ kind: z.ZodLiteral<"SET_ATTRIBUTE">;
1093
+ }, z.core.$strict>], "kind">>;
1094
+ artifactPlan: z.ZodObject<{
1095
+ mediaMode: z.ZodEnum<{
1096
+ video: "video";
1097
+ clip: "clip";
1098
+ screenshot: "screenshot";
1099
+ }>;
1100
+ format: z.ZodOptional<z.ZodObject<{
1101
+ clipFormat: z.ZodOptional<z.ZodEnum<{
1102
+ gif: "gif";
1103
+ mp4: "mp4";
1104
+ both: "both";
1105
+ }>>;
1106
+ screenshotFormat: z.ZodOptional<z.ZodEnum<{
1107
+ png: "png";
1108
+ jpeg: "jpeg";
1109
+ }>>;
1110
+ captureResolution: z.ZodOptional<z.ZodObject<{
1111
+ width: z.ZodNumber;
1112
+ height: z.ZodNumber;
1113
+ }, z.core.$strict>>;
1114
+ captureFps: z.ZodOptional<z.ZodNumber>;
1115
+ deliveryResolution: z.ZodOptional<z.ZodObject<{
1116
+ width: z.ZodNumber;
1117
+ height: z.ZodNumber;
1118
+ }, z.core.$strict>>;
1119
+ }, z.core.$strict>>;
1120
+ cursorTheme: z.ZodOptional<z.ZodEnum<{
1121
+ minimal: "minimal";
1122
+ macos: "macos";
1123
+ windows: "windows";
1124
+ }>>;
1125
+ maxClipDurationSec: z.ZodOptional<z.ZodNumber>;
1126
+ applyMockup: z.ZodOptional<z.ZodBoolean>;
1127
+ applyStatusBar: z.ZodOptional<z.ZodBoolean>;
1128
+ }, z.core.$strict>;
1129
+ outputScale: z.ZodOptional<z.ZodNumber>;
1130
+ compileFingerprint: z.ZodString;
1131
+ variantFingerprint: z.ZodOptional<z.ZodString>;
1132
+ compiledAt: z.ZodString;
1133
+ compiledWith: z.ZodOptional<z.ZodString>;
1134
+ mockDataGroups: z.ZodOptional<z.ZodArray<z.ZodObject<{
1135
+ name: z.ZodString;
1136
+ description: z.ZodString;
1137
+ slots: z.ZodArray<z.ZodObject<{
1138
+ name: z.ZodString;
1139
+ description: z.ZodString;
1140
+ hint: z.ZodOptional<z.ZodString>;
1141
+ }, z.core.$strict>>;
1142
+ defaultValues: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodString>>;
1143
+ replaceExisting: z.ZodOptional<z.ZodBoolean>;
1144
+ }, z.core.$strict>>>;
1145
+ }, z.core.$strict>;
1146
+ narration: z.ZodOptional<z.ZodObject<{
1147
+ voice: z.ZodString;
1148
+ locale: z.ZodString;
1149
+ segments: z.ZodArray<z.ZodObject<{
1150
+ stepId: z.ZodString;
1151
+ text: z.ZodString;
1152
+ estimated_duration_ms: z.ZodNumber;
1153
+ }, z.core.$strict>>;
1154
+ }, z.core.$strict>>;
1155
+ }, z.core.$strict>;
1156
+ export type VideoIngestPayload = z.infer<typeof VideoIngestPayloadSchema>;
1157
+ /** Parse an ingest payload, throwing a ZodError on invalid input. */
1158
+ export declare function parseVideoIngestPayload(data: unknown): VideoIngestPayload;
1159
+ /** Status state machine values for `videos.status` (opcode flow). */
1160
+ export declare const VIDEO_STATUSES: readonly ["draft", "preparing", "ready_to_run", "running", "uploading", "compositing", "done", "failed"];
1161
+ export type VideoStatus = (typeof VIDEO_STATUSES)[number];
1162
+ /** Discriminator value for opcode-flow rows in the `videos` table. */
1163
+ export declare const VIDEO_FLOW_KIND_OPCODE: "opcode_video";
1164
+ /** Discriminator value for legacy planner rows (migration 020 flow). */
1165
+ export declare const VIDEO_FLOW_KIND_LEGACY: "legacy_planner";