@svenroth-ai/shipwright 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/client/dist/assets/{EmbeddedTerminal-D3wpPNZP.js → EmbeddedTerminal-4xgNUBUu.js} +19 -19
  2. package/client/dist/assets/{abnfDiagram-VRR7QNED-BkLIltB3.js → abnfDiagram-VRR7QNED-BdCNbaqc.js} +1 -1
  3. package/client/dist/assets/{arc-Sw-Gh0nI.js → arc-DoZTTE1N.js} +1 -1
  4. package/client/dist/assets/{architectureDiagram-ZJ3FMSHR-rdxUi9Ks.js → architectureDiagram-ZJ3FMSHR-DFTG4KtO.js} +1 -1
  5. package/client/dist/assets/{blockDiagram-677ZJIJ3-Ch_9dj8a.js → blockDiagram-677ZJIJ3-C34UBjOB.js} +1 -1
  6. package/client/dist/assets/{c4Diagram-LMCZKHZV-CkFlO65x.js → c4Diagram-LMCZKHZV-CbqAB1Ou.js} +1 -1
  7. package/client/dist/assets/channel-DBcZw7Kn.js +1 -0
  8. package/client/dist/assets/{chunk-2Q5K7J3B-CypX83xu.js → chunk-2Q5K7J3B-4N6AnmBJ.js} +1 -1
  9. package/client/dist/assets/{chunk-32BRIVSS-DxVLYGdl.js → chunk-32BRIVSS-Cs67LiCy.js} +1 -1
  10. package/client/dist/assets/{chunk-5VM5RSS4-Cxk1evhx.js → chunk-5VM5RSS4-Bwd7rtD3.js} +1 -1
  11. package/client/dist/assets/{chunk-EX3LRPZG-n9q5S4yJ.js → chunk-EX3LRPZG-CQqGfptD.js} +1 -1
  12. package/client/dist/assets/{chunk-JWPE2WC7-jeL4xvir.js → chunk-JWPE2WC7-ClvKd4PN.js} +1 -1
  13. package/client/dist/assets/{chunk-MOJQB5TN-DDSHN0cj.js → chunk-MOJQB5TN-Cwvj8GE1.js} +1 -1
  14. package/client/dist/assets/{chunk-RYQCIY6F-C0bo383g.js → chunk-RYQCIY6F-DrWMx37d.js} +1 -1
  15. package/client/dist/assets/{chunk-V7JOEXUC-C0jDXXAU.js → chunk-V7JOEXUC-CYFfa4PY.js} +1 -1
  16. package/client/dist/assets/{chunk-VR4S4FIN-h-Rr4Pn2.js → chunk-VR4S4FIN-B5eWtesm.js} +1 -1
  17. package/client/dist/assets/{chunk-XXDRQBXY-BexSo0-s.js → chunk-XXDRQBXY-BQAZ6Our.js} +1 -1
  18. package/client/dist/assets/classDiagram-OUVF2IWQ-C3Q1V9DU.js +1 -0
  19. package/client/dist/assets/classDiagram-v2-EOCWNBFH-C3Q1V9DU.js +1 -0
  20. package/client/dist/assets/{cose-bilkent-JH36ORCC-BQXzaioj.js → cose-bilkent-JH36ORCC-C76Yia6h.js} +1 -1
  21. package/client/dist/assets/{cynefin-VYW2F7L2-BJIofhfe.js → cynefin-VYW2F7L2-pJe7rdTi.js} +1 -1
  22. package/client/dist/assets/{cynefinDiagram-TSTJHNR4-DmPqTM1T.js → cynefinDiagram-TSTJHNR4-EeHQ7dYV.js} +1 -1
  23. package/client/dist/assets/{dagre-VKFMJZFB-1xljvw6X.js → dagre-VKFMJZFB-VXOY6IHR.js} +1 -1
  24. package/client/dist/assets/{diagram-FQU43EPY-iyL9muCG.js → diagram-FQU43EPY-DW_-leqw.js} +1 -1
  25. package/client/dist/assets/{diagram-G47NLZAW-DREp2Th6.js → diagram-G47NLZAW-C_hsLD4u.js} +1 -1
  26. package/client/dist/assets/{diagram-NH7WQ7WH-h0X3Is2S.js → diagram-NH7WQ7WH-CbeQuO_f.js} +1 -1
  27. package/client/dist/assets/{diagram-OA4YK3LP-Bj8YZRFJ.js → diagram-OA4YK3LP-DRHY5d_c.js} +1 -1
  28. package/client/dist/assets/{diagram-WEI45ONY-BZOf805d.js → diagram-WEI45ONY-B87OYR_S.js} +1 -1
  29. package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DO5JnXda.js → ebnfDiagram-CCIWWBDH-B8Z8WHF6.js} +1 -1
  30. package/client/dist/assets/{erDiagram-Q63AITRT-DRgcqg1T.js → erDiagram-Q63AITRT-DaD7oa9H.js} +1 -1
  31. package/client/dist/assets/{flowDiagram-23GEKE2U-C3J9QmrW.js → flowDiagram-23GEKE2U-GrMVpsea.js} +1 -1
  32. package/client/dist/assets/{ganttDiagram-NO4QXBWP-BIEl3Tkm.js → ganttDiagram-NO4QXBWP-K3X0DYBa.js} +1 -1
  33. package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-BNF0tFWC.js → gitGraphDiagram-IHSO6WYX-B2SEx0xa.js} +1 -1
  34. package/client/dist/assets/index-CIpLt0ie.js +863 -0
  35. package/client/dist/assets/index-DGtnTeFd.css +1 -0
  36. package/client/dist/assets/{infoDiagram-FWYZ7A6U-DEyFxiyY.js → infoDiagram-FWYZ7A6U-Fi8fQ95G.js} +1 -1
  37. package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-B_ehlg3I.js → ishikawaDiagram-FXEZZL3T-CrN7QJzt.js} +1 -1
  38. package/client/dist/assets/{journeyDiagram-5HDEW3XC-Dp00FyJS.js → journeyDiagram-5HDEW3XC-XHIsl7rM.js} +1 -1
  39. package/client/dist/assets/{kanban-definition-HUTT4EX6-CTAf16q8.js → kanban-definition-HUTT4EX6-A6HJqHw7.js} +1 -1
  40. package/client/dist/assets/{linear-9vNUgmYd.js → linear-D1vF9IQB.js} +1 -1
  41. package/client/dist/assets/{mermaid.core-A6tjaEVD.js → mermaid.core-D6w9zlA0.js} +4 -4
  42. package/client/dist/assets/{mindmap-definition-LN4V7U3C-DRW3bmCY.js → mindmap-definition-LN4V7U3C-CxRkUj6Z.js} +1 -1
  43. package/client/dist/assets/{pegDiagram-2B236MQR-DJFCjHp2.js → pegDiagram-2B236MQR-Bs9dp-8a.js} +1 -1
  44. package/client/dist/assets/{pieDiagram-ENE6RG2P-KRd-sGvC.js → pieDiagram-ENE6RG2P-DBWILzB8.js} +1 -1
  45. package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-9TLZE3Hu.js → quadrantDiagram-ABIIQ3AL-DrCVJJx6.js} +1 -1
  46. package/client/dist/assets/{railroadDiagram-RFXS5EU6-y4tLtjXg.js → railroadDiagram-RFXS5EU6-BdPW2dNf.js} +1 -1
  47. package/client/dist/assets/{requirementDiagram-TGXJPOKE-B9EOQDQM.js → requirementDiagram-TGXJPOKE-Bj_g3tC5.js} +1 -1
  48. package/client/dist/assets/{sankeyDiagram-HTMAVEWB-zfwiDzkT.js → sankeyDiagram-HTMAVEWB-BGL9NnsS.js} +1 -1
  49. package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-DW1LWepL.js → sequenceDiagram-DBY2YBRQ-DEirxTZY.js} +1 -1
  50. package/client/dist/assets/{sizeCapture-X5ZJPWSS-BM81Mik0.js → sizeCapture-X5ZJPWSS-BtLrvrea.js} +1 -1
  51. package/client/dist/assets/{stateDiagram-2N3HPSRC-D0EMIw1w.js → stateDiagram-2N3HPSRC-D3GXIouX.js} +1 -1
  52. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-D3lXe_mJ.js +1 -0
  53. package/client/dist/assets/{swimlanes-5IMT3BWC-CKXNCX6M.js → swimlanes-5IMT3BWC-PMRQzNhU.js} +2 -2
  54. package/client/dist/assets/swimlanesDiagram-G3AALYLV-DMLbRFiO.js +8 -0
  55. package/client/dist/assets/{timeline-definition-FHXFAJF6-ByzIfvL5.js → timeline-definition-FHXFAJF6-CnBKJtD_.js} +1 -1
  56. package/client/dist/assets/{vennDiagram-L72KCM5P-Xep38xBH.js → vennDiagram-L72KCM5P-BYmiJYoh.js} +1 -1
  57. package/client/dist/assets/{wardleyDiagram-EHGQE667-DKWDpx6g.js → wardleyDiagram-EHGQE667-DU7vW8q3.js} +1 -1
  58. package/client/dist/assets/{xychartDiagram-FW5EYKEG-BGcwZTnu.js → xychartDiagram-FW5EYKEG-BEtPvBSU.js} +1 -1
  59. package/client/dist/index.html +2 -2
  60. package/lib/preflight.mjs +24 -5
  61. package/lib/probes.mjs +10 -4
  62. package/lib/server.mjs +149 -12
  63. package/lib/util.mjs +5 -1
  64. package/package.json +1 -1
  65. package/scripts/deploy-procs.mjs +105 -20
  66. package/scripts/deploy-swap.mjs +23 -2
  67. package/server/dist/config.d.ts +9 -0
  68. package/server/dist/config.d.ts.map +1 -1
  69. package/server/dist/config.js +1 -0
  70. package/server/dist/config.js.map +1 -1
  71. package/server/dist/core/campaign-events.d.ts.map +1 -1
  72. package/server/dist/core/campaign-events.js +1 -0
  73. package/server/dist/core/campaign-events.js.map +1 -1
  74. package/server/dist/core/campaign-loop-state.d.ts.map +1 -1
  75. package/server/dist/core/campaign-loop-state.js +54 -21
  76. package/server/dist/core/campaign-loop-state.js.map +1 -1
  77. package/server/dist/core/campaign-parse.d.ts +4 -0
  78. package/server/dist/core/campaign-parse.d.ts.map +1 -1
  79. package/server/dist/core/campaign-parse.js +9 -0
  80. package/server/dist/core/campaign-parse.js.map +1 -1
  81. package/server/dist/core/campaign-readiness-schema.d.ts +33 -0
  82. package/server/dist/core/campaign-readiness-schema.d.ts.map +1 -0
  83. package/server/dist/core/campaign-readiness-schema.js +70 -0
  84. package/server/dist/core/campaign-readiness-schema.js.map +1 -0
  85. package/server/dist/core/campaign-readiness.d.ts +59 -0
  86. package/server/dist/core/campaign-readiness.d.ts.map +1 -0
  87. package/server/dist/core/campaign-readiness.js +163 -0
  88. package/server/dist/core/campaign-readiness.js.map +1 -0
  89. package/server/dist/core/campaign-status-json.d.ts +3 -0
  90. package/server/dist/core/campaign-status-json.d.ts.map +1 -1
  91. package/server/dist/core/campaign-status-json.js +7 -0
  92. package/server/dist/core/campaign-status-json.js.map +1 -1
  93. package/server/dist/core/campaign-store.d.ts.map +1 -1
  94. package/server/dist/core/campaign-store.js +4 -1
  95. package/server/dist/core/campaign-store.js.map +1 -1
  96. package/server/dist/core/campaign-types.d.ts +8 -0
  97. package/server/dist/core/campaign-types.d.ts.map +1 -1
  98. package/server/dist/core/campaign-worktree-root.d.ts +19 -0
  99. package/server/dist/core/campaign-worktree-root.d.ts.map +1 -0
  100. package/server/dist/core/campaign-worktree-root.js +76 -0
  101. package/server/dist/core/campaign-worktree-root.js.map +1 -0
  102. package/server/dist/core/claim-record-lock.d.ts +30 -0
  103. package/server/dist/core/claim-record-lock.d.ts.map +1 -0
  104. package/server/dist/core/claim-record-lock.js +90 -0
  105. package/server/dist/core/claim-record-lock.js.map +1 -0
  106. package/server/dist/core/cli-child-spawn.d.ts +28 -0
  107. package/server/dist/core/cli-child-spawn.d.ts.map +1 -0
  108. package/server/dist/core/cli-child-spawn.js +146 -0
  109. package/server/dist/core/cli-child-spawn.js.map +1 -0
  110. package/server/dist/core/codex-models-probe.d.ts +46 -0
  111. package/server/dist/core/codex-models-probe.d.ts.map +1 -0
  112. package/server/dist/core/codex-models-probe.js +103 -0
  113. package/server/dist/core/codex-models-probe.js.map +1 -0
  114. package/server/dist/core/codex-oracle-runner.d.ts +68 -0
  115. package/server/dist/core/codex-oracle-runner.d.ts.map +1 -0
  116. package/server/dist/core/codex-oracle-runner.js +124 -0
  117. package/server/dist/core/codex-oracle-runner.js.map +1 -0
  118. package/server/dist/core/codex-status-report.d.ts +6 -0
  119. package/server/dist/core/codex-status-report.d.ts.map +1 -0
  120. package/server/dist/core/codex-status-report.js +40 -0
  121. package/server/dist/core/codex-status-report.js.map +1 -0
  122. package/server/dist/core/codex-task-watcher-types.d.ts +69 -0
  123. package/server/dist/core/codex-task-watcher-types.d.ts.map +1 -0
  124. package/server/dist/core/codex-task-watcher-types.js +12 -0
  125. package/server/dist/core/codex-task-watcher-types.js.map +1 -0
  126. package/server/dist/core/codex-task-watcher.d.ts +30 -0
  127. package/server/dist/core/codex-task-watcher.d.ts.map +1 -0
  128. package/server/dist/core/codex-task-watcher.js +252 -0
  129. package/server/dist/core/codex-task-watcher.js.map +1 -0
  130. package/server/dist/core/codex-terminal-signal-detect.d.ts +7 -0
  131. package/server/dist/core/codex-terminal-signal-detect.d.ts.map +1 -0
  132. package/server/dist/core/codex-terminal-signal-detect.js +113 -0
  133. package/server/dist/core/codex-terminal-signal-detect.js.map +1 -0
  134. package/server/dist/core/codex-thread-discovery.d.ts +21 -0
  135. package/server/dist/core/codex-thread-discovery.d.ts.map +1 -0
  136. package/server/dist/core/codex-thread-discovery.js +169 -0
  137. package/server/dist/core/codex-thread-discovery.js.map +1 -0
  138. package/server/dist/core/codextender-auth-file-sweep.d.ts +41 -0
  139. package/server/dist/core/codextender-auth-file-sweep.d.ts.map +1 -0
  140. package/server/dist/core/codextender-auth-file-sweep.js +97 -0
  141. package/server/dist/core/codextender-auth-file-sweep.js.map +1 -0
  142. package/server/dist/core/codextender-proxy-probe.d.ts +80 -0
  143. package/server/dist/core/codextender-proxy-probe.d.ts.map +1 -0
  144. package/server/dist/core/codextender-proxy-probe.js +179 -0
  145. package/server/dist/core/codextender-proxy-probe.js.map +1 -0
  146. package/server/dist/core/contract-version.d.ts +16 -1
  147. package/server/dist/core/contract-version.d.ts.map +1 -1
  148. package/server/dist/core/contract-version.js +16 -1
  149. package/server/dist/core/contract-version.js.map +1 -1
  150. package/server/dist/core/launcher-codex.d.ts +61 -0
  151. package/server/dist/core/launcher-codex.d.ts.map +1 -0
  152. package/server/dist/core/launcher-codex.js +187 -0
  153. package/server/dist/core/launcher-codex.js.map +1 -0
  154. package/server/dist/core/launcher-codextender-env.d.ts +44 -0
  155. package/server/dist/core/launcher-codextender-env.d.ts.map +1 -0
  156. package/server/dist/core/launcher-codextender-env.js +212 -0
  157. package/server/dist/core/launcher-codextender-env.js.map +1 -0
  158. package/server/dist/core/launcher-codextender.d.ts +72 -0
  159. package/server/dist/core/launcher-codextender.d.ts.map +1 -0
  160. package/server/dist/core/launcher-codextender.js +98 -0
  161. package/server/dist/core/launcher-codextender.js.map +1 -0
  162. package/server/dist/core/launcher-codextender.smoke-helpers.d.ts +25 -0
  163. package/server/dist/core/launcher-codextender.smoke-helpers.d.ts.map +1 -0
  164. package/server/dist/core/launcher-codextender.smoke-helpers.js +211 -0
  165. package/server/dist/core/launcher-codextender.smoke-helpers.js.map +1 -0
  166. package/server/dist/core/launcher-permission-flags.d.ts +17 -0
  167. package/server/dist/core/launcher-permission-flags.d.ts.map +1 -0
  168. package/server/dist/core/launcher-permission-flags.js +27 -0
  169. package/server/dist/core/launcher-permission-flags.js.map +1 -0
  170. package/server/dist/core/launcher.d.ts +18 -0
  171. package/server/dist/core/launcher.d.ts.map +1 -1
  172. package/server/dist/core/launcher.js +6 -0
  173. package/server/dist/core/launcher.js.map +1 -1
  174. package/server/dist/core/leadwright-preflight-transport.d.ts +27 -0
  175. package/server/dist/core/leadwright-preflight-transport.d.ts.map +1 -0
  176. package/server/dist/core/leadwright-preflight-transport.js +124 -0
  177. package/server/dist/core/leadwright-preflight-transport.js.map +1 -0
  178. package/server/dist/core/mission-context/artifacts-tests-ac.d.ts +6 -0
  179. package/server/dist/core/mission-context/artifacts-tests-ac.d.ts.map +1 -0
  180. package/server/dist/core/mission-context/artifacts-tests-ac.js +31 -0
  181. package/server/dist/core/mission-context/artifacts-tests-ac.js.map +1 -0
  182. package/server/dist/core/mission-context/artifacts-tests.d.ts.map +1 -1
  183. package/server/dist/core/mission-context/artifacts-tests.js +20 -0
  184. package/server/dist/core/mission-context/artifacts-tests.js.map +1 -1
  185. package/server/dist/core/mission-context/resolver-io.d.ts +10 -0
  186. package/server/dist/core/mission-context/resolver-io.d.ts.map +1 -1
  187. package/server/dist/core/mission-context/resolver-parts.d.ts +8 -7
  188. package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -1
  189. package/server/dist/core/mission-context/resolver-parts.js +22 -14
  190. package/server/dist/core/mission-context/resolver-parts.js.map +1 -1
  191. package/server/dist/core/mission-context/resolver.d.ts.map +1 -1
  192. package/server/dist/core/mission-context/resolver.js +1 -1
  193. package/server/dist/core/mission-context/resolver.js.map +1 -1
  194. package/server/dist/core/mission-context/run-id-recovery.d.ts +18 -2
  195. package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -1
  196. package/server/dist/core/mission-context/run-id-recovery.js +38 -18
  197. package/server/dist/core/mission-context/run-id-recovery.js.map +1 -1
  198. package/server/dist/core/mission-context/traceability.d.ts.map +1 -1
  199. package/server/dist/core/mission-context/traceability.js +15 -1
  200. package/server/dist/core/mission-context/traceability.js.map +1 -1
  201. package/server/dist/core/mission-context/types-slice2.d.ts +44 -0
  202. package/server/dist/core/mission-context/types-slice2.d.ts.map +1 -1
  203. package/server/dist/core/model-tier-config-reader.d.ts +14 -1
  204. package/server/dist/core/model-tier-config-reader.d.ts.map +1 -1
  205. package/server/dist/core/model-tier-config-reader.js +34 -2
  206. package/server/dist/core/model-tier-config-reader.js.map +1 -1
  207. package/server/dist/core/powershell-probe.smoke-helpers.d.ts +12 -0
  208. package/server/dist/core/powershell-probe.smoke-helpers.d.ts.map +1 -0
  209. package/server/dist/core/powershell-probe.smoke-helpers.js +80 -0
  210. package/server/dist/core/powershell-probe.smoke-helpers.js.map +1 -0
  211. package/server/dist/core/readiness-install-hints.d.ts +1 -1
  212. package/server/dist/core/readiness-install-hints.d.ts.map +1 -1
  213. package/server/dist/core/readiness-install-hints.js +5 -0
  214. package/server/dist/core/readiness-install-hints.js.map +1 -1
  215. package/server/dist/core/readiness-probe-run.d.ts +61 -0
  216. package/server/dist/core/readiness-probe-run.d.ts.map +1 -1
  217. package/server/dist/core/readiness-probe-run.js +93 -15
  218. package/server/dist/core/readiness-probe-run.js.map +1 -1
  219. package/server/dist/core/readiness-probe.d.ts +1 -1
  220. package/server/dist/core/readiness-probe.d.ts.map +1 -1
  221. package/server/dist/core/readiness-probe.js +36 -8
  222. package/server/dist/core/readiness-probe.js.map +1 -1
  223. package/server/dist/core/sdk-sessions-merge.d.ts +19 -0
  224. package/server/dist/core/sdk-sessions-merge.d.ts.map +1 -1
  225. package/server/dist/core/sdk-sessions-merge.js +19 -5
  226. package/server/dist/core/sdk-sessions-merge.js.map +1 -1
  227. package/server/dist/core/sdk-sessions-refresh.d.ts +50 -0
  228. package/server/dist/core/sdk-sessions-refresh.d.ts.map +1 -0
  229. package/server/dist/core/sdk-sessions-refresh.js +69 -0
  230. package/server/dist/core/sdk-sessions-refresh.js.map +1 -0
  231. package/server/dist/core/sdk-sessions-store.d.ts +48 -0
  232. package/server/dist/core/sdk-sessions-store.d.ts.map +1 -1
  233. package/server/dist/core/sdk-sessions-store.js +8 -9
  234. package/server/dist/core/sdk-sessions-store.js.map +1 -1
  235. package/server/dist/core/sdk-sessions-validate.d.ts.map +1 -1
  236. package/server/dist/core/sdk-sessions-validate.js +11 -0
  237. package/server/dist/core/sdk-sessions-validate.js.map +1 -1
  238. package/server/dist/core/settings-reader.d.ts +18 -0
  239. package/server/dist/core/settings-reader.d.ts.map +1 -0
  240. package/server/dist/core/settings-reader.js +40 -0
  241. package/server/dist/core/settings-reader.js.map +1 -0
  242. package/server/dist/core/shell-quote.d.ts +29 -0
  243. package/server/dist/core/shell-quote.d.ts.map +1 -1
  244. package/server/dist/core/shell-quote.js +34 -0
  245. package/server/dist/core/shell-quote.js.map +1 -1
  246. package/server/dist/core/shipwright-plugin-version-reader.d.ts +15 -0
  247. package/server/dist/core/shipwright-plugin-version-reader.d.ts.map +1 -0
  248. package/server/dist/core/shipwright-plugin-version-reader.js +49 -0
  249. package/server/dist/core/shipwright-plugin-version-reader.js.map +1 -0
  250. package/server/dist/core/task-editability.d.ts +1 -1
  251. package/server/dist/core/task-editability.d.ts.map +1 -1
  252. package/server/dist/core/task-editability.js +1 -0
  253. package/server/dist/core/task-editability.js.map +1 -1
  254. package/server/dist/core/triage-cli-runner.d.ts.map +1 -1
  255. package/server/dist/core/triage-cli-runner.js +6 -21
  256. package/server/dist/core/triage-cli-runner.js.map +1 -1
  257. package/server/dist/core/triage-compose.d.ts.map +1 -1
  258. package/server/dist/core/triage-compose.js +34 -3
  259. package/server/dist/core/triage-compose.js.map +1 -1
  260. package/server/dist/core/triage-store.d.ts +2 -1
  261. package/server/dist/core/triage-store.d.ts.map +1 -1
  262. package/server/dist/core/triage-store.js +1 -1
  263. package/server/dist/core/triage-store.js.map +1 -1
  264. package/server/dist/external/create-external-routes-args.d.ts +122 -0
  265. package/server/dist/external/create-external-routes-args.d.ts.map +1 -0
  266. package/server/dist/external/create-external-routes-args.js +2 -0
  267. package/server/dist/external/create-external-routes-args.js.map +1 -0
  268. package/server/dist/external/inbox/_codex.d.ts +14 -0
  269. package/server/dist/external/inbox/_codex.d.ts.map +1 -0
  270. package/server/dist/external/inbox/_codex.js +88 -0
  271. package/server/dist/external/inbox/_codex.js.map +1 -0
  272. package/server/dist/external/inbox/_derive.d.ts +2 -25
  273. package/server/dist/external/inbox/_derive.d.ts.map +1 -1
  274. package/server/dist/external/inbox/_derive.js +11 -0
  275. package/server/dist/external/inbox/_derive.js.map +1 -1
  276. package/server/dist/external/inbox/_lead.d.ts +23 -0
  277. package/server/dist/external/inbox/_lead.d.ts.map +1 -0
  278. package/server/dist/external/inbox/_lead.js +83 -0
  279. package/server/dist/external/inbox/_lead.js.map +1 -0
  280. package/server/dist/external/inbox/_types.d.ts +55 -0
  281. package/server/dist/external/inbox/_types.d.ts.map +1 -0
  282. package/server/dist/external/inbox/_types.js +13 -0
  283. package/server/dist/external/inbox/_types.js.map +1 -0
  284. package/server/dist/external/inbox/routes.d.ts +7 -0
  285. package/server/dist/external/inbox/routes.d.ts.map +1 -1
  286. package/server/dist/external/inbox/routes.js +43 -2
  287. package/server/dist/external/inbox/routes.js.map +1 -1
  288. package/server/dist/external/launch/_helpers.d.ts +4 -0
  289. package/server/dist/external/launch/_helpers.d.ts.map +1 -1
  290. package/server/dist/external/launch/_helpers.js.map +1 -1
  291. package/server/dist/external/launch/action-substitution-branch.d.ts +12 -0
  292. package/server/dist/external/launch/action-substitution-branch.d.ts.map +1 -1
  293. package/server/dist/external/launch/action-substitution-branch.js +35 -1
  294. package/server/dist/external/launch/action-substitution-branch.js.map +1 -1
  295. package/server/dist/external/launch/branch-dispatch.d.ts +15 -0
  296. package/server/dist/external/launch/branch-dispatch.d.ts.map +1 -0
  297. package/server/dist/external/launch/branch-dispatch.js +73 -0
  298. package/server/dist/external/launch/branch-dispatch.js.map +1 -0
  299. package/server/dist/external/launch/campaign-step-branch.d.ts +7 -1
  300. package/server/dist/external/launch/campaign-step-branch.d.ts.map +1 -1
  301. package/server/dist/external/launch/campaign-step-branch.js +70 -2
  302. package/server/dist/external/launch/campaign-step-branch.js.map +1 -1
  303. package/server/dist/external/launch/claim-executor-permissions.d.ts +31 -0
  304. package/server/dist/external/launch/claim-executor-permissions.d.ts.map +1 -0
  305. package/server/dist/external/launch/claim-executor-permissions.js +107 -0
  306. package/server/dist/external/launch/claim-executor-permissions.js.map +1 -0
  307. package/server/dist/external/launch/claim-executor-template-arming.d.ts +42 -0
  308. package/server/dist/external/launch/claim-executor-template-arming.d.ts.map +1 -0
  309. package/server/dist/external/launch/claim-executor-template-arming.js +121 -0
  310. package/server/dist/external/launch/claim-executor-template-arming.js.map +1 -0
  311. package/server/dist/external/launch/claim-holder-gate.d.ts +51 -0
  312. package/server/dist/external/launch/claim-holder-gate.d.ts.map +1 -0
  313. package/server/dist/external/launch/claim-holder-gate.js +95 -0
  314. package/server/dist/external/launch/claim-holder-gate.js.map +1 -0
  315. package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts +3 -0
  316. package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts.map +1 -0
  317. package/server/dist/external/launch/claim-permission-perimeter-assert.js +24 -0
  318. package/server/dist/external/launch/claim-permission-perimeter-assert.js.map +1 -0
  319. package/server/dist/external/launch/legacy-fallback-branch.d.ts +14 -0
  320. package/server/dist/external/launch/legacy-fallback-branch.d.ts.map +1 -1
  321. package/server/dist/external/launch/legacy-fallback-branch.js +3 -1
  322. package/server/dist/external/launch/legacy-fallback-branch.js.map +1 -1
  323. package/server/dist/external/launch/master-run-branch.js +2 -2
  324. package/server/dist/external/launch/master-run-branch.js.map +1 -1
  325. package/server/dist/external/launch/mixed-intents-guard.d.ts +10 -0
  326. package/server/dist/external/launch/mixed-intents-guard.d.ts.map +1 -0
  327. package/server/dist/external/launch/mixed-intents-guard.js +49 -0
  328. package/server/dist/external/launch/mixed-intents-guard.js.map +1 -0
  329. package/server/dist/external/launch/parse-body.d.ts +29 -0
  330. package/server/dist/external/launch/parse-body.d.ts.map +1 -1
  331. package/server/dist/external/launch/parse-body.js +66 -0
  332. package/server/dist/external/launch/parse-body.js.map +1 -1
  333. package/server/dist/external/launch/routes.d.ts +3 -0
  334. package/server/dist/external/launch/routes.d.ts.map +1 -1
  335. package/server/dist/external/launch/routes.js +99 -128
  336. package/server/dist/external/launch/routes.js.map +1 -1
  337. package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts +20 -0
  338. package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts.map +1 -0
  339. package/server/dist/external/launch/runtime-chokepoint-codextender.js +51 -0
  340. package/server/dist/external/launch/runtime-chokepoint-codextender.js.map +1 -0
  341. package/server/dist/external/launch/runtime-chokepoint-errors.d.ts +33 -0
  342. package/server/dist/external/launch/runtime-chokepoint-errors.d.ts.map +1 -0
  343. package/server/dist/external/launch/runtime-chokepoint-errors.js +63 -0
  344. package/server/dist/external/launch/runtime-chokepoint-errors.js.map +1 -0
  345. package/server/dist/external/launch/runtime-chokepoint.d.ts +120 -0
  346. package/server/dist/external/launch/runtime-chokepoint.d.ts.map +1 -0
  347. package/server/dist/external/launch/runtime-chokepoint.js +201 -0
  348. package/server/dist/external/launch/runtime-chokepoint.js.map +1 -0
  349. package/server/dist/external/mission-context/routes.d.ts +33 -27
  350. package/server/dist/external/mission-context/routes.d.ts.map +1 -1
  351. package/server/dist/external/mission-context/routes.js +30 -27
  352. package/server/dist/external/mission-context/routes.js.map +1 -1
  353. package/server/dist/external/mission-context/test-harness.d.ts +6 -0
  354. package/server/dist/external/mission-context/test-harness.d.ts.map +1 -1
  355. package/server/dist/external/mission-context/test-harness.js +6 -1
  356. package/server/dist/external/mission-context/test-harness.js.map +1 -1
  357. package/server/dist/external/mission-context/wire.d.ts.map +1 -1
  358. package/server/dist/external/mission-context/wire.js +24 -2
  359. package/server/dist/external/mission-context/wire.js.map +1 -1
  360. package/server/dist/external/org/audit-log.d.ts +19 -0
  361. package/server/dist/external/org/audit-log.d.ts.map +1 -1
  362. package/server/dist/external/org/audit-log.js +33 -18
  363. package/server/dist/external/org/audit-log.js.map +1 -1
  364. package/server/dist/external/org/beat-effect-audit-read.d.ts +15 -0
  365. package/server/dist/external/org/beat-effect-audit-read.d.ts.map +1 -0
  366. package/server/dist/external/org/beat-effect-audit-read.js +73 -0
  367. package/server/dist/external/org/beat-effect-audit-read.js.map +1 -0
  368. package/server/dist/external/org/beat-register-health.d.ts +57 -0
  369. package/server/dist/external/org/beat-register-health.d.ts.map +1 -0
  370. package/server/dist/external/org/beat-register-health.js +125 -0
  371. package/server/dist/external/org/beat-register-health.js.map +1 -0
  372. package/server/dist/external/org/beat-register-release-core.d.ts.map +1 -1
  373. package/server/dist/external/org/beat-register-release-core.js +4 -1
  374. package/server/dist/external/org/beat-register-release-core.js.map +1 -1
  375. package/server/dist/external/org/beat-register-release-request.d.ts +20 -0
  376. package/server/dist/external/org/beat-register-release-request.d.ts.map +1 -0
  377. package/server/dist/external/org/beat-register-release-request.js +92 -0
  378. package/server/dist/external/org/beat-register-release-request.js.map +1 -0
  379. package/server/dist/external/org/beat-register-release.d.ts +3 -1
  380. package/server/dist/external/org/beat-register-release.d.ts.map +1 -1
  381. package/server/dist/external/org/beat-register-release.js +15 -57
  382. package/server/dist/external/org/beat-register-release.js.map +1 -1
  383. package/server/dist/external/org/beat-register.d.ts +18 -20
  384. package/server/dist/external/org/beat-register.d.ts.map +1 -1
  385. package/server/dist/external/org/beat-register.js +30 -56
  386. package/server/dist/external/org/beat-register.js.map +1 -1
  387. package/server/dist/external/org/beat-steps-read.d.ts +17 -0
  388. package/server/dist/external/org/beat-steps-read.d.ts.map +1 -0
  389. package/server/dist/external/org/beat-steps-read.js +89 -0
  390. package/server/dist/external/org/beat-steps-read.js.map +1 -0
  391. package/server/dist/external/org/charter-authority-read.d.ts +39 -0
  392. package/server/dist/external/org/charter-authority-read.d.ts.map +1 -0
  393. package/server/dist/external/org/charter-authority-read.js +142 -0
  394. package/server/dist/external/org/charter-authority-read.js.map +1 -0
  395. package/server/dist/external/org/commit-validate.d.ts +18 -0
  396. package/server/dist/external/org/commit-validate.d.ts.map +1 -0
  397. package/server/dist/external/org/commit-validate.js +59 -0
  398. package/server/dist/external/org/commit-validate.js.map +1 -0
  399. package/server/dist/external/org/commit-writes.d.ts +68 -0
  400. package/server/dist/external/org/commit-writes.d.ts.map +1 -0
  401. package/server/dist/external/org/commit-writes.js +110 -0
  402. package/server/dist/external/org/commit-writes.js.map +1 -0
  403. package/server/dist/external/org/commit.d.ts +73 -0
  404. package/server/dist/external/org/commit.d.ts.map +1 -0
  405. package/server/dist/external/org/commit.js +181 -0
  406. package/server/dist/external/org/commit.js.map +1 -0
  407. package/server/dist/external/org/commit.test-fixtures.d.ts +38 -0
  408. package/server/dist/external/org/commit.test-fixtures.d.ts.map +1 -0
  409. package/server/dist/external/org/commit.test-fixtures.js +67 -0
  410. package/server/dist/external/org/commit.test-fixtures.js.map +1 -0
  411. package/server/dist/external/org/countersign-core.d.ts +19 -0
  412. package/server/dist/external/org/countersign-core.d.ts.map +1 -0
  413. package/server/dist/external/org/countersign-core.js +122 -0
  414. package/server/dist/external/org/countersign-core.js.map +1 -0
  415. package/server/dist/external/org/countersign-request.d.ts +14 -0
  416. package/server/dist/external/org/countersign-request.d.ts.map +1 -0
  417. package/server/dist/external/org/countersign-request.js +78 -0
  418. package/server/dist/external/org/countersign-request.js.map +1 -0
  419. package/server/dist/external/org/countersign.d.ts +6 -5
  420. package/server/dist/external/org/countersign.d.ts.map +1 -1
  421. package/server/dist/external/org/countersign.js +12 -141
  422. package/server/dist/external/org/countersign.js.map +1 -1
  423. package/server/dist/external/org/daemon-config-read.d.ts +31 -0
  424. package/server/dist/external/org/daemon-config-read.d.ts.map +1 -0
  425. package/server/dist/external/org/daemon-config-read.js +50 -0
  426. package/server/dist/external/org/daemon-config-read.js.map +1 -0
  427. package/server/dist/external/org/decisions-lock.d.ts +6 -4
  428. package/server/dist/external/org/decisions-lock.d.ts.map +1 -1
  429. package/server/dist/external/org/decisions-lock.js +9 -8
  430. package/server/dist/external/org/decisions-lock.js.map +1 -1
  431. package/server/dist/external/org/domains.d.ts +35 -0
  432. package/server/dist/external/org/domains.d.ts.map +1 -0
  433. package/server/dist/external/org/domains.js +29 -0
  434. package/server/dist/external/org/domains.js.map +1 -0
  435. package/server/dist/external/org/existing-charters-read.d.ts +5 -0
  436. package/server/dist/external/org/existing-charters-read.d.ts.map +1 -0
  437. package/server/dist/external/org/existing-charters-read.js +31 -0
  438. package/server/dist/external/org/existing-charters-read.js.map +1 -0
  439. package/server/dist/external/org/lead-question-threads.d.ts +46 -0
  440. package/server/dist/external/org/lead-question-threads.d.ts.map +1 -0
  441. package/server/dist/external/org/lead-question-threads.js +132 -0
  442. package/server/dist/external/org/lead-question-threads.js.map +1 -0
  443. package/server/dist/external/org/leadwright-proposal-merge.d.ts +54 -0
  444. package/server/dist/external/org/leadwright-proposal-merge.d.ts.map +1 -0
  445. package/server/dist/external/org/leadwright-proposal-merge.js +47 -0
  446. package/server/dist/external/org/leadwright-proposal-merge.js.map +1 -0
  447. package/server/dist/external/org/mount.d.ts +11 -0
  448. package/server/dist/external/org/mount.d.ts.map +1 -1
  449. package/server/dist/external/org/mount.js +7 -1
  450. package/server/dist/external/org/mount.js.map +1 -1
  451. package/server/dist/external/org/org-chart-full-read.d.ts +19 -0
  452. package/server/dist/external/org/org-chart-full-read.d.ts.map +1 -0
  453. package/server/dist/external/org/org-chart-full-read.js +58 -0
  454. package/server/dist/external/org/org-chart-full-read.js.map +1 -0
  455. package/server/dist/external/org/org-file-lock.d.ts +41 -0
  456. package/server/dist/external/org/org-file-lock.d.ts.map +1 -0
  457. package/server/dist/external/org/org-file-lock.js +90 -0
  458. package/server/dist/external/org/org-file-lock.js.map +1 -0
  459. package/server/dist/external/org/routes.d.ts +10 -0
  460. package/server/dist/external/org/routes.d.ts.map +1 -1
  461. package/server/dist/external/org/routes.js +22 -1
  462. package/server/dist/external/org/routes.js.map +1 -1
  463. package/server/dist/external/org/usage.d.ts.map +1 -1
  464. package/server/dist/external/org/usage.js +20 -2
  465. package/server/dist/external/org/usage.js.map +1 -1
  466. package/server/dist/external/org/verdict.d.ts +57 -0
  467. package/server/dist/external/org/verdict.d.ts.map +1 -0
  468. package/server/dist/external/org/verdict.js +74 -0
  469. package/server/dist/external/org/verdict.js.map +1 -0
  470. package/server/dist/external/routes.d.ts +3 -101
  471. package/server/dist/external/routes.d.ts.map +1 -1
  472. package/server/dist/external/routes.js +12 -3
  473. package/server/dist/external/routes.js.map +1 -1
  474. package/server/dist/external/tasks/create.d.ts.map +1 -1
  475. package/server/dist/external/tasks/create.js +8 -0
  476. package/server/dist/external/tasks/create.js.map +1 -1
  477. package/server/dist/external/tasks/fork.d.ts +29 -0
  478. package/server/dist/external/tasks/fork.d.ts.map +1 -0
  479. package/server/dist/external/tasks/fork.js +166 -0
  480. package/server/dist/external/tasks/fork.js.map +1 -0
  481. package/server/dist/external/tasks/lifecycle.d.ts.map +1 -1
  482. package/server/dist/external/tasks/lifecycle.js +10 -57
  483. package/server/dist/external/tasks/lifecycle.js.map +1 -1
  484. package/server/dist/external/tasks/patch.d.ts.map +1 -1
  485. package/server/dist/external/tasks/patch.js +17 -0
  486. package/server/dist/external/tasks/patch.js.map +1 -1
  487. package/server/dist/external/tasks/routes.d.ts +2 -0
  488. package/server/dist/external/tasks/routes.d.ts.map +1 -1
  489. package/server/dist/external/tasks/routes.js +7 -0
  490. package/server/dist/external/tasks/routes.js.map +1 -1
  491. package/server/dist/external/transcript/routes.d.ts.map +1 -1
  492. package/server/dist/external/transcript/routes.js +25 -3
  493. package/server/dist/external/transcript/routes.js.map +1 -1
  494. package/server/dist/external-routes-wiring.d.ts +28 -0
  495. package/server/dist/external-routes-wiring.d.ts.map +1 -0
  496. package/server/dist/external-routes-wiring.js +61 -0
  497. package/server/dist/external-routes-wiring.js.map +1 -0
  498. package/server/dist/index.d.ts.map +1 -1
  499. package/server/dist/index.js +111 -44
  500. package/server/dist/index.js.map +1 -1
  501. package/server/dist/lib/resolveHonoHost.d.ts.map +1 -1
  502. package/server/dist/lib/resolveHonoHost.js +16 -1
  503. package/server/dist/lib/resolveHonoHost.js.map +1 -1
  504. package/server/dist/routes/_triage-api-harness.d.ts +1 -1
  505. package/server/dist/routes/_triage-api-harness.d.ts.map +1 -1
  506. package/server/dist/routes/_triage-api-harness.js.map +1 -1
  507. package/server/dist/routes/campaigns-readiness.d.ts +10 -0
  508. package/server/dist/routes/campaigns-readiness.d.ts.map +1 -0
  509. package/server/dist/routes/campaigns-readiness.js +58 -0
  510. package/server/dist/routes/campaigns-readiness.js.map +1 -0
  511. package/server/dist/routes/campaigns.d.ts.map +1 -1
  512. package/server/dist/routes/campaigns.js +3 -0
  513. package/server/dist/routes/campaigns.js.map +1 -1
  514. package/server/dist/routes/codex-models.d.ts +15 -0
  515. package/server/dist/routes/codex-models.d.ts.map +1 -0
  516. package/server/dist/routes/codex-models.js +77 -0
  517. package/server/dist/routes/codex-models.js.map +1 -0
  518. package/server/dist/routes/codextender-models.d.ts +16 -0
  519. package/server/dist/routes/codextender-models.d.ts.map +1 -0
  520. package/server/dist/routes/codextender-models.js +81 -0
  521. package/server/dist/routes/codextender-models.js.map +1 -0
  522. package/server/dist/routes/diagnostics.d.ts +27 -0
  523. package/server/dist/routes/diagnostics.d.ts.map +1 -1
  524. package/server/dist/routes/diagnostics.js +5 -1
  525. package/server/dist/routes/diagnostics.js.map +1 -1
  526. package/server/dist/routes/org-chart-lead-guard.d.ts +10 -0
  527. package/server/dist/routes/org-chart-lead-guard.d.ts.map +1 -0
  528. package/server/dist/routes/org-chart-lead-guard.js +49 -0
  529. package/server/dist/routes/org-chart-lead-guard.js.map +1 -0
  530. package/server/dist/routes/org-inventory-composite.d.ts +20 -0
  531. package/server/dist/routes/org-inventory-composite.d.ts.map +1 -0
  532. package/server/dist/routes/org-inventory-composite.js +100 -0
  533. package/server/dist/routes/org-inventory-composite.js.map +1 -0
  534. package/server/dist/routes/org-lead-setup-wizard.d.ts +10 -0
  535. package/server/dist/routes/org-lead-setup-wizard.d.ts.map +1 -0
  536. package/server/dist/routes/org-lead-setup-wizard.js +51 -0
  537. package/server/dist/routes/org-lead-setup-wizard.js.map +1 -0
  538. package/server/dist/routes/org-leads-composite.d.ts.map +1 -1
  539. package/server/dist/routes/org-leads-composite.js +35 -9
  540. package/server/dist/routes/org-leads-composite.js.map +1 -1
  541. package/server/dist/routes/org-threads-composite.d.ts +24 -0
  542. package/server/dist/routes/org-threads-composite.d.ts.map +1 -0
  543. package/server/dist/routes/org-threads-composite.js +51 -0
  544. package/server/dist/routes/org-threads-composite.js.map +1 -0
  545. package/server/dist/routes/org-writes.d.ts +14 -0
  546. package/server/dist/routes/org-writes.d.ts.map +1 -0
  547. package/server/dist/routes/org-writes.js +61 -0
  548. package/server/dist/routes/org-writes.js.map +1 -0
  549. package/server/dist/routes/org.d.ts +14 -0
  550. package/server/dist/routes/org.d.ts.map +1 -1
  551. package/server/dist/routes/org.js +63 -47
  552. package/server/dist/routes/org.js.map +1 -1
  553. package/server/dist/routes/settings.d.ts.map +1 -1
  554. package/server/dist/routes/settings.js +23 -2
  555. package/server/dist/routes/settings.js.map +1 -1
  556. package/server/dist/routes/triage.d.ts +17 -0
  557. package/server/dist/routes/triage.d.ts.map +1 -1
  558. package/server/dist/routes/triage.js +29 -0
  559. package/server/dist/routes/triage.js.map +1 -1
  560. package/server/dist/terminal/pty-manager.d.ts +37 -1
  561. package/server/dist/terminal/pty-manager.d.ts.map +1 -1
  562. package/server/dist/terminal/pty-manager.js +33 -3
  563. package/server/dist/terminal/pty-manager.js.map +1 -1
  564. package/server/dist/terminal/pty-write-chunker.d.ts +109 -0
  565. package/server/dist/terminal/pty-write-chunker.d.ts.map +1 -0
  566. package/server/dist/terminal/pty-write-chunker.js +234 -0
  567. package/server/dist/terminal/pty-write-chunker.js.map +1 -0
  568. package/server/dist/terminal/routes.d.ts.map +1 -1
  569. package/server/dist/terminal/routes.js +9 -0
  570. package/server/dist/terminal/routes.js.map +1 -1
  571. package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -1
  572. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -1
  573. package/server/dist/terminal/ws-upgrade-handler.fixtures.js +1 -0
  574. package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -1
  575. package/server/dist/terminal/ws-upgrade-handler.js +14 -5
  576. package/server/dist/terminal/ws-upgrade-handler.js.map +1 -1
  577. package/server/dist/test/event-test-counts-fixtures.d.ts +40 -0
  578. package/server/dist/test/event-test-counts-fixtures.d.ts.map +1 -0
  579. package/server/dist/test/event-test-counts-fixtures.js +56 -0
  580. package/server/dist/test/event-test-counts-fixtures.js.map +1 -0
  581. package/server/dist/types/leadwright-beat-step.d.ts +19 -0
  582. package/server/dist/types/leadwright-beat-step.d.ts.map +1 -0
  583. package/server/dist/types/leadwright-beat-step.js +56 -0
  584. package/server/dist/types/leadwright-beat-step.js.map +1 -0
  585. package/server/dist/types/leadwright-preflight.d.ts +90 -0
  586. package/server/dist/types/leadwright-preflight.d.ts.map +1 -0
  587. package/server/dist/types/leadwright-preflight.js +65 -0
  588. package/server/dist/types/leadwright-preflight.js.map +1 -0
  589. package/server/dist/types/leadwright-schema-drift.d.ts +28 -0
  590. package/server/dist/types/leadwright-schema-drift.d.ts.map +1 -0
  591. package/server/dist/types/leadwright-schema-drift.js +89 -0
  592. package/server/dist/types/leadwright-schema-drift.js.map +1 -0
  593. package/server/dist/types/org-inventory.d.ts +53 -0
  594. package/server/dist/types/org-inventory.d.ts.map +1 -0
  595. package/server/dist/types/org-inventory.js +11 -0
  596. package/server/dist/types/org-inventory.js.map +1 -0
  597. package/server/dist/types/org.d.ts +76 -6
  598. package/server/dist/types/org.d.ts.map +1 -1
  599. package/server/dist/types/run-config-retry.d.ts +29 -0
  600. package/server/dist/types/run-config-retry.d.ts.map +1 -0
  601. package/server/dist/types/run-config-retry.js +47 -0
  602. package/server/dist/types/run-config-retry.js.map +1 -0
  603. package/server/dist/types/run-config-v2.d.ts +29 -41
  604. package/server/dist/types/run-config-v2.d.ts.map +1 -1
  605. package/server/dist/types/run-config-v2.js +16 -50
  606. package/server/dist/types/run-config-v2.js.map +1 -1
  607. package/server/dist/types/settings.d.ts +33 -0
  608. package/server/dist/types/settings.d.ts.map +1 -1
  609. package/server/dist/vendor/leadwright/beat-step.schema.json +83 -0
  610. package/server/dist/vendor/leadwright/claim-record-lock-contract.json +15 -0
  611. package/server/dist/vendor/leadwright/org-chart.schema.json +195 -0
  612. package/server/dist/vendor/leadwright/preflight-input.schema.json +318 -0
  613. package/server/dist/vendor/leadwright/preflight-result.schema.json +56 -0
  614. package/server/package.json +1 -1
  615. package/client/dist/assets/channel-BYPbLjRl.js +0 -1
  616. package/client/dist/assets/classDiagram-OUVF2IWQ-CsFIeTju.js +0 -1
  617. package/client/dist/assets/classDiagram-v2-EOCWNBFH-CsFIeTju.js +0 -1
  618. package/client/dist/assets/index-BnTOrFHb.js +0 -829
  619. package/client/dist/assets/index-CYPc6qxw.css +0 -1
  620. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-B3E4_xxT.js +0 -1
  621. package/client/dist/assets/swimlanesDiagram-G3AALYLV-BegQBqnC.js +0 -8
@@ -0,0 +1,15 @@
1
+ import type { ExternalTask } from "../../core/sdk-sessions-store.js";
2
+ import type { RunConfigReadResult } from "../../core/run-config-reader.js";
3
+ import type { ExternalRouteProjectView } from "../_shared/helpers.js";
4
+ import { type LaunchBranchResult, type ParsedLaunchBody } from "./_helpers.js";
5
+ export interface BranchDispatchInput {
6
+ task: ExternalTask;
7
+ parsed: ParsedLaunchBody;
8
+ getProjectById?: (id: string) => ExternalRouteProjectView | undefined;
9
+ runConfigReader: (projectPath: string) => Promise<RunConfigReadResult>;
10
+ jsonlExistsOnDisk?: (sessionUuid: string) => Promise<boolean>;
11
+ listTasks: () => ExternalTask[];
12
+ claimAuthorized: boolean;
13
+ }
14
+ export declare function dispatchLaunchBranches(input: BranchDispatchInput): Promise<LaunchBranchResult>;
15
+ //# sourceMappingURL=branch-dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-dispatch.d.ts","sourceRoot":"","sources":["../../../src/external/launch/branch-dispatch.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAOL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,wBAAwB,GAAG,SAAS,CAAC;IACtE,eAAe,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvE,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC;IAChC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CA8E7B"}
@@ -0,0 +1,73 @@
1
+ /*
2
+ * external/launch/branch-dispatch.ts — the precedence-ordered branch chain of
3
+ * POST /api/external/tasks/:id/launch, extracted from routes.ts so the route
4
+ * shell stays ≤ 300 LOC. Pure dispatch: no HTTP, no persistence.
5
+ *
6
+ * Precedence: phaseTaskRef → campaign → campaign-step → master-run →
7
+ * action-substitution → legacy fallback (always populates).
8
+ */
9
+ import { applyPhaseTaskBranch, applyCampaignBranch, applyCampaignStepBranch, applyMasterRunBranch, applyActionSubstitutionBranch, applyLegacyFallbackBranch, } from "./_helpers.js";
10
+ export async function dispatchLaunchBranches(input) {
11
+ const { task, parsed, getProjectById, runConfigReader, jsonlExistsOnDisk, listTasks, claimAuthorized, } = input;
12
+ // iterate-2026-05-18-fix-resume-description — a Resume click on a task
13
+ // whose Claude conversation was never established (no <uuid>.jsonl ever
14
+ // observed on disk → there is nothing to resume) is semantically a FRESH
15
+ // start. Route it through the substitution branch so the brief + slash
16
+ // command are injected exactly like a direct Launch. A genuine resume
17
+ // (JSONL on disk) stays on the description-free `--resume` shape.
18
+ const jsonlObserved = Boolean(task.firstJsonlObservedAt);
19
+ const effectivelyFreshStart = !parsed.resume || (!jsonlObserved && !parsed.dryRun);
20
+ // Branch 1 — phaseTaskRef (load-bearing security path).
21
+ let result = await applyPhaseTaskBranch({
22
+ task,
23
+ parsed,
24
+ getProjectById,
25
+ runConfigReader,
26
+ jsonlExistsOnDisk,
27
+ });
28
+ // Branch 2 — campaign autonomous launch (FR-01.34). Command built
29
+ // server-side from a validated slug; null when no campaignSlug / a resume.
30
+ result ??= applyCampaignBranch({
31
+ task,
32
+ parsed,
33
+ effectivelyFreshStart,
34
+ getProjectById,
35
+ });
36
+ // Branch 2.5 — single-sub-iterate launch (FR-01.36).
37
+ result ??= await applyCampaignStepBranch({
38
+ task,
39
+ parsed,
40
+ effectivelyFreshStart,
41
+ getProjectById,
42
+ });
43
+ // Branch 2.6 — single-session master launch (campaign
44
+ // webui-pipeline-convergence W2), gated on a readable single_session
45
+ // run_config; null when no masterRun / a resume.
46
+ result ??= await applyMasterRunBranch({
47
+ task,
48
+ parsed,
49
+ effectivelyFreshStart,
50
+ getProjectById,
51
+ runConfigReader,
52
+ listTasks,
53
+ jsonlExistsOnDisk,
54
+ });
55
+ // Branch 3 — action substitution.
56
+ result ??= applyActionSubstitutionBranch({
57
+ task,
58
+ parsed,
59
+ effectivelyFreshStart,
60
+ getProjectById,
61
+ claimAuthorized,
62
+ });
63
+ if (result)
64
+ return result;
65
+ // Branch 4 — legacy fallback. Always populates.
66
+ return applyLegacyFallbackBranch({
67
+ task,
68
+ parsed,
69
+ jsonlObserved,
70
+ claimAuthorized,
71
+ });
72
+ }
73
+ //# sourceMappingURL=branch-dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-dispatch.js","sourceRoot":"","sources":["../../../src/external/launch/branch-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,GAG1B,MAAM,eAAe,CAAC;AAYvB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAA0B;IAE1B,MAAM,EACJ,IAAI,EACJ,MAAM,EACN,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,eAAe,GAChB,GAAG,KAAK,CAAC;IAEV,uEAAuE;IACvE,wEAAwE;IACxE,yEAAyE;IACzE,uEAAuE;IACvE,sEAAsE;IACtE,kEAAkE;IAClE,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACzD,MAAM,qBAAqB,GACzB,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEvD,wDAAwD;IACxD,IAAI,MAAM,GAA8B,MAAM,oBAAoB,CAAC;QACjE,IAAI;QACJ,MAAM;QACN,cAAc;QACd,eAAe;QACf,iBAAiB;KAClB,CAAC,CAAC;IAEH,kEAAkE;IAClE,2EAA2E;IAC3E,MAAM,KAAK,mBAAmB,CAAC;QAC7B,IAAI;QACJ,MAAM;QACN,qBAAqB;QACrB,cAAc;KACf,CAAC,CAAC;IAEH,qDAAqD;IACrD,MAAM,KAAK,MAAM,uBAAuB,CAAC;QACvC,IAAI;QACJ,MAAM;QACN,qBAAqB;QACrB,cAAc;KACf,CAAC,CAAC;IAEH,sDAAsD;IACtD,qEAAqE;IACrE,iDAAiD;IACjD,MAAM,KAAK,MAAM,oBAAoB,CAAC;QACpC,IAAI;QACJ,MAAM;QACN,qBAAqB;QACrB,cAAc;QACd,eAAe;QACf,SAAS;QACT,iBAAiB;KAClB,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,KAAK,6BAA6B,CAAC;QACvC,IAAI;QACJ,MAAM;QACN,qBAAqB;QACrB,cAAc;QACd,eAAe;KAChB,CAAC,CAAC;IAEH,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,gDAAgD;IAChD,OAAO,yBAAyB,CAAC;QAC/B,IAAI;QACJ,MAAM;QACN,aAAa;QACb,eAAe;KAChB,CAAC,CAAC;AACL,CAAC"}
@@ -1,12 +1,18 @@
1
+ import { getReadiness } from "../../core/campaign-readiness.js";
1
2
  import { type ExternalTask } from "../../core/sdk-sessions-store.js";
2
3
  import type { ExternalRouteProjectView } from "../_shared/helpers.js";
3
4
  import type { ParsedLaunchBody } from "./parse-body.js";
4
5
  import type { LaunchBranchResult } from "./_helpers.js";
5
6
  export declare function isValidCampaignStepId(id: string): boolean;
7
+ /** Serve a cached verdict up to this old; else wait (bounded) for a fresh one. */
8
+ export declare const STEP_READINESS_MAX_AGE_MS = 15000;
9
+ export declare const STEP_READINESS_MAX_WAIT_MS = 10000;
6
10
  export declare function applyCampaignStepBranch(args: {
7
11
  task: ExternalTask;
8
12
  parsed: ParsedLaunchBody;
9
13
  effectivelyFreshStart: boolean;
10
14
  getProjectById: ((id: string) => ExternalRouteProjectView | undefined) | undefined;
11
- }): LaunchBranchResult | null;
15
+ /** Test seam; production uses the real cached scheduler bridge. */
16
+ getReadinessFn?: typeof getReadiness;
17
+ }): Promise<LaunchBranchResult | null>;
12
18
  //# sourceMappingURL=campaign-step-branch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"campaign-step-branch.d.ts","sourceRoot":"","sources":["../../../src/external/launch/campaign-step-branch.ts"],"names":[],"mappings":"AA8BA,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AASxD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,EACV,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,wBAAwB,GAAG,SAAS,CAAC,GACtD,SAAS,CAAC;CACf,GAAG,kBAAkB,GAAG,IAAI,CAyE5B"}
1
+ {"version":3,"file":"campaign-step-branch.d.ts","sourceRoot":"","sources":["../../../src/external/launch/campaign-step-branch.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AASxD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAChD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,EACV,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,wBAAwB,GAAG,SAAS,CAAC,GACtD,SAAS,CAAC;IACd,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,YAAY,CAAC;CACtC,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA2IrC"}
@@ -26,6 +26,7 @@ import { buildCopyCommands } from "../../core/launcher.js";
26
26
  import { resolveCampaignsDir, isWithin } from "../../core/campaign-paths.js";
27
27
  import { readCampaigns } from "../../core/campaign-store.js";
28
28
  import { readLoopAttachments } from "../../core/campaign-loop-state.js";
29
+ import { getReadiness } from "../../core/campaign-readiness.js";
29
30
  import { isValidCampaignSlug } from "./campaign-branch.js";
30
31
  /**
31
32
  * Campaign step id = a Sub-Iterates table ID cell (e.g. `B0`, `C1`). Same
@@ -36,8 +37,12 @@ const CAMPAIGN_STEP_ID_PATTERN = /^[A-Za-z0-9._-]{1,64}$/;
36
37
  export function isValidCampaignStepId(id) {
37
38
  return CAMPAIGN_STEP_ID_PATTERN.test(id) && !id.includes("..");
38
39
  }
39
- export function applyCampaignStepBranch(args) {
40
+ /** Serve a cached verdict up to this old; else wait (bounded) for a fresh one. */
41
+ export const STEP_READINESS_MAX_AGE_MS = 15_000;
42
+ export const STEP_READINESS_MAX_WAIT_MS = 10_000;
43
+ export async function applyCampaignStepBranch(args) {
40
44
  const { task, parsed, effectivelyFreshStart, getProjectById } = args;
45
+ const readiness = args.getReadinessFn ?? getReadiness;
41
46
  const step = parsed.campaignStep;
42
47
  if (!step)
43
48
  return null; // not a campaign-step launch
@@ -92,6 +97,69 @@ export function applyCampaignStepBranch(args) {
92
97
  if (!found.specPath) {
93
98
  return { error: { error: "campaign_step_spec_missing", detail: step.stepId }, status: 400 };
94
99
  }
100
+ // Scheduler readiness (DAG view, card trg-e542ce03): refuse a hand-launch of
101
+ // a unit the monorepo scheduler reports BLOCKED. Bounded, and fail-OPEN when
102
+ // no verdict can be had (timeout / engine down / unrecognised) — but loudly:
103
+ // the response carries `readinessChecked:false`, never a silent skip. "No
104
+ // loop running" is not a failure: there is nothing to check against.
105
+ let readinessChecked;
106
+ let verdict;
107
+ try {
108
+ verdict = await readiness({ projectRoot: resolved.projectRoot, slug: step.slug }, undefined, { maxAgeMs: STEP_READINESS_MAX_AGE_MS, maxWaitMs: STEP_READINESS_MAX_WAIT_MS });
109
+ }
110
+ catch {
111
+ verdict = "timeout"; // a throwing check is "no verdict" — fail open, flagged
112
+ }
113
+ const freshVerdict = async () => {
114
+ try {
115
+ const v = await readiness({ projectRoot: resolved.projectRoot, slug: step.slug }, undefined, { maxAgeMs: 0, maxWaitMs: STEP_READINESS_MAX_WAIT_MS });
116
+ return v === "timeout" ? undefined : v;
117
+ }
118
+ catch {
119
+ return undefined;
120
+ }
121
+ };
122
+ if (verdict === "timeout" || (verdict.status !== "report" && verdict.status !== "no-loop")) {
123
+ readinessChecked = false;
124
+ }
125
+ else if (verdict.status === "report") {
126
+ const units = verdict.report.units;
127
+ const lower = step.stepId.toLowerCase();
128
+ const unit = units.find((u) => u.id === step.stepId) ?? units.find((u) => u.id.toLowerCase() === lower);
129
+ // Only a real DEPENDENCY gate (a blocker naming another unit) refuses. A
130
+ // campaign-level gate (id:null — unsupported strategy, finalized loop) says
131
+ // the batch scheduler cannot run this campaign, not that this step must not
132
+ // be hand-run: launch, flagged unchecked.
133
+ const dependencyBlocked = unit?.state === "pending" && !unit.ready && unit.blocked_by.some((x) => x.id !== null);
134
+ if (!unit) {
135
+ readinessChecked = false;
136
+ }
137
+ else if (dependencyBlocked) {
138
+ // Never refuse on a cached "waiting": a dependency may have merged in
139
+ // the last few seconds. Recompute once, uncached, before saying no.
140
+ // Refuse ONLY on a fresh report that confirms the dependency blocker. No
141
+ // fresh answer (timeout / down / unit gone) fails open like everywhere else.
142
+ const fresh = await freshVerdict();
143
+ if (fresh?.status === "report") {
144
+ const freshUnit = fresh.report.units.find((u) => u.id === unit.id);
145
+ if (!freshUnit) {
146
+ readinessChecked = false;
147
+ }
148
+ else if (freshUnit.state === "pending" && !freshUnit.ready) {
149
+ if (freshUnit.blocked_by.some((x) => x.id !== null)) {
150
+ return { error: { error: "campaign_step_not_ready", detail: step.stepId, blocked_by: freshUnit.blocked_by }, status: 409 };
151
+ }
152
+ readinessChecked = false; // only a campaign-level gate remains
153
+ }
154
+ }
155
+ else if (fresh?.status !== "no-loop") {
156
+ readinessChecked = false;
157
+ }
158
+ }
159
+ else if (unit.state === "pending" && !unit.ready) {
160
+ readinessChecked = false; // campaign-level gate only
161
+ }
162
+ }
95
163
  const commands = buildCopyCommands({
96
164
  sessionUuid: task.sessionUuid,
97
165
  cwd: task.cwd,
@@ -103,6 +171,6 @@ export function applyCampaignStepBranch(args) {
103
171
  state: "awaiting_external_start",
104
172
  launchedAt: new Date().toISOString(),
105
173
  };
106
- return { commands, taskUpdate };
174
+ return readinessChecked === false ? { commands, taskUpdate, readinessChecked } : { commands, taskUpdate };
107
175
  }
108
176
  //# sourceMappingURL=campaign-step-branch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"campaign-step-branch.js","sourceRoot":"","sources":["../../../src/external/launch/campaign-step-branch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"campaign-step-branch.js","sourceRoot":"","sources":["../../../src/external/launch/campaign-step-branch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Exactly the toolset already granted to this codebase's own autonomous
3
+ * build/iterate/test agents (`shipwright-build:section-builder`,
4
+ * `shipwright-iterate:sub-iterate-runner`, `shipwright-test:test-runner` —
5
+ * see their `.claude/agents` tool lists): Read, Write, Edit, Bash, Glob,
6
+ * Grep. That precedent is the "considered allow-list" the originating card
7
+ * asks for, not a guess — it is the toolset this project already trusts an
8
+ * unattended agent doing iterate-shaped work with, on this same machine.
9
+ * `Task` (nested subagent spawn) and network tools (`WebFetch`,
10
+ * `WebSearch`) are deliberately excluded — none of those three agents
11
+ * carry them either.
12
+ */
13
+ export declare const CLAIM_EXECUTOR_ALLOWED_TOOLS: readonly string[];
14
+ /**
15
+ * Verified live (this module's own header comment): a tool named in
16
+ * `CLAIM_EXECUTOR_ALLOWED_TOOLS` runs with no prompt under this mode, and
17
+ * nothing outside that list is ever offered to prompt for. Matches
18
+ * leadwright's own `spawnLeadBeat` default (`lib/lead-spawn-types.ts`).
19
+ */
20
+ export declare const CLAIM_EXECUTOR_PERMISSION_MODE = "dontAsk";
21
+ export interface ClaimExecutorLaunchOverrides {
22
+ toolsAllowlist: readonly string[];
23
+ permissionMode: string;
24
+ }
25
+ /**
26
+ * The single call site every claim-authorized launch branch reads its
27
+ * perimeter from — one place a future operator changes what a claimed
28
+ * executor may do, per the originating card's requirement (d).
29
+ */
30
+ export declare function claimExecutorLaunchOverrides(): ClaimExecutorLaunchOverrides;
31
+ //# sourceMappingURL=claim-executor-permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-executor-permissions.d.ts","sourceRoot":"","sources":["../../../src/external/launch/claim-executor-permissions.ts"],"names":[],"mappings":"AAqEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAOzD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,YAAY,CAAC;AAExD,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,4BAA4B,CAK3E"}
@@ -0,0 +1,107 @@
1
+ /*
2
+ * external/launch/claim-executor-permissions.ts — FR-04.22 permission
3
+ * perimeter, single source of truth (iterate-2026-09-06-claim-launch-
4
+ * permission-perimeter).
5
+ *
6
+ * WHY THIS EXISTS: leadwright's stage-2 executor (`lib/lead-task-launch.ts`)
7
+ * runs the command this repo hands back via a real shell, detached and
8
+ * unref'd — that process outlives the daemon beat that started it and holds
9
+ * a shell, git, and the machine's credentials. Until this change, that
10
+ * command carried no `--permission-mode` and no tool allow-list: the
11
+ * full-authority form. leadwright's own spec (§8) names a residual risk —
12
+ * "a nested `claude` process with its own config writes out of P2" — that
13
+ * PRESUPPOSES a perimeter is armed and merely bypassable by a nested
14
+ * process. It was not armed at all; this module is that perimeter.
15
+ *
16
+ * THE MECHANISM, EMPIRICALLY VERIFIED against a real `claude` CLI 2.1.263
17
+ * (iterate-2026-09-06, this run — not assumed from --help text alone),
18
+ * exactly like leadwright verified its own beat-spawn mechanism
19
+ * (`lib/lead-spawn.ts`, iterate-2026-08-30-lead-spawn-contract):
20
+ *
21
+ * - `--allowed-tools` alone does NOT restrict anything — leadwright
22
+ * already proved this (5 permission modes probed, Bash executed every
23
+ * time) and this run did not re-litigate it.
24
+ * - `--tools <names>` (a comma-separated allow-list) DOES genuinely
25
+ * restrict the model's function set: a live probe with
26
+ * `--tools "Bash,Read,Edit,Write,Glob,Grep" --permission-mode dontAsk`
27
+ * produced a session whose own `init` event lists exactly
28
+ * `["Bash","Edit","Glob","Grep","Read","Write"]` — WebFetch/Task/
29
+ * WebSearch/NotebookEdit are structurally ABSENT from the model's tool
30
+ * set, not merely unapproved, so there is nothing to prompt for or
31
+ * bypass. A second probe naming ONLY `Read,Edit` (no Bash) produced a
32
+ * session that could not invoke Bash at all ("the Bash tool isn't
33
+ * available in this session" — never attempted, never refused, simply
34
+ * not offered).
35
+ * - Deliberately WITHOUT `--restricted`: unlike leadwright's beat (which
36
+ * never needs a shell), THIS executor's own legitimate job — running a
37
+ * `/shipwright-iterate` — needs git, npm and file writes, i.e. Bash.
38
+ * `--restricted`'s own `--help` text says it additionally ignores
39
+ * user/project/local settings files and unloads every marketplace
40
+ * plugin; a live probe confirmed this (`"plugins":[]` in the init event
41
+ * under `--restricted`, vs. the project's full plugin roster loaded
42
+ * normally under plain `--tools`). Shipwright's own hooks and plugins
43
+ * (CLAUDE.md rule 9: `--plugin-dir` must be re-passed every launch) are
44
+ * load-bearing for an iterate run, so `--restricted` would break the
45
+ * very job this executor exists to do — the card's own point (e).
46
+ * `--tools` alone, verified above, restricts the toolset just as
47
+ * genuinely without that collateral damage.
48
+ * - `--permission-mode dontAsk` (leadwright's own choice, re-verified
49
+ * here): a tool named in `--tools` runs with NO prompt and NO entry in
50
+ * `permission_denials`; nothing outside that list can be prompted for
51
+ * in the first place, since the model never sees it as a function.
52
+ * This resolves the specific worry the originating card names — "a run
53
+ * acquires tools through the interactive dialog and looks compliant
54
+ * anyway" — because there is no dialog to acquire anything through: the
55
+ * detached, `stdio:"ignore"` executor process has no terminal to show
56
+ * one on, and `dontAsk` never tries.
57
+ *
58
+ * WHAT THIS DOES NOT CLOSE (leadwright spec §8, still true): this is not OS
59
+ * sandboxing. `Task` is deliberately excluded from the allow-list below —
60
+ * matching leadwright's own Trap #4 finding that a nested `claude`/subagent
61
+ * process writes past any perimeter the same way a shell would — but `Bash`
62
+ * itself stays allowed (this executor's whole job needs it), and a `claude`
63
+ * binary invoked directly as a shell command is not a tool call this
64
+ * perimeter can see or stop. That is the residual risk leadwright's spec
65
+ * already names; this module makes the REST of the surface (WebFetch,
66
+ * Task-as-a-tool-call, an unbounded permission dialog) genuinely closed
67
+ * instead of merely undocumented.
68
+ */
69
+ /**
70
+ * Exactly the toolset already granted to this codebase's own autonomous
71
+ * build/iterate/test agents (`shipwright-build:section-builder`,
72
+ * `shipwright-iterate:sub-iterate-runner`, `shipwright-test:test-runner` —
73
+ * see their `.claude/agents` tool lists): Read, Write, Edit, Bash, Glob,
74
+ * Grep. That precedent is the "considered allow-list" the originating card
75
+ * asks for, not a guess — it is the toolset this project already trusts an
76
+ * unattended agent doing iterate-shaped work with, on this same machine.
77
+ * `Task` (nested subagent spawn) and network tools (`WebFetch`,
78
+ * `WebSearch`) are deliberately excluded — none of those three agents
79
+ * carry them either.
80
+ */
81
+ export const CLAIM_EXECUTOR_ALLOWED_TOOLS = [
82
+ "Bash",
83
+ "Read",
84
+ "Write",
85
+ "Edit",
86
+ "Glob",
87
+ "Grep",
88
+ ];
89
+ /**
90
+ * Verified live (this module's own header comment): a tool named in
91
+ * `CLAIM_EXECUTOR_ALLOWED_TOOLS` runs with no prompt under this mode, and
92
+ * nothing outside that list is ever offered to prompt for. Matches
93
+ * leadwright's own `spawnLeadBeat` default (`lib/lead-spawn-types.ts`).
94
+ */
95
+ export const CLAIM_EXECUTOR_PERMISSION_MODE = "dontAsk";
96
+ /**
97
+ * The single call site every claim-authorized launch branch reads its
98
+ * perimeter from — one place a future operator changes what a claimed
99
+ * executor may do, per the originating card's requirement (d).
100
+ */
101
+ export function claimExecutorLaunchOverrides() {
102
+ return {
103
+ toolsAllowlist: CLAIM_EXECUTOR_ALLOWED_TOOLS,
104
+ permissionMode: CLAIM_EXECUTOR_PERMISSION_MODE,
105
+ };
106
+ }
107
+ //# sourceMappingURL=claim-executor-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-executor-permissions.js","sourceRoot":"","sources":["../../../src/external/launch/claim-executor-permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAsB;IAC7D,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,SAAS,CAAC;AAOxD;;;;GAIG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,cAAc,EAAE,4BAA4B;QAC5C,cAAc,EAAE,8BAA8B;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { type CopyCommandForms } from "../../core/launcher.js";
2
+ import type { ClaimExecutorLaunchOverrides } from "./claim-executor-permissions.js";
3
+ export type ArmTemplateResult = {
4
+ ok: true;
5
+ commands: CopyCommandForms;
6
+ } | {
7
+ ok: false;
8
+ detail: string;
9
+ };
10
+ /**
11
+ * True only when the RAW `command_template` (before any substitution)
12
+ * literally declares the `--session-id {task.uuid}` placeholder. This is
13
+ * the attacker-uncontrollable precondition for arming: `command_template`
14
+ * comes from project configuration (bundled defaults or a project's own
15
+ * `.shipwright-webui/actions.json`), never from the launch request body, so
16
+ * a caller cannot forge this check the way they could forge a coincidental
17
+ * match in the RENDERED output (see module header).
18
+ */
19
+ export declare function templateDeclaresSessionIdAnchor(commandTemplate: string): boolean;
20
+ /**
21
+ * Inserts `--tools <allow-list> --permission-mode <mode>` immediately after
22
+ * the substituted `--session-id <this task's sessionUuid>` token, on all
23
+ * three shell forms. The anchor is the task's own UUID rendered UNQUOTED —
24
+ * verified live (`actions-substitute.ts`'s `{task.uuid}` case returns the
25
+ * raw value, and its per-shell `q()` wrapping is applied only to
26
+ * user-derived placeholders, not this one; a debug probe against the real
27
+ * substitution engine confirmed `--session-id 11111111-...` with no quotes
28
+ * on posix, cmd AND powershell). The flags THEMSELVES still go through the
29
+ * matching shell's own quoter (`FLAG_QUOTERS`) — only the anchor is
30
+ * unquoted, matching the substitution engine's own convention for a
31
+ * server-generated UUID. The flags are inserted at the anchor's FIRST
32
+ * occurrence only when that occurrence is provably unique in the rendered
33
+ * string (checked via `indexOf` === `lastIndexOf`) — a custom project
34
+ * `command_template` can interpolate other placeholders (e.g.
35
+ * `{task.description}`) ahead of `{task.uuid}`, and a caller-supplied value
36
+ * that happens to contain this task's own UUID would otherwise let the
37
+ * flags land inside unrelated text while the real `--session-id` flag stays
38
+ * unarmed and the function still reported success. A non-unique anchor
39
+ * fails closed exactly like a missing one.
40
+ */
41
+ export declare function armActionTemplatePermissionPerimeter(commands: CopyCommandForms, sessionUuid: string, overrides: ClaimExecutorLaunchOverrides): ArmTemplateResult;
42
+ //# sourceMappingURL=claim-executor-template-arming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-executor-template-arming.d.ts","sourceRoot":"","sources":["../../../src/external/launch/claim-executor-template-arming.ts"],"names":[],"mappings":"AAkDA,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAEpF,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,GACxC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAQlC;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAEhF;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,4BAA4B,GACtC,iBAAiB,CA8BnB"}
@@ -0,0 +1,121 @@
1
+ /*
2
+ * external/launch/claim-executor-template-arming.ts — FR-04.22 permission
3
+ * perimeter for the ACTION-TEMPLATE launch path (iterate-2026-09-06-claim-
4
+ * launch-permission-perimeter, Stage-1 review follow-up).
5
+ *
6
+ * `action-substitution-branch.ts` builds its command via
7
+ * `substitutePlaceholders(action.command_template, ...)` — a completely
8
+ * separate rendering path from `core/launcher.ts`'s `buildCopyCommands`/
9
+ * `LaunchArgs`, so `launcher-permission-flags.ts`'s argv-level flags never
10
+ * reach it. Spec review (Stage 1) proved this branch, not the legacy
11
+ * fallback, is the one leadwright's real tasks actually hit: leadwright's
12
+ * `CreateExternalTaskBody.actionId` is a REQUIRED field
13
+ * (`webui-client.ts`), persisted onto the task
14
+ * (`external/tasks/create.ts`), and `parse-body.ts`'s once-set-always-used
15
+ * contract means a claim-only `{ claimToken }` launch body still resolves
16
+ * `parsed.actionId` from that persisted value — so
17
+ * `applyActionSubstitutionBranch` fires, not the legacy fallback.
18
+ *
19
+ * `command_template` is a project-configurable string (bundled defaults in
20
+ * `config/default-actions.json`, or a project's own `actions.json` via
21
+ * `loadActionsForProject`) — NOT a fixed shape this module can trust
22
+ * blindly. Every bundled template starts `--session-id {task.uuid} ...`,
23
+ * but a custom project template is not guaranteed to. FAIL CLOSED: if the
24
+ * expected `--session-id <this task's own uuid>` anchor is not found,
25
+ * verbatim, in a rendered shell form, this module refuses to arm rather
26
+ * than silently returning an unrestricted command that LOOKS armed because
27
+ * the caller asked for arming (the exact "looks compliant, isn't" failure
28
+ * mode this whole card exists to close).
29
+ *
30
+ * Stage-3 doubt review found the rendered-output anchor search alone is not
31
+ * enough: a template that never emits the literal `--session-id {task.uuid}`
32
+ * placeholder at all could still coincidentally contain a UNIQUE occurrence
33
+ * of `--session-id <this task's uuid>` inside a substituted, caller-supplied
34
+ * placeholder (e.g. `{task.description?}`, settable in the very same
35
+ * claim-authorized launch body) — arming would then splice the flags inside
36
+ * quoted user text, not a real CLI flag, and still report success. Callers
37
+ * MUST call `templateDeclaresSessionIdAnchor` on the RAW (pre-substitution)
38
+ * `command_template` first and refuse to arm if it returns false — that
39
+ * check is immune to request-supplied content because the template comes
40
+ * from project configuration, not the launch body.
41
+ *
42
+ * The doubt review also found a template can independently re-declare
43
+ * `--tools`/`--permission-mode` via its own `{task.parameters?}` (a
44
+ * project's custom parameter schema may set `cli_flag: "--tools"` — the
45
+ * allowlist regex in `types/action-schema.ts` permits it), which could
46
+ * override or conflict with the injected flags depending on Claude CLI's
47
+ * duplicate-flag precedence. This module therefore also fails closed if the
48
+ * rendered command already contains either flag BEFORE arming.
49
+ */
50
+ import { qPs, qCmd, qPosix } from "../../core/launcher.js";
51
+ const FLAG_QUOTERS = {
52
+ powershell: qPs,
53
+ cmd: qCmd,
54
+ posix: qPosix,
55
+ };
56
+ /**
57
+ * True only when the RAW `command_template` (before any substitution)
58
+ * literally declares the `--session-id {task.uuid}` placeholder. This is
59
+ * the attacker-uncontrollable precondition for arming: `command_template`
60
+ * comes from project configuration (bundled defaults or a project's own
61
+ * `.shipwright-webui/actions.json`), never from the launch request body, so
62
+ * a caller cannot forge this check the way they could forge a coincidental
63
+ * match in the RENDERED output (see module header).
64
+ */
65
+ export function templateDeclaresSessionIdAnchor(commandTemplate) {
66
+ return commandTemplate.includes("--session-id {task.uuid}");
67
+ }
68
+ const CONFLICTING_FLAG_PATTERN = /(^|\s)(--tools|--permission-mode)(\s|$)/;
69
+ /**
70
+ * Inserts `--tools <allow-list> --permission-mode <mode>` immediately after
71
+ * the substituted `--session-id <this task's sessionUuid>` token, on all
72
+ * three shell forms. The anchor is the task's own UUID rendered UNQUOTED —
73
+ * verified live (`actions-substitute.ts`'s `{task.uuid}` case returns the
74
+ * raw value, and its per-shell `q()` wrapping is applied only to
75
+ * user-derived placeholders, not this one; a debug probe against the real
76
+ * substitution engine confirmed `--session-id 11111111-...` with no quotes
77
+ * on posix, cmd AND powershell). The flags THEMSELVES still go through the
78
+ * matching shell's own quoter (`FLAG_QUOTERS`) — only the anchor is
79
+ * unquoted, matching the substitution engine's own convention for a
80
+ * server-generated UUID. The flags are inserted at the anchor's FIRST
81
+ * occurrence only when that occurrence is provably unique in the rendered
82
+ * string (checked via `indexOf` === `lastIndexOf`) — a custom project
83
+ * `command_template` can interpolate other placeholders (e.g.
84
+ * `{task.description}`) ahead of `{task.uuid}`, and a caller-supplied value
85
+ * that happens to contain this task's own UUID would otherwise let the
86
+ * flags land inside unrelated text while the real `--session-id` flag stays
87
+ * unarmed and the function still reported success. A non-unique anchor
88
+ * fails closed exactly like a missing one.
89
+ */
90
+ export function armActionTemplatePermissionPerimeter(commands, sessionUuid, overrides) {
91
+ const armed = {};
92
+ for (const shellForm of Object.keys(FLAG_QUOTERS)) {
93
+ const q = FLAG_QUOTERS[shellForm];
94
+ const marker = `--session-id ${sessionUuid}`;
95
+ const source = commands[shellForm];
96
+ const idx = source.indexOf(marker);
97
+ if (idx === -1) {
98
+ return {
99
+ ok: false,
100
+ detail: `no '--session-id ${sessionUuid}' anchor found in the ${shellForm} command form — cannot arm the permission perimeter`,
101
+ };
102
+ }
103
+ if (idx !== source.lastIndexOf(marker)) {
104
+ return {
105
+ ok: false,
106
+ detail: `'--session-id ${sessionUuid}' anchor is not unique in the ${shellForm} command form — cannot safely arm the permission perimeter`,
107
+ };
108
+ }
109
+ if (CONFLICTING_FLAG_PATTERN.test(source)) {
110
+ return {
111
+ ok: false,
112
+ detail: `the ${shellForm} command form already contains a --tools or --permission-mode flag before arming — refusing to risk a duplicate/conflicting flag`,
113
+ };
114
+ }
115
+ const insertAt = idx + marker.length;
116
+ const flags = ` --tools ${q(overrides.toolsAllowlist.join(","))} --permission-mode ${q(overrides.permissionMode)}`;
117
+ armed[shellForm] = source.slice(0, insertAt) + flags + source.slice(insertAt);
118
+ }
119
+ return { ok: true, commands: armed };
120
+ }
121
+ //# sourceMappingURL=claim-executor-template-arming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-executor-template-arming.js","sourceRoot":"","sources":["../../../src/external/launch/claim-executor-template-arming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAyB,MAAM,wBAAwB,CAAC;AAOlF,MAAM,YAAY,GAA0D;IAC1E,UAAU,EAAE,GAAG;IACf,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,MAAM;CACd,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,+BAA+B,CAAC,eAAuB;IACrE,OAAO,eAAe,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,wBAAwB,GAAG,yCAAyC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,oCAAoC,CAClD,QAA0B,EAC1B,WAAmB,EACnB,SAAuC;IAEvC,MAAM,KAAK,GAA8B,EAAE,CAAC;IAC5C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAkC,EAAE,CAAC;QACnF,MAAM,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,gBAAgB,WAAW,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,oBAAoB,WAAW,yBAAyB,SAAS,qDAAqD;aAC/H,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,iBAAiB,WAAW,iCAAiC,SAAS,4DAA4D;aAC3I,CAAC;QACJ,CAAC;QACD,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,OAAO,SAAS,kIAAkI;aAC3J,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QACrC,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QACnH,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAyB,EAAE,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { ExternalTask } from "../../core/sdk-sessions-store.js";
2
+ /**
3
+ * How long a claim stays launch-eligible after `claimedAt`. §10.9 left the
4
+ * VALUE unfixed ("a named limit"), justified only against one criterion: a
5
+ * holder who restarts LATE must still succeed, never be locked out (AC
6
+ * FR-04.22) — the fix for a stale token is re-claiming, not an indefinite
7
+ * grant. 24h is generous enough to survive a sleeping laptop, a slow beat,
8
+ * or an overnight gap between claim and restart, while still bounding how
9
+ * long an abandoned claim stays replayable.
10
+ */
11
+ export declare const CLAIM_LAUNCH_WINDOW_MS: number;
12
+ /**
13
+ * Doubt-review finding (iterate-2026-09-03-claim-holder-launch): `withinWindow`
14
+ * originally only bounded the claim's age from ABOVE, so a well-formed but
15
+ * FUTURE-dated `claimedAt` (clock skew between the webui host and the daemon
16
+ * host, or a daemon bug) made `Date.now() - claimedAtMs` negative — always
17
+ * `<= CLAIM_LAUNCH_WINDOW_MS`, reading as "very fresh" instead of being
18
+ * rejected. `sdk-sessions-validate.ts` does no date-sanity check on
19
+ * `claimedAt`, so this module is the only place that can catch it. A small
20
+ * tolerance (rather than rejecting any future timestamp outright) survives
21
+ * ordinary clock drift between two processes' wall clocks without reopening
22
+ * the gap: anything beyond it is refused as not-within-window, same as an
23
+ * expired claim.
24
+ */
25
+ export declare const CLAIM_CLOCK_SKEW_TOLERANCE_MS: number;
26
+ export type ClaimGateResult = {
27
+ allowed: true;
28
+ claimAuthorized: boolean;
29
+ } | {
30
+ allowed: false;
31
+ error: Record<string, unknown>;
32
+ };
33
+ /**
34
+ * Decide whether a launch request may proceed against a (possibly) claimed
35
+ * task. Returns `{ allowed: true }` when there is no active claim, or when
36
+ * `bodyClaimToken` matches the task's current `claimToken` AND the claim is
37
+ * within the launch window. Otherwise refuses with the `task_claimed`
38
+ * envelope — `claimExpired: true` distinguishes "right token, too old" from
39
+ * a foreign/absent token (trap: an expired claim must read differently from
40
+ * someone else's).
41
+ *
42
+ * `claimAuthorized` (iterate-2026-09-06-claim-launch-permission-perimeter,
43
+ * FR-04.22 follow-up) distinguishes the TWO shapes of `allowed: true`: "no
44
+ * claim was ever on record" (an ordinary human/manual launch) vs. "the
45
+ * caller proved it holds the CURRENT, unexpired claim" (leadwright's stage-2
46
+ * executor). The launch route uses this — not a second, independently
47
+ * re-derived token-match check — to decide whether to arm the executor's
48
+ * permission perimeter, so the two conditions can never drift apart.
49
+ */
50
+ export declare function checkClaimHolderGate(task: ExternalTask, bodyClaimToken: string | undefined): ClaimGateResult;
51
+ //# sourceMappingURL=claim-holder-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-holder-gate.d.ts","sourceRoot":"","sources":["../../../src/external/launch/claim-holder-gate.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,QAAsB,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,6BAA6B,QAAgB,CAAC;AAE3D,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GAC3C;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,eAAe,CAqCjB"}