@crvouga/atlas 0.3.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.
- package/CHANGELOG.md +12 -0
- package/README.md +178 -604
- package/dist/bun/src/driver.d.ts +41 -7
- package/dist/bun/src/driver.js +47 -6
- package/dist/bun/src/index.d.ts +8 -0
- package/dist/bun/src/index.js +8 -0
- package/dist/core/src/cli.d.ts +14 -1
- package/dist/core/src/cli.js +30 -1
- package/dist/core/src/config.d.ts +70 -4
- package/dist/core/src/config.js +62 -3
- package/dist/core/src/events/cloudevents.d.ts +54 -9
- package/dist/core/src/events/cloudevents.js +60 -9
- package/dist/core/src/graph.d.ts +21 -0
- package/dist/core/src/graph.js +26 -0
- package/dist/core/src/index.d.ts +11 -0
- package/dist/core/src/index.js +11 -0
- package/dist/core/src/lint.d.ts +30 -0
- package/dist/core/src/lint.js +13 -0
- package/dist/core/src/plan.d.ts +39 -1
- package/dist/core/src/plan.js +28 -1
- package/dist/core/src/privacy.d.ts +29 -2
- package/dist/core/src/privacy.js +19 -2
- package/dist/core/src/report/formats.d.ts +34 -4
- package/dist/core/src/report/formats.js +24 -4
- package/dist/core/src/report/markdown.d.ts +15 -0
- package/dist/core/src/report/markdown.js +8 -0
- package/dist/core/src/run/clients.d.ts +44 -5
- package/dist/core/src/run/clients.js +46 -2
- package/dist/core/src/run/execute.d.ts +69 -16
- package/dist/core/src/run/execute.js +67 -16
- package/dist/core/src/run/frames.d.ts +13 -4
- package/dist/core/src/run/frames.js +19 -4
- package/dist/core/src/run/http.d.ts +34 -1
- package/dist/core/src/run/http.js +14 -1
- package/dist/core/src/run/types.d.ts +76 -3
- package/dist/core/src/run/types.js +19 -3
- package/dist/core/src/signals.d.ts +49 -5
- package/dist/core/src/signals.js +22 -5
- package/dist/core/src/spec/compose.d.ts +23 -1
- package/dist/core/src/spec/compose.js +10 -1
- package/dist/core/src/spec/index.d.ts +9 -1
- package/dist/core/src/spec/index.js +9 -1
- package/dist/core/src/spec/load.d.ts +22 -1
- package/dist/core/src/spec/load.js +31 -1
- package/dist/core/src/spec/parse.d.ts +16 -2
- package/dist/core/src/spec/parse.js +25 -2
- package/dist/core/src/spec/scxml.d.ts +25 -4
- package/dist/core/src/spec/scxml.js +36 -4
- package/dist/core/src/spec/types.d.ts +52 -1
- package/dist/core/src/spec/types.js +24 -0
- package/dist/detox/src/index.d.ts +54 -11
- package/dist/detox/src/index.js +45 -7
- package/dist/playwright/src/driver.d.ts +39 -3
- package/dist/playwright/src/driver.js +27 -3
- package/dist/playwright/src/index.d.ts +10 -0
- package/dist/playwright/src/index.js +10 -0
- package/dist/playwright/src/media.d.ts +50 -4
- package/dist/playwright/src/media.js +55 -4
- package/dist/playwright/src/signals.d.ts +44 -5
- package/dist/playwright/src/signals.js +29 -5
- package/dist/reports/src/attachment-files.d.ts +44 -0
- package/dist/reports/src/attachment-files.js +121 -0
- package/dist/reports/src/attachment-response.d.ts +31 -0
- package/dist/reports/src/attachment-response.js +55 -0
- package/dist/reports/src/aws-credentials.d.ts +48 -0
- package/dist/reports/src/aws-credentials.js +221 -0
- package/dist/reports/src/browser-navigation.d.ts +14 -0
- package/dist/reports/src/browser-navigation.js +7 -0
- package/dist/reports/src/bundle.d.ts +34 -2
- package/dist/reports/src/bundle.js +38 -2
- package/dist/reports/src/catalog.d.ts +34 -3
- package/dist/reports/src/catalog.js +17 -3
- package/dist/reports/src/cli-stores.d.ts +36 -0
- package/dist/reports/src/cli-stores.js +73 -0
- package/dist/reports/src/clock.d.ts +7 -2
- package/dist/reports/src/clock.js +5 -2
- package/dist/reports/src/completion-order.d.ts +18 -5
- package/dist/reports/src/completion-order.js +18 -5
- package/dist/reports/src/compose.d.ts +80 -0
- package/dist/reports/src/compose.js +117 -0
- package/dist/reports/src/copy-store.d.ts +29 -0
- package/dist/reports/src/copy-store.js +52 -0
- package/dist/reports/src/directory-outline.d.ts +38 -0
- package/dist/reports/src/directory-outline.js +103 -0
- package/dist/reports/src/directory-store.d.ts +20 -0
- package/dist/reports/src/directory-store.js +166 -0
- package/dist/reports/src/doctor.d.ts +29 -0
- package/dist/reports/src/doctor.js +83 -0
- package/dist/reports/src/effective-delta.d.ts +34 -0
- package/dist/reports/src/effective-delta.js +25 -0
- package/dist/reports/src/evidence-detail.d.ts +64 -0
- package/dist/reports/src/evidence-detail.js +92 -0
- package/dist/reports/src/evidence-live.d.ts +40 -4
- package/dist/reports/src/evidence-live.js +52 -4
- package/dist/reports/src/evidence-types.d.ts +70 -1
- package/dist/reports/src/evidence-types.js +5 -1
- package/dist/reports/src/evidence-view.d.ts +58 -6
- package/dist/reports/src/evidence-view.js +44 -5
- package/dist/reports/src/explorer-types.d.ts +40 -3
- package/dist/reports/src/explorer-types.js +8 -0
- package/dist/reports/src/explorer-versions.d.ts +9 -1
- package/dist/reports/src/explorer-versions.js +18 -1
- package/dist/reports/src/export-evidence.d.ts +16 -1
- package/dist/reports/src/export-evidence.js +52 -1
- package/dist/reports/src/fetcher.d.ts +27 -3
- package/dist/reports/src/fetcher.js +11 -3
- package/dist/reports/src/format-date.d.ts +6 -0
- package/dist/reports/src/format-date.js +6 -0
- package/dist/reports/src/format.d.ts +16 -0
- package/dist/reports/src/format.js +10 -0
- package/dist/reports/src/frames.d.ts +36 -3
- package/dist/reports/src/frames.js +22 -3
- package/dist/reports/src/hash.d.ts +18 -0
- package/dist/reports/src/hash.js +13 -0
- package/dist/reports/src/host.d.ts +29 -0
- package/dist/reports/src/host.js +64 -0
- package/dist/reports/src/html-frame.d.ts +5 -6
- package/dist/reports/src/html-frame.js +12 -1
- package/dist/reports/src/http-store.d.ts +52 -0
- package/dist/reports/src/http-store.js +145 -0
- package/dist/reports/src/http.d.ts +7 -0
- package/dist/reports/src/http.js +6 -0
- package/dist/reports/src/ingest.d.ts +54 -0
- package/dist/reports/src/ingest.js +210 -0
- package/dist/reports/src/init.d.ts +40 -0
- package/dist/reports/src/init.js +364 -0
- package/dist/reports/src/junit.d.ts +33 -6
- package/dist/reports/src/junit.js +87 -21
- package/dist/reports/src/keyboard.d.ts +20 -0
- package/dist/reports/src/keyboard.js +11 -0
- package/dist/reports/src/keys.d.ts +21 -3
- package/dist/reports/src/keys.js +21 -3
- package/dist/reports/src/layer-axes.d.ts +48 -0
- package/dist/reports/src/layer-axes.js +71 -0
- package/dist/reports/src/layer-catalog.d.ts +28 -1
- package/dist/reports/src/layer-catalog.js +19 -2
- package/dist/reports/src/layer-merge.d.ts +98 -9
- package/dist/reports/src/layer-merge.js +154 -33
- package/dist/reports/src/layer-source.d.ts +18 -0
- package/dist/reports/src/layer-source.js +14 -0
- package/dist/reports/src/layer-store.d.ts +42 -0
- package/dist/reports/src/layer-store.js +63 -5
- package/dist/reports/src/layer-types.d.ts +34 -1
- package/dist/reports/src/layers-route.d.ts +47 -4
- package/dist/reports/src/layers-route.js +88 -12
- package/dist/reports/src/media-types.d.ts +11 -0
- package/dist/reports/src/media-types.js +22 -0
- package/dist/reports/src/namespace-guard.d.ts +10 -1
- package/dist/reports/src/namespace-guard.js +10 -1
- package/dist/reports/src/navigation.d.ts +12 -0
- package/dist/reports/src/navigation.js +7 -0
- package/dist/reports/src/object-io.d.ts +11 -4
- package/dist/reports/src/object-io.js +4 -4
- package/dist/reports/src/object-store-conformance.d.ts +27 -0
- package/dist/reports/src/object-store-conformance.js +87 -0
- package/dist/reports/src/object-store.d.ts +33 -24
- package/dist/reports/src/object-store.js +17 -24
- package/dist/reports/src/parse-with.d.ts +16 -0
- package/dist/reports/src/parse-with.js +14 -0
- package/dist/reports/src/performance-part.d.ts +25 -1
- package/dist/reports/src/performance-part.js +15 -1
- package/dist/reports/src/performance.d.ts +22 -2
- package/dist/reports/src/performance.js +12 -2
- package/dist/reports/src/persist.d.ts +12 -3
- package/dist/reports/src/persist.js +12 -3
- package/dist/reports/src/phone.d.ts +18 -1
- package/dist/reports/src/phone.js +18 -1
- package/dist/reports/src/protocol.d.ts +30 -4
- package/dist/reports/src/protocol.js +15 -4
- package/dist/reports/src/publication.d.ts +21 -1
- package/dist/reports/src/publication.js +21 -1
- package/dist/reports/src/publish-checks.d.ts +35 -0
- package/dist/reports/src/publish-checks.js +122 -0
- package/dist/reports/src/publish.d.ts +44 -9
- package/dist/reports/src/publish.js +40 -7
- package/dist/reports/src/read.d.ts +46 -16
- package/dist/reports/src/read.js +38 -14
- package/dist/reports/src/recording-bundle.d.ts +13 -2
- package/dist/reports/src/recording-bundle.js +4 -2
- package/dist/reports/src/recording-keys.d.ts +15 -1
- package/dist/reports/src/recording-keys.js +15 -1
- package/dist/reports/src/remote-report.d.ts +28 -7
- package/dist/reports/src/remote-report.js +15 -7
- package/dist/reports/src/report-cli.d.ts +51 -0
- package/dist/reports/src/report-cli.js +485 -0
- package/dist/reports/src/report-index.d.ts +99 -0
- package/dist/reports/src/report-index.js +337 -0
- package/dist/reports/src/report-loader.d.ts +10 -0
- package/dist/reports/src/report-loader.js +6 -0
- package/dist/reports/src/report-parts.d.ts +29 -3
- package/dist/reports/src/report-parts.js +40 -3
- package/dist/reports/src/report-status.d.ts +48 -0
- package/dist/reports/src/report-status.js +156 -0
- package/dist/reports/src/report-types.d.ts +73 -0
- package/dist/reports/src/report-types.js +3 -0
- package/dist/reports/src/reporter.d.ts +67 -0
- package/dist/reports/src/reporter.js +128 -0
- package/dist/reports/src/reports-explorer-route.d.ts +541 -0
- package/dist/reports/src/reports-explorer-route.js +11 -0
- package/dist/reports/src/reports-list-route.d.ts +9 -0
- package/dist/reports/src/reports-list-route.js +9 -0
- package/dist/reports/src/reports-route.d.ts +561 -22
- package/dist/reports/src/reports-route.js +11 -3
- package/dist/reports/src/reports-store.d.ts +19 -2
- package/dist/reports/src/reports-store.js +10 -2
- package/dist/reports/src/resilient-cache.d.ts +14 -1
- package/dist/reports/src/resilient-cache.js +8 -1
- package/dist/reports/src/retention.d.ts +17 -1
- package/dist/reports/src/retention.js +5 -1
- package/dist/reports/src/run-bundle.d.ts +63 -0
- package/dist/reports/src/run-bundle.js +159 -0
- package/dist/reports/src/s3-store.d.ts +79 -0
- package/dist/reports/src/s3-store.js +295 -0
- package/dist/reports/src/scenario.d.ts +14 -4
- package/dist/reports/src/scenario.js +5 -4
- package/dist/reports/src/sigv4.d.ts +72 -0
- package/dist/reports/src/sigv4.js +96 -0
- package/dist/reports/src/snapshot-bundle.d.ts +24 -1
- package/dist/reports/src/snapshot-bundle.js +27 -2
- package/dist/reports/src/snapshot-surface.d.ts +20 -9
- package/dist/reports/src/snapshot-surface.js +32 -19
- package/dist/reports/src/source-content.d.ts +23 -0
- package/dist/reports/src/source-content.js +30 -1
- package/dist/reports/src/source-entries.d.ts +13 -0
- package/dist/reports/src/source-entries.js +6 -0
- package/dist/reports/src/source-part.d.ts +15 -0
- package/dist/reports/src/source-part.js +8 -0
- package/dist/reports/src/source-reader.d.ts +11 -0
- package/dist/reports/src/source-reader.js +5 -0
- package/dist/reports/src/spec-evidence.d.ts +12 -2
- package/dist/reports/src/spec-evidence.js +6 -2
- package/dist/reports/src/spec-inventory.d.ts +15 -1
- package/dist/reports/src/spec-inventory.js +22 -1
- package/dist/reports/src/spec-link.d.ts +28 -0
- package/dist/reports/src/spec-link.js +70 -0
- package/dist/reports/src/spec-set.d.ts +63 -0
- package/dist/reports/src/spec-set.js +177 -0
- package/dist/reports/src/status.d.ts +10 -0
- package/dist/reports/src/status.js +5 -0
- package/dist/reports/src/store-prefix.d.ts +28 -0
- package/dist/reports/src/store-prefix.js +22 -0
- package/dist/reports/src/store-url.d.ts +89 -0
- package/dist/reports/src/store-url.js +160 -0
- package/dist/reports/src/test-catalog-entity.d.ts +11 -0
- package/dist/reports/src/test-catalog-entity.js +6 -0
- package/dist/reports/src/types.d.ts +6 -1
- package/dist/reports/src/use-report-nav.d.ts +35 -0
- package/dist/reports/src/use-report-nav.js +12 -0
- package/dist/schema/src/api.d.ts +799 -0
- package/dist/schema/src/api.js +201 -0
- package/dist/schema/src/cli-results.d.ts +210 -0
- package/dist/schema/src/cli-results.js +124 -0
- package/dist/schema/src/common.d.ts +53 -0
- package/dist/schema/src/common.js +42 -0
- package/dist/schema/src/index.d.ts +14 -0
- package/dist/schema/src/index.js +14 -0
- package/dist/schema/src/layer.d.ts +2273 -0
- package/dist/schema/src/layer.js +462 -0
- package/dist/schema/src/manifest.d.ts +95 -0
- package/dist/schema/src/manifest.js +84 -0
- package/dist/schema/src/report-sources.d.ts +28 -0
- package/dist/schema/src/report-sources.js +25 -0
- package/dist/schema/src/runs-index.d.ts +16 -0
- package/dist/schema/src/runs-index.js +15 -0
- package/dist/schema/src/server-config.d.ts +93 -0
- package/dist/schema/src/server-config.js +73 -0
- package/dist/schema/src/spec.d.ts +69 -0
- package/dist/schema/src/spec.js +58 -0
- package/dist/server/src/app.d.ts +62 -0
- package/dist/server/src/app.js +419 -0
- package/dist/server/src/auth.d.ts +41 -0
- package/dist/server/src/auth.js +59 -0
- package/dist/server/src/config.d.ts +83 -0
- package/dist/server/src/config.js +187 -0
- package/dist/server/src/dev.d.ts +12 -0
- package/dist/server/src/dev.js +80 -0
- package/dist/server/src/events.d.ts +29 -0
- package/dist/server/src/events.js +101 -0
- package/dist/server/src/host.d.ts +30 -0
- package/dist/server/src/host.js +115 -0
- package/dist/server/src/index.d.ts +16 -0
- package/dist/server/src/index.js +16 -0
- package/dist/server/src/llms.d.ts +19 -0
- package/dist/server/src/llms.js +63 -0
- package/dist/server/src/main.d.ts +30 -0
- package/dist/server/src/main.js +112 -0
- package/dist/server/src/openapi.d.ts +59 -0
- package/dist/server/src/openapi.js +374 -0
- package/dist/server/src/problem.d.ts +8 -0
- package/dist/server/src/problem.js +39 -0
- package/dist/server/src/site.d.ts +13 -0
- package/dist/server/src/site.js +43 -0
- package/dist/server/src/store-api.d.ts +28 -0
- package/dist/server/src/store-api.js +159 -0
- package/dist/server/src/validate.d.ts +71 -0
- package/dist/server/src/validate.js +197 -0
- package/dist/vitest/src/index.d.ts +27 -5
- package/dist/vitest/src/index.js +18 -5
- package/dist/webdriver/src/driver.d.ts +63 -11
- package/dist/webdriver/src/driver.js +57 -6
- package/dist/webdriver/src/index.d.ts +8 -0
- package/dist/webdriver/src/index.js +1 -0
- package/dist/webdriver/src/protocol.d.ts +75 -6
- package/dist/webdriver/src/protocol.js +79 -6
- package/docs/agents.md +137 -0
- package/docs/deploying.md +345 -0
- package/docs/dogfooding.md +175 -0
- package/docs/extending.md +242 -0
- package/docs/integrating.md +485 -0
- package/docs/reference/bun.md +141 -0
- package/docs/reference/cli.md +146 -0
- package/docs/reference/core.md +2426 -0
- package/docs/reference/detox.md +150 -0
- package/docs/reference/http-api.md +303 -0
- package/docs/reference/playwright.md +303 -0
- package/docs/reference/reports.md +7098 -0
- package/docs/reference/schema.md +1651 -0
- package/docs/reference/server.md +685 -0
- package/docs/reference/vitest.md +45 -0
- package/docs/reference/webdriver.md +330 -0
- package/docs/report-backends.md +144 -0
- package/docs/report-contract.md +400 -0
- package/docs/reporting-issues.md +160 -0
- package/docs/server.md +285 -0
- package/docs/statecharts.md +641 -0
- package/llms-full.txt +3506 -0
- package/llms.txt +47 -0
- package/package.json +33 -5
- package/packages/core/README.md +2 -1
- package/packages/reports/README.md +69 -2
- package/packages/reports/STORAGE.md +5 -1
- package/packages/schema/README.md +14 -0
- package/packages/schema/schemas/check-detail.schema.json +1032 -0
- package/packages/schema/schemas/checks-result.schema.json +26 -0
- package/packages/schema/schemas/command-error.schema.json +35 -0
- package/packages/schema/schemas/doctor-result.schema.json +60 -0
- package/packages/schema/schemas/effective-delta.schema.json +490 -0
- package/packages/schema/schemas/effective-evidence.schema.json +471 -0
- package/packages/schema/schemas/evidence-page.schema.json +271 -0
- package/packages/schema/schemas/hello-event.schema.json +22 -0
- package/packages/schema/schemas/init-plan.schema.json +347 -0
- package/packages/schema/schemas/layer-rows.schema.json +199 -0
- package/packages/schema/schemas/layer.schema.json +2888 -0
- package/packages/schema/schemas/merge-result.schema.json +40 -0
- package/packages/schema/schemas/outline.schema.json +62 -0
- package/packages/schema/schemas/problem.schema.json +37 -0
- package/packages/schema/schemas/publish-checks.schema.json +1413 -0
- package/packages/schema/schemas/publish-result.schema.json +168 -0
- package/packages/schema/schemas/ready.schema.json +68 -0
- package/packages/schema/schemas/report-event.schema.json +100 -0
- package/packages/schema/schemas/report-status.schema.json +370 -0
- package/packages/schema/schemas/server-config.schema.json +194 -0
- package/packages/schema/schemas/server-info.schema.json +114 -0
- package/packages/schema/schemas/spec-set.schema.json +103 -0
- package/packages/schema/schemas/store-listing.schema.json +29 -0
- package/packages/schema/schemas/store-write-result.schema.json +28 -0
- package/packages/schema/schemas/stream-result.schema.json +59 -0
- package/packages/server/README.md +43 -0
- package/packages/server/openapi.json +6699 -0
- package/packages/visualizer/README.md +27 -5
- package/packages/visualizer/example/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/example/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/example/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/example/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/example/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/example/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/scripts/make-fixtures.ts +2 -0
- package/packages/visualizer/scripts/publish-data.ts +1 -2
- package/packages/visualizer/src/app/AppShell.tsx +9 -2
- package/packages/visualizer/src/app/report-sources.tsx +6 -4
- package/packages/visualizer/src/app/router.tsx +3 -3
- package/packages/visualizer/src/components/Header.module.css +35 -0
- package/packages/visualizer/src/components/Header.tsx +41 -4
- package/packages/visualizer/src/data/adapters/adapter.ts +5 -17
- package/packages/visualizer/src/data/adapters/index.ts +10 -1
- package/packages/visualizer/src/evidence/api.ts +14 -2
- package/packages/visualizer/src/evidence/artifacts.module.css +213 -0
- package/packages/visualizer/src/evidence/artifacts.tsx +272 -0
- package/packages/visualizer/src/evidence/check-detail.tsx +38 -4
- package/packages/visualizer/src/evidence/evidence-context.tsx +74 -12
- package/packages/visualizer/src/evidence/evidence.module.css +20 -0
- package/packages/visualizer/src/evidence/marks.tsx +2 -0
- package/packages/visualizer/src/evidence/overview.tsx +3 -3
- package/packages/visualizer/src/evidence/sources-panel.tsx +88 -34
- package/packages/visualizer/src/evidence/spec-page.tsx +23 -16
- package/packages/visualizer/src/find/Finder.tsx +1 -7
- package/packages/visualizer/src/find/open.ts +4 -0
- package/packages/visualizer/src/live/live-stream.ts +204 -0
- package/packages/visualizer/src/runtime.ts +19 -0
- package/packages/visualizer/src/state/ui-store.ts +6 -2
- package/packages/visualizer/vite/atlas-server-proxy.ts +36 -0
- package/packages/visualizer/vite/example-reports.ts +475 -0
- package/packages/visualizer/vite.config.ts +18 -2
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module Statechart run manifest schemas
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas for `runs/<run-id>/manifest.json`, the file `atlas run` writes for one run of a statechart spec: run
|
|
5
|
+
* info, the map of states and edges, one record per state, transition, path, journey and seed, the timeline and
|
|
6
|
+
* business events observed, and coverage. The envelope keeps each section `unknown` so a reader can validate every
|
|
7
|
+
* record on its own and keep the ones that parse (the visualizer's `parse/manifest.ts` does). Within a
|
|
8
|
+
* `schemaVersion` only optional fields are added. A run is published into the layered report with `atlas report
|
|
9
|
+
* publish --manifest`.
|
|
10
|
+
*
|
|
11
|
+
* @see docs/statecharts.md
|
|
12
|
+
* @see docs/report-contract.md
|
|
13
|
+
*/
|
|
1
14
|
import { z } from 'zod/v4';
|
|
2
15
|
/** Manifest schema versions this package describes. Readers accept these and try newer ones. */
|
|
3
16
|
export declare const MANIFEST_SCHEMA_VERSIONS: readonly [1];
|
|
17
|
+
/**
|
|
18
|
+
* The newest manifest `schemaVersion` this package describes. The visualizer reads a manifest without a version as
|
|
19
|
+
* this one, and reads a newer one as far as it understands it.
|
|
20
|
+
*/
|
|
4
21
|
export declare const LATEST_MANIFEST_SCHEMA_VERSION = 1;
|
|
22
|
+
/** Whether a screenshot or clip a run promised is `ready`, still `processing` or `failed`. Absent means ready. */
|
|
5
23
|
export declare const MEDIA_STATES: readonly ["ready", "processing", "failed"];
|
|
6
24
|
/**
|
|
7
25
|
* Proposed: the runner marks media it has promised but not finished writing, so a viewer can
|
|
@@ -12,7 +30,16 @@ export declare const MediaStateSchema: z.ZodEnum<{
|
|
|
12
30
|
ready: "ready";
|
|
13
31
|
processing: "processing";
|
|
14
32
|
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Kinds of `TimelineEntry` a driver records during a transition: `tap`, `type`, `system` (a call to or from another
|
|
35
|
+
* system), `screen` (the screen changed), `toast`, `note`, `time` (a clock jump), `notification`. A reader shows a
|
|
36
|
+
* kind it does not know as a `note`.
|
|
37
|
+
*/
|
|
15
38
|
export declare const TIMELINE_KINDS: readonly ["tap", "type", "system", "screen", "toast", "note", "time", "notification"];
|
|
39
|
+
/**
|
|
40
|
+
* A call between the product and another system during a transition, recorded on a `system` timeline entry: source,
|
|
41
|
+
* endpoint, event type, payload and response. The HTTP driver records these.
|
|
42
|
+
*/
|
|
16
43
|
export declare const SystemCallSchema: z.ZodObject<{
|
|
17
44
|
source: z.ZodOptional<z.ZodString>;
|
|
18
45
|
endpoint: z.ZodOptional<z.ZodString>;
|
|
@@ -41,6 +68,10 @@ export declare const NotificationSchema: z.ZodObject<{
|
|
|
41
68
|
title: z.ZodOptional<z.ZodString>;
|
|
42
69
|
body: z.ZodOptional<z.ZodString>;
|
|
43
70
|
}, z.core.$strip>;
|
|
71
|
+
/**
|
|
72
|
+
* One moment in a transition's timeline: what happened (`kind`, `label`), when (`atMs` from the start of the clip)
|
|
73
|
+
* and the details that go with the kind. The timeline becomes the captions of the transition's clip.
|
|
74
|
+
*/
|
|
44
75
|
export declare const TimelineEntrySchema: z.ZodObject<{
|
|
45
76
|
atMs: z.ZodNumber;
|
|
46
77
|
kind: z.ZodEnum<{
|
|
@@ -85,6 +116,7 @@ export declare const TimelineEntrySchema: z.ZodObject<{
|
|
|
85
116
|
}, z.core.$strip>>;
|
|
86
117
|
client: z.ZodOptional<z.ZodString>;
|
|
87
118
|
}, z.core.$strip>;
|
|
119
|
+
/** A parsed `TimelineEntrySchema` value. */
|
|
88
120
|
export type TimelineEntry = z.infer<typeof TimelineEntrySchema>;
|
|
89
121
|
/** A CloudEvents 1.0 event (JSON format), as an event source observed it. */
|
|
90
122
|
export declare const CloudEventSchema: z.ZodObject<{
|
|
@@ -97,7 +129,12 @@ export declare const CloudEventSchema: z.ZodObject<{
|
|
|
97
129
|
datacontenttype: z.ZodOptional<z.ZodString>;
|
|
98
130
|
data: z.ZodOptional<z.ZodUnknown>;
|
|
99
131
|
}, z.core.$loose>;
|
|
132
|
+
/** A parsed `CloudEventSchema` value. */
|
|
100
133
|
export type CloudEvent = z.infer<typeof CloudEventSchema>;
|
|
134
|
+
/**
|
|
135
|
+
* The business events a state expects (from `meta.events`) against what event sources observed while the step ran:
|
|
136
|
+
* `expected`, `observed`, `missing`, and `noSignal` for those with no observable signal mapped.
|
|
137
|
+
*/
|
|
101
138
|
export declare const BusinessEventsSchema: z.ZodObject<{
|
|
102
139
|
expected: z.ZodArray<z.ZodString>;
|
|
103
140
|
observed: z.ZodArray<z.ZodString>;
|
|
@@ -114,14 +151,24 @@ export declare const BusinessEventsSchema: z.ZodObject<{
|
|
|
114
151
|
data: z.ZodOptional<z.ZodUnknown>;
|
|
115
152
|
}, z.core.$loose>>>;
|
|
116
153
|
}, z.core.$strip>;
|
|
154
|
+
/** A parsed `BusinessEventsSchema` value. */
|
|
117
155
|
export type BusinessEvents = z.infer<typeof BusinessEventsSchema>;
|
|
156
|
+
/**
|
|
157
|
+
* The result of one item of a state's `meta.checks`: its text, whether it held, and what was expected and seen when
|
|
158
|
+
* it did not. A failed check fails the state.
|
|
159
|
+
*/
|
|
118
160
|
export declare const CheckResultSchema: z.ZodObject<{
|
|
119
161
|
check: z.ZodString;
|
|
120
162
|
passed: z.ZodBoolean;
|
|
121
163
|
expected: z.ZodOptional<z.ZodString>;
|
|
122
164
|
actual: z.ZodOptional<z.ZodString>;
|
|
123
165
|
}, z.core.$strip>;
|
|
166
|
+
/** A parsed `CheckResultSchema` value. */
|
|
124
167
|
export type CheckResult = z.infer<typeof CheckResultSchema>;
|
|
168
|
+
/**
|
|
169
|
+
* What a state's recogniser saw: whether the state matched, and each signal with what was expected (visible or
|
|
170
|
+
* hidden) and whether it was visible.
|
|
171
|
+
*/
|
|
125
172
|
export declare const RecognizerSchema: z.ZodObject<{
|
|
126
173
|
matched: z.ZodBoolean;
|
|
127
174
|
signals: z.ZodArray<z.ZodObject<{
|
|
@@ -130,6 +177,11 @@ export declare const RecognizerSchema: z.ZodObject<{
|
|
|
130
177
|
visible: z.ZodBoolean;
|
|
131
178
|
}, z.core.$strip>>;
|
|
132
179
|
}, z.core.$strip>;
|
|
180
|
+
/**
|
|
181
|
+
* The `run` section of a manifest: identity, timing and provenance of the run (id, start and finish, commit, branch,
|
|
182
|
+
* environment, mode), the spec version and directory, how far it has got, and how the plan was split, scoped, reused
|
|
183
|
+
* or merged.
|
|
184
|
+
*/
|
|
133
185
|
export declare const RunInfoSchema: z.ZodObject<{
|
|
134
186
|
id: z.ZodString;
|
|
135
187
|
startedAt: z.ZodString;
|
|
@@ -167,7 +219,12 @@ export declare const RunInfoSchema: z.ZodObject<{
|
|
|
167
219
|
}, z.core.$strip>>;
|
|
168
220
|
mergedFrom: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
169
221
|
}, z.core.$strip>;
|
|
222
|
+
/** A parsed `RunInfoSchema` value. */
|
|
170
223
|
export type RunInfo = z.infer<typeof RunInfoSchema>;
|
|
224
|
+
/**
|
|
225
|
+
* A chart that took part in the run: its id, spec file and description, the state of its parent that invokes it, and,
|
|
226
|
+
* for each of its final states, the hand-off event its parent receives.
|
|
227
|
+
*/
|
|
171
228
|
export declare const ManifestChartSchema: z.ZodObject<{
|
|
172
229
|
id: z.ZodString;
|
|
173
230
|
file: z.ZodString;
|
|
@@ -175,6 +232,10 @@ export declare const ManifestChartSchema: z.ZodObject<{
|
|
|
175
232
|
parentState: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
176
233
|
handOffs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
177
234
|
}, z.core.$strip>;
|
|
235
|
+
/**
|
|
236
|
+
* A state in the map of the composed product: id, parent state, chart, type, initial child, and whether it is inside
|
|
237
|
+
* the scope of the run.
|
|
238
|
+
*/
|
|
178
239
|
export declare const MapNodeSchema: z.ZodObject<{
|
|
179
240
|
id: z.ZodString;
|
|
180
241
|
parent: z.ZodNullable<z.ZodString>;
|
|
@@ -188,6 +249,10 @@ export declare const MapNodeSchema: z.ZodObject<{
|
|
|
188
249
|
initial: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
189
250
|
inScope: z.ZodOptional<z.ZodBoolean>;
|
|
190
251
|
}, z.core.$strip>;
|
|
252
|
+
/**
|
|
253
|
+
* A transition in the map: its id (see `transitionId`), source and target state names (the target is empty when the
|
|
254
|
+
* event leads nowhere), the event, who sends it, and whether it is inside the scope of the run.
|
|
255
|
+
*/
|
|
191
256
|
export declare const MapEdgeSchema: z.ZodObject<{
|
|
192
257
|
id: z.ZodString;
|
|
193
258
|
source: z.ZodString;
|
|
@@ -201,6 +266,11 @@ export declare const MapEdgeSchema: z.ZodObject<{
|
|
|
201
266
|
}>>;
|
|
202
267
|
inScope: z.ZodOptional<z.ZodBoolean>;
|
|
203
268
|
}, z.core.$strip>;
|
|
269
|
+
/**
|
|
270
|
+
* The result for one state: what the spec says about it (description, snapshot, confidence, sources, expected
|
|
271
|
+
* events), whether the run reached it, its screenshots, what the recogniser saw, the business events and
|
|
272
|
+
* `meta.checks` results, and the paths that reached it.
|
|
273
|
+
*/
|
|
204
274
|
export declare const StateRecordSchema: z.ZodObject<{
|
|
205
275
|
name: z.ZodString;
|
|
206
276
|
chart: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -280,7 +350,12 @@ export declare const StateRecordSchema: z.ZodObject<{
|
|
|
280
350
|
reachedBy: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
281
351
|
notes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
282
352
|
}, z.core.$strip>;
|
|
353
|
+
/** A parsed `StateRecordSchema` value. */
|
|
283
354
|
export type StateRecord = z.infer<typeof StateRecordSchema>;
|
|
355
|
+
/**
|
|
356
|
+
* A video of one transition: `video` and `poster` as paths relative to the run directory, its duration, and which
|
|
357
|
+
* client's screen it shows.
|
|
358
|
+
*/
|
|
284
359
|
export declare const ClipSchema: z.ZodObject<{
|
|
285
360
|
video: z.ZodString;
|
|
286
361
|
poster: z.ZodOptional<z.ZodString>;
|
|
@@ -293,7 +368,13 @@ export declare const ClipSchema: z.ZodObject<{
|
|
|
293
368
|
processing: "processing";
|
|
294
369
|
}>>;
|
|
295
370
|
}, z.core.$strip>;
|
|
371
|
+
/** A parsed `ClipSchema` value. */
|
|
296
372
|
export type Clip = z.infer<typeof ClipSchema>;
|
|
373
|
+
/**
|
|
374
|
+
* The result for one transition (an event leaving a state): source, target, event, who sends it, how the
|
|
375
|
+
* implementation makes it happen, its status, clip and timeline, why it was not reached, and the paths that took it.
|
|
376
|
+
* Keyed in a manifest by its id (see `transitionId`).
|
|
377
|
+
*/
|
|
297
378
|
export declare const TransitionRecordSchema: z.ZodObject<{
|
|
298
379
|
id: z.ZodOptional<z.ZodString>;
|
|
299
380
|
source: z.ZodString;
|
|
@@ -329,7 +410,9 @@ export declare const TransitionRecordSchema: z.ZodObject<{
|
|
|
329
410
|
reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
330
411
|
reachedBy: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
331
412
|
}, z.core.$strip>;
|
|
413
|
+
/** A parsed `TransitionRecordSchema` value. */
|
|
332
414
|
export type TransitionRecord = z.infer<typeof TransitionRecordSchema>;
|
|
415
|
+
/** One step of a path: the event, the transition it takes and its outcome, with the reason when it was not reached. */
|
|
333
416
|
export declare const PathStepSchema: z.ZodObject<{
|
|
334
417
|
transition: z.ZodOptional<z.ZodString>;
|
|
335
418
|
event: z.ZodString;
|
|
@@ -341,6 +424,11 @@ export declare const PathStepSchema: z.ZodObject<{
|
|
|
341
424
|
}>>;
|
|
342
425
|
reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
343
426
|
}, z.core.$strip>;
|
|
427
|
+
/**
|
|
428
|
+
* The result for one planned path: a curated `journey` or a `generated` path covering transitions. It holds the
|
|
429
|
+
* status, every attempt (a failed first attempt is retried once unless retries are off), the steps and where it
|
|
430
|
+
* stopped, and the identity (`key`), start states and seed that let results from different runs compose.
|
|
431
|
+
*/
|
|
344
432
|
export declare const PathRecordSchema: z.ZodObject<{
|
|
345
433
|
id: z.ZodString;
|
|
346
434
|
name: z.ZodString;
|
|
@@ -377,6 +465,7 @@ export declare const PathRecordSchema: z.ZodObject<{
|
|
|
377
465
|
setupMs: z.ZodOptional<z.ZodNumber>;
|
|
378
466
|
reusedFrom: z.ZodOptional<z.ZodString>;
|
|
379
467
|
}, z.core.$strip>;
|
|
468
|
+
/** A parsed `PathRecordSchema` value. */
|
|
380
469
|
export type PathRecord = z.infer<typeof PathRecordSchema>;
|
|
381
470
|
/** A journey's result, composed from the paths it is cut into (one per seeded stretch). */
|
|
382
471
|
export declare const JourneyRecordSchema: z.ZodObject<{
|
|
@@ -391,6 +480,7 @@ export declare const JourneyRecordSchema: z.ZodObject<{
|
|
|
391
480
|
paths: z.ZodArray<z.ZodString>;
|
|
392
481
|
stoppedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
393
482
|
}, z.core.$strip>;
|
|
483
|
+
/** A parsed `JourneyRecordSchema` value. */
|
|
394
484
|
export type JourneyRecord = z.infer<typeof JourneyRecordSchema>;
|
|
395
485
|
/** A configuration the implementation can put the system in directly, and what checks it. */
|
|
396
486
|
export declare const SeedRecordSchema: z.ZodObject<{
|
|
@@ -403,6 +493,7 @@ export declare const SeedRecordSchema: z.ZodObject<{
|
|
|
403
493
|
paths: z.ZodArray<z.ZodString>;
|
|
404
494
|
verifiedBy: z.ZodArray<z.ZodString>;
|
|
405
495
|
}, z.core.$strip>;
|
|
496
|
+
/** A parsed `SeedRecordSchema` value. */
|
|
406
497
|
export type SeedRecord = z.infer<typeof SeedRecordSchema>;
|
|
407
498
|
/** Other formats the run wrote, relative to the manifest: JUnit XML, CTRF JSON, Mermaid. */
|
|
408
499
|
export declare const ReportsSchema: z.ZodObject<{
|
|
@@ -410,6 +501,10 @@ export declare const ReportsSchema: z.ZodObject<{
|
|
|
410
501
|
ctrf: z.ZodOptional<z.ZodString>;
|
|
411
502
|
mermaid: z.ZodOptional<z.ZodString>;
|
|
412
503
|
}, z.core.$strip>;
|
|
504
|
+
/**
|
|
505
|
+
* Result of the privacy scan of a run: whether it passed and what it found. Media of a run whose scan did not pass
|
|
506
|
+
* are not uploaded with `--upload-run`.
|
|
507
|
+
*/
|
|
413
508
|
export declare const PrivacySchema: z.ZodObject<{
|
|
414
509
|
passed: z.ZodBoolean;
|
|
415
510
|
findings: z.ZodArray<z.ZodString>;
|
|
@@ -1,15 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module Statechart run manifest schemas
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas for `runs/<run-id>/manifest.json`, the file `atlas run` writes for one run of a statechart spec: run
|
|
5
|
+
* info, the map of states and edges, one record per state, transition, path, journey and seed, the timeline and
|
|
6
|
+
* business events observed, and coverage. The envelope keeps each section `unknown` so a reader can validate every
|
|
7
|
+
* record on its own and keep the ones that parse (the visualizer's `parse/manifest.ts` does). Within a
|
|
8
|
+
* `schemaVersion` only optional fields are added. A run is published into the layered report with `atlas report
|
|
9
|
+
* publish --manifest`.
|
|
10
|
+
*
|
|
11
|
+
* @see docs/statecharts.md
|
|
12
|
+
* @see docs/report-contract.md
|
|
13
|
+
*/
|
|
1
14
|
import { z } from 'zod/v4';
|
|
2
15
|
import { CountSchema, EventKindSchema, ImageSchema, RunStatusSchema } from './common.js';
|
|
3
16
|
/** Manifest schema versions this package describes. Readers accept these and try newer ones. */
|
|
4
17
|
export const MANIFEST_SCHEMA_VERSIONS = [1];
|
|
18
|
+
/**
|
|
19
|
+
* The newest manifest `schemaVersion` this package describes. The visualizer reads a manifest without a version as
|
|
20
|
+
* this one, and reads a newer one as far as it understands it.
|
|
21
|
+
*/
|
|
5
22
|
export const LATEST_MANIFEST_SCHEMA_VERSION = 1;
|
|
23
|
+
/** Whether a screenshot or clip a run promised is `ready`, still `processing` or `failed`. Absent means ready. */
|
|
6
24
|
export const MEDIA_STATES = ['ready', 'processing', 'failed'];
|
|
7
25
|
/**
|
|
8
26
|
* Proposed: the runner marks media it has promised but not finished writing, so a viewer can
|
|
9
27
|
* show "still processing" instead of a broken image. Absent means ready.
|
|
10
28
|
*/
|
|
11
29
|
export const MediaStateSchema = z.enum(MEDIA_STATES);
|
|
30
|
+
/**
|
|
31
|
+
* Kinds of `TimelineEntry` a driver records during a transition: `tap`, `type`, `system` (a call to or from another
|
|
32
|
+
* system), `screen` (the screen changed), `toast`, `note`, `time` (a clock jump), `notification`. A reader shows a
|
|
33
|
+
* kind it does not know as a `note`.
|
|
34
|
+
*/
|
|
12
35
|
export const TIMELINE_KINDS = ['tap', 'type', 'system', 'screen', 'toast', 'note', 'time', 'notification'];
|
|
36
|
+
/**
|
|
37
|
+
* A call between the product and another system during a transition, recorded on a `system` timeline entry: source,
|
|
38
|
+
* endpoint, event type, payload and response. The HTTP driver records these.
|
|
39
|
+
*/
|
|
13
40
|
export const SystemCallSchema = z.object({
|
|
14
41
|
source: z.string().optional(),
|
|
15
42
|
endpoint: z.string().optional(),
|
|
@@ -30,6 +57,10 @@ export const NotificationSchema = z.object({
|
|
|
30
57
|
title: z.string().optional(),
|
|
31
58
|
body: z.string().optional()
|
|
32
59
|
});
|
|
60
|
+
/**
|
|
61
|
+
* One moment in a transition's timeline: what happened (`kind`, `label`), when (`atMs` from the start of the clip)
|
|
62
|
+
* and the details that go with the kind. The timeline becomes the captions of the transition's clip.
|
|
63
|
+
*/
|
|
33
64
|
export const TimelineEntrySchema = z.object({
|
|
34
65
|
atMs: z.number().nonnegative().describe('Milliseconds from the start of the clip'),
|
|
35
66
|
kind: z.enum(TIMELINE_KINDS),
|
|
@@ -55,6 +86,10 @@ export const CloudEventSchema = z
|
|
|
55
86
|
data: z.unknown().optional()
|
|
56
87
|
})
|
|
57
88
|
.passthrough();
|
|
89
|
+
/**
|
|
90
|
+
* The business events a state expects (from `meta.events`) against what event sources observed while the step ran:
|
|
91
|
+
* `expected`, `observed`, `missing`, and `noSignal` for those with no observable signal mapped.
|
|
92
|
+
*/
|
|
58
93
|
export const BusinessEventsSchema = z.object({
|
|
59
94
|
expected: z.array(z.string()),
|
|
60
95
|
observed: z.array(z.string()),
|
|
@@ -62,16 +97,29 @@ export const BusinessEventsSchema = z.object({
|
|
|
62
97
|
noSignal: z.array(z.string()).describe('No observable signal is mapped yet'),
|
|
63
98
|
events: z.array(CloudEventSchema).optional().describe('The CloudEvents observed during the step')
|
|
64
99
|
});
|
|
100
|
+
/**
|
|
101
|
+
* The result of one item of a state's `meta.checks`: its text, whether it held, and what was expected and seen when
|
|
102
|
+
* it did not. A failed check fails the state.
|
|
103
|
+
*/
|
|
65
104
|
export const CheckResultSchema = z.object({
|
|
66
105
|
check: z.string(),
|
|
67
106
|
passed: z.boolean(),
|
|
68
107
|
expected: z.string().optional(),
|
|
69
108
|
actual: z.string().optional()
|
|
70
109
|
});
|
|
110
|
+
/**
|
|
111
|
+
* What a state's recogniser saw: whether the state matched, and each signal with what was expected (visible or
|
|
112
|
+
* hidden) and whether it was visible.
|
|
113
|
+
*/
|
|
71
114
|
export const RecognizerSchema = z.object({
|
|
72
115
|
matched: z.boolean(),
|
|
73
116
|
signals: z.array(z.object({ signal: z.string(), expected: z.string(), visible: z.boolean() }))
|
|
74
117
|
});
|
|
118
|
+
/**
|
|
119
|
+
* The `run` section of a manifest: identity, timing and provenance of the run (id, start and finish, commit, branch,
|
|
120
|
+
* environment, mode), the spec version and directory, how far it has got, and how the plan was split, scoped, reused
|
|
121
|
+
* or merged.
|
|
122
|
+
*/
|
|
75
123
|
export const RunInfoSchema = z.object({
|
|
76
124
|
id: z.string().min(1),
|
|
77
125
|
startedAt: z.string(),
|
|
@@ -98,6 +146,10 @@ export const RunInfoSchema = z.object({
|
|
|
98
146
|
reused: z.object({ from: z.string(), paths: z.number().int().nonnegative() }).optional().describe('Passed paths kept from an earlier run instead of running again'),
|
|
99
147
|
mergedFrom: z.array(z.string()).optional().describe('The runs this run was composed from')
|
|
100
148
|
});
|
|
149
|
+
/**
|
|
150
|
+
* A chart that took part in the run: its id, spec file and description, the state of its parent that invokes it, and,
|
|
151
|
+
* for each of its final states, the hand-off event its parent receives.
|
|
152
|
+
*/
|
|
101
153
|
export const ManifestChartSchema = z.object({
|
|
102
154
|
id: z.string().min(1),
|
|
103
155
|
file: z.string(),
|
|
@@ -105,6 +157,10 @@ export const ManifestChartSchema = z.object({
|
|
|
105
157
|
parentState: z.string().nullable().optional(),
|
|
106
158
|
handOffs: z.record(z.string(), z.string()).optional()
|
|
107
159
|
});
|
|
160
|
+
/**
|
|
161
|
+
* A state in the map of the composed product: id, parent state, chart, type, initial child, and whether it is inside
|
|
162
|
+
* the scope of the run.
|
|
163
|
+
*/
|
|
108
164
|
export const MapNodeSchema = z.object({
|
|
109
165
|
id: z.string().min(1),
|
|
110
166
|
parent: z.string().nullable(),
|
|
@@ -113,6 +169,10 @@ export const MapNodeSchema = z.object({
|
|
|
113
169
|
initial: z.string().nullable().optional(),
|
|
114
170
|
inScope: z.boolean().optional()
|
|
115
171
|
});
|
|
172
|
+
/**
|
|
173
|
+
* A transition in the map: its id (see `transitionId`), source and target state names (the target is empty when the
|
|
174
|
+
* event leads nowhere), the event, who sends it, and whether it is inside the scope of the run.
|
|
175
|
+
*/
|
|
116
176
|
export const MapEdgeSchema = z.object({
|
|
117
177
|
id: z.string().min(1),
|
|
118
178
|
source: z.string(),
|
|
@@ -121,6 +181,11 @@ export const MapEdgeSchema = z.object({
|
|
|
121
181
|
kind: EventKindSchema,
|
|
122
182
|
inScope: z.boolean().optional()
|
|
123
183
|
});
|
|
184
|
+
/**
|
|
185
|
+
* The result for one state: what the spec says about it (description, snapshot, confidence, sources, expected
|
|
186
|
+
* events), whether the run reached it, its screenshots, what the recogniser saw, the business events and
|
|
187
|
+
* `meta.checks` results, and the paths that reached it.
|
|
188
|
+
*/
|
|
124
189
|
export const StateRecordSchema = z.object({
|
|
125
190
|
name: z.string(),
|
|
126
191
|
chart: z.string().nullable().optional(),
|
|
@@ -143,6 +208,10 @@ export const StateRecordSchema = z.object({
|
|
|
143
208
|
reachedBy: z.array(z.string()).optional(),
|
|
144
209
|
notes: z.array(z.string()).optional()
|
|
145
210
|
});
|
|
211
|
+
/**
|
|
212
|
+
* A video of one transition: `video` and `poster` as paths relative to the run directory, its duration, and which
|
|
213
|
+
* client's screen it shows.
|
|
214
|
+
*/
|
|
146
215
|
export const ClipSchema = z.object({
|
|
147
216
|
video: z.string().min(1),
|
|
148
217
|
poster: z.string().optional(),
|
|
@@ -151,6 +220,11 @@ export const ClipSchema = z.object({
|
|
|
151
220
|
client: z.string().optional().describe('The client whose screen was recorded'),
|
|
152
221
|
state: MediaStateSchema.optional()
|
|
153
222
|
});
|
|
223
|
+
/**
|
|
224
|
+
* The result for one transition (an event leaving a state): source, target, event, who sends it, how the
|
|
225
|
+
* implementation makes it happen, its status, clip and timeline, why it was not reached, and the paths that took it.
|
|
226
|
+
* Keyed in a manifest by its id (see `transitionId`).
|
|
227
|
+
*/
|
|
154
228
|
export const TransitionRecordSchema = z.object({
|
|
155
229
|
id: z.string().optional(),
|
|
156
230
|
source: z.string(),
|
|
@@ -165,12 +239,18 @@ export const TransitionRecordSchema = z.object({
|
|
|
165
239
|
reason: z.string().nullable().optional(),
|
|
166
240
|
reachedBy: z.array(z.string()).optional()
|
|
167
241
|
});
|
|
242
|
+
/** One step of a path: the event, the transition it takes and its outcome, with the reason when it was not reached. */
|
|
168
243
|
export const PathStepSchema = z.object({
|
|
169
244
|
transition: z.string().optional(),
|
|
170
245
|
event: z.string(),
|
|
171
246
|
status: RunStatusSchema.optional(),
|
|
172
247
|
reason: z.string().nullable().optional()
|
|
173
248
|
});
|
|
249
|
+
/**
|
|
250
|
+
* The result for one planned path: a curated `journey` or a `generated` path covering transitions. It holds the
|
|
251
|
+
* status, every attempt (a failed first attempt is retried once unless retries are off), the steps and where it
|
|
252
|
+
* stopped, and the identity (`key`), start states and seed that let results from different runs compose.
|
|
253
|
+
*/
|
|
174
254
|
export const PathRecordSchema = z.object({
|
|
175
255
|
id: z.string().min(1),
|
|
176
256
|
name: z.string(),
|
|
@@ -222,6 +302,10 @@ export const ReportsSchema = z.object({
|
|
|
222
302
|
ctrf: z.string().optional(),
|
|
223
303
|
mermaid: z.string().optional()
|
|
224
304
|
});
|
|
305
|
+
/**
|
|
306
|
+
* Result of the privacy scan of a run: whether it passed and what it found. Media of a run whose scan did not pass
|
|
307
|
+
* are not uploaded with `--upload-run`.
|
|
308
|
+
*/
|
|
225
309
|
export const PrivacySchema = z.object({
|
|
226
310
|
passed: z.boolean(),
|
|
227
311
|
findings: z.array(z.string())
|
|
@@ -1,4 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module Report sources and change notices
|
|
3
|
+
*
|
|
4
|
+
* The files and events the viewer uses to find runs. `ReportSourcesSchema` validates the sources file named by
|
|
5
|
+
* `ATLAS_SOURCES_FILE`, which lists extra places to read runs from (a directory, or another host over HTTP).
|
|
6
|
+
* `AtlasChangeSchema` is the payload of the `atlas:change` event that tells a live viewer that specs or runs changed.
|
|
7
|
+
* Both are read by the visualizer; the server sends the change notice.
|
|
8
|
+
*
|
|
9
|
+
* @see docs/report-backends.md
|
|
10
|
+
*/
|
|
1
11
|
import { z } from 'zod/v4';
|
|
12
|
+
/**
|
|
13
|
+
* A source reached over HTTP: `type` `http` or `api`, a base URL without credentials, an optional events URL for live
|
|
14
|
+
* updates, a polling interval in milliseconds (1 000 to 3 600 000) and a `live` flag. The id `workspace` is reserved
|
|
15
|
+
* for the local runs directory.
|
|
16
|
+
*/
|
|
2
17
|
export declare const RemoteReportSourceSchema: z.ZodObject<{
|
|
3
18
|
type: z.ZodEnum<{
|
|
4
19
|
http: "http";
|
|
@@ -11,12 +26,17 @@ export declare const RemoteReportSourceSchema: z.ZodObject<{
|
|
|
11
26
|
id: z.ZodString;
|
|
12
27
|
label: z.ZodString;
|
|
13
28
|
}, z.core.$strip>;
|
|
29
|
+
/**
|
|
30
|
+
* A source that is a directory of runs on the machine running the viewer. A relative `runs` path is resolved against
|
|
31
|
+
* the sources file.
|
|
32
|
+
*/
|
|
14
33
|
export declare const DirectoryReportSourceSchema: z.ZodObject<{
|
|
15
34
|
type: z.ZodLiteral<"directory">;
|
|
16
35
|
runs: z.ZodString;
|
|
17
36
|
id: z.ZodString;
|
|
18
37
|
label: z.ZodString;
|
|
19
38
|
}, z.core.$strip>;
|
|
39
|
+
/** One source: a directory or a remote host. */
|
|
20
40
|
export declare const ReportSourceSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
21
41
|
type: z.ZodLiteral<"directory">;
|
|
22
42
|
runs: z.ZodString;
|
|
@@ -34,8 +54,11 @@ export declare const ReportSourceSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
34
54
|
id: z.ZodString;
|
|
35
55
|
label: z.ZodString;
|
|
36
56
|
}, z.core.$strip>]>;
|
|
57
|
+
/** A parsed `ReportSourceSchema` value. */
|
|
37
58
|
export type ReportSource = z.infer<typeof ReportSourceSchema>;
|
|
59
|
+
/** A parsed `RemoteReportSourceSchema` value. */
|
|
38
60
|
export type RemoteReportSource = z.infer<typeof RemoteReportSourceSchema>;
|
|
61
|
+
/** The sources file, `{ "schemaVersion": 1, "sources": [...] }`. Source ids must be unique. */
|
|
39
62
|
export declare const ReportSourcesSchema: z.ZodObject<{
|
|
40
63
|
schemaVersion: z.ZodLiteral<1>;
|
|
41
64
|
sources: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -56,6 +79,10 @@ export declare const ReportSourcesSchema: z.ZodObject<{
|
|
|
56
79
|
label: z.ZodString;
|
|
57
80
|
}, z.core.$strip>]>>;
|
|
58
81
|
}, z.core.$strip>;
|
|
82
|
+
/**
|
|
83
|
+
* The payload of the `atlas:change` event: which `scope` changed (`specs` or `runs`), the files and run ids concerned
|
|
84
|
+
* (empty lists when not known), and the source that changed. Unknown payloads are ignored by the viewer.
|
|
85
|
+
*/
|
|
59
86
|
export declare const AtlasChangeSchema: z.ZodObject<{
|
|
60
87
|
scope: z.ZodEnum<{
|
|
61
88
|
specs: "specs";
|
|
@@ -65,4 +92,5 @@ export declare const AtlasChangeSchema: z.ZodObject<{
|
|
|
65
92
|
runIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
66
93
|
sourceId: z.ZodOptional<z.ZodString>;
|
|
67
94
|
}, z.core.$strip>;
|
|
95
|
+
/** A parsed `AtlasChangeSchema` value. */
|
|
68
96
|
export type AtlasChange = z.infer<typeof AtlasChangeSchema>;
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module Report sources and change notices
|
|
3
|
+
*
|
|
4
|
+
* The files and events the viewer uses to find runs. `ReportSourcesSchema` validates the sources file named by
|
|
5
|
+
* `ATLAS_SOURCES_FILE`, which lists extra places to read runs from (a directory, or another host over HTTP).
|
|
6
|
+
* `AtlasChangeSchema` is the payload of the `atlas:change` event that tells a live viewer that specs or runs changed.
|
|
7
|
+
* Both are read by the visualizer; the server sends the change notice.
|
|
8
|
+
*
|
|
9
|
+
* @see docs/report-backends.md
|
|
10
|
+
*/
|
|
1
11
|
import { z } from 'zod/v4';
|
|
2
12
|
const SourceIdentity = {
|
|
3
13
|
id: z
|
|
@@ -18,6 +28,11 @@ const HttpLocation = z
|
|
|
18
28
|
return false;
|
|
19
29
|
}
|
|
20
30
|
}, 'Use an HTTP URL without credentials.');
|
|
31
|
+
/**
|
|
32
|
+
* A source reached over HTTP: `type` `http` or `api`, a base URL without credentials, an optional events URL for live
|
|
33
|
+
* updates, a polling interval in milliseconds (1 000 to 3 600 000) and a `live` flag. The id `workspace` is reserved
|
|
34
|
+
* for the local runs directory.
|
|
35
|
+
*/
|
|
21
36
|
export const RemoteReportSourceSchema = z.object({
|
|
22
37
|
...SourceIdentity,
|
|
23
38
|
type: z.enum(['http', 'api']),
|
|
@@ -26,12 +41,18 @@ export const RemoteReportSourceSchema = z.object({
|
|
|
26
41
|
pollMs: z.number().int().min(1000).max(3_600_000).optional(),
|
|
27
42
|
live: z.boolean().optional()
|
|
28
43
|
});
|
|
44
|
+
/**
|
|
45
|
+
* A source that is a directory of runs on the machine running the viewer. A relative `runs` path is resolved against
|
|
46
|
+
* the sources file.
|
|
47
|
+
*/
|
|
29
48
|
export const DirectoryReportSourceSchema = z.object({
|
|
30
49
|
...SourceIdentity,
|
|
31
50
|
type: z.literal('directory'),
|
|
32
51
|
runs: z.string().min(1)
|
|
33
52
|
});
|
|
53
|
+
/** One source: a directory or a remote host. */
|
|
34
54
|
export const ReportSourceSchema = z.union([DirectoryReportSourceSchema, RemoteReportSourceSchema]);
|
|
55
|
+
/** The sources file, `{ "schemaVersion": 1, "sources": [...] }`. Source ids must be unique. */
|
|
35
56
|
export const ReportSourcesSchema = z
|
|
36
57
|
.object({
|
|
37
58
|
schemaVersion: z.literal(1),
|
|
@@ -45,6 +66,10 @@ export const ReportSourcesSchema = z
|
|
|
45
66
|
ids.add(source.id);
|
|
46
67
|
});
|
|
47
68
|
});
|
|
69
|
+
/**
|
|
70
|
+
* The payload of the `atlas:change` event: which `scope` changed (`specs` or `runs`), the files and run ids concerned
|
|
71
|
+
* (empty lists when not known), and the source that changed. Unknown payloads are ignored by the viewer.
|
|
72
|
+
*/
|
|
48
73
|
export const AtlasChangeSchema = z.object({
|
|
49
74
|
scope: z.enum(['specs', 'runs']),
|
|
50
75
|
files: z.array(z.string()).default([]),
|
|
@@ -1,5 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module Runs index
|
|
3
|
+
*
|
|
4
|
+
* `runs/index.json`, the list of statechart runs a host serves, newest first, and the summary the viewer keeps for
|
|
5
|
+
* each. The index lists runs as `unknown` so a reader can validate each summary on its own and drop the ones that do
|
|
6
|
+
* not parse.
|
|
7
|
+
*
|
|
8
|
+
* @see docs/statecharts.md
|
|
9
|
+
*/
|
|
1
10
|
import { z } from 'zod/v4';
|
|
11
|
+
/** Whether a run is still being written (`running`) or finished (`complete`). */
|
|
2
12
|
export declare const RUN_PROGRESS: readonly ["running", "complete"];
|
|
13
|
+
/**
|
|
14
|
+
* One run in the index: its id, start, mode, commit, branch, duration and spec version, whether it is `running` or
|
|
15
|
+
* complete, the planned and completed path counts of a running run, whether its manifest exists yet, and the state,
|
|
16
|
+
* transition and journey tallies.
|
|
17
|
+
*/
|
|
3
18
|
export declare const RunSummarySchema: z.ZodObject<{
|
|
4
19
|
id: z.ZodString;
|
|
5
20
|
startedAt: z.ZodString;
|
|
@@ -43,6 +58,7 @@ export declare const RunSummarySchema: z.ZodObject<{
|
|
|
43
58
|
notReached: z.ZodNumber;
|
|
44
59
|
}, z.core.$strip>>;
|
|
45
60
|
}, z.core.$strip>;
|
|
61
|
+
/** A parsed `RunSummarySchema` value. */
|
|
46
62
|
export type RunSummary = z.infer<typeof RunSummarySchema>;
|
|
47
63
|
/** `runs/index.json`: the runs a host serves, newest first. */
|
|
48
64
|
export declare const RunsIndexSchema: z.ZodObject<{
|
|
@@ -1,7 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module Runs index
|
|
3
|
+
*
|
|
4
|
+
* `runs/index.json`, the list of statechart runs a host serves, newest first, and the summary the viewer keeps for
|
|
5
|
+
* each. The index lists runs as `unknown` so a reader can validate each summary on its own and drop the ones that do
|
|
6
|
+
* not parse.
|
|
7
|
+
*
|
|
8
|
+
* @see docs/statecharts.md
|
|
9
|
+
*/
|
|
1
10
|
import { z } from 'zod/v4';
|
|
2
11
|
import { CountSchema } from './common.js';
|
|
3
12
|
import { RunInfoSchema } from './manifest.js';
|
|
13
|
+
/** Whether a run is still being written (`running`) or finished (`complete`). */
|
|
4
14
|
export const RUN_PROGRESS = ['running', 'complete'];
|
|
15
|
+
/**
|
|
16
|
+
* One run in the index: its id, start, mode, commit, branch, duration and spec version, whether it is `running` or
|
|
17
|
+
* complete, the planned and completed path counts of a running run, whether its manifest exists yet, and the state,
|
|
18
|
+
* transition and journey tallies.
|
|
19
|
+
*/
|
|
5
20
|
export const RunSummarySchema = z.object({
|
|
6
21
|
id: z.string().min(1),
|
|
7
22
|
startedAt: z.string(),
|