@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,214 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* core/mission-context/review-record-entry.ts — ONE producer entry becomes ONE
|
|
3
|
+
* wire row, or a reason it cannot.
|
|
4
|
+
*
|
|
5
|
+
* Split out of `review-record.ts` (iterate-2026-07-31-review-record-tolerant-reader)
|
|
6
|
+
* along the seam the change itself exposed. The two modules answer two different
|
|
7
|
+
* questions and only one of them just changed:
|
|
8
|
+
*
|
|
9
|
+
* review-record.ts is this FILE a record for this run? (path, size, JSON,
|
|
10
|
+
* version, run identity, which passes it carries)
|
|
11
|
+
* review-record-entry.ts is this ENTRY a row? (this module)
|
|
12
|
+
*
|
|
13
|
+
* That the reader now accepts review types it has never heard of is a statement
|
|
14
|
+
* about the first question ONLY. An unrecognised pass is mapped by the SAME
|
|
15
|
+
* function, against the SAME vocabularies, as a pinned one — which is why
|
|
16
|
+
* `toRow` takes a plain `string` and not a member of a closed union. Tolerance
|
|
17
|
+
* lives at the key; this file stays total.
|
|
18
|
+
*/
|
|
19
|
+
const MAX_TEXT = 4000;
|
|
20
|
+
const MAX_SHORT = 400;
|
|
21
|
+
/**
|
|
22
|
+
* Producer status → wire status. A MAP rather than a set-plus-cast: the cast
|
|
23
|
+
* severed the only link between the runtime vocabulary and the `ReviewStatus`
|
|
24
|
+
* union, so a sixth producer status would have flowed through onto the wire and
|
|
25
|
+
* hit the client's exhaustive `reviewStatusWord` switch, which returns undefined
|
|
26
|
+
* and renders a review with NO status word at all. This way it is a compile
|
|
27
|
+
* error instead.
|
|
28
|
+
*/
|
|
29
|
+
const PRODUCER_STATUS = {
|
|
30
|
+
// "nobody has answered yet" is not a result — it is the absence of one.
|
|
31
|
+
pending: "unavailable",
|
|
32
|
+
completed: "completed",
|
|
33
|
+
not_run: "not_run",
|
|
34
|
+
not_applicable: "not_applicable",
|
|
35
|
+
};
|
|
36
|
+
const PARSE_STATUSES = new Set(["structured", "partial", "unstructured"]);
|
|
37
|
+
/** Terminal statuses the producer guarantees carry a reason. */
|
|
38
|
+
const NEEDS_DISPOSITION = new Set(["not_run", "not_applicable"]);
|
|
39
|
+
/**
|
|
40
|
+
* Bound what one row can push into a 420px panel; disclosed, never silent —
|
|
41
|
+
* `truncated` is set and `findingsCount` keeps the FULL number, so the summary
|
|
42
|
+
* arithmetic stays right and the panel says it is showing fewer.
|
|
43
|
+
*
|
|
44
|
+
* Sized when the list was five rows fixed. The list is now bounded at 32, so the
|
|
45
|
+
* aggregate ceiling is 1600 rather than 250 (Stage-3 doubt, D7). Left as it is:
|
|
46
|
+
* the per-row cap is about one row's share of the panel, which did not change,
|
|
47
|
+
* and every row past the first few is scrolled to rather than seen.
|
|
48
|
+
*/
|
|
49
|
+
const MAX_FINDINGS_PER_ROW = 50;
|
|
50
|
+
const SEVERITIES = new Set(["high", "medium", "low"]);
|
|
51
|
+
const PENDING_NOTE = "This review has not answered yet — the run recorded no result for it.";
|
|
52
|
+
function str(value, max = MAX_TEXT) {
|
|
53
|
+
return typeof value === "string" && value.trim().length > 0
|
|
54
|
+
? value.trim().slice(0, max)
|
|
55
|
+
: null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* `file` + `line` joined once, server-side, so the client never formats a
|
|
59
|
+
* location. A file with no line is still a location worth showing.
|
|
60
|
+
*/
|
|
61
|
+
function location(file, line) {
|
|
62
|
+
const filePath = str(file, MAX_SHORT);
|
|
63
|
+
if (!filePath)
|
|
64
|
+
return null;
|
|
65
|
+
return typeof line === "number" && Number.isFinite(line) && line > 0
|
|
66
|
+
? `${filePath}:${Math.trunc(line)}`
|
|
67
|
+
: filePath;
|
|
68
|
+
}
|
|
69
|
+
function toFinding(raw) {
|
|
70
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
71
|
+
return null;
|
|
72
|
+
const o = raw;
|
|
73
|
+
const title = str(o.finding);
|
|
74
|
+
if (!title)
|
|
75
|
+
return null;
|
|
76
|
+
const severity = typeof o.severity === "string" && SEVERITIES.has(o.severity)
|
|
77
|
+
? o.severity
|
|
78
|
+
: null;
|
|
79
|
+
return {
|
|
80
|
+
severity,
|
|
81
|
+
title,
|
|
82
|
+
location: location(o.file, o.line),
|
|
83
|
+
suggestion: str(o.suggestion),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* How many review entries sit under record-level keys the caller does not read
|
|
88
|
+
* (Stage-3 doubt, D2).
|
|
89
|
+
*
|
|
90
|
+
* Recognising an entry BY SHAPE is this module's knowledge, which is why the
|
|
91
|
+
* walk lives here. Not hypothetical: the producer parks its Stage-1 gate in a
|
|
92
|
+
* sibling `gates` object TODAY and no webui code has ever looked at it, so a run
|
|
93
|
+
* whose spec gate found five things — two of them blocking — summarises as if
|
|
94
|
+
* they did not exist. Shape, not the name `gates`, so the NEXT sibling is
|
|
95
|
+
* disclosed the day it appears rather than the day somebody notices.
|
|
96
|
+
*/
|
|
97
|
+
export function unreadPassCount(record, knownKeys) {
|
|
98
|
+
let count = 0;
|
|
99
|
+
for (const [key, value] of Object.entries(record)) {
|
|
100
|
+
if (knownKeys.has(key))
|
|
101
|
+
continue;
|
|
102
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
103
|
+
continue;
|
|
104
|
+
for (const entry of Object.values(value)) {
|
|
105
|
+
if (entry && typeof entry === "object" && "review_type" in entry)
|
|
106
|
+
count += 1;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return count;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* A pass this build has never heard of whose ENTRY does not validate.
|
|
113
|
+
*
|
|
114
|
+
* Tolerance is per-key; without this, FAILURE would be per-record — one unknown
|
|
115
|
+
* word in one unrecognised pass would replace five perfectly-parsed rows with an
|
|
116
|
+
* integrity fault. The priors differ by object: for a PINNED pass an unknown
|
|
117
|
+
* field value really is more likely corruption, but for a pass this build does
|
|
118
|
+
* not know, it is more likely the same evolution the key tolerance exists for,
|
|
119
|
+
* and the costs are asymmetric — calling evolution corruption destroys five
|
|
120
|
+
* healthy rows, calling corruption evolution costs one row already unknown
|
|
121
|
+
* (Stage-3 doubt, D5).
|
|
122
|
+
*
|
|
123
|
+
* The row is PRESENT and explicitly unreadable, never dropped, and
|
|
124
|
+
* `buildReviewArtifact` already folds an `unavailable` row into "their result is
|
|
125
|
+
* unknown". A malformed KEY is still a record-level fault: the key is the row's
|
|
126
|
+
* identity, and there is no honest row to degrade to without one.
|
|
127
|
+
*/
|
|
128
|
+
export function unreadableStranger(reviewType) {
|
|
129
|
+
return {
|
|
130
|
+
reviewType,
|
|
131
|
+
status: "unavailable",
|
|
132
|
+
findingsCount: null,
|
|
133
|
+
findings: [],
|
|
134
|
+
provider: null,
|
|
135
|
+
completedAt: null,
|
|
136
|
+
disposition: null,
|
|
137
|
+
note: "This run recorded this review pass in a form this version cannot read, so its result is not shown here.",
|
|
138
|
+
parseStatus: null,
|
|
139
|
+
source: "record",
|
|
140
|
+
truncated: false,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Map one producer entry. A `pending` type becomes `unavailable` with a count of
|
|
145
|
+
* `null`: nobody has answered, and rendering that as a completed review with
|
|
146
|
+
* zero findings is the exact "0 reads as clean" failure this artifact exists to
|
|
147
|
+
* prevent.
|
|
148
|
+
*
|
|
149
|
+
* Returns the row, or a STRING naming the first thing wrong with the entry —
|
|
150
|
+
* which the caller reports as an integrity fault for the whole record. That is
|
|
151
|
+
* deliberate for an unrecognised pass too: not knowing what a pass is called is
|
|
152
|
+
* evolution, but a pass whose own fields contradict each other is corruption,
|
|
153
|
+
* and answering corruption with a partial record would be the quiet lie.
|
|
154
|
+
*/
|
|
155
|
+
export function toRow(reviewType, entry) {
|
|
156
|
+
if (entry.review_type !== reviewType) {
|
|
157
|
+
return `reviews.${reviewType}.review_type is ${String(entry.review_type)}`;
|
|
158
|
+
}
|
|
159
|
+
const status = typeof entry.status === "string" ? entry.status : "";
|
|
160
|
+
const wireStatus = PRODUCER_STATUS[status];
|
|
161
|
+
if (!wireStatus) {
|
|
162
|
+
return `reviews.${reviewType}.status ${String(entry.status)} is not a known status`;
|
|
163
|
+
}
|
|
164
|
+
const rawFindings = entry.findings;
|
|
165
|
+
if (!Array.isArray(rawFindings))
|
|
166
|
+
return `reviews.${reviewType}.findings is not a list`;
|
|
167
|
+
if (entry.findings_count !== rawFindings.length) {
|
|
168
|
+
return `reviews.${reviewType}.findings_count disagrees with its own list`;
|
|
169
|
+
}
|
|
170
|
+
const findings = [];
|
|
171
|
+
for (const raw of rawFindings) {
|
|
172
|
+
const finding = toFinding(raw);
|
|
173
|
+
if (!finding)
|
|
174
|
+
return `reviews.${reviewType} has a finding with no text`;
|
|
175
|
+
findings.push(finding);
|
|
176
|
+
}
|
|
177
|
+
// An UNKNOWN parse_status is a schema fault, not something to normalize to
|
|
178
|
+
// null: silently dropping it would turn "we do not know how well this parsed"
|
|
179
|
+
// into "it parsed fine".
|
|
180
|
+
const parseStatusRaw = entry.parse_status;
|
|
181
|
+
if (parseStatusRaw !== null && parseStatusRaw !== undefined
|
|
182
|
+
&& !(typeof parseStatusRaw === "string" && PARSE_STATUSES.has(parseStatusRaw))) {
|
|
183
|
+
return `reviews.${reviewType}.parse_status ${String(parseStatusRaw)} is not a known value`;
|
|
184
|
+
}
|
|
185
|
+
const parseStatus = (typeof parseStatusRaw === "string" ? parseStatusRaw : null);
|
|
186
|
+
const disposition = str(entry.disposition, 2000);
|
|
187
|
+
if (NEEDS_DISPOSITION.has(status) && !disposition) {
|
|
188
|
+
return `reviews.${reviewType} is ${status} but records no reason`;
|
|
189
|
+
}
|
|
190
|
+
// The producer guarantees an unstructured parse itemized NOTHING. A record
|
|
191
|
+
// claiming otherwise is internally inconsistent, and rendering it would show a
|
|
192
|
+
// finding list under a caveat saying the findings could not be listed.
|
|
193
|
+
if (parseStatus === "unstructured" && findings.length > 0) {
|
|
194
|
+
return `reviews.${reviewType} is unstructured yet carries itemized findings`;
|
|
195
|
+
}
|
|
196
|
+
if (findings.length > MAX_FINDINGS_PER_ROW) {
|
|
197
|
+
findings.length = MAX_FINDINGS_PER_ROW;
|
|
198
|
+
}
|
|
199
|
+
const pending = status === "pending";
|
|
200
|
+
return {
|
|
201
|
+
reviewType,
|
|
202
|
+
status: wireStatus,
|
|
203
|
+
findingsCount: pending ? null : Number(entry.findings_count),
|
|
204
|
+
findings,
|
|
205
|
+
truncated: Number(entry.findings_count) > findings.length,
|
|
206
|
+
provider: str(entry.provider, 120),
|
|
207
|
+
completedAt: str(entry.completed_at, 64),
|
|
208
|
+
disposition,
|
|
209
|
+
note: pending ? PENDING_NOTE : null,
|
|
210
|
+
parseStatus,
|
|
211
|
+
source: "record",
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=review-record-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-record-entry.js","sourceRoot":"","sources":["../../../src/core/mission-context/review-record-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ReviewRow } from "./types-slice2.js";
|
|
2
|
+
/**
|
|
3
|
+
* Contract order — `self` first: it is the one review that always runs.
|
|
4
|
+
*
|
|
5
|
+
* `as const` rather than `ReviewType[]`: `ReviewType` now admits any string, so
|
|
6
|
+
* the annotation that used to catch a typo here would no longer catch anything.
|
|
7
|
+
*
|
|
8
|
+
* EXPORTED because `review-state.ts` needs the same order for its marker
|
|
9
|
+
* fallback. Two independently-written literals would now drift silently — with
|
|
10
|
+
* the annotation gone, nothing would fail if the record path and the marker path
|
|
11
|
+
* disagreed about which five passes exist.
|
|
12
|
+
*/
|
|
13
|
+
export declare const REVIEW_TYPES: readonly ["self", "plan", "code", "doubt", "external_code"];
|
|
14
|
+
export type ReviewRecordResult = {
|
|
15
|
+
kind: "valid";
|
|
16
|
+
rows: ReviewRow[];
|
|
17
|
+
caveats: string[];
|
|
18
|
+
} | {
|
|
19
|
+
kind: "absent";
|
|
20
|
+
} | {
|
|
21
|
+
kind: "invalid";
|
|
22
|
+
reason: string;
|
|
23
|
+
};
|
|
24
|
+
/** Absolute path of the record — also probed for `sourceRev` so a late write refreshes. */
|
|
25
|
+
export declare function reviewRecordPath(projectRoot: string, runId: string): string | null;
|
|
26
|
+
/**
|
|
27
|
+
* Read + validate the run's review record.
|
|
28
|
+
*
|
|
29
|
+
* Validation is total on purpose: a record that passes here is one the UI may
|
|
30
|
+
* render without re-checking, and `run_id` is verified against the REQUESTED run
|
|
31
|
+
* because a stale or copied file sitting at a valid guarded path would otherwise
|
|
32
|
+
* be presented as this run's review history.
|
|
33
|
+
*/
|
|
34
|
+
export declare function readReviewRecord(projectRoot: string, runId: string): ReviewRecordResult;
|
|
35
|
+
//# sourceMappingURL=review-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-record.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/review-record.ts"],"names":[],"mappings":"AA4EA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,6DAA8D,CAAC;AA2CxF,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAGxC,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGlF;AAMD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAiIvF"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* core/mission-context/review-record.ts — the per-run REVIEW RECORD reader.
|
|
3
|
+
*
|
|
4
|
+
* ── WHAT CHANGED ───────────────────────────────────────────────────────────
|
|
5
|
+
* Slice 2 shipped Review from the two `external_*review_state.json` markers and
|
|
6
|
+
* represented the internal self / code / doubt passes explicitly as unavailable,
|
|
7
|
+
* because no clean source existed (see `review-state.ts` for that decision and
|
|
8
|
+
* why guessing one would have been worse). The producer side has since closed
|
|
9
|
+
* the gap: every iterate now writes
|
|
10
|
+
*
|
|
11
|
+
* .shipwright/planning/iterate/<run_id>/reviews.json
|
|
12
|
+
*
|
|
13
|
+
* keyed by review type, carrying INDIVIDUAL FINDINGS, immutable once a pass has
|
|
14
|
+
* answered. This module reads it. `review-state.ts` keeps the marker path
|
|
15
|
+
* untouched as the fallback for the runs that predate the record.
|
|
16
|
+
*
|
|
17
|
+
* ── absent vs. invalid, and why it is a discriminated result ───────────────
|
|
18
|
+
* Only a VERIFIED MISSING FILE may fall back to the markers. Bad JSON, a record
|
|
19
|
+
* naming another run, an unknown schema version, a count that disagrees with its
|
|
20
|
+
* own list — each is an integrity fault, and answering one by quietly reading
|
|
21
|
+
* the weaker source would present a corrupt record as a review history. So the
|
|
22
|
+
* reader returns `valid | absent | invalid` and never a bare null.
|
|
23
|
+
*
|
|
24
|
+
* ── validation mirrors the producer's own ──────────────────────────────────
|
|
25
|
+
* The two repositories never import each other (DO-NOT #7), so this re-states
|
|
26
|
+
* the producer's schema check rather than sharing it. That duplication is the
|
|
27
|
+
* price of the boundary; the protection against drift is the fixture in
|
|
28
|
+
* `test/fixtures/reviews-record-real.json`, copied verbatim from real producer
|
|
29
|
+
* output rather than written here.
|
|
30
|
+
*
|
|
31
|
+
* ── forward tolerance, and exactly where it stops ──────────────────────────
|
|
32
|
+
* (iterate-2026-07-31-review-record-tolerant-reader.) This reader used to pin
|
|
33
|
+
* `schema_version` with `!==` and reject any `reviews` key outside its own five.
|
|
34
|
+
* Because an invalid record does NOT degrade to the marker view — it renders
|
|
35
|
+
* every row as a data-integrity fault — those two lines made the pinned five
|
|
36
|
+
* unable to grow: a sixth pass would have reported every healthy record as
|
|
37
|
+
* corrupt. So the producer parked its Stage-1 spec-compliance gate in a sibling
|
|
38
|
+
* `gates` object nobody reads, and said so in its own source, naming the release
|
|
39
|
+
* condition: "Promotion into REVIEW_TYPES — one line here, one there — becomes
|
|
40
|
+
* safe as soon as the webui ships a reader that tolerates unknown review types."
|
|
41
|
+
*
|
|
42
|
+
* Both gates therefore move, and NOTHING else does:
|
|
43
|
+
* - the version is a FLOOR (`>=`), not a pin;
|
|
44
|
+
* - an unrecognised review key is mapped and rendered, not rejected.
|
|
45
|
+
*
|
|
46
|
+
* The version number is not what protects this reader and never was — every
|
|
47
|
+
* entry, pinned or not, still goes through the same total `toRow`. A future
|
|
48
|
+
* record that RESHAPED an entry is rejected on that entry's own fields no matter
|
|
49
|
+
* what version it claims.
|
|
50
|
+
*
|
|
51
|
+
* ── where that argument STOPS (Stage-3 doubt, D1) ─────────────────────────
|
|
52
|
+
* It covers reshapes and NOT additions — and additions are what the producer's
|
|
53
|
+
* contract actually promises. `toRow` reads the fields it names and ignores
|
|
54
|
+
* every other one, so an added field carrying the real answer (`verdict:
|
|
55
|
+
* "blocked"` beside `status: "completed"`) would be dropped and the pass drawn
|
|
56
|
+
* as a clean run. The `!==` pin caught that by refusing the record; nothing else
|
|
57
|
+
* ever did. So forward-reading is DISCLOSED, not silent: a version past
|
|
58
|
+
* `MAX_KNOWN_RECORD_SCHEMA_VERSION`, or passes recorded where this reader does
|
|
59
|
+
* not look, each add a `caveat` that `buildReviewArtifact` appends to the
|
|
60
|
+
* summary. That is the house rule of the whole feature (`truncated`,
|
|
61
|
+
* `manifestStatus`, `parseStatus`): read what you can, say what you could not.
|
|
62
|
+
*
|
|
63
|
+
* ── the pinned five are FROZEN (Stage-3 doubt, D4) ────────────────────────
|
|
64
|
+
* Tolerance is additive ONLY. `REVIEW_TYPES` may never shrink or be renamed —
|
|
65
|
+
* the assembly below requires all five and calls the record unreadable if one is
|
|
66
|
+
* absent, so renaming `external_code` blanks the whole card rather than adding a
|
|
67
|
+
* row. A superseded pass keeps its key and closes with a disposition.
|
|
68
|
+
*/
|
|
69
|
+
import { statSync } from "node:fs";
|
|
70
|
+
import path from "node:path";
|
|
71
|
+
import { readBoundedFile } from "./fs-read.js";
|
|
72
|
+
import { toRow, unreadPassCount, unreadableStranger } from "./review-record-entry.js";
|
|
73
|
+
import { pathGuard, realPathGuard } from "../path-guard.js";
|
|
74
|
+
import { isSafeRunId } from "./pointer.js";
|
|
75
|
+
/**
|
|
76
|
+
* Contract order — `self` first: it is the one review that always runs.
|
|
77
|
+
*
|
|
78
|
+
* `as const` rather than `ReviewType[]`: `ReviewType` now admits any string, so
|
|
79
|
+
* the annotation that used to catch a typo here would no longer catch anything.
|
|
80
|
+
*
|
|
81
|
+
* EXPORTED because `review-state.ts` needs the same order for its marker
|
|
82
|
+
* fallback. Two independently-written literals would now drift silently — with
|
|
83
|
+
* the annotation gone, nothing would fail if the record path and the marker path
|
|
84
|
+
* disagreed about which five passes exist.
|
|
85
|
+
*/
|
|
86
|
+
export const REVIEW_TYPES = ["self", "plan", "code", "doubt", "external_code"];
|
|
87
|
+
/**
|
|
88
|
+
* The OLDEST version this reader can read, not the only one. Anything newer is
|
|
89
|
+
* additive by the producer's contract and is read; anything older never existed.
|
|
90
|
+
*/
|
|
91
|
+
const MIN_RECORD_SCHEMA_VERSION = 1;
|
|
92
|
+
/**
|
|
93
|
+
* The newest version whose fields this reader actually KNOWS. Beyond it the
|
|
94
|
+
* record is still read — that is the point — but the fact is disclosed, because
|
|
95
|
+
* a field added past this line is one `toRow` drops on the floor.
|
|
96
|
+
*/
|
|
97
|
+
const MAX_KNOWN_RECORD_SCHEMA_VERSION = 1;
|
|
98
|
+
/** Record-level keys this reader understands; anything else may hold passes. */
|
|
99
|
+
const KNOWN_RECORD_KEYS = new Set(["schema_version", "run_id", "reviews"]);
|
|
100
|
+
/**
|
|
101
|
+
* What an unrecognised review key may look like. Permissive on purpose — the
|
|
102
|
+
* point of this whole change is that the producer may name a pass something this
|
|
103
|
+
* reader has not heard of — but a key is still an IDENTIFIER, so `__proto__`,
|
|
104
|
+
* an empty string, a path fragment and a paragraph of prose are corruption
|
|
105
|
+
* rather than evolution, and are reported as such.
|
|
106
|
+
*/
|
|
107
|
+
const REVIEW_KEY = /^[A-Za-z][A-Za-z0-9_-]{0,63}$/;
|
|
108
|
+
/**
|
|
109
|
+
* Aggregate bound on how many passes one record may carry (external plan review,
|
|
110
|
+
* finding 3: unknown keys make a previously five-row structure unbounded). Going
|
|
111
|
+
* over is an integrity fault and NOT a silent truncation: a review pass dropped
|
|
112
|
+
* on the floor is precisely the invisible-review failure this artifact exists to
|
|
113
|
+
* prevent, so the record says it cannot be trusted instead of quietly shrinking.
|
|
114
|
+
*/
|
|
115
|
+
const MAX_REVIEW_TYPES = 32;
|
|
116
|
+
/**
|
|
117
|
+
* 2 MB. The marker bound (256 KB) was tuned for a few hundred bytes; a real
|
|
118
|
+
* 46-finding record measures 46 KB, so that ceiling was one noisy run away from
|
|
119
|
+
* turning a healthy record into a false integrity fault.
|
|
120
|
+
*/
|
|
121
|
+
const MAX_RECORD_BYTES = 2 * 1024 * 1024;
|
|
122
|
+
/** Absolute path of the record — also probed for `sourceRev` so a late write refreshes. */
|
|
123
|
+
export function reviewRecordPath(projectRoot, runId) {
|
|
124
|
+
if (!isSafeRunId(runId))
|
|
125
|
+
return null;
|
|
126
|
+
return path.join(projectRoot, ".shipwright", "planning", "iterate", runId, "reviews.json");
|
|
127
|
+
}
|
|
128
|
+
function invalid(reason) {
|
|
129
|
+
return { kind: "invalid", reason };
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Read + validate the run's review record.
|
|
133
|
+
*
|
|
134
|
+
* Validation is total on purpose: a record that passes here is one the UI may
|
|
135
|
+
* render without re-checking, and `run_id` is verified against the REQUESTED run
|
|
136
|
+
* because a stale or copied file sitting at a valid guarded path would otherwise
|
|
137
|
+
* be presented as this run's review history.
|
|
138
|
+
*/
|
|
139
|
+
export function readReviewRecord(projectRoot, runId) {
|
|
140
|
+
if (!isSafeRunId(runId))
|
|
141
|
+
return invalid("run id is not safe to resolve");
|
|
142
|
+
const rel = [".shipwright", "planning", "iterate", runId, "reviews.json"].join("/");
|
|
143
|
+
const guard = pathGuard(projectRoot, rel);
|
|
144
|
+
if (!guard.ok)
|
|
145
|
+
return invalid("the record path could not be resolved safely");
|
|
146
|
+
// ENOENT — and ONLY ENOENT — is an absence the markers may answer.
|
|
147
|
+
//
|
|
148
|
+
// `existsSync` cannot make that distinction: it swallows EVERY error and
|
|
149
|
+
// returns false, so an unreadable record (EACCES, a broken symlink, a
|
|
150
|
+
// directory where a file belongs) would report "absent" and silently hand the
|
|
151
|
+
// question to the weaker source. That is the downgrade this whole reader
|
|
152
|
+
// exists to prevent, so the errno is inspected instead.
|
|
153
|
+
try {
|
|
154
|
+
const stats = statSync(guard.absolute);
|
|
155
|
+
if (!stats.isFile())
|
|
156
|
+
return invalid("the record path is not a file");
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
const code = err?.code;
|
|
160
|
+
if (code === "ENOENT")
|
|
161
|
+
return { kind: "absent" };
|
|
162
|
+
return invalid(`the record could not be inspected (${code ?? "unknown error"})`);
|
|
163
|
+
}
|
|
164
|
+
// The documented pair: pathGuard is string-only, so realPathGuard is what
|
|
165
|
+
// refuses a symlink pointing out of the project (DO-NOT #10).
|
|
166
|
+
if (!realPathGuard(projectRoot, guard.absolute).ok) {
|
|
167
|
+
return invalid("the record resolves outside the project");
|
|
168
|
+
}
|
|
169
|
+
const read = readBoundedFile(guard.absolute, MAX_RECORD_BYTES);
|
|
170
|
+
if (!read)
|
|
171
|
+
return invalid("the record could not be read within its size bound");
|
|
172
|
+
let parsed;
|
|
173
|
+
try {
|
|
174
|
+
parsed = JSON.parse(read.text);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return invalid("the record is not valid JSON");
|
|
178
|
+
}
|
|
179
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
180
|
+
return invalid("the record is not an object");
|
|
181
|
+
}
|
|
182
|
+
const record = parsed;
|
|
183
|
+
const version = record.schema_version;
|
|
184
|
+
// `>=`, not `===`. See the forward-tolerance note in the file header: an older
|
|
185
|
+
// version never existed, a newer one is additive, and a reshaped entry is
|
|
186
|
+
// caught by `toRow` rather than by this number.
|
|
187
|
+
if (!Number.isInteger(version) || version < MIN_RECORD_SCHEMA_VERSION) {
|
|
188
|
+
return invalid(`record schema_version ${String(version)} is not a version this reader can read`);
|
|
189
|
+
}
|
|
190
|
+
if (record.run_id !== runId) {
|
|
191
|
+
return invalid(`the record names run ${String(record.run_id)}, not ${runId}`);
|
|
192
|
+
}
|
|
193
|
+
const reviews = record.reviews;
|
|
194
|
+
if (!reviews || typeof reviews !== "object" || Array.isArray(reviews)) {
|
|
195
|
+
return invalid("the record has no reviews object");
|
|
196
|
+
}
|
|
197
|
+
const byType = reviews;
|
|
198
|
+
// `Object.keys` is own-enumerable only, so nothing inherited can become a row.
|
|
199
|
+
const keys = Object.keys(byType);
|
|
200
|
+
if (keys.length > MAX_REVIEW_TYPES) {
|
|
201
|
+
return invalid(`the record carries ${keys.length} review passes, more than any run has`);
|
|
202
|
+
}
|
|
203
|
+
const strangers = keys.filter((k) => !REVIEW_TYPES.includes(k));
|
|
204
|
+
const malformed = strangers.filter((k) => !REVIEW_KEY.test(k));
|
|
205
|
+
if (malformed.length > 0) {
|
|
206
|
+
return invalid(`the record has a review key that is not an identifier: ${malformed.join(", ")}`);
|
|
207
|
+
}
|
|
208
|
+
// The pinned five FIRST, in contract order (AC4 of the Review artifact), then
|
|
209
|
+
// the passes this reader has not heard of, in the record's own key order. A
|
|
210
|
+
// stranger is appended rather than interleaved so the order the UI has always
|
|
211
|
+
// rendered is exactly the order it still renders.
|
|
212
|
+
//
|
|
213
|
+
// The five come from REVIEW_TYPES and NOT from the record's own keys. That
|
|
214
|
+
// looks like a stylistic choice and is not: iterating `keys` is shorter and
|
|
215
|
+
// silently stops detecting a record MISSING a pinned pass — the check that
|
|
216
|
+
// keeps a dropped or renamed pass loud instead of quietly rendering four rows
|
|
217
|
+
// as if five had been considered.
|
|
218
|
+
const rows = [];
|
|
219
|
+
for (const reviewType of REVIEW_TYPES) {
|
|
220
|
+
// `hasOwnProperty` guards something the `Object.keys` filter above does not:
|
|
221
|
+
// these lookups are by literal name, so a globally polluted
|
|
222
|
+
// `Object.prototype` could otherwise hand back a shadowing value for a key
|
|
223
|
+
// this record never carried.
|
|
224
|
+
const entry = Object.prototype.hasOwnProperty.call(byType, reviewType)
|
|
225
|
+
? byType[reviewType]
|
|
226
|
+
: undefined;
|
|
227
|
+
if (entry === undefined || entry === null) {
|
|
228
|
+
return invalid(`the record is missing the ${reviewType} review`);
|
|
229
|
+
}
|
|
230
|
+
if (typeof entry !== "object" || Array.isArray(entry)) {
|
|
231
|
+
return invalid(`reviews.${reviewType} is not an object`);
|
|
232
|
+
}
|
|
233
|
+
const row = toRow(reviewType, entry);
|
|
234
|
+
if (typeof row === "string")
|
|
235
|
+
return invalid(row);
|
|
236
|
+
rows.push(row);
|
|
237
|
+
}
|
|
238
|
+
// A stranger is own by construction (it came from `Object.keys`), so it is
|
|
239
|
+
// never actually missing — and its entry failing is bounded to its own row.
|
|
240
|
+
for (const reviewType of strangers) {
|
|
241
|
+
const entry = byType[reviewType];
|
|
242
|
+
const row = entry && typeof entry === "object" && !Array.isArray(entry)
|
|
243
|
+
? toRow(reviewType, entry)
|
|
244
|
+
: `reviews.${reviewType} is not an object`;
|
|
245
|
+
rows.push(typeof row === "string" ? unreadableStranger(reviewType) : row);
|
|
246
|
+
}
|
|
247
|
+
const caveats = [];
|
|
248
|
+
if (version > MAX_KNOWN_RECORD_SCHEMA_VERSION) {
|
|
249
|
+
caveats.push("This run's review record was written by a newer Shipwright, so a pass may " +
|
|
250
|
+
"carry detail this version does not know how to show.");
|
|
251
|
+
}
|
|
252
|
+
const unread = unreadPassCount(record, KNOWN_RECORD_KEYS);
|
|
253
|
+
if (unread > 0) {
|
|
254
|
+
caveats.push(`This run also recorded ${unread} review ${unread === 1 ? "pass" : "passes"} ` +
|
|
255
|
+
"somewhere this version does not read, so they are not counted above.");
|
|
256
|
+
}
|
|
257
|
+
return { kind: "valid", rows, caveats };
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=review-record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-record.js","sourceRoot":"","sources":["../../../src/core/mission-context/review-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ReviewRow } from "./types-slice2.js";
|
|
2
|
+
/** Directory holding a run's review markers. */
|
|
3
|
+
export declare function reviewStateDir(projectRoot: string, runId: string): string;
|
|
4
|
+
/** Absolute marker paths — used for `sourceRev` probing so a late review refreshes. */
|
|
5
|
+
export declare function reviewStatePaths(projectRoot: string, runId: string): string[];
|
|
6
|
+
export interface ReviewLookup {
|
|
7
|
+
rows: ReviewRow[];
|
|
8
|
+
/** At least one marker carried a real, readable record. */
|
|
9
|
+
hasRecord: boolean;
|
|
10
|
+
/** A marker existed but could not be read — an integrity signal, not absence. */
|
|
11
|
+
sawUnreadable: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* What the reader could NOT read, said out loud (Stage-3 doubt, D1/D2) —
|
|
14
|
+
* appended to the artifact summary. Empty on the marker path.
|
|
15
|
+
*/
|
|
16
|
+
caveats: string[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* All five review types for `runId`, in contract order.
|
|
20
|
+
*
|
|
21
|
+
* **Precedence: the per-run record wins.** Since
|
|
22
|
+
* `iterate-2026-07-22-mission-review-record` the producer writes
|
|
23
|
+
* `.shipwright/planning/iterate/<run_id>/reviews.json` with real per-finding
|
|
24
|
+
* detail for all five passes, so the markers are now the FALLBACK — kept
|
|
25
|
+
* byte-for-byte as they were, because 64 existing runs depend on that behaviour.
|
|
26
|
+
*
|
|
27
|
+
* A record that is present but INVALID does not fall through. Answering a
|
|
28
|
+
* corrupt record with the weaker source would present a data-integrity fault as
|
|
29
|
+
* a review history; it is reported as unreadable instead, which the §6 state
|
|
30
|
+
* model renders as "currently unavailable".
|
|
31
|
+
*/
|
|
32
|
+
export declare function readReviewState(projectRoot: string, runId: string): ReviewLookup;
|
|
33
|
+
//# sourceMappingURL=review-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-state.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/review-state.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,mBAAmB,CAAC;AA6D/D,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ7E;AAyED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,aAAa,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAwChF"}
|