@nuxtseo/protocol 0.1.0 → 0.1.2

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.
@@ -18,14 +18,23 @@ export declare const actionShowQuerySchema: z.ZodObject<{
18
18
  export declare const actionResolveBodySchema: z.ZodObject<{
19
19
  artifactVersion: z.ZodString;
20
20
  }, z.core.$strict>;
21
+ /**
22
+ * `url` is the URL the finding was observed on and stays exactly as observed —
23
+ * it is what verification re-checks. `redirectsTo` is the read-time answer to
24
+ * "does that URL still resolve there", present only when the site's own crawl
25
+ * recorded a redirect away from it. A client that follows `url` blindly edits
26
+ * the page the action named before the redirect landed.
27
+ */
21
28
  export declare const actionSubjectSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
22
29
  readonly kind: z.ZodString;
23
30
  readonly label: z.ZodString;
24
31
  readonly url: z.ZodOptional<z.ZodString>;
32
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
25
33
  }, z.core.$strip>, z.ZodObject<{
26
34
  readonly kind: z.ZodString;
27
35
  readonly label: z.ZodString;
28
36
  readonly url: z.ZodOptional<z.ZodString>;
37
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
29
38
  }, z.core.$strip>>;
30
39
  export declare const actionSourceSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
31
40
  readonly label: z.ZodString;
@@ -34,6 +43,32 @@ export declare const actionSourceSchema: import("./core.js").CompatibleResponseS
34
43
  readonly label: z.ZodString;
35
44
  readonly url: z.ZodString;
36
45
  }, z.core.$strip>>;
46
+ /**
47
+ * Evidence age computed at read time, so a listing cannot present a stale
48
+ * observation as current work. `verdict` is `aged` past 24 hours. `source`
49
+ * names which clock answered: `producer` is the sealed collection clock,
50
+ * `ticket-observation` is the ticket's own reasserted clock, `none` means no
51
+ * observation clock exists and the verdict is `unknown`.
52
+ */
53
+ export declare const actionEvidenceFreshnessSchema: z.ZodObject<{
54
+ observedAt: z.ZodNullable<z.ZodString>;
55
+ ageHours: z.ZodNullable<z.ZodNumber>;
56
+ verdict: z.ZodEnum<{
57
+ aged: "aged";
58
+ recent: "recent";
59
+ unknown: "unknown";
60
+ }>;
61
+ source: z.ZodEnum<{
62
+ none: "none";
63
+ producer: "producer";
64
+ "ticket-observation": "ticket-observation";
65
+ }>;
66
+ confidence: z.ZodEnum<{
67
+ reasserted: "reasserted";
68
+ sealed: "sealed";
69
+ unknown: "unknown";
70
+ }>;
71
+ }, z.core.$strict>;
37
72
  export declare const actionEvidenceSummarySchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
38
73
  readonly artifactVersion: z.ZodNullable<z.ZodString>;
39
74
  readonly coverage: z.ZodEnum<{
@@ -49,6 +84,25 @@ export declare const actionEvidenceSummarySchema: import("./core.js").Compatible
49
84
  readonly groupCount: z.ZodNumber;
50
85
  readonly observedAt: z.ZodNullable<z.ZodString>;
51
86
  readonly asOf: z.ZodNullable<z.ZodString>;
87
+ readonly freshness: z.ZodObject<{
88
+ observedAt: z.ZodNullable<z.ZodString>;
89
+ ageHours: z.ZodNullable<z.ZodNumber>;
90
+ verdict: z.ZodEnum<{
91
+ aged: "aged";
92
+ recent: "recent";
93
+ unknown: "unknown";
94
+ }>;
95
+ source: z.ZodEnum<{
96
+ none: "none";
97
+ producer: "producer";
98
+ "ticket-observation": "ticket-observation";
99
+ }>;
100
+ confidence: z.ZodEnum<{
101
+ reasserted: "reasserted";
102
+ sealed: "sealed";
103
+ unknown: "unknown";
104
+ }>;
105
+ }, z.core.$strict>;
52
106
  }, z.core.$strip>, z.ZodObject<{
53
107
  readonly artifactVersion: z.ZodNullable<z.ZodString>;
54
108
  readonly coverage: z.ZodEnum<{
@@ -64,6 +118,25 @@ export declare const actionEvidenceSummarySchema: import("./core.js").Compatible
64
118
  readonly groupCount: z.ZodNumber;
65
119
  readonly observedAt: z.ZodNullable<z.ZodString>;
66
120
  readonly asOf: z.ZodNullable<z.ZodString>;
121
+ readonly freshness: z.ZodObject<{
122
+ observedAt: z.ZodNullable<z.ZodString>;
123
+ ageHours: z.ZodNullable<z.ZodNumber>;
124
+ verdict: z.ZodEnum<{
125
+ aged: "aged";
126
+ recent: "recent";
127
+ unknown: "unknown";
128
+ }>;
129
+ source: z.ZodEnum<{
130
+ none: "none";
131
+ producer: "producer";
132
+ "ticket-observation": "ticket-observation";
133
+ }>;
134
+ confidence: z.ZodEnum<{
135
+ reasserted: "reasserted";
136
+ sealed: "sealed";
137
+ unknown: "unknown";
138
+ }>;
139
+ }, z.core.$strict>;
67
140
  }, z.core.$strip>>;
68
141
  export declare const actionListItemSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
69
142
  readonly id: z.ZodString;
@@ -73,6 +146,7 @@ export declare const actionListItemSchema: import("./core.js").CompatibleRespons
73
146
  readonly kind: z.ZodString;
74
147
  readonly label: z.ZodString;
75
148
  readonly url: z.ZodOptional<z.ZodString>;
149
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
76
150
  }, z.core.$strip>>;
77
151
  readonly source: z.ZodNullable<z.ZodObject<{
78
152
  readonly label: z.ZodString;
@@ -109,6 +183,25 @@ export declare const actionListItemSchema: import("./core.js").CompatibleRespons
109
183
  readonly groupCount: z.ZodNumber;
110
184
  readonly observedAt: z.ZodNullable<z.ZodString>;
111
185
  readonly asOf: z.ZodNullable<z.ZodString>;
186
+ readonly freshness: z.ZodObject<{
187
+ observedAt: z.ZodNullable<z.ZodString>;
188
+ ageHours: z.ZodNullable<z.ZodNumber>;
189
+ verdict: z.ZodEnum<{
190
+ aged: "aged";
191
+ recent: "recent";
192
+ unknown: "unknown";
193
+ }>;
194
+ source: z.ZodEnum<{
195
+ none: "none";
196
+ producer: "producer";
197
+ "ticket-observation": "ticket-observation";
198
+ }>;
199
+ confidence: z.ZodEnum<{
200
+ reasserted: "reasserted";
201
+ sealed: "sealed";
202
+ unknown: "unknown";
203
+ }>;
204
+ }, z.core.$strict>;
112
205
  }, z.core.$strip>;
113
206
  readonly firstSeenAt: z.ZodNullable<z.ZodString>;
114
207
  readonly relatedActionIds: z.ZodArray<z.ZodString>;
@@ -129,6 +222,7 @@ export declare const actionListItemSchema: import("./core.js").CompatibleRespons
129
222
  readonly kind: z.ZodString;
130
223
  readonly label: z.ZodString;
131
224
  readonly url: z.ZodOptional<z.ZodString>;
225
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
132
226
  }, z.core.$strip>>;
133
227
  readonly source: z.ZodNullable<z.ZodObject<{
134
228
  readonly label: z.ZodString;
@@ -165,6 +259,25 @@ export declare const actionListItemSchema: import("./core.js").CompatibleRespons
165
259
  readonly groupCount: z.ZodNumber;
166
260
  readonly observedAt: z.ZodNullable<z.ZodString>;
167
261
  readonly asOf: z.ZodNullable<z.ZodString>;
262
+ readonly freshness: z.ZodObject<{
263
+ observedAt: z.ZodNullable<z.ZodString>;
264
+ ageHours: z.ZodNullable<z.ZodNumber>;
265
+ verdict: z.ZodEnum<{
266
+ aged: "aged";
267
+ recent: "recent";
268
+ unknown: "unknown";
269
+ }>;
270
+ source: z.ZodEnum<{
271
+ none: "none";
272
+ producer: "producer";
273
+ "ticket-observation": "ticket-observation";
274
+ }>;
275
+ confidence: z.ZodEnum<{
276
+ reasserted: "reasserted";
277
+ sealed: "sealed";
278
+ unknown: "unknown";
279
+ }>;
280
+ }, z.core.$strict>;
168
281
  }, z.core.$strip>;
169
282
  readonly firstSeenAt: z.ZodNullable<z.ZodString>;
170
283
  readonly relatedActionIds: z.ZodArray<z.ZodString>;
@@ -187,6 +300,7 @@ export declare const actionListDataSchema: import("./core.js").CompatibleRespons
187
300
  readonly kind: z.ZodString;
188
301
  readonly label: z.ZodString;
189
302
  readonly url: z.ZodOptional<z.ZodString>;
303
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
190
304
  }, z.core.$strip>>;
191
305
  readonly source: z.ZodNullable<z.ZodObject<{
192
306
  readonly label: z.ZodString;
@@ -223,6 +337,25 @@ export declare const actionListDataSchema: import("./core.js").CompatibleRespons
223
337
  readonly groupCount: z.ZodNumber;
224
338
  readonly observedAt: z.ZodNullable<z.ZodString>;
225
339
  readonly asOf: z.ZodNullable<z.ZodString>;
340
+ readonly freshness: z.ZodObject<{
341
+ observedAt: z.ZodNullable<z.ZodString>;
342
+ ageHours: z.ZodNullable<z.ZodNumber>;
343
+ verdict: z.ZodEnum<{
344
+ aged: "aged";
345
+ recent: "recent";
346
+ unknown: "unknown";
347
+ }>;
348
+ source: z.ZodEnum<{
349
+ none: "none";
350
+ producer: "producer";
351
+ "ticket-observation": "ticket-observation";
352
+ }>;
353
+ confidence: z.ZodEnum<{
354
+ reasserted: "reasserted";
355
+ sealed: "sealed";
356
+ unknown: "unknown";
357
+ }>;
358
+ }, z.core.$strict>;
226
359
  }, z.core.$strip>;
227
360
  readonly firstSeenAt: z.ZodNullable<z.ZodString>;
228
361
  readonly relatedActionIds: z.ZodArray<z.ZodString>;
@@ -252,6 +385,7 @@ export declare const actionListDataSchema: import("./core.js").CompatibleRespons
252
385
  readonly kind: z.ZodString;
253
386
  readonly label: z.ZodString;
254
387
  readonly url: z.ZodOptional<z.ZodString>;
388
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
255
389
  }, z.core.$strip>>;
256
390
  readonly source: z.ZodNullable<z.ZodObject<{
257
391
  readonly label: z.ZodString;
@@ -288,6 +422,25 @@ export declare const actionListDataSchema: import("./core.js").CompatibleRespons
288
422
  readonly groupCount: z.ZodNumber;
289
423
  readonly observedAt: z.ZodNullable<z.ZodString>;
290
424
  readonly asOf: z.ZodNullable<z.ZodString>;
425
+ readonly freshness: z.ZodObject<{
426
+ observedAt: z.ZodNullable<z.ZodString>;
427
+ ageHours: z.ZodNullable<z.ZodNumber>;
428
+ verdict: z.ZodEnum<{
429
+ aged: "aged";
430
+ recent: "recent";
431
+ unknown: "unknown";
432
+ }>;
433
+ source: z.ZodEnum<{
434
+ none: "none";
435
+ producer: "producer";
436
+ "ticket-observation": "ticket-observation";
437
+ }>;
438
+ confidence: z.ZodEnum<{
439
+ reasserted: "reasserted";
440
+ sealed: "sealed";
441
+ unknown: "unknown";
442
+ }>;
443
+ }, z.core.$strict>;
291
444
  }, z.core.$strip>;
292
445
  readonly firstSeenAt: z.ZodNullable<z.ZodString>;
293
446
  readonly relatedActionIds: z.ZodArray<z.ZodString>;
@@ -319,6 +472,7 @@ export declare const actionListResponseSchema: import("./core.js").CompatibleRes
319
472
  readonly kind: z.ZodString;
320
473
  readonly label: z.ZodString;
321
474
  readonly url: z.ZodOptional<z.ZodString>;
475
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
322
476
  }, z.core.$strip>>;
323
477
  readonly source: z.ZodNullable<z.ZodObject<{
324
478
  readonly label: z.ZodString;
@@ -355,6 +509,25 @@ export declare const actionListResponseSchema: import("./core.js").CompatibleRes
355
509
  readonly groupCount: z.ZodNumber;
356
510
  readonly observedAt: z.ZodNullable<z.ZodString>;
357
511
  readonly asOf: z.ZodNullable<z.ZodString>;
512
+ readonly freshness: z.ZodObject<{
513
+ observedAt: z.ZodNullable<z.ZodString>;
514
+ ageHours: z.ZodNullable<z.ZodNumber>;
515
+ verdict: z.ZodEnum<{
516
+ aged: "aged";
517
+ recent: "recent";
518
+ unknown: "unknown";
519
+ }>;
520
+ source: z.ZodEnum<{
521
+ none: "none";
522
+ producer: "producer";
523
+ "ticket-observation": "ticket-observation";
524
+ }>;
525
+ confidence: z.ZodEnum<{
526
+ reasserted: "reasserted";
527
+ sealed: "sealed";
528
+ unknown: "unknown";
529
+ }>;
530
+ }, z.core.$strict>;
358
531
  }, z.core.$strip>;
359
532
  readonly firstSeenAt: z.ZodNullable<z.ZodString>;
360
533
  readonly relatedActionIds: z.ZodArray<z.ZodString>;
@@ -390,6 +563,7 @@ export declare const actionListResponseSchema: import("./core.js").CompatibleRes
390
563
  readonly kind: z.ZodString;
391
564
  readonly label: z.ZodString;
392
565
  readonly url: z.ZodOptional<z.ZodString>;
566
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
393
567
  }, z.core.$strip>>;
394
568
  readonly source: z.ZodNullable<z.ZodObject<{
395
569
  readonly label: z.ZodString;
@@ -426,6 +600,25 @@ export declare const actionListResponseSchema: import("./core.js").CompatibleRes
426
600
  readonly groupCount: z.ZodNumber;
427
601
  readonly observedAt: z.ZodNullable<z.ZodString>;
428
602
  readonly asOf: z.ZodNullable<z.ZodString>;
603
+ readonly freshness: z.ZodObject<{
604
+ observedAt: z.ZodNullable<z.ZodString>;
605
+ ageHours: z.ZodNullable<z.ZodNumber>;
606
+ verdict: z.ZodEnum<{
607
+ aged: "aged";
608
+ recent: "recent";
609
+ unknown: "unknown";
610
+ }>;
611
+ source: z.ZodEnum<{
612
+ none: "none";
613
+ producer: "producer";
614
+ "ticket-observation": "ticket-observation";
615
+ }>;
616
+ confidence: z.ZodEnum<{
617
+ reasserted: "reasserted";
618
+ sealed: "sealed";
619
+ unknown: "unknown";
620
+ }>;
621
+ }, z.core.$strict>;
429
622
  }, z.core.$strip>;
430
623
  readonly firstSeenAt: z.ZodNullable<z.ZodString>;
431
624
  readonly relatedActionIds: z.ZodArray<z.ZodString>;
@@ -677,6 +870,12 @@ export declare const actionShowDataSchema: import("./core.js").CompatibleRespons
677
870
  readonly assessmentId: z.ZodString;
678
871
  readonly asOf: z.ZodString;
679
872
  readonly diagnosis: z.ZodString;
873
+ readonly subject: z.ZodNullable<z.ZodObject<{
874
+ readonly kind: z.ZodString;
875
+ readonly label: z.ZodString;
876
+ readonly url: z.ZodOptional<z.ZodString>;
877
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
878
+ }, z.core.$strip>>;
680
879
  readonly action: z.ZodString;
681
880
  readonly verifier: z.ZodDiscriminatedUnion<[z.ZodObject<{
682
881
  _tag: z.ZodLiteral<"target-healthy">;
@@ -756,6 +955,12 @@ export declare const actionShowDataSchema: import("./core.js").CompatibleRespons
756
955
  readonly assessmentId: z.ZodString;
757
956
  readonly asOf: z.ZodString;
758
957
  readonly diagnosis: z.ZodString;
958
+ readonly subject: z.ZodNullable<z.ZodObject<{
959
+ readonly kind: z.ZodString;
960
+ readonly label: z.ZodString;
961
+ readonly url: z.ZodOptional<z.ZodString>;
962
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
963
+ }, z.core.$strip>>;
759
964
  readonly action: z.ZodString;
760
965
  readonly verifier: z.ZodDiscriminatedUnion<[z.ZodObject<{
761
966
  _tag: z.ZodLiteral<"target-healthy">;
@@ -837,6 +1042,12 @@ export declare const actionShowResponseSchema: import("./core.js").CompatibleRes
837
1042
  readonly assessmentId: z.ZodString;
838
1043
  readonly asOf: z.ZodString;
839
1044
  readonly diagnosis: z.ZodString;
1045
+ readonly subject: z.ZodNullable<z.ZodObject<{
1046
+ readonly kind: z.ZodString;
1047
+ readonly label: z.ZodString;
1048
+ readonly url: z.ZodOptional<z.ZodString>;
1049
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
1050
+ }, z.core.$strip>>;
840
1051
  readonly action: z.ZodString;
841
1052
  readonly verifier: z.ZodDiscriminatedUnion<[z.ZodObject<{
842
1053
  _tag: z.ZodLiteral<"target-healthy">;
@@ -922,6 +1133,12 @@ export declare const actionShowResponseSchema: import("./core.js").CompatibleRes
922
1133
  readonly assessmentId: z.ZodString;
923
1134
  readonly asOf: z.ZodString;
924
1135
  readonly diagnosis: z.ZodString;
1136
+ readonly subject: z.ZodNullable<z.ZodObject<{
1137
+ readonly kind: z.ZodString;
1138
+ readonly label: z.ZodString;
1139
+ readonly url: z.ZodOptional<z.ZodString>;
1140
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
1141
+ }, z.core.$strip>>;
925
1142
  readonly action: z.ZodString;
926
1143
  readonly verifier: z.ZodDiscriminatedUnion<[z.ZodObject<{
927
1144
  _tag: z.ZodLiteral<"target-healthy">;
@@ -1098,6 +1315,7 @@ export declare const actionListOperation: {
1098
1315
  readonly kind: z.ZodString;
1099
1316
  readonly label: z.ZodString;
1100
1317
  readonly url: z.ZodOptional<z.ZodString>;
1318
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
1101
1319
  }, z.core.$strip>>;
1102
1320
  readonly source: z.ZodNullable<z.ZodObject<{
1103
1321
  readonly label: z.ZodString;
@@ -1134,6 +1352,25 @@ export declare const actionListOperation: {
1134
1352
  readonly groupCount: z.ZodNumber;
1135
1353
  readonly observedAt: z.ZodNullable<z.ZodString>;
1136
1354
  readonly asOf: z.ZodNullable<z.ZodString>;
1355
+ readonly freshness: z.ZodObject<{
1356
+ observedAt: z.ZodNullable<z.ZodString>;
1357
+ ageHours: z.ZodNullable<z.ZodNumber>;
1358
+ verdict: z.ZodEnum<{
1359
+ aged: "aged";
1360
+ recent: "recent";
1361
+ unknown: "unknown";
1362
+ }>;
1363
+ source: z.ZodEnum<{
1364
+ none: "none";
1365
+ producer: "producer";
1366
+ "ticket-observation": "ticket-observation";
1367
+ }>;
1368
+ confidence: z.ZodEnum<{
1369
+ reasserted: "reasserted";
1370
+ sealed: "sealed";
1371
+ unknown: "unknown";
1372
+ }>;
1373
+ }, z.core.$strict>;
1137
1374
  }, z.core.$strip>;
1138
1375
  readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1139
1376
  readonly relatedActionIds: z.ZodArray<z.ZodString>;
@@ -1169,6 +1406,7 @@ export declare const actionListOperation: {
1169
1406
  readonly kind: z.ZodString;
1170
1407
  readonly label: z.ZodString;
1171
1408
  readonly url: z.ZodOptional<z.ZodString>;
1409
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
1172
1410
  }, z.core.$strip>>;
1173
1411
  readonly source: z.ZodNullable<z.ZodObject<{
1174
1412
  readonly label: z.ZodString;
@@ -1205,6 +1443,25 @@ export declare const actionListOperation: {
1205
1443
  readonly groupCount: z.ZodNumber;
1206
1444
  readonly observedAt: z.ZodNullable<z.ZodString>;
1207
1445
  readonly asOf: z.ZodNullable<z.ZodString>;
1446
+ readonly freshness: z.ZodObject<{
1447
+ observedAt: z.ZodNullable<z.ZodString>;
1448
+ ageHours: z.ZodNullable<z.ZodNumber>;
1449
+ verdict: z.ZodEnum<{
1450
+ aged: "aged";
1451
+ recent: "recent";
1452
+ unknown: "unknown";
1453
+ }>;
1454
+ source: z.ZodEnum<{
1455
+ none: "none";
1456
+ producer: "producer";
1457
+ "ticket-observation": "ticket-observation";
1458
+ }>;
1459
+ confidence: z.ZodEnum<{
1460
+ reasserted: "reasserted";
1461
+ sealed: "sealed";
1462
+ unknown: "unknown";
1463
+ }>;
1464
+ }, z.core.$strict>;
1208
1465
  }, z.core.$strip>;
1209
1466
  readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1210
1467
  readonly relatedActionIds: z.ZodArray<z.ZodString>;
@@ -1378,6 +1635,12 @@ export declare const actionShowOperation: {
1378
1635
  readonly assessmentId: z.ZodString;
1379
1636
  readonly asOf: z.ZodString;
1380
1637
  readonly diagnosis: z.ZodString;
1638
+ readonly subject: z.ZodNullable<z.ZodObject<{
1639
+ readonly kind: z.ZodString;
1640
+ readonly label: z.ZodString;
1641
+ readonly url: z.ZodOptional<z.ZodString>;
1642
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
1643
+ }, z.core.$strip>>;
1381
1644
  readonly action: z.ZodString;
1382
1645
  readonly verifier: z.ZodDiscriminatedUnion<[z.ZodObject<{
1383
1646
  _tag: z.ZodLiteral<"target-healthy">;
@@ -1463,6 +1726,12 @@ export declare const actionShowOperation: {
1463
1726
  readonly assessmentId: z.ZodString;
1464
1727
  readonly asOf: z.ZodString;
1465
1728
  readonly diagnosis: z.ZodString;
1729
+ readonly subject: z.ZodNullable<z.ZodObject<{
1730
+ readonly kind: z.ZodString;
1731
+ readonly label: z.ZodString;
1732
+ readonly url: z.ZodOptional<z.ZodString>;
1733
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
1734
+ }, z.core.$strip>>;
1466
1735
  readonly action: z.ZodString;
1467
1736
  readonly verifier: z.ZodDiscriminatedUnion<[z.ZodObject<{
1468
1737
  _tag: z.ZodLiteral<"target-healthy">;
@@ -1636,6 +1905,11 @@ export declare const actionShowOperation: {
1636
1905
  readonly assessmentId: 'assessment_01JXYZ';
1637
1906
  readonly asOf: '2026-08-10T01:30:00.000Z';
1638
1907
  readonly diagnosis: 'One page returns HTTP 404.';
1908
+ readonly subject: {
1909
+ readonly kind: 'page';
1910
+ readonly label: '/pricing';
1911
+ readonly url: 'https://example.com/pricing';
1912
+ };
1639
1913
  readonly action: 'Restore or redirect the page.';
1640
1914
  readonly verifier: {
1641
1915
  readonly _tag: 'finding-cleared';
@@ -1863,6 +2137,7 @@ export declare const actionsV1Registry: import("./core.js").PublicV1Registry<{
1863
2137
  readonly kind: z.ZodString;
1864
2138
  readonly label: z.ZodString;
1865
2139
  readonly url: z.ZodOptional<z.ZodString>;
2140
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
1866
2141
  }, z.core.$strip>>;
1867
2142
  readonly source: z.ZodNullable<z.ZodObject<{
1868
2143
  readonly label: z.ZodString;
@@ -1899,6 +2174,25 @@ export declare const actionsV1Registry: import("./core.js").PublicV1Registry<{
1899
2174
  readonly groupCount: z.ZodNumber;
1900
2175
  readonly observedAt: z.ZodNullable<z.ZodString>;
1901
2176
  readonly asOf: z.ZodNullable<z.ZodString>;
2177
+ readonly freshness: z.ZodObject<{
2178
+ observedAt: z.ZodNullable<z.ZodString>;
2179
+ ageHours: z.ZodNullable<z.ZodNumber>;
2180
+ verdict: z.ZodEnum<{
2181
+ aged: "aged";
2182
+ recent: "recent";
2183
+ unknown: "unknown";
2184
+ }>;
2185
+ source: z.ZodEnum<{
2186
+ none: "none";
2187
+ producer: "producer";
2188
+ "ticket-observation": "ticket-observation";
2189
+ }>;
2190
+ confidence: z.ZodEnum<{
2191
+ reasserted: "reasserted";
2192
+ sealed: "sealed";
2193
+ unknown: "unknown";
2194
+ }>;
2195
+ }, z.core.$strict>;
1902
2196
  }, z.core.$strip>;
1903
2197
  readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1904
2198
  readonly relatedActionIds: z.ZodArray<z.ZodString>;
@@ -1934,6 +2228,7 @@ export declare const actionsV1Registry: import("./core.js").PublicV1Registry<{
1934
2228
  readonly kind: z.ZodString;
1935
2229
  readonly label: z.ZodString;
1936
2230
  readonly url: z.ZodOptional<z.ZodString>;
2231
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
1937
2232
  }, z.core.$strip>>;
1938
2233
  readonly source: z.ZodNullable<z.ZodObject<{
1939
2234
  readonly label: z.ZodString;
@@ -1970,6 +2265,25 @@ export declare const actionsV1Registry: import("./core.js").PublicV1Registry<{
1970
2265
  readonly groupCount: z.ZodNumber;
1971
2266
  readonly observedAt: z.ZodNullable<z.ZodString>;
1972
2267
  readonly asOf: z.ZodNullable<z.ZodString>;
2268
+ readonly freshness: z.ZodObject<{
2269
+ observedAt: z.ZodNullable<z.ZodString>;
2270
+ ageHours: z.ZodNullable<z.ZodNumber>;
2271
+ verdict: z.ZodEnum<{
2272
+ aged: "aged";
2273
+ recent: "recent";
2274
+ unknown: "unknown";
2275
+ }>;
2276
+ source: z.ZodEnum<{
2277
+ none: "none";
2278
+ producer: "producer";
2279
+ "ticket-observation": "ticket-observation";
2280
+ }>;
2281
+ confidence: z.ZodEnum<{
2282
+ reasserted: "reasserted";
2283
+ sealed: "sealed";
2284
+ unknown: "unknown";
2285
+ }>;
2286
+ }, z.core.$strict>;
1973
2287
  }, z.core.$strip>;
1974
2288
  readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1975
2289
  readonly relatedActionIds: z.ZodArray<z.ZodString>;
@@ -2143,6 +2457,12 @@ export declare const actionsV1Registry: import("./core.js").PublicV1Registry<{
2143
2457
  readonly assessmentId: z.ZodString;
2144
2458
  readonly asOf: z.ZodString;
2145
2459
  readonly diagnosis: z.ZodString;
2460
+ readonly subject: z.ZodNullable<z.ZodObject<{
2461
+ readonly kind: z.ZodString;
2462
+ readonly label: z.ZodString;
2463
+ readonly url: z.ZodOptional<z.ZodString>;
2464
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
2465
+ }, z.core.$strip>>;
2146
2466
  readonly action: z.ZodString;
2147
2467
  readonly verifier: z.ZodDiscriminatedUnion<[z.ZodObject<{
2148
2468
  _tag: z.ZodLiteral<"target-healthy">;
@@ -2228,6 +2548,12 @@ export declare const actionsV1Registry: import("./core.js").PublicV1Registry<{
2228
2548
  readonly assessmentId: z.ZodString;
2229
2549
  readonly asOf: z.ZodString;
2230
2550
  readonly diagnosis: z.ZodString;
2551
+ readonly subject: z.ZodNullable<z.ZodObject<{
2552
+ readonly kind: z.ZodString;
2553
+ readonly label: z.ZodString;
2554
+ readonly url: z.ZodOptional<z.ZodString>;
2555
+ readonly redirectsTo: z.ZodOptional<z.ZodString>;
2556
+ }, z.core.$strip>>;
2231
2557
  readonly action: z.ZodString;
2232
2558
  readonly verifier: z.ZodDiscriminatedUnion<[z.ZodObject<{
2233
2559
  _tag: z.ZodLiteral<"target-healthy">;
@@ -2401,6 +2727,11 @@ export declare const actionsV1Registry: import("./core.js").PublicV1Registry<{
2401
2727
  readonly assessmentId: 'assessment_01JXYZ';
2402
2728
  readonly asOf: '2026-08-10T01:30:00.000Z';
2403
2729
  readonly diagnosis: 'One page returns HTTP 404.';
2730
+ readonly subject: {
2731
+ readonly kind: 'page';
2732
+ readonly label: '/pricing';
2733
+ readonly url: 'https://example.com/pricing';
2734
+ };
2404
2735
  readonly action: 'Restore or redirect the page.';
2405
2736
  readonly verifier: {
2406
2737
  readonly _tag: 'finding-cleared';
@@ -19,16 +19,39 @@ export const actionShowQuerySchema = schema.strictObject({
19
19
  export const actionResolveBodySchema = schema.strictObject({
20
20
  artifactVersion: schema.string().min(1),
21
21
  });
22
+ /**
23
+ * `url` is the URL the finding was observed on and stays exactly as observed —
24
+ * it is what verification re-checks. `redirectsTo` is the read-time answer to
25
+ * "does that URL still resolve there", present only when the site's own crawl
26
+ * recorded a redirect away from it. A client that follows `url` blindly edits
27
+ * the page the action named before the redirect landed.
28
+ */
22
29
  export const actionSubjectSchema = defineResponseObject({
23
30
  kind: schema.string().min(1),
24
31
  label: schema.string().min(1),
25
32
  url: schema.string().optional(),
33
+ redirectsTo: schema.string().optional(),
26
34
  }, {
27
35
  kind: schema.string().min(1),
28
36
  label: schema.string().min(1),
29
37
  url: schema.string().optional(),
38
+ redirectsTo: schema.string().optional(),
30
39
  });
31
40
  export const actionSourceSchema = defineResponseObject({ label: schema.string().min(1), url: schema.string().url() }, { label: schema.string().min(1), url: schema.string().url() });
41
+ /**
42
+ * Evidence age computed at read time, so a listing cannot present a stale
43
+ * observation as current work. `verdict` is `aged` past 24 hours. `source`
44
+ * names which clock answered: `producer` is the sealed collection clock,
45
+ * `ticket-observation` is the ticket's own reasserted clock, `none` means no
46
+ * observation clock exists and the verdict is `unknown`.
47
+ */
48
+ export const actionEvidenceFreshnessSchema = schema.strictObject({
49
+ observedAt: schema.string().datetime().nullable(),
50
+ ageHours: schema.number().int().nonnegative().nullable(),
51
+ verdict: schema.enum(['recent', 'aged', 'unknown']),
52
+ source: schema.enum(['producer', 'ticket-observation', 'none']),
53
+ confidence: schema.enum(['sealed', 'reasserted', 'unknown']),
54
+ });
32
55
  export const actionEvidenceSummarySchema = defineResponseObject({
33
56
  artifactVersion: schema.string().min(1).nullable(),
34
57
  coverage: schema.enum(['complete', 'partial', 'count-only', 'unknown', 'unavailable']),
@@ -38,6 +61,7 @@ export const actionEvidenceSummarySchema = defineResponseObject({
38
61
  groupCount: schema.number().int().nonnegative(),
39
62
  observedAt: schema.string().datetime().nullable(),
40
63
  asOf: schema.string().datetime().nullable(),
64
+ freshness: actionEvidenceFreshnessSchema,
41
65
  }, {
42
66
  artifactVersion: schema.string().min(1).nullable(),
43
67
  coverage: schema.enum(['complete', 'partial', 'count-only', 'unknown', 'unavailable']),
@@ -47,6 +71,7 @@ export const actionEvidenceSummarySchema = defineResponseObject({
47
71
  groupCount: schema.number().int().nonnegative(),
48
72
  observedAt: schema.string().datetime().nullable(),
49
73
  asOf: schema.string().datetime().nullable(),
74
+ freshness: actionEvidenceFreshnessSchema,
50
75
  });
51
76
  export const actionListItemSchema = defineResponseObject({
52
77
  id: schema.string().min(1),
@@ -246,6 +271,7 @@ export const actionShowDataSchema = defineResponseObject({
246
271
  assessmentId: schema.string().min(1),
247
272
  asOf: schema.string().datetime(),
248
273
  diagnosis: schema.string().min(1),
274
+ subject: actionSubjectSchema.producer.nullable(),
249
275
  action: schema.string().min(1),
250
276
  verifier: actionVerifierSchema,
251
277
  materiality: schema.strictObject({
@@ -261,6 +287,7 @@ export const actionShowDataSchema = defineResponseObject({
261
287
  assessmentId: schema.string().min(1),
262
288
  asOf: schema.string().datetime(),
263
289
  diagnosis: schema.string().min(1),
290
+ subject: actionSubjectSchema.client.nullable(),
264
291
  action: schema.string().min(1),
265
292
  verifier: actionVerifierClientSchema,
266
293
  materiality: schema.looseObject({
@@ -381,6 +408,7 @@ export const actionShowOperation = defineOperation({
381
408
  assessmentId: 'assessment_01JXYZ',
382
409
  asOf: '2026-08-10T01:30:00.000Z',
383
410
  diagnosis: 'One page returns HTTP 404.',
411
+ subject: { kind: 'page', label: '/pricing', url: 'https://example.com/pricing' },
384
412
  action: 'Restore or redirect the page.',
385
413
  verifier: { _tag: 'finding-cleared', findingType: 'broken-pages' },
386
414
  materiality: { affectedSubjects: 1, internalReferrers: 2 },