@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
@@ -0,0 +1,72 @@
1
+ import { type CopyCommandForms } from "./launcher.js";
2
+ /**
3
+ * Resolves the bearer token sent to the local Codextender proxy from
4
+ * `process.env.CODEXTENDER_AUTH_TOKEN` — a validated configuration/
5
+ * environment value, never a value baked into this source (PR-review
6
+ * BLOCK, iterate-2026-09-23, second round: a hardcoded fallback here read
7
+ * as an unconditional credential regardless of its actual local-only,
8
+ * non-secret nature). Returns `undefined` when unset or blank; every
9
+ * caller must treat that as "Codextender isn't configured on this machine"
10
+ * and fail closed (`codextenderAuthTokenMissingError`) rather than send an
11
+ * empty/placeholder token.
12
+ */
13
+ export declare function resolveCodextenderAuthToken(): string | undefined;
14
+ /** Matches `codextender`'s own CLI default (`codextender --port 4000`
15
+ * exposes `gpt-6-sol` as alias `sol` unless told otherwise). */
16
+ export declare const DEFAULT_CODEXTENDER_MODEL_ALIAS = "sol";
17
+ export interface CodextenderLaunchArgs {
18
+ cwd: string;
19
+ /** `http://127.0.0.1:<codextenderPort>` — built by the caller from the
20
+ * `codextenderPort` global setting. */
21
+ baseUrl: string;
22
+ /** The Codextender model alias (Part A — "no closed enum", free text,
23
+ * reuses the existing `codexImplementationModel` launch-body field).
24
+ * Defaults to `DEFAULT_CODEXTENDER_MODEL_ALIAS` when omitted. */
25
+ model?: string;
26
+ /**
27
+ * Resolved via `resolveCodextenderAuthToken()` by the caller — this
28
+ * function has no built-in default and never resolves it itself, so a
29
+ * caller that skips the "is Codextender configured?" preflight gets a
30
+ * TypeScript error here, not a silently-sent empty/placeholder token.
31
+ */
32
+ authToken: string;
33
+ /**
34
+ * The Codextender model's real context window in tokens, resolved by the
35
+ * caller from the proxy's own `/v1/models` `max_input_tokens` field
36
+ * (`resolveCodextenderMaxContextTokens` in `codextender-proxy-probe.ts`) —
37
+ * operator finding, 2026-09-26: Claude Code assumes a 200K window for any
38
+ * model id it doesn't recognize and over-compacts against that wrong
39
+ * ceiling long before the real ~1.05M-token Codex window is anywhere near
40
+ * full. `undefined` (probe failed, alias unknown, or field absent) leaves
41
+ * `CLAUDE_CODE_MAX_CONTEXT_TOKENS` unset — the safe fallback is Claude
42
+ * Code's own 200K default, never a number guessed here.
43
+ */
44
+ maxContextTokens?: number;
45
+ /**
46
+ * The already-built plain-Claude commands for THIS task (same
47
+ * session-id/resume/name/plugin-dir/slash-command shape an ordinary
48
+ * Claude-runtime launch of this task would produce) — the chokepoint's
49
+ * own Claude-fallback `commands`, computed before it decides to override
50
+ * for a Codex-runtime task.
51
+ */
52
+ claudeCommands: CopyCommandForms;
53
+ }
54
+ /**
55
+ * Doubt-review HIGH — `args.cwd` is caller-supplied (`task.cwd` at the
56
+ * launch chokepoint and the fork route; `applyActionSubstitutionBranch`'s
57
+ * custom-action commands are built from `project.path` instead, which can
58
+ * legitimately diverge from `task.cwd`, e.g. a worktree-based task). When
59
+ * `args.claudeCommands` was built from a DIFFERENT cwd than `args.cwd`,
60
+ * the exact-string cd-prefix match below fails, and silently falling
61
+ * through to prepend a second, possibly-wrong `cd`/`Set-Location` ahead of
62
+ * the original produced a command that could abort outright (PowerShell's
63
+ * `-ErrorAction Stop` on a nonexistent `args.cwd`) or silently launch in
64
+ * the wrong directory. Thrown instead, so a caller surfaces this as an
65
+ * actionable error rather than an auto-executed command that mysteriously
66
+ * fails or does the wrong thing.
67
+ */
68
+ export declare class CodextenderCwdMismatchError extends Error {
69
+ constructor(cwd: string);
70
+ }
71
+ export declare function buildCodextenderCommands(args: CodextenderLaunchArgs): CopyCommandForms;
72
+ //# sourceMappingURL=launcher-codextender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher-codextender.d.ts","sourceRoot":"","sources":["../../src/core/launcher-codextender.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGrE;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,GAAG,SAAS,CAGhE;AAED;iEACiE;AACjE,eAAO,MAAM,+BAA+B,QAAQ,CAAC;AAErD,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ;4CACwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB;;sEAEkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,cAAc,EAAE,gBAAgB,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,GAAG,EAAE,MAAM;CAQxB;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,qBAAqB,GAAG,gBAAgB,CAoBtF"}
@@ -0,0 +1,98 @@
1
+ /*
2
+ * Codextender launch-command builder (Codextender integration spec Part B.2,
3
+ * `C:\01_Development\shipwright\Spec\codextender-integration.md`).
4
+ *
5
+ * Sibling of `launcher-codex.ts`, but structurally different from it:
6
+ * Codextender never changes the DRIVING BINARY (`claude` stays `claude` —
7
+ * only `ANTHROPIC_BASE_URL`/`ANTHROPIC_MODEL` re-point it at a local
8
+ * LiteLLM proxy that talks to a Codex-plan subscription). So instead of
9
+ * re-implementing session/resume/name/plugin-dir argv logic the way
10
+ * `launcher-codex.ts` does for the genuinely different `codex` CLI, this
11
+ * module REUSES the already-built plain-Claude `CopyCommandForms` for this
12
+ * task (identical to what an ordinary Claude-runtime launch would produce)
13
+ * and prepends a per-shell env-var prefix ahead of the `claude` invocation
14
+ * itself — the exact insertion point `buildCdPrefix` (pure, exported from
15
+ * `launcher.ts`) lets us locate by exact string match, no regex guessing.
16
+ *
17
+ * "webui never spawns a process, only builds a string" (CLAUDE.md rule 1)
18
+ * holds identically to every other launcher in this directory.
19
+ */
20
+ import { unlinkSync } from "node:fs";
21
+ import { buildCodextenderEnvCleanupSuffix, buildCodextenderEnvPrefix, writeCodextenderAuthTokenFile, } from "./launcher-codextender-env.js";
22
+ import { buildCdPrefix } from "./launcher.js";
23
+ import { qPs, qCmd, qPosix } from "./shell-quote.js";
24
+ /**
25
+ * Resolves the bearer token sent to the local Codextender proxy from
26
+ * `process.env.CODEXTENDER_AUTH_TOKEN` — a validated configuration/
27
+ * environment value, never a value baked into this source (PR-review
28
+ * BLOCK, iterate-2026-09-23, second round: a hardcoded fallback here read
29
+ * as an unconditional credential regardless of its actual local-only,
30
+ * non-secret nature). Returns `undefined` when unset or blank; every
31
+ * caller must treat that as "Codextender isn't configured on this machine"
32
+ * and fail closed (`codextenderAuthTokenMissingError`) rather than send an
33
+ * empty/placeholder token.
34
+ */
35
+ export function resolveCodextenderAuthToken() {
36
+ const fromEnv = process.env.CODEXTENDER_AUTH_TOKEN?.trim();
37
+ return fromEnv && fromEnv.length > 0 ? fromEnv : undefined;
38
+ }
39
+ /** Matches `codextender`'s own CLI default (`codextender --port 4000`
40
+ * exposes `gpt-6-sol` as alias `sol` unless told otherwise). */
41
+ export const DEFAULT_CODEXTENDER_MODEL_ALIAS = "sol";
42
+ /**
43
+ * Doubt-review HIGH — `args.cwd` is caller-supplied (`task.cwd` at the
44
+ * launch chokepoint and the fork route; `applyActionSubstitutionBranch`'s
45
+ * custom-action commands are built from `project.path` instead, which can
46
+ * legitimately diverge from `task.cwd`, e.g. a worktree-based task). When
47
+ * `args.claudeCommands` was built from a DIFFERENT cwd than `args.cwd`,
48
+ * the exact-string cd-prefix match below fails, and silently falling
49
+ * through to prepend a second, possibly-wrong `cd`/`Set-Location` ahead of
50
+ * the original produced a command that could abort outright (PowerShell's
51
+ * `-ErrorAction Stop` on a nonexistent `args.cwd`) or silently launch in
52
+ * the wrong directory. Thrown instead, so a caller surfaces this as an
53
+ * actionable error rather than an auto-executed command that mysteriously
54
+ * fails or does the wrong thing.
55
+ */
56
+ export class CodextenderCwdMismatchError extends Error {
57
+ constructor(cwd) {
58
+ super(`buildCodextenderCommands: claudeCommands' embedded cd-prefix does not ` +
59
+ `match args.cwd (${cwd}) — this task's plain-Claude commands appear ` +
60
+ "to have been built from a different working directory.");
61
+ this.name = "CodextenderCwdMismatchError";
62
+ }
63
+ }
64
+ export function buildCodextenderCommands(args) {
65
+ // PR-review preflight fix (round 8, iterate-2026-09-23) — the bearer token
66
+ // itself never appears in any of the three command strings below; only
67
+ // this file's PATH does. See `writeCodextenderAuthTokenFile`'s doc comment
68
+ // for why a temp file replaces the literal-value approach round 7's
69
+ // env-cleanup fix alone didn't fully address.
70
+ const tokenFilePath = writeCodextenderAuthTokenFile(args.authToken);
71
+ try {
72
+ return {
73
+ powershell: injectEnvPrefix(args, "powershell", qPs, tokenFilePath),
74
+ cmd: injectEnvPrefix(args, "cmd", qCmd, tokenFilePath),
75
+ posix: injectEnvPrefix(args, "posix", qPosix, tokenFilePath),
76
+ };
77
+ }
78
+ catch (err) {
79
+ // A cwd mismatch (below) throws before any command is returned for the
80
+ // caller to run/clean up itself — without this, the token file written
81
+ // above would be orphaned on every mismatch, not just a killed pty.
82
+ unlinkSync(tokenFilePath);
83
+ throw err;
84
+ }
85
+ }
86
+ function injectEnvPrefix(args, shellForm, q, tokenFilePath) {
87
+ const cdPrefix = buildCdPrefix(shellForm, args.cwd);
88
+ const full = args.claudeCommands[shellForm];
89
+ if (!full.startsWith(cdPrefix)) {
90
+ throw new CodextenderCwdMismatchError(args.cwd);
91
+ }
92
+ const rest = full.slice(cdPrefix.length);
93
+ return (cdPrefix +
94
+ buildCodextenderEnvPrefix(args, q, shellForm, tokenFilePath) +
95
+ rest +
96
+ buildCodextenderEnvCleanupSuffix(shellForm, q, tokenFilePath));
97
+ }
98
+ //# sourceMappingURL=launcher-codextender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher-codextender.js","sourceRoot":"","sources":["../../src/core/launcher-codextender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAyB,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;IAC3D,OAAO,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED;iEACiE;AACjE,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAwCrD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD,YAAY,GAAW;QACrB,KAAK,CACH,wEAAwE;YACtE,mBAAmB,GAAG,+CAA+C;YACrE,wDAAwD,CAC3D,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CAAC,IAA2B;IAClE,2EAA2E;IAC3E,uEAAuE;IACvE,2EAA2E;IAC3E,oEAAoE;IACpE,8CAA8C;IAC9C,MAAM,aAAa,GAAG,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,OAAO;YACL,UAAU,EAAE,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,CAAC;YACnE,GAAG,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC;YACtD,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC;SAC7D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uEAAuE;QACvE,uEAAuE;QACvE,oEAAoE;QACpE,UAAU,CAAC,aAAa,CAAC,CAAC;QAC1B,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAA2B,EAC3B,SAAyC,EACzC,CAAwB,EACxB,aAAqB;IAErB,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,CACL,QAAQ;QACR,yBAAyB,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC;QAC5D,IAAI;QACJ,gCAAgC,CAAC,SAAS,EAAE,CAAC,EAAE,aAAa,CAAC,CAC9D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ export declare const SAMPLE_UUID = "00000000-1111-2222-3333-444444444444";
2
+ export declare const MARKER_VALUE = "smoke-test-secret-9f3a2b7c-do-not-leak";
3
+ export declare const ENV_NAMES: string[];
4
+ export declare const SPAWN_TIMEOUT_MS = 15000;
5
+ export declare function extractTokenFilePath(command: string, shellForm: "powershell" | "cmd" | "posix"): string;
6
+ export declare function findBash(): string | null;
7
+ export declare function findCmd(): string | null;
8
+ export declare function scratchDir(): string;
9
+ export declare function cleanupScratchDirs(): void;
10
+ export interface SmokeResult {
11
+ exit: number | null;
12
+ stdout: string;
13
+ stderr: string;
14
+ tokenSeenByChild: string;
15
+ remainingEnv: string;
16
+ tokenFileExists: boolean;
17
+ }
18
+ export declare function generatedCommandFor(shellForm: "powershell" | "cmd" | "posix"): {
19
+ command: string;
20
+ tokenFilePath: string;
21
+ };
22
+ export declare function runPowershell(exitCode: number, powershellBin: string): SmokeResult;
23
+ export declare function runBash(exitCode: number): SmokeResult;
24
+ export declare function runCmd(exitCode: number): SmokeResult;
25
+ //# sourceMappingURL=launcher-codextender.smoke-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher-codextender.smoke-helpers.d.ts","sourceRoot":"","sources":["../../src/core/launcher-codextender.smoke-helpers.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,WAAW,yCAAyC,CAAC;AAClE,eAAO,MAAM,YAAY,2CAA2C,CAAC;AACrE,eAAO,MAAM,SAAS,UAUrB,CAAC;AACF,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAiBvG;AAED,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAGxC;AAED,wBAAgB,OAAO,IAAI,MAAM,GAAG,IAAI,CAMvC;AAGD,wBAAgB,UAAU,IAAI,MAAM,CAInC;AACD,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,YAAY,GAAG,KAAK,GAAG,OAAO;;;EAS5E;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,CA+BlF;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAgCrD;AAID,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CA6DpD"}
@@ -0,0 +1,211 @@
1
+ /*
2
+ * launcher-codextender.smoke-helpers.ts — real-shell execution plumbing for
3
+ * launcher-codextender.smoke.test.ts, split out (bloat anti-ratchet,
4
+ * 2026-09-28) once the test file crossed the 300-line source/test limit
5
+ * after adding CLAUDE_CODE_AUTO_MODE_SERVER coverage. Pure helpers + shell
6
+ * spawning only — no `describe`/`it` here, so this file is not itself a
7
+ * test suite (vitest only collects files it's told to run tests from; a
8
+ * plain .ts helper imported by a .test.ts file is not treated as one).
9
+ */
10
+ import { spawnSync } from "node:child_process";
11
+ import { mkdtempSync, rmSync, writeFileSync, existsSync, readFileSync, mkdirSync } from "node:fs";
12
+ import { tmpdir } from "node:os";
13
+ import path from "node:path";
14
+ import { buildCopyCommands } from "./launcher.js";
15
+ import { buildCodextenderCommands } from "./launcher-codextender.js";
16
+ import { POWERSHELL_QUIET_ENV } from "./powershell-probe.smoke-helpers.js";
17
+ export const SAMPLE_UUID = "00000000-1111-2222-3333-444444444444";
18
+ export const MARKER_VALUE = "smoke-test-secret-9f3a2b7c-do-not-leak";
19
+ export const ENV_NAMES = [
20
+ "ANTHROPIC_BASE_URL",
21
+ "ANTHROPIC_AUTH_TOKEN",
22
+ "ANTHROPIC_MODEL",
23
+ "CODEXTENDER_ACTIVE",
24
+ "CODEXTENDER_MODEL",
25
+ "CLAUDE_CODE_AUTO_MODE_SERVER",
26
+ "ANTHROPIC_DEFAULT_OPUS_MODEL",
27
+ "ANTHROPIC_DEFAULT_SONNET_MODEL",
28
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL",
29
+ ];
30
+ export const SPAWN_TIMEOUT_MS = 15_000;
31
+ export function extractTokenFilePath(command, shellForm) {
32
+ if (shellForm === "powershell") {
33
+ const m = command.match(/Get-Content -LiteralPath '([^']+)'/);
34
+ if (!m)
35
+ throw new Error("token file path not found in powershell command");
36
+ return m[1];
37
+ }
38
+ /* v8 ignore start -- cmd.exe branch only reached via runCmd(), which
39
+ * findCmd()'s win32 guard skips entirely on the Linux CI runner. */
40
+ if (shellForm === "cmd") {
41
+ const m = command.match(/set \/p ANTHROPIC_AUTH_TOKEN=<"([^"]+)"/);
42
+ if (!m)
43
+ throw new Error("token file path not found in cmd command");
44
+ return m[1];
45
+ }
46
+ /* v8 ignore stop */
47
+ const m = command.match(/\$\(cat '([^']+)'\)/);
48
+ if (!m)
49
+ throw new Error("token file path not found in posix command");
50
+ return m[1];
51
+ }
52
+ export function findBash() {
53
+ const result = spawnSync("bash", ["-c", "true"], { stdio: "pipe", timeout: SPAWN_TIMEOUT_MS });
54
+ return result.status === 0 ? "bash" : null;
55
+ }
56
+ export function findCmd() {
57
+ if (process.platform !== "win32")
58
+ return null; // cmd.exe is Windows-only.
59
+ /* v8 ignore start -- unreachable on the Linux CI runner (platform check above). */
60
+ const result = spawnSync("cmd", ["/c", "exit", "0"], { stdio: "pipe", timeout: SPAWN_TIMEOUT_MS });
61
+ return result.status === 0 ? "cmd" : null;
62
+ /* v8 ignore stop */
63
+ }
64
+ const scratchDirs = [];
65
+ export function scratchDir() {
66
+ const dir = mkdtempSync(path.join(tmpdir(), "codextender-smoke-"));
67
+ scratchDirs.push(dir);
68
+ return dir;
69
+ }
70
+ export function cleanupScratchDirs() {
71
+ while (scratchDirs.length > 0) {
72
+ const dir = scratchDirs.pop();
73
+ if (dir)
74
+ rmSync(dir, { recursive: true, force: true });
75
+ }
76
+ }
77
+ export function generatedCommandFor(shellForm) {
78
+ const claudeCommands = buildCopyCommands({ sessionUuid: SAMPLE_UUID, cwd: process.cwd(), title: "smoke" });
79
+ const command = buildCodextenderCommands({
80
+ cwd: process.cwd(),
81
+ baseUrl: "http://127.0.0.1:4000",
82
+ authToken: MARKER_VALUE,
83
+ claudeCommands,
84
+ })[shellForm];
85
+ return { command, tokenFilePath: extractTokenFilePath(command, shellForm) };
86
+ }
87
+ export function runPowershell(exitCode, powershellBin) {
88
+ const { command, tokenFilePath } = generatedCommandFor("powershell");
89
+ const dir = scratchDir();
90
+ const captureFile = path.join(dir, "capture.txt");
91
+ const wrapper = "function claude {\n" +
92
+ " Set-Content -LiteralPath $env:SMOKE_CAPTURE_FILE -Value $env:ANTHROPIC_AUTH_TOKEN -NoNewline\n" +
93
+ " $global:LASTEXITCODE = [int]$env:SMOKE_EXIT_CODE\n" +
94
+ "}\n" +
95
+ command +
96
+ "\n" +
97
+ '$remaining = @()\n' +
98
+ `foreach ($n in @(${ENV_NAMES.map((n) => `"${n}"`).join(",")})) {\n` +
99
+ " if ([Environment]::GetEnvironmentVariable($n)) { $remaining += $n }\n" +
100
+ "}\n" +
101
+ 'Write-Output ("SMOKE_REMAINING_ENV=" + ($remaining -join ","))\n' +
102
+ `Write-Output ("SMOKE_TOKEN_FILE_EXISTS=" + (Test-Path -LiteralPath '${tokenFilePath.replace(/'/g, "''")}'))\n`;
103
+ const result = spawnSync(powershellBin, ["-NoProfile", "-Command", wrapper], {
104
+ stdio: "pipe",
105
+ timeout: SPAWN_TIMEOUT_MS,
106
+ env: { ...process.env, ...POWERSHELL_QUIET_ENV, SMOKE_CAPTURE_FILE: captureFile, SMOKE_EXIT_CODE: String(exitCode) },
107
+ });
108
+ const stdout = result.stdout?.toString() ?? "";
109
+ return {
110
+ exit: result.status,
111
+ stdout,
112
+ stderr: result.stderr?.toString() ?? "",
113
+ tokenSeenByChild: existsSync(captureFile) ? readFileSync(captureFile, "utf8") : "",
114
+ remainingEnv: /SMOKE_REMAINING_ENV=([^\r\n]*)/.exec(stdout)?.[1] ?? "MISSING",
115
+ tokenFileExists: /SMOKE_TOKEN_FILE_EXISTS=True/i.test(stdout),
116
+ };
117
+ }
118
+ export function runBash(exitCode) {
119
+ const { command, tokenFilePath } = generatedCommandFor("posix");
120
+ const dir = scratchDir();
121
+ const captureFile = path.join(dir, "capture.txt");
122
+ const wrapper = "claude() {\n" +
123
+ ' printf "%s" "$ANTHROPIC_AUTH_TOKEN" > "$SMOKE_CAPTURE_FILE"\n' +
124
+ " return $SMOKE_EXIT_CODE\n" +
125
+ "}\n" +
126
+ command +
127
+ "\n" +
128
+ 'remaining=""\n' +
129
+ `for n in ${ENV_NAMES.join(" ")}; do\n` +
130
+ ' v=$(eval "printf \'%s\' \\"\\${$n:-}\\"")\n' +
131
+ ' if [ -n "$v" ]; then remaining="$remaining$n,"; fi\n' +
132
+ "done\n" +
133
+ 'echo "SMOKE_REMAINING_ENV=$remaining"\n' +
134
+ `if [ -e "${tokenFilePath}" ]; then echo "SMOKE_TOKEN_FILE_EXISTS=true"; else echo "SMOKE_TOKEN_FILE_EXISTS=false"; fi\n`;
135
+ const result = spawnSync("bash", ["-c", wrapper], {
136
+ stdio: "pipe",
137
+ timeout: SPAWN_TIMEOUT_MS,
138
+ env: { ...process.env, SMOKE_CAPTURE_FILE: captureFile, SMOKE_EXIT_CODE: String(exitCode) },
139
+ });
140
+ const stdout = result.stdout?.toString() ?? "";
141
+ return {
142
+ exit: result.status,
143
+ stdout,
144
+ stderr: result.stderr?.toString() ?? "",
145
+ tokenSeenByChild: existsSync(captureFile) ? readFileSync(captureFile, "utf8") : "",
146
+ remainingEnv: /SMOKE_REMAINING_ENV=([^\r\n]*)/.exec(stdout)?.[1] ?? "MISSING",
147
+ tokenFileExists: /SMOKE_TOKEN_FILE_EXISTS=true/i.test(stdout),
148
+ };
149
+ }
150
+ /* v8 ignore start -- only invoked by the cmd.exe smoke test, which
151
+ * it.skipIf(!findCmd()) skips entirely on the Linux CI runner. */
152
+ export function runCmd(exitCode) {
153
+ const { command, tokenFilePath } = generatedCommandFor("cmd");
154
+ const dir = scratchDir();
155
+ const stubDir = path.join(dir, "stub");
156
+ mkdirSync(stubDir);
157
+ const captureFile = path.join(dir, "capture.txt");
158
+ writeFileSync(path.join(stubDir, "claude.cmd"), "@echo off\r\n" +
159
+ '>"%SMOKE_CAPTURE_FILE%" echo %ANTHROPIC_AUTH_TOKEN%\r\n' +
160
+ "exit /b %SMOKE_EXIT_CODE%\r\n");
161
+ // Diagnostics MUST be chained with `&` onto the SAME logical line as
162
+ // `command`, never as subsequent physical lines: cmd.exe invokes the
163
+ // `claude.cmd` stub by bare name (no `call`, matching production, where
164
+ // real `claude` is a native .exe and this quirk never applies), and once a
165
+ // .cmd/.bat is invoked that way, control returns for the REST OF THE SAME
166
+ // LINE's `&`-chained commands but never advances to the calling script's
167
+ // next physical line (verified empirically: a batch file's own line after
168
+ // a bare-name nested-.cmd call never runs, even though same-line `&`
169
+ // continuations after that call do).
170
+ //
171
+ // There is NO reliable same-line way left to observe whether the
172
+ // cleanup suffix's `set NAME=` clears actually took effect: cmd.exe
173
+ // resolves every %VAR%/`if defined VAR` reference on an entire `&`-chained
174
+ // line against the environment snapshot from BEFORE that line started
175
+ // executing, regardless of `set` commands earlier on the SAME line — the
176
+ // textbook reason `setlocal enabledelayedexpansion` exists at all
177
+ // (confirmed in isolation: `set "X=1" & set X=CLEARED & echo %X%` prints
178
+ // the OLD value; `enabledelayedexpansion` + `!X!` does not fix `if
179
+ // defined` either, and even a nested `cmd /c "if defined X ..."` spawned
180
+ // mid-line inherits the same stale snapshot). This is a limitation of
181
+ // observing it from the SAME script, not evidence cleanup didn't run:
182
+ // `if exist <tokenFilePath>` below checks DISK state, immune to this
183
+ // per-line env snapshot, and its `false` result already proves the whole
184
+ // `&`-chained cleanup suffix — including the `set NAME=` clears that
185
+ // precede `del` in that exact same chain — ran to completion in order.
186
+ const oneLine = `set "PATH=${stubDir};%PATH%" & ` +
187
+ `set "SMOKE_CAPTURE_FILE=${captureFile}" & ` +
188
+ `set "SMOKE_EXIT_CODE=${exitCode}" & ` +
189
+ command +
190
+ ` & (if exist "${tokenFilePath}" (echo SMOKE_TOKEN_FILE_EXISTS=true) else (echo SMOKE_TOKEN_FILE_EXISTS=false))`;
191
+ const wrapperFile = path.join(dir, "wrapper.cmd");
192
+ writeFileSync(wrapperFile, `@echo off\r\n${oneLine}\r\n`);
193
+ const result = spawnSync("cmd", ["/c", wrapperFile], {
194
+ stdio: "pipe",
195
+ timeout: SPAWN_TIMEOUT_MS,
196
+ env: { ...process.env },
197
+ });
198
+ const stdout = result.stdout?.toString() ?? "";
199
+ return {
200
+ exit: result.status,
201
+ stdout,
202
+ stderr: result.stderr?.toString() ?? "",
203
+ tokenSeenByChild: existsSync(captureFile) ? readFileSync(captureFile, "utf8").trim() : "",
204
+ // Not observable same-line for cmd — see the comment above; the disk-based
205
+ // tokenFileExists check below covers whether the cleanup chain ran.
206
+ remainingEnv: "",
207
+ tokenFileExists: /SMOKE_TOKEN_FILE_EXISTS=true/i.test(stdout),
208
+ };
209
+ }
210
+ /* v8 ignore stop */
211
+ //# sourceMappingURL=launcher-codextender.smoke-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher-codextender.smoke-helpers.js","sourceRoot":"","sources":["../../src/core/launcher-codextender.smoke-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,CAAC,MAAM,WAAW,GAAG,sCAAsC,CAAC;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,wCAAwC,CAAC;AACrE,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,oBAAoB;IACpB,sBAAsB;IACtB,iBAAiB;IACjB,oBAAoB;IACpB,mBAAmB;IACnB,8BAA8B;IAC9B,8BAA8B;IAC9B,gCAAgC;IAChC,+BAA+B;CAChC,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,SAAyC;IAC7F,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC3E,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD;wEACoE;IACpE,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACnE,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACpE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,oBAAoB;IACpB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACtE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC/F,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,CAAC,2BAA2B;IAC1E,mFAAmF;IACnF,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACnG,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,oBAAoB;AACtB,CAAC;AAED,MAAM,WAAW,GAAa,EAAE,CAAC;AACjC,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACnE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,GAAG,CAAC;AACb,CAAC;AACD,MAAM,UAAU,kBAAkB;IAChC,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,GAAG;YAAE,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAWD,MAAM,UAAU,mBAAmB,CAAC,SAAyC;IAC3E,MAAM,cAAc,GAAG,iBAAiB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3G,MAAM,OAAO,GAAG,wBAAwB,CAAC;QACvC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,OAAO,EAAE,uBAAuB;QAChC,SAAS,EAAE,YAAY;QACvB,cAAc;KACf,CAAC,CAAC,SAAS,CAAC,CAAC;IACd,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,aAAqB;IACnE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAClD,MAAM,OAAO,GACX,qBAAqB;QACrB,kGAAkG;QAClG,sDAAsD;QACtD,KAAK;QACL,OAAO;QACP,IAAI;QACJ,oBAAoB;QACpB,oBAAoB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;QACpE,yEAAyE;QACzE,KAAK;QACL,kEAAkE;QAClE,uEAAuE,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;IAClH,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAC3E,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,gBAAgB;QACzB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,oBAAoB,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;KACrH,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,gBAAgB,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QAClF,YAAY,EAAE,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS;QAC7E,eAAe,EAAE,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,QAAgB;IACtC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAClD,MAAM,OAAO,GACX,cAAc;QACd,iEAAiE;QACjE,6BAA6B;QAC7B,KAAK;QACL,OAAO;QACP,IAAI;QACJ,gBAAgB;QAChB,YAAY,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;QACvC,+CAA+C;QAC/C,wDAAwD;QACxD,QAAQ;QACR,yCAAyC;QACzC,YAAY,aAAa,gGAAgG,CAAC;IAC5H,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;QAChD,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,gBAAgB;QACzB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;KAC5F,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,gBAAgB,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QAClF,YAAY,EAAE,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS;QAC7E,eAAe,EAAE,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED;kEACkE;AAClE,MAAM,UAAU,MAAM,CAAC,QAAgB;IACrC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAClD,aAAa,CACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAChC,eAAe;QACb,yDAAyD;QACzD,+BAA+B,CAClC,CAAC;IACF,qEAAqE;IACrE,qEAAqE;IACrE,wEAAwE;IACxE,2EAA2E;IAC3E,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,qEAAqE;IACrE,qCAAqC;IACrC,EAAE;IACF,iEAAiE;IACjE,oEAAoE;IACpE,2EAA2E;IAC3E,sEAAsE;IACtE,yEAAyE;IACzE,kEAAkE;IAClE,yEAAyE;IACzE,mEAAmE;IACnE,yEAAyE;IACzE,sEAAsE;IACtE,sEAAsE;IACtE,qEAAqE;IACrE,yEAAyE;IACzE,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,OAAO,GACX,aAAa,OAAO,aAAa;QACjC,2BAA2B,WAAW,MAAM;QAC5C,wBAAwB,QAAQ,MAAM;QACtC,OAAO;QACP,iBAAiB,aAAa,kFAAkF,CAAC;IACnH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAClD,aAAa,CAAC,WAAW,EAAE,gBAAgB,OAAO,MAAM,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE;QACnD,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,gBAAgB;QACzB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;KACxB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,gBAAgB,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;QACzF,2EAA2E;QAC3E,oEAAoE;QACpE,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC;KAC9D,CAAC;AACJ,CAAC;AACD,oBAAoB"}
@@ -0,0 +1,17 @@
1
+ /** Narrowest slice of `launcher.ts`'s own `Argv` this module needs. */
2
+ export interface PermissionPerimeterArgv {
3
+ toolsAllowlist: readonly string[];
4
+ permissionMode?: string;
5
+ }
6
+ /**
7
+ * Emits `--tools <comma-list>` and `--permission-mode <mode>` when
8
+ * `toolsAllowlist` is non-empty. Both flags or neither: a `permissionMode`
9
+ * without a `toolsAllowlist` would leave the process's full default toolset
10
+ * pre-approved-without-asking, the exact "looks compliant, isn't" shape
11
+ * this perimeter exists to prevent — so `permissionMode` is only ever
12
+ * emitted alongside a real allow-list. Emits nothing for an ordinary launch
13
+ * (`toolsAllowlist` empty/absent), which is why a manual launch's command
14
+ * string is unchanged byte-for-byte.
15
+ */
16
+ export declare function appendPermissionPerimeter(a: PermissionPerimeterArgv, parts: string[], q: (v: string) => string): void;
17
+ //# sourceMappingURL=launcher-permission-flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher-permission-flags.d.ts","sourceRoot":"","sources":["../../src/core/launcher-permission-flags.ts"],"names":[],"mappings":"AAUA,uEAAuE;AACvE,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,uBAAuB,EAC1B,KAAK,EAAE,MAAM,EAAE,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GACvB,IAAI,CAIN"}
@@ -0,0 +1,27 @@
1
+ /*
2
+ * core/launcher-permission-flags.ts — FR-04.22 permission-perimeter argv
3
+ * rendering, split out of launcher.ts purely to keep that file under the
4
+ * repo's 300-line guideline (no behavior change from the split itself).
5
+ *
6
+ * See `external/launch/claim-executor-permissions.ts` for WHY this exists
7
+ * and the empirical CLI evidence behind the `--tools` + `--permission-mode`
8
+ * combination.
9
+ */
10
+ /**
11
+ * Emits `--tools <comma-list>` and `--permission-mode <mode>` when
12
+ * `toolsAllowlist` is non-empty. Both flags or neither: a `permissionMode`
13
+ * without a `toolsAllowlist` would leave the process's full default toolset
14
+ * pre-approved-without-asking, the exact "looks compliant, isn't" shape
15
+ * this perimeter exists to prevent — so `permissionMode` is only ever
16
+ * emitted alongside a real allow-list. Emits nothing for an ordinary launch
17
+ * (`toolsAllowlist` empty/absent), which is why a manual launch's command
18
+ * string is unchanged byte-for-byte.
19
+ */
20
+ export function appendPermissionPerimeter(a, parts, q) {
21
+ if (a.toolsAllowlist.length === 0)
22
+ return;
23
+ parts.push("--tools", q(a.toolsAllowlist.join(",")));
24
+ if (a.permissionMode)
25
+ parts.push("--permission-mode", q(a.permissionMode));
26
+ }
27
+ //# sourceMappingURL=launcher-permission-flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher-permission-flags.js","sourceRoot":"","sources":["../../src/core/launcher-permission-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,CAA0B,EAC1B,KAAe,EACf,CAAwB;IAExB,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC1C,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,cAAc;QAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAC7E,CAAC"}
@@ -32,6 +32,24 @@ export interface LaunchArgs {
32
32
  * are rejected here as defense-in-depth.
33
33
  */
34
34
  slashCommand?: string;
35
+ /**
36
+ * FR-04.22 permission perimeter (iterate-2026-09-06-claim-launch-
37
+ * permission-perimeter) — emitted as `--tools <names>` when non-empty.
38
+ * ONLY set by a caller that has independently established this launch is
39
+ * claim-authorized (see `external/launch/claim-executor-permissions.ts`);
40
+ * a plain human/manual launch never sets this field, so its command
41
+ * string is byte-identical to before this change. Genuinely restricts
42
+ * the spawned process's function set (verified live) — NOT the same as
43
+ * `--allowed-tools`, which only pre-approves combos without removing
44
+ * anything.
45
+ */
46
+ toolsAllowlist?: readonly string[];
47
+ /**
48
+ * FR-04.22 permission perimeter — emitted as `--permission-mode <mode>`
49
+ * alongside `toolsAllowlist`. See `claimExecutorLaunchOverrides()` for
50
+ * the verified value and why.
51
+ */
52
+ permissionMode?: string;
35
53
  }
36
54
  export interface LaunchResult {
37
55
  /** Always populated; the user's fallback. */
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/core/launcher.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;AAEvF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAOpE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,YAAY,GAAG,KAAK,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAS5F;AAED,eAAO,MAAM,YAAY,EAAE,aAGzB,CAAC;AAmJH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/core/launcher.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;AAEvF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAOpE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,YAAY,GAAG,KAAK,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAS5F;AAED,eAAO,MAAM,YAAY,EAAE,aAGzB,CAAC;AA0JH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -14,6 +14,7 @@
14
14
  * 2 can plug implementations in without rewiring callers.
15
15
  */
16
16
  import { qPs, qCmd, qPosix, toPosixPath } from "./shell-quote.js";
17
+ import { appendPermissionPerimeter } from "./launcher-permission-flags.js";
17
18
  export function buildCopyCommands(args) {
18
19
  const parts = buildArgv(args);
19
20
  return {
@@ -76,6 +77,8 @@ function buildArgv(args) {
76
77
  pluginDirs: args.pluginDirs ?? [],
77
78
  title,
78
79
  slashCommand,
80
+ toolsAllowlist: [...(args.toolsAllowlist ?? [])],
81
+ permissionMode: args.permissionMode,
79
82
  };
80
83
  }
81
84
  /**
@@ -112,6 +115,7 @@ function normalizeSlashCommand(raw) {
112
115
  function renderPowershell(a) {
113
116
  const parts = ["claude"];
114
117
  appendSessionFlags(a, parts, qPs);
118
+ appendPermissionPerimeter(a, parts, qPs);
115
119
  parts.push("--add-dir", qPs(a.cwd));
116
120
  appendResumeFork(a, parts, qPs);
117
121
  appendName(a, parts, qPs);
@@ -124,6 +128,7 @@ function renderPowershell(a) {
124
128
  function renderCmd(a) {
125
129
  const parts = ["claude"];
126
130
  appendSessionFlags(a, parts, qCmd);
131
+ appendPermissionPerimeter(a, parts, qCmd);
127
132
  parts.push("--add-dir", qCmd(a.cwd));
128
133
  appendResumeFork(a, parts, qCmd);
129
134
  appendName(a, parts, qCmd);
@@ -138,6 +143,7 @@ function renderPosix(a) {
138
143
  const plugins = a.pluginDirs.map(toPosixPath);
139
144
  const parts = ["claude"];
140
145
  appendSessionFlags(a, parts, qPosix);
146
+ appendPermissionPerimeter(a, parts, qPosix);
141
147
  parts.push("--add-dir", qPosix(cwd));
142
148
  appendResumeFork(a, parts, qPosix);
143
149
  appendName(a, parts, qPosix);
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/core/launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/core/launcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { spawn as realSpawn } from "node:child_process";
2
+ import { type ResolvedSpawn } from "./win32-spawn.js";
3
+ import type { PreflightResult, PreflightStdinInput } from "../types/leadwright-preflight.js";
4
+ export type LeadwrightTransportResult = {
5
+ ranOk: true;
6
+ result: PreflightResult;
7
+ } | {
8
+ ranOk: false;
9
+ reason: string;
10
+ };
11
+ export interface RunLeadwrightPreflightOptions {
12
+ /** Injected for tests. */
13
+ spawn?: typeof realSpawn;
14
+ /** Injected for tests. */
15
+ resolveSpawnFn?: (argv: string[], cwd: string) => ResolvedSpawn | null;
16
+ /** Wall-clock deadline for the ENTIRE call, independent of the CLI's own
17
+ * 30s stdin-read timeout — bounds a child that hangs after receiving
18
+ * stdin (e.g. stalled on filesystem I/O). Default: 45s. */
19
+ timeoutMs?: number;
20
+ /** Caps total collected stdout+stderr bytes; exceeding it kills the
21
+ * child rather than parsing a truncated/misleading partial result.
22
+ * Default: 10 MiB (generous — a real PreflightResult with dozens of
23
+ * findings is a few KB). */
24
+ maxOutputBytes?: number;
25
+ }
26
+ export declare function runLeadwrightPreflight(checkoutRoot: string, proposal: PreflightStdinInput, options?: RunLeadwrightPreflightOptions): Promise<LeadwrightTransportResult>;
27
+ //# sourceMappingURL=leadwright-preflight-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leadwright-preflight-transport.d.ts","sourceRoot":"","sources":["../../src/core/leadwright-preflight-transport.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE7F,MAAM,MAAM,yBAAyB,GACjC;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GACxC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,6BAA6B;IAC5C,0BAA0B;IAC1B,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC;IACzB,0BAA0B;IAC1B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,aAAa,GAAG,IAAI,CAAC;IACvE;;gEAE4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;iCAG6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAcD,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,yBAAyB,CAAC,CAqGpC"}