@svenroth-ai/shipwright 0.27.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/client/dist/assets/{EmbeddedTerminal-CqCQUDtp.js → EmbeddedTerminal-4xgNUBUu.js} +19 -19
  2. package/client/dist/assets/{abnfDiagram-VRR7QNED-DX2objTP.js → abnfDiagram-VRR7QNED-BdCNbaqc.js} +1 -1
  3. package/client/dist/assets/{arc-DQmjbsFU.js → arc-DoZTTE1N.js} +1 -1
  4. package/client/dist/assets/{architectureDiagram-ZJ3FMSHR-DAvCsPCW.js → architectureDiagram-ZJ3FMSHR-DFTG4KtO.js} +1 -1
  5. package/client/dist/assets/{blockDiagram-677ZJIJ3-DC-dlyYI.js → blockDiagram-677ZJIJ3-C34UBjOB.js} +1 -1
  6. package/client/dist/assets/{c4Diagram-LMCZKHZV-DSlmXfhE.js → c4Diagram-LMCZKHZV-CbqAB1Ou.js} +1 -1
  7. package/client/dist/assets/channel-DBcZw7Kn.js +1 -0
  8. package/client/dist/assets/{chunk-2Q5K7J3B-C111EHL6.js → chunk-2Q5K7J3B-4N6AnmBJ.js} +1 -1
  9. package/client/dist/assets/{chunk-32BRIVSS-DrCYs2XG.js → chunk-32BRIVSS-Cs67LiCy.js} +1 -1
  10. package/client/dist/assets/{chunk-5VM5RSS4-DIejoaXS.js → chunk-5VM5RSS4-Bwd7rtD3.js} +1 -1
  11. package/client/dist/assets/{chunk-EX3LRPZG-CGWNeH2g.js → chunk-EX3LRPZG-CQqGfptD.js} +1 -1
  12. package/client/dist/assets/{chunk-JWPE2WC7-CCH0SRFY.js → chunk-JWPE2WC7-ClvKd4PN.js} +1 -1
  13. package/client/dist/assets/{chunk-MOJQB5TN-B3OpZGRv.js → chunk-MOJQB5TN-Cwvj8GE1.js} +1 -1
  14. package/client/dist/assets/{chunk-RYQCIY6F-BKhdp_8v.js → chunk-RYQCIY6F-DrWMx37d.js} +1 -1
  15. package/client/dist/assets/{chunk-V7JOEXUC-B6Bu8x1y.js → chunk-V7JOEXUC-CYFfa4PY.js} +1 -1
  16. package/client/dist/assets/{chunk-VR4S4FIN-OgFi2_iB.js → chunk-VR4S4FIN-B5eWtesm.js} +1 -1
  17. package/client/dist/assets/{chunk-XXDRQBXY-xyjuuhxl.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-BQIH3SCK.js → cose-bilkent-JH36ORCC-C76Yia6h.js} +1 -1
  21. package/client/dist/assets/{cynefin-VYW2F7L2-oyLAz8te.js → cynefin-VYW2F7L2-pJe7rdTi.js} +1 -1
  22. package/client/dist/assets/{cynefinDiagram-TSTJHNR4-DoLCsH0l.js → cynefinDiagram-TSTJHNR4-EeHQ7dYV.js} +1 -1
  23. package/client/dist/assets/{dagre-VKFMJZFB-D7djx1_Y.js → dagre-VKFMJZFB-VXOY6IHR.js} +1 -1
  24. package/client/dist/assets/{diagram-FQU43EPY-DFuYE0Vf.js → diagram-FQU43EPY-DW_-leqw.js} +1 -1
  25. package/client/dist/assets/{diagram-G47NLZAW-CffCZVXk.js → diagram-G47NLZAW-C_hsLD4u.js} +1 -1
  26. package/client/dist/assets/{diagram-NH7WQ7WH-BhrHtUlt.js → diagram-NH7WQ7WH-CbeQuO_f.js} +1 -1
  27. package/client/dist/assets/{diagram-OA4YK3LP-CwQPbOn0.js → diagram-OA4YK3LP-DRHY5d_c.js} +1 -1
  28. package/client/dist/assets/{diagram-WEI45ONY-abtYnYqH.js → diagram-WEI45ONY-B87OYR_S.js} +1 -1
  29. package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DfV7gT4m.js → ebnfDiagram-CCIWWBDH-B8Z8WHF6.js} +1 -1
  30. package/client/dist/assets/{erDiagram-Q63AITRT-vtbCprgH.js → erDiagram-Q63AITRT-DaD7oa9H.js} +1 -1
  31. package/client/dist/assets/{flowDiagram-23GEKE2U-CVCgcyDF.js → flowDiagram-23GEKE2U-GrMVpsea.js} +1 -1
  32. package/client/dist/assets/{ganttDiagram-NO4QXBWP-BclyOgMb.js → ganttDiagram-NO4QXBWP-K3X0DYBa.js} +1 -1
  33. package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-BXT4rIKj.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-Dr4mN24J.js → infoDiagram-FWYZ7A6U-Fi8fQ95G.js} +1 -1
  37. package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-BBUFWq5C.js → ishikawaDiagram-FXEZZL3T-CrN7QJzt.js} +1 -1
  38. package/client/dist/assets/{journeyDiagram-5HDEW3XC-CmclipcQ.js → journeyDiagram-5HDEW3XC-XHIsl7rM.js} +1 -1
  39. package/client/dist/assets/{kanban-definition-HUTT4EX6-eIzUeZ03.js → kanban-definition-HUTT4EX6-A6HJqHw7.js} +1 -1
  40. package/client/dist/assets/{linear-DGiT7uKK.js → linear-D1vF9IQB.js} +1 -1
  41. package/client/dist/assets/{mermaid.core-BcLNGbxW.js → mermaid.core-D6w9zlA0.js} +4 -4
  42. package/client/dist/assets/{mindmap-definition-LN4V7U3C-C4ANnNiP.js → mindmap-definition-LN4V7U3C-CxRkUj6Z.js} +1 -1
  43. package/client/dist/assets/{pegDiagram-2B236MQR-DnMeh3Yh.js → pegDiagram-2B236MQR-Bs9dp-8a.js} +1 -1
  44. package/client/dist/assets/{pieDiagram-ENE6RG2P-CKV_rkhF.js → pieDiagram-ENE6RG2P-DBWILzB8.js} +1 -1
  45. package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-BuUsGwHh.js → quadrantDiagram-ABIIQ3AL-DrCVJJx6.js} +1 -1
  46. package/client/dist/assets/{railroadDiagram-RFXS5EU6-BwwdKnFL.js → railroadDiagram-RFXS5EU6-BdPW2dNf.js} +1 -1
  47. package/client/dist/assets/{requirementDiagram-TGXJPOKE-CpQZouJV.js → requirementDiagram-TGXJPOKE-Bj_g3tC5.js} +1 -1
  48. package/client/dist/assets/{sankeyDiagram-HTMAVEWB-4fnDUNVa.js → sankeyDiagram-HTMAVEWB-BGL9NnsS.js} +1 -1
  49. package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-BOcaWlM0.js → sequenceDiagram-DBY2YBRQ-DEirxTZY.js} +1 -1
  50. package/client/dist/assets/{sizeCapture-X5ZJPWSS-_pv-9R0c.js → sizeCapture-X5ZJPWSS-BtLrvrea.js} +1 -1
  51. package/client/dist/assets/{stateDiagram-2N3HPSRC-CFwCOonY.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-DFa2tzxu.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-rhGYElgn.js → timeline-definition-FHXFAJF6-CnBKJtD_.js} +1 -1
  56. package/client/dist/assets/{vennDiagram-L72KCM5P-BoGjRxyA.js → vennDiagram-L72KCM5P-BYmiJYoh.js} +1 -1
  57. package/client/dist/assets/{wardleyDiagram-EHGQE667-D-IGv5bH.js → wardleyDiagram-EHGQE667-DU7vW8q3.js} +1 -1
  58. package/client/dist/assets/{xychartDiagram-FW5EYKEG-D9PFTCfm.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/util.mjs +5 -1
  62. package/package.json +1 -1
  63. package/scripts/deploy-procs.mjs +105 -20
  64. package/scripts/deploy-swap.mjs +23 -2
  65. package/server/dist/config.d.ts +9 -0
  66. package/server/dist/config.d.ts.map +1 -1
  67. package/server/dist/config.js +1 -0
  68. package/server/dist/config.js.map +1 -1
  69. package/server/dist/core/campaign-events.d.ts.map +1 -1
  70. package/server/dist/core/campaign-events.js +1 -0
  71. package/server/dist/core/campaign-events.js.map +1 -1
  72. package/server/dist/core/campaign-loop-state.d.ts.map +1 -1
  73. package/server/dist/core/campaign-loop-state.js +54 -21
  74. package/server/dist/core/campaign-loop-state.js.map +1 -1
  75. package/server/dist/core/campaign-parse.d.ts +4 -0
  76. package/server/dist/core/campaign-parse.d.ts.map +1 -1
  77. package/server/dist/core/campaign-parse.js +9 -0
  78. package/server/dist/core/campaign-parse.js.map +1 -1
  79. package/server/dist/core/campaign-readiness-schema.d.ts +33 -0
  80. package/server/dist/core/campaign-readiness-schema.d.ts.map +1 -0
  81. package/server/dist/core/campaign-readiness-schema.js +70 -0
  82. package/server/dist/core/campaign-readiness-schema.js.map +1 -0
  83. package/server/dist/core/campaign-readiness.d.ts +59 -0
  84. package/server/dist/core/campaign-readiness.d.ts.map +1 -0
  85. package/server/dist/core/campaign-readiness.js +163 -0
  86. package/server/dist/core/campaign-readiness.js.map +1 -0
  87. package/server/dist/core/campaign-status-json.d.ts +3 -0
  88. package/server/dist/core/campaign-status-json.d.ts.map +1 -1
  89. package/server/dist/core/campaign-status-json.js +7 -0
  90. package/server/dist/core/campaign-status-json.js.map +1 -1
  91. package/server/dist/core/campaign-store.d.ts.map +1 -1
  92. package/server/dist/core/campaign-store.js +4 -1
  93. package/server/dist/core/campaign-store.js.map +1 -1
  94. package/server/dist/core/campaign-types.d.ts +8 -0
  95. package/server/dist/core/campaign-types.d.ts.map +1 -1
  96. package/server/dist/core/campaign-worktree-root.d.ts +19 -0
  97. package/server/dist/core/campaign-worktree-root.d.ts.map +1 -0
  98. package/server/dist/core/campaign-worktree-root.js +76 -0
  99. package/server/dist/core/campaign-worktree-root.js.map +1 -0
  100. package/server/dist/core/claim-record-lock.d.ts +30 -0
  101. package/server/dist/core/claim-record-lock.d.ts.map +1 -0
  102. package/server/dist/core/claim-record-lock.js +90 -0
  103. package/server/dist/core/claim-record-lock.js.map +1 -0
  104. package/server/dist/core/cli-child-spawn.d.ts +28 -0
  105. package/server/dist/core/cli-child-spawn.d.ts.map +1 -0
  106. package/server/dist/core/cli-child-spawn.js +146 -0
  107. package/server/dist/core/cli-child-spawn.js.map +1 -0
  108. package/server/dist/core/codex-models-probe.d.ts +46 -0
  109. package/server/dist/core/codex-models-probe.d.ts.map +1 -0
  110. package/server/dist/core/codex-models-probe.js +103 -0
  111. package/server/dist/core/codex-models-probe.js.map +1 -0
  112. package/server/dist/core/codex-oracle-runner.d.ts +68 -0
  113. package/server/dist/core/codex-oracle-runner.d.ts.map +1 -0
  114. package/server/dist/core/codex-oracle-runner.js +124 -0
  115. package/server/dist/core/codex-oracle-runner.js.map +1 -0
  116. package/server/dist/core/codex-status-report.d.ts +6 -0
  117. package/server/dist/core/codex-status-report.d.ts.map +1 -0
  118. package/server/dist/core/codex-status-report.js +40 -0
  119. package/server/dist/core/codex-status-report.js.map +1 -0
  120. package/server/dist/core/codex-task-watcher-types.d.ts +69 -0
  121. package/server/dist/core/codex-task-watcher-types.d.ts.map +1 -0
  122. package/server/dist/core/codex-task-watcher-types.js +12 -0
  123. package/server/dist/core/codex-task-watcher-types.js.map +1 -0
  124. package/server/dist/core/codex-task-watcher.d.ts +30 -0
  125. package/server/dist/core/codex-task-watcher.d.ts.map +1 -0
  126. package/server/dist/core/codex-task-watcher.js +252 -0
  127. package/server/dist/core/codex-task-watcher.js.map +1 -0
  128. package/server/dist/core/codex-terminal-signal-detect.d.ts +7 -0
  129. package/server/dist/core/codex-terminal-signal-detect.d.ts.map +1 -0
  130. package/server/dist/core/codex-terminal-signal-detect.js +113 -0
  131. package/server/dist/core/codex-terminal-signal-detect.js.map +1 -0
  132. package/server/dist/core/codex-thread-discovery.d.ts +21 -0
  133. package/server/dist/core/codex-thread-discovery.d.ts.map +1 -0
  134. package/server/dist/core/codex-thread-discovery.js +169 -0
  135. package/server/dist/core/codex-thread-discovery.js.map +1 -0
  136. package/server/dist/core/codextender-auth-file-sweep.d.ts +41 -0
  137. package/server/dist/core/codextender-auth-file-sweep.d.ts.map +1 -0
  138. package/server/dist/core/codextender-auth-file-sweep.js +97 -0
  139. package/server/dist/core/codextender-auth-file-sweep.js.map +1 -0
  140. package/server/dist/core/codextender-proxy-probe.d.ts +80 -0
  141. package/server/dist/core/codextender-proxy-probe.d.ts.map +1 -0
  142. package/server/dist/core/codextender-proxy-probe.js +179 -0
  143. package/server/dist/core/codextender-proxy-probe.js.map +1 -0
  144. package/server/dist/core/contract-version.d.ts +16 -1
  145. package/server/dist/core/contract-version.d.ts.map +1 -1
  146. package/server/dist/core/contract-version.js +16 -1
  147. package/server/dist/core/contract-version.js.map +1 -1
  148. package/server/dist/core/launcher-codex.d.ts +61 -0
  149. package/server/dist/core/launcher-codex.d.ts.map +1 -0
  150. package/server/dist/core/launcher-codex.js +187 -0
  151. package/server/dist/core/launcher-codex.js.map +1 -0
  152. package/server/dist/core/launcher-codextender-env.d.ts +44 -0
  153. package/server/dist/core/launcher-codextender-env.d.ts.map +1 -0
  154. package/server/dist/core/launcher-codextender-env.js +212 -0
  155. package/server/dist/core/launcher-codextender-env.js.map +1 -0
  156. package/server/dist/core/launcher-codextender.d.ts +72 -0
  157. package/server/dist/core/launcher-codextender.d.ts.map +1 -0
  158. package/server/dist/core/launcher-codextender.js +98 -0
  159. package/server/dist/core/launcher-codextender.js.map +1 -0
  160. package/server/dist/core/launcher-codextender.smoke-helpers.d.ts +25 -0
  161. package/server/dist/core/launcher-codextender.smoke-helpers.d.ts.map +1 -0
  162. package/server/dist/core/launcher-codextender.smoke-helpers.js +211 -0
  163. package/server/dist/core/launcher-codextender.smoke-helpers.js.map +1 -0
  164. package/server/dist/core/launcher-permission-flags.d.ts +17 -0
  165. package/server/dist/core/launcher-permission-flags.d.ts.map +1 -0
  166. package/server/dist/core/launcher-permission-flags.js +27 -0
  167. package/server/dist/core/launcher-permission-flags.js.map +1 -0
  168. package/server/dist/core/launcher.d.ts +18 -0
  169. package/server/dist/core/launcher.d.ts.map +1 -1
  170. package/server/dist/core/launcher.js +6 -0
  171. package/server/dist/core/launcher.js.map +1 -1
  172. package/server/dist/core/leadwright-preflight-transport.d.ts +27 -0
  173. package/server/dist/core/leadwright-preflight-transport.d.ts.map +1 -0
  174. package/server/dist/core/leadwright-preflight-transport.js +124 -0
  175. package/server/dist/core/leadwright-preflight-transport.js.map +1 -0
  176. package/server/dist/core/mission-context/artifacts-tests-ac.d.ts +6 -0
  177. package/server/dist/core/mission-context/artifacts-tests-ac.d.ts.map +1 -0
  178. package/server/dist/core/mission-context/artifacts-tests-ac.js +31 -0
  179. package/server/dist/core/mission-context/artifacts-tests-ac.js.map +1 -0
  180. package/server/dist/core/mission-context/artifacts-tests.d.ts.map +1 -1
  181. package/server/dist/core/mission-context/artifacts-tests.js +20 -0
  182. package/server/dist/core/mission-context/artifacts-tests.js.map +1 -1
  183. package/server/dist/core/mission-context/resolver-io.d.ts +10 -0
  184. package/server/dist/core/mission-context/resolver-io.d.ts.map +1 -1
  185. package/server/dist/core/mission-context/resolver-parts.d.ts +8 -7
  186. package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -1
  187. package/server/dist/core/mission-context/resolver-parts.js +22 -14
  188. package/server/dist/core/mission-context/resolver-parts.js.map +1 -1
  189. package/server/dist/core/mission-context/resolver.d.ts.map +1 -1
  190. package/server/dist/core/mission-context/resolver.js +1 -1
  191. package/server/dist/core/mission-context/resolver.js.map +1 -1
  192. package/server/dist/core/mission-context/run-id-recovery.d.ts +18 -2
  193. package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -1
  194. package/server/dist/core/mission-context/run-id-recovery.js +38 -18
  195. package/server/dist/core/mission-context/run-id-recovery.js.map +1 -1
  196. package/server/dist/core/mission-context/traceability.d.ts.map +1 -1
  197. package/server/dist/core/mission-context/traceability.js +15 -1
  198. package/server/dist/core/mission-context/traceability.js.map +1 -1
  199. package/server/dist/core/mission-context/types-slice2.d.ts +44 -0
  200. package/server/dist/core/mission-context/types-slice2.d.ts.map +1 -1
  201. package/server/dist/core/model-tier-config-reader.d.ts +14 -1
  202. package/server/dist/core/model-tier-config-reader.d.ts.map +1 -1
  203. package/server/dist/core/model-tier-config-reader.js +34 -2
  204. package/server/dist/core/model-tier-config-reader.js.map +1 -1
  205. package/server/dist/core/powershell-probe.smoke-helpers.d.ts +12 -0
  206. package/server/dist/core/powershell-probe.smoke-helpers.d.ts.map +1 -0
  207. package/server/dist/core/powershell-probe.smoke-helpers.js +80 -0
  208. package/server/dist/core/powershell-probe.smoke-helpers.js.map +1 -0
  209. package/server/dist/core/readiness-install-hints.d.ts +1 -1
  210. package/server/dist/core/readiness-install-hints.d.ts.map +1 -1
  211. package/server/dist/core/readiness-install-hints.js +5 -0
  212. package/server/dist/core/readiness-install-hints.js.map +1 -1
  213. package/server/dist/core/readiness-probe-run.d.ts +61 -0
  214. package/server/dist/core/readiness-probe-run.d.ts.map +1 -1
  215. package/server/dist/core/readiness-probe-run.js +93 -15
  216. package/server/dist/core/readiness-probe-run.js.map +1 -1
  217. package/server/dist/core/readiness-probe.d.ts +1 -1
  218. package/server/dist/core/readiness-probe.d.ts.map +1 -1
  219. package/server/dist/core/readiness-probe.js +36 -8
  220. package/server/dist/core/readiness-probe.js.map +1 -1
  221. package/server/dist/core/sdk-sessions-store.d.ts +46 -0
  222. package/server/dist/core/sdk-sessions-store.d.ts.map +1 -1
  223. package/server/dist/core/sdk-sessions-store.js +1 -0
  224. package/server/dist/core/sdk-sessions-store.js.map +1 -1
  225. package/server/dist/core/sdk-sessions-validate.d.ts.map +1 -1
  226. package/server/dist/core/sdk-sessions-validate.js +11 -0
  227. package/server/dist/core/sdk-sessions-validate.js.map +1 -1
  228. package/server/dist/core/settings-reader.d.ts +18 -0
  229. package/server/dist/core/settings-reader.d.ts.map +1 -0
  230. package/server/dist/core/settings-reader.js +40 -0
  231. package/server/dist/core/settings-reader.js.map +1 -0
  232. package/server/dist/core/shell-quote.d.ts +29 -0
  233. package/server/dist/core/shell-quote.d.ts.map +1 -1
  234. package/server/dist/core/shell-quote.js +34 -0
  235. package/server/dist/core/shell-quote.js.map +1 -1
  236. package/server/dist/core/task-editability.d.ts +1 -1
  237. package/server/dist/core/task-editability.d.ts.map +1 -1
  238. package/server/dist/core/task-editability.js +1 -0
  239. package/server/dist/core/task-editability.js.map +1 -1
  240. package/server/dist/core/triage-cli-runner.d.ts.map +1 -1
  241. package/server/dist/core/triage-cli-runner.js +6 -21
  242. package/server/dist/core/triage-cli-runner.js.map +1 -1
  243. package/server/dist/core/triage-compose.d.ts.map +1 -1
  244. package/server/dist/core/triage-compose.js +34 -3
  245. package/server/dist/core/triage-compose.js.map +1 -1
  246. package/server/dist/core/triage-store.d.ts +2 -1
  247. package/server/dist/core/triage-store.d.ts.map +1 -1
  248. package/server/dist/core/triage-store.js +1 -1
  249. package/server/dist/core/triage-store.js.map +1 -1
  250. package/server/dist/external/create-external-routes-args.d.ts +122 -0
  251. package/server/dist/external/create-external-routes-args.d.ts.map +1 -0
  252. package/server/dist/external/create-external-routes-args.js +2 -0
  253. package/server/dist/external/create-external-routes-args.js.map +1 -0
  254. package/server/dist/external/inbox/_codex.d.ts +14 -0
  255. package/server/dist/external/inbox/_codex.d.ts.map +1 -0
  256. package/server/dist/external/inbox/_codex.js +88 -0
  257. package/server/dist/external/inbox/_codex.js.map +1 -0
  258. package/server/dist/external/inbox/_derive.d.ts.map +1 -1
  259. package/server/dist/external/inbox/_derive.js +11 -0
  260. package/server/dist/external/inbox/_derive.js.map +1 -1
  261. package/server/dist/external/inbox/_types.d.ts +23 -0
  262. package/server/dist/external/inbox/_types.d.ts.map +1 -1
  263. package/server/dist/external/inbox/_types.js +8 -5
  264. package/server/dist/external/inbox/_types.js.map +1 -1
  265. package/server/dist/external/inbox/routes.d.ts +7 -0
  266. package/server/dist/external/inbox/routes.d.ts.map +1 -1
  267. package/server/dist/external/inbox/routes.js +15 -2
  268. package/server/dist/external/inbox/routes.js.map +1 -1
  269. package/server/dist/external/launch/_helpers.d.ts +4 -0
  270. package/server/dist/external/launch/_helpers.d.ts.map +1 -1
  271. package/server/dist/external/launch/_helpers.js.map +1 -1
  272. package/server/dist/external/launch/action-substitution-branch.d.ts +12 -0
  273. package/server/dist/external/launch/action-substitution-branch.d.ts.map +1 -1
  274. package/server/dist/external/launch/action-substitution-branch.js +35 -1
  275. package/server/dist/external/launch/action-substitution-branch.js.map +1 -1
  276. package/server/dist/external/launch/branch-dispatch.d.ts +15 -0
  277. package/server/dist/external/launch/branch-dispatch.d.ts.map +1 -0
  278. package/server/dist/external/launch/branch-dispatch.js +73 -0
  279. package/server/dist/external/launch/branch-dispatch.js.map +1 -0
  280. package/server/dist/external/launch/campaign-step-branch.d.ts +7 -1
  281. package/server/dist/external/launch/campaign-step-branch.d.ts.map +1 -1
  282. package/server/dist/external/launch/campaign-step-branch.js +70 -2
  283. package/server/dist/external/launch/campaign-step-branch.js.map +1 -1
  284. package/server/dist/external/launch/claim-executor-permissions.d.ts +31 -0
  285. package/server/dist/external/launch/claim-executor-permissions.d.ts.map +1 -0
  286. package/server/dist/external/launch/claim-executor-permissions.js +107 -0
  287. package/server/dist/external/launch/claim-executor-permissions.js.map +1 -0
  288. package/server/dist/external/launch/claim-executor-template-arming.d.ts +42 -0
  289. package/server/dist/external/launch/claim-executor-template-arming.d.ts.map +1 -0
  290. package/server/dist/external/launch/claim-executor-template-arming.js +121 -0
  291. package/server/dist/external/launch/claim-executor-template-arming.js.map +1 -0
  292. package/server/dist/external/launch/claim-holder-gate.d.ts +9 -0
  293. package/server/dist/external/launch/claim-holder-gate.d.ts.map +1 -1
  294. package/server/dist/external/launch/claim-holder-gate.js +10 -2
  295. package/server/dist/external/launch/claim-holder-gate.js.map +1 -1
  296. package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts +3 -0
  297. package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts.map +1 -0
  298. package/server/dist/external/launch/claim-permission-perimeter-assert.js +24 -0
  299. package/server/dist/external/launch/claim-permission-perimeter-assert.js.map +1 -0
  300. package/server/dist/external/launch/legacy-fallback-branch.d.ts +14 -0
  301. package/server/dist/external/launch/legacy-fallback-branch.d.ts.map +1 -1
  302. package/server/dist/external/launch/legacy-fallback-branch.js +3 -1
  303. package/server/dist/external/launch/legacy-fallback-branch.js.map +1 -1
  304. package/server/dist/external/launch/master-run-branch.js +2 -2
  305. package/server/dist/external/launch/master-run-branch.js.map +1 -1
  306. package/server/dist/external/launch/mixed-intents-guard.d.ts +10 -0
  307. package/server/dist/external/launch/mixed-intents-guard.d.ts.map +1 -0
  308. package/server/dist/external/launch/mixed-intents-guard.js +49 -0
  309. package/server/dist/external/launch/mixed-intents-guard.js.map +1 -0
  310. package/server/dist/external/launch/parse-body.d.ts +29 -0
  311. package/server/dist/external/launch/parse-body.d.ts.map +1 -1
  312. package/server/dist/external/launch/parse-body.js +66 -0
  313. package/server/dist/external/launch/parse-body.js.map +1 -1
  314. package/server/dist/external/launch/routes.d.ts +3 -0
  315. package/server/dist/external/launch/routes.d.ts.map +1 -1
  316. package/server/dist/external/launch/routes.js +76 -109
  317. package/server/dist/external/launch/routes.js.map +1 -1
  318. package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts +20 -0
  319. package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts.map +1 -0
  320. package/server/dist/external/launch/runtime-chokepoint-codextender.js +51 -0
  321. package/server/dist/external/launch/runtime-chokepoint-codextender.js.map +1 -0
  322. package/server/dist/external/launch/runtime-chokepoint-errors.d.ts +33 -0
  323. package/server/dist/external/launch/runtime-chokepoint-errors.d.ts.map +1 -0
  324. package/server/dist/external/launch/runtime-chokepoint-errors.js +63 -0
  325. package/server/dist/external/launch/runtime-chokepoint-errors.js.map +1 -0
  326. package/server/dist/external/launch/runtime-chokepoint.d.ts +120 -0
  327. package/server/dist/external/launch/runtime-chokepoint.d.ts.map +1 -0
  328. package/server/dist/external/launch/runtime-chokepoint.js +201 -0
  329. package/server/dist/external/launch/runtime-chokepoint.js.map +1 -0
  330. package/server/dist/external/mission-context/routes.d.ts +33 -27
  331. package/server/dist/external/mission-context/routes.d.ts.map +1 -1
  332. package/server/dist/external/mission-context/routes.js +30 -27
  333. package/server/dist/external/mission-context/routes.js.map +1 -1
  334. package/server/dist/external/mission-context/test-harness.d.ts +6 -0
  335. package/server/dist/external/mission-context/test-harness.d.ts.map +1 -1
  336. package/server/dist/external/mission-context/test-harness.js +6 -1
  337. package/server/dist/external/mission-context/test-harness.js.map +1 -1
  338. package/server/dist/external/mission-context/wire.d.ts.map +1 -1
  339. package/server/dist/external/mission-context/wire.js +24 -2
  340. package/server/dist/external/mission-context/wire.js.map +1 -1
  341. package/server/dist/external/org/audit-log.d.ts +19 -0
  342. package/server/dist/external/org/audit-log.d.ts.map +1 -1
  343. package/server/dist/external/org/audit-log.js +33 -18
  344. package/server/dist/external/org/audit-log.js.map +1 -1
  345. package/server/dist/external/org/beat-effect-audit-read.d.ts +15 -0
  346. package/server/dist/external/org/beat-effect-audit-read.d.ts.map +1 -0
  347. package/server/dist/external/org/beat-effect-audit-read.js +73 -0
  348. package/server/dist/external/org/beat-effect-audit-read.js.map +1 -0
  349. package/server/dist/external/org/beat-register-health.d.ts +57 -0
  350. package/server/dist/external/org/beat-register-health.d.ts.map +1 -0
  351. package/server/dist/external/org/beat-register-health.js +125 -0
  352. package/server/dist/external/org/beat-register-health.js.map +1 -0
  353. package/server/dist/external/org/beat-register-release-core.d.ts.map +1 -1
  354. package/server/dist/external/org/beat-register-release-core.js +4 -1
  355. package/server/dist/external/org/beat-register-release-core.js.map +1 -1
  356. package/server/dist/external/org/beat-register-release-request.d.ts +20 -0
  357. package/server/dist/external/org/beat-register-release-request.d.ts.map +1 -0
  358. package/server/dist/external/org/beat-register-release-request.js +92 -0
  359. package/server/dist/external/org/beat-register-release-request.js.map +1 -0
  360. package/server/dist/external/org/beat-register-release.d.ts +3 -1
  361. package/server/dist/external/org/beat-register-release.d.ts.map +1 -1
  362. package/server/dist/external/org/beat-register-release.js +15 -57
  363. package/server/dist/external/org/beat-register-release.js.map +1 -1
  364. package/server/dist/external/org/beat-register.d.ts +18 -20
  365. package/server/dist/external/org/beat-register.d.ts.map +1 -1
  366. package/server/dist/external/org/beat-register.js +30 -56
  367. package/server/dist/external/org/beat-register.js.map +1 -1
  368. package/server/dist/external/org/beat-steps-read.d.ts +17 -0
  369. package/server/dist/external/org/beat-steps-read.d.ts.map +1 -0
  370. package/server/dist/external/org/beat-steps-read.js +89 -0
  371. package/server/dist/external/org/beat-steps-read.js.map +1 -0
  372. package/server/dist/external/org/charter-authority-read.d.ts +39 -0
  373. package/server/dist/external/org/charter-authority-read.d.ts.map +1 -0
  374. package/server/dist/external/org/charter-authority-read.js +142 -0
  375. package/server/dist/external/org/charter-authority-read.js.map +1 -0
  376. package/server/dist/external/org/commit-validate.d.ts +18 -0
  377. package/server/dist/external/org/commit-validate.d.ts.map +1 -0
  378. package/server/dist/external/org/commit-validate.js +59 -0
  379. package/server/dist/external/org/commit-validate.js.map +1 -0
  380. package/server/dist/external/org/commit-writes.d.ts +68 -0
  381. package/server/dist/external/org/commit-writes.d.ts.map +1 -0
  382. package/server/dist/external/org/commit-writes.js +110 -0
  383. package/server/dist/external/org/commit-writes.js.map +1 -0
  384. package/server/dist/external/org/commit.d.ts +73 -0
  385. package/server/dist/external/org/commit.d.ts.map +1 -0
  386. package/server/dist/external/org/commit.js +181 -0
  387. package/server/dist/external/org/commit.js.map +1 -0
  388. package/server/dist/external/org/commit.test-fixtures.d.ts +38 -0
  389. package/server/dist/external/org/commit.test-fixtures.d.ts.map +1 -0
  390. package/server/dist/external/org/commit.test-fixtures.js +67 -0
  391. package/server/dist/external/org/commit.test-fixtures.js.map +1 -0
  392. package/server/dist/external/org/countersign-core.d.ts +19 -0
  393. package/server/dist/external/org/countersign-core.d.ts.map +1 -0
  394. package/server/dist/external/org/countersign-core.js +122 -0
  395. package/server/dist/external/org/countersign-core.js.map +1 -0
  396. package/server/dist/external/org/countersign-request.d.ts +14 -0
  397. package/server/dist/external/org/countersign-request.d.ts.map +1 -0
  398. package/server/dist/external/org/countersign-request.js +78 -0
  399. package/server/dist/external/org/countersign-request.js.map +1 -0
  400. package/server/dist/external/org/countersign.d.ts +6 -5
  401. package/server/dist/external/org/countersign.d.ts.map +1 -1
  402. package/server/dist/external/org/countersign.js +12 -141
  403. package/server/dist/external/org/countersign.js.map +1 -1
  404. package/server/dist/external/org/daemon-config-read.d.ts +31 -0
  405. package/server/dist/external/org/daemon-config-read.d.ts.map +1 -0
  406. package/server/dist/external/org/daemon-config-read.js +50 -0
  407. package/server/dist/external/org/daemon-config-read.js.map +1 -0
  408. package/server/dist/external/org/decisions-lock.d.ts +6 -4
  409. package/server/dist/external/org/decisions-lock.d.ts.map +1 -1
  410. package/server/dist/external/org/decisions-lock.js +9 -8
  411. package/server/dist/external/org/decisions-lock.js.map +1 -1
  412. package/server/dist/external/org/domains.d.ts +35 -0
  413. package/server/dist/external/org/domains.d.ts.map +1 -0
  414. package/server/dist/external/org/domains.js +29 -0
  415. package/server/dist/external/org/domains.js.map +1 -0
  416. package/server/dist/external/org/existing-charters-read.d.ts +5 -0
  417. package/server/dist/external/org/existing-charters-read.d.ts.map +1 -0
  418. package/server/dist/external/org/existing-charters-read.js +31 -0
  419. package/server/dist/external/org/existing-charters-read.js.map +1 -0
  420. package/server/dist/external/org/leadwright-proposal-merge.d.ts +54 -0
  421. package/server/dist/external/org/leadwright-proposal-merge.d.ts.map +1 -0
  422. package/server/dist/external/org/leadwright-proposal-merge.js +47 -0
  423. package/server/dist/external/org/leadwright-proposal-merge.js.map +1 -0
  424. package/server/dist/external/org/mount.d.ts +10 -2
  425. package/server/dist/external/org/mount.d.ts.map +1 -1
  426. package/server/dist/external/org/mount.js +6 -1
  427. package/server/dist/external/org/mount.js.map +1 -1
  428. package/server/dist/external/org/org-chart-full-read.d.ts +19 -0
  429. package/server/dist/external/org/org-chart-full-read.d.ts.map +1 -0
  430. package/server/dist/external/org/org-chart-full-read.js +58 -0
  431. package/server/dist/external/org/org-chart-full-read.js.map +1 -0
  432. package/server/dist/external/org/org-file-lock.d.ts +41 -0
  433. package/server/dist/external/org/org-file-lock.d.ts.map +1 -0
  434. package/server/dist/external/org/org-file-lock.js +90 -0
  435. package/server/dist/external/org/org-file-lock.js.map +1 -0
  436. package/server/dist/external/org/routes.d.ts +10 -0
  437. package/server/dist/external/org/routes.d.ts.map +1 -1
  438. package/server/dist/external/org/routes.js +22 -1
  439. package/server/dist/external/org/routes.js.map +1 -1
  440. package/server/dist/external/org/verdict.d.ts +57 -0
  441. package/server/dist/external/org/verdict.d.ts.map +1 -0
  442. package/server/dist/external/org/verdict.js +74 -0
  443. package/server/dist/external/org/verdict.js.map +1 -0
  444. package/server/dist/external/routes.d.ts +3 -101
  445. package/server/dist/external/routes.d.ts.map +1 -1
  446. package/server/dist/external/routes.js +19 -4
  447. package/server/dist/external/routes.js.map +1 -1
  448. package/server/dist/external/tasks/create.d.ts.map +1 -1
  449. package/server/dist/external/tasks/create.js +8 -0
  450. package/server/dist/external/tasks/create.js.map +1 -1
  451. package/server/dist/external/tasks/fork.d.ts +29 -0
  452. package/server/dist/external/tasks/fork.d.ts.map +1 -0
  453. package/server/dist/external/tasks/fork.js +166 -0
  454. package/server/dist/external/tasks/fork.js.map +1 -0
  455. package/server/dist/external/tasks/lifecycle.d.ts.map +1 -1
  456. package/server/dist/external/tasks/lifecycle.js +10 -57
  457. package/server/dist/external/tasks/lifecycle.js.map +1 -1
  458. package/server/dist/external/tasks/patch.d.ts.map +1 -1
  459. package/server/dist/external/tasks/patch.js +17 -0
  460. package/server/dist/external/tasks/patch.js.map +1 -1
  461. package/server/dist/external/tasks/routes.d.ts +2 -0
  462. package/server/dist/external/tasks/routes.d.ts.map +1 -1
  463. package/server/dist/external/tasks/routes.js +7 -0
  464. package/server/dist/external/tasks/routes.js.map +1 -1
  465. package/server/dist/external/transcript/routes.d.ts.map +1 -1
  466. package/server/dist/external/transcript/routes.js +25 -3
  467. package/server/dist/external/transcript/routes.js.map +1 -1
  468. package/server/dist/external-routes-wiring.d.ts +28 -0
  469. package/server/dist/external-routes-wiring.d.ts.map +1 -0
  470. package/server/dist/external-routes-wiring.js +61 -0
  471. package/server/dist/external-routes-wiring.js.map +1 -0
  472. package/server/dist/index.d.ts.map +1 -1
  473. package/server/dist/index.js +111 -44
  474. package/server/dist/index.js.map +1 -1
  475. package/server/dist/lib/resolveHonoHost.d.ts.map +1 -1
  476. package/server/dist/lib/resolveHonoHost.js +16 -1
  477. package/server/dist/lib/resolveHonoHost.js.map +1 -1
  478. package/server/dist/routes/_triage-api-harness.d.ts +1 -1
  479. package/server/dist/routes/_triage-api-harness.d.ts.map +1 -1
  480. package/server/dist/routes/_triage-api-harness.js.map +1 -1
  481. package/server/dist/routes/campaigns-readiness.d.ts +10 -0
  482. package/server/dist/routes/campaigns-readiness.d.ts.map +1 -0
  483. package/server/dist/routes/campaigns-readiness.js +58 -0
  484. package/server/dist/routes/campaigns-readiness.js.map +1 -0
  485. package/server/dist/routes/campaigns.d.ts.map +1 -1
  486. package/server/dist/routes/campaigns.js +3 -0
  487. package/server/dist/routes/campaigns.js.map +1 -1
  488. package/server/dist/routes/codex-models.d.ts +15 -0
  489. package/server/dist/routes/codex-models.d.ts.map +1 -0
  490. package/server/dist/routes/codex-models.js +77 -0
  491. package/server/dist/routes/codex-models.js.map +1 -0
  492. package/server/dist/routes/codextender-models.d.ts +16 -0
  493. package/server/dist/routes/codextender-models.d.ts.map +1 -0
  494. package/server/dist/routes/codextender-models.js +81 -0
  495. package/server/dist/routes/codextender-models.js.map +1 -0
  496. package/server/dist/routes/diagnostics.d.ts +15 -0
  497. package/server/dist/routes/diagnostics.d.ts.map +1 -1
  498. package/server/dist/routes/diagnostics.js +1 -0
  499. package/server/dist/routes/diagnostics.js.map +1 -1
  500. package/server/dist/routes/org-chart-lead-guard.d.ts +10 -0
  501. package/server/dist/routes/org-chart-lead-guard.d.ts.map +1 -0
  502. package/server/dist/routes/org-chart-lead-guard.js +49 -0
  503. package/server/dist/routes/org-chart-lead-guard.js.map +1 -0
  504. package/server/dist/routes/org-inventory-composite.d.ts +20 -0
  505. package/server/dist/routes/org-inventory-composite.d.ts.map +1 -0
  506. package/server/dist/routes/org-inventory-composite.js +100 -0
  507. package/server/dist/routes/org-inventory-composite.js.map +1 -0
  508. package/server/dist/routes/org-lead-setup-wizard.d.ts +10 -0
  509. package/server/dist/routes/org-lead-setup-wizard.d.ts.map +1 -0
  510. package/server/dist/routes/org-lead-setup-wizard.js +51 -0
  511. package/server/dist/routes/org-lead-setup-wizard.js.map +1 -0
  512. package/server/dist/routes/org-leads-composite.d.ts.map +1 -1
  513. package/server/dist/routes/org-leads-composite.js +35 -9
  514. package/server/dist/routes/org-leads-composite.js.map +1 -1
  515. package/server/dist/routes/org-writes.d.ts +14 -0
  516. package/server/dist/routes/org-writes.d.ts.map +1 -0
  517. package/server/dist/routes/org-writes.js +61 -0
  518. package/server/dist/routes/org-writes.js.map +1 -0
  519. package/server/dist/routes/org.d.ts +11 -2
  520. package/server/dist/routes/org.d.ts.map +1 -1
  521. package/server/dist/routes/org.js +50 -47
  522. package/server/dist/routes/org.js.map +1 -1
  523. package/server/dist/routes/settings.d.ts.map +1 -1
  524. package/server/dist/routes/settings.js +23 -2
  525. package/server/dist/routes/settings.js.map +1 -1
  526. package/server/dist/routes/triage.d.ts +17 -0
  527. package/server/dist/routes/triage.d.ts.map +1 -1
  528. package/server/dist/routes/triage.js +29 -0
  529. package/server/dist/routes/triage.js.map +1 -1
  530. package/server/dist/terminal/pty-manager.d.ts +14 -0
  531. package/server/dist/terminal/pty-manager.d.ts.map +1 -1
  532. package/server/dist/terminal/pty-manager.js +11 -0
  533. package/server/dist/terminal/pty-manager.js.map +1 -1
  534. package/server/dist/terminal/routes.d.ts.map +1 -1
  535. package/server/dist/terminal/routes.js +9 -0
  536. package/server/dist/terminal/routes.js.map +1 -1
  537. package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -1
  538. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -1
  539. package/server/dist/terminal/ws-upgrade-handler.fixtures.js +1 -0
  540. package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -1
  541. package/server/dist/terminal/ws-upgrade-handler.js +14 -5
  542. package/server/dist/terminal/ws-upgrade-handler.js.map +1 -1
  543. package/server/dist/test/event-test-counts-fixtures.d.ts +40 -0
  544. package/server/dist/test/event-test-counts-fixtures.d.ts.map +1 -0
  545. package/server/dist/test/event-test-counts-fixtures.js +56 -0
  546. package/server/dist/test/event-test-counts-fixtures.js.map +1 -0
  547. package/server/dist/types/leadwright-beat-step.d.ts +19 -0
  548. package/server/dist/types/leadwright-beat-step.d.ts.map +1 -0
  549. package/server/dist/types/leadwright-beat-step.js +56 -0
  550. package/server/dist/types/leadwright-beat-step.js.map +1 -0
  551. package/server/dist/types/leadwright-preflight.d.ts +90 -0
  552. package/server/dist/types/leadwright-preflight.d.ts.map +1 -0
  553. package/server/dist/types/leadwright-preflight.js +65 -0
  554. package/server/dist/types/leadwright-preflight.js.map +1 -0
  555. package/server/dist/types/leadwright-schema-drift.d.ts +28 -0
  556. package/server/dist/types/leadwright-schema-drift.d.ts.map +1 -0
  557. package/server/dist/types/leadwright-schema-drift.js +89 -0
  558. package/server/dist/types/leadwright-schema-drift.js.map +1 -0
  559. package/server/dist/types/org-inventory.d.ts +53 -0
  560. package/server/dist/types/org-inventory.d.ts.map +1 -0
  561. package/server/dist/types/org-inventory.js +11 -0
  562. package/server/dist/types/org-inventory.js.map +1 -0
  563. package/server/dist/types/org.d.ts +57 -6
  564. package/server/dist/types/org.d.ts.map +1 -1
  565. package/server/dist/types/run-config-retry.d.ts +29 -0
  566. package/server/dist/types/run-config-retry.d.ts.map +1 -0
  567. package/server/dist/types/run-config-retry.js +47 -0
  568. package/server/dist/types/run-config-retry.js.map +1 -0
  569. package/server/dist/types/run-config-v2.d.ts +29 -41
  570. package/server/dist/types/run-config-v2.d.ts.map +1 -1
  571. package/server/dist/types/run-config-v2.js +16 -50
  572. package/server/dist/types/run-config-v2.js.map +1 -1
  573. package/server/dist/types/settings.d.ts +33 -0
  574. package/server/dist/types/settings.d.ts.map +1 -1
  575. package/server/dist/vendor/leadwright/beat-step.schema.json +83 -0
  576. package/server/dist/vendor/leadwright/claim-record-lock-contract.json +15 -0
  577. package/server/dist/vendor/leadwright/org-chart.schema.json +195 -0
  578. package/server/dist/vendor/leadwright/preflight-input.schema.json +318 -0
  579. package/server/dist/vendor/leadwright/preflight-result.schema.json +56 -0
  580. package/server/package.json +1 -1
  581. package/client/dist/assets/channel-BfmIcrp7.js +0 -1
  582. package/client/dist/assets/classDiagram-OUVF2IWQ-HfUQZ6Uc.js +0 -1
  583. package/client/dist/assets/classDiagram-v2-EOCWNBFH-HfUQZ6Uc.js +0 -1
  584. package/client/dist/assets/index-CKU9dY18.css +0 -1
  585. package/client/dist/assets/index-DOMl6atu.js +0 -847
  586. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-srkiu3Ib.js +0 -1
  587. package/client/dist/assets/swimlanesDiagram-G3AALYLV-Dq-0K9Zm.js +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"run-id-recovery.js","sourceRoot":"","sources":["../../../src/core/mission-context/run-id-recovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-id-recovery.js","sourceRoot":"","sources":["../../../src/core/mission-context/run-id-recovery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"traceability.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/traceability.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,gBAAgB,kDAAkD,CAAC;AAKhF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;OAQG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB,GACD;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEtF,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMtD;AAcD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM;AACnB;;;;;GAKG;AACH,UAAU,GAAE,MAAyB,GACpC,iBAAiB,CAwFnB"}
1
+ {"version":3,"file":"traceability.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/traceability.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,gBAAgB,kDAAkD,CAAC;AAKhF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;OAQG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB,GACD;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEtF,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMtD;AAmBD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM;AACnB;;;;;GAKG;AACH,UAAU,GAAE,MAAyB,GACpC,iBAAiB,CAgGnB"}
@@ -64,6 +64,12 @@ function addLink(entry, link) {
64
64
  // case happened to be tagged with the survivor id directly.
65
65
  if (!existing.mappedFrom && link.mappedFrom)
66
66
  existing.mappedFrom = link.mappedFrom;
67
+ // Union the AC ids seen across every case on this file for this FR — a file
68
+ // can hold several cases tagging different ACs of the same requirement.
69
+ for (const acId of link.acIds) {
70
+ if (!existing.acIds.includes(acId))
71
+ existing.acIds.push(acId);
72
+ }
67
73
  }
68
74
  /**
69
75
  * Read + invert the manifest. Never throws: every defect becomes a typed
@@ -156,7 +162,15 @@ maxEntries = MAX_TEST_ENTRIES) {
156
162
  }
157
163
  // The fold only "moved" the id when the source tag named something else.
158
164
  const from = typeof t.resolved_from === "string" ? t.resolved_from.trim() : "";
159
- addLink(entry, { frId, mappedFrom: from && from !== frId ? from : null });
165
+ // v4-only field (WITH_AC_TAG / BARE_FR_TAG fixtures). A pure relay of
166
+ // whatever the manifest already says — this reader computes no AC
167
+ // binding of its own.
168
+ const acId = typeof t.ac_id === "string" && t.ac_id.trim().length > 0 ? t.ac_id.trim() : null;
169
+ addLink(entry, {
170
+ frId,
171
+ mappedFrom: from && from !== frId ? from : null,
172
+ acIds: acId ? [acId] : [],
173
+ });
160
174
  }
161
175
  }
162
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"traceability.js","sourceRoot":"","sources":["../../../src/core/mission-context/traceability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAG3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,+CAA+C,CAAC;AAEhF,+EAA+E;AAC/E,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAiCvC,oEAAoE;AACpE,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,OAAO,CAAC,KAA4B,EAAE,IAAe;IAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,8EAA8E;IAC9E,0EAA0E;IAC1E,4DAA4D;IAC5D,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU;QAAE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB;AACnB;;;;;GAKG;AACH,aAAqB,gBAAgB;IAErC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAClE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAErF,sEAAsE;IACtE,mDAAmD;IACnD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAEjE,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,IAAI,GAAG,MAAiC,CAAC;IAE/C,yEAAyE;IACzE,8EAA8E;IAC9E,2EAA2E;IAC3E,+EAA+E;IAC/E,+EAA+E;IAC/E,6EAA6E;IAC7E,8EAA8E;IAC9E,2CAA2C;IAC3C,oBAAoB,CAAC;QACnB,QAAQ,EAAE,gBAAgB;QAC1B,IAAI,EAAE,KAAK,CAAC,QAAQ;QACpB,QAAQ,EAAE,IAAI,CAAC,cAAc;QAC7B,QAAQ,EAAE,2BAA2B;QACrC,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACvC,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACrF,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;IACxD,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,YAAuC,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,SAAS;QACpE,MAAM,CAAC,GAAG,GAA8B,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QAEnF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,SAAS;YACpC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;oBACvB,oEAAoE;oBACpE,kEAAkE;oBAClE,sEAAsE;oBACtE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBAC1F,CAAC;gBACD,IAAI,EAAE,CAAC;gBACP,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACpE,MAAM,CAAC,GAAG,GAA8B,CAAC;gBACzC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,IAAI;oBAAE,SAAS;gBAEpB,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;oBAC9C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC1B,CAAC;gBACD,KAAK,CAAC,SAAS,EAAE,CAAC;gBAElB,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBACtF,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACvE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBAED,yEAAyE;gBACzE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/E,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC3F,CAAC;AAED,SAAS,KAAK,CAAC,CAAU;IACvB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"traceability.js","sourceRoot":"","sources":["../../../src/core/mission-context/traceability.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,19 @@ export type TestChangeKind = "added" | "modified" | "removed";
7
7
  * `mappedFrom` is set only when the manifest resolved a folded source tag to a
8
8
  * surviving parent — a test tagged `covers(FR-01.44)` filed under `FR-01.28`
9
9
  * renders "mapped from FR-01.44" (Slice-2 AC2, covers monorepo `trg-5f6a4f74`).
10
+ *
11
+ * `acIds` is a PURE READ of the v4 manifest's optional `ac_id` on each test
12
+ * link — every distinct value seen across this file's cases for this FR,
13
+ * unioned and deduped the same way `mappedFrom` is carried. `[]` means no
14
+ * case for this file+FR carried an `ac_id` — the common case in this repo
15
+ * today (0/33 requirements tag `ac_id` as of iterate-2026-09-09), and MUST
16
+ * read as "not yet tagged", never as "covers no AC". This reader computes
17
+ * no AC binding of its own — it only relays what the manifest already says.
10
18
  */
11
19
  export interface TestFrRef {
12
20
  frId: string;
13
21
  mappedFrom: string | null;
22
+ acIds: string[];
14
23
  }
15
24
  export interface TestRow {
16
25
  /** Repo-relative POSIX path. */
@@ -25,6 +34,31 @@ export interface TestRow {
25
34
  frs: TestFrRef[];
26
35
  /** Test cases the manifest records for this file; null when unknown. */
27
36
  caseCount: number | null;
37
+ /**
38
+ * Set only when `frs` is empty because the manifest — read successfully —
39
+ * simply has no entry for this file yet (typically: the file is `added` in
40
+ * this run's own commit, newer than the last manifest regen). Distinct from
41
+ * a genuinely-zero-links file, which cannot occur: every manifest entry that
42
+ * exists carries at least one requirement link. `null` whenever `frs` is
43
+ * either resolved or the absence is already explained at the artifact level
44
+ * (`manifestStatus: "unavailable"`, or a `removed` file, never in the
45
+ * manifest by definition). The UI must render this instead of a bare dash —
46
+ * an unindexed file must never read as "proven to cover no requirement".
47
+ */
48
+ unresolvedReason?: string | null;
49
+ }
50
+ /**
51
+ * The rows for ONE acceptance criterion — the same file-level rows the RTM
52
+ * table already shows, regrouped by `(frId, acId)` rather than by file. A
53
+ * VIEW, not a second store: every file here already appears in `rows` above.
54
+ */
55
+ export interface AcTestGroup {
56
+ frId: string;
57
+ acId: string;
58
+ files: {
59
+ path: string;
60
+ kind: TestChangeKind;
61
+ }[];
28
62
  }
29
63
  export interface TestsArtifact extends ArtifactBase {
30
64
  kind: "tests";
@@ -68,6 +102,16 @@ export interface TestsArtifact extends ArtifactBase {
68
102
  } | null;
69
103
  note: string | null;
70
104
  };
105
+ /**
106
+ * `tagged: false` means no row's manifest link carried an `ac_id` — the UI
107
+ * must render that as "not yet tagged by AC", never as an empty coverage
108
+ * table. `groups` is derived purely from `rows[].frs[].acIds`; it adds no
109
+ * binding this artifact did not already have.
110
+ */
111
+ acCoverage: {
112
+ tagged: boolean;
113
+ groups: AcTestGroup[];
114
+ };
71
115
  } | null;
72
116
  }
73
117
  /**
@@ -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":"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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;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 "". */