@junejuly-lockstep/model 0.0.0-stage → 0.1.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.
package/dist/run.d.ts ADDED
@@ -0,0 +1,1485 @@
1
+ import { z } from 'zod';
2
+ export declare const RunKind: z.ZodEnum<["deploy", "pr"]>;
3
+ export type RunKind = z.infer<typeof RunKind>;
4
+ export declare const RunStatus: z.ZodEnum<["received", "reconciled", "failed"]>;
5
+ export type RunStatus = z.infer<typeof RunStatus>;
6
+ export declare const Env: z.ZodEnum<["staging", "prod", "preview"]>;
7
+ export type Env = z.infer<typeof Env>;
8
+ /** One navigation the extractor found in source. */
9
+ export declare const ExtractedNavigation: z.ZodObject<{
10
+ /** Route the navigation originates from, or null when not statically known. */
11
+ fromRoute: z.ZodNullable<z.ZodString>;
12
+ /** Route targeted, or null when dynamic and unresolved. */
13
+ toRoute: z.ZodNullable<z.ZodString>;
14
+ kind: z.ZodEnum<["link", "router.push", "router.replace", "redirect", "other"]>;
15
+ file: z.ZodString;
16
+ line: z.ZodNumber;
17
+ /** Enclosing handler name, e.g. onSubmit. */
18
+ handler: z.ZodNullable<z.ZodString>;
19
+ /** Visible text of the trigger element when resolvable. */
20
+ triggerText: z.ZodNullable<z.ZodString>;
21
+ /** data-testid on the trigger element when present. */
22
+ triggerTestId: z.ZodNullable<z.ZodString>;
23
+ /** Lifted guard predicate source text when the nav sits under a condition. */
24
+ guard: z.ZodNullable<z.ZodString>;
25
+ unresolved: z.ZodDefault<z.ZodBoolean>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ guard: string | null;
28
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
29
+ fromRoute: string | null;
30
+ toRoute: string | null;
31
+ file: string;
32
+ line: number;
33
+ handler: string | null;
34
+ triggerText: string | null;
35
+ triggerTestId: string | null;
36
+ unresolved: boolean;
37
+ }, {
38
+ guard: string | null;
39
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
40
+ fromRoute: string | null;
41
+ toRoute: string | null;
42
+ file: string;
43
+ line: number;
44
+ handler: string | null;
45
+ triggerText: string | null;
46
+ triggerTestId: string | null;
47
+ unresolved?: boolean | undefined;
48
+ }>;
49
+ export type ExtractedNavigation = z.infer<typeof ExtractedNavigation>;
50
+ export declare const ExtractedRoute: z.ZodObject<{
51
+ route: z.ZodString;
52
+ file: z.ZodString;
53
+ /** data-testids found on elements in this route's component tree. */
54
+ testIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ route: string;
57
+ file: string;
58
+ testIds: string[];
59
+ }, {
60
+ route: string;
61
+ file: string;
62
+ testIds?: string[] | undefined;
63
+ }>;
64
+ export type ExtractedRoute = z.infer<typeof ExtractedRoute>;
65
+ export declare const ExtractedGraph: z.ZodObject<{
66
+ routes: z.ZodArray<z.ZodObject<{
67
+ route: z.ZodString;
68
+ file: z.ZodString;
69
+ /** data-testids found on elements in this route's component tree. */
70
+ testIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
71
+ }, "strip", z.ZodTypeAny, {
72
+ route: string;
73
+ file: string;
74
+ testIds: string[];
75
+ }, {
76
+ route: string;
77
+ file: string;
78
+ testIds?: string[] | undefined;
79
+ }>, "many">;
80
+ navigations: z.ZodArray<z.ZodObject<{
81
+ /** Route the navigation originates from, or null when not statically known. */
82
+ fromRoute: z.ZodNullable<z.ZodString>;
83
+ /** Route targeted, or null when dynamic and unresolved. */
84
+ toRoute: z.ZodNullable<z.ZodString>;
85
+ kind: z.ZodEnum<["link", "router.push", "router.replace", "redirect", "other"]>;
86
+ file: z.ZodString;
87
+ line: z.ZodNumber;
88
+ /** Enclosing handler name, e.g. onSubmit. */
89
+ handler: z.ZodNullable<z.ZodString>;
90
+ /** Visible text of the trigger element when resolvable. */
91
+ triggerText: z.ZodNullable<z.ZodString>;
92
+ /** data-testid on the trigger element when present. */
93
+ triggerTestId: z.ZodNullable<z.ZodString>;
94
+ /** Lifted guard predicate source text when the nav sits under a condition. */
95
+ guard: z.ZodNullable<z.ZodString>;
96
+ unresolved: z.ZodDefault<z.ZodBoolean>;
97
+ }, "strip", z.ZodTypeAny, {
98
+ guard: string | null;
99
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
100
+ fromRoute: string | null;
101
+ toRoute: string | null;
102
+ file: string;
103
+ line: number;
104
+ handler: string | null;
105
+ triggerText: string | null;
106
+ triggerTestId: string | null;
107
+ unresolved: boolean;
108
+ }, {
109
+ guard: string | null;
110
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
111
+ fromRoute: string | null;
112
+ toRoute: string | null;
113
+ file: string;
114
+ line: number;
115
+ handler: string | null;
116
+ triggerText: string | null;
117
+ triggerTestId: string | null;
118
+ unresolved?: boolean | undefined;
119
+ }>, "many">;
120
+ unresolvedCount: z.ZodDefault<z.ZodNumber>;
121
+ }, "strip", z.ZodTypeAny, {
122
+ routes: {
123
+ route: string;
124
+ file: string;
125
+ testIds: string[];
126
+ }[];
127
+ navigations: {
128
+ guard: string | null;
129
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
130
+ fromRoute: string | null;
131
+ toRoute: string | null;
132
+ file: string;
133
+ line: number;
134
+ handler: string | null;
135
+ triggerText: string | null;
136
+ triggerTestId: string | null;
137
+ unresolved: boolean;
138
+ }[];
139
+ unresolvedCount: number;
140
+ }, {
141
+ routes: {
142
+ route: string;
143
+ file: string;
144
+ testIds?: string[] | undefined;
145
+ }[];
146
+ navigations: {
147
+ guard: string | null;
148
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
149
+ fromRoute: string | null;
150
+ toRoute: string | null;
151
+ file: string;
152
+ line: number;
153
+ handler: string | null;
154
+ triggerText: string | null;
155
+ triggerTestId: string | null;
156
+ unresolved?: boolean | undefined;
157
+ }[];
158
+ unresolvedCount?: number | undefined;
159
+ }>;
160
+ export type ExtractedGraph = z.infer<typeof ExtractedGraph>;
161
+ /** GraphQL contract snapshot: SDL hash plus per-operation response shape hashes. */
162
+ export declare const ContractSnapshot: z.ZodObject<{
163
+ sdlHash: z.ZodString;
164
+ operations: z.ZodRecord<z.ZodString, z.ZodString>;
165
+ lockfileHash: z.ZodString;
166
+ }, "strip", z.ZodTypeAny, {
167
+ operations: Record<string, string>;
168
+ sdlHash: string;
169
+ lockfileHash: string;
170
+ }, {
171
+ operations: Record<string, string>;
172
+ sdlHash: string;
173
+ lockfileHash: string;
174
+ }>;
175
+ export type ContractSnapshot = z.infer<typeof ContractSnapshot>;
176
+ export declare const WalkStepStatus: z.ZodEnum<["pass", "fail", "skipped"]>;
177
+ export type WalkStepStatus = z.infer<typeof WalkStepStatus>;
178
+ export declare const WalkStep: z.ZodObject<{
179
+ /** State the step lands in. */
180
+ stateKey: z.ZodString;
181
+ /** Transition taken to arrive here; null for the initial state. */
182
+ transition: z.ZodNullable<z.ZodObject<{
183
+ from: z.ZodString;
184
+ event: z.ZodString;
185
+ to: z.ZodString;
186
+ }, "strip", z.ZodTypeAny, {
187
+ from: string;
188
+ event: string;
189
+ to: string;
190
+ }, {
191
+ from: string;
192
+ event: string;
193
+ to: string;
194
+ }>>;
195
+ status: z.ZodEnum<["pass", "fail", "skipped"]>;
196
+ attempts: z.ZodDefault<z.ZodNumber>;
197
+ error: z.ZodDefault<z.ZodNullable<z.ZodString>>;
198
+ /** S3 key under runs/{runId}/ for the full-page PNG. */
199
+ screenshotKey: z.ZodNullable<z.ZodString>;
200
+ traceKey: z.ZodDefault<z.ZodNullable<z.ZodString>>;
201
+ /** GraphQL operations exercised while performing this step. */
202
+ operations: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
203
+ routeObserved: z.ZodDefault<z.ZodNullable<z.ZodString>>;
204
+ }, "strip", z.ZodTypeAny, {
205
+ status: "pass" | "fail" | "skipped";
206
+ operations: string[];
207
+ stateKey: string;
208
+ transition: {
209
+ from: string;
210
+ event: string;
211
+ to: string;
212
+ } | null;
213
+ attempts: number;
214
+ error: string | null;
215
+ screenshotKey: string | null;
216
+ traceKey: string | null;
217
+ routeObserved: string | null;
218
+ }, {
219
+ status: "pass" | "fail" | "skipped";
220
+ stateKey: string;
221
+ transition: {
222
+ from: string;
223
+ event: string;
224
+ to: string;
225
+ } | null;
226
+ screenshotKey: string | null;
227
+ operations?: string[] | undefined;
228
+ attempts?: number | undefined;
229
+ error?: string | null | undefined;
230
+ traceKey?: string | null | undefined;
231
+ routeObserved?: string | null | undefined;
232
+ }>;
233
+ export type WalkStep = z.infer<typeof WalkStep>;
234
+ export declare const WalkPath: z.ZodObject<{
235
+ journeyKey: z.ZodString;
236
+ scenario: z.ZodString;
237
+ steps: z.ZodArray<z.ZodObject<{
238
+ /** State the step lands in. */
239
+ stateKey: z.ZodString;
240
+ /** Transition taken to arrive here; null for the initial state. */
241
+ transition: z.ZodNullable<z.ZodObject<{
242
+ from: z.ZodString;
243
+ event: z.ZodString;
244
+ to: z.ZodString;
245
+ }, "strip", z.ZodTypeAny, {
246
+ from: string;
247
+ event: string;
248
+ to: string;
249
+ }, {
250
+ from: string;
251
+ event: string;
252
+ to: string;
253
+ }>>;
254
+ status: z.ZodEnum<["pass", "fail", "skipped"]>;
255
+ attempts: z.ZodDefault<z.ZodNumber>;
256
+ error: z.ZodDefault<z.ZodNullable<z.ZodString>>;
257
+ /** S3 key under runs/{runId}/ for the full-page PNG. */
258
+ screenshotKey: z.ZodNullable<z.ZodString>;
259
+ traceKey: z.ZodDefault<z.ZodNullable<z.ZodString>>;
260
+ /** GraphQL operations exercised while performing this step. */
261
+ operations: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
262
+ routeObserved: z.ZodDefault<z.ZodNullable<z.ZodString>>;
263
+ }, "strip", z.ZodTypeAny, {
264
+ status: "pass" | "fail" | "skipped";
265
+ operations: string[];
266
+ stateKey: string;
267
+ transition: {
268
+ from: string;
269
+ event: string;
270
+ to: string;
271
+ } | null;
272
+ attempts: number;
273
+ error: string | null;
274
+ screenshotKey: string | null;
275
+ traceKey: string | null;
276
+ routeObserved: string | null;
277
+ }, {
278
+ status: "pass" | "fail" | "skipped";
279
+ stateKey: string;
280
+ transition: {
281
+ from: string;
282
+ event: string;
283
+ to: string;
284
+ } | null;
285
+ screenshotKey: string | null;
286
+ operations?: string[] | undefined;
287
+ attempts?: number | undefined;
288
+ error?: string | null | undefined;
289
+ traceKey?: string | null | undefined;
290
+ routeObserved?: string | null | undefined;
291
+ }>, "many">;
292
+ }, "strip", z.ZodTypeAny, {
293
+ journeyKey: string;
294
+ scenario: string;
295
+ steps: {
296
+ status: "pass" | "fail" | "skipped";
297
+ operations: string[];
298
+ stateKey: string;
299
+ transition: {
300
+ from: string;
301
+ event: string;
302
+ to: string;
303
+ } | null;
304
+ attempts: number;
305
+ error: string | null;
306
+ screenshotKey: string | null;
307
+ traceKey: string | null;
308
+ routeObserved: string | null;
309
+ }[];
310
+ }, {
311
+ journeyKey: string;
312
+ scenario: string;
313
+ steps: {
314
+ status: "pass" | "fail" | "skipped";
315
+ stateKey: string;
316
+ transition: {
317
+ from: string;
318
+ event: string;
319
+ to: string;
320
+ } | null;
321
+ screenshotKey: string | null;
322
+ operations?: string[] | undefined;
323
+ attempts?: number | undefined;
324
+ error?: string | null | undefined;
325
+ traceKey?: string | null | undefined;
326
+ routeObserved?: string | null | undefined;
327
+ }[];
328
+ }>;
329
+ export type WalkPath = z.infer<typeof WalkPath>;
330
+ export declare const WalkResult: z.ZodObject<{
331
+ viewport: z.ZodDefault<z.ZodObject<{
332
+ width: z.ZodNumber;
333
+ height: z.ZodNumber;
334
+ }, "strip", z.ZodTypeAny, {
335
+ width: number;
336
+ height: number;
337
+ }, {
338
+ width: number;
339
+ height: number;
340
+ }>>;
341
+ frozenEpochMs: z.ZodNumber;
342
+ paths: z.ZodArray<z.ZodObject<{
343
+ journeyKey: z.ZodString;
344
+ scenario: z.ZodString;
345
+ steps: z.ZodArray<z.ZodObject<{
346
+ /** State the step lands in. */
347
+ stateKey: z.ZodString;
348
+ /** Transition taken to arrive here; null for the initial state. */
349
+ transition: z.ZodNullable<z.ZodObject<{
350
+ from: z.ZodString;
351
+ event: z.ZodString;
352
+ to: z.ZodString;
353
+ }, "strip", z.ZodTypeAny, {
354
+ from: string;
355
+ event: string;
356
+ to: string;
357
+ }, {
358
+ from: string;
359
+ event: string;
360
+ to: string;
361
+ }>>;
362
+ status: z.ZodEnum<["pass", "fail", "skipped"]>;
363
+ attempts: z.ZodDefault<z.ZodNumber>;
364
+ error: z.ZodDefault<z.ZodNullable<z.ZodString>>;
365
+ /** S3 key under runs/{runId}/ for the full-page PNG. */
366
+ screenshotKey: z.ZodNullable<z.ZodString>;
367
+ traceKey: z.ZodDefault<z.ZodNullable<z.ZodString>>;
368
+ /** GraphQL operations exercised while performing this step. */
369
+ operations: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
370
+ routeObserved: z.ZodDefault<z.ZodNullable<z.ZodString>>;
371
+ }, "strip", z.ZodTypeAny, {
372
+ status: "pass" | "fail" | "skipped";
373
+ operations: string[];
374
+ stateKey: string;
375
+ transition: {
376
+ from: string;
377
+ event: string;
378
+ to: string;
379
+ } | null;
380
+ attempts: number;
381
+ error: string | null;
382
+ screenshotKey: string | null;
383
+ traceKey: string | null;
384
+ routeObserved: string | null;
385
+ }, {
386
+ status: "pass" | "fail" | "skipped";
387
+ stateKey: string;
388
+ transition: {
389
+ from: string;
390
+ event: string;
391
+ to: string;
392
+ } | null;
393
+ screenshotKey: string | null;
394
+ operations?: string[] | undefined;
395
+ attempts?: number | undefined;
396
+ error?: string | null | undefined;
397
+ traceKey?: string | null | undefined;
398
+ routeObserved?: string | null | undefined;
399
+ }>, "many">;
400
+ }, "strip", z.ZodTypeAny, {
401
+ journeyKey: string;
402
+ scenario: string;
403
+ steps: {
404
+ status: "pass" | "fail" | "skipped";
405
+ operations: string[];
406
+ stateKey: string;
407
+ transition: {
408
+ from: string;
409
+ event: string;
410
+ to: string;
411
+ } | null;
412
+ attempts: number;
413
+ error: string | null;
414
+ screenshotKey: string | null;
415
+ traceKey: string | null;
416
+ routeObserved: string | null;
417
+ }[];
418
+ }, {
419
+ journeyKey: string;
420
+ scenario: string;
421
+ steps: {
422
+ status: "pass" | "fail" | "skipped";
423
+ stateKey: string;
424
+ transition: {
425
+ from: string;
426
+ event: string;
427
+ to: string;
428
+ } | null;
429
+ screenshotKey: string | null;
430
+ operations?: string[] | undefined;
431
+ attempts?: number | undefined;
432
+ error?: string | null | undefined;
433
+ traceKey?: string | null | undefined;
434
+ routeObserved?: string | null | undefined;
435
+ }[];
436
+ }>, "many">;
437
+ }, "strip", z.ZodTypeAny, {
438
+ viewport: {
439
+ width: number;
440
+ height: number;
441
+ };
442
+ frozenEpochMs: number;
443
+ paths: {
444
+ journeyKey: string;
445
+ scenario: string;
446
+ steps: {
447
+ status: "pass" | "fail" | "skipped";
448
+ operations: string[];
449
+ stateKey: string;
450
+ transition: {
451
+ from: string;
452
+ event: string;
453
+ to: string;
454
+ } | null;
455
+ attempts: number;
456
+ error: string | null;
457
+ screenshotKey: string | null;
458
+ traceKey: string | null;
459
+ routeObserved: string | null;
460
+ }[];
461
+ }[];
462
+ }, {
463
+ frozenEpochMs: number;
464
+ paths: {
465
+ journeyKey: string;
466
+ scenario: string;
467
+ steps: {
468
+ status: "pass" | "fail" | "skipped";
469
+ stateKey: string;
470
+ transition: {
471
+ from: string;
472
+ event: string;
473
+ to: string;
474
+ } | null;
475
+ screenshotKey: string | null;
476
+ operations?: string[] | undefined;
477
+ attempts?: number | undefined;
478
+ error?: string | null | undefined;
479
+ traceKey?: string | null | undefined;
480
+ routeObserved?: string | null | undefined;
481
+ }[];
482
+ }[];
483
+ viewport?: {
484
+ width: number;
485
+ height: number;
486
+ } | undefined;
487
+ }>;
488
+ export type WalkResult = z.infer<typeof WalkResult>;
489
+ /** One screenshot compared against its baseline. */
490
+ export declare const VisualComparison: z.ZodObject<{
491
+ journeyKey: z.ZodString;
492
+ stateKey: z.ZodString;
493
+ scenario: z.ZodString;
494
+ screenshotKey: z.ZodString;
495
+ /** Baseline S3 key the comparison used; null means no baseline existed. */
496
+ baselineKey: z.ZodNullable<z.ZodString>;
497
+ diffKey: z.ZodNullable<z.ZodString>;
498
+ /** Fraction of differing pixels, 0..1. */
499
+ score: z.ZodNumber;
500
+ width: z.ZodNumber;
501
+ height: z.ZodNumber;
502
+ /** Why the score is what it is when pixelmatch could not run (e.g. a size mismatch scores 1). */
503
+ detail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
504
+ }, "strip", z.ZodTypeAny, {
505
+ journeyKey: string;
506
+ stateKey: string;
507
+ screenshotKey: string;
508
+ scenario: string;
509
+ width: number;
510
+ height: number;
511
+ baselineKey: string | null;
512
+ diffKey: string | null;
513
+ score: number;
514
+ detail?: string | null | undefined;
515
+ }, {
516
+ journeyKey: string;
517
+ stateKey: string;
518
+ screenshotKey: string;
519
+ scenario: string;
520
+ width: number;
521
+ height: number;
522
+ baselineKey: string | null;
523
+ diffKey: string | null;
524
+ score: number;
525
+ detail?: string | null | undefined;
526
+ }>;
527
+ export type VisualComparison = z.infer<typeof VisualComparison>;
528
+ /** The complete payload a reconciler posts to POST /api/ingest/runs. */
529
+ export declare const RunPayload: z.ZodObject<{
530
+ schemaVersion: z.ZodLiteral<1>;
531
+ projectKey: z.ZodString;
532
+ kind: z.ZodEnum<["deploy", "pr"]>;
533
+ /** Commit SHA for deploy runs, PR number as string for PR runs. */
534
+ ref: z.ZodString;
535
+ commitSha: z.ZodString;
536
+ prNumber: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
537
+ deployLabel: z.ZodDefault<z.ZodNullable<z.ZodString>>;
538
+ env: z.ZodEnum<["staging", "prod", "preview"]>;
539
+ reconcilerVersion: z.ZodString;
540
+ startedAt: z.ZodString;
541
+ finishedAt: z.ZodString;
542
+ /** Journey models as they exist at this commit in the repo. */
543
+ journeys: z.ZodArray<z.ZodObject<{
544
+ key: z.ZodString;
545
+ name: z.ZodString;
546
+ machine: z.ZodObject<{
547
+ id: z.ZodString;
548
+ initial: z.ZodString;
549
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
550
+ states: z.ZodRecord<z.ZodString, z.ZodObject<{
551
+ on: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodObject<{
552
+ target: z.ZodString;
553
+ guard: z.ZodOptional<z.ZodString>;
554
+ actions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
555
+ description: z.ZodOptional<z.ZodString>;
556
+ }, "strip", z.ZodTypeAny, {
557
+ target: string;
558
+ guard?: string | undefined;
559
+ actions?: string[] | undefined;
560
+ description?: string | undefined;
561
+ }, {
562
+ target: string;
563
+ guard?: string | undefined;
564
+ actions?: string[] | undefined;
565
+ description?: string | undefined;
566
+ }>, z.ZodArray<z.ZodObject<{
567
+ target: z.ZodString;
568
+ guard: z.ZodOptional<z.ZodString>;
569
+ actions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
570
+ description: z.ZodOptional<z.ZodString>;
571
+ }, "strip", z.ZodTypeAny, {
572
+ target: string;
573
+ guard?: string | undefined;
574
+ actions?: string[] | undefined;
575
+ description?: string | undefined;
576
+ }, {
577
+ target: string;
578
+ guard?: string | undefined;
579
+ actions?: string[] | undefined;
580
+ description?: string | undefined;
581
+ }>, "many">]>>>;
582
+ type: z.ZodOptional<z.ZodEnum<["atomic", "final", "compound", "parallel", "history"]>>;
583
+ description: z.ZodOptional<z.ZodString>;
584
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
585
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
586
+ }, "strip", z.ZodTypeAny, {
587
+ type?: "atomic" | "final" | "compound" | "parallel" | "history" | undefined;
588
+ description?: string | undefined;
589
+ on?: Record<string, string | {
590
+ target: string;
591
+ guard?: string | undefined;
592
+ actions?: string[] | undefined;
593
+ description?: string | undefined;
594
+ } | {
595
+ target: string;
596
+ guard?: string | undefined;
597
+ actions?: string[] | undefined;
598
+ description?: string | undefined;
599
+ }[]> | undefined;
600
+ tags?: string[] | undefined;
601
+ meta?: Record<string, unknown> | undefined;
602
+ }, {
603
+ type?: "atomic" | "final" | "compound" | "parallel" | "history" | undefined;
604
+ description?: string | undefined;
605
+ on?: Record<string, string | {
606
+ target: string;
607
+ guard?: string | undefined;
608
+ actions?: string[] | undefined;
609
+ description?: string | undefined;
610
+ } | {
611
+ target: string;
612
+ guard?: string | undefined;
613
+ actions?: string[] | undefined;
614
+ description?: string | undefined;
615
+ }[]> | undefined;
616
+ tags?: string[] | undefined;
617
+ meta?: Record<string, unknown> | undefined;
618
+ }>>;
619
+ }, "strip", z.ZodTypeAny, {
620
+ id: string;
621
+ initial: string;
622
+ states: Record<string, {
623
+ type?: "atomic" | "final" | "compound" | "parallel" | "history" | undefined;
624
+ description?: string | undefined;
625
+ on?: Record<string, string | {
626
+ target: string;
627
+ guard?: string | undefined;
628
+ actions?: string[] | undefined;
629
+ description?: string | undefined;
630
+ } | {
631
+ target: string;
632
+ guard?: string | undefined;
633
+ actions?: string[] | undefined;
634
+ description?: string | undefined;
635
+ }[]> | undefined;
636
+ tags?: string[] | undefined;
637
+ meta?: Record<string, unknown> | undefined;
638
+ }>;
639
+ context?: Record<string, unknown> | undefined;
640
+ }, {
641
+ id: string;
642
+ initial: string;
643
+ states: Record<string, {
644
+ type?: "atomic" | "final" | "compound" | "parallel" | "history" | undefined;
645
+ description?: string | undefined;
646
+ on?: Record<string, string | {
647
+ target: string;
648
+ guard?: string | undefined;
649
+ actions?: string[] | undefined;
650
+ description?: string | undefined;
651
+ } | {
652
+ target: string;
653
+ guard?: string | undefined;
654
+ actions?: string[] | undefined;
655
+ description?: string | undefined;
656
+ }[]> | undefined;
657
+ tags?: string[] | undefined;
658
+ meta?: Record<string, unknown> | undefined;
659
+ }>;
660
+ context?: Record<string, unknown> | undefined;
661
+ }>;
662
+ meta: z.ZodObject<{
663
+ narrative: z.ZodDefault<z.ZodString>;
664
+ states: z.ZodRecord<z.ZodString, z.ZodObject<{
665
+ route: z.ZodString;
666
+ testId: z.ZodString;
667
+ intent: z.ZodString;
668
+ rules: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
669
+ referenceAsset: z.ZodOptional<z.ZodString>;
670
+ }, "strip", z.ZodTypeAny, {
671
+ route: string;
672
+ testId: string;
673
+ intent: string;
674
+ rules: string[];
675
+ referenceAsset?: string | undefined;
676
+ }, {
677
+ route: string;
678
+ testId: string;
679
+ intent: string;
680
+ rules?: string[] | undefined;
681
+ referenceAsset?: string | undefined;
682
+ }>>;
683
+ bindings: z.ZodDefault<z.ZodArray<z.ZodObject<{
684
+ from: z.ZodString;
685
+ event: z.ZodString;
686
+ testId: z.ZodString;
687
+ label: z.ZodOptional<z.ZodString>;
688
+ }, "strip", z.ZodTypeAny, {
689
+ testId: string;
690
+ from: string;
691
+ event: string;
692
+ label?: string | undefined;
693
+ }, {
694
+ testId: string;
695
+ from: string;
696
+ event: string;
697
+ label?: string | undefined;
698
+ }>, "many">>;
699
+ assets: z.ZodDefault<z.ZodArray<z.ZodObject<{
700
+ name: z.ZodString;
701
+ url: z.ZodString;
702
+ }, "strip", z.ZodTypeAny, {
703
+ name: string;
704
+ url: string;
705
+ }, {
706
+ name: string;
707
+ url: string;
708
+ }>, "many">>;
709
+ }, "strip", z.ZodTypeAny, {
710
+ states: Record<string, {
711
+ route: string;
712
+ testId: string;
713
+ intent: string;
714
+ rules: string[];
715
+ referenceAsset?: string | undefined;
716
+ }>;
717
+ narrative: string;
718
+ bindings: {
719
+ testId: string;
720
+ from: string;
721
+ event: string;
722
+ label?: string | undefined;
723
+ }[];
724
+ assets: {
725
+ name: string;
726
+ url: string;
727
+ }[];
728
+ }, {
729
+ states: Record<string, {
730
+ route: string;
731
+ testId: string;
732
+ intent: string;
733
+ rules?: string[] | undefined;
734
+ referenceAsset?: string | undefined;
735
+ }>;
736
+ narrative?: string | undefined;
737
+ bindings?: {
738
+ testId: string;
739
+ from: string;
740
+ event: string;
741
+ label?: string | undefined;
742
+ }[] | undefined;
743
+ assets?: {
744
+ name: string;
745
+ url: string;
746
+ }[] | undefined;
747
+ }>;
748
+ }, "strip", z.ZodTypeAny, {
749
+ meta: {
750
+ states: Record<string, {
751
+ route: string;
752
+ testId: string;
753
+ intent: string;
754
+ rules: string[];
755
+ referenceAsset?: string | undefined;
756
+ }>;
757
+ narrative: string;
758
+ bindings: {
759
+ testId: string;
760
+ from: string;
761
+ event: string;
762
+ label?: string | undefined;
763
+ }[];
764
+ assets: {
765
+ name: string;
766
+ url: string;
767
+ }[];
768
+ };
769
+ name: string;
770
+ key: string;
771
+ machine: {
772
+ id: string;
773
+ initial: string;
774
+ states: Record<string, {
775
+ type?: "atomic" | "final" | "compound" | "parallel" | "history" | undefined;
776
+ description?: string | undefined;
777
+ on?: Record<string, string | {
778
+ target: string;
779
+ guard?: string | undefined;
780
+ actions?: string[] | undefined;
781
+ description?: string | undefined;
782
+ } | {
783
+ target: string;
784
+ guard?: string | undefined;
785
+ actions?: string[] | undefined;
786
+ description?: string | undefined;
787
+ }[]> | undefined;
788
+ tags?: string[] | undefined;
789
+ meta?: Record<string, unknown> | undefined;
790
+ }>;
791
+ context?: Record<string, unknown> | undefined;
792
+ };
793
+ }, {
794
+ meta: {
795
+ states: Record<string, {
796
+ route: string;
797
+ testId: string;
798
+ intent: string;
799
+ rules?: string[] | undefined;
800
+ referenceAsset?: string | undefined;
801
+ }>;
802
+ narrative?: string | undefined;
803
+ bindings?: {
804
+ testId: string;
805
+ from: string;
806
+ event: string;
807
+ label?: string | undefined;
808
+ }[] | undefined;
809
+ assets?: {
810
+ name: string;
811
+ url: string;
812
+ }[] | undefined;
813
+ };
814
+ name: string;
815
+ key: string;
816
+ machine: {
817
+ id: string;
818
+ initial: string;
819
+ states: Record<string, {
820
+ type?: "atomic" | "final" | "compound" | "parallel" | "history" | undefined;
821
+ description?: string | undefined;
822
+ on?: Record<string, string | {
823
+ target: string;
824
+ guard?: string | undefined;
825
+ actions?: string[] | undefined;
826
+ description?: string | undefined;
827
+ } | {
828
+ target: string;
829
+ guard?: string | undefined;
830
+ actions?: string[] | undefined;
831
+ description?: string | undefined;
832
+ }[]> | undefined;
833
+ tags?: string[] | undefined;
834
+ meta?: Record<string, unknown> | undefined;
835
+ }>;
836
+ context?: Record<string, unknown> | undefined;
837
+ };
838
+ }>, "many">;
839
+ scenarios: z.ZodArray<z.ZodObject<{
840
+ name: z.ZodString;
841
+ description: z.ZodOptional<z.ZodString>;
842
+ seed: z.ZodNumber;
843
+ overrides: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
844
+ }, "strip", z.ZodTypeAny, {
845
+ name: string;
846
+ seed: number;
847
+ overrides: Record<string, unknown>;
848
+ description?: string | undefined;
849
+ }, {
850
+ name: string;
851
+ seed: number;
852
+ description?: string | undefined;
853
+ overrides?: Record<string, unknown> | undefined;
854
+ }>, "many">;
855
+ extractedGraph: z.ZodObject<{
856
+ routes: z.ZodArray<z.ZodObject<{
857
+ route: z.ZodString;
858
+ file: z.ZodString;
859
+ /** data-testids found on elements in this route's component tree. */
860
+ testIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
861
+ }, "strip", z.ZodTypeAny, {
862
+ route: string;
863
+ file: string;
864
+ testIds: string[];
865
+ }, {
866
+ route: string;
867
+ file: string;
868
+ testIds?: string[] | undefined;
869
+ }>, "many">;
870
+ navigations: z.ZodArray<z.ZodObject<{
871
+ /** Route the navigation originates from, or null when not statically known. */
872
+ fromRoute: z.ZodNullable<z.ZodString>;
873
+ /** Route targeted, or null when dynamic and unresolved. */
874
+ toRoute: z.ZodNullable<z.ZodString>;
875
+ kind: z.ZodEnum<["link", "router.push", "router.replace", "redirect", "other"]>;
876
+ file: z.ZodString;
877
+ line: z.ZodNumber;
878
+ /** Enclosing handler name, e.g. onSubmit. */
879
+ handler: z.ZodNullable<z.ZodString>;
880
+ /** Visible text of the trigger element when resolvable. */
881
+ triggerText: z.ZodNullable<z.ZodString>;
882
+ /** data-testid on the trigger element when present. */
883
+ triggerTestId: z.ZodNullable<z.ZodString>;
884
+ /** Lifted guard predicate source text when the nav sits under a condition. */
885
+ guard: z.ZodNullable<z.ZodString>;
886
+ unresolved: z.ZodDefault<z.ZodBoolean>;
887
+ }, "strip", z.ZodTypeAny, {
888
+ guard: string | null;
889
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
890
+ fromRoute: string | null;
891
+ toRoute: string | null;
892
+ file: string;
893
+ line: number;
894
+ handler: string | null;
895
+ triggerText: string | null;
896
+ triggerTestId: string | null;
897
+ unresolved: boolean;
898
+ }, {
899
+ guard: string | null;
900
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
901
+ fromRoute: string | null;
902
+ toRoute: string | null;
903
+ file: string;
904
+ line: number;
905
+ handler: string | null;
906
+ triggerText: string | null;
907
+ triggerTestId: string | null;
908
+ unresolved?: boolean | undefined;
909
+ }>, "many">;
910
+ unresolvedCount: z.ZodDefault<z.ZodNumber>;
911
+ }, "strip", z.ZodTypeAny, {
912
+ routes: {
913
+ route: string;
914
+ file: string;
915
+ testIds: string[];
916
+ }[];
917
+ navigations: {
918
+ guard: string | null;
919
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
920
+ fromRoute: string | null;
921
+ toRoute: string | null;
922
+ file: string;
923
+ line: number;
924
+ handler: string | null;
925
+ triggerText: string | null;
926
+ triggerTestId: string | null;
927
+ unresolved: boolean;
928
+ }[];
929
+ unresolvedCount: number;
930
+ }, {
931
+ routes: {
932
+ route: string;
933
+ file: string;
934
+ testIds?: string[] | undefined;
935
+ }[];
936
+ navigations: {
937
+ guard: string | null;
938
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
939
+ fromRoute: string | null;
940
+ toRoute: string | null;
941
+ file: string;
942
+ line: number;
943
+ handler: string | null;
944
+ triggerText: string | null;
945
+ triggerTestId: string | null;
946
+ unresolved?: boolean | undefined;
947
+ }[];
948
+ unresolvedCount?: number | undefined;
949
+ }>;
950
+ contract: z.ZodObject<{
951
+ sdlHash: z.ZodString;
952
+ operations: z.ZodRecord<z.ZodString, z.ZodString>;
953
+ lockfileHash: z.ZodString;
954
+ }, "strip", z.ZodTypeAny, {
955
+ operations: Record<string, string>;
956
+ sdlHash: string;
957
+ lockfileHash: string;
958
+ }, {
959
+ operations: Record<string, string>;
960
+ sdlHash: string;
961
+ lockfileHash: string;
962
+ }>;
963
+ walk: z.ZodObject<{
964
+ viewport: z.ZodDefault<z.ZodObject<{
965
+ width: z.ZodNumber;
966
+ height: z.ZodNumber;
967
+ }, "strip", z.ZodTypeAny, {
968
+ width: number;
969
+ height: number;
970
+ }, {
971
+ width: number;
972
+ height: number;
973
+ }>>;
974
+ frozenEpochMs: z.ZodNumber;
975
+ paths: z.ZodArray<z.ZodObject<{
976
+ journeyKey: z.ZodString;
977
+ scenario: z.ZodString;
978
+ steps: z.ZodArray<z.ZodObject<{
979
+ /** State the step lands in. */
980
+ stateKey: z.ZodString;
981
+ /** Transition taken to arrive here; null for the initial state. */
982
+ transition: z.ZodNullable<z.ZodObject<{
983
+ from: z.ZodString;
984
+ event: z.ZodString;
985
+ to: z.ZodString;
986
+ }, "strip", z.ZodTypeAny, {
987
+ from: string;
988
+ event: string;
989
+ to: string;
990
+ }, {
991
+ from: string;
992
+ event: string;
993
+ to: string;
994
+ }>>;
995
+ status: z.ZodEnum<["pass", "fail", "skipped"]>;
996
+ attempts: z.ZodDefault<z.ZodNumber>;
997
+ error: z.ZodDefault<z.ZodNullable<z.ZodString>>;
998
+ /** S3 key under runs/{runId}/ for the full-page PNG. */
999
+ screenshotKey: z.ZodNullable<z.ZodString>;
1000
+ traceKey: z.ZodDefault<z.ZodNullable<z.ZodString>>;
1001
+ /** GraphQL operations exercised while performing this step. */
1002
+ operations: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1003
+ routeObserved: z.ZodDefault<z.ZodNullable<z.ZodString>>;
1004
+ }, "strip", z.ZodTypeAny, {
1005
+ status: "pass" | "fail" | "skipped";
1006
+ operations: string[];
1007
+ stateKey: string;
1008
+ transition: {
1009
+ from: string;
1010
+ event: string;
1011
+ to: string;
1012
+ } | null;
1013
+ attempts: number;
1014
+ error: string | null;
1015
+ screenshotKey: string | null;
1016
+ traceKey: string | null;
1017
+ routeObserved: string | null;
1018
+ }, {
1019
+ status: "pass" | "fail" | "skipped";
1020
+ stateKey: string;
1021
+ transition: {
1022
+ from: string;
1023
+ event: string;
1024
+ to: string;
1025
+ } | null;
1026
+ screenshotKey: string | null;
1027
+ operations?: string[] | undefined;
1028
+ attempts?: number | undefined;
1029
+ error?: string | null | undefined;
1030
+ traceKey?: string | null | undefined;
1031
+ routeObserved?: string | null | undefined;
1032
+ }>, "many">;
1033
+ }, "strip", z.ZodTypeAny, {
1034
+ journeyKey: string;
1035
+ scenario: string;
1036
+ steps: {
1037
+ status: "pass" | "fail" | "skipped";
1038
+ operations: string[];
1039
+ stateKey: string;
1040
+ transition: {
1041
+ from: string;
1042
+ event: string;
1043
+ to: string;
1044
+ } | null;
1045
+ attempts: number;
1046
+ error: string | null;
1047
+ screenshotKey: string | null;
1048
+ traceKey: string | null;
1049
+ routeObserved: string | null;
1050
+ }[];
1051
+ }, {
1052
+ journeyKey: string;
1053
+ scenario: string;
1054
+ steps: {
1055
+ status: "pass" | "fail" | "skipped";
1056
+ stateKey: string;
1057
+ transition: {
1058
+ from: string;
1059
+ event: string;
1060
+ to: string;
1061
+ } | null;
1062
+ screenshotKey: string | null;
1063
+ operations?: string[] | undefined;
1064
+ attempts?: number | undefined;
1065
+ error?: string | null | undefined;
1066
+ traceKey?: string | null | undefined;
1067
+ routeObserved?: string | null | undefined;
1068
+ }[];
1069
+ }>, "many">;
1070
+ }, "strip", z.ZodTypeAny, {
1071
+ viewport: {
1072
+ width: number;
1073
+ height: number;
1074
+ };
1075
+ frozenEpochMs: number;
1076
+ paths: {
1077
+ journeyKey: string;
1078
+ scenario: string;
1079
+ steps: {
1080
+ status: "pass" | "fail" | "skipped";
1081
+ operations: string[];
1082
+ stateKey: string;
1083
+ transition: {
1084
+ from: string;
1085
+ event: string;
1086
+ to: string;
1087
+ } | null;
1088
+ attempts: number;
1089
+ error: string | null;
1090
+ screenshotKey: string | null;
1091
+ traceKey: string | null;
1092
+ routeObserved: string | null;
1093
+ }[];
1094
+ }[];
1095
+ }, {
1096
+ frozenEpochMs: number;
1097
+ paths: {
1098
+ journeyKey: string;
1099
+ scenario: string;
1100
+ steps: {
1101
+ status: "pass" | "fail" | "skipped";
1102
+ stateKey: string;
1103
+ transition: {
1104
+ from: string;
1105
+ event: string;
1106
+ to: string;
1107
+ } | null;
1108
+ screenshotKey: string | null;
1109
+ operations?: string[] | undefined;
1110
+ attempts?: number | undefined;
1111
+ error?: string | null | undefined;
1112
+ traceKey?: string | null | undefined;
1113
+ routeObserved?: string | null | undefined;
1114
+ }[];
1115
+ }[];
1116
+ viewport?: {
1117
+ width: number;
1118
+ height: number;
1119
+ } | undefined;
1120
+ }>;
1121
+ visual: z.ZodArray<z.ZodObject<{
1122
+ journeyKey: z.ZodString;
1123
+ stateKey: z.ZodString;
1124
+ scenario: z.ZodString;
1125
+ screenshotKey: z.ZodString;
1126
+ /** Baseline S3 key the comparison used; null means no baseline existed. */
1127
+ baselineKey: z.ZodNullable<z.ZodString>;
1128
+ diffKey: z.ZodNullable<z.ZodString>;
1129
+ /** Fraction of differing pixels, 0..1. */
1130
+ score: z.ZodNumber;
1131
+ width: z.ZodNumber;
1132
+ height: z.ZodNumber;
1133
+ /** Why the score is what it is when pixelmatch could not run (e.g. a size mismatch scores 1). */
1134
+ detail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1135
+ }, "strip", z.ZodTypeAny, {
1136
+ journeyKey: string;
1137
+ stateKey: string;
1138
+ screenshotKey: string;
1139
+ scenario: string;
1140
+ width: number;
1141
+ height: number;
1142
+ baselineKey: string | null;
1143
+ diffKey: string | null;
1144
+ score: number;
1145
+ detail?: string | null | undefined;
1146
+ }, {
1147
+ journeyKey: string;
1148
+ stateKey: string;
1149
+ screenshotKey: string;
1150
+ scenario: string;
1151
+ width: number;
1152
+ height: number;
1153
+ baselineKey: string | null;
1154
+ diffKey: string | null;
1155
+ score: number;
1156
+ detail?: string | null | undefined;
1157
+ }>, "many">;
1158
+ /** Seams the author declared were touched, if any (backend changes). */
1159
+ declaredSeams: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1160
+ /** Run id the reconciler reserved via presign; API uses it as the artifacts prefix. */
1161
+ runId: z.ZodString;
1162
+ }, "strip", z.ZodTypeAny, {
1163
+ kind: "deploy" | "pr";
1164
+ scenarios: {
1165
+ name: string;
1166
+ seed: number;
1167
+ overrides: Record<string, unknown>;
1168
+ description?: string | undefined;
1169
+ }[];
1170
+ visual: {
1171
+ journeyKey: string;
1172
+ stateKey: string;
1173
+ screenshotKey: string;
1174
+ scenario: string;
1175
+ width: number;
1176
+ height: number;
1177
+ baselineKey: string | null;
1178
+ diffKey: string | null;
1179
+ score: number;
1180
+ detail?: string | null | undefined;
1181
+ }[];
1182
+ contract: {
1183
+ operations: Record<string, string>;
1184
+ sdlHash: string;
1185
+ lockfileHash: string;
1186
+ };
1187
+ runId: string;
1188
+ journeys: {
1189
+ meta: {
1190
+ states: Record<string, {
1191
+ route: string;
1192
+ testId: string;
1193
+ intent: string;
1194
+ rules: string[];
1195
+ referenceAsset?: string | undefined;
1196
+ }>;
1197
+ narrative: string;
1198
+ bindings: {
1199
+ testId: string;
1200
+ from: string;
1201
+ event: string;
1202
+ label?: string | undefined;
1203
+ }[];
1204
+ assets: {
1205
+ name: string;
1206
+ url: string;
1207
+ }[];
1208
+ };
1209
+ name: string;
1210
+ key: string;
1211
+ machine: {
1212
+ id: string;
1213
+ initial: string;
1214
+ states: Record<string, {
1215
+ type?: "atomic" | "final" | "compound" | "parallel" | "history" | undefined;
1216
+ description?: string | undefined;
1217
+ on?: Record<string, string | {
1218
+ target: string;
1219
+ guard?: string | undefined;
1220
+ actions?: string[] | undefined;
1221
+ description?: string | undefined;
1222
+ } | {
1223
+ target: string;
1224
+ guard?: string | undefined;
1225
+ actions?: string[] | undefined;
1226
+ description?: string | undefined;
1227
+ }[]> | undefined;
1228
+ tags?: string[] | undefined;
1229
+ meta?: Record<string, unknown> | undefined;
1230
+ }>;
1231
+ context?: Record<string, unknown> | undefined;
1232
+ };
1233
+ }[];
1234
+ projectKey: string;
1235
+ schemaVersion: 1;
1236
+ ref: string;
1237
+ commitSha: string;
1238
+ prNumber: number | null;
1239
+ deployLabel: string | null;
1240
+ env: "staging" | "prod" | "preview";
1241
+ reconcilerVersion: string;
1242
+ startedAt: string;
1243
+ finishedAt: string;
1244
+ extractedGraph: {
1245
+ routes: {
1246
+ route: string;
1247
+ file: string;
1248
+ testIds: string[];
1249
+ }[];
1250
+ navigations: {
1251
+ guard: string | null;
1252
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
1253
+ fromRoute: string | null;
1254
+ toRoute: string | null;
1255
+ file: string;
1256
+ line: number;
1257
+ handler: string | null;
1258
+ triggerText: string | null;
1259
+ triggerTestId: string | null;
1260
+ unresolved: boolean;
1261
+ }[];
1262
+ unresolvedCount: number;
1263
+ };
1264
+ walk: {
1265
+ viewport: {
1266
+ width: number;
1267
+ height: number;
1268
+ };
1269
+ frozenEpochMs: number;
1270
+ paths: {
1271
+ journeyKey: string;
1272
+ scenario: string;
1273
+ steps: {
1274
+ status: "pass" | "fail" | "skipped";
1275
+ operations: string[];
1276
+ stateKey: string;
1277
+ transition: {
1278
+ from: string;
1279
+ event: string;
1280
+ to: string;
1281
+ } | null;
1282
+ attempts: number;
1283
+ error: string | null;
1284
+ screenshotKey: string | null;
1285
+ traceKey: string | null;
1286
+ routeObserved: string | null;
1287
+ }[];
1288
+ }[];
1289
+ };
1290
+ declaredSeams: string[];
1291
+ }, {
1292
+ kind: "deploy" | "pr";
1293
+ scenarios: {
1294
+ name: string;
1295
+ seed: number;
1296
+ description?: string | undefined;
1297
+ overrides?: Record<string, unknown> | undefined;
1298
+ }[];
1299
+ visual: {
1300
+ journeyKey: string;
1301
+ stateKey: string;
1302
+ screenshotKey: string;
1303
+ scenario: string;
1304
+ width: number;
1305
+ height: number;
1306
+ baselineKey: string | null;
1307
+ diffKey: string | null;
1308
+ score: number;
1309
+ detail?: string | null | undefined;
1310
+ }[];
1311
+ contract: {
1312
+ operations: Record<string, string>;
1313
+ sdlHash: string;
1314
+ lockfileHash: string;
1315
+ };
1316
+ runId: string;
1317
+ journeys: {
1318
+ meta: {
1319
+ states: Record<string, {
1320
+ route: string;
1321
+ testId: string;
1322
+ intent: string;
1323
+ rules?: string[] | undefined;
1324
+ referenceAsset?: string | undefined;
1325
+ }>;
1326
+ narrative?: string | undefined;
1327
+ bindings?: {
1328
+ testId: string;
1329
+ from: string;
1330
+ event: string;
1331
+ label?: string | undefined;
1332
+ }[] | undefined;
1333
+ assets?: {
1334
+ name: string;
1335
+ url: string;
1336
+ }[] | undefined;
1337
+ };
1338
+ name: string;
1339
+ key: string;
1340
+ machine: {
1341
+ id: string;
1342
+ initial: string;
1343
+ states: Record<string, {
1344
+ type?: "atomic" | "final" | "compound" | "parallel" | "history" | undefined;
1345
+ description?: string | undefined;
1346
+ on?: Record<string, string | {
1347
+ target: string;
1348
+ guard?: string | undefined;
1349
+ actions?: string[] | undefined;
1350
+ description?: string | undefined;
1351
+ } | {
1352
+ target: string;
1353
+ guard?: string | undefined;
1354
+ actions?: string[] | undefined;
1355
+ description?: string | undefined;
1356
+ }[]> | undefined;
1357
+ tags?: string[] | undefined;
1358
+ meta?: Record<string, unknown> | undefined;
1359
+ }>;
1360
+ context?: Record<string, unknown> | undefined;
1361
+ };
1362
+ }[];
1363
+ projectKey: string;
1364
+ schemaVersion: 1;
1365
+ ref: string;
1366
+ commitSha: string;
1367
+ env: "staging" | "prod" | "preview";
1368
+ reconcilerVersion: string;
1369
+ startedAt: string;
1370
+ finishedAt: string;
1371
+ extractedGraph: {
1372
+ routes: {
1373
+ route: string;
1374
+ file: string;
1375
+ testIds?: string[] | undefined;
1376
+ }[];
1377
+ navigations: {
1378
+ guard: string | null;
1379
+ kind: "link" | "router.push" | "router.replace" | "redirect" | "other";
1380
+ fromRoute: string | null;
1381
+ toRoute: string | null;
1382
+ file: string;
1383
+ line: number;
1384
+ handler: string | null;
1385
+ triggerText: string | null;
1386
+ triggerTestId: string | null;
1387
+ unresolved?: boolean | undefined;
1388
+ }[];
1389
+ unresolvedCount?: number | undefined;
1390
+ };
1391
+ walk: {
1392
+ frozenEpochMs: number;
1393
+ paths: {
1394
+ journeyKey: string;
1395
+ scenario: string;
1396
+ steps: {
1397
+ status: "pass" | "fail" | "skipped";
1398
+ stateKey: string;
1399
+ transition: {
1400
+ from: string;
1401
+ event: string;
1402
+ to: string;
1403
+ } | null;
1404
+ screenshotKey: string | null;
1405
+ operations?: string[] | undefined;
1406
+ attempts?: number | undefined;
1407
+ error?: string | null | undefined;
1408
+ traceKey?: string | null | undefined;
1409
+ routeObserved?: string | null | undefined;
1410
+ }[];
1411
+ }[];
1412
+ viewport?: {
1413
+ width: number;
1414
+ height: number;
1415
+ } | undefined;
1416
+ };
1417
+ prNumber?: number | null | undefined;
1418
+ deployLabel?: string | null | undefined;
1419
+ declaredSeams?: string[] | undefined;
1420
+ }>;
1421
+ export type RunPayload = z.infer<typeof RunPayload>;
1422
+ /** Baseline manifest the API hands the reconciler before the walk. */
1423
+ export declare const BaselineManifestEntry: z.ZodObject<{
1424
+ journeyKey: z.ZodString;
1425
+ stateKey: z.ZodString;
1426
+ scenario: z.ZodString;
1427
+ s3Key: z.ZodString;
1428
+ /** Presigned GET URL valid for the duration of the run. */
1429
+ url: z.ZodString;
1430
+ }, "strip", z.ZodTypeAny, {
1431
+ url: string;
1432
+ journeyKey: string;
1433
+ stateKey: string;
1434
+ scenario: string;
1435
+ s3Key: string;
1436
+ }, {
1437
+ url: string;
1438
+ journeyKey: string;
1439
+ stateKey: string;
1440
+ scenario: string;
1441
+ s3Key: string;
1442
+ }>;
1443
+ export declare const BaselineManifest: z.ZodObject<{
1444
+ projectKey: z.ZodString;
1445
+ entries: z.ZodArray<z.ZodObject<{
1446
+ journeyKey: z.ZodString;
1447
+ stateKey: z.ZodString;
1448
+ scenario: z.ZodString;
1449
+ s3Key: z.ZodString;
1450
+ /** Presigned GET URL valid for the duration of the run. */
1451
+ url: z.ZodString;
1452
+ }, "strip", z.ZodTypeAny, {
1453
+ url: string;
1454
+ journeyKey: string;
1455
+ stateKey: string;
1456
+ scenario: string;
1457
+ s3Key: string;
1458
+ }, {
1459
+ url: string;
1460
+ journeyKey: string;
1461
+ stateKey: string;
1462
+ scenario: string;
1463
+ s3Key: string;
1464
+ }>, "many">;
1465
+ }, "strip", z.ZodTypeAny, {
1466
+ entries: {
1467
+ url: string;
1468
+ journeyKey: string;
1469
+ stateKey: string;
1470
+ scenario: string;
1471
+ s3Key: string;
1472
+ }[];
1473
+ projectKey: string;
1474
+ }, {
1475
+ entries: {
1476
+ url: string;
1477
+ journeyKey: string;
1478
+ stateKey: string;
1479
+ scenario: string;
1480
+ s3Key: string;
1481
+ }[];
1482
+ projectKey: string;
1483
+ }>;
1484
+ export type BaselineManifest = z.infer<typeof BaselineManifest>;
1485
+ //# sourceMappingURL=run.d.ts.map