@svenroth-ai/shipwright 0.24.1-next.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 (1014) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +55 -0
  3. package/bin/shipwright.mjs +187 -0
  4. package/client/dist/assets/EmbeddedTerminal-6GBZ9nXN.css +32 -0
  5. package/client/dist/assets/EmbeddedTerminal-CpeDvtzx.js +123 -0
  6. package/client/dist/assets/MarkdownEditorModal-Di9HN39z.js +212 -0
  7. package/client/dist/assets/abnfDiagram-VRR7QNED-BbSdq0X7.js +1 -0
  8. package/client/dist/assets/arc-BZT7vKjm.js +1 -0
  9. package/client/dist/assets/architectureDiagram-ZJ3FMSHR-BuRwoNgV.js +36 -0
  10. package/client/dist/assets/blockDiagram-677ZJIJ3-B2RNYWcr.js +132 -0
  11. package/client/dist/assets/c4Diagram-LMCZKHZV-fbXlt08K.js +10 -0
  12. package/client/dist/assets/channel-2-wkFEKK.js +1 -0
  13. package/client/dist/assets/chunk-2Q5K7J3B-NqMRUe5-.js +1 -0
  14. package/client/dist/assets/chunk-32BRIVSS-CIr9bFCd.js +1 -0
  15. package/client/dist/assets/chunk-5VM5RSS4-l0I6rbZN.js +15 -0
  16. package/client/dist/assets/chunk-EX3LRPZG-DXinoCxp.js +231 -0
  17. package/client/dist/assets/chunk-JWPE2WC7-BAcCano9.js +1 -0
  18. package/client/dist/assets/chunk-MOJQB5TN-DMVOqL7C.js +88 -0
  19. package/client/dist/assets/chunk-RYQCIY6F-CtNSAItH.js +1 -0
  20. package/client/dist/assets/chunk-V7JOEXUC-CufSmC93.js +206 -0
  21. package/client/dist/assets/chunk-VR4S4FIN-_BbUF9fa.js +1 -0
  22. package/client/dist/assets/chunk-XXDRQBXY-uQ35hUPB.js +1 -0
  23. package/client/dist/assets/classDiagram-OUVF2IWQ-A9SpDakb.js +1 -0
  24. package/client/dist/assets/classDiagram-v2-EOCWNBFH-A9SpDakb.js +1 -0
  25. package/client/dist/assets/cose-bilkent-JH36ORCC-B9q9uYCX.js +1 -0
  26. package/client/dist/assets/cynefin-VYW2F7L2-C2_bJyZA.js +178 -0
  27. package/client/dist/assets/cynefinDiagram-TSTJHNR4-0mzVmPv4.js +62 -0
  28. package/client/dist/assets/cytoscape.esm-DTSO7Bv0.js +331 -0
  29. package/client/dist/assets/dagre-VKFMJZFB-CIE9HMtr.js +4 -0
  30. package/client/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  31. package/client/dist/assets/diagram-FQU43EPY-DdkBaZrX.js +3 -0
  32. package/client/dist/assets/diagram-G47NLZAW-Cql4k2sg.js +24 -0
  33. package/client/dist/assets/diagram-NH7WQ7WH-FRAUyqEu.js +24 -0
  34. package/client/dist/assets/diagram-OA4YK3LP-DXo8GTB8.js +30 -0
  35. package/client/dist/assets/diagram-WEI45ONY-DqVtWGdt.js +41 -0
  36. package/client/dist/assets/ebnfDiagram-CCIWWBDH-B0La0RsO.js +1 -0
  37. package/client/dist/assets/erDiagram-Q63AITRT-DHbbqiY9.js +85 -0
  38. package/client/dist/assets/flowDiagram-23GEKE2U-I6vhJlCk.js +156 -0
  39. package/client/dist/assets/ganttDiagram-NO4QXBWP-CDYZHcsU.js +292 -0
  40. package/client/dist/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2 +0 -0
  41. package/client/dist/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2 +0 -0
  42. package/client/dist/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2 +0 -0
  43. package/client/dist/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
  44. package/client/dist/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2 +0 -0
  45. package/client/dist/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2 +0 -0
  46. package/client/dist/assets/gitGraphDiagram-IHSO6WYX-dyf7caP8.js +106 -0
  47. package/client/dist/assets/graph-C9eacEi8.js +1 -0
  48. package/client/dist/assets/index-BYrVLOXw.js +609 -0
  49. package/client/dist/assets/index-BZvZ9izZ.css +1 -0
  50. package/client/dist/assets/infoDiagram-FWYZ7A6U-BlWH6vM3.js +2 -0
  51. package/client/dist/assets/init-Gi6I4Gst.js +1 -0
  52. package/client/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  53. package/client/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  54. package/client/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  55. package/client/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  56. package/client/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  57. package/client/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  58. package/client/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  59. package/client/dist/assets/ishikawaDiagram-FXEZZL3T-BEKH-_6E.js +70 -0
  60. package/client/dist/assets/journeyDiagram-5HDEW3XC-cn_mQ2U9.js +139 -0
  61. package/client/dist/assets/kanban-definition-HUTT4EX6-DGZiYhYV.js +89 -0
  62. package/client/dist/assets/katex-DkKDou_j.js +257 -0
  63. package/client/dist/assets/layout-DEXfKzaS.js +1 -0
  64. package/client/dist/assets/linear-CdtYl6qR.js +1 -0
  65. package/client/dist/assets/map-Czzmt4hB.js +1 -0
  66. package/client/dist/assets/mermaid.core-CrKi1642.js +314 -0
  67. package/client/dist/assets/mindmap-definition-LN4V7U3C-G_CA7V9L.js +96 -0
  68. package/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  69. package/client/dist/assets/pegDiagram-2B236MQR-6ZeO9kDM.js +1 -0
  70. package/client/dist/assets/pieDiagram-ENE6RG2P-Bd0InZSQ.js +39 -0
  71. package/client/dist/assets/quadrantDiagram-ABIIQ3AL-Bg1m9Csn.js +7 -0
  72. package/client/dist/assets/railroadDiagram-RFXS5EU6-CCzPP1JU.js +1 -0
  73. package/client/dist/assets/requirementDiagram-TGXJPOKE-iN7kyPgM.js +84 -0
  74. package/client/dist/assets/sankeyDiagram-HTMAVEWB-DN1v_DUJ.js +40 -0
  75. package/client/dist/assets/sequenceDiagram-DBY2YBRQ-C5LMp5Sa.js +162 -0
  76. package/client/dist/assets/sizeCapture-X5ZJPWSS-Bp9jVLhL.js +1 -0
  77. package/client/dist/assets/stateDiagram-2N3HPSRC-VbWBetTf.js +1 -0
  78. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-BuaUtNAG.js +1 -0
  79. package/client/dist/assets/swimlanes-5IMT3BWC-CrXokvQ-.js +2 -0
  80. package/client/dist/assets/swimlanesDiagram-G3AALYLV-C6hwc993.js +8 -0
  81. package/client/dist/assets/timeline-definition-FHXFAJF6-Cxx1NT9A.js +120 -0
  82. package/client/dist/assets/vennDiagram-L72KCM5P-C6DBgaEy.js +34 -0
  83. package/client/dist/assets/wardleyDiagram-EHGQE667-RV7xMg8g.js +78 -0
  84. package/client/dist/assets/xychartDiagram-FW5EYKEG-Llhe9pB1.js +7 -0
  85. package/client/dist/backdrops/deck-golden.jpg +0 -0
  86. package/client/dist/backdrops/lighthouse.jpg +0 -0
  87. package/client/dist/index.html +27 -0
  88. package/client/dist/shipwright-logo-white.png +0 -0
  89. package/lib/cache-runtime.mjs +72 -0
  90. package/lib/cache-sync.mjs +243 -0
  91. package/lib/claude-cli.mjs +173 -0
  92. package/lib/plugins.mjs +181 -0
  93. package/lib/preflight.mjs +208 -0
  94. package/lib/probes.mjs +53 -0
  95. package/lib/server.mjs +315 -0
  96. package/lib/util.mjs +83 -0
  97. package/lib/version-check.mjs +76 -0
  98. package/lib/win32-spawn.mjs +253 -0
  99. package/package.json +67 -0
  100. package/scripts/deploy-procs.mjs +208 -0
  101. package/scripts/deploy-swap.mjs +276 -0
  102. package/scripts/kill-targets.js +140 -0
  103. package/scripts/repair-claude-json.mjs +295 -0
  104. package/server/dist/config/default-actions.json +90 -0
  105. package/server/dist/config.d.ts +96 -0
  106. package/server/dist/config.d.ts.map +1 -0
  107. package/server/dist/config.js +68 -0
  108. package/server/dist/config.js.map +1 -0
  109. package/server/dist/core/actions-schema-validator.d.ts +8 -0
  110. package/server/dist/core/actions-schema-validator.d.ts.map +1 -0
  111. package/server/dist/core/actions-schema-validator.js +394 -0
  112. package/server/dist/core/actions-schema-validator.js.map +1 -0
  113. package/server/dist/core/actions-substitute.d.ts +115 -0
  114. package/server/dist/core/actions-substitute.d.ts.map +1 -0
  115. package/server/dist/core/actions-substitute.js +549 -0
  116. package/server/dist/core/actions-substitute.js.map +1 -0
  117. package/server/dist/core/board-column.d.ts +3 -0
  118. package/server/dist/core/board-column.d.ts.map +1 -0
  119. package/server/dist/core/board-column.js +4 -0
  120. package/server/dist/core/board-column.js.map +1 -0
  121. package/server/dist/core/campaign-events.d.ts +39 -0
  122. package/server/dist/core/campaign-events.d.ts.map +1 -0
  123. package/server/dist/core/campaign-events.js +192 -0
  124. package/server/dist/core/campaign-events.js.map +1 -0
  125. package/server/dist/core/campaign-loop-state.d.ts +31 -0
  126. package/server/dist/core/campaign-loop-state.d.ts.map +1 -0
  127. package/server/dist/core/campaign-loop-state.js +124 -0
  128. package/server/dist/core/campaign-loop-state.js.map +1 -0
  129. package/server/dist/core/campaign-parse.d.ts +28 -0
  130. package/server/dist/core/campaign-parse.d.ts.map +1 -0
  131. package/server/dist/core/campaign-parse.js +174 -0
  132. package/server/dist/core/campaign-parse.js.map +1 -0
  133. package/server/dist/core/campaign-paths.d.ts +24 -0
  134. package/server/dist/core/campaign-paths.d.ts.map +1 -0
  135. package/server/dist/core/campaign-paths.js +111 -0
  136. package/server/dist/core/campaign-paths.js.map +1 -0
  137. package/server/dist/core/campaign-route-helpers.d.ts +19 -0
  138. package/server/dist/core/campaign-route-helpers.d.ts.map +1 -0
  139. package/server/dist/core/campaign-route-helpers.js +51 -0
  140. package/server/dist/core/campaign-route-helpers.js.map +1 -0
  141. package/server/dist/core/campaign-status-json.d.ts +55 -0
  142. package/server/dist/core/campaign-status-json.d.ts.map +1 -0
  143. package/server/dist/core/campaign-status-json.js +57 -0
  144. package/server/dist/core/campaign-status-json.js.map +1 -0
  145. package/server/dist/core/campaign-store.d.ts +10 -0
  146. package/server/dist/core/campaign-store.d.ts.map +1 -0
  147. package/server/dist/core/campaign-store.js +245 -0
  148. package/server/dist/core/campaign-store.js.map +1 -0
  149. package/server/dist/core/campaign-types.d.ts +101 -0
  150. package/server/dist/core/campaign-types.d.ts.map +1 -0
  151. package/server/dist/core/campaign-types.js +10 -0
  152. package/server/dist/core/campaign-types.js.map +1 -0
  153. package/server/dist/core/campaign-write.d.ts +13 -0
  154. package/server/dist/core/campaign-write.d.ts.map +1 -0
  155. package/server/dist/core/campaign-write.js +128 -0
  156. package/server/dist/core/campaign-write.js.map +1 -0
  157. package/server/dist/core/cascade-delete-project-tasks.d.ts +14 -0
  158. package/server/dist/core/cascade-delete-project-tasks.d.ts.map +1 -0
  159. package/server/dist/core/cascade-delete-project-tasks.js +68 -0
  160. package/server/dist/core/cascade-delete-project-tasks.js.map +1 -0
  161. package/server/dist/core/claude-bin-resolver.d.ts +62 -0
  162. package/server/dist/core/claude-bin-resolver.d.ts.map +1 -0
  163. package/server/dist/core/claude-bin-resolver.js +208 -0
  164. package/server/dist/core/claude-bin-resolver.js.map +1 -0
  165. package/server/dist/core/claude-theme-reader.d.ts +15 -0
  166. package/server/dist/core/claude-theme-reader.d.ts.map +1 -0
  167. package/server/dist/core/claude-theme-reader.js +52 -0
  168. package/server/dist/core/claude-theme-reader.js.map +1 -0
  169. package/server/dist/core/cli-compat.d.ts +43 -0
  170. package/server/dist/core/cli-compat.d.ts.map +1 -0
  171. package/server/dist/core/cli-compat.js +88 -0
  172. package/server/dist/core/cli-compat.js.map +1 -0
  173. package/server/dist/core/compliance-dimensions.d.ts +20 -0
  174. package/server/dist/core/compliance-dimensions.d.ts.map +1 -0
  175. package/server/dist/core/compliance-dimensions.js +114 -0
  176. package/server/dist/core/compliance-dimensions.js.map +1 -0
  177. package/server/dist/core/compliance-reader.d.ts +49 -0
  178. package/server/dist/core/compliance-reader.d.ts.map +1 -0
  179. package/server/dist/core/compliance-reader.js +147 -0
  180. package/server/dist/core/compliance-reader.js.map +1 -0
  181. package/server/dist/core/contract-version.d.ts +72 -0
  182. package/server/dist/core/contract-version.d.ts.map +1 -0
  183. package/server/dist/core/contract-version.js +114 -0
  184. package/server/dist/core/contract-version.js.map +1 -0
  185. package/server/dist/core/design-feedback.d.ts +29 -0
  186. package/server/dist/core/design-feedback.d.ts.map +1 -0
  187. package/server/dist/core/design-feedback.js +80 -0
  188. package/server/dist/core/design-feedback.js.map +1 -0
  189. package/server/dist/core/dismissed-campaigns-store.d.ts +45 -0
  190. package/server/dist/core/dismissed-campaigns-store.d.ts.map +1 -0
  191. package/server/dist/core/dismissed-campaigns-store.js +147 -0
  192. package/server/dist/core/dismissed-campaigns-store.js.map +1 -0
  193. package/server/dist/core/event-log-reader.d.ts +19 -0
  194. package/server/dist/core/event-log-reader.d.ts.map +1 -0
  195. package/server/dist/core/event-log-reader.js +209 -0
  196. package/server/dist/core/event-log-reader.js.map +1 -0
  197. package/server/dist/core/event-log-types.d.ts +99 -0
  198. package/server/dist/core/event-log-types.d.ts.map +1 -0
  199. package/server/dist/core/event-log-types.js +14 -0
  200. package/server/dist/core/event-log-types.js.map +1 -0
  201. package/server/dist/core/gitignore-cache.d.ts +16 -0
  202. package/server/dist/core/gitignore-cache.d.ts.map +1 -0
  203. package/server/dist/core/gitignore-cache.js +103 -0
  204. package/server/dist/core/gitignore-cache.js.map +1 -0
  205. package/server/dist/core/grade-runner.d.ts +63 -0
  206. package/server/dist/core/grade-runner.d.ts.map +1 -0
  207. package/server/dist/core/grade-runner.js +176 -0
  208. package/server/dist/core/grade-runner.js.map +1 -0
  209. package/server/dist/core/grade-target.d.ts +43 -0
  210. package/server/dist/core/grade-target.d.ts.map +1 -0
  211. package/server/dist/core/grade-target.js +162 -0
  212. package/server/dist/core/grade-target.js.map +1 -0
  213. package/server/dist/core/inbox-derive.d.ts +56 -0
  214. package/server/dist/core/inbox-derive.d.ts.map +1 -0
  215. package/server/dist/core/inbox-derive.js +211 -0
  216. package/server/dist/core/inbox-derive.js.map +1 -0
  217. package/server/dist/core/jsonl-decode.d.ts +28 -0
  218. package/server/dist/core/jsonl-decode.d.ts.map +1 -0
  219. package/server/dist/core/jsonl-decode.js +96 -0
  220. package/server/dist/core/jsonl-decode.js.map +1 -0
  221. package/server/dist/core/jsonl-records.d.ts +104 -0
  222. package/server/dist/core/jsonl-records.d.ts.map +1 -0
  223. package/server/dist/core/jsonl-records.js +222 -0
  224. package/server/dist/core/jsonl-records.js.map +1 -0
  225. package/server/dist/core/launcher.d.ts +74 -0
  226. package/server/dist/core/launcher.d.ts.map +1 -0
  227. package/server/dist/core/launcher.js +192 -0
  228. package/server/dist/core/launcher.js.map +1 -0
  229. package/server/dist/core/mission-context/artifacts-commit.d.ts +28 -0
  230. package/server/dist/core/mission-context/artifacts-commit.d.ts.map +1 -0
  231. package/server/dist/core/mission-context/artifacts-commit.js +98 -0
  232. package/server/dist/core/mission-context/artifacts-commit.js.map +1 -0
  233. package/server/dist/core/mission-context/artifacts-decisions.d.ts +5 -0
  234. package/server/dist/core/mission-context/artifacts-decisions.d.ts.map +1 -0
  235. package/server/dist/core/mission-context/artifacts-decisions.js +114 -0
  236. package/server/dist/core/mission-context/artifacts-decisions.js.map +1 -0
  237. package/server/dist/core/mission-context/artifacts-slice2.d.ts +12 -0
  238. package/server/dist/core/mission-context/artifacts-slice2.d.ts.map +1 -0
  239. package/server/dist/core/mission-context/artifacts-slice2.js +125 -0
  240. package/server/dist/core/mission-context/artifacts-slice2.js.map +1 -0
  241. package/server/dist/core/mission-context/artifacts-tests.d.ts +34 -0
  242. package/server/dist/core/mission-context/artifacts-tests.d.ts.map +1 -0
  243. package/server/dist/core/mission-context/artifacts-tests.js +236 -0
  244. package/server/dist/core/mission-context/artifacts-tests.js.map +1 -0
  245. package/server/dist/core/mission-context/artifacts.d.ts +33 -0
  246. package/server/dist/core/mission-context/artifacts.d.ts.map +1 -0
  247. package/server/dist/core/mission-context/artifacts.js +186 -0
  248. package/server/dist/core/mission-context/artifacts.js.map +1 -0
  249. package/server/dist/core/mission-context/association.d.ts +27 -0
  250. package/server/dist/core/mission-context/association.d.ts.map +1 -0
  251. package/server/dist/core/mission-context/association.js +69 -0
  252. package/server/dist/core/mission-context/association.js.map +1 -0
  253. package/server/dist/core/mission-context/campaign-artifacts.d.ts +9 -0
  254. package/server/dist/core/mission-context/campaign-artifacts.d.ts.map +1 -0
  255. package/server/dist/core/mission-context/campaign-artifacts.js +195 -0
  256. package/server/dist/core/mission-context/campaign-artifacts.js.map +1 -0
  257. package/server/dist/core/mission-context/campaign-facts.d.ts +99 -0
  258. package/server/dist/core/mission-context/campaign-facts.d.ts.map +1 -0
  259. package/server/dist/core/mission-context/campaign-facts.js +111 -0
  260. package/server/dist/core/mission-context/campaign-facts.js.map +1 -0
  261. package/server/dist/core/mission-context/decision-drops.d.ts +46 -0
  262. package/server/dist/core/mission-context/decision-drops.d.ts.map +1 -0
  263. package/server/dist/core/mission-context/decision-drops.js +269 -0
  264. package/server/dist/core/mission-context/decision-drops.js.map +1 -0
  265. package/server/dist/core/mission-context/decisions.d.ts +91 -0
  266. package/server/dist/core/mission-context/decisions.d.ts.map +1 -0
  267. package/server/dist/core/mission-context/decisions.js +222 -0
  268. package/server/dist/core/mission-context/decisions.js.map +1 -0
  269. package/server/dist/core/mission-context/doc-ids.d.ts +35 -0
  270. package/server/dist/core/mission-context/doc-ids.d.ts.map +1 -0
  271. package/server/dist/core/mission-context/doc-ids.js +78 -0
  272. package/server/dist/core/mission-context/doc-ids.js.map +1 -0
  273. package/server/dist/core/mission-context/document-read.d.ts +14 -0
  274. package/server/dist/core/mission-context/document-read.d.ts.map +1 -0
  275. package/server/dist/core/mission-context/document-read.js +36 -0
  276. package/server/dist/core/mission-context/document-read.js.map +1 -0
  277. package/server/dist/core/mission-context/fold-map.d.ts +45 -0
  278. package/server/dist/core/mission-context/fold-map.d.ts.map +1 -0
  279. package/server/dist/core/mission-context/fold-map.js +168 -0
  280. package/server/dist/core/mission-context/fold-map.js.map +1 -0
  281. package/server/dist/core/mission-context/fs-read.d.ts +47 -0
  282. package/server/dist/core/mission-context/fs-read.d.ts.map +1 -0
  283. package/server/dist/core/mission-context/fs-read.js +104 -0
  284. package/server/dist/core/mission-context/fs-read.js.map +1 -0
  285. package/server/dist/core/mission-context/iterate-record.d.ts +52 -0
  286. package/server/dist/core/mission-context/iterate-record.d.ts.map +1 -0
  287. package/server/dist/core/mission-context/iterate-record.js +156 -0
  288. package/server/dist/core/mission-context/iterate-record.js.map +1 -0
  289. package/server/dist/core/mission-context/merge-check.d.ts +60 -0
  290. package/server/dist/core/mission-context/merge-check.d.ts.map +1 -0
  291. package/server/dist/core/mission-context/merge-check.js +217 -0
  292. package/server/dist/core/mission-context/merge-check.js.map +1 -0
  293. package/server/dist/core/mission-context/merge-refresh.d.ts +14 -0
  294. package/server/dist/core/mission-context/merge-refresh.d.ts.map +1 -0
  295. package/server/dist/core/mission-context/merge-refresh.js +53 -0
  296. package/server/dist/core/mission-context/merge-refresh.js.map +1 -0
  297. package/server/dist/core/mission-context/merged-events.d.ts +34 -0
  298. package/server/dist/core/mission-context/merged-events.d.ts.map +1 -0
  299. package/server/dist/core/mission-context/merged-events.js +120 -0
  300. package/server/dist/core/mission-context/merged-events.js.map +1 -0
  301. package/server/dist/core/mission-context/pipeline-artifacts.d.ts +53 -0
  302. package/server/dist/core/mission-context/pipeline-artifacts.d.ts.map +1 -0
  303. package/server/dist/core/mission-context/pipeline-artifacts.js +161 -0
  304. package/server/dist/core/mission-context/pipeline-artifacts.js.map +1 -0
  305. package/server/dist/core/mission-context/planned-impact.d.ts +28 -0
  306. package/server/dist/core/mission-context/planned-impact.d.ts.map +1 -0
  307. package/server/dist/core/mission-context/planned-impact.js +129 -0
  308. package/server/dist/core/mission-context/planned-impact.js.map +1 -0
  309. package/server/dist/core/mission-context/pointer.d.ts +44 -0
  310. package/server/dist/core/mission-context/pointer.d.ts.map +1 -0
  311. package/server/dist/core/mission-context/pointer.js +165 -0
  312. package/server/dist/core/mission-context/pointer.js.map +1 -0
  313. package/server/dist/core/mission-context/resolver-io.d.ts +47 -0
  314. package/server/dist/core/mission-context/resolver-io.d.ts.map +1 -0
  315. package/server/dist/core/mission-context/resolver-io.js +11 -0
  316. package/server/dist/core/mission-context/resolver-io.js.map +1 -0
  317. package/server/dist/core/mission-context/resolver-parts.d.ts +57 -0
  318. package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -0
  319. package/server/dist/core/mission-context/resolver-parts.js +136 -0
  320. package/server/dist/core/mission-context/resolver-parts.js.map +1 -0
  321. package/server/dist/core/mission-context/resolver.d.ts +11 -0
  322. package/server/dist/core/mission-context/resolver.d.ts.map +1 -0
  323. package/server/dist/core/mission-context/resolver.js +261 -0
  324. package/server/dist/core/mission-context/resolver.js.map +1 -0
  325. package/server/dist/core/mission-context/review-record-entry.d.ts +45 -0
  326. package/server/dist/core/mission-context/review-record-entry.d.ts.map +1 -0
  327. package/server/dist/core/mission-context/review-record-entry.js +214 -0
  328. package/server/dist/core/mission-context/review-record-entry.js.map +1 -0
  329. package/server/dist/core/mission-context/review-record.d.ts +35 -0
  330. package/server/dist/core/mission-context/review-record.d.ts.map +1 -0
  331. package/server/dist/core/mission-context/review-record.js +259 -0
  332. package/server/dist/core/mission-context/review-record.js.map +1 -0
  333. package/server/dist/core/mission-context/review-state.d.ts +33 -0
  334. package/server/dist/core/mission-context/review-state.d.ts.map +1 -0
  335. package/server/dist/core/mission-context/review-state.js +249 -0
  336. package/server/dist/core/mission-context/review-state.js.map +1 -0
  337. package/server/dist/core/mission-context/run-id-recovery.d.ts +44 -0
  338. package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -0
  339. package/server/dist/core/mission-context/run-id-recovery.js +175 -0
  340. package/server/dist/core/mission-context/run-id-recovery.js.map +1 -0
  341. package/server/dist/core/mission-context/scenario.d.ts +121 -0
  342. package/server/dist/core/mission-context/scenario.d.ts.map +1 -0
  343. package/server/dist/core/mission-context/scenario.js +151 -0
  344. package/server/dist/core/mission-context/scenario.js.map +1 -0
  345. package/server/dist/core/mission-context/slice2-sources.d.ts +40 -0
  346. package/server/dist/core/mission-context/slice2-sources.d.ts.map +1 -0
  347. package/server/dist/core/mission-context/slice2-sources.js +80 -0
  348. package/server/dist/core/mission-context/slice2-sources.js.map +1 -0
  349. package/server/dist/core/mission-context/slice2-test-fixtures.d.ts +17 -0
  350. package/server/dist/core/mission-context/slice2-test-fixtures.d.ts.map +1 -0
  351. package/server/dist/core/mission-context/slice2-test-fixtures.js +61 -0
  352. package/server/dist/core/mission-context/slice2-test-fixtures.js.map +1 -0
  353. package/server/dist/core/mission-context/slice3-sources.d.ts +43 -0
  354. package/server/dist/core/mission-context/slice3-sources.d.ts.map +1 -0
  355. package/server/dist/core/mission-context/slice3-sources.js +192 -0
  356. package/server/dist/core/mission-context/slice3-sources.js.map +1 -0
  357. package/server/dist/core/mission-context/spec-candidates.d.ts +66 -0
  358. package/server/dist/core/mission-context/spec-candidates.d.ts.map +1 -0
  359. package/server/dist/core/mission-context/spec-candidates.js +164 -0
  360. package/server/dist/core/mission-context/spec-candidates.js.map +1 -0
  361. package/server/dist/core/mission-context/test-evidence.d.ts +14 -0
  362. package/server/dist/core/mission-context/test-evidence.d.ts.map +1 -0
  363. package/server/dist/core/mission-context/test-evidence.js +53 -0
  364. package/server/dist/core/mission-context/test-evidence.js.map +1 -0
  365. package/server/dist/core/mission-context/tests-diff.d.ts +68 -0
  366. package/server/dist/core/mission-context/tests-diff.d.ts.map +1 -0
  367. package/server/dist/core/mission-context/tests-diff.js +151 -0
  368. package/server/dist/core/mission-context/tests-diff.js.map +1 -0
  369. package/server/dist/core/mission-context/traceability.d.ts +58 -0
  370. package/server/dist/core/mission-context/traceability.d.ts.map +1 -0
  371. package/server/dist/core/mission-context/traceability.js +168 -0
  372. package/server/dist/core/mission-context/traceability.js.map +1 -0
  373. package/server/dist/core/mission-context/types-slice2.d.ts +192 -0
  374. package/server/dist/core/mission-context/types-slice2.d.ts.map +1 -0
  375. package/server/dist/core/mission-context/types-slice2.js +15 -0
  376. package/server/dist/core/mission-context/types-slice2.js.map +1 -0
  377. package/server/dist/core/mission-context/types-slice3.d.ts +84 -0
  378. package/server/dist/core/mission-context/types-slice3.d.ts.map +1 -0
  379. package/server/dist/core/mission-context/types-slice3.js +24 -0
  380. package/server/dist/core/mission-context/types-slice3.js.map +1 -0
  381. package/server/dist/core/mission-context/types.d.ts +198 -0
  382. package/server/dist/core/mission-context/types.d.ts.map +1 -0
  383. package/server/dist/core/mission-context/types.js +44 -0
  384. package/server/dist/core/mission-context/types.js.map +1 -0
  385. package/server/dist/core/mission-context/worktree-roots.d.ts +103 -0
  386. package/server/dist/core/mission-context/worktree-roots.d.ts.map +1 -0
  387. package/server/dist/core/mission-context/worktree-roots.js +201 -0
  388. package/server/dist/core/mission-context/worktree-roots.js.map +1 -0
  389. package/server/dist/core/model-tier-config-reader.d.ts +16 -0
  390. package/server/dist/core/model-tier-config-reader.d.ts.map +1 -0
  391. package/server/dist/core/model-tier-config-reader.js +87 -0
  392. package/server/dist/core/model-tier-config-reader.js.map +1 -0
  393. package/server/dist/core/normalize-fs-path.d.ts +2 -0
  394. package/server/dist/core/normalize-fs-path.d.ts.map +1 -0
  395. package/server/dist/core/normalize-fs-path.js +31 -0
  396. package/server/dist/core/normalize-fs-path.js.map +1 -0
  397. package/server/dist/core/parameter-resolver.d.ts +32 -0
  398. package/server/dist/core/parameter-resolver.d.ts.map +1 -0
  399. package/server/dist/core/parameter-resolver.js +300 -0
  400. package/server/dist/core/parameter-resolver.js.map +1 -0
  401. package/server/dist/core/path-guard.d.ts +40 -0
  402. package/server/dist/core/path-guard.d.ts.map +1 -0
  403. package/server/dist/core/path-guard.js +147 -0
  404. package/server/dist/core/path-guard.js.map +1 -0
  405. package/server/dist/core/pr-status.d.ts +47 -0
  406. package/server/dist/core/pr-status.d.ts.map +1 -0
  407. package/server/dist/core/pr-status.js +157 -0
  408. package/server/dist/core/pr-status.js.map +1 -0
  409. package/server/dist/core/preview-child-lifecycle.d.ts +77 -0
  410. package/server/dist/core/preview-child-lifecycle.d.ts.map +1 -0
  411. package/server/dist/core/preview-child-lifecycle.js +223 -0
  412. package/server/dist/core/preview-child-lifecycle.js.map +1 -0
  413. package/server/dist/core/preview-coherence.d.ts +59 -0
  414. package/server/dist/core/preview-coherence.d.ts.map +1 -0
  415. package/server/dist/core/preview-coherence.js +66 -0
  416. package/server/dist/core/preview-coherence.js.map +1 -0
  417. package/server/dist/core/preview-session-manager.d.ts +86 -0
  418. package/server/dist/core/preview-session-manager.d.ts.map +1 -0
  419. package/server/dist/core/preview-session-manager.js +303 -0
  420. package/server/dist/core/preview-session-manager.js.map +1 -0
  421. package/server/dist/core/preview-win32-spawn.d.ts +11 -0
  422. package/server/dist/core/preview-win32-spawn.d.ts.map +1 -0
  423. package/server/dist/core/preview-win32-spawn.js +45 -0
  424. package/server/dist/core/preview-win32-spawn.js.map +1 -0
  425. package/server/dist/core/profile-loader.d.ts +65 -0
  426. package/server/dist/core/profile-loader.d.ts.map +1 -0
  427. package/server/dist/core/profile-loader.js +125 -0
  428. package/server/dist/core/profile-loader.js.map +1 -0
  429. package/server/dist/core/project-actions-loader.d.ts +103 -0
  430. package/server/dist/core/project-actions-loader.d.ts.map +1 -0
  431. package/server/dist/core/project-actions-loader.js +161 -0
  432. package/server/dist/core/project-actions-loader.js.map +1 -0
  433. package/server/dist/core/project-manager.d.ts +110 -0
  434. package/server/dist/core/project-manager.d.ts.map +1 -0
  435. package/server/dist/core/project-manager.js +339 -0
  436. package/server/dist/core/project-manager.js.map +1 -0
  437. package/server/dist/core/project-registry-io.d.ts +64 -0
  438. package/server/dist/core/project-registry-io.d.ts.map +1 -0
  439. package/server/dist/core/project-registry-io.js +194 -0
  440. package/server/dist/core/project-registry-io.js.map +1 -0
  441. package/server/dist/core/readiness-probe.d.ts +89 -0
  442. package/server/dist/core/readiness-probe.d.ts.map +1 -0
  443. package/server/dist/core/readiness-probe.js +216 -0
  444. package/server/dist/core/readiness-probe.js.map +1 -0
  445. package/server/dist/core/run-config-reader.d.ts +35 -0
  446. package/server/dist/core/run-config-reader.d.ts.map +1 -0
  447. package/server/dist/core/run-config-reader.js +362 -0
  448. package/server/dist/core/run-config-reader.js.map +1 -0
  449. package/server/dist/core/run-data-join.d.ts +60 -0
  450. package/server/dist/core/run-data-join.d.ts.map +1 -0
  451. package/server/dist/core/run-data-join.js +264 -0
  452. package/server/dist/core/run-data-join.js.map +1 -0
  453. package/server/dist/core/run-data-types.d.ts +126 -0
  454. package/server/dist/core/run-data-types.d.ts.map +1 -0
  455. package/server/dist/core/run-data-types.js +25 -0
  456. package/server/dist/core/run-data-types.js.map +1 -0
  457. package/server/dist/core/run-loop-state-reader.d.ts +27 -0
  458. package/server/dist/core/run-loop-state-reader.d.ts.map +1 -0
  459. package/server/dist/core/run-loop-state-reader.js +79 -0
  460. package/server/dist/core/run-loop-state-reader.js.map +1 -0
  461. package/server/dist/core/sdk-sessions-merge.d.ts +60 -0
  462. package/server/dist/core/sdk-sessions-merge.d.ts.map +1 -0
  463. package/server/dist/core/sdk-sessions-merge.js +220 -0
  464. package/server/dist/core/sdk-sessions-merge.js.map +1 -0
  465. package/server/dist/core/sdk-sessions-store.d.ts +261 -0
  466. package/server/dist/core/sdk-sessions-store.d.ts.map +1 -0
  467. package/server/dist/core/sdk-sessions-store.js +315 -0
  468. package/server/dist/core/sdk-sessions-store.js.map +1 -0
  469. package/server/dist/core/sdk-sessions-validate.d.ts +9 -0
  470. package/server/dist/core/sdk-sessions-validate.d.ts.map +1 -0
  471. package/server/dist/core/sdk-sessions-validate.js +237 -0
  472. package/server/dist/core/sdk-sessions-validate.js.map +1 -0
  473. package/server/dist/core/session-jsonl-io.d.ts +35 -0
  474. package/server/dist/core/session-jsonl-io.d.ts.map +1 -0
  475. package/server/dist/core/session-jsonl-io.js +128 -0
  476. package/server/dist/core/session-jsonl-io.js.map +1 -0
  477. package/server/dist/core/session-parser.d.ts +81 -0
  478. package/server/dist/core/session-parser.d.ts.map +1 -0
  479. package/server/dist/core/session-parser.js +168 -0
  480. package/server/dist/core/session-parser.js.map +1 -0
  481. package/server/dist/core/session-watcher-debug.d.ts +7 -0
  482. package/server/dist/core/session-watcher-debug.d.ts.map +1 -0
  483. package/server/dist/core/session-watcher-debug.js +31 -0
  484. package/server/dist/core/session-watcher-debug.js.map +1 -0
  485. package/server/dist/core/session-watcher.d.ts +101 -0
  486. package/server/dist/core/session-watcher.d.ts.map +1 -0
  487. package/server/dist/core/session-watcher.js +226 -0
  488. package/server/dist/core/session-watcher.js.map +1 -0
  489. package/server/dist/core/shell-quote.d.ts +5 -0
  490. package/server/dist/core/shell-quote.d.ts.map +1 -0
  491. package/server/dist/core/shell-quote.js +49 -0
  492. package/server/dist/core/shell-quote.js.map +1 -0
  493. package/server/dist/core/task-editability.d.ts +22 -0
  494. package/server/dist/core/task-editability.d.ts.map +1 -0
  495. package/server/dist/core/task-editability.js +34 -0
  496. package/server/dist/core/task-editability.js.map +1 -0
  497. package/server/dist/core/terminal-prompt-detect.d.ts +7 -0
  498. package/server/dist/core/terminal-prompt-detect.d.ts.map +1 -0
  499. package/server/dist/core/terminal-prompt-detect.js +128 -0
  500. package/server/dist/core/terminal-prompt-detect.js.map +1 -0
  501. package/server/dist/core/tests-gate.d.ts +23 -0
  502. package/server/dist/core/tests-gate.d.ts.map +1 -0
  503. package/server/dist/core/tests-gate.js +92 -0
  504. package/server/dist/core/tests-gate.js.map +1 -0
  505. package/server/dist/core/triage-amend.d.ts +33 -0
  506. package/server/dist/core/triage-amend.d.ts.map +1 -0
  507. package/server/dist/core/triage-amend.js +109 -0
  508. package/server/dist/core/triage-amend.js.map +1 -0
  509. package/server/dist/core/triage-board-read.d.ts +37 -0
  510. package/server/dist/core/triage-board-read.d.ts.map +1 -0
  511. package/server/dist/core/triage-board-read.js +148 -0
  512. package/server/dist/core/triage-board-read.js.map +1 -0
  513. package/server/dist/core/triage-cli-runner.d.ts +61 -0
  514. package/server/dist/core/triage-cli-runner.d.ts.map +1 -0
  515. package/server/dist/core/triage-cli-runner.js +92 -0
  516. package/server/dist/core/triage-cli-runner.js.map +1 -0
  517. package/server/dist/core/triage-compose.d.ts +33 -0
  518. package/server/dist/core/triage-compose.d.ts.map +1 -0
  519. package/server/dist/core/triage-compose.js +51 -0
  520. package/server/dist/core/triage-compose.js.map +1 -0
  521. package/server/dist/core/triage-contract.d.ts +18 -0
  522. package/server/dist/core/triage-contract.d.ts.map +1 -0
  523. package/server/dist/core/triage-contract.js +45 -0
  524. package/server/dist/core/triage-contract.js.map +1 -0
  525. package/server/dist/core/triage-defer.d.ts +36 -0
  526. package/server/dist/core/triage-defer.d.ts.map +1 -0
  527. package/server/dist/core/triage-defer.js +117 -0
  528. package/server/dist/core/triage-defer.js.map +1 -0
  529. package/server/dist/core/triage-enrich.d.ts +31 -0
  530. package/server/dist/core/triage-enrich.d.ts.map +1 -0
  531. package/server/dist/core/triage-enrich.js +127 -0
  532. package/server/dist/core/triage-enrich.js.map +1 -0
  533. package/server/dist/core/triage-lock.d.ts +12 -0
  534. package/server/dist/core/triage-lock.d.ts.map +1 -0
  535. package/server/dist/core/triage-lock.js +41 -0
  536. package/server/dist/core/triage-lock.js.map +1 -0
  537. package/server/dist/core/triage-origin.d.ts +52 -0
  538. package/server/dist/core/triage-origin.d.ts.map +1 -0
  539. package/server/dist/core/triage-origin.js +0 -0
  540. package/server/dist/core/triage-origin.js.map +1 -0
  541. package/server/dist/core/triage-paths.d.ts +25 -0
  542. package/server/dist/core/triage-paths.d.ts.map +1 -0
  543. package/server/dist/core/triage-paths.js +125 -0
  544. package/server/dist/core/triage-paths.js.map +1 -0
  545. package/server/dist/core/triage-raw.d.ts +33 -0
  546. package/server/dist/core/triage-raw.d.ts.map +1 -0
  547. package/server/dist/core/triage-raw.js +66 -0
  548. package/server/dist/core/triage-raw.js.map +1 -0
  549. package/server/dist/core/triage-store.d.ts +42 -0
  550. package/server/dist/core/triage-store.d.ts.map +1 -0
  551. package/server/dist/core/triage-store.js +268 -0
  552. package/server/dist/core/triage-store.js.map +1 -0
  553. package/server/dist/core/triage-validation.d.ts +58 -0
  554. package/server/dist/core/triage-validation.d.ts.map +1 -0
  555. package/server/dist/core/triage-validation.js +198 -0
  556. package/server/dist/core/triage-validation.js.map +1 -0
  557. package/server/dist/core/win32-spawn.d.ts +29 -0
  558. package/server/dist/core/win32-spawn.d.ts.map +1 -0
  559. package/server/dist/core/win32-spawn.js +271 -0
  560. package/server/dist/core/win32-spawn.js.map +1 -0
  561. package/server/dist/external/__tests__/api-contract-probes.d.ts +49 -0
  562. package/server/dist/external/__tests__/api-contract-probes.d.ts.map +1 -0
  563. package/server/dist/external/__tests__/api-contract-probes.js +295 -0
  564. package/server/dist/external/__tests__/api-contract-probes.js.map +1 -0
  565. package/server/dist/external/_lead-fields-tag-filter-harness.d.ts +7 -0
  566. package/server/dist/external/_lead-fields-tag-filter-harness.d.ts.map +1 -0
  567. package/server/dist/external/_lead-fields-tag-filter-harness.js +41 -0
  568. package/server/dist/external/_lead-fields-tag-filter-harness.js.map +1 -0
  569. package/server/dist/external/_routes-edit-fields-harness.d.ts +8 -0
  570. package/server/dist/external/_routes-edit-fields-harness.d.ts.map +1 -0
  571. package/server/dist/external/_routes-edit-fields-harness.js +49 -0
  572. package/server/dist/external/_routes-edit-fields-harness.js.map +1 -0
  573. package/server/dist/external/_shared/helpers.d.ts +143 -0
  574. package/server/dist/external/_shared/helpers.d.ts.map +1 -0
  575. package/server/dist/external/_shared/helpers.js +231 -0
  576. package/server/dist/external/_shared/helpers.js.map +1 -0
  577. package/server/dist/external/actions/_helpers.d.ts +15 -0
  578. package/server/dist/external/actions/_helpers.d.ts.map +1 -0
  579. package/server/dist/external/actions/_helpers.js +48 -0
  580. package/server/dist/external/actions/_helpers.js.map +1 -0
  581. package/server/dist/external/actions/get.d.ts +8 -0
  582. package/server/dist/external/actions/get.d.ts.map +1 -0
  583. package/server/dist/external/actions/get.js +96 -0
  584. package/server/dist/external/actions/get.js.map +1 -0
  585. package/server/dist/external/actions/routes.d.ts +9 -0
  586. package/server/dist/external/actions/routes.d.ts.map +1 -0
  587. package/server/dist/external/actions/routes.js +33 -0
  588. package/server/dist/external/actions/routes.js.map +1 -0
  589. package/server/dist/external/actions/stub.d.ts +6 -0
  590. package/server/dist/external/actions/stub.d.ts.map +1 -0
  591. package/server/dist/external/actions/stub.js +51 -0
  592. package/server/dist/external/actions/stub.js.map +1 -0
  593. package/server/dist/external/actions/upload-delete.d.ts +6 -0
  594. package/server/dist/external/actions/upload-delete.d.ts.map +1 -0
  595. package/server/dist/external/actions/upload-delete.js +46 -0
  596. package/server/dist/external/actions/upload-delete.js.map +1 -0
  597. package/server/dist/external/actions/upload.d.ts +6 -0
  598. package/server/dist/external/actions/upload.d.ts.map +1 -0
  599. package/server/dist/external/actions/upload.js +141 -0
  600. package/server/dist/external/actions/upload.js.map +1 -0
  601. package/server/dist/external/compliance/routes.d.ts +9 -0
  602. package/server/dist/external/compliance/routes.d.ts.map +1 -0
  603. package/server/dist/external/compliance/routes.js +46 -0
  604. package/server/dist/external/compliance/routes.js.map +1 -0
  605. package/server/dist/external/design-review/__tests__/_helpers.d.ts +16 -0
  606. package/server/dist/external/design-review/__tests__/_helpers.d.ts.map +1 -0
  607. package/server/dist/external/design-review/__tests__/_helpers.js +92 -0
  608. package/server/dist/external/design-review/__tests__/_helpers.js.map +1 -0
  609. package/server/dist/external/design-review/feedback-write.d.ts +7 -0
  610. package/server/dist/external/design-review/feedback-write.d.ts.map +1 -0
  611. package/server/dist/external/design-review/feedback-write.js +126 -0
  612. package/server/dist/external/design-review/feedback-write.js.map +1 -0
  613. package/server/dist/external/design-review/gate.d.ts +11 -0
  614. package/server/dist/external/design-review/gate.d.ts.map +1 -0
  615. package/server/dist/external/design-review/gate.js +39 -0
  616. package/server/dist/external/design-review/gate.js.map +1 -0
  617. package/server/dist/external/design-review/routes.d.ts +9 -0
  618. package/server/dist/external/design-review/routes.d.ts.map +1 -0
  619. package/server/dist/external/design-review/routes.js +25 -0
  620. package/server/dist/external/design-review/routes.js.map +1 -0
  621. package/server/dist/external/design-review/serve.d.ts +10 -0
  622. package/server/dist/external/design-review/serve.d.ts.map +1 -0
  623. package/server/dist/external/design-review/serve.js +184 -0
  624. package/server/dist/external/design-review/serve.js.map +1 -0
  625. package/server/dist/external/events/routes.d.ts +16 -0
  626. package/server/dist/external/events/routes.d.ts.map +1 -0
  627. package/server/dist/external/events/routes.js +46 -0
  628. package/server/dist/external/events/routes.js.map +1 -0
  629. package/server/dist/external/file/_helpers.d.ts +62 -0
  630. package/server/dist/external/file/_helpers.d.ts.map +1 -0
  631. package/server/dist/external/file/_helpers.js +146 -0
  632. package/server/dist/external/file/_helpers.js.map +1 -0
  633. package/server/dist/external/file/routes.d.ts +7 -0
  634. package/server/dist/external/file/routes.d.ts.map +1 -0
  635. package/server/dist/external/file/routes.js +122 -0
  636. package/server/dist/external/file/routes.js.map +1 -0
  637. package/server/dist/external/file/write.d.ts +20 -0
  638. package/server/dist/external/file/write.d.ts.map +1 -0
  639. package/server/dist/external/file/write.js +172 -0
  640. package/server/dist/external/file/write.js.map +1 -0
  641. package/server/dist/external/inbox/_cache.d.ts +48 -0
  642. package/server/dist/external/inbox/_cache.d.ts.map +1 -0
  643. package/server/dist/external/inbox/_cache.js +46 -0
  644. package/server/dist/external/inbox/_cache.js.map +1 -0
  645. package/server/dist/external/inbox/_derive.d.ts +56 -0
  646. package/server/dist/external/inbox/_derive.d.ts.map +1 -0
  647. package/server/dist/external/inbox/_derive.js +231 -0
  648. package/server/dist/external/inbox/_derive.js.map +1 -0
  649. package/server/dist/external/inbox/routes.d.ts +13 -0
  650. package/server/dist/external/inbox/routes.d.ts.map +1 -0
  651. package/server/dist/external/inbox/routes.js +59 -0
  652. package/server/dist/external/inbox/routes.js.map +1 -0
  653. package/server/dist/external/launch/_helpers.d.ts +17 -0
  654. package/server/dist/external/launch/_helpers.d.ts.map +1 -0
  655. package/server/dist/external/launch/_helpers.js +25 -0
  656. package/server/dist/external/launch/_helpers.js.map +1 -0
  657. package/server/dist/external/launch/action-substitution-branch.d.ts +11 -0
  658. package/server/dist/external/launch/action-substitution-branch.d.ts.map +1 -0
  659. package/server/dist/external/launch/action-substitution-branch.js +112 -0
  660. package/server/dist/external/launch/action-substitution-branch.js.map +1 -0
  661. package/server/dist/external/launch/campaign-branch.d.ts +12 -0
  662. package/server/dist/external/launch/campaign-branch.d.ts.map +1 -0
  663. package/server/dist/external/launch/campaign-branch.js +95 -0
  664. package/server/dist/external/launch/campaign-branch.js.map +1 -0
  665. package/server/dist/external/launch/campaign-step-branch.d.ts +12 -0
  666. package/server/dist/external/launch/campaign-step-branch.d.ts.map +1 -0
  667. package/server/dist/external/launch/campaign-step-branch.js +108 -0
  668. package/server/dist/external/launch/campaign-step-branch.js.map +1 -0
  669. package/server/dist/external/launch/legacy-fallback-branch.d.ts +12 -0
  670. package/server/dist/external/launch/legacy-fallback-branch.d.ts.map +1 -0
  671. package/server/dist/external/launch/legacy-fallback-branch.js +29 -0
  672. package/server/dist/external/launch/legacy-fallback-branch.js.map +1 -0
  673. package/server/dist/external/launch/master-run-branch.d.ts +24 -0
  674. package/server/dist/external/launch/master-run-branch.d.ts.map +1 -0
  675. package/server/dist/external/launch/master-run-branch.js +168 -0
  676. package/server/dist/external/launch/master-run-branch.js.map +1 -0
  677. package/server/dist/external/launch/parse-body.d.ts +46 -0
  678. package/server/dist/external/launch/parse-body.d.ts.map +1 -0
  679. package/server/dist/external/launch/parse-body.js +115 -0
  680. package/server/dist/external/launch/parse-body.js.map +1 -0
  681. package/server/dist/external/launch/phase-task-branch.d.ts +18 -0
  682. package/server/dist/external/launch/phase-task-branch.d.ts.map +1 -0
  683. package/server/dist/external/launch/phase-task-branch.js +170 -0
  684. package/server/dist/external/launch/phase-task-branch.js.map +1 -0
  685. package/server/dist/external/launch/routes.d.ts +23 -0
  686. package/server/dist/external/launch/routes.d.ts.map +1 -0
  687. package/server/dist/external/launch/routes.js +198 -0
  688. package/server/dist/external/launch/routes.js.map +1 -0
  689. package/server/dist/external/media/_helpers.d.ts +32 -0
  690. package/server/dist/external/media/_helpers.d.ts.map +1 -0
  691. package/server/dist/external/media/_helpers.js +77 -0
  692. package/server/dist/external/media/_helpers.js.map +1 -0
  693. package/server/dist/external/media/routes.d.ts +7 -0
  694. package/server/dist/external/media/routes.d.ts.map +1 -0
  695. package/server/dist/external/media/routes.js +120 -0
  696. package/server/dist/external/media/routes.js.map +1 -0
  697. package/server/dist/external/mission-context/facts-slice3.d.ts +22 -0
  698. package/server/dist/external/mission-context/facts-slice3.d.ts.map +1 -0
  699. package/server/dist/external/mission-context/facts-slice3.js +143 -0
  700. package/server/dist/external/mission-context/facts-slice3.js.map +1 -0
  701. package/server/dist/external/mission-context/facts.d.ts +44 -0
  702. package/server/dist/external/mission-context/facts.d.ts.map +1 -0
  703. package/server/dist/external/mission-context/facts.js +109 -0
  704. package/server/dist/external/mission-context/facts.js.map +1 -0
  705. package/server/dist/external/mission-context/routes.d.ts +83 -0
  706. package/server/dist/external/mission-context/routes.d.ts.map +1 -0
  707. package/server/dist/external/mission-context/routes.js +226 -0
  708. package/server/dist/external/mission-context/routes.js.map +1 -0
  709. package/server/dist/external/mission-context/test-harness.d.ts +62 -0
  710. package/server/dist/external/mission-context/test-harness.d.ts.map +1 -0
  711. package/server/dist/external/mission-context/test-harness.js +121 -0
  712. package/server/dist/external/mission-context/test-harness.js.map +1 -0
  713. package/server/dist/external/mission-context/wire.d.ts +12 -0
  714. package/server/dist/external/mission-context/wire.d.ts.map +1 -0
  715. package/server/dist/external/mission-context/wire.js +62 -0
  716. package/server/dist/external/mission-context/wire.js.map +1 -0
  717. package/server/dist/external/model-config/routes.d.ts +9 -0
  718. package/server/dist/external/model-config/routes.d.ts.map +1 -0
  719. package/server/dist/external/model-config/routes.js +18 -0
  720. package/server/dist/external/model-config/routes.js.map +1 -0
  721. package/server/dist/external/org/__tests__/fixtures/lock-race-worker.d.ts +2 -0
  722. package/server/dist/external/org/__tests__/fixtures/lock-race-worker.d.ts.map +1 -0
  723. package/server/dist/external/org/__tests__/fixtures/lock-race-worker.js +67 -0
  724. package/server/dist/external/org/__tests__/fixtures/lock-race-worker.js.map +1 -0
  725. package/server/dist/external/org/_helpers.d.ts +67 -0
  726. package/server/dist/external/org/_helpers.d.ts.map +1 -0
  727. package/server/dist/external/org/_helpers.js +146 -0
  728. package/server/dist/external/org/_helpers.js.map +1 -0
  729. package/server/dist/external/org/beat-register-release-audit.d.ts +17 -0
  730. package/server/dist/external/org/beat-register-release-audit.d.ts.map +1 -0
  731. package/server/dist/external/org/beat-register-release-audit.js +96 -0
  732. package/server/dist/external/org/beat-register-release-audit.js.map +1 -0
  733. package/server/dist/external/org/beat-register-release-core.d.ts +50 -0
  734. package/server/dist/external/org/beat-register-release-core.d.ts.map +1 -0
  735. package/server/dist/external/org/beat-register-release-core.js +183 -0
  736. package/server/dist/external/org/beat-register-release-core.js.map +1 -0
  737. package/server/dist/external/org/beat-register-release.d.ts +13 -0
  738. package/server/dist/external/org/beat-register-release.d.ts.map +1 -0
  739. package/server/dist/external/org/beat-register-release.js +81 -0
  740. package/server/dist/external/org/beat-register-release.js.map +1 -0
  741. package/server/dist/external/org/beat-register.d.ts +100 -0
  742. package/server/dist/external/org/beat-register.d.ts.map +1 -0
  743. package/server/dist/external/org/beat-register.js +198 -0
  744. package/server/dist/external/org/beat-register.js.map +1 -0
  745. package/server/dist/external/org/countersign.d.ts +8 -0
  746. package/server/dist/external/org/countersign.d.ts.map +1 -0
  747. package/server/dist/external/org/countersign.js +157 -0
  748. package/server/dist/external/org/countersign.js.map +1 -0
  749. package/server/dist/external/org/cron.d.ts +22 -0
  750. package/server/dist/external/org/cron.d.ts.map +1 -0
  751. package/server/dist/external/org/cron.js +59 -0
  752. package/server/dist/external/org/cron.js.map +1 -0
  753. package/server/dist/external/org/decisions-lock.d.ts +68 -0
  754. package/server/dist/external/org/decisions-lock.d.ts.map +1 -0
  755. package/server/dist/external/org/decisions-lock.js +209 -0
  756. package/server/dist/external/org/decisions-lock.js.map +1 -0
  757. package/server/dist/external/org/file-read.d.ts +14 -0
  758. package/server/dist/external/org/file-read.d.ts.map +1 -0
  759. package/server/dist/external/org/file-read.js +80 -0
  760. package/server/dist/external/org/file-read.js.map +1 -0
  761. package/server/dist/external/org/file-write.d.ts +14 -0
  762. package/server/dist/external/org/file-write.d.ts.map +1 -0
  763. package/server/dist/external/org/file-write.js +205 -0
  764. package/server/dist/external/org/file-write.js.map +1 -0
  765. package/server/dist/external/org/last-run.d.ts +28 -0
  766. package/server/dist/external/org/last-run.d.ts.map +1 -0
  767. package/server/dist/external/org/last-run.js +137 -0
  768. package/server/dist/external/org/last-run.js.map +1 -0
  769. package/server/dist/external/org/org-chart-lookup.d.ts +16 -0
  770. package/server/dist/external/org/org-chart-lookup.d.ts.map +1 -0
  771. package/server/dist/external/org/org-chart-lookup.js +100 -0
  772. package/server/dist/external/org/org-chart-lookup.js.map +1 -0
  773. package/server/dist/external/org/org-chart.d.ts +25 -0
  774. package/server/dist/external/org/org-chart.d.ts.map +1 -0
  775. package/server/dist/external/org/org-chart.js +110 -0
  776. package/server/dist/external/org/org-chart.js.map +1 -0
  777. package/server/dist/external/org/routes.d.ts +12 -0
  778. package/server/dist/external/org/routes.d.ts.map +1 -0
  779. package/server/dist/external/org/routes.js +90 -0
  780. package/server/dist/external/org/routes.js.map +1 -0
  781. package/server/dist/external/org/usage.d.ts +24 -0
  782. package/server/dist/external/org/usage.d.ts.map +1 -0
  783. package/server/dist/external/org/usage.js +110 -0
  784. package/server/dist/external/org/usage.js.map +1 -0
  785. package/server/dist/external/pr-status/routes.d.ts +7 -0
  786. package/server/dist/external/pr-status/routes.d.ts.map +1 -0
  787. package/server/dist/external/pr-status/routes.js +37 -0
  788. package/server/dist/external/pr-status/routes.js.map +1 -0
  789. package/server/dist/external/preview/routes.d.ts +10 -0
  790. package/server/dist/external/preview/routes.d.ts.map +1 -0
  791. package/server/dist/external/preview/routes.js +71 -0
  792. package/server/dist/external/preview/routes.js.map +1 -0
  793. package/server/dist/external/routes.d.ts +106 -0
  794. package/server/dist/external/routes.d.ts.map +1 -0
  795. package/server/dist/external/routes.js +162 -0
  796. package/server/dist/external/routes.js.map +1 -0
  797. package/server/dist/external/run-config/routes.d.ts +9 -0
  798. package/server/dist/external/run-config/routes.d.ts.map +1 -0
  799. package/server/dist/external/run-config/routes.js +55 -0
  800. package/server/dist/external/run-config/routes.js.map +1 -0
  801. package/server/dist/external/runs/routes.d.ts +16 -0
  802. package/server/dist/external/runs/routes.d.ts.map +1 -0
  803. package/server/dist/external/runs/routes.js +69 -0
  804. package/server/dist/external/runs/routes.js.map +1 -0
  805. package/server/dist/external/tasks/_phase-helpers.d.ts +37 -0
  806. package/server/dist/external/tasks/_phase-helpers.d.ts.map +1 -0
  807. package/server/dist/external/tasks/_phase-helpers.js +101 -0
  808. package/server/dist/external/tasks/_phase-helpers.js.map +1 -0
  809. package/server/dist/external/tasks/create.d.ts +12 -0
  810. package/server/dist/external/tasks/create.d.ts.map +1 -0
  811. package/server/dist/external/tasks/create.js +139 -0
  812. package/server/dist/external/tasks/create.js.map +1 -0
  813. package/server/dist/external/tasks/lifecycle.d.ts +12 -0
  814. package/server/dist/external/tasks/lifecycle.d.ts.map +1 -0
  815. package/server/dist/external/tasks/lifecycle.js +231 -0
  816. package/server/dist/external/tasks/lifecycle.js.map +1 -0
  817. package/server/dist/external/tasks/list-get.d.ts +11 -0
  818. package/server/dist/external/tasks/list-get.d.ts.map +1 -0
  819. package/server/dist/external/tasks/list-get.js +50 -0
  820. package/server/dist/external/tasks/list-get.js.map +1 -0
  821. package/server/dist/external/tasks/patch.d.ts +12 -0
  822. package/server/dist/external/tasks/patch.d.ts.map +1 -0
  823. package/server/dist/external/tasks/patch.js +192 -0
  824. package/server/dist/external/tasks/patch.js.map +1 -0
  825. package/server/dist/external/tasks/routes.d.ts +18 -0
  826. package/server/dist/external/tasks/routes.d.ts.map +1 -0
  827. package/server/dist/external/tasks/routes.js +49 -0
  828. package/server/dist/external/tasks/routes.js.map +1 -0
  829. package/server/dist/external/transcript/routes.d.ts +12 -0
  830. package/server/dist/external/transcript/routes.d.ts.map +1 -0
  831. package/server/dist/external/transcript/routes.js +160 -0
  832. package/server/dist/external/transcript/routes.js.map +1 -0
  833. package/server/dist/external/tree/routes.d.ts +7 -0
  834. package/server/dist/external/tree/routes.d.ts.map +1 -0
  835. package/server/dist/external/tree/routes.js +96 -0
  836. package/server/dist/external/tree/routes.js.map +1 -0
  837. package/server/dist/index.d.ts +3 -0
  838. package/server/dist/index.d.ts.map +1 -0
  839. package/server/dist/index.js +774 -0
  840. package/server/dist/index.js.map +1 -0
  841. package/server/dist/lib/bind-errors.d.ts +18 -0
  842. package/server/dist/lib/bind-errors.d.ts.map +1 -0
  843. package/server/dist/lib/bind-errors.js +43 -0
  844. package/server/dist/lib/bind-errors.js.map +1 -0
  845. package/server/dist/lib/resolveHonoHost.d.ts +3 -0
  846. package/server/dist/lib/resolveHonoHost.d.ts.map +1 -0
  847. package/server/dist/lib/resolveHonoHost.js +34 -0
  848. package/server/dist/lib/resolveHonoHost.js.map +1 -0
  849. package/server/dist/lib/resolveNetworkProfile.d.ts +28 -0
  850. package/server/dist/lib/resolveNetworkProfile.d.ts.map +1 -0
  851. package/server/dist/lib/resolveNetworkProfile.js +42 -0
  852. package/server/dist/lib/resolveNetworkProfile.js.map +1 -0
  853. package/server/dist/lib/resolveTailscaleIp.d.ts +26 -0
  854. package/server/dist/lib/resolveTailscaleIp.d.ts.map +1 -0
  855. package/server/dist/lib/resolveTailscaleIp.js +61 -0
  856. package/server/dist/lib/resolveTailscaleIp.js.map +1 -0
  857. package/server/dist/lib/resolveTrustedOrigins.d.ts +9 -0
  858. package/server/dist/lib/resolveTrustedOrigins.d.ts.map +1 -0
  859. package/server/dist/lib/resolveTrustedOrigins.js +154 -0
  860. package/server/dist/lib/resolveTrustedOrigins.js.map +1 -0
  861. package/server/dist/middleware/error-handler.d.ts +8 -0
  862. package/server/dist/middleware/error-handler.d.ts.map +1 -0
  863. package/server/dist/middleware/error-handler.js +75 -0
  864. package/server/dist/middleware/error-handler.js.map +1 -0
  865. package/server/dist/middleware/logger.d.ts +3 -0
  866. package/server/dist/middleware/logger.d.ts.map +1 -0
  867. package/server/dist/middleware/logger.js +13 -0
  868. package/server/dist/middleware/logger.js.map +1 -0
  869. package/server/dist/routes/_triage-api-harness.d.ts +16 -0
  870. package/server/dist/routes/_triage-api-harness.d.ts.map +1 -0
  871. package/server/dist/routes/_triage-api-harness.js +89 -0
  872. package/server/dist/routes/_triage-api-harness.js.map +1 -0
  873. package/server/dist/routes/campaigns.d.ts +26 -0
  874. package/server/dist/routes/campaigns.d.ts.map +1 -0
  875. package/server/dist/routes/campaigns.js +237 -0
  876. package/server/dist/routes/campaigns.js.map +1 -0
  877. package/server/dist/routes/diagnostics.d.ts +84 -0
  878. package/server/dist/routes/diagnostics.d.ts.map +1 -0
  879. package/server/dist/routes/diagnostics.js +143 -0
  880. package/server/dist/routes/diagnostics.js.map +1 -0
  881. package/server/dist/routes/grade.d.ts +13 -0
  882. package/server/dist/routes/grade.d.ts.map +1 -0
  883. package/server/dist/routes/grade.js +45 -0
  884. package/server/dist/routes/grade.js.map +1 -0
  885. package/server/dist/routes/profiles.d.ts +25 -0
  886. package/server/dist/routes/profiles.d.ts.map +1 -0
  887. package/server/dist/routes/profiles.js +58 -0
  888. package/server/dist/routes/profiles.js.map +1 -0
  889. package/server/dist/routes/projects.d.ts +20 -0
  890. package/server/dist/routes/projects.d.ts.map +1 -0
  891. package/server/dist/routes/projects.js +105 -0
  892. package/server/dist/routes/projects.js.map +1 -0
  893. package/server/dist/routes/readiness.d.ts +11 -0
  894. package/server/dist/routes/readiness.d.ts.map +1 -0
  895. package/server/dist/routes/readiness.js +52 -0
  896. package/server/dist/routes/readiness.js.map +1 -0
  897. package/server/dist/routes/settings.d.ts +13 -0
  898. package/server/dist/routes/settings.d.ts.map +1 -0
  899. package/server/dist/routes/settings.js +69 -0
  900. package/server/dist/routes/settings.js.map +1 -0
  901. package/server/dist/routes/terminal-appearance.d.ts +7 -0
  902. package/server/dist/routes/terminal-appearance.d.ts.map +1 -0
  903. package/server/dist/routes/terminal-appearance.js +28 -0
  904. package/server/dist/routes/terminal-appearance.js.map +1 -0
  905. package/server/dist/routes/triage.d.ts +35 -0
  906. package/server/dist/routes/triage.d.ts.map +1 -0
  907. package/server/dist/routes/triage.js +496 -0
  908. package/server/dist/routes/triage.js.map +1 -0
  909. package/server/dist/terminal/backpressure-telemetry.d.ts +86 -0
  910. package/server/dist/terminal/backpressure-telemetry.d.ts.map +1 -0
  911. package/server/dist/terminal/backpressure-telemetry.js +158 -0
  912. package/server/dist/terminal/backpressure-telemetry.js.map +1 -0
  913. package/server/dist/terminal/boot-wipe.d.ts +47 -0
  914. package/server/dist/terminal/boot-wipe.d.ts.map +1 -0
  915. package/server/dist/terminal/boot-wipe.js +122 -0
  916. package/server/dist/terminal/boot-wipe.js.map +1 -0
  917. package/server/dist/terminal/headless-mirror.d.ts +139 -0
  918. package/server/dist/terminal/headless-mirror.d.ts.map +1 -0
  919. package/server/dist/terminal/headless-mirror.js +389 -0
  920. package/server/dist/terminal/headless-mirror.js.map +1 -0
  921. package/server/dist/terminal/headless-probe.d.ts +26 -0
  922. package/server/dist/terminal/headless-probe.d.ts.map +1 -0
  923. package/server/dist/terminal/headless-probe.js +99 -0
  924. package/server/dist/terminal/headless-probe.js.map +1 -0
  925. package/server/dist/terminal/idle-reaper.d.ts +47 -0
  926. package/server/dist/terminal/idle-reaper.d.ts.map +1 -0
  927. package/server/dist/terminal/idle-reaper.js +95 -0
  928. package/server/dist/terminal/idle-reaper.js.map +1 -0
  929. package/server/dist/terminal/image-paste.d.ts +60 -0
  930. package/server/dist/terminal/image-paste.d.ts.map +1 -0
  931. package/server/dist/terminal/image-paste.js +260 -0
  932. package/server/dist/terminal/image-paste.js.map +1 -0
  933. package/server/dist/terminal/pty-manager.d.ts +452 -0
  934. package/server/dist/terminal/pty-manager.d.ts.map +1 -0
  935. package/server/dist/terminal/pty-manager.js +1014 -0
  936. package/server/dist/terminal/pty-manager.js.map +1 -0
  937. package/server/dist/terminal/replay-snapshot.d.ts +25 -0
  938. package/server/dist/terminal/replay-snapshot.d.ts.map +1 -0
  939. package/server/dist/terminal/replay-snapshot.js +124 -0
  940. package/server/dist/terminal/replay-snapshot.js.map +1 -0
  941. package/server/dist/terminal/resync-gate.d.ts +20 -0
  942. package/server/dist/terminal/resync-gate.d.ts.map +1 -0
  943. package/server/dist/terminal/resync-gate.js +58 -0
  944. package/server/dist/terminal/resync-gate.js.map +1 -0
  945. package/server/dist/terminal/routes.d.ts +67 -0
  946. package/server/dist/terminal/routes.d.ts.map +1 -0
  947. package/server/dist/terminal/routes.js +455 -0
  948. package/server/dist/terminal/routes.js.map +1 -0
  949. package/server/dist/terminal/scrollback-store.d.ts +120 -0
  950. package/server/dist/terminal/scrollback-store.d.ts.map +1 -0
  951. package/server/dist/terminal/scrollback-store.js +572 -0
  952. package/server/dist/terminal/scrollback-store.js.map +1 -0
  953. package/server/dist/terminal/snapshot-preserve.d.ts +63 -0
  954. package/server/dist/terminal/snapshot-preserve.d.ts.map +1 -0
  955. package/server/dist/terminal/snapshot-preserve.js +116 -0
  956. package/server/dist/terminal/snapshot-preserve.js.map +1 -0
  957. package/server/dist/terminal/snapshot-store.d.ts +147 -0
  958. package/server/dist/terminal/snapshot-store.d.ts.map +1 -0
  959. package/server/dist/terminal/snapshot-store.js +439 -0
  960. package/server/dist/terminal/snapshot-store.js.map +1 -0
  961. package/server/dist/terminal/snapshot-tmp-sweep.d.ts +48 -0
  962. package/server/dist/terminal/snapshot-tmp-sweep.d.ts.map +1 -0
  963. package/server/dist/terminal/snapshot-tmp-sweep.js +141 -0
  964. package/server/dist/terminal/snapshot-tmp-sweep.js.map +1 -0
  965. package/server/dist/terminal/spawn-env.d.ts +46 -0
  966. package/server/dist/terminal/spawn-env.d.ts.map +1 -0
  967. package/server/dist/terminal/spawn-env.js +232 -0
  968. package/server/dist/terminal/spawn-env.js.map +1 -0
  969. package/server/dist/terminal/terminal-reset.d.ts +31 -0
  970. package/server/dist/terminal/terminal-reset.d.ts.map +1 -0
  971. package/server/dist/terminal/terminal-reset.js +43 -0
  972. package/server/dist/terminal/terminal-reset.js.map +1 -0
  973. package/server/dist/terminal/ws-heartbeat.d.ts +78 -0
  974. package/server/dist/terminal/ws-heartbeat.d.ts.map +1 -0
  975. package/server/dist/terminal/ws-heartbeat.js +164 -0
  976. package/server/dist/terminal/ws-heartbeat.js.map +1 -0
  977. package/server/dist/terminal/ws-upgrade-handler.d.ts +96 -0
  978. package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -0
  979. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts +46 -0
  980. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -0
  981. package/server/dist/terminal/ws-upgrade-handler.fixtures.js +126 -0
  982. package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -0
  983. package/server/dist/terminal/ws-upgrade-handler.js +518 -0
  984. package/server/dist/terminal/ws-upgrade-handler.js.map +1 -0
  985. package/server/dist/types/action-schema.d.ts +75 -0
  986. package/server/dist/types/action-schema.d.ts.map +1 -0
  987. package/server/dist/types/action-schema.js +32 -0
  988. package/server/dist/types/action-schema.js.map +1 -0
  989. package/server/dist/types/project.d.ts +72 -0
  990. package/server/dist/types/project.d.ts.map +1 -0
  991. package/server/dist/types/project.js +16 -0
  992. package/server/dist/types/project.js.map +1 -0
  993. package/server/dist/types/run-config-v2.d.ts +172 -0
  994. package/server/dist/types/run-config-v2.d.ts.map +1 -0
  995. package/server/dist/types/run-config-v2.js +169 -0
  996. package/server/dist/types/run-config-v2.js.map +1 -0
  997. package/server/dist/types/settings.d.ts +25 -0
  998. package/server/dist/types/settings.d.ts.map +1 -0
  999. package/server/dist/types/settings.js +12 -0
  1000. package/server/dist/types/settings.js.map +1 -0
  1001. package/server/dist/types/task.d.ts +55 -0
  1002. package/server/dist/types/task.d.ts.map +1 -0
  1003. package/server/dist/types/task.js +13 -0
  1004. package/server/dist/types/task.js.map +1 -0
  1005. package/server/dist/types/triage.d.ts +135 -0
  1006. package/server/dist/types/triage.d.ts.map +1 -0
  1007. package/server/dist/types/triage.js +15 -0
  1008. package/server/dist/types/triage.js.map +1 -0
  1009. package/server/package.json +43 -0
  1010. package/server/profiles/PROFILE_SCHEMA_VERSION +1 -0
  1011. package/server/profiles/README.md +27 -0
  1012. package/server/profiles/python-plugin-monorepo.json +35 -0
  1013. package/server/profiles/supabase-nextjs.json +253 -0
  1014. package/server/profiles/vite-hono.json +92 -0
@@ -0,0 +1,774 @@
1
+ /*
2
+ * Shipwright Command Center — server entry.
3
+ *
4
+ * Plan D'' variant-a architecture (external-launch):
5
+ * - Webui owns no Claude subprocess, no SSE chat stream, no NDJSON parser.
6
+ * - User launches Claude Code in their own terminal via a pre-bound
7
+ * --session-id UUID (copy-command generator at core/launcher.ts).
8
+ * - Webui observes the JSONL at ~/.claude/projects/<encoded-cwd>/<uuid>.jsonl
9
+ * via SessionWatcher + polling (core/session-watcher.ts).
10
+ * - Task metadata persisted at <registryDir>/sdk-sessions.json
11
+ * (core/sdk-sessions-store.ts).
12
+ *
13
+ * This file used to be 800+ LOC of chat/adapter/heartbeat wiring.
14
+ * Sub-iterate 3 of Plan D'' trims it to ~100 LOC.
15
+ */
16
+ import { Hono } from "hono";
17
+ import { cors } from "hono/cors";
18
+ import { serveStatic } from "@hono/node-server/serve-static";
19
+ import { serve } from "@hono/node-server";
20
+ import fs from "fs";
21
+ import { readFile, writeFile } from "fs/promises";
22
+ import { execSync } from "node:child_process";
23
+ import * as lockfile from "proper-lockfile";
24
+ import { getConfig } from "./config.js";
25
+ import { formatBindError } from "./lib/bind-errors.js";
26
+ import { resolveHonoHost } from "./lib/resolveHonoHost.js";
27
+ import { resolveTrustedOrigins } from "./lib/resolveTrustedOrigins.js";
28
+ import { errorHandler } from "./middleware/error-handler.js";
29
+ import { requestLogger } from "./middleware/logger.js";
30
+ import { ProjectManager } from "./core/project-manager.js";
31
+ import { SdkSessionsStore } from "./core/sdk-sessions-store.js";
32
+ import { SessionWatcher } from "./core/session-watcher.js";
33
+ import { probeClaudeVersion } from "./core/cli-compat.js";
34
+ import { resolveClaudeBin, selfHealClaudePath } from "./core/claude-bin-resolver.js";
35
+ import { PreviewSessionManager } from "./core/preview-session-manager.js";
36
+ import { loadProfile as loadProfileReal, getProfilesDir, } from "./core/profile-loader.js";
37
+ import { evaluatePreviewCoherence } from "./core/preview-coherence.js";
38
+ import { createProjectRoutes } from "./routes/projects.js";
39
+ import { cascadeDeleteProjectTasks } from "./core/cascade-delete-project-tasks.js";
40
+ import { createSettingsRoutes } from "./routes/settings.js";
41
+ import { createProfilesRoutes } from "./routes/profiles.js";
42
+ import { createExternalRoutes } from "./external/routes.js";
43
+ import { createDiagnosticsRoutes } from "./routes/diagnostics.js";
44
+ import { createReadinessRoutes } from "./routes/readiness.js";
45
+ import { createGradeRoutes } from "./routes/grade.js";
46
+ import { createTerminalAppearanceRoutes } from "./routes/terminal-appearance.js";
47
+ import { createTriageRoutes } from "./routes/triage.js";
48
+ import { createCampaignsRoutes } from "./routes/campaigns.js";
49
+ import { resolveCampaignsDir } from "./core/campaign-paths.js";
50
+ import { readCampaigns } from "./core/campaign-store.js";
51
+ import { createTriageLock } from "./core/triage-lock.js";
52
+ import { PtyManager } from "./terminal/pty-manager.js";
53
+ import { createTerminalRoutes, createNodePtySpawnFn, } from "./terminal/routes.js";
54
+ import { ScrollbackStore } from "./terminal/scrollback-store.js";
55
+ import { SnapshotStore } from "./terminal/snapshot-store.js";
56
+ import { runBootWipe } from "./terminal/boot-wipe.js";
57
+ import { sweepOrphanSnapshotTmp } from "./terminal/snapshot-tmp-sweep.js";
58
+ import { probeHeadlessDeps } from "./terminal/headless-probe.js";
59
+ import { createNodeWebSocket } from "@hono/node-ws";
60
+ const config = getConfig();
61
+ const startTime = Date.now();
62
+ const honoHost = resolveHonoHost(process.env); // resolved once — org-router gate (FR-04.38) + serve() below
63
+ export const app = new Hono();
64
+ // Iterate v0.8.4 — CORS origin gate now defers to
65
+ // `resolveTrustedOrigins(process.env)` so it widens consistently with
66
+ // `HONO_HOST` / `WEBUI_TRUSTED_ORIGINS`. Same policy as the WS upgrade
67
+ // gate in `terminal/routes.ts`. Default (no env vars set) is
68
+ // loopback-only — and stricter than the prior `origin.includes("localhost")`
69
+ // substring check, which would have matched
70
+ // `http://evil-localhost-attack.com`.
71
+ //
72
+ // ADR-083 — pass tailscaleExec so SHIPWRIGHT_NETWORK_PROFILE=tailscale
73
+ // drives the policy too (loopback + tailscale-IP + *.ts.net allowed).
74
+ const tailscaleExecForOrigin = (cmd, opts) => String(execSync(cmd, opts));
75
+ const corsOriginPolicy = resolveTrustedOrigins(process.env, tailscaleExecForOrigin);
76
+ app.use("*", cors({
77
+ origin: (origin) => {
78
+ if (origin && corsOriginPolicy.isAllowed(origin))
79
+ return origin;
80
+ return null;
81
+ },
82
+ }));
83
+ app.use("*", requestLogger);
84
+ app.onError(errorHandler);
85
+ app.get("/api/health", (c) => c.json({
86
+ status: "ok",
87
+ version: "0.1.0",
88
+ uptime: Math.floor((Date.now() - startTime) / 1000),
89
+ }));
90
+ const isMainModule = typeof process !== "undefined" &&
91
+ process.argv[1] &&
92
+ (process.argv[1].endsWith("index.ts") || process.argv[1].endsWith("index.js"));
93
+ if (isMainModule) {
94
+ void (async () => {
95
+ try {
96
+ const FATAL_ERROR_CODES = new Set(["EADDRINUSE", "EACCES", "EADDRNOTAVAIL"]);
97
+ process.on("uncaughtException", (err) => {
98
+ const code = err.code;
99
+ if (code && FATAL_ERROR_CODES.has(code)) {
100
+ console.error(JSON.stringify({
101
+ level: "fatal",
102
+ message: `Fatal startup error (${code}) — exiting so tsx watch can retry`,
103
+ error: String(err),
104
+ code,
105
+ }));
106
+ process.exit(1);
107
+ }
108
+ console.error(JSON.stringify({
109
+ level: "error",
110
+ message: "Uncaught exception (server stays alive)",
111
+ error: String(err),
112
+ stack: err.stack,
113
+ }));
114
+ });
115
+ process.on("unhandledRejection", (reason) => {
116
+ console.error(JSON.stringify({
117
+ level: "error",
118
+ message: "Unhandled rejection (server stays alive)",
119
+ error: String(reason),
120
+ }));
121
+ });
122
+ // Shared cross-process lock + file-exists guard.
123
+ const lockPath = async (p) => lockfile.lock(p, { retries: 3 });
124
+ const ensureFileExists = (p) => {
125
+ if (!fs.existsSync(p))
126
+ fs.writeFileSync(p, "");
127
+ };
128
+ // ProjectManager — still used by /api/projects + wizard.
129
+ // getTaskProjectIds (section 02) is late-bound below, after the
130
+ // sessionsStore is constructed.
131
+ const projectManagerDeps = {
132
+ readFile: (p, e) => readFile(p, e),
133
+ writeFile: (p, d) => writeFile(p, d),
134
+ existsSync: (p) => fs.existsSync(p),
135
+ mkdirSync: (p, o) => fs.mkdirSync(p, o),
136
+ readdirSync: ((p, o) => fs.readdirSync(p, o)),
137
+ lock: lockPath,
138
+ ensureFile: ensureFileExists,
139
+ // F07 (D08) — atomic tmp+rename persist + corrupt-file quarantine.
140
+ rename: (from, to) => fs.promises.rename(from, to),
141
+ };
142
+ const projectManager = new ProjectManager(`${config.registryDir}/projects.json`, projectManagerDeps);
143
+ await projectManager.load();
144
+ // External-launch store + watcher.
145
+ //
146
+ // Section 02 (iterate 3, ADR-037/038) — two cross-wirings:
147
+ // 1. projectManager.getTaskProjectIds reads from sessionsStore so
148
+ // the Unassigned pseudo-project surfaces iff any task needs it.
149
+ // 2. sdkSessionsStore.getKnownProjectIds reads from projectManager
150
+ // so stale projectIds on-disk (deleted projects, O26) resolve
151
+ // to UNASSIGNED in memory on load.
152
+ //
153
+ // The wiring order matters — projectManager loads first (sync
154
+ // projects.json read) and the sessionsStore reads from it during
155
+ // its own load(). The sessionsStore is created fresh above so we
156
+ // pass a reference-equality callback that stays valid after both
157
+ // stores finish loading.
158
+ const sdkSessionsPath = `${config.registryDir}/sdk-sessions.json`;
159
+ const sdkSessionsDeps = {
160
+ readFile: (p, e) => readFile(p, e),
161
+ writeFile: (p, d) => writeFile(p, d),
162
+ existsSync: (p) => fs.existsSync(p),
163
+ mkdirSync: (p, o) => fs.mkdirSync(p, o),
164
+ lock: lockPath,
165
+ ensureFile: ensureFileExists,
166
+ // F08 — atomic tmp+rename for the merge-under-lock persist path.
167
+ rename: (from, to) => fs.promises.rename(from, to),
168
+ getKnownProjectIds: () => new Set(projectManager.getAll().filter((p) => !p.synthesized).map((p) => p.id)),
169
+ };
170
+ const sdkSessionsStore = new SdkSessionsStore(sdkSessionsPath, sdkSessionsDeps);
171
+ await sdkSessionsStore.load();
172
+ // Late-bind getTaskProjectIds — projectManager.deps is public (mutable), so append here.
173
+ projectManager.deps.getTaskProjectIds =
174
+ () => new Set(sdkSessionsStore.list().map((t) => t.projectId));
175
+ // Boot-time diagnostic (spec step 7). Logs once if any session
176
+ // carries projectId="unassigned" while the on-disk file is still
177
+ // schemaVersion: 1 — confirms the write-on-touch migration is
178
+ // deferred as designed (ADR-038) rather than silently broken.
179
+ try {
180
+ if (fs.existsSync(sdkSessionsPath)) {
181
+ const raw = fs.readFileSync(sdkSessionsPath, "utf-8");
182
+ if (raw.trim()) {
183
+ const parsed = JSON.parse(raw);
184
+ const hasUnassignedInMemory = sdkSessionsStore
185
+ .list()
186
+ .some((t) => t.projectId === "unassigned");
187
+ if (parsed.schemaVersion === 1 && hasUnassignedInMemory) {
188
+ console.log(JSON.stringify({
189
+ level: "info",
190
+ message: "sdk-sessions.json is still schemaVersion 1; v1→v2 migration will land on next task mutation (ADR-038)",
191
+ }));
192
+ }
193
+ }
194
+ }
195
+ }
196
+ catch {
197
+ // Non-fatal — the diagnostic is purely informational.
198
+ }
199
+ const sessionWatcher = new SessionWatcher();
200
+ // Claude CLI version probe (refreshed on demand; post-upgrade clients
201
+ // see the new number without a server restart).
202
+ let claudeVersion = probeClaudeVersion();
203
+ // iterate-2026-05-08 v0.8.8 AC-3 — boot-time PATH self-heal. When
204
+ // the AC-2 fallback resolved a binary that's NOT on the server's
205
+ // process.env.PATH (typical: claude installed into ~/.local/bin/
206
+ // but server started from a shell whose PATH didn't include that
207
+ // dir), prepend the parent dir so subsequent child-process spawns
208
+ // (node-pty pwsh / preview-session-manager) inherit the augmented
209
+ // PATH. Idempotent — no-op when parent dir is already on PATH.
210
+ const resolvedBin = resolveClaudeBin();
211
+ selfHealClaudePath({
212
+ bin: resolvedBin,
213
+ env: process.env,
214
+ platform: process.platform,
215
+ });
216
+ const versionInfo = () => {
217
+ if (!claudeVersion.raw)
218
+ claudeVersion = probeClaudeVersion();
219
+ return claudeVersion;
220
+ };
221
+ // Mount routes.
222
+ const settingsPath = `${config.registryDir}/settings.json`;
223
+ const settingsDeps = {
224
+ readFile: (p, e) => readFile(p, e),
225
+ writeFile: (p, d) => writeFile(p, d),
226
+ existsSync: (p) => fs.existsSync(p),
227
+ mkdirSync: (p, o) => fs.mkdirSync(p, o),
228
+ lock: lockPath,
229
+ ensureFile: ensureFileExists,
230
+ };
231
+ const projectFsDeps = {
232
+ existsSync: (p) => fs.existsSync(p),
233
+ mkdirSync: (p, o) => fs.mkdirSync(p, o),
234
+ writeFileSync: (p, d) => fs.writeFileSync(p, d),
235
+ renameSync: (from, to) => fs.renameSync(from, to),
236
+ };
237
+ // createProjectRoutes is registered below — its DELETE cascade needs the
238
+ // scrollback + snapshot stores constructed further down.
239
+ app.route("/", createSettingsRoutes(settingsPath, settingsDeps));
240
+ app.route("/", createProfilesRoutes());
241
+ // Section 03 (iterate 3) — preview-session manager. Single instance
242
+ // per server process so the dedup map lives across requests. Its
243
+ // killAll() runs on shutdown so user-spawned dev servers don't
244
+ // linger past a webui restart.
245
+ const previewManager = new PreviewSessionManager();
246
+ // Iterate 5 (ADR-068-A1) — disk-backed terminal scrollback. Single
247
+ // ScrollbackStore instance shared between PtyManager (append on
248
+ // pty.onData + closeStream on kill) and the WS replay flow in
249
+ // terminal/routes.ts. Boot-time init() creates the dir + caches
250
+ // the realpath; sweep runs on boot AND on a 24h interval.
251
+ const scrollbackStore = new ScrollbackStore(config.terminalScrollbackDir, {
252
+ maxBytesPerTask: config.terminalScrollbackMaxBytes,
253
+ });
254
+ try {
255
+ await scrollbackStore.init();
256
+ }
257
+ catch (err) {
258
+ console.warn(JSON.stringify({
259
+ level: "warn",
260
+ message: "scrollback store init failed; persistence disabled this session",
261
+ error: String(err).slice(0, 200),
262
+ }));
263
+ }
264
+ // Iterate C (ADR-087) — one-shot wipe of legacy `*.log*` files.
265
+ // The chunked-replay path is retired in this iterate; the on-disk
266
+ // scrollback files have no replay consumer. Wipe them once,
267
+ // mark the directory, never wipe again. Idempotency marker
268
+ // protects against repeat-runs. Best-effort; boot continues on
269
+ // failure. Snapshot files (`.snapshot`) are PRESERVED.
270
+ try {
271
+ const wipeResult = await runBootWipe({
272
+ dir: config.terminalScrollbackDir,
273
+ });
274
+ if (wipeResult.deleted > 0 || wipeResult.errors > 0) {
275
+ console.log(JSON.stringify({
276
+ level: "info",
277
+ message: "iterate-C scrollback wipe",
278
+ deleted: wipeResult.deleted,
279
+ errors: wipeResult.errors,
280
+ markerWritten: wipeResult.markerWritten,
281
+ }));
282
+ }
283
+ }
284
+ catch (err) {
285
+ console.warn(JSON.stringify({
286
+ level: "warn",
287
+ message: "iterate-C scrollback wipe threw; continuing boot",
288
+ error: String(err).slice(0, 200),
289
+ }));
290
+ }
291
+ // Iterate C (ADR-087, MEDIUM-B2 fix) — pre-probe @xterm/headless +
292
+ // @xterm/addon-serialize via dynamic import. On failure, downgrade
293
+ // headlessMirrorEnabled=false so the server boots cleanly without
294
+ // snapshots (rather than crashing on the static ESM import at
295
+ // load time). Trade-off documented in ADR-087: without snapshots
296
+ // the client sees a blank terminal with a live shell.
297
+ const headlessProbe = await probeHeadlessDeps();
298
+ if (!headlessProbe.ok) {
299
+ console.warn(JSON.stringify({
300
+ level: "warn",
301
+ message: "headless-mirror dependencies missing; mirror disabled this session (ADR-087 MEDIUM-B2 graceful fallback)",
302
+ reason: headlessProbe.reason,
303
+ }));
304
+ }
305
+ const headlessMirrorEnabledEffective = config.terminalHeadlessMirror && headlessProbe.ok;
306
+ // Iterate-2026-05-11 (ADR-088) — server-side @xterm/headless mirror
307
+ // snapshots. SnapshotStore shares the scrollback directory but
308
+ // owns a separate `.snapshot` extension so the existing rotation
309
+ // / sweep machinery is undisturbed. Init is best-effort; failure
310
+ // logs and disables mirror.
311
+ const snapshotStore = new SnapshotStore(config.terminalScrollbackDir);
312
+ let snapshotStoreReady = false;
313
+ if (headlessMirrorEnabledEffective) {
314
+ try {
315
+ await snapshotStore.init();
316
+ snapshotStoreReady = true;
317
+ }
318
+ catch (err) {
319
+ console.warn(JSON.stringify({
320
+ level: "warn",
321
+ message: "snapshot store init failed; headless-mirror disabled this session",
322
+ error: String(err).slice(0, 200),
323
+ }));
324
+ }
325
+ }
326
+ // /api/projects/* — here so the DELETE cascade reaches the stores above (iterate-2026-07-06).
327
+ app.route("/", createProjectRoutes(projectManager, projectFsDeps, (id) => cascadeDeleteProjectTasks(id, {
328
+ store: sdkSessionsStore,
329
+ // D01/F01 — tear down each doomed task's live pty before its clears.
330
+ ptyKillBestEffort: (t) => ptyManager.kill(t),
331
+ scrollbackClearBestEffort: (t) => scrollbackStore.clearBestEffort(t),
332
+ // D19/F26 — clearBestEffort → clear() now also sweeps `.snapshot.tmp-*`.
333
+ snapshotClearBestEffort: (t) => snapshotStore.clearBestEffort(t),
334
+ })));
335
+ // Iterate 4 (ADR-067) — embedded-terminal pty manager.
336
+ // PtyManager owns shell-pty lifecycle (Plan-D''-conform: shells only,
337
+ // never `claude`). Construction is async because the @lydell/node-pty
338
+ // backend is dynamically imported so unit tests don't pull in the
339
+ // native binary.
340
+ const ptyManager = new PtyManager({
341
+ spawn: await createNodePtySpawnFn(),
342
+ wsBufferBytes: config.terminalWsBufferBytes,
343
+ idleTimeoutMs: config.terminalIdleTimeoutMs,
344
+ scrollbackStore,
345
+ // ADR-088 — wire the headless mirror only when both the env
346
+ // flag is set AND the snapshot store initialised successfully.
347
+ // Either alone is a no-op (see PtyManager constructor; mirror
348
+ // requires both signals).
349
+ // Iterate C (ADR-087, MEDIUM-B2) — `headlessMirrorEnabledEffective`
350
+ // additionally captures the dynamic-import probe result so a
351
+ // missing `@xterm/headless` package downgrades cleanly here.
352
+ headlessMirrorEnabled: headlessMirrorEnabledEffective && snapshotStoreReady,
353
+ snapshotStore: snapshotStoreReady ? snapshotStore : undefined,
354
+ // ADR-092 (Iterate E) — pinned @xterm/headless version. Used by
355
+ // serializeMirrorIfLive() so the in-memory SnapshotRecord
356
+ // returned to the WS replay path carries the same
357
+ // terminalVersion the disk-side gate (tryReadSnapshot) expects.
358
+ // The probe is the primary source; fs-fallback for
359
+ // expectedTerminalVersion happens further below (kept as a
360
+ // defensive secondary path for the disk-read gate).
361
+ expectedTerminalVersion: headlessProbe.terminalVersion ?? undefined,
362
+ // AC-3b (iterate-2026-05-05) — enable the writer-stuck watchdog
363
+ // in production. Capability auto-detected against the live WS;
364
+ // logs warn + degrades to ws.close-driven release if missing.
365
+ watchdogEnabled: true,
366
+ });
367
+ if (headlessMirrorEnabledEffective && snapshotStoreReady) {
368
+ console.log(JSON.stringify({
369
+ level: "info",
370
+ message: "headless-mirror enabled (ADR-088/087); cell-state snapshots are the sole replay primitive",
371
+ dir: config.terminalScrollbackDir,
372
+ }));
373
+ }
374
+ // Boot-time TTL sweep — bounded, oldest-first, active-aware.
375
+ // AC-11 active definition: task in sdk-sessions.json with state ∈
376
+ // {active, idle, awaiting_external_start, jsonl_missing} OR live
377
+ // pty entry in pty-manager (catches stale-session-but-live-pty
378
+ // edge case — Phase-3 review fix HIGH).
379
+ const computeActiveTaskIds = () => {
380
+ const all = sdkSessionsStore.list();
381
+ const ids = new Set();
382
+ for (const t of all) {
383
+ if (t.state === "active" ||
384
+ t.state === "idle" ||
385
+ t.state === "awaiting_external_start" ||
386
+ t.state === "jsonl_missing") {
387
+ ids.add(t.taskId);
388
+ }
389
+ }
390
+ for (const id of ptyManager.getLiveTaskIds()) {
391
+ ids.add(id);
392
+ }
393
+ return ids;
394
+ };
395
+ try {
396
+ const result = await scrollbackStore.sweepExpired(config.terminalScrollbackTtlDays, {
397
+ activeTaskIds: computeActiveTaskIds(),
398
+ maxFilesPerPass: config.terminalSweepMaxFilesPerPass,
399
+ });
400
+ if (result.deleted > 0 || result.errors > 0) {
401
+ console.log(JSON.stringify({
402
+ level: "info",
403
+ message: "scrollback boot sweep",
404
+ deleted: result.deleted,
405
+ remaining: result.remaining,
406
+ errors: result.errors,
407
+ }));
408
+ }
409
+ }
410
+ catch (err) {
411
+ console.warn(JSON.stringify({
412
+ level: "warn",
413
+ message: "scrollback boot sweep failed",
414
+ error: String(err).slice(0, 200),
415
+ }));
416
+ }
417
+ await sweepOrphanSnapshotTmp({ dir: config.terminalScrollbackDir }).catch(() => { });
418
+ // Daily periodic sweep. setInterval is unref'd so it doesn't keep the
419
+ // event loop alive past graceful shutdown.
420
+ const dailySweepTimer = setInterval(() => {
421
+ scrollbackStore
422
+ .sweepExpired(config.terminalScrollbackTtlDays, {
423
+ activeTaskIds: computeActiveTaskIds(),
424
+ maxFilesPerPass: config.terminalSweepMaxFilesPerPass,
425
+ })
426
+ .catch((err) => {
427
+ console.warn(JSON.stringify({
428
+ level: "warn",
429
+ message: "scrollback periodic sweep failed",
430
+ error: String(err).slice(0, 200),
431
+ }));
432
+ });
433
+ void sweepOrphanSnapshotTmp({ dir: config.terminalScrollbackDir }).catch(() => { });
434
+ }, 24 * 60 * 60 * 1000);
435
+ dailySweepTimer.unref();
436
+ // @hono/node-ws adapter — `upgradeWebSocket` is a Hono middleware
437
+ // factory, `injectWebSocket(server)` patches the underlying
438
+ // http.Server (returned by `serve(...)`) to handle WS upgrades.
439
+ const { upgradeWebSocket, injectWebSocket } = createNodeWebSocket({ app });
440
+ app.route("/", createExternalRoutes({
441
+ store: sdkSessionsStore,
442
+ watcher: sessionWatcher,
443
+ // Section 02 — PATCH/POST projectId validation. Excludes the
444
+ // synthesized Unassigned row (that sentinel is hard-coded valid
445
+ // inside validateProjectIdOrError).
446
+ getKnownProjectIds: () => new Set(projectManager.getAll().filter((p) => !p.synthesized).map((p) => p.id)),
447
+ // Section 03 — actions / preview / stub routes. Synthesized row
448
+ // has no filesystem path so it's skipped by getProjectById.
449
+ getProjectById: (id) => {
450
+ const p = projectManager.getById(id);
451
+ if (!p || p.synthesized)
452
+ return undefined;
453
+ return {
454
+ id: p.id,
455
+ name: p.name,
456
+ path: p.path,
457
+ profile: p.profile,
458
+ synthesized: p.synthesized,
459
+ settings: p.settings ? { color: p.settings.color } : undefined,
460
+ };
461
+ },
462
+ previewManager,
463
+ loadProfile: (name) => loadProfileReal(name, getProfilesDir()),
464
+ // ADR-068-A1: cascade-clean scrollback on DELETE /tasks/:id.
465
+ scrollbackClearBestEffort: (taskId) => scrollbackStore.clearBestEffort(taskId),
466
+ // Iterate C (ADR-087, MEDIUM-B1): cascade-clean the cell-state
467
+ // snapshot on DELETE (secrets; privacy boundary). D19/F26: clear()
468
+ // also sweeps the task's orphaned `.snapshot.tmp-*` strays.
469
+ snapshotClearBestEffort: (taskId) => snapshotStore.clearBestEffort(taskId),
470
+ // iterate-2026-05-08 v0.8.7 AC-1: live-pty lookup so transcript
471
+ // poll can flip new-plain `active → idle` after pty-kill.
472
+ // iterate-2026-05-18-inbox-terminal-prompts: peekTerminalText so
473
+ // the inbox can detect a waiting AskUserQuestion picker from the
474
+ // live @xterm/headless mirror.
475
+ ptyManager: {
476
+ get: (taskId) => ptyManager.get(taskId),
477
+ kill: (taskId) => ptyManager.kill(taskId), // D01/F01 — teardown before clears
478
+ peekTerminalText: (taskId) => ptyManager.peekTerminalText(taskId),
479
+ },
480
+ honoHost, // FR-04.38 org-directory route family
481
+ leadsRoot: config.leadsRoot,
482
+ leadsRouteSecret: config.leadsRouteSecret,
483
+ }));
484
+ app.route("/", createDiagnosticsRoutes({ store: sdkSessionsStore, versionInfo }));
485
+ // FR-01.51 — First-Contact readiness gate ("one truth"): the Intent
486
+ // Wizard (A08) + First Contact (A14) both read this; it re-expresses the
487
+ // bootstrapper preflight set server-side (the browser can't spawn probes).
488
+ app.route("/", createReadinessRoutes({ versionInfo }));
489
+ // FR-01.53 — read-only Grade door route. Runs shipwright-grade's grade.py
490
+ // (shell:false, validated target) and renders the real ReportModel; no
491
+ // project registration, no writes (a bare grade is a pure observer).
492
+ app.route("/", createGradeRoutes());
493
+ // FR-01.44 — Claude-theme mirror; literal path, before terminal routes.
494
+ app.route("/", createTerminalAppearanceRoutes());
495
+ // FR-01.30 / ADR-101 — Triage Tab routes. Mounts after /api/external
496
+ // so it inherits the same CORS/Origin gate. The promote route uses
497
+ // the same `proper-lockfile` pattern as sdk-sessions.json.
498
+ app.route("/", createTriageRoutes({
499
+ store: sdkSessionsStore,
500
+ getAllProjects: () => projectManager
501
+ .getAll()
502
+ .filter((p) => !p.synthesized)
503
+ .map((p) => ({ id: p.id, path: p.path, synthesized: p.synthesized })),
504
+ getProjectById: (id) => {
505
+ const p = projectManager.getById(id);
506
+ if (!p || p.synthesized)
507
+ return undefined;
508
+ return { id: p.id, path: p.path, synthesized: p.synthesized };
509
+ },
510
+ // FR-01.33 — injected campaign-ref reader so the triage route can
511
+ // annotate items with the campaign that expands them WITHOUT
512
+ // importing any campaign module (preserves the
513
+ // campaigns-no-triage-coupling import boundary; the composition
514
+ // root owns the join). Best-effort: any read failure → [].
515
+ listCampaignRefs: (projectId) => {
516
+ const p = projectManager.getById(projectId);
517
+ if (!p || p.synthesized)
518
+ return [];
519
+ const pr = resolveCampaignsDir({
520
+ path: p.path,
521
+ synthesized: p.synthesized,
522
+ });
523
+ if (!pr.ok)
524
+ return [];
525
+ try {
526
+ return readCampaigns(pr.absolute, pr.projectRoot).map((cmp) => ({
527
+ expandsTriage: cmp.expandsTriage,
528
+ slug: cmp.slug,
529
+ status: cmp.status,
530
+ }));
531
+ }
532
+ catch {
533
+ return [];
534
+ }
535
+ },
536
+ }));
537
+ // FR-01.31 — Campaigns lane routes. GET is a read-only sibling of the
538
+ // triage route; mounts after /api/external so it inherits the same
539
+ // CORS/Origin gate. FR-01.33 adds POST /:slug/start — the ONE WebUI write
540
+ // to campaign state (draft → active), lock-protected via the same
541
+ // collision-safe `.weblock` `createTriageLock()` pattern. All other
542
+ // campaign-state writes still belong to campaign_init.py /
543
+ // campaign_progress.py.
544
+ app.route("/", createCampaignsRoutes({
545
+ getProjectById: (id) => {
546
+ const p = projectManager.getById(id);
547
+ if (!p || p.synthesized)
548
+ return undefined;
549
+ return { id: p.id, path: p.path, synthesized: p.synthesized };
550
+ },
551
+ lock: createTriageLock(),
552
+ }));
553
+ // Iterate 4 (ADR-067) + Iterate 5 (ADR-068-A1) — embedded terminal
554
+ // routes (REST + WS upgrade). scrollbackStore wires replay-on-attach
555
+ // + Stop/Clear semantics + disabled-mode propagation.
556
+ //
557
+ // ADR-084 (iterate v0.9.1) — pass the boot-time-resolved
558
+ // `corsOriginPolicy.isAllowed` as `allowedOrigins` so the WS
559
+ // upgrade gate uses the SAME policy as the HTTP CORS middleware.
560
+ // Without this wiring the gate falls back to `defaultAllowedOrigins`
561
+ // → `resolveTrustedOrigins(process.env)` WITHOUT exec → loopback
562
+ // only — which silently rejects every non-loopback Origin even
563
+ // when SHIPWRIGHT_NETWORK_PROFILE=tailscale was meant to widen the
564
+ // policy. Empirically reproduced via curl WS-upgrade probe with
565
+ // MagicDNS Origin (500 Internal Server Error) before this line
566
+ // was added; 101 Switching Protocols after.
567
+ // ADR-089 (Iterate B) — resolve the currently-pinned
568
+ // @xterm/headless version once at boot so the WS replay path can
569
+ // version-gate snapshot envelopes. The Iterate-C boot probe
570
+ // (`headlessProbe.terminalVersion`) is the primary source; we
571
+ // keep fs-fallback as a defensive secondary path in case the
572
+ // dynamic import worked but the package.json read returned null.
573
+ let expectedTerminalVersion = headlessProbe.terminalVersion ?? undefined;
574
+ if (!expectedTerminalVersion) {
575
+ try {
576
+ const { readFileSync } = await import("node:fs");
577
+ const { fileURLToPath } = await import("node:url");
578
+ const pathMod = await import("node:path");
579
+ const here = pathMod.dirname(fileURLToPath(import.meta.url));
580
+ for (const cand of [
581
+ pathMod.resolve(here, "../node_modules/@xterm/headless/package.json"),
582
+ pathMod.resolve(here, "../../node_modules/@xterm/headless/package.json"),
583
+ ]) {
584
+ try {
585
+ const json = JSON.parse(readFileSync(cand, "utf8"));
586
+ if (json.version) {
587
+ expectedTerminalVersion = json.version;
588
+ break;
589
+ }
590
+ }
591
+ catch {
592
+ /* try next */
593
+ }
594
+ }
595
+ }
596
+ catch {
597
+ /* fall through with undefined */
598
+ }
599
+ }
600
+ createTerminalRoutes({
601
+ store: sdkSessionsStore,
602
+ ptyManager,
603
+ upgradeWebSocket,
604
+ pastesKeepLast: config.claudePastesKeepLast,
605
+ scrollbackStore,
606
+ // ADR-089 — wire the snapshot store + expected version so the WS
607
+ // replay branch uses the new envelope when a snapshot exists.
608
+ // The snapshot store is created above (ADR-088); we only pass it
609
+ // through here when the flag is effectively ON (config + probe).
610
+ snapshotStore: headlessMirrorEnabledEffective && snapshotStoreReady
611
+ ? snapshotStore
612
+ : undefined,
613
+ expectedTerminalVersion,
614
+ // Iterate v0.8.2 AC-9 — retention + dir surfaced in `ready`.
615
+ retentionDays: config.terminalScrollbackTtlDays,
616
+ scrollbackDirHint: config.terminalScrollbackDir,
617
+ allowedOrigins: corsOriginPolicy.isAllowed,
618
+ })(app);
619
+ // Section 03 — boot-time profile coherence check (plan § 2.1 matrix).
620
+ // Warn (don't fail) when stack.frontend is declared but dev_server
621
+ // is not wired, or vice versa. Non-fatal — the API route resolves
622
+ // preview.enabled per request, but the log helps operators diagnose
623
+ // "why isn't Preview showing up?" without opening devtools. An
624
+ // intentionally-empty `stack.frontend: {}` (bundled
625
+ // python-plugin-monorepo) is backend-only by design and stays quiet
626
+ // (F32) — predicate + matrix live in core/preview-coherence.ts.
627
+ try {
628
+ const all = projectManager.getAll().filter((p) => !p.synthesized);
629
+ for (const proj of all) {
630
+ if (!proj.profile)
631
+ continue;
632
+ const prof = loadProfileReal(proj.profile, getProfilesDir());
633
+ if (!prof)
634
+ continue;
635
+ const warning = evaluatePreviewCoherence(proj.id, proj.profile, prof);
636
+ if (warning)
637
+ console.warn(JSON.stringify(warning));
638
+ }
639
+ }
640
+ catch (err) {
641
+ // Non-fatal — the diagnostic is purely informational.
642
+ console.warn(JSON.stringify({
643
+ level: "warn",
644
+ message: "boot-time profile coherence check threw",
645
+ error: String(err).slice(0, 200),
646
+ }));
647
+ }
648
+ // Phase-3 review fix (HIGH): shutdown is now async + awaits the
649
+ // scrollback drain BEFORE process.exit. The hard 3s timer remains
650
+ // as a safety fallback only.
651
+ const shutdown = async () => {
652
+ console.log("Shutting down…");
653
+ try {
654
+ previewManager.killAll();
655
+ }
656
+ catch {
657
+ // best-effort — ignore shutdown errors
658
+ }
659
+ try {
660
+ ptyManager.killAll();
661
+ }
662
+ catch {
663
+ // best-effort — ignore shutdown errors
664
+ }
665
+ // Hard ceiling fires only if scrollbackStore.shutdown hangs.
666
+ const hardCap = setTimeout(() => process.exit(0), 3000);
667
+ hardCap.unref();
668
+ try {
669
+ await scrollbackStore.shutdown(2000);
670
+ }
671
+ catch (err) {
672
+ console.warn(JSON.stringify({
673
+ level: "warn",
674
+ message: "scrollback shutdown threw",
675
+ error: String(err).slice(0, 200),
676
+ }));
677
+ }
678
+ clearTimeout(hardCap);
679
+ process.exit(0);
680
+ };
681
+ process.on("SIGTERM", () => void shutdown());
682
+ process.on("SIGINT", () => void shutdown());
683
+ process.on("exit", () => {
684
+ try {
685
+ previewManager.killAll();
686
+ }
687
+ catch {
688
+ // ignore
689
+ }
690
+ try {
691
+ ptyManager.killAll();
692
+ }
693
+ catch {
694
+ // ignore
695
+ }
696
+ });
697
+ // `@hono/node-server`'s `serve` returns the underlying Node
698
+ // `http.Server`. Attach an `error` listener so bind failures
699
+ // (EADDRINUSE from a parallel worktree, EACCES on a privileged
700
+ // port, etc.) produce a deterministic operator-facing line and
701
+ // a non-zero exit instead of a silent half-startup. No probe
702
+ // before bind — that would be TOCTOU-racy on Windows.
703
+ // Default = 127.0.0.1 (loopback). HONO_HOST=true binds dual-stack
704
+ // (`::`); HONO_HOST=<addr> binds that interface — resolveHonoHost.ts.
705
+ // ADR-08X exposure warning. Two paths (mirrors vite.config.ts):
706
+ // 1. SHIPWRIGHT_NETWORK_PROFILE=open — emits exact AC-3 wording.
707
+ // 2. Explicit HONO_HOST=true/0.0.0.0/:: with profile NOT set —
708
+ // legacy-escape-hatch warning (OpenAI iterate review #9).
709
+ const explicitProfileOpen = process.env.SHIPWRIGHT_NETWORK_PROFILE?.trim() === "open";
710
+ const explicitWildcardBind = honoHost === "0.0.0.0" || honoHost === "::" || honoHost === "true";
711
+ if (explicitProfileOpen) {
712
+ console.warn("[network-profile] WARNING: profile=open — server is exposed on " +
713
+ "every interface; use only on trusted networks");
714
+ }
715
+ else if (explicitWildcardBind) {
716
+ console.warn(`[network-profile] WARNING: Hono server is binding to all ` +
717
+ `interfaces (${honoHost}) via explicit HONO_HOST — exposed to ` +
718
+ `every reachable network. Use only on trusted networks ` +
719
+ `(home/office). Consider switching to ` +
720
+ `SHIPWRIGHT_NETWORK_PROFILE=tailscale in .env.local when on ` +
721
+ `untrusted Wi-Fi.`);
722
+ }
723
+ const server = serve({ fetch: app.fetch, port: config.port, hostname: honoHost }, (info) => {
724
+ const reachableLabel = honoHost === "127.0.0.1" || honoHost === "::1"
725
+ ? "localhost"
726
+ : info.address || honoHost;
727
+ console.log(`Shipwright Command Center listening on http://${reachableLabel}:${info.port} (bind=${honoHost})`);
728
+ // Iterate v0.8.4 — surface the trusted-origin policy so a
729
+ // mute terminal over Tailscale immediately shows whether the
730
+ // gate is loopback-only (the bug we just fixed) or widened.
731
+ console.log(`Trusted-Origin policy: ${corsOriginPolicy.describe()}`);
732
+ });
733
+ server.on("error", (err) => {
734
+ const { message, exitCode } = formatBindError(err, config.port);
735
+ console.error(`FATAL: ${message}`);
736
+ process.exit(exitCode);
737
+ });
738
+ // Iterate 4 (ADR-067) — attach @hono/node-ws to the underlying
739
+ // http.Server so the /api/terminal/:taskId/ws upgrade fires.
740
+ // Must be called AFTER serve(...) since it patches that server.
741
+ injectWebSocket(server);
742
+ }
743
+ catch (err) {
744
+ console.error("FATAL: Server startup failed:", err);
745
+ process.exit(1);
746
+ }
747
+ })();
748
+ }
749
+ app.use("/*", serveStatic({ root: config.staticDir }));
750
+ // SPA fallback (iterate-2026-05-22-spa-fallback).
751
+ // Any GET that did not match a real handler or a static asset under
752
+ // `client/dist/` is served the SPA shell (`client/dist/index.html`) so
753
+ // react-router-dom can hydrate the requested route client-side. This
754
+ // fixes hard-reload of /triage, /inbox, /tasks/:id, /projects,
755
+ // /diagnostics, /settings — which previously hit `app.notFound` and
756
+ // returned `{"error":"Not found"}`.
757
+ //
758
+ // /api/* keeps its JSON-404 contract: the fallback `next()`s through
759
+ // to `app.notFound` so any unknown REST route still surfaces as a
760
+ // real 404 instead of an HTML body the client would fail to parse.
761
+ app.get("*", async (c, next) => {
762
+ if (c.req.path.startsWith("/api/")) {
763
+ return next();
764
+ }
765
+ try {
766
+ const html = await readFile(`${config.staticDir}/index.html`, "utf-8");
767
+ return c.html(html);
768
+ }
769
+ catch {
770
+ return next();
771
+ }
772
+ });
773
+ app.notFound((c) => c.json({ error: "Not found" }, 404));
774
+ //# sourceMappingURL=index.js.map