@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 @@
1
+ {"version":3,"file":"charter-authority-read.js","sourceRoot":"","sources":["../../../src/external/org/charter-authority-read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,eAAe,EAAoD,MAAM,gBAAgB,CAAC;AAQnG,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,EAAE;IACnD,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,EAAE;IAC5C,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE;IACxC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,yBAAyB,EAAE;CACxD,CAAC;AAEF,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAc7C,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAOD,SAAS,YAAY,CAAC,KAAe;IACnC,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;2DAY2D;AAC3D,SAAS,mBAAmB,CAAC,YAAsB;IACjD,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC,MAAM,CAAC;IACV,MAAM,cAAc,GAAG,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,cAAc,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/E,WAAW,GAAG,CAAC,WAAW,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,IAAI,WAAW;YAAE,SAAS;QAC1B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,oDAAoD;QACzF,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACnC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAqB,EAAE;QACnD,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;QAClH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACvE,CAAC;QACD,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,gBAAgB,GAAG,QAAQ;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACnB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;aAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC;QACpD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QAE9D,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;IACnG,CAAC,CAAC,CAAC;AACL,CAAC;AAOD;;+DAE+D;AAC/D,MAAM,UAAU,oBAAoB,CAClC,IAA0B,EAC1B,MAAc,EACd,WAA+B;IAE/B,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,uBAAuB,EAAE,CAAC;QACzE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,qDAAqD,EAAE,CAAC;IAC5F,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,MAAM,IAAI,uBAAuB,EAAE,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACpD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,0CAA0C,EAAE,CAAC;IACjF,CAAC;IAED,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC7D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { PreflightLead } from "../../types/leadwright-preflight.js";
2
+ import type { DaemonConfigAdditions } from "./leadwright-proposal-merge.js";
3
+ export interface CommitRequestBody {
4
+ leadId: string;
5
+ lead: PreflightLead;
6
+ daemonConfigAdditions: DaemonConfigAdditions;
7
+ charterContent: string;
8
+ expectedProposalDigest: string;
9
+ }
10
+ export type ValidationResult = {
11
+ ok: true;
12
+ value: CommitRequestBody;
13
+ } | {
14
+ ok: false;
15
+ reason: string;
16
+ };
17
+ export declare function validateCommitBody(body: unknown): ValidationResult;
18
+ //# sourceMappingURL=commit-validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-validate.d.ts","sourceRoot":"","sources":["../../../src/external/org/commit-validate.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;IACpB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAmDlE"}
@@ -0,0 +1,59 @@
1
+ /*
2
+ * commit-validate.ts — request-body validation for POST
3
+ * /api/external/org/leads/commit (iterate-2026-09-07-leadwright-setup-wizard,
4
+ * W14). Split out of commit.ts (bloat ceiling) — a self-contained concern:
5
+ * shape-checking the untyped request body against leadwright's published
6
+ * contract, never leadwright's semantic judgment (that's the verdict step's
7
+ * real check-setup.ts subprocess).
8
+ */
9
+ import path from "node:path";
10
+ import { LEAD_ID_RE, ALLOWED_SKILL_RE } from "../../types/leadwright-preflight.js";
11
+ export function validateCommitBody(body) {
12
+ if (typeof body !== "object" || body === null)
13
+ return { ok: false, reason: "invalid_request_body" };
14
+ const b = body;
15
+ if (typeof b.leadId !== "string" || !LEAD_ID_RE.test(b.leadId)) {
16
+ return { ok: false, reason: "invalid_lead_id" };
17
+ }
18
+ if (typeof b.lead !== "object" || b.lead === null) {
19
+ return { ok: false, reason: "invalid_lead" };
20
+ }
21
+ const lead = b.lead;
22
+ // External-review fix (both legs, high): commitCore ALWAYS writes charter
23
+ // content to `<leadsRoot>/<leadId>/charter.md` regardless of what
24
+ // charter_path says — checking only "relative, no .." (CHARTER_LEARNINGS_
25
+ // PATH_RE) let a caller submit a charter_path that doesn't match, so the
26
+ // org-chart entry would point at a file the endpoint never wrote. Exact
27
+ // match subsumes that regex check (a value equal to the fixed convention
28
+ // is trivially relative with no `..`). The wizard itself always sends
29
+ // this convention (buildLeadProposal.ts); this closes the gap for any
30
+ // other caller. `b.leadId` is a validated string by this point.
31
+ if (lead.charter_path !== `${b.leadId}/charter.md`) {
32
+ return { ok: false, reason: "charter_path_must_match_lead_id_convention" };
33
+ }
34
+ if (lead.learnings_path !== `${b.leadId}/learnings.md`) {
35
+ return { ok: false, reason: "learnings_path_must_match_lead_id_convention" };
36
+ }
37
+ if (!Array.isArray(lead.allowed_skills) || !lead.allowed_skills.every((s) => typeof s === "string" && ALLOWED_SKILL_RE.test(s))) {
38
+ return { ok: false, reason: "invalid_allowed_skills" };
39
+ }
40
+ const additionsRaw = b.daemonConfigAdditions;
41
+ if (typeof additionsRaw !== "object" || additionsRaw === null) {
42
+ return { ok: false, reason: "invalid_daemon_config_additions" };
43
+ }
44
+ const additions = additionsRaw;
45
+ if (typeof additions.path !== "string" ||
46
+ !path.isAbsolute(additions.path) ||
47
+ typeof additions.actionId !== "string" ||
48
+ !Array.isArray(additions.pluginDirs) ||
49
+ !additions.pluginDirs.every((d) => typeof d === "string" && path.isAbsolute(d))) {
50
+ return { ok: false, reason: "daemon_config_additions_must_be_absolute" };
51
+ }
52
+ if (typeof b.charterContent !== "string")
53
+ return { ok: false, reason: "charter_content_required" };
54
+ if (typeof b.expectedProposalDigest !== "string" || b.expectedProposalDigest.length === 0) {
55
+ return { ok: false, reason: "expected_proposal_digest_required" };
56
+ }
57
+ return { ok: true, value: body };
58
+ }
59
+ //# sourceMappingURL=commit-validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-validate.js","sourceRoot":"","sources":["../../../src/external/org/commit-validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { withOrgFileLock, type LstatFn, type OrgFileLockOptions } from "./org-file-lock.js";
2
+ import { type DaemonConfigAdditions } from "./leadwright-proposal-merge.js";
3
+ import type { PreflightLead, PreflightOrgChart } from "../../types/leadwright-preflight.js";
4
+ export type WithOrgFileLockFn = typeof withOrgFileLock;
5
+ export type { LstatFn };
6
+ /** charter.md is a brand-new file under a brand-new leadId — no concurrent
7
+ * WRITER can exist for a path that did not exist a moment ago, so this
8
+ * needs no LOCK (mirrors file-write.ts's documented "no lock" posture for
9
+ * charter files; the concurrency story there is If-Match, which has no
10
+ * meaning for a CREATE). It IS symlink-checked, same as the other two
11
+ * writes: `<leadsRoot>/<leadId>` and the charter.md path itself are each
12
+ * checked immediately before the syscall that would follow them, closing
13
+ * the escape a pre-planted symlink (or a retry landing on one) would
14
+ * otherwise open. */
15
+ export declare function writeNewCharterFile(leadsRoot: string, leadId: string, content: string, lstat?: LstatFn): void;
16
+ export type DaemonConfigWriteResult = {
17
+ status: "written";
18
+ } | {
19
+ status: "missing";
20
+ fragment: string;
21
+ };
22
+ /**
23
+ * ADD-ONLY merge — reads the CURRENT on-disk daemon-config.json fresh
24
+ * (inside the lock, never the pre-commit snapshot) and writes back with
25
+ * ONLY this lead's three entries added to leadProjectRoots/leadActionIds/
26
+ * leadPluginDirs. Every existing key — other leads' entries, every
27
+ * unrelated top-level field — passes through untouched. A file that does
28
+ * not exist on disk is never guessed into existence — the caller gets a
29
+ * copy-paste fragment instead (W14's "home is <leadsRoot>/daemon-config.json,
30
+ * if absent show a fragment instead of guessing a location").
31
+ *
32
+ * External-review fix (GLM, medium): the "does it exist" decision now comes
33
+ * from the `mustExist: true` lock ACQUISITION's own ENOENT, not a boolean
34
+ * the caller read before taking the lock — a pre-lock snapshot is a TOCTOU
35
+ * window (the file could be deleted between that read and this call).
36
+ */
37
+ export declare function writeDaemonConfigAddition(leadsRoot: string, leadId: string, additions: DaemonConfigAdditions, withOrgFileLockFn?: WithOrgFileLockFn, lockOptions?: Omit<OrgFileLockOptions, "mustExist">): Promise<DaemonConfigWriteResult>;
38
+ export type OrgChartWriteResult = {
39
+ status: "written";
40
+ } | {
41
+ status: "already_committed";
42
+ } | {
43
+ status: "conflict";
44
+ };
45
+ /** Pure decision for adding `leadId` -> `lead` to an org-chart snapshot —
46
+ * idempotent when the roster ALREADY carries this exact lead (a safe retry
47
+ * after an earlier commit attempt crashed between this write and its HTTP
48
+ * response reaching the client); a DIFFERING existing entry is refused,
49
+ * never silently overwritten or reordered. Exported so `commit.ts` can
50
+ * reuse it INSIDE an org-chart.json lock it already holds (the
51
+ * concurrent-same-leadId-commit race fix) rather than acquiring a second,
52
+ * nested lock on the same file via `writeOrgChartLead`. */
53
+ export declare function applyOrgChartLead(current: PreflightOrgChart, leadId: string, lead: PreflightLead): {
54
+ status: "written";
55
+ next: PreflightOrgChart;
56
+ } | {
57
+ status: "already_committed";
58
+ } | {
59
+ status: "conflict";
60
+ };
61
+ /**
62
+ * Adds `leadId` -> `lead` to org-chart.json's `leads` map, re-reading fresh
63
+ * inside the lock. Thin wrapper over `applyOrgChartLead` for callers that
64
+ * don't already hold this file's lock (`commit.ts` does, and calls
65
+ * `applyOrgChartLead` directly instead — see that file).
66
+ */
67
+ export declare function writeOrgChartLead(leadsRoot: string, leadId: string, lead: PreflightLead, withOrgFileLockFn?: WithOrgFileLockFn, lockOptions?: Omit<OrgFileLockOptions, "mustExist">): Promise<OrgChartWriteResult>;
68
+ //# sourceMappingURL=commit-writes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-writes.d.ts","sourceRoot":"","sources":["../../../src/external/org/commit-writes.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAoB,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,KAAK,EAAyB,aAAa,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAEnH,MAAM,MAAM,iBAAiB,GAAG,OAAO,eAAe,CAAC;AACvD,YAAY,EAAE,OAAO,EAAE,CAAC;AAExB;;;;;;;;sBAQsB;AACtB,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,OAAmB,GACzB,IAAI,CAON;AAED,MAAM,MAAM,uBAAuB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AActG;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,qBAAqB,EAChC,iBAAiB,GAAE,iBAAmC,EACtD,WAAW,GAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAM,GACtD,OAAO,CAAC,uBAAuB,CAAC,CAoBlC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAEnH;;;;;;;4DAO4D;AAC5D,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,GAClB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAQ3G;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,iBAAiB,GAAE,iBAAmC,EACtD,WAAW,GAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAM,GACtD,OAAO,CAAC,mBAAmB,CAAC,CAQ9B"}
@@ -0,0 +1,110 @@
1
+ /*
2
+ * commit-writes.ts — the three ordered, lock-protected writes the leads
3
+ * commit route performs (iterate-2026-09-07-leadwright-setup-wizard, W14).
4
+ * Order (enforced by commit.ts's call sequence, not here):
5
+ * charter.md -> daemon-config.json -> org-chart.json
6
+ * org-chart.json is what "activates" a lead (leadwright's daemon reads the
7
+ * roster from there), so writing it LAST means a failure at any earlier
8
+ * step leaves only harmless, retry-safe residue (an orphan charter.md, or
9
+ * a daemon-config.json entry pointing at a lead the roster doesn't list
10
+ * yet) rather than a half-activated lead.
11
+ */
12
+ import { lstatSync, mkdirSync, writeFileSync } from "node:fs";
13
+ import path from "node:path";
14
+ import { withOrgFileLock, assertNotSymlink } from "./org-file-lock.js";
15
+ import { canonicalStringify } from "./leadwright-proposal-merge.js";
16
+ /** charter.md is a brand-new file under a brand-new leadId — no concurrent
17
+ * WRITER can exist for a path that did not exist a moment ago, so this
18
+ * needs no LOCK (mirrors file-write.ts's documented "no lock" posture for
19
+ * charter files; the concurrency story there is If-Match, which has no
20
+ * meaning for a CREATE). It IS symlink-checked, same as the other two
21
+ * writes: `<leadsRoot>/<leadId>` and the charter.md path itself are each
22
+ * checked immediately before the syscall that would follow them, closing
23
+ * the escape a pre-planted symlink (or a retry landing on one) would
24
+ * otherwise open. */
25
+ export function writeNewCharterFile(leadsRoot, leadId, content, lstat = lstatSync) {
26
+ const dir = path.join(leadsRoot, leadId);
27
+ assertNotSymlink(dir, lstat);
28
+ mkdirSync(dir, { recursive: true });
29
+ const filePath = path.join(dir, "charter.md");
30
+ assertNotSymlink(filePath, lstat);
31
+ writeFileSync(filePath, content, "utf8");
32
+ }
33
+ function buildDaemonConfigFragment(leadId, additions) {
34
+ return JSON.stringify({
35
+ leadProjectRoots: { [leadId]: additions.path },
36
+ leadActionIds: { [leadId]: additions.actionId },
37
+ leadPluginDirs: { [leadId]: additions.pluginDirs },
38
+ }, null, 2);
39
+ }
40
+ /**
41
+ * ADD-ONLY merge — reads the CURRENT on-disk daemon-config.json fresh
42
+ * (inside the lock, never the pre-commit snapshot) and writes back with
43
+ * ONLY this lead's three entries added to leadProjectRoots/leadActionIds/
44
+ * leadPluginDirs. Every existing key — other leads' entries, every
45
+ * unrelated top-level field — passes through untouched. A file that does
46
+ * not exist on disk is never guessed into existence — the caller gets a
47
+ * copy-paste fragment instead (W14's "home is <leadsRoot>/daemon-config.json,
48
+ * if absent show a fragment instead of guessing a location").
49
+ *
50
+ * External-review fix (GLM, medium): the "does it exist" decision now comes
51
+ * from the `mustExist: true` lock ACQUISITION's own ENOENT, not a boolean
52
+ * the caller read before taking the lock — a pre-lock snapshot is a TOCTOU
53
+ * window (the file could be deleted between that read and this call).
54
+ */
55
+ export async function writeDaemonConfigAddition(leadsRoot, leadId, additions, withOrgFileLockFn = withOrgFileLock, lockOptions = {}) {
56
+ const target = path.join(leadsRoot, "daemon-config.json");
57
+ try {
58
+ await withOrgFileLockFn(target, { ...lockOptions, mustExist: true }, (ctx) => {
59
+ const current = JSON.parse(ctx.read());
60
+ const next = {
61
+ ...current,
62
+ leadProjectRoots: { ...(current.leadProjectRoots ?? {}), [leadId]: additions.path },
63
+ leadActionIds: { ...(current.leadActionIds ?? {}), [leadId]: additions.actionId },
64
+ leadPluginDirs: { ...(current.leadPluginDirs ?? {}), [leadId]: additions.pluginDirs },
65
+ };
66
+ ctx.write(JSON.stringify(next, null, 2));
67
+ });
68
+ }
69
+ catch (err) {
70
+ if (err?.code === "ENOENT") {
71
+ return { status: "missing", fragment: buildDaemonConfigFragment(leadId, additions) };
72
+ }
73
+ throw err;
74
+ }
75
+ return { status: "written" };
76
+ }
77
+ /** Pure decision for adding `leadId` -> `lead` to an org-chart snapshot —
78
+ * idempotent when the roster ALREADY carries this exact lead (a safe retry
79
+ * after an earlier commit attempt crashed between this write and its HTTP
80
+ * response reaching the client); a DIFFERING existing entry is refused,
81
+ * never silently overwritten or reordered. Exported so `commit.ts` can
82
+ * reuse it INSIDE an org-chart.json lock it already holds (the
83
+ * concurrent-same-leadId-commit race fix) rather than acquiring a second,
84
+ * nested lock on the same file via `writeOrgChartLead`. */
85
+ export function applyOrgChartLead(current, leadId, lead) {
86
+ const existing = current.leads[leadId];
87
+ if (existing) {
88
+ return canonicalStringify(existing) === canonicalStringify(lead)
89
+ ? { status: "already_committed" }
90
+ : { status: "conflict" };
91
+ }
92
+ return { status: "written", next: { ...current, leads: { ...current.leads, [leadId]: lead } } };
93
+ }
94
+ /**
95
+ * Adds `leadId` -> `lead` to org-chart.json's `leads` map, re-reading fresh
96
+ * inside the lock. Thin wrapper over `applyOrgChartLead` for callers that
97
+ * don't already hold this file's lock (`commit.ts` does, and calls
98
+ * `applyOrgChartLead` directly instead — see that file).
99
+ */
100
+ export async function writeOrgChartLead(leadsRoot, leadId, lead, withOrgFileLockFn = withOrgFileLock, lockOptions = {}) {
101
+ const target = path.join(leadsRoot, "org-chart.json");
102
+ return withOrgFileLockFn(target, { ...lockOptions, mustExist: true }, (ctx) => {
103
+ const current = JSON.parse(ctx.read());
104
+ const result = applyOrgChartLead(current, leadId, lead);
105
+ if (result.status === "written")
106
+ ctx.write(JSON.stringify(result.next, null, 2));
107
+ return { status: result.status };
108
+ });
109
+ }
110
+ //# sourceMappingURL=commit-writes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-writes.js","sourceRoot":"","sources":["../../../src/external/org/commit-writes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import type { Hono } from "hono";
2
+ import { type OrgChartFullReadResult } from "./org-chart-full-read.js";
3
+ import { type DaemonConfigReadCoreResult } from "./daemon-config-read.js";
4
+ import { writeNewCharterFile, type WithOrgFileLockFn } from "./commit-writes.js";
5
+ import { type ReadOrgFileFn } from "./existing-charters-read.js";
6
+ import { runLeadwrightPreflight } from "../../core/leadwright-preflight-transport.js";
7
+ import { type CommitRequestBody } from "./commit-validate.js";
8
+ /** Not a dismissable toast — the client renders this string prominently and
9
+ * blocks the "done" state on it (W14: "restart the daemon" must be
10
+ * explicit, because daemon-config.json loads once at boot). */
11
+ export declare const RESTART_NOTICE = "leadwright's daemon reads daemon-config.json once at startup. This new lead will not run until you restart the leadwright daemon.";
12
+ export type { CommitRequestBody };
13
+ export interface CommitCoreDeps {
14
+ leadsRoot: string;
15
+ leadwrightCheckoutRoot: string | undefined;
16
+ webuiBaseUrl: string;
17
+ readOrgChartFullFn: (deps: {
18
+ leadsRoot: string;
19
+ }) => OrgChartFullReadResult;
20
+ daemonConfigReadFn: (deps: {
21
+ leadsRoot: string;
22
+ webuiBaseUrl: string;
23
+ }) => DaemonConfigReadCoreResult;
24
+ withOrgFileLockFn?: WithOrgFileLockFn;
25
+ writeCharterFn?: typeof writeNewCharterFile;
26
+ readOrgFileFn?: ReadOrgFileFn;
27
+ runLeadwrightPreflightFn?: typeof runLeadwrightPreflight;
28
+ }
29
+ export type CommitCoreResult = {
30
+ status: 200;
31
+ body: {
32
+ committed: true;
33
+ leadId: string;
34
+ restartRequired: true;
35
+ restartNotice: string;
36
+ };
37
+ } | {
38
+ status: 200;
39
+ body: {
40
+ committed: false;
41
+ stage: "daemon-config";
42
+ fragment: string;
43
+ };
44
+ } | {
45
+ status: 400;
46
+ body: {
47
+ error: string;
48
+ };
49
+ } | {
50
+ status: 403 | 404 | 500 | 502;
51
+ body: {
52
+ error: string;
53
+ detail?: string;
54
+ };
55
+ } | {
56
+ status: 409;
57
+ body: {
58
+ error: "verdict_stale" | "org_chart_lead_exists" | "daemon_config_locked" | "org_chart_locked" | "verdict_not_ok";
59
+ findings?: unknown;
60
+ };
61
+ } | {
62
+ status: 503;
63
+ body: {
64
+ error: "leadwright_not_configured";
65
+ };
66
+ };
67
+ export declare function commitCore(deps: CommitCoreDeps, requestBody: unknown): Promise<CommitCoreResult>;
68
+ export interface CommitRouteDeps extends Omit<CommitCoreDeps, "readOrgChartFullFn" | "daemonConfigReadFn"> {
69
+ readOrgChartFullFn?: CommitCoreDeps["readOrgChartFullFn"];
70
+ daemonConfigReadFn?: CommitCoreDeps["daemonConfigReadFn"];
71
+ }
72
+ export declare function registerCommitRoute(app: Hono, deps: CommitRouteDeps): void;
73
+ //# sourceMappingURL=commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../../src/external/org/commit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ import path from "node:path";
2
+ import { readOrgChartFull } from "./org-chart-full-read.js";
3
+ import { daemonConfigReadCore } from "./daemon-config-read.js";
4
+ import { mergeLeadProposal, computeProposalDigest, canonicalStringify } from "./leadwright-proposal-merge.js";
5
+ import { writeNewCharterFile, writeDaemonConfigAddition, applyOrgChartLead } from "./commit-writes.js";
6
+ import { withOrgFileLock, OrgFileSymlinkEscapeError } from "./org-file-lock.js";
7
+ import { readExistingLeadCharters } from "./existing-charters-read.js";
8
+ import { runLeadwrightPreflight } from "../../core/leadwright-preflight-transport.js";
9
+ import { validateCommitBody } from "./commit-validate.js";
10
+ /** Not a dismissable toast — the client renders this string prominently and
11
+ * blocks the "done" state on it (W14: "restart the daemon" must be
12
+ * explicit, because daemon-config.json loads once at boot). */
13
+ export const RESTART_NOTICE = "leadwright's daemon reads daemon-config.json once at startup. This new lead will not run until you restart the leadwright daemon.";
14
+ export async function commitCore(deps, requestBody) {
15
+ if (!deps.leadwrightCheckoutRoot) {
16
+ return { status: 503, body: { error: "leadwright_not_configured" } };
17
+ }
18
+ const validated = validateCommitBody(requestBody);
19
+ if (!validated.ok) {
20
+ return { status: 400, body: { error: validated.reason } };
21
+ }
22
+ const { leadId, lead, daemonConfigAdditions, charterContent, expectedProposalDigest } = validated.value;
23
+ const orgChartResult = deps.readOrgChartFullFn({ leadsRoot: deps.leadsRoot });
24
+ if (orgChartResult.status !== 200)
25
+ return orgChartResult;
26
+ const daemonConfigResult = deps.daemonConfigReadFn({ leadsRoot: deps.leadsRoot, webuiBaseUrl: deps.webuiBaseUrl });
27
+ if (daemonConfigResult.status !== 200)
28
+ return daemonConfigResult;
29
+ const existingCharters = readExistingLeadCharters(deps.leadsRoot, orgChartResult.body, leadId, deps.readOrgFileFn);
30
+ const { proposal } = mergeLeadProposal({
31
+ orgChart: orgChartResult.body,
32
+ daemonConfig: daemonConfigResult.body,
33
+ leadId,
34
+ lead,
35
+ daemonConfigAdditions,
36
+ charterContent,
37
+ existingCharters,
38
+ });
39
+ const actualDigest = computeProposalDigest(proposal);
40
+ if (actualDigest !== expectedProposalDigest) {
41
+ return { status: 409, body: { error: "verdict_stale" } };
42
+ }
43
+ // External-review fix (openai, high — security): `expectedProposalDigest`
44
+ // is a PLAIN, unsigned SHA-256 of the proposal — proving nothing about
45
+ // WHETHER leadwright's actual verdict was green, only that the client's
46
+ // claimed digest matches what a fresh server-side merge produces for the
47
+ // SAME proposal shape. Any caller able to compute that same hash (no
48
+ // secret is involved) could submit a proposal with unsatisfied MUSS
49
+ // findings and have it accepted without ever running /verdict. The digest
50
+ // check above stays (it's still the right UX for "your answers changed
51
+ // since you last checked"); this re-runs leadwright's REAL check-setup.ts
52
+ // against the exact proposal about to be written, so the write can never
53
+ // happen without a genuinely fresh, server-observed green verdict.
54
+ const runPreflight = deps.runLeadwrightPreflightFn ?? runLeadwrightPreflight;
55
+ const reverify = await runPreflight(deps.leadwrightCheckoutRoot, proposal);
56
+ if (!reverify.ranOk) {
57
+ return { status: 502, body: { error: "leadwright_transport_failed", detail: reverify.reason } };
58
+ }
59
+ if (!reverify.result.ok) {
60
+ return { status: 409, body: { error: "verdict_not_ok", findings: reverify.result.findings } };
61
+ }
62
+ // Cheap fast-path (not the authoritative check — see below): a leadId
63
+ // collision visible on the PRE-LOCK snapshot lets an obvious duplicate
64
+ // 409 without ever touching the filesystem lock. mergeLeadProposal always
65
+ // overwrites orgChart.leads[leadId] with the submitted lead before
66
+ // hashing (so computeProposalDigest is identical whether or not that id
67
+ // already exists on disk) — the digest check above can never see this
68
+ // collision on its own.
69
+ const existingLead = orgChartResult.body.leads[leadId];
70
+ if (existingLead && canonicalStringify(existingLead) !== canonicalStringify(lead)) {
71
+ return { status: 409, body: { error: "org_chart_lead_exists" } };
72
+ }
73
+ // External-review fix (openai, high — "regression"): the fast-path check
74
+ // above reads a PRE-LOCK snapshot, so two genuinely concurrent commits
75
+ // for the SAME NEW leadId can both pass it, then both race past the
76
+ // unlocked charter.md write and the (once-)unconditional daemon-config
77
+ // merge before org-chart.json's own conflict check catches only one —
78
+ // the exact corruption shape the doubt-review fix closed for SEQUENTIAL
79
+ // resubmission, but not for true concurrency. The fix: hold ONE lock on
80
+ // org-chart.json (leadwright's activation source of truth) across the
81
+ // ENTIRE write sequence, with a FRESH re-read + re-check as the first
82
+ // thing inside it. A second racer simply cannot enter this critical
83
+ // section until the first's full commit (all three writes) has finished
84
+ // and released the lock — at which point its own fresh check correctly
85
+ // sees the collision and 409s before writing anything.
86
+ const withOrgFileLockFn = deps.withOrgFileLockFn ?? withOrgFileLock;
87
+ const orgChartTarget = path.join(deps.leadsRoot, "org-chart.json");
88
+ try {
89
+ return await withOrgFileLockFn(orgChartTarget, { mustExist: true }, async (ctx) => {
90
+ const freshOrgChart = JSON.parse(ctx.read());
91
+ const freshExisting = freshOrgChart.leads[leadId];
92
+ if (freshExisting && canonicalStringify(freshExisting) !== canonicalStringify(lead)) {
93
+ return { status: 409, body: { error: "org_chart_lead_exists" } };
94
+ }
95
+ const writeCharter = deps.writeCharterFn ?? writeNewCharterFile;
96
+ try {
97
+ writeCharter(deps.leadsRoot, leadId, charterContent);
98
+ }
99
+ catch (err) {
100
+ if (err instanceof OrgFileSymlinkEscapeError) {
101
+ return { status: 403, body: { error: "symlink_forbidden", detail: err.path } };
102
+ }
103
+ throw err;
104
+ }
105
+ // Lock-contention error convention (CLAUDE.md rule 6 / DO-NOT #6),
106
+ // mirrored from beat-register-release-request.ts: a genuine
107
+ // cross-process lock conflict (proper-lockfile's ELOCKED, retries
108
+ // exhausted) maps to its OWN named 409 rather than falling through to
109
+ // the app-wide error handler's generic (and wrong-resource) message.
110
+ let daemonConfigWrite;
111
+ try {
112
+ daemonConfigWrite = await writeDaemonConfigAddition(deps.leadsRoot, leadId, daemonConfigAdditions, deps.withOrgFileLockFn);
113
+ }
114
+ catch (err) {
115
+ if (err instanceof OrgFileSymlinkEscapeError) {
116
+ return { status: 403, body: { error: "symlink_forbidden", detail: err.path } };
117
+ }
118
+ if (err?.code === "ELOCKED") {
119
+ return { status: 409, body: { error: "daemon_config_locked" } };
120
+ }
121
+ throw err;
122
+ }
123
+ if (daemonConfigWrite.status === "missing") {
124
+ return {
125
+ status: 200,
126
+ body: { committed: false, stage: "daemon-config", fragment: daemonConfigWrite.fragment },
127
+ };
128
+ }
129
+ // Applies directly against the ALREADY-OPEN ctx from this same lock
130
+ // acquisition — never a second, nested lock() call on org-chart.json.
131
+ const applied = applyOrgChartLead(freshOrgChart, leadId, lead);
132
+ if (applied.status === "conflict") {
133
+ return { status: 409, body: { error: "org_chart_lead_exists" } };
134
+ }
135
+ if (applied.status === "written") {
136
+ ctx.write(JSON.stringify(applied.next, null, 2));
137
+ }
138
+ return {
139
+ status: 200,
140
+ body: { committed: true, leadId, restartRequired: true, restartNotice: RESTART_NOTICE },
141
+ };
142
+ });
143
+ }
144
+ catch (err) {
145
+ if (err instanceof OrgFileSymlinkEscapeError) {
146
+ return { status: 403, body: { error: "symlink_forbidden", detail: err.path } };
147
+ }
148
+ if (err?.code === "ELOCKED") {
149
+ return { status: 409, body: { error: "org_chart_locked" } };
150
+ }
151
+ if (err?.code === "ENOENT") {
152
+ return { status: 404, body: { error: "org_chart_missing" } };
153
+ }
154
+ throw err;
155
+ }
156
+ }
157
+ export function registerCommitRoute(app, deps) {
158
+ const coreDeps = {
159
+ leadsRoot: deps.leadsRoot,
160
+ leadwrightCheckoutRoot: deps.leadwrightCheckoutRoot,
161
+ webuiBaseUrl: deps.webuiBaseUrl,
162
+ readOrgChartFullFn: deps.readOrgChartFullFn ?? readOrgChartFull,
163
+ daemonConfigReadFn: deps.daemonConfigReadFn ?? daemonConfigReadCore,
164
+ withOrgFileLockFn: deps.withOrgFileLockFn,
165
+ writeCharterFn: deps.writeCharterFn,
166
+ readOrgFileFn: deps.readOrgFileFn,
167
+ runLeadwrightPreflightFn: deps.runLeadwrightPreflightFn,
168
+ };
169
+ app.post("/api/external/org/leads/commit", async (c) => {
170
+ let requestBody;
171
+ try {
172
+ requestBody = await c.req.json();
173
+ }
174
+ catch {
175
+ return c.json({ error: "invalid_request_body" }, 400);
176
+ }
177
+ const result = await commitCore(coreDeps, requestBody);
178
+ return c.json(result.body, result.status);
179
+ });
180
+ }
181
+ //# sourceMappingURL=commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../src/external/org/commit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { CommitCoreDeps } from "./commit.js";
2
+ import type { CommitRequestBody } from "./commit-validate.js";
3
+ import type { PreflightOrgChart } from "../../types/leadwright-preflight.js";
4
+ export declare const EMPTY_ORG_CHART: PreflightOrgChart;
5
+ export declare const VALID_LEAD: {
6
+ name: string;
7
+ domain: string;
8
+ reports_to: null;
9
+ manages: never[];
10
+ charter_path: string;
11
+ learnings_path: string;
12
+ triggers: {
13
+ cron: string;
14
+ on: never[];
15
+ };
16
+ max_concurrent_tasks: number;
17
+ budget: {
18
+ window: "rolling-7d";
19
+ usd: null;
20
+ pause_at: number;
21
+ hard_stop_at: number;
22
+ };
23
+ projects: string[];
24
+ allowed_skills: string[];
25
+ allowed_tools: never[];
26
+ escalation_target: string;
27
+ model: "balanced";
28
+ paused: false;
29
+ };
30
+ export declare const ADDITIONS: {
31
+ path: string;
32
+ actionId: string;
33
+ pluginDirs: string[];
34
+ };
35
+ export declare function correctDigest(): string;
36
+ export declare function validBody(overrides?: Partial<CommitRequestBody>): CommitRequestBody;
37
+ export declare function baseDeps(overrides?: Partial<CommitCoreDeps>): CommitCoreDeps;
38
+ //# sourceMappingURL=commit.test-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.test-fixtures.d.ts","sourceRoot":"","sources":["../../../src/external/org/commit.test-fixtures.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAE5F,eAAO,MAAM,eAAe,EAAE,iBAAyD,CAAC;AAExF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;CAgBE,CAAC;AAE1B,eAAO,MAAM,SAAS;;;;CAAoE,CAAC;AAE3F,wBAAgB,aAAa,IAAI,MAAM,CAatC;AAED,wBAAgB,SAAS,CAAC,SAAS,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,iBAAiB,CASvF;AAED,wBAAgB,QAAQ,CAAC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CAchF"}