@crvouga/atlas 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/reports/src/attachment-files.d.ts +3 -1
- package/dist/reports/src/attachment-files.js +14 -4
- package/dist/reports/src/evidence-types.d.ts +22 -0
- package/dist/reports/src/layer-merge.js +5 -0
- package/dist/reports/src/layer-types.d.ts +1 -1
- package/dist/reports/src/publish-checks.js +11 -3
- package/dist/reports/src/recording-receipt.d.ts +48 -0
- package/dist/reports/src/recording-receipt.js +103 -0
- package/dist/reports/src/report-cli.d.ts +1 -1
- package/dist/reports/src/report-cli.js +20 -2
- package/dist/reports/src/report-status.d.ts +2 -0
- package/dist/reports/src/report-status.js +17 -1
- package/dist/reports/src/reports-explorer-route.d.ts +8 -0
- package/dist/reports/src/reports-route.d.ts +8 -0
- package/dist/schema/src/api.d.ts +65 -0
- package/dist/schema/src/api.js +7 -2
- package/dist/schema/src/cli-results.d.ts +107 -2
- package/dist/schema/src/cli-results.js +11 -3
- package/dist/schema/src/layer.d.ts +165 -0
- package/dist/schema/src/layer.js +72 -1
- package/docs/reference/cli.md +5 -0
- package/docs/reference/reports.md +94 -2
- package/docs/reference/schema.md +59 -0
- package/docs/rich-evidence.md +29 -0
- package/llms-full.txt +34 -0
- package/package.json +1 -1
- package/packages/schema/schemas/check-detail.schema.json +20 -0
- package/packages/schema/schemas/effective-delta.schema.json +61 -0
- package/packages/schema/schemas/effective-evidence.schema.json +61 -0
- package/packages/schema/schemas/evidence-page.schema.json +45 -0
- package/packages/schema/schemas/layer-rows.schema.json +16 -0
- package/packages/schema/schemas/layer.schema.json +153 -0
- package/packages/schema/schemas/publish-checks.schema.json +24 -0
- package/packages/schema/schemas/publish-result.schema.json +161 -1
- package/packages/schema/schemas/report-status.schema.json +104 -0
- package/packages/server/openapi.json +331 -0
- package/packages/visualizer/src/evidence/marks.tsx +16 -0
|
@@ -120,6 +120,7 @@ export declare function createReportsApp(deps: ReportsAppDeps): import("hono/hon
|
|
|
120
120
|
height?: number | undefined;
|
|
121
121
|
durationMs?: number | undefined;
|
|
122
122
|
description?: string | undefined;
|
|
123
|
+
omitted?: string | undefined;
|
|
123
124
|
tags?: string[] | undefined;
|
|
124
125
|
at?: {
|
|
125
126
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
@@ -164,6 +165,7 @@ export declare function createReportsApp(deps: ReportsAppDeps): import("hono/hon
|
|
|
164
165
|
height?: number | undefined;
|
|
165
166
|
durationMs?: number | undefined;
|
|
166
167
|
description?: string | undefined;
|
|
168
|
+
omitted?: string | undefined;
|
|
167
169
|
tags?: string[] | undefined;
|
|
168
170
|
at?: {
|
|
169
171
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
@@ -221,6 +223,7 @@ export declare function createReportsApp(deps: ReportsAppDeps): import("hono/hon
|
|
|
221
223
|
height?: number | undefined;
|
|
222
224
|
durationMs?: number | undefined;
|
|
223
225
|
description?: string | undefined;
|
|
226
|
+
omitted?: string | undefined;
|
|
224
227
|
tags?: string[] | undefined;
|
|
225
228
|
at?: {
|
|
226
229
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
@@ -288,6 +291,7 @@ export declare function createReportsApp(deps: ReportsAppDeps): import("hono/hon
|
|
|
288
291
|
height?: number | undefined;
|
|
289
292
|
durationMs?: number | undefined;
|
|
290
293
|
description?: string | undefined;
|
|
294
|
+
omitted?: string | undefined;
|
|
291
295
|
tags?: string[] | undefined;
|
|
292
296
|
at?: {
|
|
293
297
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
@@ -394,6 +398,7 @@ export declare function createReportsApp(deps: ReportsAppDeps): import("hono/hon
|
|
|
394
398
|
height?: number | undefined;
|
|
395
399
|
durationMs?: number | undefined;
|
|
396
400
|
description?: string | undefined;
|
|
401
|
+
omitted?: string | undefined;
|
|
397
402
|
tags?: string[] | undefined;
|
|
398
403
|
at?: {
|
|
399
404
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
@@ -438,6 +443,7 @@ export declare function createReportsApp(deps: ReportsAppDeps): import("hono/hon
|
|
|
438
443
|
height?: number | undefined;
|
|
439
444
|
durationMs?: number | undefined;
|
|
440
445
|
description?: string | undefined;
|
|
446
|
+
omitted?: string | undefined;
|
|
441
447
|
tags?: string[] | undefined;
|
|
442
448
|
at?: {
|
|
443
449
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
@@ -495,6 +501,7 @@ export declare function createReportsApp(deps: ReportsAppDeps): import("hono/hon
|
|
|
495
501
|
height?: number | undefined;
|
|
496
502
|
durationMs?: number | undefined;
|
|
497
503
|
description?: string | undefined;
|
|
504
|
+
omitted?: string | undefined;
|
|
498
505
|
tags?: string[] | undefined;
|
|
499
506
|
at?: {
|
|
500
507
|
[x: string]: import("hono/utils/types").JSONValue;
|
|
@@ -562,6 +569,7 @@ export declare function createReportsApp(deps: ReportsAppDeps): import("hono/hon
|
|
|
562
569
|
height?: number | undefined;
|
|
563
570
|
durationMs?: number | undefined;
|
|
564
571
|
description?: string | undefined;
|
|
572
|
+
omitted?: string | undefined;
|
|
565
573
|
tags?: string[] | undefined;
|
|
566
574
|
at?: {
|
|
567
575
|
[x: string]: import("hono/utils/types").JSONValue;
|
package/dist/schema/src/api.d.ts
CHANGED
|
@@ -165,6 +165,14 @@ export declare const LayerHeaderSchema: z.ZodObject<{
|
|
|
165
165
|
available: z.ZodBoolean;
|
|
166
166
|
}, z.core.$loose>>>;
|
|
167
167
|
}, z.core.$loose>>;
|
|
168
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
169
|
+
expected: z.ZodNumber;
|
|
170
|
+
uploaded: z.ZodNumber;
|
|
171
|
+
referenced: z.ZodNumber;
|
|
172
|
+
skipped: z.ZodNumber;
|
|
173
|
+
unresolved: z.ZodNumber;
|
|
174
|
+
notApplicable: z.ZodNumber;
|
|
175
|
+
}, z.core.$loose>>;
|
|
168
176
|
}, z.core.$loose>;
|
|
169
177
|
/** One check of a layer as the report shows it. */
|
|
170
178
|
export declare const LayerRowSchema: z.ZodObject<{
|
|
@@ -207,6 +215,10 @@ export declare const LayerRowSchema: z.ZodObject<{
|
|
|
207
215
|
available: z.ZodBoolean;
|
|
208
216
|
}, z.core.$loose>>>;
|
|
209
217
|
}, z.core.$loose>>;
|
|
218
|
+
recording: z.ZodOptional<z.ZodObject<{
|
|
219
|
+
state: z.ZodString;
|
|
220
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
221
|
+
}, z.core.$loose>>;
|
|
210
222
|
}, z.core.$loose>;
|
|
211
223
|
/** A layer with its checks: the rows of one layer, read apart from its header. */
|
|
212
224
|
export declare const LayerRowsSchema: z.ZodObject<{
|
|
@@ -251,6 +263,10 @@ export declare const LayerRowsSchema: z.ZodObject<{
|
|
|
251
263
|
available: z.ZodBoolean;
|
|
252
264
|
}, z.core.$loose>>>;
|
|
253
265
|
}, z.core.$loose>>;
|
|
266
|
+
recording: z.ZodOptional<z.ZodObject<{
|
|
267
|
+
state: z.ZodString;
|
|
268
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
269
|
+
}, z.core.$loose>>;
|
|
254
270
|
}, z.core.$loose>>;
|
|
255
271
|
fingerprints: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
256
272
|
}, z.core.$loose>;
|
|
@@ -297,6 +313,10 @@ export declare const LayerEvidenceSchema: z.ZodObject<{
|
|
|
297
313
|
available: z.ZodBoolean;
|
|
298
314
|
}, z.core.$loose>>>;
|
|
299
315
|
}, z.core.$loose>>;
|
|
316
|
+
recording: z.ZodOptional<z.ZodObject<{
|
|
317
|
+
state: z.ZodString;
|
|
318
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
319
|
+
}, z.core.$loose>>;
|
|
300
320
|
}, z.core.$loose>>;
|
|
301
321
|
fingerprints: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
302
322
|
layer: z.ZodObject<{
|
|
@@ -348,6 +368,14 @@ export declare const LayerEvidenceSchema: z.ZodObject<{
|
|
|
348
368
|
available: z.ZodBoolean;
|
|
349
369
|
}, z.core.$loose>>>;
|
|
350
370
|
}, z.core.$loose>>;
|
|
371
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
372
|
+
expected: z.ZodNumber;
|
|
373
|
+
uploaded: z.ZodNumber;
|
|
374
|
+
referenced: z.ZodNumber;
|
|
375
|
+
skipped: z.ZodNumber;
|
|
376
|
+
unresolved: z.ZodNumber;
|
|
377
|
+
notApplicable: z.ZodNumber;
|
|
378
|
+
}, z.core.$loose>>;
|
|
351
379
|
}, z.core.$loose>;
|
|
352
380
|
}, z.core.$loose>;
|
|
353
381
|
/**
|
|
@@ -399,6 +427,10 @@ export declare const EffectiveEvidenceSchema: z.ZodObject<{
|
|
|
399
427
|
available: z.ZodBoolean;
|
|
400
428
|
}, z.core.$loose>>>;
|
|
401
429
|
}, z.core.$loose>>;
|
|
430
|
+
recording: z.ZodOptional<z.ZodObject<{
|
|
431
|
+
state: z.ZodString;
|
|
432
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
433
|
+
}, z.core.$loose>>;
|
|
402
434
|
}, z.core.$loose>>;
|
|
403
435
|
fingerprints: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
404
436
|
layer: z.ZodObject<{
|
|
@@ -450,6 +482,14 @@ export declare const EffectiveEvidenceSchema: z.ZodObject<{
|
|
|
450
482
|
available: z.ZodBoolean;
|
|
451
483
|
}, z.core.$loose>>>;
|
|
452
484
|
}, z.core.$loose>>;
|
|
485
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
486
|
+
expected: z.ZodNumber;
|
|
487
|
+
uploaded: z.ZodNumber;
|
|
488
|
+
referenced: z.ZodNumber;
|
|
489
|
+
skipped: z.ZodNumber;
|
|
490
|
+
unresolved: z.ZodNumber;
|
|
491
|
+
notApplicable: z.ZodNumber;
|
|
492
|
+
}, z.core.$loose>>;
|
|
453
493
|
}, z.core.$loose>;
|
|
454
494
|
}, z.core.$loose>>;
|
|
455
495
|
backends: z.ZodArray<z.ZodObject<{
|
|
@@ -522,6 +562,10 @@ export declare const EffectiveDeltaSchema: z.ZodObject<{
|
|
|
522
562
|
available: z.ZodBoolean;
|
|
523
563
|
}, z.core.$loose>>>;
|
|
524
564
|
}, z.core.$loose>>;
|
|
565
|
+
recording: z.ZodOptional<z.ZodObject<{
|
|
566
|
+
state: z.ZodString;
|
|
567
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
568
|
+
}, z.core.$loose>>;
|
|
525
569
|
}, z.core.$loose>>;
|
|
526
570
|
fingerprints: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
527
571
|
layer: z.ZodObject<{
|
|
@@ -573,6 +617,14 @@ export declare const EffectiveDeltaSchema: z.ZodObject<{
|
|
|
573
617
|
available: z.ZodBoolean;
|
|
574
618
|
}, z.core.$loose>>>;
|
|
575
619
|
}, z.core.$loose>>;
|
|
620
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
621
|
+
expected: z.ZodNumber;
|
|
622
|
+
uploaded: z.ZodNumber;
|
|
623
|
+
referenced: z.ZodNumber;
|
|
624
|
+
skipped: z.ZodNumber;
|
|
625
|
+
unresolved: z.ZodNumber;
|
|
626
|
+
notApplicable: z.ZodNumber;
|
|
627
|
+
}, z.core.$loose>>;
|
|
576
628
|
}, z.core.$loose>;
|
|
577
629
|
}, z.core.$loose>>;
|
|
578
630
|
removed: z.ZodArray<z.ZodString>;
|
|
@@ -648,6 +700,14 @@ export declare const EvidencePageSchema: z.ZodObject<{
|
|
|
648
700
|
available: z.ZodBoolean;
|
|
649
701
|
}, z.core.$loose>>>;
|
|
650
702
|
}, z.core.$loose>>;
|
|
703
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
704
|
+
expected: z.ZodNumber;
|
|
705
|
+
uploaded: z.ZodNumber;
|
|
706
|
+
referenced: z.ZodNumber;
|
|
707
|
+
skipped: z.ZodNumber;
|
|
708
|
+
unresolved: z.ZodNumber;
|
|
709
|
+
notApplicable: z.ZodNumber;
|
|
710
|
+
}, z.core.$loose>>;
|
|
651
711
|
}, z.core.$loose>>;
|
|
652
712
|
cursor: z.ZodNullable<z.ZodString>;
|
|
653
713
|
notices: z.ZodArray<z.ZodString>;
|
|
@@ -687,6 +747,7 @@ export declare const CheckDetailSchema: z.ZodObject<{
|
|
|
687
747
|
height: z.ZodOptional<z.ZodNumber>;
|
|
688
748
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
689
749
|
description: z.ZodOptional<z.ZodString>;
|
|
750
|
+
omitted: z.ZodOptional<z.ZodString>;
|
|
690
751
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
691
752
|
at: z.ZodOptional<z.ZodObject<{
|
|
692
753
|
step: z.ZodOptional<z.ZodString>;
|
|
@@ -752,6 +813,7 @@ export declare const CheckDetailSchema: z.ZodObject<{
|
|
|
752
813
|
height: z.ZodOptional<z.ZodNumber>;
|
|
753
814
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
754
815
|
description: z.ZodOptional<z.ZodString>;
|
|
816
|
+
omitted: z.ZodOptional<z.ZodString>;
|
|
755
817
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
756
818
|
at: z.ZodOptional<z.ZodObject<{
|
|
757
819
|
step: z.ZodOptional<z.ZodString>;
|
|
@@ -797,6 +859,7 @@ export declare const CheckDetailSchema: z.ZodObject<{
|
|
|
797
859
|
height: z.ZodOptional<z.ZodNumber>;
|
|
798
860
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
799
861
|
description: z.ZodOptional<z.ZodString>;
|
|
862
|
+
omitted: z.ZodOptional<z.ZodString>;
|
|
800
863
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
801
864
|
at: z.ZodOptional<z.ZodObject<{
|
|
802
865
|
step: z.ZodOptional<z.ZodString>;
|
|
@@ -849,6 +912,7 @@ export declare const CheckDetailSchema: z.ZodObject<{
|
|
|
849
912
|
height: z.ZodOptional<z.ZodNumber>;
|
|
850
913
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
851
914
|
description: z.ZodOptional<z.ZodString>;
|
|
915
|
+
omitted: z.ZodOptional<z.ZodString>;
|
|
852
916
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
853
917
|
at: z.ZodOptional<z.ZodObject<{
|
|
854
918
|
step: z.ZodOptional<z.ZodString>;
|
|
@@ -896,6 +960,7 @@ export declare const CheckDetailSchema: z.ZodObject<{
|
|
|
896
960
|
limit: z.ZodOptional<z.ZodNumber>;
|
|
897
961
|
}, z.core.$loose>>>;
|
|
898
962
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
963
|
+
recordingExpectation: z.ZodOptional<z.ZodString>;
|
|
899
964
|
}, z.core.$loose>;
|
|
900
965
|
run: z.ZodObject<{}, z.core.$loose>;
|
|
901
966
|
}, z.core.$loose>;
|
package/dist/schema/src/api.js
CHANGED
|
@@ -108,7 +108,11 @@ export const LayerHeaderSchema = z.looseObject({
|
|
|
108
108
|
live: z.boolean(),
|
|
109
109
|
counts: z.record(EvidenceStatusSchema, z.number().int().nonnegative()),
|
|
110
110
|
execution: z.string(),
|
|
111
|
-
evidence: EvidenceSummarySchema.optional()
|
|
111
|
+
evidence: EvidenceSummarySchema.optional(),
|
|
112
|
+
recordings: z.looseObject({
|
|
113
|
+
expected: z.number().int().nonnegative(), uploaded: z.number().int().nonnegative(), referenced: z.number().int().nonnegative(),
|
|
114
|
+
skipped: z.number().int().nonnegative(), unresolved: z.number().int().nonnegative(), notApplicable: z.number().int().nonnegative()
|
|
115
|
+
}).optional().describe('How many of the recordings the layer expected were published. Absent: the layer declared no expectations, so its completeness is unknown, not complete')
|
|
112
116
|
});
|
|
113
117
|
/** One check of a layer as the report shows it. */
|
|
114
118
|
export const LayerRowSchema = z.looseObject({
|
|
@@ -122,7 +126,8 @@ export const LayerRowSchema = z.looseObject({
|
|
|
122
126
|
testId: z.string().nullable(),
|
|
123
127
|
variant: z.record(z.string(), z.string()),
|
|
124
128
|
durationMs: z.number().nullable(),
|
|
125
|
-
evidence: EvidenceSummarySchema.optional()
|
|
129
|
+
evidence: EvidenceSummarySchema.optional(),
|
|
130
|
+
recording: z.looseObject({ state: z.string(), reason: z.string().optional() }).optional().describe('What became of the check\'s expected recording: uploaded, referenced, skipped, unresolved or not-applicable. Independent of `status`')
|
|
126
131
|
});
|
|
127
132
|
/** A layer with its checks: the rows of one layer, read apart from its header. */
|
|
128
133
|
export const LayerRowsSchema = z.looseObject({
|
|
@@ -29,10 +29,30 @@ export declare const PublishedLayerSchema: z.ZodObject<{
|
|
|
29
29
|
}>>;
|
|
30
30
|
attachmentFiles: z.ZodNumber;
|
|
31
31
|
attachmentBytes: z.ZodNumber;
|
|
32
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
33
|
+
expected: z.ZodNumber;
|
|
34
|
+
uploaded: z.ZodNumber;
|
|
35
|
+
referenced: z.ZodNumber;
|
|
36
|
+
skipped: z.ZodNumber;
|
|
37
|
+
unresolved: z.ZodNumber;
|
|
38
|
+
notApplicable: z.ZodNumber;
|
|
39
|
+
items: z.ZodArray<z.ZodObject<{
|
|
40
|
+
check: z.ZodString;
|
|
41
|
+
state: z.ZodString;
|
|
42
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
43
|
+
files: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
44
|
+
name: z.ZodString;
|
|
45
|
+
state: z.ZodOptional<z.ZodString>;
|
|
46
|
+
bytes: z.ZodOptional<z.ZodNumber>;
|
|
47
|
+
sha256: z.ZodOptional<z.ZodString>;
|
|
48
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
49
|
+
}, z.core.$loose>>>;
|
|
50
|
+
}, z.core.$loose>>;
|
|
51
|
+
}, z.core.$loose>>;
|
|
32
52
|
}, z.core.$loose>;
|
|
33
53
|
/** What `atlas report publish --format json` prints. */
|
|
34
54
|
export declare const PublishResultSchema: z.ZodObject<{
|
|
35
|
-
ok: z.
|
|
55
|
+
ok: z.ZodBoolean;
|
|
36
56
|
store: z.ZodString;
|
|
37
57
|
layer: z.ZodObject<{
|
|
38
58
|
id: z.ZodString;
|
|
@@ -49,6 +69,26 @@ export declare const PublishResultSchema: z.ZodObject<{
|
|
|
49
69
|
}>>;
|
|
50
70
|
attachmentFiles: z.ZodNumber;
|
|
51
71
|
attachmentBytes: z.ZodNumber;
|
|
72
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
73
|
+
expected: z.ZodNumber;
|
|
74
|
+
uploaded: z.ZodNumber;
|
|
75
|
+
referenced: z.ZodNumber;
|
|
76
|
+
skipped: z.ZodNumber;
|
|
77
|
+
unresolved: z.ZodNumber;
|
|
78
|
+
notApplicable: z.ZodNumber;
|
|
79
|
+
items: z.ZodArray<z.ZodObject<{
|
|
80
|
+
check: z.ZodString;
|
|
81
|
+
state: z.ZodString;
|
|
82
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
83
|
+
files: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
84
|
+
name: z.ZodString;
|
|
85
|
+
state: z.ZodOptional<z.ZodString>;
|
|
86
|
+
bytes: z.ZodOptional<z.ZodNumber>;
|
|
87
|
+
sha256: z.ZodOptional<z.ZodString>;
|
|
88
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
89
|
+
}, z.core.$loose>>>;
|
|
90
|
+
}, z.core.$loose>>;
|
|
91
|
+
}, z.core.$loose>>;
|
|
52
92
|
}, z.core.$loose>;
|
|
53
93
|
specSet: z.ZodOptional<z.ZodObject<{
|
|
54
94
|
id: z.ZodString;
|
|
@@ -61,6 +101,17 @@ export declare const PublishResultSchema: z.ZodObject<{
|
|
|
61
101
|
bytes: z.ZodNumber;
|
|
62
102
|
alreadyPublished: z.ZodBoolean;
|
|
63
103
|
}, z.core.$loose>>;
|
|
104
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
105
|
+
strict: z.ZodBoolean;
|
|
106
|
+
complete: z.ZodBoolean;
|
|
107
|
+
expected: z.ZodNumber;
|
|
108
|
+
uploaded: z.ZodNumber;
|
|
109
|
+
gaps: z.ZodArray<z.ZodObject<{
|
|
110
|
+
check: z.ZodString;
|
|
111
|
+
state: z.ZodString;
|
|
112
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
113
|
+
}, z.core.$loose>>;
|
|
114
|
+
}, z.core.$loose>>;
|
|
64
115
|
warnings: z.ZodArray<z.ZodString>;
|
|
65
116
|
}, z.core.$loose>;
|
|
66
117
|
/** What `atlas report stream --format json` prints when its input ends. */
|
|
@@ -288,7 +339,7 @@ export declare const CLI_RESULTS: {
|
|
|
288
339
|
readonly command: "atlas report publish";
|
|
289
340
|
readonly schemaName: "publish-result";
|
|
290
341
|
readonly schema: z.ZodObject<{
|
|
291
|
-
ok: z.
|
|
342
|
+
ok: z.ZodBoolean;
|
|
292
343
|
store: z.ZodString;
|
|
293
344
|
layer: z.ZodObject<{
|
|
294
345
|
id: z.ZodString;
|
|
@@ -305,6 +356,26 @@ export declare const CLI_RESULTS: {
|
|
|
305
356
|
}>>;
|
|
306
357
|
attachmentFiles: z.ZodNumber;
|
|
307
358
|
attachmentBytes: z.ZodNumber;
|
|
359
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
360
|
+
expected: z.ZodNumber;
|
|
361
|
+
uploaded: z.ZodNumber;
|
|
362
|
+
referenced: z.ZodNumber;
|
|
363
|
+
skipped: z.ZodNumber;
|
|
364
|
+
unresolved: z.ZodNumber;
|
|
365
|
+
notApplicable: z.ZodNumber;
|
|
366
|
+
items: z.ZodArray<z.ZodObject<{
|
|
367
|
+
check: z.ZodString;
|
|
368
|
+
state: z.ZodString;
|
|
369
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
370
|
+
files: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
371
|
+
name: z.ZodString;
|
|
372
|
+
state: z.ZodOptional<z.ZodString>;
|
|
373
|
+
bytes: z.ZodOptional<z.ZodNumber>;
|
|
374
|
+
sha256: z.ZodOptional<z.ZodString>;
|
|
375
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
376
|
+
}, z.core.$loose>>>;
|
|
377
|
+
}, z.core.$loose>>;
|
|
378
|
+
}, z.core.$loose>>;
|
|
308
379
|
}, z.core.$loose>;
|
|
309
380
|
specSet: z.ZodOptional<z.ZodObject<{
|
|
310
381
|
id: z.ZodString;
|
|
@@ -317,6 +388,17 @@ export declare const CLI_RESULTS: {
|
|
|
317
388
|
bytes: z.ZodNumber;
|
|
318
389
|
alreadyPublished: z.ZodBoolean;
|
|
319
390
|
}, z.core.$loose>>;
|
|
391
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
392
|
+
strict: z.ZodBoolean;
|
|
393
|
+
complete: z.ZodBoolean;
|
|
394
|
+
expected: z.ZodNumber;
|
|
395
|
+
uploaded: z.ZodNumber;
|
|
396
|
+
gaps: z.ZodArray<z.ZodObject<{
|
|
397
|
+
check: z.ZodString;
|
|
398
|
+
state: z.ZodString;
|
|
399
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
400
|
+
}, z.core.$loose>>;
|
|
401
|
+
}, z.core.$loose>>;
|
|
320
402
|
warnings: z.ZodArray<z.ZodString>;
|
|
321
403
|
}, z.core.$loose>;
|
|
322
404
|
};
|
|
@@ -425,6 +507,29 @@ export declare const CLI_RESULTS: {
|
|
|
425
507
|
runUrl: z.ZodNullable<z.ZodString>;
|
|
426
508
|
detail: z.ZodString;
|
|
427
509
|
}, z.core.$loose>>;
|
|
510
|
+
recordings: z.ZodOptional<z.ZodObject<{
|
|
511
|
+
state: z.ZodEnum<{
|
|
512
|
+
unknown: "unknown";
|
|
513
|
+
complete: "complete";
|
|
514
|
+
incomplete: "incomplete";
|
|
515
|
+
"none-expected": "none-expected";
|
|
516
|
+
}>;
|
|
517
|
+
expected: z.ZodNumber;
|
|
518
|
+
uploaded: z.ZodNumber;
|
|
519
|
+
referenced: z.ZodNumber;
|
|
520
|
+
skipped: z.ZodNumber;
|
|
521
|
+
unresolved: z.ZodNumber;
|
|
522
|
+
notApplicable: z.ZodNumber;
|
|
523
|
+
layersWithoutReceipt: z.ZodNumber;
|
|
524
|
+
gaps: z.ZodArray<z.ZodObject<{
|
|
525
|
+
spec: z.ZodNullable<z.ZodString>;
|
|
526
|
+
check: z.ZodString;
|
|
527
|
+
layer: z.ZodString;
|
|
528
|
+
environment: z.ZodNullable<z.ZodString>;
|
|
529
|
+
state: z.ZodString;
|
|
530
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
531
|
+
}, z.core.$loose>>;
|
|
532
|
+
}, z.core.$loose>>;
|
|
428
533
|
}, z.core.$loose>;
|
|
429
534
|
};
|
|
430
535
|
readonly error: {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* @see docs/agents.md
|
|
14
14
|
*/
|
|
15
15
|
import { z } from 'zod/v4';
|
|
16
|
-
import { ReportStatusSchema } from './layer.js';
|
|
16
|
+
import { RecordingReceiptSchema, ReportStatusSchema } from './layer.js';
|
|
17
17
|
/** What was written for one layer by `atlas report publish`. */
|
|
18
18
|
export const PublishedLayerSchema = z.looseObject({
|
|
19
19
|
id: z.string().describe('The layer id: 64 hex digits, the SHA-256 of its content. Publishing the same input again gives the same id'),
|
|
@@ -26,15 +26,23 @@ export const PublishedLayerSchema = z.looseObject({
|
|
|
26
26
|
linkedToSpec: z.number().int().nonnegative().describe('Checks that were matched to a spec file. The rest still count, but belong to no spec'),
|
|
27
27
|
freshness: z.enum(['modified', 'unknown']).optional().describe('Set when the checkout had uncommitted changes (`modified`) or no git origin (`unknown`)'),
|
|
28
28
|
attachmentFiles: z.number().int().nonnegative(),
|
|
29
|
-
attachmentBytes: z.number().int().nonnegative()
|
|
29
|
+
attachmentBytes: z.number().int().nonnegative(),
|
|
30
|
+
recordings: RecordingReceiptSchema.optional().describe('Present when a check declared a `recordingExpectation`: what became of each expected video, with sizes and checksums of the stored bytes. It describes publication only; the checks keep their results')
|
|
30
31
|
});
|
|
31
32
|
/** What `atlas report publish --format json` prints. */
|
|
32
33
|
export const PublishResultSchema = z.looseObject({
|
|
33
|
-
ok: z.
|
|
34
|
+
ok: z.boolean().describe('True when the layer was written. False only with `--require-recordings` when an expected recording is not uploaded (the layer was still written; the exit code is then 1)'),
|
|
34
35
|
store: z.string().describe('Where it was written: a folder, `s3://…` or a server URL'),
|
|
35
36
|
layer: PublishedLayerSchema,
|
|
36
37
|
specSet: z.looseObject({ id: z.string(), files: z.number().int().nonnegative(), branch: z.string().nullable() }).optional().describe('Present when `--specs` was given'),
|
|
37
38
|
run: z.looseObject({ id: z.string(), files: z.number().int().nonnegative(), bytes: z.number().int().nonnegative(), alreadyPublished: z.boolean() }).optional().describe('Present with `--upload-run`'),
|
|
39
|
+
recordings: z.looseObject({
|
|
40
|
+
strict: z.boolean().describe('Whether `--require-recordings` was given'),
|
|
41
|
+
complete: z.boolean().describe('True when every expected recording is uploaded or referenced'),
|
|
42
|
+
expected: z.number().int().nonnegative(),
|
|
43
|
+
uploaded: z.number().int().nonnegative(),
|
|
44
|
+
gaps: z.array(z.looseObject({ check: z.string(), state: z.string(), reason: z.string().optional() })).describe('Each expected recording that is skipped or unresolved. Retry after fixing it: publishing again reuses the stored files')
|
|
45
|
+
}).optional().describe('Present when a check declared a `recordingExpectation`'),
|
|
38
46
|
warnings: z.array(z.string()).describe('What was skipped and why, such as an attachment file that could not be read. Never fatal')
|
|
39
47
|
});
|
|
40
48
|
/** What `atlas report stream --format json` prints when its input ends. */
|