@svenroth-ai/shipwright 0.24.1-next.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 +55 -0
- package/bin/shipwright.mjs +187 -0
- package/client/dist/assets/EmbeddedTerminal-6GBZ9nXN.css +32 -0
- package/client/dist/assets/EmbeddedTerminal-CpeDvtzx.js +123 -0
- package/client/dist/assets/MarkdownEditorModal-Di9HN39z.js +212 -0
- package/client/dist/assets/abnfDiagram-VRR7QNED-BbSdq0X7.js +1 -0
- package/client/dist/assets/arc-BZT7vKjm.js +1 -0
- package/client/dist/assets/architectureDiagram-ZJ3FMSHR-BuRwoNgV.js +36 -0
- package/client/dist/assets/blockDiagram-677ZJIJ3-B2RNYWcr.js +132 -0
- package/client/dist/assets/c4Diagram-LMCZKHZV-fbXlt08K.js +10 -0
- package/client/dist/assets/channel-2-wkFEKK.js +1 -0
- package/client/dist/assets/chunk-2Q5K7J3B-NqMRUe5-.js +1 -0
- package/client/dist/assets/chunk-32BRIVSS-CIr9bFCd.js +1 -0
- package/client/dist/assets/chunk-5VM5RSS4-l0I6rbZN.js +15 -0
- package/client/dist/assets/chunk-EX3LRPZG-DXinoCxp.js +231 -0
- package/client/dist/assets/chunk-JWPE2WC7-BAcCano9.js +1 -0
- package/client/dist/assets/chunk-MOJQB5TN-DMVOqL7C.js +88 -0
- package/client/dist/assets/chunk-RYQCIY6F-CtNSAItH.js +1 -0
- package/client/dist/assets/chunk-V7JOEXUC-CufSmC93.js +206 -0
- package/client/dist/assets/chunk-VR4S4FIN-_BbUF9fa.js +1 -0
- package/client/dist/assets/chunk-XXDRQBXY-uQ35hUPB.js +1 -0
- package/client/dist/assets/classDiagram-OUVF2IWQ-A9SpDakb.js +1 -0
- package/client/dist/assets/classDiagram-v2-EOCWNBFH-A9SpDakb.js +1 -0
- package/client/dist/assets/cose-bilkent-JH36ORCC-B9q9uYCX.js +1 -0
- package/client/dist/assets/cynefin-VYW2F7L2-C2_bJyZA.js +178 -0
- package/client/dist/assets/cynefinDiagram-TSTJHNR4-0mzVmPv4.js +62 -0
- package/client/dist/assets/cytoscape.esm-DTSO7Bv0.js +331 -0
- package/client/dist/assets/dagre-VKFMJZFB-CIE9HMtr.js +4 -0
- package/client/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/client/dist/assets/diagram-FQU43EPY-DdkBaZrX.js +3 -0
- package/client/dist/assets/diagram-G47NLZAW-Cql4k2sg.js +24 -0
- package/client/dist/assets/diagram-NH7WQ7WH-FRAUyqEu.js +24 -0
- package/client/dist/assets/diagram-OA4YK3LP-DXo8GTB8.js +30 -0
- package/client/dist/assets/diagram-WEI45ONY-DqVtWGdt.js +41 -0
- package/client/dist/assets/ebnfDiagram-CCIWWBDH-B0La0RsO.js +1 -0
- package/client/dist/assets/erDiagram-Q63AITRT-DHbbqiY9.js +85 -0
- package/client/dist/assets/flowDiagram-23GEKE2U-I6vhJlCk.js +156 -0
- package/client/dist/assets/ganttDiagram-NO4QXBWP-CDYZHcsU.js +292 -0
- package/client/dist/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2 +0 -0
- package/client/dist/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2 +0 -0
- package/client/dist/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2 +0 -0
- package/client/dist/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
- package/client/dist/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2 +0 -0
- package/client/dist/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2 +0 -0
- package/client/dist/assets/gitGraphDiagram-IHSO6WYX-dyf7caP8.js +106 -0
- package/client/dist/assets/graph-C9eacEi8.js +1 -0
- package/client/dist/assets/index-BYrVLOXw.js +609 -0
- package/client/dist/assets/index-BZvZ9izZ.css +1 -0
- package/client/dist/assets/infoDiagram-FWYZ7A6U-BlWH6vM3.js +2 -0
- package/client/dist/assets/init-Gi6I4Gst.js +1 -0
- package/client/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/client/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/client/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/client/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/client/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/client/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/client/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/client/dist/assets/ishikawaDiagram-FXEZZL3T-BEKH-_6E.js +70 -0
- package/client/dist/assets/journeyDiagram-5HDEW3XC-cn_mQ2U9.js +139 -0
- package/client/dist/assets/kanban-definition-HUTT4EX6-DGZiYhYV.js +89 -0
- package/client/dist/assets/katex-DkKDou_j.js +257 -0
- package/client/dist/assets/layout-DEXfKzaS.js +1 -0
- package/client/dist/assets/linear-CdtYl6qR.js +1 -0
- package/client/dist/assets/map-Czzmt4hB.js +1 -0
- package/client/dist/assets/mermaid.core-CrKi1642.js +314 -0
- package/client/dist/assets/mindmap-definition-LN4V7U3C-G_CA7V9L.js +96 -0
- package/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/client/dist/assets/pegDiagram-2B236MQR-6ZeO9kDM.js +1 -0
- package/client/dist/assets/pieDiagram-ENE6RG2P-Bd0InZSQ.js +39 -0
- package/client/dist/assets/quadrantDiagram-ABIIQ3AL-Bg1m9Csn.js +7 -0
- package/client/dist/assets/railroadDiagram-RFXS5EU6-CCzPP1JU.js +1 -0
- package/client/dist/assets/requirementDiagram-TGXJPOKE-iN7kyPgM.js +84 -0
- package/client/dist/assets/sankeyDiagram-HTMAVEWB-DN1v_DUJ.js +40 -0
- package/client/dist/assets/sequenceDiagram-DBY2YBRQ-C5LMp5Sa.js +162 -0
- package/client/dist/assets/sizeCapture-X5ZJPWSS-Bp9jVLhL.js +1 -0
- package/client/dist/assets/stateDiagram-2N3HPSRC-VbWBetTf.js +1 -0
- package/client/dist/assets/stateDiagram-v2-6OUMAXLB-BuaUtNAG.js +1 -0
- package/client/dist/assets/swimlanes-5IMT3BWC-CrXokvQ-.js +2 -0
- package/client/dist/assets/swimlanesDiagram-G3AALYLV-C6hwc993.js +8 -0
- package/client/dist/assets/timeline-definition-FHXFAJF6-Cxx1NT9A.js +120 -0
- package/client/dist/assets/vennDiagram-L72KCM5P-C6DBgaEy.js +34 -0
- package/client/dist/assets/wardleyDiagram-EHGQE667-RV7xMg8g.js +78 -0
- package/client/dist/assets/xychartDiagram-FW5EYKEG-Llhe9pB1.js +7 -0
- package/client/dist/backdrops/deck-golden.jpg +0 -0
- package/client/dist/backdrops/lighthouse.jpg +0 -0
- package/client/dist/index.html +27 -0
- package/client/dist/shipwright-logo-white.png +0 -0
- package/lib/cache-runtime.mjs +72 -0
- package/lib/cache-sync.mjs +243 -0
- package/lib/claude-cli.mjs +173 -0
- package/lib/plugins.mjs +181 -0
- package/lib/preflight.mjs +208 -0
- package/lib/probes.mjs +53 -0
- package/lib/server.mjs +315 -0
- package/lib/util.mjs +83 -0
- package/lib/version-check.mjs +76 -0
- package/lib/win32-spawn.mjs +253 -0
- package/package.json +67 -0
- package/scripts/deploy-procs.mjs +208 -0
- package/scripts/deploy-swap.mjs +276 -0
- package/scripts/kill-targets.js +140 -0
- package/scripts/repair-claude-json.mjs +295 -0
- package/server/dist/config/default-actions.json +90 -0
- package/server/dist/config.d.ts +96 -0
- package/server/dist/config.d.ts.map +1 -0
- package/server/dist/config.js +68 -0
- package/server/dist/config.js.map +1 -0
- package/server/dist/core/actions-schema-validator.d.ts +8 -0
- package/server/dist/core/actions-schema-validator.d.ts.map +1 -0
- package/server/dist/core/actions-schema-validator.js +394 -0
- package/server/dist/core/actions-schema-validator.js.map +1 -0
- package/server/dist/core/actions-substitute.d.ts +115 -0
- package/server/dist/core/actions-substitute.d.ts.map +1 -0
- package/server/dist/core/actions-substitute.js +549 -0
- package/server/dist/core/actions-substitute.js.map +1 -0
- package/server/dist/core/board-column.d.ts +3 -0
- package/server/dist/core/board-column.d.ts.map +1 -0
- package/server/dist/core/board-column.js +4 -0
- package/server/dist/core/board-column.js.map +1 -0
- package/server/dist/core/campaign-events.d.ts +39 -0
- package/server/dist/core/campaign-events.d.ts.map +1 -0
- package/server/dist/core/campaign-events.js +192 -0
- package/server/dist/core/campaign-events.js.map +1 -0
- package/server/dist/core/campaign-loop-state.d.ts +31 -0
- package/server/dist/core/campaign-loop-state.d.ts.map +1 -0
- package/server/dist/core/campaign-loop-state.js +124 -0
- package/server/dist/core/campaign-loop-state.js.map +1 -0
- package/server/dist/core/campaign-parse.d.ts +28 -0
- package/server/dist/core/campaign-parse.d.ts.map +1 -0
- package/server/dist/core/campaign-parse.js +174 -0
- package/server/dist/core/campaign-parse.js.map +1 -0
- package/server/dist/core/campaign-paths.d.ts +24 -0
- package/server/dist/core/campaign-paths.d.ts.map +1 -0
- package/server/dist/core/campaign-paths.js +111 -0
- package/server/dist/core/campaign-paths.js.map +1 -0
- package/server/dist/core/campaign-route-helpers.d.ts +19 -0
- package/server/dist/core/campaign-route-helpers.d.ts.map +1 -0
- package/server/dist/core/campaign-route-helpers.js +51 -0
- package/server/dist/core/campaign-route-helpers.js.map +1 -0
- package/server/dist/core/campaign-status-json.d.ts +55 -0
- package/server/dist/core/campaign-status-json.d.ts.map +1 -0
- package/server/dist/core/campaign-status-json.js +57 -0
- package/server/dist/core/campaign-status-json.js.map +1 -0
- package/server/dist/core/campaign-store.d.ts +10 -0
- package/server/dist/core/campaign-store.d.ts.map +1 -0
- package/server/dist/core/campaign-store.js +245 -0
- package/server/dist/core/campaign-store.js.map +1 -0
- package/server/dist/core/campaign-types.d.ts +101 -0
- package/server/dist/core/campaign-types.d.ts.map +1 -0
- package/server/dist/core/campaign-types.js +10 -0
- package/server/dist/core/campaign-types.js.map +1 -0
- package/server/dist/core/campaign-write.d.ts +13 -0
- package/server/dist/core/campaign-write.d.ts.map +1 -0
- package/server/dist/core/campaign-write.js +128 -0
- package/server/dist/core/campaign-write.js.map +1 -0
- package/server/dist/core/cascade-delete-project-tasks.d.ts +14 -0
- package/server/dist/core/cascade-delete-project-tasks.d.ts.map +1 -0
- package/server/dist/core/cascade-delete-project-tasks.js +68 -0
- package/server/dist/core/cascade-delete-project-tasks.js.map +1 -0
- package/server/dist/core/claude-bin-resolver.d.ts +62 -0
- package/server/dist/core/claude-bin-resolver.d.ts.map +1 -0
- package/server/dist/core/claude-bin-resolver.js +208 -0
- package/server/dist/core/claude-bin-resolver.js.map +1 -0
- package/server/dist/core/claude-theme-reader.d.ts +15 -0
- package/server/dist/core/claude-theme-reader.d.ts.map +1 -0
- package/server/dist/core/claude-theme-reader.js +52 -0
- package/server/dist/core/claude-theme-reader.js.map +1 -0
- package/server/dist/core/cli-compat.d.ts +43 -0
- package/server/dist/core/cli-compat.d.ts.map +1 -0
- package/server/dist/core/cli-compat.js +88 -0
- package/server/dist/core/cli-compat.js.map +1 -0
- package/server/dist/core/compliance-dimensions.d.ts +20 -0
- package/server/dist/core/compliance-dimensions.d.ts.map +1 -0
- package/server/dist/core/compliance-dimensions.js +114 -0
- package/server/dist/core/compliance-dimensions.js.map +1 -0
- package/server/dist/core/compliance-reader.d.ts +49 -0
- package/server/dist/core/compliance-reader.d.ts.map +1 -0
- package/server/dist/core/compliance-reader.js +147 -0
- package/server/dist/core/compliance-reader.js.map +1 -0
- package/server/dist/core/contract-version.d.ts +72 -0
- package/server/dist/core/contract-version.d.ts.map +1 -0
- package/server/dist/core/contract-version.js +114 -0
- package/server/dist/core/contract-version.js.map +1 -0
- package/server/dist/core/design-feedback.d.ts +29 -0
- package/server/dist/core/design-feedback.d.ts.map +1 -0
- package/server/dist/core/design-feedback.js +80 -0
- package/server/dist/core/design-feedback.js.map +1 -0
- package/server/dist/core/dismissed-campaigns-store.d.ts +45 -0
- package/server/dist/core/dismissed-campaigns-store.d.ts.map +1 -0
- package/server/dist/core/dismissed-campaigns-store.js +147 -0
- package/server/dist/core/dismissed-campaigns-store.js.map +1 -0
- package/server/dist/core/event-log-reader.d.ts +19 -0
- package/server/dist/core/event-log-reader.d.ts.map +1 -0
- package/server/dist/core/event-log-reader.js +209 -0
- package/server/dist/core/event-log-reader.js.map +1 -0
- package/server/dist/core/event-log-types.d.ts +99 -0
- package/server/dist/core/event-log-types.d.ts.map +1 -0
- package/server/dist/core/event-log-types.js +14 -0
- package/server/dist/core/event-log-types.js.map +1 -0
- package/server/dist/core/gitignore-cache.d.ts +16 -0
- package/server/dist/core/gitignore-cache.d.ts.map +1 -0
- package/server/dist/core/gitignore-cache.js +103 -0
- package/server/dist/core/gitignore-cache.js.map +1 -0
- package/server/dist/core/grade-runner.d.ts +63 -0
- package/server/dist/core/grade-runner.d.ts.map +1 -0
- package/server/dist/core/grade-runner.js +176 -0
- package/server/dist/core/grade-runner.js.map +1 -0
- package/server/dist/core/grade-target.d.ts +43 -0
- package/server/dist/core/grade-target.d.ts.map +1 -0
- package/server/dist/core/grade-target.js +162 -0
- package/server/dist/core/grade-target.js.map +1 -0
- package/server/dist/core/inbox-derive.d.ts +56 -0
- package/server/dist/core/inbox-derive.d.ts.map +1 -0
- package/server/dist/core/inbox-derive.js +211 -0
- package/server/dist/core/inbox-derive.js.map +1 -0
- package/server/dist/core/jsonl-decode.d.ts +28 -0
- package/server/dist/core/jsonl-decode.d.ts.map +1 -0
- package/server/dist/core/jsonl-decode.js +96 -0
- package/server/dist/core/jsonl-decode.js.map +1 -0
- package/server/dist/core/jsonl-records.d.ts +104 -0
- package/server/dist/core/jsonl-records.d.ts.map +1 -0
- package/server/dist/core/jsonl-records.js +222 -0
- package/server/dist/core/jsonl-records.js.map +1 -0
- package/server/dist/core/launcher.d.ts +74 -0
- package/server/dist/core/launcher.d.ts.map +1 -0
- package/server/dist/core/launcher.js +192 -0
- package/server/dist/core/launcher.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-commit.d.ts +28 -0
- package/server/dist/core/mission-context/artifacts-commit.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts-commit.js +98 -0
- package/server/dist/core/mission-context/artifacts-commit.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-decisions.d.ts +5 -0
- package/server/dist/core/mission-context/artifacts-decisions.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts-decisions.js +114 -0
- package/server/dist/core/mission-context/artifacts-decisions.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-slice2.d.ts +12 -0
- package/server/dist/core/mission-context/artifacts-slice2.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts-slice2.js +125 -0
- package/server/dist/core/mission-context/artifacts-slice2.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-tests.d.ts +34 -0
- package/server/dist/core/mission-context/artifacts-tests.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts-tests.js +236 -0
- package/server/dist/core/mission-context/artifacts-tests.js.map +1 -0
- package/server/dist/core/mission-context/artifacts.d.ts +33 -0
- package/server/dist/core/mission-context/artifacts.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts.js +186 -0
- package/server/dist/core/mission-context/artifacts.js.map +1 -0
- package/server/dist/core/mission-context/association.d.ts +27 -0
- package/server/dist/core/mission-context/association.d.ts.map +1 -0
- package/server/dist/core/mission-context/association.js +69 -0
- package/server/dist/core/mission-context/association.js.map +1 -0
- package/server/dist/core/mission-context/campaign-artifacts.d.ts +9 -0
- package/server/dist/core/mission-context/campaign-artifacts.d.ts.map +1 -0
- package/server/dist/core/mission-context/campaign-artifacts.js +195 -0
- package/server/dist/core/mission-context/campaign-artifacts.js.map +1 -0
- package/server/dist/core/mission-context/campaign-facts.d.ts +99 -0
- package/server/dist/core/mission-context/campaign-facts.d.ts.map +1 -0
- package/server/dist/core/mission-context/campaign-facts.js +111 -0
- package/server/dist/core/mission-context/campaign-facts.js.map +1 -0
- package/server/dist/core/mission-context/decision-drops.d.ts +46 -0
- package/server/dist/core/mission-context/decision-drops.d.ts.map +1 -0
- package/server/dist/core/mission-context/decision-drops.js +269 -0
- package/server/dist/core/mission-context/decision-drops.js.map +1 -0
- package/server/dist/core/mission-context/decisions.d.ts +91 -0
- package/server/dist/core/mission-context/decisions.d.ts.map +1 -0
- package/server/dist/core/mission-context/decisions.js +222 -0
- package/server/dist/core/mission-context/decisions.js.map +1 -0
- package/server/dist/core/mission-context/doc-ids.d.ts +35 -0
- package/server/dist/core/mission-context/doc-ids.d.ts.map +1 -0
- package/server/dist/core/mission-context/doc-ids.js +78 -0
- package/server/dist/core/mission-context/doc-ids.js.map +1 -0
- package/server/dist/core/mission-context/document-read.d.ts +14 -0
- package/server/dist/core/mission-context/document-read.d.ts.map +1 -0
- package/server/dist/core/mission-context/document-read.js +36 -0
- package/server/dist/core/mission-context/document-read.js.map +1 -0
- package/server/dist/core/mission-context/fold-map.d.ts +45 -0
- package/server/dist/core/mission-context/fold-map.d.ts.map +1 -0
- package/server/dist/core/mission-context/fold-map.js +168 -0
- package/server/dist/core/mission-context/fold-map.js.map +1 -0
- package/server/dist/core/mission-context/fs-read.d.ts +47 -0
- package/server/dist/core/mission-context/fs-read.d.ts.map +1 -0
- package/server/dist/core/mission-context/fs-read.js +104 -0
- package/server/dist/core/mission-context/fs-read.js.map +1 -0
- package/server/dist/core/mission-context/iterate-record.d.ts +52 -0
- package/server/dist/core/mission-context/iterate-record.d.ts.map +1 -0
- package/server/dist/core/mission-context/iterate-record.js +156 -0
- package/server/dist/core/mission-context/iterate-record.js.map +1 -0
- package/server/dist/core/mission-context/merge-check.d.ts +60 -0
- package/server/dist/core/mission-context/merge-check.d.ts.map +1 -0
- package/server/dist/core/mission-context/merge-check.js +217 -0
- package/server/dist/core/mission-context/merge-check.js.map +1 -0
- package/server/dist/core/mission-context/merge-refresh.d.ts +14 -0
- package/server/dist/core/mission-context/merge-refresh.d.ts.map +1 -0
- package/server/dist/core/mission-context/merge-refresh.js +53 -0
- package/server/dist/core/mission-context/merge-refresh.js.map +1 -0
- package/server/dist/core/mission-context/merged-events.d.ts +34 -0
- package/server/dist/core/mission-context/merged-events.d.ts.map +1 -0
- package/server/dist/core/mission-context/merged-events.js +120 -0
- package/server/dist/core/mission-context/merged-events.js.map +1 -0
- package/server/dist/core/mission-context/pipeline-artifacts.d.ts +53 -0
- package/server/dist/core/mission-context/pipeline-artifacts.d.ts.map +1 -0
- package/server/dist/core/mission-context/pipeline-artifacts.js +161 -0
- package/server/dist/core/mission-context/pipeline-artifacts.js.map +1 -0
- package/server/dist/core/mission-context/planned-impact.d.ts +28 -0
- package/server/dist/core/mission-context/planned-impact.d.ts.map +1 -0
- package/server/dist/core/mission-context/planned-impact.js +129 -0
- package/server/dist/core/mission-context/planned-impact.js.map +1 -0
- package/server/dist/core/mission-context/pointer.d.ts +44 -0
- package/server/dist/core/mission-context/pointer.d.ts.map +1 -0
- package/server/dist/core/mission-context/pointer.js +165 -0
- package/server/dist/core/mission-context/pointer.js.map +1 -0
- package/server/dist/core/mission-context/resolver-io.d.ts +47 -0
- package/server/dist/core/mission-context/resolver-io.d.ts.map +1 -0
- package/server/dist/core/mission-context/resolver-io.js +11 -0
- package/server/dist/core/mission-context/resolver-io.js.map +1 -0
- package/server/dist/core/mission-context/resolver-parts.d.ts +57 -0
- package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -0
- package/server/dist/core/mission-context/resolver-parts.js +136 -0
- package/server/dist/core/mission-context/resolver-parts.js.map +1 -0
- package/server/dist/core/mission-context/resolver.d.ts +11 -0
- package/server/dist/core/mission-context/resolver.d.ts.map +1 -0
- package/server/dist/core/mission-context/resolver.js +261 -0
- package/server/dist/core/mission-context/resolver.js.map +1 -0
- package/server/dist/core/mission-context/review-record-entry.d.ts +45 -0
- package/server/dist/core/mission-context/review-record-entry.d.ts.map +1 -0
- package/server/dist/core/mission-context/review-record-entry.js +214 -0
- package/server/dist/core/mission-context/review-record-entry.js.map +1 -0
- package/server/dist/core/mission-context/review-record.d.ts +35 -0
- package/server/dist/core/mission-context/review-record.d.ts.map +1 -0
- package/server/dist/core/mission-context/review-record.js +259 -0
- package/server/dist/core/mission-context/review-record.js.map +1 -0
- package/server/dist/core/mission-context/review-state.d.ts +33 -0
- package/server/dist/core/mission-context/review-state.d.ts.map +1 -0
- package/server/dist/core/mission-context/review-state.js +249 -0
- package/server/dist/core/mission-context/review-state.js.map +1 -0
- package/server/dist/core/mission-context/run-id-recovery.d.ts +44 -0
- package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -0
- package/server/dist/core/mission-context/run-id-recovery.js +175 -0
- package/server/dist/core/mission-context/run-id-recovery.js.map +1 -0
- package/server/dist/core/mission-context/scenario.d.ts +121 -0
- package/server/dist/core/mission-context/scenario.d.ts.map +1 -0
- package/server/dist/core/mission-context/scenario.js +151 -0
- package/server/dist/core/mission-context/scenario.js.map +1 -0
- package/server/dist/core/mission-context/slice2-sources.d.ts +40 -0
- package/server/dist/core/mission-context/slice2-sources.d.ts.map +1 -0
- package/server/dist/core/mission-context/slice2-sources.js +80 -0
- package/server/dist/core/mission-context/slice2-sources.js.map +1 -0
- package/server/dist/core/mission-context/slice2-test-fixtures.d.ts +17 -0
- package/server/dist/core/mission-context/slice2-test-fixtures.d.ts.map +1 -0
- package/server/dist/core/mission-context/slice2-test-fixtures.js +61 -0
- package/server/dist/core/mission-context/slice2-test-fixtures.js.map +1 -0
- package/server/dist/core/mission-context/slice3-sources.d.ts +43 -0
- package/server/dist/core/mission-context/slice3-sources.d.ts.map +1 -0
- package/server/dist/core/mission-context/slice3-sources.js +192 -0
- package/server/dist/core/mission-context/slice3-sources.js.map +1 -0
- package/server/dist/core/mission-context/spec-candidates.d.ts +66 -0
- package/server/dist/core/mission-context/spec-candidates.d.ts.map +1 -0
- package/server/dist/core/mission-context/spec-candidates.js +164 -0
- package/server/dist/core/mission-context/spec-candidates.js.map +1 -0
- package/server/dist/core/mission-context/test-evidence.d.ts +14 -0
- package/server/dist/core/mission-context/test-evidence.d.ts.map +1 -0
- package/server/dist/core/mission-context/test-evidence.js +53 -0
- package/server/dist/core/mission-context/test-evidence.js.map +1 -0
- package/server/dist/core/mission-context/tests-diff.d.ts +68 -0
- package/server/dist/core/mission-context/tests-diff.d.ts.map +1 -0
- package/server/dist/core/mission-context/tests-diff.js +151 -0
- package/server/dist/core/mission-context/tests-diff.js.map +1 -0
- package/server/dist/core/mission-context/traceability.d.ts +58 -0
- package/server/dist/core/mission-context/traceability.d.ts.map +1 -0
- package/server/dist/core/mission-context/traceability.js +168 -0
- package/server/dist/core/mission-context/traceability.js.map +1 -0
- package/server/dist/core/mission-context/types-slice2.d.ts +192 -0
- package/server/dist/core/mission-context/types-slice2.d.ts.map +1 -0
- package/server/dist/core/mission-context/types-slice2.js +15 -0
- package/server/dist/core/mission-context/types-slice2.js.map +1 -0
- package/server/dist/core/mission-context/types-slice3.d.ts +84 -0
- package/server/dist/core/mission-context/types-slice3.d.ts.map +1 -0
- package/server/dist/core/mission-context/types-slice3.js +24 -0
- package/server/dist/core/mission-context/types-slice3.js.map +1 -0
- package/server/dist/core/mission-context/types.d.ts +198 -0
- package/server/dist/core/mission-context/types.d.ts.map +1 -0
- package/server/dist/core/mission-context/types.js +44 -0
- package/server/dist/core/mission-context/types.js.map +1 -0
- package/server/dist/core/mission-context/worktree-roots.d.ts +103 -0
- package/server/dist/core/mission-context/worktree-roots.d.ts.map +1 -0
- package/server/dist/core/mission-context/worktree-roots.js +201 -0
- package/server/dist/core/mission-context/worktree-roots.js.map +1 -0
- package/server/dist/core/model-tier-config-reader.d.ts +16 -0
- package/server/dist/core/model-tier-config-reader.d.ts.map +1 -0
- package/server/dist/core/model-tier-config-reader.js +87 -0
- package/server/dist/core/model-tier-config-reader.js.map +1 -0
- package/server/dist/core/normalize-fs-path.d.ts +2 -0
- package/server/dist/core/normalize-fs-path.d.ts.map +1 -0
- package/server/dist/core/normalize-fs-path.js +31 -0
- package/server/dist/core/normalize-fs-path.js.map +1 -0
- package/server/dist/core/parameter-resolver.d.ts +32 -0
- package/server/dist/core/parameter-resolver.d.ts.map +1 -0
- package/server/dist/core/parameter-resolver.js +300 -0
- package/server/dist/core/parameter-resolver.js.map +1 -0
- package/server/dist/core/path-guard.d.ts +40 -0
- package/server/dist/core/path-guard.d.ts.map +1 -0
- package/server/dist/core/path-guard.js +147 -0
- package/server/dist/core/path-guard.js.map +1 -0
- package/server/dist/core/pr-status.d.ts +47 -0
- package/server/dist/core/pr-status.d.ts.map +1 -0
- package/server/dist/core/pr-status.js +157 -0
- package/server/dist/core/pr-status.js.map +1 -0
- package/server/dist/core/preview-child-lifecycle.d.ts +77 -0
- package/server/dist/core/preview-child-lifecycle.d.ts.map +1 -0
- package/server/dist/core/preview-child-lifecycle.js +223 -0
- package/server/dist/core/preview-child-lifecycle.js.map +1 -0
- package/server/dist/core/preview-coherence.d.ts +59 -0
- package/server/dist/core/preview-coherence.d.ts.map +1 -0
- package/server/dist/core/preview-coherence.js +66 -0
- package/server/dist/core/preview-coherence.js.map +1 -0
- package/server/dist/core/preview-session-manager.d.ts +86 -0
- package/server/dist/core/preview-session-manager.d.ts.map +1 -0
- package/server/dist/core/preview-session-manager.js +303 -0
- package/server/dist/core/preview-session-manager.js.map +1 -0
- package/server/dist/core/preview-win32-spawn.d.ts +11 -0
- package/server/dist/core/preview-win32-spawn.d.ts.map +1 -0
- package/server/dist/core/preview-win32-spawn.js +45 -0
- package/server/dist/core/preview-win32-spawn.js.map +1 -0
- package/server/dist/core/profile-loader.d.ts +65 -0
- package/server/dist/core/profile-loader.d.ts.map +1 -0
- package/server/dist/core/profile-loader.js +125 -0
- package/server/dist/core/profile-loader.js.map +1 -0
- package/server/dist/core/project-actions-loader.d.ts +103 -0
- package/server/dist/core/project-actions-loader.d.ts.map +1 -0
- package/server/dist/core/project-actions-loader.js +161 -0
- package/server/dist/core/project-actions-loader.js.map +1 -0
- package/server/dist/core/project-manager.d.ts +110 -0
- package/server/dist/core/project-manager.d.ts.map +1 -0
- package/server/dist/core/project-manager.js +339 -0
- package/server/dist/core/project-manager.js.map +1 -0
- package/server/dist/core/project-registry-io.d.ts +64 -0
- package/server/dist/core/project-registry-io.d.ts.map +1 -0
- package/server/dist/core/project-registry-io.js +194 -0
- package/server/dist/core/project-registry-io.js.map +1 -0
- package/server/dist/core/readiness-probe.d.ts +89 -0
- package/server/dist/core/readiness-probe.d.ts.map +1 -0
- package/server/dist/core/readiness-probe.js +216 -0
- package/server/dist/core/readiness-probe.js.map +1 -0
- package/server/dist/core/run-config-reader.d.ts +35 -0
- package/server/dist/core/run-config-reader.d.ts.map +1 -0
- package/server/dist/core/run-config-reader.js +362 -0
- package/server/dist/core/run-config-reader.js.map +1 -0
- package/server/dist/core/run-data-join.d.ts +60 -0
- package/server/dist/core/run-data-join.d.ts.map +1 -0
- package/server/dist/core/run-data-join.js +264 -0
- package/server/dist/core/run-data-join.js.map +1 -0
- package/server/dist/core/run-data-types.d.ts +126 -0
- package/server/dist/core/run-data-types.d.ts.map +1 -0
- package/server/dist/core/run-data-types.js +25 -0
- package/server/dist/core/run-data-types.js.map +1 -0
- package/server/dist/core/run-loop-state-reader.d.ts +27 -0
- package/server/dist/core/run-loop-state-reader.d.ts.map +1 -0
- package/server/dist/core/run-loop-state-reader.js +79 -0
- package/server/dist/core/run-loop-state-reader.js.map +1 -0
- package/server/dist/core/sdk-sessions-merge.d.ts +60 -0
- package/server/dist/core/sdk-sessions-merge.d.ts.map +1 -0
- package/server/dist/core/sdk-sessions-merge.js +220 -0
- package/server/dist/core/sdk-sessions-merge.js.map +1 -0
- package/server/dist/core/sdk-sessions-store.d.ts +261 -0
- package/server/dist/core/sdk-sessions-store.d.ts.map +1 -0
- package/server/dist/core/sdk-sessions-store.js +315 -0
- package/server/dist/core/sdk-sessions-store.js.map +1 -0
- package/server/dist/core/sdk-sessions-validate.d.ts +9 -0
- package/server/dist/core/sdk-sessions-validate.d.ts.map +1 -0
- package/server/dist/core/sdk-sessions-validate.js +237 -0
- package/server/dist/core/sdk-sessions-validate.js.map +1 -0
- package/server/dist/core/session-jsonl-io.d.ts +35 -0
- package/server/dist/core/session-jsonl-io.d.ts.map +1 -0
- package/server/dist/core/session-jsonl-io.js +128 -0
- package/server/dist/core/session-jsonl-io.js.map +1 -0
- package/server/dist/core/session-parser.d.ts +81 -0
- package/server/dist/core/session-parser.d.ts.map +1 -0
- package/server/dist/core/session-parser.js +168 -0
- package/server/dist/core/session-parser.js.map +1 -0
- package/server/dist/core/session-watcher-debug.d.ts +7 -0
- package/server/dist/core/session-watcher-debug.d.ts.map +1 -0
- package/server/dist/core/session-watcher-debug.js +31 -0
- package/server/dist/core/session-watcher-debug.js.map +1 -0
- package/server/dist/core/session-watcher.d.ts +101 -0
- package/server/dist/core/session-watcher.d.ts.map +1 -0
- package/server/dist/core/session-watcher.js +226 -0
- package/server/dist/core/session-watcher.js.map +1 -0
- package/server/dist/core/shell-quote.d.ts +5 -0
- package/server/dist/core/shell-quote.d.ts.map +1 -0
- package/server/dist/core/shell-quote.js +49 -0
- package/server/dist/core/shell-quote.js.map +1 -0
- package/server/dist/core/task-editability.d.ts +22 -0
- package/server/dist/core/task-editability.d.ts.map +1 -0
- package/server/dist/core/task-editability.js +34 -0
- package/server/dist/core/task-editability.js.map +1 -0
- package/server/dist/core/terminal-prompt-detect.d.ts +7 -0
- package/server/dist/core/terminal-prompt-detect.d.ts.map +1 -0
- package/server/dist/core/terminal-prompt-detect.js +128 -0
- package/server/dist/core/terminal-prompt-detect.js.map +1 -0
- package/server/dist/core/tests-gate.d.ts +23 -0
- package/server/dist/core/tests-gate.d.ts.map +1 -0
- package/server/dist/core/tests-gate.js +92 -0
- package/server/dist/core/tests-gate.js.map +1 -0
- package/server/dist/core/triage-amend.d.ts +33 -0
- package/server/dist/core/triage-amend.d.ts.map +1 -0
- package/server/dist/core/triage-amend.js +109 -0
- package/server/dist/core/triage-amend.js.map +1 -0
- package/server/dist/core/triage-board-read.d.ts +37 -0
- package/server/dist/core/triage-board-read.d.ts.map +1 -0
- package/server/dist/core/triage-board-read.js +148 -0
- package/server/dist/core/triage-board-read.js.map +1 -0
- package/server/dist/core/triage-cli-runner.d.ts +61 -0
- package/server/dist/core/triage-cli-runner.d.ts.map +1 -0
- package/server/dist/core/triage-cli-runner.js +92 -0
- package/server/dist/core/triage-cli-runner.js.map +1 -0
- package/server/dist/core/triage-compose.d.ts +33 -0
- package/server/dist/core/triage-compose.d.ts.map +1 -0
- package/server/dist/core/triage-compose.js +51 -0
- package/server/dist/core/triage-compose.js.map +1 -0
- package/server/dist/core/triage-contract.d.ts +18 -0
- package/server/dist/core/triage-contract.d.ts.map +1 -0
- package/server/dist/core/triage-contract.js +45 -0
- package/server/dist/core/triage-contract.js.map +1 -0
- package/server/dist/core/triage-defer.d.ts +36 -0
- package/server/dist/core/triage-defer.d.ts.map +1 -0
- package/server/dist/core/triage-defer.js +117 -0
- package/server/dist/core/triage-defer.js.map +1 -0
- package/server/dist/core/triage-enrich.d.ts +31 -0
- package/server/dist/core/triage-enrich.d.ts.map +1 -0
- package/server/dist/core/triage-enrich.js +127 -0
- package/server/dist/core/triage-enrich.js.map +1 -0
- package/server/dist/core/triage-lock.d.ts +12 -0
- package/server/dist/core/triage-lock.d.ts.map +1 -0
- package/server/dist/core/triage-lock.js +41 -0
- package/server/dist/core/triage-lock.js.map +1 -0
- package/server/dist/core/triage-origin.d.ts +52 -0
- package/server/dist/core/triage-origin.d.ts.map +1 -0
- package/server/dist/core/triage-origin.js +0 -0
- package/server/dist/core/triage-origin.js.map +1 -0
- package/server/dist/core/triage-paths.d.ts +25 -0
- package/server/dist/core/triage-paths.d.ts.map +1 -0
- package/server/dist/core/triage-paths.js +125 -0
- package/server/dist/core/triage-paths.js.map +1 -0
- package/server/dist/core/triage-raw.d.ts +33 -0
- package/server/dist/core/triage-raw.d.ts.map +1 -0
- package/server/dist/core/triage-raw.js +66 -0
- package/server/dist/core/triage-raw.js.map +1 -0
- package/server/dist/core/triage-store.d.ts +42 -0
- package/server/dist/core/triage-store.d.ts.map +1 -0
- package/server/dist/core/triage-store.js +268 -0
- package/server/dist/core/triage-store.js.map +1 -0
- package/server/dist/core/triage-validation.d.ts +58 -0
- package/server/dist/core/triage-validation.d.ts.map +1 -0
- package/server/dist/core/triage-validation.js +198 -0
- package/server/dist/core/triage-validation.js.map +1 -0
- package/server/dist/core/win32-spawn.d.ts +29 -0
- package/server/dist/core/win32-spawn.d.ts.map +1 -0
- package/server/dist/core/win32-spawn.js +271 -0
- package/server/dist/core/win32-spawn.js.map +1 -0
- package/server/dist/external/__tests__/api-contract-probes.d.ts +49 -0
- package/server/dist/external/__tests__/api-contract-probes.d.ts.map +1 -0
- package/server/dist/external/__tests__/api-contract-probes.js +295 -0
- package/server/dist/external/__tests__/api-contract-probes.js.map +1 -0
- package/server/dist/external/_lead-fields-tag-filter-harness.d.ts +7 -0
- package/server/dist/external/_lead-fields-tag-filter-harness.d.ts.map +1 -0
- package/server/dist/external/_lead-fields-tag-filter-harness.js +41 -0
- package/server/dist/external/_lead-fields-tag-filter-harness.js.map +1 -0
- package/server/dist/external/_routes-edit-fields-harness.d.ts +8 -0
- package/server/dist/external/_routes-edit-fields-harness.d.ts.map +1 -0
- package/server/dist/external/_routes-edit-fields-harness.js +49 -0
- package/server/dist/external/_routes-edit-fields-harness.js.map +1 -0
- package/server/dist/external/_shared/helpers.d.ts +143 -0
- package/server/dist/external/_shared/helpers.d.ts.map +1 -0
- package/server/dist/external/_shared/helpers.js +231 -0
- package/server/dist/external/_shared/helpers.js.map +1 -0
- package/server/dist/external/actions/_helpers.d.ts +15 -0
- package/server/dist/external/actions/_helpers.d.ts.map +1 -0
- package/server/dist/external/actions/_helpers.js +48 -0
- package/server/dist/external/actions/_helpers.js.map +1 -0
- package/server/dist/external/actions/get.d.ts +8 -0
- package/server/dist/external/actions/get.d.ts.map +1 -0
- package/server/dist/external/actions/get.js +96 -0
- package/server/dist/external/actions/get.js.map +1 -0
- package/server/dist/external/actions/routes.d.ts +9 -0
- package/server/dist/external/actions/routes.d.ts.map +1 -0
- package/server/dist/external/actions/routes.js +33 -0
- package/server/dist/external/actions/routes.js.map +1 -0
- package/server/dist/external/actions/stub.d.ts +6 -0
- package/server/dist/external/actions/stub.d.ts.map +1 -0
- package/server/dist/external/actions/stub.js +51 -0
- package/server/dist/external/actions/stub.js.map +1 -0
- package/server/dist/external/actions/upload-delete.d.ts +6 -0
- package/server/dist/external/actions/upload-delete.d.ts.map +1 -0
- package/server/dist/external/actions/upload-delete.js +46 -0
- package/server/dist/external/actions/upload-delete.js.map +1 -0
- package/server/dist/external/actions/upload.d.ts +6 -0
- package/server/dist/external/actions/upload.d.ts.map +1 -0
- package/server/dist/external/actions/upload.js +141 -0
- package/server/dist/external/actions/upload.js.map +1 -0
- package/server/dist/external/compliance/routes.d.ts +9 -0
- package/server/dist/external/compliance/routes.d.ts.map +1 -0
- package/server/dist/external/compliance/routes.js +46 -0
- package/server/dist/external/compliance/routes.js.map +1 -0
- package/server/dist/external/design-review/__tests__/_helpers.d.ts +16 -0
- package/server/dist/external/design-review/__tests__/_helpers.d.ts.map +1 -0
- package/server/dist/external/design-review/__tests__/_helpers.js +92 -0
- package/server/dist/external/design-review/__tests__/_helpers.js.map +1 -0
- package/server/dist/external/design-review/feedback-write.d.ts +7 -0
- package/server/dist/external/design-review/feedback-write.d.ts.map +1 -0
- package/server/dist/external/design-review/feedback-write.js +126 -0
- package/server/dist/external/design-review/feedback-write.js.map +1 -0
- package/server/dist/external/design-review/gate.d.ts +11 -0
- package/server/dist/external/design-review/gate.d.ts.map +1 -0
- package/server/dist/external/design-review/gate.js +39 -0
- package/server/dist/external/design-review/gate.js.map +1 -0
- package/server/dist/external/design-review/routes.d.ts +9 -0
- package/server/dist/external/design-review/routes.d.ts.map +1 -0
- package/server/dist/external/design-review/routes.js +25 -0
- package/server/dist/external/design-review/routes.js.map +1 -0
- package/server/dist/external/design-review/serve.d.ts +10 -0
- package/server/dist/external/design-review/serve.d.ts.map +1 -0
- package/server/dist/external/design-review/serve.js +184 -0
- package/server/dist/external/design-review/serve.js.map +1 -0
- package/server/dist/external/events/routes.d.ts +16 -0
- package/server/dist/external/events/routes.d.ts.map +1 -0
- package/server/dist/external/events/routes.js +46 -0
- package/server/dist/external/events/routes.js.map +1 -0
- package/server/dist/external/file/_helpers.d.ts +62 -0
- package/server/dist/external/file/_helpers.d.ts.map +1 -0
- package/server/dist/external/file/_helpers.js +146 -0
- package/server/dist/external/file/_helpers.js.map +1 -0
- package/server/dist/external/file/routes.d.ts +7 -0
- package/server/dist/external/file/routes.d.ts.map +1 -0
- package/server/dist/external/file/routes.js +122 -0
- package/server/dist/external/file/routes.js.map +1 -0
- package/server/dist/external/file/write.d.ts +20 -0
- package/server/dist/external/file/write.d.ts.map +1 -0
- package/server/dist/external/file/write.js +172 -0
- package/server/dist/external/file/write.js.map +1 -0
- package/server/dist/external/inbox/_cache.d.ts +48 -0
- package/server/dist/external/inbox/_cache.d.ts.map +1 -0
- package/server/dist/external/inbox/_cache.js +46 -0
- package/server/dist/external/inbox/_cache.js.map +1 -0
- package/server/dist/external/inbox/_derive.d.ts +56 -0
- package/server/dist/external/inbox/_derive.d.ts.map +1 -0
- package/server/dist/external/inbox/_derive.js +231 -0
- package/server/dist/external/inbox/_derive.js.map +1 -0
- package/server/dist/external/inbox/routes.d.ts +13 -0
- package/server/dist/external/inbox/routes.d.ts.map +1 -0
- package/server/dist/external/inbox/routes.js +59 -0
- package/server/dist/external/inbox/routes.js.map +1 -0
- package/server/dist/external/launch/_helpers.d.ts +17 -0
- package/server/dist/external/launch/_helpers.d.ts.map +1 -0
- package/server/dist/external/launch/_helpers.js +25 -0
- package/server/dist/external/launch/_helpers.js.map +1 -0
- package/server/dist/external/launch/action-substitution-branch.d.ts +11 -0
- package/server/dist/external/launch/action-substitution-branch.d.ts.map +1 -0
- package/server/dist/external/launch/action-substitution-branch.js +112 -0
- package/server/dist/external/launch/action-substitution-branch.js.map +1 -0
- package/server/dist/external/launch/campaign-branch.d.ts +12 -0
- package/server/dist/external/launch/campaign-branch.d.ts.map +1 -0
- package/server/dist/external/launch/campaign-branch.js +95 -0
- package/server/dist/external/launch/campaign-branch.js.map +1 -0
- package/server/dist/external/launch/campaign-step-branch.d.ts +12 -0
- package/server/dist/external/launch/campaign-step-branch.d.ts.map +1 -0
- package/server/dist/external/launch/campaign-step-branch.js +108 -0
- package/server/dist/external/launch/campaign-step-branch.js.map +1 -0
- package/server/dist/external/launch/legacy-fallback-branch.d.ts +12 -0
- package/server/dist/external/launch/legacy-fallback-branch.d.ts.map +1 -0
- package/server/dist/external/launch/legacy-fallback-branch.js +29 -0
- package/server/dist/external/launch/legacy-fallback-branch.js.map +1 -0
- package/server/dist/external/launch/master-run-branch.d.ts +24 -0
- package/server/dist/external/launch/master-run-branch.d.ts.map +1 -0
- package/server/dist/external/launch/master-run-branch.js +168 -0
- package/server/dist/external/launch/master-run-branch.js.map +1 -0
- package/server/dist/external/launch/parse-body.d.ts +46 -0
- package/server/dist/external/launch/parse-body.d.ts.map +1 -0
- package/server/dist/external/launch/parse-body.js +115 -0
- package/server/dist/external/launch/parse-body.js.map +1 -0
- package/server/dist/external/launch/phase-task-branch.d.ts +18 -0
- package/server/dist/external/launch/phase-task-branch.d.ts.map +1 -0
- package/server/dist/external/launch/phase-task-branch.js +170 -0
- package/server/dist/external/launch/phase-task-branch.js.map +1 -0
- package/server/dist/external/launch/routes.d.ts +23 -0
- package/server/dist/external/launch/routes.d.ts.map +1 -0
- package/server/dist/external/launch/routes.js +198 -0
- package/server/dist/external/launch/routes.js.map +1 -0
- package/server/dist/external/media/_helpers.d.ts +32 -0
- package/server/dist/external/media/_helpers.d.ts.map +1 -0
- package/server/dist/external/media/_helpers.js +77 -0
- package/server/dist/external/media/_helpers.js.map +1 -0
- package/server/dist/external/media/routes.d.ts +7 -0
- package/server/dist/external/media/routes.d.ts.map +1 -0
- package/server/dist/external/media/routes.js +120 -0
- package/server/dist/external/media/routes.js.map +1 -0
- package/server/dist/external/mission-context/facts-slice3.d.ts +22 -0
- package/server/dist/external/mission-context/facts-slice3.d.ts.map +1 -0
- package/server/dist/external/mission-context/facts-slice3.js +143 -0
- package/server/dist/external/mission-context/facts-slice3.js.map +1 -0
- package/server/dist/external/mission-context/facts.d.ts +44 -0
- package/server/dist/external/mission-context/facts.d.ts.map +1 -0
- package/server/dist/external/mission-context/facts.js +109 -0
- package/server/dist/external/mission-context/facts.js.map +1 -0
- package/server/dist/external/mission-context/routes.d.ts +83 -0
- package/server/dist/external/mission-context/routes.d.ts.map +1 -0
- package/server/dist/external/mission-context/routes.js +226 -0
- package/server/dist/external/mission-context/routes.js.map +1 -0
- package/server/dist/external/mission-context/test-harness.d.ts +62 -0
- package/server/dist/external/mission-context/test-harness.d.ts.map +1 -0
- package/server/dist/external/mission-context/test-harness.js +121 -0
- package/server/dist/external/mission-context/test-harness.js.map +1 -0
- package/server/dist/external/mission-context/wire.d.ts +12 -0
- package/server/dist/external/mission-context/wire.d.ts.map +1 -0
- package/server/dist/external/mission-context/wire.js +62 -0
- package/server/dist/external/mission-context/wire.js.map +1 -0
- package/server/dist/external/model-config/routes.d.ts +9 -0
- package/server/dist/external/model-config/routes.d.ts.map +1 -0
- package/server/dist/external/model-config/routes.js +18 -0
- package/server/dist/external/model-config/routes.js.map +1 -0
- package/server/dist/external/org/__tests__/fixtures/lock-race-worker.d.ts +2 -0
- package/server/dist/external/org/__tests__/fixtures/lock-race-worker.d.ts.map +1 -0
- package/server/dist/external/org/__tests__/fixtures/lock-race-worker.js +67 -0
- package/server/dist/external/org/__tests__/fixtures/lock-race-worker.js.map +1 -0
- package/server/dist/external/org/_helpers.d.ts +67 -0
- package/server/dist/external/org/_helpers.d.ts.map +1 -0
- package/server/dist/external/org/_helpers.js +146 -0
- package/server/dist/external/org/_helpers.js.map +1 -0
- package/server/dist/external/org/beat-register-release-audit.d.ts +17 -0
- package/server/dist/external/org/beat-register-release-audit.d.ts.map +1 -0
- package/server/dist/external/org/beat-register-release-audit.js +96 -0
- package/server/dist/external/org/beat-register-release-audit.js.map +1 -0
- package/server/dist/external/org/beat-register-release-core.d.ts +50 -0
- package/server/dist/external/org/beat-register-release-core.d.ts.map +1 -0
- package/server/dist/external/org/beat-register-release-core.js +183 -0
- package/server/dist/external/org/beat-register-release-core.js.map +1 -0
- package/server/dist/external/org/beat-register-release.d.ts +13 -0
- package/server/dist/external/org/beat-register-release.d.ts.map +1 -0
- package/server/dist/external/org/beat-register-release.js +81 -0
- package/server/dist/external/org/beat-register-release.js.map +1 -0
- package/server/dist/external/org/beat-register.d.ts +100 -0
- package/server/dist/external/org/beat-register.d.ts.map +1 -0
- package/server/dist/external/org/beat-register.js +198 -0
- package/server/dist/external/org/beat-register.js.map +1 -0
- package/server/dist/external/org/countersign.d.ts +8 -0
- package/server/dist/external/org/countersign.d.ts.map +1 -0
- package/server/dist/external/org/countersign.js +157 -0
- package/server/dist/external/org/countersign.js.map +1 -0
- package/server/dist/external/org/cron.d.ts +22 -0
- package/server/dist/external/org/cron.d.ts.map +1 -0
- package/server/dist/external/org/cron.js +59 -0
- package/server/dist/external/org/cron.js.map +1 -0
- package/server/dist/external/org/decisions-lock.d.ts +68 -0
- package/server/dist/external/org/decisions-lock.d.ts.map +1 -0
- package/server/dist/external/org/decisions-lock.js +209 -0
- package/server/dist/external/org/decisions-lock.js.map +1 -0
- package/server/dist/external/org/file-read.d.ts +14 -0
- package/server/dist/external/org/file-read.d.ts.map +1 -0
- package/server/dist/external/org/file-read.js +80 -0
- package/server/dist/external/org/file-read.js.map +1 -0
- package/server/dist/external/org/file-write.d.ts +14 -0
- package/server/dist/external/org/file-write.d.ts.map +1 -0
- package/server/dist/external/org/file-write.js +205 -0
- package/server/dist/external/org/file-write.js.map +1 -0
- package/server/dist/external/org/last-run.d.ts +28 -0
- package/server/dist/external/org/last-run.d.ts.map +1 -0
- package/server/dist/external/org/last-run.js +137 -0
- package/server/dist/external/org/last-run.js.map +1 -0
- package/server/dist/external/org/org-chart-lookup.d.ts +16 -0
- package/server/dist/external/org/org-chart-lookup.d.ts.map +1 -0
- package/server/dist/external/org/org-chart-lookup.js +100 -0
- package/server/dist/external/org/org-chart-lookup.js.map +1 -0
- package/server/dist/external/org/org-chart.d.ts +25 -0
- package/server/dist/external/org/org-chart.d.ts.map +1 -0
- package/server/dist/external/org/org-chart.js +110 -0
- package/server/dist/external/org/org-chart.js.map +1 -0
- package/server/dist/external/org/routes.d.ts +12 -0
- package/server/dist/external/org/routes.d.ts.map +1 -0
- package/server/dist/external/org/routes.js +90 -0
- package/server/dist/external/org/routes.js.map +1 -0
- package/server/dist/external/org/usage.d.ts +24 -0
- package/server/dist/external/org/usage.d.ts.map +1 -0
- package/server/dist/external/org/usage.js +110 -0
- package/server/dist/external/org/usage.js.map +1 -0
- package/server/dist/external/pr-status/routes.d.ts +7 -0
- package/server/dist/external/pr-status/routes.d.ts.map +1 -0
- package/server/dist/external/pr-status/routes.js +37 -0
- package/server/dist/external/pr-status/routes.js.map +1 -0
- package/server/dist/external/preview/routes.d.ts +10 -0
- package/server/dist/external/preview/routes.d.ts.map +1 -0
- package/server/dist/external/preview/routes.js +71 -0
- package/server/dist/external/preview/routes.js.map +1 -0
- package/server/dist/external/routes.d.ts +106 -0
- package/server/dist/external/routes.d.ts.map +1 -0
- package/server/dist/external/routes.js +162 -0
- package/server/dist/external/routes.js.map +1 -0
- package/server/dist/external/run-config/routes.d.ts +9 -0
- package/server/dist/external/run-config/routes.d.ts.map +1 -0
- package/server/dist/external/run-config/routes.js +55 -0
- package/server/dist/external/run-config/routes.js.map +1 -0
- package/server/dist/external/runs/routes.d.ts +16 -0
- package/server/dist/external/runs/routes.d.ts.map +1 -0
- package/server/dist/external/runs/routes.js +69 -0
- package/server/dist/external/runs/routes.js.map +1 -0
- package/server/dist/external/tasks/_phase-helpers.d.ts +37 -0
- package/server/dist/external/tasks/_phase-helpers.d.ts.map +1 -0
- package/server/dist/external/tasks/_phase-helpers.js +101 -0
- package/server/dist/external/tasks/_phase-helpers.js.map +1 -0
- package/server/dist/external/tasks/create.d.ts +12 -0
- package/server/dist/external/tasks/create.d.ts.map +1 -0
- package/server/dist/external/tasks/create.js +139 -0
- package/server/dist/external/tasks/create.js.map +1 -0
- package/server/dist/external/tasks/lifecycle.d.ts +12 -0
- package/server/dist/external/tasks/lifecycle.d.ts.map +1 -0
- package/server/dist/external/tasks/lifecycle.js +231 -0
- package/server/dist/external/tasks/lifecycle.js.map +1 -0
- package/server/dist/external/tasks/list-get.d.ts +11 -0
- package/server/dist/external/tasks/list-get.d.ts.map +1 -0
- package/server/dist/external/tasks/list-get.js +50 -0
- package/server/dist/external/tasks/list-get.js.map +1 -0
- package/server/dist/external/tasks/patch.d.ts +12 -0
- package/server/dist/external/tasks/patch.d.ts.map +1 -0
- package/server/dist/external/tasks/patch.js +192 -0
- package/server/dist/external/tasks/patch.js.map +1 -0
- package/server/dist/external/tasks/routes.d.ts +18 -0
- package/server/dist/external/tasks/routes.d.ts.map +1 -0
- package/server/dist/external/tasks/routes.js +49 -0
- package/server/dist/external/tasks/routes.js.map +1 -0
- package/server/dist/external/transcript/routes.d.ts +12 -0
- package/server/dist/external/transcript/routes.d.ts.map +1 -0
- package/server/dist/external/transcript/routes.js +160 -0
- package/server/dist/external/transcript/routes.js.map +1 -0
- package/server/dist/external/tree/routes.d.ts +7 -0
- package/server/dist/external/tree/routes.d.ts.map +1 -0
- package/server/dist/external/tree/routes.js +96 -0
- package/server/dist/external/tree/routes.js.map +1 -0
- package/server/dist/index.d.ts +3 -0
- package/server/dist/index.d.ts.map +1 -0
- package/server/dist/index.js +774 -0
- package/server/dist/index.js.map +1 -0
- package/server/dist/lib/bind-errors.d.ts +18 -0
- package/server/dist/lib/bind-errors.d.ts.map +1 -0
- package/server/dist/lib/bind-errors.js +43 -0
- package/server/dist/lib/bind-errors.js.map +1 -0
- package/server/dist/lib/resolveHonoHost.d.ts +3 -0
- package/server/dist/lib/resolveHonoHost.d.ts.map +1 -0
- package/server/dist/lib/resolveHonoHost.js +34 -0
- package/server/dist/lib/resolveHonoHost.js.map +1 -0
- package/server/dist/lib/resolveNetworkProfile.d.ts +28 -0
- package/server/dist/lib/resolveNetworkProfile.d.ts.map +1 -0
- package/server/dist/lib/resolveNetworkProfile.js +42 -0
- package/server/dist/lib/resolveNetworkProfile.js.map +1 -0
- package/server/dist/lib/resolveTailscaleIp.d.ts +26 -0
- package/server/dist/lib/resolveTailscaleIp.d.ts.map +1 -0
- package/server/dist/lib/resolveTailscaleIp.js +61 -0
- package/server/dist/lib/resolveTailscaleIp.js.map +1 -0
- package/server/dist/lib/resolveTrustedOrigins.d.ts +9 -0
- package/server/dist/lib/resolveTrustedOrigins.d.ts.map +1 -0
- package/server/dist/lib/resolveTrustedOrigins.js +154 -0
- package/server/dist/lib/resolveTrustedOrigins.js.map +1 -0
- package/server/dist/middleware/error-handler.d.ts +8 -0
- package/server/dist/middleware/error-handler.d.ts.map +1 -0
- package/server/dist/middleware/error-handler.js +75 -0
- package/server/dist/middleware/error-handler.js.map +1 -0
- package/server/dist/middleware/logger.d.ts +3 -0
- package/server/dist/middleware/logger.d.ts.map +1 -0
- package/server/dist/middleware/logger.js +13 -0
- package/server/dist/middleware/logger.js.map +1 -0
- package/server/dist/routes/_triage-api-harness.d.ts +16 -0
- package/server/dist/routes/_triage-api-harness.d.ts.map +1 -0
- package/server/dist/routes/_triage-api-harness.js +89 -0
- package/server/dist/routes/_triage-api-harness.js.map +1 -0
- package/server/dist/routes/campaigns.d.ts +26 -0
- package/server/dist/routes/campaigns.d.ts.map +1 -0
- package/server/dist/routes/campaigns.js +237 -0
- package/server/dist/routes/campaigns.js.map +1 -0
- package/server/dist/routes/diagnostics.d.ts +84 -0
- package/server/dist/routes/diagnostics.d.ts.map +1 -0
- package/server/dist/routes/diagnostics.js +143 -0
- package/server/dist/routes/diagnostics.js.map +1 -0
- package/server/dist/routes/grade.d.ts +13 -0
- package/server/dist/routes/grade.d.ts.map +1 -0
- package/server/dist/routes/grade.js +45 -0
- package/server/dist/routes/grade.js.map +1 -0
- package/server/dist/routes/profiles.d.ts +25 -0
- package/server/dist/routes/profiles.d.ts.map +1 -0
- package/server/dist/routes/profiles.js +58 -0
- package/server/dist/routes/profiles.js.map +1 -0
- package/server/dist/routes/projects.d.ts +20 -0
- package/server/dist/routes/projects.d.ts.map +1 -0
- package/server/dist/routes/projects.js +105 -0
- package/server/dist/routes/projects.js.map +1 -0
- package/server/dist/routes/readiness.d.ts +11 -0
- package/server/dist/routes/readiness.d.ts.map +1 -0
- package/server/dist/routes/readiness.js +52 -0
- package/server/dist/routes/readiness.js.map +1 -0
- package/server/dist/routes/settings.d.ts +13 -0
- package/server/dist/routes/settings.d.ts.map +1 -0
- package/server/dist/routes/settings.js +69 -0
- package/server/dist/routes/settings.js.map +1 -0
- package/server/dist/routes/terminal-appearance.d.ts +7 -0
- package/server/dist/routes/terminal-appearance.d.ts.map +1 -0
- package/server/dist/routes/terminal-appearance.js +28 -0
- package/server/dist/routes/terminal-appearance.js.map +1 -0
- package/server/dist/routes/triage.d.ts +35 -0
- package/server/dist/routes/triage.d.ts.map +1 -0
- package/server/dist/routes/triage.js +496 -0
- package/server/dist/routes/triage.js.map +1 -0
- package/server/dist/terminal/backpressure-telemetry.d.ts +86 -0
- package/server/dist/terminal/backpressure-telemetry.d.ts.map +1 -0
- package/server/dist/terminal/backpressure-telemetry.js +158 -0
- package/server/dist/terminal/backpressure-telemetry.js.map +1 -0
- package/server/dist/terminal/boot-wipe.d.ts +47 -0
- package/server/dist/terminal/boot-wipe.d.ts.map +1 -0
- package/server/dist/terminal/boot-wipe.js +122 -0
- package/server/dist/terminal/boot-wipe.js.map +1 -0
- package/server/dist/terminal/headless-mirror.d.ts +139 -0
- package/server/dist/terminal/headless-mirror.d.ts.map +1 -0
- package/server/dist/terminal/headless-mirror.js +389 -0
- package/server/dist/terminal/headless-mirror.js.map +1 -0
- package/server/dist/terminal/headless-probe.d.ts +26 -0
- package/server/dist/terminal/headless-probe.d.ts.map +1 -0
- package/server/dist/terminal/headless-probe.js +99 -0
- package/server/dist/terminal/headless-probe.js.map +1 -0
- package/server/dist/terminal/idle-reaper.d.ts +47 -0
- package/server/dist/terminal/idle-reaper.d.ts.map +1 -0
- package/server/dist/terminal/idle-reaper.js +95 -0
- package/server/dist/terminal/idle-reaper.js.map +1 -0
- package/server/dist/terminal/image-paste.d.ts +60 -0
- package/server/dist/terminal/image-paste.d.ts.map +1 -0
- package/server/dist/terminal/image-paste.js +260 -0
- package/server/dist/terminal/image-paste.js.map +1 -0
- package/server/dist/terminal/pty-manager.d.ts +452 -0
- package/server/dist/terminal/pty-manager.d.ts.map +1 -0
- package/server/dist/terminal/pty-manager.js +1014 -0
- package/server/dist/terminal/pty-manager.js.map +1 -0
- package/server/dist/terminal/replay-snapshot.d.ts +25 -0
- package/server/dist/terminal/replay-snapshot.d.ts.map +1 -0
- package/server/dist/terminal/replay-snapshot.js +124 -0
- package/server/dist/terminal/replay-snapshot.js.map +1 -0
- package/server/dist/terminal/resync-gate.d.ts +20 -0
- package/server/dist/terminal/resync-gate.d.ts.map +1 -0
- package/server/dist/terminal/resync-gate.js +58 -0
- package/server/dist/terminal/resync-gate.js.map +1 -0
- package/server/dist/terminal/routes.d.ts +67 -0
- package/server/dist/terminal/routes.d.ts.map +1 -0
- package/server/dist/terminal/routes.js +455 -0
- package/server/dist/terminal/routes.js.map +1 -0
- package/server/dist/terminal/scrollback-store.d.ts +120 -0
- package/server/dist/terminal/scrollback-store.d.ts.map +1 -0
- package/server/dist/terminal/scrollback-store.js +572 -0
- package/server/dist/terminal/scrollback-store.js.map +1 -0
- package/server/dist/terminal/snapshot-preserve.d.ts +63 -0
- package/server/dist/terminal/snapshot-preserve.d.ts.map +1 -0
- package/server/dist/terminal/snapshot-preserve.js +116 -0
- package/server/dist/terminal/snapshot-preserve.js.map +1 -0
- package/server/dist/terminal/snapshot-store.d.ts +147 -0
- package/server/dist/terminal/snapshot-store.d.ts.map +1 -0
- package/server/dist/terminal/snapshot-store.js +439 -0
- package/server/dist/terminal/snapshot-store.js.map +1 -0
- package/server/dist/terminal/snapshot-tmp-sweep.d.ts +48 -0
- package/server/dist/terminal/snapshot-tmp-sweep.d.ts.map +1 -0
- package/server/dist/terminal/snapshot-tmp-sweep.js +141 -0
- package/server/dist/terminal/snapshot-tmp-sweep.js.map +1 -0
- package/server/dist/terminal/spawn-env.d.ts +46 -0
- package/server/dist/terminal/spawn-env.d.ts.map +1 -0
- package/server/dist/terminal/spawn-env.js +232 -0
- package/server/dist/terminal/spawn-env.js.map +1 -0
- package/server/dist/terminal/terminal-reset.d.ts +31 -0
- package/server/dist/terminal/terminal-reset.d.ts.map +1 -0
- package/server/dist/terminal/terminal-reset.js +43 -0
- package/server/dist/terminal/terminal-reset.js.map +1 -0
- package/server/dist/terminal/ws-heartbeat.d.ts +78 -0
- package/server/dist/terminal/ws-heartbeat.d.ts.map +1 -0
- package/server/dist/terminal/ws-heartbeat.js +164 -0
- package/server/dist/terminal/ws-heartbeat.js.map +1 -0
- package/server/dist/terminal/ws-upgrade-handler.d.ts +96 -0
- package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -0
- package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts +46 -0
- package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -0
- package/server/dist/terminal/ws-upgrade-handler.fixtures.js +126 -0
- package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -0
- package/server/dist/terminal/ws-upgrade-handler.js +518 -0
- package/server/dist/terminal/ws-upgrade-handler.js.map +1 -0
- package/server/dist/types/action-schema.d.ts +75 -0
- package/server/dist/types/action-schema.d.ts.map +1 -0
- package/server/dist/types/action-schema.js +32 -0
- package/server/dist/types/action-schema.js.map +1 -0
- package/server/dist/types/project.d.ts +72 -0
- package/server/dist/types/project.d.ts.map +1 -0
- package/server/dist/types/project.js +16 -0
- package/server/dist/types/project.js.map +1 -0
- package/server/dist/types/run-config-v2.d.ts +172 -0
- package/server/dist/types/run-config-v2.d.ts.map +1 -0
- package/server/dist/types/run-config-v2.js +169 -0
- package/server/dist/types/run-config-v2.js.map +1 -0
- package/server/dist/types/settings.d.ts +25 -0
- package/server/dist/types/settings.d.ts.map +1 -0
- package/server/dist/types/settings.js +12 -0
- package/server/dist/types/settings.js.map +1 -0
- package/server/dist/types/task.d.ts +55 -0
- package/server/dist/types/task.d.ts.map +1 -0
- package/server/dist/types/task.js +13 -0
- package/server/dist/types/task.js.map +1 -0
- package/server/dist/types/triage.d.ts +135 -0
- package/server/dist/types/triage.d.ts.map +1 -0
- package/server/dist/types/triage.js +15 -0
- package/server/dist/types/triage.js.map +1 -0
- package/server/package.json +43 -0
- package/server/profiles/PROFILE_SCHEMA_VERSION +1 -0
- package/server/profiles/README.md +27 -0
- package/server/profiles/python-plugin-monorepo.json +35 -0
- package/server/profiles/supabase-nextjs.json +253 -0
- package/server/profiles/vite-hono.json +92 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* core/mission-context/artifacts.ts — build the Spec · Requirement · Commit
|
|
3
|
+
* descriptors for a resolved iterate (CONTRACT §6, Slice-1 subset).
|
|
4
|
+
*
|
|
5
|
+
* Register: Mission is FOR NON-EXPERTS. Every `summary` here is written to be
|
|
6
|
+
* read by someone who does not know the codebase — it says what the thing MEANS,
|
|
7
|
+
* not which file it came from. The raw document is secondary (right panel,
|
|
8
|
+
* below the summary).
|
|
9
|
+
*
|
|
10
|
+
* The 5-state model is applied per artifact, and the distinction that matters:
|
|
11
|
+
* - `not_yet_created` — expected later in the lifecycle (mid-run commit).
|
|
12
|
+
* - `unavailable` — expected NOW but unresolvable (unreadable log, bad
|
|
13
|
+
* pointer). Renders a compact "currently unavailable".
|
|
14
|
+
* Collapsing those two would let a data-integrity fault read as "nothing
|
|
15
|
+
* happened yet", which is the exact lie the state model exists to prevent.
|
|
16
|
+
*
|
|
17
|
+
* Mid-run the Requirement artifact is `planned` impact ONLY — never labelled
|
|
18
|
+
* new/changed/technical before Finalize, because until then the run has not
|
|
19
|
+
* decided (§6 mid-run column).
|
|
20
|
+
*/
|
|
21
|
+
import { resolveFrList } from "./fold-map.js";
|
|
22
|
+
import { declaredSpecImpact, plannedImpactFromSpec } from "./planned-impact.js";
|
|
23
|
+
function plural(n, one, many) {
|
|
24
|
+
return `${n} ${n === 1 ? one : many}`;
|
|
25
|
+
}
|
|
26
|
+
export function buildSpecArtifact(input) {
|
|
27
|
+
if (input.documentId && input.title) {
|
|
28
|
+
return {
|
|
29
|
+
kind: "spec",
|
|
30
|
+
label: "Spec",
|
|
31
|
+
state: "available",
|
|
32
|
+
summary: input.intent ??
|
|
33
|
+
(input.fromWorktree
|
|
34
|
+
? "The plan this session is working to, as it stands right now."
|
|
35
|
+
: "The plan this change was built to."),
|
|
36
|
+
receipt: input.title,
|
|
37
|
+
detail: { type: "document", documentId: input.documentId, title: input.title },
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Denied ≠ missing. A guard rejection is an integrity signal and must show.
|
|
41
|
+
if (input.denied) {
|
|
42
|
+
return {
|
|
43
|
+
kind: "spec",
|
|
44
|
+
label: "Spec",
|
|
45
|
+
state: "unavailable",
|
|
46
|
+
summary: null,
|
|
47
|
+
receipt: null,
|
|
48
|
+
note: "The plan document could not be read safely.",
|
|
49
|
+
detail: null,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
kind: "spec",
|
|
54
|
+
label: "Spec",
|
|
55
|
+
state: "not_yet_created",
|
|
56
|
+
summary: null,
|
|
57
|
+
receipt: null,
|
|
58
|
+
detail: null,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
// Requirement
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
function requirementSummary(rows, confidence) {
|
|
65
|
+
if (rows.length === 0)
|
|
66
|
+
return null;
|
|
67
|
+
const names = rows.map((r) => r.name ?? r.displayFrId);
|
|
68
|
+
const lead = names.length <= 2 ? names.join(" and ") : `${names[0]} and ${names.length - 1} more`;
|
|
69
|
+
return confidence === "planned"
|
|
70
|
+
? `Expected to affect ${lead}.`
|
|
71
|
+
: `Changed ${lead} (${plural(rows.length, "requirement", "requirements")}).`;
|
|
72
|
+
}
|
|
73
|
+
export function buildRequirementArtifact(input) {
|
|
74
|
+
const { foldMap, events } = input;
|
|
75
|
+
// Direct builder consumers predate this signal; preserve their historical
|
|
76
|
+
// live-spec semantics while resolver callers always provide the fact.
|
|
77
|
+
const runLive = input.runLive ?? true;
|
|
78
|
+
// Prefer the per-run agent-doc when it actually carries FRs (rare but
|
|
79
|
+
// cleaner); otherwise fall back to work_completed (the common real path).
|
|
80
|
+
const eventRun = events.status === "found" ? events.run : null;
|
|
81
|
+
// `work_completed` is the only terminal source. The retained per-run summary
|
|
82
|
+
// is a bounded cache, so it may enrich old rows but must never make a live
|
|
83
|
+
// plan look recorded or override a completed event.
|
|
84
|
+
const rawAffected = eventRun?.affectedFrs ?? [];
|
|
85
|
+
const rawNew = eventRun?.newFrs ?? [];
|
|
86
|
+
const eventImpact = eventRun?.specImpact?.trim().toLowerCase() ?? null;
|
|
87
|
+
const plannedImpact = declaredSpecImpact(input.specText);
|
|
88
|
+
const specImpact = eventRun ? eventImpact : plannedImpact;
|
|
89
|
+
// A read failure is neither a live plan nor a completed record. Do this
|
|
90
|
+
// before consulting the iterate spec so a historical Mission cannot be
|
|
91
|
+
// described as merely planned when its terminal evidence is unreadable.
|
|
92
|
+
if (events.status === "unavailable") {
|
|
93
|
+
return {
|
|
94
|
+
kind: "requirement",
|
|
95
|
+
label: "Requirement",
|
|
96
|
+
state: "unavailable",
|
|
97
|
+
summary: null,
|
|
98
|
+
receipt: null,
|
|
99
|
+
note: "The run record could not be read.",
|
|
100
|
+
detail: null,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// Finalized the moment a durable record exists for this run; otherwise the
|
|
104
|
+
// run is still deciding, so anything we show is PLANNED.
|
|
105
|
+
const finalized = Boolean(eventRun);
|
|
106
|
+
// Mid-run there is no record — fall back to what the spec PLANS to touch, so
|
|
107
|
+
// a live iterate still shows a real Requirement (AC1) instead of a blank.
|
|
108
|
+
// The scan is SCOPED to the spec's affected-boundaries section; a
|
|
109
|
+
// document-wide scrape reported References and citations as impact.
|
|
110
|
+
const recorded = [...rawAffected, ...rawNew];
|
|
111
|
+
const usingPlanned = !finalized && runLive && recorded.length === 0 && specImpact !== "none";
|
|
112
|
+
const planned = usingPlanned
|
|
113
|
+
? plannedImpactFromSpec(input.specText)
|
|
114
|
+
: { frIds: [], prose: null };
|
|
115
|
+
const rows = resolveFrList(foldMap, usingPlanned ? planned.frIds : recorded);
|
|
116
|
+
const confidence = rows.length === 0 ? "unresolved" : usingPlanned ? "planned" : "finalized";
|
|
117
|
+
const lifecycle = finalized ? (specImpact === "none" ? "none" : "recorded") : !runLive ? "discovering" :
|
|
118
|
+
specImpact === "none" ? "none" : usingPlanned && (rows.length > 0 || planned.prose) ? "planned" : "discovering";
|
|
119
|
+
// Without a live worktree or terminal record, Mission knows the identity but
|
|
120
|
+
// cannot claim a plan or completion. Preserve that ambiguity explicitly.
|
|
121
|
+
if (!finalized && !runLive) {
|
|
122
|
+
return {
|
|
123
|
+
kind: "requirement",
|
|
124
|
+
label: "Requirement",
|
|
125
|
+
state: "available",
|
|
126
|
+
summary: "Discovering affected requirements.",
|
|
127
|
+
receipt: "discovering",
|
|
128
|
+
detail: { type: "requirements", confidence: "unresolved", lifecycle: "discovering", rows: [], specImpact: null, sourceDocument: input.sourceDocument ?? null },
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// Explicit NONE is authoritative. Stale ids in a producer payload must not
|
|
132
|
+
// turn a declared no-requirement change into a contradictory requirement row.
|
|
133
|
+
if (specImpact === "none") {
|
|
134
|
+
return {
|
|
135
|
+
kind: "requirement",
|
|
136
|
+
label: "Requirement",
|
|
137
|
+
state: "available",
|
|
138
|
+
summary: "No requirement changed.",
|
|
139
|
+
receipt: "no requirement change",
|
|
140
|
+
detail: { type: "requirements", confidence: finalized ? "finalized" : "unresolved", lifecycle: "none", rows: [], specImpact, sourceDocument: input.sourceDocument ?? null },
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
if (rows.length > 0) {
|
|
144
|
+
return {
|
|
145
|
+
kind: "requirement",
|
|
146
|
+
label: "Requirement",
|
|
147
|
+
state: "available",
|
|
148
|
+
summary: requirementSummary(rows, confidence),
|
|
149
|
+
receipt: rows.map((r) => r.displayFrId).join(", "),
|
|
150
|
+
detail: { type: "requirements", confidence, lifecycle, rows, specImpact, sourceDocument: input.sourceDocument ?? null },
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
// Mid-run with no resolvable FR id: carry the spec's own PLANNED-IMPACT prose
|
|
154
|
+
// rather than falling into a hidden state. AC1 requires a live iterate to
|
|
155
|
+
// show a non-empty Requirement, and an id-only model failed it SILENTLY for
|
|
156
|
+
// every spec that describes its impact in words (internal review, MEDIUM).
|
|
157
|
+
if (usingPlanned && planned.prose) {
|
|
158
|
+
return {
|
|
159
|
+
kind: "requirement",
|
|
160
|
+
label: "Requirement",
|
|
161
|
+
state: "available",
|
|
162
|
+
summary: `Planned impact — ${planned.prose}`,
|
|
163
|
+
receipt: "planned impact",
|
|
164
|
+
detail: { type: "requirements", confidence: "planned", lifecycle: "planned", rows: [], specImpact, sourceDocument: input.sourceDocument ?? null },
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
if (!finalized) {
|
|
168
|
+
return {
|
|
169
|
+
kind: "requirement",
|
|
170
|
+
label: "Requirement",
|
|
171
|
+
state: "available",
|
|
172
|
+
summary: "Discovering affected requirements.",
|
|
173
|
+
receipt: "discovering",
|
|
174
|
+
detail: { type: "requirements", confidence: "unresolved", lifecycle: "discovering", rows: [], specImpact: null, sourceDocument: input.sourceDocument ?? null },
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
kind: "requirement",
|
|
179
|
+
label: "Requirement",
|
|
180
|
+
state: "available",
|
|
181
|
+
summary: "Recorded requirement impact, but individual requirements could not be identified.",
|
|
182
|
+
receipt: "recorded impact",
|
|
183
|
+
detail: { type: "requirements", confidence: "unresolved", lifecycle: "recorded", rows: [], specImpact, sourceDocument: input.sourceDocument ?? null },
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/core/mission-context/artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SdkSessionsStore } from "../sdk-sessions-store.js";
|
|
2
|
+
import { type MissionContextAssociation } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Idempotent compare-and-set. Returns true ONLY when this call actually set the
|
|
5
|
+
* field — the caller then `await store.persist()`, which takes the
|
|
6
|
+
* proper-lockfile lock and 3-way merges (DO-NOT #6).
|
|
7
|
+
*
|
|
8
|
+
* Returns false (a silent no-op) for an unknown task, an already-associated
|
|
9
|
+
* task, or a malformed association.
|
|
10
|
+
*/
|
|
11
|
+
export declare function setMissionContextOnce(store: Pick<SdkSessionsStore, "get" | "patch">, taskId: string, association: MissionContextAssociation): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Roll back an association that was set in memory but FAILED to persist
|
|
14
|
+
* (external code review, openai HIGH, 2026-07-18).
|
|
15
|
+
*
|
|
16
|
+
* Without this the compare-and-set is a trap: `setMissionContextOnce` patches
|
|
17
|
+
* the in-memory task, `persist()` then throws (an ELOCKED from a concurrent
|
|
18
|
+
* instance is the realistic case), and every later poll sees a populated
|
|
19
|
+
* `missionContext` and skips the write forever. The association would never
|
|
20
|
+
* reach disk — reintroducing exactly the pruned-pointer data loss it exists to
|
|
21
|
+
* prevent, while looking healthy in memory.
|
|
22
|
+
*
|
|
23
|
+
* Only reverts when the field still holds the association WE set, so a
|
|
24
|
+
* concurrent writer's value is never clobbered.
|
|
25
|
+
*/
|
|
26
|
+
export declare function revertMissionContext(store: Pick<SdkSessionsStore, "get" | "patch">, taskId: string, attempted: MissionContextAssociation): void;
|
|
27
|
+
//# sourceMappingURL=association.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"association.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/association.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAA+B,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEzF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,OAAO,CAAC,EAC9C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,yBAAyB,GACrC,OAAO,CAOT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,OAAO,CAAC,EAC9C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,yBAAyB,GACnC,IAAI,CAMN"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* core/mission-context/association.ts — THE one guarded association write
|
|
3
|
+
* (CONTRACT §5).
|
|
4
|
+
*
|
|
5
|
+
* Lives outside `sdk-sessions-store.ts` for two reasons: that file is a
|
|
6
|
+
* grandfathered bloat entry that must not grow, and — more usefully — keeping
|
|
7
|
+
* the single lifecycle write in its own module makes it auditable in one place
|
|
8
|
+
* instead of buried among the store's CRUD.
|
|
9
|
+
*
|
|
10
|
+
* Why the write exists at all: `prune_stale_run_pointers` deletes
|
|
11
|
+
* `.shipwright/iterate_active/<uuid>.json` once the worktree is gone, so the
|
|
12
|
+
* bridge that identifies the run is TEMPORARY. If the run_id is not captured
|
|
13
|
+
* while the iterate is observable, a session whose UI was never open during the
|
|
14
|
+
* run can never be resolved again (Review-2 Gemini/GPT called the lazy
|
|
15
|
+
* GET-persist alternative "guaranteed data loss").
|
|
16
|
+
*
|
|
17
|
+
* Why it is ONCE-only, not per-GET:
|
|
18
|
+
* - a read endpoint that mutates on every poll would churn the store file
|
|
19
|
+
* roughly once a second per open tab, and
|
|
20
|
+
* - an existing association is never overwritten, not even by a different
|
|
21
|
+
* run_id. A task belongs to the first iterate observed running under it;
|
|
22
|
+
* a later pointer naming a different run means something is wrong upstream,
|
|
23
|
+
* and silently rewriting history is the wrong way to resolve that.
|
|
24
|
+
*/
|
|
25
|
+
import { isMissionContextAssociation } from "./types.js";
|
|
26
|
+
/**
|
|
27
|
+
* Idempotent compare-and-set. Returns true ONLY when this call actually set the
|
|
28
|
+
* field — the caller then `await store.persist()`, which takes the
|
|
29
|
+
* proper-lockfile lock and 3-way merges (DO-NOT #6).
|
|
30
|
+
*
|
|
31
|
+
* Returns false (a silent no-op) for an unknown task, an already-associated
|
|
32
|
+
* task, or a malformed association.
|
|
33
|
+
*/
|
|
34
|
+
export function setMissionContextOnce(store, taskId, association) {
|
|
35
|
+
const task = store.get(taskId);
|
|
36
|
+
if (!task)
|
|
37
|
+
return false;
|
|
38
|
+
if (task.missionContext)
|
|
39
|
+
return false;
|
|
40
|
+
if (!isMissionContextAssociation(association))
|
|
41
|
+
return false;
|
|
42
|
+
store.patch(taskId, { missionContext: association });
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Roll back an association that was set in memory but FAILED to persist
|
|
47
|
+
* (external code review, openai HIGH, 2026-07-18).
|
|
48
|
+
*
|
|
49
|
+
* Without this the compare-and-set is a trap: `setMissionContextOnce` patches
|
|
50
|
+
* the in-memory task, `persist()` then throws (an ELOCKED from a concurrent
|
|
51
|
+
* instance is the realistic case), and every later poll sees a populated
|
|
52
|
+
* `missionContext` and skips the write forever. The association would never
|
|
53
|
+
* reach disk — reintroducing exactly the pruned-pointer data loss it exists to
|
|
54
|
+
* prevent, while looking healthy in memory.
|
|
55
|
+
*
|
|
56
|
+
* Only reverts when the field still holds the association WE set, so a
|
|
57
|
+
* concurrent writer's value is never clobbered.
|
|
58
|
+
*/
|
|
59
|
+
export function revertMissionContext(store, taskId, attempted) {
|
|
60
|
+
const task = store.get(taskId);
|
|
61
|
+
if (!task?.missionContext)
|
|
62
|
+
return;
|
|
63
|
+
if (task.missionContext.runId !== attempted.runId)
|
|
64
|
+
return;
|
|
65
|
+
if (task.missionContext.observedAt !== attempted.observedAt)
|
|
66
|
+
return;
|
|
67
|
+
store.patch(taskId, { missionContext: undefined });
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=association.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"association.js","sourceRoot":"","sources":["../../../src/core/mission-context/association.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,2BAA2B,EAAkC,MAAM,YAAY,CAAC;AAEzF;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAA8C,EAC9C,MAAc,EACd,WAAsC;IAEtC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,IAAI,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5D,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAA8C,EAC9C,MAAc,EACd,SAAoC;IAEpC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,cAAc;QAAE,OAAO;IAClC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;QAAE,OAAO;IAC1D,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;QAAE,OAAO;IACpE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type CampaignFact, type ResolvedDoc } from "./campaign-facts.js";
|
|
2
|
+
import type { CampaignProgressArtifact, CampaignRunbookArtifact, SpecArtifact, SubIterateArtifact } from "./types.js";
|
|
3
|
+
export { selectActiveStep, type CampaignFact, type CampaignFacts, type CampaignProvenanceFacts, type CampaignStepFacts, type ResolvedDoc, } from "./campaign-facts.js";
|
|
4
|
+
/** The campaign BRIEF (`campaign.md`) occupies the rail's `spec` slot. */
|
|
5
|
+
export declare function buildCampaignBriefArtifact(fact: CampaignFact, doc: ResolvedDoc | null): SpecArtifact;
|
|
6
|
+
export declare function buildRunbookArtifact(fact: CampaignFact, doc: ResolvedDoc | null): CampaignRunbookArtifact;
|
|
7
|
+
export declare function buildCampaignProgressArtifact(fact: CampaignFact, activeId: string | null): CampaignProgressArtifact;
|
|
8
|
+
export declare function buildSubIterateArtifact(fact: CampaignFact, doc: ResolvedDoc | null): SubIterateArtifact;
|
|
9
|
+
//# sourceMappingURL=campaign-artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaign-artifacts.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/campaign-artifacts.ts"],"names":[],"mappings":"AAsBA,OAAO,EAGL,KAAK,YAAY,EAGjB,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EAEvB,YAAY,EACZ,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAc7B,0EAA0E;AAC1E,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,WAAW,GAAG,IAAI,GACtB,YAAY,CAsBd;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,WAAW,GAAG,IAAI,GACtB,uBAAuB,CA2BzB;AASD,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,wBAAwB,CA8C1B;AAwCD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,WAAW,GAAG,IAAI,GACtB,kBAAkB,CA6CpB"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* core/mission-context/campaign-artifacts.ts — NATIVE artifacts for a campaign
|
|
3
|
+
* session (CONTRACT §4 scenario 5, §10 Slice 3).
|
|
4
|
+
*
|
|
5
|
+
* S1 recognised a campaign (a `campaign:<slug>` title backed by a REAL record —
|
|
6
|
+
* a title alone is not evidence) but left it on "today's behavior". This module
|
|
7
|
+
* resolves it properly, and the split it maintains is a CONTRACT requirement:
|
|
8
|
+
*
|
|
9
|
+
* CAMPAIGN-LEVEL `spec` (the campaign brief) · `campaign_runbook` ·
|
|
10
|
+
* `campaign_progress`
|
|
11
|
+
* SUB-ITERATE `sub_iterate` — the ONE active unit, with its own spec
|
|
12
|
+
*
|
|
13
|
+
* Keeping those apart is not presentation polish. A campaign of eight units has
|
|
14
|
+
* eight sets of results, and a reader who mistakes one unit's commit for the
|
|
15
|
+
* campaign's has been actively misled.
|
|
16
|
+
*
|
|
17
|
+
* Test counts are `number | null` and null NEVER renders as zero. `status.json`
|
|
18
|
+
* leaves them null for a unit that has not reported; "0 of 0 tests passed" would
|
|
19
|
+
* be a fabricated pass — the exact shape of the S2 review finding where an
|
|
20
|
+
* unreadable count folded into "raised no issues".
|
|
21
|
+
*/
|
|
22
|
+
import { provenanceNote, selectActiveStep, } from "./campaign-facts.js";
|
|
23
|
+
// The vocabulary + the selection rule now live in `campaign-facts.ts`;
|
|
24
|
+
// re-exported so no consumer's import site moved.
|
|
25
|
+
export { selectActiveStep, } from "./campaign-facts.js";
|
|
26
|
+
function unavailable(kind, label, note) {
|
|
27
|
+
return { kind, label, state: "unavailable", summary: null, receipt: null, note, detail: null };
|
|
28
|
+
}
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Campaign level
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
/** The campaign BRIEF (`campaign.md`) occupies the rail's `spec` slot. */
|
|
33
|
+
export function buildCampaignBriefArtifact(fact, doc) {
|
|
34
|
+
if (fact.status === "unavailable") {
|
|
35
|
+
return unavailable("spec", "Campaign brief", "This campaign's records could not be read.");
|
|
36
|
+
}
|
|
37
|
+
if (!doc) {
|
|
38
|
+
return {
|
|
39
|
+
kind: "spec",
|
|
40
|
+
label: "Campaign brief",
|
|
41
|
+
state: "not_yet_created",
|
|
42
|
+
summary: null,
|
|
43
|
+
receipt: null,
|
|
44
|
+
detail: null,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
kind: "spec",
|
|
49
|
+
label: "Campaign brief",
|
|
50
|
+
state: "available",
|
|
51
|
+
summary: fact.campaign.intent ?? "What this campaign as a whole set out to do.",
|
|
52
|
+
receipt: doc.title,
|
|
53
|
+
detail: { type: "document", documentId: doc.documentId, title: doc.title },
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function buildRunbookArtifact(fact, doc) {
|
|
57
|
+
if (fact.status === "unavailable") {
|
|
58
|
+
return unavailable("campaign_runbook", "Runbook", "This campaign's records could not be read.");
|
|
59
|
+
}
|
|
60
|
+
if (!doc) {
|
|
61
|
+
// Many campaigns genuinely have no runbook. A real absence, so it hides.
|
|
62
|
+
return {
|
|
63
|
+
kind: "campaign_runbook",
|
|
64
|
+
label: "Runbook",
|
|
65
|
+
state: "not_applicable",
|
|
66
|
+
summary: null,
|
|
67
|
+
receipt: null,
|
|
68
|
+
detail: null,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
kind: "campaign_runbook",
|
|
73
|
+
label: "Runbook",
|
|
74
|
+
state: "available",
|
|
75
|
+
summary: "The rules every unit of this campaign runs under.",
|
|
76
|
+
receipt: doc.title,
|
|
77
|
+
detail: { type: "document", documentId: doc.documentId, title: doc.title },
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function progressSummary(c, activeId) {
|
|
81
|
+
if (c.total === 0)
|
|
82
|
+
return "This campaign has no units recorded yet.";
|
|
83
|
+
if (c.done >= c.total)
|
|
84
|
+
return `All ${c.total} units are complete.${provenanceNote(c)}`;
|
|
85
|
+
const tail = activeId ? ` Currently on ${activeId}.` : "";
|
|
86
|
+
return `${c.done} of ${c.total} units complete.${tail}${provenanceNote(c)}`;
|
|
87
|
+
}
|
|
88
|
+
export function buildCampaignProgressArtifact(fact, activeId) {
|
|
89
|
+
if (fact.status === "unavailable") {
|
|
90
|
+
return unavailable("campaign_progress", "Campaign progress", "This campaign's records could not be read, so its progress is unknown.");
|
|
91
|
+
}
|
|
92
|
+
const c = fact.campaign;
|
|
93
|
+
// ZERO units AND a read that failed is not an empty campaign — it is a
|
|
94
|
+
// campaign we could not count. "This campaign has no units recorded yet."
|
|
95
|
+
// is a fact, and we do not have it. (Reachable when campaign.md parses to no
|
|
96
|
+
// table AND status.json is torn: the store still returns a campaign object,
|
|
97
|
+
// so `unavailable` never fired and the empty phrasing did.)
|
|
98
|
+
if (c.total === 0 && c.provenance.degraded) {
|
|
99
|
+
return unavailable("campaign_progress", "Campaign progress", "This campaign's records could not be read, so how far along it is could not be established.");
|
|
100
|
+
}
|
|
101
|
+
const rows = c.steps.map((s) => ({
|
|
102
|
+
id: s.id,
|
|
103
|
+
title: s.title,
|
|
104
|
+
status: s.status,
|
|
105
|
+
active: s.id === activeId,
|
|
106
|
+
}));
|
|
107
|
+
return {
|
|
108
|
+
kind: "campaign_progress",
|
|
109
|
+
label: "Campaign progress",
|
|
110
|
+
state: "available",
|
|
111
|
+
summary: progressSummary(c, activeId),
|
|
112
|
+
receipt: `${c.done}/${c.total} complete`,
|
|
113
|
+
detail: {
|
|
114
|
+
type: "campaign_progress",
|
|
115
|
+
slug: c.slug,
|
|
116
|
+
lifecycle: c.lifecycle,
|
|
117
|
+
branchStrategy: c.branchStrategy,
|
|
118
|
+
done: c.done,
|
|
119
|
+
total: c.total,
|
|
120
|
+
rows,
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
// Sub-iterate level
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
/**
|
|
128
|
+
* The status sentence, with its basis attached.
|
|
129
|
+
*
|
|
130
|
+
* "It is running now." is a claim about the present, and it was being made from
|
|
131
|
+
* whatever source happened to answer. The claim is still made — the fallback is
|
|
132
|
+
* useful — but it now carries where it came from.
|
|
133
|
+
*/
|
|
134
|
+
function subIterateSummary(step, selectedBy, c) {
|
|
135
|
+
const name = `${step.id} — ${step.title}`;
|
|
136
|
+
// THIS unit's own source, not the campaign's. A campaign whose status.json
|
|
137
|
+
// names S1 but not S2 reports `status_json` overall, and qualifying S2's
|
|
138
|
+
// claim with that would vouch for a row the live file never mentioned
|
|
139
|
+
// (external plan review, openai HIGH #5).
|
|
140
|
+
const basis = provenanceNote(c, step.statusSource);
|
|
141
|
+
switch (step.status) {
|
|
142
|
+
case "in_progress":
|
|
143
|
+
return `${name} is running now.${basis}`;
|
|
144
|
+
case "complete":
|
|
145
|
+
return selectedBy === "last_complete"
|
|
146
|
+
? `${name} was the last unit, and it is complete.${basis}`
|
|
147
|
+
: `${name} is complete.${basis}`;
|
|
148
|
+
case "failed":
|
|
149
|
+
return `${name} failed and is what the campaign is waiting on.${basis}`;
|
|
150
|
+
case "escalated":
|
|
151
|
+
return `${name} was escalated for a human decision.${basis}`;
|
|
152
|
+
default:
|
|
153
|
+
return `${name} has not started yet.${basis}`;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
export function buildSubIterateArtifact(fact, doc) {
|
|
157
|
+
const label = "Current unit";
|
|
158
|
+
if (fact.status === "unavailable") {
|
|
159
|
+
return unavailable("sub_iterate", label, "This campaign's records could not be read, so its current unit is unknown.");
|
|
160
|
+
}
|
|
161
|
+
const picked = selectActiveStep(fact.campaign.steps);
|
|
162
|
+
if (!picked) {
|
|
163
|
+
// The campaign record parsed and lists no units. A real, honest absence.
|
|
164
|
+
return {
|
|
165
|
+
kind: "sub_iterate",
|
|
166
|
+
label,
|
|
167
|
+
state: "not_applicable",
|
|
168
|
+
summary: null,
|
|
169
|
+
receipt: null,
|
|
170
|
+
detail: null,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
const { step, selectedBy } = picked;
|
|
174
|
+
return {
|
|
175
|
+
kind: "sub_iterate",
|
|
176
|
+
label,
|
|
177
|
+
state: "available",
|
|
178
|
+
summary: subIterateSummary(step, selectedBy, fact.campaign),
|
|
179
|
+
receipt: step.id,
|
|
180
|
+
detail: {
|
|
181
|
+
type: "sub_iterate",
|
|
182
|
+
id: step.id,
|
|
183
|
+
title: step.title,
|
|
184
|
+
status: step.status,
|
|
185
|
+
selectedBy,
|
|
186
|
+
documentId: doc?.documentId ?? null,
|
|
187
|
+
documentTitle: doc?.title ?? null,
|
|
188
|
+
commit: step.commit,
|
|
189
|
+
branch: step.branch,
|
|
190
|
+
testsPassed: step.testsPassed,
|
|
191
|
+
testsTotal: step.testsTotal,
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=campaign-artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaign-artifacts.js","sourceRoot":"","sources":["../../../src/core/mission-context/campaign-artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { SubIterateSelection } from "./types.js";
|
|
2
|
+
/** One sub-iterate as the campaign's own records describe it. */
|
|
3
|
+
export interface CampaignStepFacts {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
status: string;
|
|
7
|
+
/**
|
|
8
|
+
* Where THIS unit's status came from — per-unit, because the claim it
|
|
9
|
+
* qualifies is per-unit. A campaign can mix: `status.json` naming S1 but not
|
|
10
|
+
* S2 makes S1's status live and S2's a plan-table row, and a campaign-level
|
|
11
|
+
* flag would vouch for both (external plan review, openai HIGH #5).
|
|
12
|
+
*/
|
|
13
|
+
statusSource: "status_json" | "campaign_md" | "events" | "default";
|
|
14
|
+
/** Project-root-relative POSIX path to this unit's spec; null when absent. */
|
|
15
|
+
specPath: string | null;
|
|
16
|
+
commit: string | null;
|
|
17
|
+
branch: string | null;
|
|
18
|
+
testsPassed: number | null;
|
|
19
|
+
testsTotal: number | null;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* How much weight the facts below can carry.
|
|
23
|
+
*
|
|
24
|
+
* `campaign-store` falls back from the live `status.json` to the `campaign.md`
|
|
25
|
+
* table when the former is missing or torn. That fallback is useful and stays —
|
|
26
|
+
* but it used to be SILENT, so "S2 is running now" could be rendered from a
|
|
27
|
+
* hand-maintained plan document while the live status file was unreadable, with
|
|
28
|
+
* nothing on screen saying so. These two fields are what make that visible.
|
|
29
|
+
*/
|
|
30
|
+
export interface CampaignProvenanceFacts {
|
|
31
|
+
statusSource: "status_json" | "campaign_md" | "events" | "none";
|
|
32
|
+
/** A source EXISTED and could not be read. Absent ≠ degraded. */
|
|
33
|
+
degraded: boolean;
|
|
34
|
+
/** WHICH source, so a disclosure never names the wrong file. */
|
|
35
|
+
statusJsonState: "ok" | "absent" | "unreadable";
|
|
36
|
+
campaignMdUnreadable: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface CampaignFacts {
|
|
39
|
+
slug: string;
|
|
40
|
+
intent: string | null;
|
|
41
|
+
lifecycle: string | null;
|
|
42
|
+
branchStrategy: string | null;
|
|
43
|
+
done: number;
|
|
44
|
+
total: number;
|
|
45
|
+
steps: CampaignStepFacts[];
|
|
46
|
+
provenance: CampaignProvenanceFacts;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* `unavailable` means the campaign store could not be read — NOT that the
|
|
50
|
+
* campaign is empty. The distinction is the whole point of the state model.
|
|
51
|
+
*/
|
|
52
|
+
export type CampaignFact = {
|
|
53
|
+
status: "ok";
|
|
54
|
+
campaign: CampaignFacts;
|
|
55
|
+
} | {
|
|
56
|
+
status: "unavailable";
|
|
57
|
+
};
|
|
58
|
+
/** A resolved, existence-checked document the resolver has minted an id for. */
|
|
59
|
+
export interface ResolvedDoc {
|
|
60
|
+
documentId: string;
|
|
61
|
+
title: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Pick the ACTIVE sub-iterate, and record WHY.
|
|
65
|
+
*
|
|
66
|
+
* The basis travels on the wire (`selectedBy`) because "which one is running" is
|
|
67
|
+
* a claim, and a claim whose basis is invisible drifts without anyone noticing.
|
|
68
|
+
*
|
|
69
|
+
* 1. a unit explicitly `in_progress` → that one
|
|
70
|
+
* 2. else the first unit that is not `complete` → the one the campaign is
|
|
71
|
+
* blocked on. `failed` and `escalated` land here on purpose: a stuck unit
|
|
72
|
+
* IS the active one, and skipping past it would hide the problem.
|
|
73
|
+
* 3. else (everything complete) the LAST unit → a finished campaign shows
|
|
74
|
+
* where it ended rather than nothing at all.
|
|
75
|
+
*/
|
|
76
|
+
export declare function selectActiveStep(steps: readonly CampaignStepFacts[]): {
|
|
77
|
+
step: CampaignStepFacts;
|
|
78
|
+
selectedBy: SubIterateSelection;
|
|
79
|
+
} | null;
|
|
80
|
+
/**
|
|
81
|
+
* The one sentence that turns a silent fallback into an honest one.
|
|
82
|
+
*
|
|
83
|
+
* `campaign-store` drops from the live `status.json` to the `campaign.md` table
|
|
84
|
+
* when the former is missing or torn, and until this iterate that fallback left
|
|
85
|
+
* no trace: "S2 is running now" read identically whether it came from the live
|
|
86
|
+
* status file or from a plan document written days earlier. The three cases are
|
|
87
|
+
* genuinely different claims and get genuinely different words.
|
|
88
|
+
*
|
|
89
|
+
* Returns "" when the facts came from the live file — the common case must not
|
|
90
|
+
* be cluttered with a disclosure that says nothing.
|
|
91
|
+
*/
|
|
92
|
+
export declare function provenanceNote(c: CampaignFacts,
|
|
93
|
+
/**
|
|
94
|
+
* The SOURCE to qualify. For a per-unit claim this is that unit's own source,
|
|
95
|
+
* which can differ from the campaign's overall one; omit it for a
|
|
96
|
+
* campaign-wide claim and the campaign's own source is used.
|
|
97
|
+
*/
|
|
98
|
+
source?: CampaignStepFacts["statusSource"]): string;
|
|
99
|
+
//# sourceMappingURL=campaign-facts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaign-facts.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/campaign-facts.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,YAAY,EAAE,aAAa,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnE,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,aAAa,GAAG,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChE,iEAAiE;IACjE,QAAQ,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,eAAe,EAAE,IAAI,GAAG,QAAQ,GAAG,YAAY,CAAC;IAChD,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,UAAU,EAAE,uBAAuB,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9B,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,iBAAiB,EAAE,GAClC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,mBAAmB,CAAA;CAAE,GAAG,IAAI,CAUrE;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,aAAa;AAChB;;;;GAIG;AACH,MAAM,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,GACzC,MAAM,CAyDR"}
|