@petepetrash/circuit 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/LICENSE +21 -0
- package/README.md +246 -0
- package/bin/circuit +44 -0
- package/bin/node-version-guard.d.ts +12 -0
- package/bin/node-version-guard.js +65 -0
- package/dist/app/checkpoints/discover.d.ts +63 -0
- package/dist/app/checkpoints/discover.d.ts.map +1 -0
- package/dist/app/checkpoints/discover.js +121 -0
- package/dist/app/checkpoints/discover.js.map +1 -0
- package/dist/app/checkpoints/render.d.ts +4 -0
- package/dist/app/checkpoints/render.d.ts.map +1 -0
- package/dist/app/checkpoints/render.js +68 -0
- package/dist/app/checkpoints/render.js.map +1 -0
- package/dist/app/continuity/brief.d.ts +140 -0
- package/dist/app/continuity/brief.d.ts.map +1 -0
- package/dist/app/continuity/brief.js +557 -0
- package/dist/app/continuity/brief.js.map +1 -0
- package/dist/app/continuity/harvest.d.ts +65 -0
- package/dist/app/continuity/harvest.d.ts.map +1 -0
- package/dist/app/continuity/harvest.js +658 -0
- package/dist/app/continuity/harvest.js.map +1 -0
- package/dist/app/continuity/records.d.ts +39 -0
- package/dist/app/continuity/records.d.ts.map +1 -0
- package/dist/app/continuity/records.js +210 -0
- package/dist/app/continuity/records.js.map +1 -0
- package/dist/app/history/extract.d.ts +8 -0
- package/dist/app/history/extract.d.ts.map +1 -0
- package/dist/app/history/extract.js +716 -0
- package/dist/app/history/extract.js.map +1 -0
- package/dist/app/history/indexer.d.ts +107 -0
- package/dist/app/history/indexer.d.ts.map +1 -0
- package/dist/app/history/indexer.js +234 -0
- package/dist/app/history/indexer.js.map +1 -0
- package/dist/app/history/memory-effect-read.d.ts +8 -0
- package/dist/app/history/memory-effect-read.d.ts.map +1 -0
- package/dist/app/history/memory-effect-read.js +40 -0
- package/dist/app/history/memory-effect-read.js.map +1 -0
- package/dist/app/history/memory-effect.d.ts +34 -0
- package/dist/app/history/memory-effect.d.ts.map +1 -0
- package/dist/app/history/memory-effect.js +234 -0
- package/dist/app/history/memory-effect.js.map +1 -0
- package/dist/app/history/memory-identity.d.ts +7 -0
- package/dist/app/history/memory-identity.d.ts.map +1 -0
- package/dist/app/history/memory-identity.js +39 -0
- package/dist/app/history/memory-identity.js.map +1 -0
- package/dist/app/history/memory-merge.d.ts +16 -0
- package/dist/app/history/memory-merge.d.ts.map +1 -0
- package/dist/app/history/memory-merge.js +224 -0
- package/dist/app/history/memory-merge.js.map +1 -0
- package/dist/app/history/memory-preview.d.ts +10 -0
- package/dist/app/history/memory-preview.d.ts.map +1 -0
- package/dist/app/history/memory-preview.js +103 -0
- package/dist/app/history/memory-preview.js.map +1 -0
- package/dist/app/history/pull-log.d.ts +13 -0
- package/dist/app/history/pull-log.d.ts.map +1 -0
- package/dist/app/history/pull-log.js +91 -0
- package/dist/app/history/pull-log.js.map +1 -0
- package/dist/app/history/pull-suppression.d.ts +12 -0
- package/dist/app/history/pull-suppression.d.ts.map +1 -0
- package/dist/app/history/pull-suppression.js +40 -0
- package/dist/app/history/pull-suppression.js.map +1 -0
- package/dist/app/history/query.d.ts +19 -0
- package/dist/app/history/query.d.ts.map +1 -0
- package/dist/app/history/query.js +342 -0
- package/dist/app/history/query.js.map +1 -0
- package/dist/app/history/recall-precision.d.ts +15 -0
- package/dist/app/history/recall-precision.d.ts.map +1 -0
- package/dist/app/history/recall-precision.js +116 -0
- package/dist/app/history/recall-precision.js.map +1 -0
- package/dist/app/history/run-source-files.d.ts +23 -0
- package/dist/app/history/run-source-files.d.ts.map +1 -0
- package/dist/app/history/run-source-files.js +82 -0
- package/dist/app/history/run-source-files.js.map +1 -0
- package/dist/app/history/run-start-recall.d.ts +18 -0
- package/dist/app/history/run-start-recall.d.ts.map +1 -0
- package/dist/app/history/run-start-recall.js +156 -0
- package/dist/app/history/run-start-recall.js.map +1 -0
- package/dist/app/inbox/discover.d.ts +63 -0
- package/dist/app/inbox/discover.d.ts.map +1 -0
- package/dist/app/inbox/discover.js +120 -0
- package/dist/app/inbox/discover.js.map +1 -0
- package/dist/app/inbox/render.d.ts +4 -0
- package/dist/app/inbox/render.d.ts.map +1 -0
- package/dist/app/inbox/render.js +66 -0
- package/dist/app/inbox/render.js.map +1 -0
- package/dist/app/operator-summary/writer.d.ts +41 -0
- package/dist/app/operator-summary/writer.d.ts.map +1 -0
- package/dist/app/operator-summary/writer.js +1667 -0
- package/dist/app/operator-summary/writer.js.map +1 -0
- package/dist/app/process-evidence/projection.d.ts +36 -0
- package/dist/app/process-evidence/projection.d.ts.map +1 -0
- package/dist/app/process-evidence/projection.js +137 -0
- package/dist/app/process-evidence/projection.js.map +1 -0
- package/dist/app/run-envelope/autonomous-run.d.ts +17 -0
- package/dist/app/run-envelope/autonomous-run.d.ts.map +1 -0
- package/dist/app/run-envelope/autonomous-run.js +59 -0
- package/dist/app/run-envelope/autonomous-run.js.map +1 -0
- package/dist/app/run-envelope/continuation-loop.d.ts +24 -0
- package/dist/app/run-envelope/continuation-loop.d.ts.map +1 -0
- package/dist/app/run-envelope/continuation-loop.js +72 -0
- package/dist/app/run-envelope/continuation-loop.js.map +1 -0
- package/dist/app/run-envelope/contract-lock.d.ts +15 -0
- package/dist/app/run-envelope/contract-lock.d.ts.map +1 -0
- package/dist/app/run-envelope/contract-lock.js +44 -0
- package/dist/app/run-envelope/contract-lock.js.map +1 -0
- package/dist/app/run-envelope/contract-quality.d.ts +15 -0
- package/dist/app/run-envelope/contract-quality.d.ts.map +1 -0
- package/dist/app/run-envelope/contract-quality.js +48 -0
- package/dist/app/run-envelope/contract-quality.js.map +1 -0
- package/dist/app/run-envelope/no-progress.d.ts +11 -0
- package/dist/app/run-envelope/no-progress.d.ts.map +1 -0
- package/dist/app/run-envelope/no-progress.js +40 -0
- package/dist/app/run-envelope/no-progress.js.map +1 -0
- package/dist/app/run-envelope/shadow-record.d.ts +40 -0
- package/dist/app/run-envelope/shadow-record.d.ts.map +1 -0
- package/dist/app/run-envelope/shadow-record.js +108 -0
- package/dist/app/run-envelope/shadow-record.js.map +1 -0
- package/dist/app/run-envelope/source-record.d.ts +62 -0
- package/dist/app/run-envelope/source-record.d.ts.map +1 -0
- package/dist/app/run-envelope/source-record.js +648 -0
- package/dist/app/run-envelope/source-record.js.map +1 -0
- package/dist/app/run-status/projection-common.d.ts +57 -0
- package/dist/app/run-status/projection-common.d.ts.map +1 -0
- package/dist/app/run-status/projection-common.js +90 -0
- package/dist/app/run-status/projection-common.js.map +1 -0
- package/dist/app/run-status/run-folder-projector.d.ts +9 -0
- package/dist/app/run-status/run-folder-projector.d.ts.map +1 -0
- package/dist/app/run-status/run-folder-projector.js +68 -0
- package/dist/app/run-status/run-folder-projector.js.map +1 -0
- package/dist/app/run-status/runtime-run-folder.d.ts +4 -0
- package/dist/app/run-status/runtime-run-folder.d.ts.map +1 -0
- package/dist/app/run-status/runtime-run-folder.js +461 -0
- package/dist/app/run-status/runtime-run-folder.js.map +1 -0
- package/dist/cli/checkpoints.d.ts +7 -0
- package/dist/cli/checkpoints.d.ts.map +1 -0
- package/dist/cli/checkpoints.js +60 -0
- package/dist/cli/checkpoints.js.map +1 -0
- package/dist/cli/chosen-connectors.d.ts +14 -0
- package/dist/cli/chosen-connectors.d.ts.map +1 -0
- package/dist/cli/chosen-connectors.js +85 -0
- package/dist/cli/chosen-connectors.js.map +1 -0
- package/dist/cli/circuit.d.ts +9 -0
- package/dist/cli/circuit.d.ts.map +1 -0
- package/dist/cli/circuit.js +218 -0
- package/dist/cli/circuit.js.map +1 -0
- package/dist/cli/command-vocabulary.d.ts +3 -0
- package/dist/cli/command-vocabulary.d.ts.map +1 -0
- package/dist/cli/command-vocabulary.js +26 -0
- package/dist/cli/command-vocabulary.js.map +1 -0
- package/dist/cli/commander-support.d.ts +6 -0
- package/dist/cli/commander-support.d.ts.map +1 -0
- package/dist/cli/commander-support.js +61 -0
- package/dist/cli/commander-support.js.map +1 -0
- package/dist/cli/compiled-flow-loading.d.ts +21 -0
- package/dist/cli/compiled-flow-loading.d.ts.map +1 -0
- package/dist/cli/compiled-flow-loading.js +84 -0
- package/dist/cli/compiled-flow-loading.js.map +1 -0
- package/dist/cli/config-command.d.ts +33 -0
- package/dist/cli/config-command.d.ts.map +1 -0
- package/dist/cli/config-command.js +367 -0
- package/dist/cli/config-command.js.map +1 -0
- package/dist/cli/create.d.ts +12 -0
- package/dist/cli/create.d.ts.map +1 -0
- package/dist/cli/create.js +229 -0
- package/dist/cli/create.js.map +1 -0
- package/dist/cli/custom-flow-package.d.ts +62 -0
- package/dist/cli/custom-flow-package.d.ts.map +1 -0
- package/dist/cli/custom-flow-package.js +294 -0
- package/dist/cli/custom-flow-package.js.map +1 -0
- package/dist/cli/doctor.d.ts +9 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +147 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/flow-selection-preview.d.ts +784 -0
- package/dist/cli/flow-selection-preview.d.ts.map +1 -0
- package/dist/cli/flow-selection-preview.js +248 -0
- package/dist/cli/flow-selection-preview.js.map +1 -0
- package/dist/cli/front-door.d.ts +3 -0
- package/dist/cli/front-door.d.ts.map +1 -0
- package/dist/cli/front-door.js +41 -0
- package/dist/cli/front-door.js.map +1 -0
- package/dist/cli/generate.d.ts +8 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +346 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/handoff-codex-hooks.d.ts +25 -0
- package/dist/cli/handoff-codex-hooks.d.ts.map +1 -0
- package/dist/cli/handoff-codex-hooks.js +555 -0
- package/dist/cli/handoff-codex-hooks.js.map +1 -0
- package/dist/cli/handoff.d.ts +8 -0
- package/dist/cli/handoff.d.ts.map +1 -0
- package/dist/cli/handoff.js +634 -0
- package/dist/cli/handoff.js.map +1 -0
- package/dist/cli/help.d.ts +15 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +312 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/history.d.ts +2 -0
- package/dist/cli/history.d.ts.map +1 -0
- package/dist/cli/history.js +384 -0
- package/dist/cli/history.js.map +1 -0
- package/dist/cli/inbox.d.ts +7 -0
- package/dist/cli/inbox.d.ts.map +1 -0
- package/dist/cli/inbox.js +58 -0
- package/dist/cli/inbox.js.map +1 -0
- package/dist/cli/interactive/app.d.ts +11 -0
- package/dist/cli/interactive/app.d.ts.map +1 -0
- package/dist/cli/interactive/app.js +220 -0
- package/dist/cli/interactive/app.js.map +1 -0
- package/dist/cli/interactive/index.d.ts +2 -0
- package/dist/cli/interactive/index.d.ts.map +1 -0
- package/dist/cli/interactive/index.js +51 -0
- package/dist/cli/interactive/index.js.map +1 -0
- package/dist/cli/interactive/state.d.ts +122 -0
- package/dist/cli/interactive/state.d.ts.map +1 -0
- package/dist/cli/interactive/state.js +413 -0
- package/dist/cli/interactive/state.js.map +1 -0
- package/dist/cli/memory.d.ts +5 -0
- package/dist/cli/memory.d.ts.map +1 -0
- package/dist/cli/memory.js +327 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/post-run-artifacts.d.ts +45 -0
- package/dist/cli/post-run-artifacts.d.ts.map +1 -0
- package/dist/cli/post-run-artifacts.js +100 -0
- package/dist/cli/post-run-artifacts.js.map +1 -0
- package/dist/cli/preview.d.ts +9 -0
- package/dist/cli/preview.d.ts.map +1 -0
- package/dist/cli/preview.js +326 -0
- package/dist/cli/preview.js.map +1 -0
- package/dist/cli/reclaim.d.ts +2 -0
- package/dist/cli/reclaim.d.ts.map +1 -0
- package/dist/cli/reclaim.js +67 -0
- package/dist/cli/reclaim.js.map +1 -0
- package/dist/cli/recovery-attempt-runner.d.ts +25 -0
- package/dist/cli/recovery-attempt-runner.d.ts.map +1 -0
- package/dist/cli/recovery-attempt-runner.js +98 -0
- package/dist/cli/recovery-attempt-runner.js.map +1 -0
- package/dist/cli/resume-input.d.ts +27 -0
- package/dist/cli/resume-input.d.ts.map +1 -0
- package/dist/cli/resume-input.js +58 -0
- package/dist/cli/resume-input.js.map +1 -0
- package/dist/cli/routed-connectors.d.ts +14 -0
- package/dist/cli/routed-connectors.d.ts.map +1 -0
- package/dist/cli/routed-connectors.js +85 -0
- package/dist/cli/routed-connectors.js.map +1 -0
- package/dist/cli/run-flag-vocabulary.d.ts +14 -0
- package/dist/cli/run-flag-vocabulary.d.ts.map +1 -0
- package/dist/cli/run-flag-vocabulary.js +38 -0
- package/dist/cli/run-flag-vocabulary.js.map +1 -0
- package/dist/cli/run-output.d.ts +32 -0
- package/dist/cli/run-output.d.ts.map +1 -0
- package/dist/cli/run-output.js +47 -0
- package/dist/cli/run-output.js.map +1 -0
- package/dist/cli/run-stdout-envelope.d.ts +47 -0
- package/dist/cli/run-stdout-envelope.d.ts.map +1 -0
- package/dist/cli/run-stdout-envelope.js +98 -0
- package/dist/cli/run-stdout-envelope.js.map +1 -0
- package/dist/cli/run.d.ts +59 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +1182 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/runs.d.ts +2 -0
- package/dist/cli/runs.d.ts.map +1 -0
- package/dist/cli/runs.js +88 -0
- package/dist/cli/runs.js.map +1 -0
- package/dist/cli/runtime-routing-policy.d.ts +51 -0
- package/dist/cli/runtime-routing-policy.d.ts.map +1 -0
- package/dist/cli/runtime-routing-policy.js +143 -0
- package/dist/cli/runtime-routing-policy.js.map +1 -0
- package/dist/cli/styled-table.d.ts +11 -0
- package/dist/cli/styled-table.d.ts.map +1 -0
- package/dist/cli/styled-table.js +40 -0
- package/dist/cli/styled-table.js.map +1 -0
- package/dist/cli/terminal-style.d.ts +26 -0
- package/dist/cli/terminal-style.d.ts.map +1 -0
- package/dist/cli/terminal-style.js +75 -0
- package/dist/cli/terminal-style.js.map +1 -0
- package/dist/cli/tty-notice.d.ts +21 -0
- package/dist/cli/tty-notice.d.ts.map +1 -0
- package/dist/cli/tty-notice.js +35 -0
- package/dist/cli/tty-notice.js.map +1 -0
- package/dist/cli/uninstall.d.ts +22 -0
- package/dist/cli/uninstall.d.ts.map +1 -0
- package/dist/cli/uninstall.js +277 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/cli/utility-progress.d.ts +14 -0
- package/dist/cli/utility-progress.d.ts.map +1 -0
- package/dist/cli/utility-progress.js +23 -0
- package/dist/cli/utility-progress.js.map +1 -0
- package/dist/cli/version-info.d.ts +2 -0
- package/dist/cli/version-info.d.ts.map +1 -0
- package/dist/cli/version-info.js +32 -0
- package/dist/cli/version-info.js.map +1 -0
- package/dist/connectors/claude-code.d.ts +16 -0
- package/dist/connectors/claude-code.d.ts.map +1 -0
- package/dist/connectors/claude-code.js +492 -0
- package/dist/connectors/claude-code.js.map +1 -0
- package/dist/connectors/codex-default-model.d.ts +10 -0
- package/dist/connectors/codex-default-model.d.ts.map +1 -0
- package/dist/connectors/codex-default-model.js +142 -0
- package/dist/connectors/codex-default-model.js.map +1 -0
- package/dist/connectors/codex.d.ts +21 -0
- package/dist/connectors/codex.d.ts.map +1 -0
- package/dist/connectors/codex.js +709 -0
- package/dist/connectors/codex.js.map +1 -0
- package/dist/connectors/connector.d.ts +7 -0
- package/dist/connectors/connector.d.ts.map +1 -0
- package/dist/connectors/connector.js +2 -0
- package/dist/connectors/connector.js.map +1 -0
- package/dist/connectors/cursor-agent.d.ts +10 -0
- package/dist/connectors/cursor-agent.d.ts.map +1 -0
- package/dist/connectors/cursor-agent.js +156 -0
- package/dist/connectors/cursor-agent.js.map +1 -0
- package/dist/connectors/custom.d.ts +7 -0
- package/dist/connectors/custom.d.ts.map +1 -0
- package/dist/connectors/custom.js +135 -0
- package/dist/connectors/custom.js.map +1 -0
- package/dist/connectors/health.d.ts +35 -0
- package/dist/connectors/health.d.ts.map +1 -0
- package/dist/connectors/health.js +169 -0
- package/dist/connectors/health.js.map +1 -0
- package/dist/connectors/remediation.d.ts +3 -0
- package/dist/connectors/remediation.d.ts.map +1 -0
- package/dist/connectors/remediation.js +16 -0
- package/dist/connectors/remediation.js.map +1 -0
- package/dist/connectors/resolver.d.ts +44 -0
- package/dist/connectors/resolver.d.ts.map +1 -0
- package/dist/connectors/resolver.js +204 -0
- package/dist/connectors/resolver.js.map +1 -0
- package/dist/connectors/subprocess.d.ts +59 -0
- package/dist/connectors/subprocess.d.ts.map +1 -0
- package/dist/connectors/subprocess.js +375 -0
- package/dist/connectors/subprocess.js.map +1 -0
- package/dist/flows/accommodation-ledger.d.ts +49 -0
- package/dist/flows/accommodation-ledger.d.ts.map +1 -0
- package/dist/flows/accommodation-ledger.js +277 -0
- package/dist/flows/accommodation-ledger.js.map +1 -0
- package/dist/flows/assemble-flow-schematic.d.ts +30 -0
- package/dist/flows/assemble-flow-schematic.d.ts.map +1 -0
- package/dist/flows/assemble-flow-schematic.js +58 -0
- package/dist/flows/assemble-flow-schematic.js.map +1 -0
- package/dist/flows/axis-selections.d.ts +4 -0
- package/dist/flows/axis-selections.d.ts.map +1 -0
- package/dist/flows/axis-selections.js +34 -0
- package/dist/flows/axis-selections.js.map +1 -0
- package/dist/flows/block-step-expansion.d.ts +69 -0
- package/dist/flows/block-step-expansion.d.ts.map +1 -0
- package/dist/flows/block-step-expansion.js +219 -0
- package/dist/flows/block-step-expansion.js.map +1 -0
- package/dist/flows/build/assembly-spec.d.ts +5 -0
- package/dist/flows/build/assembly-spec.d.ts.map +1 -0
- package/dist/flows/build/assembly-spec.js +287 -0
- package/dist/flows/build/assembly-spec.js.map +1 -0
- package/dist/flows/build/data.d.ts +848 -0
- package/dist/flows/build/data.d.ts.map +1 -0
- package/dist/flows/build/data.js +163 -0
- package/dist/flows/build/data.js.map +1 -0
- package/dist/flows/build/flow.d.ts +2 -0
- package/dist/flows/build/flow.d.ts.map +1 -0
- package/dist/flows/build/flow.js +4 -0
- package/dist/flows/build/flow.js.map +1 -0
- package/dist/flows/build/index.d.ts +4 -0
- package/dist/flows/build/index.d.ts.map +1 -0
- package/dist/flows/build/index.js +8 -0
- package/dist/flows/build/index.js.map +1 -0
- package/dist/flows/build/relay-hints.d.ts +5 -0
- package/dist/flows/build/relay-hints.d.ts.map +1 -0
- package/dist/flows/build/relay-hints.js +51 -0
- package/dist/flows/build/relay-hints.js.map +1 -0
- package/dist/flows/build/reports.d.ts +577 -0
- package/dist/flows/build/reports.d.ts.map +1 -0
- package/dist/flows/build/reports.js +698 -0
- package/dist/flows/build/reports.js.map +1 -0
- package/dist/flows/build/writers/baseline-snapshot.d.ts +4 -0
- package/dist/flows/build/writers/baseline-snapshot.d.ts.map +1 -0
- package/dist/flows/build/writers/baseline-snapshot.js +76 -0
- package/dist/flows/build/writers/baseline-snapshot.js.map +1 -0
- package/dist/flows/build/writers/checkpoint-brief-projection.d.ts +29 -0
- package/dist/flows/build/writers/checkpoint-brief-projection.d.ts.map +1 -0
- package/dist/flows/build/writers/checkpoint-brief-projection.js +145 -0
- package/dist/flows/build/writers/checkpoint-brief-projection.js.map +1 -0
- package/dist/flows/build/writers/checkpoint-brief.d.ts +3 -0
- package/dist/flows/build/writers/checkpoint-brief.d.ts.map +1 -0
- package/dist/flows/build/writers/checkpoint-brief.js +55 -0
- package/dist/flows/build/writers/checkpoint-brief.js.map +1 -0
- package/dist/flows/build/writers/checkpoint-html.d.ts +3 -0
- package/dist/flows/build/writers/checkpoint-html.d.ts.map +1 -0
- package/dist/flows/build/writers/checkpoint-html.js +106 -0
- package/dist/flows/build/writers/checkpoint-html.js.map +1 -0
- package/dist/flows/build/writers/close.d.ts +3 -0
- package/dist/flows/build/writers/close.d.ts.map +1 -0
- package/dist/flows/build/writers/close.js +72 -0
- package/dist/flows/build/writers/close.js.map +1 -0
- package/dist/flows/build/writers/plan.d.ts +3 -0
- package/dist/flows/build/writers/plan.d.ts.map +1 -0
- package/dist/flows/build/writers/plan.js +74 -0
- package/dist/flows/build/writers/plan.js.map +1 -0
- package/dist/flows/build/writers/result-projection.d.ts +13 -0
- package/dist/flows/build/writers/result-projection.d.ts.map +1 -0
- package/dist/flows/build/writers/result-projection.js +105 -0
- package/dist/flows/build/writers/result-projection.js.map +1 -0
- package/dist/flows/build/writers/touch-area-projection.d.ts +9 -0
- package/dist/flows/build/writers/touch-area-projection.d.ts.map +1 -0
- package/dist/flows/build/writers/touch-area-projection.js +120 -0
- package/dist/flows/build/writers/touch-area-projection.js.map +1 -0
- package/dist/flows/build/writers/touch-area.d.ts +3 -0
- package/dist/flows/build/writers/touch-area.d.ts.map +1 -0
- package/dist/flows/build/writers/touch-area.js +130 -0
- package/dist/flows/build/writers/touch-area.js.map +1 -0
- package/dist/flows/build/writers/verification-projection.d.ts +4 -0
- package/dist/flows/build/writers/verification-projection.d.ts.map +1 -0
- package/dist/flows/build/writers/verification-projection.js +21 -0
- package/dist/flows/build/writers/verification-projection.js.map +1 -0
- package/dist/flows/build/writers/verification.d.ts +3 -0
- package/dist/flows/build/writers/verification.d.ts.map +1 -0
- package/dist/flows/build/writers/verification.js +31 -0
- package/dist/flows/build/writers/verification.js.map +1 -0
- package/dist/flows/canonical-stage-policy.d.ts +14 -0
- package/dist/flows/canonical-stage-policy.d.ts.map +1 -0
- package/dist/flows/canonical-stage-policy.js +31 -0
- package/dist/flows/canonical-stage-policy.js.map +1 -0
- package/dist/flows/catalog-derivations.d.ts +34 -0
- package/dist/flows/catalog-derivations.d.ts.map +1 -0
- package/dist/flows/catalog-derivations.js +144 -0
- package/dist/flows/catalog-derivations.js.map +1 -0
- package/dist/flows/catalog.d.ts +16 -0
- package/dist/flows/catalog.d.ts.map +1 -0
- package/dist/flows/catalog.js +87 -0
- package/dist/flows/catalog.js.map +1 -0
- package/dist/flows/compile-schematic-to-flow.d.ts +16 -0
- package/dist/flows/compile-schematic-to-flow.d.ts.map +1 -0
- package/dist/flows/compile-schematic-to-flow.js +651 -0
- package/dist/flows/compile-schematic-to-flow.js.map +1 -0
- package/dist/flows/compiled-flow-file-plan.d.ts +8 -0
- package/dist/flows/compiled-flow-file-plan.d.ts.map +1 -0
- package/dist/flows/compiled-flow-file-plan.js +50 -0
- package/dist/flows/compiled-flow-file-plan.js.map +1 -0
- package/dist/flows/composition/actual-menu.d.ts +30 -0
- package/dist/flows/composition/actual-menu.d.ts.map +1 -0
- package/dist/flows/composition/actual-menu.js +131 -0
- package/dist/flows/composition/actual-menu.js.map +1 -0
- package/dist/flows/composition/composer.d.ts +73 -0
- package/dist/flows/composition/composer.d.ts.map +1 -0
- package/dist/flows/composition/composer.js +1339 -0
- package/dist/flows/composition/composer.js.map +1 -0
- package/dist/flows/composition/equipment-profiles.d.ts +21 -0
- package/dist/flows/composition/equipment-profiles.d.ts.map +1 -0
- package/dist/flows/composition/equipment-profiles.js +82 -0
- package/dist/flows/composition/equipment-profiles.js.map +1 -0
- package/dist/flows/composition/evaluate.d.ts +76 -0
- package/dist/flows/composition/evaluate.d.ts.map +1 -0
- package/dist/flows/composition/evaluate.js +373 -0
- package/dist/flows/composition/evaluate.js.map +1 -0
- package/dist/flows/composition/index.d.ts +8 -0
- package/dist/flows/composition/index.d.ts.map +1 -0
- package/dist/flows/composition/index.js +16 -0
- package/dist/flows/composition/index.js.map +1 -0
- package/dist/flows/composition/intent.d.ts +10 -0
- package/dist/flows/composition/intent.d.ts.map +1 -0
- package/dist/flows/composition/intent.js +125 -0
- package/dist/flows/composition/intent.js.map +1 -0
- package/dist/flows/composition/propose-prompts.d.ts +3 -0
- package/dist/flows/composition/propose-prompts.d.ts.map +1 -0
- package/dist/flows/composition/propose-prompts.js +196 -0
- package/dist/flows/composition/propose-prompts.js.map +1 -0
- package/dist/flows/composition/propose.d.ts +36 -0
- package/dist/flows/composition/propose.d.ts.map +1 -0
- package/dist/flows/composition/propose.js +275 -0
- package/dist/flows/composition/propose.js.map +1 -0
- package/dist/flows/contract-body-signature.d.ts +4 -0
- package/dist/flows/contract-body-signature.d.ts.map +1 -0
- package/dist/flows/contract-body-signature.js +166 -0
- package/dist/flows/contract-body-signature.js.map +1 -0
- package/dist/flows/converge-proof/assembly-spec.d.ts +5 -0
- package/dist/flows/converge-proof/assembly-spec.d.ts.map +1 -0
- package/dist/flows/converge-proof/assembly-spec.js +115 -0
- package/dist/flows/converge-proof/assembly-spec.js.map +1 -0
- package/dist/flows/converge-proof/data.d.ts +412 -0
- package/dist/flows/converge-proof/data.d.ts.map +1 -0
- package/dist/flows/converge-proof/data.js +23 -0
- package/dist/flows/converge-proof/data.js.map +1 -0
- package/dist/flows/converge-proof/flow.d.ts +2 -0
- package/dist/flows/converge-proof/flow.d.ts.map +1 -0
- package/dist/flows/converge-proof/flow.js +4 -0
- package/dist/flows/converge-proof/flow.js.map +1 -0
- package/dist/flows/cross-tool-build/assembly-spec.d.ts +5 -0
- package/dist/flows/cross-tool-build/assembly-spec.d.ts.map +1 -0
- package/dist/flows/cross-tool-build/assembly-spec.js +183 -0
- package/dist/flows/cross-tool-build/assembly-spec.js.map +1 -0
- package/dist/flows/cross-tool-build/data.d.ts +570 -0
- package/dist/flows/cross-tool-build/data.d.ts.map +1 -0
- package/dist/flows/cross-tool-build/data.js +94 -0
- package/dist/flows/cross-tool-build/data.js.map +1 -0
- package/dist/flows/cross-tool-build/flow.d.ts +2 -0
- package/dist/flows/cross-tool-build/flow.d.ts.map +1 -0
- package/dist/flows/cross-tool-build/flow.js +4 -0
- package/dist/flows/cross-tool-build/flow.js.map +1 -0
- package/dist/flows/cross-tool-build/relay-hints.d.ts +7 -0
- package/dist/flows/cross-tool-build/relay-hints.d.ts.map +1 -0
- package/dist/flows/cross-tool-build/relay-hints.js +76 -0
- package/dist/flows/cross-tool-build/relay-hints.js.map +1 -0
- package/dist/flows/cross-tool-build/reports.d.ts +161 -0
- package/dist/flows/cross-tool-build/reports.d.ts.map +1 -0
- package/dist/flows/cross-tool-build/reports.js +196 -0
- package/dist/flows/cross-tool-build/reports.js.map +1 -0
- package/dist/flows/cross-tool-build/writers/close.d.ts +3 -0
- package/dist/flows/cross-tool-build/writers/close.d.ts.map +1 -0
- package/dist/flows/cross-tool-build/writers/close.js +49 -0
- package/dist/flows/cross-tool-build/writers/close.js.map +1 -0
- package/dist/flows/cross-tool-build/writers/plan.d.ts +3 -0
- package/dist/flows/cross-tool-build/writers/plan.d.ts.map +1 -0
- package/dist/flows/cross-tool-build/writers/plan.js +27 -0
- package/dist/flows/cross-tool-build/writers/plan.js.map +1 -0
- package/dist/flows/cross-tool-build/writers/verification.d.ts +3 -0
- package/dist/flows/cross-tool-build/writers/verification.d.ts.map +1 -0
- package/dist/flows/cross-tool-build/writers/verification.js +46 -0
- package/dist/flows/cross-tool-build/writers/verification.js.map +1 -0
- package/dist/flows/equipment-reshape.d.ts +18 -0
- package/dist/flows/equipment-reshape.d.ts.map +1 -0
- package/dist/flows/equipment-reshape.js +119 -0
- package/dist/flows/equipment-reshape.js.map +1 -0
- package/dist/flows/explainer/data.d.ts +1032 -0
- package/dist/flows/explainer/data.d.ts.map +1 -0
- package/dist/flows/explainer/data.js +712 -0
- package/dist/flows/explainer/data.js.map +1 -0
- package/dist/flows/explainer/flow.d.ts +2 -0
- package/dist/flows/explainer/flow.d.ts.map +1 -0
- package/dist/flows/explainer/flow.js +4 -0
- package/dist/flows/explainer/flow.js.map +1 -0
- package/dist/flows/explainer/relay-hints.d.ts +4 -0
- package/dist/flows/explainer/relay-hints.d.ts.map +1 -0
- package/dist/flows/explainer/relay-hints.js +28 -0
- package/dist/flows/explainer/relay-hints.js.map +1 -0
- package/dist/flows/explainer/reports.d.ts +394 -0
- package/dist/flows/explainer/reports.d.ts.map +1 -0
- package/dist/flows/explainer/reports.js +296 -0
- package/dist/flows/explainer/reports.js.map +1 -0
- package/dist/flows/explainer/writers/close.d.ts +3 -0
- package/dist/flows/explainer/writers/close.d.ts.map +1 -0
- package/dist/flows/explainer/writers/close.js +67 -0
- package/dist/flows/explainer/writers/close.js.map +1 -0
- package/dist/flows/explainer/writers/digest.d.ts +3 -0
- package/dist/flows/explainer/writers/digest.d.ts.map +1 -0
- package/dist/flows/explainer/writers/digest.js +47 -0
- package/dist/flows/explainer/writers/digest.js.map +1 -0
- package/dist/flows/explainer/writers/ideas.d.ts +3 -0
- package/dist/flows/explainer/writers/ideas.d.ts.map +1 -0
- package/dist/flows/explainer/writers/ideas.js +65 -0
- package/dist/flows/explainer/writers/ideas.js.map +1 -0
- package/dist/flows/explainer/writers/intake.d.ts +3 -0
- package/dist/flows/explainer/writers/intake.d.ts.map +1 -0
- package/dist/flows/explainer/writers/intake.js +33 -0
- package/dist/flows/explainer/writers/intake.js.map +1 -0
- package/dist/flows/explainer/writers/spec.d.ts +3 -0
- package/dist/flows/explainer/writers/spec.d.ts.map +1 -0
- package/dist/flows/explainer/writers/spec.js +77 -0
- package/dist/flows/explainer/writers/spec.js.map +1 -0
- package/dist/flows/explainer/writers/verification.d.ts +3 -0
- package/dist/flows/explainer/writers/verification.d.ts.map +1 -0
- package/dist/flows/explainer/writers/verification.js +43 -0
- package/dist/flows/explainer/writers/verification.js.map +1 -0
- package/dist/flows/explore/assembly-spec.d.ts +5 -0
- package/dist/flows/explore/assembly-spec.d.ts.map +1 -0
- package/dist/flows/explore/assembly-spec.js +344 -0
- package/dist/flows/explore/assembly-spec.js.map +1 -0
- package/dist/flows/explore/data.d.ts +734 -0
- package/dist/flows/explore/data.d.ts.map +1 -0
- package/dist/flows/explore/data.js +174 -0
- package/dist/flows/explore/data.js.map +1 -0
- package/dist/flows/explore/flow.d.ts +2 -0
- package/dist/flows/explore/flow.d.ts.map +1 -0
- package/dist/flows/explore/flow.js +4 -0
- package/dist/flows/explore/flow.js.map +1 -0
- package/dist/flows/explore/index.d.ts +4 -0
- package/dist/flows/explore/index.d.ts.map +1 -0
- package/dist/flows/explore/index.js +8 -0
- package/dist/flows/explore/index.js.map +1 -0
- package/dist/flows/explore/relay-hints.d.ts +6 -0
- package/dist/flows/explore/relay-hints.d.ts.map +1 -0
- package/dist/flows/explore/relay-hints.js +53 -0
- package/dist/flows/explore/relay-hints.js.map +1 -0
- package/dist/flows/explore/reports.d.ts +483 -0
- package/dist/flows/explore/reports.d.ts.map +1 -0
- package/dist/flows/explore/reports.js +359 -0
- package/dist/flows/explore/reports.js.map +1 -0
- package/dist/flows/explore/writers/analysis.d.ts +3 -0
- package/dist/flows/explore/writers/analysis.d.ts.map +1 -0
- package/dist/flows/explore/writers/analysis.js +55 -0
- package/dist/flows/explore/writers/analysis.js.map +1 -0
- package/dist/flows/explore/writers/brief.d.ts +3 -0
- package/dist/flows/explore/writers/brief.d.ts.map +1 -0
- package/dist/flows/explore/writers/brief.js +24 -0
- package/dist/flows/explore/writers/brief.js.map +1 -0
- package/dist/flows/explore/writers/close.d.ts +3 -0
- package/dist/flows/explore/writers/close.d.ts.map +1 -0
- package/dist/flows/explore/writers/close.js +86 -0
- package/dist/flows/explore/writers/close.js.map +1 -0
- package/dist/flows/explore/writers/decision-options-projection.d.ts +10 -0
- package/dist/flows/explore/writers/decision-options-projection.d.ts.map +1 -0
- package/dist/flows/explore/writers/decision-options-projection.js +108 -0
- package/dist/flows/explore/writers/decision-options-projection.js.map +1 -0
- package/dist/flows/explore/writers/decision-options.d.ts +3 -0
- package/dist/flows/explore/writers/decision-options.d.ts.map +1 -0
- package/dist/flows/explore/writers/decision-options.js +25 -0
- package/dist/flows/explore/writers/decision-options.js.map +1 -0
- package/dist/flows/explore/writers/decision.d.ts +3 -0
- package/dist/flows/explore/writers/decision.d.ts.map +1 -0
- package/dist/flows/explore/writers/decision.js +80 -0
- package/dist/flows/explore/writers/decision.js.map +1 -0
- package/dist/flows/explore/writers/result-projection.d.ts +17 -0
- package/dist/flows/explore/writers/result-projection.d.ts.map +1 -0
- package/dist/flows/explore/writers/result-projection.js +41 -0
- package/dist/flows/explore/writers/result-projection.js.map +1 -0
- package/dist/flows/explore/writers/tournament-html.d.ts +3 -0
- package/dist/flows/explore/writers/tournament-html.d.ts.map +1 -0
- package/dist/flows/explore/writers/tournament-html.js +119 -0
- package/dist/flows/explore/writers/tournament-html.js.map +1 -0
- package/dist/flows/fix/assembly-spec.d.ts +5 -0
- package/dist/flows/fix/assembly-spec.d.ts.map +1 -0
- package/dist/flows/fix/assembly-spec.js +405 -0
- package/dist/flows/fix/assembly-spec.js.map +1 -0
- package/dist/flows/fix/data.d.ts +921 -0
- package/dist/flows/fix/data.d.ts.map +1 -0
- package/dist/flows/fix/data.js +207 -0
- package/dist/flows/fix/data.js.map +1 -0
- package/dist/flows/fix/flow.d.ts +2 -0
- package/dist/flows/fix/flow.d.ts.map +1 -0
- package/dist/flows/fix/flow.js +4 -0
- package/dist/flows/fix/flow.js.map +1 -0
- package/dist/flows/fix/index.d.ts +3 -0
- package/dist/flows/fix/index.d.ts.map +1 -0
- package/dist/flows/fix/index.js +5 -0
- package/dist/flows/fix/index.js.map +1 -0
- package/dist/flows/fix/relay-hints.d.ts +6 -0
- package/dist/flows/fix/relay-hints.d.ts.map +1 -0
- package/dist/flows/fix/relay-hints.js +52 -0
- package/dist/flows/fix/relay-hints.js.map +1 -0
- package/dist/flows/fix/reports.d.ts +562 -0
- package/dist/flows/fix/reports.d.ts.map +1 -0
- package/dist/flows/fix/reports.js +822 -0
- package/dist/flows/fix/reports.js.map +1 -0
- package/dist/flows/fix/writers/baseline-snapshot.d.ts +3 -0
- package/dist/flows/fix/writers/baseline-snapshot.d.ts.map +1 -0
- package/dist/flows/fix/writers/baseline-snapshot.js +45 -0
- package/dist/flows/fix/writers/baseline-snapshot.js.map +1 -0
- package/dist/flows/fix/writers/brief-projection.d.ts +8 -0
- package/dist/flows/fix/writers/brief-projection.d.ts.map +1 -0
- package/dist/flows/fix/writers/brief-projection.js +149 -0
- package/dist/flows/fix/writers/brief-projection.js.map +1 -0
- package/dist/flows/fix/writers/brief.d.ts +3 -0
- package/dist/flows/fix/writers/brief.d.ts.map +1 -0
- package/dist/flows/fix/writers/brief.js +29 -0
- package/dist/flows/fix/writers/brief.js.map +1 -0
- package/dist/flows/fix/writers/change-set-projection.d.ts +10 -0
- package/dist/flows/fix/writers/change-set-projection.d.ts.map +1 -0
- package/dist/flows/fix/writers/change-set-projection.js +62 -0
- package/dist/flows/fix/writers/change-set-projection.js.map +1 -0
- package/dist/flows/fix/writers/change-set.d.ts +3 -0
- package/dist/flows/fix/writers/change-set.d.ts.map +1 -0
- package/dist/flows/fix/writers/change-set.js +93 -0
- package/dist/flows/fix/writers/change-set.js.map +1 -0
- package/dist/flows/fix/writers/close.d.ts +3 -0
- package/dist/flows/fix/writers/close.d.ts.map +1 -0
- package/dist/flows/fix/writers/close.js +86 -0
- package/dist/flows/fix/writers/close.js.map +1 -0
- package/dist/flows/fix/writers/regression-baseline.d.ts +3 -0
- package/dist/flows/fix/writers/regression-baseline.d.ts.map +1 -0
- package/dist/flows/fix/writers/regression-baseline.js +39 -0
- package/dist/flows/fix/writers/regression-baseline.js.map +1 -0
- package/dist/flows/fix/writers/regression-projection.d.ts +5 -0
- package/dist/flows/fix/writers/regression-projection.d.ts.map +1 -0
- package/dist/flows/fix/writers/regression-projection.js +71 -0
- package/dist/flows/fix/writers/regression-projection.js.map +1 -0
- package/dist/flows/fix/writers/regression-rerun.d.ts +3 -0
- package/dist/flows/fix/writers/regression-rerun.d.ts.map +1 -0
- package/dist/flows/fix/writers/regression-rerun.js +51 -0
- package/dist/flows/fix/writers/regression-rerun.js.map +1 -0
- package/dist/flows/fix/writers/result-projection.d.ts +15 -0
- package/dist/flows/fix/writers/result-projection.d.ts.map +1 -0
- package/dist/flows/fix/writers/result-projection.js +58 -0
- package/dist/flows/fix/writers/result-projection.js.map +1 -0
- package/dist/flows/fix/writers/verification-projection.d.ts +4 -0
- package/dist/flows/fix/writers/verification-projection.d.ts.map +1 -0
- package/dist/flows/fix/writers/verification-projection.js +24 -0
- package/dist/flows/fix/writers/verification-projection.js.map +1 -0
- package/dist/flows/fix/writers/verification.d.ts +3 -0
- package/dist/flows/fix/writers/verification.d.ts.map +1 -0
- package/dist/flows/fix/writers/verification.js +32 -0
- package/dist/flows/fix/writers/verification.js.map +1 -0
- package/dist/flows/fix-until-green/assembly-spec.d.ts +5 -0
- package/dist/flows/fix-until-green/assembly-spec.d.ts.map +1 -0
- package/dist/flows/fix-until-green/assembly-spec.js +141 -0
- package/dist/flows/fix-until-green/assembly-spec.js.map +1 -0
- package/dist/flows/fix-until-green/data.d.ts +462 -0
- package/dist/flows/fix-until-green/data.d.ts.map +1 -0
- package/dist/flows/fix-until-green/data.js +49 -0
- package/dist/flows/fix-until-green/data.js.map +1 -0
- package/dist/flows/fix-until-green/flow.d.ts +2 -0
- package/dist/flows/fix-until-green/flow.d.ts.map +1 -0
- package/dist/flows/fix-until-green/flow.js +4 -0
- package/dist/flows/fix-until-green/flow.js.map +1 -0
- package/dist/flows/fix-until-green/relay-hints.d.ts +3 -0
- package/dist/flows/fix-until-green/relay-hints.d.ts.map +1 -0
- package/dist/flows/fix-until-green/relay-hints.js +37 -0
- package/dist/flows/fix-until-green/relay-hints.js.map +1 -0
- package/dist/flows/fix-until-green/reports.d.ts +38 -0
- package/dist/flows/fix-until-green/reports.d.ts.map +1 -0
- package/dist/flows/fix-until-green/reports.js +28 -0
- package/dist/flows/fix-until-green/reports.js.map +1 -0
- package/dist/flows/fix-until-green/writers/plan.d.ts +3 -0
- package/dist/flows/fix-until-green/writers/plan.d.ts.map +1 -0
- package/dist/flows/fix-until-green/writers/plan.js +27 -0
- package/dist/flows/fix-until-green/writers/plan.js.map +1 -0
- package/dist/flows/fix-until-green/writers/verification.d.ts +3 -0
- package/dist/flows/fix-until-green/writers/verification.d.ts.map +1 -0
- package/dist/flows/fix-until-green/writers/verification.js +46 -0
- package/dist/flows/fix-until-green/writers/verification.js.map +1 -0
- package/dist/flows/flow-definition.d.ts +81 -0
- package/dist/flows/flow-definition.d.ts.map +1 -0
- package/dist/flows/flow-definition.js +258 -0
- package/dist/flows/flow-definition.js.map +1 -0
- package/dist/flows/goal/assembly-spec.d.ts +5 -0
- package/dist/flows/goal/assembly-spec.d.ts.map +1 -0
- package/dist/flows/goal/assembly-spec.js +352 -0
- package/dist/flows/goal/assembly-spec.js.map +1 -0
- package/dist/flows/goal/data.d.ts +795 -0
- package/dist/flows/goal/data.d.ts.map +1 -0
- package/dist/flows/goal/data.js +181 -0
- package/dist/flows/goal/data.js.map +1 -0
- package/dist/flows/goal/flow.d.ts +2 -0
- package/dist/flows/goal/flow.d.ts.map +1 -0
- package/dist/flows/goal/flow.js +4 -0
- package/dist/flows/goal/flow.js.map +1 -0
- package/dist/flows/goal/relay-hints.d.ts +5 -0
- package/dist/flows/goal/relay-hints.d.ts.map +1 -0
- package/dist/flows/goal/relay-hints.js +48 -0
- package/dist/flows/goal/relay-hints.js.map +1 -0
- package/dist/flows/goal/reports.d.ts +442 -0
- package/dist/flows/goal/reports.d.ts.map +1 -0
- package/dist/flows/goal/reports.js +510 -0
- package/dist/flows/goal/reports.js.map +1 -0
- package/dist/flows/goal/writers/attempt.d.ts +3 -0
- package/dist/flows/goal/writers/attempt.d.ts.map +1 -0
- package/dist/flows/goal/writers/attempt.js +52 -0
- package/dist/flows/goal/writers/attempt.js.map +1 -0
- package/dist/flows/goal/writers/close.d.ts +3 -0
- package/dist/flows/goal/writers/close.d.ts.map +1 -0
- package/dist/flows/goal/writers/close.js +80 -0
- package/dist/flows/goal/writers/close.js.map +1 -0
- package/dist/flows/goal/writers/contract.d.ts +3 -0
- package/dist/flows/goal/writers/contract.d.ts.map +1 -0
- package/dist/flows/goal/writers/contract.js +137 -0
- package/dist/flows/goal/writers/contract.js.map +1 -0
- package/dist/flows/goal/writers/evidence-evaluation.d.ts +3 -0
- package/dist/flows/goal/writers/evidence-evaluation.d.ts.map +1 -0
- package/dist/flows/goal/writers/evidence-evaluation.js +91 -0
- package/dist/flows/goal/writers/evidence-evaluation.js.map +1 -0
- package/dist/flows/goal/writers/recovery.d.ts +3 -0
- package/dist/flows/goal/writers/recovery.d.ts.map +1 -0
- package/dist/flows/goal/writers/recovery.js +67 -0
- package/dist/flows/goal/writers/recovery.js.map +1 -0
- package/dist/flows/prototype/assembly-spec.d.ts +5 -0
- package/dist/flows/prototype/assembly-spec.d.ts.map +1 -0
- package/dist/flows/prototype/assembly-spec.js +408 -0
- package/dist/flows/prototype/assembly-spec.js.map +1 -0
- package/dist/flows/prototype/data.d.ts +947 -0
- package/dist/flows/prototype/data.d.ts.map +1 -0
- package/dist/flows/prototype/data.js +212 -0
- package/dist/flows/prototype/data.js.map +1 -0
- package/dist/flows/prototype/flow.d.ts +2 -0
- package/dist/flows/prototype/flow.d.ts.map +1 -0
- package/dist/flows/prototype/flow.js +4 -0
- package/dist/flows/prototype/flow.js.map +1 -0
- package/dist/flows/prototype/index.d.ts +4 -0
- package/dist/flows/prototype/index.d.ts.map +1 -0
- package/dist/flows/prototype/index.js +8 -0
- package/dist/flows/prototype/index.js.map +1 -0
- package/dist/flows/prototype/relay-hints.d.ts +5 -0
- package/dist/flows/prototype/relay-hints.d.ts.map +1 -0
- package/dist/flows/prototype/relay-hints.js +46 -0
- package/dist/flows/prototype/relay-hints.js.map +1 -0
- package/dist/flows/prototype/reports.d.ts +909 -0
- package/dist/flows/prototype/reports.d.ts.map +1 -0
- package/dist/flows/prototype/reports.js +721 -0
- package/dist/flows/prototype/reports.js.map +1 -0
- package/dist/flows/prototype/writers/brief.d.ts +3 -0
- package/dist/flows/prototype/writers/brief.d.ts.map +1 -0
- package/dist/flows/prototype/writers/brief.js +51 -0
- package/dist/flows/prototype/writers/brief.js.map +1 -0
- package/dist/flows/prototype/writers/checkpoint-html.d.ts +3 -0
- package/dist/flows/prototype/writers/checkpoint-html.d.ts.map +1 -0
- package/dist/flows/prototype/writers/checkpoint-html.js +247 -0
- package/dist/flows/prototype/writers/checkpoint-html.js.map +1 -0
- package/dist/flows/prototype/writers/close.d.ts +3 -0
- package/dist/flows/prototype/writers/close.d.ts.map +1 -0
- package/dist/flows/prototype/writers/close.js +358 -0
- package/dist/flows/prototype/writers/close.js.map +1 -0
- package/dist/flows/prototype/writers/plan.d.ts +3 -0
- package/dist/flows/prototype/writers/plan.d.ts.map +1 -0
- package/dist/flows/prototype/writers/plan.js +31 -0
- package/dist/flows/prototype/writers/plan.js.map +1 -0
- package/dist/flows/prototype/writers/variant-choice-options.d.ts +3 -0
- package/dist/flows/prototype/writers/variant-choice-options.d.ts.map +1 -0
- package/dist/flows/prototype/writers/variant-choice-options.js +58 -0
- package/dist/flows/prototype/writers/variant-choice-options.js.map +1 -0
- package/dist/flows/prototype/writers/variant-options.d.ts +3 -0
- package/dist/flows/prototype/writers/variant-options.d.ts.map +1 -0
- package/dist/flows/prototype/writers/variant-options.js +74 -0
- package/dist/flows/prototype/writers/variant-options.js.map +1 -0
- package/dist/flows/prototype/writers/variant-provider-evidence.d.ts +3 -0
- package/dist/flows/prototype/writers/variant-provider-evidence.d.ts.map +1 -0
- package/dist/flows/prototype/writers/variant-provider-evidence.js +79 -0
- package/dist/flows/prototype/writers/variant-provider-evidence.js.map +1 -0
- package/dist/flows/prototype/writers/variant-verification.d.ts +3 -0
- package/dist/flows/prototype/writers/variant-verification.d.ts.map +1 -0
- package/dist/flows/prototype/writers/variant-verification.js +149 -0
- package/dist/flows/prototype/writers/variant-verification.js.map +1 -0
- package/dist/flows/prototype/writers/verification.d.ts +3 -0
- package/dist/flows/prototype/writers/verification.d.ts.map +1 -0
- package/dist/flows/prototype/writers/verification.js +105 -0
- package/dist/flows/prototype/writers/verification.js.map +1 -0
- package/dist/flows/pursue/assembly-spec.d.ts +6 -0
- package/dist/flows/pursue/assembly-spec.d.ts.map +1 -0
- package/dist/flows/pursue/assembly-spec.js +181 -0
- package/dist/flows/pursue/assembly-spec.js.map +1 -0
- package/dist/flows/pursue/data.d.ts +740 -0
- package/dist/flows/pursue/data.d.ts.map +1 -0
- package/dist/flows/pursue/data.js +125 -0
- package/dist/flows/pursue/data.js.map +1 -0
- package/dist/flows/pursue/flow.d.ts +2 -0
- package/dist/flows/pursue/flow.d.ts.map +1 -0
- package/dist/flows/pursue/flow.js +4 -0
- package/dist/flows/pursue/flow.js.map +1 -0
- package/dist/flows/pursue/relay-hints.d.ts +4 -0
- package/dist/flows/pursue/relay-hints.d.ts.map +1 -0
- package/dist/flows/pursue/relay-hints.js +34 -0
- package/dist/flows/pursue/relay-hints.js.map +1 -0
- package/dist/flows/pursue/reports.d.ts +383 -0
- package/dist/flows/pursue/reports.d.ts.map +1 -0
- package/dist/flows/pursue/reports.js +404 -0
- package/dist/flows/pursue/reports.js.map +1 -0
- package/dist/flows/pursue/writers/close.d.ts +3 -0
- package/dist/flows/pursue/writers/close.d.ts.map +1 -0
- package/dist/flows/pursue/writers/close.js +41 -0
- package/dist/flows/pursue/writers/close.js.map +1 -0
- package/dist/flows/pursue/writers/contract-projection.d.ts +7 -0
- package/dist/flows/pursue/writers/contract-projection.d.ts.map +1 -0
- package/dist/flows/pursue/writers/contract-projection.js +125 -0
- package/dist/flows/pursue/writers/contract-projection.js.map +1 -0
- package/dist/flows/pursue/writers/contract.d.ts +3 -0
- package/dist/flows/pursue/writers/contract.d.ts.map +1 -0
- package/dist/flows/pursue/writers/contract.js +17 -0
- package/dist/flows/pursue/writers/contract.js.map +1 -0
- package/dist/flows/pursue/writers/graph.d.ts +3 -0
- package/dist/flows/pursue/writers/graph.d.ts.map +1 -0
- package/dist/flows/pursue/writers/graph.js +76 -0
- package/dist/flows/pursue/writers/graph.js.map +1 -0
- package/dist/flows/pursue/writers/result-projection.d.ts +11 -0
- package/dist/flows/pursue/writers/result-projection.d.ts.map +1 -0
- package/dist/flows/pursue/writers/result-projection.js +85 -0
- package/dist/flows/pursue/writers/result-projection.js.map +1 -0
- package/dist/flows/pursue/writers/verification-projection.d.ts +4 -0
- package/dist/flows/pursue/writers/verification-projection.d.ts.map +1 -0
- package/dist/flows/pursue/writers/verification-projection.js +20 -0
- package/dist/flows/pursue/writers/verification-projection.js.map +1 -0
- package/dist/flows/pursue/writers/verification.d.ts +3 -0
- package/dist/flows/pursue/writers/verification.d.ts.map +1 -0
- package/dist/flows/pursue/writers/verification.js +24 -0
- package/dist/flows/pursue/writers/verification.js.map +1 -0
- package/dist/flows/pursue/writers/wave-plan.d.ts +3 -0
- package/dist/flows/pursue/writers/wave-plan.d.ts.map +1 -0
- package/dist/flows/pursue/writers/wave-plan.js +36 -0
- package/dist/flows/pursue/writers/wave-plan.js.map +1 -0
- package/dist/flows/registries/checkpoint-writers/registry.d.ts +3 -0
- package/dist/flows/registries/checkpoint-writers/registry.d.ts.map +1 -0
- package/dist/flows/registries/checkpoint-writers/registry.js +12 -0
- package/dist/flows/registries/checkpoint-writers/registry.js.map +1 -0
- package/dist/flows/registries/checkpoint-writers/types.d.ts +22 -0
- package/dist/flows/registries/checkpoint-writers/types.d.ts.map +1 -0
- package/dist/flows/registries/checkpoint-writers/types.js +24 -0
- package/dist/flows/registries/checkpoint-writers/types.js.map +1 -0
- package/dist/flows/registries/close-writers/generic-close-builder.d.ts +3 -0
- package/dist/flows/registries/close-writers/generic-close-builder.d.ts.map +1 -0
- package/dist/flows/registries/close-writers/generic-close-builder.js +45 -0
- package/dist/flows/registries/close-writers/generic-close-builder.js.map +1 -0
- package/dist/flows/registries/close-writers/registry.d.ts +5 -0
- package/dist/flows/registries/close-writers/registry.d.ts.map +1 -0
- package/dist/flows/registries/close-writers/registry.js +48 -0
- package/dist/flows/registries/close-writers/registry.js.map +1 -0
- package/dist/flows/registries/close-writers/types.d.ts +19 -0
- package/dist/flows/registries/close-writers/types.d.ts.map +1 -0
- package/dist/flows/registries/close-writers/types.js +19 -0
- package/dist/flows/registries/close-writers/types.js.map +1 -0
- package/dist/flows/registries/compose-writers/registry.d.ts +6 -0
- package/dist/flows/registries/compose-writers/registry.d.ts.map +1 -0
- package/dist/flows/registries/compose-writers/registry.js +46 -0
- package/dist/flows/registries/compose-writers/registry.js.map +1 -0
- package/dist/flows/registries/compose-writers/types.d.ts +30 -0
- package/dist/flows/registries/compose-writers/types.d.ts.map +1 -0
- package/dist/flows/registries/compose-writers/types.js +22 -0
- package/dist/flows/registries/compose-writers/types.js.map +1 -0
- package/dist/flows/registries/cross-report-validators.d.ts +10 -0
- package/dist/flows/registries/cross-report-validators.d.ts.map +1 -0
- package/dist/flows/registries/cross-report-validators.js +31 -0
- package/dist/flows/registries/cross-report-validators.js.map +1 -0
- package/dist/flows/registries/report-schemas.d.ts +10 -0
- package/dist/flows/registries/report-schemas.d.ts.map +1 -0
- package/dist/flows/registries/report-schemas.js +77 -0
- package/dist/flows/registries/report-schemas.js.map +1 -0
- package/dist/flows/registries/runtime-index.d.ts +100 -0
- package/dist/flows/registries/runtime-index.d.ts.map +1 -0
- package/dist/flows/registries/runtime-index.js +27 -0
- package/dist/flows/registries/runtime-index.js.map +1 -0
- package/dist/flows/registries/shape-hints/from-zod.d.ts +6 -0
- package/dist/flows/registries/shape-hints/from-zod.d.ts.map +1 -0
- package/dist/flows/registries/shape-hints/from-zod.js +354 -0
- package/dist/flows/registries/shape-hints/from-zod.js.map +1 -0
- package/dist/flows/registries/shape-hints/instruction-helpers.d.ts +3 -0
- package/dist/flows/registries/shape-hints/instruction-helpers.d.ts.map +1 -0
- package/dist/flows/registries/shape-hints/instruction-helpers.js +28 -0
- package/dist/flows/registries/shape-hints/instruction-helpers.js.map +1 -0
- package/dist/flows/registries/shape-hints/registry.d.ts +5 -0
- package/dist/flows/registries/shape-hints/registry.d.ts.map +1 -0
- package/dist/flows/registries/shape-hints/registry.js +33 -0
- package/dist/flows/registries/shape-hints/registry.js.map +1 -0
- package/dist/flows/registries/shape-hints/types.d.ts +14 -0
- package/dist/flows/registries/shape-hints/types.d.ts.map +1 -0
- package/dist/flows/registries/shape-hints/types.js +25 -0
- package/dist/flows/registries/shape-hints/types.js.map +1 -0
- package/dist/flows/registries/verification-writers/registry.d.ts +6 -0
- package/dist/flows/registries/verification-writers/registry.d.ts.map +1 -0
- package/dist/flows/registries/verification-writers/registry.js +37 -0
- package/dist/flows/registries/verification-writers/registry.js.map +1 -0
- package/dist/flows/registries/verification-writers/types.d.ts +37 -0
- package/dist/flows/registries/verification-writers/types.d.ts.map +1 -0
- package/dist/flows/registries/verification-writers/types.js +22 -0
- package/dist/flows/registries/verification-writers/types.js.map +1 -0
- package/dist/flows/report-declarations.d.ts +23 -0
- package/dist/flows/report-declarations.d.ts.map +1 -0
- package/dist/flows/report-declarations.js +46 -0
- package/dist/flows/report-declarations.js.map +1 -0
- package/dist/flows/report-schema-kit.d.ts +22 -0
- package/dist/flows/report-schema-kit.d.ts.map +1 -0
- package/dist/flows/report-schema-kit.js +59 -0
- package/dist/flows/report-schema-kit.js.map +1 -0
- package/dist/flows/resolvers/archetype.d.ts +14 -0
- package/dist/flows/resolvers/archetype.d.ts.map +1 -0
- package/dist/flows/resolvers/archetype.js +125 -0
- package/dist/flows/resolvers/archetype.js.map +1 -0
- package/dist/flows/resolvers/equipment.d.ts +32 -0
- package/dist/flows/resolvers/equipment.d.ts.map +1 -0
- package/dist/flows/resolvers/equipment.js +101 -0
- package/dist/flows/resolvers/equipment.js.map +1 -0
- package/dist/flows/resolvers/signals.d.ts +27 -0
- package/dist/flows/resolvers/signals.d.ts.map +1 -0
- package/dist/flows/resolvers/signals.js +273 -0
- package/dist/flows/resolvers/signals.js.map +1 -0
- package/dist/flows/resolvers/structure.d.ts +23 -0
- package/dist/flows/resolvers/structure.d.ts.map +1 -0
- package/dist/flows/resolvers/structure.js +112 -0
- package/dist/flows/resolvers/structure.js.map +1 -0
- package/dist/flows/review/assembly-spec.d.ts +5 -0
- package/dist/flows/review/assembly-spec.d.ts.map +1 -0
- package/dist/flows/review/assembly-spec.js +90 -0
- package/dist/flows/review/assembly-spec.js.map +1 -0
- package/dist/flows/review/data.d.ts +555 -0
- package/dist/flows/review/data.d.ts.map +1 -0
- package/dist/flows/review/data.js +75 -0
- package/dist/flows/review/data.js.map +1 -0
- package/dist/flows/review/flow.d.ts +2 -0
- package/dist/flows/review/flow.d.ts.map +1 -0
- package/dist/flows/review/flow.js +4 -0
- package/dist/flows/review/flow.js.map +1 -0
- package/dist/flows/review/index.d.ts +4 -0
- package/dist/flows/review/index.d.ts.map +1 -0
- package/dist/flows/review/index.js +8 -0
- package/dist/flows/review/index.js.map +1 -0
- package/dist/flows/review/relay-hints.d.ts +3 -0
- package/dist/flows/review/relay-hints.d.ts.map +1 -0
- package/dist/flows/review/relay-hints.js +31 -0
- package/dist/flows/review/relay-hints.js.map +1 -0
- package/dist/flows/review/reports.d.ts +247 -0
- package/dist/flows/review/reports.d.ts.map +1 -0
- package/dist/flows/review/reports.js +176 -0
- package/dist/flows/review/reports.js.map +1 -0
- package/dist/flows/review/writers/intake-projection.d.ts +13 -0
- package/dist/flows/review/writers/intake-projection.d.ts.map +1 -0
- package/dist/flows/review/writers/intake-projection.js +90 -0
- package/dist/flows/review/writers/intake-projection.js.map +1 -0
- package/dist/flows/review/writers/intake.d.ts +3 -0
- package/dist/flows/review/writers/intake.d.ts.map +1 -0
- package/dist/flows/review/writers/intake.js +186 -0
- package/dist/flows/review/writers/intake.js.map +1 -0
- package/dist/flows/review/writers/result-html.d.ts +3 -0
- package/dist/flows/review/writers/result-html.d.ts.map +1 -0
- package/dist/flows/review/writers/result-html.js +78 -0
- package/dist/flows/review/writers/result-html.js.map +1 -0
- package/dist/flows/review/writers/result-projection.d.ts +6 -0
- package/dist/flows/review/writers/result-projection.d.ts.map +1 -0
- package/dist/flows/review/writers/result-projection.js +29 -0
- package/dist/flows/review/writers/result-projection.js.map +1 -0
- package/dist/flows/review/writers/result.d.ts +3 -0
- package/dist/flows/review/writers/result.d.ts.map +1 -0
- package/dist/flows/review/writers/result.js +50 -0
- package/dist/flows/review/writers/result.js.map +1 -0
- package/dist/flows/runtime-proof/assembly-spec.d.ts +5 -0
- package/dist/flows/runtime-proof/assembly-spec.d.ts.map +1 -0
- package/dist/flows/runtime-proof/assembly-spec.js +54 -0
- package/dist/flows/runtime-proof/assembly-spec.js.map +1 -0
- package/dist/flows/runtime-proof/data.d.ts +423 -0
- package/dist/flows/runtime-proof/data.d.ts.map +1 -0
- package/dist/flows/runtime-proof/data.js +36 -0
- package/dist/flows/runtime-proof/data.js.map +1 -0
- package/dist/flows/runtime-proof/flow.d.ts +2 -0
- package/dist/flows/runtime-proof/flow.d.ts.map +1 -0
- package/dist/flows/runtime-proof/flow.js +4 -0
- package/dist/flows/runtime-proof/flow.js.map +1 -0
- package/dist/flows/runtime-proof/reports.d.ts +6 -0
- package/dist/flows/runtime-proof/reports.d.ts.map +1 -0
- package/dist/flows/runtime-proof/reports.js +7 -0
- package/dist/flows/runtime-proof/reports.js.map +1 -0
- package/dist/flows/runtime-proof/writers/compose.d.ts +3 -0
- package/dist/flows/runtime-proof/writers/compose.d.ts.map +1 -0
- package/dist/flows/runtime-proof/writers/compose.js +10 -0
- package/dist/flows/runtime-proof/writers/compose.js.map +1 -0
- package/dist/flows/schematic-catalog-check.d.ts +3 -0
- package/dist/flows/schematic-catalog-check.d.ts.map +1 -0
- package/dist/flows/schematic-catalog-check.js +73 -0
- package/dist/flows/schematic-catalog-check.js.map +1 -0
- package/dist/flows/stage-policy.d.ts +22 -0
- package/dist/flows/stage-policy.d.ts.map +1 -0
- package/dist/flows/stage-policy.js +27 -0
- package/dist/flows/stage-policy.js.map +1 -0
- package/dist/flows/sweep/assembly-spec.d.ts +5 -0
- package/dist/flows/sweep/assembly-spec.d.ts.map +1 -0
- package/dist/flows/sweep/assembly-spec.js +170 -0
- package/dist/flows/sweep/assembly-spec.js.map +1 -0
- package/dist/flows/sweep/data.d.ts +552 -0
- package/dist/flows/sweep/data.d.ts.map +1 -0
- package/dist/flows/sweep/data.js +70 -0
- package/dist/flows/sweep/data.js.map +1 -0
- package/dist/flows/sweep/flow.d.ts +2 -0
- package/dist/flows/sweep/flow.d.ts.map +1 -0
- package/dist/flows/sweep/flow.js +4 -0
- package/dist/flows/sweep/flow.js.map +1 -0
- package/dist/flows/sweep/paths.d.ts +11 -0
- package/dist/flows/sweep/paths.d.ts.map +1 -0
- package/dist/flows/sweep/paths.js +18 -0
- package/dist/flows/sweep/paths.js.map +1 -0
- package/dist/flows/sweep/relay-hints.d.ts +3 -0
- package/dist/flows/sweep/relay-hints.d.ts.map +1 -0
- package/dist/flows/sweep/relay-hints.js +27 -0
- package/dist/flows/sweep/relay-hints.js.map +1 -0
- package/dist/flows/sweep/reports.d.ts +172 -0
- package/dist/flows/sweep/reports.d.ts.map +1 -0
- package/dist/flows/sweep/reports.js +179 -0
- package/dist/flows/sweep/reports.js.map +1 -0
- package/dist/flows/sweep/writers/census.d.ts +3 -0
- package/dist/flows/sweep/writers/census.d.ts.map +1 -0
- package/dist/flows/sweep/writers/census.js +67 -0
- package/dist/flows/sweep/writers/census.js.map +1 -0
- package/dist/flows/sweep/writers/partition.d.ts +3 -0
- package/dist/flows/sweep/writers/partition.d.ts.map +1 -0
- package/dist/flows/sweep/writers/partition.js +130 -0
- package/dist/flows/sweep/writers/partition.js.map +1 -0
- package/dist/flows/sweep/writers/scan.d.ts +5 -0
- package/dist/flows/sweep/writers/scan.d.ts.map +1 -0
- package/dist/flows/sweep/writers/scan.js +89 -0
- package/dist/flows/sweep/writers/scan.js.map +1 -0
- package/dist/flows/sweep/writers/verification.d.ts +3 -0
- package/dist/flows/sweep/writers/verification.d.ts.map +1 -0
- package/dist/flows/sweep/writers/verification.js +55 -0
- package/dist/flows/sweep/writers/verification.js.map +1 -0
- package/dist/flows/types.d.ts +111 -0
- package/dist/flows/types.d.ts.map +1 -0
- package/dist/flows/types.js +14 -0
- package/dist/flows/types.js.map +1 -0
- package/dist/history/run-corpus.d.ts +16 -0
- package/dist/history/run-corpus.d.ts.map +1 -0
- package/dist/history/run-corpus.js +55 -0
- package/dist/history/run-corpus.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/project-distill.d.ts +18 -0
- package/dist/memory/project-distill.d.ts.map +1 -0
- package/dist/memory/project-distill.js +244 -0
- package/dist/memory/project-distill.js.map +1 -0
- package/dist/memory/project-identity.d.ts +25 -0
- package/dist/memory/project-identity.d.ts.map +1 -0
- package/dist/memory/project-identity.js +125 -0
- package/dist/memory/project-identity.js.map +1 -0
- package/dist/memory/project-injection.d.ts +12 -0
- package/dist/memory/project-injection.d.ts.map +1 -0
- package/dist/memory/project-injection.js +56 -0
- package/dist/memory/project-injection.js.map +1 -0
- package/dist/memory/project-store.d.ts +35 -0
- package/dist/memory/project-store.d.ts.map +1 -0
- package/dist/memory/project-store.js +150 -0
- package/dist/memory/project-store.js.map +1 -0
- package/dist/policy/fanout-join-policy.d.ts +26 -0
- package/dist/policy/fanout-join-policy.d.ts.map +1 -0
- package/dist/policy/fanout-join-policy.js +87 -0
- package/dist/policy/fanout-join-policy.js.map +1 -0
- package/dist/policy/flow-kind-policy-core.d.ts +50 -0
- package/dist/policy/flow-kind-policy-core.d.ts.map +1 -0
- package/dist/policy/flow-kind-policy-core.js +250 -0
- package/dist/policy/flow-kind-policy-core.js.map +1 -0
- package/dist/policy/flow-kind-policy.d.ts +19 -0
- package/dist/policy/flow-kind-policy.d.ts.map +1 -0
- package/dist/policy/flow-kind-policy.js +41 -0
- package/dist/policy/flow-kind-policy.js.map +1 -0
- package/dist/policy/policy-envelope.d.ts +28 -0
- package/dist/policy/policy-envelope.d.ts.map +1 -0
- package/dist/policy/policy-envelope.js +317 -0
- package/dist/policy/policy-envelope.js.map +1 -0
- package/dist/policy/recovery-route-policy.d.ts +165 -0
- package/dist/policy/recovery-route-policy.d.ts.map +1 -0
- package/dist/policy/recovery-route-policy.js +112 -0
- package/dist/policy/recovery-route-policy.js.map +1 -0
- package/dist/policy/rubric.d.ts +28 -0
- package/dist/policy/rubric.d.ts.map +1 -0
- package/dist/policy/rubric.js +139 -0
- package/dist/policy/rubric.js.map +1 -0
- package/dist/release/checks.d.ts +45 -0
- package/dist/release/checks.d.ts.map +1 -0
- package/dist/release/checks.js +382 -0
- package/dist/release/checks.js.map +1 -0
- package/dist/release/schemas.d.ts +590 -0
- package/dist/release/schemas.d.ts.map +1 -0
- package/dist/release/schemas.js +369 -0
- package/dist/release/schemas.js.map +1 -0
- package/dist/runtime/acceptance-criteria.d.ts +41 -0
- package/dist/runtime/acceptance-criteria.d.ts.map +1 -0
- package/dist/runtime/acceptance-criteria.js +282 -0
- package/dist/runtime/acceptance-criteria.js.map +1 -0
- package/dist/runtime/domain/flow.d.ts +11 -0
- package/dist/runtime/domain/flow.d.ts.map +1 -0
- package/dist/runtime/domain/flow.js +2 -0
- package/dist/runtime/domain/flow.js.map +1 -0
- package/dist/runtime/domain/route.d.ts +13 -0
- package/dist/runtime/domain/route.d.ts.map +1 -0
- package/dist/runtime/domain/route.js +7 -0
- package/dist/runtime/domain/route.js.map +1 -0
- package/dist/runtime/domain/run-file.d.ts +5 -0
- package/dist/runtime/domain/run-file.d.ts.map +1 -0
- package/dist/runtime/domain/run-file.js +2 -0
- package/dist/runtime/domain/run-file.js.map +1 -0
- package/dist/runtime/domain/run.d.ts +4 -0
- package/dist/runtime/domain/run.d.ts.map +1 -0
- package/dist/runtime/domain/run.js +2 -0
- package/dist/runtime/domain/run.js.map +1 -0
- package/dist/runtime/domain/selection.d.ts +11 -0
- package/dist/runtime/domain/selection.d.ts.map +1 -0
- package/dist/runtime/domain/selection.js +2 -0
- package/dist/runtime/domain/selection.js.map +1 -0
- package/dist/runtime/domain/step.d.ts +19 -0
- package/dist/runtime/domain/step.d.ts.map +1 -0
- package/dist/runtime/domain/step.js +4 -0
- package/dist/runtime/domain/step.js.map +1 -0
- package/dist/runtime/domain/trace.d.ts +21 -0
- package/dist/runtime/domain/trace.d.ts.map +1 -0
- package/dist/runtime/domain/trace.js +2 -0
- package/dist/runtime/domain/trace.js.map +1 -0
- package/dist/runtime/executors/checkpoint.d.ts +18 -0
- package/dist/runtime/executors/checkpoint.d.ts.map +1 -0
- package/dist/runtime/executors/checkpoint.js +463 -0
- package/dist/runtime/executors/checkpoint.js.map +1 -0
- package/dist/runtime/executors/compose.d.ts +11 -0
- package/dist/runtime/executors/compose.d.ts.map +1 -0
- package/dist/runtime/executors/compose.js +124 -0
- package/dist/runtime/executors/compose.js.map +1 -0
- package/dist/runtime/executors/fanout.d.ts +8 -0
- package/dist/runtime/executors/fanout.d.ts.map +1 -0
- package/dist/runtime/executors/fanout.js +312 -0
- package/dist/runtime/executors/fanout.js.map +1 -0
- package/dist/runtime/executors/index.d.ts +11 -0
- package/dist/runtime/executors/index.d.ts.map +1 -0
- package/dist/runtime/executors/index.js +32 -0
- package/dist/runtime/executors/index.js.map +1 -0
- package/dist/runtime/executors/relay.d.ts +73 -0
- package/dist/runtime/executors/relay.d.ts.map +1 -0
- package/dist/runtime/executors/relay.js +788 -0
- package/dist/runtime/executors/relay.js.map +1 -0
- package/dist/runtime/executors/result.d.ts +14 -0
- package/dist/runtime/executors/result.d.ts.map +1 -0
- package/dist/runtime/executors/result.js +19 -0
- package/dist/runtime/executors/result.js.map +1 -0
- package/dist/runtime/executors/shared.d.ts +17 -0
- package/dist/runtime/executors/shared.d.ts.map +1 -0
- package/dist/runtime/executors/shared.js +49 -0
- package/dist/runtime/executors/shared.js.map +1 -0
- package/dist/runtime/executors/sub-run.d.ts +8 -0
- package/dist/runtime/executors/sub-run.d.ts.map +1 -0
- package/dist/runtime/executors/sub-run.js +275 -0
- package/dist/runtime/executors/sub-run.js.map +1 -0
- package/dist/runtime/executors/verification.d.ts +7 -0
- package/dist/runtime/executors/verification.d.ts.map +1 -0
- package/dist/runtime/executors/verification.js +374 -0
- package/dist/runtime/executors/verification.js.map +1 -0
- package/dist/runtime/fanout/branch-execution.d.ts +17 -0
- package/dist/runtime/fanout/branch-execution.d.ts.map +1 -0
- package/dist/runtime/fanout/branch-execution.js +576 -0
- package/dist/runtime/fanout/branch-execution.js.map +1 -0
- package/dist/runtime/fanout/branch-expansion.d.ts +6 -0
- package/dist/runtime/fanout/branch-expansion.d.ts.map +1 -0
- package/dist/runtime/fanout/branch-expansion.js +64 -0
- package/dist/runtime/fanout/branch-expansion.js.map +1 -0
- package/dist/runtime/fanout/run-owner-lock.d.ts +28 -0
- package/dist/runtime/fanout/run-owner-lock.d.ts.map +1 -0
- package/dist/runtime/fanout/run-owner-lock.js +98 -0
- package/dist/runtime/fanout/run-owner-lock.js.map +1 -0
- package/dist/runtime/fanout/types.d.ts +38 -0
- package/dist/runtime/fanout/types.d.ts.map +1 -0
- package/dist/runtime/fanout/types.js +2 -0
- package/dist/runtime/fanout/types.js.map +1 -0
- package/dist/runtime/fanout/worktree-reaper.d.ts +108 -0
- package/dist/runtime/fanout/worktree-reaper.d.ts.map +1 -0
- package/dist/runtime/fanout/worktree-reaper.js +195 -0
- package/dist/runtime/fanout/worktree-reaper.js.map +1 -0
- package/dist/runtime/fanout/worktree.d.ts +3 -0
- package/dist/runtime/fanout/worktree.d.ts.map +1 -0
- package/dist/runtime/fanout/worktree.js +35 -0
- package/dist/runtime/fanout/worktree.js.map +1 -0
- package/dist/runtime/manifest/executable-flow.d.ts +100 -0
- package/dist/runtime/manifest/executable-flow.d.ts.map +1 -0
- package/dist/runtime/manifest/executable-flow.js +2 -0
- package/dist/runtime/manifest/executable-flow.js.map +1 -0
- package/dist/runtime/manifest/from-compiled-flow.d.ts +4 -0
- package/dist/runtime/manifest/from-compiled-flow.d.ts.map +1 -0
- package/dist/runtime/manifest/from-compiled-flow.js +169 -0
- package/dist/runtime/manifest/from-compiled-flow.js.map +1 -0
- package/dist/runtime/manifest/runtime-package-index.d.ts +4 -0
- package/dist/runtime/manifest/runtime-package-index.d.ts.map +1 -0
- package/dist/runtime/manifest/runtime-package-index.js +98 -0
- package/dist/runtime/manifest/runtime-package-index.js.map +1 -0
- package/dist/runtime/manifest/validate-executable-flow.d.ts +8 -0
- package/dist/runtime/manifest/validate-executable-flow.d.ts.map +1 -0
- package/dist/runtime/manifest/validate-executable-flow.js +143 -0
- package/dist/runtime/manifest/validate-executable-flow.js.map +1 -0
- package/dist/runtime/projections/progress.d.ts +16 -0
- package/dist/runtime/projections/progress.d.ts.map +1 -0
- package/dist/runtime/projections/progress.js +679 -0
- package/dist/runtime/projections/progress.js.map +1 -0
- package/dist/runtime/projections/status.d.ts +4 -0
- package/dist/runtime/projections/status.d.ts.map +1 -0
- package/dist/runtime/projections/status.js +14 -0
- package/dist/runtime/projections/status.js.map +1 -0
- package/dist/runtime/projections/tournament-checkpoint-context.d.ts +18 -0
- package/dist/runtime/projections/tournament-checkpoint-context.d.ts.map +1 -0
- package/dist/runtime/projections/tournament-checkpoint-context.js +106 -0
- package/dist/runtime/projections/tournament-checkpoint-context.js.map +1 -0
- package/dist/runtime/run/binding-legibility.d.ts +71 -0
- package/dist/runtime/run/binding-legibility.d.ts.map +1 -0
- package/dist/runtime/run/binding-legibility.js +61 -0
- package/dist/runtime/run/binding-legibility.js.map +1 -0
- package/dist/runtime/run/capabilities.d.ts +34 -0
- package/dist/runtime/run/capabilities.d.ts.map +1 -0
- package/dist/runtime/run/capabilities.js +22 -0
- package/dist/runtime/run/capabilities.js.map +1 -0
- package/dist/runtime/run/carried-notes.d.ts +13 -0
- package/dist/runtime/run/carried-notes.d.ts.map +1 -0
- package/dist/runtime/run/carried-notes.js +53 -0
- package/dist/runtime/run/carried-notes.js.map +1 -0
- package/dist/runtime/run/checkpoint-resume.d.ts +44 -0
- package/dist/runtime/run/checkpoint-resume.d.ts.map +1 -0
- package/dist/runtime/run/checkpoint-resume.js +549 -0
- package/dist/runtime/run/checkpoint-resume.js.map +1 -0
- package/dist/runtime/run/child-runner.d.ts +57 -0
- package/dist/runtime/run/child-runner.d.ts.map +1 -0
- package/dist/runtime/run/child-runner.js +2 -0
- package/dist/runtime/run/child-runner.js.map +1 -0
- package/dist/runtime/run/commit-containment.d.ts +11 -0
- package/dist/runtime/run/commit-containment.d.ts.map +1 -0
- package/dist/runtime/run/commit-containment.js +46 -0
- package/dist/runtime/run/commit-containment.js.map +1 -0
- package/dist/runtime/run/compiled-flow-runner.d.ts +26 -0
- package/dist/runtime/run/compiled-flow-runner.d.ts.map +1 -0
- package/dist/runtime/run/compiled-flow-runner.js +137 -0
- package/dist/runtime/run/compiled-flow-runner.js.map +1 -0
- package/dist/runtime/run/connector-planning.d.ts +3 -0
- package/dist/runtime/run/connector-planning.d.ts.map +1 -0
- package/dist/runtime/run/connector-planning.js +29 -0
- package/dist/runtime/run/connector-planning.js.map +1 -0
- package/dist/runtime/run/context-delivery.d.ts +24 -0
- package/dist/runtime/run/context-delivery.d.ts.map +1 -0
- package/dist/runtime/run/context-delivery.js +92 -0
- package/dist/runtime/run/context-delivery.js.map +1 -0
- package/dist/runtime/run/context-pull.d.ts +22 -0
- package/dist/runtime/run/context-pull.d.ts.map +1 -0
- package/dist/runtime/run/context-pull.js +112 -0
- package/dist/runtime/run/context-pull.js.map +1 -0
- package/dist/runtime/run/engine-flags.d.ts +7 -0
- package/dist/runtime/run/engine-flags.d.ts.map +1 -0
- package/dist/runtime/run/engine-flags.js +89 -0
- package/dist/runtime/run/engine-flags.js.map +1 -0
- package/dist/runtime/run/equipment-reshape.d.ts +24 -0
- package/dist/runtime/run/equipment-reshape.d.ts.map +1 -0
- package/dist/runtime/run/equipment-reshape.js +156 -0
- package/dist/runtime/run/equipment-reshape.js.map +1 -0
- package/dist/runtime/run/external-files.d.ts +5 -0
- package/dist/runtime/run/external-files.d.ts.map +1 -0
- package/dist/runtime/run/external-files.js +7 -0
- package/dist/runtime/run/external-files.js.map +1 -0
- package/dist/runtime/run/frozen-eval.d.ts +8 -0
- package/dist/runtime/run/frozen-eval.d.ts.map +1 -0
- package/dist/runtime/run/frozen-eval.js +60 -0
- package/dist/runtime/run/frozen-eval.js.map +1 -0
- package/dist/runtime/run/graph-runner.d.ts +67 -0
- package/dist/runtime/run/graph-runner.d.ts.map +1 -0
- package/dist/runtime/run/graph-runner.js +1755 -0
- package/dist/runtime/run/graph-runner.js.map +1 -0
- package/dist/runtime/run/guidance.d.ts +49 -0
- package/dist/runtime/run/guidance.d.ts.map +1 -0
- package/dist/runtime/run/guidance.js +227 -0
- package/dist/runtime/run/guidance.js.map +1 -0
- package/dist/runtime/run/honesty-ledger.d.ts +21 -0
- package/dist/runtime/run/honesty-ledger.d.ts.map +1 -0
- package/dist/runtime/run/honesty-ledger.js +75 -0
- package/dist/runtime/run/honesty-ledger.js.map +1 -0
- package/dist/runtime/run/iteration-ledger.d.ts +15 -0
- package/dist/runtime/run/iteration-ledger.d.ts.map +1 -0
- package/dist/runtime/run/iteration-ledger.js +91 -0
- package/dist/runtime/run/iteration-ledger.js.map +1 -0
- package/dist/runtime/run/manifest-snapshot.d.ts +27 -0
- package/dist/runtime/run/manifest-snapshot.d.ts.map +1 -0
- package/dist/runtime/run/manifest-snapshot.js +58 -0
- package/dist/runtime/run/manifest-snapshot.js.map +1 -0
- package/dist/runtime/run/oracle-command-pin.d.ts +20 -0
- package/dist/runtime/run/oracle-command-pin.d.ts.map +1 -0
- package/dist/runtime/run/oracle-command-pin.js +94 -0
- package/dist/runtime/run/oracle-command-pin.js.map +1 -0
- package/dist/runtime/run/recovery-binding-verdict.d.ts +40 -0
- package/dist/runtime/run/recovery-binding-verdict.d.ts.map +1 -0
- package/dist/runtime/run/recovery-binding-verdict.js +70 -0
- package/dist/runtime/run/recovery-binding-verdict.js.map +1 -0
- package/dist/runtime/run/recovery-corridor.d.ts +103 -0
- package/dist/runtime/run/recovery-corridor.d.ts.map +1 -0
- package/dist/runtime/run/recovery-corridor.js +178 -0
- package/dist/runtime/run/recovery-corridor.js.map +1 -0
- package/dist/runtime/run/recovery-selection.d.ts +18 -0
- package/dist/runtime/run/recovery-selection.d.ts.map +1 -0
- package/dist/runtime/run/recovery-selection.js +43 -0
- package/dist/runtime/run/recovery-selection.js.map +1 -0
- package/dist/runtime/run/relay-guidance.d.ts +40 -0
- package/dist/runtime/run/relay-guidance.d.ts.map +1 -0
- package/dist/runtime/run/relay-guidance.js +306 -0
- package/dist/runtime/run/relay-guidance.js.map +1 -0
- package/dist/runtime/run/relay-support.d.ts +29 -0
- package/dist/runtime/run/relay-support.d.ts.map +1 -0
- package/dist/runtime/run/relay-support.js +436 -0
- package/dist/runtime/run/relay-support.js.map +1 -0
- package/dist/runtime/run/result-recovery.d.ts +16 -0
- package/dist/runtime/run/result-recovery.d.ts.map +1 -0
- package/dist/runtime/run/result-recovery.js +73 -0
- package/dist/runtime/run/result-recovery.js.map +1 -0
- package/dist/runtime/run/result-writer.d.ts +17 -0
- package/dist/runtime/run/result-writer.d.ts.map +1 -0
- package/dist/runtime/run/result-writer.js +5 -0
- package/dist/runtime/run/result-writer.js.map +1 -0
- package/dist/runtime/run/resume-lock.d.ts +29 -0
- package/dist/runtime/run/resume-lock.d.ts.map +1 -0
- package/dist/runtime/run/resume-lock.js +166 -0
- package/dist/runtime/run/resume-lock.js.map +1 -0
- package/dist/runtime/run/reuse-children.d.ts +24 -0
- package/dist/runtime/run/reuse-children.d.ts.map +1 -0
- package/dist/runtime/run/reuse-children.js +107 -0
- package/dist/runtime/run/reuse-children.js.map +1 -0
- package/dist/runtime/run/run-boundary.d.ts +30 -0
- package/dist/runtime/run/run-boundary.d.ts.map +1 -0
- package/dist/runtime/run/run-boundary.js +110 -0
- package/dist/runtime/run/run-boundary.js.map +1 -0
- package/dist/runtime/run/run-close.d.ts +22 -0
- package/dist/runtime/run/run-close.d.ts.map +1 -0
- package/dist/runtime/run/run-close.js +228 -0
- package/dist/runtime/run/run-close.js.map +1 -0
- package/dist/runtime/run/run-context.d.ts +59 -0
- package/dist/runtime/run/run-context.d.ts.map +1 -0
- package/dist/runtime/run/run-context.js +2 -0
- package/dist/runtime/run/run-context.js.map +1 -0
- package/dist/runtime/run/run-transition.d.ts +43 -0
- package/dist/runtime/run/run-transition.d.ts.map +1 -0
- package/dist/runtime/run/run-transition.js +52 -0
- package/dist/runtime/run/run-transition.js.map +1 -0
- package/dist/runtime/run/run-values.d.ts +80 -0
- package/dist/runtime/run/run-values.d.ts.map +1 -0
- package/dist/runtime/run/run-values.js +85 -0
- package/dist/runtime/run/run-values.js.map +1 -0
- package/dist/runtime/run/slice-corridor.d.ts +27 -0
- package/dist/runtime/run/slice-corridor.d.ts.map +1 -0
- package/dist/runtime/run/slice-corridor.js +99 -0
- package/dist/runtime/run/slice-corridor.js.map +1 -0
- package/dist/runtime/run/trace-evidence.d.ts +34 -0
- package/dist/runtime/run/trace-evidence.d.ts.map +1 -0
- package/dist/runtime/run/trace-evidence.js +148 -0
- package/dist/runtime/run/trace-evidence.js.map +1 -0
- package/dist/runtime/run/until-budget.d.ts +12 -0
- package/dist/runtime/run/until-budget.d.ts.map +1 -0
- package/dist/runtime/run/until-budget.js +102 -0
- package/dist/runtime/run/until-budget.js.map +1 -0
- package/dist/runtime/run/until-corridor.d.ts +32 -0
- package/dist/runtime/run/until-corridor.d.ts.map +1 -0
- package/dist/runtime/run/until-corridor.js +161 -0
- package/dist/runtime/run/until-corridor.js.map +1 -0
- package/dist/runtime/run-files/report-validator.d.ts +3 -0
- package/dist/runtime/run-files/report-validator.d.ts.map +1 -0
- package/dist/runtime/run-files/report-validator.js +29 -0
- package/dist/runtime/run-files/report-validator.js.map +1 -0
- package/dist/runtime/run-files/run-file-store.d.ts +13 -0
- package/dist/runtime/run-files/run-file-store.d.ts.map +1 -0
- package/dist/runtime/run-files/run-file-store.js +42 -0
- package/dist/runtime/run-files/run-file-store.js.map +1 -0
- package/dist/runtime/trace/trace-fields.d.ts +97 -0
- package/dist/runtime/trace/trace-fields.d.ts.map +1 -0
- package/dist/runtime/trace/trace-fields.js +181 -0
- package/dist/runtime/trace/trace-fields.js.map +1 -0
- package/dist/runtime/trace/trace-store.d.ts +20 -0
- package/dist/runtime/trace/trace-store.d.ts.map +1 -0
- package/dist/runtime/trace/trace-store.js +157 -0
- package/dist/runtime/trace/trace-store.js.map +1 -0
- package/dist/schemas/acceptance-criteria.d.ts +94 -0
- package/dist/schemas/acceptance-criteria.d.ts.map +1 -0
- package/dist/schemas/acceptance-criteria.js +42 -0
- package/dist/schemas/acceptance-criteria.js.map +1 -0
- package/dist/schemas/axes.d.ts +45 -0
- package/dist/schemas/axes.d.ts.map +1 -0
- package/dist/schemas/axes.js +79 -0
- package/dist/schemas/axes.js.map +1 -0
- package/dist/schemas/axis-config-requirement.d.ts +20 -0
- package/dist/schemas/axis-config-requirement.d.ts.map +1 -0
- package/dist/schemas/axis-config-requirement.js +24 -0
- package/dist/schemas/axis-config-requirement.js.map +1 -0
- package/dist/schemas/builtin-report-schemas.d.ts +6 -0
- package/dist/schemas/builtin-report-schemas.d.ts.map +1 -0
- package/dist/schemas/builtin-report-schemas.js +155 -0
- package/dist/schemas/builtin-report-schemas.js.map +1 -0
- package/dist/schemas/change-kind.d.ts +75 -0
- package/dist/schemas/change-kind.d.ts.map +1 -0
- package/dist/schemas/change-kind.js +35 -0
- package/dist/schemas/change-kind.js.map +1 -0
- package/dist/schemas/change-packet.d.ts +42 -0
- package/dist/schemas/change-packet.d.ts.map +1 -0
- package/dist/schemas/change-packet.js +26 -0
- package/dist/schemas/change-packet.js.map +1 -0
- package/dist/schemas/check.d.ts +174 -0
- package/dist/schemas/check.d.ts.map +1 -0
- package/dist/schemas/check.js +162 -0
- package/dist/schemas/check.js.map +1 -0
- package/dist/schemas/checkpoint-boundary.d.ts +605 -0
- package/dist/schemas/checkpoint-boundary.d.ts.map +1 -0
- package/dist/schemas/checkpoint-boundary.js +243 -0
- package/dist/schemas/checkpoint-boundary.js.map +1 -0
- package/dist/schemas/compiled-flow.d.ts +1065 -0
- package/dist/schemas/compiled-flow.d.ts.map +1 -0
- package/dist/schemas/compiled-flow.js +331 -0
- package/dist/schemas/compiled-flow.js.map +1 -0
- package/dist/schemas/config.d.ts +905 -0
- package/dist/schemas/config.d.ts.map +1 -0
- package/dist/schemas/config.js +240 -0
- package/dist/schemas/config.js.map +1 -0
- package/dist/schemas/connector.d.ts +216 -0
- package/dist/schemas/connector.d.ts.map +1 -0
- package/dist/schemas/connector.js +150 -0
- package/dist/schemas/connector.js.map +1 -0
- package/dist/schemas/context-request.d.ts +14 -0
- package/dist/schemas/context-request.d.ts.map +1 -0
- package/dist/schemas/context-request.js +33 -0
- package/dist/schemas/context-request.js.map +1 -0
- package/dist/schemas/continuity.d.ts +362 -0
- package/dist/schemas/continuity.d.ts.map +1 -0
- package/dist/schemas/continuity.js +232 -0
- package/dist/schemas/continuity.js.map +1 -0
- package/dist/schemas/custom-flow-descriptor.d.ts +10 -0
- package/dist/schemas/custom-flow-descriptor.d.ts.map +1 -0
- package/dist/schemas/custom-flow-descriptor.js +12 -0
- package/dist/schemas/custom-flow-descriptor.js.map +1 -0
- package/dist/schemas/depth.d.ts +16 -0
- package/dist/schemas/depth.d.ts.map +1 -0
- package/dist/schemas/depth.js +7 -0
- package/dist/schemas/depth.js.map +1 -0
- package/dist/schemas/engine-flags.d.ts +44 -0
- package/dist/schemas/engine-flags.d.ts.map +1 -0
- package/dist/schemas/engine-flags.js +104 -0
- package/dist/schemas/engine-flags.js.map +1 -0
- package/dist/schemas/equipment-discovery.d.ts +8 -0
- package/dist/schemas/equipment-discovery.d.ts.map +1 -0
- package/dist/schemas/equipment-discovery.js +36 -0
- package/dist/schemas/equipment-discovery.js.map +1 -0
- package/dist/schemas/equipment-scope.d.ts +42 -0
- package/dist/schemas/equipment-scope.d.ts.map +1 -0
- package/dist/schemas/equipment-scope.js +84 -0
- package/dist/schemas/equipment-scope.js.map +1 -0
- package/dist/schemas/flow-block-definitions.d.ts +59 -0
- package/dist/schemas/flow-block-definitions.d.ts.map +1 -0
- package/dist/schemas/flow-block-definitions.js +867 -0
- package/dist/schemas/flow-block-definitions.js.map +1 -0
- package/dist/schemas/flow-blocks.d.ts +301 -0
- package/dist/schemas/flow-blocks.d.ts.map +1 -0
- package/dist/schemas/flow-blocks.js +223 -0
- package/dist/schemas/flow-blocks.js.map +1 -0
- package/dist/schemas/flow-schematic-policy.d.ts +6 -0
- package/dist/schemas/flow-schematic-policy.d.ts.map +1 -0
- package/dist/schemas/flow-schematic-policy.js +8 -0
- package/dist/schemas/flow-schematic-policy.js.map +1 -0
- package/dist/schemas/flow-schematic.d.ts +1407 -0
- package/dist/schemas/flow-schematic.d.ts.map +1 -0
- package/dist/schemas/flow-schematic.js +944 -0
- package/dist/schemas/flow-schematic.js.map +1 -0
- package/dist/schemas/guidance-decision.d.ts +728 -0
- package/dist/schemas/guidance-decision.d.ts.map +1 -0
- package/dist/schemas/guidance-decision.js +527 -0
- package/dist/schemas/guidance-decision.js.map +1 -0
- package/dist/schemas/hashing.d.ts +6 -0
- package/dist/schemas/hashing.d.ts.map +1 -0
- package/dist/schemas/hashing.js +27 -0
- package/dist/schemas/hashing.js.map +1 -0
- package/dist/schemas/history.d.ts +1735 -0
- package/dist/schemas/history.d.ts.map +1 -0
- package/dist/schemas/history.js +662 -0
- package/dist/schemas/history.js.map +1 -0
- package/dist/schemas/host.d.ts +16 -0
- package/dist/schemas/host.d.ts.map +1 -0
- package/dist/schemas/host.js +8 -0
- package/dist/schemas/host.js.map +1 -0
- package/dist/schemas/ids.d.ts +18 -0
- package/dist/schemas/ids.d.ts.map +1 -0
- package/dist/schemas/ids.js +17 -0
- package/dist/schemas/ids.js.map +1 -0
- package/dist/schemas/index.d.ts +60 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +60 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/json.d.ts +10 -0
- package/dist/schemas/json.d.ts.map +1 -0
- package/dist/schemas/json.js +12 -0
- package/dist/schemas/json.js.map +1 -0
- package/dist/schemas/manifest.d.ts +15 -0
- package/dist/schemas/manifest.d.ts.map +1 -0
- package/dist/schemas/manifest.js +61 -0
- package/dist/schemas/manifest.js.map +1 -0
- package/dist/schemas/memory-input.d.ts +94 -0
- package/dist/schemas/memory-input.d.ts.map +1 -0
- package/dist/schemas/memory-input.js +119 -0
- package/dist/schemas/memory-input.js.map +1 -0
- package/dist/schemas/operator-summary.d.ts +369 -0
- package/dist/schemas/operator-summary.d.ts.map +1 -0
- package/dist/schemas/operator-summary.js +207 -0
- package/dist/schemas/operator-summary.js.map +1 -0
- package/dist/schemas/policy-envelope.d.ts +1655 -0
- package/dist/schemas/policy-envelope.d.ts.map +1 -0
- package/dist/schemas/policy-envelope.js +330 -0
- package/dist/schemas/policy-envelope.js.map +1 -0
- package/dist/schemas/power.d.ts +26 -0
- package/dist/schemas/power.d.ts.map +1 -0
- package/dist/schemas/power.js +38 -0
- package/dist/schemas/power.js.map +1 -0
- package/dist/schemas/process-evidence.d.ts +156 -0
- package/dist/schemas/process-evidence.d.ts.map +1 -0
- package/dist/schemas/process-evidence.js +142 -0
- package/dist/schemas/process-evidence.js.map +1 -0
- package/dist/schemas/process.d.ts +16 -0
- package/dist/schemas/process.d.ts.map +1 -0
- package/dist/schemas/process.js +7 -0
- package/dist/schemas/process.js.map +1 -0
- package/dist/schemas/progress-event.d.ts +1505 -0
- package/dist/schemas/progress-event.d.ts.map +1 -0
- package/dist/schemas/progress-event.js +246 -0
- package/dist/schemas/progress-event.js.map +1 -0
- package/dist/schemas/proof-assessment.d.ts +542 -0
- package/dist/schemas/proof-assessment.d.ts.map +1 -0
- package/dist/schemas/proof-assessment.js +336 -0
- package/dist/schemas/proof-assessment.js.map +1 -0
- package/dist/schemas/recovery-route-kind.d.ts +229 -0
- package/dist/schemas/recovery-route-kind.d.ts.map +1 -0
- package/dist/schemas/recovery-route-kind.js +242 -0
- package/dist/schemas/recovery-route-kind.js.map +1 -0
- package/dist/schemas/ref.d.ts +51 -0
- package/dist/schemas/ref.d.ts.map +1 -0
- package/dist/schemas/ref.js +96 -0
- package/dist/schemas/ref.js.map +1 -0
- package/dist/schemas/report-file-surface.d.ts +44 -0
- package/dist/schemas/report-file-surface.d.ts.map +1 -0
- package/dist/schemas/report-file-surface.js +22 -0
- package/dist/schemas/report-file-surface.js.map +1 -0
- package/dist/schemas/result.d.ts +23 -0
- package/dist/schemas/result.d.ts.map +1 -0
- package/dist/schemas/result.js +55 -0
- package/dist/schemas/result.js.map +1 -0
- package/dist/schemas/role.d.ts +8 -0
- package/dist/schemas/role.d.ts.map +1 -0
- package/dist/schemas/role.js +5 -0
- package/dist/schemas/role.js.map +1 -0
- package/dist/schemas/route-policy.d.ts +5 -0
- package/dist/schemas/route-policy.d.ts.map +1 -0
- package/dist/schemas/route-policy.js +9 -0
- package/dist/schemas/route-policy.js.map +1 -0
- package/dist/schemas/routing-contract-schemas.d.ts +11 -0
- package/dist/schemas/routing-contract-schemas.d.ts.map +1 -0
- package/dist/schemas/routing-contract-schemas.js +72 -0
- package/dist/schemas/routing-contract-schemas.js.map +1 -0
- package/dist/schemas/rubric.d.ts +74 -0
- package/dist/schemas/rubric.d.ts.map +1 -0
- package/dist/schemas/rubric.js +125 -0
- package/dist/schemas/rubric.js.map +1 -0
- package/dist/schemas/run-envelope.d.ts +1333 -0
- package/dist/schemas/run-envelope.d.ts.map +1 -0
- package/dist/schemas/run-envelope.js +578 -0
- package/dist/schemas/run-envelope.js.map +1 -0
- package/dist/schemas/run-status.d.ts +216 -0
- package/dist/schemas/run-status.d.ts.map +1 -0
- package/dist/schemas/run-status.js +146 -0
- package/dist/schemas/run-status.js.map +1 -0
- package/dist/schemas/run.d.ts +2866 -0
- package/dist/schemas/run.d.ts.map +1 -0
- package/dist/schemas/run.js +647 -0
- package/dist/schemas/run.js.map +1 -0
- package/dist/schemas/runtime-evidence.d.ts +152 -0
- package/dist/schemas/runtime-evidence.d.ts.map +1 -0
- package/dist/schemas/runtime-evidence.js +127 -0
- package/dist/schemas/runtime-evidence.js.map +1 -0
- package/dist/schemas/runtime-source.d.ts +55 -0
- package/dist/schemas/runtime-source.d.ts.map +1 -0
- package/dist/schemas/runtime-source.js +40 -0
- package/dist/schemas/runtime-source.js.map +1 -0
- package/dist/schemas/scalars.d.ts +21 -0
- package/dist/schemas/scalars.d.ts.map +1 -0
- package/dist/schemas/scalars.js +51 -0
- package/dist/schemas/scalars.js.map +1 -0
- package/dist/schemas/selection-policy.d.ts +764 -0
- package/dist/schemas/selection-policy.d.ts.map +1 -0
- package/dist/schemas/selection-policy.js +209 -0
- package/dist/schemas/selection-policy.js.map +1 -0
- package/dist/schemas/skill-hook.d.ts +214 -0
- package/dist/schemas/skill-hook.d.ts.map +1 -0
- package/dist/schemas/skill-hook.js +279 -0
- package/dist/schemas/skill-hook.js.map +1 -0
- package/dist/schemas/skill.d.ts +59 -0
- package/dist/schemas/skill.d.ts.map +1 -0
- package/dist/schemas/skill.js +82 -0
- package/dist/schemas/skill.js.map +1 -0
- package/dist/schemas/snapshot.d.ts +108 -0
- package/dist/schemas/snapshot.d.ts.map +1 -0
- package/dist/schemas/snapshot.js +40 -0
- package/dist/schemas/snapshot.js.map +1 -0
- package/dist/schemas/stage.d.ts +85 -0
- package/dist/schemas/stage.d.ts.map +1 -0
- package/dist/schemas/stage.js +58 -0
- package/dist/schemas/stage.js.map +1 -0
- package/dist/schemas/step.d.ts +2455 -0
- package/dist/schemas/step.d.ts.map +1 -0
- package/dist/schemas/step.js +567 -0
- package/dist/schemas/step.js.map +1 -0
- package/dist/schemas/trace-entry.d.ts +2573 -0
- package/dist/schemas/trace-entry.d.ts.map +1 -0
- package/dist/schemas/trace-entry.js +973 -0
- package/dist/schemas/trace-entry.js.map +1 -0
- package/dist/schemas/verification.d.ts +47 -0
- package/dist/schemas/verification.d.ts.map +1 -0
- package/dist/schemas/verification.js +122 -0
- package/dist/schemas/verification.js.map +1 -0
- package/dist/schemas/work-contract-projection.d.ts +473 -0
- package/dist/schemas/work-contract-projection.d.ts.map +1 -0
- package/dist/schemas/work-contract-projection.js +232 -0
- package/dist/schemas/work-contract-projection.js.map +1 -0
- package/dist/selection/connector-planning.d.ts +23 -0
- package/dist/selection/connector-planning.d.ts.map +1 -0
- package/dist/selection/connector-planning.js +31 -0
- package/dist/selection/connector-planning.js.map +1 -0
- package/dist/selection/power-inference.d.ts +20 -0
- package/dist/selection/power-inference.d.ts.map +1 -0
- package/dist/selection/power-inference.js +74 -0
- package/dist/selection/power-inference.js.map +1 -0
- package/dist/selection/power-tiers.d.ts +24 -0
- package/dist/selection/power-tiers.d.ts.map +1 -0
- package/dist/selection/power-tiers.js +115 -0
- package/dist/selection/power-tiers.js.map +1 -0
- package/dist/selection/relay-selection.d.ts +11 -0
- package/dist/selection/relay-selection.d.ts.map +1 -0
- package/dist/selection/relay-selection.js +57 -0
- package/dist/selection/relay-selection.js.map +1 -0
- package/dist/selection/selection-resolver.d.ts +23 -0
- package/dist/selection/selection-resolver.d.ts.map +1 -0
- package/dist/selection/selection-resolver.js +153 -0
- package/dist/selection/selection-resolver.js.map +1 -0
- package/dist/shared/atomic-io.d.ts +11 -0
- package/dist/shared/atomic-io.d.ts.map +1 -0
- package/dist/shared/atomic-io.js +29 -0
- package/dist/shared/atomic-io.js.map +1 -0
- package/dist/shared/checkpoint-auto-resolution.d.ts +17 -0
- package/dist/shared/checkpoint-auto-resolution.d.ts.map +1 -0
- package/dist/shared/checkpoint-auto-resolution.js +72 -0
- package/dist/shared/checkpoint-auto-resolution.js.map +1 -0
- package/dist/shared/checkpoint-boundary.d.ts +15 -0
- package/dist/shared/checkpoint-boundary.d.ts.map +1 -0
- package/dist/shared/checkpoint-boundary.js +125 -0
- package/dist/shared/checkpoint-boundary.js.map +1 -0
- package/dist/shared/config-loader.d.ts +20 -0
- package/dist/shared/config-loader.d.ts.map +1 -0
- package/dist/shared/config-loader.js +140 -0
- package/dist/shared/config-loader.js.map +1 -0
- package/dist/shared/connector-relay.d.ts +39 -0
- package/dist/shared/connector-relay.d.ts.map +1 -0
- package/dist/shared/connector-relay.js +2 -0
- package/dist/shared/connector-relay.js.map +1 -0
- package/dist/shared/control-plane-gitignore.d.ts +10 -0
- package/dist/shared/control-plane-gitignore.d.ts.map +1 -0
- package/dist/shared/control-plane-gitignore.js +46 -0
- package/dist/shared/control-plane-gitignore.js.map +1 -0
- package/dist/shared/control-plane-paths.d.ts +36 -0
- package/dist/shared/control-plane-paths.d.ts.map +1 -0
- package/dist/shared/control-plane-paths.js +71 -0
- package/dist/shared/control-plane-paths.js.map +1 -0
- package/dist/shared/equipment-enforcement.d.ts +11 -0
- package/dist/shared/equipment-enforcement.d.ts.map +1 -0
- package/dist/shared/equipment-enforcement.js +37 -0
- package/dist/shared/equipment-enforcement.js.map +1 -0
- package/dist/shared/fanout-aggregate-report.d.ts +32 -0
- package/dist/shared/fanout-aggregate-report.d.ts.map +1 -0
- package/dist/shared/fanout-aggregate-report.js +73 -0
- package/dist/shared/fanout-aggregate-report.js.map +1 -0
- package/dist/shared/fanout-branch-template.d.ts +4 -0
- package/dist/shared/fanout-branch-template.d.ts.map +1 -0
- package/dist/shared/fanout-branch-template.js +55 -0
- package/dist/shared/fanout-branch-template.js.map +1 -0
- package/dist/shared/git-state-command.d.ts +19 -0
- package/dist/shared/git-state-command.d.ts.map +1 -0
- package/dist/shared/git-state-command.js +52 -0
- package/dist/shared/git-state-command.js.map +1 -0
- package/dist/shared/git-state.d.ts +3 -0
- package/dist/shared/git-state.d.ts.map +1 -0
- package/dist/shared/git-state.js +163 -0
- package/dist/shared/git-state.js.map +1 -0
- package/dist/shared/git-state.ts +175 -0
- package/dist/shared/html/checkpoint-page.d.ts +41 -0
- package/dist/shared/html/checkpoint-page.d.ts.map +1 -0
- package/dist/shared/html/checkpoint-page.js +108 -0
- package/dist/shared/html/checkpoint-page.js.map +1 -0
- package/dist/shared/html/index.d.ts +6 -0
- package/dist/shared/html/index.d.ts.map +1 -0
- package/dist/shared/html/index.js +16 -0
- package/dist/shared/html/index.js.map +1 -0
- package/dist/shared/html/multi-variant.d.ts +56 -0
- package/dist/shared/html/multi-variant.d.ts.map +1 -0
- package/dist/shared/html/multi-variant.js +183 -0
- package/dist/shared/html/multi-variant.js.map +1 -0
- package/dist/shared/html/page.d.ts +5 -0
- package/dist/shared/html/page.d.ts.map +1 -0
- package/dist/shared/html/page.js +42 -0
- package/dist/shared/html/page.js.map +1 -0
- package/dist/shared/html/projector.d.ts +38 -0
- package/dist/shared/html/projector.d.ts.map +1 -0
- package/dist/shared/html/projector.js +7 -0
- package/dist/shared/html/projector.js.map +1 -0
- package/dist/shared/html/react-page.d.ts +10 -0
- package/dist/shared/html/react-page.d.ts.map +1 -0
- package/dist/shared/html/react-page.js +31 -0
- package/dist/shared/html/react-page.js.map +1 -0
- package/dist/shared/html/report-components.d.ts +57 -0
- package/dist/shared/html/report-components.d.ts.map +1 -0
- package/dist/shared/html/report-components.js +69 -0
- package/dist/shared/html/report-components.js.map +1 -0
- package/dist/shared/html/ui/alert.d.ts +10 -0
- package/dist/shared/html/ui/alert.d.ts.map +1 -0
- package/dist/shared/html/ui/alert.js +28 -0
- package/dist/shared/html/ui/alert.js.map +1 -0
- package/dist/shared/html/ui/badge.d.ts +11 -0
- package/dist/shared/html/ui/badge.d.ts.map +1 -0
- package/dist/shared/html/ui/badge.js +32 -0
- package/dist/shared/html/ui/badge.js.map +1 -0
- package/dist/shared/html/ui/button.d.ts +13 -0
- package/dist/shared/html/ui/button.d.ts.map +1 -0
- package/dist/shared/html/ui/button.js +36 -0
- package/dist/shared/html/ui/button.js.map +1 -0
- package/dist/shared/html/ui/card.d.ts +10 -0
- package/dist/shared/html/ui/card.d.ts.map +1 -0
- package/dist/shared/html/ui/card.js +25 -0
- package/dist/shared/html/ui/card.js.map +1 -0
- package/dist/shared/html/ui/checkbox.d.ts +4 -0
- package/dist/shared/html/ui/checkbox.d.ts.map +1 -0
- package/dist/shared/html/ui/checkbox.js +7 -0
- package/dist/shared/html/ui/checkbox.js.map +1 -0
- package/dist/shared/html/ui/collapsible.d.ts +6 -0
- package/dist/shared/html/ui/collapsible.d.ts.map +1 -0
- package/dist/shared/html/ui/collapsible.js +13 -0
- package/dist/shared/html/ui/collapsible.js.map +1 -0
- package/dist/shared/html/ui/css.generated.d.ts +2 -0
- package/dist/shared/html/ui/css.generated.d.ts.map +1 -0
- package/dist/shared/html/ui/css.generated.js +5 -0
- package/dist/shared/html/ui/css.generated.js.map +1 -0
- package/dist/shared/html/ui/field.d.ts +26 -0
- package/dist/shared/html/ui/field.d.ts.map +1 -0
- package/dist/shared/html/ui/field.js +79 -0
- package/dist/shared/html/ui/field.js.map +1 -0
- package/dist/shared/html/ui/index.d.ts +16 -0
- package/dist/shared/html/ui/index.d.ts.map +1 -0
- package/dist/shared/html/ui/index.js +20 -0
- package/dist/shared/html/ui/index.js.map +1 -0
- package/dist/shared/html/ui/input.d.ts +5 -0
- package/dist/shared/html/ui/input.d.ts.map +1 -0
- package/dist/shared/html/ui/input.js +11 -0
- package/dist/shared/html/ui/input.js.map +1 -0
- package/dist/shared/html/ui/kbd.d.ts +5 -0
- package/dist/shared/html/ui/kbd.d.ts.map +1 -0
- package/dist/shared/html/ui/kbd.js +10 -0
- package/dist/shared/html/ui/kbd.js.map +1 -0
- package/dist/shared/html/ui/label.d.ts +4 -0
- package/dist/shared/html/ui/label.d.ts.map +1 -0
- package/dist/shared/html/ui/label.js +9 -0
- package/dist/shared/html/ui/label.js.map +1 -0
- package/dist/shared/html/ui/radio-group.d.ts +5 -0
- package/dist/shared/html/ui/radio-group.d.ts.map +1 -0
- package/dist/shared/html/ui/radio-group.js +10 -0
- package/dist/shared/html/ui/radio-group.js.map +1 -0
- package/dist/shared/html/ui/separator.d.ts +4 -0
- package/dist/shared/html/ui/separator.d.ts.map +1 -0
- package/dist/shared/html/ui/separator.js +11 -0
- package/dist/shared/html/ui/separator.js.map +1 -0
- package/dist/shared/html/ui/table.d.ts +11 -0
- package/dist/shared/html/ui/table.d.ts.map +1 -0
- package/dist/shared/html/ui/table.js +28 -0
- package/dist/shared/html/ui/table.js.map +1 -0
- package/dist/shared/html/ui/textarea.d.ts +4 -0
- package/dist/shared/html/ui/textarea.d.ts.map +1 -0
- package/dist/shared/html/ui/textarea.js +7 -0
- package/dist/shared/html/ui/textarea.js.map +1 -0
- package/dist/shared/html/ui/utils.d.ts +3 -0
- package/dist/shared/html/ui/utils.d.ts.map +1 -0
- package/dist/shared/html/ui/utils.js +11 -0
- package/dist/shared/html/ui/utils.js.map +1 -0
- package/dist/shared/json-extraction.d.ts +2 -0
- package/dist/shared/json-extraction.d.ts.map +1 -0
- package/dist/shared/json-extraction.js +68 -0
- package/dist/shared/json-extraction.js.map +1 -0
- package/dist/shared/manifest-snapshot.d.ts +13 -0
- package/dist/shared/manifest-snapshot.d.ts.map +1 -0
- package/dist/shared/manifest-snapshot.js +48 -0
- package/dist/shared/manifest-snapshot.js.map +1 -0
- package/dist/shared/operator-summary/explore.d.ts +3 -0
- package/dist/shared/operator-summary/explore.d.ts.map +1 -0
- package/dist/shared/operator-summary/explore.js +208 -0
- package/dist/shared/operator-summary/explore.js.map +1 -0
- package/dist/shared/operator-summary/index.d.ts +6 -0
- package/dist/shared/operator-summary/index.d.ts.map +1 -0
- package/dist/shared/operator-summary/index.js +10 -0
- package/dist/shared/operator-summary/index.js.map +1 -0
- package/dist/shared/operator-summary/json.d.ts +10 -0
- package/dist/shared/operator-summary/json.d.ts.map +1 -0
- package/dist/shared/operator-summary/json.js +63 -0
- package/dist/shared/operator-summary/json.js.map +1 -0
- package/dist/shared/operator-summary/projections.d.ts +4 -0
- package/dist/shared/operator-summary/projections.d.ts.map +1 -0
- package/dist/shared/operator-summary/projections.js +452 -0
- package/dist/shared/operator-summary/projections.js.map +1 -0
- package/dist/shared/operator-summary/projector.d.ts +14 -0
- package/dist/shared/operator-summary/projector.d.ts.map +1 -0
- package/dist/shared/operator-summary/projector.js +12 -0
- package/dist/shared/operator-summary/projector.js.map +1 -0
- package/dist/shared/operator-summary/text.d.ts +11 -0
- package/dist/shared/operator-summary/text.d.ts.map +1 -0
- package/dist/shared/operator-summary/text.js +92 -0
- package/dist/shared/operator-summary/text.js.map +1 -0
- package/dist/shared/outcome.d.ts +13 -0
- package/dist/shared/outcome.d.ts.map +1 -0
- package/dist/shared/outcome.js +76 -0
- package/dist/shared/outcome.js.map +1 -0
- package/dist/shared/progress-output.d.ts +12 -0
- package/dist/shared/progress-output.d.ts.map +1 -0
- package/dist/shared/progress-output.js +50 -0
- package/dist/shared/progress-output.js.map +1 -0
- package/dist/shared/proof-assessment.d.ts +7 -0
- package/dist/shared/proof-assessment.d.ts.map +1 -0
- package/dist/shared/proof-assessment.js +67 -0
- package/dist/shared/proof-assessment.js.map +1 -0
- package/dist/shared/proof-plan.d.ts +26 -0
- package/dist/shared/proof-plan.d.ts.map +1 -0
- package/dist/shared/proof-plan.js +164 -0
- package/dist/shared/proof-plan.js.map +1 -0
- package/dist/shared/relay-runtime-types.d.ts +30 -0
- package/dist/shared/relay-runtime-types.d.ts.map +1 -0
- package/dist/shared/relay-runtime-types.js +2 -0
- package/dist/shared/relay-runtime-types.js.map +1 -0
- package/dist/shared/result-path.d.ts +3 -0
- package/dist/shared/result-path.d.ts.map +1 -0
- package/dist/shared/result-path.js +6 -0
- package/dist/shared/result-path.js.map +1 -0
- package/dist/shared/run-artifact-io.d.ts +3 -0
- package/dist/shared/run-artifact-io.d.ts.map +1 -0
- package/dist/shared/run-artifact-io.js +17 -0
- package/dist/shared/run-artifact-io.js.map +1 -0
- package/dist/shared/run-file-paths.d.ts +3 -0
- package/dist/shared/run-file-paths.d.ts.map +1 -0
- package/dist/shared/run-file-paths.js +72 -0
- package/dist/shared/run-file-paths.js.map +1 -0
- package/dist/shared/run-relative-path.d.ts +2 -0
- package/dist/shared/run-relative-path.d.ts.map +1 -0
- package/dist/shared/run-relative-path.js +43 -0
- package/dist/shared/run-relative-path.js.map +1 -0
- package/dist/shared/runtime-source.d.ts +24 -0
- package/dist/shared/runtime-source.d.ts.map +1 -0
- package/dist/shared/runtime-source.js +75 -0
- package/dist/shared/runtime-source.js.map +1 -0
- package/dist/shared/runtime-touched-files.d.ts +12 -0
- package/dist/shared/runtime-touched-files.d.ts.map +1 -0
- package/dist/shared/runtime-touched-files.js +106 -0
- package/dist/shared/runtime-touched-files.js.map +1 -0
- package/dist/shared/skill-loading.d.ts +22 -0
- package/dist/shared/skill-loading.d.ts.map +1 -0
- package/dist/shared/skill-loading.js +75 -0
- package/dist/shared/skill-loading.js.map +1 -0
- package/dist/shared/status-block-renderer.d.ts +16 -0
- package/dist/shared/status-block-renderer.d.ts.map +1 -0
- package/dist/shared/status-block-renderer.js +67 -0
- package/dist/shared/status-block-renderer.js.map +1 -0
- package/dist/shared/user-skill-registry.d.ts +18 -0
- package/dist/shared/user-skill-registry.d.ts.map +1 -0
- package/dist/shared/user-skill-registry.js +130 -0
- package/dist/shared/user-skill-registry.js.map +1 -0
- package/dist/shared/verification-resolver.d.ts +23 -0
- package/dist/shared/verification-resolver.d.ts.map +1 -0
- package/dist/shared/verification-resolver.js +162 -0
- package/dist/shared/verification-resolver.js.map +1 -0
- package/dist/shared/work-contract-projection.d.ts +15 -0
- package/dist/shared/work-contract-projection.d.ts.map +1 -0
- package/dist/shared/work-contract-projection.js +498 -0
- package/dist/shared/work-contract-projection.js.map +1 -0
- package/dist/shared/working-tree-changes.d.ts +18 -0
- package/dist/shared/working-tree-changes.d.ts.map +1 -0
- package/dist/shared/working-tree-changes.js +94 -0
- package/dist/shared/working-tree-changes.js.map +1 -0
- package/dist/shared/write-capable-worker-disclosure.d.ts +3 -0
- package/dist/shared/write-capable-worker-disclosure.d.ts.map +1 -0
- package/dist/shared/write-capable-worker-disclosure.js +6 -0
- package/dist/shared/write-capable-worker-disclosure.js.map +1 -0
- package/dist/shared/zod-to-response-schema.d.ts +4 -0
- package/dist/shared/zod-to-response-schema.d.ts.map +1 -0
- package/dist/shared/zod-to-response-schema.js +88 -0
- package/dist/shared/zod-to-response-schema.js.map +1 -0
- package/dist/skill-hooks/decision-packet.d.ts +10 -0
- package/dist/skill-hooks/decision-packet.d.ts.map +1 -0
- package/dist/skill-hooks/decision-packet.js +42 -0
- package/dist/skill-hooks/decision-packet.js.map +1 -0
- package/dist/skill-hooks/dispatch.d.ts +27 -0
- package/dist/skill-hooks/dispatch.d.ts.map +1 -0
- package/dist/skill-hooks/dispatch.js +167 -0
- package/dist/skill-hooks/dispatch.js.map +1 -0
- package/dist/skill-hooks/injection.d.ts +7 -0
- package/dist/skill-hooks/injection.d.ts.map +1 -0
- package/dist/skill-hooks/injection.js +50 -0
- package/dist/skill-hooks/injection.js.map +1 -0
- package/dist/skill-hooks/policy.d.ts +32 -0
- package/dist/skill-hooks/policy.d.ts.map +1 -0
- package/dist/skill-hooks/policy.js +104 -0
- package/dist/skill-hooks/policy.js.map +1 -0
- package/dist/skill-hooks/surface-sources.d.ts +8 -0
- package/dist/skill-hooks/surface-sources.d.ts.map +1 -0
- package/dist/skill-hooks/surface-sources.js +55 -0
- package/dist/skill-hooks/surface-sources.js.map +1 -0
- package/generated/flows/build/circuit.json +439 -0
- package/generated/flows/build/circuit.work-contract.v0.json +1283 -0
- package/generated/flows/catalog.json +29 -0
- package/generated/flows/converge-proof/circuit.json +145 -0
- package/generated/flows/converge-proof/circuit.work-contract.v0.json +275 -0
- package/generated/flows/cross-tool-build/circuit.json +321 -0
- package/generated/flows/cross-tool-build/circuit.work-contract.v0.json +1157 -0
- package/generated/flows/explainer/circuit.json +610 -0
- package/generated/flows/explainer/circuit.work-contract.v0.json +1552 -0
- package/generated/flows/explore/circuit.json +217 -0
- package/generated/flows/explore/circuit.work-contract.v0.json +717 -0
- package/generated/flows/explore/tournament.json +412 -0
- package/generated/flows/explore/tournament.work-contract.v0.json +983 -0
- package/generated/flows/fix/circuit.json +563 -0
- package/generated/flows/fix/circuit.work-contract.v0.json +2175 -0
- package/generated/flows/fix/low.json +511 -0
- package/generated/flows/fix/low.work-contract.v0.json +1921 -0
- package/generated/flows/fix-until-green/circuit.json +183 -0
- package/generated/flows/fix-until-green/circuit.work-contract.v0.json +438 -0
- package/generated/flows/goal/circuit.json +638 -0
- package/generated/flows/goal/circuit.work-contract.v0.json +2133 -0
- package/generated/flows/prototype/circuit.json +278 -0
- package/generated/flows/prototype/circuit.work-contract.v0.json +690 -0
- package/generated/flows/prototype/tournament.json +505 -0
- package/generated/flows/prototype/tournament.work-contract.v0.json +1122 -0
- package/generated/flows/pursue/circuit.json +298 -0
- package/generated/flows/pursue/circuit.work-contract.v0.json +944 -0
- package/generated/flows/review/circuit.json +142 -0
- package/generated/flows/review/circuit.work-contract.v0.json +392 -0
- package/generated/flows/runtime-proof/circuit.json +91 -0
- package/generated/flows/runtime-proof/circuit.work-contract.v0.json +183 -0
- package/generated/flows/sweep/circuit.json +239 -0
- package/generated/flows/sweep/circuit.work-contract.v0.json +590 -0
- package/package.json +102 -0
- package/plugins/version.json +3 -0
|
@@ -0,0 +1,1667 @@
|
|
|
1
|
+
// Operator summary write path: resolve the per-flow result report, run the
|
|
2
|
+
// projection, emit HTML, add cross-flow details, then write JSON, markdown, and
|
|
3
|
+
// HTML siblings. Per-flow projection logic lives in src/shared/operator-summary/.
|
|
4
|
+
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
5
|
+
import { dirname, isAbsolute, join, relative, resolve } from 'node:path';
|
|
6
|
+
import { findFlowRuntimeSurfaceById } from '../../flows/catalog.js';
|
|
7
|
+
import { iterationLedgerFromTrace, renderIterationLedgerMarkdown, } from '../../runtime/run/iteration-ledger.js';
|
|
8
|
+
import { OperatorAutoResolution, OperatorEquipmentReshape, OperatorSkillHookActivation, OperatorSummary, } from '../../schemas/operator-summary.js';
|
|
9
|
+
import { Power } from '../../schemas/power.js';
|
|
10
|
+
import { CompiledDepth } from '../../schemas/process.js';
|
|
11
|
+
import { ProviderScopedModel } from '../../schemas/selection-policy.js';
|
|
12
|
+
import { RunSkillHookEvent } from '../../schemas/skill-hook.js';
|
|
13
|
+
import { RelayRole } from '../../schemas/step.js';
|
|
14
|
+
import { CatalogSourcedBinding, RelayUsageEvidence, RunEquipmentReshapeTraceEntry, TraceEntry, } from '../../schemas/trace-entry.js';
|
|
15
|
+
import { genericCheckpointHtml, getHtmlProjector, } from '../../shared/html/index.js';
|
|
16
|
+
import { arrayField, evidenceReportById, friendlyRunNote, isObject, numberField, projectSummary, readJsonIfPresent, stringArrayField, stringField, } from '../../shared/operator-summary/index.js';
|
|
17
|
+
import { friendlyFixOutcome } from '../../shared/operator-summary/text.js';
|
|
18
|
+
import { RUN_RESULT_RELATIVE_PATH } from '../../shared/result-path.js';
|
|
19
|
+
import { resolveRunRelative } from '../../shared/run-relative-path.js';
|
|
20
|
+
import { WRITE_CAPABLE_WORKER_DISCLOSURE, flowMayInvokeWriteCapableWorker, } from '../../shared/write-capable-worker-disclosure.js';
|
|
21
|
+
// On resume, the CLI has the flow id but no longer has the original
|
|
22
|
+
// `routedBy` / `routerReason` (those came from the route classifier on
|
|
23
|
+
// the initial run). Recover them from the previously-written operator
|
|
24
|
+
// summary so a resume rewrite does not strip routing metadata that the
|
|
25
|
+
// initial close site captured.
|
|
26
|
+
export function readPriorRoute(runFolder) {
|
|
27
|
+
const path = join(runFolder, 'reports', 'operator-summary.json');
|
|
28
|
+
if (!existsSync(path))
|
|
29
|
+
return {};
|
|
30
|
+
try {
|
|
31
|
+
const raw = JSON.parse(readFileSync(path, 'utf8'));
|
|
32
|
+
if (!isObject(raw))
|
|
33
|
+
return {};
|
|
34
|
+
const routedBy = raw.routed_by;
|
|
35
|
+
const routerReason = raw.router_reason;
|
|
36
|
+
// Routing is model-only now, so the only recognized source is 'explicit'.
|
|
37
|
+
// A stale 'classifier' value from an older run folder is ignored, which
|
|
38
|
+
// degrades gracefully to recovery provenance on resume.
|
|
39
|
+
return {
|
|
40
|
+
...(routedBy === 'explicit' ? { routedBy } : {}),
|
|
41
|
+
...(typeof routerReason === 'string' && routerReason.length > 0 ? { routerReason } : {}),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return {};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Label used when listing the HTML report in report_paths. Not load-bearing
|
|
49
|
+
// for control flow — markdown rendering and CLI plumbing read summary.html_path
|
|
50
|
+
// directly. Kept as a friendly label for the report list.
|
|
51
|
+
const HTML_REPORT_LABEL = 'Operator summary (HTML)';
|
|
52
|
+
// The brief is a fixed-size digest: OperatorBriefSlots (the schema) caps key
|
|
53
|
+
// points at 4 and caveats at 3 so the rendered card stays scannable at a
|
|
54
|
+
// glance. The caps are honest only because capWithOverflow (below) turns
|
|
55
|
+
// anything beyond them into an explicit "+N more" line — a capped brief may
|
|
56
|
+
// be short, but it can never silently read as the whole story.
|
|
57
|
+
const MAX_KEY_POINTS = 4;
|
|
58
|
+
const MAX_CAVEATS = 3;
|
|
59
|
+
// Cap a list for the fixed-size brief. When items overflow the cap, the last
|
|
60
|
+
// slot becomes an explicit "+N more in operator-summary.json." pointer instead
|
|
61
|
+
// of a silent drop: the brief stays schema-sized while telling the operator
|
|
62
|
+
// how much it is not showing and where the full record lives (the JSON
|
|
63
|
+
// summary carries the uncapped details, evidence_warnings, and checkpoint
|
|
64
|
+
// data the brief draws from). With no slot left for even the pointer
|
|
65
|
+
// (max <= 0), the caller has filled the card with lines that outrank these.
|
|
66
|
+
function capWithOverflow(items, max) {
|
|
67
|
+
if (max <= 0)
|
|
68
|
+
return [];
|
|
69
|
+
if (items.length <= max)
|
|
70
|
+
return [...items];
|
|
71
|
+
const shown = items.slice(0, max - 1);
|
|
72
|
+
return [...shown, `+${items.length - shown.length} more in operator-summary.json.`];
|
|
73
|
+
}
|
|
74
|
+
// Key points for the outcome-override briefs. Priority lines (the abort or
|
|
75
|
+
// stop reason, the salvage handover, the checkpoint prompt) always keep their
|
|
76
|
+
// slots: several of them exist ONLY in the brief, so evicting one for an
|
|
77
|
+
// overflow pointer would lose it outright. Detail-derived candidates fill
|
|
78
|
+
// whatever space remains, with the usual overflow accounting; when priority
|
|
79
|
+
// lines fill the card, the dropped candidates still live in the details array
|
|
80
|
+
// of the same operator-summary.json this brief is part of.
|
|
81
|
+
function briefKeyPoints(priority, candidates) {
|
|
82
|
+
const front = priority.slice(0, MAX_KEY_POINTS);
|
|
83
|
+
return [...front, ...capWithOverflow(candidates, MAX_KEY_POINTS - front.length)];
|
|
84
|
+
}
|
|
85
|
+
// The real salvage menu for a stopped or aborted run: the operator inspects
|
|
86
|
+
// the diff, proves the change on their own terms, then decides what happens
|
|
87
|
+
// to the attempt. Replaces a generic "inspect the run" pointer that named no
|
|
88
|
+
// options (F6).
|
|
89
|
+
const SALVAGE_NEXT_ACTION = 'review the diff, run verification at your own budget, then resume, rerun, or discard the attempt.';
|
|
90
|
+
// Only Build and Fix run a verification step and an independent review step
|
|
91
|
+
// whose reports live at this well-known per-flow path today. Any other flow
|
|
92
|
+
// simply renders no salvage line for that report — never a false claim.
|
|
93
|
+
const VERIFICATION_REPORT_PATH_BY_FLOW = {
|
|
94
|
+
build: 'reports/build/verification.json',
|
|
95
|
+
fix: 'reports/fix/verification.json',
|
|
96
|
+
};
|
|
97
|
+
const REVIEW_REPORT_PATH_BY_FLOW = {
|
|
98
|
+
build: 'reports/build/review.json',
|
|
99
|
+
fix: 'reports/fix/review.json',
|
|
100
|
+
};
|
|
101
|
+
// Names the failing or timed-out command straight from the verification
|
|
102
|
+
// report (1c's honest per-command reason made this legible) instead of
|
|
103
|
+
// leaving the operator to reconstruct it from the trace by hand (F6/2b).
|
|
104
|
+
function verificationFailureLine(runFolder, flowId) {
|
|
105
|
+
const path = VERIFICATION_REPORT_PATH_BY_FLOW[flowId];
|
|
106
|
+
if (path === undefined)
|
|
107
|
+
return undefined;
|
|
108
|
+
const report = readJsonIfPresent(runFolder, path);
|
|
109
|
+
if (stringField(report, 'overall_status') !== 'failed')
|
|
110
|
+
return undefined;
|
|
111
|
+
const failing = arrayField(report, 'commands').find((item) => isObject(item) && stringField(item, 'status') === 'failed');
|
|
112
|
+
if (!isObject(failing))
|
|
113
|
+
return undefined;
|
|
114
|
+
const id = stringField(failing, 'command_id') ?? 'unknown command';
|
|
115
|
+
if (failing.timed_out === true) {
|
|
116
|
+
const duration = numberField(failing, 'duration_ms');
|
|
117
|
+
const budget = numberField(failing, 'timeout_ms');
|
|
118
|
+
const durationText = duration === undefined ? '' : ` after ${duration}ms`;
|
|
119
|
+
const budgetText = budget === undefined ? '' : ` (budget ${budget}ms)`;
|
|
120
|
+
return `Verification: command '${id}' timed out${durationText}${budgetText}.`;
|
|
121
|
+
}
|
|
122
|
+
const exitCode = numberField(failing, 'exit_code');
|
|
123
|
+
return `Verification: command '${id}' exited ${exitCode ?? 'non-zero'}.`;
|
|
124
|
+
}
|
|
125
|
+
// States plainly that independent review never ran, instead of leaving a
|
|
126
|
+
// stopped or aborted run's summary silent about a skipped safeguard (F6).
|
|
127
|
+
function reviewDidNotRunLine(runFolder, flowId) {
|
|
128
|
+
const path = REVIEW_REPORT_PATH_BY_FLOW[flowId];
|
|
129
|
+
if (path === undefined)
|
|
130
|
+
return undefined;
|
|
131
|
+
return readJsonIfPresent(runFolder, path) === undefined
|
|
132
|
+
? 'Review: independent review did not run.'
|
|
133
|
+
: undefined;
|
|
134
|
+
}
|
|
135
|
+
// The salvage key points a stopped or aborted run should hand the operator:
|
|
136
|
+
// what verification found, whether edits are sitting uncommitted, and
|
|
137
|
+
// whether review ran at all (F6/2b).
|
|
138
|
+
function salvageKeyPoints(input) {
|
|
139
|
+
const points = [];
|
|
140
|
+
const verificationLine = verificationFailureLine(input.runFolder, input.flowId);
|
|
141
|
+
if (verificationLine !== undefined)
|
|
142
|
+
points.push(verificationLine);
|
|
143
|
+
if (flowMayInvokeWriteCapableWorker(input.flowId)) {
|
|
144
|
+
points.push("Working tree: the attempt's edits remain uncommitted.");
|
|
145
|
+
}
|
|
146
|
+
const reviewLine = reviewDidNotRunLine(input.runFolder, input.flowId);
|
|
147
|
+
if (reviewLine !== undefined)
|
|
148
|
+
points.push(reviewLine);
|
|
149
|
+
return points;
|
|
150
|
+
}
|
|
151
|
+
function jsonPath(runFolder) {
|
|
152
|
+
return join(runFolder, 'reports', 'operator-summary.json');
|
|
153
|
+
}
|
|
154
|
+
function markdownPath(runFolder) {
|
|
155
|
+
return join(runFolder, 'reports', 'operator-summary.md');
|
|
156
|
+
}
|
|
157
|
+
function htmlPath(runFolder) {
|
|
158
|
+
return join(runFolder, 'reports', 'operator-summary.html');
|
|
159
|
+
}
|
|
160
|
+
function isInsideOrSame(root, target) {
|
|
161
|
+
const fromRoot = relative(root, target);
|
|
162
|
+
return fromRoot === '' || (!fromRoot.startsWith('..') && !isAbsolute(fromRoot));
|
|
163
|
+
}
|
|
164
|
+
function readCheckpointRequest(runFolder, checkpoint) {
|
|
165
|
+
let requestPath;
|
|
166
|
+
try {
|
|
167
|
+
requestPath = isAbsolute(checkpoint.request_path)
|
|
168
|
+
? resolve(checkpoint.request_path)
|
|
169
|
+
: resolveRunRelative(runFolder, checkpoint.request_path);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
if (!isInsideOrSame(resolve(runFolder), requestPath))
|
|
175
|
+
return undefined;
|
|
176
|
+
if (!existsSync(requestPath))
|
|
177
|
+
return undefined;
|
|
178
|
+
try {
|
|
179
|
+
const parsed = JSON.parse(readFileSync(requestPath, 'utf8'));
|
|
180
|
+
return isObject(parsed) ? parsed : undefined;
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function checkpointProjectRoot(request) {
|
|
187
|
+
const executionContext = request?.execution_context;
|
|
188
|
+
if (!isObject(executionContext))
|
|
189
|
+
return undefined;
|
|
190
|
+
const projectRoot = stringField(executionContext, 'project_root');
|
|
191
|
+
return projectRoot !== undefined && isAbsolute(projectRoot) ? projectRoot : undefined;
|
|
192
|
+
}
|
|
193
|
+
function checkpointDepth(request) {
|
|
194
|
+
const executionContext = request?.execution_context;
|
|
195
|
+
if (!isObject(executionContext))
|
|
196
|
+
return undefined;
|
|
197
|
+
const axes = executionContext.axes;
|
|
198
|
+
if (!isObject(axes))
|
|
199
|
+
return undefined;
|
|
200
|
+
return stringField(axes, 'depth');
|
|
201
|
+
}
|
|
202
|
+
// Widens the envelope checkpoint (step id, request path, allowed ids) with
|
|
203
|
+
// the decision context the request file carries: the question, labeled
|
|
204
|
+
// choices, the declared default, and the depth dial. Best-effort by design —
|
|
205
|
+
// a missing or malformed request file leaves the widened fields undefined
|
|
206
|
+
// and the page falls back to choice ids.
|
|
207
|
+
function widenedProjectorCheckpoint(checkpoint, request) {
|
|
208
|
+
const prompt = request === undefined ? undefined : stringField(request, 'prompt');
|
|
209
|
+
const safeDefault = request === undefined ? undefined : stringField(request, 'safe_default_choice');
|
|
210
|
+
const depth = checkpointDepth(request);
|
|
211
|
+
const choices = arrayField(request, 'choices').flatMap((item) => {
|
|
212
|
+
if (!isObject(item))
|
|
213
|
+
return [];
|
|
214
|
+
const id = stringField(item, 'id');
|
|
215
|
+
if (id === undefined)
|
|
216
|
+
return [];
|
|
217
|
+
const label = stringField(item, 'label');
|
|
218
|
+
const description = stringField(item, 'description');
|
|
219
|
+
return [
|
|
220
|
+
{
|
|
221
|
+
id,
|
|
222
|
+
...(label === undefined ? {} : { label }),
|
|
223
|
+
...(description === undefined ? {} : { description }),
|
|
224
|
+
},
|
|
225
|
+
];
|
|
226
|
+
});
|
|
227
|
+
return {
|
|
228
|
+
step_id: checkpoint.step_id,
|
|
229
|
+
request_path: checkpoint.request_path,
|
|
230
|
+
allowed_choices: checkpoint.allowed_choices,
|
|
231
|
+
...(prompt === undefined ? {} : { prompt }),
|
|
232
|
+
...(safeDefault === undefined ? {} : { safe_default_choice: safeDefault }),
|
|
233
|
+
...(choices.length === 0 ? {} : { choices }),
|
|
234
|
+
...(depth === undefined ? {} : { depth }),
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
function reportLink(runFolder, label, relPath, schema) {
|
|
238
|
+
return {
|
|
239
|
+
label,
|
|
240
|
+
path: resolveRunRelative(runFolder, relPath),
|
|
241
|
+
...(schema === undefined ? {} : { schema }),
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
function warningRecords(report) {
|
|
245
|
+
return arrayField(report, 'evidence_warnings').flatMap((item) => {
|
|
246
|
+
if (!isObject(item))
|
|
247
|
+
return [];
|
|
248
|
+
const kind = stringField(item, 'kind');
|
|
249
|
+
const message = stringField(item, 'message');
|
|
250
|
+
if (kind === undefined || message === undefined)
|
|
251
|
+
return [];
|
|
252
|
+
const path = stringField(item, 'path');
|
|
253
|
+
return [{ kind, message, ...(path === undefined ? {} : { path }) }];
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
function flowDisplayName(flowId) {
|
|
257
|
+
return flowId
|
|
258
|
+
.split('-')
|
|
259
|
+
.map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)
|
|
260
|
+
.join(' ');
|
|
261
|
+
}
|
|
262
|
+
function digestStatusText(headline) {
|
|
263
|
+
return headline.replace(/^Circuit\s*·\s*/i, '').trim();
|
|
264
|
+
}
|
|
265
|
+
function digestHeadline(flowName) {
|
|
266
|
+
return `Circuit · ${flowName}`;
|
|
267
|
+
}
|
|
268
|
+
function withoutDetailPrefix(detail, prefix) {
|
|
269
|
+
return detail.slice(prefix.length).trim();
|
|
270
|
+
}
|
|
271
|
+
function sentence(value) {
|
|
272
|
+
const trimmed = value.trim();
|
|
273
|
+
if (trimmed.length === 0)
|
|
274
|
+
return trimmed;
|
|
275
|
+
return /[.!?]$/.test(trimmed) ? trimmed : `${trimmed}.`;
|
|
276
|
+
}
|
|
277
|
+
function splitSemicolonDetail(detail, prefix) {
|
|
278
|
+
return withoutDetailPrefix(detail, prefix)
|
|
279
|
+
.split(/;\s*/)
|
|
280
|
+
.map((entry) => entry.trim())
|
|
281
|
+
.filter((entry) => entry.length > 0);
|
|
282
|
+
}
|
|
283
|
+
function detailWithPrefix(details, prefix) {
|
|
284
|
+
return details.find((detail) => detail.startsWith(prefix));
|
|
285
|
+
}
|
|
286
|
+
function hasEvidenceWarningKind(report, kind) {
|
|
287
|
+
return arrayField(report, 'evidence_warnings').some((item) => isObject(item) && stringField(item, 'kind') === kind);
|
|
288
|
+
}
|
|
289
|
+
function reviewOutcomeLabel(flowReport) {
|
|
290
|
+
if (hasEvidenceWarningKind(flowReport, 'scope_empty'))
|
|
291
|
+
return 'No scope';
|
|
292
|
+
const verdict = stringField(flowReport, 'verdict');
|
|
293
|
+
const findings = arrayField(flowReport, 'findings').length;
|
|
294
|
+
if (verdict === 'CLEAN')
|
|
295
|
+
return 'Clean';
|
|
296
|
+
return `Issues (${findings})`;
|
|
297
|
+
}
|
|
298
|
+
function buildOutcomeLabel(flowReport, runOutcome) {
|
|
299
|
+
const outcome = stringField(flowReport, 'outcome') ?? runOutcome;
|
|
300
|
+
const verification = stringField(flowReport, 'verification_status');
|
|
301
|
+
const review = stringField(flowReport, 'review_verdict');
|
|
302
|
+
if (outcome === 'complete' && verification === 'passed' && review === 'accept') {
|
|
303
|
+
return 'Implemented';
|
|
304
|
+
}
|
|
305
|
+
if (outcome === 'needs_attention')
|
|
306
|
+
return 'Needs follow-up';
|
|
307
|
+
return `Finished (${outcome})`;
|
|
308
|
+
}
|
|
309
|
+
function fixOutcomeLabel(flowReport, runOutcome) {
|
|
310
|
+
const outcome = stringField(flowReport, 'outcome') ?? runOutcome;
|
|
311
|
+
switch (outcome) {
|
|
312
|
+
case 'fixed':
|
|
313
|
+
return 'Fixed';
|
|
314
|
+
case 'partial':
|
|
315
|
+
return 'Applied with follow-ups';
|
|
316
|
+
case 'not-reproduced':
|
|
317
|
+
return 'Not reproduced';
|
|
318
|
+
case 'failed':
|
|
319
|
+
return 'Failed';
|
|
320
|
+
case 'stopped':
|
|
321
|
+
return 'Stopped';
|
|
322
|
+
case 'handoff':
|
|
323
|
+
return 'Handed off';
|
|
324
|
+
default:
|
|
325
|
+
return friendlyFixOutcome(outcome);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
function exploreOutcomeLabel(input) {
|
|
329
|
+
const decisionReport = evidenceReportById(input.runFolder, input.flowReport, 'explore.decision') ??
|
|
330
|
+
readJsonIfPresent(input.runFolder, 'reports/decision.json');
|
|
331
|
+
const selected = stringField(decisionReport, 'selected_option_label');
|
|
332
|
+
if (selected !== undefined)
|
|
333
|
+
return `Decided: ${selected}`;
|
|
334
|
+
const snapshot = isObject(input.flowReport?.verdict_snapshot)
|
|
335
|
+
? input.flowReport.verdict_snapshot
|
|
336
|
+
: undefined;
|
|
337
|
+
const review = stringField(snapshot, 'review_verdict');
|
|
338
|
+
if (review === 'accept-with-fold-ins') {
|
|
339
|
+
const foldIns = isObject(input.flowReport?.review_fold_ins)
|
|
340
|
+
? input.flowReport.review_fold_ins
|
|
341
|
+
: undefined;
|
|
342
|
+
if (stringArrayField(foldIns, 'objections').length > 0) {
|
|
343
|
+
return 'Recommendation with required fold-ins';
|
|
344
|
+
}
|
|
345
|
+
if (stringArrayField(foldIns, 'missed_angles').length > 0) {
|
|
346
|
+
return 'Recommendation with optional considerations';
|
|
347
|
+
}
|
|
348
|
+
return 'Recommendation with reviewer notes';
|
|
349
|
+
}
|
|
350
|
+
return 'Recommendation ready';
|
|
351
|
+
}
|
|
352
|
+
function prototypeOutcomeLabel(flowReport, runOutcome) {
|
|
353
|
+
const outcome = stringField(flowReport, 'outcome') ?? runOutcome;
|
|
354
|
+
if (outcome === 'kept')
|
|
355
|
+
return 'Kept';
|
|
356
|
+
if (outcome === 'build_input_saved')
|
|
357
|
+
return 'Saved as Build input';
|
|
358
|
+
if (outcome === 'discarded')
|
|
359
|
+
return 'Discarded';
|
|
360
|
+
return `Finished (${outcome})`;
|
|
361
|
+
}
|
|
362
|
+
function pursueOutcomeLabel(flowReport) {
|
|
363
|
+
const total = numberField(flowReport, 'total_pursuits');
|
|
364
|
+
const completed = numberField(flowReport, 'completed_count') ?? 0;
|
|
365
|
+
return total === undefined ? `${completed} completed` : `${completed}/${total} completed`;
|
|
366
|
+
}
|
|
367
|
+
function goalOutcomeLabel(flowReport, runOutcome) {
|
|
368
|
+
const outcome = stringField(flowReport, 'outcome') ?? runOutcome;
|
|
369
|
+
return outcome === 'complete' ? 'Met' : 'Not met';
|
|
370
|
+
}
|
|
371
|
+
function outcomeLabelFor(input) {
|
|
372
|
+
switch (input.flowId) {
|
|
373
|
+
case 'review':
|
|
374
|
+
return reviewOutcomeLabel(input.flowReport);
|
|
375
|
+
case 'build':
|
|
376
|
+
return buildOutcomeLabel(input.flowReport, input.runOutcome);
|
|
377
|
+
case 'fix':
|
|
378
|
+
return fixOutcomeLabel(input.flowReport, input.runOutcome);
|
|
379
|
+
case 'explore':
|
|
380
|
+
return exploreOutcomeLabel(input);
|
|
381
|
+
case 'prototype':
|
|
382
|
+
return prototypeOutcomeLabel(input.flowReport, input.runOutcome);
|
|
383
|
+
case 'pursue':
|
|
384
|
+
return pursueOutcomeLabel(input.flowReport);
|
|
385
|
+
case 'goal':
|
|
386
|
+
return goalOutcomeLabel(input.flowReport, input.runOutcome);
|
|
387
|
+
default:
|
|
388
|
+
return input.runOutcome;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
function normalizedAssessment(details, fallback) {
|
|
392
|
+
const assessment = detailWithPrefix(details, 'Assessment: ');
|
|
393
|
+
if (assessment !== undefined)
|
|
394
|
+
return withoutDetailPrefix(assessment, 'Assessment: ');
|
|
395
|
+
const recommendation = detailWithPrefix(details, 'Recommendation: ');
|
|
396
|
+
if (recommendation !== undefined)
|
|
397
|
+
return withoutDetailPrefix(recommendation, 'Recommendation: ');
|
|
398
|
+
const result = detailWithPrefix(details, 'Result: ');
|
|
399
|
+
if (result !== undefined)
|
|
400
|
+
return withoutDetailPrefix(result, 'Result: ');
|
|
401
|
+
return sentence(fallback
|
|
402
|
+
.replace(/^Circuit:\s*/i, '')
|
|
403
|
+
.replace(/^Circuit\s*·\s*/i, '')
|
|
404
|
+
.trim());
|
|
405
|
+
}
|
|
406
|
+
// Uncapped key-point candidates, in render order. Callers that prepend their
|
|
407
|
+
// own lines (the outcome-override briefs) combine first and cap once —
|
|
408
|
+
// capping twice would let an inner "+N more" line survive while real points
|
|
409
|
+
// drop.
|
|
410
|
+
function keyPointCandidatesFromDetails(details) {
|
|
411
|
+
const points = [];
|
|
412
|
+
// `Result: ` is the third-choice assessment source (after Assessment: and
|
|
413
|
+
// Recommendation: — see normalizedAssessment). When neither higher-precedence
|
|
414
|
+
// prefix is present it becomes the assessment, so it must not also render as a
|
|
415
|
+
// key point (the Pursue/Fix duplication in F-L-1). Review carries both an
|
|
416
|
+
// assessment paragraph and a Result line, so there it stays a distinct point.
|
|
417
|
+
const resultIsAssessmentSource = !details.some((detail) => detail.startsWith('Assessment: ')) &&
|
|
418
|
+
!details.some((detail) => detail.startsWith('Recommendation: '));
|
|
419
|
+
const add = (point) => {
|
|
420
|
+
const trimmed = point.trim();
|
|
421
|
+
if (trimmed.length === 0)
|
|
422
|
+
return;
|
|
423
|
+
if (points.includes(trimmed))
|
|
424
|
+
return;
|
|
425
|
+
points.push(trimmed);
|
|
426
|
+
};
|
|
427
|
+
for (const detail of details) {
|
|
428
|
+
if (detail.startsWith('Run note: '))
|
|
429
|
+
continue;
|
|
430
|
+
if (detail.startsWith('Assessment: '))
|
|
431
|
+
continue;
|
|
432
|
+
if (detail.startsWith('Recommendation: '))
|
|
433
|
+
continue;
|
|
434
|
+
if (resultIsAssessmentSource && detail.startsWith('Result: '))
|
|
435
|
+
continue;
|
|
436
|
+
if (detail.startsWith('Abort reason: '))
|
|
437
|
+
continue;
|
|
438
|
+
if (detail.startsWith('Escalation reason: '))
|
|
439
|
+
continue;
|
|
440
|
+
if (detail.startsWith('Handoff reason: '))
|
|
441
|
+
continue;
|
|
442
|
+
if (detail.startsWith('Stop reason: '))
|
|
443
|
+
continue;
|
|
444
|
+
if (detail.startsWith('Confidence limitations: '))
|
|
445
|
+
continue;
|
|
446
|
+
if (detail.startsWith('Residual risks: '))
|
|
447
|
+
continue;
|
|
448
|
+
if (detail.startsWith('Required fold-in: '))
|
|
449
|
+
continue;
|
|
450
|
+
if (detail.startsWith('Consider: '))
|
|
451
|
+
continue;
|
|
452
|
+
if (detail.startsWith('Next action: ') || detail.startsWith('Next step: '))
|
|
453
|
+
continue;
|
|
454
|
+
if (detail.startsWith('Reviewer steps: ')) {
|
|
455
|
+
for (const step of splitSemicolonDetail(detail, 'Reviewer steps: '))
|
|
456
|
+
add(step);
|
|
457
|
+
continue;
|
|
458
|
+
}
|
|
459
|
+
add(detail);
|
|
460
|
+
}
|
|
461
|
+
return points;
|
|
462
|
+
}
|
|
463
|
+
function keyPointsFromDetails(details) {
|
|
464
|
+
return capWithOverflow(keyPointCandidatesFromDetails(details), MAX_KEY_POINTS);
|
|
465
|
+
}
|
|
466
|
+
function caveatsFrom(input) {
|
|
467
|
+
const caveats = [];
|
|
468
|
+
const add = (caveat) => {
|
|
469
|
+
const trimmed = caveat.trim();
|
|
470
|
+
if (trimmed.length === 0)
|
|
471
|
+
return;
|
|
472
|
+
if (caveats.includes(trimmed))
|
|
473
|
+
return;
|
|
474
|
+
caveats.push(trimmed);
|
|
475
|
+
};
|
|
476
|
+
// Machine warnings FIRST. A warning records a subsystem failure the run
|
|
477
|
+
// survived (a swallowed hook dispatch, a failed HTML render, a parked
|
|
478
|
+
// discovery); it must never lose its brief slot to an ordinary review
|
|
479
|
+
// caveat, so position here is survival priority under the cap below.
|
|
480
|
+
for (const warning of input.warnings) {
|
|
481
|
+
add(`${warning.kind}: ${warning.message}`);
|
|
482
|
+
}
|
|
483
|
+
for (const detail of input.details) {
|
|
484
|
+
if (detail.startsWith('Confidence limitations: ')) {
|
|
485
|
+
for (const caveat of splitSemicolonDetail(detail, 'Confidence limitations: ')) {
|
|
486
|
+
add(sentence(caveat));
|
|
487
|
+
}
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
if (detail.startsWith('Residual risks: ')) {
|
|
491
|
+
for (const caveat of splitSemicolonDetail(detail, 'Residual risks: '))
|
|
492
|
+
add(sentence(caveat));
|
|
493
|
+
continue;
|
|
494
|
+
}
|
|
495
|
+
if (detail.startsWith('Required fold-in: '))
|
|
496
|
+
add(withoutDetailPrefix(detail, 'Required fold-in: '));
|
|
497
|
+
if (detail.startsWith('Consider: '))
|
|
498
|
+
add(withoutDetailPrefix(detail, 'Consider: '));
|
|
499
|
+
}
|
|
500
|
+
return capWithOverflow(caveats, MAX_CAVEATS);
|
|
501
|
+
}
|
|
502
|
+
function nextActionFrom(details, flowId, outcomeLabel) {
|
|
503
|
+
const nextAction = detailWithPrefix(details, 'Next action: ');
|
|
504
|
+
if (nextAction !== undefined)
|
|
505
|
+
return sentence(withoutDetailPrefix(nextAction, 'Next action: '));
|
|
506
|
+
const nextStep = detailWithPrefix(details, 'Next step: ');
|
|
507
|
+
if (nextStep !== undefined)
|
|
508
|
+
return sentence(withoutDetailPrefix(nextStep, 'Next step: '));
|
|
509
|
+
if (flowId === 'review' && outcomeLabel.startsWith('Issues')) {
|
|
510
|
+
return 'address the findings, then rerun Review.';
|
|
511
|
+
}
|
|
512
|
+
if (outcomeLabel === 'Needs follow-up' || outcomeLabel === 'Applied with follow-ups') {
|
|
513
|
+
return 'address the follow-up, then rerun the relevant check.';
|
|
514
|
+
}
|
|
515
|
+
if (outcomeLabel === 'No scope')
|
|
516
|
+
return 'rerun Review with source content in scope.';
|
|
517
|
+
if (outcomeLabel === 'Failed')
|
|
518
|
+
return 'inspect the failed proof and rerun after correction.';
|
|
519
|
+
return 'nothing required.';
|
|
520
|
+
}
|
|
521
|
+
function runOutcomeOverrideBrief(input) {
|
|
522
|
+
// Uncapped candidates: each branch prepends its own lines (reason, salvage,
|
|
523
|
+
// checkpoint) and caps ONCE, so priority lines hold the front slots and one
|
|
524
|
+
// overflow line accounts for everything dropped.
|
|
525
|
+
const keyPoints = keyPointCandidatesFromDetails(input.details);
|
|
526
|
+
if (input.runResult.outcome === 'checkpoint_waiting') {
|
|
527
|
+
return {
|
|
528
|
+
headline: digestHeadline(input.flowName),
|
|
529
|
+
assessment: 'Circuit is waiting for a checkpoint choice before this flow can continue.',
|
|
530
|
+
key_points: briefKeyPoints([
|
|
531
|
+
`Checkpoint step: ${input.runResult.checkpoint.step_id}`,
|
|
532
|
+
`Choices: ${input.runResult.checkpoint.allowed_choices.join(', ')}`,
|
|
533
|
+
...(input.checkpointDefaultChoice === undefined
|
|
534
|
+
? []
|
|
535
|
+
: [`Default if unanswered: ${input.checkpointDefaultChoice}`]),
|
|
536
|
+
], keyPoints),
|
|
537
|
+
caveats: [],
|
|
538
|
+
next_action: 'choose a checkpoint option to continue.',
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
if (input.runResult.outcome === 'aborted') {
|
|
542
|
+
return {
|
|
543
|
+
headline: digestHeadline(input.flowName),
|
|
544
|
+
assessment: 'The run aborted before this flow could finish.',
|
|
545
|
+
key_points: briefKeyPoints([
|
|
546
|
+
...(input.runResult.reason === undefined
|
|
547
|
+
? []
|
|
548
|
+
: [`Abort reason: ${input.runResult.reason}`]),
|
|
549
|
+
...salvageKeyPoints({ runFolder: input.runFolder, flowId: input.flowId }),
|
|
550
|
+
], keyPoints),
|
|
551
|
+
caveats: [],
|
|
552
|
+
next_action: SALVAGE_NEXT_ACTION,
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
if (input.runResult.outcome === 'escalated') {
|
|
556
|
+
return {
|
|
557
|
+
headline: digestHeadline(input.flowName),
|
|
558
|
+
assessment: 'The run escalated because Circuit could not close the flow safely.',
|
|
559
|
+
key_points: briefKeyPoints(input.runResult.reason === undefined
|
|
560
|
+
? []
|
|
561
|
+
: [`Escalation reason: ${input.runResult.reason}`], keyPoints),
|
|
562
|
+
caveats: [],
|
|
563
|
+
next_action: 'inspect the escalation reason and choose the recovery path.',
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
if (input.runResult.outcome === 'handoff') {
|
|
567
|
+
return {
|
|
568
|
+
headline: digestHeadline(input.flowName),
|
|
569
|
+
assessment: 'The flow prepared a handoff instead of closing complete.',
|
|
570
|
+
key_points: briefKeyPoints(input.runResult.reason === undefined ? [] : [`Handoff reason: ${input.runResult.reason}`], keyPoints),
|
|
571
|
+
caveats: [],
|
|
572
|
+
next_action: 'resume from the handoff record.',
|
|
573
|
+
};
|
|
574
|
+
}
|
|
575
|
+
if (input.runResult.outcome === 'stopped') {
|
|
576
|
+
return {
|
|
577
|
+
headline: digestHeadline(input.flowName),
|
|
578
|
+
assessment: 'The flow stopped before complete evidence was produced.',
|
|
579
|
+
key_points: briefKeyPoints([
|
|
580
|
+
...(input.runResult.reason === undefined
|
|
581
|
+
? []
|
|
582
|
+
: [`Stop reason: ${input.runResult.reason}`]),
|
|
583
|
+
...salvageKeyPoints({ runFolder: input.runFolder, flowId: input.flowId }),
|
|
584
|
+
], keyPoints),
|
|
585
|
+
caveats: [],
|
|
586
|
+
next_action: SALVAGE_NEXT_ACTION,
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
return undefined;
|
|
590
|
+
}
|
|
591
|
+
function buildBriefSlots(input) {
|
|
592
|
+
const flowName = flowDisplayName(input.flowId);
|
|
593
|
+
const override = runOutcomeOverrideBrief({
|
|
594
|
+
runFolder: input.runFolder,
|
|
595
|
+
flowId: input.flowId,
|
|
596
|
+
flowName,
|
|
597
|
+
runResult: input.runResult,
|
|
598
|
+
details: input.details,
|
|
599
|
+
...(input.checkpointDefaultChoice === undefined
|
|
600
|
+
? {}
|
|
601
|
+
: { checkpointDefaultChoice: input.checkpointDefaultChoice }),
|
|
602
|
+
});
|
|
603
|
+
if (override !== undefined)
|
|
604
|
+
return override;
|
|
605
|
+
const outcomeLabel = outcomeLabelFor({
|
|
606
|
+
runFolder: input.runFolder,
|
|
607
|
+
flowId: input.flowId,
|
|
608
|
+
flowReport: input.flowReport,
|
|
609
|
+
runOutcome: input.runResult.outcome,
|
|
610
|
+
resultSummary: input.runResult.summary,
|
|
611
|
+
});
|
|
612
|
+
return {
|
|
613
|
+
headline: digestHeadline(flowName),
|
|
614
|
+
assessment: normalizedAssessment(input.details, input.projectionHeadline),
|
|
615
|
+
key_points: keyPointsFromDetails(input.details),
|
|
616
|
+
caveats: caveatsFrom({ details: input.details, warnings: input.warnings }),
|
|
617
|
+
next_action: nextActionFrom(input.details, input.flowId, outcomeLabel),
|
|
618
|
+
};
|
|
619
|
+
}
|
|
620
|
+
function evidenceLinks(runFolder, report) {
|
|
621
|
+
const links = [];
|
|
622
|
+
const warnings = [];
|
|
623
|
+
for (const item of arrayField(report, 'evidence_links')) {
|
|
624
|
+
if (!isObject(item))
|
|
625
|
+
continue;
|
|
626
|
+
const reportId = stringField(item, 'report_id');
|
|
627
|
+
const path = stringField(item, 'path');
|
|
628
|
+
if (reportId === undefined || path === undefined)
|
|
629
|
+
continue;
|
|
630
|
+
try {
|
|
631
|
+
links.push(reportLink(runFolder, reportId, path, stringField(item, 'schema')));
|
|
632
|
+
}
|
|
633
|
+
catch (err) {
|
|
634
|
+
// A malformed evidence_links[].path (traversal, absolute, symlink-cross)
|
|
635
|
+
// would otherwise throw inside resolveRunRelative and abort the close.
|
|
636
|
+
// Keep the summary whole, but say the link was dropped — a silently
|
|
637
|
+
// missing report reads as "never produced" when it may exist.
|
|
638
|
+
warnings.push({
|
|
639
|
+
kind: 'evidence_link_dropped',
|
|
640
|
+
message: `evidence link '${reportId}' could not be added to the summary: ${err instanceof Error ? err.message : String(err)}`,
|
|
641
|
+
path,
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
return { links, warnings };
|
|
646
|
+
}
|
|
647
|
+
function readAutoResolutions(runFolder) {
|
|
648
|
+
const tracePath = join(runFolder, 'trace.ndjson');
|
|
649
|
+
if (!existsSync(tracePath))
|
|
650
|
+
return [];
|
|
651
|
+
const records = [];
|
|
652
|
+
for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
|
|
653
|
+
if (line.trim().length === 0)
|
|
654
|
+
continue;
|
|
655
|
+
let entry;
|
|
656
|
+
try {
|
|
657
|
+
entry = JSON.parse(line);
|
|
658
|
+
}
|
|
659
|
+
catch {
|
|
660
|
+
continue;
|
|
661
|
+
}
|
|
662
|
+
if (!isObject(entry))
|
|
663
|
+
continue;
|
|
664
|
+
if (entry.kind !== 'checkpoint.resolved' || entry.auto_resolved !== true)
|
|
665
|
+
continue;
|
|
666
|
+
const responsePath = stringField(entry, 'response_path');
|
|
667
|
+
if (responsePath === undefined)
|
|
668
|
+
continue;
|
|
669
|
+
const response = readJsonIfPresent(runFolder, responsePath);
|
|
670
|
+
const autoResolution = isObject(response) ? response.auto_resolution : undefined;
|
|
671
|
+
const parsed = OperatorAutoResolution.safeParse(autoResolution);
|
|
672
|
+
if (parsed.success)
|
|
673
|
+
records.push(parsed.data);
|
|
674
|
+
}
|
|
675
|
+
return records;
|
|
676
|
+
}
|
|
677
|
+
function emptySpendTotals() {
|
|
678
|
+
return {
|
|
679
|
+
relays: 0,
|
|
680
|
+
relays_missing_usage: 0,
|
|
681
|
+
models: [],
|
|
682
|
+
input_tokens: 0,
|
|
683
|
+
output_tokens: 0,
|
|
684
|
+
cache_read_tokens: 0,
|
|
685
|
+
cache_creation_tokens: 0,
|
|
686
|
+
};
|
|
687
|
+
}
|
|
688
|
+
// The receipt's fixed role order. Deliberately a literal, not
|
|
689
|
+
// `RelayRole.options`: the rendered order is a receipt commitment, not a
|
|
690
|
+
// side effect of enum declaration order.
|
|
691
|
+
const SPEND_ROLE_ORDER = ['researcher', 'implementer', 'reviewer'];
|
|
692
|
+
// Aggregate the run receipt out of the trace: depth from `run.bootstrapped`,
|
|
693
|
+
// worker-run count and distinct models from `relay.started`, check totals from
|
|
694
|
+
// `check.evaluated`, and the per-role spend rollup from joining `relay.started`
|
|
695
|
+
// (role, model) with `relay.completed` (usage) on `(step_id, attempt)`. One
|
|
696
|
+
// pass, field-tolerant like the other trace readers — a malformed line is
|
|
697
|
+
// skipped, never fatal. Returns undefined when the trace is missing or never
|
|
698
|
+
// bootstrapped (nothing truthful to report).
|
|
699
|
+
function readRunReceipt(runFolder) {
|
|
700
|
+
const tracePath = join(runFolder, 'trace.ndjson');
|
|
701
|
+
if (!existsSync(tracePath))
|
|
702
|
+
return undefined;
|
|
703
|
+
let depth;
|
|
704
|
+
let reducedBindings;
|
|
705
|
+
let power;
|
|
706
|
+
let powerAuto = false;
|
|
707
|
+
let inference;
|
|
708
|
+
let workerRuns = 0;
|
|
709
|
+
let escalations = 0;
|
|
710
|
+
let checksEvaluated = 0;
|
|
711
|
+
let checksFailed = 0;
|
|
712
|
+
const models = [];
|
|
713
|
+
const seenModels = new Set();
|
|
714
|
+
const relayRoleByKey = new Map();
|
|
715
|
+
const spendByRole = new Map();
|
|
716
|
+
let spendRelaysMissingUsage = 0;
|
|
717
|
+
let anyUsage = false;
|
|
718
|
+
let anyCostMissing = false;
|
|
719
|
+
for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
|
|
720
|
+
if (line.trim().length === 0)
|
|
721
|
+
continue;
|
|
722
|
+
let entry;
|
|
723
|
+
try {
|
|
724
|
+
entry = JSON.parse(line);
|
|
725
|
+
}
|
|
726
|
+
catch {
|
|
727
|
+
continue;
|
|
728
|
+
}
|
|
729
|
+
if (!isObject(entry))
|
|
730
|
+
continue;
|
|
731
|
+
if (entry.kind === 'run.bootstrapped') {
|
|
732
|
+
const parsed = CompiledDepth.safeParse(entry.depth);
|
|
733
|
+
if (parsed.success)
|
|
734
|
+
depth = parsed.data;
|
|
735
|
+
// Stage 1 legibility: a non-empty reduced set means this run lost
|
|
736
|
+
// catalog-sourced bindings (a composed/custom flow). Carried to the
|
|
737
|
+
// receipt note. An absent or empty field (every built-in run) leaves
|
|
738
|
+
// the receipt byte-identical to before this field existed.
|
|
739
|
+
const bindings = CatalogSourcedBinding.array().safeParse(entry.reduced_bindings);
|
|
740
|
+
if (bindings.success && bindings.data.length > 0)
|
|
741
|
+
reducedBindings = bindings.data;
|
|
742
|
+
continue;
|
|
743
|
+
}
|
|
744
|
+
if (entry.kind === 'relay.started') {
|
|
745
|
+
workerRuns += 1;
|
|
746
|
+
const selection = entry.resolved_selection;
|
|
747
|
+
if (isObject(selection)) {
|
|
748
|
+
// The dial is run-level, so the first power a selection carries is the
|
|
749
|
+
// run's dial; escalations count per-relay dial provenance.
|
|
750
|
+
if (power === undefined) {
|
|
751
|
+
const parsedPower = Power.safeParse(selection.power);
|
|
752
|
+
if (parsedPower.success)
|
|
753
|
+
power = parsedPower.data;
|
|
754
|
+
}
|
|
755
|
+
if (selection.power_source === 'auto')
|
|
756
|
+
powerAuto = true;
|
|
757
|
+
if (selection.power_escalated === true)
|
|
758
|
+
escalations += 1;
|
|
759
|
+
}
|
|
760
|
+
const model = isObject(selection)
|
|
761
|
+
? ProviderScopedModel.safeParse(selection.model)
|
|
762
|
+
: undefined;
|
|
763
|
+
const modelKey = model?.success ? `${model.data.provider}:${model.data.model}` : undefined;
|
|
764
|
+
if (model?.success && modelKey !== undefined && !seenModels.has(modelKey)) {
|
|
765
|
+
seenModels.add(modelKey);
|
|
766
|
+
models.push(model.data);
|
|
767
|
+
}
|
|
768
|
+
// Remember role + model so the spend rollup can attribute usage when
|
|
769
|
+
// this relay's `relay.completed` arrives on the same key.
|
|
770
|
+
const role = RelayRole.safeParse(entry.role);
|
|
771
|
+
const stepId = stringField(entry, 'step_id');
|
|
772
|
+
if (role.success && stepId !== undefined && typeof entry.attempt === 'number') {
|
|
773
|
+
relayRoleByKey.set(`${stepId}#${entry.attempt}`, {
|
|
774
|
+
role: role.data,
|
|
775
|
+
...(modelKey === undefined ? {} : { model: modelKey }),
|
|
776
|
+
});
|
|
777
|
+
}
|
|
778
|
+
continue;
|
|
779
|
+
}
|
|
780
|
+
if (entry.kind === 'relay.completed') {
|
|
781
|
+
const stepId = stringField(entry, 'step_id');
|
|
782
|
+
const started = stepId === undefined || typeof entry.attempt !== 'number'
|
|
783
|
+
? undefined
|
|
784
|
+
: relayRoleByKey.get(`${stepId}#${entry.attempt}`);
|
|
785
|
+
// No matching relay.started means no role to bill — skip the entry.
|
|
786
|
+
if (started === undefined)
|
|
787
|
+
continue;
|
|
788
|
+
const totals = spendByRole.get(started.role) ?? emptySpendTotals();
|
|
789
|
+
spendByRole.set(started.role, totals);
|
|
790
|
+
totals.relays += 1;
|
|
791
|
+
if (started.model !== undefined && !totals.models.includes(started.model)) {
|
|
792
|
+
totals.models.push(started.model);
|
|
793
|
+
}
|
|
794
|
+
const usage = RelayUsageEvidence.safeParse(entry.usage);
|
|
795
|
+
if (!usage.success) {
|
|
796
|
+
totals.relays_missing_usage += 1;
|
|
797
|
+
spendRelaysMissingUsage += 1;
|
|
798
|
+
continue;
|
|
799
|
+
}
|
|
800
|
+
anyUsage = true;
|
|
801
|
+
totals.input_tokens += usage.data.input_tokens;
|
|
802
|
+
totals.output_tokens += usage.data.output_tokens;
|
|
803
|
+
totals.cache_read_tokens += usage.data.cache_read_tokens;
|
|
804
|
+
totals.cache_creation_tokens += usage.data.cache_creation_tokens;
|
|
805
|
+
if (usage.data.total_cost_usd_reported === undefined) {
|
|
806
|
+
anyCostMissing = true;
|
|
807
|
+
}
|
|
808
|
+
else {
|
|
809
|
+
totals.cost_usd_reported =
|
|
810
|
+
(totals.cost_usd_reported ?? 0) + usage.data.total_cost_usd_reported;
|
|
811
|
+
}
|
|
812
|
+
continue;
|
|
813
|
+
}
|
|
814
|
+
if (entry.kind === 'run.power-inference' && inference === undefined) {
|
|
815
|
+
const recommended = Power.safeParse(entry.recommended);
|
|
816
|
+
const resolved = Power.safeParse(entry.resolved);
|
|
817
|
+
const rationale = stringField(entry, 'rationale');
|
|
818
|
+
if (recommended.success && resolved.success && rationale !== undefined) {
|
|
819
|
+
inference = {
|
|
820
|
+
recommended: recommended.data,
|
|
821
|
+
rationale,
|
|
822
|
+
resolved: resolved.data,
|
|
823
|
+
clamped: entry.clamped === true,
|
|
824
|
+
};
|
|
825
|
+
}
|
|
826
|
+
continue;
|
|
827
|
+
}
|
|
828
|
+
if (entry.kind === 'check.evaluated') {
|
|
829
|
+
checksEvaluated += 1;
|
|
830
|
+
if (entry.outcome === 'fail')
|
|
831
|
+
checksFailed += 1;
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
if (depth === undefined)
|
|
835
|
+
return undefined;
|
|
836
|
+
// Spend is absent — never empty — when no completed relay carried usage, so
|
|
837
|
+
// a usage-less trace keeps its receipt byte-identical to before this field.
|
|
838
|
+
const spendRoles = anyUsage
|
|
839
|
+
? SPEND_ROLE_ORDER.flatMap((role) => {
|
|
840
|
+
const totals = spendByRole.get(role);
|
|
841
|
+
return totals === undefined ? [] : [{ role, ...totals }];
|
|
842
|
+
})
|
|
843
|
+
: [];
|
|
844
|
+
const reportedCosts = spendRoles.flatMap((role) => role.cost_usd_reported === undefined ? [] : [role.cost_usd_reported]);
|
|
845
|
+
const spend = anyUsage
|
|
846
|
+
? {
|
|
847
|
+
...(reportedCosts.length === 0
|
|
848
|
+
? {}
|
|
849
|
+
: { total_cost_usd_reported: reportedCosts.reduce((sum, cost) => sum + cost, 0) }),
|
|
850
|
+
relays_missing_usage: spendRelaysMissingUsage,
|
|
851
|
+
partial: spendRelaysMissingUsage > 0 || anyCostMissing,
|
|
852
|
+
roles: spendRoles,
|
|
853
|
+
}
|
|
854
|
+
: undefined;
|
|
855
|
+
// Under auto, the run's dial is the resolved inference; the first relay
|
|
856
|
+
// selection materialized the medium fallback before the inference landed.
|
|
857
|
+
const effectivePower = inference?.resolved ?? power;
|
|
858
|
+
return {
|
|
859
|
+
depth,
|
|
860
|
+
...(effectivePower === undefined ? {} : { power: effectivePower }),
|
|
861
|
+
...(powerAuto ? { power_source: 'auto' } : {}),
|
|
862
|
+
...(powerAuto && inference !== undefined
|
|
863
|
+
? {
|
|
864
|
+
power_recommended: inference.recommended,
|
|
865
|
+
power_rationale: inference.rationale,
|
|
866
|
+
power_clamped: inference.clamped,
|
|
867
|
+
}
|
|
868
|
+
: {}),
|
|
869
|
+
worker_runs: workerRuns,
|
|
870
|
+
escalations,
|
|
871
|
+
models,
|
|
872
|
+
checks_evaluated: checksEvaluated,
|
|
873
|
+
checks_failed: checksFailed,
|
|
874
|
+
...(reducedBindings === undefined ? {} : { reduced_bindings: reducedBindings }),
|
|
875
|
+
...(spend === undefined ? {} : { spend }),
|
|
876
|
+
};
|
|
877
|
+
}
|
|
878
|
+
// The receipt trailer speaks plain words only: the power dial first (the
|
|
879
|
+
// taught dial), then the process tier the run actually ran at, how many
|
|
880
|
+
// worker runs, escalations, and what the checks proved. Tier words yes,
|
|
881
|
+
// model ids no — those live in the JSON receipt and the run record. The ⎿
|
|
882
|
+
// glyph is the CIRCUIT status-block grammar: the trailer reads as machine
|
|
883
|
+
// truth at the end of the model-written digest, with no feature-name label.
|
|
884
|
+
function receiptLine(receipt) {
|
|
885
|
+
const runsWord = receipt.worker_runs === 1 ? 'worker run' : 'worker runs';
|
|
886
|
+
const parts = [];
|
|
887
|
+
if (receipt.power !== undefined) {
|
|
888
|
+
// Under an auto dial, say so — and say which kind of auto: a resolved
|
|
889
|
+
// recommendation (possibly capped to the operator bounds) or the medium
|
|
890
|
+
// fallback a run lands on when its researcher never recommended.
|
|
891
|
+
const autoQualifier = receipt.power_source !== 'auto'
|
|
892
|
+
? ''
|
|
893
|
+
: receipt.power_rationale === undefined
|
|
894
|
+
? ' (auto, no recommendation)'
|
|
895
|
+
: receipt.power_clamped === true
|
|
896
|
+
? ' (auto, capped)'
|
|
897
|
+
: ' (auto)';
|
|
898
|
+
parts.push(`power ${receipt.power}${autoQualifier}`);
|
|
899
|
+
}
|
|
900
|
+
parts.push(`process ${receipt.depth}`);
|
|
901
|
+
parts.push(`${receipt.worker_runs} ${runsWord}`);
|
|
902
|
+
if (receipt.escalations > 0) {
|
|
903
|
+
parts.push(`${receipt.escalations} ${receipt.escalations === 1 ? 'escalation' : 'escalations'}`);
|
|
904
|
+
}
|
|
905
|
+
if (receipt.checks_evaluated > 0) {
|
|
906
|
+
parts.push(receipt.checks_failed === 0
|
|
907
|
+
? 'all checks passed'
|
|
908
|
+
: `${receipt.checks_evaluated - receipt.checks_failed} of ${receipt.checks_evaluated} checks passed`);
|
|
909
|
+
}
|
|
910
|
+
return `⎿ ${parts.join(' · ')}`;
|
|
911
|
+
}
|
|
912
|
+
// Dollar figures keep plain cents above a dime and three significant figures
|
|
913
|
+
// (capped at four decimal places) below it, so a $0.0123 run does not round
|
|
914
|
+
// away to $0.01. Never scientific notation.
|
|
915
|
+
function formatSpendDollars(amount) {
|
|
916
|
+
if (amount >= 0.1)
|
|
917
|
+
return `$${amount.toFixed(2)}`;
|
|
918
|
+
const significant = Number(amount.toPrecision(3));
|
|
919
|
+
if (significant >= 0.1)
|
|
920
|
+
return `$${significant.toFixed(2)}`;
|
|
921
|
+
return `$${significant.toFixed(4).replace(/0+$/, '').replace(/\.$/, '')}`;
|
|
922
|
+
}
|
|
923
|
+
// Token figures: raw below 1k, one-decimal k below 1M, two-decimal M above.
|
|
924
|
+
function formatSpendTokens(count) {
|
|
925
|
+
if (count >= 1_000_000)
|
|
926
|
+
return `${(count / 1_000_000).toFixed(2)}M`;
|
|
927
|
+
if (count >= 1000)
|
|
928
|
+
return `${(count / 1000).toFixed(1)}k`;
|
|
929
|
+
return String(count);
|
|
930
|
+
}
|
|
931
|
+
// Second trailer line, rendered directly under the receipt line and only when
|
|
932
|
+
// the run has a spend rollup. Dollar form when any relay reported a cost;
|
|
933
|
+
// token fallback (input + output only, cache tokens excluded) otherwise. The
|
|
934
|
+
// (partial) qualifier covers the figure the line actually renders: a dollar
|
|
935
|
+
// sum is partial whenever any meter or any cost is missing, a token sum only
|
|
936
|
+
// when a meter is missing — absent dollars cannot hollow out a figure the
|
|
937
|
+
// token form never claims. Role segments keep the headline's form and are
|
|
938
|
+
// dropped when the role contributed nothing measurable in that form; the
|
|
939
|
+
// qualifier, not a fabricated zero, marks the gap.
|
|
940
|
+
function spendLine(receipt) {
|
|
941
|
+
const spend = receipt.spend;
|
|
942
|
+
if (spend === undefined)
|
|
943
|
+
return undefined;
|
|
944
|
+
if (spend.total_cost_usd_reported !== undefined) {
|
|
945
|
+
const qualifier = spend.partial ? ' (partial)' : '';
|
|
946
|
+
const parts = [`spend ${formatSpendDollars(spend.total_cost_usd_reported)}${qualifier}`];
|
|
947
|
+
for (const role of spend.roles) {
|
|
948
|
+
if (role.cost_usd_reported === undefined)
|
|
949
|
+
continue;
|
|
950
|
+
parts.push(`${role.role} ${formatSpendDollars(role.cost_usd_reported)}`);
|
|
951
|
+
}
|
|
952
|
+
return `⎿ ${parts.join(' · ')}`;
|
|
953
|
+
}
|
|
954
|
+
const total = spend.roles.reduce((sum, role) => sum + role.input_tokens + role.output_tokens, 0);
|
|
955
|
+
const qualifier = spend.relays_missing_usage > 0 ? ' (partial)' : '';
|
|
956
|
+
const parts = [`spend ${formatSpendTokens(total)} tokens${qualifier}`];
|
|
957
|
+
for (const role of spend.roles) {
|
|
958
|
+
if (role.relays_missing_usage === role.relays)
|
|
959
|
+
continue;
|
|
960
|
+
parts.push(`${role.role} ${formatSpendTokens(role.input_tokens + role.output_tokens)}`);
|
|
961
|
+
}
|
|
962
|
+
return `⎿ ${parts.join(' · ')}`;
|
|
963
|
+
}
|
|
964
|
+
// Plain-words labels for the catalog-sourced bindings, so the note speaks
|
|
965
|
+
// operator language (no schema field names). Order follows the receipt's
|
|
966
|
+
// reduced_bindings array, which preserves the canonical binding order.
|
|
967
|
+
const REDUCED_BINDING_LABELS = {
|
|
968
|
+
edit_file_surfaces: 'edit-file hooks',
|
|
969
|
+
depth_binding: 'depth binding',
|
|
970
|
+
slice_loop: 'slice loop',
|
|
971
|
+
terminal_outcome_binding: 'terminal outcome',
|
|
972
|
+
primary_result_surface: 'primary result',
|
|
973
|
+
};
|
|
974
|
+
// Third trailer line, rendered under the receipt (and spend) line only when the
|
|
975
|
+
// run lost catalog-sourced bindings — a composed or published custom flow whose
|
|
976
|
+
// id matched no catalog package. Names what degraded so a reduced run reads as
|
|
977
|
+
// reduced instead of looking like a full run. Absent on every built-in run.
|
|
978
|
+
function reducedBindingsLine(receipt) {
|
|
979
|
+
const reduced = receipt.reduced_bindings;
|
|
980
|
+
if (reduced === undefined || reduced.length === 0)
|
|
981
|
+
return undefined;
|
|
982
|
+
const labels = reduced.map((binding) => REDUCED_BINDING_LABELS[binding]);
|
|
983
|
+
return `⎿ reduced bindings (no catalog package): ${labels.join(' · ')}`;
|
|
984
|
+
}
|
|
985
|
+
// The registry's "could not find skill" error is multi-line (it lists every
|
|
986
|
+
// searched path). The digest wants the headline only.
|
|
987
|
+
function firstLine(text) {
|
|
988
|
+
const head = text.split(/\r?\n/)[0]?.trim() ?? '';
|
|
989
|
+
return head.length > 0 ? head : text.trim();
|
|
990
|
+
}
|
|
991
|
+
function skillHookSourceLabel(source) {
|
|
992
|
+
switch (source) {
|
|
993
|
+
case 'project-policy':
|
|
994
|
+
return 'project policy';
|
|
995
|
+
case 'user-global-policy':
|
|
996
|
+
return 'user-global policy';
|
|
997
|
+
case 'default-mapping':
|
|
998
|
+
return 'default mapping';
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
1001
|
+
// Read the run's skill-hook records out of the trace and project them into the
|
|
1002
|
+
// operator surface: a deduped list of activations (which hook fired, what it
|
|
1003
|
+
// injected, its provenance, any unavailable skill) plus warnings for any
|
|
1004
|
+
// swallowed dispatch failure. One pass over trace.ndjson; both kinds live there.
|
|
1005
|
+
function readSkillHookSummary(runFolder) {
|
|
1006
|
+
const tracePath = join(runFolder, 'trace.ndjson');
|
|
1007
|
+
if (!existsSync(tracePath))
|
|
1008
|
+
return { activations: [], warnings: [] };
|
|
1009
|
+
const seen = new Set();
|
|
1010
|
+
const activations = [];
|
|
1011
|
+
const warnings = [];
|
|
1012
|
+
for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
|
|
1013
|
+
if (line.trim().length === 0)
|
|
1014
|
+
continue;
|
|
1015
|
+
let entry;
|
|
1016
|
+
try {
|
|
1017
|
+
entry = JSON.parse(line);
|
|
1018
|
+
}
|
|
1019
|
+
catch {
|
|
1020
|
+
continue;
|
|
1021
|
+
}
|
|
1022
|
+
if (!isObject(entry))
|
|
1023
|
+
continue;
|
|
1024
|
+
if (entry.kind === 'run.skill-hook-error') {
|
|
1025
|
+
const message = stringField(entry, 'message');
|
|
1026
|
+
if (message !== undefined) {
|
|
1027
|
+
warnings.push({ kind: 'skill_hook_dispatch_failed', message: firstLine(message) });
|
|
1028
|
+
}
|
|
1029
|
+
continue;
|
|
1030
|
+
}
|
|
1031
|
+
if (entry.kind !== 'run.skill-hook')
|
|
1032
|
+
continue;
|
|
1033
|
+
const parsed = RunSkillHookEvent.safeParse(entry.event);
|
|
1034
|
+
if (!parsed.success)
|
|
1035
|
+
continue;
|
|
1036
|
+
const event = parsed.data;
|
|
1037
|
+
if (event.policy.mode === 'none')
|
|
1038
|
+
continue;
|
|
1039
|
+
const blocked = event.decision_packet_id !== undefined;
|
|
1040
|
+
const triggered = event.triggered_skills.map((skill) => skill.id);
|
|
1041
|
+
const activation = OperatorSkillHookActivation.parse({
|
|
1042
|
+
hook: event.hook,
|
|
1043
|
+
mode: event.policy.mode,
|
|
1044
|
+
source: event.policy.source,
|
|
1045
|
+
...(event.policy.policy_ref === undefined ? {} : { policy_ref: event.policy.policy_ref }),
|
|
1046
|
+
injected_skills: event.policy.mode === 'auto' && !blocked ? triggered : [],
|
|
1047
|
+
withheld_skills: event.policy.mode === 'auto' && blocked ? triggered : [],
|
|
1048
|
+
unavailable_skills: (event.unavailable_skills ?? []).map((skill) => ({
|
|
1049
|
+
id: skill.id,
|
|
1050
|
+
...(skill.reason === undefined ? {} : { reason: firstLine(skill.reason) }),
|
|
1051
|
+
})),
|
|
1052
|
+
});
|
|
1053
|
+
// Dedup identical activations: a hook that re-fires across retries or slices
|
|
1054
|
+
// with the same outcome is one line in the digest, not N.
|
|
1055
|
+
const key = JSON.stringify(activation);
|
|
1056
|
+
if (seen.has(key))
|
|
1057
|
+
continue;
|
|
1058
|
+
seen.add(key);
|
|
1059
|
+
activations.push(activation);
|
|
1060
|
+
}
|
|
1061
|
+
return { activations, warnings };
|
|
1062
|
+
}
|
|
1063
|
+
// Read the trace's best-effort degradation markers into operator warnings.
|
|
1064
|
+
// Both kinds record a subsystem failure the run survived (mirroring
|
|
1065
|
+
// `run.skill-hook-error` above): auto-power inference crashing leaves the
|
|
1066
|
+
// dial at the medium fallback, and a passed relay whose report could not be
|
|
1067
|
+
// materialized leaves a gap where `writes.report.path` should be. Surfacing
|
|
1068
|
+
// them here is what makes the trace markers reach the operator's eyes —
|
|
1069
|
+
// warnings are never evicted from the brief's caveats (see caveatsFrom).
|
|
1070
|
+
function readDegradationWarnings(runFolder) {
|
|
1071
|
+
const tracePath = join(runFolder, 'trace.ndjson');
|
|
1072
|
+
if (!existsSync(tracePath))
|
|
1073
|
+
return [];
|
|
1074
|
+
const warnings = [];
|
|
1075
|
+
for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
|
|
1076
|
+
if (line.trim().length === 0)
|
|
1077
|
+
continue;
|
|
1078
|
+
let entry;
|
|
1079
|
+
try {
|
|
1080
|
+
entry = JSON.parse(line);
|
|
1081
|
+
}
|
|
1082
|
+
catch {
|
|
1083
|
+
continue;
|
|
1084
|
+
}
|
|
1085
|
+
if (!isObject(entry))
|
|
1086
|
+
continue;
|
|
1087
|
+
if (entry.kind === 'run.power-inference-error') {
|
|
1088
|
+
const message = stringField(entry, 'message');
|
|
1089
|
+
if (message !== undefined) {
|
|
1090
|
+
warnings.push({ kind: 'power_inference_failed', message: firstLine(message) });
|
|
1091
|
+
}
|
|
1092
|
+
continue;
|
|
1093
|
+
}
|
|
1094
|
+
if (entry.kind === 'step.report_skipped') {
|
|
1095
|
+
const reason = stringField(entry, 'reason');
|
|
1096
|
+
const reportPath = stringField(entry, 'report_path');
|
|
1097
|
+
if (reason !== undefined) {
|
|
1098
|
+
warnings.push({
|
|
1099
|
+
kind: 'relay_report_skipped',
|
|
1100
|
+
message: firstLine(reason),
|
|
1101
|
+
...(reportPath === undefined ? {} : { path: reportPath }),
|
|
1102
|
+
});
|
|
1103
|
+
}
|
|
1104
|
+
continue;
|
|
1105
|
+
}
|
|
1106
|
+
if (entry.kind === 'run.context-delivery-error') {
|
|
1107
|
+
const message = stringField(entry, 'message');
|
|
1108
|
+
if (message !== undefined) {
|
|
1109
|
+
warnings.push({ kind: 'context_delivery_failed', message: firstLine(message) });
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
return warnings;
|
|
1114
|
+
}
|
|
1115
|
+
// The recovery-binding verdict layer aborts with reason strings that are part
|
|
1116
|
+
// of the runtime contract and pinned by tests — they speak engine vocabulary
|
|
1117
|
+
// ("WorkContract", "recovery binding", raw failure-cause ids) and must stay
|
|
1118
|
+
// verbatim in the trace and the result. This is the operator-facing
|
|
1119
|
+
// translation seam: recognize the pinned shapes and lead with what happened
|
|
1120
|
+
// in plain words, whose problem it is, and what to do next. Unrecognized
|
|
1121
|
+
// reasons get no translation — a wrong guess is worse than the raw string.
|
|
1122
|
+
const RECOVERY_BINDING_ABORT_PATTERN = /^step '([^']+)' selected recovery route '([^']+)' (?:after|for) \S+,? but (?:the WorkContract does not declare a matching recovery binding|its WorkContract binding only allows: .+)$/;
|
|
1123
|
+
const RECOVERY_NO_EVIDENCE_ABORT_PATTERN = /^step '([^']+)' selected recovery route '([^']+)' without failure evidence$/;
|
|
1124
|
+
function friendlyAbortReason(reason) {
|
|
1125
|
+
const binding = RECOVERY_BINDING_ABORT_PATTERN.exec(reason);
|
|
1126
|
+
if (binding !== null) {
|
|
1127
|
+
return `Step '${binding[1]}' failed, and the flow tried to recover through its '${binding[2]}' route, but the flow's safety rules do not allow that recovery for this kind of failure — so Circuit stopped the run. This is a problem in the flow definition, not in your project. Update or regenerate the flow, then run it again.`;
|
|
1128
|
+
}
|
|
1129
|
+
const noEvidence = RECOVERY_NO_EVIDENCE_ABORT_PATTERN.exec(reason);
|
|
1130
|
+
if (noEvidence !== null) {
|
|
1131
|
+
return `Step '${noEvidence[1]}' took its '${noEvidence[2]}' recovery route without a recorded failure to justify it, so Circuit stopped the run. This is a problem in the flow definition, not in your project. Update or regenerate the flow, then run it again.`;
|
|
1132
|
+
}
|
|
1133
|
+
return undefined;
|
|
1134
|
+
}
|
|
1135
|
+
// When nothing in config or the flow chose a connector, resolution falls back
|
|
1136
|
+
// to an automatic pick (recorded per relay as resolved_from.source === 'auto').
|
|
1137
|
+
// The pick is legible in the trace but an operator who assumed a configured
|
|
1138
|
+
// default was used would never look there. Collect the distinct auto-picked
|
|
1139
|
+
// connector names with relay counts so the summary can say what happened.
|
|
1140
|
+
function readAutoConnectorPicks(runFolder) {
|
|
1141
|
+
const tracePath = join(runFolder, 'trace.ndjson');
|
|
1142
|
+
const picks = new Map();
|
|
1143
|
+
if (!existsSync(tracePath))
|
|
1144
|
+
return picks;
|
|
1145
|
+
for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
|
|
1146
|
+
if (line.trim().length === 0)
|
|
1147
|
+
continue;
|
|
1148
|
+
let entry;
|
|
1149
|
+
try {
|
|
1150
|
+
entry = JSON.parse(line);
|
|
1151
|
+
}
|
|
1152
|
+
catch {
|
|
1153
|
+
continue;
|
|
1154
|
+
}
|
|
1155
|
+
if (!isObject(entry) || entry.kind !== 'relay.started')
|
|
1156
|
+
continue;
|
|
1157
|
+
const resolvedFrom = entry.resolved_from;
|
|
1158
|
+
if (!isObject(resolvedFrom) || resolvedFrom.source !== 'auto')
|
|
1159
|
+
continue;
|
|
1160
|
+
const connector = entry.connector;
|
|
1161
|
+
if (!isObject(connector))
|
|
1162
|
+
continue;
|
|
1163
|
+
const name = stringField(connector, 'name');
|
|
1164
|
+
if (name === undefined)
|
|
1165
|
+
continue;
|
|
1166
|
+
picks.set(name, (picks.get(name) ?? 0) + 1);
|
|
1167
|
+
}
|
|
1168
|
+
return picks;
|
|
1169
|
+
}
|
|
1170
|
+
function skillHookActivationLine(activation) {
|
|
1171
|
+
const provenance = activation.policy_ref ?? skillHookSourceLabel(activation.source);
|
|
1172
|
+
if (activation.mode === 'mute') {
|
|
1173
|
+
return `\`${activation.hook}\` fired (muted; nothing injected) — ${provenance}`;
|
|
1174
|
+
}
|
|
1175
|
+
const parts = [];
|
|
1176
|
+
if (activation.injected_skills.length > 0) {
|
|
1177
|
+
parts.push(`injected ${activation.injected_skills.join(', ')}`);
|
|
1178
|
+
}
|
|
1179
|
+
if (activation.withheld_skills.length > 0) {
|
|
1180
|
+
parts.push(`withheld ${activation.withheld_skills.join(', ')} pending a strict-mode decision`);
|
|
1181
|
+
}
|
|
1182
|
+
for (const unavailable of activation.unavailable_skills) {
|
|
1183
|
+
parts.push(unavailable.reason === undefined
|
|
1184
|
+
? `could not load ${unavailable.id}`
|
|
1185
|
+
: `could not load ${unavailable.id} (${unavailable.reason})`);
|
|
1186
|
+
}
|
|
1187
|
+
if (parts.length === 0)
|
|
1188
|
+
parts.push('matched but injected nothing');
|
|
1189
|
+
return `\`${activation.hook}\` ${parts.join('; ')} — ${provenance}`;
|
|
1190
|
+
}
|
|
1191
|
+
// Read the run's live equipment reshapes out of the trace and project them into
|
|
1192
|
+
// the operator surface (Step 2 / F2). The engine only appends a
|
|
1193
|
+
// `run.equipment-reshape` entry when a relay actually surfaced an equipment
|
|
1194
|
+
// discovery, so every entry is a real event — never no-op noise. An honored
|
|
1195
|
+
// reshape (`reshaped: true`) becomes a structured record naming the steps that
|
|
1196
|
+
// gained skills; a parked discovery (`reshaped: false` — found but declined
|
|
1197
|
+
// because it was unconfirmed, the budget was spent, or nothing remained to
|
|
1198
|
+
// equip) becomes a warning so the operator sees why the flow stayed unchanged.
|
|
1199
|
+
// One pass over trace.ndjson, deduped so a re-recorded entry is one line.
|
|
1200
|
+
function readEquipmentReshapeSummary(runFolder) {
|
|
1201
|
+
const tracePath = join(runFolder, 'trace.ndjson');
|
|
1202
|
+
if (!existsSync(tracePath))
|
|
1203
|
+
return { reshapes: [], warnings: [] };
|
|
1204
|
+
const seen = new Set();
|
|
1205
|
+
const reshapes = [];
|
|
1206
|
+
const warnings = [];
|
|
1207
|
+
for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
|
|
1208
|
+
if (line.trim().length === 0)
|
|
1209
|
+
continue;
|
|
1210
|
+
let entry;
|
|
1211
|
+
try {
|
|
1212
|
+
entry = JSON.parse(line);
|
|
1213
|
+
}
|
|
1214
|
+
catch {
|
|
1215
|
+
continue;
|
|
1216
|
+
}
|
|
1217
|
+
if (!isObject(entry) || entry.kind !== 'run.equipment-reshape')
|
|
1218
|
+
continue;
|
|
1219
|
+
const parsed = RunEquipmentReshapeTraceEntry.safeParse(entry);
|
|
1220
|
+
if (!parsed.success)
|
|
1221
|
+
continue;
|
|
1222
|
+
const event = parsed.data;
|
|
1223
|
+
const stepId = event.step_id;
|
|
1224
|
+
if (event.reshaped) {
|
|
1225
|
+
// The trace gate above is looser than the operator surface (e.g. it
|
|
1226
|
+
// admits an empty-string domain tag the surface rejects). Use safeParse,
|
|
1227
|
+
// not parse, so a torn or forward-version line that slips the gate is
|
|
1228
|
+
// skipped like any other junk line rather than crashing the whole write.
|
|
1229
|
+
const record = OperatorEquipmentReshape.safeParse({
|
|
1230
|
+
step_id: stepId,
|
|
1231
|
+
domain_tags: event.domain_tags,
|
|
1232
|
+
equipped_steps: (event.equipped_steps ?? []).map((id) => id),
|
|
1233
|
+
reason: event.reason,
|
|
1234
|
+
});
|
|
1235
|
+
if (!record.success)
|
|
1236
|
+
continue;
|
|
1237
|
+
const key = JSON.stringify(record.data);
|
|
1238
|
+
if (seen.has(key))
|
|
1239
|
+
continue;
|
|
1240
|
+
seen.add(key);
|
|
1241
|
+
reshapes.push(record.data);
|
|
1242
|
+
continue;
|
|
1243
|
+
}
|
|
1244
|
+
// A parked discovery. Prefix the step id so the warning names where the
|
|
1245
|
+
// discovery surfaced even when the recorded reason does not.
|
|
1246
|
+
const warning = {
|
|
1247
|
+
kind: 'equipment_discovery_parked',
|
|
1248
|
+
message: `${stepId}: ${firstLine(event.reason)}`,
|
|
1249
|
+
};
|
|
1250
|
+
const key = JSON.stringify(warning);
|
|
1251
|
+
if (seen.has(key))
|
|
1252
|
+
continue;
|
|
1253
|
+
seen.add(key);
|
|
1254
|
+
warnings.push(warning);
|
|
1255
|
+
}
|
|
1256
|
+
return { reshapes, warnings };
|
|
1257
|
+
}
|
|
1258
|
+
function equipmentReshapeLine(reshape) {
|
|
1259
|
+
const domains = reshape.domain_tags.length > 0 ? reshape.domain_tags.join(', ') : 'a domain';
|
|
1260
|
+
const equipped = reshape.equipped_steps.length > 0 ? reshape.equipped_steps.join(', ') : 'no remaining step';
|
|
1261
|
+
return `\`${reshape.step_id}\` confirmed ${domains}; equipped ${equipped}`;
|
|
1262
|
+
}
|
|
1263
|
+
// Read the run's per-iteration experiment ledger out of the trace. The engine
|
|
1264
|
+
// only stamps `run.until-judgment` entries on a judge-gated until loop, so any
|
|
1265
|
+
// non-until run (and any count-driven loop) yields no entries and an empty
|
|
1266
|
+
// ledger — the summary then stays byte-identical to before this section
|
|
1267
|
+
// existed. Field-tolerant like the other trace readers: each line is parsed
|
|
1268
|
+
// through the strict union and a torn or forward-version line is dropped, never
|
|
1269
|
+
// fatal. The projection joins each judgment to the relay usage of its iteration.
|
|
1270
|
+
function readIterationLedger(runFolder) {
|
|
1271
|
+
const tracePath = join(runFolder, 'trace.ndjson');
|
|
1272
|
+
if (!existsSync(tracePath))
|
|
1273
|
+
return [];
|
|
1274
|
+
const entries = [];
|
|
1275
|
+
for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
|
|
1276
|
+
if (line.trim().length === 0)
|
|
1277
|
+
continue;
|
|
1278
|
+
let raw;
|
|
1279
|
+
try {
|
|
1280
|
+
raw = JSON.parse(line);
|
|
1281
|
+
}
|
|
1282
|
+
catch {
|
|
1283
|
+
continue;
|
|
1284
|
+
}
|
|
1285
|
+
const parsed = TraceEntry.safeParse(raw);
|
|
1286
|
+
if (parsed.success)
|
|
1287
|
+
entries.push(parsed.data);
|
|
1288
|
+
}
|
|
1289
|
+
return iterationLedgerFromTrace(entries);
|
|
1290
|
+
}
|
|
1291
|
+
function formatScore(value) {
|
|
1292
|
+
if (value === null || value === undefined)
|
|
1293
|
+
return 'n/a';
|
|
1294
|
+
return value.toFixed(3).replace(/\.?0+$/, '');
|
|
1295
|
+
}
|
|
1296
|
+
function formatSignedScore(value) {
|
|
1297
|
+
if (value === null || value === undefined)
|
|
1298
|
+
return 'n/a';
|
|
1299
|
+
const sign = value >= 0 ? '+' : '';
|
|
1300
|
+
return `${sign}${formatScore(value)}`;
|
|
1301
|
+
}
|
|
1302
|
+
function autoResolutionSummaryLine(record) {
|
|
1303
|
+
const label = record.checkpoint_label ?? record.checkpoint_id;
|
|
1304
|
+
const vetoText = record.runtime_veto_effect === 'none' ? 'no runtime vetoes' : record.runtime_veto_effect;
|
|
1305
|
+
return `${label}: ${record.resolved_value} selected by policy \`highest-score\` (aggregate score ${formatScore(record.winning_score)}; margin ${formatSignedScore(record.margin)} over runner-up; ${vetoText}).`;
|
|
1306
|
+
}
|
|
1307
|
+
function checkpointOptionDetails(runFolder, allowedChoices) {
|
|
1308
|
+
const optionsReport = readJsonIfPresent(runFolder, 'reports/decision-options.json');
|
|
1309
|
+
const labelsById = new Map();
|
|
1310
|
+
for (const option of arrayField(optionsReport, 'options')) {
|
|
1311
|
+
if (!isObject(option))
|
|
1312
|
+
continue;
|
|
1313
|
+
const id = stringField(option, 'id');
|
|
1314
|
+
const label = stringField(option, 'label');
|
|
1315
|
+
if (id === undefined || label === undefined)
|
|
1316
|
+
continue;
|
|
1317
|
+
labelsById.set(id, label);
|
|
1318
|
+
}
|
|
1319
|
+
return allowedChoices.flatMap((choice) => {
|
|
1320
|
+
const label = labelsById.get(choice);
|
|
1321
|
+
return label === undefined ? [] : [`${label} (${choice})`];
|
|
1322
|
+
});
|
|
1323
|
+
}
|
|
1324
|
+
// The experiment-ledger section, rendered under the digest only when the run
|
|
1325
|
+
// is a judge-gated until loop that recorded at least one judged pass. Empty
|
|
1326
|
+
// rows render nothing, so a non-until run keeps its summary byte-identical.
|
|
1327
|
+
function ledgerSection(rows) {
|
|
1328
|
+
if (rows.length === 0)
|
|
1329
|
+
return [];
|
|
1330
|
+
return ['', 'Experiment ledger (one row per pass):', '', renderIterationLedgerMarkdown(rows)];
|
|
1331
|
+
}
|
|
1332
|
+
function renderMarkdown(summary, ledgerRows) {
|
|
1333
|
+
if (summary.brief_slots !== undefined) {
|
|
1334
|
+
const lines = [summary.brief_slots.headline, '', summary.brief_slots.assessment, ''];
|
|
1335
|
+
for (const point of summary.brief_slots.key_points)
|
|
1336
|
+
lines.push(`- ${point}`);
|
|
1337
|
+
for (const caveat of summary.brief_slots.caveats)
|
|
1338
|
+
lines.push(`- Caveat: ${caveat}`);
|
|
1339
|
+
lines.push('', `Next: ${summary.brief_slots.next_action}`);
|
|
1340
|
+
if (summary.auto_resolutions !== undefined && summary.auto_resolutions.length > 0) {
|
|
1341
|
+
lines.push('', 'Auto-resolutions:');
|
|
1342
|
+
// Same cap-with-overflow treatment as the brief lists: the digest shows
|
|
1343
|
+
// at most MAX_KEY_POINTS resolutions and announces the rest instead of
|
|
1344
|
+
// dropping them silently (the JSON summary carries all of them).
|
|
1345
|
+
for (const line of capWithOverflow(summary.auto_resolutions.map((resolution) => autoResolutionSummaryLine(resolution)), MAX_KEY_POINTS)) {
|
|
1346
|
+
lines.push(`- ${line}`);
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
if (summary.skill_hook_activations !== undefined && summary.skill_hook_activations.length > 0) {
|
|
1350
|
+
lines.push('', 'Skill hooks:');
|
|
1351
|
+
for (const activation of summary.skill_hook_activations) {
|
|
1352
|
+
lines.push(`- ${skillHookActivationLine(activation)}`);
|
|
1353
|
+
}
|
|
1354
|
+
}
|
|
1355
|
+
if (summary.equipment_reshapes !== undefined && summary.equipment_reshapes.length > 0) {
|
|
1356
|
+
lines.push('', 'Live equipment:');
|
|
1357
|
+
for (const reshape of summary.equipment_reshapes) {
|
|
1358
|
+
lines.push(`- ${equipmentReshapeLine(reshape)}`);
|
|
1359
|
+
}
|
|
1360
|
+
}
|
|
1361
|
+
if (summary.receipt !== undefined) {
|
|
1362
|
+
lines.push('', receiptLine(summary.receipt));
|
|
1363
|
+
const spend = spendLine(summary.receipt);
|
|
1364
|
+
if (spend !== undefined)
|
|
1365
|
+
lines.push(spend);
|
|
1366
|
+
const reduced = reducedBindingsLine(summary.receipt);
|
|
1367
|
+
if (reduced !== undefined)
|
|
1368
|
+
lines.push(reduced);
|
|
1369
|
+
}
|
|
1370
|
+
lines.push(...ledgerSection(ledgerRows));
|
|
1371
|
+
if (summary.html_path !== undefined) {
|
|
1372
|
+
lines.push('', `Rich summary: ${summary.html_path}`);
|
|
1373
|
+
}
|
|
1374
|
+
return `${lines.join('\n')}\n`;
|
|
1375
|
+
}
|
|
1376
|
+
const lines = [summary.headline, '', summary.status_text ?? digestStatusText(summary.headline)];
|
|
1377
|
+
if (summary.checkpoint !== undefined) {
|
|
1378
|
+
lines.push('', '## Checkpoint', '');
|
|
1379
|
+
lines.push(`- Step: \`${summary.checkpoint.step_id}\``);
|
|
1380
|
+
lines.push(`- Request: ${summary.checkpoint.request_path}`);
|
|
1381
|
+
lines.push(`- Choices: ${summary.checkpoint.allowed_choices.join(', ')}`);
|
|
1382
|
+
}
|
|
1383
|
+
if (summary.auto_resolutions !== undefined && summary.auto_resolutions.length > 0) {
|
|
1384
|
+
lines.push('', '## Auto-resolutions', '');
|
|
1385
|
+
for (const resolution of summary.auto_resolutions) {
|
|
1386
|
+
lines.push(`- ${autoResolutionSummaryLine(resolution)}`);
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
if (summary.skill_hook_activations !== undefined && summary.skill_hook_activations.length > 0) {
|
|
1390
|
+
lines.push('', '## Skill hooks', '');
|
|
1391
|
+
for (const activation of summary.skill_hook_activations) {
|
|
1392
|
+
lines.push(`- ${skillHookActivationLine(activation)}`);
|
|
1393
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
if (summary.equipment_reshapes !== undefined && summary.equipment_reshapes.length > 0) {
|
|
1396
|
+
lines.push('', '## Live equipment', '');
|
|
1397
|
+
for (const reshape of summary.equipment_reshapes) {
|
|
1398
|
+
lines.push(`- ${equipmentReshapeLine(reshape)}`);
|
|
1399
|
+
}
|
|
1400
|
+
}
|
|
1401
|
+
const visibleDetails = summary.details.filter((detail) => !detail.startsWith('Run note:'));
|
|
1402
|
+
if (visibleDetails.length > 0) {
|
|
1403
|
+
lines.push('');
|
|
1404
|
+
for (const detail of visibleDetails)
|
|
1405
|
+
lines.push(`- ${detail}`);
|
|
1406
|
+
}
|
|
1407
|
+
if (summary.evidence_warnings.length > 0) {
|
|
1408
|
+
lines.push('', 'Warnings:');
|
|
1409
|
+
for (const warning of summary.evidence_warnings) {
|
|
1410
|
+
const path = warning.path === undefined ? '' : ` (${warning.path})`;
|
|
1411
|
+
lines.push(`- ${warning.kind}${path}: ${warning.message}`);
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
if (summary.receipt !== undefined) {
|
|
1415
|
+
lines.push('', receiptLine(summary.receipt));
|
|
1416
|
+
const spend = spendLine(summary.receipt);
|
|
1417
|
+
if (spend !== undefined)
|
|
1418
|
+
lines.push(spend);
|
|
1419
|
+
const reduced = reducedBindingsLine(summary.receipt);
|
|
1420
|
+
if (reduced !== undefined)
|
|
1421
|
+
lines.push(reduced);
|
|
1422
|
+
}
|
|
1423
|
+
lines.push(...ledgerSection(ledgerRows));
|
|
1424
|
+
if (summary.html_path !== undefined) {
|
|
1425
|
+
lines.push('', `Rich summary: ${summary.html_path}`);
|
|
1426
|
+
}
|
|
1427
|
+
return `${lines.join('\n')}\n`;
|
|
1428
|
+
}
|
|
1429
|
+
export function writeOperatorSummary(input) {
|
|
1430
|
+
const flowId = input.runResult.flow_id;
|
|
1431
|
+
const flowResultRelPath = findFlowRuntimeSurfaceById(flowId)?.primaryResult?.path;
|
|
1432
|
+
const flowReport = flowResultRelPath === undefined
|
|
1433
|
+
? undefined
|
|
1434
|
+
: readJsonIfPresent(input.runFolder, flowResultRelPath);
|
|
1435
|
+
const resultRelPath = RUN_RESULT_RELATIVE_PATH;
|
|
1436
|
+
const resultPath = input.runResult.outcome === 'checkpoint_waiting'
|
|
1437
|
+
? undefined
|
|
1438
|
+
: resolveRunRelative(input.runFolder, resultRelPath);
|
|
1439
|
+
const autoResolutions = readAutoResolutions(input.runFolder);
|
|
1440
|
+
const skillHookSummary = readSkillHookSummary(input.runFolder);
|
|
1441
|
+
const equipmentReshapeSummary = readEquipmentReshapeSummary(input.runFolder);
|
|
1442
|
+
const receipt = readRunReceipt(input.runFolder);
|
|
1443
|
+
const ledgerRows = readIterationLedger(input.runFolder);
|
|
1444
|
+
const outJsonPath = jsonPath(input.runFolder);
|
|
1445
|
+
const outMarkdownPath = markdownPath(input.runFolder);
|
|
1446
|
+
mkdirSync(dirname(outJsonPath), { recursive: true });
|
|
1447
|
+
// Write HTML first so JSON+markdown only promise a path that actually
|
|
1448
|
+
// exists on disk. Failure here degrades to a markdown-only summary; it
|
|
1449
|
+
// must not abort the run or break the JSON/MD siblings.
|
|
1450
|
+
const projector = getHtmlProjector(flowId);
|
|
1451
|
+
const candidateHtmlPath = htmlPath(input.runFolder);
|
|
1452
|
+
let outHtmlPath;
|
|
1453
|
+
let htmlEmitWarning;
|
|
1454
|
+
let renderedHtml;
|
|
1455
|
+
// Parse the checkpoint request once; the projector context, the generic
|
|
1456
|
+
// checkpoint page, and the markdown brief all adapt to what it carries.
|
|
1457
|
+
const checkpointRequest = input.runResult.outcome === 'checkpoint_waiting'
|
|
1458
|
+
? readCheckpointRequest(input.runFolder, input.runResult.checkpoint)
|
|
1459
|
+
: undefined;
|
|
1460
|
+
const projectorCheckpoint = input.runResult.outcome === 'checkpoint_waiting'
|
|
1461
|
+
? widenedProjectorCheckpoint(input.runResult.checkpoint, checkpointRequest)
|
|
1462
|
+
: undefined;
|
|
1463
|
+
const projectRoot = checkpointProjectRoot(checkpointRequest);
|
|
1464
|
+
const ctx = {
|
|
1465
|
+
runFolder: input.runFolder,
|
|
1466
|
+
...(projectRoot === undefined ? {} : { projectRoot }),
|
|
1467
|
+
runId: input.runResult.run_id,
|
|
1468
|
+
flowId,
|
|
1469
|
+
runOutcome: input.runResult.outcome,
|
|
1470
|
+
...(projectorCheckpoint === undefined ? {} : { checkpoint: projectorCheckpoint }),
|
|
1471
|
+
flowReport,
|
|
1472
|
+
readJsonRunRelative: (relPath) => readJsonIfPresent(input.runFolder, relPath),
|
|
1473
|
+
readEvidenceReportById: (reportId) => evidenceReportById(input.runFolder, flowReport, reportId),
|
|
1474
|
+
autoResolutions,
|
|
1475
|
+
};
|
|
1476
|
+
if (projector !== undefined) {
|
|
1477
|
+
try {
|
|
1478
|
+
renderedHtml = projector(ctx);
|
|
1479
|
+
}
|
|
1480
|
+
catch (err) {
|
|
1481
|
+
htmlEmitWarning = {
|
|
1482
|
+
kind: 'html_render_failed',
|
|
1483
|
+
message: err instanceof Error ? err.message : String(err),
|
|
1484
|
+
path: candidateHtmlPath,
|
|
1485
|
+
};
|
|
1486
|
+
}
|
|
1487
|
+
}
|
|
1488
|
+
// Structural floor: a waiting checkpoint always gets a page. Flows with
|
|
1489
|
+
// no projector (or whose projector produced nothing, or threw) fall back
|
|
1490
|
+
// to the generic checkpoint page rendered from the widened context alone,
|
|
1491
|
+
// so the operator always sees the question, the options, and an honest
|
|
1492
|
+
// resume path. Non-checkpoint outcomes keep skipping HTML cleanly.
|
|
1493
|
+
if (input.runResult.outcome === 'checkpoint_waiting' && renderedHtml === undefined) {
|
|
1494
|
+
try {
|
|
1495
|
+
renderedHtml = genericCheckpointHtml(ctx);
|
|
1496
|
+
}
|
|
1497
|
+
catch (err) {
|
|
1498
|
+
htmlEmitWarning ??= {
|
|
1499
|
+
kind: 'html_render_failed',
|
|
1500
|
+
message: err instanceof Error ? err.message : String(err),
|
|
1501
|
+
path: candidateHtmlPath,
|
|
1502
|
+
};
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
|
+
if (renderedHtml === undefined) {
|
|
1506
|
+
// Stale-cleanup: a resume whose projector returned undefined (or that
|
|
1507
|
+
// has no projector at all) must not leave the previous run's HTML
|
|
1508
|
+
// behind. The operator may have bookmarked or scrolled to that path
|
|
1509
|
+
// and would otherwise open stale content silently.
|
|
1510
|
+
if (existsSync(candidateHtmlPath))
|
|
1511
|
+
rmSync(candidateHtmlPath, { force: true, recursive: true });
|
|
1512
|
+
}
|
|
1513
|
+
else {
|
|
1514
|
+
try {
|
|
1515
|
+
writeFileSync(candidateHtmlPath, renderedHtml);
|
|
1516
|
+
outHtmlPath = candidateHtmlPath;
|
|
1517
|
+
}
|
|
1518
|
+
catch (err) {
|
|
1519
|
+
// writeFileSync may have left a partial file behind. Remove it so
|
|
1520
|
+
// neither the envelope nor any reader points at a half-written
|
|
1521
|
+
// report, and surface the failure as a warning the operator can
|
|
1522
|
+
// see in the markdown summary.
|
|
1523
|
+
if (existsSync(candidateHtmlPath))
|
|
1524
|
+
rmSync(candidateHtmlPath, { force: true, recursive: true });
|
|
1525
|
+
htmlEmitWarning = {
|
|
1526
|
+
kind: 'html_write_failed',
|
|
1527
|
+
message: err instanceof Error ? err.message : String(err),
|
|
1528
|
+
path: candidateHtmlPath,
|
|
1529
|
+
};
|
|
1530
|
+
}
|
|
1531
|
+
}
|
|
1532
|
+
const reportPaths = [];
|
|
1533
|
+
if (resultPath !== undefined)
|
|
1534
|
+
reportPaths.push(reportLink(input.runFolder, 'Run result', resultRelPath));
|
|
1535
|
+
if (flowResultRelPath !== undefined && flowReport !== undefined) {
|
|
1536
|
+
reportPaths.push(reportLink(input.runFolder, `${flowId} result`, flowResultRelPath));
|
|
1537
|
+
}
|
|
1538
|
+
if (outHtmlPath !== undefined) {
|
|
1539
|
+
reportPaths.push({ label: HTML_REPORT_LABEL, path: outHtmlPath });
|
|
1540
|
+
}
|
|
1541
|
+
if (input.runResult.outcome === 'checkpoint_waiting') {
|
|
1542
|
+
const checkpoint = input.runResult.checkpoint;
|
|
1543
|
+
reportPaths.push({
|
|
1544
|
+
label: 'Checkpoint request',
|
|
1545
|
+
path: checkpoint.request_path,
|
|
1546
|
+
});
|
|
1547
|
+
}
|
|
1548
|
+
const evidence = evidenceLinks(input.runFolder, flowReport);
|
|
1549
|
+
reportPaths.push(...evidence.links);
|
|
1550
|
+
// Compute headline + per-flow details via the registry, then overlay shared
|
|
1551
|
+
// concerns: worker disclosure, run note framing, abort reason, checkpoint
|
|
1552
|
+
// option detail, and the special-case checkpoint_waiting / aborted headlines.
|
|
1553
|
+
const projection = projectSummary({
|
|
1554
|
+
runFolder: input.runFolder,
|
|
1555
|
+
flowId,
|
|
1556
|
+
flowReport,
|
|
1557
|
+
resultSummary: input.runResult.summary,
|
|
1558
|
+
runOutcome: input.runResult.outcome,
|
|
1559
|
+
});
|
|
1560
|
+
const details = [
|
|
1561
|
+
...(flowMayInvokeWriteCapableWorker(flowId)
|
|
1562
|
+
? [`Worker access: ${WRITE_CAPABLE_WORKER_DISCLOSURE}`]
|
|
1563
|
+
: []),
|
|
1564
|
+
...(flowId === 'explore'
|
|
1565
|
+
? []
|
|
1566
|
+
: [`Run note: ${friendlyRunNote(flowId, input.runResult.summary)}`]),
|
|
1567
|
+
...projection.details,
|
|
1568
|
+
];
|
|
1569
|
+
if (input.runResult.outcome === 'checkpoint_waiting') {
|
|
1570
|
+
const checkpoint = input.runResult.checkpoint;
|
|
1571
|
+
const optionDetails = checkpointOptionDetails(input.runFolder, checkpoint.allowed_choices);
|
|
1572
|
+
if (optionDetails.length > 0)
|
|
1573
|
+
details.push(`Checkpoint options: ${optionDetails.join('; ')}`);
|
|
1574
|
+
}
|
|
1575
|
+
if (input.runResult.outcome === 'aborted' && input.runResult.reason !== undefined) {
|
|
1576
|
+
// Lead with the plain-language translation when the reason is one of the
|
|
1577
|
+
// pinned engine shapes; the raw reason always follows, verbatim.
|
|
1578
|
+
const friendly = friendlyAbortReason(input.runResult.reason);
|
|
1579
|
+
if (friendly !== undefined)
|
|
1580
|
+
details.push(`What happened: ${friendly}`);
|
|
1581
|
+
details.push(`Abort reason: ${input.runResult.reason}`);
|
|
1582
|
+
}
|
|
1583
|
+
// An escalated run is a failure (it ran out of recovery and handed up), but
|
|
1584
|
+
// its per-flow projection headline reads as a neutral/complete result and
|
|
1585
|
+
// hides the reason. Surface it the way an abort is surfaced so the operator
|
|
1586
|
+
// sees the failure, not a false "complete".
|
|
1587
|
+
if (input.runResult.outcome === 'escalated' && input.runResult.reason !== undefined) {
|
|
1588
|
+
details.push(`Escalation reason: ${input.runResult.reason}`);
|
|
1589
|
+
}
|
|
1590
|
+
// Auto-power transparency: when the dial resolved from a researcher
|
|
1591
|
+
// recommendation, the digest says what was chosen and why. The receipt
|
|
1592
|
+
// trailer carries the tier; this line carries the reasoning.
|
|
1593
|
+
if (receipt?.power_source === 'auto' && receipt.power_rationale !== undefined) {
|
|
1594
|
+
const capped = receipt.power_clamped === true && receipt.power_recommended !== undefined
|
|
1595
|
+
? ` (recommended ${receipt.power_recommended}, held to the configured bounds)`
|
|
1596
|
+
: '';
|
|
1597
|
+
details.push(`Power dial: auto chose ${receipt.power}${capped}. Reason: ${receipt.power_rationale}`);
|
|
1598
|
+
}
|
|
1599
|
+
// Connector transparency, mirroring the power-dial line: when nothing chose
|
|
1600
|
+
// a connector, say which one the automatic fallback picked and how to make
|
|
1601
|
+
// the choice explicit. Absent entirely when every relay was chosen by
|
|
1602
|
+
// config, flow, or step pin.
|
|
1603
|
+
for (const [name, count] of readAutoConnectorPicks(input.runFolder)) {
|
|
1604
|
+
details.push(`Connector: nothing was configured, so '${name}' was the automatic pick for ` +
|
|
1605
|
+
`${count} relay step(s). To choose explicitly: circuit config set relay.default ${name}`);
|
|
1606
|
+
}
|
|
1607
|
+
const warnings = [
|
|
1608
|
+
...warningRecords(flowReport),
|
|
1609
|
+
...(htmlEmitWarning === undefined ? [] : [htmlEmitWarning]),
|
|
1610
|
+
...evidence.warnings,
|
|
1611
|
+
...skillHookSummary.warnings,
|
|
1612
|
+
...equipmentReshapeSummary.warnings,
|
|
1613
|
+
...readDegradationWarnings(input.runFolder),
|
|
1614
|
+
];
|
|
1615
|
+
const briefSlots = buildBriefSlots({
|
|
1616
|
+
runFolder: input.runFolder,
|
|
1617
|
+
flowId,
|
|
1618
|
+
flowReport,
|
|
1619
|
+
runResult: input.runResult,
|
|
1620
|
+
projectionHeadline: projection.headline,
|
|
1621
|
+
details,
|
|
1622
|
+
warnings,
|
|
1623
|
+
...(projectorCheckpoint?.safe_default_choice === undefined
|
|
1624
|
+
? {}
|
|
1625
|
+
: { checkpointDefaultChoice: projectorCheckpoint.safe_default_choice }),
|
|
1626
|
+
});
|
|
1627
|
+
const candidate = OperatorSummary.parse({
|
|
1628
|
+
schema_version: 1,
|
|
1629
|
+
run_id: input.runResult.run_id,
|
|
1630
|
+
flow_id: input.runResult.flow_id,
|
|
1631
|
+
selected_flow: input.route.selectedFlow,
|
|
1632
|
+
...(input.route.routedBy === undefined ? {} : { routed_by: input.route.routedBy }),
|
|
1633
|
+
...(input.route.routerReason === undefined ? {} : { router_reason: input.route.routerReason }),
|
|
1634
|
+
outcome: input.runResult.outcome,
|
|
1635
|
+
headline: briefSlots.headline,
|
|
1636
|
+
status_text: digestStatusText(briefSlots.headline),
|
|
1637
|
+
brief_slots: briefSlots,
|
|
1638
|
+
details,
|
|
1639
|
+
evidence_warnings: warnings,
|
|
1640
|
+
run_folder: input.runFolder,
|
|
1641
|
+
...(resultPath === undefined ? {} : { result_path: resultPath }),
|
|
1642
|
+
...(outHtmlPath === undefined ? {} : { html_path: outHtmlPath }),
|
|
1643
|
+
report_paths: reportPaths,
|
|
1644
|
+
...(autoResolutions.length === 0 ? {} : { auto_resolutions: autoResolutions }),
|
|
1645
|
+
...(skillHookSummary.activations.length === 0
|
|
1646
|
+
? {}
|
|
1647
|
+
: { skill_hook_activations: skillHookSummary.activations }),
|
|
1648
|
+
...(equipmentReshapeSummary.reshapes.length === 0
|
|
1649
|
+
? {}
|
|
1650
|
+
: { equipment_reshapes: equipmentReshapeSummary.reshapes }),
|
|
1651
|
+
...(receipt === undefined ? {} : { receipt }),
|
|
1652
|
+
...(input.runResult.outcome === 'checkpoint_waiting'
|
|
1653
|
+
? { checkpoint: input.runResult.checkpoint }
|
|
1654
|
+
: {}),
|
|
1655
|
+
});
|
|
1656
|
+
writeFileSync(outJsonPath, `${JSON.stringify(candidate, null, 2)}\n`);
|
|
1657
|
+
writeFileSync(outMarkdownPath, renderMarkdown(candidate, ledgerRows));
|
|
1658
|
+
return outHtmlPath === undefined
|
|
1659
|
+
? { summary: candidate, jsonPath: outJsonPath, markdownPath: outMarkdownPath }
|
|
1660
|
+
: {
|
|
1661
|
+
summary: candidate,
|
|
1662
|
+
jsonPath: outJsonPath,
|
|
1663
|
+
markdownPath: outMarkdownPath,
|
|
1664
|
+
htmlPath: outHtmlPath,
|
|
1665
|
+
};
|
|
1666
|
+
}
|
|
1667
|
+
//# sourceMappingURL=writer.js.map
|