@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.
Files changed (621) hide show
  1. package/client/dist/assets/{EmbeddedTerminal-D3wpPNZP.js → EmbeddedTerminal-4xgNUBUu.js} +19 -19
  2. package/client/dist/assets/{abnfDiagram-VRR7QNED-BkLIltB3.js → abnfDiagram-VRR7QNED-BdCNbaqc.js} +1 -1
  3. package/client/dist/assets/{arc-Sw-Gh0nI.js → arc-DoZTTE1N.js} +1 -1
  4. package/client/dist/assets/{architectureDiagram-ZJ3FMSHR-rdxUi9Ks.js → architectureDiagram-ZJ3FMSHR-DFTG4KtO.js} +1 -1
  5. package/client/dist/assets/{blockDiagram-677ZJIJ3-Ch_9dj8a.js → blockDiagram-677ZJIJ3-C34UBjOB.js} +1 -1
  6. package/client/dist/assets/{c4Diagram-LMCZKHZV-CkFlO65x.js → c4Diagram-LMCZKHZV-CbqAB1Ou.js} +1 -1
  7. package/client/dist/assets/channel-DBcZw7Kn.js +1 -0
  8. package/client/dist/assets/{chunk-2Q5K7J3B-CypX83xu.js → chunk-2Q5K7J3B-4N6AnmBJ.js} +1 -1
  9. package/client/dist/assets/{chunk-32BRIVSS-DxVLYGdl.js → chunk-32BRIVSS-Cs67LiCy.js} +1 -1
  10. package/client/dist/assets/{chunk-5VM5RSS4-Cxk1evhx.js → chunk-5VM5RSS4-Bwd7rtD3.js} +1 -1
  11. package/client/dist/assets/{chunk-EX3LRPZG-n9q5S4yJ.js → chunk-EX3LRPZG-CQqGfptD.js} +1 -1
  12. package/client/dist/assets/{chunk-JWPE2WC7-jeL4xvir.js → chunk-JWPE2WC7-ClvKd4PN.js} +1 -1
  13. package/client/dist/assets/{chunk-MOJQB5TN-DDSHN0cj.js → chunk-MOJQB5TN-Cwvj8GE1.js} +1 -1
  14. package/client/dist/assets/{chunk-RYQCIY6F-C0bo383g.js → chunk-RYQCIY6F-DrWMx37d.js} +1 -1
  15. package/client/dist/assets/{chunk-V7JOEXUC-C0jDXXAU.js → chunk-V7JOEXUC-CYFfa4PY.js} +1 -1
  16. package/client/dist/assets/{chunk-VR4S4FIN-h-Rr4Pn2.js → chunk-VR4S4FIN-B5eWtesm.js} +1 -1
  17. package/client/dist/assets/{chunk-XXDRQBXY-BexSo0-s.js → chunk-XXDRQBXY-BQAZ6Our.js} +1 -1
  18. package/client/dist/assets/classDiagram-OUVF2IWQ-C3Q1V9DU.js +1 -0
  19. package/client/dist/assets/classDiagram-v2-EOCWNBFH-C3Q1V9DU.js +1 -0
  20. package/client/dist/assets/{cose-bilkent-JH36ORCC-BQXzaioj.js → cose-bilkent-JH36ORCC-C76Yia6h.js} +1 -1
  21. package/client/dist/assets/{cynefin-VYW2F7L2-BJIofhfe.js → cynefin-VYW2F7L2-pJe7rdTi.js} +1 -1
  22. package/client/dist/assets/{cynefinDiagram-TSTJHNR4-DmPqTM1T.js → cynefinDiagram-TSTJHNR4-EeHQ7dYV.js} +1 -1
  23. package/client/dist/assets/{dagre-VKFMJZFB-1xljvw6X.js → dagre-VKFMJZFB-VXOY6IHR.js} +1 -1
  24. package/client/dist/assets/{diagram-FQU43EPY-iyL9muCG.js → diagram-FQU43EPY-DW_-leqw.js} +1 -1
  25. package/client/dist/assets/{diagram-G47NLZAW-DREp2Th6.js → diagram-G47NLZAW-C_hsLD4u.js} +1 -1
  26. package/client/dist/assets/{diagram-NH7WQ7WH-h0X3Is2S.js → diagram-NH7WQ7WH-CbeQuO_f.js} +1 -1
  27. package/client/dist/assets/{diagram-OA4YK3LP-Bj8YZRFJ.js → diagram-OA4YK3LP-DRHY5d_c.js} +1 -1
  28. package/client/dist/assets/{diagram-WEI45ONY-BZOf805d.js → diagram-WEI45ONY-B87OYR_S.js} +1 -1
  29. package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DO5JnXda.js → ebnfDiagram-CCIWWBDH-B8Z8WHF6.js} +1 -1
  30. package/client/dist/assets/{erDiagram-Q63AITRT-DRgcqg1T.js → erDiagram-Q63AITRT-DaD7oa9H.js} +1 -1
  31. package/client/dist/assets/{flowDiagram-23GEKE2U-C3J9QmrW.js → flowDiagram-23GEKE2U-GrMVpsea.js} +1 -1
  32. package/client/dist/assets/{ganttDiagram-NO4QXBWP-BIEl3Tkm.js → ganttDiagram-NO4QXBWP-K3X0DYBa.js} +1 -1
  33. package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-BNF0tFWC.js → gitGraphDiagram-IHSO6WYX-B2SEx0xa.js} +1 -1
  34. package/client/dist/assets/index-CIpLt0ie.js +863 -0
  35. package/client/dist/assets/index-DGtnTeFd.css +1 -0
  36. package/client/dist/assets/{infoDiagram-FWYZ7A6U-DEyFxiyY.js → infoDiagram-FWYZ7A6U-Fi8fQ95G.js} +1 -1
  37. package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-B_ehlg3I.js → ishikawaDiagram-FXEZZL3T-CrN7QJzt.js} +1 -1
  38. package/client/dist/assets/{journeyDiagram-5HDEW3XC-Dp00FyJS.js → journeyDiagram-5HDEW3XC-XHIsl7rM.js} +1 -1
  39. package/client/dist/assets/{kanban-definition-HUTT4EX6-CTAf16q8.js → kanban-definition-HUTT4EX6-A6HJqHw7.js} +1 -1
  40. package/client/dist/assets/{linear-9vNUgmYd.js → linear-D1vF9IQB.js} +1 -1
  41. package/client/dist/assets/{mermaid.core-A6tjaEVD.js → mermaid.core-D6w9zlA0.js} +4 -4
  42. package/client/dist/assets/{mindmap-definition-LN4V7U3C-DRW3bmCY.js → mindmap-definition-LN4V7U3C-CxRkUj6Z.js} +1 -1
  43. package/client/dist/assets/{pegDiagram-2B236MQR-DJFCjHp2.js → pegDiagram-2B236MQR-Bs9dp-8a.js} +1 -1
  44. package/client/dist/assets/{pieDiagram-ENE6RG2P-KRd-sGvC.js → pieDiagram-ENE6RG2P-DBWILzB8.js} +1 -1
  45. package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-9TLZE3Hu.js → quadrantDiagram-ABIIQ3AL-DrCVJJx6.js} +1 -1
  46. package/client/dist/assets/{railroadDiagram-RFXS5EU6-y4tLtjXg.js → railroadDiagram-RFXS5EU6-BdPW2dNf.js} +1 -1
  47. package/client/dist/assets/{requirementDiagram-TGXJPOKE-B9EOQDQM.js → requirementDiagram-TGXJPOKE-Bj_g3tC5.js} +1 -1
  48. package/client/dist/assets/{sankeyDiagram-HTMAVEWB-zfwiDzkT.js → sankeyDiagram-HTMAVEWB-BGL9NnsS.js} +1 -1
  49. package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-DW1LWepL.js → sequenceDiagram-DBY2YBRQ-DEirxTZY.js} +1 -1
  50. package/client/dist/assets/{sizeCapture-X5ZJPWSS-BM81Mik0.js → sizeCapture-X5ZJPWSS-BtLrvrea.js} +1 -1
  51. package/client/dist/assets/{stateDiagram-2N3HPSRC-D0EMIw1w.js → stateDiagram-2N3HPSRC-D3GXIouX.js} +1 -1
  52. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-D3lXe_mJ.js +1 -0
  53. package/client/dist/assets/{swimlanes-5IMT3BWC-CKXNCX6M.js → swimlanes-5IMT3BWC-PMRQzNhU.js} +2 -2
  54. package/client/dist/assets/swimlanesDiagram-G3AALYLV-DMLbRFiO.js +8 -0
  55. package/client/dist/assets/{timeline-definition-FHXFAJF6-ByzIfvL5.js → timeline-definition-FHXFAJF6-CnBKJtD_.js} +1 -1
  56. package/client/dist/assets/{vennDiagram-L72KCM5P-Xep38xBH.js → vennDiagram-L72KCM5P-BYmiJYoh.js} +1 -1
  57. package/client/dist/assets/{wardleyDiagram-EHGQE667-DKWDpx6g.js → wardleyDiagram-EHGQE667-DU7vW8q3.js} +1 -1
  58. package/client/dist/assets/{xychartDiagram-FW5EYKEG-BGcwZTnu.js → xychartDiagram-FW5EYKEG-BEtPvBSU.js} +1 -1
  59. package/client/dist/index.html +2 -2
  60. package/lib/preflight.mjs +24 -5
  61. package/lib/probes.mjs +10 -4
  62. package/lib/server.mjs +149 -12
  63. package/lib/util.mjs +5 -1
  64. package/package.json +1 -1
  65. package/scripts/deploy-procs.mjs +105 -20
  66. package/scripts/deploy-swap.mjs +23 -2
  67. package/server/dist/config.d.ts +9 -0
  68. package/server/dist/config.d.ts.map +1 -1
  69. package/server/dist/config.js +1 -0
  70. package/server/dist/config.js.map +1 -1
  71. package/server/dist/core/campaign-events.d.ts.map +1 -1
  72. package/server/dist/core/campaign-events.js +1 -0
  73. package/server/dist/core/campaign-events.js.map +1 -1
  74. package/server/dist/core/campaign-loop-state.d.ts.map +1 -1
  75. package/server/dist/core/campaign-loop-state.js +54 -21
  76. package/server/dist/core/campaign-loop-state.js.map +1 -1
  77. package/server/dist/core/campaign-parse.d.ts +4 -0
  78. package/server/dist/core/campaign-parse.d.ts.map +1 -1
  79. package/server/dist/core/campaign-parse.js +9 -0
  80. package/server/dist/core/campaign-parse.js.map +1 -1
  81. package/server/dist/core/campaign-readiness-schema.d.ts +33 -0
  82. package/server/dist/core/campaign-readiness-schema.d.ts.map +1 -0
  83. package/server/dist/core/campaign-readiness-schema.js +70 -0
  84. package/server/dist/core/campaign-readiness-schema.js.map +1 -0
  85. package/server/dist/core/campaign-readiness.d.ts +59 -0
  86. package/server/dist/core/campaign-readiness.d.ts.map +1 -0
  87. package/server/dist/core/campaign-readiness.js +163 -0
  88. package/server/dist/core/campaign-readiness.js.map +1 -0
  89. package/server/dist/core/campaign-status-json.d.ts +3 -0
  90. package/server/dist/core/campaign-status-json.d.ts.map +1 -1
  91. package/server/dist/core/campaign-status-json.js +7 -0
  92. package/server/dist/core/campaign-status-json.js.map +1 -1
  93. package/server/dist/core/campaign-store.d.ts.map +1 -1
  94. package/server/dist/core/campaign-store.js +4 -1
  95. package/server/dist/core/campaign-store.js.map +1 -1
  96. package/server/dist/core/campaign-types.d.ts +8 -0
  97. package/server/dist/core/campaign-types.d.ts.map +1 -1
  98. package/server/dist/core/campaign-worktree-root.d.ts +19 -0
  99. package/server/dist/core/campaign-worktree-root.d.ts.map +1 -0
  100. package/server/dist/core/campaign-worktree-root.js +76 -0
  101. package/server/dist/core/campaign-worktree-root.js.map +1 -0
  102. package/server/dist/core/claim-record-lock.d.ts +30 -0
  103. package/server/dist/core/claim-record-lock.d.ts.map +1 -0
  104. package/server/dist/core/claim-record-lock.js +90 -0
  105. package/server/dist/core/claim-record-lock.js.map +1 -0
  106. package/server/dist/core/cli-child-spawn.d.ts +28 -0
  107. package/server/dist/core/cli-child-spawn.d.ts.map +1 -0
  108. package/server/dist/core/cli-child-spawn.js +146 -0
  109. package/server/dist/core/cli-child-spawn.js.map +1 -0
  110. package/server/dist/core/codex-models-probe.d.ts +46 -0
  111. package/server/dist/core/codex-models-probe.d.ts.map +1 -0
  112. package/server/dist/core/codex-models-probe.js +103 -0
  113. package/server/dist/core/codex-models-probe.js.map +1 -0
  114. package/server/dist/core/codex-oracle-runner.d.ts +68 -0
  115. package/server/dist/core/codex-oracle-runner.d.ts.map +1 -0
  116. package/server/dist/core/codex-oracle-runner.js +124 -0
  117. package/server/dist/core/codex-oracle-runner.js.map +1 -0
  118. package/server/dist/core/codex-status-report.d.ts +6 -0
  119. package/server/dist/core/codex-status-report.d.ts.map +1 -0
  120. package/server/dist/core/codex-status-report.js +40 -0
  121. package/server/dist/core/codex-status-report.js.map +1 -0
  122. package/server/dist/core/codex-task-watcher-types.d.ts +69 -0
  123. package/server/dist/core/codex-task-watcher-types.d.ts.map +1 -0
  124. package/server/dist/core/codex-task-watcher-types.js +12 -0
  125. package/server/dist/core/codex-task-watcher-types.js.map +1 -0
  126. package/server/dist/core/codex-task-watcher.d.ts +30 -0
  127. package/server/dist/core/codex-task-watcher.d.ts.map +1 -0
  128. package/server/dist/core/codex-task-watcher.js +252 -0
  129. package/server/dist/core/codex-task-watcher.js.map +1 -0
  130. package/server/dist/core/codex-terminal-signal-detect.d.ts +7 -0
  131. package/server/dist/core/codex-terminal-signal-detect.d.ts.map +1 -0
  132. package/server/dist/core/codex-terminal-signal-detect.js +113 -0
  133. package/server/dist/core/codex-terminal-signal-detect.js.map +1 -0
  134. package/server/dist/core/codex-thread-discovery.d.ts +21 -0
  135. package/server/dist/core/codex-thread-discovery.d.ts.map +1 -0
  136. package/server/dist/core/codex-thread-discovery.js +169 -0
  137. package/server/dist/core/codex-thread-discovery.js.map +1 -0
  138. package/server/dist/core/codextender-auth-file-sweep.d.ts +41 -0
  139. package/server/dist/core/codextender-auth-file-sweep.d.ts.map +1 -0
  140. package/server/dist/core/codextender-auth-file-sweep.js +97 -0
  141. package/server/dist/core/codextender-auth-file-sweep.js.map +1 -0
  142. package/server/dist/core/codextender-proxy-probe.d.ts +80 -0
  143. package/server/dist/core/codextender-proxy-probe.d.ts.map +1 -0
  144. package/server/dist/core/codextender-proxy-probe.js +179 -0
  145. package/server/dist/core/codextender-proxy-probe.js.map +1 -0
  146. package/server/dist/core/contract-version.d.ts +16 -1
  147. package/server/dist/core/contract-version.d.ts.map +1 -1
  148. package/server/dist/core/contract-version.js +16 -1
  149. package/server/dist/core/contract-version.js.map +1 -1
  150. package/server/dist/core/launcher-codex.d.ts +61 -0
  151. package/server/dist/core/launcher-codex.d.ts.map +1 -0
  152. package/server/dist/core/launcher-codex.js +187 -0
  153. package/server/dist/core/launcher-codex.js.map +1 -0
  154. package/server/dist/core/launcher-codextender-env.d.ts +44 -0
  155. package/server/dist/core/launcher-codextender-env.d.ts.map +1 -0
  156. package/server/dist/core/launcher-codextender-env.js +212 -0
  157. package/server/dist/core/launcher-codextender-env.js.map +1 -0
  158. package/server/dist/core/launcher-codextender.d.ts +72 -0
  159. package/server/dist/core/launcher-codextender.d.ts.map +1 -0
  160. package/server/dist/core/launcher-codextender.js +98 -0
  161. package/server/dist/core/launcher-codextender.js.map +1 -0
  162. package/server/dist/core/launcher-codextender.smoke-helpers.d.ts +25 -0
  163. package/server/dist/core/launcher-codextender.smoke-helpers.d.ts.map +1 -0
  164. package/server/dist/core/launcher-codextender.smoke-helpers.js +211 -0
  165. package/server/dist/core/launcher-codextender.smoke-helpers.js.map +1 -0
  166. package/server/dist/core/launcher-permission-flags.d.ts +17 -0
  167. package/server/dist/core/launcher-permission-flags.d.ts.map +1 -0
  168. package/server/dist/core/launcher-permission-flags.js +27 -0
  169. package/server/dist/core/launcher-permission-flags.js.map +1 -0
  170. package/server/dist/core/launcher.d.ts +18 -0
  171. package/server/dist/core/launcher.d.ts.map +1 -1
  172. package/server/dist/core/launcher.js +6 -0
  173. package/server/dist/core/launcher.js.map +1 -1
  174. package/server/dist/core/leadwright-preflight-transport.d.ts +27 -0
  175. package/server/dist/core/leadwright-preflight-transport.d.ts.map +1 -0
  176. package/server/dist/core/leadwright-preflight-transport.js +124 -0
  177. package/server/dist/core/leadwright-preflight-transport.js.map +1 -0
  178. package/server/dist/core/mission-context/artifacts-tests-ac.d.ts +6 -0
  179. package/server/dist/core/mission-context/artifacts-tests-ac.d.ts.map +1 -0
  180. package/server/dist/core/mission-context/artifacts-tests-ac.js +31 -0
  181. package/server/dist/core/mission-context/artifacts-tests-ac.js.map +1 -0
  182. package/server/dist/core/mission-context/artifacts-tests.d.ts.map +1 -1
  183. package/server/dist/core/mission-context/artifacts-tests.js +20 -0
  184. package/server/dist/core/mission-context/artifacts-tests.js.map +1 -1
  185. package/server/dist/core/mission-context/resolver-io.d.ts +10 -0
  186. package/server/dist/core/mission-context/resolver-io.d.ts.map +1 -1
  187. package/server/dist/core/mission-context/resolver-parts.d.ts +8 -7
  188. package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -1
  189. package/server/dist/core/mission-context/resolver-parts.js +22 -14
  190. package/server/dist/core/mission-context/resolver-parts.js.map +1 -1
  191. package/server/dist/core/mission-context/resolver.d.ts.map +1 -1
  192. package/server/dist/core/mission-context/resolver.js +1 -1
  193. package/server/dist/core/mission-context/resolver.js.map +1 -1
  194. package/server/dist/core/mission-context/run-id-recovery.d.ts +18 -2
  195. package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -1
  196. package/server/dist/core/mission-context/run-id-recovery.js +38 -18
  197. package/server/dist/core/mission-context/run-id-recovery.js.map +1 -1
  198. package/server/dist/core/mission-context/traceability.d.ts.map +1 -1
  199. package/server/dist/core/mission-context/traceability.js +15 -1
  200. package/server/dist/core/mission-context/traceability.js.map +1 -1
  201. package/server/dist/core/mission-context/types-slice2.d.ts +44 -0
  202. package/server/dist/core/mission-context/types-slice2.d.ts.map +1 -1
  203. package/server/dist/core/model-tier-config-reader.d.ts +14 -1
  204. package/server/dist/core/model-tier-config-reader.d.ts.map +1 -1
  205. package/server/dist/core/model-tier-config-reader.js +34 -2
  206. package/server/dist/core/model-tier-config-reader.js.map +1 -1
  207. package/server/dist/core/powershell-probe.smoke-helpers.d.ts +12 -0
  208. package/server/dist/core/powershell-probe.smoke-helpers.d.ts.map +1 -0
  209. package/server/dist/core/powershell-probe.smoke-helpers.js +80 -0
  210. package/server/dist/core/powershell-probe.smoke-helpers.js.map +1 -0
  211. package/server/dist/core/readiness-install-hints.d.ts +1 -1
  212. package/server/dist/core/readiness-install-hints.d.ts.map +1 -1
  213. package/server/dist/core/readiness-install-hints.js +5 -0
  214. package/server/dist/core/readiness-install-hints.js.map +1 -1
  215. package/server/dist/core/readiness-probe-run.d.ts +61 -0
  216. package/server/dist/core/readiness-probe-run.d.ts.map +1 -1
  217. package/server/dist/core/readiness-probe-run.js +93 -15
  218. package/server/dist/core/readiness-probe-run.js.map +1 -1
  219. package/server/dist/core/readiness-probe.d.ts +1 -1
  220. package/server/dist/core/readiness-probe.d.ts.map +1 -1
  221. package/server/dist/core/readiness-probe.js +36 -8
  222. package/server/dist/core/readiness-probe.js.map +1 -1
  223. package/server/dist/core/sdk-sessions-merge.d.ts +19 -0
  224. package/server/dist/core/sdk-sessions-merge.d.ts.map +1 -1
  225. package/server/dist/core/sdk-sessions-merge.js +19 -5
  226. package/server/dist/core/sdk-sessions-merge.js.map +1 -1
  227. package/server/dist/core/sdk-sessions-refresh.d.ts +50 -0
  228. package/server/dist/core/sdk-sessions-refresh.d.ts.map +1 -0
  229. package/server/dist/core/sdk-sessions-refresh.js +69 -0
  230. package/server/dist/core/sdk-sessions-refresh.js.map +1 -0
  231. package/server/dist/core/sdk-sessions-store.d.ts +48 -0
  232. package/server/dist/core/sdk-sessions-store.d.ts.map +1 -1
  233. package/server/dist/core/sdk-sessions-store.js +8 -9
  234. package/server/dist/core/sdk-sessions-store.js.map +1 -1
  235. package/server/dist/core/sdk-sessions-validate.d.ts.map +1 -1
  236. package/server/dist/core/sdk-sessions-validate.js +11 -0
  237. package/server/dist/core/sdk-sessions-validate.js.map +1 -1
  238. package/server/dist/core/settings-reader.d.ts +18 -0
  239. package/server/dist/core/settings-reader.d.ts.map +1 -0
  240. package/server/dist/core/settings-reader.js +40 -0
  241. package/server/dist/core/settings-reader.js.map +1 -0
  242. package/server/dist/core/shell-quote.d.ts +29 -0
  243. package/server/dist/core/shell-quote.d.ts.map +1 -1
  244. package/server/dist/core/shell-quote.js +34 -0
  245. package/server/dist/core/shell-quote.js.map +1 -1
  246. package/server/dist/core/shipwright-plugin-version-reader.d.ts +15 -0
  247. package/server/dist/core/shipwright-plugin-version-reader.d.ts.map +1 -0
  248. package/server/dist/core/shipwright-plugin-version-reader.js +49 -0
  249. package/server/dist/core/shipwright-plugin-version-reader.js.map +1 -0
  250. package/server/dist/core/task-editability.d.ts +1 -1
  251. package/server/dist/core/task-editability.d.ts.map +1 -1
  252. package/server/dist/core/task-editability.js +1 -0
  253. package/server/dist/core/task-editability.js.map +1 -1
  254. package/server/dist/core/triage-cli-runner.d.ts.map +1 -1
  255. package/server/dist/core/triage-cli-runner.js +6 -21
  256. package/server/dist/core/triage-cli-runner.js.map +1 -1
  257. package/server/dist/core/triage-compose.d.ts.map +1 -1
  258. package/server/dist/core/triage-compose.js +34 -3
  259. package/server/dist/core/triage-compose.js.map +1 -1
  260. package/server/dist/core/triage-store.d.ts +2 -1
  261. package/server/dist/core/triage-store.d.ts.map +1 -1
  262. package/server/dist/core/triage-store.js +1 -1
  263. package/server/dist/core/triage-store.js.map +1 -1
  264. package/server/dist/external/create-external-routes-args.d.ts +122 -0
  265. package/server/dist/external/create-external-routes-args.d.ts.map +1 -0
  266. package/server/dist/external/create-external-routes-args.js +2 -0
  267. package/server/dist/external/create-external-routes-args.js.map +1 -0
  268. package/server/dist/external/inbox/_codex.d.ts +14 -0
  269. package/server/dist/external/inbox/_codex.d.ts.map +1 -0
  270. package/server/dist/external/inbox/_codex.js +88 -0
  271. package/server/dist/external/inbox/_codex.js.map +1 -0
  272. package/server/dist/external/inbox/_derive.d.ts +2 -25
  273. package/server/dist/external/inbox/_derive.d.ts.map +1 -1
  274. package/server/dist/external/inbox/_derive.js +11 -0
  275. package/server/dist/external/inbox/_derive.js.map +1 -1
  276. package/server/dist/external/inbox/_lead.d.ts +23 -0
  277. package/server/dist/external/inbox/_lead.d.ts.map +1 -0
  278. package/server/dist/external/inbox/_lead.js +83 -0
  279. package/server/dist/external/inbox/_lead.js.map +1 -0
  280. package/server/dist/external/inbox/_types.d.ts +55 -0
  281. package/server/dist/external/inbox/_types.d.ts.map +1 -0
  282. package/server/dist/external/inbox/_types.js +13 -0
  283. package/server/dist/external/inbox/_types.js.map +1 -0
  284. package/server/dist/external/inbox/routes.d.ts +7 -0
  285. package/server/dist/external/inbox/routes.d.ts.map +1 -1
  286. package/server/dist/external/inbox/routes.js +43 -2
  287. package/server/dist/external/inbox/routes.js.map +1 -1
  288. package/server/dist/external/launch/_helpers.d.ts +4 -0
  289. package/server/dist/external/launch/_helpers.d.ts.map +1 -1
  290. package/server/dist/external/launch/_helpers.js.map +1 -1
  291. package/server/dist/external/launch/action-substitution-branch.d.ts +12 -0
  292. package/server/dist/external/launch/action-substitution-branch.d.ts.map +1 -1
  293. package/server/dist/external/launch/action-substitution-branch.js +35 -1
  294. package/server/dist/external/launch/action-substitution-branch.js.map +1 -1
  295. package/server/dist/external/launch/branch-dispatch.d.ts +15 -0
  296. package/server/dist/external/launch/branch-dispatch.d.ts.map +1 -0
  297. package/server/dist/external/launch/branch-dispatch.js +73 -0
  298. package/server/dist/external/launch/branch-dispatch.js.map +1 -0
  299. package/server/dist/external/launch/campaign-step-branch.d.ts +7 -1
  300. package/server/dist/external/launch/campaign-step-branch.d.ts.map +1 -1
  301. package/server/dist/external/launch/campaign-step-branch.js +70 -2
  302. package/server/dist/external/launch/campaign-step-branch.js.map +1 -1
  303. package/server/dist/external/launch/claim-executor-permissions.d.ts +31 -0
  304. package/server/dist/external/launch/claim-executor-permissions.d.ts.map +1 -0
  305. package/server/dist/external/launch/claim-executor-permissions.js +107 -0
  306. package/server/dist/external/launch/claim-executor-permissions.js.map +1 -0
  307. package/server/dist/external/launch/claim-executor-template-arming.d.ts +42 -0
  308. package/server/dist/external/launch/claim-executor-template-arming.d.ts.map +1 -0
  309. package/server/dist/external/launch/claim-executor-template-arming.js +121 -0
  310. package/server/dist/external/launch/claim-executor-template-arming.js.map +1 -0
  311. package/server/dist/external/launch/claim-holder-gate.d.ts +51 -0
  312. package/server/dist/external/launch/claim-holder-gate.d.ts.map +1 -0
  313. package/server/dist/external/launch/claim-holder-gate.js +95 -0
  314. package/server/dist/external/launch/claim-holder-gate.js.map +1 -0
  315. package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts +3 -0
  316. package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts.map +1 -0
  317. package/server/dist/external/launch/claim-permission-perimeter-assert.js +24 -0
  318. package/server/dist/external/launch/claim-permission-perimeter-assert.js.map +1 -0
  319. package/server/dist/external/launch/legacy-fallback-branch.d.ts +14 -0
  320. package/server/dist/external/launch/legacy-fallback-branch.d.ts.map +1 -1
  321. package/server/dist/external/launch/legacy-fallback-branch.js +3 -1
  322. package/server/dist/external/launch/legacy-fallback-branch.js.map +1 -1
  323. package/server/dist/external/launch/master-run-branch.js +2 -2
  324. package/server/dist/external/launch/master-run-branch.js.map +1 -1
  325. package/server/dist/external/launch/mixed-intents-guard.d.ts +10 -0
  326. package/server/dist/external/launch/mixed-intents-guard.d.ts.map +1 -0
  327. package/server/dist/external/launch/mixed-intents-guard.js +49 -0
  328. package/server/dist/external/launch/mixed-intents-guard.js.map +1 -0
  329. package/server/dist/external/launch/parse-body.d.ts +29 -0
  330. package/server/dist/external/launch/parse-body.d.ts.map +1 -1
  331. package/server/dist/external/launch/parse-body.js +66 -0
  332. package/server/dist/external/launch/parse-body.js.map +1 -1
  333. package/server/dist/external/launch/routes.d.ts +3 -0
  334. package/server/dist/external/launch/routes.d.ts.map +1 -1
  335. package/server/dist/external/launch/routes.js +99 -128
  336. package/server/dist/external/launch/routes.js.map +1 -1
  337. package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts +20 -0
  338. package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts.map +1 -0
  339. package/server/dist/external/launch/runtime-chokepoint-codextender.js +51 -0
  340. package/server/dist/external/launch/runtime-chokepoint-codextender.js.map +1 -0
  341. package/server/dist/external/launch/runtime-chokepoint-errors.d.ts +33 -0
  342. package/server/dist/external/launch/runtime-chokepoint-errors.d.ts.map +1 -0
  343. package/server/dist/external/launch/runtime-chokepoint-errors.js +63 -0
  344. package/server/dist/external/launch/runtime-chokepoint-errors.js.map +1 -0
  345. package/server/dist/external/launch/runtime-chokepoint.d.ts +120 -0
  346. package/server/dist/external/launch/runtime-chokepoint.d.ts.map +1 -0
  347. package/server/dist/external/launch/runtime-chokepoint.js +201 -0
  348. package/server/dist/external/launch/runtime-chokepoint.js.map +1 -0
  349. package/server/dist/external/mission-context/routes.d.ts +33 -27
  350. package/server/dist/external/mission-context/routes.d.ts.map +1 -1
  351. package/server/dist/external/mission-context/routes.js +30 -27
  352. package/server/dist/external/mission-context/routes.js.map +1 -1
  353. package/server/dist/external/mission-context/test-harness.d.ts +6 -0
  354. package/server/dist/external/mission-context/test-harness.d.ts.map +1 -1
  355. package/server/dist/external/mission-context/test-harness.js +6 -1
  356. package/server/dist/external/mission-context/test-harness.js.map +1 -1
  357. package/server/dist/external/mission-context/wire.d.ts.map +1 -1
  358. package/server/dist/external/mission-context/wire.js +24 -2
  359. package/server/dist/external/mission-context/wire.js.map +1 -1
  360. package/server/dist/external/org/audit-log.d.ts +19 -0
  361. package/server/dist/external/org/audit-log.d.ts.map +1 -1
  362. package/server/dist/external/org/audit-log.js +33 -18
  363. package/server/dist/external/org/audit-log.js.map +1 -1
  364. package/server/dist/external/org/beat-effect-audit-read.d.ts +15 -0
  365. package/server/dist/external/org/beat-effect-audit-read.d.ts.map +1 -0
  366. package/server/dist/external/org/beat-effect-audit-read.js +73 -0
  367. package/server/dist/external/org/beat-effect-audit-read.js.map +1 -0
  368. package/server/dist/external/org/beat-register-health.d.ts +57 -0
  369. package/server/dist/external/org/beat-register-health.d.ts.map +1 -0
  370. package/server/dist/external/org/beat-register-health.js +125 -0
  371. package/server/dist/external/org/beat-register-health.js.map +1 -0
  372. package/server/dist/external/org/beat-register-release-core.d.ts.map +1 -1
  373. package/server/dist/external/org/beat-register-release-core.js +4 -1
  374. package/server/dist/external/org/beat-register-release-core.js.map +1 -1
  375. package/server/dist/external/org/beat-register-release-request.d.ts +20 -0
  376. package/server/dist/external/org/beat-register-release-request.d.ts.map +1 -0
  377. package/server/dist/external/org/beat-register-release-request.js +92 -0
  378. package/server/dist/external/org/beat-register-release-request.js.map +1 -0
  379. package/server/dist/external/org/beat-register-release.d.ts +3 -1
  380. package/server/dist/external/org/beat-register-release.d.ts.map +1 -1
  381. package/server/dist/external/org/beat-register-release.js +15 -57
  382. package/server/dist/external/org/beat-register-release.js.map +1 -1
  383. package/server/dist/external/org/beat-register.d.ts +18 -20
  384. package/server/dist/external/org/beat-register.d.ts.map +1 -1
  385. package/server/dist/external/org/beat-register.js +30 -56
  386. package/server/dist/external/org/beat-register.js.map +1 -1
  387. package/server/dist/external/org/beat-steps-read.d.ts +17 -0
  388. package/server/dist/external/org/beat-steps-read.d.ts.map +1 -0
  389. package/server/dist/external/org/beat-steps-read.js +89 -0
  390. package/server/dist/external/org/beat-steps-read.js.map +1 -0
  391. package/server/dist/external/org/charter-authority-read.d.ts +39 -0
  392. package/server/dist/external/org/charter-authority-read.d.ts.map +1 -0
  393. package/server/dist/external/org/charter-authority-read.js +142 -0
  394. package/server/dist/external/org/charter-authority-read.js.map +1 -0
  395. package/server/dist/external/org/commit-validate.d.ts +18 -0
  396. package/server/dist/external/org/commit-validate.d.ts.map +1 -0
  397. package/server/dist/external/org/commit-validate.js +59 -0
  398. package/server/dist/external/org/commit-validate.js.map +1 -0
  399. package/server/dist/external/org/commit-writes.d.ts +68 -0
  400. package/server/dist/external/org/commit-writes.d.ts.map +1 -0
  401. package/server/dist/external/org/commit-writes.js +110 -0
  402. package/server/dist/external/org/commit-writes.js.map +1 -0
  403. package/server/dist/external/org/commit.d.ts +73 -0
  404. package/server/dist/external/org/commit.d.ts.map +1 -0
  405. package/server/dist/external/org/commit.js +181 -0
  406. package/server/dist/external/org/commit.js.map +1 -0
  407. package/server/dist/external/org/commit.test-fixtures.d.ts +38 -0
  408. package/server/dist/external/org/commit.test-fixtures.d.ts.map +1 -0
  409. package/server/dist/external/org/commit.test-fixtures.js +67 -0
  410. package/server/dist/external/org/commit.test-fixtures.js.map +1 -0
  411. package/server/dist/external/org/countersign-core.d.ts +19 -0
  412. package/server/dist/external/org/countersign-core.d.ts.map +1 -0
  413. package/server/dist/external/org/countersign-core.js +122 -0
  414. package/server/dist/external/org/countersign-core.js.map +1 -0
  415. package/server/dist/external/org/countersign-request.d.ts +14 -0
  416. package/server/dist/external/org/countersign-request.d.ts.map +1 -0
  417. package/server/dist/external/org/countersign-request.js +78 -0
  418. package/server/dist/external/org/countersign-request.js.map +1 -0
  419. package/server/dist/external/org/countersign.d.ts +6 -5
  420. package/server/dist/external/org/countersign.d.ts.map +1 -1
  421. package/server/dist/external/org/countersign.js +12 -141
  422. package/server/dist/external/org/countersign.js.map +1 -1
  423. package/server/dist/external/org/daemon-config-read.d.ts +31 -0
  424. package/server/dist/external/org/daemon-config-read.d.ts.map +1 -0
  425. package/server/dist/external/org/daemon-config-read.js +50 -0
  426. package/server/dist/external/org/daemon-config-read.js.map +1 -0
  427. package/server/dist/external/org/decisions-lock.d.ts +6 -4
  428. package/server/dist/external/org/decisions-lock.d.ts.map +1 -1
  429. package/server/dist/external/org/decisions-lock.js +9 -8
  430. package/server/dist/external/org/decisions-lock.js.map +1 -1
  431. package/server/dist/external/org/domains.d.ts +35 -0
  432. package/server/dist/external/org/domains.d.ts.map +1 -0
  433. package/server/dist/external/org/domains.js +29 -0
  434. package/server/dist/external/org/domains.js.map +1 -0
  435. package/server/dist/external/org/existing-charters-read.d.ts +5 -0
  436. package/server/dist/external/org/existing-charters-read.d.ts.map +1 -0
  437. package/server/dist/external/org/existing-charters-read.js +31 -0
  438. package/server/dist/external/org/existing-charters-read.js.map +1 -0
  439. package/server/dist/external/org/lead-question-threads.d.ts +46 -0
  440. package/server/dist/external/org/lead-question-threads.d.ts.map +1 -0
  441. package/server/dist/external/org/lead-question-threads.js +132 -0
  442. package/server/dist/external/org/lead-question-threads.js.map +1 -0
  443. package/server/dist/external/org/leadwright-proposal-merge.d.ts +54 -0
  444. package/server/dist/external/org/leadwright-proposal-merge.d.ts.map +1 -0
  445. package/server/dist/external/org/leadwright-proposal-merge.js +47 -0
  446. package/server/dist/external/org/leadwright-proposal-merge.js.map +1 -0
  447. package/server/dist/external/org/mount.d.ts +11 -0
  448. package/server/dist/external/org/mount.d.ts.map +1 -1
  449. package/server/dist/external/org/mount.js +7 -1
  450. package/server/dist/external/org/mount.js.map +1 -1
  451. package/server/dist/external/org/org-chart-full-read.d.ts +19 -0
  452. package/server/dist/external/org/org-chart-full-read.d.ts.map +1 -0
  453. package/server/dist/external/org/org-chart-full-read.js +58 -0
  454. package/server/dist/external/org/org-chart-full-read.js.map +1 -0
  455. package/server/dist/external/org/org-file-lock.d.ts +41 -0
  456. package/server/dist/external/org/org-file-lock.d.ts.map +1 -0
  457. package/server/dist/external/org/org-file-lock.js +90 -0
  458. package/server/dist/external/org/org-file-lock.js.map +1 -0
  459. package/server/dist/external/org/routes.d.ts +10 -0
  460. package/server/dist/external/org/routes.d.ts.map +1 -1
  461. package/server/dist/external/org/routes.js +22 -1
  462. package/server/dist/external/org/routes.js.map +1 -1
  463. package/server/dist/external/org/usage.d.ts.map +1 -1
  464. package/server/dist/external/org/usage.js +20 -2
  465. package/server/dist/external/org/usage.js.map +1 -1
  466. package/server/dist/external/org/verdict.d.ts +57 -0
  467. package/server/dist/external/org/verdict.d.ts.map +1 -0
  468. package/server/dist/external/org/verdict.js +74 -0
  469. package/server/dist/external/org/verdict.js.map +1 -0
  470. package/server/dist/external/routes.d.ts +3 -101
  471. package/server/dist/external/routes.d.ts.map +1 -1
  472. package/server/dist/external/routes.js +12 -3
  473. package/server/dist/external/routes.js.map +1 -1
  474. package/server/dist/external/tasks/create.d.ts.map +1 -1
  475. package/server/dist/external/tasks/create.js +8 -0
  476. package/server/dist/external/tasks/create.js.map +1 -1
  477. package/server/dist/external/tasks/fork.d.ts +29 -0
  478. package/server/dist/external/tasks/fork.d.ts.map +1 -0
  479. package/server/dist/external/tasks/fork.js +166 -0
  480. package/server/dist/external/tasks/fork.js.map +1 -0
  481. package/server/dist/external/tasks/lifecycle.d.ts.map +1 -1
  482. package/server/dist/external/tasks/lifecycle.js +10 -57
  483. package/server/dist/external/tasks/lifecycle.js.map +1 -1
  484. package/server/dist/external/tasks/patch.d.ts.map +1 -1
  485. package/server/dist/external/tasks/patch.js +17 -0
  486. package/server/dist/external/tasks/patch.js.map +1 -1
  487. package/server/dist/external/tasks/routes.d.ts +2 -0
  488. package/server/dist/external/tasks/routes.d.ts.map +1 -1
  489. package/server/dist/external/tasks/routes.js +7 -0
  490. package/server/dist/external/tasks/routes.js.map +1 -1
  491. package/server/dist/external/transcript/routes.d.ts.map +1 -1
  492. package/server/dist/external/transcript/routes.js +25 -3
  493. package/server/dist/external/transcript/routes.js.map +1 -1
  494. package/server/dist/external-routes-wiring.d.ts +28 -0
  495. package/server/dist/external-routes-wiring.d.ts.map +1 -0
  496. package/server/dist/external-routes-wiring.js +61 -0
  497. package/server/dist/external-routes-wiring.js.map +1 -0
  498. package/server/dist/index.d.ts.map +1 -1
  499. package/server/dist/index.js +111 -44
  500. package/server/dist/index.js.map +1 -1
  501. package/server/dist/lib/resolveHonoHost.d.ts.map +1 -1
  502. package/server/dist/lib/resolveHonoHost.js +16 -1
  503. package/server/dist/lib/resolveHonoHost.js.map +1 -1
  504. package/server/dist/routes/_triage-api-harness.d.ts +1 -1
  505. package/server/dist/routes/_triage-api-harness.d.ts.map +1 -1
  506. package/server/dist/routes/_triage-api-harness.js.map +1 -1
  507. package/server/dist/routes/campaigns-readiness.d.ts +10 -0
  508. package/server/dist/routes/campaigns-readiness.d.ts.map +1 -0
  509. package/server/dist/routes/campaigns-readiness.js +58 -0
  510. package/server/dist/routes/campaigns-readiness.js.map +1 -0
  511. package/server/dist/routes/campaigns.d.ts.map +1 -1
  512. package/server/dist/routes/campaigns.js +3 -0
  513. package/server/dist/routes/campaigns.js.map +1 -1
  514. package/server/dist/routes/codex-models.d.ts +15 -0
  515. package/server/dist/routes/codex-models.d.ts.map +1 -0
  516. package/server/dist/routes/codex-models.js +77 -0
  517. package/server/dist/routes/codex-models.js.map +1 -0
  518. package/server/dist/routes/codextender-models.d.ts +16 -0
  519. package/server/dist/routes/codextender-models.d.ts.map +1 -0
  520. package/server/dist/routes/codextender-models.js +81 -0
  521. package/server/dist/routes/codextender-models.js.map +1 -0
  522. package/server/dist/routes/diagnostics.d.ts +27 -0
  523. package/server/dist/routes/diagnostics.d.ts.map +1 -1
  524. package/server/dist/routes/diagnostics.js +5 -1
  525. package/server/dist/routes/diagnostics.js.map +1 -1
  526. package/server/dist/routes/org-chart-lead-guard.d.ts +10 -0
  527. package/server/dist/routes/org-chart-lead-guard.d.ts.map +1 -0
  528. package/server/dist/routes/org-chart-lead-guard.js +49 -0
  529. package/server/dist/routes/org-chart-lead-guard.js.map +1 -0
  530. package/server/dist/routes/org-inventory-composite.d.ts +20 -0
  531. package/server/dist/routes/org-inventory-composite.d.ts.map +1 -0
  532. package/server/dist/routes/org-inventory-composite.js +100 -0
  533. package/server/dist/routes/org-inventory-composite.js.map +1 -0
  534. package/server/dist/routes/org-lead-setup-wizard.d.ts +10 -0
  535. package/server/dist/routes/org-lead-setup-wizard.d.ts.map +1 -0
  536. package/server/dist/routes/org-lead-setup-wizard.js +51 -0
  537. package/server/dist/routes/org-lead-setup-wizard.js.map +1 -0
  538. package/server/dist/routes/org-leads-composite.d.ts.map +1 -1
  539. package/server/dist/routes/org-leads-composite.js +35 -9
  540. package/server/dist/routes/org-leads-composite.js.map +1 -1
  541. package/server/dist/routes/org-threads-composite.d.ts +24 -0
  542. package/server/dist/routes/org-threads-composite.d.ts.map +1 -0
  543. package/server/dist/routes/org-threads-composite.js +51 -0
  544. package/server/dist/routes/org-threads-composite.js.map +1 -0
  545. package/server/dist/routes/org-writes.d.ts +14 -0
  546. package/server/dist/routes/org-writes.d.ts.map +1 -0
  547. package/server/dist/routes/org-writes.js +61 -0
  548. package/server/dist/routes/org-writes.js.map +1 -0
  549. package/server/dist/routes/org.d.ts +14 -0
  550. package/server/dist/routes/org.d.ts.map +1 -1
  551. package/server/dist/routes/org.js +63 -47
  552. package/server/dist/routes/org.js.map +1 -1
  553. package/server/dist/routes/settings.d.ts.map +1 -1
  554. package/server/dist/routes/settings.js +23 -2
  555. package/server/dist/routes/settings.js.map +1 -1
  556. package/server/dist/routes/triage.d.ts +17 -0
  557. package/server/dist/routes/triage.d.ts.map +1 -1
  558. package/server/dist/routes/triage.js +29 -0
  559. package/server/dist/routes/triage.js.map +1 -1
  560. package/server/dist/terminal/pty-manager.d.ts +37 -1
  561. package/server/dist/terminal/pty-manager.d.ts.map +1 -1
  562. package/server/dist/terminal/pty-manager.js +33 -3
  563. package/server/dist/terminal/pty-manager.js.map +1 -1
  564. package/server/dist/terminal/pty-write-chunker.d.ts +109 -0
  565. package/server/dist/terminal/pty-write-chunker.d.ts.map +1 -0
  566. package/server/dist/terminal/pty-write-chunker.js +234 -0
  567. package/server/dist/terminal/pty-write-chunker.js.map +1 -0
  568. package/server/dist/terminal/routes.d.ts.map +1 -1
  569. package/server/dist/terminal/routes.js +9 -0
  570. package/server/dist/terminal/routes.js.map +1 -1
  571. package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -1
  572. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -1
  573. package/server/dist/terminal/ws-upgrade-handler.fixtures.js +1 -0
  574. package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -1
  575. package/server/dist/terminal/ws-upgrade-handler.js +14 -5
  576. package/server/dist/terminal/ws-upgrade-handler.js.map +1 -1
  577. package/server/dist/test/event-test-counts-fixtures.d.ts +40 -0
  578. package/server/dist/test/event-test-counts-fixtures.d.ts.map +1 -0
  579. package/server/dist/test/event-test-counts-fixtures.js +56 -0
  580. package/server/dist/test/event-test-counts-fixtures.js.map +1 -0
  581. package/server/dist/types/leadwright-beat-step.d.ts +19 -0
  582. package/server/dist/types/leadwright-beat-step.d.ts.map +1 -0
  583. package/server/dist/types/leadwright-beat-step.js +56 -0
  584. package/server/dist/types/leadwright-beat-step.js.map +1 -0
  585. package/server/dist/types/leadwright-preflight.d.ts +90 -0
  586. package/server/dist/types/leadwright-preflight.d.ts.map +1 -0
  587. package/server/dist/types/leadwright-preflight.js +65 -0
  588. package/server/dist/types/leadwright-preflight.js.map +1 -0
  589. package/server/dist/types/leadwright-schema-drift.d.ts +28 -0
  590. package/server/dist/types/leadwright-schema-drift.d.ts.map +1 -0
  591. package/server/dist/types/leadwright-schema-drift.js +89 -0
  592. package/server/dist/types/leadwright-schema-drift.js.map +1 -0
  593. package/server/dist/types/org-inventory.d.ts +53 -0
  594. package/server/dist/types/org-inventory.d.ts.map +1 -0
  595. package/server/dist/types/org-inventory.js +11 -0
  596. package/server/dist/types/org-inventory.js.map +1 -0
  597. package/server/dist/types/org.d.ts +76 -6
  598. package/server/dist/types/org.d.ts.map +1 -1
  599. package/server/dist/types/run-config-retry.d.ts +29 -0
  600. package/server/dist/types/run-config-retry.d.ts.map +1 -0
  601. package/server/dist/types/run-config-retry.js +47 -0
  602. package/server/dist/types/run-config-retry.js.map +1 -0
  603. package/server/dist/types/run-config-v2.d.ts +29 -41
  604. package/server/dist/types/run-config-v2.d.ts.map +1 -1
  605. package/server/dist/types/run-config-v2.js +16 -50
  606. package/server/dist/types/run-config-v2.js.map +1 -1
  607. package/server/dist/types/settings.d.ts +33 -0
  608. package/server/dist/types/settings.d.ts.map +1 -1
  609. package/server/dist/vendor/leadwright/beat-step.schema.json +83 -0
  610. package/server/dist/vendor/leadwright/claim-record-lock-contract.json +15 -0
  611. package/server/dist/vendor/leadwright/org-chart.schema.json +195 -0
  612. package/server/dist/vendor/leadwright/preflight-input.schema.json +318 -0
  613. package/server/dist/vendor/leadwright/preflight-result.schema.json +56 -0
  614. package/server/package.json +1 -1
  615. package/client/dist/assets/channel-BYPbLjRl.js +0 -1
  616. package/client/dist/assets/classDiagram-OUVF2IWQ-CsFIeTju.js +0 -1
  617. package/client/dist/assets/classDiagram-v2-EOCWNBFH-CsFIeTju.js +0 -1
  618. package/client/dist/assets/index-BnTOrFHb.js +0 -829
  619. package/client/dist/assets/index-CYPc6qxw.css +0 -1
  620. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-B3E4_xxT.js +0 -1
  621. 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":"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"}
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;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,wEAAwE;IACxE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,IAAI,EAAE,OAAO,CAAC;QACd;;;;;;;WAOG;QACH,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;QAC7B,IAAI,EAAE,OAAO,EAAE,CAAC;QAChB,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,kFAAkF;QAClF,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC5C,sFAAsF;QACtF,SAAS,EAAE,OAAO,CAAC;QACnB;;;;WAIG;QACH,cAAc,EAAE,IAAI,GAAG,aAAa,CAAC;QACrC,QAAQ,CAAC,EAAE;YAAE,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;YAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;YAAC,YAAY,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAC;gBAAC,gBAAgB,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAC;YAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;QAC1L;;;;;WAKG;QACH,UAAU,EAAE;YAAE,MAAM,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,WAAW,EAAE,CAAA;SAAE,CAAC;KACxD,GAAG,IAAI,CAAC;CACV;AAMD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE9F;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAEtF;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,SAAS,GAAG,cAAc,CAAC;AAE1E,wEAAwE;AACxE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,sEAAsE;IACtE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2DAA2D;IAC3D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,6EAA6E;IAC7E,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,IAAI,EAAE,SAAS,CAAC;QAChB;;;;;WAKG;QACH,IAAI,EAAE,SAAS,EAAE,CAAC;KACnB,GAAG,IAAI,CAAC;CACV;AAMD;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,WAAW,CAAC;QAClB,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAC7B,SAAS,EAAE,OAAO,CAAC;QACnB;;;;WAIG;QACH,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,IAAI,CAAC;CACV"}
@@ -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;AAChE,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IACjD,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,CA2BlF"}
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
- return invalidRoleValue ? { tiers, warning: "model_config_invalid" } : { tiers };
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":"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"}
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":"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"}
@@ -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;AAE/D;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAuBlF"}
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;IACzD,CAAC;AACH,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":"AAcA,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,CA2BpB;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"}
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
- const out = String(stdout ?? "");
56
- const err = String(stderr ?? "");
57
- // execFile sets `error` on a non-zero exit, a spawn failure (ENOENT) OR
58
- // a timeout (killed) — all of which mean "did not run cleanly". A real
59
- // tool exits 0 (no error) AND prints a version; the MS-Store python3 stub
60
- // exits non-zero, so requiring no-error + a digit-bearing line rejects it
61
- // (the whole reason this is not `command -v`).
62
- const ok = !error && /\d+\.\d+/.test(out + err);
63
- // Numeric exit status on non-zero exit; ENOENT/timeout set a STRING code
64
- // / `killed` → report null so a code-gated caller never reads them as 0.
65
- const errCode = error?.code;
66
- const code = error == null ? 0 : typeof errCode === "number" ? errCode : null;
67
- resolve({ ok, stdout: out, stderr: err, code });
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":"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"}
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,EAKL,KAAK,KAAK,EAEX,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EACL,eAAe,EACf,UAAU,EACV,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,CAkI9E"}
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 engine. Verdict comes pre-resolved from cli-compat.
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: "the engine the Command Center drives",
91
- critical: true,
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
- const ready = checks.every((c) => c.ok || !c.critical);
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