@svenroth-ai/shipwright 0.27.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/client/dist/assets/{EmbeddedTerminal-CqCQUDtp.js → EmbeddedTerminal-4xgNUBUu.js} +19 -19
  2. package/client/dist/assets/{abnfDiagram-VRR7QNED-DX2objTP.js → abnfDiagram-VRR7QNED-BdCNbaqc.js} +1 -1
  3. package/client/dist/assets/{arc-DQmjbsFU.js → arc-DoZTTE1N.js} +1 -1
  4. package/client/dist/assets/{architectureDiagram-ZJ3FMSHR-DAvCsPCW.js → architectureDiagram-ZJ3FMSHR-DFTG4KtO.js} +1 -1
  5. package/client/dist/assets/{blockDiagram-677ZJIJ3-DC-dlyYI.js → blockDiagram-677ZJIJ3-C34UBjOB.js} +1 -1
  6. package/client/dist/assets/{c4Diagram-LMCZKHZV-DSlmXfhE.js → c4Diagram-LMCZKHZV-CbqAB1Ou.js} +1 -1
  7. package/client/dist/assets/channel-DBcZw7Kn.js +1 -0
  8. package/client/dist/assets/{chunk-2Q5K7J3B-C111EHL6.js → chunk-2Q5K7J3B-4N6AnmBJ.js} +1 -1
  9. package/client/dist/assets/{chunk-32BRIVSS-DrCYs2XG.js → chunk-32BRIVSS-Cs67LiCy.js} +1 -1
  10. package/client/dist/assets/{chunk-5VM5RSS4-DIejoaXS.js → chunk-5VM5RSS4-Bwd7rtD3.js} +1 -1
  11. package/client/dist/assets/{chunk-EX3LRPZG-CGWNeH2g.js → chunk-EX3LRPZG-CQqGfptD.js} +1 -1
  12. package/client/dist/assets/{chunk-JWPE2WC7-CCH0SRFY.js → chunk-JWPE2WC7-ClvKd4PN.js} +1 -1
  13. package/client/dist/assets/{chunk-MOJQB5TN-B3OpZGRv.js → chunk-MOJQB5TN-Cwvj8GE1.js} +1 -1
  14. package/client/dist/assets/{chunk-RYQCIY6F-BKhdp_8v.js → chunk-RYQCIY6F-DrWMx37d.js} +1 -1
  15. package/client/dist/assets/{chunk-V7JOEXUC-B6Bu8x1y.js → chunk-V7JOEXUC-CYFfa4PY.js} +1 -1
  16. package/client/dist/assets/{chunk-VR4S4FIN-OgFi2_iB.js → chunk-VR4S4FIN-B5eWtesm.js} +1 -1
  17. package/client/dist/assets/{chunk-XXDRQBXY-xyjuuhxl.js → chunk-XXDRQBXY-BQAZ6Our.js} +1 -1
  18. package/client/dist/assets/classDiagram-OUVF2IWQ-C3Q1V9DU.js +1 -0
  19. package/client/dist/assets/classDiagram-v2-EOCWNBFH-C3Q1V9DU.js +1 -0
  20. package/client/dist/assets/{cose-bilkent-JH36ORCC-BQIH3SCK.js → cose-bilkent-JH36ORCC-C76Yia6h.js} +1 -1
  21. package/client/dist/assets/{cynefin-VYW2F7L2-oyLAz8te.js → cynefin-VYW2F7L2-pJe7rdTi.js} +1 -1
  22. package/client/dist/assets/{cynefinDiagram-TSTJHNR4-DoLCsH0l.js → cynefinDiagram-TSTJHNR4-EeHQ7dYV.js} +1 -1
  23. package/client/dist/assets/{dagre-VKFMJZFB-D7djx1_Y.js → dagre-VKFMJZFB-VXOY6IHR.js} +1 -1
  24. package/client/dist/assets/{diagram-FQU43EPY-DFuYE0Vf.js → diagram-FQU43EPY-DW_-leqw.js} +1 -1
  25. package/client/dist/assets/{diagram-G47NLZAW-CffCZVXk.js → diagram-G47NLZAW-C_hsLD4u.js} +1 -1
  26. package/client/dist/assets/{diagram-NH7WQ7WH-BhrHtUlt.js → diagram-NH7WQ7WH-CbeQuO_f.js} +1 -1
  27. package/client/dist/assets/{diagram-OA4YK3LP-CwQPbOn0.js → diagram-OA4YK3LP-DRHY5d_c.js} +1 -1
  28. package/client/dist/assets/{diagram-WEI45ONY-abtYnYqH.js → diagram-WEI45ONY-B87OYR_S.js} +1 -1
  29. package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DfV7gT4m.js → ebnfDiagram-CCIWWBDH-B8Z8WHF6.js} +1 -1
  30. package/client/dist/assets/{erDiagram-Q63AITRT-vtbCprgH.js → erDiagram-Q63AITRT-DaD7oa9H.js} +1 -1
  31. package/client/dist/assets/{flowDiagram-23GEKE2U-CVCgcyDF.js → flowDiagram-23GEKE2U-GrMVpsea.js} +1 -1
  32. package/client/dist/assets/{ganttDiagram-NO4QXBWP-BclyOgMb.js → ganttDiagram-NO4QXBWP-K3X0DYBa.js} +1 -1
  33. package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-BXT4rIKj.js → gitGraphDiagram-IHSO6WYX-B2SEx0xa.js} +1 -1
  34. package/client/dist/assets/index-CIpLt0ie.js +863 -0
  35. package/client/dist/assets/index-DGtnTeFd.css +1 -0
  36. package/client/dist/assets/{infoDiagram-FWYZ7A6U-Dr4mN24J.js → infoDiagram-FWYZ7A6U-Fi8fQ95G.js} +1 -1
  37. package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-BBUFWq5C.js → ishikawaDiagram-FXEZZL3T-CrN7QJzt.js} +1 -1
  38. package/client/dist/assets/{journeyDiagram-5HDEW3XC-CmclipcQ.js → journeyDiagram-5HDEW3XC-XHIsl7rM.js} +1 -1
  39. package/client/dist/assets/{kanban-definition-HUTT4EX6-eIzUeZ03.js → kanban-definition-HUTT4EX6-A6HJqHw7.js} +1 -1
  40. package/client/dist/assets/{linear-DGiT7uKK.js → linear-D1vF9IQB.js} +1 -1
  41. package/client/dist/assets/{mermaid.core-BcLNGbxW.js → mermaid.core-D6w9zlA0.js} +4 -4
  42. package/client/dist/assets/{mindmap-definition-LN4V7U3C-C4ANnNiP.js → mindmap-definition-LN4V7U3C-CxRkUj6Z.js} +1 -1
  43. package/client/dist/assets/{pegDiagram-2B236MQR-DnMeh3Yh.js → pegDiagram-2B236MQR-Bs9dp-8a.js} +1 -1
  44. package/client/dist/assets/{pieDiagram-ENE6RG2P-CKV_rkhF.js → pieDiagram-ENE6RG2P-DBWILzB8.js} +1 -1
  45. package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-BuUsGwHh.js → quadrantDiagram-ABIIQ3AL-DrCVJJx6.js} +1 -1
  46. package/client/dist/assets/{railroadDiagram-RFXS5EU6-BwwdKnFL.js → railroadDiagram-RFXS5EU6-BdPW2dNf.js} +1 -1
  47. package/client/dist/assets/{requirementDiagram-TGXJPOKE-CpQZouJV.js → requirementDiagram-TGXJPOKE-Bj_g3tC5.js} +1 -1
  48. package/client/dist/assets/{sankeyDiagram-HTMAVEWB-4fnDUNVa.js → sankeyDiagram-HTMAVEWB-BGL9NnsS.js} +1 -1
  49. package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-BOcaWlM0.js → sequenceDiagram-DBY2YBRQ-DEirxTZY.js} +1 -1
  50. package/client/dist/assets/{sizeCapture-X5ZJPWSS-_pv-9R0c.js → sizeCapture-X5ZJPWSS-BtLrvrea.js} +1 -1
  51. package/client/dist/assets/{stateDiagram-2N3HPSRC-CFwCOonY.js → stateDiagram-2N3HPSRC-D3GXIouX.js} +1 -1
  52. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-D3lXe_mJ.js +1 -0
  53. package/client/dist/assets/{swimlanes-5IMT3BWC-DFa2tzxu.js → swimlanes-5IMT3BWC-PMRQzNhU.js} +2 -2
  54. package/client/dist/assets/swimlanesDiagram-G3AALYLV-DMLbRFiO.js +8 -0
  55. package/client/dist/assets/{timeline-definition-FHXFAJF6-rhGYElgn.js → timeline-definition-FHXFAJF6-CnBKJtD_.js} +1 -1
  56. package/client/dist/assets/{vennDiagram-L72KCM5P-BoGjRxyA.js → vennDiagram-L72KCM5P-BYmiJYoh.js} +1 -1
  57. package/client/dist/assets/{wardleyDiagram-EHGQE667-D-IGv5bH.js → wardleyDiagram-EHGQE667-DU7vW8q3.js} +1 -1
  58. package/client/dist/assets/{xychartDiagram-FW5EYKEG-D9PFTCfm.js → xychartDiagram-FW5EYKEG-BEtPvBSU.js} +1 -1
  59. package/client/dist/index.html +2 -2
  60. package/lib/preflight.mjs +24 -5
  61. package/lib/util.mjs +5 -1
  62. package/package.json +1 -1
  63. package/scripts/deploy-procs.mjs +105 -20
  64. package/scripts/deploy-swap.mjs +23 -2
  65. package/server/dist/config.d.ts +9 -0
  66. package/server/dist/config.d.ts.map +1 -1
  67. package/server/dist/config.js +1 -0
  68. package/server/dist/config.js.map +1 -1
  69. package/server/dist/core/campaign-events.d.ts.map +1 -1
  70. package/server/dist/core/campaign-events.js +1 -0
  71. package/server/dist/core/campaign-events.js.map +1 -1
  72. package/server/dist/core/campaign-loop-state.d.ts.map +1 -1
  73. package/server/dist/core/campaign-loop-state.js +54 -21
  74. package/server/dist/core/campaign-loop-state.js.map +1 -1
  75. package/server/dist/core/campaign-parse.d.ts +4 -0
  76. package/server/dist/core/campaign-parse.d.ts.map +1 -1
  77. package/server/dist/core/campaign-parse.js +9 -0
  78. package/server/dist/core/campaign-parse.js.map +1 -1
  79. package/server/dist/core/campaign-readiness-schema.d.ts +33 -0
  80. package/server/dist/core/campaign-readiness-schema.d.ts.map +1 -0
  81. package/server/dist/core/campaign-readiness-schema.js +70 -0
  82. package/server/dist/core/campaign-readiness-schema.js.map +1 -0
  83. package/server/dist/core/campaign-readiness.d.ts +59 -0
  84. package/server/dist/core/campaign-readiness.d.ts.map +1 -0
  85. package/server/dist/core/campaign-readiness.js +163 -0
  86. package/server/dist/core/campaign-readiness.js.map +1 -0
  87. package/server/dist/core/campaign-status-json.d.ts +3 -0
  88. package/server/dist/core/campaign-status-json.d.ts.map +1 -1
  89. package/server/dist/core/campaign-status-json.js +7 -0
  90. package/server/dist/core/campaign-status-json.js.map +1 -1
  91. package/server/dist/core/campaign-store.d.ts.map +1 -1
  92. package/server/dist/core/campaign-store.js +4 -1
  93. package/server/dist/core/campaign-store.js.map +1 -1
  94. package/server/dist/core/campaign-types.d.ts +8 -0
  95. package/server/dist/core/campaign-types.d.ts.map +1 -1
  96. package/server/dist/core/campaign-worktree-root.d.ts +19 -0
  97. package/server/dist/core/campaign-worktree-root.d.ts.map +1 -0
  98. package/server/dist/core/campaign-worktree-root.js +76 -0
  99. package/server/dist/core/campaign-worktree-root.js.map +1 -0
  100. package/server/dist/core/claim-record-lock.d.ts +30 -0
  101. package/server/dist/core/claim-record-lock.d.ts.map +1 -0
  102. package/server/dist/core/claim-record-lock.js +90 -0
  103. package/server/dist/core/claim-record-lock.js.map +1 -0
  104. package/server/dist/core/cli-child-spawn.d.ts +28 -0
  105. package/server/dist/core/cli-child-spawn.d.ts.map +1 -0
  106. package/server/dist/core/cli-child-spawn.js +146 -0
  107. package/server/dist/core/cli-child-spawn.js.map +1 -0
  108. package/server/dist/core/codex-models-probe.d.ts +46 -0
  109. package/server/dist/core/codex-models-probe.d.ts.map +1 -0
  110. package/server/dist/core/codex-models-probe.js +103 -0
  111. package/server/dist/core/codex-models-probe.js.map +1 -0
  112. package/server/dist/core/codex-oracle-runner.d.ts +68 -0
  113. package/server/dist/core/codex-oracle-runner.d.ts.map +1 -0
  114. package/server/dist/core/codex-oracle-runner.js +124 -0
  115. package/server/dist/core/codex-oracle-runner.js.map +1 -0
  116. package/server/dist/core/codex-status-report.d.ts +6 -0
  117. package/server/dist/core/codex-status-report.d.ts.map +1 -0
  118. package/server/dist/core/codex-status-report.js +40 -0
  119. package/server/dist/core/codex-status-report.js.map +1 -0
  120. package/server/dist/core/codex-task-watcher-types.d.ts +69 -0
  121. package/server/dist/core/codex-task-watcher-types.d.ts.map +1 -0
  122. package/server/dist/core/codex-task-watcher-types.js +12 -0
  123. package/server/dist/core/codex-task-watcher-types.js.map +1 -0
  124. package/server/dist/core/codex-task-watcher.d.ts +30 -0
  125. package/server/dist/core/codex-task-watcher.d.ts.map +1 -0
  126. package/server/dist/core/codex-task-watcher.js +252 -0
  127. package/server/dist/core/codex-task-watcher.js.map +1 -0
  128. package/server/dist/core/codex-terminal-signal-detect.d.ts +7 -0
  129. package/server/dist/core/codex-terminal-signal-detect.d.ts.map +1 -0
  130. package/server/dist/core/codex-terminal-signal-detect.js +113 -0
  131. package/server/dist/core/codex-terminal-signal-detect.js.map +1 -0
  132. package/server/dist/core/codex-thread-discovery.d.ts +21 -0
  133. package/server/dist/core/codex-thread-discovery.d.ts.map +1 -0
  134. package/server/dist/core/codex-thread-discovery.js +169 -0
  135. package/server/dist/core/codex-thread-discovery.js.map +1 -0
  136. package/server/dist/core/codextender-auth-file-sweep.d.ts +41 -0
  137. package/server/dist/core/codextender-auth-file-sweep.d.ts.map +1 -0
  138. package/server/dist/core/codextender-auth-file-sweep.js +97 -0
  139. package/server/dist/core/codextender-auth-file-sweep.js.map +1 -0
  140. package/server/dist/core/codextender-proxy-probe.d.ts +80 -0
  141. package/server/dist/core/codextender-proxy-probe.d.ts.map +1 -0
  142. package/server/dist/core/codextender-proxy-probe.js +179 -0
  143. package/server/dist/core/codextender-proxy-probe.js.map +1 -0
  144. package/server/dist/core/contract-version.d.ts +16 -1
  145. package/server/dist/core/contract-version.d.ts.map +1 -1
  146. package/server/dist/core/contract-version.js +16 -1
  147. package/server/dist/core/contract-version.js.map +1 -1
  148. package/server/dist/core/launcher-codex.d.ts +61 -0
  149. package/server/dist/core/launcher-codex.d.ts.map +1 -0
  150. package/server/dist/core/launcher-codex.js +187 -0
  151. package/server/dist/core/launcher-codex.js.map +1 -0
  152. package/server/dist/core/launcher-codextender-env.d.ts +44 -0
  153. package/server/dist/core/launcher-codextender-env.d.ts.map +1 -0
  154. package/server/dist/core/launcher-codextender-env.js +212 -0
  155. package/server/dist/core/launcher-codextender-env.js.map +1 -0
  156. package/server/dist/core/launcher-codextender.d.ts +72 -0
  157. package/server/dist/core/launcher-codextender.d.ts.map +1 -0
  158. package/server/dist/core/launcher-codextender.js +98 -0
  159. package/server/dist/core/launcher-codextender.js.map +1 -0
  160. package/server/dist/core/launcher-codextender.smoke-helpers.d.ts +25 -0
  161. package/server/dist/core/launcher-codextender.smoke-helpers.d.ts.map +1 -0
  162. package/server/dist/core/launcher-codextender.smoke-helpers.js +211 -0
  163. package/server/dist/core/launcher-codextender.smoke-helpers.js.map +1 -0
  164. package/server/dist/core/launcher-permission-flags.d.ts +17 -0
  165. package/server/dist/core/launcher-permission-flags.d.ts.map +1 -0
  166. package/server/dist/core/launcher-permission-flags.js +27 -0
  167. package/server/dist/core/launcher-permission-flags.js.map +1 -0
  168. package/server/dist/core/launcher.d.ts +18 -0
  169. package/server/dist/core/launcher.d.ts.map +1 -1
  170. package/server/dist/core/launcher.js +6 -0
  171. package/server/dist/core/launcher.js.map +1 -1
  172. package/server/dist/core/leadwright-preflight-transport.d.ts +27 -0
  173. package/server/dist/core/leadwright-preflight-transport.d.ts.map +1 -0
  174. package/server/dist/core/leadwright-preflight-transport.js +124 -0
  175. package/server/dist/core/leadwright-preflight-transport.js.map +1 -0
  176. package/server/dist/core/mission-context/artifacts-tests-ac.d.ts +6 -0
  177. package/server/dist/core/mission-context/artifacts-tests-ac.d.ts.map +1 -0
  178. package/server/dist/core/mission-context/artifacts-tests-ac.js +31 -0
  179. package/server/dist/core/mission-context/artifacts-tests-ac.js.map +1 -0
  180. package/server/dist/core/mission-context/artifacts-tests.d.ts.map +1 -1
  181. package/server/dist/core/mission-context/artifacts-tests.js +20 -0
  182. package/server/dist/core/mission-context/artifacts-tests.js.map +1 -1
  183. package/server/dist/core/mission-context/resolver-io.d.ts +10 -0
  184. package/server/dist/core/mission-context/resolver-io.d.ts.map +1 -1
  185. package/server/dist/core/mission-context/resolver-parts.d.ts +8 -7
  186. package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -1
  187. package/server/dist/core/mission-context/resolver-parts.js +22 -14
  188. package/server/dist/core/mission-context/resolver-parts.js.map +1 -1
  189. package/server/dist/core/mission-context/resolver.d.ts.map +1 -1
  190. package/server/dist/core/mission-context/resolver.js +1 -1
  191. package/server/dist/core/mission-context/resolver.js.map +1 -1
  192. package/server/dist/core/mission-context/run-id-recovery.d.ts +18 -2
  193. package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -1
  194. package/server/dist/core/mission-context/run-id-recovery.js +38 -18
  195. package/server/dist/core/mission-context/run-id-recovery.js.map +1 -1
  196. package/server/dist/core/mission-context/traceability.d.ts.map +1 -1
  197. package/server/dist/core/mission-context/traceability.js +15 -1
  198. package/server/dist/core/mission-context/traceability.js.map +1 -1
  199. package/server/dist/core/mission-context/types-slice2.d.ts +44 -0
  200. package/server/dist/core/mission-context/types-slice2.d.ts.map +1 -1
  201. package/server/dist/core/model-tier-config-reader.d.ts +14 -1
  202. package/server/dist/core/model-tier-config-reader.d.ts.map +1 -1
  203. package/server/dist/core/model-tier-config-reader.js +34 -2
  204. package/server/dist/core/model-tier-config-reader.js.map +1 -1
  205. package/server/dist/core/powershell-probe.smoke-helpers.d.ts +12 -0
  206. package/server/dist/core/powershell-probe.smoke-helpers.d.ts.map +1 -0
  207. package/server/dist/core/powershell-probe.smoke-helpers.js +80 -0
  208. package/server/dist/core/powershell-probe.smoke-helpers.js.map +1 -0
  209. package/server/dist/core/readiness-install-hints.d.ts +1 -1
  210. package/server/dist/core/readiness-install-hints.d.ts.map +1 -1
  211. package/server/dist/core/readiness-install-hints.js +5 -0
  212. package/server/dist/core/readiness-install-hints.js.map +1 -1
  213. package/server/dist/core/readiness-probe-run.d.ts +61 -0
  214. package/server/dist/core/readiness-probe-run.d.ts.map +1 -1
  215. package/server/dist/core/readiness-probe-run.js +93 -15
  216. package/server/dist/core/readiness-probe-run.js.map +1 -1
  217. package/server/dist/core/readiness-probe.d.ts +1 -1
  218. package/server/dist/core/readiness-probe.d.ts.map +1 -1
  219. package/server/dist/core/readiness-probe.js +36 -8
  220. package/server/dist/core/readiness-probe.js.map +1 -1
  221. package/server/dist/core/sdk-sessions-store.d.ts +46 -0
  222. package/server/dist/core/sdk-sessions-store.d.ts.map +1 -1
  223. package/server/dist/core/sdk-sessions-store.js +1 -0
  224. package/server/dist/core/sdk-sessions-store.js.map +1 -1
  225. package/server/dist/core/sdk-sessions-validate.d.ts.map +1 -1
  226. package/server/dist/core/sdk-sessions-validate.js +11 -0
  227. package/server/dist/core/sdk-sessions-validate.js.map +1 -1
  228. package/server/dist/core/settings-reader.d.ts +18 -0
  229. package/server/dist/core/settings-reader.d.ts.map +1 -0
  230. package/server/dist/core/settings-reader.js +40 -0
  231. package/server/dist/core/settings-reader.js.map +1 -0
  232. package/server/dist/core/shell-quote.d.ts +29 -0
  233. package/server/dist/core/shell-quote.d.ts.map +1 -1
  234. package/server/dist/core/shell-quote.js +34 -0
  235. package/server/dist/core/shell-quote.js.map +1 -1
  236. package/server/dist/core/task-editability.d.ts +1 -1
  237. package/server/dist/core/task-editability.d.ts.map +1 -1
  238. package/server/dist/core/task-editability.js +1 -0
  239. package/server/dist/core/task-editability.js.map +1 -1
  240. package/server/dist/core/triage-cli-runner.d.ts.map +1 -1
  241. package/server/dist/core/triage-cli-runner.js +6 -21
  242. package/server/dist/core/triage-cli-runner.js.map +1 -1
  243. package/server/dist/core/triage-compose.d.ts.map +1 -1
  244. package/server/dist/core/triage-compose.js +34 -3
  245. package/server/dist/core/triage-compose.js.map +1 -1
  246. package/server/dist/core/triage-store.d.ts +2 -1
  247. package/server/dist/core/triage-store.d.ts.map +1 -1
  248. package/server/dist/core/triage-store.js +1 -1
  249. package/server/dist/core/triage-store.js.map +1 -1
  250. package/server/dist/external/create-external-routes-args.d.ts +122 -0
  251. package/server/dist/external/create-external-routes-args.d.ts.map +1 -0
  252. package/server/dist/external/create-external-routes-args.js +2 -0
  253. package/server/dist/external/create-external-routes-args.js.map +1 -0
  254. package/server/dist/external/inbox/_codex.d.ts +14 -0
  255. package/server/dist/external/inbox/_codex.d.ts.map +1 -0
  256. package/server/dist/external/inbox/_codex.js +88 -0
  257. package/server/dist/external/inbox/_codex.js.map +1 -0
  258. package/server/dist/external/inbox/_derive.d.ts.map +1 -1
  259. package/server/dist/external/inbox/_derive.js +11 -0
  260. package/server/dist/external/inbox/_derive.js.map +1 -1
  261. package/server/dist/external/inbox/_types.d.ts +23 -0
  262. package/server/dist/external/inbox/_types.d.ts.map +1 -1
  263. package/server/dist/external/inbox/_types.js +8 -5
  264. package/server/dist/external/inbox/_types.js.map +1 -1
  265. package/server/dist/external/inbox/routes.d.ts +7 -0
  266. package/server/dist/external/inbox/routes.d.ts.map +1 -1
  267. package/server/dist/external/inbox/routes.js +15 -2
  268. package/server/dist/external/inbox/routes.js.map +1 -1
  269. package/server/dist/external/launch/_helpers.d.ts +4 -0
  270. package/server/dist/external/launch/_helpers.d.ts.map +1 -1
  271. package/server/dist/external/launch/_helpers.js.map +1 -1
  272. package/server/dist/external/launch/action-substitution-branch.d.ts +12 -0
  273. package/server/dist/external/launch/action-substitution-branch.d.ts.map +1 -1
  274. package/server/dist/external/launch/action-substitution-branch.js +35 -1
  275. package/server/dist/external/launch/action-substitution-branch.js.map +1 -1
  276. package/server/dist/external/launch/branch-dispatch.d.ts +15 -0
  277. package/server/dist/external/launch/branch-dispatch.d.ts.map +1 -0
  278. package/server/dist/external/launch/branch-dispatch.js +73 -0
  279. package/server/dist/external/launch/branch-dispatch.js.map +1 -0
  280. package/server/dist/external/launch/campaign-step-branch.d.ts +7 -1
  281. package/server/dist/external/launch/campaign-step-branch.d.ts.map +1 -1
  282. package/server/dist/external/launch/campaign-step-branch.js +70 -2
  283. package/server/dist/external/launch/campaign-step-branch.js.map +1 -1
  284. package/server/dist/external/launch/claim-executor-permissions.d.ts +31 -0
  285. package/server/dist/external/launch/claim-executor-permissions.d.ts.map +1 -0
  286. package/server/dist/external/launch/claim-executor-permissions.js +107 -0
  287. package/server/dist/external/launch/claim-executor-permissions.js.map +1 -0
  288. package/server/dist/external/launch/claim-executor-template-arming.d.ts +42 -0
  289. package/server/dist/external/launch/claim-executor-template-arming.d.ts.map +1 -0
  290. package/server/dist/external/launch/claim-executor-template-arming.js +121 -0
  291. package/server/dist/external/launch/claim-executor-template-arming.js.map +1 -0
  292. package/server/dist/external/launch/claim-holder-gate.d.ts +9 -0
  293. package/server/dist/external/launch/claim-holder-gate.d.ts.map +1 -1
  294. package/server/dist/external/launch/claim-holder-gate.js +10 -2
  295. package/server/dist/external/launch/claim-holder-gate.js.map +1 -1
  296. package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts +3 -0
  297. package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts.map +1 -0
  298. package/server/dist/external/launch/claim-permission-perimeter-assert.js +24 -0
  299. package/server/dist/external/launch/claim-permission-perimeter-assert.js.map +1 -0
  300. package/server/dist/external/launch/legacy-fallback-branch.d.ts +14 -0
  301. package/server/dist/external/launch/legacy-fallback-branch.d.ts.map +1 -1
  302. package/server/dist/external/launch/legacy-fallback-branch.js +3 -1
  303. package/server/dist/external/launch/legacy-fallback-branch.js.map +1 -1
  304. package/server/dist/external/launch/master-run-branch.js +2 -2
  305. package/server/dist/external/launch/master-run-branch.js.map +1 -1
  306. package/server/dist/external/launch/mixed-intents-guard.d.ts +10 -0
  307. package/server/dist/external/launch/mixed-intents-guard.d.ts.map +1 -0
  308. package/server/dist/external/launch/mixed-intents-guard.js +49 -0
  309. package/server/dist/external/launch/mixed-intents-guard.js.map +1 -0
  310. package/server/dist/external/launch/parse-body.d.ts +29 -0
  311. package/server/dist/external/launch/parse-body.d.ts.map +1 -1
  312. package/server/dist/external/launch/parse-body.js +66 -0
  313. package/server/dist/external/launch/parse-body.js.map +1 -1
  314. package/server/dist/external/launch/routes.d.ts +3 -0
  315. package/server/dist/external/launch/routes.d.ts.map +1 -1
  316. package/server/dist/external/launch/routes.js +76 -109
  317. package/server/dist/external/launch/routes.js.map +1 -1
  318. package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts +20 -0
  319. package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts.map +1 -0
  320. package/server/dist/external/launch/runtime-chokepoint-codextender.js +51 -0
  321. package/server/dist/external/launch/runtime-chokepoint-codextender.js.map +1 -0
  322. package/server/dist/external/launch/runtime-chokepoint-errors.d.ts +33 -0
  323. package/server/dist/external/launch/runtime-chokepoint-errors.d.ts.map +1 -0
  324. package/server/dist/external/launch/runtime-chokepoint-errors.js +63 -0
  325. package/server/dist/external/launch/runtime-chokepoint-errors.js.map +1 -0
  326. package/server/dist/external/launch/runtime-chokepoint.d.ts +120 -0
  327. package/server/dist/external/launch/runtime-chokepoint.d.ts.map +1 -0
  328. package/server/dist/external/launch/runtime-chokepoint.js +201 -0
  329. package/server/dist/external/launch/runtime-chokepoint.js.map +1 -0
  330. package/server/dist/external/mission-context/routes.d.ts +33 -27
  331. package/server/dist/external/mission-context/routes.d.ts.map +1 -1
  332. package/server/dist/external/mission-context/routes.js +30 -27
  333. package/server/dist/external/mission-context/routes.js.map +1 -1
  334. package/server/dist/external/mission-context/test-harness.d.ts +6 -0
  335. package/server/dist/external/mission-context/test-harness.d.ts.map +1 -1
  336. package/server/dist/external/mission-context/test-harness.js +6 -1
  337. package/server/dist/external/mission-context/test-harness.js.map +1 -1
  338. package/server/dist/external/mission-context/wire.d.ts.map +1 -1
  339. package/server/dist/external/mission-context/wire.js +24 -2
  340. package/server/dist/external/mission-context/wire.js.map +1 -1
  341. package/server/dist/external/org/audit-log.d.ts +19 -0
  342. package/server/dist/external/org/audit-log.d.ts.map +1 -1
  343. package/server/dist/external/org/audit-log.js +33 -18
  344. package/server/dist/external/org/audit-log.js.map +1 -1
  345. package/server/dist/external/org/beat-effect-audit-read.d.ts +15 -0
  346. package/server/dist/external/org/beat-effect-audit-read.d.ts.map +1 -0
  347. package/server/dist/external/org/beat-effect-audit-read.js +73 -0
  348. package/server/dist/external/org/beat-effect-audit-read.js.map +1 -0
  349. package/server/dist/external/org/beat-register-health.d.ts +57 -0
  350. package/server/dist/external/org/beat-register-health.d.ts.map +1 -0
  351. package/server/dist/external/org/beat-register-health.js +125 -0
  352. package/server/dist/external/org/beat-register-health.js.map +1 -0
  353. package/server/dist/external/org/beat-register-release-core.d.ts.map +1 -1
  354. package/server/dist/external/org/beat-register-release-core.js +4 -1
  355. package/server/dist/external/org/beat-register-release-core.js.map +1 -1
  356. package/server/dist/external/org/beat-register-release-request.d.ts +20 -0
  357. package/server/dist/external/org/beat-register-release-request.d.ts.map +1 -0
  358. package/server/dist/external/org/beat-register-release-request.js +92 -0
  359. package/server/dist/external/org/beat-register-release-request.js.map +1 -0
  360. package/server/dist/external/org/beat-register-release.d.ts +3 -1
  361. package/server/dist/external/org/beat-register-release.d.ts.map +1 -1
  362. package/server/dist/external/org/beat-register-release.js +15 -57
  363. package/server/dist/external/org/beat-register-release.js.map +1 -1
  364. package/server/dist/external/org/beat-register.d.ts +18 -20
  365. package/server/dist/external/org/beat-register.d.ts.map +1 -1
  366. package/server/dist/external/org/beat-register.js +30 -56
  367. package/server/dist/external/org/beat-register.js.map +1 -1
  368. package/server/dist/external/org/beat-steps-read.d.ts +17 -0
  369. package/server/dist/external/org/beat-steps-read.d.ts.map +1 -0
  370. package/server/dist/external/org/beat-steps-read.js +89 -0
  371. package/server/dist/external/org/beat-steps-read.js.map +1 -0
  372. package/server/dist/external/org/charter-authority-read.d.ts +39 -0
  373. package/server/dist/external/org/charter-authority-read.d.ts.map +1 -0
  374. package/server/dist/external/org/charter-authority-read.js +142 -0
  375. package/server/dist/external/org/charter-authority-read.js.map +1 -0
  376. package/server/dist/external/org/commit-validate.d.ts +18 -0
  377. package/server/dist/external/org/commit-validate.d.ts.map +1 -0
  378. package/server/dist/external/org/commit-validate.js +59 -0
  379. package/server/dist/external/org/commit-validate.js.map +1 -0
  380. package/server/dist/external/org/commit-writes.d.ts +68 -0
  381. package/server/dist/external/org/commit-writes.d.ts.map +1 -0
  382. package/server/dist/external/org/commit-writes.js +110 -0
  383. package/server/dist/external/org/commit-writes.js.map +1 -0
  384. package/server/dist/external/org/commit.d.ts +73 -0
  385. package/server/dist/external/org/commit.d.ts.map +1 -0
  386. package/server/dist/external/org/commit.js +181 -0
  387. package/server/dist/external/org/commit.js.map +1 -0
  388. package/server/dist/external/org/commit.test-fixtures.d.ts +38 -0
  389. package/server/dist/external/org/commit.test-fixtures.d.ts.map +1 -0
  390. package/server/dist/external/org/commit.test-fixtures.js +67 -0
  391. package/server/dist/external/org/commit.test-fixtures.js.map +1 -0
  392. package/server/dist/external/org/countersign-core.d.ts +19 -0
  393. package/server/dist/external/org/countersign-core.d.ts.map +1 -0
  394. package/server/dist/external/org/countersign-core.js +122 -0
  395. package/server/dist/external/org/countersign-core.js.map +1 -0
  396. package/server/dist/external/org/countersign-request.d.ts +14 -0
  397. package/server/dist/external/org/countersign-request.d.ts.map +1 -0
  398. package/server/dist/external/org/countersign-request.js +78 -0
  399. package/server/dist/external/org/countersign-request.js.map +1 -0
  400. package/server/dist/external/org/countersign.d.ts +6 -5
  401. package/server/dist/external/org/countersign.d.ts.map +1 -1
  402. package/server/dist/external/org/countersign.js +12 -141
  403. package/server/dist/external/org/countersign.js.map +1 -1
  404. package/server/dist/external/org/daemon-config-read.d.ts +31 -0
  405. package/server/dist/external/org/daemon-config-read.d.ts.map +1 -0
  406. package/server/dist/external/org/daemon-config-read.js +50 -0
  407. package/server/dist/external/org/daemon-config-read.js.map +1 -0
  408. package/server/dist/external/org/decisions-lock.d.ts +6 -4
  409. package/server/dist/external/org/decisions-lock.d.ts.map +1 -1
  410. package/server/dist/external/org/decisions-lock.js +9 -8
  411. package/server/dist/external/org/decisions-lock.js.map +1 -1
  412. package/server/dist/external/org/domains.d.ts +35 -0
  413. package/server/dist/external/org/domains.d.ts.map +1 -0
  414. package/server/dist/external/org/domains.js +29 -0
  415. package/server/dist/external/org/domains.js.map +1 -0
  416. package/server/dist/external/org/existing-charters-read.d.ts +5 -0
  417. package/server/dist/external/org/existing-charters-read.d.ts.map +1 -0
  418. package/server/dist/external/org/existing-charters-read.js +31 -0
  419. package/server/dist/external/org/existing-charters-read.js.map +1 -0
  420. package/server/dist/external/org/leadwright-proposal-merge.d.ts +54 -0
  421. package/server/dist/external/org/leadwright-proposal-merge.d.ts.map +1 -0
  422. package/server/dist/external/org/leadwright-proposal-merge.js +47 -0
  423. package/server/dist/external/org/leadwright-proposal-merge.js.map +1 -0
  424. package/server/dist/external/org/mount.d.ts +10 -2
  425. package/server/dist/external/org/mount.d.ts.map +1 -1
  426. package/server/dist/external/org/mount.js +6 -1
  427. package/server/dist/external/org/mount.js.map +1 -1
  428. package/server/dist/external/org/org-chart-full-read.d.ts +19 -0
  429. package/server/dist/external/org/org-chart-full-read.d.ts.map +1 -0
  430. package/server/dist/external/org/org-chart-full-read.js +58 -0
  431. package/server/dist/external/org/org-chart-full-read.js.map +1 -0
  432. package/server/dist/external/org/org-file-lock.d.ts +41 -0
  433. package/server/dist/external/org/org-file-lock.d.ts.map +1 -0
  434. package/server/dist/external/org/org-file-lock.js +90 -0
  435. package/server/dist/external/org/org-file-lock.js.map +1 -0
  436. package/server/dist/external/org/routes.d.ts +10 -0
  437. package/server/dist/external/org/routes.d.ts.map +1 -1
  438. package/server/dist/external/org/routes.js +22 -1
  439. package/server/dist/external/org/routes.js.map +1 -1
  440. package/server/dist/external/org/verdict.d.ts +57 -0
  441. package/server/dist/external/org/verdict.d.ts.map +1 -0
  442. package/server/dist/external/org/verdict.js +74 -0
  443. package/server/dist/external/org/verdict.js.map +1 -0
  444. package/server/dist/external/routes.d.ts +3 -101
  445. package/server/dist/external/routes.d.ts.map +1 -1
  446. package/server/dist/external/routes.js +19 -4
  447. package/server/dist/external/routes.js.map +1 -1
  448. package/server/dist/external/tasks/create.d.ts.map +1 -1
  449. package/server/dist/external/tasks/create.js +8 -0
  450. package/server/dist/external/tasks/create.js.map +1 -1
  451. package/server/dist/external/tasks/fork.d.ts +29 -0
  452. package/server/dist/external/tasks/fork.d.ts.map +1 -0
  453. package/server/dist/external/tasks/fork.js +166 -0
  454. package/server/dist/external/tasks/fork.js.map +1 -0
  455. package/server/dist/external/tasks/lifecycle.d.ts.map +1 -1
  456. package/server/dist/external/tasks/lifecycle.js +10 -57
  457. package/server/dist/external/tasks/lifecycle.js.map +1 -1
  458. package/server/dist/external/tasks/patch.d.ts.map +1 -1
  459. package/server/dist/external/tasks/patch.js +17 -0
  460. package/server/dist/external/tasks/patch.js.map +1 -1
  461. package/server/dist/external/tasks/routes.d.ts +2 -0
  462. package/server/dist/external/tasks/routes.d.ts.map +1 -1
  463. package/server/dist/external/tasks/routes.js +7 -0
  464. package/server/dist/external/tasks/routes.js.map +1 -1
  465. package/server/dist/external/transcript/routes.d.ts.map +1 -1
  466. package/server/dist/external/transcript/routes.js +25 -3
  467. package/server/dist/external/transcript/routes.js.map +1 -1
  468. package/server/dist/external-routes-wiring.d.ts +28 -0
  469. package/server/dist/external-routes-wiring.d.ts.map +1 -0
  470. package/server/dist/external-routes-wiring.js +61 -0
  471. package/server/dist/external-routes-wiring.js.map +1 -0
  472. package/server/dist/index.d.ts.map +1 -1
  473. package/server/dist/index.js +111 -44
  474. package/server/dist/index.js.map +1 -1
  475. package/server/dist/lib/resolveHonoHost.d.ts.map +1 -1
  476. package/server/dist/lib/resolveHonoHost.js +16 -1
  477. package/server/dist/lib/resolveHonoHost.js.map +1 -1
  478. package/server/dist/routes/_triage-api-harness.d.ts +1 -1
  479. package/server/dist/routes/_triage-api-harness.d.ts.map +1 -1
  480. package/server/dist/routes/_triage-api-harness.js.map +1 -1
  481. package/server/dist/routes/campaigns-readiness.d.ts +10 -0
  482. package/server/dist/routes/campaigns-readiness.d.ts.map +1 -0
  483. package/server/dist/routes/campaigns-readiness.js +58 -0
  484. package/server/dist/routes/campaigns-readiness.js.map +1 -0
  485. package/server/dist/routes/campaigns.d.ts.map +1 -1
  486. package/server/dist/routes/campaigns.js +3 -0
  487. package/server/dist/routes/campaigns.js.map +1 -1
  488. package/server/dist/routes/codex-models.d.ts +15 -0
  489. package/server/dist/routes/codex-models.d.ts.map +1 -0
  490. package/server/dist/routes/codex-models.js +77 -0
  491. package/server/dist/routes/codex-models.js.map +1 -0
  492. package/server/dist/routes/codextender-models.d.ts +16 -0
  493. package/server/dist/routes/codextender-models.d.ts.map +1 -0
  494. package/server/dist/routes/codextender-models.js +81 -0
  495. package/server/dist/routes/codextender-models.js.map +1 -0
  496. package/server/dist/routes/diagnostics.d.ts +15 -0
  497. package/server/dist/routes/diagnostics.d.ts.map +1 -1
  498. package/server/dist/routes/diagnostics.js +1 -0
  499. package/server/dist/routes/diagnostics.js.map +1 -1
  500. package/server/dist/routes/org-chart-lead-guard.d.ts +10 -0
  501. package/server/dist/routes/org-chart-lead-guard.d.ts.map +1 -0
  502. package/server/dist/routes/org-chart-lead-guard.js +49 -0
  503. package/server/dist/routes/org-chart-lead-guard.js.map +1 -0
  504. package/server/dist/routes/org-inventory-composite.d.ts +20 -0
  505. package/server/dist/routes/org-inventory-composite.d.ts.map +1 -0
  506. package/server/dist/routes/org-inventory-composite.js +100 -0
  507. package/server/dist/routes/org-inventory-composite.js.map +1 -0
  508. package/server/dist/routes/org-lead-setup-wizard.d.ts +10 -0
  509. package/server/dist/routes/org-lead-setup-wizard.d.ts.map +1 -0
  510. package/server/dist/routes/org-lead-setup-wizard.js +51 -0
  511. package/server/dist/routes/org-lead-setup-wizard.js.map +1 -0
  512. package/server/dist/routes/org-leads-composite.d.ts.map +1 -1
  513. package/server/dist/routes/org-leads-composite.js +35 -9
  514. package/server/dist/routes/org-leads-composite.js.map +1 -1
  515. package/server/dist/routes/org-writes.d.ts +14 -0
  516. package/server/dist/routes/org-writes.d.ts.map +1 -0
  517. package/server/dist/routes/org-writes.js +61 -0
  518. package/server/dist/routes/org-writes.js.map +1 -0
  519. package/server/dist/routes/org.d.ts +11 -2
  520. package/server/dist/routes/org.d.ts.map +1 -1
  521. package/server/dist/routes/org.js +50 -47
  522. package/server/dist/routes/org.js.map +1 -1
  523. package/server/dist/routes/settings.d.ts.map +1 -1
  524. package/server/dist/routes/settings.js +23 -2
  525. package/server/dist/routes/settings.js.map +1 -1
  526. package/server/dist/routes/triage.d.ts +17 -0
  527. package/server/dist/routes/triage.d.ts.map +1 -1
  528. package/server/dist/routes/triage.js +29 -0
  529. package/server/dist/routes/triage.js.map +1 -1
  530. package/server/dist/terminal/pty-manager.d.ts +14 -0
  531. package/server/dist/terminal/pty-manager.d.ts.map +1 -1
  532. package/server/dist/terminal/pty-manager.js +11 -0
  533. package/server/dist/terminal/pty-manager.js.map +1 -1
  534. package/server/dist/terminal/routes.d.ts.map +1 -1
  535. package/server/dist/terminal/routes.js +9 -0
  536. package/server/dist/terminal/routes.js.map +1 -1
  537. package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -1
  538. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -1
  539. package/server/dist/terminal/ws-upgrade-handler.fixtures.js +1 -0
  540. package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -1
  541. package/server/dist/terminal/ws-upgrade-handler.js +14 -5
  542. package/server/dist/terminal/ws-upgrade-handler.js.map +1 -1
  543. package/server/dist/test/event-test-counts-fixtures.d.ts +40 -0
  544. package/server/dist/test/event-test-counts-fixtures.d.ts.map +1 -0
  545. package/server/dist/test/event-test-counts-fixtures.js +56 -0
  546. package/server/dist/test/event-test-counts-fixtures.js.map +1 -0
  547. package/server/dist/types/leadwright-beat-step.d.ts +19 -0
  548. package/server/dist/types/leadwright-beat-step.d.ts.map +1 -0
  549. package/server/dist/types/leadwright-beat-step.js +56 -0
  550. package/server/dist/types/leadwright-beat-step.js.map +1 -0
  551. package/server/dist/types/leadwright-preflight.d.ts +90 -0
  552. package/server/dist/types/leadwright-preflight.d.ts.map +1 -0
  553. package/server/dist/types/leadwright-preflight.js +65 -0
  554. package/server/dist/types/leadwright-preflight.js.map +1 -0
  555. package/server/dist/types/leadwright-schema-drift.d.ts +28 -0
  556. package/server/dist/types/leadwright-schema-drift.d.ts.map +1 -0
  557. package/server/dist/types/leadwright-schema-drift.js +89 -0
  558. package/server/dist/types/leadwright-schema-drift.js.map +1 -0
  559. package/server/dist/types/org-inventory.d.ts +53 -0
  560. package/server/dist/types/org-inventory.d.ts.map +1 -0
  561. package/server/dist/types/org-inventory.js +11 -0
  562. package/server/dist/types/org-inventory.js.map +1 -0
  563. package/server/dist/types/org.d.ts +57 -6
  564. package/server/dist/types/org.d.ts.map +1 -1
  565. package/server/dist/types/run-config-retry.d.ts +29 -0
  566. package/server/dist/types/run-config-retry.d.ts.map +1 -0
  567. package/server/dist/types/run-config-retry.js +47 -0
  568. package/server/dist/types/run-config-retry.js.map +1 -0
  569. package/server/dist/types/run-config-v2.d.ts +29 -41
  570. package/server/dist/types/run-config-v2.d.ts.map +1 -1
  571. package/server/dist/types/run-config-v2.js +16 -50
  572. package/server/dist/types/run-config-v2.js.map +1 -1
  573. package/server/dist/types/settings.d.ts +33 -0
  574. package/server/dist/types/settings.d.ts.map +1 -1
  575. package/server/dist/vendor/leadwright/beat-step.schema.json +83 -0
  576. package/server/dist/vendor/leadwright/claim-record-lock-contract.json +15 -0
  577. package/server/dist/vendor/leadwright/org-chart.schema.json +195 -0
  578. package/server/dist/vendor/leadwright/preflight-input.schema.json +318 -0
  579. package/server/dist/vendor/leadwright/preflight-result.schema.json +56 -0
  580. package/server/package.json +1 -1
  581. package/client/dist/assets/channel-BfmIcrp7.js +0 -1
  582. package/client/dist/assets/classDiagram-OUVF2IWQ-HfUQZ6Uc.js +0 -1
  583. package/client/dist/assets/classDiagram-v2-EOCWNBFH-HfUQZ6Uc.js +0 -1
  584. package/client/dist/assets/index-CKU9dY18.css +0 -1
  585. package/client/dist/assets/index-DOMl6atu.js +0 -847
  586. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-srkiu3Ib.js +0 -1
  587. package/client/dist/assets/swimlanesDiagram-G3AALYLV-Dq-0K9Zm.js +0 -8
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import { usageCore } from "../external/org/usage.js";
13
13
  import { lastRunCore } from "../external/org/last-run.js";
14
- import { beatRegisterHealthCore } from "../external/org/beat-register.js";
14
+ import { beatRegisterHealthCore } from "../external/org/beat-register-health.js";
15
15
  import { orgFileReadCore } from "../external/org/file-read.js";
16
16
  import { cronIntervalMs } from "../external/org/cron.js";
17
17
  import { extractRoleSentence } from "../external/org/role-extract.js";
@@ -38,8 +38,23 @@ function buildCadence(orgInfo, now) {
38
38
  return { measured: false };
39
39
  return { measured: true, text: formatCadence(interval.ms), cron: orgInfo.cron };
40
40
  }
41
- function buildNow(deps, leadId, orgInfo) {
42
- const health = beatRegisterHealthCore({ leadsRoot: deps.leadsRoot, lstatSync: deps.lstatSync }, leadId);
41
+ /** The `register` roster field's own degrade — a read failure (symlink
42
+ * refusal, corrupt file, path traversal, read error) is `{status:
43
+ * "unknown"}`, NEVER `{status: "clear"}` (internal-plan-review finding,
44
+ * HIGH: `clear` is an assertion "no open entry", not an absence-of-data
45
+ * marker — collapsing a deliberate security refusal or a corrupt register
46
+ * into "no problem here" would fabricate exactly the health claim this
47
+ * field exists to surface honestly). ENOENT (no register file at all) is
48
+ * already mapped to `200 clear` INSIDE `beatRegisterHealthCore` (mirrors
49
+ * leadwright's own "no file = clear" reading) — it never reaches this
50
+ * degrade at all. Deliberately DIFFERENT from `buildNow`'s degrade for the
51
+ * SAME read failure (`not-measured`, unchanged from before this field
52
+ * existed) — the Now line's failure semantics are not touched by adding
53
+ * this sibling field. */
54
+ function registerFieldFor(health, leadId) {
55
+ return health.status === 200 ? health.body : { leadId, status: "unknown" };
56
+ }
57
+ function buildNow(deps, leadId, orgInfo, health) {
43
58
  if (health.status !== 200)
44
59
  return { state: "not-measured" };
45
60
  if (health.body.status === "fault") {
@@ -48,10 +63,11 @@ function buildNow(deps, leadId, orgInfo) {
48
63
  if (health.body.status === "open") {
49
64
  return { state: "running" };
50
65
  }
51
- // status === "clear" — Resting; text sourced from last-run. `orgInfo` was
52
- // already resolved once for the whole composite request (see
53
- // `buildLeadRosterEntry`) — passed through so `lastRunCore` doesn't
54
- // re-parse `org-chart.json` per lead.
66
+ // status === "clear" — Resting; text + staleness sourced from last-run,
67
+ // taken verbatim (never recomputed here). `orgInfo` was already resolved
68
+ // once for the whole composite request (see `buildLeadRosterEntry`) —
69
+ // passed through so `lastRunCore` doesn't re-parse `org-chart.json` per
70
+ // lead.
55
71
  const lastRun = lastRunCore({ leadsRoot: deps.leadsRoot, lstatSync: deps.lstatSync, orgInfo }, leadId);
56
72
  if (lastRun.status !== 200)
57
73
  return { state: "not-measured" };
@@ -60,7 +76,12 @@ function buildNow(deps, leadId, orgInfo) {
60
76
  }
61
77
  return {
62
78
  state: "resting",
63
- lastRun: { measured: true, lastRunAt: lastRun.body.lastRunAt },
79
+ lastRun: {
80
+ measured: true,
81
+ lastRunAt: lastRun.body.lastRunAt,
82
+ staleness: lastRun.body.staleness,
83
+ cadenceUnresolvedReason: lastRun.body.cadenceUnresolvedReason,
84
+ },
64
85
  };
65
86
  }
66
87
  function buildRole(deps, leadId) {
@@ -81,15 +102,20 @@ export function buildLeadRosterEntry(deps, leadId, lead,
81
102
  */
82
103
  orgInfo) {
83
104
  const now = deps.now ?? (() => new Date());
105
+ // Read once, feed both `now` (running/needs-attention/clear branching,
106
+ // unchanged) and the `register` field below — was two reads before this
107
+ // field existed (buildNow had its own private call).
108
+ const registerHealth = beatRegisterHealthCore({ leadsRoot: deps.leadsRoot, lstatSync: deps.lstatSync }, leadId);
84
109
  return {
85
110
  leadId,
86
111
  domain: lead.domain,
87
112
  name: lead.name,
88
113
  reportsTo: lead.reports_to,
89
114
  role: buildRole(deps, leadId),
90
- now: buildNow(deps, leadId, orgInfo),
115
+ now: buildNow(deps, leadId, orgInfo, registerHealth),
91
116
  cadence: buildCadence(orgInfo, now()),
92
117
  usage: buildUsage(deps, leadId),
118
+ register: registerFieldFor(registerHealth, leadId),
93
119
  };
94
120
  }
95
121
  //# sourceMappingURL=org-leads-composite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"org-leads-composite.js","sourceRoot":"","sources":["../../src/routes/org-leads-composite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"org-leads-composite.js","sourceRoot":"","sources":["../../src/routes/org-leads-composite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Hono } from "hono";
2
+ import type { OrgFileWriteDeps } from "../external/org/file-write.js";
3
+ import type { BeatRegisterLockOptions } from "../external/org/beat-register-release-core.js";
4
+ export interface OrgWriteActionsDeps {
5
+ leadsRoot: string;
6
+ lstatSync?: OrgFileWriteDeps["lstatSync"];
7
+ withDecisionsLock?: OrgFileWriteDeps["withDecisionsLock"];
8
+ now?: () => Date;
9
+ /** Beat-register release lock tuning — defaults to the same
10
+ * `DEFAULT_LOCK_OPTIONS` the secret-gated release route uses. */
11
+ releaseLockOptions?: BeatRegisterLockOptions;
12
+ }
13
+ export declare function registerOrgWriteActions(app: Hono, deps: OrgWriteActionsDeps): void;
14
+ //# sourceMappingURL=org-writes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-writes.d.ts","sourceRoot":"","sources":["../../src/routes/org-writes.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAK7F,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC1C,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAC1D,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB;sEACkE;IAClE,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;CAC9C;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI,CA4ClF"}
@@ -0,0 +1,61 @@
1
+ /*
2
+ * routes/org-writes.ts — the plain surface's two `:leadId`-independent-vs-
3
+ * dependent "action" writes (as opposed to the charter PUT's document
4
+ * write, which stays in `org.ts`), split out once the countersign route
5
+ * pushed `org.ts` over the 300-line convention. Both mirror a secret-gated
6
+ * twin's contract exactly via a shared core — same validation, same status
7
+ * mapping, same lock/mutate action — never a second implementation:
8
+ *
9
+ * POST /api/org/leads/:leadId/beat-register/release — the SECOND browser
10
+ * write (iterate-2026-09-06-org-lead-staleness-register, FR-04.41), via
11
+ * `handleReleaseRequest` (`beat-register-release-request.ts`). Gated by
12
+ * `requireChartLead` BEFORE body parsing (finding #11) — an
13
+ * unregistered leadId never reaches the register at all.
14
+ * POST /api/org/decisions/countersign — the THIRD browser write
15
+ * (iterate-2026-09-06-decisions-proposed-countersign), via
16
+ * `handleCountersignRequest` (`countersign-request.ts`). Not
17
+ * lead-scoped (no `:leadId` path segment — the request body's own
18
+ * `{timestamp, leadId}` pair identifies the proposal), so it carries no
19
+ * `requireChartLead` gate; the FR-04.28 lock + allowlist-resolved paths
20
+ * are the only guards, same as the gated route.
21
+ */
22
+ import { handleReleaseRequest } from "../external/org/beat-register-release-request.js";
23
+ import { handleCountersignRequest } from "../external/org/countersign-request.js";
24
+ import { requireChartLead } from "./org-chart-lead-guard.js";
25
+ export function registerOrgWriteActions(app, deps) {
26
+ const { leadsRoot } = deps;
27
+ app.post("/api/org/leads/:leadId/beat-register/release", async (c) => {
28
+ const leadId = c.req.param("leadId");
29
+ const gate = requireChartLead(c, leadId, { leadsRoot, lstatSync: deps.lstatSync });
30
+ if (!gate.ok)
31
+ return gate.response;
32
+ let body;
33
+ try {
34
+ body = await c.req.json();
35
+ }
36
+ catch {
37
+ return c.json({ error: "invalid_json" }, 400);
38
+ }
39
+ // `handleReleaseRequest` owns the `lstatSync`/`lockOptions`/`now`
40
+ // defaulting itself (external-review fix, GLM: two independent
41
+ // defaulting sites for the same deps is the drift risk finding #5
42
+ // already extracted this function to prevent) — pass deps through
43
+ // unresolved.
44
+ const result = await handleReleaseRequest({ leadsRoot, lstatSync: deps.lstatSync, lockOptions: deps.releaseLockOptions, now: deps.now }, leadId, body);
45
+ return c.json(result.body, result.status);
46
+ });
47
+ app.post("/api/org/decisions/countersign", async (c) => {
48
+ let body;
49
+ try {
50
+ body = await c.req.json();
51
+ }
52
+ catch {
53
+ return c.json({ error: "invalid_json" }, 400);
54
+ }
55
+ // `handleCountersignRequest` owns the `lstatSync`/`withDecisionsLock`
56
+ // defaulting itself, same rationale as `handleReleaseRequest` above.
57
+ const result = await handleCountersignRequest({ leadsRoot, lstatSync: deps.lstatSync, withDecisionsLock: deps.withDecisionsLock }, body);
58
+ return c.json(result.body, result.status);
59
+ });
60
+ }
61
+ //# sourceMappingURL=org-writes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-writes.js","sourceRoot":"","sources":["../../src/routes/org-writes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAY7D,MAAM,UAAU,uBAAuB,CAAC,GAAS,EAAE,IAAyB;IAC1E,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAE3B,GAAG,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACnE,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QAEnC,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QAED,kEAAkE;QAClE,+DAA+D;QAC/D,kEAAkE;QAClE,kEAAkE;QAClE,cAAc;QACd,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAC7F,MAAM,EACN,IAAI,CACL,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrD,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QAED,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAC3C,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,EACnF,IAAI,CACL,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -2,6 +2,8 @@ import { Hono } from "hono";
2
2
  import { type OrgFileReadDeps } from "../external/org/file-read.js";
3
3
  import { type OrgFileWriteDeps } from "../external/org/file-write.js";
4
4
  import { type TaskTitleLookup } from "./org-threads-composite.js";
5
+ import type { BeatRegisterLockOptions } from "../external/org/beat-register-release-core.js";
6
+ import type { TaskDomainLookup } from "../external/org/domains.js";
5
7
  export interface OrgApiRouterDeps {
6
8
  leadsRoot: string;
7
9
  /** The application's resolved bind host — passed through, never re-derived. */
@@ -11,10 +13,17 @@ export interface OrgApiRouterDeps {
11
13
  openSync?: OrgFileReadDeps["openSync"];
12
14
  withDecisionsLock?: OrgFileWriteDeps["withDecisionsLock"];
13
15
  now?: () => Date;
16
+ /** Beat-register release lock tuning — defaults to the same
17
+ * `DEFAULT_LOCK_OPTIONS` the secret-gated release route uses. */
18
+ releaseLockOptions?: BeatRegisterLockOptions;
14
19
  /** FR-04.42 — task-title lookup for `GET /api/org/threads`. Omitted
15
20
  * (e.g. in tests that don't exercise that route) falls back to raw
16
- * taskIds instead of a real title. */
17
- store?: TaskTitleLookup;
21
+ * taskIds instead of a real title. Also backs (W14)
22
+ * `GET /api/org/domains`' task-domain aggregation. */
23
+ store?: TaskTitleLookup & TaskDomainLookup;
24
+ /** iterate-2026-09-07-leadwright-setup-wizard (W14) — see OrgRouterDeps. */
25
+ leadwrightCheckoutRoot?: string;
26
+ webuiBaseUrl?: string;
18
27
  }
19
28
  export declare function createOrgApiRouter(deps: OrgApiRouterDeps): Hono;
20
29
  //# sourceMappingURL=org.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/routes/org.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAK1C,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAOnF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACvC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAC1D,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB;;2CAEuC;IACvC,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CA+L/D"}
1
+ {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/routes/org.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAInF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAI7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAKnE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACvC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAC1D,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB;sEACkE;IAClE,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C;;;2DAGuD;IACvD,KAAK,CAAC,EAAE,eAAe,GAAG,gBAAgB,CAAC;IAC3C,4EAA4E;IAC5E,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAgM/D"}
@@ -21,22 +21,29 @@
21
21
  * shared-documents block (org-chart.json's sibling docs: conventions.md,
22
22
  * principal.md, decision_log.md) and the charter.md fresh-load-before-
23
23
  * edit round trip (`orgMarkdownFileApi.ts`).
24
- * PUT /api/org/leads/:leadId/charter — the ONLY browser write this
25
- * iterate; refuses (403) anything that would resolve to a non-`charter`
26
- * kind (AC-10) — in particular `decision_log.md` /
27
- * `decisions-proposed.md`, which stay lock-guarded on the existing
28
- * gated route only.
24
+ * PUT /api/org/leads/:leadId/charter — refuses (403) anything that would
25
+ * resolve to a non-`charter` kind (AC-10) — in particular
26
+ * `decision_log.md` / `decisions-proposed.md`, which stay lock-guarded
27
+ * on the existing gated route only.
28
+ * POST /api/org/leads/:leadId/beat-register/release,
29
+ * POST /api/org/decisions/countersign — the second and third browser
30
+ * writes; see `org-writes.ts`, which owns both (split out once this
31
+ * file crossed the 300-line convention).
29
32
  */
30
33
  import { Hono } from "hono";
31
- import { isAllowedOrgRouteHost, resolveOrgAllowlistedTarget, LEAD_ID_RE } from "../external/org/_helpers.js";
34
+ import { isAllowedOrgRouteHost, resolveOrgAllowlistedTarget } from "../external/org/_helpers.js";
32
35
  import { orgChartCore } from "../external/org/org-chart.js";
33
36
  import { readAllLeadOrgInfo } from "../external/org/org-chart-lookup.js";
34
37
  import { orgFileReadCore } from "../external/org/file-read.js";
35
38
  import { orgFileWriteCore } from "../external/org/file-write.js";
36
39
  import { buildLeadRosterEntry } from "./org-leads-composite.js";
37
40
  import { buildOrgThreads } from "./org-threads-composite.js";
41
+ import { buildOrgInventory } from "./org-inventory-composite.js";
38
42
  import { leadLearningsReadCore } from "../external/org/lead-doc-read.js";
39
43
  import { auditLogCore } from "../external/org/audit-log.js";
44
+ import { requireChartLead } from "./org-chart-lead-guard.js";
45
+ import { registerOrgWriteActions } from "./org-writes.js";
46
+ import { registerLeadSetupWizardRoutes } from "./org-lead-setup-wizard.js";
40
47
  const NO_TASKS = { get: () => undefined };
41
48
  export function createOrgApiRouter(deps) {
42
49
  const app = new Hono();
@@ -89,6 +96,23 @@ export function createOrgApiRouter(deps) {
89
96
  const body = buildOrgThreads({ leadsRoot, lstatSync: deps.lstatSync, store: deps.store ?? NO_TASKS }, Object.keys(chart.body.leads));
90
97
  return c.json(body, 200);
91
98
  });
99
+ // iterate-2026-09-08-lead-inventory-page — every lead's last-night beats
100
+ // (steps, unclaimed-effect warning) + authority panel, keyed by leadId,
101
+ // one call. Mirrors /api/org/threads exactly; see org-inventory-composite.ts.
102
+ app.get("/api/org/inventory", async (c) => {
103
+ const chart = orgChartCore({ leadsRoot, lstatSync: deps.lstatSync });
104
+ if (chart.status !== 200) {
105
+ return c.json(chart.body, chart.status);
106
+ }
107
+ const buildDeps = {
108
+ leadsRoot,
109
+ lstatSync: deps.lstatSync,
110
+ openSync: deps.openSync,
111
+ now: deps.now,
112
+ };
113
+ const body = buildOrgInventory(buildDeps, Object.entries(chart.body.leads).map(([leadId, lead]) => ({ leadId, charterPath: lead.charter_path })));
114
+ return c.json(body, 200);
115
+ });
92
116
  app.get("/api/org/file", async (c) => {
93
117
  const result = orgFileReadCore({ leadsRoot, openSync: deps.openSync }, c.req.query("path"));
94
118
  if (result.kind === "json") {
@@ -99,47 +123,13 @@ export function createOrgApiRouter(deps) {
99
123
  }
100
124
  return c.body(new Uint8Array(result.body), result.status);
101
125
  });
102
- // Code-review fix (LOW, consistency): the charter PUT route below refuses
103
- // an unregistered leadId (the HIGH external-review fix); these two GET
104
- // routes previously only shape-checked the leadId and never checked chart
105
- // membership, so a stale/decommissioned lead directory left on disk would
106
- // still serve through the browser-facing proxy. Same posture, both verbs.
107
- //
108
- // Doubt-review fix (HIGH, security): a shape-invalid RAW leadId must be
109
- // REJECTED here, never deferred to a downstream core's own check. That
110
- // deferral was safe for the two GET routes (their cores re-validate the
111
- // SAME raw string), but not for the PUT charter route below:
112
- // `resolveOrgAllowlistedTarget` derives its OWN, more lenient "leadId" by
113
- // slicing the path.resolve()-normalized absolute path, and Hono decodes a
114
- // `%2f` in the route param (but not in path segmentation) — so a raw
115
- // leadId of `"ghost-lead/"` (from the URL `ghost-lead%2f`) normalizes to
116
- // the clean, registered `"acme-lead"`-shaped target while `LEAD_ID_RE`
117
- // (correctly) rejects the RAW string with its trailing slash. Deferring
118
- // on that rejection let the write proceed with NO chart-membership check
119
- // at all. `LEAD_ID_RE` matches only `[a-z0-9][a-z0-9-]*` — no `/` or `.`
120
- // — so a raw string that passes it can never diverge from its own
121
- // path-normalized form; rejecting here closes the whole class, not just
122
- // the one PoC. Same 400 `invalid_lead_id` shape the GET routes' cores
123
- // already used, so their existing 400 contract is unchanged.
124
- function requireChartLead(c, leadId) {
125
- if (!LEAD_ID_RE.test(leadId)) {
126
- return { ok: false, response: c.json({ error: "invalid_lead_id" }, 400) };
127
- }
128
- const chart = orgChartCore({ leadsRoot, lstatSync: deps.lstatSync });
129
- if (chart.status !== 200) {
130
- return { ok: false, response: c.json(chart.body, chart.status) };
131
- }
132
- if (!Object.hasOwn(chart.body.leads, leadId)) {
133
- return {
134
- ok: false,
135
- response: c.json({ error: "unknown_lead", detail: "leadId is not a chart entry" }, 403),
136
- };
137
- }
138
- return { ok: true };
139
- }
126
+ // Every `:leadId`-scoped route below shares ONE chart-membership check —
127
+ // see `org-chart-lead-guard.ts` for the full rationale (moved there once
128
+ // this file crossed the 300-line convention).
129
+ const chartLeadDeps = { leadsRoot, lstatSync: deps.lstatSync };
140
130
  app.get("/api/org/leads/:leadId/learnings", async (c) => {
141
131
  const leadId = c.req.param("leadId");
142
- const gate = requireChartLead(c, leadId);
132
+ const gate = requireChartLead(c, leadId, chartLeadDeps);
143
133
  if (!gate.ok)
144
134
  return gate.response;
145
135
  const leadDeps = { leadsRoot, openSync: deps.openSync };
@@ -154,7 +144,7 @@ export function createOrgApiRouter(deps) {
154
144
  });
155
145
  app.get("/api/org/leads/:leadId/audit", async (c) => {
156
146
  const leadId = c.req.param("leadId");
157
- const gate = requireChartLead(c, leadId);
147
+ const gate = requireChartLead(c, leadId, chartLeadDeps);
158
148
  if (!gate.ok)
159
149
  return gate.response;
160
150
  const auditDeps = { leadsRoot, openSync: deps.openSync };
@@ -190,7 +180,7 @@ export function createOrgApiRouter(deps) {
190
180
  // have a charter.md written (and later read back through the same
191
181
  // allowlist) with no corresponding org-chart.json entry. Require the
192
182
  // lead to be a real roster member before the write proceeds.
193
- const gate = requireChartLead(c, leadId);
183
+ const gate = requireChartLead(c, leadId, chartLeadDeps);
194
184
  if (!gate.ok)
195
185
  return gate.response;
196
186
  const writeDeps = {
@@ -206,6 +196,19 @@ export function createOrgApiRouter(deps) {
206
196
  });
207
197
  return c.json(result.body, result.status);
208
198
  });
199
+ registerOrgWriteActions(app, {
200
+ leadsRoot,
201
+ lstatSync: deps.lstatSync,
202
+ withDecisionsLock: deps.withDecisionsLock,
203
+ now: deps.now,
204
+ releaseLockOptions: deps.releaseLockOptions,
205
+ });
206
+ registerLeadSetupWizardRoutes(app, {
207
+ leadsRoot,
208
+ leadwrightCheckoutRoot: deps.leadwrightCheckoutRoot,
209
+ webuiBaseUrl: deps.webuiBaseUrl ?? "http://localhost:5173",
210
+ store: deps.store,
211
+ });
209
212
  return app;
210
213
  }
211
214
  //# sourceMappingURL=org.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/routes/org.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/routes/org.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/routes/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAIjE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAQD,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,YAAY,GACjB,IAAI,CA6DN"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/routes/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAIjE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AASD,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,YAAY,GACjB,IAAI,CAkFN"}
@@ -1,8 +1,11 @@
1
1
  import { Hono } from "hono";
2
+ import { migrateLegacyRuntimeDefault } from "../core/settings-reader.js";
3
+ import { isValidCodextenderPort } from "../core/codextender-proxy-probe.js";
2
4
  const DEFAULT_SETTINGS = {
3
5
  port: 3847,
4
6
  maxConcurrent: 3,
5
7
  heartbeatIntervalMs: 30000,
8
+ runtimeDefault: "claude",
6
9
  };
7
10
  export function createSettingsRoutes(settingsPath, deps) {
8
11
  const app = new Hono();
@@ -12,7 +15,12 @@ export function createSettingsRoutes(settingsPath, deps) {
12
15
  }
13
16
  try {
14
17
  const content = await deps.readFile(settingsPath, "utf-8");
15
- return c.json({ data: { ...DEFAULT_SETTINGS, ...JSON.parse(content) } });
18
+ return c.json({
19
+ data: {
20
+ ...DEFAULT_SETTINGS,
21
+ ...migrateLegacyRuntimeDefault(JSON.parse(content)),
22
+ },
23
+ });
16
24
  }
17
25
  catch {
18
26
  return c.json({ data: DEFAULT_SETTINGS });
@@ -20,6 +28,16 @@ export function createSettingsRoutes(settingsPath, deps) {
20
28
  });
21
29
  app.put("/api/settings", async (c) => {
22
30
  const body = await c.req.json();
31
+ // `codextenderPort` is interpolated into an outbound proxy URL
32
+ // (`core/codextender-proxy-probe.ts`) — an unvalidated value could
33
+ // redirect that request via URL userinfo-authority confusion (e.g.
34
+ // `"4000@attacker.example"`). Reject before it ever reaches disk
35
+ // (PR-review BLOCK, iterate-2026-09-23 fifth round); the probes
36
+ // themselves also re-validate as defense-in-depth against a value
37
+ // that reached settings.json some other way.
38
+ if ("codextenderPort" in body && !isValidCodextenderPort(body.codextenderPort)) {
39
+ return c.json({ error: "invalid_codextender_port", detail: "codextenderPort must be an integer from 1 to 65535." }, 400);
40
+ }
23
41
  const dir = settingsPath.substring(0, settingsPath.lastIndexOf("/"));
24
42
  if (dir && !deps.existsSync(dir)) {
25
43
  deps.mkdirSync(dir, { recursive: true });
@@ -38,7 +56,10 @@ export function createSettingsRoutes(settingsPath, deps) {
38
56
  try {
39
57
  const content = await deps.readFile(settingsPath, "utf-8");
40
58
  if (content.trim()) {
41
- existing = { ...existing, ...JSON.parse(content) };
59
+ existing = {
60
+ ...existing,
61
+ ...migrateLegacyRuntimeDefault(JSON.parse(content)),
62
+ };
42
63
  }
43
64
  }
44
65
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/routes/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/routes/settings.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,23 @@ export interface TriageRoutesDeps {
30
30
  * when absent, items are returned without campaign annotations.
31
31
  */
32
32
  listCampaignRefs?: (projectId: string) => CampaignRef[];
33
+ /**
34
+ * Codex Light §3.5's correction — promote has no launch form / RuntimeToggle
35
+ * (PromoteModal.tsx never collected a per-task choice), so v1 scope is
36
+ * narrower: read the GLOBAL default directly, server-side, at promote time.
37
+ * Optional so existing tests that don't care about runtime keep passing —
38
+ * absent means "claude", same as the loader backfill.
39
+ */
40
+ getCodexRuntimeDefault?: () => Promise<"claude" | "codex" | undefined>;
41
+ /**
42
+ * Codextender integration Part B.1 — promote has no per-task toggle, so
43
+ * when the operator has restricted `codexAvailability` there is no choice
44
+ * to make: the created task's runtime is forced to the one allowed value,
45
+ * overriding `getCodexRuntimeDefault` entirely. Optional, same
46
+ * back-compat posture as `getCodexRuntimeDefault` — absent means "both"
47
+ * (today's behavior).
48
+ */
49
+ getCodexAvailability?: () => Promise<"both" | "claude_only" | "codex_only" | undefined>;
33
50
  }
34
51
  export declare function createTriageRoutes(deps: TriageRoutesDeps): Hono;
35
52
  //# sourceMappingURL=triage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../src/routes/triage.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAItE,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EACL,YAAY,EACZ,uBAAuB,EAGxB,MAAM,8BAA8B,CAAC;AAGtC,6EAA6E;AAC7E,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAqBvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,cAAc,EAAE,MAAM,iBAAiB,EAAE,CAAC;IAC1C,yEAAyE;IACzE,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;IAC9D,gDAAgD;IAChD,KAAK,EAAE,gBAAgB,CAAC;IACxB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;IACnC,qEAAqE;IACrE,uBAAuB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IACzD,8DAA8D;IAC9D,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;CACzD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAoa/D"}
1
+ {"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../src/routes/triage.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAItE,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EACL,YAAY,EACZ,uBAAuB,EAGxB,MAAM,8BAA8B,CAAC;AAGtC,6EAA6E;AAC7E,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAoCvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,cAAc,EAAE,MAAM,iBAAiB,EAAE,CAAC;IAC1C,yEAAyE;IACzE,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;IAC9D,gDAAgD;IAChD,KAAK,EAAE,gBAAgB,CAAC;IACxB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;IACnC,qEAAqE;IACrE,uBAAuB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IACzD,8DAA8D;IAC9D,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;IACxD;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IACvE;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC,CAAC;CACzF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAob/D"}
@@ -41,6 +41,20 @@ export const TRIAGE_WRITE_AVAILABILITY_TTL_MS = 15_000;
41
41
  * constant fixes.
42
42
  */
43
43
  const PROMOTED_TASK_ACTION_ID = "new-iterate";
44
+ /**
45
+ * iterate-2026-09-19-codex-launch-phase-empty: `actionId` alone is enough
46
+ * for the Claude launch path (`actions-substitute.ts` reads `actionId`, not
47
+ * `phase`), but a Codex-runtime task's launch prompt (`buildCodexCommands`
48
+ * -> `buildCodexPrompt`, launcher-codex.ts) is keyed on `task.phase` — it is
49
+ * what selects the SKILL.md pointer line and what the SHIPWRIGHT-STATUS
50
+ * self-report footer echoes back. Promote never set it, so a Codex-runtime
51
+ * promoted task shipped with `phase: undefined` and got no explicit
52
+ * instruction to read the iterate skill at all outside a curated repo's
53
+ * `AGENTS.md` (which most adopted projects don't have). `PROMOTED_TASK_
54
+ * ACTION_ID`'s own semantics ("new-iterate") already fix this task's phase
55
+ * unconditionally, so this is the same hardcode, not a catalog lookup.
56
+ */
57
+ const PROMOTED_TASK_PHASE = "iterate";
44
58
  export function createTriageRoutes(deps) {
45
59
  const app = new Hono();
46
60
  const writeTriage = deps.runTriageCli ?? runTriageCli;
@@ -245,16 +259,31 @@ export function createTriageRoutes(deps) {
245
259
  return c.json({ error: "invalid_description", detail: normalized.error }, 400);
246
260
  }
247
261
  const description = normalized.value;
262
+ // Codex Light §3.5 — global-default-only for this surface (no
263
+ // per-task toggle here; see TriageRoutesDeps.getCodexRuntimeDefault).
264
+ // Local PR-review preflight finding — settings.json is unvalidated
265
+ // JSON (settings-reader.ts), so normalize here rather than trust
266
+ // the persisted shape.
267
+ const availability = await deps.getCodexAvailability?.();
268
+ const runtime = availability === "claude_only"
269
+ ? "claude"
270
+ : availability === "codex_only"
271
+ ? "codex"
272
+ : (await deps.getCodexRuntimeDefault?.()) === "codex"
273
+ ? "codex"
274
+ : "claude";
248
275
  const created = deps.store.create({
249
276
  title: item.title,
250
277
  cwd: project.path,
251
278
  projectId,
252
279
  actionId: PROMOTED_TASK_ACTION_ID,
280
+ phase: PROMOTED_TASK_PHASE,
253
281
  domain: parsed.value.domain,
254
282
  priority: parsed.value.priority,
255
283
  complexityHint: parsed.value.complexityHint,
256
284
  tags: allTags,
257
285
  promotedFromTriageId: parsed.value.triageId,
286
+ runtime,
258
287
  ...(description !== undefined ? { description } : {}),
259
288
  });
260
289
  await deps.store.persist();