@crvouga/atlas 1.21.0 → 1.22.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.
Files changed (96) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/core/src/cli.d.ts +2 -2
  3. package/dist/core/src/cli.js +4 -1
  4. package/dist/critics/src/catalog-client.d.ts +91 -0
  5. package/dist/critics/src/catalog-client.js +194 -0
  6. package/dist/critics/src/cli-calibrate.d.ts +4 -0
  7. package/dist/critics/src/cli-calibrate.js +211 -0
  8. package/dist/critics/src/cli-common.d.ts +108 -0
  9. package/dist/critics/src/cli-common.js +155 -0
  10. package/dist/critics/src/cli-review.d.ts +4 -0
  11. package/dist/critics/src/cli-review.js +174 -0
  12. package/dist/critics/src/cli-watch.d.ts +4 -0
  13. package/dist/critics/src/cli-watch.js +191 -0
  14. package/dist/critics/src/cli.d.ts +13 -0
  15. package/dist/critics/src/cli.js +490 -0
  16. package/dist/critics/src/index.d.ts +3 -0
  17. package/dist/critics/src/index.js +3 -0
  18. package/dist/critics/src/judging.d.ts +8 -0
  19. package/dist/critics/src/llm.d.ts +120 -0
  20. package/dist/critics/src/llm.js +266 -0
  21. package/dist/critics/src/marks.d.ts +74 -0
  22. package/dist/critics/src/marks.js +76 -0
  23. package/dist/critics/src/registry.d.ts +125 -0
  24. package/dist/critics/src/registry.js +203 -0
  25. package/dist/critics/src/spool.d.ts +32 -0
  26. package/dist/critics/src/spool.js +129 -0
  27. package/dist/critics/src/uiclip.d.ts +82 -0
  28. package/dist/critics/src/uiclip.js +167 -0
  29. package/dist/reports/src/critique-review.d.ts +111 -0
  30. package/dist/reports/src/critique-review.js +123 -0
  31. package/dist/reports/src/critique-row.d.ts +24 -0
  32. package/dist/reports/src/critique-row.js +39 -0
  33. package/dist/reports/src/evidence-types.d.ts +5 -0
  34. package/dist/reports/src/layer-merge.js +5 -0
  35. package/dist/reports/src/report-index.d.ts +6 -0
  36. package/dist/reports/src/report-index.js +12 -0
  37. package/dist/reports/src/ui-catalog-cli.d.ts +1 -1
  38. package/dist/reports/src/ui-catalog-cli.js +3 -3
  39. package/dist/reports/src/ui-catalog-entries.d.ts +147 -0
  40. package/dist/reports/src/ui-catalog-entries.js +190 -0
  41. package/dist/reports/src/ui-catalog-publish.js +2 -2
  42. package/dist/reports/src/ui-catalog.d.ts +2 -0
  43. package/dist/reports/src/ui-catalog.js +1 -1
  44. package/dist/reports/src/ui-state.d.ts +2 -0
  45. package/dist/reports/src/ui-state.js +2 -2
  46. package/dist/schema/src/api.d.ts +653 -1
  47. package/dist/schema/src/api.js +44 -0
  48. package/dist/schema/src/cli-results.d.ts +674 -1
  49. package/dist/schema/src/cli-results.js +177 -1
  50. package/dist/schema/src/critique.d.ts +31 -0
  51. package/dist/schema/src/critique.js +26 -0
  52. package/dist/schema/src/server-config.d.ts +3 -3
  53. package/dist/server/src/app.js +28 -1
  54. package/dist/server/src/openapi.js +19 -2
  55. package/docs/agents.md +11 -2
  56. package/docs/critics.md +273 -9
  57. package/docs/extending.md +1 -1
  58. package/docs/reference/cli.md +73 -3
  59. package/docs/reference/core.md +1 -1
  60. package/docs/reference/critics.md +1131 -29
  61. package/docs/reference/http-api.md +40 -0
  62. package/docs/reference/reports.md +463 -0
  63. package/docs/reference/schema.md +157 -1
  64. package/docs/report-contract.md +2 -1
  65. package/docs/server.md +2 -0
  66. package/docs/ui-catalog.md +4 -1
  67. package/docs/ui.md +63 -1
  68. package/llms-full.txt +469 -18
  69. package/llms.txt +1 -1
  70. package/package.json +9 -1
  71. package/packages/critics/README.md +1 -0
  72. package/packages/schema/schemas/critic-calibrate-result.schema.json +274 -0
  73. package/packages/schema/schemas/critic-doctor-result.schema.json +74 -0
  74. package/packages/schema/schemas/critic-list-result.schema.json +90 -0
  75. package/packages/schema/schemas/critic-review-result.schema.json +397 -0
  76. package/packages/schema/schemas/critic-run-result.schema.json +249 -0
  77. package/packages/schema/schemas/critic-setup-result.schema.json +34 -0
  78. package/packages/schema/schemas/critic-watch-result.schema.json +211 -0
  79. package/packages/schema/schemas/critique-mark.schema.json +81 -0
  80. package/packages/schema/schemas/effective-delta.schema.json +337 -0
  81. package/packages/schema/schemas/effective-evidence.schema.json +337 -0
  82. package/packages/schema/schemas/layer-rows.schema.json +337 -0
  83. package/packages/server/openapi.json +6755 -4738
  84. package/packages/visualizer/src/app/AppShell.tsx +3 -1
  85. package/packages/visualizer/src/app/router.tsx +20 -7
  86. package/packages/visualizer/src/components/Header.tsx +16 -4
  87. package/packages/visualizer/src/critiques/CritiquesPage.tsx +402 -0
  88. package/packages/visualizer/src/critiques/FindingOverlay.tsx +50 -0
  89. package/packages/visualizer/src/critiques/ranking.ts +54 -0
  90. package/packages/visualizer/src/critiques/search.ts +41 -0
  91. package/packages/visualizer/src/evidence/applicability-view.tsx +11 -7
  92. package/packages/visualizer/src/evidence/behaviors-page.tsx +22 -15
  93. package/packages/visualizer/src/explorer/Explorer.tsx +5 -0
  94. package/packages/visualizer/src/explorer/TestDetail.tsx +4 -1
  95. package/packages/visualizer/src/explorer/parts.tsx +19 -1
  96. package/packages/visualizer/src/explorer/playlist.tsx +11 -7
@@ -54,8 +54,8 @@ export declare const ServerInfoSchema: z.ZodObject<{
54
54
  name: z.ZodLiteral<"atlas">;
55
55
  version: z.ZodNullable<z.ZodString>;
56
56
  role: z.ZodEnum<{
57
- read: "read";
58
57
  critic: "critic";
58
+ read: "read";
59
59
  publish: "publish";
60
60
  admin: "admin";
61
61
  }>;
@@ -343,6 +343,7 @@ export declare const LayerRowSchema: z.ZodObject<{
343
343
  fixture: z.ZodOptional<z.ZodString>;
344
344
  cohort: z.ZodOptional<z.ZodString>;
345
345
  area: z.ZodOptional<z.ZodString>;
346
+ kind: z.ZodOptional<z.ZodString>;
346
347
  flags: z.ZodOptional<z.ZodArray<z.ZodString>>;
347
348
  covers: z.ZodOptional<z.ZodArray<z.ZodString>>;
348
349
  inventory: z.ZodOptional<z.ZodBoolean>;
@@ -358,6 +359,78 @@ export declare const LayerRowSchema: z.ZodObject<{
358
359
  omitted: z.ZodOptional<z.ZodString>;
359
360
  }, z.core.$loose>>;
360
361
  }, z.core.$loose>>;
362
+ critique: z.ZodOptional<z.ZodObject<{
363
+ schema: z.ZodNumber;
364
+ subject: z.ZodObject<{
365
+ entryKey: z.ZodString;
366
+ imageSha256: z.ZodString;
367
+ state: z.ZodOptional<z.ZodString>;
368
+ }, z.core.$loose>;
369
+ critic: z.ZodObject<{
370
+ name: z.ZodString;
371
+ version: z.ZodString;
372
+ kind: z.ZodOptional<z.ZodString>;
373
+ }, z.core.$loose>;
374
+ model: z.ZodOptional<z.ZodObject<{
375
+ id: z.ZodString;
376
+ provider: z.ZodOptional<z.ZodString>;
377
+ }, z.core.$loose>>;
378
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
379
+ verdict: z.ZodOptional<z.ZodObject<{
380
+ score: z.ZodOptional<z.ZodNumber>;
381
+ scale: z.ZodOptional<z.ZodString>;
382
+ label: z.ZodOptional<z.ZodString>;
383
+ confidence: z.ZodOptional<z.ZodNumber>;
384
+ relative: z.ZodOptional<z.ZodObject<{
385
+ stateKind: z.ZodString;
386
+ percentile: z.ZodOptional<z.ZodNumber>;
387
+ sampleSize: z.ZodOptional<z.ZodNumber>;
388
+ previousScore: z.ZodOptional<z.ZodNumber>;
389
+ delta: z.ZodOptional<z.ZodNumber>;
390
+ }, z.core.$loose>>;
391
+ }, z.core.$loose>>;
392
+ findings: z.ZodOptional<z.ZodArray<z.ZodObject<{
393
+ id: z.ZodOptional<z.ZodString>;
394
+ category: z.ZodOptional<z.ZodString>;
395
+ severity: z.ZodOptional<z.ZodString>;
396
+ confidence: z.ZodOptional<z.ZodNumber>;
397
+ region: z.ZodOptional<z.ZodObject<{
398
+ unit: z.ZodString;
399
+ x: z.ZodNumber;
400
+ y: z.ZodNumber;
401
+ w: z.ZodNumber;
402
+ h: z.ZodNumber;
403
+ }, z.core.$loose>>;
404
+ rationale: z.ZodOptional<z.ZodString>;
405
+ suggestion: z.ZodOptional<z.ZodString>;
406
+ }, z.core.$loose>>>;
407
+ failure: z.ZodOptional<z.ZodObject<{
408
+ reason: z.ZodString;
409
+ message: z.ZodOptional<z.ZodString>;
410
+ }, z.core.$loose>>;
411
+ usage: z.ZodOptional<z.ZodObject<{
412
+ inputTokens: z.ZodOptional<z.ZodNumber>;
413
+ outputTokens: z.ZodOptional<z.ZodNumber>;
414
+ latencyMs: z.ZodOptional<z.ZodNumber>;
415
+ costUsd: z.ZodOptional<z.ZodNumber>;
416
+ }, z.core.$loose>>;
417
+ }, z.core.$loose>>;
418
+ critiqueMark: z.ZodOptional<z.ZodObject<{
419
+ schema: z.ZodNumber;
420
+ subject: z.ZodObject<{
421
+ entryKey: z.ZodString;
422
+ imageSha256: z.ZodString;
423
+ }, z.core.$loose>;
424
+ critic: z.ZodObject<{
425
+ name: z.ZodString;
426
+ version: z.ZodOptional<z.ZodString>;
427
+ }, z.core.$loose>;
428
+ finding: z.ZodOptional<z.ZodString>;
429
+ decision: z.ZodString;
430
+ reviewer: z.ZodOptional<z.ZodString>;
431
+ note: z.ZodOptional<z.ZodString>;
432
+ layer: z.ZodOptional<z.ZodString>;
433
+ }, z.core.$loose>>;
361
434
  recording: z.ZodOptional<z.ZodObject<{
362
435
  state: z.ZodString;
363
436
  reason: z.ZodOptional<z.ZodString>;
@@ -451,6 +524,7 @@ export declare const LayerRowsSchema: z.ZodObject<{
451
524
  fixture: z.ZodOptional<z.ZodString>;
452
525
  cohort: z.ZodOptional<z.ZodString>;
453
526
  area: z.ZodOptional<z.ZodString>;
527
+ kind: z.ZodOptional<z.ZodString>;
454
528
  flags: z.ZodOptional<z.ZodArray<z.ZodString>>;
455
529
  covers: z.ZodOptional<z.ZodArray<z.ZodString>>;
456
530
  inventory: z.ZodOptional<z.ZodBoolean>;
@@ -466,6 +540,78 @@ export declare const LayerRowsSchema: z.ZodObject<{
466
540
  omitted: z.ZodOptional<z.ZodString>;
467
541
  }, z.core.$loose>>;
468
542
  }, z.core.$loose>>;
543
+ critique: z.ZodOptional<z.ZodObject<{
544
+ schema: z.ZodNumber;
545
+ subject: z.ZodObject<{
546
+ entryKey: z.ZodString;
547
+ imageSha256: z.ZodString;
548
+ state: z.ZodOptional<z.ZodString>;
549
+ }, z.core.$loose>;
550
+ critic: z.ZodObject<{
551
+ name: z.ZodString;
552
+ version: z.ZodString;
553
+ kind: z.ZodOptional<z.ZodString>;
554
+ }, z.core.$loose>;
555
+ model: z.ZodOptional<z.ZodObject<{
556
+ id: z.ZodString;
557
+ provider: z.ZodOptional<z.ZodString>;
558
+ }, z.core.$loose>>;
559
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
560
+ verdict: z.ZodOptional<z.ZodObject<{
561
+ score: z.ZodOptional<z.ZodNumber>;
562
+ scale: z.ZodOptional<z.ZodString>;
563
+ label: z.ZodOptional<z.ZodString>;
564
+ confidence: z.ZodOptional<z.ZodNumber>;
565
+ relative: z.ZodOptional<z.ZodObject<{
566
+ stateKind: z.ZodString;
567
+ percentile: z.ZodOptional<z.ZodNumber>;
568
+ sampleSize: z.ZodOptional<z.ZodNumber>;
569
+ previousScore: z.ZodOptional<z.ZodNumber>;
570
+ delta: z.ZodOptional<z.ZodNumber>;
571
+ }, z.core.$loose>>;
572
+ }, z.core.$loose>>;
573
+ findings: z.ZodOptional<z.ZodArray<z.ZodObject<{
574
+ id: z.ZodOptional<z.ZodString>;
575
+ category: z.ZodOptional<z.ZodString>;
576
+ severity: z.ZodOptional<z.ZodString>;
577
+ confidence: z.ZodOptional<z.ZodNumber>;
578
+ region: z.ZodOptional<z.ZodObject<{
579
+ unit: z.ZodString;
580
+ x: z.ZodNumber;
581
+ y: z.ZodNumber;
582
+ w: z.ZodNumber;
583
+ h: z.ZodNumber;
584
+ }, z.core.$loose>>;
585
+ rationale: z.ZodOptional<z.ZodString>;
586
+ suggestion: z.ZodOptional<z.ZodString>;
587
+ }, z.core.$loose>>>;
588
+ failure: z.ZodOptional<z.ZodObject<{
589
+ reason: z.ZodString;
590
+ message: z.ZodOptional<z.ZodString>;
591
+ }, z.core.$loose>>;
592
+ usage: z.ZodOptional<z.ZodObject<{
593
+ inputTokens: z.ZodOptional<z.ZodNumber>;
594
+ outputTokens: z.ZodOptional<z.ZodNumber>;
595
+ latencyMs: z.ZodOptional<z.ZodNumber>;
596
+ costUsd: z.ZodOptional<z.ZodNumber>;
597
+ }, z.core.$loose>>;
598
+ }, z.core.$loose>>;
599
+ critiqueMark: z.ZodOptional<z.ZodObject<{
600
+ schema: z.ZodNumber;
601
+ subject: z.ZodObject<{
602
+ entryKey: z.ZodString;
603
+ imageSha256: z.ZodString;
604
+ }, z.core.$loose>;
605
+ critic: z.ZodObject<{
606
+ name: z.ZodString;
607
+ version: z.ZodOptional<z.ZodString>;
608
+ }, z.core.$loose>;
609
+ finding: z.ZodOptional<z.ZodString>;
610
+ decision: z.ZodString;
611
+ reviewer: z.ZodOptional<z.ZodString>;
612
+ note: z.ZodOptional<z.ZodString>;
613
+ layer: z.ZodOptional<z.ZodString>;
614
+ }, z.core.$loose>>;
469
615
  recording: z.ZodOptional<z.ZodObject<{
470
616
  state: z.ZodString;
471
617
  reason: z.ZodOptional<z.ZodString>;
@@ -561,6 +707,7 @@ export declare const LayerEvidenceSchema: z.ZodObject<{
561
707
  fixture: z.ZodOptional<z.ZodString>;
562
708
  cohort: z.ZodOptional<z.ZodString>;
563
709
  area: z.ZodOptional<z.ZodString>;
710
+ kind: z.ZodOptional<z.ZodString>;
564
711
  flags: z.ZodOptional<z.ZodArray<z.ZodString>>;
565
712
  covers: z.ZodOptional<z.ZodArray<z.ZodString>>;
566
713
  inventory: z.ZodOptional<z.ZodBoolean>;
@@ -576,6 +723,78 @@ export declare const LayerEvidenceSchema: z.ZodObject<{
576
723
  omitted: z.ZodOptional<z.ZodString>;
577
724
  }, z.core.$loose>>;
578
725
  }, z.core.$loose>>;
726
+ critique: z.ZodOptional<z.ZodObject<{
727
+ schema: z.ZodNumber;
728
+ subject: z.ZodObject<{
729
+ entryKey: z.ZodString;
730
+ imageSha256: z.ZodString;
731
+ state: z.ZodOptional<z.ZodString>;
732
+ }, z.core.$loose>;
733
+ critic: z.ZodObject<{
734
+ name: z.ZodString;
735
+ version: z.ZodString;
736
+ kind: z.ZodOptional<z.ZodString>;
737
+ }, z.core.$loose>;
738
+ model: z.ZodOptional<z.ZodObject<{
739
+ id: z.ZodString;
740
+ provider: z.ZodOptional<z.ZodString>;
741
+ }, z.core.$loose>>;
742
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
743
+ verdict: z.ZodOptional<z.ZodObject<{
744
+ score: z.ZodOptional<z.ZodNumber>;
745
+ scale: z.ZodOptional<z.ZodString>;
746
+ label: z.ZodOptional<z.ZodString>;
747
+ confidence: z.ZodOptional<z.ZodNumber>;
748
+ relative: z.ZodOptional<z.ZodObject<{
749
+ stateKind: z.ZodString;
750
+ percentile: z.ZodOptional<z.ZodNumber>;
751
+ sampleSize: z.ZodOptional<z.ZodNumber>;
752
+ previousScore: z.ZodOptional<z.ZodNumber>;
753
+ delta: z.ZodOptional<z.ZodNumber>;
754
+ }, z.core.$loose>>;
755
+ }, z.core.$loose>>;
756
+ findings: z.ZodOptional<z.ZodArray<z.ZodObject<{
757
+ id: z.ZodOptional<z.ZodString>;
758
+ category: z.ZodOptional<z.ZodString>;
759
+ severity: z.ZodOptional<z.ZodString>;
760
+ confidence: z.ZodOptional<z.ZodNumber>;
761
+ region: z.ZodOptional<z.ZodObject<{
762
+ unit: z.ZodString;
763
+ x: z.ZodNumber;
764
+ y: z.ZodNumber;
765
+ w: z.ZodNumber;
766
+ h: z.ZodNumber;
767
+ }, z.core.$loose>>;
768
+ rationale: z.ZodOptional<z.ZodString>;
769
+ suggestion: z.ZodOptional<z.ZodString>;
770
+ }, z.core.$loose>>>;
771
+ failure: z.ZodOptional<z.ZodObject<{
772
+ reason: z.ZodString;
773
+ message: z.ZodOptional<z.ZodString>;
774
+ }, z.core.$loose>>;
775
+ usage: z.ZodOptional<z.ZodObject<{
776
+ inputTokens: z.ZodOptional<z.ZodNumber>;
777
+ outputTokens: z.ZodOptional<z.ZodNumber>;
778
+ latencyMs: z.ZodOptional<z.ZodNumber>;
779
+ costUsd: z.ZodOptional<z.ZodNumber>;
780
+ }, z.core.$loose>>;
781
+ }, z.core.$loose>>;
782
+ critiqueMark: z.ZodOptional<z.ZodObject<{
783
+ schema: z.ZodNumber;
784
+ subject: z.ZodObject<{
785
+ entryKey: z.ZodString;
786
+ imageSha256: z.ZodString;
787
+ }, z.core.$loose>;
788
+ critic: z.ZodObject<{
789
+ name: z.ZodString;
790
+ version: z.ZodOptional<z.ZodString>;
791
+ }, z.core.$loose>;
792
+ finding: z.ZodOptional<z.ZodString>;
793
+ decision: z.ZodString;
794
+ reviewer: z.ZodOptional<z.ZodString>;
795
+ note: z.ZodOptional<z.ZodString>;
796
+ layer: z.ZodOptional<z.ZodString>;
797
+ }, z.core.$loose>>;
579
798
  recording: z.ZodOptional<z.ZodObject<{
580
799
  state: z.ZodString;
581
800
  reason: z.ZodOptional<z.ZodString>;
@@ -764,6 +983,7 @@ export declare const EffectiveEvidenceSchema: z.ZodObject<{
764
983
  fixture: z.ZodOptional<z.ZodString>;
765
984
  cohort: z.ZodOptional<z.ZodString>;
766
985
  area: z.ZodOptional<z.ZodString>;
986
+ kind: z.ZodOptional<z.ZodString>;
767
987
  flags: z.ZodOptional<z.ZodArray<z.ZodString>>;
768
988
  covers: z.ZodOptional<z.ZodArray<z.ZodString>>;
769
989
  inventory: z.ZodOptional<z.ZodBoolean>;
@@ -779,6 +999,78 @@ export declare const EffectiveEvidenceSchema: z.ZodObject<{
779
999
  omitted: z.ZodOptional<z.ZodString>;
780
1000
  }, z.core.$loose>>;
781
1001
  }, z.core.$loose>>;
1002
+ critique: z.ZodOptional<z.ZodObject<{
1003
+ schema: z.ZodNumber;
1004
+ subject: z.ZodObject<{
1005
+ entryKey: z.ZodString;
1006
+ imageSha256: z.ZodString;
1007
+ state: z.ZodOptional<z.ZodString>;
1008
+ }, z.core.$loose>;
1009
+ critic: z.ZodObject<{
1010
+ name: z.ZodString;
1011
+ version: z.ZodString;
1012
+ kind: z.ZodOptional<z.ZodString>;
1013
+ }, z.core.$loose>;
1014
+ model: z.ZodOptional<z.ZodObject<{
1015
+ id: z.ZodString;
1016
+ provider: z.ZodOptional<z.ZodString>;
1017
+ }, z.core.$loose>>;
1018
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1019
+ verdict: z.ZodOptional<z.ZodObject<{
1020
+ score: z.ZodOptional<z.ZodNumber>;
1021
+ scale: z.ZodOptional<z.ZodString>;
1022
+ label: z.ZodOptional<z.ZodString>;
1023
+ confidence: z.ZodOptional<z.ZodNumber>;
1024
+ relative: z.ZodOptional<z.ZodObject<{
1025
+ stateKind: z.ZodString;
1026
+ percentile: z.ZodOptional<z.ZodNumber>;
1027
+ sampleSize: z.ZodOptional<z.ZodNumber>;
1028
+ previousScore: z.ZodOptional<z.ZodNumber>;
1029
+ delta: z.ZodOptional<z.ZodNumber>;
1030
+ }, z.core.$loose>>;
1031
+ }, z.core.$loose>>;
1032
+ findings: z.ZodOptional<z.ZodArray<z.ZodObject<{
1033
+ id: z.ZodOptional<z.ZodString>;
1034
+ category: z.ZodOptional<z.ZodString>;
1035
+ severity: z.ZodOptional<z.ZodString>;
1036
+ confidence: z.ZodOptional<z.ZodNumber>;
1037
+ region: z.ZodOptional<z.ZodObject<{
1038
+ unit: z.ZodString;
1039
+ x: z.ZodNumber;
1040
+ y: z.ZodNumber;
1041
+ w: z.ZodNumber;
1042
+ h: z.ZodNumber;
1043
+ }, z.core.$loose>>;
1044
+ rationale: z.ZodOptional<z.ZodString>;
1045
+ suggestion: z.ZodOptional<z.ZodString>;
1046
+ }, z.core.$loose>>>;
1047
+ failure: z.ZodOptional<z.ZodObject<{
1048
+ reason: z.ZodString;
1049
+ message: z.ZodOptional<z.ZodString>;
1050
+ }, z.core.$loose>>;
1051
+ usage: z.ZodOptional<z.ZodObject<{
1052
+ inputTokens: z.ZodOptional<z.ZodNumber>;
1053
+ outputTokens: z.ZodOptional<z.ZodNumber>;
1054
+ latencyMs: z.ZodOptional<z.ZodNumber>;
1055
+ costUsd: z.ZodOptional<z.ZodNumber>;
1056
+ }, z.core.$loose>>;
1057
+ }, z.core.$loose>>;
1058
+ critiqueMark: z.ZodOptional<z.ZodObject<{
1059
+ schema: z.ZodNumber;
1060
+ subject: z.ZodObject<{
1061
+ entryKey: z.ZodString;
1062
+ imageSha256: z.ZodString;
1063
+ }, z.core.$loose>;
1064
+ critic: z.ZodObject<{
1065
+ name: z.ZodString;
1066
+ version: z.ZodOptional<z.ZodString>;
1067
+ }, z.core.$loose>;
1068
+ finding: z.ZodOptional<z.ZodString>;
1069
+ decision: z.ZodString;
1070
+ reviewer: z.ZodOptional<z.ZodString>;
1071
+ note: z.ZodOptional<z.ZodString>;
1072
+ layer: z.ZodOptional<z.ZodString>;
1073
+ }, z.core.$loose>>;
782
1074
  recording: z.ZodOptional<z.ZodObject<{
783
1075
  state: z.ZodString;
784
1076
  reason: z.ZodOptional<z.ZodString>;
@@ -988,6 +1280,7 @@ export declare const EffectiveDeltaSchema: z.ZodObject<{
988
1280
  fixture: z.ZodOptional<z.ZodString>;
989
1281
  cohort: z.ZodOptional<z.ZodString>;
990
1282
  area: z.ZodOptional<z.ZodString>;
1283
+ kind: z.ZodOptional<z.ZodString>;
991
1284
  flags: z.ZodOptional<z.ZodArray<z.ZodString>>;
992
1285
  covers: z.ZodOptional<z.ZodArray<z.ZodString>>;
993
1286
  inventory: z.ZodOptional<z.ZodBoolean>;
@@ -1003,6 +1296,78 @@ export declare const EffectiveDeltaSchema: z.ZodObject<{
1003
1296
  omitted: z.ZodOptional<z.ZodString>;
1004
1297
  }, z.core.$loose>>;
1005
1298
  }, z.core.$loose>>;
1299
+ critique: z.ZodOptional<z.ZodObject<{
1300
+ schema: z.ZodNumber;
1301
+ subject: z.ZodObject<{
1302
+ entryKey: z.ZodString;
1303
+ imageSha256: z.ZodString;
1304
+ state: z.ZodOptional<z.ZodString>;
1305
+ }, z.core.$loose>;
1306
+ critic: z.ZodObject<{
1307
+ name: z.ZodString;
1308
+ version: z.ZodString;
1309
+ kind: z.ZodOptional<z.ZodString>;
1310
+ }, z.core.$loose>;
1311
+ model: z.ZodOptional<z.ZodObject<{
1312
+ id: z.ZodString;
1313
+ provider: z.ZodOptional<z.ZodString>;
1314
+ }, z.core.$loose>>;
1315
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1316
+ verdict: z.ZodOptional<z.ZodObject<{
1317
+ score: z.ZodOptional<z.ZodNumber>;
1318
+ scale: z.ZodOptional<z.ZodString>;
1319
+ label: z.ZodOptional<z.ZodString>;
1320
+ confidence: z.ZodOptional<z.ZodNumber>;
1321
+ relative: z.ZodOptional<z.ZodObject<{
1322
+ stateKind: z.ZodString;
1323
+ percentile: z.ZodOptional<z.ZodNumber>;
1324
+ sampleSize: z.ZodOptional<z.ZodNumber>;
1325
+ previousScore: z.ZodOptional<z.ZodNumber>;
1326
+ delta: z.ZodOptional<z.ZodNumber>;
1327
+ }, z.core.$loose>>;
1328
+ }, z.core.$loose>>;
1329
+ findings: z.ZodOptional<z.ZodArray<z.ZodObject<{
1330
+ id: z.ZodOptional<z.ZodString>;
1331
+ category: z.ZodOptional<z.ZodString>;
1332
+ severity: z.ZodOptional<z.ZodString>;
1333
+ confidence: z.ZodOptional<z.ZodNumber>;
1334
+ region: z.ZodOptional<z.ZodObject<{
1335
+ unit: z.ZodString;
1336
+ x: z.ZodNumber;
1337
+ y: z.ZodNumber;
1338
+ w: z.ZodNumber;
1339
+ h: z.ZodNumber;
1340
+ }, z.core.$loose>>;
1341
+ rationale: z.ZodOptional<z.ZodString>;
1342
+ suggestion: z.ZodOptional<z.ZodString>;
1343
+ }, z.core.$loose>>>;
1344
+ failure: z.ZodOptional<z.ZodObject<{
1345
+ reason: z.ZodString;
1346
+ message: z.ZodOptional<z.ZodString>;
1347
+ }, z.core.$loose>>;
1348
+ usage: z.ZodOptional<z.ZodObject<{
1349
+ inputTokens: z.ZodOptional<z.ZodNumber>;
1350
+ outputTokens: z.ZodOptional<z.ZodNumber>;
1351
+ latencyMs: z.ZodOptional<z.ZodNumber>;
1352
+ costUsd: z.ZodOptional<z.ZodNumber>;
1353
+ }, z.core.$loose>>;
1354
+ }, z.core.$loose>>;
1355
+ critiqueMark: z.ZodOptional<z.ZodObject<{
1356
+ schema: z.ZodNumber;
1357
+ subject: z.ZodObject<{
1358
+ entryKey: z.ZodString;
1359
+ imageSha256: z.ZodString;
1360
+ }, z.core.$loose>;
1361
+ critic: z.ZodObject<{
1362
+ name: z.ZodString;
1363
+ version: z.ZodOptional<z.ZodString>;
1364
+ }, z.core.$loose>;
1365
+ finding: z.ZodOptional<z.ZodString>;
1366
+ decision: z.ZodString;
1367
+ reviewer: z.ZodOptional<z.ZodString>;
1368
+ note: z.ZodOptional<z.ZodString>;
1369
+ layer: z.ZodOptional<z.ZodString>;
1370
+ }, z.core.$loose>>;
1006
1371
  recording: z.ZodOptional<z.ZodObject<{
1007
1372
  state: z.ZodString;
1008
1373
  reason: z.ZodOptional<z.ZodString>;
@@ -3986,6 +4351,7 @@ export declare const UiCatalogSchema: z.ZodObject<{
3986
4351
  fixture: z.ZodNullable<z.ZodString>;
3987
4352
  cohort: z.ZodNullable<z.ZodString>;
3988
4353
  area: z.ZodNullable<z.ZodString>;
4354
+ kind: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3989
4355
  flags: z.ZodArray<z.ZodString>;
3990
4356
  covers: z.ZodArray<z.ZodString>;
3991
4357
  producers: z.ZodArray<z.ZodString>;
@@ -4118,3 +4484,289 @@ export declare const UiCatalogSchema: z.ZodObject<{
4118
4484
  offset: z.ZodOptional<z.ZodNumber>;
4119
4485
  limit: z.ZodOptional<z.ZodNumber>;
4120
4486
  }, z.core.$loose>;
4487
+ /** An entry of the catalog as a critic reads it: one captured state in one profile, with the hash of its stored picture and the critiques already made of it. */
4488
+ export declare const CatalogEntrySchema: z.ZodObject<{
4489
+ key: z.ZodString;
4490
+ stateId: z.ZodString;
4491
+ title: z.ZodString;
4492
+ route: z.ZodNullable<z.ZodString>;
4493
+ area: z.ZodNullable<z.ZodString>;
4494
+ state: z.ZodString;
4495
+ profile: z.ZodObject<{
4496
+ key: z.ZodString;
4497
+ environment: z.ZodNullable<z.ZodString>;
4498
+ parameters: z.ZodRecord<z.ZodString, z.ZodString>;
4499
+ label: z.ZodString;
4500
+ }, z.core.$loose>;
4501
+ image: z.ZodObject<{
4502
+ sha256: z.ZodString;
4503
+ path: z.ZodString;
4504
+ contentType: z.ZodOptional<z.ZodString>;
4505
+ width: z.ZodOptional<z.ZodNumber>;
4506
+ height: z.ZodOptional<z.ZodNumber>;
4507
+ bytes: z.ZodOptional<z.ZodNumber>;
4508
+ }, z.core.$loose>;
4509
+ origin: z.ZodObject<{
4510
+ layer: z.ZodString;
4511
+ backend: z.ZodString;
4512
+ producer: z.ZodString;
4513
+ recordedAtMs: z.ZodNumber;
4514
+ sha: z.ZodNullable<z.ZodString>;
4515
+ branch: z.ZodNullable<z.ZodString>;
4516
+ runUrl: z.ZodNullable<z.ZodString>;
4517
+ freshness: z.ZodOptional<z.ZodEnum<{
4518
+ unknown: "unknown";
4519
+ modified: "modified";
4520
+ }>>;
4521
+ }, z.core.$loose>;
4522
+ critiques: z.ZodArray<z.ZodObject<{
4523
+ layer: z.ZodString;
4524
+ producer: z.ZodString;
4525
+ recordedAtMs: z.ZodNumber;
4526
+ status: z.ZodEnum<{
4527
+ passed: "passed";
4528
+ failed: "failed";
4529
+ running: "running";
4530
+ "not-run": "not-run";
4531
+ }>;
4532
+ currency: z.ZodEnum<{
4533
+ current: "current";
4534
+ "earlier-image": "earlier-image";
4535
+ }>;
4536
+ critique: z.ZodObject<{
4537
+ schema: z.ZodNumber;
4538
+ subject: z.ZodObject<{
4539
+ entryKey: z.ZodString;
4540
+ imageSha256: z.ZodString;
4541
+ state: z.ZodOptional<z.ZodString>;
4542
+ }, z.core.$loose>;
4543
+ critic: z.ZodObject<{
4544
+ name: z.ZodString;
4545
+ version: z.ZodString;
4546
+ kind: z.ZodOptional<z.ZodString>;
4547
+ }, z.core.$loose>;
4548
+ model: z.ZodOptional<z.ZodObject<{
4549
+ id: z.ZodString;
4550
+ provider: z.ZodOptional<z.ZodString>;
4551
+ }, z.core.$loose>>;
4552
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4553
+ verdict: z.ZodOptional<z.ZodObject<{
4554
+ score: z.ZodOptional<z.ZodNumber>;
4555
+ scale: z.ZodOptional<z.ZodString>;
4556
+ label: z.ZodOptional<z.ZodString>;
4557
+ confidence: z.ZodOptional<z.ZodNumber>;
4558
+ relative: z.ZodOptional<z.ZodObject<{
4559
+ stateKind: z.ZodString;
4560
+ percentile: z.ZodOptional<z.ZodNumber>;
4561
+ sampleSize: z.ZodOptional<z.ZodNumber>;
4562
+ previousScore: z.ZodOptional<z.ZodNumber>;
4563
+ delta: z.ZodOptional<z.ZodNumber>;
4564
+ }, z.core.$loose>>;
4565
+ }, z.core.$loose>>;
4566
+ findings: z.ZodOptional<z.ZodArray<z.ZodObject<{
4567
+ id: z.ZodOptional<z.ZodString>;
4568
+ category: z.ZodOptional<z.ZodString>;
4569
+ severity: z.ZodOptional<z.ZodString>;
4570
+ confidence: z.ZodOptional<z.ZodNumber>;
4571
+ region: z.ZodOptional<z.ZodObject<{
4572
+ unit: z.ZodString;
4573
+ x: z.ZodNumber;
4574
+ y: z.ZodNumber;
4575
+ w: z.ZodNumber;
4576
+ h: z.ZodNumber;
4577
+ }, z.core.$loose>>;
4578
+ rationale: z.ZodOptional<z.ZodString>;
4579
+ suggestion: z.ZodOptional<z.ZodString>;
4580
+ }, z.core.$loose>>>;
4581
+ failure: z.ZodOptional<z.ZodObject<{
4582
+ reason: z.ZodString;
4583
+ message: z.ZodOptional<z.ZodString>;
4584
+ }, z.core.$loose>>;
4585
+ usage: z.ZodOptional<z.ZodObject<{
4586
+ inputTokens: z.ZodOptional<z.ZodNumber>;
4587
+ outputTokens: z.ZodOptional<z.ZodNumber>;
4588
+ latencyMs: z.ZodOptional<z.ZodNumber>;
4589
+ costUsd: z.ZodOptional<z.ZodNumber>;
4590
+ }, z.core.$loose>>;
4591
+ }, z.core.$loose>;
4592
+ }, z.core.$loose>>;
4593
+ marks: z.ZodOptional<z.ZodArray<z.ZodObject<{
4594
+ layer: z.ZodString;
4595
+ producer: z.ZodString;
4596
+ recordedAtMs: z.ZodNumber;
4597
+ currency: z.ZodEnum<{
4598
+ current: "current";
4599
+ "earlier-image": "earlier-image";
4600
+ }>;
4601
+ mark: z.ZodObject<{
4602
+ schema: z.ZodNumber;
4603
+ subject: z.ZodObject<{
4604
+ entryKey: z.ZodString;
4605
+ imageSha256: z.ZodString;
4606
+ }, z.core.$loose>;
4607
+ critic: z.ZodObject<{
4608
+ name: z.ZodString;
4609
+ version: z.ZodOptional<z.ZodString>;
4610
+ }, z.core.$loose>;
4611
+ finding: z.ZodOptional<z.ZodString>;
4612
+ decision: z.ZodString;
4613
+ reviewer: z.ZodOptional<z.ZodString>;
4614
+ note: z.ZodOptional<z.ZodString>;
4615
+ layer: z.ZodOptional<z.ZodString>;
4616
+ }, z.core.$loose>;
4617
+ }, z.core.$loose>>>;
4618
+ }, z.core.$loose>;
4619
+ /**
4620
+ * `GET /api/reports/ui-catalog/entries`: the UI catalog as a flat, cursor-paged list of captured states for a critic.
4621
+ */
4622
+ export declare const CatalogEntriesSchema: z.ZodObject<{
4623
+ schemaVersion: z.ZodLiteral<1>;
4624
+ version: z.ZodString;
4625
+ entries: z.ZodArray<z.ZodObject<{
4626
+ key: z.ZodString;
4627
+ stateId: z.ZodString;
4628
+ title: z.ZodString;
4629
+ route: z.ZodNullable<z.ZodString>;
4630
+ area: z.ZodNullable<z.ZodString>;
4631
+ state: z.ZodString;
4632
+ profile: z.ZodObject<{
4633
+ key: z.ZodString;
4634
+ environment: z.ZodNullable<z.ZodString>;
4635
+ parameters: z.ZodRecord<z.ZodString, z.ZodString>;
4636
+ label: z.ZodString;
4637
+ }, z.core.$loose>;
4638
+ image: z.ZodObject<{
4639
+ sha256: z.ZodString;
4640
+ path: z.ZodString;
4641
+ contentType: z.ZodOptional<z.ZodString>;
4642
+ width: z.ZodOptional<z.ZodNumber>;
4643
+ height: z.ZodOptional<z.ZodNumber>;
4644
+ bytes: z.ZodOptional<z.ZodNumber>;
4645
+ }, z.core.$loose>;
4646
+ origin: z.ZodObject<{
4647
+ layer: z.ZodString;
4648
+ backend: z.ZodString;
4649
+ producer: z.ZodString;
4650
+ recordedAtMs: z.ZodNumber;
4651
+ sha: z.ZodNullable<z.ZodString>;
4652
+ branch: z.ZodNullable<z.ZodString>;
4653
+ runUrl: z.ZodNullable<z.ZodString>;
4654
+ freshness: z.ZodOptional<z.ZodEnum<{
4655
+ unknown: "unknown";
4656
+ modified: "modified";
4657
+ }>>;
4658
+ }, z.core.$loose>;
4659
+ critiques: z.ZodArray<z.ZodObject<{
4660
+ layer: z.ZodString;
4661
+ producer: z.ZodString;
4662
+ recordedAtMs: z.ZodNumber;
4663
+ status: z.ZodEnum<{
4664
+ passed: "passed";
4665
+ failed: "failed";
4666
+ running: "running";
4667
+ "not-run": "not-run";
4668
+ }>;
4669
+ currency: z.ZodEnum<{
4670
+ current: "current";
4671
+ "earlier-image": "earlier-image";
4672
+ }>;
4673
+ critique: z.ZodObject<{
4674
+ schema: z.ZodNumber;
4675
+ subject: z.ZodObject<{
4676
+ entryKey: z.ZodString;
4677
+ imageSha256: z.ZodString;
4678
+ state: z.ZodOptional<z.ZodString>;
4679
+ }, z.core.$loose>;
4680
+ critic: z.ZodObject<{
4681
+ name: z.ZodString;
4682
+ version: z.ZodString;
4683
+ kind: z.ZodOptional<z.ZodString>;
4684
+ }, z.core.$loose>;
4685
+ model: z.ZodOptional<z.ZodObject<{
4686
+ id: z.ZodString;
4687
+ provider: z.ZodOptional<z.ZodString>;
4688
+ }, z.core.$loose>>;
4689
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4690
+ verdict: z.ZodOptional<z.ZodObject<{
4691
+ score: z.ZodOptional<z.ZodNumber>;
4692
+ scale: z.ZodOptional<z.ZodString>;
4693
+ label: z.ZodOptional<z.ZodString>;
4694
+ confidence: z.ZodOptional<z.ZodNumber>;
4695
+ relative: z.ZodOptional<z.ZodObject<{
4696
+ stateKind: z.ZodString;
4697
+ percentile: z.ZodOptional<z.ZodNumber>;
4698
+ sampleSize: z.ZodOptional<z.ZodNumber>;
4699
+ previousScore: z.ZodOptional<z.ZodNumber>;
4700
+ delta: z.ZodOptional<z.ZodNumber>;
4701
+ }, z.core.$loose>>;
4702
+ }, z.core.$loose>>;
4703
+ findings: z.ZodOptional<z.ZodArray<z.ZodObject<{
4704
+ id: z.ZodOptional<z.ZodString>;
4705
+ category: z.ZodOptional<z.ZodString>;
4706
+ severity: z.ZodOptional<z.ZodString>;
4707
+ confidence: z.ZodOptional<z.ZodNumber>;
4708
+ region: z.ZodOptional<z.ZodObject<{
4709
+ unit: z.ZodString;
4710
+ x: z.ZodNumber;
4711
+ y: z.ZodNumber;
4712
+ w: z.ZodNumber;
4713
+ h: z.ZodNumber;
4714
+ }, z.core.$loose>>;
4715
+ rationale: z.ZodOptional<z.ZodString>;
4716
+ suggestion: z.ZodOptional<z.ZodString>;
4717
+ }, z.core.$loose>>>;
4718
+ failure: z.ZodOptional<z.ZodObject<{
4719
+ reason: z.ZodString;
4720
+ message: z.ZodOptional<z.ZodString>;
4721
+ }, z.core.$loose>>;
4722
+ usage: z.ZodOptional<z.ZodObject<{
4723
+ inputTokens: z.ZodOptional<z.ZodNumber>;
4724
+ outputTokens: z.ZodOptional<z.ZodNumber>;
4725
+ latencyMs: z.ZodOptional<z.ZodNumber>;
4726
+ costUsd: z.ZodOptional<z.ZodNumber>;
4727
+ }, z.core.$loose>>;
4728
+ }, z.core.$loose>;
4729
+ }, z.core.$loose>>;
4730
+ marks: z.ZodOptional<z.ZodArray<z.ZodObject<{
4731
+ layer: z.ZodString;
4732
+ producer: z.ZodString;
4733
+ recordedAtMs: z.ZodNumber;
4734
+ currency: z.ZodEnum<{
4735
+ current: "current";
4736
+ "earlier-image": "earlier-image";
4737
+ }>;
4738
+ mark: z.ZodObject<{
4739
+ schema: z.ZodNumber;
4740
+ subject: z.ZodObject<{
4741
+ entryKey: z.ZodString;
4742
+ imageSha256: z.ZodString;
4743
+ }, z.core.$loose>;
4744
+ critic: z.ZodObject<{
4745
+ name: z.ZodString;
4746
+ version: z.ZodOptional<z.ZodString>;
4747
+ }, z.core.$loose>;
4748
+ finding: z.ZodOptional<z.ZodString>;
4749
+ decision: z.ZodString;
4750
+ reviewer: z.ZodOptional<z.ZodString>;
4751
+ note: z.ZodOptional<z.ZodString>;
4752
+ layer: z.ZodOptional<z.ZodString>;
4753
+ }, z.core.$loose>;
4754
+ }, z.core.$loose>>>;
4755
+ }, z.core.$loose>>;
4756
+ total: z.ZodNumber;
4757
+ nextCursor: z.ZodOptional<z.ZodString>;
4758
+ since: z.ZodOptional<z.ZodObject<{
4759
+ requested: z.ZodString;
4760
+ honored: z.ZodBoolean;
4761
+ }, z.core.$loose>>;
4762
+ unjudgeable: z.ZodNumber;
4763
+ sources: z.ZodObject<{
4764
+ backends: z.ZodArray<z.ZodObject<{
4765
+ id: z.ZodString;
4766
+ label: z.ZodString;
4767
+ live: z.ZodBoolean;
4768
+ available: z.ZodBoolean;
4769
+ }, z.core.$loose>>;
4770
+ notices: z.ZodArray<z.ZodString>;
4771
+ }, z.core.$loose>;
4772
+ }, z.core.$loose>;