@svenroth-ai/shipwright 0.27.0 → 0.28.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/client/dist/assets/{EmbeddedTerminal-CqCQUDtp.js → EmbeddedTerminal-4xgNUBUu.js} +19 -19
- package/client/dist/assets/{abnfDiagram-VRR7QNED-DX2objTP.js → abnfDiagram-VRR7QNED-BdCNbaqc.js} +1 -1
- package/client/dist/assets/{arc-DQmjbsFU.js → arc-DoZTTE1N.js} +1 -1
- package/client/dist/assets/{architectureDiagram-ZJ3FMSHR-DAvCsPCW.js → architectureDiagram-ZJ3FMSHR-DFTG4KtO.js} +1 -1
- package/client/dist/assets/{blockDiagram-677ZJIJ3-DC-dlyYI.js → blockDiagram-677ZJIJ3-C34UBjOB.js} +1 -1
- package/client/dist/assets/{c4Diagram-LMCZKHZV-DSlmXfhE.js → c4Diagram-LMCZKHZV-CbqAB1Ou.js} +1 -1
- package/client/dist/assets/channel-DBcZw7Kn.js +1 -0
- package/client/dist/assets/{chunk-2Q5K7J3B-C111EHL6.js → chunk-2Q5K7J3B-4N6AnmBJ.js} +1 -1
- package/client/dist/assets/{chunk-32BRIVSS-DrCYs2XG.js → chunk-32BRIVSS-Cs67LiCy.js} +1 -1
- package/client/dist/assets/{chunk-5VM5RSS4-DIejoaXS.js → chunk-5VM5RSS4-Bwd7rtD3.js} +1 -1
- package/client/dist/assets/{chunk-EX3LRPZG-CGWNeH2g.js → chunk-EX3LRPZG-CQqGfptD.js} +1 -1
- package/client/dist/assets/{chunk-JWPE2WC7-CCH0SRFY.js → chunk-JWPE2WC7-ClvKd4PN.js} +1 -1
- package/client/dist/assets/{chunk-MOJQB5TN-B3OpZGRv.js → chunk-MOJQB5TN-Cwvj8GE1.js} +1 -1
- package/client/dist/assets/{chunk-RYQCIY6F-BKhdp_8v.js → chunk-RYQCIY6F-DrWMx37d.js} +1 -1
- package/client/dist/assets/{chunk-V7JOEXUC-B6Bu8x1y.js → chunk-V7JOEXUC-CYFfa4PY.js} +1 -1
- package/client/dist/assets/{chunk-VR4S4FIN-OgFi2_iB.js → chunk-VR4S4FIN-B5eWtesm.js} +1 -1
- package/client/dist/assets/{chunk-XXDRQBXY-xyjuuhxl.js → chunk-XXDRQBXY-BQAZ6Our.js} +1 -1
- package/client/dist/assets/classDiagram-OUVF2IWQ-C3Q1V9DU.js +1 -0
- package/client/dist/assets/classDiagram-v2-EOCWNBFH-C3Q1V9DU.js +1 -0
- package/client/dist/assets/{cose-bilkent-JH36ORCC-BQIH3SCK.js → cose-bilkent-JH36ORCC-C76Yia6h.js} +1 -1
- package/client/dist/assets/{cynefin-VYW2F7L2-oyLAz8te.js → cynefin-VYW2F7L2-pJe7rdTi.js} +1 -1
- package/client/dist/assets/{cynefinDiagram-TSTJHNR4-DoLCsH0l.js → cynefinDiagram-TSTJHNR4-EeHQ7dYV.js} +1 -1
- package/client/dist/assets/{dagre-VKFMJZFB-D7djx1_Y.js → dagre-VKFMJZFB-VXOY6IHR.js} +1 -1
- package/client/dist/assets/{diagram-FQU43EPY-DFuYE0Vf.js → diagram-FQU43EPY-DW_-leqw.js} +1 -1
- package/client/dist/assets/{diagram-G47NLZAW-CffCZVXk.js → diagram-G47NLZAW-C_hsLD4u.js} +1 -1
- package/client/dist/assets/{diagram-NH7WQ7WH-BhrHtUlt.js → diagram-NH7WQ7WH-CbeQuO_f.js} +1 -1
- package/client/dist/assets/{diagram-OA4YK3LP-CwQPbOn0.js → diagram-OA4YK3LP-DRHY5d_c.js} +1 -1
- package/client/dist/assets/{diagram-WEI45ONY-abtYnYqH.js → diagram-WEI45ONY-B87OYR_S.js} +1 -1
- package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DfV7gT4m.js → ebnfDiagram-CCIWWBDH-B8Z8WHF6.js} +1 -1
- package/client/dist/assets/{erDiagram-Q63AITRT-vtbCprgH.js → erDiagram-Q63AITRT-DaD7oa9H.js} +1 -1
- package/client/dist/assets/{flowDiagram-23GEKE2U-CVCgcyDF.js → flowDiagram-23GEKE2U-GrMVpsea.js} +1 -1
- package/client/dist/assets/{ganttDiagram-NO4QXBWP-BclyOgMb.js → ganttDiagram-NO4QXBWP-K3X0DYBa.js} +1 -1
- package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-BXT4rIKj.js → gitGraphDiagram-IHSO6WYX-B2SEx0xa.js} +1 -1
- package/client/dist/assets/index-CIpLt0ie.js +863 -0
- package/client/dist/assets/index-DGtnTeFd.css +1 -0
- package/client/dist/assets/{infoDiagram-FWYZ7A6U-Dr4mN24J.js → infoDiagram-FWYZ7A6U-Fi8fQ95G.js} +1 -1
- package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-BBUFWq5C.js → ishikawaDiagram-FXEZZL3T-CrN7QJzt.js} +1 -1
- package/client/dist/assets/{journeyDiagram-5HDEW3XC-CmclipcQ.js → journeyDiagram-5HDEW3XC-XHIsl7rM.js} +1 -1
- package/client/dist/assets/{kanban-definition-HUTT4EX6-eIzUeZ03.js → kanban-definition-HUTT4EX6-A6HJqHw7.js} +1 -1
- package/client/dist/assets/{linear-DGiT7uKK.js → linear-D1vF9IQB.js} +1 -1
- package/client/dist/assets/{mermaid.core-BcLNGbxW.js → mermaid.core-D6w9zlA0.js} +4 -4
- package/client/dist/assets/{mindmap-definition-LN4V7U3C-C4ANnNiP.js → mindmap-definition-LN4V7U3C-CxRkUj6Z.js} +1 -1
- package/client/dist/assets/{pegDiagram-2B236MQR-DnMeh3Yh.js → pegDiagram-2B236MQR-Bs9dp-8a.js} +1 -1
- package/client/dist/assets/{pieDiagram-ENE6RG2P-CKV_rkhF.js → pieDiagram-ENE6RG2P-DBWILzB8.js} +1 -1
- package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-BuUsGwHh.js → quadrantDiagram-ABIIQ3AL-DrCVJJx6.js} +1 -1
- package/client/dist/assets/{railroadDiagram-RFXS5EU6-BwwdKnFL.js → railroadDiagram-RFXS5EU6-BdPW2dNf.js} +1 -1
- package/client/dist/assets/{requirementDiagram-TGXJPOKE-CpQZouJV.js → requirementDiagram-TGXJPOKE-Bj_g3tC5.js} +1 -1
- package/client/dist/assets/{sankeyDiagram-HTMAVEWB-4fnDUNVa.js → sankeyDiagram-HTMAVEWB-BGL9NnsS.js} +1 -1
- package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-BOcaWlM0.js → sequenceDiagram-DBY2YBRQ-DEirxTZY.js} +1 -1
- package/client/dist/assets/{sizeCapture-X5ZJPWSS-_pv-9R0c.js → sizeCapture-X5ZJPWSS-BtLrvrea.js} +1 -1
- package/client/dist/assets/{stateDiagram-2N3HPSRC-CFwCOonY.js → stateDiagram-2N3HPSRC-D3GXIouX.js} +1 -1
- package/client/dist/assets/stateDiagram-v2-6OUMAXLB-D3lXe_mJ.js +1 -0
- package/client/dist/assets/{swimlanes-5IMT3BWC-DFa2tzxu.js → swimlanes-5IMT3BWC-PMRQzNhU.js} +2 -2
- package/client/dist/assets/swimlanesDiagram-G3AALYLV-DMLbRFiO.js +8 -0
- package/client/dist/assets/{timeline-definition-FHXFAJF6-rhGYElgn.js → timeline-definition-FHXFAJF6-CnBKJtD_.js} +1 -1
- package/client/dist/assets/{vennDiagram-L72KCM5P-BoGjRxyA.js → vennDiagram-L72KCM5P-BYmiJYoh.js} +1 -1
- package/client/dist/assets/{wardleyDiagram-EHGQE667-D-IGv5bH.js → wardleyDiagram-EHGQE667-DU7vW8q3.js} +1 -1
- package/client/dist/assets/{xychartDiagram-FW5EYKEG-D9PFTCfm.js → xychartDiagram-FW5EYKEG-BEtPvBSU.js} +1 -1
- package/client/dist/index.html +2 -2
- package/lib/preflight.mjs +24 -5
- package/lib/util.mjs +5 -1
- package/package.json +1 -1
- package/scripts/deploy-procs.mjs +105 -20
- package/scripts/deploy-swap.mjs +23 -2
- package/server/dist/config.d.ts +9 -0
- package/server/dist/config.d.ts.map +1 -1
- package/server/dist/config.js +1 -0
- package/server/dist/config.js.map +1 -1
- package/server/dist/core/campaign-events.d.ts.map +1 -1
- package/server/dist/core/campaign-events.js +1 -0
- package/server/dist/core/campaign-events.js.map +1 -1
- package/server/dist/core/campaign-loop-state.d.ts.map +1 -1
- package/server/dist/core/campaign-loop-state.js +54 -21
- package/server/dist/core/campaign-loop-state.js.map +1 -1
- package/server/dist/core/campaign-parse.d.ts +4 -0
- package/server/dist/core/campaign-parse.d.ts.map +1 -1
- package/server/dist/core/campaign-parse.js +9 -0
- package/server/dist/core/campaign-parse.js.map +1 -1
- package/server/dist/core/campaign-readiness-schema.d.ts +33 -0
- package/server/dist/core/campaign-readiness-schema.d.ts.map +1 -0
- package/server/dist/core/campaign-readiness-schema.js +70 -0
- package/server/dist/core/campaign-readiness-schema.js.map +1 -0
- package/server/dist/core/campaign-readiness.d.ts +59 -0
- package/server/dist/core/campaign-readiness.d.ts.map +1 -0
- package/server/dist/core/campaign-readiness.js +163 -0
- package/server/dist/core/campaign-readiness.js.map +1 -0
- package/server/dist/core/campaign-status-json.d.ts +3 -0
- package/server/dist/core/campaign-status-json.d.ts.map +1 -1
- package/server/dist/core/campaign-status-json.js +7 -0
- package/server/dist/core/campaign-status-json.js.map +1 -1
- package/server/dist/core/campaign-store.d.ts.map +1 -1
- package/server/dist/core/campaign-store.js +4 -1
- package/server/dist/core/campaign-store.js.map +1 -1
- package/server/dist/core/campaign-types.d.ts +8 -0
- package/server/dist/core/campaign-types.d.ts.map +1 -1
- package/server/dist/core/campaign-worktree-root.d.ts +19 -0
- package/server/dist/core/campaign-worktree-root.d.ts.map +1 -0
- package/server/dist/core/campaign-worktree-root.js +76 -0
- package/server/dist/core/campaign-worktree-root.js.map +1 -0
- package/server/dist/core/claim-record-lock.d.ts +30 -0
- package/server/dist/core/claim-record-lock.d.ts.map +1 -0
- package/server/dist/core/claim-record-lock.js +90 -0
- package/server/dist/core/claim-record-lock.js.map +1 -0
- package/server/dist/core/cli-child-spawn.d.ts +28 -0
- package/server/dist/core/cli-child-spawn.d.ts.map +1 -0
- package/server/dist/core/cli-child-spawn.js +146 -0
- package/server/dist/core/cli-child-spawn.js.map +1 -0
- package/server/dist/core/codex-models-probe.d.ts +46 -0
- package/server/dist/core/codex-models-probe.d.ts.map +1 -0
- package/server/dist/core/codex-models-probe.js +103 -0
- package/server/dist/core/codex-models-probe.js.map +1 -0
- package/server/dist/core/codex-oracle-runner.d.ts +68 -0
- package/server/dist/core/codex-oracle-runner.d.ts.map +1 -0
- package/server/dist/core/codex-oracle-runner.js +124 -0
- package/server/dist/core/codex-oracle-runner.js.map +1 -0
- package/server/dist/core/codex-status-report.d.ts +6 -0
- package/server/dist/core/codex-status-report.d.ts.map +1 -0
- package/server/dist/core/codex-status-report.js +40 -0
- package/server/dist/core/codex-status-report.js.map +1 -0
- package/server/dist/core/codex-task-watcher-types.d.ts +69 -0
- package/server/dist/core/codex-task-watcher-types.d.ts.map +1 -0
- package/server/dist/core/codex-task-watcher-types.js +12 -0
- package/server/dist/core/codex-task-watcher-types.js.map +1 -0
- package/server/dist/core/codex-task-watcher.d.ts +30 -0
- package/server/dist/core/codex-task-watcher.d.ts.map +1 -0
- package/server/dist/core/codex-task-watcher.js +252 -0
- package/server/dist/core/codex-task-watcher.js.map +1 -0
- package/server/dist/core/codex-terminal-signal-detect.d.ts +7 -0
- package/server/dist/core/codex-terminal-signal-detect.d.ts.map +1 -0
- package/server/dist/core/codex-terminal-signal-detect.js +113 -0
- package/server/dist/core/codex-terminal-signal-detect.js.map +1 -0
- package/server/dist/core/codex-thread-discovery.d.ts +21 -0
- package/server/dist/core/codex-thread-discovery.d.ts.map +1 -0
- package/server/dist/core/codex-thread-discovery.js +169 -0
- package/server/dist/core/codex-thread-discovery.js.map +1 -0
- package/server/dist/core/codextender-auth-file-sweep.d.ts +41 -0
- package/server/dist/core/codextender-auth-file-sweep.d.ts.map +1 -0
- package/server/dist/core/codextender-auth-file-sweep.js +97 -0
- package/server/dist/core/codextender-auth-file-sweep.js.map +1 -0
- package/server/dist/core/codextender-proxy-probe.d.ts +80 -0
- package/server/dist/core/codextender-proxy-probe.d.ts.map +1 -0
- package/server/dist/core/codextender-proxy-probe.js +179 -0
- package/server/dist/core/codextender-proxy-probe.js.map +1 -0
- package/server/dist/core/contract-version.d.ts +16 -1
- package/server/dist/core/contract-version.d.ts.map +1 -1
- package/server/dist/core/contract-version.js +16 -1
- package/server/dist/core/contract-version.js.map +1 -1
- package/server/dist/core/launcher-codex.d.ts +61 -0
- package/server/dist/core/launcher-codex.d.ts.map +1 -0
- package/server/dist/core/launcher-codex.js +187 -0
- package/server/dist/core/launcher-codex.js.map +1 -0
- package/server/dist/core/launcher-codextender-env.d.ts +44 -0
- package/server/dist/core/launcher-codextender-env.d.ts.map +1 -0
- package/server/dist/core/launcher-codextender-env.js +212 -0
- package/server/dist/core/launcher-codextender-env.js.map +1 -0
- package/server/dist/core/launcher-codextender.d.ts +72 -0
- package/server/dist/core/launcher-codextender.d.ts.map +1 -0
- package/server/dist/core/launcher-codextender.js +98 -0
- package/server/dist/core/launcher-codextender.js.map +1 -0
- package/server/dist/core/launcher-codextender.smoke-helpers.d.ts +25 -0
- package/server/dist/core/launcher-codextender.smoke-helpers.d.ts.map +1 -0
- package/server/dist/core/launcher-codextender.smoke-helpers.js +211 -0
- package/server/dist/core/launcher-codextender.smoke-helpers.js.map +1 -0
- package/server/dist/core/launcher-permission-flags.d.ts +17 -0
- package/server/dist/core/launcher-permission-flags.d.ts.map +1 -0
- package/server/dist/core/launcher-permission-flags.js +27 -0
- package/server/dist/core/launcher-permission-flags.js.map +1 -0
- package/server/dist/core/launcher.d.ts +18 -0
- package/server/dist/core/launcher.d.ts.map +1 -1
- package/server/dist/core/launcher.js +6 -0
- package/server/dist/core/launcher.js.map +1 -1
- package/server/dist/core/leadwright-preflight-transport.d.ts +27 -0
- package/server/dist/core/leadwright-preflight-transport.d.ts.map +1 -0
- package/server/dist/core/leadwright-preflight-transport.js +124 -0
- package/server/dist/core/leadwright-preflight-transport.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-tests-ac.d.ts +6 -0
- package/server/dist/core/mission-context/artifacts-tests-ac.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts-tests-ac.js +31 -0
- package/server/dist/core/mission-context/artifacts-tests-ac.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-tests.d.ts.map +1 -1
- package/server/dist/core/mission-context/artifacts-tests.js +20 -0
- package/server/dist/core/mission-context/artifacts-tests.js.map +1 -1
- package/server/dist/core/mission-context/resolver-io.d.ts +10 -0
- package/server/dist/core/mission-context/resolver-io.d.ts.map +1 -1
- package/server/dist/core/mission-context/resolver-parts.d.ts +8 -7
- package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -1
- package/server/dist/core/mission-context/resolver-parts.js +22 -14
- package/server/dist/core/mission-context/resolver-parts.js.map +1 -1
- package/server/dist/core/mission-context/resolver.d.ts.map +1 -1
- package/server/dist/core/mission-context/resolver.js +1 -1
- package/server/dist/core/mission-context/resolver.js.map +1 -1
- package/server/dist/core/mission-context/run-id-recovery.d.ts +18 -2
- package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -1
- package/server/dist/core/mission-context/run-id-recovery.js +38 -18
- package/server/dist/core/mission-context/run-id-recovery.js.map +1 -1
- package/server/dist/core/mission-context/traceability.d.ts.map +1 -1
- package/server/dist/core/mission-context/traceability.js +15 -1
- package/server/dist/core/mission-context/traceability.js.map +1 -1
- package/server/dist/core/mission-context/types-slice2.d.ts +44 -0
- package/server/dist/core/mission-context/types-slice2.d.ts.map +1 -1
- package/server/dist/core/model-tier-config-reader.d.ts +14 -1
- package/server/dist/core/model-tier-config-reader.d.ts.map +1 -1
- package/server/dist/core/model-tier-config-reader.js +34 -2
- package/server/dist/core/model-tier-config-reader.js.map +1 -1
- package/server/dist/core/powershell-probe.smoke-helpers.d.ts +12 -0
- package/server/dist/core/powershell-probe.smoke-helpers.d.ts.map +1 -0
- package/server/dist/core/powershell-probe.smoke-helpers.js +80 -0
- package/server/dist/core/powershell-probe.smoke-helpers.js.map +1 -0
- package/server/dist/core/readiness-install-hints.d.ts +1 -1
- package/server/dist/core/readiness-install-hints.d.ts.map +1 -1
- package/server/dist/core/readiness-install-hints.js +5 -0
- package/server/dist/core/readiness-install-hints.js.map +1 -1
- package/server/dist/core/readiness-probe-run.d.ts +61 -0
- package/server/dist/core/readiness-probe-run.d.ts.map +1 -1
- package/server/dist/core/readiness-probe-run.js +93 -15
- package/server/dist/core/readiness-probe-run.js.map +1 -1
- package/server/dist/core/readiness-probe.d.ts +1 -1
- package/server/dist/core/readiness-probe.d.ts.map +1 -1
- package/server/dist/core/readiness-probe.js +36 -8
- package/server/dist/core/readiness-probe.js.map +1 -1
- package/server/dist/core/sdk-sessions-store.d.ts +46 -0
- package/server/dist/core/sdk-sessions-store.d.ts.map +1 -1
- package/server/dist/core/sdk-sessions-store.js +1 -0
- package/server/dist/core/sdk-sessions-store.js.map +1 -1
- package/server/dist/core/sdk-sessions-validate.d.ts.map +1 -1
- package/server/dist/core/sdk-sessions-validate.js +11 -0
- package/server/dist/core/sdk-sessions-validate.js.map +1 -1
- package/server/dist/core/settings-reader.d.ts +18 -0
- package/server/dist/core/settings-reader.d.ts.map +1 -0
- package/server/dist/core/settings-reader.js +40 -0
- package/server/dist/core/settings-reader.js.map +1 -0
- package/server/dist/core/shell-quote.d.ts +29 -0
- package/server/dist/core/shell-quote.d.ts.map +1 -1
- package/server/dist/core/shell-quote.js +34 -0
- package/server/dist/core/shell-quote.js.map +1 -1
- package/server/dist/core/task-editability.d.ts +1 -1
- package/server/dist/core/task-editability.d.ts.map +1 -1
- package/server/dist/core/task-editability.js +1 -0
- package/server/dist/core/task-editability.js.map +1 -1
- package/server/dist/core/triage-cli-runner.d.ts.map +1 -1
- package/server/dist/core/triage-cli-runner.js +6 -21
- package/server/dist/core/triage-cli-runner.js.map +1 -1
- package/server/dist/core/triage-compose.d.ts.map +1 -1
- package/server/dist/core/triage-compose.js +34 -3
- package/server/dist/core/triage-compose.js.map +1 -1
- package/server/dist/core/triage-store.d.ts +2 -1
- package/server/dist/core/triage-store.d.ts.map +1 -1
- package/server/dist/core/triage-store.js +1 -1
- package/server/dist/core/triage-store.js.map +1 -1
- package/server/dist/external/create-external-routes-args.d.ts +122 -0
- package/server/dist/external/create-external-routes-args.d.ts.map +1 -0
- package/server/dist/external/create-external-routes-args.js +2 -0
- package/server/dist/external/create-external-routes-args.js.map +1 -0
- package/server/dist/external/inbox/_codex.d.ts +14 -0
- package/server/dist/external/inbox/_codex.d.ts.map +1 -0
- package/server/dist/external/inbox/_codex.js +88 -0
- package/server/dist/external/inbox/_codex.js.map +1 -0
- package/server/dist/external/inbox/_derive.d.ts.map +1 -1
- package/server/dist/external/inbox/_derive.js +11 -0
- package/server/dist/external/inbox/_derive.js.map +1 -1
- package/server/dist/external/inbox/_types.d.ts +23 -0
- package/server/dist/external/inbox/_types.d.ts.map +1 -1
- package/server/dist/external/inbox/_types.js +8 -5
- package/server/dist/external/inbox/_types.js.map +1 -1
- package/server/dist/external/inbox/routes.d.ts +7 -0
- package/server/dist/external/inbox/routes.d.ts.map +1 -1
- package/server/dist/external/inbox/routes.js +15 -2
- package/server/dist/external/inbox/routes.js.map +1 -1
- package/server/dist/external/launch/_helpers.d.ts +4 -0
- package/server/dist/external/launch/_helpers.d.ts.map +1 -1
- package/server/dist/external/launch/_helpers.js.map +1 -1
- package/server/dist/external/launch/action-substitution-branch.d.ts +12 -0
- package/server/dist/external/launch/action-substitution-branch.d.ts.map +1 -1
- package/server/dist/external/launch/action-substitution-branch.js +35 -1
- package/server/dist/external/launch/action-substitution-branch.js.map +1 -1
- package/server/dist/external/launch/branch-dispatch.d.ts +15 -0
- package/server/dist/external/launch/branch-dispatch.d.ts.map +1 -0
- package/server/dist/external/launch/branch-dispatch.js +73 -0
- package/server/dist/external/launch/branch-dispatch.js.map +1 -0
- package/server/dist/external/launch/campaign-step-branch.d.ts +7 -1
- package/server/dist/external/launch/campaign-step-branch.d.ts.map +1 -1
- package/server/dist/external/launch/campaign-step-branch.js +70 -2
- package/server/dist/external/launch/campaign-step-branch.js.map +1 -1
- package/server/dist/external/launch/claim-executor-permissions.d.ts +31 -0
- package/server/dist/external/launch/claim-executor-permissions.d.ts.map +1 -0
- package/server/dist/external/launch/claim-executor-permissions.js +107 -0
- package/server/dist/external/launch/claim-executor-permissions.js.map +1 -0
- package/server/dist/external/launch/claim-executor-template-arming.d.ts +42 -0
- package/server/dist/external/launch/claim-executor-template-arming.d.ts.map +1 -0
- package/server/dist/external/launch/claim-executor-template-arming.js +121 -0
- package/server/dist/external/launch/claim-executor-template-arming.js.map +1 -0
- package/server/dist/external/launch/claim-holder-gate.d.ts +9 -0
- package/server/dist/external/launch/claim-holder-gate.d.ts.map +1 -1
- package/server/dist/external/launch/claim-holder-gate.js +10 -2
- package/server/dist/external/launch/claim-holder-gate.js.map +1 -1
- package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts +3 -0
- package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts.map +1 -0
- package/server/dist/external/launch/claim-permission-perimeter-assert.js +24 -0
- package/server/dist/external/launch/claim-permission-perimeter-assert.js.map +1 -0
- package/server/dist/external/launch/legacy-fallback-branch.d.ts +14 -0
- package/server/dist/external/launch/legacy-fallback-branch.d.ts.map +1 -1
- package/server/dist/external/launch/legacy-fallback-branch.js +3 -1
- package/server/dist/external/launch/legacy-fallback-branch.js.map +1 -1
- package/server/dist/external/launch/master-run-branch.js +2 -2
- package/server/dist/external/launch/master-run-branch.js.map +1 -1
- package/server/dist/external/launch/mixed-intents-guard.d.ts +10 -0
- package/server/dist/external/launch/mixed-intents-guard.d.ts.map +1 -0
- package/server/dist/external/launch/mixed-intents-guard.js +49 -0
- package/server/dist/external/launch/mixed-intents-guard.js.map +1 -0
- package/server/dist/external/launch/parse-body.d.ts +29 -0
- package/server/dist/external/launch/parse-body.d.ts.map +1 -1
- package/server/dist/external/launch/parse-body.js +66 -0
- package/server/dist/external/launch/parse-body.js.map +1 -1
- package/server/dist/external/launch/routes.d.ts +3 -0
- package/server/dist/external/launch/routes.d.ts.map +1 -1
- package/server/dist/external/launch/routes.js +76 -109
- package/server/dist/external/launch/routes.js.map +1 -1
- package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts +20 -0
- package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts.map +1 -0
- package/server/dist/external/launch/runtime-chokepoint-codextender.js +51 -0
- package/server/dist/external/launch/runtime-chokepoint-codextender.js.map +1 -0
- package/server/dist/external/launch/runtime-chokepoint-errors.d.ts +33 -0
- package/server/dist/external/launch/runtime-chokepoint-errors.d.ts.map +1 -0
- package/server/dist/external/launch/runtime-chokepoint-errors.js +63 -0
- package/server/dist/external/launch/runtime-chokepoint-errors.js.map +1 -0
- package/server/dist/external/launch/runtime-chokepoint.d.ts +120 -0
- package/server/dist/external/launch/runtime-chokepoint.d.ts.map +1 -0
- package/server/dist/external/launch/runtime-chokepoint.js +201 -0
- package/server/dist/external/launch/runtime-chokepoint.js.map +1 -0
- package/server/dist/external/mission-context/routes.d.ts +33 -27
- package/server/dist/external/mission-context/routes.d.ts.map +1 -1
- package/server/dist/external/mission-context/routes.js +30 -27
- package/server/dist/external/mission-context/routes.js.map +1 -1
- package/server/dist/external/mission-context/test-harness.d.ts +6 -0
- package/server/dist/external/mission-context/test-harness.d.ts.map +1 -1
- package/server/dist/external/mission-context/test-harness.js +6 -1
- package/server/dist/external/mission-context/test-harness.js.map +1 -1
- package/server/dist/external/mission-context/wire.d.ts.map +1 -1
- package/server/dist/external/mission-context/wire.js +24 -2
- package/server/dist/external/mission-context/wire.js.map +1 -1
- package/server/dist/external/org/audit-log.d.ts +19 -0
- package/server/dist/external/org/audit-log.d.ts.map +1 -1
- package/server/dist/external/org/audit-log.js +33 -18
- package/server/dist/external/org/audit-log.js.map +1 -1
- package/server/dist/external/org/beat-effect-audit-read.d.ts +15 -0
- package/server/dist/external/org/beat-effect-audit-read.d.ts.map +1 -0
- package/server/dist/external/org/beat-effect-audit-read.js +73 -0
- package/server/dist/external/org/beat-effect-audit-read.js.map +1 -0
- package/server/dist/external/org/beat-register-health.d.ts +57 -0
- package/server/dist/external/org/beat-register-health.d.ts.map +1 -0
- package/server/dist/external/org/beat-register-health.js +125 -0
- package/server/dist/external/org/beat-register-health.js.map +1 -0
- package/server/dist/external/org/beat-register-release-core.d.ts.map +1 -1
- package/server/dist/external/org/beat-register-release-core.js +4 -1
- package/server/dist/external/org/beat-register-release-core.js.map +1 -1
- package/server/dist/external/org/beat-register-release-request.d.ts +20 -0
- package/server/dist/external/org/beat-register-release-request.d.ts.map +1 -0
- package/server/dist/external/org/beat-register-release-request.js +92 -0
- package/server/dist/external/org/beat-register-release-request.js.map +1 -0
- package/server/dist/external/org/beat-register-release.d.ts +3 -1
- package/server/dist/external/org/beat-register-release.d.ts.map +1 -1
- package/server/dist/external/org/beat-register-release.js +15 -57
- package/server/dist/external/org/beat-register-release.js.map +1 -1
- package/server/dist/external/org/beat-register.d.ts +18 -20
- package/server/dist/external/org/beat-register.d.ts.map +1 -1
- package/server/dist/external/org/beat-register.js +30 -56
- package/server/dist/external/org/beat-register.js.map +1 -1
- package/server/dist/external/org/beat-steps-read.d.ts +17 -0
- package/server/dist/external/org/beat-steps-read.d.ts.map +1 -0
- package/server/dist/external/org/beat-steps-read.js +89 -0
- package/server/dist/external/org/beat-steps-read.js.map +1 -0
- package/server/dist/external/org/charter-authority-read.d.ts +39 -0
- package/server/dist/external/org/charter-authority-read.d.ts.map +1 -0
- package/server/dist/external/org/charter-authority-read.js +142 -0
- package/server/dist/external/org/charter-authority-read.js.map +1 -0
- package/server/dist/external/org/commit-validate.d.ts +18 -0
- package/server/dist/external/org/commit-validate.d.ts.map +1 -0
- package/server/dist/external/org/commit-validate.js +59 -0
- package/server/dist/external/org/commit-validate.js.map +1 -0
- package/server/dist/external/org/commit-writes.d.ts +68 -0
- package/server/dist/external/org/commit-writes.d.ts.map +1 -0
- package/server/dist/external/org/commit-writes.js +110 -0
- package/server/dist/external/org/commit-writes.js.map +1 -0
- package/server/dist/external/org/commit.d.ts +73 -0
- package/server/dist/external/org/commit.d.ts.map +1 -0
- package/server/dist/external/org/commit.js +181 -0
- package/server/dist/external/org/commit.js.map +1 -0
- package/server/dist/external/org/commit.test-fixtures.d.ts +38 -0
- package/server/dist/external/org/commit.test-fixtures.d.ts.map +1 -0
- package/server/dist/external/org/commit.test-fixtures.js +67 -0
- package/server/dist/external/org/commit.test-fixtures.js.map +1 -0
- package/server/dist/external/org/countersign-core.d.ts +19 -0
- package/server/dist/external/org/countersign-core.d.ts.map +1 -0
- package/server/dist/external/org/countersign-core.js +122 -0
- package/server/dist/external/org/countersign-core.js.map +1 -0
- package/server/dist/external/org/countersign-request.d.ts +14 -0
- package/server/dist/external/org/countersign-request.d.ts.map +1 -0
- package/server/dist/external/org/countersign-request.js +78 -0
- package/server/dist/external/org/countersign-request.js.map +1 -0
- package/server/dist/external/org/countersign.d.ts +6 -5
- package/server/dist/external/org/countersign.d.ts.map +1 -1
- package/server/dist/external/org/countersign.js +12 -141
- package/server/dist/external/org/countersign.js.map +1 -1
- package/server/dist/external/org/daemon-config-read.d.ts +31 -0
- package/server/dist/external/org/daemon-config-read.d.ts.map +1 -0
- package/server/dist/external/org/daemon-config-read.js +50 -0
- package/server/dist/external/org/daemon-config-read.js.map +1 -0
- package/server/dist/external/org/decisions-lock.d.ts +6 -4
- package/server/dist/external/org/decisions-lock.d.ts.map +1 -1
- package/server/dist/external/org/decisions-lock.js +9 -8
- package/server/dist/external/org/decisions-lock.js.map +1 -1
- package/server/dist/external/org/domains.d.ts +35 -0
- package/server/dist/external/org/domains.d.ts.map +1 -0
- package/server/dist/external/org/domains.js +29 -0
- package/server/dist/external/org/domains.js.map +1 -0
- package/server/dist/external/org/existing-charters-read.d.ts +5 -0
- package/server/dist/external/org/existing-charters-read.d.ts.map +1 -0
- package/server/dist/external/org/existing-charters-read.js +31 -0
- package/server/dist/external/org/existing-charters-read.js.map +1 -0
- package/server/dist/external/org/leadwright-proposal-merge.d.ts +54 -0
- package/server/dist/external/org/leadwright-proposal-merge.d.ts.map +1 -0
- package/server/dist/external/org/leadwright-proposal-merge.js +47 -0
- package/server/dist/external/org/leadwright-proposal-merge.js.map +1 -0
- package/server/dist/external/org/mount.d.ts +10 -2
- package/server/dist/external/org/mount.d.ts.map +1 -1
- package/server/dist/external/org/mount.js +6 -1
- package/server/dist/external/org/mount.js.map +1 -1
- package/server/dist/external/org/org-chart-full-read.d.ts +19 -0
- package/server/dist/external/org/org-chart-full-read.d.ts.map +1 -0
- package/server/dist/external/org/org-chart-full-read.js +58 -0
- package/server/dist/external/org/org-chart-full-read.js.map +1 -0
- package/server/dist/external/org/org-file-lock.d.ts +41 -0
- package/server/dist/external/org/org-file-lock.d.ts.map +1 -0
- package/server/dist/external/org/org-file-lock.js +90 -0
- package/server/dist/external/org/org-file-lock.js.map +1 -0
- package/server/dist/external/org/routes.d.ts +10 -0
- package/server/dist/external/org/routes.d.ts.map +1 -1
- package/server/dist/external/org/routes.js +22 -1
- package/server/dist/external/org/routes.js.map +1 -1
- package/server/dist/external/org/verdict.d.ts +57 -0
- package/server/dist/external/org/verdict.d.ts.map +1 -0
- package/server/dist/external/org/verdict.js +74 -0
- package/server/dist/external/org/verdict.js.map +1 -0
- package/server/dist/external/routes.d.ts +3 -101
- package/server/dist/external/routes.d.ts.map +1 -1
- package/server/dist/external/routes.js +19 -4
- package/server/dist/external/routes.js.map +1 -1
- package/server/dist/external/tasks/create.d.ts.map +1 -1
- package/server/dist/external/tasks/create.js +8 -0
- package/server/dist/external/tasks/create.js.map +1 -1
- package/server/dist/external/tasks/fork.d.ts +29 -0
- package/server/dist/external/tasks/fork.d.ts.map +1 -0
- package/server/dist/external/tasks/fork.js +166 -0
- package/server/dist/external/tasks/fork.js.map +1 -0
- package/server/dist/external/tasks/lifecycle.d.ts.map +1 -1
- package/server/dist/external/tasks/lifecycle.js +10 -57
- package/server/dist/external/tasks/lifecycle.js.map +1 -1
- package/server/dist/external/tasks/patch.d.ts.map +1 -1
- package/server/dist/external/tasks/patch.js +17 -0
- package/server/dist/external/tasks/patch.js.map +1 -1
- package/server/dist/external/tasks/routes.d.ts +2 -0
- package/server/dist/external/tasks/routes.d.ts.map +1 -1
- package/server/dist/external/tasks/routes.js +7 -0
- package/server/dist/external/tasks/routes.js.map +1 -1
- package/server/dist/external/transcript/routes.d.ts.map +1 -1
- package/server/dist/external/transcript/routes.js +25 -3
- package/server/dist/external/transcript/routes.js.map +1 -1
- package/server/dist/external-routes-wiring.d.ts +28 -0
- package/server/dist/external-routes-wiring.d.ts.map +1 -0
- package/server/dist/external-routes-wiring.js +61 -0
- package/server/dist/external-routes-wiring.js.map +1 -0
- package/server/dist/index.d.ts.map +1 -1
- package/server/dist/index.js +111 -44
- package/server/dist/index.js.map +1 -1
- package/server/dist/lib/resolveHonoHost.d.ts.map +1 -1
- package/server/dist/lib/resolveHonoHost.js +16 -1
- package/server/dist/lib/resolveHonoHost.js.map +1 -1
- package/server/dist/routes/_triage-api-harness.d.ts +1 -1
- package/server/dist/routes/_triage-api-harness.d.ts.map +1 -1
- package/server/dist/routes/_triage-api-harness.js.map +1 -1
- package/server/dist/routes/campaigns-readiness.d.ts +10 -0
- package/server/dist/routes/campaigns-readiness.d.ts.map +1 -0
- package/server/dist/routes/campaigns-readiness.js +58 -0
- package/server/dist/routes/campaigns-readiness.js.map +1 -0
- package/server/dist/routes/campaigns.d.ts.map +1 -1
- package/server/dist/routes/campaigns.js +3 -0
- package/server/dist/routes/campaigns.js.map +1 -1
- package/server/dist/routes/codex-models.d.ts +15 -0
- package/server/dist/routes/codex-models.d.ts.map +1 -0
- package/server/dist/routes/codex-models.js +77 -0
- package/server/dist/routes/codex-models.js.map +1 -0
- package/server/dist/routes/codextender-models.d.ts +16 -0
- package/server/dist/routes/codextender-models.d.ts.map +1 -0
- package/server/dist/routes/codextender-models.js +81 -0
- package/server/dist/routes/codextender-models.js.map +1 -0
- package/server/dist/routes/diagnostics.d.ts +15 -0
- package/server/dist/routes/diagnostics.d.ts.map +1 -1
- package/server/dist/routes/diagnostics.js +1 -0
- package/server/dist/routes/diagnostics.js.map +1 -1
- package/server/dist/routes/org-chart-lead-guard.d.ts +10 -0
- package/server/dist/routes/org-chart-lead-guard.d.ts.map +1 -0
- package/server/dist/routes/org-chart-lead-guard.js +49 -0
- package/server/dist/routes/org-chart-lead-guard.js.map +1 -0
- package/server/dist/routes/org-inventory-composite.d.ts +20 -0
- package/server/dist/routes/org-inventory-composite.d.ts.map +1 -0
- package/server/dist/routes/org-inventory-composite.js +100 -0
- package/server/dist/routes/org-inventory-composite.js.map +1 -0
- package/server/dist/routes/org-lead-setup-wizard.d.ts +10 -0
- package/server/dist/routes/org-lead-setup-wizard.d.ts.map +1 -0
- package/server/dist/routes/org-lead-setup-wizard.js +51 -0
- package/server/dist/routes/org-lead-setup-wizard.js.map +1 -0
- package/server/dist/routes/org-leads-composite.d.ts.map +1 -1
- package/server/dist/routes/org-leads-composite.js +35 -9
- package/server/dist/routes/org-leads-composite.js.map +1 -1
- package/server/dist/routes/org-writes.d.ts +14 -0
- package/server/dist/routes/org-writes.d.ts.map +1 -0
- package/server/dist/routes/org-writes.js +61 -0
- package/server/dist/routes/org-writes.js.map +1 -0
- package/server/dist/routes/org.d.ts +11 -2
- package/server/dist/routes/org.d.ts.map +1 -1
- package/server/dist/routes/org.js +50 -47
- package/server/dist/routes/org.js.map +1 -1
- package/server/dist/routes/settings.d.ts.map +1 -1
- package/server/dist/routes/settings.js +23 -2
- package/server/dist/routes/settings.js.map +1 -1
- package/server/dist/routes/triage.d.ts +17 -0
- package/server/dist/routes/triage.d.ts.map +1 -1
- package/server/dist/routes/triage.js +29 -0
- package/server/dist/routes/triage.js.map +1 -1
- package/server/dist/terminal/pty-manager.d.ts +14 -0
- package/server/dist/terminal/pty-manager.d.ts.map +1 -1
- package/server/dist/terminal/pty-manager.js +11 -0
- package/server/dist/terminal/pty-manager.js.map +1 -1
- package/server/dist/terminal/routes.d.ts.map +1 -1
- package/server/dist/terminal/routes.js +9 -0
- package/server/dist/terminal/routes.js.map +1 -1
- package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -1
- package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -1
- package/server/dist/terminal/ws-upgrade-handler.fixtures.js +1 -0
- package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -1
- package/server/dist/terminal/ws-upgrade-handler.js +14 -5
- package/server/dist/terminal/ws-upgrade-handler.js.map +1 -1
- package/server/dist/test/event-test-counts-fixtures.d.ts +40 -0
- package/server/dist/test/event-test-counts-fixtures.d.ts.map +1 -0
- package/server/dist/test/event-test-counts-fixtures.js +56 -0
- package/server/dist/test/event-test-counts-fixtures.js.map +1 -0
- package/server/dist/types/leadwright-beat-step.d.ts +19 -0
- package/server/dist/types/leadwright-beat-step.d.ts.map +1 -0
- package/server/dist/types/leadwright-beat-step.js +56 -0
- package/server/dist/types/leadwright-beat-step.js.map +1 -0
- package/server/dist/types/leadwright-preflight.d.ts +90 -0
- package/server/dist/types/leadwright-preflight.d.ts.map +1 -0
- package/server/dist/types/leadwright-preflight.js +65 -0
- package/server/dist/types/leadwright-preflight.js.map +1 -0
- package/server/dist/types/leadwright-schema-drift.d.ts +28 -0
- package/server/dist/types/leadwright-schema-drift.d.ts.map +1 -0
- package/server/dist/types/leadwright-schema-drift.js +89 -0
- package/server/dist/types/leadwright-schema-drift.js.map +1 -0
- package/server/dist/types/org-inventory.d.ts +53 -0
- package/server/dist/types/org-inventory.d.ts.map +1 -0
- package/server/dist/types/org-inventory.js +11 -0
- package/server/dist/types/org-inventory.js.map +1 -0
- package/server/dist/types/org.d.ts +57 -6
- package/server/dist/types/org.d.ts.map +1 -1
- package/server/dist/types/run-config-retry.d.ts +29 -0
- package/server/dist/types/run-config-retry.d.ts.map +1 -0
- package/server/dist/types/run-config-retry.js +47 -0
- package/server/dist/types/run-config-retry.js.map +1 -0
- package/server/dist/types/run-config-v2.d.ts +29 -41
- package/server/dist/types/run-config-v2.d.ts.map +1 -1
- package/server/dist/types/run-config-v2.js +16 -50
- package/server/dist/types/run-config-v2.js.map +1 -1
- package/server/dist/types/settings.d.ts +33 -0
- package/server/dist/types/settings.d.ts.map +1 -1
- package/server/dist/vendor/leadwright/beat-step.schema.json +83 -0
- package/server/dist/vendor/leadwright/claim-record-lock-contract.json +15 -0
- package/server/dist/vendor/leadwright/org-chart.schema.json +195 -0
- package/server/dist/vendor/leadwright/preflight-input.schema.json +318 -0
- package/server/dist/vendor/leadwright/preflight-result.schema.json +56 -0
- package/server/package.json +1 -1
- package/client/dist/assets/channel-BfmIcrp7.js +0 -1
- package/client/dist/assets/classDiagram-OUVF2IWQ-HfUQZ6Uc.js +0 -1
- package/client/dist/assets/classDiagram-v2-EOCWNBFH-HfUQZ6Uc.js +0 -1
- package/client/dist/assets/index-CKU9dY18.css +0 -1
- package/client/dist/assets/index-DOMl6atu.js +0 -847
- package/client/dist/assets/stateDiagram-v2-6OUMAXLB-srkiu3Ib.js +0 -1
- package/client/dist/assets/swimlanesDiagram-G3AALYLV-Dq-0K9Zm.js +0 -8
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* leadwright-preflight-transport.ts — spawns leadwright's
|
|
3
|
+
* `scripts/check-setup.ts --stdin --json` and returns its verdict.
|
|
4
|
+
* (iterate-2026-09-07-leadwright-setup-wizard, W14).
|
|
5
|
+
*
|
|
6
|
+
* "The transport is a subprocess, not a re-implementation. Never re-type a
|
|
7
|
+
* shape, never compute a verdict here." This module does none of leadwright's
|
|
8
|
+
* validation — it only gets a proposal there and a result back, faithfully.
|
|
9
|
+
*
|
|
10
|
+
* Fail-closed signal (correction 4, verified against leadwright origin/main
|
|
11
|
+
* @ 43fcd492's scripts/check-setup.ts): stdout parses as {ok, findings} ⇒
|
|
12
|
+
* ranOk:true, REGARDLESS of exit code (exit 1 with a parseable result is a
|
|
13
|
+
* legitimate red verdict). stdout empty/unparsable ⇒ ranOk:false — this,
|
|
14
|
+
* not the exit code, is "leadwright not reachable".
|
|
15
|
+
*
|
|
16
|
+
* Reuses the existing Windows-safe spawn resolver (core/win32-spawn.ts) —
|
|
17
|
+
* the same one preview-session-manager.ts already uses — rather than a
|
|
18
|
+
* second spawn primitive.
|
|
19
|
+
*/
|
|
20
|
+
import { spawn as realSpawn } from "node:child_process";
|
|
21
|
+
import path from "node:path";
|
|
22
|
+
import { resolveSpawn as realResolveSpawn } from "./win32-spawn.js";
|
|
23
|
+
const DEFAULT_TIMEOUT_MS = 45_000;
|
|
24
|
+
const DEFAULT_MAX_OUTPUT_BYTES = 10 * 1024 * 1024;
|
|
25
|
+
function looksLikePreflightResult(value) {
|
|
26
|
+
return (typeof value === "object" &&
|
|
27
|
+
value !== null &&
|
|
28
|
+
typeof value.ok === "boolean" &&
|
|
29
|
+
Array.isArray(value.findings));
|
|
30
|
+
}
|
|
31
|
+
export function runLeadwrightPreflight(checkoutRoot, proposal, options = {}) {
|
|
32
|
+
const spawnFn = options.spawn ?? realSpawn;
|
|
33
|
+
const resolveSpawnFn = options.resolveSpawnFn ?? realResolveSpawn;
|
|
34
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
35
|
+
const maxOutputBytes = options.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES;
|
|
36
|
+
const argv = [
|
|
37
|
+
path.join(checkoutRoot, "node_modules", ".bin", "tsx"),
|
|
38
|
+
path.join(checkoutRoot, "scripts", "check-setup.ts"),
|
|
39
|
+
"--stdin",
|
|
40
|
+
"--json",
|
|
41
|
+
];
|
|
42
|
+
const resolved = resolveSpawnFn(argv, checkoutRoot);
|
|
43
|
+
if (resolved === null) {
|
|
44
|
+
return Promise.resolve({
|
|
45
|
+
ranOk: false,
|
|
46
|
+
reason: `tsx not found under the configured leadwright checkout (${checkoutRoot}) — check SHIPWRIGHT_LEADWRIGHT_CHECKOUT and that dependencies are installed there`,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return new Promise((resolvePromise) => {
|
|
50
|
+
let settled = false;
|
|
51
|
+
let stdoutBytes = 0;
|
|
52
|
+
let stderrBytes = 0;
|
|
53
|
+
let stdoutText = "";
|
|
54
|
+
let stderrText = "";
|
|
55
|
+
let outputCapExceeded = false;
|
|
56
|
+
const child = spawnFn(resolved.command, resolved.args, {
|
|
57
|
+
cwd: checkoutRoot,
|
|
58
|
+
stdio: "pipe",
|
|
59
|
+
windowsVerbatimArguments: resolved.windowsVerbatimArguments,
|
|
60
|
+
});
|
|
61
|
+
const timer = setTimeout(() => {
|
|
62
|
+
finish({ ranOk: false, reason: `leadwright check-setup timed out after ${timeoutMs}ms` });
|
|
63
|
+
child.kill();
|
|
64
|
+
}, timeoutMs);
|
|
65
|
+
function finish(result) {
|
|
66
|
+
if (settled)
|
|
67
|
+
return;
|
|
68
|
+
settled = true;
|
|
69
|
+
clearTimeout(timer);
|
|
70
|
+
resolvePromise(result);
|
|
71
|
+
}
|
|
72
|
+
child.on("error", (err) => {
|
|
73
|
+
finish({ ranOk: false, reason: `could not spawn leadwright check-setup: ${err.message}` });
|
|
74
|
+
});
|
|
75
|
+
child.stdin?.on("error", () => {
|
|
76
|
+
// EPIPE etc. — the eventual 'close' (or the timeout) is the source of
|
|
77
|
+
// truth for the final result; a stdin write failure alone must not
|
|
78
|
+
// resolve early with a misleading partial state.
|
|
79
|
+
});
|
|
80
|
+
child.stdout?.on("data", (chunk) => {
|
|
81
|
+
stdoutBytes += chunk.length;
|
|
82
|
+
stdoutText += chunk.toString("utf-8");
|
|
83
|
+
if (stdoutBytes + stderrBytes > maxOutputBytes && !outputCapExceeded) {
|
|
84
|
+
outputCapExceeded = true;
|
|
85
|
+
finish({ ranOk: false, reason: "leadwright check-setup produced more output than the configured cap — treated as a runaway process" });
|
|
86
|
+
child.kill();
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
child.stderr?.on("data", (chunk) => {
|
|
90
|
+
stderrBytes += chunk.length;
|
|
91
|
+
stderrText += chunk.toString("utf-8");
|
|
92
|
+
if (stdoutBytes + stderrBytes > maxOutputBytes && !outputCapExceeded) {
|
|
93
|
+
outputCapExceeded = true;
|
|
94
|
+
finish({ ranOk: false, reason: "leadwright check-setup produced more output than the configured cap — treated as a runaway process" });
|
|
95
|
+
child.kill();
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
child.on("close", () => {
|
|
99
|
+
if (outputCapExceeded)
|
|
100
|
+
return; // already finished
|
|
101
|
+
const trimmed = stdoutText.trim();
|
|
102
|
+
if (trimmed === "") {
|
|
103
|
+
finish({ ranOk: false, reason: stderrText.trim() || "leadwright check-setup produced no output" });
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
let parsed;
|
|
107
|
+
try {
|
|
108
|
+
parsed = JSON.parse(trimmed);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
finish({ ranOk: false, reason: stderrText.trim() || `leadwright check-setup produced unparsable output: ${trimmed.slice(0, 500)}` });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (!looksLikePreflightResult(parsed)) {
|
|
115
|
+
finish({ ranOk: false, reason: "leadwright check-setup produced output that does not match the published PreflightResult shape" });
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
finish({ ranOk: true, result: parsed });
|
|
119
|
+
});
|
|
120
|
+
child.stdin?.write(JSON.stringify(proposal));
|
|
121
|
+
child.stdin?.end();
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=leadwright-preflight-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leadwright-preflight-transport.js","sourceRoot":"","sources":["../../src/core/leadwright-preflight-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts-tests-ac.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/artifacts-tests-ac.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE9D,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAmBrF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* core/mission-context/artifacts-tests-ac.ts — the per-AC regrouping of the
|
|
3
|
+
* Tests artifact's file rows (split from artifacts-tests.ts at the 300-LOC
|
|
4
|
+
* rule).
|
|
5
|
+
*
|
|
6
|
+
* A VIEW over `TestRow[].frs[].acIds`, which `traceability.ts` already
|
|
7
|
+
* populates as a pure relay of the v4 manifest's `ac_id`. This module
|
|
8
|
+
* computes NO binding of its own — it only regroups rows that already exist
|
|
9
|
+
* by `(frId, acId)` instead of by file. `tagged: false` (the common case
|
|
10
|
+
* today — 0/33 requirements in this repo's manifest carry `ac_id`) must
|
|
11
|
+
* render as "not yet tagged", never as an empty coverage table.
|
|
12
|
+
*/
|
|
13
|
+
export function groupByAc(rows) {
|
|
14
|
+
const byKey = new Map();
|
|
15
|
+
for (const row of rows) {
|
|
16
|
+
for (const fr of row.frs) {
|
|
17
|
+
for (const acId of fr.acIds) {
|
|
18
|
+
const key = `${fr.frId}::${acId}`;
|
|
19
|
+
let group = byKey.get(key);
|
|
20
|
+
if (!group) {
|
|
21
|
+
group = { frId: fr.frId, acId, files: [] };
|
|
22
|
+
byKey.set(key, group);
|
|
23
|
+
}
|
|
24
|
+
group.files.push({ path: row.path, kind: row.kind });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const groups = [...byKey.values()].sort((a, b) => a.frId.localeCompare(b.frId) || a.acId.localeCompare(b.acId));
|
|
29
|
+
return { tagged: groups.length > 0, groups };
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=artifacts-tests-ac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts-tests-ac.js","sourceRoot":"","sources":["../../../src/core/mission-context/artifacts-tests-ac.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,UAAU,SAAS,CAAC,IAAe;IACvC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClC,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;oBAC3C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACxB,CAAC;gBACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CACvE,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts-tests.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/artifacts-tests.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"artifacts-tests.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/artifacts-tests.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAehE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI,CAIrG;AAgJD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CA0DnE"}
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
*/
|
|
27
27
|
import { deriveTestsGate } from "../tests-gate.js";
|
|
28
28
|
import { inferLayer } from "./tests-diff.js";
|
|
29
|
+
import { groupByAc } from "./artifacts-tests-ac.js";
|
|
29
30
|
function plural(n, one, many) {
|
|
30
31
|
return `${n} ${n === 1 ? one : many}`;
|
|
31
32
|
}
|
|
@@ -137,6 +138,23 @@ function summarizeFiles(diff, index) {
|
|
|
137
138
|
const byFile = index.status === "ok" ? index.byFile : null;
|
|
138
139
|
const rows = diff.files.map((f) => {
|
|
139
140
|
const entry = byFile?.get(f.path);
|
|
141
|
+
// The manifest read fine but has no entry for this ADDED or MODIFIED
|
|
142
|
+
// file. For `added` that is almost always because it predates a test
|
|
143
|
+
// file this run's own commit just created. For `modified` it is a
|
|
144
|
+
// rarer signal — the file once had `@covers` evidence and something (a
|
|
145
|
+
// rename, a schema drift, a truncated regen) made it disappear — but
|
|
146
|
+
// the two are indistinguishable from ABSENCE alone, and rendering
|
|
147
|
+
// either as `frs: []` reads as "proven to cover nothing" when the truth
|
|
148
|
+
// is "unknown" (traceability.ts:14's own warning against exactly this
|
|
149
|
+
// conflation). `removed` is excluded: a removed file is never in the
|
|
150
|
+
// manifest by definition, so its bare "—" already means what it says.
|
|
151
|
+
// A wholly-unreadable OR truncated manifest is already explained at the
|
|
152
|
+
// artifact level via `manifestStatus` — a truncated index's "no entry"
|
|
153
|
+
// means "past the entry cap", not "predates this file", so it must not
|
|
154
|
+
// claim the latter.
|
|
155
|
+
const unresolvedReason = index.status === "ok" && !index.truncated && !entry && f.kind !== "removed"
|
|
156
|
+
? "Not yet in the requirement manifest — coverage for this file could not be confirmed."
|
|
157
|
+
: null;
|
|
140
158
|
return {
|
|
141
159
|
path: f.path,
|
|
142
160
|
kind: f.kind,
|
|
@@ -146,6 +164,7 @@ function summarizeFiles(diff, index) {
|
|
|
146
164
|
layer: entry?.layers[0] ?? inferLayer(f.path),
|
|
147
165
|
frs: entry?.frs ?? [],
|
|
148
166
|
caseCount: entry?.caseCount ?? null,
|
|
167
|
+
unresolvedReason,
|
|
149
168
|
};
|
|
150
169
|
});
|
|
151
170
|
const counts = { added: 0, modified: 0, removed: 0 };
|
|
@@ -230,6 +249,7 @@ export function buildTestsArtifact(input) {
|
|
|
230
249
|
// rows there is nothing to link, so the manifest is not "at fault".
|
|
231
250
|
manifestStatus: !hasFiles || (index.status === "ok" && !index.truncated) ? "ok" : "unavailable",
|
|
232
251
|
evidence: input.evidence,
|
|
252
|
+
acCoverage: groupByAc(files?.rows ?? []),
|
|
233
253
|
},
|
|
234
254
|
};
|
|
235
255
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts-tests.js","sourceRoot":"","sources":["../../../src/core/mission-context/artifacts-tests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"artifacts-tests.js","sourceRoot":"","sources":["../../../src/core/mission-context/artifacts-tests.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,16 @@ export interface ResolveRequest {
|
|
|
11
11
|
projectRoot: string;
|
|
12
12
|
/** Server-read transcript (bounded tail) — never client-supplied (§5.1). */
|
|
13
13
|
transcript: string;
|
|
14
|
+
/**
|
|
15
|
+
* True when the tail read above started after byte 0 (the file is larger than
|
|
16
|
+
* the read budget) — a leading partial line was dropped before `transcript`
|
|
17
|
+
* even reached here. `findRunIdFooter`'s own `transcript.length > MAX_SCAN_CHARS`
|
|
18
|
+
* check can never observe this on its own: the caller already truncated to at
|
|
19
|
+
* most the read budget, so that in-function check never fires in production
|
|
20
|
+
* (iterate-2026-09-28-mission-feed-completeness, AC2). Optional — absent
|
|
21
|
+
* behaves as `false`, so existing callers/tests compile unchanged.
|
|
22
|
+
*/
|
|
23
|
+
transcriptStartedMidFile?: boolean;
|
|
14
24
|
/** Task facts the server owns (from its own store, not the client). */
|
|
15
25
|
phaseTaskId: string | null;
|
|
16
26
|
taskRunId: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-io.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-io.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACnC,eAAe,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACnD,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,CAAC;IACxB,gFAAgF;IAChF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gFAAgF;IAChF,eAAe,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC;CACtD"}
|
|
1
|
+
{"version":3,"file":"resolver-io.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-io.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,uEAAuE;IACvE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACnC,eAAe,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACnD,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,CAAC;IACxB,gFAAgF;IAChF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gFAAgF;IAChF,eAAe,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC;CACtD"}
|
|
@@ -29,13 +29,14 @@ export declare const CACHE_CAP = 256;
|
|
|
29
29
|
export declare function _clearResolverCache(): void;
|
|
30
30
|
/**
|
|
31
31
|
* The memoized, CONFIRMED supersession for this (session, association,
|
|
32
|
-
* transcript-content)
|
|
33
|
-
* content was never checked, or it was checked and
|
|
34
|
-
* deliberately never memoized here; a scan is owed
|
|
32
|
+
* transcript-content, startedMidFile) tuple — `undefined` when none is
|
|
33
|
+
* cached (either this content was never checked, or it was checked and
|
|
34
|
+
* found nothing, which is deliberately never memoized here; a scan is owed
|
|
35
|
+
* either way).
|
|
35
36
|
*/
|
|
36
|
-
export declare function supersessionMemoHit(sessionUuid: string, associationRunId: string, transcript: string): string | undefined;
|
|
37
|
-
/** Record this
|
|
38
|
-
export declare function markSupersessionResult(sessionUuid: string, associationRunId: string, transcript: string, recovered: string): void;
|
|
37
|
+
export declare function supersessionMemoHit(sessionUuid: string, associationRunId: string, transcript: string, startedMidFile: boolean): string | undefined;
|
|
38
|
+
/** Record this tuple's CONFIRMED recovery, so the next unchanged poll reuses it instead of re-scanning. */
|
|
39
|
+
export declare function markSupersessionResult(sessionUuid: string, associationRunId: string, transcript: string, startedMidFile: boolean, recovered: string): void;
|
|
39
40
|
/** Test-only: drop the supersession-check memo between cases. */
|
|
40
41
|
export declare function _clearSupersessionMemo(): void;
|
|
41
42
|
/**
|
|
@@ -46,7 +47,7 @@ export declare function _clearSupersessionMemo(): void;
|
|
|
46
47
|
* BUILD time (this resolve's transcript/association snapshot), not
|
|
47
48
|
* re-evaluated inside the thunk, since neither changes within one call.
|
|
48
49
|
*/
|
|
49
|
-
export declare function buildRecoveryThunk(projectRoot: string, sessionUuid: string, transcript: string, associationRunId: string | null): () => string | null;
|
|
50
|
+
export declare function buildRecoveryThunk(projectRoot: string, sessionUuid: string, transcript: string, associationRunId: string | null, startedMidFile?: boolean): () => string | null;
|
|
50
51
|
/**
|
|
51
52
|
* Bounded read of a document body (mid-run planned impact + the detail
|
|
52
53
|
* endpoint). Atomic: the size cap is enforced against the SAME descriptor the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-parts.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-parts.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAYpF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOvD;AAoBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAavE;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,wFAAwF;AACxF,eAAO,MAAM,KAAK,yBAAgC,CAAC;AACnD,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,4DAA4D;AAC5D,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;
|
|
1
|
+
{"version":3,"file":"resolver-parts.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-parts.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAYpF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOvD;AAoBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAavE;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,wFAAwF;AACxF,eAAO,MAAM,KAAK,yBAAgC,CAAC;AACnD,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,4DAA4D;AAC5D,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAqDD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,OAAO,GACtB,MAAM,GAAG,SAAS,CAIpB;AAED,2GAA2G;AAC3G,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,OAAO,EACvB,SAAS,EAAE,MAAM,GAChB,IAAI,CAIN;AAED,iEAAiE;AACjE,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,cAAc,UAAQ,GACrB,MAAM,MAAM,GAAG,IAAI,CAiBrB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,iBAAiB,EAAE,OAAO,EAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,cAAc,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,wBAAwB,CAAA;CAAE,CAU9F;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,iBAAiB,EAAE,OAAO,EAC1B,SAAS,EAAE,MAAM,GAChB,cAAc,CAahB"}
|
|
@@ -127,28 +127,34 @@ const SUPERSESSION_CAP = 512;
|
|
|
127
127
|
* instead of re-scanning. Hashing costs one pass over a string already read
|
|
128
128
|
* into memory for the scan this memo exists to skip — cheap relative to what
|
|
129
129
|
* it replaces.
|
|
130
|
+
*
|
|
131
|
+
* `startedMidFile` folded in (external code review, openai, fifth preflight
|
|
132
|
+
* pass — the same fix as `run-id-recovery.ts`'s negative-scan memo, and for
|
|
133
|
+
* the identical reason): it changes what `recoverRunIdFromTranscript` does
|
|
134
|
+
* with the SAME transcript text, so it belongs in the key, not just the text.
|
|
130
135
|
*/
|
|
131
|
-
function supersessionFingerprint(transcript) {
|
|
132
|
-
return createHash("sha256").update(transcript).digest("hex")
|
|
136
|
+
function supersessionFingerprint(transcript, startedMidFile) {
|
|
137
|
+
return `${startedMidFile ? "1" : "0"}:${createHash("sha256").update(transcript).digest("hex")}`;
|
|
133
138
|
}
|
|
134
139
|
/**
|
|
135
140
|
* The memoized, CONFIRMED supersession for this (session, association,
|
|
136
|
-
* transcript-content)
|
|
137
|
-
* content was never checked, or it was checked and
|
|
138
|
-
* deliberately never memoized here; a scan is owed
|
|
141
|
+
* transcript-content, startedMidFile) tuple — `undefined` when none is
|
|
142
|
+
* cached (either this content was never checked, or it was checked and
|
|
143
|
+
* found nothing, which is deliberately never memoized here; a scan is owed
|
|
144
|
+
* either way).
|
|
139
145
|
*/
|
|
140
|
-
export function supersessionMemoHit(sessionUuid, associationRunId, transcript) {
|
|
146
|
+
export function supersessionMemoHit(sessionUuid, associationRunId, transcript, startedMidFile) {
|
|
141
147
|
const entry = supersessionResult.get(`${sessionUuid}::${associationRunId}`);
|
|
142
|
-
if (!entry || entry.fingerprint !== supersessionFingerprint(transcript))
|
|
148
|
+
if (!entry || entry.fingerprint !== supersessionFingerprint(transcript, startedMidFile))
|
|
143
149
|
return undefined;
|
|
144
150
|
return entry.recovered;
|
|
145
151
|
}
|
|
146
|
-
/** Record this
|
|
147
|
-
export function markSupersessionResult(sessionUuid, associationRunId, transcript, recovered) {
|
|
152
|
+
/** Record this tuple's CONFIRMED recovery, so the next unchanged poll reuses it instead of re-scanning. */
|
|
153
|
+
export function markSupersessionResult(sessionUuid, associationRunId, transcript, startedMidFile, recovered) {
|
|
148
154
|
const key = `${sessionUuid}::${associationRunId}`;
|
|
149
155
|
if (supersessionResult.size >= SUPERSESSION_CAP)
|
|
150
156
|
supersessionResult.clear();
|
|
151
|
-
supersessionResult.set(key, { fingerprint: supersessionFingerprint(transcript), recovered });
|
|
157
|
+
supersessionResult.set(key, { fingerprint: supersessionFingerprint(transcript, startedMidFile), recovered });
|
|
152
158
|
}
|
|
153
159
|
/** Test-only: drop the supersession-check memo between cases. */
|
|
154
160
|
export function _clearSupersessionMemo() {
|
|
@@ -162,8 +168,10 @@ export function _clearSupersessionMemo() {
|
|
|
162
168
|
* BUILD time (this resolve's transcript/association snapshot), not
|
|
163
169
|
* re-evaluated inside the thunk, since neither changes within one call.
|
|
164
170
|
*/
|
|
165
|
-
export function buildRecoveryThunk(projectRoot, sessionUuid, transcript, associationRunId) {
|
|
166
|
-
const memoHit = associationRunId !== null
|
|
171
|
+
export function buildRecoveryThunk(projectRoot, sessionUuid, transcript, associationRunId, startedMidFile = false) {
|
|
172
|
+
const memoHit = associationRunId !== null
|
|
173
|
+
? supersessionMemoHit(sessionUuid, associationRunId, transcript, startedMidFile)
|
|
174
|
+
: undefined;
|
|
167
175
|
return () => {
|
|
168
176
|
// A cache HIT is a CONFIRMED prior supersession for this exact content —
|
|
169
177
|
// returned as-is, never re-scanned. There is no cached-null case (see the
|
|
@@ -171,9 +179,9 @@ export function buildRecoveryThunk(projectRoot, sessionUuid, transcript, associa
|
|
|
171
179
|
// corroboration can succeed later even when the text has not changed.
|
|
172
180
|
if (associationRunId !== null && memoHit !== undefined)
|
|
173
181
|
return memoHit;
|
|
174
|
-
const recovered = recoverRunIdFromTranscript(projectRoot, transcript, sessionUuid);
|
|
182
|
+
const recovered = recoverRunIdFromTranscript(projectRoot, transcript, sessionUuid, startedMidFile);
|
|
175
183
|
if (associationRunId !== null && recovered !== null) {
|
|
176
|
-
markSupersessionResult(sessionUuid, associationRunId, transcript, recovered);
|
|
184
|
+
markSupersessionResult(sessionUuid, associationRunId, transcript, startedMidFile, recovered);
|
|
177
185
|
}
|
|
178
186
|
return recovered;
|
|
179
187
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-parts.js","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-parts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,8BAA8B,GAG/B,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe,EAAE,KAA0B;IAC1E,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAA0D;IAC/E,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/B,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7C,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IACzC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;CACpC,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,iBAAiB,CAAC,GAAG,CAC1B,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAClB,CAAC;QACC,IAAI;QACJ,KAAK;QACL,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,IAAI;QACJ,MAAM,EAAE,IAAI;KACb,CAAuB,CAC3B,CAAC;AACJ,CAAC;AAOD,wFAAwF;AACxF,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,4DAA4D;AAC5D,MAAM,UAAU,mBAAmB;IACjC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAsD,CAAC;AACzF,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B
|
|
1
|
+
{"version":3,"file":"resolver-parts.js","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-parts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOtD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGnF,YAAY,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,cAAc,EACnB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOtD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGnF,YAAY,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,cAAc,EACnB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,aAAa,CAAC,CAmExB"}
|
|
@@ -38,7 +38,7 @@ export async function resolveMissionContext(req, deps = {}) {
|
|
|
38
38
|
const decision = detectScenario({
|
|
39
39
|
pointer,
|
|
40
40
|
association: req.association ?? null,
|
|
41
|
-
recoverTranscriptRunId: buildRecoveryThunk(projectRoot, sessionUuid, req.transcript, req.association?.runId ?? null),
|
|
41
|
+
recoverTranscriptRunId: buildRecoveryThunk(projectRoot, sessionUuid, req.transcript, req.association?.runId ?? null, req.transcriptStartedMidFile),
|
|
42
42
|
actions: req.actions,
|
|
43
43
|
runConfigStatus: req.runConfigStatus,
|
|
44
44
|
phaseTaskId: req.phaseTaskId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/core/mission-context/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClF,0EAA0E;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAU9D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAmB,EACnB,OAAoB,EAAE;IAEtB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IAEzC,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC7D,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,yEAAyE;IACzE,sEAAsE;IACtE,0EAA0E;IAC1E,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,OAAO;QACP,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;QACpC,sBAAsB,EAAE,kBAAkB,CACxC,WAAW,EACX,WAAW,EACX,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/core/mission-context/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,24 @@ export declare const MAX_SCAN_CHARS: number;
|
|
|
13
13
|
*
|
|
14
14
|
* Pure — no I/O, no corroboration. `recoverRunIdFromTranscript` is the entry
|
|
15
15
|
* point that adds evidence.
|
|
16
|
+
*
|
|
17
|
+
* `startedMidFile` (iterate-2026-09-28-mission-feed-completeness, AC2): PROVEN
|
|
18
|
+
* true, not merely assumed, whenever the caller's own read began after byte 0
|
|
19
|
+
* of the real file — `wire.ts`'s `readTranscriptTail` peeks the one byte
|
|
20
|
+
* immediately before its intended start and only reports `true` when that
|
|
21
|
+
* byte is not a `\n` (external code review, openai, raised across two
|
|
22
|
+
* independent review passes: an earlier version of this signal assumed
|
|
23
|
+
* partial whenever the read didn't start at byte 0, which is provably safe
|
|
24
|
+
* — see `stripUserTypeLines`'s doc comment — but not provably necessary; the
|
|
25
|
+
* peek settles it for real instead of arguing probability a third time). The
|
|
26
|
+
* caller always reads a bounded tail no larger than `MAX_SCAN_CHARS`, so
|
|
27
|
+
* `transcript.length > MAX_SCAN_CHARS` below can never observe that on its
|
|
28
|
+
* own in production, only in a test that hands this function an oversized
|
|
29
|
+
* string directly — THAT path stays a conservative assumption, since a bare
|
|
30
|
+
* string slice has no byte to peek. Either condition means the leading line
|
|
31
|
+
* may be a byte-cut fragment (see `stripUserTypeLines`'s doc comment).
|
|
16
32
|
*/
|
|
17
|
-
export declare function findRunIdFooter(transcript: string): string | null;
|
|
33
|
+
export declare function findRunIdFooter(transcript: string, startedMidFile?: boolean): string | null;
|
|
18
34
|
/**
|
|
19
35
|
* True only when `candidate` is PROVABLY newer than `current` by its embedded
|
|
20
36
|
* date — a same-day or unparseable id is NOT proof either way, and the caller
|
|
@@ -56,5 +72,5 @@ export declare function _clearRecoveryMemo(): void;
|
|
|
56
72
|
* forever — nothing consumed the answer, so nothing ever persisted it, and the
|
|
57
73
|
* memo below only covers a NEGATIVE result (internal code review of PR #309).
|
|
58
74
|
*/
|
|
59
|
-
export declare function recoverRunIdFromTranscript(projectRoot: string, transcript: string, sessionUuid?: string): string | null;
|
|
75
|
+
export declare function recoverRunIdFromTranscript(projectRoot: string, transcript: string, sessionUuid?: string, startedMidFile?: boolean): string | null;
|
|
60
76
|
//# sourceMappingURL=run-id-recovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-id-recovery.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/run-id-recovery.ts"],"names":[],"mappings":"AAyCA;;;GAGG;AACH,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"run-id-recovery.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/run-id-recovery.ts"],"names":[],"mappings":"AAyCA;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAkB,CAAC;AAkF9C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,MAAM,GAAG,IAAI,CAezF;AAQD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAKhF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAIxE;AAsCD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,UAAQ,GACrB,MAAM,GAAG,IAAI,CAqBf"}
|
|
@@ -41,7 +41,7 @@ import { isSafeRunId } from "./pointer.js";
|
|
|
41
41
|
* Hard cap on how much text is scanned, independent of what the caller passes.
|
|
42
42
|
* The caller already reads a bounded tail; this is the belt to that braces.
|
|
43
43
|
*/
|
|
44
|
-
export const MAX_SCAN_CHARS = 1024 * 1024;
|
|
44
|
+
export const MAX_SCAN_CHARS = 8 * 1024 * 1024;
|
|
45
45
|
/**
|
|
46
46
|
* The F6 footer marker.
|
|
47
47
|
*
|
|
@@ -106,17 +106,17 @@ function isUserTypeLine(line) {
|
|
|
106
106
|
* before the cut, so the surviving fragment fails to parse as JSON and
|
|
107
107
|
* `isUserTypeLine` — correctly "never guessing" on genuinely malformed
|
|
108
108
|
* content — keeps it, defeating the exclusion for precisely the record
|
|
109
|
-
* this fix exists to exclude. The
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* wrong-identity path, consistent with this module's "no half answer, no
|
|
115
|
-
* guess" posture elsewhere (e.g. a marker itself cut by the window).
|
|
109
|
+
* this fix exists to exclude. The FIRST line of an actually-truncated tail
|
|
110
|
+
* is always the one that can be a byte-cut fragment (every later line is
|
|
111
|
+
* bounded by two real `\n`s from the original file), so that line alone is
|
|
112
|
+
* dropped outright rather than classified — accepting a narrow "declines to
|
|
113
|
+
* identify" cost in exchange for closing the wrong-identity path.
|
|
116
114
|
*/
|
|
117
115
|
function stripUserTypeLines(text, dropLeadingPartialLine) {
|
|
118
116
|
const lines = text.split(/\r?\n/);
|
|
119
|
-
|
|
117
|
+
// No `lines.length > 1` guard (external review, openai): a single
|
|
118
|
+
// unterminated line IS a byte-cut fragment too when proven mid-file.
|
|
119
|
+
if (dropLeadingPartialLine)
|
|
120
120
|
lines.shift();
|
|
121
121
|
return lines.filter((line) => !isUserTypeLine(line)).join("\n");
|
|
122
122
|
}
|
|
@@ -130,13 +130,29 @@ function stripUserTypeLines(text, dropLeadingPartialLine) {
|
|
|
130
130
|
*
|
|
131
131
|
* Pure — no I/O, no corroboration. `recoverRunIdFromTranscript` is the entry
|
|
132
132
|
* point that adds evidence.
|
|
133
|
+
*
|
|
134
|
+
* `startedMidFile` (iterate-2026-09-28-mission-feed-completeness, AC2): PROVEN
|
|
135
|
+
* true, not merely assumed, whenever the caller's own read began after byte 0
|
|
136
|
+
* of the real file — `wire.ts`'s `readTranscriptTail` peeks the one byte
|
|
137
|
+
* immediately before its intended start and only reports `true` when that
|
|
138
|
+
* byte is not a `\n` (external code review, openai, raised across two
|
|
139
|
+
* independent review passes: an earlier version of this signal assumed
|
|
140
|
+
* partial whenever the read didn't start at byte 0, which is provably safe
|
|
141
|
+
* — see `stripUserTypeLines`'s doc comment — but not provably necessary; the
|
|
142
|
+
* peek settles it for real instead of arguing probability a third time). The
|
|
143
|
+
* caller always reads a bounded tail no larger than `MAX_SCAN_CHARS`, so
|
|
144
|
+
* `transcript.length > MAX_SCAN_CHARS` below can never observe that on its
|
|
145
|
+
* own in production, only in a test that hands this function an oversized
|
|
146
|
+
* string directly — THAT path stays a conservative assumption, since a bare
|
|
147
|
+
* string slice has no byte to peek. Either condition means the leading line
|
|
148
|
+
* may be a byte-cut fragment (see `stripUserTypeLines`'s doc comment).
|
|
133
149
|
*/
|
|
134
|
-
export function findRunIdFooter(transcript) {
|
|
150
|
+
export function findRunIdFooter(transcript, startedMidFile = false) {
|
|
135
151
|
if (typeof transcript !== "string" || transcript.length === 0)
|
|
136
152
|
return null;
|
|
137
|
-
const
|
|
138
|
-
const tail =
|
|
139
|
-
const text = stripUserTypeLines(tail,
|
|
153
|
+
const droppedLeadingPartial = startedMidFile || transcript.length > MAX_SCAN_CHARS;
|
|
154
|
+
const tail = transcript.length > MAX_SCAN_CHARS ? transcript.slice(-MAX_SCAN_CHARS) : transcript;
|
|
155
|
+
const text = stripUserTypeLines(tail, droppedLeadingPartial);
|
|
140
156
|
let last = null;
|
|
141
157
|
RUN_ID_FOOTER.lastIndex = 0;
|
|
142
158
|
let m;
|
|
@@ -202,13 +218,17 @@ export function hasRunRecord(projectRoot, runId) {
|
|
|
202
218
|
*
|
|
203
219
|
* Deliberately NOT a persisted "no run" association: that would add a second
|
|
204
220
|
* meaning to `task.missionContext` and a second write surface, to cache a regex.
|
|
221
|
+
*
|
|
222
|
+
* `startedMidFile` is PART OF THE FINGERPRINT (external code review, openai
|
|
223
|
+
* MEDIUM, third preflight pass): it changes whether `findRunIdFooter` drops
|
|
224
|
+
* the leading line, so the same raw text can parse two different ways.
|
|
205
225
|
*/
|
|
206
226
|
const negativeScans = new Map();
|
|
207
227
|
const NEGATIVE_CAP = 512;
|
|
208
228
|
/** How much of the tail END feeds the fingerprint. */
|
|
209
229
|
const FINGERPRINT_CHARS = 256;
|
|
210
|
-
function tailFingerprint(text) {
|
|
211
|
-
return `${text.length}:${text.slice(-FINGERPRINT_CHARS)}`;
|
|
230
|
+
function tailFingerprint(text, startedMidFile) {
|
|
231
|
+
return `${startedMidFile ? "1" : "0"}:${text.length}:${text.slice(-FINGERPRINT_CHARS)}`;
|
|
212
232
|
}
|
|
213
233
|
/**
|
|
214
234
|
* Test-only: how many real scans ran. Without it a memo test can only assert the
|
|
@@ -241,13 +261,13 @@ export function _clearRecoveryMemo() {
|
|
|
241
261
|
* forever — nothing consumed the answer, so nothing ever persisted it, and the
|
|
242
262
|
* memo below only covers a NEGATIVE result (internal code review of PR #309).
|
|
243
263
|
*/
|
|
244
|
-
export function recoverRunIdFromTranscript(projectRoot, transcript, sessionUuid) {
|
|
264
|
+
export function recoverRunIdFromTranscript(projectRoot, transcript, sessionUuid, startedMidFile = false) {
|
|
245
265
|
const memoKey = sessionUuid ? `${projectRoot}::${sessionUuid}` : null;
|
|
246
|
-
const fingerprint = memoKey ? tailFingerprint(transcript) : null;
|
|
266
|
+
const fingerprint = memoKey ? tailFingerprint(transcript, startedMidFile) : null;
|
|
247
267
|
if (memoKey && negativeScans.get(memoKey) === fingerprint)
|
|
248
268
|
return null;
|
|
249
269
|
scanCount++;
|
|
250
|
-
const candidate = findRunIdFooter(transcript);
|
|
270
|
+
const candidate = findRunIdFooter(transcript, startedMidFile);
|
|
251
271
|
// Memoize ONLY "this text contains no marker" — a purely TEXTUAL fact, which
|
|
252
272
|
// cannot change while the text does not. A candidate that failed
|
|
253
273
|
// CORROBORATION is deliberately re-checked every poll: the project's records
|