@crvouga/atlas 1.10.0 → 1.11.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 (44) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/reports/src/review-collection-store.d.ts +47 -0
  3. package/dist/reports/src/review-collection-store.js +214 -0
  4. package/dist/reports/src/review-collection.d.ts +88 -0
  5. package/dist/reports/src/review-collection.js +144 -0
  6. package/dist/reports/src/test-catalog.d.ts +2 -0
  7. package/dist/reports/src/test-catalog.js +1 -1
  8. package/dist/schema/src/api.d.ts +574 -0
  9. package/dist/schema/src/api.js +152 -1
  10. package/dist/server/src/app.js +4 -1
  11. package/dist/server/src/openapi.js +46 -1
  12. package/dist/server/src/review-collections.d.ts +39 -0
  13. package/dist/server/src/review-collections.js +179 -0
  14. package/docs/extending.md +1 -1
  15. package/docs/reference/http-api.md +122 -0
  16. package/docs/reference/reports.md +294 -0
  17. package/docs/reference/schema.md +131 -0
  18. package/docs/reference/server.md +44 -0
  19. package/docs/rich-evidence.md +38 -0
  20. package/docs/server.md +41 -0
  21. package/docs/ui.md +45 -0
  22. package/llms-full.txt +247 -1
  23. package/package.json +1 -1
  24. package/packages/schema/schemas/review-collection.schema.json +398 -0
  25. package/packages/schema/schemas/review-manifest.schema.json +475 -0
  26. package/packages/server/openapi.json +6729 -4084
  27. package/packages/visualizer/src/app/router.tsx +6 -1
  28. package/packages/visualizer/src/evidence/applicability-view.tsx +233 -0
  29. package/packages/visualizer/src/evidence/applicability.test.ts +131 -0
  30. package/packages/visualizer/src/evidence/applicability.ts +241 -0
  31. package/packages/visualizer/src/evidence/artifact-tags.tsx +2 -1
  32. package/packages/visualizer/src/evidence/behavior-panel.tsx +11 -1
  33. package/packages/visualizer/src/evidence/feature-page.tsx +25 -4
  34. package/packages/visualizer/src/explorer/ArtifactsView.tsx +19 -5
  35. package/packages/visualizer/src/explorer/Explorer.tsx +7 -2
  36. package/packages/visualizer/src/explorer/RecordingTextSearch.tsx +355 -0
  37. package/packages/visualizer/src/explorer/collection-model.test.ts +31 -0
  38. package/packages/visualizer/src/explorer/collection-model.ts +45 -0
  39. package/packages/visualizer/src/explorer/collections.tsx +513 -0
  40. package/packages/visualizer/src/explorer/playlist-entries.ts +29 -0
  41. package/packages/visualizer/src/explorer/playlist.tsx +75 -16
  42. package/packages/visualizer/src/explorer/recording-text.test.ts +149 -0
  43. package/packages/visualizer/src/explorer/recording-text.ts +490 -0
  44. package/packages/visualizer/src/explorer/search.ts +10 -2
@@ -1541,6 +1541,568 @@ export declare const ArtifactTagsSchema: z.ZodObject<{
1541
1541
  atMs: z.ZodNumber;
1542
1542
  }, z.core.$loose>>;
1543
1543
  }, z.core.$loose>;
1544
+ /** A source a review collection points at: one recorded result of one archived layer, and optionally one of its recordings. Exact and immutable: a layer never changes. */
1545
+ export declare const ReviewSourceSchema: z.ZodObject<{
1546
+ layer: z.ZodString;
1547
+ check: z.ZodString;
1548
+ kind: z.ZodOptional<z.ZodString>;
1549
+ recording: z.ZodOptional<z.ZodString>;
1550
+ }, z.core.$loose>;
1551
+ /** One entry of a request to publish a collection: a source and the curator\'s caption for it. */
1552
+ export declare const ReviewEntryInputSchema: z.ZodObject<{
1553
+ caption: z.ZodOptional<z.ZodString>;
1554
+ layer: z.ZodString;
1555
+ check: z.ZodString;
1556
+ kind: z.ZodOptional<z.ZodString>;
1557
+ recording: z.ZodOptional<z.ZodString>;
1558
+ }, z.core.$loose>;
1559
+ /** A gap the curator names: something the review should show and no recording does. It sits after the first `after` entries (0 or absent: before the first). */
1560
+ export declare const ReviewGapInputSchema: z.ZodObject<{
1561
+ note: z.ZodString;
1562
+ after: z.ZodOptional<z.ZodNumber>;
1563
+ }, z.core.$loose>;
1564
+ /**
1565
+ * The body of `POST /api/reports/review-collections`: a new collection, or, with `basedOn`, an explicit new revision of
1566
+ * one. At least one entry or gap. The server records which sources the entries are now; it never alters the request.
1567
+ */
1568
+ export declare const ReviewCollectionRequestSchema: z.ZodObject<{
1569
+ title: z.ZodString;
1570
+ purpose: z.ZodOptional<z.ZodString>;
1571
+ audience: z.ZodOptional<z.ZodString>;
1572
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1573
+ entries: z.ZodOptional<z.ZodArray<z.ZodObject<{
1574
+ caption: z.ZodOptional<z.ZodString>;
1575
+ layer: z.ZodString;
1576
+ check: z.ZodString;
1577
+ kind: z.ZodOptional<z.ZodString>;
1578
+ recording: z.ZodOptional<z.ZodString>;
1579
+ }, z.core.$loose>>>;
1580
+ gaps: z.ZodOptional<z.ZodArray<z.ZodObject<{
1581
+ note: z.ZodString;
1582
+ after: z.ZodOptional<z.ZodNumber>;
1583
+ }, z.core.$loose>>>;
1584
+ frozenFrom: z.ZodOptional<z.ZodString>;
1585
+ basedOn: z.ZodOptional<z.ZodObject<{
1586
+ id: z.ZodString;
1587
+ revision: z.ZodNumber;
1588
+ }, z.core.$loose>>;
1589
+ }, z.core.$loose>;
1590
+ /** What the server recorded about the source of an entry at the moment it was frozen. */
1591
+ export declare const ReviewSnapshotSchema: z.ZodObject<{
1592
+ title: z.ZodString;
1593
+ specPath: z.ZodNullable<z.ZodString>;
1594
+ status: z.ZodEnum<{
1595
+ passed: "passed";
1596
+ failed: "failed";
1597
+ running: "running";
1598
+ "not-run": "not-run";
1599
+ }>;
1600
+ recordedAtMs: z.ZodNumber;
1601
+ environment: z.ZodNullable<z.ZodString>;
1602
+ producer: z.ZodString;
1603
+ branch: z.ZodNullable<z.ZodString>;
1604
+ sha: z.ZodNullable<z.ZodString>;
1605
+ run: z.ZodString;
1606
+ runUrl: z.ZodNullable<z.ZodString>;
1607
+ backend: z.ZodNullable<z.ZodString>;
1608
+ testKey: z.ZodString;
1609
+ attemptStatuses: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1610
+ passed: "passed";
1611
+ failed: "failed";
1612
+ running: "running";
1613
+ "not-run": "not-run";
1614
+ }>>>;
1615
+ videos: z.ZodOptional<z.ZodArray<z.ZodObject<{
1616
+ name: z.ZodString;
1617
+ owner: z.ZodString;
1618
+ attempt: z.ZodOptional<z.ZodNumber>;
1619
+ step: z.ZodOptional<z.ZodString>;
1620
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1621
+ recording: z.ZodOptional<z.ZodString>;
1622
+ available: z.ZodBoolean;
1623
+ scope: z.ZodOptional<z.ZodObject<{
1624
+ surface: z.ZodOptional<z.ZodString>;
1625
+ deviceKind: z.ZodOptional<z.ZodString>;
1626
+ syntheticData: z.ZodOptional<z.ZodBoolean>;
1627
+ dependencies: z.ZodOptional<z.ZodString>;
1628
+ audioCaptured: z.ZodOptional<z.ZodBoolean>;
1629
+ pacing: z.ZodOptional<z.ZodString>;
1630
+ asserted: z.ZodOptional<z.ZodArray<z.ZodString>>;
1631
+ limitations: z.ZodOptional<z.ZodArray<z.ZodString>>;
1632
+ declaredBy: z.ZodOptional<z.ZodString>;
1633
+ verified: z.ZodOptional<z.ZodArray<z.ZodString>>;
1634
+ verifiedBy: z.ZodOptional<z.ZodString>;
1635
+ provenance: z.ZodOptional<z.ZodArray<z.ZodObject<{
1636
+ url: z.ZodString;
1637
+ name: z.ZodOptional<z.ZodString>;
1638
+ rel: z.ZodOptional<z.ZodString>;
1639
+ }, z.core.$loose>>>;
1640
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1641
+ }, z.core.$loose>>;
1642
+ }, z.core.$loose>>>;
1643
+ }, z.core.$loose>;
1644
+ /** One entry of a frozen collection. */
1645
+ export declare const ReviewEntrySchema: z.ZodObject<{
1646
+ id: z.ZodString;
1647
+ source: z.ZodObject<{
1648
+ layer: z.ZodString;
1649
+ check: z.ZodString;
1650
+ kind: z.ZodOptional<z.ZodString>;
1651
+ recording: z.ZodOptional<z.ZodString>;
1652
+ }, z.core.$loose>;
1653
+ caption: z.ZodOptional<z.ZodString>;
1654
+ snapshot: z.ZodObject<{
1655
+ title: z.ZodString;
1656
+ specPath: z.ZodNullable<z.ZodString>;
1657
+ status: z.ZodEnum<{
1658
+ passed: "passed";
1659
+ failed: "failed";
1660
+ running: "running";
1661
+ "not-run": "not-run";
1662
+ }>;
1663
+ recordedAtMs: z.ZodNumber;
1664
+ environment: z.ZodNullable<z.ZodString>;
1665
+ producer: z.ZodString;
1666
+ branch: z.ZodNullable<z.ZodString>;
1667
+ sha: z.ZodNullable<z.ZodString>;
1668
+ run: z.ZodString;
1669
+ runUrl: z.ZodNullable<z.ZodString>;
1670
+ backend: z.ZodNullable<z.ZodString>;
1671
+ testKey: z.ZodString;
1672
+ attemptStatuses: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1673
+ passed: "passed";
1674
+ failed: "failed";
1675
+ running: "running";
1676
+ "not-run": "not-run";
1677
+ }>>>;
1678
+ videos: z.ZodOptional<z.ZodArray<z.ZodObject<{
1679
+ name: z.ZodString;
1680
+ owner: z.ZodString;
1681
+ attempt: z.ZodOptional<z.ZodNumber>;
1682
+ step: z.ZodOptional<z.ZodString>;
1683
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1684
+ recording: z.ZodOptional<z.ZodString>;
1685
+ available: z.ZodBoolean;
1686
+ scope: z.ZodOptional<z.ZodObject<{
1687
+ surface: z.ZodOptional<z.ZodString>;
1688
+ deviceKind: z.ZodOptional<z.ZodString>;
1689
+ syntheticData: z.ZodOptional<z.ZodBoolean>;
1690
+ dependencies: z.ZodOptional<z.ZodString>;
1691
+ audioCaptured: z.ZodOptional<z.ZodBoolean>;
1692
+ pacing: z.ZodOptional<z.ZodString>;
1693
+ asserted: z.ZodOptional<z.ZodArray<z.ZodString>>;
1694
+ limitations: z.ZodOptional<z.ZodArray<z.ZodString>>;
1695
+ declaredBy: z.ZodOptional<z.ZodString>;
1696
+ verified: z.ZodOptional<z.ZodArray<z.ZodString>>;
1697
+ verifiedBy: z.ZodOptional<z.ZodString>;
1698
+ provenance: z.ZodOptional<z.ZodArray<z.ZodObject<{
1699
+ url: z.ZodString;
1700
+ name: z.ZodOptional<z.ZodString>;
1701
+ rel: z.ZodOptional<z.ZodString>;
1702
+ }, z.core.$loose>>>;
1703
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1704
+ }, z.core.$loose>>;
1705
+ }, z.core.$loose>>>;
1706
+ }, z.core.$loose>;
1707
+ }, z.core.$loose>;
1708
+ /** A gap item of a collection. */
1709
+ export declare const ReviewGapSchema: z.ZodObject<{
1710
+ id: z.ZodString;
1711
+ note: z.ZodString;
1712
+ after: z.ZodNumber;
1713
+ }, z.core.$loose>;
1714
+ /**
1715
+ * One revision of a review collection, as stored: immutable. It is curation, not a test run: it has no status of its own,
1716
+ * carries no check, and its entries are references to results that other runs recorded. Entries from different
1717
+ * runs are never one execution.
1718
+ */
1719
+ export declare const ReviewCollectionSchema: z.ZodObject<{
1720
+ schemaVersion: z.ZodLiteral<1>;
1721
+ id: z.ZodString;
1722
+ revision: z.ZodNumber;
1723
+ title: z.ZodString;
1724
+ purpose: z.ZodOptional<z.ZodString>;
1725
+ audience: z.ZodOptional<z.ZodString>;
1726
+ tags: z.ZodArray<z.ZodString>;
1727
+ entries: z.ZodArray<z.ZodObject<{
1728
+ id: z.ZodString;
1729
+ source: z.ZodObject<{
1730
+ layer: z.ZodString;
1731
+ check: z.ZodString;
1732
+ kind: z.ZodOptional<z.ZodString>;
1733
+ recording: z.ZodOptional<z.ZodString>;
1734
+ }, z.core.$loose>;
1735
+ caption: z.ZodOptional<z.ZodString>;
1736
+ snapshot: z.ZodObject<{
1737
+ title: z.ZodString;
1738
+ specPath: z.ZodNullable<z.ZodString>;
1739
+ status: z.ZodEnum<{
1740
+ passed: "passed";
1741
+ failed: "failed";
1742
+ running: "running";
1743
+ "not-run": "not-run";
1744
+ }>;
1745
+ recordedAtMs: z.ZodNumber;
1746
+ environment: z.ZodNullable<z.ZodString>;
1747
+ producer: z.ZodString;
1748
+ branch: z.ZodNullable<z.ZodString>;
1749
+ sha: z.ZodNullable<z.ZodString>;
1750
+ run: z.ZodString;
1751
+ runUrl: z.ZodNullable<z.ZodString>;
1752
+ backend: z.ZodNullable<z.ZodString>;
1753
+ testKey: z.ZodString;
1754
+ attemptStatuses: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1755
+ passed: "passed";
1756
+ failed: "failed";
1757
+ running: "running";
1758
+ "not-run": "not-run";
1759
+ }>>>;
1760
+ videos: z.ZodOptional<z.ZodArray<z.ZodObject<{
1761
+ name: z.ZodString;
1762
+ owner: z.ZodString;
1763
+ attempt: z.ZodOptional<z.ZodNumber>;
1764
+ step: z.ZodOptional<z.ZodString>;
1765
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1766
+ recording: z.ZodOptional<z.ZodString>;
1767
+ available: z.ZodBoolean;
1768
+ scope: z.ZodOptional<z.ZodObject<{
1769
+ surface: z.ZodOptional<z.ZodString>;
1770
+ deviceKind: z.ZodOptional<z.ZodString>;
1771
+ syntheticData: z.ZodOptional<z.ZodBoolean>;
1772
+ dependencies: z.ZodOptional<z.ZodString>;
1773
+ audioCaptured: z.ZodOptional<z.ZodBoolean>;
1774
+ pacing: z.ZodOptional<z.ZodString>;
1775
+ asserted: z.ZodOptional<z.ZodArray<z.ZodString>>;
1776
+ limitations: z.ZodOptional<z.ZodArray<z.ZodString>>;
1777
+ declaredBy: z.ZodOptional<z.ZodString>;
1778
+ verified: z.ZodOptional<z.ZodArray<z.ZodString>>;
1779
+ verifiedBy: z.ZodOptional<z.ZodString>;
1780
+ provenance: z.ZodOptional<z.ZodArray<z.ZodObject<{
1781
+ url: z.ZodString;
1782
+ name: z.ZodOptional<z.ZodString>;
1783
+ rel: z.ZodOptional<z.ZodString>;
1784
+ }, z.core.$loose>>>;
1785
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1786
+ }, z.core.$loose>>;
1787
+ }, z.core.$loose>>>;
1788
+ }, z.core.$loose>;
1789
+ }, z.core.$loose>>;
1790
+ gaps: z.ZodArray<z.ZodObject<{
1791
+ id: z.ZodString;
1792
+ note: z.ZodString;
1793
+ after: z.ZodNumber;
1794
+ }, z.core.$loose>>;
1795
+ frozenFrom: z.ZodOptional<z.ZodString>;
1796
+ basedOn: z.ZodOptional<z.ZodObject<{
1797
+ id: z.ZodString;
1798
+ revision: z.ZodNumber;
1799
+ }, z.core.$loose>>;
1800
+ createdBy: z.ZodString;
1801
+ createdAtMs: z.ZodNumber;
1802
+ }, z.core.$loose>;
1803
+ /** One collection in the list: its newest revision in brief. */
1804
+ export declare const ReviewCollectionSummarySchema: z.ZodObject<{
1805
+ id: z.ZodString;
1806
+ revision: z.ZodNumber;
1807
+ revisions: z.ZodNumber;
1808
+ title: z.ZodString;
1809
+ purpose: z.ZodOptional<z.ZodString>;
1810
+ audience: z.ZodOptional<z.ZodString>;
1811
+ tags: z.ZodArray<z.ZodString>;
1812
+ entries: z.ZodNumber;
1813
+ gaps: z.ZodNumber;
1814
+ createdBy: z.ZodString;
1815
+ createdAtMs: z.ZodNumber;
1816
+ }, z.core.$loose>;
1817
+ /** `GET /api/reports/review-collections`: the newest revision of every collection, newest first. */
1818
+ export declare const ReviewCollectionListSchema: z.ZodObject<{
1819
+ schemaVersion: z.ZodLiteral<1>;
1820
+ collections: z.ZodArray<z.ZodObject<{
1821
+ id: z.ZodString;
1822
+ revision: z.ZodNumber;
1823
+ revisions: z.ZodNumber;
1824
+ title: z.ZodString;
1825
+ purpose: z.ZodOptional<z.ZodString>;
1826
+ audience: z.ZodOptional<z.ZodString>;
1827
+ tags: z.ZodArray<z.ZodString>;
1828
+ entries: z.ZodNumber;
1829
+ gaps: z.ZodNumber;
1830
+ createdBy: z.ZodString;
1831
+ createdAtMs: z.ZodNumber;
1832
+ }, z.core.$loose>>;
1833
+ }, z.core.$loose>;
1834
+ /** The body of `POST /api/reports/review-collections/reviews`: a note, a time-coded gap note, or a reviewed marker on one entry. Curation only: it changes no outcome. */
1835
+ export declare const ReviewNoteInputSchema: z.ZodObject<{
1836
+ collection: z.ZodString;
1837
+ revision: z.ZodNumber;
1838
+ entry: z.ZodOptional<z.ZodString>;
1839
+ kind: z.ZodEnum<{
1840
+ note: "note";
1841
+ gap: "gap";
1842
+ reviewed: "reviewed";
1843
+ unreviewed: "unreviewed";
1844
+ }>;
1845
+ text: z.ZodOptional<z.ZodString>;
1846
+ timecodeMs: z.ZodOptional<z.ZodNumber>;
1847
+ }, z.core.$loose>;
1848
+ /** One recorded review note. Entries are never changed or removed: they are the audit trail. */
1849
+ export declare const ReviewNoteSchema: z.ZodObject<{
1850
+ id: z.ZodString;
1851
+ collection: z.ZodString;
1852
+ revision: z.ZodNumber;
1853
+ entry: z.ZodOptional<z.ZodString>;
1854
+ kind: z.ZodEnum<{
1855
+ note: "note";
1856
+ gap: "gap";
1857
+ reviewed: "reviewed";
1858
+ unreviewed: "unreviewed";
1859
+ }>;
1860
+ text: z.ZodOptional<z.ZodString>;
1861
+ timecodeMs: z.ZodOptional<z.ZodNumber>;
1862
+ by: z.ZodString;
1863
+ atMs: z.ZodNumber;
1864
+ }, z.core.$loose>;
1865
+ /** How an entry\'s source stands now: `available` (the layer and the result are in the report), `unverified` (the layer is held but the result is outside the report\'s history window) or `unavailable` (the layer is gone). */
1866
+ export declare const ReviewAvailabilitySchema: z.ZodObject<{
1867
+ entry: z.ZodString;
1868
+ state: z.ZodEnum<{
1869
+ available: "available";
1870
+ unavailable: "unavailable";
1871
+ unverified: "unverified";
1872
+ }>;
1873
+ reason: z.ZodOptional<z.ZodString>;
1874
+ }, z.core.$loose>;
1875
+ /** `GET /api/reports/review-collections/detail`: one revision, how each source stands now, and the review notes. */
1876
+ export declare const ReviewCollectionDetailSchema: z.ZodObject<{
1877
+ schemaVersion: z.ZodLiteral<1>;
1878
+ collection: z.ZodObject<{
1879
+ schemaVersion: z.ZodLiteral<1>;
1880
+ id: z.ZodString;
1881
+ revision: z.ZodNumber;
1882
+ title: z.ZodString;
1883
+ purpose: z.ZodOptional<z.ZodString>;
1884
+ audience: z.ZodOptional<z.ZodString>;
1885
+ tags: z.ZodArray<z.ZodString>;
1886
+ entries: z.ZodArray<z.ZodObject<{
1887
+ id: z.ZodString;
1888
+ source: z.ZodObject<{
1889
+ layer: z.ZodString;
1890
+ check: z.ZodString;
1891
+ kind: z.ZodOptional<z.ZodString>;
1892
+ recording: z.ZodOptional<z.ZodString>;
1893
+ }, z.core.$loose>;
1894
+ caption: z.ZodOptional<z.ZodString>;
1895
+ snapshot: z.ZodObject<{
1896
+ title: z.ZodString;
1897
+ specPath: z.ZodNullable<z.ZodString>;
1898
+ status: z.ZodEnum<{
1899
+ passed: "passed";
1900
+ failed: "failed";
1901
+ running: "running";
1902
+ "not-run": "not-run";
1903
+ }>;
1904
+ recordedAtMs: z.ZodNumber;
1905
+ environment: z.ZodNullable<z.ZodString>;
1906
+ producer: z.ZodString;
1907
+ branch: z.ZodNullable<z.ZodString>;
1908
+ sha: z.ZodNullable<z.ZodString>;
1909
+ run: z.ZodString;
1910
+ runUrl: z.ZodNullable<z.ZodString>;
1911
+ backend: z.ZodNullable<z.ZodString>;
1912
+ testKey: z.ZodString;
1913
+ attemptStatuses: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1914
+ passed: "passed";
1915
+ failed: "failed";
1916
+ running: "running";
1917
+ "not-run": "not-run";
1918
+ }>>>;
1919
+ videos: z.ZodOptional<z.ZodArray<z.ZodObject<{
1920
+ name: z.ZodString;
1921
+ owner: z.ZodString;
1922
+ attempt: z.ZodOptional<z.ZodNumber>;
1923
+ step: z.ZodOptional<z.ZodString>;
1924
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
1925
+ recording: z.ZodOptional<z.ZodString>;
1926
+ available: z.ZodBoolean;
1927
+ scope: z.ZodOptional<z.ZodObject<{
1928
+ surface: z.ZodOptional<z.ZodString>;
1929
+ deviceKind: z.ZodOptional<z.ZodString>;
1930
+ syntheticData: z.ZodOptional<z.ZodBoolean>;
1931
+ dependencies: z.ZodOptional<z.ZodString>;
1932
+ audioCaptured: z.ZodOptional<z.ZodBoolean>;
1933
+ pacing: z.ZodOptional<z.ZodString>;
1934
+ asserted: z.ZodOptional<z.ZodArray<z.ZodString>>;
1935
+ limitations: z.ZodOptional<z.ZodArray<z.ZodString>>;
1936
+ declaredBy: z.ZodOptional<z.ZodString>;
1937
+ verified: z.ZodOptional<z.ZodArray<z.ZodString>>;
1938
+ verifiedBy: z.ZodOptional<z.ZodString>;
1939
+ provenance: z.ZodOptional<z.ZodArray<z.ZodObject<{
1940
+ url: z.ZodString;
1941
+ name: z.ZodOptional<z.ZodString>;
1942
+ rel: z.ZodOptional<z.ZodString>;
1943
+ }, z.core.$loose>>>;
1944
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1945
+ }, z.core.$loose>>;
1946
+ }, z.core.$loose>>>;
1947
+ }, z.core.$loose>;
1948
+ }, z.core.$loose>>;
1949
+ gaps: z.ZodArray<z.ZodObject<{
1950
+ id: z.ZodString;
1951
+ note: z.ZodString;
1952
+ after: z.ZodNumber;
1953
+ }, z.core.$loose>>;
1954
+ frozenFrom: z.ZodOptional<z.ZodString>;
1955
+ basedOn: z.ZodOptional<z.ZodObject<{
1956
+ id: z.ZodString;
1957
+ revision: z.ZodNumber;
1958
+ }, z.core.$loose>>;
1959
+ createdBy: z.ZodString;
1960
+ createdAtMs: z.ZodNumber;
1961
+ }, z.core.$loose>;
1962
+ revisions: z.ZodArray<z.ZodNumber>;
1963
+ availability: z.ZodArray<z.ZodObject<{
1964
+ entry: z.ZodString;
1965
+ state: z.ZodEnum<{
1966
+ available: "available";
1967
+ unavailable: "unavailable";
1968
+ unverified: "unverified";
1969
+ }>;
1970
+ reason: z.ZodOptional<z.ZodString>;
1971
+ }, z.core.$loose>>;
1972
+ reviews: z.ZodArray<z.ZodObject<{
1973
+ id: z.ZodString;
1974
+ collection: z.ZodString;
1975
+ revision: z.ZodNumber;
1976
+ entry: z.ZodOptional<z.ZodString>;
1977
+ kind: z.ZodEnum<{
1978
+ note: "note";
1979
+ gap: "gap";
1980
+ reviewed: "reviewed";
1981
+ unreviewed: "unreviewed";
1982
+ }>;
1983
+ text: z.ZodOptional<z.ZodString>;
1984
+ timecodeMs: z.ZodOptional<z.ZodNumber>;
1985
+ by: z.ZodString;
1986
+ atMs: z.ZodNumber;
1987
+ }, z.core.$loose>>;
1988
+ reviewed: z.ZodRecord<z.ZodString, z.ZodObject<{
1989
+ by: z.ZodString;
1990
+ atMs: z.ZodNumber;
1991
+ }, z.core.$loose>>;
1992
+ }, z.core.$loose>;
1993
+ /** One file in an export manifest. */
1994
+ export declare const ReviewManifestFileSchema: z.ZodObject<{
1995
+ name: z.ZodString;
1996
+ safeName: z.ZodString;
1997
+ path: z.ZodString;
1998
+ recording: z.ZodOptional<z.ZodString>;
1999
+ sha256: z.ZodNullable<z.ZodString>;
2000
+ missing: z.ZodBoolean;
2001
+ }, z.core.$loose>;
2002
+ /** `GET /api/reports/review-collections/export`: a portable index of one revision. It lists sources and files; it contains no bytes. */
2003
+ export declare const ReviewManifestSchema: z.ZodObject<{
2004
+ schemaVersion: z.ZodLiteral<1>;
2005
+ generatedAtMs: z.ZodNumber;
2006
+ collection: z.ZodObject<{
2007
+ id: z.ZodString;
2008
+ revision: z.ZodNumber;
2009
+ title: z.ZodString;
2010
+ purpose: z.ZodOptional<z.ZodString>;
2011
+ audience: z.ZodOptional<z.ZodString>;
2012
+ tags: z.ZodArray<z.ZodString>;
2013
+ createdBy: z.ZodString;
2014
+ createdAtMs: z.ZodNumber;
2015
+ }, z.core.$loose>;
2016
+ entries: z.ZodArray<z.ZodObject<{
2017
+ id: z.ZodString;
2018
+ position: z.ZodNumber;
2019
+ caption: z.ZodOptional<z.ZodString>;
2020
+ source: z.ZodObject<{
2021
+ layer: z.ZodString;
2022
+ check: z.ZodString;
2023
+ kind: z.ZodOptional<z.ZodString>;
2024
+ recording: z.ZodOptional<z.ZodString>;
2025
+ }, z.core.$loose>;
2026
+ snapshot: z.ZodObject<{
2027
+ title: z.ZodString;
2028
+ specPath: z.ZodNullable<z.ZodString>;
2029
+ status: z.ZodEnum<{
2030
+ passed: "passed";
2031
+ failed: "failed";
2032
+ running: "running";
2033
+ "not-run": "not-run";
2034
+ }>;
2035
+ recordedAtMs: z.ZodNumber;
2036
+ environment: z.ZodNullable<z.ZodString>;
2037
+ producer: z.ZodString;
2038
+ branch: z.ZodNullable<z.ZodString>;
2039
+ sha: z.ZodNullable<z.ZodString>;
2040
+ run: z.ZodString;
2041
+ runUrl: z.ZodNullable<z.ZodString>;
2042
+ backend: z.ZodNullable<z.ZodString>;
2043
+ testKey: z.ZodString;
2044
+ attemptStatuses: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2045
+ passed: "passed";
2046
+ failed: "failed";
2047
+ running: "running";
2048
+ "not-run": "not-run";
2049
+ }>>>;
2050
+ videos: z.ZodOptional<z.ZodArray<z.ZodObject<{
2051
+ name: z.ZodString;
2052
+ owner: z.ZodString;
2053
+ attempt: z.ZodOptional<z.ZodNumber>;
2054
+ step: z.ZodOptional<z.ZodString>;
2055
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
2056
+ recording: z.ZodOptional<z.ZodString>;
2057
+ available: z.ZodBoolean;
2058
+ scope: z.ZodOptional<z.ZodObject<{
2059
+ surface: z.ZodOptional<z.ZodString>;
2060
+ deviceKind: z.ZodOptional<z.ZodString>;
2061
+ syntheticData: z.ZodOptional<z.ZodBoolean>;
2062
+ dependencies: z.ZodOptional<z.ZodString>;
2063
+ audioCaptured: z.ZodOptional<z.ZodBoolean>;
2064
+ pacing: z.ZodOptional<z.ZodString>;
2065
+ asserted: z.ZodOptional<z.ZodArray<z.ZodString>>;
2066
+ limitations: z.ZodOptional<z.ZodArray<z.ZodString>>;
2067
+ declaredBy: z.ZodOptional<z.ZodString>;
2068
+ verified: z.ZodOptional<z.ZodArray<z.ZodString>>;
2069
+ verifiedBy: z.ZodOptional<z.ZodString>;
2070
+ provenance: z.ZodOptional<z.ZodArray<z.ZodObject<{
2071
+ url: z.ZodString;
2072
+ name: z.ZodOptional<z.ZodString>;
2073
+ rel: z.ZodOptional<z.ZodString>;
2074
+ }, z.core.$loose>>>;
2075
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2076
+ }, z.core.$loose>>;
2077
+ }, z.core.$loose>>>;
2078
+ }, z.core.$loose>;
2079
+ state: z.ZodEnum<{
2080
+ available: "available";
2081
+ unavailable: "unavailable";
2082
+ unverified: "unverified";
2083
+ }>;
2084
+ reason: z.ZodOptional<z.ZodString>;
2085
+ reviewed: z.ZodBoolean;
2086
+ files: z.ZodArray<z.ZodObject<{
2087
+ name: z.ZodString;
2088
+ safeName: z.ZodString;
2089
+ path: z.ZodString;
2090
+ recording: z.ZodOptional<z.ZodString>;
2091
+ sha256: z.ZodNullable<z.ZodString>;
2092
+ missing: z.ZodBoolean;
2093
+ }, z.core.$loose>>;
2094
+ }, z.core.$loose>>;
2095
+ gaps: z.ZodArray<z.ZodObject<{
2096
+ id: z.ZodString;
2097
+ note: z.ZodString;
2098
+ after: z.ZodNumber;
2099
+ }, z.core.$loose>>;
2100
+ missing: z.ZodArray<z.ZodObject<{
2101
+ entry: z.ZodString;
2102
+ reason: z.ZodString;
2103
+ }, z.core.$loose>>;
2104
+ notes: z.ZodString;
2105
+ }, z.core.$loose>;
1544
2106
  /** The data of the `hello` event: sent first on `/api/events`. */
1545
2107
  export declare const HelloEventSchema: z.ZodObject<{
1546
2108
  version: z.ZodString;
@@ -2757,6 +3319,12 @@ export declare const ArtifactResultSchema: z.ZodObject<{
2757
3319
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2758
3320
  }, z.core.$loose>>;
2759
3321
  }, z.core.$loose>>>;
3322
+ attemptStatuses: z.ZodOptional<z.ZodArray<z.ZodEnum<{
3323
+ passed: "passed";
3324
+ failed: "failed";
3325
+ running: "running";
3326
+ "not-run": "not-run";
3327
+ }>>>;
2760
3328
  }, z.core.$loose>;
2761
3329
  /** `GET /api/reports/artifacts`: recorded results that carry evidence, newest first, with the facets of the query. */
2762
3330
  export declare const ArtifactListSchema: z.ZodObject<{
@@ -2821,6 +3389,12 @@ export declare const ArtifactListSchema: z.ZodObject<{
2821
3389
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2822
3390
  }, z.core.$loose>>;
2823
3391
  }, z.core.$loose>>>;
3392
+ attemptStatuses: z.ZodOptional<z.ZodArray<z.ZodEnum<{
3393
+ passed: "passed";
3394
+ failed: "failed";
3395
+ running: "running";
3396
+ "not-run": "not-run";
3397
+ }>>>;
2824
3398
  }, z.core.$loose>>;
2825
3399
  filters: z.ZodArray<z.ZodString>;
2826
3400
  facets: z.ZodObject<{