@svenroth-ai/shipwright 0.27.0 → 0.29.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 (799) hide show
  1. package/client/dist/apple-touch-icon.png +0 -0
  2. package/client/dist/assets/{EmbeddedTerminal-CqCQUDtp.js → EmbeddedTerminal-IkAS1bic.js} +30 -30
  3. package/client/dist/assets/{abnfDiagram-VRR7QNED-DX2objTP.js → abnfDiagram-VCTEODGH-CclAL-Ri.js} +1 -1
  4. package/client/dist/assets/arc-C8vUxwav.js +1 -0
  5. package/client/dist/assets/architectureDiagram-5GKGNRK7-DdrrZJx7.js +36 -0
  6. package/client/dist/assets/blockDiagram-I7D4REHJ-CMhbhsVq.js +129 -0
  7. package/client/dist/assets/c4Diagram-7LVT6UL2-OvlH6BiV.js +38 -0
  8. package/client/dist/assets/channel-BtkABUIE.js +1 -0
  9. package/client/dist/assets/{chunk-2Q5K7J3B-C111EHL6.js → chunk-2Q5K7J3B-BxUk85j7.js} +1 -1
  10. package/client/dist/assets/{chunk-5VM5RSS4-DIejoaXS.js → chunk-5VM5RSS4-DoTSs3Kn.js} +1 -1
  11. package/client/dist/assets/{chunk-32BRIVSS-DrCYs2XG.js → chunk-F27PBJKO-DquVu1wX.js} +1 -1
  12. package/client/dist/assets/{chunk-EX3LRPZG-CGWNeH2g.js → chunk-IMKFNOWR-8l4wPLQK.js} +5 -5
  13. package/client/dist/assets/{chunk-JWPE2WC7-CCH0SRFY.js → chunk-JWPE2WC7-CTAa0a4O.js} +1 -1
  14. package/client/dist/assets/chunk-POPQ4Y6H-BZ6zpqEF.js +1 -0
  15. package/client/dist/assets/{chunk-MOJQB5TN-B3OpZGRv.js → chunk-SVP7TREG-Dx7pMiq4.js} +1 -1
  16. package/client/dist/assets/{chunk-V7JOEXUC-B6Bu8x1y.js → chunk-TICWLB2K-BtDKT858.js} +1 -1
  17. package/client/dist/assets/{chunk-XXDRQBXY-xyjuuhxl.js → chunk-XXDRQBXY-BbrrrzuM.js} +1 -1
  18. package/client/dist/assets/classDiagram-ZZMXUADV-2gEcH3cX.js +1 -0
  19. package/client/dist/assets/classDiagram-v2-VYDZK3BY-2gEcH3cX.js +1 -0
  20. package/client/dist/assets/{cose-bilkent-JH36ORCC-BQIH3SCK.js → cose-bilkent-JH36ORCC-Bhem6unn.js} +1 -1
  21. package/client/dist/assets/{cynefin-VYW2F7L2-oyLAz8te.js → cynefin-OW5HDTMX-hukx0bAt.js} +3 -3
  22. package/client/dist/assets/{cynefinDiagram-TSTJHNR4-DoLCsH0l.js → cynefinDiagram-5FMLGOSQ-CGogKYMK.js} +1 -1
  23. package/client/dist/assets/dagre-GXQ25YYZ-BiLo3XBj.js +4 -0
  24. package/client/dist/assets/diagram-S7CK7UJ4-DBfdjdN6.js +30 -0
  25. package/client/dist/assets/diagram-UQ7AKVKN-3CvmyZYO.js +41 -0
  26. package/client/dist/assets/{diagram-FQU43EPY-DFuYE0Vf.js → diagram-VSXAHHWV-COG9399I.js} +2 -2
  27. package/client/dist/assets/{diagram-G47NLZAW-CffCZVXk.js → diagram-VX7I27RA-Dftpj84a.js} +1 -1
  28. package/client/dist/assets/{diagram-NH7WQ7WH-BhrHtUlt.js → diagram-Z3DM3KII-Dw9_CGLA.js} +1 -1
  29. package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DfV7gT4m.js → ebnfDiagram-PWID7BFC-CJirhPah.js} +1 -1
  30. package/client/dist/assets/erDiagram-RLTQ6QDP-B11aYoo6.js +99 -0
  31. package/client/dist/assets/flowDiagram-HODETNUW-CPC6X9E5.js +168 -0
  32. package/client/dist/assets/{ganttDiagram-NO4QXBWP-BclyOgMb.js → ganttDiagram-EL5Y4UJY-DDSk2AAg.js} +4 -4
  33. package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-BXT4rIKj.js → gitGraphDiagram-WWUBYQGX-D_2UGciq.js} +1 -1
  34. package/client/dist/assets/index-DDSwQXcp.js +924 -0
  35. package/client/dist/assets/index-DWrPE3aq.css +1 -0
  36. package/client/dist/assets/infoDiagram-27XIBGKW-BuUv5Wms.js +2 -0
  37. package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-BBUFWq5C.js → ishikawaDiagram-5VMMS53U-DpnAnJ0q.js} +4 -4
  38. package/client/dist/assets/{journeyDiagram-5HDEW3XC-CmclipcQ.js → journeyDiagram-3NMN7TZE-CFUsXz2q.js} +2 -2
  39. package/client/dist/assets/{kanban-definition-HUTT4EX6-eIzUeZ03.js → kanban-definition-UXKFOSKX-BAq4Kujj.js} +8 -8
  40. package/client/dist/assets/katex-C5jXJg4s.js +257 -0
  41. package/client/dist/assets/layout-CccpfEe3.js +1 -0
  42. package/client/dist/assets/{linear-DGiT7uKK.js → linear-BIeIr2tp.js} +1 -1
  43. package/client/dist/assets/mermaid.core-B-Ezy6Me.js +312 -0
  44. package/client/dist/assets/{mindmap-definition-LN4V7U3C-C4ANnNiP.js → mindmap-definition-YA3MSWOX-CMPZ0Ggp.js} +2 -2
  45. package/client/dist/assets/{pegDiagram-2B236MQR-DnMeh3Yh.js → pegDiagram-XKGWAZYB-B0_2KQ6f.js} +1 -1
  46. package/client/dist/assets/{pieDiagram-ENE6RG2P-CKV_rkhF.js → pieDiagram-E7YTZNPT-1-nOk5pZ.js} +3 -3
  47. package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-BuUsGwHh.js → quadrantDiagram-AXDQQJYC-C_RdmOuq.js} +1 -1
  48. package/client/dist/assets/{railroadDiagram-RFXS5EU6-BwwdKnFL.js → railroadDiagram-O6MQD6OU-o73KM0oq.js} +1 -1
  49. package/client/dist/assets/{requirementDiagram-TGXJPOKE-CpQZouJV.js → requirementDiagram-BXWQKSXE-DnhCWJHv.js} +5 -5
  50. package/client/dist/assets/{sankeyDiagram-HTMAVEWB-4fnDUNVa.js → sankeyDiagram-P5KCCOFB-CVkYgfTV.js} +4 -4
  51. package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-BOcaWlM0.js → sequenceDiagram-WJ2MYXX4-BYLed29R.js} +1 -1
  52. package/client/dist/assets/{sizeCapture-X5ZJPWSS-_pv-9R0c.js → sizeCapture-INFHLROL-CYb4HDaH.js} +1 -1
  53. package/client/dist/assets/stateDiagram-D77RDMKH-CNKFRye_.js +1 -0
  54. package/client/dist/assets/stateDiagram-v2-MP3YSRHH-NpMhMQ36.js +1 -0
  55. package/client/dist/assets/swimlanes-42K2YHIH-BhsYrplp.js +1 -0
  56. package/client/dist/assets/swimlanesDiagram-VR7AAH4N-B4frkWBG.js +8 -0
  57. package/client/dist/assets/{timeline-definition-FHXFAJF6-rhGYElgn.js → timeline-definition-24CTP7MA-DiUXzB2p.js} +3 -3
  58. package/client/dist/assets/{vennDiagram-L72KCM5P-BoGjRxyA.js → vennDiagram-4TSXK5OY-aE4j6W86.js} +5 -5
  59. package/client/dist/assets/{wardleyDiagram-EHGQE667-D-IGv5bH.js → wardleyDiagram-VM6X3IG4-BxJXq0mU.js} +1 -1
  60. package/client/dist/assets/xychartDiagram-S5SC5T6Z-4vHeL9zc.js +7 -0
  61. package/client/dist/favicon-16.png +0 -0
  62. package/client/dist/favicon-32.png +0 -0
  63. package/client/dist/icon-192.png +0 -0
  64. package/client/dist/icon-512.png +0 -0
  65. package/client/dist/icon-maskable-512.png +0 -0
  66. package/client/dist/index.html +11 -2
  67. package/client/dist/manifest.json +13 -0
  68. package/lib/preflight.mjs +24 -5
  69. package/lib/util.mjs +5 -1
  70. package/package.json +2 -2
  71. package/scripts/deploy-procs.mjs +105 -20
  72. package/scripts/deploy-swap.mjs +23 -2
  73. package/server/dist/config.d.ts +9 -0
  74. package/server/dist/config.d.ts.map +1 -1
  75. package/server/dist/config.js +8 -2
  76. package/server/dist/config.js.map +1 -1
  77. package/server/dist/core/adopt-scan-findings.d.ts +12 -0
  78. package/server/dist/core/adopt-scan-findings.d.ts.map +1 -0
  79. package/server/dist/core/adopt-scan-findings.js +96 -0
  80. package/server/dist/core/adopt-scan-findings.js.map +1 -0
  81. package/server/dist/core/adopt-scan.d.ts +49 -0
  82. package/server/dist/core/adopt-scan.d.ts.map +1 -0
  83. package/server/dist/core/adopt-scan.js +201 -0
  84. package/server/dist/core/adopt-scan.js.map +1 -0
  85. package/server/dist/core/campaign-events.d.ts.map +1 -1
  86. package/server/dist/core/campaign-events.js +1 -0
  87. package/server/dist/core/campaign-events.js.map +1 -1
  88. package/server/dist/core/campaign-loop-state.d.ts.map +1 -1
  89. package/server/dist/core/campaign-loop-state.js +54 -21
  90. package/server/dist/core/campaign-loop-state.js.map +1 -1
  91. package/server/dist/core/campaign-parse.d.ts +4 -0
  92. package/server/dist/core/campaign-parse.d.ts.map +1 -1
  93. package/server/dist/core/campaign-parse.js +9 -0
  94. package/server/dist/core/campaign-parse.js.map +1 -1
  95. package/server/dist/core/campaign-readiness-schema.d.ts +33 -0
  96. package/server/dist/core/campaign-readiness-schema.d.ts.map +1 -0
  97. package/server/dist/core/campaign-readiness-schema.js +70 -0
  98. package/server/dist/core/campaign-readiness-schema.js.map +1 -0
  99. package/server/dist/core/campaign-readiness.d.ts +59 -0
  100. package/server/dist/core/campaign-readiness.d.ts.map +1 -0
  101. package/server/dist/core/campaign-readiness.js +163 -0
  102. package/server/dist/core/campaign-readiness.js.map +1 -0
  103. package/server/dist/core/campaign-status-json.d.ts +3 -0
  104. package/server/dist/core/campaign-status-json.d.ts.map +1 -1
  105. package/server/dist/core/campaign-status-json.js +7 -0
  106. package/server/dist/core/campaign-status-json.js.map +1 -1
  107. package/server/dist/core/campaign-store.d.ts.map +1 -1
  108. package/server/dist/core/campaign-store.js +4 -1
  109. package/server/dist/core/campaign-store.js.map +1 -1
  110. package/server/dist/core/campaign-types.d.ts +8 -0
  111. package/server/dist/core/campaign-types.d.ts.map +1 -1
  112. package/server/dist/core/campaign-worktree-root.d.ts +19 -0
  113. package/server/dist/core/campaign-worktree-root.d.ts.map +1 -0
  114. package/server/dist/core/campaign-worktree-root.js +76 -0
  115. package/server/dist/core/campaign-worktree-root.js.map +1 -0
  116. package/server/dist/core/claim-record-lock.d.ts +30 -0
  117. package/server/dist/core/claim-record-lock.d.ts.map +1 -0
  118. package/server/dist/core/claim-record-lock.js +90 -0
  119. package/server/dist/core/claim-record-lock.js.map +1 -0
  120. package/server/dist/core/cli-child-spawn.d.ts +28 -0
  121. package/server/dist/core/cli-child-spawn.d.ts.map +1 -0
  122. package/server/dist/core/cli-child-spawn.js +146 -0
  123. package/server/dist/core/cli-child-spawn.js.map +1 -0
  124. package/server/dist/core/codex-models-probe.d.ts +46 -0
  125. package/server/dist/core/codex-models-probe.d.ts.map +1 -0
  126. package/server/dist/core/codex-models-probe.js +103 -0
  127. package/server/dist/core/codex-models-probe.js.map +1 -0
  128. package/server/dist/core/codex-oracle-runner.d.ts +68 -0
  129. package/server/dist/core/codex-oracle-runner.d.ts.map +1 -0
  130. package/server/dist/core/codex-oracle-runner.js +124 -0
  131. package/server/dist/core/codex-oracle-runner.js.map +1 -0
  132. package/server/dist/core/codex-status-report.d.ts +6 -0
  133. package/server/dist/core/codex-status-report.d.ts.map +1 -0
  134. package/server/dist/core/codex-status-report.js +40 -0
  135. package/server/dist/core/codex-status-report.js.map +1 -0
  136. package/server/dist/core/codex-task-watcher-types.d.ts +69 -0
  137. package/server/dist/core/codex-task-watcher-types.d.ts.map +1 -0
  138. package/server/dist/core/codex-task-watcher-types.js +12 -0
  139. package/server/dist/core/codex-task-watcher-types.js.map +1 -0
  140. package/server/dist/core/codex-task-watcher.d.ts +30 -0
  141. package/server/dist/core/codex-task-watcher.d.ts.map +1 -0
  142. package/server/dist/core/codex-task-watcher.js +252 -0
  143. package/server/dist/core/codex-task-watcher.js.map +1 -0
  144. package/server/dist/core/codex-terminal-signal-detect.d.ts +7 -0
  145. package/server/dist/core/codex-terminal-signal-detect.d.ts.map +1 -0
  146. package/server/dist/core/codex-terminal-signal-detect.js +113 -0
  147. package/server/dist/core/codex-terminal-signal-detect.js.map +1 -0
  148. package/server/dist/core/codex-thread-discovery.d.ts +21 -0
  149. package/server/dist/core/codex-thread-discovery.d.ts.map +1 -0
  150. package/server/dist/core/codex-thread-discovery.js +169 -0
  151. package/server/dist/core/codex-thread-discovery.js.map +1 -0
  152. package/server/dist/core/codextender-auth-file-sweep.d.ts +41 -0
  153. package/server/dist/core/codextender-auth-file-sweep.d.ts.map +1 -0
  154. package/server/dist/core/codextender-auth-file-sweep.js +97 -0
  155. package/server/dist/core/codextender-auth-file-sweep.js.map +1 -0
  156. package/server/dist/core/codextender-proxy-probe.d.ts +80 -0
  157. package/server/dist/core/codextender-proxy-probe.d.ts.map +1 -0
  158. package/server/dist/core/codextender-proxy-probe.js +179 -0
  159. package/server/dist/core/codextender-proxy-probe.js.map +1 -0
  160. package/server/dist/core/contract-version.d.ts +16 -1
  161. package/server/dist/core/contract-version.d.ts.map +1 -1
  162. package/server/dist/core/contract-version.js +16 -1
  163. package/server/dist/core/contract-version.js.map +1 -1
  164. package/server/dist/core/custom-profile-command-policy.d.ts +6 -0
  165. package/server/dist/core/custom-profile-command-policy.d.ts.map +1 -0
  166. package/server/dist/core/custom-profile-command-policy.js +110 -0
  167. package/server/dist/core/custom-profile-command-policy.js.map +1 -0
  168. package/server/dist/core/custom-profile-loader.d.ts +34 -0
  169. package/server/dist/core/custom-profile-loader.d.ts.map +1 -0
  170. package/server/dist/core/custom-profile-loader.js +225 -0
  171. package/server/dist/core/custom-profile-loader.js.map +1 -0
  172. package/server/dist/core/launcher-codex.d.ts +61 -0
  173. package/server/dist/core/launcher-codex.d.ts.map +1 -0
  174. package/server/dist/core/launcher-codex.js +187 -0
  175. package/server/dist/core/launcher-codex.js.map +1 -0
  176. package/server/dist/core/launcher-codextender-env.d.ts +44 -0
  177. package/server/dist/core/launcher-codextender-env.d.ts.map +1 -0
  178. package/server/dist/core/launcher-codextender-env.js +212 -0
  179. package/server/dist/core/launcher-codextender-env.js.map +1 -0
  180. package/server/dist/core/launcher-codextender.d.ts +72 -0
  181. package/server/dist/core/launcher-codextender.d.ts.map +1 -0
  182. package/server/dist/core/launcher-codextender.js +98 -0
  183. package/server/dist/core/launcher-codextender.js.map +1 -0
  184. package/server/dist/core/launcher-codextender.smoke-helpers.d.ts +25 -0
  185. package/server/dist/core/launcher-codextender.smoke-helpers.d.ts.map +1 -0
  186. package/server/dist/core/launcher-codextender.smoke-helpers.js +211 -0
  187. package/server/dist/core/launcher-codextender.smoke-helpers.js.map +1 -0
  188. package/server/dist/core/launcher-permission-flags.d.ts +17 -0
  189. package/server/dist/core/launcher-permission-flags.d.ts.map +1 -0
  190. package/server/dist/core/launcher-permission-flags.js +27 -0
  191. package/server/dist/core/launcher-permission-flags.js.map +1 -0
  192. package/server/dist/core/launcher.d.ts +18 -0
  193. package/server/dist/core/launcher.d.ts.map +1 -1
  194. package/server/dist/core/launcher.js +6 -0
  195. package/server/dist/core/launcher.js.map +1 -1
  196. package/server/dist/core/leadwright-preflight-transport.d.ts +27 -0
  197. package/server/dist/core/leadwright-preflight-transport.d.ts.map +1 -0
  198. package/server/dist/core/leadwright-preflight-transport.js +124 -0
  199. package/server/dist/core/leadwright-preflight-transport.js.map +1 -0
  200. package/server/dist/core/mission-context/artifacts-tests-ac.d.ts +6 -0
  201. package/server/dist/core/mission-context/artifacts-tests-ac.d.ts.map +1 -0
  202. package/server/dist/core/mission-context/artifacts-tests-ac.js +31 -0
  203. package/server/dist/core/mission-context/artifacts-tests-ac.js.map +1 -0
  204. package/server/dist/core/mission-context/artifacts-tests.d.ts.map +1 -1
  205. package/server/dist/core/mission-context/artifacts-tests.js +20 -0
  206. package/server/dist/core/mission-context/artifacts-tests.js.map +1 -1
  207. package/server/dist/core/mission-context/resolver-io.d.ts +10 -0
  208. package/server/dist/core/mission-context/resolver-io.d.ts.map +1 -1
  209. package/server/dist/core/mission-context/resolver-parts.d.ts +8 -7
  210. package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -1
  211. package/server/dist/core/mission-context/resolver-parts.js +22 -14
  212. package/server/dist/core/mission-context/resolver-parts.js.map +1 -1
  213. package/server/dist/core/mission-context/resolver.d.ts.map +1 -1
  214. package/server/dist/core/mission-context/resolver.js +1 -1
  215. package/server/dist/core/mission-context/resolver.js.map +1 -1
  216. package/server/dist/core/mission-context/run-id-recovery.d.ts +18 -2
  217. package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -1
  218. package/server/dist/core/mission-context/run-id-recovery.js +38 -18
  219. package/server/dist/core/mission-context/run-id-recovery.js.map +1 -1
  220. package/server/dist/core/mission-context/traceability.d.ts.map +1 -1
  221. package/server/dist/core/mission-context/traceability.js +15 -1
  222. package/server/dist/core/mission-context/traceability.js.map +1 -1
  223. package/server/dist/core/mission-context/types-slice2.d.ts +44 -0
  224. package/server/dist/core/mission-context/types-slice2.d.ts.map +1 -1
  225. package/server/dist/core/model-tier-config-reader.d.ts +14 -1
  226. package/server/dist/core/model-tier-config-reader.d.ts.map +1 -1
  227. package/server/dist/core/model-tier-config-reader.js +34 -2
  228. package/server/dist/core/model-tier-config-reader.js.map +1 -1
  229. package/server/dist/core/powershell-probe.smoke-helpers.d.ts +12 -0
  230. package/server/dist/core/powershell-probe.smoke-helpers.d.ts.map +1 -0
  231. package/server/dist/core/powershell-probe.smoke-helpers.js +80 -0
  232. package/server/dist/core/powershell-probe.smoke-helpers.js.map +1 -0
  233. package/server/dist/core/preview-child-lifecycle.d.ts +7 -2
  234. package/server/dist/core/preview-child-lifecycle.d.ts.map +1 -1
  235. package/server/dist/core/preview-child-lifecycle.js +17 -5
  236. package/server/dist/core/preview-child-lifecycle.js.map +1 -1
  237. package/server/dist/core/preview-session-manager.d.ts +1 -0
  238. package/server/dist/core/preview-session-manager.d.ts.map +1 -1
  239. package/server/dist/core/preview-session-manager.js +2 -2
  240. package/server/dist/core/preview-session-manager.js.map +1 -1
  241. package/server/dist/core/project-actions-loader.d.ts +13 -0
  242. package/server/dist/core/project-actions-loader.d.ts.map +1 -1
  243. package/server/dist/core/project-actions-loader.js +28 -6
  244. package/server/dist/core/project-actions-loader.js.map +1 -1
  245. package/server/dist/core/project-data-dir.d.ts +41 -0
  246. package/server/dist/core/project-data-dir.d.ts.map +1 -0
  247. package/server/dist/core/project-data-dir.js +64 -0
  248. package/server/dist/core/project-data-dir.js.map +1 -0
  249. package/server/dist/core/project-data-migrate.d.ts +14 -0
  250. package/server/dist/core/project-data-migrate.d.ts.map +1 -0
  251. package/server/dist/core/project-data-migrate.js +94 -0
  252. package/server/dist/core/project-data-migrate.js.map +1 -0
  253. package/server/dist/core/project-manager.d.ts.map +1 -1
  254. package/server/dist/core/project-manager.js +9 -10
  255. package/server/dist/core/project-manager.js.map +1 -1
  256. package/server/dist/core/readiness-install-hints.d.ts +1 -1
  257. package/server/dist/core/readiness-install-hints.d.ts.map +1 -1
  258. package/server/dist/core/readiness-install-hints.js +5 -0
  259. package/server/dist/core/readiness-install-hints.js.map +1 -1
  260. package/server/dist/core/readiness-probe-run.d.ts +61 -0
  261. package/server/dist/core/readiness-probe-run.d.ts.map +1 -1
  262. package/server/dist/core/readiness-probe-run.js +93 -15
  263. package/server/dist/core/readiness-probe-run.js.map +1 -1
  264. package/server/dist/core/readiness-probe.d.ts +1 -1
  265. package/server/dist/core/readiness-probe.d.ts.map +1 -1
  266. package/server/dist/core/readiness-probe.js +36 -8
  267. package/server/dist/core/readiness-probe.js.map +1 -1
  268. package/server/dist/core/sdk-sessions-store.d.ts +46 -0
  269. package/server/dist/core/sdk-sessions-store.d.ts.map +1 -1
  270. package/server/dist/core/sdk-sessions-store.js +1 -0
  271. package/server/dist/core/sdk-sessions-store.js.map +1 -1
  272. package/server/dist/core/sdk-sessions-validate.d.ts.map +1 -1
  273. package/server/dist/core/sdk-sessions-validate.js +11 -0
  274. package/server/dist/core/sdk-sessions-validate.js.map +1 -1
  275. package/server/dist/core/session-file/access.d.ts +26 -0
  276. package/server/dist/core/session-file/access.d.ts.map +1 -0
  277. package/server/dist/core/session-file/access.js +143 -0
  278. package/server/dist/core/session-file/access.js.map +1 -0
  279. package/server/dist/core/session-file/asset-access.d.ts +15 -0
  280. package/server/dist/core/session-file/asset-access.d.ts.map +1 -0
  281. package/server/dist/core/session-file/asset-access.js +141 -0
  282. package/server/dist/core/session-file/asset-access.js.map +1 -0
  283. package/server/dist/core/session-file/evidence.d.ts +25 -0
  284. package/server/dist/core/session-file/evidence.d.ts.map +1 -0
  285. package/server/dist/core/session-file/evidence.js +201 -0
  286. package/server/dist/core/session-file/evidence.js.map +1 -0
  287. package/server/dist/core/session-file/probe.d.ts +16 -0
  288. package/server/dist/core/session-file/probe.d.ts.map +1 -0
  289. package/server/dist/core/session-file/probe.js +63 -0
  290. package/server/dist/core/session-file/probe.js.map +1 -0
  291. package/server/dist/core/session-file/safe-read.d.ts +33 -0
  292. package/server/dist/core/session-file/safe-read.d.ts.map +1 -0
  293. package/server/dist/core/session-file/safe-read.js +103 -0
  294. package/server/dist/core/session-file/safe-read.js.map +1 -0
  295. package/server/dist/core/session-file/sensitive.d.ts +5 -0
  296. package/server/dist/core/session-file/sensitive.d.ts.map +1 -0
  297. package/server/dist/core/session-file/sensitive.js +52 -0
  298. package/server/dist/core/session-file/sensitive.js.map +1 -0
  299. package/server/dist/core/session-info/collect.d.ts +70 -0
  300. package/server/dist/core/session-info/collect.d.ts.map +1 -0
  301. package/server/dist/core/session-info/collect.js +248 -0
  302. package/server/dist/core/session-info/collect.js.map +1 -0
  303. package/server/dist/core/session-info/line-scan.d.ts +20 -0
  304. package/server/dist/core/session-info/line-scan.d.ts.map +1 -0
  305. package/server/dist/core/session-info/line-scan.js +109 -0
  306. package/server/dist/core/session-info/line-scan.js.map +1 -0
  307. package/server/dist/core/session-info/remote-control.d.ts +9 -0
  308. package/server/dist/core/session-info/remote-control.d.ts.map +1 -0
  309. package/server/dist/core/session-info/remote-control.js +64 -0
  310. package/server/dist/core/session-info/remote-control.js.map +1 -0
  311. package/server/dist/core/session-info/session-info.d.ts +18 -0
  312. package/server/dist/core/session-info/session-info.d.ts.map +1 -0
  313. package/server/dist/core/session-info/session-info.js +170 -0
  314. package/server/dist/core/session-info/session-info.js.map +1 -0
  315. package/server/dist/core/session-info/small-file.d.ts +2 -0
  316. package/server/dist/core/session-info/small-file.d.ts.map +1 -0
  317. package/server/dist/core/session-info/small-file.js +42 -0
  318. package/server/dist/core/session-info/small-file.js.map +1 -0
  319. package/server/dist/core/session-info/subagent-transcript.d.ts +12 -0
  320. package/server/dist/core/session-info/subagent-transcript.d.ts.map +1 -0
  321. package/server/dist/core/session-info/subagent-transcript.js +78 -0
  322. package/server/dist/core/session-info/subagent-transcript.js.map +1 -0
  323. package/server/dist/core/session-info/subagents.d.ts +14 -0
  324. package/server/dist/core/session-info/subagents.d.ts.map +1 -0
  325. package/server/dist/core/session-info/subagents.js +92 -0
  326. package/server/dist/core/session-info/subagents.js.map +1 -0
  327. package/server/dist/core/session-info/test-fixtures.d.ts +50 -0
  328. package/server/dist/core/session-info/test-fixtures.d.ts.map +1 -0
  329. package/server/dist/core/session-info/test-fixtures.js +43 -0
  330. package/server/dist/core/session-info/test-fixtures.js.map +1 -0
  331. package/server/dist/core/session-info/types.d.ts +77 -0
  332. package/server/dist/core/session-info/types.d.ts.map +1 -0
  333. package/server/dist/core/session-info/types.js +14 -0
  334. package/server/dist/core/session-info/types.js.map +1 -0
  335. package/server/dist/core/settings-reader.d.ts +18 -0
  336. package/server/dist/core/settings-reader.d.ts.map +1 -0
  337. package/server/dist/core/settings-reader.js +40 -0
  338. package/server/dist/core/settings-reader.js.map +1 -0
  339. package/server/dist/core/shell-quote.d.ts +29 -0
  340. package/server/dist/core/shell-quote.d.ts.map +1 -1
  341. package/server/dist/core/shell-quote.js +34 -0
  342. package/server/dist/core/shell-quote.js.map +1 -1
  343. package/server/dist/core/stack-profiles-create.d.ts +31 -0
  344. package/server/dist/core/stack-profiles-create.d.ts.map +1 -0
  345. package/server/dist/core/stack-profiles-create.js +128 -0
  346. package/server/dist/core/stack-profiles-create.js.map +1 -0
  347. package/server/dist/core/stack-profiles.d.ts +49 -0
  348. package/server/dist/core/stack-profiles.d.ts.map +1 -0
  349. package/server/dist/core/stack-profiles.js +142 -0
  350. package/server/dist/core/stack-profiles.js.map +1 -0
  351. package/server/dist/core/task-editability.d.ts +1 -1
  352. package/server/dist/core/task-editability.d.ts.map +1 -1
  353. package/server/dist/core/task-editability.js +1 -0
  354. package/server/dist/core/task-editability.js.map +1 -1
  355. package/server/dist/core/triage-cli-runner.d.ts.map +1 -1
  356. package/server/dist/core/triage-cli-runner.js +6 -21
  357. package/server/dist/core/triage-cli-runner.js.map +1 -1
  358. package/server/dist/core/triage-compose.d.ts.map +1 -1
  359. package/server/dist/core/triage-compose.js +34 -3
  360. package/server/dist/core/triage-compose.js.map +1 -1
  361. package/server/dist/core/triage-store.d.ts +2 -1
  362. package/server/dist/core/triage-store.d.ts.map +1 -1
  363. package/server/dist/core/triage-store.js +1 -1
  364. package/server/dist/core/triage-store.js.map +1 -1
  365. package/server/dist/external/_shared/helpers.d.ts +2 -0
  366. package/server/dist/external/_shared/helpers.d.ts.map +1 -1
  367. package/server/dist/external/_shared/helpers.js.map +1 -1
  368. package/server/dist/external/actions/get.d.ts +3 -1
  369. package/server/dist/external/actions/get.d.ts.map +1 -1
  370. package/server/dist/external/actions/get.js +15 -4
  371. package/server/dist/external/actions/get.js.map +1 -1
  372. package/server/dist/external/actions/routes.d.ts +3 -1
  373. package/server/dist/external/actions/routes.d.ts.map +1 -1
  374. package/server/dist/external/actions/routes.js.map +1 -1
  375. package/server/dist/external/actions/stub.d.ts.map +1 -1
  376. package/server/dist/external/actions/stub.js +15 -4
  377. package/server/dist/external/actions/stub.js.map +1 -1
  378. package/server/dist/external/actions/upload-delete.d.ts.map +1 -1
  379. package/server/dist/external/actions/upload-delete.js +30 -20
  380. package/server/dist/external/actions/upload-delete.js.map +1 -1
  381. package/server/dist/external/actions/upload.d.ts.map +1 -1
  382. package/server/dist/external/actions/upload.js +5 -4
  383. package/server/dist/external/actions/upload.js.map +1 -1
  384. package/server/dist/external/create-external-routes-args.d.ts +124 -0
  385. package/server/dist/external/create-external-routes-args.d.ts.map +1 -0
  386. package/server/dist/external/create-external-routes-args.js +2 -0
  387. package/server/dist/external/create-external-routes-args.js.map +1 -0
  388. package/server/dist/external/inbox/_codex.d.ts +14 -0
  389. package/server/dist/external/inbox/_codex.d.ts.map +1 -0
  390. package/server/dist/external/inbox/_codex.js +88 -0
  391. package/server/dist/external/inbox/_codex.js.map +1 -0
  392. package/server/dist/external/inbox/_derive.d.ts.map +1 -1
  393. package/server/dist/external/inbox/_derive.js +11 -0
  394. package/server/dist/external/inbox/_derive.js.map +1 -1
  395. package/server/dist/external/inbox/_phase-gate.d.ts +9 -0
  396. package/server/dist/external/inbox/_phase-gate.d.ts.map +1 -0
  397. package/server/dist/external/inbox/_phase-gate.js +87 -0
  398. package/server/dist/external/inbox/_phase-gate.js.map +1 -0
  399. package/server/dist/external/inbox/_types.d.ts +30 -0
  400. package/server/dist/external/inbox/_types.d.ts.map +1 -1
  401. package/server/dist/external/inbox/_types.js +8 -5
  402. package/server/dist/external/inbox/_types.js.map +1 -1
  403. package/server/dist/external/inbox/routes.d.ts +7 -0
  404. package/server/dist/external/inbox/routes.d.ts.map +1 -1
  405. package/server/dist/external/inbox/routes.js +17 -2
  406. package/server/dist/external/inbox/routes.js.map +1 -1
  407. package/server/dist/external/launch/_helpers.d.ts +4 -0
  408. package/server/dist/external/launch/_helpers.d.ts.map +1 -1
  409. package/server/dist/external/launch/_helpers.js.map +1 -1
  410. package/server/dist/external/launch/action-substitution-branch.d.ts +12 -0
  411. package/server/dist/external/launch/action-substitution-branch.d.ts.map +1 -1
  412. package/server/dist/external/launch/action-substitution-branch.js +37 -3
  413. package/server/dist/external/launch/action-substitution-branch.js.map +1 -1
  414. package/server/dist/external/launch/branch-dispatch.d.ts +15 -0
  415. package/server/dist/external/launch/branch-dispatch.d.ts.map +1 -0
  416. package/server/dist/external/launch/branch-dispatch.js +73 -0
  417. package/server/dist/external/launch/branch-dispatch.js.map +1 -0
  418. package/server/dist/external/launch/campaign-step-branch.d.ts +7 -1
  419. package/server/dist/external/launch/campaign-step-branch.d.ts.map +1 -1
  420. package/server/dist/external/launch/campaign-step-branch.js +70 -2
  421. package/server/dist/external/launch/campaign-step-branch.js.map +1 -1
  422. package/server/dist/external/launch/claim-executor-permissions.d.ts +31 -0
  423. package/server/dist/external/launch/claim-executor-permissions.d.ts.map +1 -0
  424. package/server/dist/external/launch/claim-executor-permissions.js +107 -0
  425. package/server/dist/external/launch/claim-executor-permissions.js.map +1 -0
  426. package/server/dist/external/launch/claim-executor-template-arming.d.ts +42 -0
  427. package/server/dist/external/launch/claim-executor-template-arming.d.ts.map +1 -0
  428. package/server/dist/external/launch/claim-executor-template-arming.js +121 -0
  429. package/server/dist/external/launch/claim-executor-template-arming.js.map +1 -0
  430. package/server/dist/external/launch/claim-holder-gate.d.ts +9 -0
  431. package/server/dist/external/launch/claim-holder-gate.d.ts.map +1 -1
  432. package/server/dist/external/launch/claim-holder-gate.js +10 -2
  433. package/server/dist/external/launch/claim-holder-gate.js.map +1 -1
  434. package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts +3 -0
  435. package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts.map +1 -0
  436. package/server/dist/external/launch/claim-permission-perimeter-assert.js +24 -0
  437. package/server/dist/external/launch/claim-permission-perimeter-assert.js.map +1 -0
  438. package/server/dist/external/launch/legacy-fallback-branch.d.ts +14 -0
  439. package/server/dist/external/launch/legacy-fallback-branch.d.ts.map +1 -1
  440. package/server/dist/external/launch/legacy-fallback-branch.js +3 -1
  441. package/server/dist/external/launch/legacy-fallback-branch.js.map +1 -1
  442. package/server/dist/external/launch/master-run-branch.js +2 -2
  443. package/server/dist/external/launch/master-run-branch.js.map +1 -1
  444. package/server/dist/external/launch/mixed-intents-guard.d.ts +10 -0
  445. package/server/dist/external/launch/mixed-intents-guard.d.ts.map +1 -0
  446. package/server/dist/external/launch/mixed-intents-guard.js +49 -0
  447. package/server/dist/external/launch/mixed-intents-guard.js.map +1 -0
  448. package/server/dist/external/launch/parse-body.d.ts +29 -0
  449. package/server/dist/external/launch/parse-body.d.ts.map +1 -1
  450. package/server/dist/external/launch/parse-body.js +66 -0
  451. package/server/dist/external/launch/parse-body.js.map +1 -1
  452. package/server/dist/external/launch/routes.d.ts +3 -0
  453. package/server/dist/external/launch/routes.d.ts.map +1 -1
  454. package/server/dist/external/launch/routes.js +76 -109
  455. package/server/dist/external/launch/routes.js.map +1 -1
  456. package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts +20 -0
  457. package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts.map +1 -0
  458. package/server/dist/external/launch/runtime-chokepoint-codextender.js +51 -0
  459. package/server/dist/external/launch/runtime-chokepoint-codextender.js.map +1 -0
  460. package/server/dist/external/launch/runtime-chokepoint-errors.d.ts +33 -0
  461. package/server/dist/external/launch/runtime-chokepoint-errors.d.ts.map +1 -0
  462. package/server/dist/external/launch/runtime-chokepoint-errors.js +63 -0
  463. package/server/dist/external/launch/runtime-chokepoint-errors.js.map +1 -0
  464. package/server/dist/external/launch/runtime-chokepoint.d.ts +120 -0
  465. package/server/dist/external/launch/runtime-chokepoint.d.ts.map +1 -0
  466. package/server/dist/external/launch/runtime-chokepoint.js +201 -0
  467. package/server/dist/external/launch/runtime-chokepoint.js.map +1 -0
  468. package/server/dist/external/mission-context/facts.js +2 -2
  469. package/server/dist/external/mission-context/facts.js.map +1 -1
  470. package/server/dist/external/mission-context/routes.d.ts +33 -27
  471. package/server/dist/external/mission-context/routes.d.ts.map +1 -1
  472. package/server/dist/external/mission-context/routes.js +30 -27
  473. package/server/dist/external/mission-context/routes.js.map +1 -1
  474. package/server/dist/external/mission-context/test-harness.d.ts +6 -0
  475. package/server/dist/external/mission-context/test-harness.d.ts.map +1 -1
  476. package/server/dist/external/mission-context/test-harness.js +6 -1
  477. package/server/dist/external/mission-context/test-harness.js.map +1 -1
  478. package/server/dist/external/mission-context/wire.d.ts.map +1 -1
  479. package/server/dist/external/mission-context/wire.js +24 -2
  480. package/server/dist/external/mission-context/wire.js.map +1 -1
  481. package/server/dist/external/org/audit-log.d.ts +19 -0
  482. package/server/dist/external/org/audit-log.d.ts.map +1 -1
  483. package/server/dist/external/org/audit-log.js +33 -18
  484. package/server/dist/external/org/audit-log.js.map +1 -1
  485. package/server/dist/external/org/beat-effect-audit-read.d.ts +15 -0
  486. package/server/dist/external/org/beat-effect-audit-read.d.ts.map +1 -0
  487. package/server/dist/external/org/beat-effect-audit-read.js +73 -0
  488. package/server/dist/external/org/beat-effect-audit-read.js.map +1 -0
  489. package/server/dist/external/org/beat-register-health.d.ts +57 -0
  490. package/server/dist/external/org/beat-register-health.d.ts.map +1 -0
  491. package/server/dist/external/org/beat-register-health.js +125 -0
  492. package/server/dist/external/org/beat-register-health.js.map +1 -0
  493. package/server/dist/external/org/beat-register-release-core.d.ts.map +1 -1
  494. package/server/dist/external/org/beat-register-release-core.js +4 -1
  495. package/server/dist/external/org/beat-register-release-core.js.map +1 -1
  496. package/server/dist/external/org/beat-register-release-request.d.ts +20 -0
  497. package/server/dist/external/org/beat-register-release-request.d.ts.map +1 -0
  498. package/server/dist/external/org/beat-register-release-request.js +92 -0
  499. package/server/dist/external/org/beat-register-release-request.js.map +1 -0
  500. package/server/dist/external/org/beat-register-release.d.ts +3 -1
  501. package/server/dist/external/org/beat-register-release.d.ts.map +1 -1
  502. package/server/dist/external/org/beat-register-release.js +15 -57
  503. package/server/dist/external/org/beat-register-release.js.map +1 -1
  504. package/server/dist/external/org/beat-register.d.ts +18 -20
  505. package/server/dist/external/org/beat-register.d.ts.map +1 -1
  506. package/server/dist/external/org/beat-register.js +30 -56
  507. package/server/dist/external/org/beat-register.js.map +1 -1
  508. package/server/dist/external/org/beat-steps-read.d.ts +17 -0
  509. package/server/dist/external/org/beat-steps-read.d.ts.map +1 -0
  510. package/server/dist/external/org/beat-steps-read.js +89 -0
  511. package/server/dist/external/org/beat-steps-read.js.map +1 -0
  512. package/server/dist/external/org/charter-authority-read.d.ts +39 -0
  513. package/server/dist/external/org/charter-authority-read.d.ts.map +1 -0
  514. package/server/dist/external/org/charter-authority-read.js +142 -0
  515. package/server/dist/external/org/charter-authority-read.js.map +1 -0
  516. package/server/dist/external/org/commit-validate.d.ts +18 -0
  517. package/server/dist/external/org/commit-validate.d.ts.map +1 -0
  518. package/server/dist/external/org/commit-validate.js +59 -0
  519. package/server/dist/external/org/commit-validate.js.map +1 -0
  520. package/server/dist/external/org/commit-writes.d.ts +68 -0
  521. package/server/dist/external/org/commit-writes.d.ts.map +1 -0
  522. package/server/dist/external/org/commit-writes.js +110 -0
  523. package/server/dist/external/org/commit-writes.js.map +1 -0
  524. package/server/dist/external/org/commit.d.ts +73 -0
  525. package/server/dist/external/org/commit.d.ts.map +1 -0
  526. package/server/dist/external/org/commit.js +181 -0
  527. package/server/dist/external/org/commit.js.map +1 -0
  528. package/server/dist/external/org/commit.test-fixtures.d.ts +38 -0
  529. package/server/dist/external/org/commit.test-fixtures.d.ts.map +1 -0
  530. package/server/dist/external/org/commit.test-fixtures.js +67 -0
  531. package/server/dist/external/org/commit.test-fixtures.js.map +1 -0
  532. package/server/dist/external/org/countersign-core.d.ts +19 -0
  533. package/server/dist/external/org/countersign-core.d.ts.map +1 -0
  534. package/server/dist/external/org/countersign-core.js +122 -0
  535. package/server/dist/external/org/countersign-core.js.map +1 -0
  536. package/server/dist/external/org/countersign-request.d.ts +14 -0
  537. package/server/dist/external/org/countersign-request.d.ts.map +1 -0
  538. package/server/dist/external/org/countersign-request.js +78 -0
  539. package/server/dist/external/org/countersign-request.js.map +1 -0
  540. package/server/dist/external/org/countersign.d.ts +6 -5
  541. package/server/dist/external/org/countersign.d.ts.map +1 -1
  542. package/server/dist/external/org/countersign.js +12 -141
  543. package/server/dist/external/org/countersign.js.map +1 -1
  544. package/server/dist/external/org/daemon-config-read.d.ts +31 -0
  545. package/server/dist/external/org/daemon-config-read.d.ts.map +1 -0
  546. package/server/dist/external/org/daemon-config-read.js +50 -0
  547. package/server/dist/external/org/daemon-config-read.js.map +1 -0
  548. package/server/dist/external/org/decisions-lock.d.ts +6 -4
  549. package/server/dist/external/org/decisions-lock.d.ts.map +1 -1
  550. package/server/dist/external/org/decisions-lock.js +9 -8
  551. package/server/dist/external/org/decisions-lock.js.map +1 -1
  552. package/server/dist/external/org/domains.d.ts +35 -0
  553. package/server/dist/external/org/domains.d.ts.map +1 -0
  554. package/server/dist/external/org/domains.js +29 -0
  555. package/server/dist/external/org/domains.js.map +1 -0
  556. package/server/dist/external/org/existing-charters-read.d.ts +5 -0
  557. package/server/dist/external/org/existing-charters-read.d.ts.map +1 -0
  558. package/server/dist/external/org/existing-charters-read.js +31 -0
  559. package/server/dist/external/org/existing-charters-read.js.map +1 -0
  560. package/server/dist/external/org/leadwright-proposal-merge.d.ts +54 -0
  561. package/server/dist/external/org/leadwright-proposal-merge.d.ts.map +1 -0
  562. package/server/dist/external/org/leadwright-proposal-merge.js +47 -0
  563. package/server/dist/external/org/leadwright-proposal-merge.js.map +1 -0
  564. package/server/dist/external/org/mount.d.ts +10 -2
  565. package/server/dist/external/org/mount.d.ts.map +1 -1
  566. package/server/dist/external/org/mount.js +6 -1
  567. package/server/dist/external/org/mount.js.map +1 -1
  568. package/server/dist/external/org/org-chart-full-read.d.ts +19 -0
  569. package/server/dist/external/org/org-chart-full-read.d.ts.map +1 -0
  570. package/server/dist/external/org/org-chart-full-read.js +58 -0
  571. package/server/dist/external/org/org-chart-full-read.js.map +1 -0
  572. package/server/dist/external/org/org-file-lock.d.ts +41 -0
  573. package/server/dist/external/org/org-file-lock.d.ts.map +1 -0
  574. package/server/dist/external/org/org-file-lock.js +90 -0
  575. package/server/dist/external/org/org-file-lock.js.map +1 -0
  576. package/server/dist/external/org/routes.d.ts +10 -0
  577. package/server/dist/external/org/routes.d.ts.map +1 -1
  578. package/server/dist/external/org/routes.js +22 -1
  579. package/server/dist/external/org/routes.js.map +1 -1
  580. package/server/dist/external/org/verdict.d.ts +57 -0
  581. package/server/dist/external/org/verdict.d.ts.map +1 -0
  582. package/server/dist/external/org/verdict.js +74 -0
  583. package/server/dist/external/org/verdict.js.map +1 -0
  584. package/server/dist/external/preview/routes.d.ts +3 -1
  585. package/server/dist/external/preview/routes.d.ts.map +1 -1
  586. package/server/dist/external/preview/routes.js +8 -1
  587. package/server/dist/external/preview/routes.js.map +1 -1
  588. package/server/dist/external/routes.d.ts +3 -101
  589. package/server/dist/external/routes.d.ts.map +1 -1
  590. package/server/dist/external/routes.js +21 -6
  591. package/server/dist/external/routes.js.map +1 -1
  592. package/server/dist/external/session-file/probe-route.d.ts +4 -0
  593. package/server/dist/external/session-file/probe-route.d.ts.map +1 -0
  594. package/server/dist/external/session-file/probe-route.js +66 -0
  595. package/server/dist/external/session-file/probe-route.js.map +1 -0
  596. package/server/dist/external/session-file/routes.d.ts +12 -0
  597. package/server/dist/external/session-file/routes.d.ts.map +1 -0
  598. package/server/dist/external/session-file/routes.js +90 -0
  599. package/server/dist/external/session-file/routes.js.map +1 -0
  600. package/server/dist/external/session-file/session-file.fixture.d.ts +45 -0
  601. package/server/dist/external/session-file/session-file.fixture.d.ts.map +1 -0
  602. package/server/dist/external/session-file/session-file.fixture.js +41 -0
  603. package/server/dist/external/session-file/session-file.fixture.js.map +1 -0
  604. package/server/dist/external/session-info/routes.d.ts +15 -0
  605. package/server/dist/external/session-info/routes.d.ts.map +1 -0
  606. package/server/dist/external/session-info/routes.js +57 -0
  607. package/server/dist/external/session-info/routes.js.map +1 -0
  608. package/server/dist/external/tasks/_phase-helpers.js +2 -2
  609. package/server/dist/external/tasks/_phase-helpers.js.map +1 -1
  610. package/server/dist/external/tasks/create.d.ts.map +1 -1
  611. package/server/dist/external/tasks/create.js +10 -2
  612. package/server/dist/external/tasks/create.js.map +1 -1
  613. package/server/dist/external/tasks/fork.d.ts +29 -0
  614. package/server/dist/external/tasks/fork.d.ts.map +1 -0
  615. package/server/dist/external/tasks/fork.js +166 -0
  616. package/server/dist/external/tasks/fork.js.map +1 -0
  617. package/server/dist/external/tasks/lifecycle.d.ts.map +1 -1
  618. package/server/dist/external/tasks/lifecycle.js +10 -57
  619. package/server/dist/external/tasks/lifecycle.js.map +1 -1
  620. package/server/dist/external/tasks/patch.d.ts.map +1 -1
  621. package/server/dist/external/tasks/patch.js +17 -0
  622. package/server/dist/external/tasks/patch.js.map +1 -1
  623. package/server/dist/external/tasks/routes.d.ts +2 -0
  624. package/server/dist/external/tasks/routes.d.ts.map +1 -1
  625. package/server/dist/external/tasks/routes.js +7 -0
  626. package/server/dist/external/tasks/routes.js.map +1 -1
  627. package/server/dist/external/transcript/routes.d.ts.map +1 -1
  628. package/server/dist/external/transcript/routes.js +25 -3
  629. package/server/dist/external/transcript/routes.js.map +1 -1
  630. package/server/dist/external-routes-wiring.d.ts +28 -0
  631. package/server/dist/external-routes-wiring.d.ts.map +1 -0
  632. package/server/dist/external-routes-wiring.js +70 -0
  633. package/server/dist/external-routes-wiring.js.map +1 -0
  634. package/server/dist/index.d.ts.map +1 -1
  635. package/server/dist/index.js +117 -52
  636. package/server/dist/index.js.map +1 -1
  637. package/server/dist/lib/resolveHonoHost.d.ts.map +1 -1
  638. package/server/dist/lib/resolveHonoHost.js +16 -1
  639. package/server/dist/lib/resolveHonoHost.js.map +1 -1
  640. package/server/dist/routes/_triage-api-harness.d.ts +1 -1
  641. package/server/dist/routes/_triage-api-harness.d.ts.map +1 -1
  642. package/server/dist/routes/_triage-api-harness.js.map +1 -1
  643. package/server/dist/routes/adopt-scan.d.ts +4 -0
  644. package/server/dist/routes/adopt-scan.d.ts.map +1 -0
  645. package/server/dist/routes/adopt-scan.js +27 -0
  646. package/server/dist/routes/adopt-scan.js.map +1 -0
  647. package/server/dist/routes/campaigns-readiness.d.ts +10 -0
  648. package/server/dist/routes/campaigns-readiness.d.ts.map +1 -0
  649. package/server/dist/routes/campaigns-readiness.js +58 -0
  650. package/server/dist/routes/campaigns-readiness.js.map +1 -0
  651. package/server/dist/routes/campaigns.d.ts.map +1 -1
  652. package/server/dist/routes/campaigns.js +3 -0
  653. package/server/dist/routes/campaigns.js.map +1 -1
  654. package/server/dist/routes/codex-models.d.ts +15 -0
  655. package/server/dist/routes/codex-models.d.ts.map +1 -0
  656. package/server/dist/routes/codex-models.js +77 -0
  657. package/server/dist/routes/codex-models.js.map +1 -0
  658. package/server/dist/routes/codextender-models.d.ts +16 -0
  659. package/server/dist/routes/codextender-models.d.ts.map +1 -0
  660. package/server/dist/routes/codextender-models.js +81 -0
  661. package/server/dist/routes/codextender-models.js.map +1 -0
  662. package/server/dist/routes/diagnostics.d.ts +15 -0
  663. package/server/dist/routes/diagnostics.d.ts.map +1 -1
  664. package/server/dist/routes/diagnostics.js +1 -0
  665. package/server/dist/routes/diagnostics.js.map +1 -1
  666. package/server/dist/routes/org-chart-lead-guard.d.ts +10 -0
  667. package/server/dist/routes/org-chart-lead-guard.d.ts.map +1 -0
  668. package/server/dist/routes/org-chart-lead-guard.js +49 -0
  669. package/server/dist/routes/org-chart-lead-guard.js.map +1 -0
  670. package/server/dist/routes/org-inventory-composite.d.ts +20 -0
  671. package/server/dist/routes/org-inventory-composite.d.ts.map +1 -0
  672. package/server/dist/routes/org-inventory-composite.js +100 -0
  673. package/server/dist/routes/org-inventory-composite.js.map +1 -0
  674. package/server/dist/routes/org-lead-setup-wizard.d.ts +10 -0
  675. package/server/dist/routes/org-lead-setup-wizard.d.ts.map +1 -0
  676. package/server/dist/routes/org-lead-setup-wizard.js +51 -0
  677. package/server/dist/routes/org-lead-setup-wizard.js.map +1 -0
  678. package/server/dist/routes/org-leads-composite.d.ts.map +1 -1
  679. package/server/dist/routes/org-leads-composite.js +35 -9
  680. package/server/dist/routes/org-leads-composite.js.map +1 -1
  681. package/server/dist/routes/org-writes.d.ts +14 -0
  682. package/server/dist/routes/org-writes.d.ts.map +1 -0
  683. package/server/dist/routes/org-writes.js +61 -0
  684. package/server/dist/routes/org-writes.js.map +1 -0
  685. package/server/dist/routes/org.d.ts +11 -2
  686. package/server/dist/routes/org.d.ts.map +1 -1
  687. package/server/dist/routes/org.js +50 -47
  688. package/server/dist/routes/org.js.map +1 -1
  689. package/server/dist/routes/profiles.d.ts +7 -0
  690. package/server/dist/routes/profiles.d.ts.map +1 -1
  691. package/server/dist/routes/profiles.js +13 -0
  692. package/server/dist/routes/profiles.js.map +1 -1
  693. package/server/dist/routes/projects.d.ts.map +1 -1
  694. package/server/dist/routes/projects.js +58 -16
  695. package/server/dist/routes/projects.js.map +1 -1
  696. package/server/dist/routes/settings.d.ts.map +1 -1
  697. package/server/dist/routes/settings.js +23 -2
  698. package/server/dist/routes/settings.js.map +1 -1
  699. package/server/dist/routes/stack-profiles.d.ts +10 -0
  700. package/server/dist/routes/stack-profiles.d.ts.map +1 -0
  701. package/server/dist/routes/stack-profiles.js +65 -0
  702. package/server/dist/routes/stack-profiles.js.map +1 -0
  703. package/server/dist/routes/triage.d.ts +17 -0
  704. package/server/dist/routes/triage.d.ts.map +1 -1
  705. package/server/dist/routes/triage.js +29 -0
  706. package/server/dist/routes/triage.js.map +1 -1
  707. package/server/dist/terminal/data-target.d.ts +17 -0
  708. package/server/dist/terminal/data-target.d.ts.map +1 -0
  709. package/server/dist/terminal/data-target.js +56 -0
  710. package/server/dist/terminal/data-target.js.map +1 -0
  711. package/server/dist/terminal/image-paste.d.ts +2 -0
  712. package/server/dist/terminal/image-paste.d.ts.map +1 -1
  713. package/server/dist/terminal/image-paste.js +11 -12
  714. package/server/dist/terminal/image-paste.js.map +1 -1
  715. package/server/dist/terminal/pty-manager.d.ts +14 -0
  716. package/server/dist/terminal/pty-manager.d.ts.map +1 -1
  717. package/server/dist/terminal/pty-manager.js +11 -0
  718. package/server/dist/terminal/pty-manager.js.map +1 -1
  719. package/server/dist/terminal/routes.d.ts +5 -0
  720. package/server/dist/terminal/routes.d.ts.map +1 -1
  721. package/server/dist/terminal/routes.js +20 -13
  722. package/server/dist/terminal/routes.js.map +1 -1
  723. package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -1
  724. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -1
  725. package/server/dist/terminal/ws-upgrade-handler.fixtures.js +1 -0
  726. package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -1
  727. package/server/dist/terminal/ws-upgrade-handler.js +14 -5
  728. package/server/dist/terminal/ws-upgrade-handler.js.map +1 -1
  729. package/server/dist/test/event-test-counts-fixtures.d.ts +40 -0
  730. package/server/dist/test/event-test-counts-fixtures.d.ts.map +1 -0
  731. package/server/dist/test/event-test-counts-fixtures.js +56 -0
  732. package/server/dist/test/event-test-counts-fixtures.js.map +1 -0
  733. package/server/dist/types/leadwright-beat-step.d.ts +19 -0
  734. package/server/dist/types/leadwright-beat-step.d.ts.map +1 -0
  735. package/server/dist/types/leadwright-beat-step.js +56 -0
  736. package/server/dist/types/leadwright-beat-step.js.map +1 -0
  737. package/server/dist/types/leadwright-preflight.d.ts +90 -0
  738. package/server/dist/types/leadwright-preflight.d.ts.map +1 -0
  739. package/server/dist/types/leadwright-preflight.js +65 -0
  740. package/server/dist/types/leadwright-preflight.js.map +1 -0
  741. package/server/dist/types/leadwright-schema-drift.d.ts +28 -0
  742. package/server/dist/types/leadwright-schema-drift.d.ts.map +1 -0
  743. package/server/dist/types/leadwright-schema-drift.js +89 -0
  744. package/server/dist/types/leadwright-schema-drift.js.map +1 -0
  745. package/server/dist/types/org-inventory.d.ts +53 -0
  746. package/server/dist/types/org-inventory.d.ts.map +1 -0
  747. package/server/dist/types/org-inventory.js +11 -0
  748. package/server/dist/types/org-inventory.js.map +1 -0
  749. package/server/dist/types/org.d.ts +57 -6
  750. package/server/dist/types/org.d.ts.map +1 -1
  751. package/server/dist/types/project.d.ts +9 -0
  752. package/server/dist/types/project.d.ts.map +1 -1
  753. package/server/dist/types/run-config-retry.d.ts +29 -0
  754. package/server/dist/types/run-config-retry.d.ts.map +1 -0
  755. package/server/dist/types/run-config-retry.js +47 -0
  756. package/server/dist/types/run-config-retry.js.map +1 -0
  757. package/server/dist/types/run-config-v2.d.ts +29 -41
  758. package/server/dist/types/run-config-v2.d.ts.map +1 -1
  759. package/server/dist/types/run-config-v2.js +16 -50
  760. package/server/dist/types/run-config-v2.js.map +1 -1
  761. package/server/dist/types/settings.d.ts +33 -0
  762. package/server/dist/types/settings.d.ts.map +1 -1
  763. package/server/dist/types/stack-profile-contract.d.ts +33 -0
  764. package/server/dist/types/stack-profile-contract.d.ts.map +1 -0
  765. package/server/dist/types/stack-profile-contract.js +11 -0
  766. package/server/dist/types/stack-profile-contract.js.map +1 -0
  767. package/server/dist/vendor/leadwright/beat-step.schema.json +83 -0
  768. package/server/dist/vendor/leadwright/claim-record-lock-contract.json +15 -0
  769. package/server/dist/vendor/leadwright/org-chart.schema.json +195 -0
  770. package/server/dist/vendor/leadwright/preflight-input.schema.json +318 -0
  771. package/server/dist/vendor/leadwright/preflight-result.schema.json +56 -0
  772. package/server/package.json +3 -3
  773. package/client/dist/assets/arc-DQmjbsFU.js +0 -1
  774. package/client/dist/assets/architectureDiagram-ZJ3FMSHR-DAvCsPCW.js +0 -36
  775. package/client/dist/assets/blockDiagram-677ZJIJ3-DC-dlyYI.js +0 -132
  776. package/client/dist/assets/c4Diagram-LMCZKHZV-DSlmXfhE.js +0 -10
  777. package/client/dist/assets/channel-BfmIcrp7.js +0 -1
  778. package/client/dist/assets/chunk-RYQCIY6F-BKhdp_8v.js +0 -1
  779. package/client/dist/assets/chunk-VR4S4FIN-OgFi2_iB.js +0 -1
  780. package/client/dist/assets/classDiagram-OUVF2IWQ-HfUQZ6Uc.js +0 -1
  781. package/client/dist/assets/classDiagram-v2-EOCWNBFH-HfUQZ6Uc.js +0 -1
  782. package/client/dist/assets/dagre-VKFMJZFB-D7djx1_Y.js +0 -4
  783. package/client/dist/assets/diagram-OA4YK3LP-CwQPbOn0.js +0 -30
  784. package/client/dist/assets/diagram-WEI45ONY-abtYnYqH.js +0 -41
  785. package/client/dist/assets/erDiagram-Q63AITRT-vtbCprgH.js +0 -85
  786. package/client/dist/assets/flowDiagram-23GEKE2U-CVCgcyDF.js +0 -156
  787. package/client/dist/assets/graph-C9eacEi8.js +0 -1
  788. package/client/dist/assets/index-CKU9dY18.css +0 -1
  789. package/client/dist/assets/index-DOMl6atu.js +0 -847
  790. package/client/dist/assets/infoDiagram-FWYZ7A6U-Dr4mN24J.js +0 -2
  791. package/client/dist/assets/katex-DkKDou_j.js +0 -257
  792. package/client/dist/assets/layout-DEXfKzaS.js +0 -1
  793. package/client/dist/assets/map-Czzmt4hB.js +0 -1
  794. package/client/dist/assets/mermaid.core-BcLNGbxW.js +0 -314
  795. package/client/dist/assets/stateDiagram-2N3HPSRC-CFwCOonY.js +0 -1
  796. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-srkiu3Ib.js +0 -1
  797. package/client/dist/assets/swimlanes-5IMT3BWC-DFa2tzxu.js +0 -2
  798. package/client/dist/assets/swimlanesDiagram-G3AALYLV-Dq-0K9Zm.js +0 -8
  799. package/client/dist/assets/xychartDiagram-FW5EYKEG-D9PFTCfm.js +0 -7
@@ -0,0 +1,76 @@
1
+ /*
2
+ * campaign-worktree-root.ts — where a campaign's loop state actually lives.
3
+ *
4
+ * A campaign runs in its OWN worktree, `<main_root>/.worktrees/campaign-<slug>`
5
+ * (monorepo `campaign-worktree.md`), keyed by the campaign slug so a resumed
6
+ * campaign re-enters the same directory. That worktree — not the main root —
7
+ * holds the campaign's `.shipwright/loop_state.json`, and it is the cwd every
8
+ * git call of `loop_claim.py` (batch-base resolution, ancestry asserts) must
9
+ * run in. The main root's own `loop_state.json` is not a worktree campaign's
10
+ * state and is never read for one.
11
+ *
12
+ * Legacy campaigns (no such worktree) fall back to the project root, exactly
13
+ * as they behaved before campaigns got worktrees.
14
+ *
15
+ * Read-only and tolerant: any fs error resolves to the fallback, never throws.
16
+ */
17
+ import { readdirSync, realpathSync, statSync } from "node:fs";
18
+ import path from "node:path";
19
+ import { isWithin } from "./campaign-paths.js";
20
+ const SLUG_PATTERN = /^[A-Za-z0-9._-]{1,128}$/;
21
+ const WORKTREE_PREFIX = "campaign-";
22
+ /** `<root>/.shipwright/loop_state.json`. */
23
+ export function loopStatePathFor(root) {
24
+ return path.join(root, ".shipwright", "loop_state.json");
25
+ }
26
+ /** realpath of a directory under `<projectRoot>/.worktrees`, or null. */
27
+ function safeWorktreeDir(projectRoot, name) {
28
+ try {
29
+ const parent = realpathSync(path.join(projectRoot, ".worktrees"));
30
+ // `.worktrees` itself may be a symlink out of the project: it must resolve inside.
31
+ if (!isWithin(realpathSync(projectRoot), parent))
32
+ return null;
33
+ const candidate = path.join(parent, name);
34
+ if (!statSync(candidate).isDirectory())
35
+ return null;
36
+ const real = realpathSync(candidate);
37
+ return isWithin(parent, real) && real !== parent ? real : null;
38
+ }
39
+ catch {
40
+ return null;
41
+ }
42
+ }
43
+ /**
44
+ * The state root for one campaign: its worktree when present (realpath-guarded
45
+ * inside `<projectRoot>/.worktrees`), else the project root.
46
+ */
47
+ export function resolveCampaignStateRoot(projectRoot, slug) {
48
+ const fallback = { root: projectRoot, worktree: false };
49
+ if (!SLUG_PATTERN.test(slug) || slug.includes(".."))
50
+ return fallback;
51
+ const real = safeWorktreeDir(projectRoot, WORKTREE_PREFIX + slug);
52
+ return real ? { root: real, worktree: true } : fallback;
53
+ }
54
+ /** Every existing campaign worktree under the project, as `{ slug, root }`. */
55
+ export function listCampaignWorktrees(projectRoot) {
56
+ let entries;
57
+ try {
58
+ entries = readdirSync(path.join(projectRoot, ".worktrees"));
59
+ }
60
+ catch {
61
+ return [];
62
+ }
63
+ const out = [];
64
+ for (const name of entries) {
65
+ if (!name.startsWith(WORKTREE_PREFIX))
66
+ continue;
67
+ const slug = name.slice(WORKTREE_PREFIX.length);
68
+ if (!slug || !SLUG_PATTERN.test(slug) || slug.includes(".."))
69
+ continue;
70
+ const real = safeWorktreeDir(projectRoot, name);
71
+ if (real)
72
+ out.push({ slug, root: real });
73
+ }
74
+ return out;
75
+ }
76
+ //# sourceMappingURL=campaign-worktree-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-worktree-root.js","sourceRoot":"","sources":["../../src/core/campaign-worktree-root.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ interface VendoredClaimRecordLockContract {
2
+ contractVersion: number;
3
+ lockPathSuffix: string;
4
+ staleMs: number;
5
+ realpath: boolean;
6
+ }
7
+ export declare const CLAIM_RECORD_LOCK_CONTRACT: VendoredClaimRecordLockContract;
8
+ /**
9
+ * `proper-lockfile` options carrying the contract's `stale` / `realpath`
10
+ * fixings explicitly. Never sets `lockfilePath` — the lock marker must stay
11
+ * `proper-lockfile`'s own `<canonical-target>${lockPathSuffix}`, which is
12
+ * what a peer holding a different path string to the same file resolves to
13
+ * as well (contract `lockPathDescription`). Enforced structurally: an
14
+ * `extra.lockfilePath` is dropped rather than forwarded, so this invariant
15
+ * does not rely on every caller remembering not to pass one.
16
+ */
17
+ export declare function claimRecordLockOptions<T extends Record<string, unknown>>(extra: T): Omit<T, "lockfilePath"> & {
18
+ stale: number;
19
+ realpath: boolean;
20
+ };
21
+ export interface LockRetryConfig {
22
+ retries?: number;
23
+ minTimeout?: number;
24
+ maxTimeout?: number;
25
+ factor?: number;
26
+ }
27
+ /** Acquire a `proper-lockfile` lock on `path` under the FR-04.28 contract. */
28
+ export declare function lockClaimRecordFile(path: string, retries?: number | LockRetryConfig): Promise<() => Promise<void>>;
29
+ export {};
30
+ //# sourceMappingURL=claim-record-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-record-lock.d.ts","sourceRoot":"","sources":["../../src/core/claim-record-lock.ts"],"names":[],"mappings":"AAkDA,UAAU,+BAA+B;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AA2BD,eAAO,MAAM,0BAA0B,EAAE,+BAKxC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,KAAK,EAAE,CAAC,GACP,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAOhE;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,8EAA8E;AAC9E,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,eAAmB,GACpC,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAE9B"}
@@ -0,0 +1,90 @@
1
+ /*
2
+ * claim-record-lock.ts — FR-04.28 claim-record lock fixings, applied
3
+ * EXPLICITLY at both of this repo's shared-file lock sites so agreement
4
+ * with leadwright survives a `proper-lockfile` upstream default change.
5
+ *
6
+ * leadwright writes two files this repo also writes: `sdk-sessions.json`
7
+ * (this module's consumer, via `index.ts`'s `lockPath`) and
8
+ * `decisions-proposed.md` (`external/org/decisions-lock.ts`). Both call
9
+ * sites import the SAME constant below rather than retyping numbers, so
10
+ * they cannot drift from each other even if one is edited without the
11
+ * other. `index.ts`'s `lockPath` local is also reused for two files
12
+ * leadwright does NOT touch — `projects.json` and `settings.json` — so a
13
+ * future `contractVersion` bump changing `staleMs`/`realpath` widens to
14
+ * those too, not just `sdk-sessions.json`; harmless today only because the
15
+ * contract's values equal `proper-lockfile`'s own defaults (code-review
16
+ * finding).
17
+ *
18
+ * `core/triage-lock.ts` and `external/org/beat-register-release-core.ts`
19
+ * are two OTHER `proper-lockfile` call sites nearby that are deliberately
20
+ * NOT wired to this module (doubt-review finding) — do not migrate them
21
+ * for "consistency": `triage-lock.ts` sets `lockfilePath` on purpose (to
22
+ * dodge a Python-owned sidecar lock), which `claimRecordLockOptions` would
23
+ * silently strip; `beat-register-release-core.ts` hand-mirrors a
24
+ * DIFFERENT leadwright contract (`lib/file-locks.ts`) with its own
25
+ * deliberately much longer `stale: 300_000`, and folding it into this
26
+ * module would silently shrink that window 30x.
27
+ *
28
+ * The contract itself is vendored, byte-for-byte, at
29
+ * `../vendor/leadwright/claim-record-lock-contract.json` — a copy of
30
+ * leadwright's `schemas/claim-record-lock-contract.json` (generated there
31
+ * from `lib/claim-contract.ts`'s `CLAIM_RECORD_LOCK_CONTRACT`, leadwright
32
+ * PR #55, commit 3d24a46). This repo has no build-time or runtime
33
+ * dependency on the leadwright checkout — the vendored copy is the whole
34
+ * of the coupling, and it is deliberately weak: nothing here fails loud
35
+ * when leadwright bumps `contractVersion`. `claim-record-lock.test.ts`
36
+ * pins today's `contractVersion` (1) against the vendored file, so a
37
+ * future re-copy that changes the value fails that pin until a human
38
+ * reviews the bump and updates it deliberately — the same ratchet shape
39
+ * this repo already uses for the Semgrep suppression set (CLAUDE.md rule
40
+ * 31). Short of that: re-copying the file is a human's job, on being told
41
+ * (by leadwright's own changelog, an ADR, or this comment) that the
42
+ * upstream contract changed. Do not add a script or CI job that fetches
43
+ * it live — that would be the cross-repo build dependency the iterate
44
+ * spec for this change explicitly rules out.
45
+ */
46
+ import { readFileSync } from "node:fs";
47
+ import { dirname, join } from "node:path";
48
+ import { fileURLToPath } from "node:url";
49
+ import * as lockfile from "proper-lockfile";
50
+ const here = dirname(fileURLToPath(import.meta.url));
51
+ const vendoredContractPath = join(here, "..", "vendor", "leadwright", "claim-record-lock-contract.json");
52
+ let vendoredContract;
53
+ try {
54
+ vendoredContract = JSON.parse(readFileSync(vendoredContractPath, "utf-8"));
55
+ }
56
+ catch (err) {
57
+ // Named explicitly (external review finding): a missing/malformed
58
+ // vendored copy would otherwise surface as an opaque ENOENT/JSON-parse
59
+ // error at whichever entry point first imports this module.
60
+ throw new Error(`claim-record-lock.ts: failed to read the vendored FR-04.28 contract at ` +
61
+ `${vendoredContractPath} — ${err instanceof Error ? err.message : String(err)}`, { cause: err });
62
+ }
63
+ export const CLAIM_RECORD_LOCK_CONTRACT = {
64
+ contractVersion: vendoredContract.contractVersion,
65
+ lockPathSuffix: vendoredContract.lockPathSuffix,
66
+ staleMs: vendoredContract.staleMs,
67
+ realpath: vendoredContract.realpath,
68
+ };
69
+ /**
70
+ * `proper-lockfile` options carrying the contract's `stale` / `realpath`
71
+ * fixings explicitly. Never sets `lockfilePath` — the lock marker must stay
72
+ * `proper-lockfile`'s own `<canonical-target>${lockPathSuffix}`, which is
73
+ * what a peer holding a different path string to the same file resolves to
74
+ * as well (contract `lockPathDescription`). Enforced structurally: an
75
+ * `extra.lockfilePath` is dropped rather than forwarded, so this invariant
76
+ * does not rely on every caller remembering not to pass one.
77
+ */
78
+ export function claimRecordLockOptions(extra) {
79
+ const { lockfilePath: _dropped, ...rest } = extra;
80
+ return {
81
+ ...rest,
82
+ stale: CLAIM_RECORD_LOCK_CONTRACT.staleMs,
83
+ realpath: CLAIM_RECORD_LOCK_CONTRACT.realpath,
84
+ };
85
+ }
86
+ /** Acquire a `proper-lockfile` lock on `path` under the FR-04.28 contract. */
87
+ export async function lockClaimRecordFile(path, retries = 3) {
88
+ return lockfile.lock(path, claimRecordLockOptions({ retries }));
89
+ }
90
+ //# sourceMappingURL=claim-record-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-record-lock.js","sourceRoot":"","sources":["../../src/core/claim-record-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAS5C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,oBAAoB,GAAG,IAAI,CAC/B,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,iCAAiC,CAClC,CAAC;AAEF,IAAI,gBAAiD,CAAC;AACtD,IAAI,CAAC;IACH,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAC3B,YAAY,CAAC,oBAAoB,EAAE,OAAO,CAAC,CACT,CAAC;AACvC,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,kEAAkE;IAClE,uEAAuE;IACvE,4DAA4D;IAC5D,MAAM,IAAI,KAAK,CACb,yEAAyE;QACvE,GAAG,oBAAoB,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACjF,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAoC;IACzE,eAAe,EAAE,gBAAgB,CAAC,eAAe;IACjD,cAAc,EAAE,gBAAgB,CAAC,cAAc;IAC/C,OAAO,EAAE,gBAAgB,CAAC,OAAO;IACjC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;CACpC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAQ;IAER,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAuC,CAAC;IACpF,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE,0BAA0B,CAAC,OAAO;QACzC,QAAQ,EAAE,0BAA0B,CAAC,QAAQ;KAC9C,CAAC;AACJ,CAAC;AASD,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,UAAoC,CAAC;IAErC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { spawn } from "node:child_process";
2
+ import { treeKill as realTreeKill } from "./preview-child-lifecycle.js";
3
+ export interface CliChildSpawnResult {
4
+ code: number;
5
+ stdout: string;
6
+ stderr: string;
7
+ spawnError?: string;
8
+ }
9
+ export type CliChildSpawnFn = (bin: string, args: string[], options: {
10
+ timeoutMs: number;
11
+ env: NodeJS.ProcessEnv;
12
+ }) => Promise<CliChildSpawnResult>;
13
+ export interface CliChildSpawnDeps {
14
+ /** Injected for tests — a fake `spawn`. */
15
+ spawnFn?: typeof spawn;
16
+ /** Injected for tests — a fake `treeKill`. */
17
+ treeKillFn?: typeof realTreeKill;
18
+ /** Injected for tests — overrides `process.platform`. */
19
+ platform?: NodeJS.Platform;
20
+ }
21
+ /** Tree-kill every currently in-flight CLI child. Best-effort, synchronous
22
+ * (matches `PreviewSessionManager.killAll()` / `PtyManager.killAll()`).
23
+ * `treeKillFn` is injectable — tests exercise the registry without a real
24
+ * platform-dependent `taskkill`/`process.kill` side effect. */
25
+ export declare function killAllTrackedCliChildren(treeKillFn?: typeof realTreeKill): void;
26
+ export declare function createCliChildSpawn(deps?: CliChildSpawnDeps): CliChildSpawnFn;
27
+ export declare const defaultCliChildSpawn: CliChildSpawnFn;
28
+ //# sourceMappingURL=cli-child-spawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-child-spawn.d.ts","sourceRoot":"","sources":["../../src/core/cli-child-spawn.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAIxE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KACnD,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAElC,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,OAAO,YAAY,CAAC;IACjC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B;AAUD;;;gEAGgE;AAChE,wBAAgB,yBAAyB,CAAC,UAAU,GAAE,OAAO,YAA2B,GAAG,IAAI,CAS9F;AAgBD,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,iBAAsB,GAAG,eAAe,CAuEjF;AAED,eAAO,MAAM,oBAAoB,EAAE,eAAuC,CAAC"}
@@ -0,0 +1,146 @@
1
+ /*
2
+ * cli-child-spawn.ts — shared spawn wrapper for the short-lived CLI
3
+ * bridges (`triage-cli-runner.ts`, `codex-oracle-runner.ts`). Both wrap
4
+ * `uv run --no-project --python ">=3.11" <script>` and previously carried
5
+ * byte-identical `execFile(..., { timeout }, cb)` implementations —
6
+ * factored out here so a fix lands once instead of twice, and so the two
7
+ * copies can't re-diverge.
8
+ *
9
+ * Required-CI PR-review finding on PR #466: `execFile`'s own `timeout`
10
+ * option only signals the IMMEDIATE child (`uv`); if `uv run` has already
11
+ * forked a Python grandchild by the time it fires, Node does not reap that
12
+ * grandchild on Windows. Accepted as low-severity for triage-cli-runner.ts
13
+ * (fires only on a user click) but NOT for codex-oracle-runner.ts, which
14
+ * fires every 60s per stalled task indefinitely — the same theoretical gap
15
+ * at a much higher exposure rate. Fixed here by driving our OWN timer that
16
+ * tree-kills the whole process group instead of relying on Node's
17
+ * single-process kill — reusing `preview-child-lifecycle.ts`'s `treeKill`
18
+ * (win32 `taskkill /t /f`, POSIX `kill(-pid)`) rather than adding the
19
+ * `tree-kill` npm package, which `decision_log.md` records as a
20
+ * deliberately pruned dependency.
21
+ *
22
+ * `execFile` is replaced with `spawn` (matching `preview-session-manager.
23
+ * ts`'s own spawn call) because `execFile`'s TypeScript surface has no
24
+ * `detached` option at all — and `detached: platform !== "win32"` is
25
+ * load-bearing, not incidental: POSIX `treeKill` signals the process
26
+ * GROUP via a negative pid, which only exists if the child led its own
27
+ * group at spawn time. Without it `kill(-pid)` ESRCHes and silently
28
+ * degrades to a single-process kill — the exact case this module exists
29
+ * to close. stdout/stderr are accumulated manually and truncated (not
30
+ * errored) past the 1MB cap — a truncated JSON payload still fails the
31
+ * caller's `JSON.parse` the same way an old `maxBuffer` error used to,
32
+ * without adding a distinct overflow error path to keep in sync.
33
+ *
34
+ * `error.killed` is NOT how a timeout is detected here (unlike the old
35
+ * per-file implementations) — our tree-kill goes around `child.kill()`
36
+ * entirely (an external `taskkill` process, or a raw `process.kill(-pid)`),
37
+ * so `ChildProcess#killed` never flips true for it. An explicit `timedOut`
38
+ * flag, set the instant our timer fires, is the only correct signal.
39
+ */
40
+ import { spawn } from "node:child_process";
41
+ import { treeKill as realTreeKill } from "./preview-child-lifecycle.js";
42
+ const MAX_BUFFER_CHARS = 1024 * 1024;
43
+ // Every real child this process has spawned via `createCliChildSpawn` and
44
+ // has not yet seen exit — index.ts's shutdown() tree-kills whatever remains
45
+ // here, mirroring the existing `previewManager.killAll()` / `ptyManager.
46
+ // killAll()` precedent (a stalled-task tick can leave one in flight; the
47
+ // 30s-per-call timeout alone is not a shutdown guarantee, since a hard
48
+ // process.exit() can fire well inside that window).
49
+ const trackedChildren = new Set();
50
+ /** Tree-kill every currently in-flight CLI child. Best-effort, synchronous
51
+ * (matches `PreviewSessionManager.killAll()` / `PtyManager.killAll()`).
52
+ * `treeKillFn` is injectable — tests exercise the registry without a real
53
+ * platform-dependent `taskkill`/`process.kill` side effect. */
54
+ export function killAllTrackedCliChildren(treeKillFn = realTreeKill) {
55
+ for (const child of trackedChildren) {
56
+ try {
57
+ treeKillFn(child, "SIGKILL");
58
+ }
59
+ catch {
60
+ // best-effort — nothing more to do for an already-dead child
61
+ }
62
+ }
63
+ trackedChildren.clear();
64
+ }
65
+ function appendBounded(current, chunk) {
66
+ const next = current + chunk;
67
+ return next.length > MAX_BUFFER_CHARS ? next.slice(0, MAX_BUFFER_CHARS) : next;
68
+ }
69
+ // Local PR-review preflight finding, round 2 (PR #466): the tree-kill call
70
+ // on timeout is fire-and-forget — an external `taskkill` process (win32) or
71
+ // a raw `process.kill(-pid)` (POSIX) — and neither GUARANTEES a `close`
72
+ // event follows (an unresponsive process, a `taskkill` that itself failed
73
+ // silently). Without a second bound, a failed kill would leave the
74
+ // returned promise pending and the child in `trackedChildren` forever,
75
+ // defeating the "bounded" half of "bounded/reaped subprocess strategy".
76
+ const KILL_GRACE_MS = 5000;
77
+ export function createCliChildSpawn(deps = {}) {
78
+ const spawnFn = deps.spawnFn ?? spawn;
79
+ const treeKillFn = deps.treeKillFn ?? realTreeKill;
80
+ const platform = deps.platform ?? process.platform;
81
+ return (bin, args, options) => new Promise((resolve) => {
82
+ let timedOut = false;
83
+ let settled = false;
84
+ let stdout = "";
85
+ let stderr = "";
86
+ let timer;
87
+ let killGraceTimer;
88
+ const child = spawnFn(bin, args, {
89
+ windowsHide: true,
90
+ env: options.env,
91
+ stdio: ["ignore", "pipe", "pipe"],
92
+ // See module header — spawn/kill must agree on whether a
93
+ // process group exists.
94
+ detached: platform !== "win32",
95
+ });
96
+ trackedChildren.add(child);
97
+ child.stdout?.setEncoding("utf-8");
98
+ child.stderr?.setEncoding("utf-8");
99
+ child.stdout?.on("data", (chunk) => {
100
+ stdout = appendBounded(stdout, chunk);
101
+ });
102
+ child.stderr?.on("data", (chunk) => {
103
+ stderr = appendBounded(stderr, chunk);
104
+ });
105
+ const finish = (result) => {
106
+ if (settled)
107
+ return;
108
+ settled = true;
109
+ clearTimeout(timer);
110
+ if (killGraceTimer)
111
+ clearTimeout(killGraceTimer);
112
+ trackedChildren.delete(child);
113
+ resolve(result);
114
+ };
115
+ child.once("error", (err) => {
116
+ finish({
117
+ code: -1,
118
+ stdout,
119
+ stderr,
120
+ spawnError: typeof err.code === "string" ? err.code : "spawn_error",
121
+ });
122
+ });
123
+ child.once("close", (code) => {
124
+ if (timedOut)
125
+ return finish({ code: 124, stdout, stderr, spawnError: "timeout" });
126
+ return finish({ code: code ?? 1, stdout, stderr });
127
+ });
128
+ timer = setTimeout(() => {
129
+ timedOut = true;
130
+ try {
131
+ treeKillFn(child, "SIGKILL", { platform });
132
+ }
133
+ catch {
134
+ // best-effort — the grace timer below bounds the promise
135
+ // regardless of whether the kill itself threw or was ignored.
136
+ }
137
+ killGraceTimer = setTimeout(() => {
138
+ finish({ code: 124, stdout, stderr, spawnError: "timeout" });
139
+ }, KILL_GRACE_MS);
140
+ killGraceTimer.unref?.();
141
+ }, options.timeoutMs);
142
+ timer.unref?.();
143
+ });
144
+ }
145
+ export const defaultCliChildSpawn = createCliChildSpawn();
146
+ //# sourceMappingURL=cli-child-spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-child-spawn.js","sourceRoot":"","sources":["../../src/core/cli-child-spawn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { type RunFn } from "./readiness-probe-run.js";
2
+ export interface CodexModelCatalogEntry {
3
+ slug: string;
4
+ display_name: string;
5
+ }
6
+ export interface CodexModelsProbeResult {
7
+ ok: boolean;
8
+ models: CodexModelCatalogEntry[];
9
+ }
10
+ export interface CodexModelsProbeDeps {
11
+ run?: RunFn;
12
+ }
13
+ /**
14
+ * Run `codex debug models` and reduce its raw catalog (which also carries
15
+ * per-model reasoning-level metadata and multi-KB prompt text this codebase
16
+ * has no use for) down to the `{slug, display_name}` pairs a launch-form
17
+ * combobox needs. Never throws.
18
+ *
19
+ * Filters to entries that are objects with a `slug` matching the existing
20
+ * `CODEX_MODEL_SLUG_PATTERN` (the same syntactic gate `parse-body.ts` applies
21
+ * to a launch request — imported directly here since this is an intra-server
22
+ * import, not the cross-package case DO-NOT #7 forbids) and a non-empty
23
+ * string `display_name`, with `visibility === "list"` (excludes
24
+ * internal/reserved entries like `codex-auto-review`). A single malformed
25
+ * entry is dropped, not fatal to the rest of the list — this is untrusted
26
+ * external-process output whose shape this codebase does not control.
27
+ * (external review fix, both reviewers, 2026-09-19 architecture review.)
28
+ *
29
+ * Gates on `result.code === 0`, NOT `result.ok` — `readiness-probe-run.ts`'s
30
+ * shared `ok` heuristic (`!error && /\d+\.\d+/.test(stdout+stderr)`) was
31
+ * written for `--version` probes and requires a dotted version number
32
+ * somewhere in the output. A real catalog containing only integer-suffixed
33
+ * slugs (no dotted version anywhere in the JSON) would trip that heuristic to
34
+ * `false` despite a clean exit and fully valid JSON — exactly the false
35
+ * `unavailable` gap `RunResult.code`'s own doc comment already names `code`
36
+ * as the fix for (code-review finding, 2026-09-19). `code` can be `null` on
37
+ * ENOENT/timeout, hence the strict `=== 0`.
38
+ *
39
+ * De-duplicates on `slug`, first-wins — the CLI's own catalog shape is
40
+ * untrusted external-process output (same reasoning as the per-entry
41
+ * shape checks above), and a duplicate slug would otherwise reach the
42
+ * client as two `<option>`s sharing one React key (doubt-review finding,
43
+ * 2026-09-19).
44
+ */
45
+ export declare function runCodexModelsProbe(deps: CodexModelsProbeDeps): Promise<CodexModelsProbeResult>;
46
+ //# sourceMappingURL=codex-models-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-models-probe.d.ts","sourceRoot":"","sources":["../../src/core/codex-models-probe.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAkB,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtE,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,sBAAsB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,KAAK,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAmCrG"}
@@ -0,0 +1,103 @@
1
+ /*
2
+ * codex-models-probe — the "codex debug models" catalog PROBE
3
+ * (iterate-2026-09-19-codex-model-catalog, follow-up to shipwright#471/#473).
4
+ *
5
+ * Replaces the withdrawn hardcoded model-slug enum (shipwright#771) with a
6
+ * live probe of the Codex CLI's own catalog, so the New Iterate combobox
7
+ * never lags the provider's own model lineup. Reuses `defaultRunShim` from
8
+ * `readiness-probe-run.ts` — `codex` installs as a Windows `.cmd` PATHEXT
9
+ * shim (no `codex.exe`), which `execFile(cmd, args, {shell:false})` cannot
10
+ * invoke directly (see that module's own doc comment); `defaultRunShim`
11
+ * already solves this for the readiness probe's `codex --version` check, and
12
+ * this is the same binary.
13
+ *
14
+ * Runs with NO extra flags — deliberately not `--bundled` ("skip refresh,
15
+ * dump only the catalog shipped with this binary"): empirically, `--bundled`
16
+ * returns a visibly OLDER catalog (verified during this iterate's Confidence
17
+ * Calibration — missing a newly-listed model, carrying stale entries the
18
+ * refreshed call no longer lists). The whole point of this probe is to stay
19
+ * ahead of a hand-maintained list, so the default (refreshing) invocation is
20
+ * the only one that serves that goal.
21
+ *
22
+ * Verified during this iterate: `codex debug models` requires NO
23
+ * authentication (re-ran with an empty `CODEX_HOME` — no `auth.json` — and
24
+ * it still exited 0 with the full catalog), so this probe has no
25
+ * auth-specific degraded path to handle.
26
+ */
27
+ import { CODEX_MODEL_SLUG_PATTERN } from "../external/launch/parse-body.js";
28
+ import { defaultRunShim } from "./readiness-probe-run.js";
29
+ /**
30
+ * Run `codex debug models` and reduce its raw catalog (which also carries
31
+ * per-model reasoning-level metadata and multi-KB prompt text this codebase
32
+ * has no use for) down to the `{slug, display_name}` pairs a launch-form
33
+ * combobox needs. Never throws.
34
+ *
35
+ * Filters to entries that are objects with a `slug` matching the existing
36
+ * `CODEX_MODEL_SLUG_PATTERN` (the same syntactic gate `parse-body.ts` applies
37
+ * to a launch request — imported directly here since this is an intra-server
38
+ * import, not the cross-package case DO-NOT #7 forbids) and a non-empty
39
+ * string `display_name`, with `visibility === "list"` (excludes
40
+ * internal/reserved entries like `codex-auto-review`). A single malformed
41
+ * entry is dropped, not fatal to the rest of the list — this is untrusted
42
+ * external-process output whose shape this codebase does not control.
43
+ * (external review fix, both reviewers, 2026-09-19 architecture review.)
44
+ *
45
+ * Gates on `result.code === 0`, NOT `result.ok` — `readiness-probe-run.ts`'s
46
+ * shared `ok` heuristic (`!error && /\d+\.\d+/.test(stdout+stderr)`) was
47
+ * written for `--version` probes and requires a dotted version number
48
+ * somewhere in the output. A real catalog containing only integer-suffixed
49
+ * slugs (no dotted version anywhere in the JSON) would trip that heuristic to
50
+ * `false` despite a clean exit and fully valid JSON — exactly the false
51
+ * `unavailable` gap `RunResult.code`'s own doc comment already names `code`
52
+ * as the fix for (code-review finding, 2026-09-19). `code` can be `null` on
53
+ * ENOENT/timeout, hence the strict `=== 0`.
54
+ *
55
+ * De-duplicates on `slug`, first-wins — the CLI's own catalog shape is
56
+ * untrusted external-process output (same reasoning as the per-entry
57
+ * shape checks above), and a duplicate slug would otherwise reach the
58
+ * client as two `<option>`s sharing one React key (doubt-review finding,
59
+ * 2026-09-19).
60
+ */
61
+ export async function runCodexModelsProbe(deps) {
62
+ const run = deps.run ?? defaultRunShim;
63
+ let result;
64
+ try {
65
+ result = await run("codex", ["debug", "models"]);
66
+ }
67
+ catch {
68
+ // `defaultRunShim`/`defaultRun` never reject (execFile's callback always
69
+ // resolves a RunResult) — this guards a rejecting `run` override, so the
70
+ // "never throws" contract this docstring promises actually holds for any
71
+ // caller's `deps.run`, not just the two shipped implementations
72
+ // (external code-review finding, 2026-09-19).
73
+ return { ok: false, models: [] };
74
+ }
75
+ if (result.code !== 0)
76
+ return { ok: false, models: [] };
77
+ let parsed;
78
+ try {
79
+ parsed = JSON.parse(result.stdout);
80
+ }
81
+ catch {
82
+ return { ok: false, models: [] };
83
+ }
84
+ const rawModels = parsed?.models;
85
+ if (!Array.isArray(rawModels))
86
+ return { ok: false, models: [] };
87
+ const bySlug = new Map();
88
+ for (const entry of rawModels) {
89
+ if (!entry || typeof entry !== "object")
90
+ continue;
91
+ const { slug, display_name, visibility } = entry;
92
+ if (visibility !== "list")
93
+ continue;
94
+ if (typeof slug !== "string" || !CODEX_MODEL_SLUG_PATTERN.test(slug))
95
+ continue;
96
+ if (typeof display_name !== "string" || display_name.trim() === "")
97
+ continue;
98
+ if (!bySlug.has(slug))
99
+ bySlug.set(slug, { slug, display_name });
100
+ }
101
+ return { ok: true, models: [...bySlug.values()] };
102
+ }
103
+ //# sourceMappingURL=codex-models-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-models-probe.js","sourceRoot":"","sources":["../../src/core/codex-models-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAc,MAAM,0BAA0B,CAAC;AAgBtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA0B;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,cAAc,CAAC;IACvC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,gEAAgE;QAChE,8CAA8C;QAC9C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAExD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,SAAS,GAAI,MAAsC,EAAE,MAAM,CAAC;IAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAEhE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkC,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,KAAgC,CAAC;QAC5E,IAAI,UAAU,KAAK,MAAM;YAAE,SAAS;QACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/E,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QAC7E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { type RunFn } from "./readiness-probe.js";
2
+ export declare const CODEX_ORACLE_TIMEOUT_MS = 30000;
3
+ /** Verbatim mirror of `codex_completion_oracle.py`'s `verdict` field. */
4
+ export type OracleVerdict = "done" | "not_done" | "delivery_pending" | "no_oracle";
5
+ export interface OracleEvidence {
6
+ /**
7
+ * §5.1's correction — present only on an `iterate`-phase `delivery_pending`
8
+ * verdict. `"error"` = watch_pr_delivery.py's checks_failed/closed branch
9
+ * (a PR exists but its delivery failed — never re-poll forever). Absent or
10
+ * `"indeterminate"` = case 13 proper (CI/review/auto-merge still running,
11
+ * or the watcher itself produced no verdict) — safe to keep re-polling.
12
+ */
13
+ delivery_state?: "error" | "indeterminate";
14
+ [key: string]: unknown;
15
+ }
16
+ export interface OracleResult {
17
+ verdict: OracleVerdict;
18
+ phase: string;
19
+ session: string;
20
+ evidence: OracleEvidence;
21
+ }
22
+ export type OracleOutcome = {
23
+ kind: "ok";
24
+ result: OracleResult;
25
+ } | {
26
+ kind: "engine-unavailable";
27
+ reason: string;
28
+ repairCommand: string;
29
+ } | {
30
+ kind: "failed";
31
+ reason: string;
32
+ };
33
+ export interface OracleSpawnResult {
34
+ code: number;
35
+ stdout: string;
36
+ stderr: string;
37
+ spawnError?: string;
38
+ }
39
+ export type OracleSpawnFn = (bin: string, args: string[], options: {
40
+ timeoutMs: number;
41
+ env: NodeJS.ProcessEnv;
42
+ }) => Promise<OracleSpawnResult>;
43
+ export declare const defaultSpawnOracle: OracleSpawnFn;
44
+ export interface RunCodexOracleInput {
45
+ projectRoot: string;
46
+ phase: string;
47
+ session: string;
48
+ /** ISO-8601 with timezone — the §2.4 degradation-path floor. */
49
+ since?: string;
50
+ }
51
+ export interface CodexOracleDeps {
52
+ run?: RunFn;
53
+ spawn?: OracleSpawnFn;
54
+ existsFn?: (p: string) => boolean;
55
+ homeDir?: string;
56
+ scriptOverride?: string;
57
+ timeoutMs?: number;
58
+ baseEnv?: NodeJS.ProcessEnv;
59
+ }
60
+ /** Resolve the single cache-owned oracle CLI shipped with the Shipwright runtime. */
61
+ export declare function resolveCodexOracleScript(deps?: Pick<CodexOracleDeps, "existsFn" | "homeDir" | "scriptOverride">): string | null;
62
+ /**
63
+ * Run `codex_completion_oracle.py --project-root <root> --phase <p>
64
+ * --session <sid> [--since <iso>]` and parse its JSON verdict. Never
65
+ * throws for an oracle failure — only a programming error would reject.
66
+ */
67
+ export declare function runCodexOracle(input: RunCodexOracleInput, deps?: CodexOracleDeps): Promise<OracleOutcome>;
68
+ //# sourceMappingURL=codex-oracle-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-oracle-runner.d.ts","sourceRoot":"","sources":["../../src/core/codex-oracle-runner.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAiD,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGjG,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,kBAAkB,GAAG,WAAW,CAAC;AAEnF,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KACnD,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEhC,eAAO,MAAM,kBAAkB,EAAE,aAAoC,CAAC;AAEtE,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC7B;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,CACtC,IAAI,GAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAAM,GAC1E,MAAM,GAAG,IAAI,CAWf;AAQD;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,aAAa,CAAC,CAuExB"}