@crvouga/atlas 0.4.0 → 0.5.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 (379) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/README.md +178 -617
  3. package/dist/bun/src/driver.d.ts +41 -7
  4. package/dist/bun/src/driver.js +47 -6
  5. package/dist/bun/src/index.d.ts +8 -0
  6. package/dist/bun/src/index.js +8 -0
  7. package/dist/core/src/cli.d.ts +14 -1
  8. package/dist/core/src/cli.js +30 -1
  9. package/dist/core/src/config.d.ts +70 -4
  10. package/dist/core/src/config.js +62 -3
  11. package/dist/core/src/events/cloudevents.d.ts +54 -9
  12. package/dist/core/src/events/cloudevents.js +60 -9
  13. package/dist/core/src/graph.d.ts +21 -0
  14. package/dist/core/src/graph.js +26 -0
  15. package/dist/core/src/index.d.ts +11 -0
  16. package/dist/core/src/index.js +11 -0
  17. package/dist/core/src/lint.d.ts +30 -0
  18. package/dist/core/src/lint.js +13 -0
  19. package/dist/core/src/plan.d.ts +39 -1
  20. package/dist/core/src/plan.js +28 -1
  21. package/dist/core/src/privacy.d.ts +29 -2
  22. package/dist/core/src/privacy.js +19 -2
  23. package/dist/core/src/report/formats.d.ts +34 -4
  24. package/dist/core/src/report/formats.js +24 -4
  25. package/dist/core/src/report/markdown.d.ts +15 -0
  26. package/dist/core/src/report/markdown.js +8 -0
  27. package/dist/core/src/run/clients.d.ts +44 -5
  28. package/dist/core/src/run/clients.js +46 -2
  29. package/dist/core/src/run/execute.d.ts +69 -16
  30. package/dist/core/src/run/execute.js +67 -16
  31. package/dist/core/src/run/frames.d.ts +13 -4
  32. package/dist/core/src/run/frames.js +19 -4
  33. package/dist/core/src/run/http.d.ts +34 -1
  34. package/dist/core/src/run/http.js +14 -1
  35. package/dist/core/src/run/types.d.ts +76 -3
  36. package/dist/core/src/run/types.js +19 -3
  37. package/dist/core/src/signals.d.ts +49 -5
  38. package/dist/core/src/signals.js +22 -5
  39. package/dist/core/src/spec/compose.d.ts +23 -1
  40. package/dist/core/src/spec/compose.js +10 -1
  41. package/dist/core/src/spec/index.d.ts +9 -1
  42. package/dist/core/src/spec/index.js +9 -1
  43. package/dist/core/src/spec/load.d.ts +22 -1
  44. package/dist/core/src/spec/load.js +31 -1
  45. package/dist/core/src/spec/parse.d.ts +16 -2
  46. package/dist/core/src/spec/parse.js +25 -2
  47. package/dist/core/src/spec/scxml.d.ts +25 -4
  48. package/dist/core/src/spec/scxml.js +36 -4
  49. package/dist/core/src/spec/types.d.ts +52 -1
  50. package/dist/core/src/spec/types.js +24 -0
  51. package/dist/detox/src/index.d.ts +54 -11
  52. package/dist/detox/src/index.js +45 -7
  53. package/dist/playwright/src/driver.d.ts +39 -3
  54. package/dist/playwright/src/driver.js +27 -3
  55. package/dist/playwright/src/index.d.ts +10 -0
  56. package/dist/playwright/src/index.js +10 -0
  57. package/dist/playwright/src/media.d.ts +50 -4
  58. package/dist/playwright/src/media.js +55 -4
  59. package/dist/playwright/src/signals.d.ts +44 -5
  60. package/dist/playwright/src/signals.js +29 -5
  61. package/dist/reports/src/attachment-files.d.ts +44 -0
  62. package/dist/reports/src/attachment-files.js +121 -0
  63. package/dist/reports/src/attachment-response.d.ts +31 -0
  64. package/dist/reports/src/attachment-response.js +55 -0
  65. package/dist/reports/src/aws-credentials.d.ts +48 -0
  66. package/dist/reports/src/aws-credentials.js +221 -0
  67. package/dist/reports/src/browser-navigation.d.ts +14 -0
  68. package/dist/reports/src/browser-navigation.js +7 -0
  69. package/dist/reports/src/bundle.d.ts +34 -2
  70. package/dist/reports/src/bundle.js +38 -2
  71. package/dist/reports/src/catalog.d.ts +34 -3
  72. package/dist/reports/src/catalog.js +17 -3
  73. package/dist/reports/src/cli-stores.d.ts +36 -0
  74. package/dist/reports/src/cli-stores.js +73 -0
  75. package/dist/reports/src/clock.d.ts +7 -2
  76. package/dist/reports/src/clock.js +5 -2
  77. package/dist/reports/src/completion-order.d.ts +18 -5
  78. package/dist/reports/src/completion-order.js +18 -5
  79. package/dist/reports/src/compose.d.ts +80 -0
  80. package/dist/reports/src/compose.js +117 -0
  81. package/dist/reports/src/copy-store.d.ts +29 -0
  82. package/dist/reports/src/copy-store.js +52 -0
  83. package/dist/reports/src/directory-outline.d.ts +38 -0
  84. package/dist/reports/src/directory-outline.js +103 -0
  85. package/dist/reports/src/directory-store.d.ts +20 -0
  86. package/dist/reports/src/directory-store.js +166 -0
  87. package/dist/reports/src/doctor.d.ts +29 -0
  88. package/dist/reports/src/doctor.js +83 -0
  89. package/dist/reports/src/effective-delta.d.ts +34 -0
  90. package/dist/reports/src/effective-delta.js +25 -0
  91. package/dist/reports/src/evidence-detail.d.ts +64 -0
  92. package/dist/reports/src/evidence-detail.js +92 -0
  93. package/dist/reports/src/evidence-live.d.ts +35 -5
  94. package/dist/reports/src/evidence-live.js +18 -2
  95. package/dist/reports/src/evidence-types.d.ts +68 -1
  96. package/dist/reports/src/evidence-types.js +5 -1
  97. package/dist/reports/src/evidence-view.d.ts +43 -4
  98. package/dist/reports/src/evidence-view.js +13 -2
  99. package/dist/reports/src/explorer-types.d.ts +40 -3
  100. package/dist/reports/src/explorer-types.js +8 -0
  101. package/dist/reports/src/explorer-versions.d.ts +9 -1
  102. package/dist/reports/src/explorer-versions.js +18 -1
  103. package/dist/reports/src/export-evidence.d.ts +16 -1
  104. package/dist/reports/src/export-evidence.js +52 -1
  105. package/dist/reports/src/fetcher.d.ts +27 -3
  106. package/dist/reports/src/fetcher.js +11 -3
  107. package/dist/reports/src/format-date.d.ts +6 -0
  108. package/dist/reports/src/format-date.js +6 -0
  109. package/dist/reports/src/format.d.ts +16 -0
  110. package/dist/reports/src/format.js +10 -0
  111. package/dist/reports/src/frames.d.ts +36 -3
  112. package/dist/reports/src/frames.js +22 -3
  113. package/dist/reports/src/hash.d.ts +18 -0
  114. package/dist/reports/src/hash.js +13 -0
  115. package/dist/reports/src/host.d.ts +29 -0
  116. package/dist/reports/src/host.js +64 -0
  117. package/dist/reports/src/html-frame.d.ts +5 -6
  118. package/dist/reports/src/html-frame.js +12 -1
  119. package/dist/reports/src/http-store.d.ts +52 -0
  120. package/dist/reports/src/http-store.js +145 -0
  121. package/dist/reports/src/http.d.ts +7 -0
  122. package/dist/reports/src/http.js +6 -0
  123. package/dist/reports/src/ingest.d.ts +54 -0
  124. package/dist/reports/src/ingest.js +210 -0
  125. package/dist/reports/src/init.d.ts +40 -0
  126. package/dist/reports/src/init.js +364 -0
  127. package/dist/reports/src/junit.d.ts +33 -6
  128. package/dist/reports/src/junit.js +87 -21
  129. package/dist/reports/src/keyboard.d.ts +20 -0
  130. package/dist/reports/src/keyboard.js +11 -0
  131. package/dist/reports/src/keys.d.ts +21 -3
  132. package/dist/reports/src/keys.js +21 -3
  133. package/dist/reports/src/layer-axes.d.ts +35 -5
  134. package/dist/reports/src/layer-axes.js +25 -5
  135. package/dist/reports/src/layer-catalog.d.ts +28 -1
  136. package/dist/reports/src/layer-catalog.js +18 -1
  137. package/dist/reports/src/layer-merge.d.ts +98 -9
  138. package/dist/reports/src/layer-merge.js +147 -31
  139. package/dist/reports/src/layer-source.d.ts +18 -0
  140. package/dist/reports/src/layer-source.js +11 -0
  141. package/dist/reports/src/layer-store.d.ts +42 -0
  142. package/dist/reports/src/layer-store.js +63 -5
  143. package/dist/reports/src/layer-types.d.ts +32 -1
  144. package/dist/reports/src/layers-route.d.ts +47 -4
  145. package/dist/reports/src/layers-route.js +86 -7
  146. package/dist/reports/src/media-types.d.ts +11 -0
  147. package/dist/reports/src/media-types.js +22 -0
  148. package/dist/reports/src/namespace-guard.d.ts +10 -1
  149. package/dist/reports/src/namespace-guard.js +10 -1
  150. package/dist/reports/src/navigation.d.ts +12 -0
  151. package/dist/reports/src/navigation.js +7 -0
  152. package/dist/reports/src/object-io.d.ts +11 -4
  153. package/dist/reports/src/object-io.js +4 -4
  154. package/dist/reports/src/object-store-conformance.d.ts +27 -0
  155. package/dist/reports/src/object-store-conformance.js +87 -0
  156. package/dist/reports/src/object-store.d.ts +33 -24
  157. package/dist/reports/src/object-store.js +17 -24
  158. package/dist/reports/src/parse-with.d.ts +16 -0
  159. package/dist/reports/src/parse-with.js +14 -0
  160. package/dist/reports/src/performance-part.d.ts +25 -1
  161. package/dist/reports/src/performance-part.js +15 -1
  162. package/dist/reports/src/performance.d.ts +22 -2
  163. package/dist/reports/src/performance.js +12 -2
  164. package/dist/reports/src/persist.d.ts +12 -3
  165. package/dist/reports/src/persist.js +12 -3
  166. package/dist/reports/src/phone.d.ts +18 -1
  167. package/dist/reports/src/phone.js +18 -1
  168. package/dist/reports/src/protocol.d.ts +26 -4
  169. package/dist/reports/src/protocol.js +15 -4
  170. package/dist/reports/src/publication.d.ts +21 -1
  171. package/dist/reports/src/publication.js +21 -1
  172. package/dist/reports/src/publish-checks.d.ts +35 -0
  173. package/dist/reports/src/publish-checks.js +122 -0
  174. package/dist/reports/src/publish.d.ts +42 -9
  175. package/dist/reports/src/publish.js +36 -7
  176. package/dist/reports/src/read.d.ts +46 -16
  177. package/dist/reports/src/read.js +38 -14
  178. package/dist/reports/src/recording-bundle.d.ts +13 -2
  179. package/dist/reports/src/recording-bundle.js +4 -2
  180. package/dist/reports/src/recording-keys.d.ts +15 -1
  181. package/dist/reports/src/recording-keys.js +15 -1
  182. package/dist/reports/src/remote-report.d.ts +28 -7
  183. package/dist/reports/src/remote-report.js +15 -7
  184. package/dist/reports/src/report-cli.d.ts +51 -0
  185. package/dist/reports/src/report-cli.js +485 -0
  186. package/dist/reports/src/report-index.d.ts +99 -0
  187. package/dist/reports/src/report-index.js +337 -0
  188. package/dist/reports/src/report-loader.d.ts +10 -0
  189. package/dist/reports/src/report-loader.js +6 -0
  190. package/dist/reports/src/report-parts.d.ts +29 -3
  191. package/dist/reports/src/report-parts.js +37 -3
  192. package/dist/reports/src/report-status.d.ts +48 -0
  193. package/dist/reports/src/report-status.js +156 -0
  194. package/dist/reports/src/report-types.d.ts +73 -0
  195. package/dist/reports/src/report-types.js +3 -0
  196. package/dist/reports/src/reporter.d.ts +67 -0
  197. package/dist/reports/src/reporter.js +128 -0
  198. package/dist/reports/src/reports-explorer-route.d.ts +541 -0
  199. package/dist/reports/src/reports-explorer-route.js +11 -0
  200. package/dist/reports/src/reports-list-route.d.ts +9 -0
  201. package/dist/reports/src/reports-list-route.js +9 -0
  202. package/dist/reports/src/reports-route.d.ts +561 -22
  203. package/dist/reports/src/reports-route.js +11 -3
  204. package/dist/reports/src/reports-store.d.ts +19 -2
  205. package/dist/reports/src/reports-store.js +10 -2
  206. package/dist/reports/src/resilient-cache.d.ts +14 -1
  207. package/dist/reports/src/resilient-cache.js +8 -1
  208. package/dist/reports/src/retention.d.ts +17 -1
  209. package/dist/reports/src/retention.js +5 -1
  210. package/dist/reports/src/run-bundle.d.ts +63 -0
  211. package/dist/reports/src/run-bundle.js +159 -0
  212. package/dist/reports/src/s3-store.d.ts +79 -0
  213. package/dist/reports/src/s3-store.js +295 -0
  214. package/dist/reports/src/scenario.d.ts +14 -4
  215. package/dist/reports/src/scenario.js +5 -4
  216. package/dist/reports/src/sigv4.d.ts +72 -0
  217. package/dist/reports/src/sigv4.js +96 -0
  218. package/dist/reports/src/snapshot-bundle.d.ts +24 -1
  219. package/dist/reports/src/snapshot-bundle.js +27 -2
  220. package/dist/reports/src/snapshot-surface.d.ts +20 -9
  221. package/dist/reports/src/snapshot-surface.js +32 -19
  222. package/dist/reports/src/source-content.d.ts +23 -0
  223. package/dist/reports/src/source-content.js +30 -1
  224. package/dist/reports/src/source-entries.d.ts +13 -0
  225. package/dist/reports/src/source-entries.js +6 -0
  226. package/dist/reports/src/source-part.d.ts +15 -0
  227. package/dist/reports/src/source-part.js +8 -0
  228. package/dist/reports/src/source-reader.d.ts +11 -0
  229. package/dist/reports/src/source-reader.js +5 -0
  230. package/dist/reports/src/spec-evidence.d.ts +12 -2
  231. package/dist/reports/src/spec-evidence.js +6 -2
  232. package/dist/reports/src/spec-inventory.d.ts +15 -1
  233. package/dist/reports/src/spec-inventory.js +22 -1
  234. package/dist/reports/src/spec-link.d.ts +28 -0
  235. package/dist/reports/src/spec-link.js +70 -0
  236. package/dist/reports/src/spec-set.d.ts +63 -0
  237. package/dist/reports/src/spec-set.js +177 -0
  238. package/dist/reports/src/status.d.ts +10 -0
  239. package/dist/reports/src/status.js +5 -0
  240. package/dist/reports/src/store-prefix.d.ts +28 -0
  241. package/dist/reports/src/store-prefix.js +22 -0
  242. package/dist/reports/src/store-url.d.ts +89 -0
  243. package/dist/reports/src/store-url.js +160 -0
  244. package/dist/reports/src/test-catalog-entity.d.ts +11 -0
  245. package/dist/reports/src/test-catalog-entity.js +6 -0
  246. package/dist/reports/src/types.d.ts +6 -1
  247. package/dist/reports/src/use-report-nav.d.ts +35 -0
  248. package/dist/reports/src/use-report-nav.js +12 -0
  249. package/dist/schema/src/api.d.ts +799 -0
  250. package/dist/schema/src/api.js +201 -0
  251. package/dist/schema/src/cli-results.d.ts +210 -0
  252. package/dist/schema/src/cli-results.js +124 -0
  253. package/dist/schema/src/common.d.ts +53 -0
  254. package/dist/schema/src/common.js +42 -0
  255. package/dist/schema/src/index.d.ts +14 -0
  256. package/dist/schema/src/index.js +14 -0
  257. package/dist/schema/src/layer.d.ts +2273 -0
  258. package/dist/schema/src/layer.js +462 -0
  259. package/dist/schema/src/manifest.d.ts +95 -0
  260. package/dist/schema/src/manifest.js +84 -0
  261. package/dist/schema/src/report-sources.d.ts +28 -0
  262. package/dist/schema/src/report-sources.js +25 -0
  263. package/dist/schema/src/runs-index.d.ts +16 -0
  264. package/dist/schema/src/runs-index.js +15 -0
  265. package/dist/schema/src/server-config.d.ts +93 -0
  266. package/dist/schema/src/server-config.js +73 -0
  267. package/dist/schema/src/spec.d.ts +69 -0
  268. package/dist/schema/src/spec.js +58 -0
  269. package/dist/server/src/app.d.ts +62 -0
  270. package/dist/server/src/app.js +419 -0
  271. package/dist/server/src/auth.d.ts +41 -0
  272. package/dist/server/src/auth.js +59 -0
  273. package/dist/server/src/config.d.ts +83 -0
  274. package/dist/server/src/config.js +187 -0
  275. package/dist/server/src/dev.d.ts +12 -0
  276. package/dist/server/src/dev.js +80 -0
  277. package/dist/server/src/events.d.ts +29 -0
  278. package/dist/server/src/events.js +101 -0
  279. package/dist/server/src/host.d.ts +30 -0
  280. package/dist/server/src/host.js +115 -0
  281. package/dist/server/src/index.d.ts +16 -0
  282. package/dist/server/src/index.js +16 -0
  283. package/dist/server/src/llms.d.ts +19 -0
  284. package/dist/server/src/llms.js +63 -0
  285. package/dist/server/src/main.d.ts +30 -0
  286. package/dist/server/src/main.js +112 -0
  287. package/dist/server/src/openapi.d.ts +59 -0
  288. package/dist/server/src/openapi.js +374 -0
  289. package/dist/server/src/problem.d.ts +8 -0
  290. package/dist/server/src/problem.js +39 -0
  291. package/dist/server/src/site.d.ts +13 -0
  292. package/dist/server/src/site.js +43 -0
  293. package/dist/server/src/store-api.d.ts +28 -0
  294. package/dist/server/src/store-api.js +159 -0
  295. package/dist/server/src/validate.d.ts +71 -0
  296. package/dist/server/src/validate.js +197 -0
  297. package/dist/vitest/src/index.d.ts +27 -5
  298. package/dist/vitest/src/index.js +18 -5
  299. package/dist/webdriver/src/driver.d.ts +63 -11
  300. package/dist/webdriver/src/driver.js +57 -6
  301. package/dist/webdriver/src/index.d.ts +8 -0
  302. package/dist/webdriver/src/index.js +1 -0
  303. package/dist/webdriver/src/protocol.d.ts +75 -6
  304. package/dist/webdriver/src/protocol.js +79 -6
  305. package/docs/agents.md +137 -0
  306. package/docs/deploying.md +345 -0
  307. package/docs/dogfooding.md +175 -0
  308. package/docs/extending.md +242 -0
  309. package/docs/integrating.md +485 -0
  310. package/docs/reference/bun.md +141 -0
  311. package/docs/reference/cli.md +146 -0
  312. package/docs/reference/core.md +2426 -0
  313. package/docs/reference/detox.md +150 -0
  314. package/docs/reference/http-api.md +303 -0
  315. package/docs/reference/playwright.md +303 -0
  316. package/docs/reference/reports.md +7098 -0
  317. package/docs/reference/schema.md +1651 -0
  318. package/docs/reference/server.md +685 -0
  319. package/docs/reference/vitest.md +45 -0
  320. package/docs/reference/webdriver.md +330 -0
  321. package/docs/report-backends.md +144 -0
  322. package/docs/report-contract.md +400 -0
  323. package/docs/reporting-issues.md +160 -0
  324. package/docs/server.md +285 -0
  325. package/docs/statecharts.md +641 -0
  326. package/llms-full.txt +3506 -0
  327. package/llms.txt +47 -0
  328. package/package.json +32 -4
  329. package/packages/core/README.md +2 -1
  330. package/packages/reports/README.md +65 -0
  331. package/packages/reports/STORAGE.md +4 -0
  332. package/packages/schema/README.md +14 -0
  333. package/packages/schema/schemas/check-detail.schema.json +1032 -0
  334. package/packages/schema/schemas/checks-result.schema.json +26 -0
  335. package/packages/schema/schemas/command-error.schema.json +35 -0
  336. package/packages/schema/schemas/doctor-result.schema.json +60 -0
  337. package/packages/schema/schemas/effective-delta.schema.json +490 -0
  338. package/packages/schema/schemas/effective-evidence.schema.json +471 -0
  339. package/packages/schema/schemas/evidence-page.schema.json +271 -0
  340. package/packages/schema/schemas/hello-event.schema.json +22 -0
  341. package/packages/schema/schemas/init-plan.schema.json +347 -0
  342. package/packages/schema/schemas/layer-rows.schema.json +199 -0
  343. package/packages/schema/schemas/layer.schema.json +2888 -0
  344. package/packages/schema/schemas/merge-result.schema.json +40 -0
  345. package/packages/schema/schemas/outline.schema.json +62 -0
  346. package/packages/schema/schemas/problem.schema.json +37 -0
  347. package/packages/schema/schemas/publish-checks.schema.json +1413 -0
  348. package/packages/schema/schemas/publish-result.schema.json +168 -0
  349. package/packages/schema/schemas/ready.schema.json +68 -0
  350. package/packages/schema/schemas/report-event.schema.json +100 -0
  351. package/packages/schema/schemas/report-status.schema.json +370 -0
  352. package/packages/schema/schemas/server-config.schema.json +194 -0
  353. package/packages/schema/schemas/server-info.schema.json +114 -0
  354. package/packages/schema/schemas/spec-set.schema.json +103 -0
  355. package/packages/schema/schemas/store-listing.schema.json +29 -0
  356. package/packages/schema/schemas/store-write-result.schema.json +28 -0
  357. package/packages/schema/schemas/stream-result.schema.json +59 -0
  358. package/packages/server/README.md +43 -0
  359. package/packages/server/openapi.json +6699 -0
  360. package/packages/visualizer/README.md +21 -0
  361. package/packages/visualizer/src/app/AppShell.tsx +9 -2
  362. package/packages/visualizer/src/app/report-sources.tsx +6 -4
  363. package/packages/visualizer/src/app/router.tsx +3 -3
  364. package/packages/visualizer/src/components/Header.module.css +35 -0
  365. package/packages/visualizer/src/components/Header.tsx +40 -3
  366. package/packages/visualizer/src/data/adapters/adapter.ts +5 -17
  367. package/packages/visualizer/src/data/adapters/index.ts +10 -1
  368. package/packages/visualizer/src/evidence/api.ts +14 -2
  369. package/packages/visualizer/src/evidence/artifacts.module.css +213 -0
  370. package/packages/visualizer/src/evidence/artifacts.tsx +272 -0
  371. package/packages/visualizer/src/evidence/check-detail.tsx +3 -1
  372. package/packages/visualizer/src/evidence/evidence-context.tsx +74 -12
  373. package/packages/visualizer/src/evidence/spec-page.tsx +23 -16
  374. package/packages/visualizer/src/find/Finder.tsx +1 -7
  375. package/packages/visualizer/src/find/open.ts +4 -0
  376. package/packages/visualizer/src/live/live-stream.ts +204 -0
  377. package/packages/visualizer/src/runtime.ts +19 -0
  378. package/packages/visualizer/vite/atlas-server-proxy.ts +36 -0
  379. package/packages/visualizer/vite.config.ts +11 -3
@@ -1,8 +1,28 @@
1
+ /**
2
+ * @module Explorer routes
3
+ *
4
+ * Two read-only routes that give the explorer one commit's spec inventory, latest evidence parts and spec text, drawn
5
+ * from the checkout (when the commit is the one checked out), this machine's store and the shared store. A shared store
6
+ * that cannot be read degrades to a notice when anything local is available.
7
+ */
1
8
  import type { WorkspaceReports } from './explorer-types.js';
2
9
  import type { ReportsStores } from './reports-store.js';
10
+ /** The stores plus an optional provider of the current checkout. */
3
11
  export type ReportsExplorerDeps = ReportsStores & {
12
+ /** The checkout the host is serving. Only composition roots provide it; its content is never CI evidence. */
4
13
  readonly workspace?: () => Promise<WorkspaceReports>;
5
14
  };
15
+ /**
16
+ * Builds the Hono app for `GET /:sha/explorer` and `GET /:sha/spec`.
17
+ *
18
+ * `/:sha/explorer` answers `{ inventory, parts, notice? }` for a 40-hex sha. The inventory is the checkout's when `sha`
19
+ * is the workspace's, else the local store's, else the shared store's. The parts are the shared store's followed by the
20
+ * checkout's (or the local store's), reduced to the latest part per producer. If the shared store fails but something
21
+ * local exists, it answers with a `notice`; with nothing local it throws. 404 for a
22
+ * bad sha, 503 `reports_unavailable` when there is no shared store and nothing local. `/:sha/spec?path=` answers a
23
+ * spec's text (`text/plain`) from the workspace, else the local store, else the shared store, or 404 for a bad sha,
24
+ * a path that is not a spec path, or a missing file. Both are `no-store`.
25
+ */
6
26
  export declare function createReportsExplorerApp(deps: ReportsExplorerDeps): import("hono/hono-base").HonoBase<import("hono/types").BlankEnv, {
7
27
  "/:sha/explorer": {
8
28
  $get: {
@@ -46,6 +66,266 @@ export declare function createReportsExplorerApp(deps: ReportsExplorerDeps): imp
46
66
  }[];
47
67
  } | null;
48
68
  parts: readonly {
69
+ tags?: string[] | undefined;
70
+ attachments?: {
71
+ [x: string]: import("hono/utils/types").JSONValue;
72
+ name: string;
73
+ id?: string | undefined;
74
+ role?: string | undefined;
75
+ contentType?: string | undefined;
76
+ bundleKey?: string | undefined;
77
+ uri?: string | undefined;
78
+ text?: string | undefined;
79
+ bytes?: number | undefined;
80
+ sha256?: string | undefined;
81
+ width?: number | undefined;
82
+ height?: number | undefined;
83
+ durationMs?: number | undefined;
84
+ description?: string | undefined;
85
+ at?: {
86
+ [x: string]: import("hono/utils/types").JSONValue;
87
+ step?: string | undefined;
88
+ offsetMs?: number | undefined;
89
+ } | undefined;
90
+ poster?: string | undefined;
91
+ captions?: string[] | undefined;
92
+ extensions?: {
93
+ [x: string]: import("hono/utils/types").JSONValue;
94
+ } | undefined;
95
+ }[] | undefined;
96
+ attempts?: {
97
+ [x: string]: import("hono/utils/types").JSONValue;
98
+ index: number;
99
+ status: "passed" | "failed" | "running" | "not-run";
100
+ durationMs?: number | undefined;
101
+ startedAtMs?: number | undefined;
102
+ detail?: string | undefined;
103
+ steps?: {
104
+ [x: string]: import("hono/utils/types").JSONValue;
105
+ name: string;
106
+ id?: string | undefined;
107
+ parentId?: string | undefined;
108
+ kind?: string | undefined;
109
+ status?: string | undefined;
110
+ offsetMs?: number | undefined;
111
+ durationMs?: number | undefined;
112
+ detail?: string | undefined;
113
+ attachments?: {
114
+ [x: string]: import("hono/utils/types").JSONValue;
115
+ name: string;
116
+ id?: string | undefined;
117
+ role?: string | undefined;
118
+ contentType?: string | undefined;
119
+ bundleKey?: string | undefined;
120
+ uri?: string | undefined;
121
+ text?: string | undefined;
122
+ bytes?: number | undefined;
123
+ sha256?: string | undefined;
124
+ width?: number | undefined;
125
+ height?: number | undefined;
126
+ durationMs?: number | undefined;
127
+ description?: string | undefined;
128
+ at?: {
129
+ [x: string]: import("hono/utils/types").JSONValue;
130
+ step?: string | undefined;
131
+ offsetMs?: number | undefined;
132
+ } | undefined;
133
+ poster?: string | undefined;
134
+ captions?: string[] | undefined;
135
+ extensions?: {
136
+ [x: string]: import("hono/utils/types").JSONValue;
137
+ } | undefined;
138
+ }[] | undefined;
139
+ annotations?: {
140
+ [x: string]: import("hono/utils/types").JSONValue;
141
+ type: string;
142
+ message: string;
143
+ level?: string | undefined;
144
+ at?: {
145
+ [x: string]: import("hono/utils/types").JSONValue;
146
+ step?: string | undefined;
147
+ offsetMs?: number | undefined;
148
+ } | undefined;
149
+ source?: {
150
+ [x: string]: import("hono/utils/types").JSONValue;
151
+ file?: string | undefined;
152
+ line?: number | undefined;
153
+ column?: number | undefined;
154
+ } | undefined;
155
+ links?: {
156
+ [x: string]: import("hono/utils/types").JSONValue;
157
+ url: string;
158
+ name?: string | undefined;
159
+ rel?: string | undefined;
160
+ }[] | undefined;
161
+ extensions?: {
162
+ [x: string]: import("hono/utils/types").JSONValue;
163
+ } | undefined;
164
+ }[] | undefined;
165
+ extensions?: {
166
+ [x: string]: import("hono/utils/types").JSONValue;
167
+ } | undefined;
168
+ }[] | undefined;
169
+ attachments?: {
170
+ [x: string]: import("hono/utils/types").JSONValue;
171
+ name: string;
172
+ id?: string | undefined;
173
+ role?: string | undefined;
174
+ contentType?: string | undefined;
175
+ bundleKey?: string | undefined;
176
+ uri?: string | undefined;
177
+ text?: string | undefined;
178
+ bytes?: number | undefined;
179
+ sha256?: string | undefined;
180
+ width?: number | undefined;
181
+ height?: number | undefined;
182
+ durationMs?: number | undefined;
183
+ description?: string | undefined;
184
+ at?: {
185
+ [x: string]: import("hono/utils/types").JSONValue;
186
+ step?: string | undefined;
187
+ offsetMs?: number | undefined;
188
+ } | undefined;
189
+ poster?: string | undefined;
190
+ captions?: string[] | undefined;
191
+ extensions?: {
192
+ [x: string]: import("hono/utils/types").JSONValue;
193
+ } | undefined;
194
+ }[] | undefined;
195
+ annotations?: {
196
+ [x: string]: import("hono/utils/types").JSONValue;
197
+ type: string;
198
+ message: string;
199
+ level?: string | undefined;
200
+ at?: {
201
+ [x: string]: import("hono/utils/types").JSONValue;
202
+ step?: string | undefined;
203
+ offsetMs?: number | undefined;
204
+ } | undefined;
205
+ source?: {
206
+ [x: string]: import("hono/utils/types").JSONValue;
207
+ file?: string | undefined;
208
+ line?: number | undefined;
209
+ column?: number | undefined;
210
+ } | undefined;
211
+ links?: {
212
+ [x: string]: import("hono/utils/types").JSONValue;
213
+ url: string;
214
+ name?: string | undefined;
215
+ rel?: string | undefined;
216
+ }[] | undefined;
217
+ extensions?: {
218
+ [x: string]: import("hono/utils/types").JSONValue;
219
+ } | undefined;
220
+ }[] | undefined;
221
+ extensions?: {
222
+ [x: string]: import("hono/utils/types").JSONValue;
223
+ } | undefined;
224
+ }[] | undefined;
225
+ steps?: {
226
+ [x: string]: import("hono/utils/types").JSONValue;
227
+ name: string;
228
+ id?: string | undefined;
229
+ parentId?: string | undefined;
230
+ kind?: string | undefined;
231
+ status?: string | undefined;
232
+ offsetMs?: number | undefined;
233
+ durationMs?: number | undefined;
234
+ detail?: string | undefined;
235
+ attachments?: {
236
+ [x: string]: import("hono/utils/types").JSONValue;
237
+ name: string;
238
+ id?: string | undefined;
239
+ role?: string | undefined;
240
+ contentType?: string | undefined;
241
+ bundleKey?: string | undefined;
242
+ uri?: string | undefined;
243
+ text?: string | undefined;
244
+ bytes?: number | undefined;
245
+ sha256?: string | undefined;
246
+ width?: number | undefined;
247
+ height?: number | undefined;
248
+ durationMs?: number | undefined;
249
+ description?: string | undefined;
250
+ at?: {
251
+ [x: string]: import("hono/utils/types").JSONValue;
252
+ step?: string | undefined;
253
+ offsetMs?: number | undefined;
254
+ } | undefined;
255
+ poster?: string | undefined;
256
+ captions?: string[] | undefined;
257
+ extensions?: {
258
+ [x: string]: import("hono/utils/types").JSONValue;
259
+ } | undefined;
260
+ }[] | undefined;
261
+ annotations?: {
262
+ [x: string]: import("hono/utils/types").JSONValue;
263
+ type: string;
264
+ message: string;
265
+ level?: string | undefined;
266
+ at?: {
267
+ [x: string]: import("hono/utils/types").JSONValue;
268
+ step?: string | undefined;
269
+ offsetMs?: number | undefined;
270
+ } | undefined;
271
+ source?: {
272
+ [x: string]: import("hono/utils/types").JSONValue;
273
+ file?: string | undefined;
274
+ line?: number | undefined;
275
+ column?: number | undefined;
276
+ } | undefined;
277
+ links?: {
278
+ [x: string]: import("hono/utils/types").JSONValue;
279
+ url: string;
280
+ name?: string | undefined;
281
+ rel?: string | undefined;
282
+ }[] | undefined;
283
+ extensions?: {
284
+ [x: string]: import("hono/utils/types").JSONValue;
285
+ } | undefined;
286
+ }[] | undefined;
287
+ extensions?: {
288
+ [x: string]: import("hono/utils/types").JSONValue;
289
+ } | undefined;
290
+ }[] | undefined;
291
+ extensions?: {
292
+ [x: string]: import("hono/utils/types").JSONValue;
293
+ } | undefined;
294
+ links?: {
295
+ [x: string]: import("hono/utils/types").JSONValue;
296
+ url: string;
297
+ name?: string | undefined;
298
+ rel?: string | undefined;
299
+ }[] | undefined;
300
+ annotations?: {
301
+ [x: string]: import("hono/utils/types").JSONValue;
302
+ type: string;
303
+ message: string;
304
+ level?: string | undefined;
305
+ at?: {
306
+ [x: string]: import("hono/utils/types").JSONValue;
307
+ step?: string | undefined;
308
+ offsetMs?: number | undefined;
309
+ } | undefined;
310
+ source?: {
311
+ [x: string]: import("hono/utils/types").JSONValue;
312
+ file?: string | undefined;
313
+ line?: number | undefined;
314
+ column?: number | undefined;
315
+ } | undefined;
316
+ links?: {
317
+ [x: string]: import("hono/utils/types").JSONValue;
318
+ url: string;
319
+ name?: string | undefined;
320
+ rel?: string | undefined;
321
+ }[] | undefined;
322
+ extensions?: {
323
+ [x: string]: import("hono/utils/types").JSONValue;
324
+ } | undefined;
325
+ }[] | undefined;
326
+ labels?: {
327
+ [x: string]: string;
328
+ } | undefined;
49
329
  readonly freshness?: "unknown" | "modified" | undefined;
50
330
  readonly parameters?: {
51
331
  readonly [x: string]: string;
@@ -56,6 +336,266 @@ export declare function createReportsExplorerApp(deps: ReportsExplorerDeps): imp
56
336
  readonly title: string;
57
337
  readonly recordedAtMs: number;
58
338
  readonly checks: readonly {
339
+ tags?: string[] | undefined;
340
+ attachments?: {
341
+ [x: string]: import("hono/utils/types").JSONValue;
342
+ name: string;
343
+ id?: string | undefined;
344
+ role?: string | undefined;
345
+ contentType?: string | undefined;
346
+ bundleKey?: string | undefined;
347
+ uri?: string | undefined;
348
+ text?: string | undefined;
349
+ bytes?: number | undefined;
350
+ sha256?: string | undefined;
351
+ width?: number | undefined;
352
+ height?: number | undefined;
353
+ durationMs?: number | undefined;
354
+ description?: string | undefined;
355
+ at?: {
356
+ [x: string]: import("hono/utils/types").JSONValue;
357
+ step?: string | undefined;
358
+ offsetMs?: number | undefined;
359
+ } | undefined;
360
+ poster?: string | undefined;
361
+ captions?: string[] | undefined;
362
+ extensions?: {
363
+ [x: string]: import("hono/utils/types").JSONValue;
364
+ } | undefined;
365
+ }[] | undefined;
366
+ attempts?: {
367
+ [x: string]: import("hono/utils/types").JSONValue;
368
+ index: number;
369
+ status: "passed" | "failed" | "running" | "not-run";
370
+ durationMs?: number | undefined;
371
+ startedAtMs?: number | undefined;
372
+ detail?: string | undefined;
373
+ steps?: {
374
+ [x: string]: import("hono/utils/types").JSONValue;
375
+ name: string;
376
+ id?: string | undefined;
377
+ parentId?: string | undefined;
378
+ kind?: string | undefined;
379
+ status?: string | undefined;
380
+ offsetMs?: number | undefined;
381
+ durationMs?: number | undefined;
382
+ detail?: string | undefined;
383
+ attachments?: {
384
+ [x: string]: import("hono/utils/types").JSONValue;
385
+ name: string;
386
+ id?: string | undefined;
387
+ role?: string | undefined;
388
+ contentType?: string | undefined;
389
+ bundleKey?: string | undefined;
390
+ uri?: string | undefined;
391
+ text?: string | undefined;
392
+ bytes?: number | undefined;
393
+ sha256?: string | undefined;
394
+ width?: number | undefined;
395
+ height?: number | undefined;
396
+ durationMs?: number | undefined;
397
+ description?: string | undefined;
398
+ at?: {
399
+ [x: string]: import("hono/utils/types").JSONValue;
400
+ step?: string | undefined;
401
+ offsetMs?: number | undefined;
402
+ } | undefined;
403
+ poster?: string | undefined;
404
+ captions?: string[] | undefined;
405
+ extensions?: {
406
+ [x: string]: import("hono/utils/types").JSONValue;
407
+ } | undefined;
408
+ }[] | undefined;
409
+ annotations?: {
410
+ [x: string]: import("hono/utils/types").JSONValue;
411
+ type: string;
412
+ message: string;
413
+ level?: string | undefined;
414
+ at?: {
415
+ [x: string]: import("hono/utils/types").JSONValue;
416
+ step?: string | undefined;
417
+ offsetMs?: number | undefined;
418
+ } | undefined;
419
+ source?: {
420
+ [x: string]: import("hono/utils/types").JSONValue;
421
+ file?: string | undefined;
422
+ line?: number | undefined;
423
+ column?: number | undefined;
424
+ } | undefined;
425
+ links?: {
426
+ [x: string]: import("hono/utils/types").JSONValue;
427
+ url: string;
428
+ name?: string | undefined;
429
+ rel?: string | undefined;
430
+ }[] | undefined;
431
+ extensions?: {
432
+ [x: string]: import("hono/utils/types").JSONValue;
433
+ } | undefined;
434
+ }[] | undefined;
435
+ extensions?: {
436
+ [x: string]: import("hono/utils/types").JSONValue;
437
+ } | undefined;
438
+ }[] | undefined;
439
+ attachments?: {
440
+ [x: string]: import("hono/utils/types").JSONValue;
441
+ name: string;
442
+ id?: string | undefined;
443
+ role?: string | undefined;
444
+ contentType?: string | undefined;
445
+ bundleKey?: string | undefined;
446
+ uri?: string | undefined;
447
+ text?: string | undefined;
448
+ bytes?: number | undefined;
449
+ sha256?: string | undefined;
450
+ width?: number | undefined;
451
+ height?: number | undefined;
452
+ durationMs?: number | undefined;
453
+ description?: string | undefined;
454
+ at?: {
455
+ [x: string]: import("hono/utils/types").JSONValue;
456
+ step?: string | undefined;
457
+ offsetMs?: number | undefined;
458
+ } | undefined;
459
+ poster?: string | undefined;
460
+ captions?: string[] | undefined;
461
+ extensions?: {
462
+ [x: string]: import("hono/utils/types").JSONValue;
463
+ } | undefined;
464
+ }[] | undefined;
465
+ annotations?: {
466
+ [x: string]: import("hono/utils/types").JSONValue;
467
+ type: string;
468
+ message: string;
469
+ level?: string | undefined;
470
+ at?: {
471
+ [x: string]: import("hono/utils/types").JSONValue;
472
+ step?: string | undefined;
473
+ offsetMs?: number | undefined;
474
+ } | undefined;
475
+ source?: {
476
+ [x: string]: import("hono/utils/types").JSONValue;
477
+ file?: string | undefined;
478
+ line?: number | undefined;
479
+ column?: number | undefined;
480
+ } | undefined;
481
+ links?: {
482
+ [x: string]: import("hono/utils/types").JSONValue;
483
+ url: string;
484
+ name?: string | undefined;
485
+ rel?: string | undefined;
486
+ }[] | undefined;
487
+ extensions?: {
488
+ [x: string]: import("hono/utils/types").JSONValue;
489
+ } | undefined;
490
+ }[] | undefined;
491
+ extensions?: {
492
+ [x: string]: import("hono/utils/types").JSONValue;
493
+ } | undefined;
494
+ }[] | undefined;
495
+ steps?: {
496
+ [x: string]: import("hono/utils/types").JSONValue;
497
+ name: string;
498
+ id?: string | undefined;
499
+ parentId?: string | undefined;
500
+ kind?: string | undefined;
501
+ status?: string | undefined;
502
+ offsetMs?: number | undefined;
503
+ durationMs?: number | undefined;
504
+ detail?: string | undefined;
505
+ attachments?: {
506
+ [x: string]: import("hono/utils/types").JSONValue;
507
+ name: string;
508
+ id?: string | undefined;
509
+ role?: string | undefined;
510
+ contentType?: string | undefined;
511
+ bundleKey?: string | undefined;
512
+ uri?: string | undefined;
513
+ text?: string | undefined;
514
+ bytes?: number | undefined;
515
+ sha256?: string | undefined;
516
+ width?: number | undefined;
517
+ height?: number | undefined;
518
+ durationMs?: number | undefined;
519
+ description?: string | undefined;
520
+ at?: {
521
+ [x: string]: import("hono/utils/types").JSONValue;
522
+ step?: string | undefined;
523
+ offsetMs?: number | undefined;
524
+ } | undefined;
525
+ poster?: string | undefined;
526
+ captions?: string[] | undefined;
527
+ extensions?: {
528
+ [x: string]: import("hono/utils/types").JSONValue;
529
+ } | undefined;
530
+ }[] | undefined;
531
+ annotations?: {
532
+ [x: string]: import("hono/utils/types").JSONValue;
533
+ type: string;
534
+ message: string;
535
+ level?: string | undefined;
536
+ at?: {
537
+ [x: string]: import("hono/utils/types").JSONValue;
538
+ step?: string | undefined;
539
+ offsetMs?: number | undefined;
540
+ } | undefined;
541
+ source?: {
542
+ [x: string]: import("hono/utils/types").JSONValue;
543
+ file?: string | undefined;
544
+ line?: number | undefined;
545
+ column?: number | undefined;
546
+ } | undefined;
547
+ links?: {
548
+ [x: string]: import("hono/utils/types").JSONValue;
549
+ url: string;
550
+ name?: string | undefined;
551
+ rel?: string | undefined;
552
+ }[] | undefined;
553
+ extensions?: {
554
+ [x: string]: import("hono/utils/types").JSONValue;
555
+ } | undefined;
556
+ }[] | undefined;
557
+ extensions?: {
558
+ [x: string]: import("hono/utils/types").JSONValue;
559
+ } | undefined;
560
+ }[] | undefined;
561
+ extensions?: {
562
+ [x: string]: import("hono/utils/types").JSONValue;
563
+ } | undefined;
564
+ links?: {
565
+ [x: string]: import("hono/utils/types").JSONValue;
566
+ url: string;
567
+ name?: string | undefined;
568
+ rel?: string | undefined;
569
+ }[] | undefined;
570
+ annotations?: {
571
+ [x: string]: import("hono/utils/types").JSONValue;
572
+ type: string;
573
+ message: string;
574
+ level?: string | undefined;
575
+ at?: {
576
+ [x: string]: import("hono/utils/types").JSONValue;
577
+ step?: string | undefined;
578
+ offsetMs?: number | undefined;
579
+ } | undefined;
580
+ source?: {
581
+ [x: string]: import("hono/utils/types").JSONValue;
582
+ file?: string | undefined;
583
+ line?: number | undefined;
584
+ column?: number | undefined;
585
+ } | undefined;
586
+ links?: {
587
+ [x: string]: import("hono/utils/types").JSONValue;
588
+ url: string;
589
+ name?: string | undefined;
590
+ rel?: string | undefined;
591
+ }[] | undefined;
592
+ extensions?: {
593
+ [x: string]: import("hono/utils/types").JSONValue;
594
+ } | undefined;
595
+ }[] | undefined;
596
+ labels?: {
597
+ [x: string]: string;
598
+ } | undefined;
59
599
  readonly id: string;
60
600
  readonly title: string;
61
601
  readonly status: import('./explorer-types.js').EvidenceStatus;
@@ -67,6 +607,7 @@ export declare function createReportsExplorerApp(deps: ReportsExplorerDeps): imp
67
607
  readonly unit: string;
68
608
  readonly limit?: number | undefined;
69
609
  }[];
610
+ readonly durationMs?: number | undefined;
70
611
  }[];
71
612
  }[];
72
613
  };
@@ -3,6 +3,17 @@ import { latestParts, readParts, } from './report-parts.js';
3
3
  import { isSpecPath, readInventory, readSpecDocument, } from './spec-inventory.js';
4
4
  import { Hono } from 'hono';
5
5
  const NO_STORE = { 'cache-control': 'no-store' };
6
+ /**
7
+ * Builds the Hono app for `GET /:sha/explorer` and `GET /:sha/spec`.
8
+ *
9
+ * `/:sha/explorer` answers `{ inventory, parts, notice? }` for a 40-hex sha. The inventory is the checkout's when `sha`
10
+ * is the workspace's, else the local store's, else the shared store's. The parts are the shared store's followed by the
11
+ * checkout's (or the local store's), reduced to the latest part per producer. If the shared store fails but something
12
+ * local exists, it answers with a `notice`; with nothing local it throws. 404 for a
13
+ * bad sha, 503 `reports_unavailable` when there is no shared store and nothing local. `/:sha/spec?path=` answers a
14
+ * spec's text (`text/plain`) from the workspace, else the local store, else the shared store, or 404 for a bad sha,
15
+ * a path that is not a spec path, or a missing file. Both are `no-store`.
16
+ */
6
17
  export function createReportsExplorerApp(deps) {
7
18
  return new Hono()
8
19
  .get('/:sha/explorer', async (c) => {
@@ -1,5 +1,14 @@
1
1
  import type { Context } from 'hono';
2
2
  import type { ReportsExplorerDeps } from './reports-explorer-route.js';
3
+ /**
4
+ * Returns the handler for `GET /`: `{ commits, cursor, evidenceVersions?, workspace?, notice? }`.
5
+ *
6
+ * `commits` are the shared store's, 30 per page, continued with `?cursor=`. `evidenceVersions` (first page only) are
7
+ * the distinct versions found in the shared and local stores. 503 `reports_unavailable` when there is no shared
8
+ * store, no workspace and no local store. With no shared store it answers no commits and a notice; when listing the
9
+ * shared store throws and there is a workspace, it answers from the local store with a notice, otherwise the error
10
+ * propagates. Always `no-store`.
11
+ */
3
12
  export declare function reportsListRoute(deps: ReportsExplorerDeps): (c: Context) => Promise<(Response & import("hono").TypedResponse<{
4
13
  error: string;
5
14
  }, 503, "json">) | (Response & import("hono").TypedResponse<{
@@ -1,6 +1,15 @@
1
1
  import { listExplorerVersions } from './explorer-versions.js';
2
2
  import { listCommits } from './read.js';
3
3
  const NO_STORE = { 'cache-control': 'no-store' };
4
+ /**
5
+ * Returns the handler for `GET /`: `{ commits, cursor, evidenceVersions?, workspace?, notice? }`.
6
+ *
7
+ * `commits` are the shared store's, 30 per page, continued with `?cursor=`. `evidenceVersions` (first page only) are
8
+ * the distinct versions found in the shared and local stores. 503 `reports_unavailable` when there is no shared
9
+ * store, no workspace and no local store. With no shared store it answers no commits and a notice; when listing the
10
+ * shared store throws and there is a workspace, it answers from the local store with a notice, otherwise the error
11
+ * propagates. Always `no-store`.
12
+ */
4
13
  export function reportsListRoute(deps) {
5
14
  return async (c) => {
6
15
  const workspace = await deps.workspace?.();