@adammcarter/use-cases 0.1.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/.agents/skills/migration/SKILL.md +85 -0
- package/.agents/skills/showcase/SKILL.md +60 -0
- package/.agents/skills/use-cases/SKILL.md +161 -0
- package/.agents/skills/walkthrough/SKILL.md +48 -0
- package/.claude-plugin/plugin.json +14 -0
- package/.codex-plugin/plugin.json +33 -0
- package/.mcp.json +8 -0
- package/.opencode/plugin/use-cases.js +32 -0
- package/CHANGELOG.md +125 -0
- package/LICENSE +21 -0
- package/README.md +112 -0
- package/bootstrap/use-cases.md +60 -0
- package/docs/README.md +51 -0
- package/docs/acceptance.md +16 -0
- package/docs/activation.md +89 -0
- package/docs/adr/0001-p0-bootstrap-decisions.md +107 -0
- package/docs/adr/0002-p1-schema-contracts.md +136 -0
- package/docs/adr/0003-p2-use-case-matrix-contracts.md +67 -0
- package/docs/adr/0004-p3-evidence-ledger-contracts.md +85 -0
- package/docs/adr/0005-p4-cli-contract.md +70 -0
- package/docs/adr/0006-trusted-user-approval-path.md +125 -0
- package/docs/cli.md +108 -0
- package/docs/data-model.md +56 -0
- package/docs/getting-started.md +296 -0
- package/docs/hosts.md +30 -0
- package/docs/markers-adoption.md +100 -0
- package/docs/mcp.md +114 -0
- package/docs/migration.md +90 -0
- package/docs/reference/error-codes.md +123 -0
- package/docs/reference/stability.md +123 -0
- package/docs/release.md +26 -0
- package/docs/security/ci-hardening.md +144 -0
- package/docs/security/key-management.md +158 -0
- package/docs/security.md +66 -0
- package/docs/showcase.md +39 -0
- package/docs/tutorials/python-pytest.md +188 -0
- package/examples/basic-product/demo-capsules/product-search.yml +23 -0
- package/examples/basic-product/evidence/by-id/ev/evidence-basic-search.jsonl +1 -0
- package/examples/basic-product/showcase-runs/run.basic.product.search/events.jsonl +4 -0
- package/examples/basic-product/use-cases/product.yml +85 -0
- package/examples/basic-product/use-cases.yml +9 -0
- package/examples/damaged-product/evidence/broken.jsonl +1 -0
- package/examples/damaged-product/use-cases/duplicate-a.yml +28 -0
- package/examples/damaged-product/use-cases/duplicate-b.yml +28 -0
- package/examples/damaged-product/use-cases/malformed.yml +14 -0
- package/examples/damaged-product/use-cases/valid-sibling.yml +28 -0
- package/examples/damaged-product/use-cases.yml +9 -0
- package/examples/host-projections/use-cases.yml +9 -0
- package/examples/python-pytest/README.md +39 -0
- package/examples/python-pytest/pytest.ini +8 -0
- package/examples/python-pytest/src/coupon.py +32 -0
- package/examples/python-pytest/tests/use_cases/example.checkout.apply_coupon_test.py +31 -0
- package/examples/python-pytest/use-cases/checkout.yml +47 -0
- package/examples/python-pytest/use-cases.yml +19 -0
- package/hooks/hooks-codex.json +16 -0
- package/hooks/hooks.json +16 -0
- package/hooks/session-start +42 -0
- package/hosts/claude.yml +29 -0
- package/hosts/codex.yml +29 -0
- package/hosts/copilot.yml +29 -0
- package/hosts/opencode.yml +29 -0
- package/package.json +81 -0
- package/packages/cli/README.md +37 -0
- package/packages/cli/dist/args/parse.d.ts +6 -0
- package/packages/cli/dist/args/parse.d.ts.map +1 -0
- package/packages/cli/dist/args/parse.js +55 -0
- package/packages/cli/dist/args/parse.js.map +1 -0
- package/packages/cli/dist/args/validate.d.ts +3 -0
- package/packages/cli/dist/args/validate.d.ts.map +1 -0
- package/packages/cli/dist/args/validate.js +80 -0
- package/packages/cli/dist/args/validate.js.map +1 -0
- package/packages/cli/dist/builtins.d.ts +2 -0
- package/packages/cli/dist/builtins.d.ts.map +1 -0
- package/packages/cli/dist/builtins.js +235 -0
- package/packages/cli/dist/builtins.js.map +1 -0
- package/packages/cli/dist/command/dispatch.d.ts +4 -0
- package/packages/cli/dist/command/dispatch.d.ts.map +1 -0
- package/packages/cli/dist/command/dispatch.js +45 -0
- package/packages/cli/dist/command/dispatch.js.map +1 -0
- package/packages/cli/dist/command/help-catalog.d.ts +13 -0
- package/packages/cli/dist/command/help-catalog.d.ts.map +1 -0
- package/packages/cli/dist/command/help-catalog.js +42 -0
- package/packages/cli/dist/command/help-catalog.js.map +1 -0
- package/packages/cli/dist/command/registry.d.ts +3 -0
- package/packages/cli/dist/command/registry.d.ts.map +1 -0
- package/packages/cli/dist/command/registry.js +33 -0
- package/packages/cli/dist/command/registry.js.map +1 -0
- package/packages/cli/dist/command/types.d.ts +32 -0
- package/packages/cli/dist/command/types.d.ts.map +1 -0
- package/packages/cli/dist/command/types.js +6 -0
- package/packages/cli/dist/command/types.js.map +1 -0
- package/packages/cli/dist/commands/capsule.d.ts +7 -0
- package/packages/cli/dist/commands/capsule.d.ts.map +1 -0
- package/packages/cli/dist/commands/capsule.js +178 -0
- package/packages/cli/dist/commands/capsule.js.map +1 -0
- package/packages/cli/dist/commands/common.d.ts +7 -0
- package/packages/cli/dist/commands/common.d.ts.map +1 -0
- package/packages/cli/dist/commands/common.js +32 -0
- package/packages/cli/dist/commands/common.js.map +1 -0
- package/packages/cli/dist/commands/doctor.d.ts +6 -0
- package/packages/cli/dist/commands/doctor.d.ts.map +1 -0
- package/packages/cli/dist/commands/doctor.js +133 -0
- package/packages/cli/dist/commands/doctor.js.map +1 -0
- package/packages/cli/dist/commands/evidence.d.ts +6 -0
- package/packages/cli/dist/commands/evidence.d.ts.map +1 -0
- package/packages/cli/dist/commands/evidence.js +191 -0
- package/packages/cli/dist/commands/evidence.js.map +1 -0
- package/packages/cli/dist/commands/host.d.ts +6 -0
- package/packages/cli/dist/commands/host.d.ts.map +1 -0
- package/packages/cli/dist/commands/host.js +180 -0
- package/packages/cli/dist/commands/host.js.map +1 -0
- package/packages/cli/dist/commands/keygen.d.ts +4 -0
- package/packages/cli/dist/commands/keygen.d.ts.map +1 -0
- package/packages/cli/dist/commands/keygen.js +132 -0
- package/packages/cli/dist/commands/keygen.js.map +1 -0
- package/packages/cli/dist/commands/markers.d.ts +8 -0
- package/packages/cli/dist/commands/markers.d.ts.map +1 -0
- package/packages/cli/dist/commands/markers.js +455 -0
- package/packages/cli/dist/commands/markers.js.map +1 -0
- package/packages/cli/dist/commands/matrix.d.ts +8 -0
- package/packages/cli/dist/commands/matrix.d.ts.map +1 -0
- package/packages/cli/dist/commands/matrix.js +237 -0
- package/packages/cli/dist/commands/matrix.js.map +1 -0
- package/packages/cli/dist/commands/migrate.d.ts +4 -0
- package/packages/cli/dist/commands/migrate.d.ts.map +1 -0
- package/packages/cli/dist/commands/migrate.js +82 -0
- package/packages/cli/dist/commands/migrate.js.map +1 -0
- package/packages/cli/dist/commands/plan.d.ts +6 -0
- package/packages/cli/dist/commands/plan.d.ts.map +1 -0
- package/packages/cli/dist/commands/plan.js +129 -0
- package/packages/cli/dist/commands/plan.js.map +1 -0
- package/packages/cli/dist/commands/recover.d.ts +4 -0
- package/packages/cli/dist/commands/recover.d.ts.map +1 -0
- package/packages/cli/dist/commands/recover.js +352 -0
- package/packages/cli/dist/commands/recover.js.map +1 -0
- package/packages/cli/dist/commands/schema.d.ts +5 -0
- package/packages/cli/dist/commands/schema.d.ts.map +1 -0
- package/packages/cli/dist/commands/schema.js +51 -0
- package/packages/cli/dist/commands/schema.js.map +1 -0
- package/packages/cli/dist/commands/showcase.d.ts +14 -0
- package/packages/cli/dist/commands/showcase.d.ts.map +1 -0
- package/packages/cli/dist/commands/showcase.js +638 -0
- package/packages/cli/dist/commands/showcase.js.map +1 -0
- package/packages/cli/dist/commands/workflow.d.ts +5 -0
- package/packages/cli/dist/commands/workflow.d.ts.map +1 -0
- package/packages/cli/dist/commands/workflow.js +107 -0
- package/packages/cli/dist/commands/workflow.js.map +1 -0
- package/packages/cli/dist/coreLoader.d.ts +6 -0
- package/packages/cli/dist/coreLoader.d.ts.map +1 -0
- package/packages/cli/dist/coreLoader.js +34 -0
- package/packages/cli/dist/coreLoader.js.map +1 -0
- package/packages/cli/dist/index.d.ts +5 -0
- package/packages/cli/dist/index.d.ts.map +1 -0
- package/packages/cli/dist/index.js +83 -0
- package/packages/cli/dist/index.js.map +1 -0
- package/packages/cli/dist/render.d.ts +2 -0
- package/packages/cli/dist/render.d.ts.map +1 -0
- package/packages/cli/dist/render.js +88 -0
- package/packages/cli/dist/render.js.map +1 -0
- package/packages/cli/dist/runtime.d.ts +25 -0
- package/packages/cli/dist/runtime.d.ts.map +1 -0
- package/packages/cli/dist/runtime.js +89 -0
- package/packages/cli/dist/runtime.js.map +1 -0
- package/packages/cli/package.json +38 -0
- package/packages/core/README.md +37 -0
- package/packages/core/dist/capsules/index.d.ts +4 -0
- package/packages/core/dist/capsules/index.d.ts.map +1 -0
- package/packages/core/dist/capsules/index.js +4 -0
- package/packages/core/dist/capsules/index.js.map +1 -0
- package/packages/core/dist/capsules/loadCapsule.d.ts +11 -0
- package/packages/core/dist/capsules/loadCapsule.d.ts.map +1 -0
- package/packages/core/dist/capsules/loadCapsule.js +167 -0
- package/packages/core/dist/capsules/loadCapsule.js.map +1 -0
- package/packages/core/dist/capsules/runCapsule.d.ts +3 -0
- package/packages/core/dist/capsules/runCapsule.d.ts.map +1 -0
- package/packages/core/dist/capsules/runCapsule.js +333 -0
- package/packages/core/dist/capsules/runCapsule.js.map +1 -0
- package/packages/core/dist/capsules/types.d.ts +106 -0
- package/packages/core/dist/capsules/types.d.ts.map +1 -0
- package/packages/core/dist/capsules/types.js +2 -0
- package/packages/core/dist/capsules/types.js.map +1 -0
- package/packages/core/dist/durableWrite.d.ts +2 -0
- package/packages/core/dist/durableWrite.d.ts.map +1 -0
- package/packages/core/dist/durableWrite.js +34 -0
- package/packages/core/dist/durableWrite.js.map +1 -0
- package/packages/core/dist/errors/registry.d.ts +122 -0
- package/packages/core/dist/errors/registry.d.ts.map +1 -0
- package/packages/core/dist/errors/registry.js +206 -0
- package/packages/core/dist/errors/registry.js.map +1 -0
- package/packages/core/dist/errors/render.d.ts +3 -0
- package/packages/core/dist/errors/render.d.ts.map +1 -0
- package/packages/core/dist/errors/render.js +64 -0
- package/packages/core/dist/errors/render.js.map +1 -0
- package/packages/core/dist/errors.d.ts +5 -0
- package/packages/core/dist/errors.d.ts.map +1 -0
- package/packages/core/dist/errors.js +9 -0
- package/packages/core/dist/errors.js.map +1 -0
- package/packages/core/dist/evidence/appendEvidenceEvent.d.ts +27 -0
- package/packages/core/dist/evidence/appendEvidenceEvent.d.ts.map +1 -0
- package/packages/core/dist/evidence/appendEvidenceEvent.js +218 -0
- package/packages/core/dist/evidence/appendEvidenceEvent.js.map +1 -0
- package/packages/core/dist/evidence/assurance.d.ts +18 -0
- package/packages/core/dist/evidence/assurance.d.ts.map +1 -0
- package/packages/core/dist/evidence/assurance.js +38 -0
- package/packages/core/dist/evidence/assurance.js.map +1 -0
- package/packages/core/dist/evidence/index.d.ts +8 -0
- package/packages/core/dist/evidence/index.d.ts.map +1 -0
- package/packages/core/dist/evidence/index.js +8 -0
- package/packages/core/dist/evidence/index.js.map +1 -0
- package/packages/core/dist/evidence/jsonlLedger.d.ts +13 -0
- package/packages/core/dist/evidence/jsonlLedger.d.ts.map +1 -0
- package/packages/core/dist/evidence/jsonlLedger.js +171 -0
- package/packages/core/dist/evidence/jsonlLedger.js.map +1 -0
- package/packages/core/dist/evidence/linkEvidence.d.ts +4 -0
- package/packages/core/dist/evidence/linkEvidence.d.ts.map +1 -0
- package/packages/core/dist/evidence/linkEvidence.js +53 -0
- package/packages/core/dist/evidence/linkEvidence.js.map +1 -0
- package/packages/core/dist/evidence/replayEvidence.d.ts +6 -0
- package/packages/core/dist/evidence/replayEvidence.d.ts.map +1 -0
- package/packages/core/dist/evidence/replayEvidence.js +216 -0
- package/packages/core/dist/evidence/replayEvidence.js.map +1 -0
- package/packages/core/dist/evidence/results.d.ts +4 -0
- package/packages/core/dist/evidence/results.d.ts.map +1 -0
- package/packages/core/dist/evidence/results.js +32 -0
- package/packages/core/dist/evidence/results.js.map +1 -0
- package/packages/core/dist/evidence/types.d.ts +149 -0
- package/packages/core/dist/evidence/types.d.ts.map +1 -0
- package/packages/core/dist/evidence/types.js +2 -0
- package/packages/core/dist/evidence/types.js.map +1 -0
- package/packages/core/dist/host-profiles/claude.yml +29 -0
- package/packages/core/dist/host-profiles/codex.yml +29 -0
- package/packages/core/dist/host-profiles/copilot.yml +29 -0
- package/packages/core/dist/host-profiles/opencode.yml +29 -0
- package/packages/core/dist/hosts/conformanceStatus.d.ts +16 -0
- package/packages/core/dist/hosts/conformanceStatus.d.ts.map +1 -0
- package/packages/core/dist/hosts/conformanceStatus.js +160 -0
- package/packages/core/dist/hosts/conformanceStatus.js.map +1 -0
- package/packages/core/dist/hosts/index.d.ts +5 -0
- package/packages/core/dist/hosts/index.d.ts.map +1 -0
- package/packages/core/dist/hosts/index.js +5 -0
- package/packages/core/dist/hosts/index.js.map +1 -0
- package/packages/core/dist/hosts/loadHostProfile.d.ts +6 -0
- package/packages/core/dist/hosts/loadHostProfile.d.ts.map +1 -0
- package/packages/core/dist/hosts/loadHostProfile.js +41 -0
- package/packages/core/dist/hosts/loadHostProfile.js.map +1 -0
- package/packages/core/dist/hosts/projectHostFiles.d.ts +16 -0
- package/packages/core/dist/hosts/projectHostFiles.d.ts.map +1 -0
- package/packages/core/dist/hosts/projectHostFiles.js +272 -0
- package/packages/core/dist/hosts/projectHostFiles.js.map +1 -0
- package/packages/core/dist/hosts/types.d.ts +122 -0
- package/packages/core/dist/hosts/types.d.ts.map +1 -0
- package/packages/core/dist/hosts/types.js +2 -0
- package/packages/core/dist/hosts/types.js.map +1 -0
- package/packages/core/dist/index.d.ts +26 -0
- package/packages/core/dist/index.d.ts.map +1 -0
- package/packages/core/dist/index.js +31 -0
- package/packages/core/dist/index.js.map +1 -0
- package/packages/core/dist/init/index.d.ts +2 -0
- package/packages/core/dist/init/index.d.ts.map +1 -0
- package/packages/core/dist/init/index.js +3 -0
- package/packages/core/dist/init/index.js.map +1 -0
- package/packages/core/dist/init/scaffold.d.ts +28 -0
- package/packages/core/dist/init/scaffold.d.ts.map +1 -0
- package/packages/core/dist/init/scaffold.js +293 -0
- package/packages/core/dist/init/scaffold.js.map +1 -0
- package/packages/core/dist/markers/appendOnly.d.ts +23 -0
- package/packages/core/dist/markers/appendOnly.d.ts.map +1 -0
- package/packages/core/dist/markers/appendOnly.js +75 -0
- package/packages/core/dist/markers/appendOnly.js.map +1 -0
- package/packages/core/dist/markers/bindingSetHash.d.ts +28 -0
- package/packages/core/dist/markers/bindingSetHash.d.ts.map +1 -0
- package/packages/core/dist/markers/bindingSetHash.js +33 -0
- package/packages/core/dist/markers/bindingSetHash.js.map +1 -0
- package/packages/core/dist/markers/canonicalJson.d.ts +4 -0
- package/packages/core/dist/markers/canonicalJson.d.ts.map +1 -0
- package/packages/core/dist/markers/canonicalJson.js +51 -0
- package/packages/core/dist/markers/canonicalJson.js.map +1 -0
- package/packages/core/dist/markers/ciAuthority.d.ts +17 -0
- package/packages/core/dist/markers/ciAuthority.d.ts.map +1 -0
- package/packages/core/dist/markers/ciAuthority.js +131 -0
- package/packages/core/dist/markers/ciAuthority.js.map +1 -0
- package/packages/core/dist/markers/cli/bind.d.ts +48 -0
- package/packages/core/dist/markers/cli/bind.d.ts.map +1 -0
- package/packages/core/dist/markers/cli/bind.js +198 -0
- package/packages/core/dist/markers/cli/bind.js.map +1 -0
- package/packages/core/dist/markers/cli/index.d.ts +9 -0
- package/packages/core/dist/markers/cli/index.d.ts.map +1 -0
- package/packages/core/dist/markers/cli/index.js +15 -0
- package/packages/core/dist/markers/cli/index.js.map +1 -0
- package/packages/core/dist/markers/cli/io.d.ts +18 -0
- package/packages/core/dist/markers/cli/io.d.ts.map +1 -0
- package/packages/core/dist/markers/cli/io.js +62 -0
- package/packages/core/dist/markers/cli/io.js.map +1 -0
- package/packages/core/dist/markers/cli/precommit.d.ts +32 -0
- package/packages/core/dist/markers/cli/precommit.d.ts.map +1 -0
- package/packages/core/dist/markers/cli/precommit.js +174 -0
- package/packages/core/dist/markers/cli/precommit.js.map +1 -0
- package/packages/core/dist/markers/cli/prove.d.ts +69 -0
- package/packages/core/dist/markers/cli/prove.d.ts.map +1 -0
- package/packages/core/dist/markers/cli/prove.js +381 -0
- package/packages/core/dist/markers/cli/prove.js.map +1 -0
- package/packages/core/dist/markers/cli/scan.d.ts +63 -0
- package/packages/core/dist/markers/cli/scan.d.ts.map +1 -0
- package/packages/core/dist/markers/cli/scan.js +233 -0
- package/packages/core/dist/markers/cli/scan.js.map +1 -0
- package/packages/core/dist/markers/cli/shared.d.ts +25 -0
- package/packages/core/dist/markers/cli/shared.d.ts.map +1 -0
- package/packages/core/dist/markers/cli/shared.js +123 -0
- package/packages/core/dist/markers/cli/shared.js.map +1 -0
- package/packages/core/dist/markers/cli/validateLedger.d.ts +38 -0
- package/packages/core/dist/markers/cli/validateLedger.d.ts.map +1 -0
- package/packages/core/dist/markers/cli/validateLedger.js +81 -0
- package/packages/core/dist/markers/cli/validateLedger.js.map +1 -0
- package/packages/core/dist/markers/cli/verify.d.ts +65 -0
- package/packages/core/dist/markers/cli/verify.d.ts.map +1 -0
- package/packages/core/dist/markers/cli/verify.js +245 -0
- package/packages/core/dist/markers/cli/verify.js.map +1 -0
- package/packages/core/dist/markers/commentPrefix.d.ts +7 -0
- package/packages/core/dist/markers/commentPrefix.d.ts.map +1 -0
- package/packages/core/dist/markers/commentPrefix.js +79 -0
- package/packages/core/dist/markers/commentPrefix.js.map +1 -0
- package/packages/core/dist/markers/constants.d.ts +10 -0
- package/packages/core/dist/markers/constants.d.ts.map +1 -0
- package/packages/core/dist/markers/constants.js +13 -0
- package/packages/core/dist/markers/constants.js.map +1 -0
- package/packages/core/dist/markers/evidenceLedger.d.ts +150 -0
- package/packages/core/dist/markers/evidenceLedger.d.ts.map +1 -0
- package/packages/core/dist/markers/evidenceLedger.js +391 -0
- package/packages/core/dist/markers/evidenceLedger.js.map +1 -0
- package/packages/core/dist/markers/freshness.d.ts +125 -0
- package/packages/core/dist/markers/freshness.d.ts.map +1 -0
- package/packages/core/dist/markers/freshness.js +605 -0
- package/packages/core/dist/markers/freshness.js.map +1 -0
- package/packages/core/dist/markers/index.d.ts +26 -0
- package/packages/core/dist/markers/index.d.ts.map +1 -0
- package/packages/core/dist/markers/index.js +38 -0
- package/packages/core/dist/markers/index.js.map +1 -0
- package/packages/core/dist/markers/keygen.d.ts +6 -0
- package/packages/core/dist/markers/keygen.d.ts.map +1 -0
- package/packages/core/dist/markers/keygen.js +18 -0
- package/packages/core/dist/markers/keygen.js.map +1 -0
- package/packages/core/dist/markers/keyring.d.ts +23 -0
- package/packages/core/dist/markers/keyring.d.ts.map +1 -0
- package/packages/core/dist/markers/keyring.js +93 -0
- package/packages/core/dist/markers/keyring.js.map +1 -0
- package/packages/core/dist/markers/markerLine.d.ts +35 -0
- package/packages/core/dist/markers/markerLine.d.ts.map +1 -0
- package/packages/core/dist/markers/markerLine.js +125 -0
- package/packages/core/dist/markers/markerLine.js.map +1 -0
- package/packages/core/dist/markers/physicalLines.d.ts +10 -0
- package/packages/core/dist/markers/physicalLines.d.ts.map +1 -0
- package/packages/core/dist/markers/physicalLines.js +48 -0
- package/packages/core/dist/markers/physicalLines.js.map +1 -0
- package/packages/core/dist/markers/policyHash.d.ts +4 -0
- package/packages/core/dist/markers/policyHash.d.ts.map +1 -0
- package/packages/core/dist/markers/policyHash.js +14 -0
- package/packages/core/dist/markers/policyHash.js.map +1 -0
- package/packages/core/dist/markers/proofSignature.d.ts +29 -0
- package/packages/core/dist/markers/proofSignature.d.ts.map +1 -0
- package/packages/core/dist/markers/proofSignature.js +106 -0
- package/packages/core/dist/markers/proofSignature.js.map +1 -0
- package/packages/core/dist/markers/reconcile.d.ts +26 -0
- package/packages/core/dist/markers/reconcile.d.ts.map +1 -0
- package/packages/core/dist/markers/reconcile.js +52 -0
- package/packages/core/dist/markers/reconcile.js.map +1 -0
- package/packages/core/dist/markers/registry.d.ts +53 -0
- package/packages/core/dist/markers/registry.d.ts.map +1 -0
- package/packages/core/dist/markers/registry.js +161 -0
- package/packages/core/dist/markers/registry.js.map +1 -0
- package/packages/core/dist/markers/rowHash.d.ts +2 -0
- package/packages/core/dist/markers/rowHash.d.ts.map +1 -0
- package/packages/core/dist/markers/rowHash.js +10 -0
- package/packages/core/dist/markers/rowHash.js.map +1 -0
- package/packages/core/dist/markers/scanner.d.ts +67 -0
- package/packages/core/dist/markers/scanner.d.ts.map +1 -0
- package/packages/core/dist/markers/scanner.js +292 -0
- package/packages/core/dist/markers/scanner.js.map +1 -0
- package/packages/core/dist/markers/schemas/binding-registry-event.schema.json +41 -0
- package/packages/core/dist/markers/schemas/freshness-status.schema.json +134 -0
- package/packages/core/dist/markers/schemas/proof-event.schema.json +170 -0
- package/packages/core/dist/markers/spanCanon.d.ts +4 -0
- package/packages/core/dist/markers/spanCanon.d.ts.map +1 -0
- package/packages/core/dist/markers/spanCanon.js +42 -0
- package/packages/core/dist/markers/spanCanon.js.map +1 -0
- package/packages/core/dist/markers/swiftFuncRecognizer.d.ts +36 -0
- package/packages/core/dist/markers/swiftFuncRecognizer.d.ts.map +1 -0
- package/packages/core/dist/markers/swiftFuncRecognizer.js +638 -0
- package/packages/core/dist/markers/swiftFuncRecognizer.js.map +1 -0
- package/packages/core/dist/markers/validators.d.ts +13 -0
- package/packages/core/dist/markers/validators.d.ts.map +1 -0
- package/packages/core/dist/markers/validators.js +64 -0
- package/packages/core/dist/markers/validators.js.map +1 -0
- package/packages/core/dist/markers/verificationContextHash.d.ts +23 -0
- package/packages/core/dist/markers/verificationContextHash.d.ts.map +1 -0
- package/packages/core/dist/markers/verificationContextHash.js +96 -0
- package/packages/core/dist/markers/verificationContextHash.js.map +1 -0
- package/packages/core/dist/markers/verifierPresets.d.ts +18 -0
- package/packages/core/dist/markers/verifierPresets.d.ts.map +1 -0
- package/packages/core/dist/markers/verifierPresets.js +71 -0
- package/packages/core/dist/markers/verifierPresets.js.map +1 -0
- package/packages/core/dist/markers/verifierResolver.d.ts +27 -0
- package/packages/core/dist/markers/verifierResolver.d.ts.map +1 -0
- package/packages/core/dist/markers/verifierResolver.js +151 -0
- package/packages/core/dist/markers/verifierResolver.js.map +1 -0
- package/packages/core/dist/migration/index.d.ts +2 -0
- package/packages/core/dist/migration/index.d.ts.map +1 -0
- package/packages/core/dist/migration/index.js +2 -0
- package/packages/core/dist/migration/index.js.map +1 -0
- package/packages/core/dist/migration/testMatrix.d.ts +42 -0
- package/packages/core/dist/migration/testMatrix.d.ts.map +1 -0
- package/packages/core/dist/migration/testMatrix.js +351 -0
- package/packages/core/dist/migration/testMatrix.js.map +1 -0
- package/packages/core/dist/package/index.d.ts +2 -0
- package/packages/core/dist/package/index.d.ts.map +1 -0
- package/packages/core/dist/package/index.js +2 -0
- package/packages/core/dist/package/index.js.map +1 -0
- package/packages/core/dist/package/inspectPackage.d.ts +67 -0
- package/packages/core/dist/package/inspectPackage.d.ts.map +1 -0
- package/packages/core/dist/package/inspectPackage.js +371 -0
- package/packages/core/dist/package/inspectPackage.js.map +1 -0
- package/packages/core/dist/presentation/candidates.d.ts +13 -0
- package/packages/core/dist/presentation/candidates.d.ts.map +1 -0
- package/packages/core/dist/presentation/candidates.js +86 -0
- package/packages/core/dist/presentation/candidates.js.map +1 -0
- package/packages/core/dist/presentation/index.d.ts +8 -0
- package/packages/core/dist/presentation/index.d.ts.map +1 -0
- package/packages/core/dist/presentation/index.js +8 -0
- package/packages/core/dist/presentation/index.js.map +1 -0
- package/packages/core/dist/presentation/items.d.ts +18 -0
- package/packages/core/dist/presentation/items.d.ts.map +1 -0
- package/packages/core/dist/presentation/items.js +228 -0
- package/packages/core/dist/presentation/items.js.map +1 -0
- package/packages/core/dist/presentation/ordering.d.ts +8 -0
- package/packages/core/dist/presentation/ordering.d.ts.map +1 -0
- package/packages/core/dist/presentation/ordering.js +31 -0
- package/packages/core/dist/presentation/ordering.js.map +1 -0
- package/packages/core/dist/presentation/planHelpers.d.ts +26 -0
- package/packages/core/dist/presentation/planHelpers.d.ts.map +1 -0
- package/packages/core/dist/presentation/planHelpers.js +62 -0
- package/packages/core/dist/presentation/planHelpers.js.map +1 -0
- package/packages/core/dist/presentation/presentationFormat.d.ts +39 -0
- package/packages/core/dist/presentation/presentationFormat.d.ts.map +1 -0
- package/packages/core/dist/presentation/presentationFormat.js +58 -0
- package/packages/core/dist/presentation/presentationFormat.js.map +1 -0
- package/packages/core/dist/presentation/renderCard.d.ts +37 -0
- package/packages/core/dist/presentation/renderCard.d.ts.map +1 -0
- package/packages/core/dist/presentation/renderCard.js +129 -0
- package/packages/core/dist/presentation/renderCard.js.map +1 -0
- package/packages/core/dist/presentation/scoring.d.ts +10 -0
- package/packages/core/dist/presentation/scoring.d.ts.map +1 -0
- package/packages/core/dist/presentation/scoring.js +82 -0
- package/packages/core/dist/presentation/scoring.js.map +1 -0
- package/packages/core/dist/presentation/selectPlan.d.ts +4 -0
- package/packages/core/dist/presentation/selectPlan.d.ts.map +1 -0
- package/packages/core/dist/presentation/selectPlan.js +122 -0
- package/packages/core/dist/presentation/selectPlan.js.map +1 -0
- package/packages/core/dist/presentation/selectShowcasePlan.d.ts +3 -0
- package/packages/core/dist/presentation/selectShowcasePlan.d.ts.map +1 -0
- package/packages/core/dist/presentation/selectShowcasePlan.js +6 -0
- package/packages/core/dist/presentation/selectShowcasePlan.js.map +1 -0
- package/packages/core/dist/presentation/selectWalkthroughPlan.d.ts +3 -0
- package/packages/core/dist/presentation/selectWalkthroughPlan.d.ts.map +1 -0
- package/packages/core/dist/presentation/selectWalkthroughPlan.js +6 -0
- package/packages/core/dist/presentation/selectWalkthroughPlan.js.map +1 -0
- package/packages/core/dist/presentation/selection.d.ts +7 -0
- package/packages/core/dist/presentation/selection.d.ts.map +1 -0
- package/packages/core/dist/presentation/selection.js +20 -0
- package/packages/core/dist/presentation/selection.js.map +1 -0
- package/packages/core/dist/presentation/snapshot.d.ts +12 -0
- package/packages/core/dist/presentation/snapshot.d.ts.map +1 -0
- package/packages/core/dist/presentation/snapshot.js +53 -0
- package/packages/core/dist/presentation/snapshot.js.map +1 -0
- package/packages/core/dist/presentation/types.d.ts +172 -0
- package/packages/core/dist/presentation/types.d.ts.map +1 -0
- package/packages/core/dist/presentation/types.js +2 -0
- package/packages/core/dist/presentation/types.js.map +1 -0
- package/packages/core/dist/redact.d.ts +11 -0
- package/packages/core/dist/redact.d.ts.map +1 -0
- package/packages/core/dist/redact.js +17 -0
- package/packages/core/dist/redact.js.map +1 -0
- package/packages/core/dist/roots.d.ts +81 -0
- package/packages/core/dist/roots.d.ts.map +1 -0
- package/packages/core/dist/roots.js +220 -0
- package/packages/core/dist/roots.js.map +1 -0
- package/packages/core/dist/schema/cliResult.d.ts +34 -0
- package/packages/core/dist/schema/cliResult.d.ts.map +1 -0
- package/packages/core/dist/schema/cliResult.js +35 -0
- package/packages/core/dist/schema/cliResult.js.map +1 -0
- package/packages/core/dist/schema/diagnostic.d.ts +26 -0
- package/packages/core/dist/schema/diagnostic.d.ts.map +1 -0
- package/packages/core/dist/schema/diagnostic.js +28 -0
- package/packages/core/dist/schema/diagnostic.js.map +1 -0
- package/packages/core/dist/schema/index.d.ts +8 -0
- package/packages/core/dist/schema/index.d.ts.map +1 -0
- package/packages/core/dist/schema/index.js +9 -0
- package/packages/core/dist/schema/index.js.map +1 -0
- package/packages/core/dist/schema/registry.d.ts +15 -0
- package/packages/core/dist/schema/registry.d.ts.map +1 -0
- package/packages/core/dist/schema/registry.js +206 -0
- package/packages/core/dist/schema/registry.js.map +1 -0
- package/packages/core/dist/schema/syntheticContracts.d.ts +3 -0
- package/packages/core/dist/schema/syntheticContracts.d.ts.map +1 -0
- package/packages/core/dist/schema/syntheticContracts.js +342 -0
- package/packages/core/dist/schema/syntheticContracts.js.map +1 -0
- package/packages/core/dist/schema/validate.d.ts +21 -0
- package/packages/core/dist/schema/validate.d.ts.map +1 -0
- package/packages/core/dist/schema/validate.js +210 -0
- package/packages/core/dist/schema/validate.js.map +1 -0
- package/packages/core/dist/schemas/v1/authority.schema.json +70 -0
- package/packages/core/dist/schemas/v1/cli-result.schema.json +30 -0
- package/packages/core/dist/schemas/v1/common.schema.json +274 -0
- package/packages/core/dist/schemas/v1/demo-capsule.schema.json +78 -0
- package/packages/core/dist/schemas/v1/evidence-append-result.schema.json +14 -0
- package/packages/core/dist/schemas/v1/evidence-event.schema.json +181 -0
- package/packages/core/dist/schemas/v1/evidence-status-result.schema.json +68 -0
- package/packages/core/dist/schemas/v1/host-profile.schema.json +94 -0
- package/packages/core/dist/schemas/v1/host-status-result.schema.json +49 -0
- package/packages/core/dist/schemas/v1/keyring.schema.json +77 -0
- package/packages/core/dist/schemas/v1/ledger.schema.json +99 -0
- package/packages/core/dist/schemas/v1/marker.schema.json +84 -0
- package/packages/core/dist/schemas/v1/matrix-list-result.schema.json +67 -0
- package/packages/core/dist/schemas/v1/matrix-mutation-result.schema.json +49 -0
- package/packages/core/dist/schemas/v1/matrix-validation-result.schema.json +77 -0
- package/packages/core/dist/schemas/v1/mcp-tool-results.schema.json +34 -0
- package/packages/core/dist/schemas/v1/migration-test-matrix-result.schema.json +76 -0
- package/packages/core/dist/schemas/v1/presentation-plan-result.schema.json +62 -0
- package/packages/core/dist/schemas/v1/presentation-plan.schema.json +259 -0
- package/packages/core/dist/schemas/v1/release-gate-result.schema.json +136 -0
- package/packages/core/dist/schemas/v1/showcase-approval-result.schema.json +5 -0
- package/packages/core/dist/schemas/v1/showcase-event-append-result.schema.json +17 -0
- package/packages/core/dist/schemas/v1/showcase-event.schema.json +235 -0
- package/packages/core/dist/schemas/v1/showcase-finish-result.schema.json +5 -0
- package/packages/core/dist/schemas/v1/showcase-run-status-result.schema.json +70 -0
- package/packages/core/dist/schemas/v1/showcase-start-result.schema.json +5 -0
- package/packages/core/dist/schemas/v1/use-case-file.schema.json +178 -0
- package/packages/core/dist/schemas/v1/workflow-mode.schema.json +16 -0
- package/packages/core/dist/schemas/v1/workspace-config.schema.json +58 -0
- package/packages/core/dist/showcase/appendShowcaseEvent.d.ts +116 -0
- package/packages/core/dist/showcase/appendShowcaseEvent.d.ts.map +1 -0
- package/packages/core/dist/showcase/appendShowcaseEvent.js +353 -0
- package/packages/core/dist/showcase/appendShowcaseEvent.js.map +1 -0
- package/packages/core/dist/showcase/approval.d.ts +2 -0
- package/packages/core/dist/showcase/approval.d.ts.map +1 -0
- package/packages/core/dist/showcase/approval.js +2 -0
- package/packages/core/dist/showcase/approval.js.map +1 -0
- package/packages/core/dist/showcase/approvalAuthority.d.ts +19 -0
- package/packages/core/dist/showcase/approvalAuthority.d.ts.map +1 -0
- package/packages/core/dist/showcase/approvalAuthority.js +46 -0
- package/packages/core/dist/showcase/approvalAuthority.js.map +1 -0
- package/packages/core/dist/showcase/index.d.ts +11 -0
- package/packages/core/dist/showcase/index.d.ts.map +1 -0
- package/packages/core/dist/showcase/index.js +11 -0
- package/packages/core/dist/showcase/index.js.map +1 -0
- package/packages/core/dist/showcase/jsonlLedger.d.ts +11 -0
- package/packages/core/dist/showcase/jsonlLedger.d.ts.map +1 -0
- package/packages/core/dist/showcase/jsonlLedger.js +50 -0
- package/packages/core/dist/showcase/jsonlLedger.js.map +1 -0
- package/packages/core/dist/showcase/planBinding.d.ts +5 -0
- package/packages/core/dist/showcase/planBinding.d.ts.map +1 -0
- package/packages/core/dist/showcase/planBinding.js +33 -0
- package/packages/core/dist/showcase/planBinding.js.map +1 -0
- package/packages/core/dist/showcase/replayRun.d.ts +5 -0
- package/packages/core/dist/showcase/replayRun.d.ts.map +1 -0
- package/packages/core/dist/showcase/replayRun.js +199 -0
- package/packages/core/dist/showcase/replayRun.js.map +1 -0
- package/packages/core/dist/showcase/results.d.ts +3 -0
- package/packages/core/dist/showcase/results.d.ts.map +1 -0
- package/packages/core/dist/showcase/results.js +4 -0
- package/packages/core/dist/showcase/results.js.map +1 -0
- package/packages/core/dist/showcase/revisionEpochs.d.ts +2 -0
- package/packages/core/dist/showcase/revisionEpochs.d.ts.map +1 -0
- package/packages/core/dist/showcase/revisionEpochs.js +2 -0
- package/packages/core/dist/showcase/revisionEpochs.js.map +1 -0
- package/packages/core/dist/showcase/startRun.d.ts +2 -0
- package/packages/core/dist/showcase/startRun.d.ts.map +1 -0
- package/packages/core/dist/showcase/startRun.js +2 -0
- package/packages/core/dist/showcase/startRun.js.map +1 -0
- package/packages/core/dist/showcase/types.d.ts +66 -0
- package/packages/core/dist/showcase/types.d.ts.map +1 -0
- package/packages/core/dist/showcase/types.js +2 -0
- package/packages/core/dist/showcase/types.js.map +1 -0
- package/packages/core/dist/skills/canonicalSkills.d.ts +3 -0
- package/packages/core/dist/skills/canonicalSkills.d.ts.map +1 -0
- package/packages/core/dist/skills/canonicalSkills.js +7 -0
- package/packages/core/dist/skills/canonicalSkills.js.map +1 -0
- package/packages/core/dist/skills/index.d.ts +4 -0
- package/packages/core/dist/skills/index.d.ts.map +1 -0
- package/packages/core/dist/skills/index.js +4 -0
- package/packages/core/dist/skills/index.js.map +1 -0
- package/packages/core/dist/skills/types.d.ts +26 -0
- package/packages/core/dist/skills/types.d.ts.map +1 -0
- package/packages/core/dist/skills/types.js +2 -0
- package/packages/core/dist/skills/types.js.map +1 -0
- package/packages/core/dist/skills/validateSkillAssets.d.ts +6 -0
- package/packages/core/dist/skills/validateSkillAssets.d.ts.map +1 -0
- package/packages/core/dist/skills/validateSkillAssets.js +218 -0
- package/packages/core/dist/skills/validateSkillAssets.js.map +1 -0
- package/packages/core/dist/useCases/integrity.d.ts +11 -0
- package/packages/core/dist/useCases/integrity.d.ts.map +1 -0
- package/packages/core/dist/useCases/integrity.js +178 -0
- package/packages/core/dist/useCases/integrity.js.map +1 -0
- package/packages/core/dist/useCases/loadUseCaseMatrix.d.ts +7 -0
- package/packages/core/dist/useCases/loadUseCaseMatrix.d.ts.map +1 -0
- package/packages/core/dist/useCases/loadUseCaseMatrix.js +74 -0
- package/packages/core/dist/useCases/loadUseCaseMatrix.js.map +1 -0
- package/packages/core/dist/useCases/mutateUseCaseMatrix.d.ts +25 -0
- package/packages/core/dist/useCases/mutateUseCaseMatrix.d.ts.map +1 -0
- package/packages/core/dist/useCases/mutateUseCaseMatrix.js +198 -0
- package/packages/core/dist/useCases/mutateUseCaseMatrix.js.map +1 -0
- package/packages/core/dist/useCases/query.d.ts +12 -0
- package/packages/core/dist/useCases/query.d.ts.map +1 -0
- package/packages/core/dist/useCases/query.js +47 -0
- package/packages/core/dist/useCases/query.js.map +1 -0
- package/packages/core/dist/useCases/types.d.ts +149 -0
- package/packages/core/dist/useCases/types.d.ts.map +1 -0
- package/packages/core/dist/useCases/types.js +2 -0
- package/packages/core/dist/useCases/types.js.map +1 -0
- package/packages/core/dist/useCases/validateUseCaseFile.d.ts +9 -0
- package/packages/core/dist/useCases/validateUseCaseFile.d.ts.map +1 -0
- package/packages/core/dist/useCases/validateUseCaseFile.js +107 -0
- package/packages/core/dist/useCases/validateUseCaseFile.js.map +1 -0
- package/packages/core/dist/version.d.ts +9 -0
- package/packages/core/dist/version.d.ts.map +1 -0
- package/packages/core/dist/version.js +17 -0
- package/packages/core/dist/version.js.map +1 -0
- package/packages/core/package.json +39 -0
- package/packages/mcp/README.md +48 -0
- package/packages/mcp/dist/index.d.ts +20 -0
- package/packages/mcp/dist/index.d.ts.map +1 -0
- package/packages/mcp/dist/index.js +180 -0
- package/packages/mcp/dist/index.js.map +1 -0
- package/packages/mcp/dist/prompts.d.ts +32 -0
- package/packages/mcp/dist/prompts.d.ts.map +1 -0
- package/packages/mcp/dist/prompts.js +199 -0
- package/packages/mcp/dist/prompts.js.map +1 -0
- package/packages/mcp/dist/resources.d.ts +22 -0
- package/packages/mcp/dist/resources.d.ts.map +1 -0
- package/packages/mcp/dist/resources.js +342 -0
- package/packages/mcp/dist/resources.js.map +1 -0
- package/packages/mcp/dist/toolHandlers.d.ts +28 -0
- package/packages/mcp/dist/toolHandlers.d.ts.map +1 -0
- package/packages/mcp/dist/toolHandlers.js +592 -0
- package/packages/mcp/dist/toolHandlers.js.map +1 -0
- package/packages/mcp/dist/toolSchemas.d.ts +23 -0
- package/packages/mcp/dist/toolSchemas.d.ts.map +1 -0
- package/packages/mcp/dist/toolSchemas.js +223 -0
- package/packages/mcp/dist/toolSchemas.js.map +1 -0
- package/packages/mcp/dist/tools.d.ts +22 -0
- package/packages/mcp/dist/tools.d.ts.map +1 -0
- package/packages/mcp/dist/tools.js +65 -0
- package/packages/mcp/dist/tools.js.map +1 -0
- package/packages/mcp/package.json +38 -0
- package/plugin.json +6 -0
- package/schemas/v1/authority.schema.json +70 -0
- package/schemas/v1/cli-result.schema.json +30 -0
- package/schemas/v1/common.schema.json +274 -0
- package/schemas/v1/demo-capsule.schema.json +78 -0
- package/schemas/v1/evidence-append-result.schema.json +14 -0
- package/schemas/v1/evidence-event.schema.json +181 -0
- package/schemas/v1/evidence-status-result.schema.json +68 -0
- package/schemas/v1/host-profile.schema.json +94 -0
- package/schemas/v1/host-status-result.schema.json +49 -0
- package/schemas/v1/keyring.schema.json +77 -0
- package/schemas/v1/ledger.schema.json +99 -0
- package/schemas/v1/marker.schema.json +84 -0
- package/schemas/v1/matrix-list-result.schema.json +67 -0
- package/schemas/v1/matrix-mutation-result.schema.json +49 -0
- package/schemas/v1/matrix-validation-result.schema.json +77 -0
- package/schemas/v1/mcp-tool-results.schema.json +34 -0
- package/schemas/v1/migration-test-matrix-result.schema.json +76 -0
- package/schemas/v1/presentation-plan-result.schema.json +62 -0
- package/schemas/v1/presentation-plan.schema.json +259 -0
- package/schemas/v1/release-gate-result.schema.json +136 -0
- package/schemas/v1/showcase-approval-result.schema.json +5 -0
- package/schemas/v1/showcase-event-append-result.schema.json +17 -0
- package/schemas/v1/showcase-event.schema.json +235 -0
- package/schemas/v1/showcase-finish-result.schema.json +5 -0
- package/schemas/v1/showcase-run-status-result.schema.json +70 -0
- package/schemas/v1/showcase-start-result.schema.json +5 -0
- package/schemas/v1/use-case-file.schema.json +178 -0
- package/schemas/v1/workflow-mode.schema.json +16 -0
- package/schemas/v1/workspace-config.schema.json +58 -0
- package/use-cases/capsule/demos.yml +212 -0
- package/use-cases/capsule/runner.yml +49 -0
- package/use-cases/diagnostics/contracts.yml +239 -0
- package/use-cases/evidence/core.yml +32 -0
- package/use-cases/evidence/ledger.yml +330 -0
- package/use-cases/hosts/profiles.yml +365 -0
- package/use-cases/hosts/projections.yml +96 -0
- package/use-cases/lifecycle/loop.yml +229 -0
- package/use-cases/matrix/core.yml +92 -0
- package/use-cases/matrix/product.yml +289 -0
- package/use-cases/mcp/surface.yml +257 -0
- package/use-cases/mcp/wrapper.yml +100 -0
- package/use-cases/migration/importer.yml +171 -0
- package/use-cases/migration/test-matrix.yml +32 -0
- package/use-cases/planning/cards.yml +215 -0
- package/use-cases/release/package.yml +80 -0
- package/use-cases/release/proof.yml +180 -0
- package/use-cases/roadmap/deferred.yml +184 -0
- package/use-cases/showcase/flow.yml +269 -0
- package/use-cases/showcase/live.yml +44 -0
- package/use-cases/skills/assets.yml +92 -0
- package/use-cases.yml +9 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { choosePresentationFormat, formatToDeliveryKind } from "./presentationFormat.js";
|
|
2
|
+
import { expectedObservations, policySnapshot, resolvedSteps, verificationRequirements } from "./planHelpers.js";
|
|
3
|
+
/**
|
|
4
|
+
* Item transforms & plan-content assembly: turning a selected candidate into a
|
|
5
|
+
* fully-resolved plan item (delivery kind, presentation format, required
|
|
6
|
+
* evidence, evidence/freshness summaries, gaps) plus the per-mode section and
|
|
7
|
+
* plan-level gap construction that depend on the resolved items.
|
|
8
|
+
*/
|
|
9
|
+
export function toPlanItem(candidate, evidence, profile, _hostSurface) {
|
|
10
|
+
const useCase = candidate.useCase;
|
|
11
|
+
const evidenceSummary = evidenceForUseCase(evidence, useCase);
|
|
12
|
+
const requiredEvidence = requiredEvidenceFor(useCase, evidenceSummary.status);
|
|
13
|
+
const gaps = gapsForItem(useCase, evidenceSummary.readiness, requiredEvidence);
|
|
14
|
+
const baseDeliveryKind = baseDeliveryKindFor(useCase, profile.mode);
|
|
15
|
+
const presentationFormat = choosePresentationFormat({
|
|
16
|
+
baseDeliveryKind,
|
|
17
|
+
needsUser: needsUserActor(useCase),
|
|
18
|
+
// v1: auto-selection emits testing / reviewing / explaining / user_led.
|
|
19
|
+
// `comparing` and `inspecting` are reachable only via hand-authored plans
|
|
20
|
+
// until row affordances (isContrast / artifact hints) land -- see the spec
|
|
21
|
+
// open questions.
|
|
22
|
+
isContrast: false
|
|
23
|
+
});
|
|
24
|
+
const deliveryKind = formatToDeliveryKind(presentationFormat, baseDeliveryKind);
|
|
25
|
+
return {
|
|
26
|
+
plan_item_id: `item.${useCase.value.id}`,
|
|
27
|
+
presentation_format: presentationFormat,
|
|
28
|
+
delivery_kind: deliveryKind,
|
|
29
|
+
scenario_scope: useCase.value.scenarios?.length ? "explicit" : "whole_use_case",
|
|
30
|
+
use_case_id: useCase.value.id,
|
|
31
|
+
scenario_ids: (useCase.value.scenarios ?? []).map((scenario) => scenario.id),
|
|
32
|
+
use_case_content_hash: useCase.semanticHash,
|
|
33
|
+
estimated_seconds: profile.fallbackEstimateSeconds,
|
|
34
|
+
estimate_source: "default_profile",
|
|
35
|
+
setup_steps: [],
|
|
36
|
+
resolved_steps: resolvedSteps(useCase),
|
|
37
|
+
expected_observations: expectedObservations(useCase),
|
|
38
|
+
teardown_steps: [],
|
|
39
|
+
required_permissions: [],
|
|
40
|
+
safety_constraints: [],
|
|
41
|
+
verification_policy_snapshot: policySnapshot(useCase.value.verification_policy),
|
|
42
|
+
approval_policy_snapshot: policySnapshot(useCase.value.approval_policy),
|
|
43
|
+
approval_resolution_required_at_run_start: policySnapshot(useCase.value.approval_policy).mode === "ask",
|
|
44
|
+
required_evidence: requiredEvidence,
|
|
45
|
+
evidence_summary: {
|
|
46
|
+
readiness: evidenceSummary.readiness,
|
|
47
|
+
active_evidence_ids: evidenceSummary.activeEvidenceIds,
|
|
48
|
+
basis: evidenceSummary.basis
|
|
49
|
+
},
|
|
50
|
+
freshness_summary: {
|
|
51
|
+
state: evidenceSummary.freshnessState,
|
|
52
|
+
basis: evidenceSummary.freshnessBasis
|
|
53
|
+
},
|
|
54
|
+
known_gaps: gaps,
|
|
55
|
+
selection_reasons: candidate.reasons,
|
|
56
|
+
selection_reason_codes: candidate.reasonCodes,
|
|
57
|
+
score_components: candidate.scoreComponents
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The base (verification-derived) delivery kind for an item before a
|
|
62
|
+
* presentation format is chosen. Showcase prefers live-where-safe: it keeps
|
|
63
|
+
* `live_demo` whenever the row carries live_demo verification, otherwise it
|
|
64
|
+
* falls back to the same projection walkthrough uses. This replaces the old
|
|
65
|
+
* hard `showcase ? "live_demo"` force so destructive / external / human-judgment
|
|
66
|
+
* rows get an honest base kind.
|
|
67
|
+
*/
|
|
68
|
+
function baseDeliveryKindFor(useCase, mode) {
|
|
69
|
+
if (mode === "showcase") {
|
|
70
|
+
const requirements = verificationRequirements(useCase);
|
|
71
|
+
if (requirements.some((requirement) => requirement.evidence_kind === "live_demo")) {
|
|
72
|
+
return "live_demo";
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return deliveryKindFor(useCase);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* True when an item needs a human actor: any verification requirement that
|
|
79
|
+
* lists `user` among its required verifiers, or an approval policy in `ask`
|
|
80
|
+
* mode. Such items are presented with the `user_led` (Over to you) format.
|
|
81
|
+
*/
|
|
82
|
+
function needsUserActor(useCase) {
|
|
83
|
+
const requirements = verificationRequirements(useCase);
|
|
84
|
+
if (requirements.some((requirement) => requirement.required_verifiers.includes("user"))) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
return policySnapshot(useCase.value.approval_policy).mode === "ask";
|
|
88
|
+
}
|
|
89
|
+
function deliveryKindFor(useCase) {
|
|
90
|
+
const requirements = verificationRequirements(useCase);
|
|
91
|
+
if (requirements.some((requirement) => requirement.evidence_kind === "live_demo")) {
|
|
92
|
+
return "live_demo";
|
|
93
|
+
}
|
|
94
|
+
if (requirements.length > 0) {
|
|
95
|
+
return "evidence_review";
|
|
96
|
+
}
|
|
97
|
+
return "explanation";
|
|
98
|
+
}
|
|
99
|
+
function evidenceForUseCase(evidence, useCase) {
|
|
100
|
+
if (!evidence.complete && evidence.integrity.unknownScopeDamage) {
|
|
101
|
+
return {
|
|
102
|
+
readiness: "unknown",
|
|
103
|
+
activeEvidenceIds: [],
|
|
104
|
+
status: "unknown_due_to_integrity",
|
|
105
|
+
basis: "evidence_integrity_incomplete",
|
|
106
|
+
freshnessState: "unknown",
|
|
107
|
+
freshnessBasis: "evidence_integrity_incomplete"
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const matching = evidence.aggregates.filter((aggregate) => aggregate.status === "active" &&
|
|
111
|
+
aggregate.targetLinks.some((target) => target.use_case_id === useCase.value.id));
|
|
112
|
+
if (matching.length === 0) {
|
|
113
|
+
return {
|
|
114
|
+
readiness: "missing",
|
|
115
|
+
activeEvidenceIds: [],
|
|
116
|
+
status: "missing",
|
|
117
|
+
basis: "no_active_evidence",
|
|
118
|
+
freshnessState: "unknown",
|
|
119
|
+
freshnessBasis: "missing_evidence"
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
const semanticMatches = matching.some((aggregate) => aggregate.targetLinks.some((target) => target.use_case_id === useCase.value.id && target.use_case_semantic_hash === useCase.semanticHash));
|
|
123
|
+
return {
|
|
124
|
+
readiness: semanticMatches ? "available_current" : "available_stale",
|
|
125
|
+
activeEvidenceIds: matching.map((aggregate) => aggregate.evidenceId),
|
|
126
|
+
status: "candidate_observed",
|
|
127
|
+
basis: semanticMatches ? "active_evidence_semantic_hash_match" : "active_evidence_semantic_hash_mismatch",
|
|
128
|
+
freshnessState: semanticMatches ? "current" : "needs_review",
|
|
129
|
+
freshnessBasis: semanticMatches ? "policy_match" : "use_case_semantic_hash_mismatch"
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function requiredEvidenceFor(useCase, status) {
|
|
133
|
+
const requirements = verificationRequirements(useCase);
|
|
134
|
+
if (requirements.length === 0) {
|
|
135
|
+
return [
|
|
136
|
+
{
|
|
137
|
+
evidence_kind: "manual_observation",
|
|
138
|
+
required_verifiers: [],
|
|
139
|
+
minimum_count: 1,
|
|
140
|
+
status: "not_applicable"
|
|
141
|
+
}
|
|
142
|
+
];
|
|
143
|
+
}
|
|
144
|
+
return requirements.map((requirement) => ({
|
|
145
|
+
evidence_kind: requirement.evidence_kind,
|
|
146
|
+
required_verifiers: requirement.required_verifiers,
|
|
147
|
+
minimum_count: requirement.minimum_count,
|
|
148
|
+
status
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
function gapsForItem(useCase, readiness, requiredEvidence) {
|
|
152
|
+
const gaps = [];
|
|
153
|
+
if (requiredEvidence.some((requirement) => requirement.status === "missing")) {
|
|
154
|
+
gaps.push({
|
|
155
|
+
code: "evidence_missing",
|
|
156
|
+
message: "Required evidence is missing; live performance is still required.",
|
|
157
|
+
severity: "warning"
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
if (readiness === "available_stale") {
|
|
161
|
+
gaps.push({
|
|
162
|
+
code: "evidence_needs_review",
|
|
163
|
+
message: "Existing evidence targets an older use-case semantic hash.",
|
|
164
|
+
severity: "warning"
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
if (useCase.value.approval_policy && policySnapshot(useCase.value.approval_policy).mode === "ask") {
|
|
168
|
+
gaps.push({
|
|
169
|
+
code: "approval_resolution_required",
|
|
170
|
+
message: "Approval policy must be resolved during the later live run.",
|
|
171
|
+
severity: "info"
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
if (gaps.length === 0) {
|
|
175
|
+
gaps.push({
|
|
176
|
+
code: "prepared_not_performed",
|
|
177
|
+
message: "This is a prepared plan and has not been performed.",
|
|
178
|
+
severity: "info"
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
return gaps;
|
|
182
|
+
}
|
|
183
|
+
export function planGaps(incompleteInput) {
|
|
184
|
+
return incompleteInput
|
|
185
|
+
? [
|
|
186
|
+
{
|
|
187
|
+
code: "input_integrity_partial",
|
|
188
|
+
message: "The plan was generated from partial input and requires acknowledgement before execution.",
|
|
189
|
+
severity: "warning"
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
: [
|
|
193
|
+
{
|
|
194
|
+
code: "prepared_not_performed",
|
|
195
|
+
message: "The plan is prepared only; no live run has been performed.",
|
|
196
|
+
severity: "info"
|
|
197
|
+
}
|
|
198
|
+
];
|
|
199
|
+
}
|
|
200
|
+
export function sectionsFor(mode, selectedItems) {
|
|
201
|
+
if (mode === "showcase") {
|
|
202
|
+
return [
|
|
203
|
+
{
|
|
204
|
+
section_id: "section.primary-path",
|
|
205
|
+
title: "Primary path",
|
|
206
|
+
purpose: "Show the highest-value user-visible behavior.",
|
|
207
|
+
item_ids: selectedItems.map((item) => item.plan_item_id)
|
|
208
|
+
}
|
|
209
|
+
];
|
|
210
|
+
}
|
|
211
|
+
const primary = selectedItems.filter((item) => item.use_case_id.includes(".golden")).map((item) => item.plan_item_id);
|
|
212
|
+
const coverage = selectedItems.filter((item) => !primary.includes(item.plan_item_id)).map((item) => item.plan_item_id);
|
|
213
|
+
return [
|
|
214
|
+
{
|
|
215
|
+
section_id: "section.primary-path",
|
|
216
|
+
title: "Primary path",
|
|
217
|
+
purpose: "Establish the main product value.",
|
|
218
|
+
item_ids: primary.length > 0 ? primary : selectedItems.slice(0, 1).map((item) => item.plan_item_id)
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
section_id: "section.coverage",
|
|
222
|
+
title: "Coverage",
|
|
223
|
+
purpose: "Walk through alternate, edge, negative, and failure behavior.",
|
|
224
|
+
item_ids: coverage.length > 0 ? coverage : selectedItems.map((item) => item.plan_item_id)
|
|
225
|
+
}
|
|
226
|
+
];
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.js","sourceRoot":"","sources":["../../src/presentation/items.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PresentationCandidate } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Walkthrough ordering: arrange eligible candidates into a narrative order โ
|
|
4
|
+
* a golden critical/core item first, then one of each coverage journey role
|
|
5
|
+
* (alternate, edge, negative, failure), then the remainder by comparator order.
|
|
6
|
+
*/
|
|
7
|
+
export declare function orderWalkthrough(candidates: PresentationCandidate[]): PresentationCandidate[];
|
|
8
|
+
//# sourceMappingURL=ordering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordering.d.ts","sourceRoot":"","sources":["../../src/presentation/ordering.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;GAIG;AAEH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,EAAE,GAAG,qBAAqB,EAAE,CAkB7F"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { compareCandidates } from "./scoring.js";
|
|
2
|
+
/**
|
|
3
|
+
* Walkthrough ordering: arrange eligible candidates into a narrative order โ
|
|
4
|
+
* a golden critical/core item first, then one of each coverage journey role
|
|
5
|
+
* (alternate, edge, negative, failure), then the remainder by comparator order.
|
|
6
|
+
*/
|
|
7
|
+
export function orderWalkthrough(candidates) {
|
|
8
|
+
const ordered = [];
|
|
9
|
+
const used = new Set();
|
|
10
|
+
const sorted = candidates.slice().sort(compareCandidates);
|
|
11
|
+
takeFirst(sorted, used, ordered, (candidate) => candidate.useCase.value.journey_role === "golden" &&
|
|
12
|
+
(candidate.useCase.value.value_tier === "critical" || candidate.useCase.value.value_tier === "core"));
|
|
13
|
+
for (const role of ["alternate", "edge", "negative", "failure"]) {
|
|
14
|
+
takeFirst(sorted, used, ordered, (candidate) => candidate.useCase.value.journey_role === role);
|
|
15
|
+
}
|
|
16
|
+
for (const candidate of sorted) {
|
|
17
|
+
if (!used.has(candidate.useCase.value.id)) {
|
|
18
|
+
used.add(candidate.useCase.value.id);
|
|
19
|
+
ordered.push(candidate);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return ordered;
|
|
23
|
+
}
|
|
24
|
+
function takeFirst(candidates, used, ordered, predicate) {
|
|
25
|
+
const match = candidates.find((candidate) => !used.has(candidate.useCase.value.id) && predicate(candidate));
|
|
26
|
+
if (match) {
|
|
27
|
+
used.add(match.useCase.value.id);
|
|
28
|
+
ordered.push(match);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=ordering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordering.js","sourceRoot":"","sources":["../../src/presentation/ordering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD;;;;GAIG;AAEH,MAAM,UAAU,gBAAgB,CAAC,UAAmC;IAClE,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC1D,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAC7C,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,QAAQ;QACjD,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,CACrG,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAU,EAAE,CAAC;QACzE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;IACjG,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAChB,UAAmC,EACnC,IAAiB,EACjB,OAAgC,EAChC,SAAwD;IAExD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5G,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { LoadedUseCase } from "../useCases/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Low-level, dependency-free helpers shared across the presentation planning
|
|
4
|
+
* modules: path normalisation, use-case fact extraction (steps / observations /
|
|
5
|
+
* verification requirements) and small type guards. These have no dependency on
|
|
6
|
+
* the other presentation modules, so they can be imported anywhere without risk
|
|
7
|
+
* of an import cycle.
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolvedSteps(useCase: LoadedUseCase): string[];
|
|
10
|
+
export declare function expectedObservations(useCase: LoadedUseCase): string[];
|
|
11
|
+
export declare function verificationRequirements(useCase: LoadedUseCase): Array<{
|
|
12
|
+
evidence_kind: string;
|
|
13
|
+
required_verifiers: string[];
|
|
14
|
+
minimum_count: number;
|
|
15
|
+
}>;
|
|
16
|
+
export declare function normalizePaths(paths: readonly string[]): string[];
|
|
17
|
+
export declare function normalizePath(path: string): string;
|
|
18
|
+
export declare function uniqueStrings(values: string[]): string[];
|
|
19
|
+
export declare function policySnapshot(value: unknown): Record<string, unknown>;
|
|
20
|
+
export declare function isRequirement(value: unknown): value is {
|
|
21
|
+
evidence_kind: string;
|
|
22
|
+
required_verifiers: string[];
|
|
23
|
+
minimum_count: number;
|
|
24
|
+
};
|
|
25
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
26
|
+
//# sourceMappingURL=planHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planHelpers.d.ts","sourceRoot":"","sources":["../../src/presentation/planHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;GAMG;AAEH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,EAAE,CAW9D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,EAAE,CAUrE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,KAAK,CAAC;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAYD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAEjE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAExD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB,CAQA;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Low-level, dependency-free helpers shared across the presentation planning
|
|
3
|
+
* modules: path normalisation, use-case fact extraction (steps / observations /
|
|
4
|
+
* verification requirements) and small type guards. These have no dependency on
|
|
5
|
+
* the other presentation modules, so they can be imported anywhere without risk
|
|
6
|
+
* of an import cycle.
|
|
7
|
+
*/
|
|
8
|
+
export function resolvedSteps(useCase) {
|
|
9
|
+
const scenarioSteps = (useCase.value.scenarios ?? []).flatMap((scenario) => {
|
|
10
|
+
if ("steps" in scenario && Array.isArray(scenario.steps)) {
|
|
11
|
+
return scenario.steps;
|
|
12
|
+
}
|
|
13
|
+
const given = "given" in scenario && Array.isArray(scenario.given) ? scenario.given : [];
|
|
14
|
+
const when = "when" in scenario && Array.isArray(scenario.when) ? scenario.when : [];
|
|
15
|
+
const then = "then" in scenario && Array.isArray(scenario.then) ? scenario.then : [];
|
|
16
|
+
return [...given, ...when, ...then];
|
|
17
|
+
});
|
|
18
|
+
return scenarioSteps.filter((step) => typeof step === "string" && step.length > 0);
|
|
19
|
+
}
|
|
20
|
+
export function expectedObservations(useCase) {
|
|
21
|
+
const scenarioOutcomes = (useCase.value.scenarios ?? []).flatMap((scenario) => "observable_outcomes" in scenario && Array.isArray(scenario.observable_outcomes)
|
|
22
|
+
? scenario.observable_outcomes
|
|
23
|
+
: []);
|
|
24
|
+
const useCaseOutcomes = Array.isArray(useCase.value.observable_outcomes) ? useCase.value.observable_outcomes : [];
|
|
25
|
+
return uniqueStrings([...scenarioOutcomes, ...useCaseOutcomes].filter((outcome) => typeof outcome === "string" && outcome.length > 0));
|
|
26
|
+
}
|
|
27
|
+
export function verificationRequirements(useCase) {
|
|
28
|
+
const policy = policySnapshot(useCase.value.verification_policy);
|
|
29
|
+
if (policy.mode !== "requirements" || !Array.isArray(policy.requirements)) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
return policy.requirements
|
|
33
|
+
.filter(isRequirement)
|
|
34
|
+
.map((requirement) => ({
|
|
35
|
+
evidence_kind: requirement.evidence_kind,
|
|
36
|
+
required_verifiers: requirement.required_verifiers,
|
|
37
|
+
minimum_count: requirement.minimum_count
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
export function normalizePaths(paths) {
|
|
41
|
+
return paths.map(normalizePath).sort();
|
|
42
|
+
}
|
|
43
|
+
export function normalizePath(path) {
|
|
44
|
+
return path.replaceAll("\\", "/").replace(/^\.\//, "");
|
|
45
|
+
}
|
|
46
|
+
export function uniqueStrings(values) {
|
|
47
|
+
return Array.from(new Set(values));
|
|
48
|
+
}
|
|
49
|
+
export function policySnapshot(value) {
|
|
50
|
+
return isRecord(value) ? value : { mode: "none" };
|
|
51
|
+
}
|
|
52
|
+
export function isRequirement(value) {
|
|
53
|
+
return (isRecord(value) &&
|
|
54
|
+
typeof value.evidence_kind === "string" &&
|
|
55
|
+
Array.isArray(value.required_verifiers) &&
|
|
56
|
+
value.required_verifiers.every((item) => typeof item === "string") &&
|
|
57
|
+
typeof value.minimum_count === "number");
|
|
58
|
+
}
|
|
59
|
+
export function isRecord(value) {
|
|
60
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=planHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planHelpers.js","sourceRoot":"","sources":["../../src/presentation/planHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { DeliveryKind } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* The six presentation formats. The agent picks exactly one per item up front
|
|
4
|
+
* and surfaces it to the user with a fixed, scannable header + body.
|
|
5
|
+
*/
|
|
6
|
+
export type PresentationFormat = "testing" | "comparing" | "inspecting" | "reviewing" | "user_led" | "explaining";
|
|
7
|
+
export type FormatActor = "agent" | "user";
|
|
8
|
+
export type FormatMeta = {
|
|
9
|
+
emoji: string;
|
|
10
|
+
verb: string;
|
|
11
|
+
descriptor: string;
|
|
12
|
+
actor: FormatActor;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Single source of truth for the format emoji + header copy. The emoji are
|
|
16
|
+
* load-bearing and live ONLY here; every other module references this table so
|
|
17
|
+
* render and selection stay consistent.
|
|
18
|
+
*/
|
|
19
|
+
export declare const FORMAT_META: Record<PresentationFormat, FormatMeta>;
|
|
20
|
+
/**
|
|
21
|
+
* Project a chosen format onto the legacy `delivery_kind` enum. `user_led` has
|
|
22
|
+
* no native delivery_kind, so it falls back to the verification-derived base
|
|
23
|
+
* kind supplied by selection.
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatToDeliveryKind(format: PresentationFormat, baseDeliveryKind: DeliveryKind): DeliveryKind;
|
|
26
|
+
/** The default format for a verification-derived delivery kind. */
|
|
27
|
+
export declare function defaultFormatForDeliveryKind(kind: DeliveryKind): PresentationFormat;
|
|
28
|
+
export type ChoosePresentationFormatOptions = {
|
|
29
|
+
baseDeliveryKind: DeliveryKind;
|
|
30
|
+
needsUser?: boolean;
|
|
31
|
+
isContrast?: boolean;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Pick a presentation format from the base delivery kind plus two affordances:
|
|
35
|
+
* `needsUser` (human-in-the-loop) wins first, then `isContrast` (guardrail /
|
|
36
|
+
* before-after), otherwise the default-for-delivery-kind.
|
|
37
|
+
*/
|
|
38
|
+
export declare function choosePresentationFormat(options: ChoosePresentationFormatOptions): PresentationFormat;
|
|
39
|
+
//# sourceMappingURL=presentationFormat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentationFormat.d.ts","sourceRoot":"","sources":["../../src/presentation/presentationFormat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,WAAW,GACX,YAAY,GACZ,WAAW,GACX,UAAU,GACV,YAAY,CAAC;AAEjB,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAO9D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,GAAG,YAAY,CAa7G;AAED,mEAAmE;AACnE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,YAAY,GAAG,kBAAkB,CASnF;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC5C,gBAAgB,EAAE,YAAY,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,GAAG,kBAAkB,CAQrG"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for the format emoji + header copy. The emoji are
|
|
3
|
+
* load-bearing and live ONLY here; every other module references this table so
|
|
4
|
+
* render and selection stay consistent.
|
|
5
|
+
*/
|
|
6
|
+
export const FORMAT_META = {
|
|
7
|
+
testing: { emoji: "๐งช", verb: "Testing", descriptor: "runs it live", actor: "agent" },
|
|
8
|
+
comparing: { emoji: "โ๏ธ", verb: "Comparing", descriptor: "guardrail / before-after", actor: "agent" },
|
|
9
|
+
inspecting: { emoji: "๐", verb: "Inspecting", descriptor: "examine the real artifact", actor: "agent" },
|
|
10
|
+
reviewing: { emoji: "๐", verb: "Reviewing", descriptor: "cite an earlier run", actor: "agent" },
|
|
11
|
+
user_led: { emoji: "๐", verb: "Over to you", descriptor: "needs the human", actor: "user" },
|
|
12
|
+
explaining: { emoji: "๐ฌ", verb: "Explaining", descriptor: "description only", actor: "agent" }
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Project a chosen format onto the legacy `delivery_kind` enum. `user_led` has
|
|
16
|
+
* no native delivery_kind, so it falls back to the verification-derived base
|
|
17
|
+
* kind supplied by selection.
|
|
18
|
+
*/
|
|
19
|
+
export function formatToDeliveryKind(format, baseDeliveryKind) {
|
|
20
|
+
switch (format) {
|
|
21
|
+
case "testing":
|
|
22
|
+
case "comparing":
|
|
23
|
+
return "live_demo";
|
|
24
|
+
case "inspecting":
|
|
25
|
+
case "reviewing":
|
|
26
|
+
return "evidence_review";
|
|
27
|
+
case "explaining":
|
|
28
|
+
return "explanation";
|
|
29
|
+
case "user_led":
|
|
30
|
+
return baseDeliveryKind;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** The default format for a verification-derived delivery kind. */
|
|
34
|
+
export function defaultFormatForDeliveryKind(kind) {
|
|
35
|
+
switch (kind) {
|
|
36
|
+
case "live_demo":
|
|
37
|
+
return "testing";
|
|
38
|
+
case "evidence_review":
|
|
39
|
+
return "reviewing";
|
|
40
|
+
case "explanation":
|
|
41
|
+
return "explaining";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Pick a presentation format from the base delivery kind plus two affordances:
|
|
46
|
+
* `needsUser` (human-in-the-loop) wins first, then `isContrast` (guardrail /
|
|
47
|
+
* before-after), otherwise the default-for-delivery-kind.
|
|
48
|
+
*/
|
|
49
|
+
export function choosePresentationFormat(options) {
|
|
50
|
+
if (options.needsUser) {
|
|
51
|
+
return "user_led";
|
|
52
|
+
}
|
|
53
|
+
if (options.isContrast) {
|
|
54
|
+
return "comparing";
|
|
55
|
+
}
|
|
56
|
+
return defaultFormatForDeliveryKind(options.baseDeliveryKind);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=presentationFormat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentationFormat.js","sourceRoot":"","sources":["../../src/presentation/presentationFormat.ts"],"names":[],"mappings":"AAuBA;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAA2C;IACjE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE;IACrF,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,0BAA0B,EAAE,KAAK,EAAE,OAAO,EAAE;IACrG,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,2BAA2B,EAAE,KAAK,EAAE,OAAO,EAAE;IACxG,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE;IAChG,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE;IAC5F,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE;CAChG,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA0B,EAAE,gBAA8B;IAC7F,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,YAAY,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,iBAAiB,CAAC;QAC3B,KAAK,YAAY;YACf,OAAO,aAAa,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,4BAA4B,CAAC,IAAkB;IAC7D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW;YACd,OAAO,SAAS,CAAC;QACnB,KAAK,iBAAiB;YACpB,OAAO,WAAW,CAAC;QACrB,KAAK,aAAa;YAChB,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC;AAQD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAwC;IAC/E,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,4BAA4B,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { PresentationPlanItem } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* A recorded outcome for an item, supplied at render time. Absent => the
|
|
4
|
+
* prepared / open card (no live claim). All non-ASCII glyphs in this module are
|
|
5
|
+
* written as `\u` escapes so the canonical emoji stay solely in FORMAT_META.
|
|
6
|
+
*/
|
|
7
|
+
export type RenderResult = {
|
|
8
|
+
/** A live status. Only Testing / Comparing may carry one. */
|
|
9
|
+
status?: "pass" | "fail";
|
|
10
|
+
/** What was actually observed. */
|
|
11
|
+
got?: string;
|
|
12
|
+
/** The recorded evidence id backing a `pass`. A pass checkmark requires this. */
|
|
13
|
+
evidenceId?: string;
|
|
14
|
+
/** True only when a human answered an "Over to you" prompt. */
|
|
15
|
+
answeredByHuman?: boolean;
|
|
16
|
+
};
|
|
17
|
+
/** Thrown when a render would let the header verb lie. */
|
|
18
|
+
export declare class HonestyRuleError extends Error {
|
|
19
|
+
readonly code: string;
|
|
20
|
+
constructor(message: string, code: string);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Render the fixed, scannable card for a plan item. Pure and deterministic.
|
|
24
|
+
* Enforces the render-time honesty rule: the emoji + verb is a promise that
|
|
25
|
+
* cannot be broken (a failed live test cannot become an explanation; a `pass`
|
|
26
|
+
* checkmark needs real recorded evidence; an "Over to you" prompt can only be
|
|
27
|
+
* answered by a human).
|
|
28
|
+
*
|
|
29
|
+
* Trust boundary: this is a pure function over the supplied `result`. It cannot
|
|
30
|
+
* see a result that the caller withholds (a recorded live failure rendered with
|
|
31
|
+
* no result reads as pending), and it trusts `answeredByHuman` as supplied. The
|
|
32
|
+
* upstream guarantee -- that a result/answer is bound to a real recorded,
|
|
33
|
+
* human-origin run event -- is enforced by the evidence/showcase ledger and the
|
|
34
|
+
* deferred per-claim evidence-verifier contract (see the spec), not here.
|
|
35
|
+
*/
|
|
36
|
+
export declare function renderCard(item: PresentationPlanItem, result?: RenderResult): string;
|
|
37
|
+
//# sourceMappingURL=renderCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderCard.d.ts","sourceRoot":"","sources":["../../src/presentation/renderCard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,0DAA0D;AAC1D,qBAAa,gBAAiB,SAAQ,KAAK;IAGvC,QAAQ,CAAC,IAAI,EAAE,MAAM;gBADrB,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,MAAM;CAKxB;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CASpF"}
|