@svenroth-ai/shipwright 0.26.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-D3wpPNZP.js → EmbeddedTerminal-4xgNUBUu.js} +19 -19
- package/client/dist/assets/{abnfDiagram-VRR7QNED-BkLIltB3.js → abnfDiagram-VRR7QNED-BdCNbaqc.js} +1 -1
- package/client/dist/assets/{arc-Sw-Gh0nI.js → arc-DoZTTE1N.js} +1 -1
- package/client/dist/assets/{architectureDiagram-ZJ3FMSHR-rdxUi9Ks.js → architectureDiagram-ZJ3FMSHR-DFTG4KtO.js} +1 -1
- package/client/dist/assets/{blockDiagram-677ZJIJ3-Ch_9dj8a.js → blockDiagram-677ZJIJ3-C34UBjOB.js} +1 -1
- package/client/dist/assets/{c4Diagram-LMCZKHZV-CkFlO65x.js → c4Diagram-LMCZKHZV-CbqAB1Ou.js} +1 -1
- package/client/dist/assets/channel-DBcZw7Kn.js +1 -0
- package/client/dist/assets/{chunk-2Q5K7J3B-CypX83xu.js → chunk-2Q5K7J3B-4N6AnmBJ.js} +1 -1
- package/client/dist/assets/{chunk-32BRIVSS-DxVLYGdl.js → chunk-32BRIVSS-Cs67LiCy.js} +1 -1
- package/client/dist/assets/{chunk-5VM5RSS4-Cxk1evhx.js → chunk-5VM5RSS4-Bwd7rtD3.js} +1 -1
- package/client/dist/assets/{chunk-EX3LRPZG-n9q5S4yJ.js → chunk-EX3LRPZG-CQqGfptD.js} +1 -1
- package/client/dist/assets/{chunk-JWPE2WC7-jeL4xvir.js → chunk-JWPE2WC7-ClvKd4PN.js} +1 -1
- package/client/dist/assets/{chunk-MOJQB5TN-DDSHN0cj.js → chunk-MOJQB5TN-Cwvj8GE1.js} +1 -1
- package/client/dist/assets/{chunk-RYQCIY6F-C0bo383g.js → chunk-RYQCIY6F-DrWMx37d.js} +1 -1
- package/client/dist/assets/{chunk-V7JOEXUC-C0jDXXAU.js → chunk-V7JOEXUC-CYFfa4PY.js} +1 -1
- package/client/dist/assets/{chunk-VR4S4FIN-h-Rr4Pn2.js → chunk-VR4S4FIN-B5eWtesm.js} +1 -1
- package/client/dist/assets/{chunk-XXDRQBXY-BexSo0-s.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-BQXzaioj.js → cose-bilkent-JH36ORCC-C76Yia6h.js} +1 -1
- package/client/dist/assets/{cynefin-VYW2F7L2-BJIofhfe.js → cynefin-VYW2F7L2-pJe7rdTi.js} +1 -1
- package/client/dist/assets/{cynefinDiagram-TSTJHNR4-DmPqTM1T.js → cynefinDiagram-TSTJHNR4-EeHQ7dYV.js} +1 -1
- package/client/dist/assets/{dagre-VKFMJZFB-1xljvw6X.js → dagre-VKFMJZFB-VXOY6IHR.js} +1 -1
- package/client/dist/assets/{diagram-FQU43EPY-iyL9muCG.js → diagram-FQU43EPY-DW_-leqw.js} +1 -1
- package/client/dist/assets/{diagram-G47NLZAW-DREp2Th6.js → diagram-G47NLZAW-C_hsLD4u.js} +1 -1
- package/client/dist/assets/{diagram-NH7WQ7WH-h0X3Is2S.js → diagram-NH7WQ7WH-CbeQuO_f.js} +1 -1
- package/client/dist/assets/{diagram-OA4YK3LP-Bj8YZRFJ.js → diagram-OA4YK3LP-DRHY5d_c.js} +1 -1
- package/client/dist/assets/{diagram-WEI45ONY-BZOf805d.js → diagram-WEI45ONY-B87OYR_S.js} +1 -1
- package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DO5JnXda.js → ebnfDiagram-CCIWWBDH-B8Z8WHF6.js} +1 -1
- package/client/dist/assets/{erDiagram-Q63AITRT-DRgcqg1T.js → erDiagram-Q63AITRT-DaD7oa9H.js} +1 -1
- package/client/dist/assets/{flowDiagram-23GEKE2U-C3J9QmrW.js → flowDiagram-23GEKE2U-GrMVpsea.js} +1 -1
- package/client/dist/assets/{ganttDiagram-NO4QXBWP-BIEl3Tkm.js → ganttDiagram-NO4QXBWP-K3X0DYBa.js} +1 -1
- package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-BNF0tFWC.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-DEyFxiyY.js → infoDiagram-FWYZ7A6U-Fi8fQ95G.js} +1 -1
- package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-B_ehlg3I.js → ishikawaDiagram-FXEZZL3T-CrN7QJzt.js} +1 -1
- package/client/dist/assets/{journeyDiagram-5HDEW3XC-Dp00FyJS.js → journeyDiagram-5HDEW3XC-XHIsl7rM.js} +1 -1
- package/client/dist/assets/{kanban-definition-HUTT4EX6-CTAf16q8.js → kanban-definition-HUTT4EX6-A6HJqHw7.js} +1 -1
- package/client/dist/assets/{linear-9vNUgmYd.js → linear-D1vF9IQB.js} +1 -1
- package/client/dist/assets/{mermaid.core-A6tjaEVD.js → mermaid.core-D6w9zlA0.js} +4 -4
- package/client/dist/assets/{mindmap-definition-LN4V7U3C-DRW3bmCY.js → mindmap-definition-LN4V7U3C-CxRkUj6Z.js} +1 -1
- package/client/dist/assets/{pegDiagram-2B236MQR-DJFCjHp2.js → pegDiagram-2B236MQR-Bs9dp-8a.js} +1 -1
- package/client/dist/assets/{pieDiagram-ENE6RG2P-KRd-sGvC.js → pieDiagram-ENE6RG2P-DBWILzB8.js} +1 -1
- package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-9TLZE3Hu.js → quadrantDiagram-ABIIQ3AL-DrCVJJx6.js} +1 -1
- package/client/dist/assets/{railroadDiagram-RFXS5EU6-y4tLtjXg.js → railroadDiagram-RFXS5EU6-BdPW2dNf.js} +1 -1
- package/client/dist/assets/{requirementDiagram-TGXJPOKE-B9EOQDQM.js → requirementDiagram-TGXJPOKE-Bj_g3tC5.js} +1 -1
- package/client/dist/assets/{sankeyDiagram-HTMAVEWB-zfwiDzkT.js → sankeyDiagram-HTMAVEWB-BGL9NnsS.js} +1 -1
- package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-DW1LWepL.js → sequenceDiagram-DBY2YBRQ-DEirxTZY.js} +1 -1
- package/client/dist/assets/{sizeCapture-X5ZJPWSS-BM81Mik0.js → sizeCapture-X5ZJPWSS-BtLrvrea.js} +1 -1
- package/client/dist/assets/{stateDiagram-2N3HPSRC-D0EMIw1w.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-CKXNCX6M.js → swimlanes-5IMT3BWC-PMRQzNhU.js} +2 -2
- package/client/dist/assets/swimlanesDiagram-G3AALYLV-DMLbRFiO.js +8 -0
- package/client/dist/assets/{timeline-definition-FHXFAJF6-ByzIfvL5.js → timeline-definition-FHXFAJF6-CnBKJtD_.js} +1 -1
- package/client/dist/assets/{vennDiagram-L72KCM5P-Xep38xBH.js → vennDiagram-L72KCM5P-BYmiJYoh.js} +1 -1
- package/client/dist/assets/{wardleyDiagram-EHGQE667-DKWDpx6g.js → wardleyDiagram-EHGQE667-DU7vW8q3.js} +1 -1
- package/client/dist/assets/{xychartDiagram-FW5EYKEG-BGcwZTnu.js → xychartDiagram-FW5EYKEG-BEtPvBSU.js} +1 -1
- package/client/dist/index.html +2 -2
- package/lib/preflight.mjs +24 -5
- package/lib/probes.mjs +10 -4
- package/lib/server.mjs +149 -12
- 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-merge.d.ts +19 -0
- package/server/dist/core/sdk-sessions-merge.d.ts.map +1 -1
- package/server/dist/core/sdk-sessions-merge.js +19 -5
- package/server/dist/core/sdk-sessions-merge.js.map +1 -1
- package/server/dist/core/sdk-sessions-refresh.d.ts +50 -0
- package/server/dist/core/sdk-sessions-refresh.d.ts.map +1 -0
- package/server/dist/core/sdk-sessions-refresh.js +69 -0
- package/server/dist/core/sdk-sessions-refresh.js.map +1 -0
- package/server/dist/core/sdk-sessions-store.d.ts +48 -0
- package/server/dist/core/sdk-sessions-store.d.ts.map +1 -1
- package/server/dist/core/sdk-sessions-store.js +8 -9
- 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/shipwright-plugin-version-reader.d.ts +15 -0
- package/server/dist/core/shipwright-plugin-version-reader.d.ts.map +1 -0
- package/server/dist/core/shipwright-plugin-version-reader.js +49 -0
- package/server/dist/core/shipwright-plugin-version-reader.js.map +1 -0
- 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 +2 -25
- 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/_lead.d.ts +23 -0
- package/server/dist/external/inbox/_lead.d.ts.map +1 -0
- package/server/dist/external/inbox/_lead.js +83 -0
- package/server/dist/external/inbox/_lead.js.map +1 -0
- package/server/dist/external/inbox/_types.d.ts +55 -0
- package/server/dist/external/inbox/_types.d.ts.map +1 -0
- package/server/dist/external/inbox/_types.js +13 -0
- package/server/dist/external/inbox/_types.js.map +1 -0
- 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 +43 -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 +51 -0
- package/server/dist/external/launch/claim-holder-gate.d.ts.map +1 -0
- package/server/dist/external/launch/claim-holder-gate.js +95 -0
- package/server/dist/external/launch/claim-holder-gate.js.map +1 -0
- 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 +99 -128
- 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/lead-question-threads.d.ts +46 -0
- package/server/dist/external/org/lead-question-threads.d.ts.map +1 -0
- package/server/dist/external/org/lead-question-threads.js +132 -0
- package/server/dist/external/org/lead-question-threads.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 +11 -0
- package/server/dist/external/org/mount.d.ts.map +1 -1
- package/server/dist/external/org/mount.js +7 -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/usage.d.ts.map +1 -1
- package/server/dist/external/org/usage.js +20 -2
- package/server/dist/external/org/usage.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 +12 -3
- 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 +27 -0
- package/server/dist/routes/diagnostics.d.ts.map +1 -1
- package/server/dist/routes/diagnostics.js +5 -1
- 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-threads-composite.d.ts +24 -0
- package/server/dist/routes/org-threads-composite.d.ts.map +1 -0
- package/server/dist/routes/org-threads-composite.js +51 -0
- package/server/dist/routes/org-threads-composite.js.map +1 -0
- 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 +14 -0
- package/server/dist/routes/org.d.ts.map +1 -1
- package/server/dist/routes/org.js +63 -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 +37 -1
- package/server/dist/terminal/pty-manager.d.ts.map +1 -1
- package/server/dist/terminal/pty-manager.js +33 -3
- package/server/dist/terminal/pty-manager.js.map +1 -1
- package/server/dist/terminal/pty-write-chunker.d.ts +109 -0
- package/server/dist/terminal/pty-write-chunker.d.ts.map +1 -0
- package/server/dist/terminal/pty-write-chunker.js +234 -0
- package/server/dist/terminal/pty-write-chunker.js.map +1 -0
- 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 +76 -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-BYPbLjRl.js +0 -1
- package/client/dist/assets/classDiagram-OUVF2IWQ-CsFIeTju.js +0 -1
- package/client/dist/assets/classDiagram-v2-EOCWNBFH-CsFIeTju.js +0 -1
- package/client/dist/assets/index-BnTOrFHb.js +0 -829
- package/client/dist/assets/index-CYPc6qxw.css +0 -1
- package/client/dist/assets/stateDiagram-v2-6OUMAXLB-B3E4_xxT.js +0 -1
- package/client/dist/assets/swimlanesDiagram-G3AALYLV-BegQBqnC.js +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-slice2.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/types-slice2.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM7D,qDAAqD;AACrD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D
|
|
1
|
+
{"version":3,"file":"types-slice2.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/types-slice2.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
export declare const MODEL_TIER_ROLES: readonly ["plan_review", "review", "finalization", "execution"];
|
|
2
2
|
export type ModelTierRole = (typeof MODEL_TIER_ROLES)[number];
|
|
3
|
-
export type ModelTier = "opus" | "sonnet" | "haiku" | "inherit";
|
|
3
|
+
export type ModelTier = "opus" | "sonnet" | "haiku" | "fable" | "inherit";
|
|
4
4
|
export type ModelTierSource = "project_config" | "unset";
|
|
5
5
|
export interface EffectiveModelTier {
|
|
6
6
|
tier: ModelTier;
|
|
7
7
|
source: ModelTierSource;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* shipwright#771 (iterate-2026-09-18-codex-review-tier-config) — the two
|
|
11
|
+
* optional Codex-reviewer-identity keys. NOT part of the Claude
|
|
12
|
+
* `MODEL_TIER_ROLES`/tier axis: a free-form Codex model slug, validated
|
|
13
|
+
* shipwright-side by an unconditional syntactic allowlist
|
|
14
|
+
* (`shared/scripts/lib/codex_review_transport.py`), never checked against
|
|
15
|
+
* a closed tier enum here either. Read-only, same as the Claude tiers —
|
|
16
|
+
* webui never writes `shipwright_model_config.json`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const CODEX_REVIEWER_ROLES: readonly ["codex_review", "codex_plan_review"];
|
|
19
|
+
export type CodexReviewerRole = (typeof CODEX_REVIEWER_ROLES)[number];
|
|
9
20
|
export interface ModelTierConfigReadResult {
|
|
10
21
|
tiers: Record<ModelTierRole, EffectiveModelTier>;
|
|
22
|
+
/** Present only when at least one Codex-reviewer key is configured. */
|
|
23
|
+
codex?: Partial<Record<CodexReviewerRole, string>>;
|
|
11
24
|
/** A safe, operator-facing warning; it never contains raw config content. */
|
|
12
25
|
warning?: "model_config_missing" | "model_config_unreadable" | "model_config_invalid";
|
|
13
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-tier-config-reader.d.ts","sourceRoot":"","sources":["../../src/core/model-tier-config-reader.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,gBAAgB,iEAKnB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"model-tier-config-reader.d.ts","sourceRoot":"","sources":["../../src/core/model-tier-config-reader.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,gBAAgB,iEAKnB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,gDAAiD,CAAC;AACnF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IACjD,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,6EAA6E;IAC7E,OAAO,CAAC,EAAE,sBAAsB,GAAG,yBAAyB,GAAG,sBAAsB,CAAC;CACvF;AAWD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA2C9E;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,yBAAyB,CAkDlF"}
|
|
@@ -15,8 +15,18 @@ export const MODEL_TIER_ROLES = [
|
|
|
15
15
|
"finalization",
|
|
16
16
|
"execution",
|
|
17
17
|
];
|
|
18
|
+
/**
|
|
19
|
+
* shipwright#771 (iterate-2026-09-18-codex-review-tier-config) — the two
|
|
20
|
+
* optional Codex-reviewer-identity keys. NOT part of the Claude
|
|
21
|
+
* `MODEL_TIER_ROLES`/tier axis: a free-form Codex model slug, validated
|
|
22
|
+
* shipwright-side by an unconditional syntactic allowlist
|
|
23
|
+
* (`shared/scripts/lib/codex_review_transport.py`), never checked against
|
|
24
|
+
* a closed tier enum here either. Read-only, same as the Claude tiers —
|
|
25
|
+
* webui never writes `shipwright_model_config.json`.
|
|
26
|
+
*/
|
|
27
|
+
export const CODEX_REVIEWER_ROLES = ["codex_review", "codex_plan_review"];
|
|
18
28
|
const FILENAME = "shipwright_model_config.json";
|
|
19
|
-
const VALID_TIERS = new Set(["opus", "sonnet", "haiku", "inherit"]);
|
|
29
|
+
const VALID_TIERS = new Set(["opus", "sonnet", "haiku", "fable", "inherit"]);
|
|
20
30
|
function inheritedTiers() {
|
|
21
31
|
return Object.fromEntries(MODEL_TIER_ROLES.map((role) => [role, { tier: "inherit", source: "unset" }]));
|
|
22
32
|
}
|
|
@@ -82,6 +92,28 @@ export function readModelTierConfig(projectPath) {
|
|
|
82
92
|
invalidRoleValue = true;
|
|
83
93
|
}
|
|
84
94
|
}
|
|
85
|
-
|
|
95
|
+
// shipwright#771 — same shape check as `lib.model_tier_config.load_model_config`
|
|
96
|
+
// (non-empty string after trim); the syntactic slug allowlist is a
|
|
97
|
+
// transport-time concern (`codex_review_transport.py`), not applied here.
|
|
98
|
+
const codex = {};
|
|
99
|
+
let invalidCodexValue = false;
|
|
100
|
+
for (const role of CODEX_REVIEWER_ROLES) {
|
|
101
|
+
const candidate = raw[role];
|
|
102
|
+
if (candidate === undefined)
|
|
103
|
+
continue;
|
|
104
|
+
if (typeof candidate === "string" && candidate.trim().length > 0) {
|
|
105
|
+
codex[role] = candidate.trim();
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
invalidCodexValue = true;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const hasCodex = Object.keys(codex).length > 0;
|
|
112
|
+
const warning = invalidRoleValue || invalidCodexValue ? "model_config_invalid" : undefined;
|
|
113
|
+
return {
|
|
114
|
+
tiers,
|
|
115
|
+
...(hasCodex ? { codex } : {}),
|
|
116
|
+
...(warning ? { warning } : {}),
|
|
117
|
+
};
|
|
86
118
|
}
|
|
87
119
|
//# sourceMappingURL=model-tier-config-reader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-tier-config-reader.js","sourceRoot":"","sources":["../../src/core/model-tier-config-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,aAAa;IACb,QAAQ;IACR,cAAc;IACd,WAAW;CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"model-tier-config-reader.js","sourceRoot":"","sources":["../../src/core/model-tier-config-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Keep pwsh off the network / first-run telemetry paths while under test. */
|
|
2
|
+
export declare const POWERSHELL_QUIET_ENV: Record<string, string>;
|
|
3
|
+
export interface PowerShellProbe {
|
|
4
|
+
bin: string | null;
|
|
5
|
+
diagnostics: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function resolvePowerShell(): PowerShellProbe;
|
|
8
|
+
export declare function isCi(env?: NodeJS.ProcessEnv): boolean;
|
|
9
|
+
/** `it.skipIf` predicate: skip only off-CI; in CI the test runs and fails loud. */
|
|
10
|
+
export declare function powershellSkip(): boolean;
|
|
11
|
+
export declare function requirePowerShell(): string;
|
|
12
|
+
//# sourceMappingURL=powershell-probe.smoke-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"powershell-probe.smoke-helpers.d.ts","sourceRoot":"","sources":["../../src/core/powershell-probe.smoke-helpers.ts"],"names":[],"mappings":"AAwBA,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKvD,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAmCD,wBAAgB,iBAAiB,IAAI,eAAe,CAGnD;AAED,wBAAgB,IAAI,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAElE;AAED,mFAAmF;AACnF,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* powershell-probe.smoke-helpers.ts — the ONE place the real-shell smoke
|
|
3
|
+
* tests decide whether (and which) PowerShell is available.
|
|
4
|
+
*
|
|
5
|
+
* Why this exists (iterate-2026-09-30-pwsh-probe-flake): both smoke suites
|
|
6
|
+
* used to probe with `it.skipIf(!findPowerShell())` (evaluated at COLLECTION)
|
|
7
|
+
* plus a second probe in `beforeAll`. Those are independent process spawns, so
|
|
8
|
+
* one could succeed while the other failed — the test then RAN but held
|
|
9
|
+
* `null` and died with "No PowerShell available" / a null passed to spawn
|
|
10
|
+
* (PR #496, Diff coverage job). pwsh was on the image the whole time. The
|
|
11
|
+
* fix is to probe ONCE per test file (module instance), retry a transient failure, and keep the
|
|
12
|
+
* failure diagnosable.
|
|
13
|
+
*
|
|
14
|
+
* Contract: `powershellSkip()` is the skipIf predicate — false in CI, so a
|
|
15
|
+
* missing PowerShell FAILS there (never a silent skip) via `requirePowerShell()`
|
|
16
|
+
* with the captured diagnostics. Locally (no pwsh) the tests skip as before.
|
|
17
|
+
*/
|
|
18
|
+
import { spawnSync } from "node:child_process";
|
|
19
|
+
const PROBE_ATTEMPTS = 3;
|
|
20
|
+
const PROBE_TIMEOUT_MS = 30_000;
|
|
21
|
+
const PROBE_BACKOFF_MS = 300;
|
|
22
|
+
/** Keep pwsh off the network / first-run telemetry paths while under test. */
|
|
23
|
+
export const POWERSHELL_QUIET_ENV = {
|
|
24
|
+
POWERSHELL_TELEMETRY_OPTOUT: "1",
|
|
25
|
+
POWERSHELL_UPDATECHECK: "Off",
|
|
26
|
+
DOTNET_CLI_TELEMETRY_OPTOUT: "1",
|
|
27
|
+
DOTNET_NOLOGO: "1",
|
|
28
|
+
};
|
|
29
|
+
let cached = null;
|
|
30
|
+
function sleepSync(ms) {
|
|
31
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
32
|
+
}
|
|
33
|
+
function probeOnce() {
|
|
34
|
+
const diagnostics = [];
|
|
35
|
+
for (let attempt = 1; attempt <= PROBE_ATTEMPTS; attempt++) {
|
|
36
|
+
let transient = false;
|
|
37
|
+
for (const candidate of ["pwsh", "powershell"]) {
|
|
38
|
+
const r = spawnSync(candidate, ["-NoProfile", "-Command", "$PSVersionTable.PSVersion.Major"], {
|
|
39
|
+
stdio: "pipe",
|
|
40
|
+
timeout: PROBE_TIMEOUT_MS,
|
|
41
|
+
env: { ...process.env, ...POWERSHELL_QUIET_ENV },
|
|
42
|
+
});
|
|
43
|
+
if (r.status === 0)
|
|
44
|
+
return { bin: candidate, diagnostics };
|
|
45
|
+
if (r.error?.code === "ENOENT") {
|
|
46
|
+
diagnostics.push(`${candidate}: not installed (ENOENT)`);
|
|
47
|
+
continue; // deterministic — never worth a retry
|
|
48
|
+
}
|
|
49
|
+
transient = true;
|
|
50
|
+
const why = r.error
|
|
51
|
+
? `${r.error.name}: ${r.error.message}`
|
|
52
|
+
: `status=${r.status} signal=${r.signal ?? "none"} stderr=${r.stderr?.toString().trim().slice(0, 200) ?? ""}`;
|
|
53
|
+
diagnostics.push(`attempt ${attempt} ${candidate}: ${why}`);
|
|
54
|
+
}
|
|
55
|
+
if (!transient)
|
|
56
|
+
break; // every candidate is simply not installed — retrying cannot help
|
|
57
|
+
if (attempt < PROBE_ATTEMPTS)
|
|
58
|
+
sleepSync(PROBE_BACKOFF_MS * attempt);
|
|
59
|
+
}
|
|
60
|
+
return { bin: null, diagnostics };
|
|
61
|
+
}
|
|
62
|
+
export function resolvePowerShell() {
|
|
63
|
+
cached ??= probeOnce();
|
|
64
|
+
return cached;
|
|
65
|
+
}
|
|
66
|
+
export function isCi(env = process.env) {
|
|
67
|
+
return ["true", "1"].includes((env.CI ?? "").toLowerCase());
|
|
68
|
+
}
|
|
69
|
+
/** `it.skipIf` predicate: skip only off-CI; in CI the test runs and fails loud. */
|
|
70
|
+
export function powershellSkip() {
|
|
71
|
+
return resolvePowerShell().bin === null && !isCi();
|
|
72
|
+
}
|
|
73
|
+
export function requirePowerShell() {
|
|
74
|
+
const { bin, diagnostics } = resolvePowerShell();
|
|
75
|
+
if (bin)
|
|
76
|
+
return bin;
|
|
77
|
+
throw new Error("PowerShell (pwsh/powershell) is required for the real-shell smoke tests but could not be run" +
|
|
78
|
+
` after ${PROBE_ATTEMPTS} attempts.\n${diagnostics.join("\n")}`);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=powershell-probe.smoke-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"powershell-probe.smoke-helpers.js","sourceRoot":"","sources":["../../src/core/powershell-probe.smoke-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,2BAA2B,EAAE,GAAG;IAChC,sBAAsB,EAAE,KAAK;IAC7B,2BAA2B,EAAE,GAAG;IAChC,aAAa,EAAE,GAAG;CACnB,CAAC;AAOF,IAAI,MAAM,GAA2B,IAAI,CAAC;AAE1C,SAAS,SAAS,CAAC,EAAU;IAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,cAAc,EAAE,OAAO,EAAE,EAAE,CAAC;QAC3D,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,iCAAiC,CAAC,EAAE;gBAC5F,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,gBAAgB;gBACzB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,oBAAoB,EAAE;aACjD,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;YAC3D,IAAK,CAAC,CAAC,KAA2C,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtE,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,0BAA0B,CAAC,CAAC;gBACzD,SAAS,CAAC,sCAAsC;YAClD,CAAC;YACD,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK;gBACjB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE;gBACvC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,MAAM,IAAI,MAAM,WAAW,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAChH,WAAW,CAAC,IAAI,CAAC,WAAW,OAAO,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,iEAAiE;QACxF,IAAI,OAAO,GAAG,cAAc;YAAE,SAAS,CAAC,gBAAgB,GAAG,OAAO,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,SAAS,EAAE,CAAC;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvD,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,cAAc;IAC5B,OAAO,iBAAiB,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACjD,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,MAAM,IAAI,KAAK,CACb,8FAA8F;QAC5F,UAAU,cAAc,eAAe,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClE,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** A tool the repair command cannot install — it needs its own command. */
|
|
2
|
-
export type ToolchainTool = "claude" | "uv" | "python" | "git";
|
|
2
|
+
export type ToolchainTool = "claude" | "uv" | "python" | "git" | "codex";
|
|
3
3
|
/**
|
|
4
4
|
* Platform-correct, copy-pasteable install command for a missing prerequisite.
|
|
5
5
|
* Mirrors `bootstrapper/lib/util.mjs installHint` field-for-field.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness-install-hints.d.ts","sourceRoot":"","sources":["../../src/core/readiness-install-hints.ts"],"names":[],"mappings":"AAeA,2EAA2E;AAC3E,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"readiness-install-hints.d.ts","sourceRoot":"","sources":["../../src/core/readiness-install-hints.ts"],"names":[],"mappings":"AAeA,2EAA2E;AAC3E,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEzE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CA4BlF"}
|
|
@@ -38,6 +38,11 @@ export function installHint(tool, platform) {
|
|
|
38
38
|
return win
|
|
39
39
|
? 'powershell -c "irm https://claude.ai/install.ps1 | iex"'
|
|
40
40
|
: "curl -fsSL https://claude.ai/install.sh | bash";
|
|
41
|
+
case "codex":
|
|
42
|
+
// Codex Light AC8 — no single canonical install-script URL is
|
|
43
|
+
// confirmed for this tool yet; point at the account/CLI docs rather
|
|
44
|
+
// than guess a command that could be wrong.
|
|
45
|
+
return "install the Codex CLI — see your Codex account's CLI setup instructions";
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
48
|
//# sourceMappingURL=readiness-install-hints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness-install-hints.js","sourceRoot":"","sources":["../../src/core/readiness-install-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAmB,EAAE,QAAyB;IACxE,MAAM,GAAG,GAAG,QAAQ,KAAK,OAAO,CAAC;IACjC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI;YACP,OAAO,GAAG;gBACR,CAAC,CAAC,4DAA4D;gBAC9D,CAAC,CAAC,iDAAiD,CAAC;QACxD,KAAK,QAAQ;YACX,qEAAqE;YACrE,2EAA2E;YAC3E,8EAA8E;YAC9E,OAAO,GAAG;gBACR,CAAC,CAAC,mIAAmI;gBACrI,CAAC,CAAC,oHAAoH,CAAC;QAC3H,KAAK,KAAK;YACR,OAAO,GAAG;gBACR,CAAC,CAAC,mDAAmD;gBACrD,CAAC,CAAC,2DAA2D,CAAC;QAClE,KAAK,QAAQ;YACX,OAAO,GAAG;gBACR,CAAC,CAAC,yDAAyD;gBAC3D,CAAC,CAAC,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"readiness-install-hints.js","sourceRoot":"","sources":["../../src/core/readiness-install-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAmB,EAAE,QAAyB;IACxE,MAAM,GAAG,GAAG,QAAQ,KAAK,OAAO,CAAC;IACjC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI;YACP,OAAO,GAAG;gBACR,CAAC,CAAC,4DAA4D;gBAC9D,CAAC,CAAC,iDAAiD,CAAC;QACxD,KAAK,QAAQ;YACX,qEAAqE;YACrE,2EAA2E;YAC3E,8EAA8E;YAC9E,OAAO,GAAG;gBACR,CAAC,CAAC,mIAAmI;gBACrI,CAAC,CAAC,oHAAoH,CAAC;QAC3H,KAAK,KAAK;YACR,OAAO,GAAG;gBACR,CAAC,CAAC,mDAAmD;gBACrD,CAAC,CAAC,2DAA2D,CAAC;QAClE,KAAK,QAAQ;YACX,OAAO,GAAG;gBACR,CAAC,CAAC,yDAAyD;gBAC3D,CAAC,CAAC,gDAAgD,CAAC;QACvD,KAAK,OAAO;YACV,8DAA8D;YAC9D,oEAAoE;YACpE,4CAA4C;YAC5C,OAAO,yEAAyE,CAAC;IACrF,CAAC;AACH,CAAC"}
|
|
@@ -49,6 +49,67 @@ export declare function defaultRun(cmd: string, args?: string[], deps?: {
|
|
|
49
49
|
homedir?: string;
|
|
50
50
|
env?: NodeJS.ProcessEnv;
|
|
51
51
|
}): Promise<RunResult>;
|
|
52
|
+
/**
|
|
53
|
+
* Probe a command that may resolve as a Windows PATHEXT SHIM (`.cmd`/`.bat`)
|
|
54
|
+
* rather than a genuine `.exe` — e.g. `codex`, which the Codex CLI installer
|
|
55
|
+
* drops on Windows as a `.cmd` wrapper (no `codex.exe`). `defaultRun` is
|
|
56
|
+
* deliberately `.exe`-only (its own doc comment: "This is deliberately NOT
|
|
57
|
+
* the bootstrapper preflight.mjs case, which shells out ONLY to resolve
|
|
58
|
+
* `.cmd` shims") — `execFile(cmd, args, {shell:false})` cannot invoke a
|
|
59
|
+
* `.cmd` without a shell (Node's CVE-2024-27980 hardening), so probing codex
|
|
60
|
+
* through `defaultRun` throws ENOENT even when Codex CLI is genuinely
|
|
61
|
+
* installed and working (iterate-2026-09-16-codex-probe-win32-shim).
|
|
62
|
+
*
|
|
63
|
+
* This is a SIBLING, not a `defaultRun` edit, because `defaultRun`'s win32
|
|
64
|
+
* branch is load-bearing for a DIFFERENT fix: it hands execFile the
|
|
65
|
+
* `probeEnv`-augmented `env` so a `~/.local/bin`-only uv is still found
|
|
66
|
+
* (iterate-2026-08-23; proven in readiness-probe-run.test.ts). `resolveSpawn`
|
|
67
|
+
* (ADR-044) has no `env` parameter — it resolves PATH from the real
|
|
68
|
+
* `process.env.PATH` only — so routing `defaultRun` itself through it would
|
|
69
|
+
* silently regress that augmented-PATH lookup for uv/python/git. Codex has no
|
|
70
|
+
* such augmented-PATH need (its installer puts the shim straight on PATH), so
|
|
71
|
+
* this sibling can use `resolveSpawn` unconditionally on win32 without that
|
|
72
|
+
* risk.
|
|
73
|
+
*
|
|
74
|
+
* POSIX is a pass-through to `defaultRun` — `execvp` already resolves a shim
|
|
75
|
+
* script (or any executable) by bare name, no `.cmd`/`.bat` concept exists.
|
|
76
|
+
*
|
|
77
|
+
* CAVEAT for a future caller: unlike `defaultRun`, this does NOT augment the
|
|
78
|
+
* lookup PATH — it resolves strictly from the real `process.env.PATH`
|
|
79
|
+
* (`resolveSpawn` takes no `env` override; that is the whole reason this is a
|
|
80
|
+
* sibling and not a `defaultRun` edit, per above). Fine for `codex`: unlike
|
|
81
|
+
* uv, whose specific installer script's KNOWN behavior is dropping to
|
|
82
|
+
* `~/.local/bin` without touching PATH until the next shell start (the
|
|
83
|
+
* concrete, previously-reported failure that justified `probeEnv`'s
|
|
84
|
+
* augmentation), no Codex CLI install method is known to place the shim
|
|
85
|
+
* anywhere off the server process's inherited PATH — it is an ordinary PATH
|
|
86
|
+
* shim like the already-working `claude`/`npm`/`gh` ones `win32-spawn.ts`
|
|
87
|
+
* already resolves elsewhere in this codebase. If that assumption turns out
|
|
88
|
+
* wrong for some install method, the fix is the same shape `probeEnv` already
|
|
89
|
+
* is: report the concrete failure, then add an equivalent augmentation here —
|
|
90
|
+
* not to speculate one in now against no observed case. A tool that already
|
|
91
|
+
* needs the `~/.local/bin`-style augmented lookup should keep using
|
|
92
|
+
* `defaultRun`, not this.
|
|
93
|
+
*
|
|
94
|
+
* SECURITY INVARIANT this function relies on, not enforces: `cmd`/`args` MUST
|
|
95
|
+
* be literal constants, never externally-influenced. Unlike the ONE existing
|
|
96
|
+
* caller of `resolveSpawn` (`preview-session-manager.tokenizeCommand`, a
|
|
97
|
+
* BLOCKLIST fence against shell metacharacters and `%…%` expansion),
|
|
98
|
+
* `defaultRunShim` calls `resolveSpawn` with NO fence in between — per
|
|
99
|
+
* `win32-spawn.ts`'s own header, "this module never assumes [the fence] ran".
|
|
100
|
+
* Today's two callers (`isCodexCliAvailable`, `probeReadiness`'s codex arm)
|
|
101
|
+
* both pass the hardcoded literal `"codex"`/`["--version"]`, so there is
|
|
102
|
+
* nothing to inject — but a future caller reusing this exported, generically
|
|
103
|
+
* named function with any externally-influenced `cmd`/`args` would silently
|
|
104
|
+
* inherit `win32CmdWrap`'s unfenced cmd.exe quoting (a token containing
|
|
105
|
+
* `&|<>^` or a space triggers the verbatim-quoted branch; `%VAR%` is never
|
|
106
|
+
* neutralized by quoting at all). Add a fence at the call site before doing
|
|
107
|
+
* that, the same way the preview caller does.
|
|
108
|
+
*/
|
|
109
|
+
export declare function defaultRunShim(cmd: string, args?: string[], deps?: {
|
|
110
|
+
platform?: NodeJS.Platform;
|
|
111
|
+
cwd?: string;
|
|
112
|
+
}): Promise<RunResult>;
|
|
52
113
|
/** First `\d+.\d+(.\d+)?` token in a `--version` blob, or "". */
|
|
53
114
|
export declare function extractVersion(out: string): string;
|
|
54
115
|
/** Numeric semver-ish compare: -1 / 0 / 1. Missing segments are 0. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness-probe-run.d.ts","sourceRoot":"","sources":["../../src/core/readiness-probe-run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"readiness-probe-run.d.ts","sourceRoot":"","sources":["../../src/core/readiness-probe-run.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf;;qFAEiF;IACjF,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AACD,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;AAEzE;;kDAEkD;AAClD,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAkB,EAC9B,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GACnF,OAAO,CAAC,SAAS,CAAC,CAapB;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAkB,EAC9B,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GACtD,OAAO,CAAC,SAAS,CAAC,CAuBpB;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAMhG"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { execFile } from "node:child_process";
|
|
10
10
|
import os from "node:os";
|
|
11
11
|
import { probeEnv, resolvePosixBin } from "./readiness-probe-path.js";
|
|
12
|
+
import { resolveSpawn } from "./win32-spawn.js";
|
|
12
13
|
/** Per-probe timeout. A `--version` that hangs longer than this is treated as
|
|
13
14
|
* "not found" — the process is killed, and because the runner is ASYNC the
|
|
14
15
|
* event loop is never blocked while it waits. */
|
|
@@ -51,21 +52,98 @@ export function defaultRun(cmd, args = ["--version"], deps = {}) {
|
|
|
51
52
|
const env = probeEnv(platform, homedir, deps.env ?? process.env);
|
|
52
53
|
const target = platform === "win32" ? cmd : resolvePosixBin(cmd, env);
|
|
53
54
|
return new Promise((resolve) => {
|
|
54
|
-
execFile(target, args, { encoding: "utf-8", timeout: PROBE_TIMEOUT_MS, windowsHide: true, env }, (error, stdout, stderr) =>
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
55
|
+
execFile(target, args, { encoding: "utf-8", timeout: PROBE_TIMEOUT_MS, windowsHide: true, env }, (error, stdout, stderr) => resolve(parseExecResult(error, stdout, stderr)));
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Shared execFile-callback → RunResult parsing for `defaultRun` and
|
|
60
|
+
* `defaultRunShim` (extracted iterate-2026-09-16-codex-probe-win32-shim, both
|
|
61
|
+
* callers need the identical ok/code contract; see `defaultRun`'s own doc
|
|
62
|
+
* comment for why `ok` requires no-error-AND-a-digit and why `code` is `null`
|
|
63
|
+
* rather than a string on ENOENT/timeout).
|
|
64
|
+
*/
|
|
65
|
+
function parseExecResult(error, stdout, stderr) {
|
|
66
|
+
const out = String(stdout ?? "");
|
|
67
|
+
const err = String(stderr ?? "");
|
|
68
|
+
const ok = !error && /\d+\.\d+/.test(out + err);
|
|
69
|
+
const errCode = error?.code;
|
|
70
|
+
const code = error == null ? 0 : typeof errCode === "number" ? errCode : null;
|
|
71
|
+
return { ok, stdout: out, stderr: err, code };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Probe a command that may resolve as a Windows PATHEXT SHIM (`.cmd`/`.bat`)
|
|
75
|
+
* rather than a genuine `.exe` — e.g. `codex`, which the Codex CLI installer
|
|
76
|
+
* drops on Windows as a `.cmd` wrapper (no `codex.exe`). `defaultRun` is
|
|
77
|
+
* deliberately `.exe`-only (its own doc comment: "This is deliberately NOT
|
|
78
|
+
* the bootstrapper preflight.mjs case, which shells out ONLY to resolve
|
|
79
|
+
* `.cmd` shims") — `execFile(cmd, args, {shell:false})` cannot invoke a
|
|
80
|
+
* `.cmd` without a shell (Node's CVE-2024-27980 hardening), so probing codex
|
|
81
|
+
* through `defaultRun` throws ENOENT even when Codex CLI is genuinely
|
|
82
|
+
* installed and working (iterate-2026-09-16-codex-probe-win32-shim).
|
|
83
|
+
*
|
|
84
|
+
* This is a SIBLING, not a `defaultRun` edit, because `defaultRun`'s win32
|
|
85
|
+
* branch is load-bearing for a DIFFERENT fix: it hands execFile the
|
|
86
|
+
* `probeEnv`-augmented `env` so a `~/.local/bin`-only uv is still found
|
|
87
|
+
* (iterate-2026-08-23; proven in readiness-probe-run.test.ts). `resolveSpawn`
|
|
88
|
+
* (ADR-044) has no `env` parameter — it resolves PATH from the real
|
|
89
|
+
* `process.env.PATH` only — so routing `defaultRun` itself through it would
|
|
90
|
+
* silently regress that augmented-PATH lookup for uv/python/git. Codex has no
|
|
91
|
+
* such augmented-PATH need (its installer puts the shim straight on PATH), so
|
|
92
|
+
* this sibling can use `resolveSpawn` unconditionally on win32 without that
|
|
93
|
+
* risk.
|
|
94
|
+
*
|
|
95
|
+
* POSIX is a pass-through to `defaultRun` — `execvp` already resolves a shim
|
|
96
|
+
* script (or any executable) by bare name, no `.cmd`/`.bat` concept exists.
|
|
97
|
+
*
|
|
98
|
+
* CAVEAT for a future caller: unlike `defaultRun`, this does NOT augment the
|
|
99
|
+
* lookup PATH — it resolves strictly from the real `process.env.PATH`
|
|
100
|
+
* (`resolveSpawn` takes no `env` override; that is the whole reason this is a
|
|
101
|
+
* sibling and not a `defaultRun` edit, per above). Fine for `codex`: unlike
|
|
102
|
+
* uv, whose specific installer script's KNOWN behavior is dropping to
|
|
103
|
+
* `~/.local/bin` without touching PATH until the next shell start (the
|
|
104
|
+
* concrete, previously-reported failure that justified `probeEnv`'s
|
|
105
|
+
* augmentation), no Codex CLI install method is known to place the shim
|
|
106
|
+
* anywhere off the server process's inherited PATH — it is an ordinary PATH
|
|
107
|
+
* shim like the already-working `claude`/`npm`/`gh` ones `win32-spawn.ts`
|
|
108
|
+
* already resolves elsewhere in this codebase. If that assumption turns out
|
|
109
|
+
* wrong for some install method, the fix is the same shape `probeEnv` already
|
|
110
|
+
* is: report the concrete failure, then add an equivalent augmentation here —
|
|
111
|
+
* not to speculate one in now against no observed case. A tool that already
|
|
112
|
+
* needs the `~/.local/bin`-style augmented lookup should keep using
|
|
113
|
+
* `defaultRun`, not this.
|
|
114
|
+
*
|
|
115
|
+
* SECURITY INVARIANT this function relies on, not enforces: `cmd`/`args` MUST
|
|
116
|
+
* be literal constants, never externally-influenced. Unlike the ONE existing
|
|
117
|
+
* caller of `resolveSpawn` (`preview-session-manager.tokenizeCommand`, a
|
|
118
|
+
* BLOCKLIST fence against shell metacharacters and `%…%` expansion),
|
|
119
|
+
* `defaultRunShim` calls `resolveSpawn` with NO fence in between — per
|
|
120
|
+
* `win32-spawn.ts`'s own header, "this module never assumes [the fence] ran".
|
|
121
|
+
* Today's two callers (`isCodexCliAvailable`, `probeReadiness`'s codex arm)
|
|
122
|
+
* both pass the hardcoded literal `"codex"`/`["--version"]`, so there is
|
|
123
|
+
* nothing to inject — but a future caller reusing this exported, generically
|
|
124
|
+
* named function with any externally-influenced `cmd`/`args` would silently
|
|
125
|
+
* inherit `win32CmdWrap`'s unfenced cmd.exe quoting (a token containing
|
|
126
|
+
* `&|<>^` or a space triggers the verbatim-quoted branch; `%VAR%` is never
|
|
127
|
+
* neutralized by quoting at all). Add a fence at the call site before doing
|
|
128
|
+
* that, the same way the preview caller does.
|
|
129
|
+
*/
|
|
130
|
+
export function defaultRunShim(cmd, args = ["--version"], deps = {}) {
|
|
131
|
+
const platform = deps.platform ?? process.platform;
|
|
132
|
+
if (platform !== "win32") {
|
|
133
|
+
return defaultRun(cmd, args, { platform });
|
|
134
|
+
}
|
|
135
|
+
const cwd = deps.cwd ?? process.cwd();
|
|
136
|
+
const resolved = resolveSpawn([cmd, ...args], cwd);
|
|
137
|
+
if (!resolved) {
|
|
138
|
+
return Promise.resolve({ ok: false, stdout: "", stderr: "", code: null });
|
|
139
|
+
}
|
|
140
|
+
return new Promise((resolve) => {
|
|
141
|
+
execFile(resolved.command, resolved.args, {
|
|
142
|
+
encoding: "utf-8",
|
|
143
|
+
timeout: PROBE_TIMEOUT_MS,
|
|
144
|
+
windowsHide: true,
|
|
145
|
+
windowsVerbatimArguments: resolved.windowsVerbatimArguments,
|
|
146
|
+
}, (error, stdout, stderr) => resolve(parseExecResult(error, stdout, stderr)));
|
|
69
147
|
});
|
|
70
148
|
}
|
|
71
149
|
/** First `\d+.\d+(.\d+)?` token in a `--version` blob, or "". */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness-probe-run.js","sourceRoot":"","sources":["../../src/core/readiness-probe-run.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"readiness-probe-run.js","sourceRoot":"","sources":["../../src/core/readiness-probe-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type RunFn } from "./readiness-probe-run.js";
|
|
2
|
-
export { compareVersions, defaultRun, extractVersion, resolvePython, PROBE_TIMEOUT_MS, type RunFn, type RunResult, } from "./readiness-probe-run.js";
|
|
2
|
+
export { compareVersions, defaultRun, defaultRunShim, extractVersion, resolvePython, PROBE_TIMEOUT_MS, type RunFn, type RunResult, } from "./readiness-probe-run.js";
|
|
3
3
|
/** The one command that repairs every not-ready check (installs plugins + syncs the cache). */
|
|
4
4
|
export declare const READINESS_REPAIR_COMMAND = "npx @svenroth-ai/shipwright@latest";
|
|
5
5
|
/** Minimum working Python the plugin hooks require. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness-probe.d.ts","sourceRoot":"","sources":["../../src/core/readiness-probe.ts"],"names":[],"mappings":"AAqCA,OAAO,
|
|
1
|
+
{"version":3,"file":"readiness-probe.d.ts","sourceRoot":"","sources":["../../src/core/readiness-probe.ts"],"names":[],"mappings":"AAqCA,OAAO,EAML,KAAK,KAAK,EAEX,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EACL,eAAe,EACf,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,KAAK,KAAK,EACV,KAAK,SAAS,GACf,MAAM,0BAA0B,CAAC;AAElC,+FAA+F;AAC/F,eAAO,MAAM,wBAAwB,uCAAuC,CAAC;AAE7E,uDAAuD;AACvD,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB;;yDAEqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,+EAA+E;IAC/E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,8EAA8E;IAC9E,MAAM,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACnE;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,mDAAoD,CAAC;AAEvF;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CA+J9E"}
|
|
@@ -33,10 +33,10 @@ import { existsSync as fsExistsSync, readdirSync as fsReaddirSync } from "node:f
|
|
|
33
33
|
import os from "node:os";
|
|
34
34
|
import path from "node:path";
|
|
35
35
|
import { installHint } from "./readiness-install-hints.js";
|
|
36
|
-
import { compareVersions, defaultRun, extractVersion, resolvePython, } from "./readiness-probe-run.js";
|
|
36
|
+
import { compareVersions, defaultRun, defaultRunShim, extractVersion, resolvePython, } from "./readiness-probe-run.js";
|
|
37
37
|
// Re-export the probe RUN + version primitives (moved to readiness-probe-run.ts
|
|
38
38
|
// for the 300-LOC guideline) so every existing importer keeps its path stable.
|
|
39
|
-
export { compareVersions, defaultRun, extractVersion, resolvePython, PROBE_TIMEOUT_MS, } from "./readiness-probe-run.js";
|
|
39
|
+
export { compareVersions, defaultRun, defaultRunShim, extractVersion, resolvePython, PROBE_TIMEOUT_MS, } from "./readiness-probe-run.js";
|
|
40
40
|
/** The one command that repairs every not-ready check (installs plugins + syncs the cache). */
|
|
41
41
|
export const READINESS_REPAIR_COMMAND = "npx @svenroth-ai/shipwright@latest";
|
|
42
42
|
/** Minimum working Python the plugin hooks require. */
|
|
@@ -63,6 +63,12 @@ export const DOOR_REQUIRED_PLUGINS = ["shipwright-adopt", "shipwright-grade"];
|
|
|
63
63
|
*/
|
|
64
64
|
export async function probeReadiness(deps) {
|
|
65
65
|
const run = deps.run ?? defaultRun;
|
|
66
|
+
// codex installs as a `.cmd` PATH shim on Windows (no `codex.exe`), which
|
|
67
|
+
// `defaultRun` cannot spawn under `shell:false` — see `defaultRunShim`'s doc
|
|
68
|
+
// comment (iterate-2026-09-16-codex-probe-win32-shim). `deps.run`, when
|
|
69
|
+
// injected (tests), still governs both arms identically — a caller that
|
|
70
|
+
// wants a single mock for every tool keeps getting exactly that.
|
|
71
|
+
const runCodex = deps.run ?? defaultRunShim;
|
|
66
72
|
const existsFn = deps.existsFn ?? fsExistsSync;
|
|
67
73
|
const readdirFn = deps.readdirFn ?? ((p) => fsReaddirSync(p));
|
|
68
74
|
const homeDir = deps.homeDir ?? os.homedir();
|
|
@@ -70,14 +76,21 @@ export async function probeReadiness(deps) {
|
|
|
70
76
|
const cacheRoot = shipwrightCacheRoot(homeDir);
|
|
71
77
|
// Fire the independent toolchain arms concurrently — the event loop is free
|
|
72
78
|
// the whole time (execFile is async). The python arm may run up to 3 sequential
|
|
73
|
-
// probes internally (resolvePython), so the wait is max(uv, PYTHON-ARM, git).
|
|
74
|
-
const [uv, py, git] = await Promise.all([
|
|
79
|
+
// probes internally (resolvePython), so the wait is max(uv, PYTHON-ARM, git, codex).
|
|
80
|
+
const [uv, py, git, codex] = await Promise.all([
|
|
75
81
|
run("uv", ["--version"]),
|
|
76
82
|
resolvePython(run),
|
|
77
83
|
run("git", ["--version"]),
|
|
84
|
+
runCodex("codex", ["--version"]),
|
|
78
85
|
]);
|
|
79
86
|
const checks = [];
|
|
80
|
-
// Claude CLI — the
|
|
87
|
+
// Claude CLI — one of the two engines. Verdict comes pre-resolved from
|
|
88
|
+
// cli-compat. Codex Light AC8 (revised 2026-09-16): a per-task runtime
|
|
89
|
+
// toggle means either CLI can be picked on any task regardless of the
|
|
90
|
+
// global default, so this can no longer be individually `critical` — an
|
|
91
|
+
// all-Codex operator with no Claude CLI installed must still reach ready.
|
|
92
|
+
// Reported informationally here; the combined "at least one engine" gate
|
|
93
|
+
// below is what actually blocks readiness.
|
|
81
94
|
checks.push({
|
|
82
95
|
key: "claude",
|
|
83
96
|
label: "Claude CLI",
|
|
@@ -87,10 +100,22 @@ export async function probeReadiness(deps) {
|
|
|
87
100
|
: deps.claude.raw
|
|
88
101
|
? `${deps.claude.raw} (need >= ${deps.claude.minSupported})`
|
|
89
102
|
: "not found",
|
|
90
|
-
why: "
|
|
91
|
-
critical:
|
|
103
|
+
why: "one of two engines the Command Center can drive — needs at least one of Claude CLI / Codex CLI",
|
|
104
|
+
critical: false,
|
|
92
105
|
hint: deps.claude.supported ? undefined : installHint("claude", platform),
|
|
93
106
|
});
|
|
107
|
+
// Codex CLI — the other engine (Spec/codex-light-webui.md AC8). Presence
|
|
108
|
+
// alone is the bar (no version-compat table exists for Codex yet, unlike
|
|
109
|
+
// Claude's MIN_SUPPORTED_CLI / cli-compat.ts).
|
|
110
|
+
checks.push({
|
|
111
|
+
key: "codex",
|
|
112
|
+
label: "Codex CLI",
|
|
113
|
+
ok: codex.ok,
|
|
114
|
+
detail: codex.ok ? extractVersion(codex.stdout + codex.stderr) || "detected" : "not found",
|
|
115
|
+
why: "one of two engines the Command Center can drive — needs at least one of Claude CLI / Codex CLI",
|
|
116
|
+
critical: false,
|
|
117
|
+
hint: codex.ok ? undefined : installHint("codex", platform),
|
|
118
|
+
});
|
|
94
119
|
// Shipwright plugins installed — the marketplace cache holds one dir per plugin.
|
|
95
120
|
// A door-critical plugin that is absent means that door opens into a missing
|
|
96
121
|
// command, so "some plugins installed" is not the same as "ready".
|
|
@@ -180,7 +205,10 @@ export async function probeReadiness(deps) {
|
|
|
180
205
|
critical: true,
|
|
181
206
|
hint: git.ok ? undefined : installHint("git", platform),
|
|
182
207
|
});
|
|
183
|
-
|
|
208
|
+
// AC8's combined gate: at least one engine must be usable, on top of every
|
|
209
|
+
// other individually-critical check (plugins/cache/uv/python/git).
|
|
210
|
+
const engineReady = deps.claude.supported || codex.ok;
|
|
211
|
+
const ready = engineReady && checks.every((c) => c.ok || !c.critical);
|
|
184
212
|
return { ready, checks, repairCommand: READINESS_REPAIR_COMMAND };
|
|
185
213
|
}
|
|
186
214
|
//# sourceMappingURL=readiness-probe.js.map
|