@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,33 @@
|
|
|
1
|
+
import type { TriagePriority, TriageSeverity } from "../types/triage.js";
|
|
2
|
+
/** Fields an `amend` event may correct. */
|
|
3
|
+
export declare const AMENDABLE_FIELDS: readonly ["title", "detail", "severity", "kind"];
|
|
4
|
+
/** Resolved-item keys carrying who/when the item was last amended. */
|
|
5
|
+
export declare const AMENDED_BY_FIELD = "amendedBy";
|
|
6
|
+
export declare const AMENDED_AT_FIELD = "amendedAt";
|
|
7
|
+
/** Pure: severity → P0..P3. Mirrors `triage_fields.suggest_priority_from_severity`. */
|
|
8
|
+
export declare function suggestPriorityFromSeverity(severity: TriageSeverity): TriagePriority;
|
|
9
|
+
/**
|
|
10
|
+
* True iff every field PRESENT on `raw` is well-typed and, for the two
|
|
11
|
+
* closed-vocabulary fields, a member of the current vocabulary. Does NOT
|
|
12
|
+
* check for contentless amends — that is a writer-side precondition, not a
|
|
13
|
+
* resolver concern (a stored line already on disk only has its field
|
|
14
|
+
* VALIDITY in question by the time a reader sees it).
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateAmendEvent(raw: Record<string, unknown>): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Overlay a VALIDATED amend event onto a resolved item, in place. Caller
|
|
19
|
+
* must have already confirmed `validateAmendEvent(raw)` — an invalid amend
|
|
20
|
+
* is the caller's responsibility to skip in its entirety, never partially
|
|
21
|
+
* applied here.
|
|
22
|
+
*
|
|
23
|
+
* `item.ts` is deliberately NOT overlaid — it keeps meaning "time of the
|
|
24
|
+
* last STATUS decision", exactly as before this event type existed.
|
|
25
|
+
*/
|
|
26
|
+
export declare function applyAmend(item: Record<string, unknown>, raw: Record<string, unknown>): void;
|
|
27
|
+
/**
|
|
28
|
+
* Validate-then-overlay in one call for the `resolveUnion` Pass 2 dispatch:
|
|
29
|
+
* an invalid `raw` is skipped WHOLE (no-op on `item`), never partially
|
|
30
|
+
* applied.
|
|
31
|
+
*/
|
|
32
|
+
export declare function tryApplyAmend(item: Record<string, unknown>, raw: Record<string, unknown>): void;
|
|
33
|
+
//# sourceMappingURL=triage-amend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-amend.d.ts","sourceRoot":"","sources":["../../src/core/triage-amend.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAc,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAErF,2CAA2C;AAC3C,eAAO,MAAM,gBAAgB,kDAAmD,CAAC;AAEjF,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAC5C,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAwB5C,uFAAuF;AACvF,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAEpF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CASxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAY5F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE/F"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* triage-amend.ts — TS port of `lib/triage_amend.py`: the `amend` event's
|
|
3
|
+
* vocabulary, validation, and the Pass-2 overlay applied to a resolved
|
|
4
|
+
* triage item.
|
|
5
|
+
*
|
|
6
|
+
* iterate-2026-08-08-triage-amend-reader. A card's `title`/`detail`/
|
|
7
|
+
* `severity`/`kind` can be corrected in place — id stable — instead of
|
|
8
|
+
* dismiss-and-refile. NOT amendable: `source`, `dedupKey`, `runId`,
|
|
9
|
+
* `evidencePath`, `commit`, `launchPayload`, `frId`, `suiteId`, `eventId`,
|
|
10
|
+
* `status` (status stays exclusively a `status` event).
|
|
11
|
+
*
|
|
12
|
+
* Split out of `triage-store.ts` for the same reason the Python side split
|
|
13
|
+
* out of `triage.py`: that module is already at its documented
|
|
14
|
+
* bloat-baseline ceiling with little headroom (see `triage-store.ts`'s own
|
|
15
|
+
* header) — mirroring the Python module boundary keeps the two languages'
|
|
16
|
+
* structure congruent for this cross-language contract.
|
|
17
|
+
*
|
|
18
|
+
* Whole-event validation, never partial application: `validateAmendEvent`
|
|
19
|
+
* checks every field PRESENT on a raw event; if any present field is
|
|
20
|
+
* invalid, the caller skips the WHOLE event (mirrors the existing
|
|
21
|
+
* convention for a damaged `status` event in `triage-store.ts`). A field
|
|
22
|
+
* ABSENT from an amend is simply not applied, leaving the target unchanged.
|
|
23
|
+
*/
|
|
24
|
+
/** Fields an `amend` event may correct. */
|
|
25
|
+
export const AMENDABLE_FIELDS = ["title", "detail", "severity", "kind"];
|
|
26
|
+
/** Resolved-item keys carrying who/when the item was last amended. */
|
|
27
|
+
export const AMENDED_BY_FIELD = "amendedBy";
|
|
28
|
+
export const AMENDED_AT_FIELD = "amendedAt";
|
|
29
|
+
const SEVERITY_VALUES = new Set([
|
|
30
|
+
"critical",
|
|
31
|
+
"high",
|
|
32
|
+
"medium",
|
|
33
|
+
"low",
|
|
34
|
+
"info",
|
|
35
|
+
]);
|
|
36
|
+
const KIND_VALUES = new Set([
|
|
37
|
+
"bug",
|
|
38
|
+
"feature",
|
|
39
|
+
"improvement",
|
|
40
|
+
"compliance",
|
|
41
|
+
"maintenance",
|
|
42
|
+
]);
|
|
43
|
+
const PRIORITY_FROM_SEVERITY = {
|
|
44
|
+
critical: "P0",
|
|
45
|
+
high: "P1",
|
|
46
|
+
medium: "P2",
|
|
47
|
+
low: "P3",
|
|
48
|
+
info: "P3",
|
|
49
|
+
};
|
|
50
|
+
/** Pure: severity → P0..P3. Mirrors `triage_fields.suggest_priority_from_severity`. */
|
|
51
|
+
export function suggestPriorityFromSeverity(severity) {
|
|
52
|
+
return PRIORITY_FROM_SEVERITY[severity];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* True iff every field PRESENT on `raw` is well-typed and, for the two
|
|
56
|
+
* closed-vocabulary fields, a member of the current vocabulary. Does NOT
|
|
57
|
+
* check for contentless amends — that is a writer-side precondition, not a
|
|
58
|
+
* resolver concern (a stored line already on disk only has its field
|
|
59
|
+
* VALIDITY in question by the time a reader sees it).
|
|
60
|
+
*/
|
|
61
|
+
export function validateAmendEvent(raw) {
|
|
62
|
+
if ("title" in raw) {
|
|
63
|
+
const title = raw.title;
|
|
64
|
+
if (typeof title !== "string" || !title.trim())
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
if ("detail" in raw && typeof raw.detail !== "string")
|
|
68
|
+
return false;
|
|
69
|
+
if ("severity" in raw && !SEVERITY_VALUES.has(raw.severity))
|
|
70
|
+
return false;
|
|
71
|
+
if ("kind" in raw && !KIND_VALUES.has(raw.kind))
|
|
72
|
+
return false;
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Overlay a VALIDATED amend event onto a resolved item, in place. Caller
|
|
77
|
+
* must have already confirmed `validateAmendEvent(raw)` — an invalid amend
|
|
78
|
+
* is the caller's responsibility to skip in its entirety, never partially
|
|
79
|
+
* applied here.
|
|
80
|
+
*
|
|
81
|
+
* `item.ts` is deliberately NOT overlaid — it keeps meaning "time of the
|
|
82
|
+
* last STATUS decision", exactly as before this event type existed.
|
|
83
|
+
*/
|
|
84
|
+
export function applyAmend(item, raw) {
|
|
85
|
+
if ("title" in raw)
|
|
86
|
+
item.title = raw.title;
|
|
87
|
+
if ("detail" in raw)
|
|
88
|
+
item.detail = raw.detail;
|
|
89
|
+
if ("severity" in raw) {
|
|
90
|
+
item.severity = raw.severity;
|
|
91
|
+
item.suggestedPriority = suggestPriorityFromSeverity(raw.severity);
|
|
92
|
+
}
|
|
93
|
+
if ("kind" in raw)
|
|
94
|
+
item.kind = raw.kind;
|
|
95
|
+
const rawBy = raw.by;
|
|
96
|
+
const rawTs = raw.ts;
|
|
97
|
+
item[AMENDED_BY_FIELD] = typeof rawBy === "string" ? rawBy : null;
|
|
98
|
+
item[AMENDED_AT_FIELD] = typeof rawTs === "string" ? rawTs : null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Validate-then-overlay in one call for the `resolveUnion` Pass 2 dispatch:
|
|
102
|
+
* an invalid `raw` is skipped WHOLE (no-op on `item`), never partially
|
|
103
|
+
* applied.
|
|
104
|
+
*/
|
|
105
|
+
export function tryApplyAmend(item, raw) {
|
|
106
|
+
if (validateAmendEvent(raw))
|
|
107
|
+
applyAmend(item, raw);
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=triage-amend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-amend.js","sourceRoot":"","sources":["../../src/core/triage-amend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { TriageItem } from "../types/triage.js";
|
|
2
|
+
export interface BoardOrigin {
|
|
3
|
+
/** True when the delivered-origin snapshot was unioned into the read. */
|
|
4
|
+
available: boolean;
|
|
5
|
+
/** Commits the local checkout is behind its upstream, or null. */
|
|
6
|
+
behind: number | null;
|
|
7
|
+
/**
|
|
8
|
+
* iterate-2026-08-08-triage-amend-reader (AC9): true when a status/amend
|
|
9
|
+
* write right now would route to the per-tree outbox (idle main — origin
|
|
10
|
+
* remote + HEAD on the default branch). False means a write lands on the
|
|
11
|
+
* TRACKED store instead — the Edit UI uses this to disclose that BEFORE
|
|
12
|
+
* the operator submits, not after. Optional/absent-safe: an older client
|
|
13
|
+
* or a read that fell back to DEGRADED treats it as unknown.
|
|
14
|
+
*/
|
|
15
|
+
writesRouteToOutbox?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface BoardRead {
|
|
18
|
+
items: TriageItem[];
|
|
19
|
+
origin: BoardOrigin;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Feature flag for the delivered-origin union read. Default ON; set
|
|
23
|
+
* SHIPWRIGHT_WEBUI_TRIAGE_ORIGIN_UNION=0|false|off to roll back to the pure
|
|
24
|
+
* local-only read. Independent of the automatic degrade-to-local on any git
|
|
25
|
+
* failure — this is an explicit kill switch.
|
|
26
|
+
*/
|
|
27
|
+
export declare function originUnionEnabled(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the board items for a tracked `triage.jsonl` path, unioning the
|
|
30
|
+
* delivered-origin snapshot. Degrades to the pure local union (identical to
|
|
31
|
+
* `readAllItems`) when the flag is off or any git step fails. A read failure
|
|
32
|
+
* (e.g. the file was rotated mid-request) is caught here and logged, returning
|
|
33
|
+
* empty items — the caller stays a thin one-liner. Items are shallow-cloned so
|
|
34
|
+
* the route's per-request enrichment never mutates shared objects.
|
|
35
|
+
*/
|
|
36
|
+
export declare function readBoardItems(trackedAbsolute: string, projectId: string): Promise<BoardRead>;
|
|
37
|
+
//# sourceMappingURL=triage-board-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-board-read.d.ts","sourceRoot":"","sources":["../../src/core/triage-board-read.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAkFD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,CAAC,CA0CpB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* triage-board-read.ts — board read for GET /api/triage/:projectId.
|
|
3
|
+
*
|
|
4
|
+
* Composes the local triage union with the delivered-origin snapshot so a
|
|
5
|
+
* dismiss already delivered to origin (but not yet pulled locally) is reflected
|
|
6
|
+
* — the root-cause fix for the "ghost" bug. Kept out of routes/triage.ts to
|
|
7
|
+
* hold that (oversize) route module flat and to keep the git/compose wiring in
|
|
8
|
+
* one testable place (external review "split into layers").
|
|
9
|
+
*/
|
|
10
|
+
import { execFile } from "node:child_process";
|
|
11
|
+
import path from "node:path";
|
|
12
|
+
import { promisify } from "node:util";
|
|
13
|
+
import { readAllItemsWithDeliveredOrigin } from "./triage-compose.js";
|
|
14
|
+
import { loadDeliveredOrigin } from "./triage-origin.js";
|
|
15
|
+
/**
|
|
16
|
+
* Feature flag for the delivered-origin union read. Default ON; set
|
|
17
|
+
* SHIPWRIGHT_WEBUI_TRIAGE_ORIGIN_UNION=0|false|off to roll back to the pure
|
|
18
|
+
* local-only read. Independent of the automatic degrade-to-local on any git
|
|
19
|
+
* failure — this is an explicit kill switch.
|
|
20
|
+
*/
|
|
21
|
+
export function originUnionEnabled() {
|
|
22
|
+
const v = (process.env.SHIPWRIGHT_WEBUI_TRIAGE_ORIGIN_UNION ?? "").trim().toLowerCase();
|
|
23
|
+
return v !== "0" && v !== "false" && v !== "off";
|
|
24
|
+
}
|
|
25
|
+
const execFileAsync = promisify(execFile);
|
|
26
|
+
async function gitAsync(projectRoot, gitArgs) {
|
|
27
|
+
try {
|
|
28
|
+
const { stdout } = await execFileAsync("git", ["-C", projectRoot, ...gitArgs], {
|
|
29
|
+
encoding: "utf-8",
|
|
30
|
+
timeout: 5000,
|
|
31
|
+
windowsHide: true,
|
|
32
|
+
});
|
|
33
|
+
return stdout.trim();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* AC9's disclosure signal — read path twin of the Python CLI's
|
|
41
|
+
* `shouldRouteToOutbox`. This path is polled every 30 s per registered
|
|
42
|
+
* project (useTriage.ts); the write path's version uses `spawnSync`, which
|
|
43
|
+
* blocks Node's single event loop for the duration of up to 3 git calls on
|
|
44
|
+
* EVERY poll of EVERY project (code-reviewer, iterate-2026-08-08-triage-
|
|
45
|
+
* amend-reader). A first fix cached that cost with a short TTL, but a cached
|
|
46
|
+
* `true` can be served for up to the TTL after HEAD actually moves off the
|
|
47
|
+
* default branch — silently suppressing AC9's disclosure banner in exactly
|
|
48
|
+
* the case it exists to catch, the opposite of the spec's "fail toward
|
|
49
|
+
* disclosure" principle (external code-review finding). `execFile` runs
|
|
50
|
+
* off-thread (libuv), so the event loop stays free without caching anything
|
|
51
|
+
* — this closes the performance and the staleness concern at once. Same
|
|
52
|
+
* short-circuit logic and fail-safe-false semantics as the sync version;
|
|
53
|
+
* kept as its own function since this
|
|
54
|
+
* read path is its only caller.
|
|
55
|
+
*/
|
|
56
|
+
async function shouldRouteToOutboxAsync(projectRoot) {
|
|
57
|
+
if ((await gitAsync(projectRoot, ["remote", "get-url", "origin"])) === null)
|
|
58
|
+
return false;
|
|
59
|
+
const current = await gitAsync(projectRoot, ["rev-parse", "--abbrev-ref", "HEAD"]);
|
|
60
|
+
if (!current)
|
|
61
|
+
return false;
|
|
62
|
+
const head = await gitAsync(projectRoot, ["symbolic-ref", "--short", "refs/remotes/origin/HEAD"]);
|
|
63
|
+
const defaultBranch = head ? head.replace(/^origin\//, "") : "main";
|
|
64
|
+
return current === defaultBranch;
|
|
65
|
+
}
|
|
66
|
+
const DEGRADED = { available: false, behind: null };
|
|
67
|
+
/**
|
|
68
|
+
* Cap on fragments carried into one log line, so a badly damaged file cannot
|
|
69
|
+
* emit an unbounded log event. The COUNT is still reported in full.
|
|
70
|
+
*/
|
|
71
|
+
const CORRUPT_LOG_CAP = 5;
|
|
72
|
+
/**
|
|
73
|
+
* Report unrecoverable fragments at the command boundary — the leaf
|
|
74
|
+
* (`jsonl-records.ts`) never logs, so background callers, tests and routes all
|
|
75
|
+
* behave predictably (iterate-2026-07-18-triage-jsonl-record-boundary).
|
|
76
|
+
*
|
|
77
|
+
* Records recovered from the same physical line are ALREADY in `items`; this
|
|
78
|
+
* only surfaces what could not be decoded, so corruption never reads as
|
|
79
|
+
* absence silently. Server log only — deliberately no API field, no client
|
|
80
|
+
* type and no UI banner: the repair tooling lives in the shipwright monorepo,
|
|
81
|
+
* not the WebUI, so a banner would report a problem the operator cannot act on
|
|
82
|
+
* from here.
|
|
83
|
+
*/
|
|
84
|
+
function reportCorruption(projectId, total, sample) {
|
|
85
|
+
if (total === 0)
|
|
86
|
+
return;
|
|
87
|
+
console.warn(JSON.stringify({
|
|
88
|
+
level: "warn",
|
|
89
|
+
message: "triage log corruption recovered",
|
|
90
|
+
projectId,
|
|
91
|
+
// `total` is the true count; `sample` is capped, so the two differ on a
|
|
92
|
+
// badly damaged file. Reporting only the sample length would under-report.
|
|
93
|
+
fragments: total,
|
|
94
|
+
sample,
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resolve the board items for a tracked `triage.jsonl` path, unioning the
|
|
99
|
+
* delivered-origin snapshot. Degrades to the pure local union (identical to
|
|
100
|
+
* `readAllItems`) when the flag is off or any git step fails. A read failure
|
|
101
|
+
* (e.g. the file was rotated mid-request) is caught here and logged, returning
|
|
102
|
+
* empty items — the caller stays a thin one-liner. Items are shallow-cloned so
|
|
103
|
+
* the route's per-request enrichment never mutates shared objects.
|
|
104
|
+
*/
|
|
105
|
+
export async function readBoardItems(trackedAbsolute, projectId) {
|
|
106
|
+
try {
|
|
107
|
+
const projectRoot = path.dirname(path.dirname(trackedAbsolute));
|
|
108
|
+
const delivered = loadDeliveredOrigin(projectRoot, { enabled: originUnionEnabled() });
|
|
109
|
+
const corrupt = [];
|
|
110
|
+
let corruptTotal = 0;
|
|
111
|
+
const items = readAllItemsWithDeliveredOrigin(trackedAbsolute, {
|
|
112
|
+
originRawLines: delivered.originRawLines,
|
|
113
|
+
// Bounded METADATA only — never the fragment text. A damaged tail can
|
|
114
|
+
// hold arbitrary log contents and control characters, and this is a
|
|
115
|
+
// user-facing read path. Mirrors the Python warning, which reports
|
|
116
|
+
// "<n> bytes unrecoverable".
|
|
117
|
+
onCorrupt: (fragment, source) => {
|
|
118
|
+
corruptTotal += 1;
|
|
119
|
+
if (corrupt.length >= CORRUPT_LOG_CAP)
|
|
120
|
+
return;
|
|
121
|
+
corrupt.push({
|
|
122
|
+
source,
|
|
123
|
+
lineNo: fragment.lineNo,
|
|
124
|
+
bytes: Buffer.byteLength(fragment.text, "utf-8"),
|
|
125
|
+
});
|
|
126
|
+
},
|
|
127
|
+
}).map((it) => ({ ...it }));
|
|
128
|
+
reportCorruption(projectId, corruptTotal, corrupt);
|
|
129
|
+
return {
|
|
130
|
+
items,
|
|
131
|
+
origin: {
|
|
132
|
+
available: delivered.originAvailable,
|
|
133
|
+
behind: delivered.localBehind,
|
|
134
|
+
writesRouteToOutbox: await shouldRouteToOutboxAsync(projectRoot),
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
console.warn(JSON.stringify({
|
|
140
|
+
level: "warn",
|
|
141
|
+
message: "triage read failed",
|
|
142
|
+
projectId,
|
|
143
|
+
error: String(err).slice(0, 200),
|
|
144
|
+
}));
|
|
145
|
+
return { items: [], origin: DEGRADED };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=triage-board-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-board-read.js","sourceRoot":"","sources":["../../src/core/triage-board-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type RunFn } from "./readiness-probe.js";
|
|
2
|
+
export declare const TRIAGE_CLI_TIMEOUT_MS = 30000;
|
|
3
|
+
export interface TriageCliSpawnResult {
|
|
4
|
+
code: number;
|
|
5
|
+
stdout: string;
|
|
6
|
+
stderr: string;
|
|
7
|
+
spawnError?: string;
|
|
8
|
+
}
|
|
9
|
+
export type TriageCliSpawn = (bin: string, args: string[], options: {
|
|
10
|
+
timeoutMs: number;
|
|
11
|
+
env: NodeJS.ProcessEnv;
|
|
12
|
+
}) => Promise<TriageCliSpawnResult>;
|
|
13
|
+
export interface TriageWriteAvailability {
|
|
14
|
+
available: boolean;
|
|
15
|
+
/** A background probe is still resolving; callers should refresh shortly. */
|
|
16
|
+
checking?: boolean;
|
|
17
|
+
reason?: string;
|
|
18
|
+
repairCommand?: string;
|
|
19
|
+
}
|
|
20
|
+
export type TriageCliResult = {
|
|
21
|
+
kind: "ok";
|
|
22
|
+
operation: string;
|
|
23
|
+
item: Record<string, unknown>;
|
|
24
|
+
} | {
|
|
25
|
+
kind: "precondition";
|
|
26
|
+
} | {
|
|
27
|
+
kind: "not-found";
|
|
28
|
+
} | {
|
|
29
|
+
kind: "store-uninitialised";
|
|
30
|
+
} | {
|
|
31
|
+
kind: "lock-timeout";
|
|
32
|
+
} | {
|
|
33
|
+
kind: "engine-unavailable";
|
|
34
|
+
reason: string;
|
|
35
|
+
repairCommand: string;
|
|
36
|
+
} | {
|
|
37
|
+
kind: "failed";
|
|
38
|
+
reason: string;
|
|
39
|
+
};
|
|
40
|
+
export interface RunTriageCliInput {
|
|
41
|
+
projectRoot: string;
|
|
42
|
+
operation: "show" | "promote" | "dismiss" | "snooze" | "amend";
|
|
43
|
+
itemId: string;
|
|
44
|
+
args: string[];
|
|
45
|
+
}
|
|
46
|
+
export interface TriageCliDeps {
|
|
47
|
+
run?: RunFn;
|
|
48
|
+
spawn?: TriageCliSpawn;
|
|
49
|
+
existsFn?: (p: string) => boolean;
|
|
50
|
+
homeDir?: string;
|
|
51
|
+
scriptOverride?: string;
|
|
52
|
+
timeoutMs?: number;
|
|
53
|
+
baseEnv?: NodeJS.ProcessEnv;
|
|
54
|
+
}
|
|
55
|
+
/** Resolve the single cache-owned CLI shipped with the Shipwright runtime. */
|
|
56
|
+
export declare function resolveTriageCliScript(deps?: Pick<TriageCliDeps, "existsFn" | "homeDir" | "scriptOverride">): string | null;
|
|
57
|
+
export declare const defaultSpawnTriageCli: TriageCliSpawn;
|
|
58
|
+
export declare function triageWriteAvailability(deps?: TriageCliDeps): Promise<TriageWriteAvailability>;
|
|
59
|
+
/** Execute one transition with fixed argv positions and consume the CLI JSON envelope. */
|
|
60
|
+
export declare function runTriageCli(input: RunTriageCliInput, deps?: TriageCliDeps): Promise<TriageCliResult>;
|
|
61
|
+
//# sourceMappingURL=triage-cli-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-cli-runner.d.ts","sourceRoot":"","sources":["../../src/core/triage-cli-runner.ts"],"names":[],"mappings":"AAeA,OAAO,EAA4E,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE5H,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,CAC3B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KACnD,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAEnC,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC7B;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAAM,GAAG,MAAM,GAAG,IAAI,CAW/H;AAED,eAAO,MAAM,qBAAqB,EAAE,cAsBhC,CAAC;AAML,wBAAsB,uBAAuB,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAIxG;AAMD,0FAA0F;AAC1F,wBAAsB,YAAY,CAChC,KAAK,EAAE,iBAAiB,EACxB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,eAAe,CAAC,CAgC1B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* triage-cli-runner — the Command Center's sole write bridge for triage.
|
|
3
|
+
*
|
|
4
|
+
* Triage reads remain native TypeScript because they are latency-sensitive and
|
|
5
|
+
* have no mutual-exclusion requirement. Every transition, however, executes
|
|
6
|
+
* the Python CLI so its FileLock owns the compare-and-swap, residence choice,
|
|
7
|
+
* schema bootstrap and record-boundary handling. There is deliberately no
|
|
8
|
+
* TypeScript append fallback: an unavailable writer disables the UI instead.
|
|
9
|
+
*/
|
|
10
|
+
import { execFile } from "node:child_process";
|
|
11
|
+
import { existsSync } from "node:fs";
|
|
12
|
+
import os from "node:os";
|
|
13
|
+
import path from "node:path";
|
|
14
|
+
import { defaultRun, READINESS_REPAIR_COMMAND, resolvePython, shipwrightCacheRoot } from "./readiness-probe.js";
|
|
15
|
+
export const TRIAGE_CLI_TIMEOUT_MS = 30_000;
|
|
16
|
+
/** Resolve the single cache-owned CLI shipped with the Shipwright runtime. */
|
|
17
|
+
export function resolveTriageCliScript(deps = {}) {
|
|
18
|
+
const exists = deps.existsFn ?? existsSync;
|
|
19
|
+
if (deps.scriptOverride)
|
|
20
|
+
return exists(deps.scriptOverride) ? deps.scriptOverride : null;
|
|
21
|
+
const candidate = path.join(shipwrightCacheRoot(deps.homeDir ?? os.homedir()), "shared", "scripts", "tools", "triage_cli.py");
|
|
22
|
+
return exists(candidate) ? candidate : null;
|
|
23
|
+
}
|
|
24
|
+
export const defaultSpawnTriageCli = (bin, args, options) => new Promise((resolve) => {
|
|
25
|
+
execFile(bin, args, {
|
|
26
|
+
encoding: "utf-8",
|
|
27
|
+
timeout: options.timeoutMs,
|
|
28
|
+
windowsHide: true,
|
|
29
|
+
maxBuffer: 1024 * 1024,
|
|
30
|
+
env: options.env,
|
|
31
|
+
}, (error, stdout, stderr) => {
|
|
32
|
+
const out = String(stdout ?? "");
|
|
33
|
+
const err = String(stderr ?? "");
|
|
34
|
+
if (!error)
|
|
35
|
+
return resolve({ code: 0, stdout: out, stderr: err });
|
|
36
|
+
const e = error;
|
|
37
|
+
if (typeof e.code === "string")
|
|
38
|
+
return resolve({ code: -1, stdout: out, stderr: err, spawnError: e.code });
|
|
39
|
+
if (e.killed)
|
|
40
|
+
return resolve({ code: 124, stdout: out, stderr: err, spawnError: "timeout" });
|
|
41
|
+
return resolve({ code: typeof e.code === "number" ? e.code : 1, stdout: out, stderr: err });
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
function unavailable(reason) {
|
|
45
|
+
return { available: false, reason, repairCommand: READINESS_REPAIR_COMMAND };
|
|
46
|
+
}
|
|
47
|
+
export async function triageWriteAvailability(deps = {}) {
|
|
48
|
+
if (!resolveTriageCliScript(deps))
|
|
49
|
+
return unavailable("The triage write engine isn't installed.");
|
|
50
|
+
if (!(await resolvePython(deps.run ?? defaultRun)))
|
|
51
|
+
return unavailable("No working Python (3.11+) was found.");
|
|
52
|
+
return { available: true };
|
|
53
|
+
}
|
|
54
|
+
function cleanStderr(stderr) {
|
|
55
|
+
return stderr.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).pop() ?? "";
|
|
56
|
+
}
|
|
57
|
+
/** Execute one transition with fixed argv positions and consume the CLI JSON envelope. */
|
|
58
|
+
export async function runTriageCli(input, deps = {}) {
|
|
59
|
+
const script = resolveTriageCliScript(deps);
|
|
60
|
+
if (!script)
|
|
61
|
+
return { kind: "engine-unavailable", reason: "The triage write engine isn't installed.", repairCommand: READINESS_REPAIR_COMMAND };
|
|
62
|
+
const python = await resolvePython(deps.run ?? defaultRun);
|
|
63
|
+
if (!python)
|
|
64
|
+
return { kind: "engine-unavailable", reason: "No working Python (3.11+) was found.", repairCommand: READINESS_REPAIR_COMMAND };
|
|
65
|
+
const spawn = deps.spawn ?? defaultSpawnTriageCli;
|
|
66
|
+
const result = await spawn(python.bin, [script, "--project-root", input.projectRoot, input.operation, input.itemId, ...input.args, "--json"], { timeoutMs: deps.timeoutMs ?? TRIAGE_CLI_TIMEOUT_MS, env: deps.baseEnv ?? process.env });
|
|
67
|
+
if (result.code === -1) {
|
|
68
|
+
return { kind: "engine-unavailable", reason: "Python couldn't start on this machine.", repairCommand: READINESS_REPAIR_COMMAND };
|
|
69
|
+
}
|
|
70
|
+
if (result.code === 3)
|
|
71
|
+
return { kind: "precondition" };
|
|
72
|
+
if (result.code === 4)
|
|
73
|
+
return { kind: "not-found" };
|
|
74
|
+
if (result.code === 5)
|
|
75
|
+
return { kind: "store-uninitialised" };
|
|
76
|
+
if (result.code === 6)
|
|
77
|
+
return { kind: "lock-timeout" };
|
|
78
|
+
if (result.code !== 0) {
|
|
79
|
+
return { kind: "failed", reason: result.spawnError === "timeout" ? "Triage writing took too long and was stopped." : cleanStderr(result.stderr) || "The triage write engine exited with an error." };
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const payload = JSON.parse(result.stdout);
|
|
83
|
+
if (typeof payload.operation !== "string" || payload.operation !== input.operation || !payload.item || typeof payload.item !== "object" || Array.isArray(payload.item)) {
|
|
84
|
+
return { kind: "failed", reason: "The triage write engine returned an unrecognised response." };
|
|
85
|
+
}
|
|
86
|
+
return { kind: "ok", operation: payload.operation, item: payload.item };
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return { kind: "failed", reason: "The triage write engine didn't return valid JSON." };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=triage-cli-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-cli-runner.js","sourceRoot":"","sources":["../../src/core/triage-cli-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { TriageItem } from "../types/triage.js";
|
|
2
|
+
import type { CorruptFragment } from "./jsonl-records.js";
|
|
3
|
+
export interface DeliveredOriginOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Parsed raw JSONL lines from `origin/<default>:.shipwright/triage.jsonl`,
|
|
6
|
+
* or `null` when origin is unavailable / the feature is off. `null` ⇒
|
|
7
|
+
* local-only resolution (identical to `readAllItems`).
|
|
8
|
+
*/
|
|
9
|
+
originRawLines: Record<string, unknown>[] | null;
|
|
10
|
+
/**
|
|
11
|
+
* Optional side channel for text on a LOCAL file that could not be decoded
|
|
12
|
+
* (iterate-2026-07-18-triage-jsonl-record-boundary). Records recovered from
|
|
13
|
+
* the same line are still returned — corruption must never read as absence.
|
|
14
|
+
* Purely observational: omitting it leaves resolution byte-identical, which
|
|
15
|
+
* keeps the "degrade == readAllItems" equivalence intact.
|
|
16
|
+
*
|
|
17
|
+
* Scoped to LOCAL files ON PURPOSE. `originRawLines` arrives already parsed
|
|
18
|
+
* from `triage-origin.ts`, whose `originSnapshot` is SHA-keyed and has no
|
|
19
|
+
* channel to carry fragments; more importantly an origin blob is COMMITTED
|
|
20
|
+
* content read via `git show`, so corruption there is a repository defect to
|
|
21
|
+
* fix at the source, not transient local damage an operator can act on from
|
|
22
|
+
* a server log. Origin still gets full record-boundary RECOVERY (it shares
|
|
23
|
+
* `parseRawLines`) — only the reporting stops here.
|
|
24
|
+
*/
|
|
25
|
+
onCorrupt?: (fragment: CorruptFragment, source: "tracked" | "outbox") => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolve the triage view for the board, unioning the local tracked + outbox
|
|
29
|
+
* files with the delivered-origin snapshot. See the module header for the
|
|
30
|
+
* ordering contract and degrade semantics.
|
|
31
|
+
*/
|
|
32
|
+
export declare function readAllItemsWithDeliveredOrigin(trackedPath: string, opts: DeliveredOriginOptions): TriageItem[];
|
|
33
|
+
//# sourceMappingURL=triage-compose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-compose.d.ts","sourceRoot":"","sources":["../../src/core/triage-compose.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAO1D,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;IACjD;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAC;CAC/E;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,sBAAsB,GAC3B,UAAU,EAAE,CAQd"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* triage-compose.ts — delivered-origin 3-source composer.
|
|
3
|
+
*
|
|
4
|
+
* Root-cause fix for the "ghost" bug (WebUI Local-Main board re-showed items
|
|
5
|
+
* the user had dismissed). The board read only the LOCAL union (tracked ∪
|
|
6
|
+
* outbox). But on idle-main a dismiss routes to the gitignored outbox, an
|
|
7
|
+
* external sweep delivers it to `origin` (iterate PR, merge=union) and GCs the
|
|
8
|
+
* local outbox line — after which the local tracked file still has only the
|
|
9
|
+
* `append`, the local outbox is empty, and the dismiss lives on origin only.
|
|
10
|
+
* The board (never consulting origin) resolved the item OPEN again.
|
|
11
|
+
*
|
|
12
|
+
* This composer sources a THIRD set of raw lines — `git show
|
|
13
|
+
* origin/<default>:.shipwright/triage.jsonl`, provided by `triage-origin.ts`
|
|
14
|
+
* (cached by ref SHA; a background fetch keeps the ref fresh) — and resolves
|
|
15
|
+
* the union with the SAME two-pass (ts, file-order) algorithm as the tracked ∪
|
|
16
|
+
* outbox read. Origin is simply one more source of the identical event types.
|
|
17
|
+
*
|
|
18
|
+
* DESIGN GUARANTEES (external review, GPT-5.4 + Gemini 3.1 Pro):
|
|
19
|
+
* - `readAllItems` is NOT modified (it stays byte-for-byte parity-tested
|
|
20
|
+
* against the Python `read_all_items`); this is an additive composer.
|
|
21
|
+
* - Source order is EXACTLY `[local-tracked, origin, local-outbox]`. `ts` is
|
|
22
|
+
* primary; file-order only breaks equal-`ts` ties. Outbox stays LAST so the
|
|
23
|
+
* freshest LOCAL intent (a just-clicked dismiss not yet delivered) still
|
|
24
|
+
* wins an equal-`ts` tie — preserving the pre-existing tracked<outbox
|
|
25
|
+
* contract. Origin sits between: it beats stale local-tracked on an
|
|
26
|
+
* equal-`ts` tie but loses to a pending local outbox flip.
|
|
27
|
+
* - Read-only: this module NEVER mutates the working tree. `originRawLines`
|
|
28
|
+
* is produced by a `git show`/`git fetch` layer that only touches the
|
|
29
|
+
* object DB and remote-tracking refs.
|
|
30
|
+
* - Graceful degrade: `originRawLines === null` (origin unavailable — no
|
|
31
|
+
* upstream, offline, git error, feature-flag off) resolves EXACTLY the
|
|
32
|
+
* local union, i.e. identical to `readAllItems`. So the board is never
|
|
33
|
+
* worse than today.
|
|
34
|
+
*/
|
|
35
|
+
import { applyDeferOverlay } from "./triage-defer.js";
|
|
36
|
+
import { readLocalRawLinesSplit, resolveUnion, } from "./triage-store.js";
|
|
37
|
+
/**
|
|
38
|
+
* Resolve the triage view for the board, unioning the local tracked + outbox
|
|
39
|
+
* files with the delivered-origin snapshot. See the module header for the
|
|
40
|
+
* ordering contract and degrade semantics.
|
|
41
|
+
*/
|
|
42
|
+
export function readAllItemsWithDeliveredOrigin(trackedPath, opts) {
|
|
43
|
+
const { tracked, outbox } = readLocalRawLinesSplit(trackedPath, opts.onCorrupt);
|
|
44
|
+
const origin = opts.originRawLines ?? [];
|
|
45
|
+
// [tracked, origin, outbox] — outbox last (freshest local intent wins ties);
|
|
46
|
+
// origin between (beats stale tracked, loses to pending outbox). When origin
|
|
47
|
+
// is null/empty this is exactly `[...tracked, ...outbox]` = the local union.
|
|
48
|
+
// Overlay applied exactly once, same as readAllItems — see triage-store.ts.
|
|
49
|
+
return applyDeferOverlay(resolveUnion([...tracked, ...origin, ...outbox]), new Date());
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=triage-compose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-compose.js","sourceRoot":"","sources":["../../src/core/triage-compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,YAAY,GACb,MAAM,mBAAmB,CAAC;AA2B3B;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,WAAmB,EACnB,IAA4B;IAE5B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;IACzC,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACzF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TriageItem } from "../types/triage.js";
|
|
2
|
+
/** Bump when the SHAPE changes — not when an item gains a field. Mirrors triage_contract.py. */
|
|
3
|
+
export declare const CONTRACT_VERSION = 2;
|
|
4
|
+
export interface TriageListing {
|
|
5
|
+
contractVersion: number;
|
|
6
|
+
open: TriageItem[];
|
|
7
|
+
deferred: TriageItem[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The full `list --json` payload for a resolved view. `open` = status ===
|
|
11
|
+
* "triage"; `deferred` = status === "snoozed" (park-expiry already resolved
|
|
12
|
+
* by `applyDeferOverlay` inside `readAllItems`, so a due park is already in
|
|
13
|
+
* `open` by the time this runs). Both sections are COMPLETE — never capped,
|
|
14
|
+
* mirroring upstream's "the machine contract is never capped" rule.
|
|
15
|
+
* `deferred` is ordered by `sortDeferred` (soonest dated first).
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildTriageListing(items: TriageItem[], trackedPath: string): TriageListing;
|
|
18
|
+
//# sourceMappingURL=triage-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-contract.d.ts","sourceRoot":"","sources":["../../src/core/triage-contract.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EAAE,EACnB,WAAW,EAAE,MAAM,GAClB,aAAa,CAmBf"}
|