@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,549 @@
1
+ /*
2
+ * Command-template placeholder substitution with per-shell escaping.
3
+ *
4
+ * Iterate 3 section 03 / plan.md § 2.2 — the SECURITY BOUNDARY for
5
+ * command-template substitution. The placeholder allowlist is NOT the
6
+ * security boundary on its own: it only guards template-shape
7
+ * corruption. Actual protection against shell injection comes from the
8
+ * per-shell escape discipline in this module (qPs / qCmd / qPosix,
9
+ * re-exported from launcher.ts).
10
+ *
11
+ * Contract:
12
+ * substitutePlaceholders(template, ctx, shellForm) → string
13
+ * - Replaces every `{placeholder}` / `{placeholder?}` token with its
14
+ * shell-escaped substitution.
15
+ * - Unknown placeholder → throws InvalidPlaceholderError.
16
+ * - A task description spanning multiple lines is FLATTENED — each
17
+ * newline run collapses to a single space — so it survives as a
18
+ * single-line `claude` argument. The launch command must stay one
19
+ * physical line (copy-paste + embedded-terminal auto-execute both
20
+ * break on an embedded newline). A multi-line brief — common for
21
+ * triage-promoted tasks — is flattened, never rejected.
22
+ * - `{task.phase}` that does NOT match ctx.allowedPhaseIds → throws
23
+ * UnknownPhaseError.
24
+ * - Unsupported shell form → throws UnsupportedShellError.
25
+ *
26
+ * Optional-suffix semantics:
27
+ * `{task.description?}` / `{task.autonomy_flag?}` wrap in a ` \\\n `
28
+ * leading continuation prefix when the value is non-empty, and emit
29
+ * the empty string when the value is absent. The prefix is part of
30
+ * the replacement, NOT of the template — this is how the three-form
31
+ * output stays byte-identical to the mockup.
32
+ *
33
+ * Security:
34
+ * User-derived placeholders (`{task.title}`, `{task.description?}`,
35
+ * `{task.phase_label}`, `{project.path}`) are always shell-escaped.
36
+ * Server-generated literals (`{task.uuid}`, `{project.id}`,
37
+ * `{task.phase}`) pass through unquoted — they are UUIDs or allowlist
38
+ * ids and safe as raw tokens.
39
+ *
40
+ * `{plugin.dirs}` expands into a space-joined sequence of
41
+ * `--plugin-dir <escaped>` pairs.
42
+ */
43
+ import { qPs, qCmd, qPosix, toPosixPath, buildCdPrefix } from "./launcher.js";
44
+ export class InvalidPlaceholderError extends Error {
45
+ placeholder;
46
+ actionId;
47
+ template;
48
+ constructor(placeholder, actionId, template) {
49
+ super(`Unknown placeholder {${placeholder}} in action "${actionId}" template`);
50
+ this.name = "InvalidPlaceholderError";
51
+ this.placeholder = placeholder;
52
+ this.actionId = actionId;
53
+ this.template = template;
54
+ }
55
+ }
56
+ export class InvalidTitleError extends Error {
57
+ constructor() {
58
+ super("task.title cannot contain newlines (breaks single-line copy-paste)");
59
+ this.name = "InvalidTitleError";
60
+ }
61
+ }
62
+ export class InvalidParameterError extends Error {
63
+ cli_flag;
64
+ constructor(cli_flag, reason) {
65
+ super(`Invalid parameter value for ${cli_flag}: ${reason}`);
66
+ this.name = "InvalidParameterError";
67
+ this.cli_flag = cli_flag;
68
+ }
69
+ }
70
+ export class UnknownActionError extends Error {
71
+ actionId;
72
+ constructor(actionId) {
73
+ super(`Action id "${actionId}" is not one of the bundled actions ("new-task", "new-iterate", "new-pipeline") and has no valid "slash_command". A custom action whose command_template uses {task.initial_prompt} must declare a "slash_command" matching ${SLASH_COMMAND_PATTERN.source} (e.g. "/content-orchestrator"). Alternatively, use the {task.description?} placeholder instead of {task.initial_prompt}.`);
74
+ this.name = "UnknownActionError";
75
+ this.actionId = actionId;
76
+ }
77
+ }
78
+ export class UnknownPhaseError extends Error {
79
+ phase;
80
+ constructor(phase) {
81
+ super(`Unknown phase id "${phase}" — not in actions.phases[].id allowlist`);
82
+ this.name = "UnknownPhaseError";
83
+ this.phase = phase;
84
+ }
85
+ }
86
+ export class UnsupportedShellError extends Error {
87
+ shellForm;
88
+ constructor(shellForm) {
89
+ super(`Unsupported shell form: ${shellForm}`);
90
+ this.name = "UnsupportedShellError";
91
+ this.shellForm = shellForm;
92
+ }
93
+ }
94
+ /**
95
+ * Canonical placeholder names. Anything not on this list is rejected.
96
+ * The allowlist is NOT a security boundary — it prevents typos and
97
+ * template-shape corruption. The real security guard is the escaping
98
+ * discipline below.
99
+ */
100
+ const ALLOWED_PLACEHOLDERS = new Set([
101
+ "project.id",
102
+ "project.path",
103
+ "task.uuid",
104
+ "task.title",
105
+ "task.session_name",
106
+ "task.description?",
107
+ "task.phase",
108
+ "task.phase_label",
109
+ "task.autonomy_flag?",
110
+ "task.parameters?",
111
+ "task.initial_prompt",
112
+ "plugin.dirs",
113
+ "cd.prefix",
114
+ ]);
115
+ /**
116
+ * iterate/fix-adopt-prompt-shape § 1 — slash-command shapes per bundled
117
+ * actionId. The substituter's {task.initial_prompt} branch dispatches on
118
+ * ctx.actionId. Custom actions outside this set must NOT use the
119
+ * placeholder (UnknownActionError).
120
+ *
121
+ * iterate-2026-05-21-triage-fix-now-and-phase-slash — workaround for
122
+ * Claude Code skill resolution: four bundled slash commands fail to
123
+ * resolve in the bare `/shipwright-<plugin>` form and must be emitted
124
+ * as the explicit `<plugin>:<skill>` namespaced form. The four flagged
125
+ * empirically (Sven 2026-05-21):
126
+ * - `/shipwright-plan` → `/shipwright-plan:plan`
127
+ * - `/shipwright-test` → `/shipwright-test:test`
128
+ * - `/shipwright-security` → `/shipwright-security:security`
129
+ * - `/shipwright-run` → `/shipwright-run:run`
130
+ * Every other phase (`build`, `design`, `deploy`, `changelog`, `compliance`,
131
+ * `adopt`, `project`) AND `/shipwright-iterate` work in the bare form, so
132
+ * the workaround is intentionally narrow. If more phases break the same
133
+ * way in future, add them to `NAMESPACED_PHASES`.
134
+ *
135
+ * This belongs in webui because Claude Code skill registration is owned
136
+ * upstream; aligning the plugin names there has been attempted multiple
137
+ * times without success. Treat as a local compatibility shim.
138
+ */
139
+ const NAMESPACED_PHASES = new Set(["plan", "test", "security"]);
140
+ // iterate-2026-06-11-custom-action-slash-command — the three bundled action
141
+ // ids whose slash command is hardcoded in `buildSlashCommand`. Any OTHER id is
142
+ // "custom" and supplies its slash via the action-schema `slash_command` field
143
+ // (SubstitutionContext.slashCommand). Builtins always win. SSoT for the
144
+ // validator's "which actions require slash_command" decision.
145
+ export const BUILTIN_INITIAL_PROMPT_ACTIONS = new Set([
146
+ "new-task",
147
+ "new-iterate",
148
+ "new-pipeline",
149
+ ]);
150
+ // Allowlist for a custom action's `slash_command` (leading-slash skill token,
151
+ // e.g. `/content-orchestrator`). Still q()-escaped at substitution time; this
152
+ // pattern rejects garbage at load and is reused by `validateActionsSchema`.
153
+ export const SLASH_COMMAND_PATTERN = /^\/[A-Za-z][A-Za-z0-9:_-]*$/;
154
+ function buildSlashCommand(actionId, phase, slashCommand) {
155
+ if (actionId === "new-task") {
156
+ return NAMESPACED_PHASES.has(phase)
157
+ ? `/shipwright-${phase}:${phase}`
158
+ : `/shipwright-${phase}`;
159
+ }
160
+ if (actionId === "new-iterate")
161
+ return `/shipwright-iterate`;
162
+ if (actionId === "new-pipeline")
163
+ return `/shipwright-run:run`;
164
+ // Custom (non-builtin) action: fall back to the declared slash_command when
165
+ // present + well-formed; else null → UnknownActionError (fail-loud backstop;
166
+ // the schema validator catches missing/invalid earlier). Trim so a padded
167
+ // value (" /content-orchestrator ") matches the validator (which also trims).
168
+ const sc = slashCommand?.trim();
169
+ if (sc && SLASH_COMMAND_PATTERN.test(sc)) {
170
+ return sc;
171
+ }
172
+ return null;
173
+ }
174
+ /**
175
+ * iterate/fix-adopt-prompt-shape § 1 — render a single ResolvedParam
176
+ * RAW (no shell escape) for use INSIDE {task.initial_prompt}. The outer
177
+ * `q()` wraps the entire prompt and handles all per-shell escaping in one
178
+ * place; nested escaping would corrupt the result.
179
+ */
180
+ function formatParameterRaw(p) {
181
+ if (p.value === undefined)
182
+ return ` ${p.cli_flag}`;
183
+ if (p.separator === "equals")
184
+ return ` ${p.cli_flag}=${p.value}`;
185
+ if (p.separator === "none")
186
+ return ` ${p.cli_flag}${p.value}`;
187
+ return ` ${p.cli_flag} ${p.value}`;
188
+ }
189
+ function pickEscaper(shellForm) {
190
+ if (shellForm === "powershell")
191
+ return qPs;
192
+ if (shellForm === "cmd")
193
+ return qCmd;
194
+ if (shellForm === "posix")
195
+ return qPosix;
196
+ throw new UnsupportedShellError(shellForm);
197
+ }
198
+ /**
199
+ * Flatten a task description into a single physical line: every newline
200
+ * run (LF / CR / CRLF), together with any spaces or tabs hugging it,
201
+ * collapses to one space, and outer whitespace is trimmed. The launch
202
+ * command must stay one line — copy-paste and the embedded-terminal
203
+ * auto-execute (which sends `command + "\r"`) both treat an embedded
204
+ * newline as a premature Enter. Multi-line briefs (typical for
205
+ * triage-promoted tasks) are flattened here rather than rejected, so
206
+ * every action's description placeholder is launch-safe. Returns "" for
207
+ * undefined / whitespace-only input.
208
+ */
209
+ function flattenDescription(raw) {
210
+ if (!raw)
211
+ return "";
212
+ return raw.replace(/[ \t]*[\r\n]+[ \t]*/g, " ").trim();
213
+ }
214
+ /**
215
+ * Render a single ResolvedParam to its shell-token form. Always begins
216
+ * with a leading space so the join() in the `task.parameters?` branch
217
+ * stays clean — adjacent placeholders like `{plugin.dirs}{task.parameters?}`
218
+ * collapse correctly via the post-substitute whitespace pass.
219
+ *
220
+ * Format per separator:
221
+ * none + no value → ` <flag>` (boolean)
222
+ * space + value → ` <flag> <q(value)>` (most flags)
223
+ * equals + value → ` <flag>=<q(value)>` (q wraps the VALUE only)
224
+ * none + value → ` <flag><q(value)>` (positional `@<file>`)
225
+ *
226
+ * Pre-flight throws InvalidParameterError on \n / \r in the value to
227
+ * preserve the single-line copy-paste invariant (analog to
228
+ * task.description? handling).
229
+ */
230
+ function formatParameter(p, q) {
231
+ const value = p.value;
232
+ if (value !== undefined && /[\r\n]/.test(value)) {
233
+ throw new InvalidParameterError(p.cli_flag, "value cannot contain newlines");
234
+ }
235
+ if (value === undefined) {
236
+ // Boolean / valueless flag.
237
+ return ` ${p.cli_flag}`;
238
+ }
239
+ const escaped = q(value);
240
+ if (p.separator === "equals")
241
+ return ` ${p.cli_flag}=${escaped}`;
242
+ if (p.separator === "none")
243
+ return ` ${p.cli_flag}${escaped}`;
244
+ // Default and "space".
245
+ return ` ${p.cli_flag} ${escaped}`;
246
+ }
247
+ function transformPath(shellForm, p) {
248
+ // POSIX form converts Windows separators to forward slashes (matches
249
+ // launcher.ts behaviour). The other two forms pass paths through as-is.
250
+ return shellForm === "posix" ? toPosixPath(p) : p;
251
+ }
252
+ /**
253
+ * Build the substitution for a single placeholder key. Returns the
254
+ * replacement string (may be empty when the `?` suffix is absent).
255
+ * Callers are responsible for validating the placeholder exists in
256
+ * ALLOWED_PLACEHOLDERS first.
257
+ */
258
+ function substituteOne(key, ctx, shellForm) {
259
+ const q = pickEscaper(shellForm);
260
+ switch (key) {
261
+ case "project.id":
262
+ return ctx.project.id;
263
+ case "project.path":
264
+ return q(transformPath(shellForm, ctx.project.path));
265
+ case "task.uuid":
266
+ return ctx.task.uuid;
267
+ case "task.title":
268
+ return q(ctx.task.title);
269
+ case "task.session_name": {
270
+ // iterate-2026-05-19-fix-launch-name-quoting — composes the Claude
271
+ // session display name (the `--name` value) and shell-escapes it
272
+ // ONCE. Templates MUST use bare `--name {task.session_name}`, never
273
+ // `--name "{task.session_name}"`: the result is already a single
274
+ // shell-quoted token. The previous bundled templates wrapped a
275
+ // q()-escaped `{task.title}` in literal double-quotes, so Claude
276
+ // received a name with stray inner quotes (`--name "'My Task'"`).
277
+ //
278
+ // Per-action prefix mirrors the historical bundled names; the
279
+ // three bundled actionId strings below are a contract with
280
+ // default-actions.json. Unlike {task.initial_prompt} (which throws
281
+ // UnknownActionError for non-bundled actions — a slash command is
282
+ // bundled-mode-only), a session NAME is meaningful for every
283
+ // action, so a non-bundled / custom actionId deliberately falls
284
+ // back to the bare title rather than throwing.
285
+ const title = ctx.task.title;
286
+ let composed;
287
+ if (ctx.actionId === "new-pipeline") {
288
+ composed = `Pipeline: ${title}`;
289
+ }
290
+ else if (ctx.actionId === "new-iterate") {
291
+ composed = `Iterate: ${title}`;
292
+ }
293
+ else if (ctx.actionId === "new-task") {
294
+ const label = ctx.task.phase_label.trim();
295
+ composed = label ? `${label}: ${title}` : title;
296
+ }
297
+ else {
298
+ composed = title;
299
+ }
300
+ return q(composed);
301
+ }
302
+ case "task.phase":
303
+ if (!ctx.allowedPhaseIds.has(ctx.task.phase)) {
304
+ throw new UnknownPhaseError(ctx.task.phase);
305
+ }
306
+ return ctx.task.phase;
307
+ case "task.phase_label":
308
+ return q(ctx.task.phase_label);
309
+ case "task.description?": {
310
+ // Multi-line briefs are flattened to one line (see flattenDescription)
311
+ // rather than rejected — the launch command must stay single-line.
312
+ const d = flattenDescription(ctx.task.description);
313
+ if (!d)
314
+ return "";
315
+ // ` \\\n ` leading continuation prefix — the optional-suffix
316
+ // semantics covered in the header comment.
317
+ return ` \\\n ${q(d)}`;
318
+ }
319
+ case "task.autonomy_flag?": {
320
+ if (ctx.task.autonomy === "autonomous") {
321
+ return ` \\\n --autonomous`;
322
+ }
323
+ return "";
324
+ }
325
+ case "task.parameters?": {
326
+ const params = ctx.task.parameters;
327
+ if (!params || params.length === 0)
328
+ return "";
329
+ return params.map((p) => formatParameter(p, q)).join("");
330
+ }
331
+ case "task.initial_prompt": {
332
+ // iterate/fix-adopt-prompt-shape § 1 — build slash + autonomy +
333
+ // params + description as ONE raw inner string, then shell-quote
334
+ // the whole thing as a single argument. Skill flags belong INSIDE
335
+ // this quoted prompt (Claude treats it as the user's first
336
+ // message in interactive mode), not as Claude CLI flags.
337
+ //
338
+ // Phase validation: new-task uses {ctx.task.phase} in the slash;
339
+ // an unknown phase would silently emit /shipwright-<garbage>. The
340
+ // legacy `task.phase` placeholder branch already throws
341
+ // UnknownPhaseError; we re-do the check here because the new
342
+ // placeholder bypasses that branch entirely.
343
+ if (ctx.actionId === "new-task" &&
344
+ ctx.task.phase &&
345
+ !ctx.allowedPhaseIds.has(ctx.task.phase)) {
346
+ throw new UnknownPhaseError(ctx.task.phase);
347
+ }
348
+ const slash = buildSlashCommand(ctx.actionId, ctx.task.phase, ctx.slashCommand);
349
+ if (!slash) {
350
+ throw new UnknownActionError(ctx.actionId);
351
+ }
352
+ let inner = slash;
353
+ if (ctx.task.autonomy === "autonomous") {
354
+ inner += " --autonomous";
355
+ }
356
+ if (ctx.task.parameters && ctx.task.parameters.length > 0) {
357
+ for (const p of ctx.task.parameters) {
358
+ inner += formatParameterRaw(p);
359
+ }
360
+ }
361
+ // Flattened to one line — see flattenDescription. The whole prompt
362
+ // is shell-quoted once by q() below, so a multi-line brief must
363
+ // already be single-line here or the quoted argument would break
364
+ // the single-line launch-command invariant.
365
+ const desc = flattenDescription(ctx.task.description);
366
+ if (desc) {
367
+ inner += ` ${desc}`;
368
+ }
369
+ return q(inner);
370
+ }
371
+ case "plugin.dirs": {
372
+ const dirs = ctx.pluginDirs;
373
+ if (!dirs || dirs.length === 0)
374
+ return "";
375
+ return dirs
376
+ .map((d) => `--plugin-dir ${q(transformPath(shellForm, d))}`)
377
+ .join(" ");
378
+ }
379
+ case "cd.prefix": {
380
+ // 2026-04-23 — iterate-20260423-launch-cwd-prefix.
381
+ //
382
+ // `--add-dir <path>` only grants Claude tool-access to that
383
+ // directory; it does NOT change the shell's working directory.
384
+ // When the user pastes the copy command in a terminal parked in
385
+ // $HOME, the skill runs with `pwd === $HOME`, fails to find
386
+ // shipwright_run_config.json, and exits immediately. The cd.prefix
387
+ // placeholder expands to a shell-specific `cd` command + separator
388
+ // so the slash command runs with the project as cwd regardless of
389
+ // where the terminal happened to be.
390
+ //
391
+ // Form per shell:
392
+ // PowerShell — `Set-Location <escaped> -ErrorAction Stop; `
393
+ // (PS5 lacks `&&`; `-ErrorAction Stop` upgrades the
394
+ // otherwise non-terminating `Set-Location` error to a
395
+ // terminating one so the user sees the actual cd
396
+ // failure rather than a confusing missing-config
397
+ // error from the skill)
398
+ // cmd.exe — `cd /d <escaped> && ` (`/d` flag is required to
399
+ // also change drive letter on Windows)
400
+ // POSIX — `cd <escaped> && ` (standard short-circuit)
401
+ //
402
+ // Empty project.path → empty string. The pasted command degrades
403
+ // to current behavior (runs in whatever cwd the terminal had);
404
+ // surfacing the empty-path case as a UI/server error is out of
405
+ // scope for this iterate.
406
+ //
407
+ // Security: the same `qPs/qCmd/qPosix` escapers used for
408
+ // `{project.path}` are reused here. The `qCmd` trailing-backslash
409
+ // assumption (launcher.ts:185-189) still applies — directory-picker
410
+ // paths cannot end on `\` in practice, so the assumption holds.
411
+ // `cd.prefix` is the first place a server-trusted path gets
412
+ // injected at the START of the command line, which widens the blast
413
+ // radius if that assumption ever breaks.
414
+ //
415
+ // 2026-04-23 — iterate-20260423-resume-cwd-prefix extracted the
416
+ // shell-specific formatting into `buildCdPrefix` in launcher.ts so
417
+ // the legacy `buildCopyCommands` (Resume / Fork) path emits
418
+ // byte-identical prefixes. `buildCdPrefix` already handles empty
419
+ // cwd and the POSIX `toPosixPath` transform internally.
420
+ return buildCdPrefix(shellForm, ctx.project.path);
421
+ }
422
+ default:
423
+ // This branch is unreachable when callers pre-validate via
424
+ // ALLOWED_PLACEHOLDERS; guarded here so a misuse fails loudly.
425
+ throw new InvalidPlaceholderError(key, ctx.actionId, "");
426
+ }
427
+ }
428
+ /**
429
+ * Substitute placeholders in `template` for a given shell form. Throws
430
+ * on unknown placeholders, title newlines, parameter newlines, unknown
431
+ * phase ids, and unsupported shell forms. A multi-line task description
432
+ * is flattened (not rejected) — see flattenDescription.
433
+ */
434
+ export function substitutePlaceholders(template, ctx, shellForm) {
435
+ // Validate shell form up front so a template with no placeholders
436
+ // still rejects "fish".
437
+ pickEscaper(shellForm);
438
+ // Note: a multi-line `ctx.task.description` is NOT rejected — the
439
+ // description placeholder branches flatten it via flattenDescription.
440
+ // Pre-flight reject of title newlines (analog to parameters below).
441
+ // iterate-2026-05-19-fix-launch-name-quoting — the title feeds
442
+ // {task.title} and {task.session_name} (the `--name` value); an
443
+ // interior newline would break the single-line copy-paste / WS
444
+ // auto-execute invariant. The PATCH /tasks handler already rejects
445
+ // title newlines; the create route only trims — so the substituter
446
+ // is the fail-closed backstop on the launch path.
447
+ if (/[\r\n]/.test(ctx.task.title)) {
448
+ throw new InvalidTitleError();
449
+ }
450
+ // Pre-flight reject of parameter newlines (analog to description). The
451
+ // route layer should have caught these already, but this makes the
452
+ // substituter fail-safe regardless of upstream discipline.
453
+ if (ctx.task.parameters) {
454
+ for (const p of ctx.task.parameters) {
455
+ if (p.value !== undefined && /[\r\n]/.test(p.value)) {
456
+ throw new InvalidParameterError(p.cli_flag, "value cannot contain newlines");
457
+ }
458
+ }
459
+ }
460
+ // Regex matches `{anything-up-to-closing-brace}` with no nesting. The
461
+ // `?` is part of the placeholder key for optional tokens.
462
+ const substituted = template.replace(/\{([^}]+)\}/g, (_match, rawKey) => {
463
+ const key = rawKey.trim();
464
+ if (!ALLOWED_PLACEHOLDERS.has(key)) {
465
+ throw new InvalidPlaceholderError(key, ctx.actionId, template);
466
+ }
467
+ return substituteOne(key, ctx, shellForm);
468
+ });
469
+ // 2026-04-23 — iterate-20260423-shell-line-continuations.
470
+ //
471
+ // The bundled command_template AND the optional-suffix renderers emit
472
+ // POSIX `\<newline> ` continuations for readability. Those are ONLY
473
+ // valid in POSIX shells — PowerShell and cmd.exe treat the backslash as
474
+ // a literal token, drop everything after the newline, and the user ends
475
+ // up pasting just `claude /shipwright-<phase>` with a stray `\`. The
476
+ // safest cross-shell form is a single line (every shell parses a long
477
+ // one-line command identically). We therefore collapse every
478
+ // `<ws>\<newline><ws>` sequence to a single space AFTER substitution.
479
+ // Trailing whitespace is trimmed so an empty optional suffix at the
480
+ // end of the template doesn't leave a dangling blank.
481
+ return substituted.replace(/[ \t]*\\\r?\n[ \t]*/g, " ").replace(/[ \t]+$/, "");
482
+ }
483
+ /**
484
+ * Parallel evaluation across all three shell forms. Useful for the
485
+ * launch route which returns `{powershell, cmd, posix}` to the client.
486
+ * Each form is evaluated independently so an escape-drift bug in one
487
+ * can't corrupt the others.
488
+ */
489
+ export function substituteAllForms(template, ctx) {
490
+ return {
491
+ powershell: substitutePlaceholders(template, ctx, "powershell"),
492
+ cmd: substitutePlaceholders(template, ctx, "cmd"),
493
+ posix: substitutePlaceholders(template, ctx, "posix"),
494
+ };
495
+ }
496
+ /**
497
+ * Convenience wrapper: the route layer's single entry point for producing
498
+ * the 3 shell forms from a command template + context. Delegates directly
499
+ * to substituteAllForms but reads better at the call site.
500
+ */
501
+ export function buildExternalLaunchCommand(args) {
502
+ return substituteAllForms(args.template, args.ctx);
503
+ }
504
+ /**
505
+ * Dry-run validator used by the actions route to verify every
506
+ * `command_template` is substitution-safe at load time. Constructs a
507
+ * synthetic context with representative values and re-runs all three
508
+ * shell forms. Returns the first error encountered, or null on success.
509
+ *
510
+ * Does NOT raise UnknownPhaseError — the validator's job is to catch
511
+ * placeholder typos and shape corruption, not to fail-close when a
512
+ * phase allowlist is empty (e.g. during initial setup). The actual
513
+ * phase check runs at launch time with the real task state.
514
+ */
515
+ export function validateTemplate(template, actionId, phaseIds, slashCommand) {
516
+ const ctx = {
517
+ project: { id: "dry-run-project", path: "/tmp/dry-run" },
518
+ task: {
519
+ uuid: "00000000-0000-0000-0000-000000000000",
520
+ title: "dry run",
521
+ phase: phaseIds[0] ?? "dry-run-phase",
522
+ phase_label: "Dry Run",
523
+ // Synthetic parameters so {task.parameters?} doesn't render as a
524
+ // no-op during validation — exercises the substituter branch.
525
+ parameters: [
526
+ { cli_flag: "--dry-flag", value: "x", separator: "space" },
527
+ ],
528
+ },
529
+ pluginDirs: [],
530
+ allowedPhaseIds: new Set([...phaseIds, "dry-run-phase"]),
531
+ actionId,
532
+ // Pass slash_command so a custom {task.initial_prompt} template dry-runs
533
+ // without throwing UnknownActionError (a GET /actions 500). Builtins ignore it.
534
+ slashCommand,
535
+ };
536
+ try {
537
+ substituteAllForms(template, ctx);
538
+ return null;
539
+ }
540
+ catch (err) {
541
+ if (err instanceof InvalidPlaceholderError)
542
+ return err;
543
+ // Other error classes (UnsupportedShellError, UnknownPhaseError,
544
+ // InvalidTitleError) do not apply to the dry-run context because we
545
+ // supply clean values.
546
+ throw err;
547
+ }
548
+ }
549
+ //# sourceMappingURL=actions-substitute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions-substitute.js","sourceRoot":"","sources":["../../src/core/actions-substitute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type BoardColumn = "backlog" | "in_progress" | "done";
2
+ export declare function isBoardColumn(v: unknown): v is BoardColumn;
3
+ //# sourceMappingURL=board-column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-column.d.ts","sourceRoot":"","sources":["../../src/core/board-column.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;AAE7D,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAE1D"}
@@ -0,0 +1,4 @@
1
+ export function isBoardColumn(v) {
2
+ return v === "backlog" || v === "in_progress" || v === "done";
3
+ }
4
+ //# sourceMappingURL=board-column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-column.js","sourceRoot":"","sources":["../../src/core/board-column.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,aAAa,CAAC,CAAU;IACtC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,KAAK,MAAM,CAAC;AAChE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { Campaign } from "./campaign-store.js";
2
+ export interface SubEventProjection {
3
+ /** Commit sha from the latest matching `work_completed` event, or null when
4
+ * it carried none (a worktree F5b event is written with `commit==""`). Tests
5
+ * are intentionally NOT projected — the board renders no test column. */
6
+ commit: string | null;
7
+ }
8
+ /** slug → (sub_iterate_id → projection of its latest `work_completed` event). */
9
+ export type CampaignEventsProjection = Map<string, Map<string, SubEventProjection>>;
10
+ /**
11
+ * Pure projection of campaign sub-iterate completions from event-log lines.
12
+ * Parity with `campaign_status.py::_project_events`: keep only
13
+ * `type === "work_completed"` events that carry a truthy top-level `campaign`
14
+ * AND `sub_iterate_id`; the latest event per (campaign, sub_iterate_id) wins,
15
+ * ranked by `ts` epoch then file index (a missing/unparseable `ts` sorts
16
+ * oldest, so a later log line still wins). Corrupt / non-object / blank lines
17
+ * are skipped (tolerant — a torn 3 s-poll read must never throw).
18
+ */
19
+ export declare function projectCampaignEvents(lines: Iterable<string>): CampaignEventsProjection;
20
+ /**
21
+ * File-loading wrapper: read `<projectRoot>/shipwright_events.jsonl` (the
22
+ * canonical per-tree log, `events_log.resolve_events_path`) and project it.
23
+ * Missing / unreadable log → empty projection (the board falls back to the
24
+ * dir-sourced campaigns, or shows nothing — never an error).
25
+ */
26
+ export declare function readCampaignEvents(projectRoot: string): CampaignEventsProjection;
27
+ /**
28
+ * Merge the events projection into the dir-sourced campaigns:
29
+ * 1. OVERLAY each locally-present campaign — never-downgrade a step to
30
+ * `complete` when an event confirms it, prefer a non-empty event commit,
31
+ * then recompute `done`/`nextPending` (`total` is the skeleton, unchanged).
32
+ * 2. SYNTHESIZE a `derivedFromEvents` campaign for every event-only slug.
33
+ * Returns locals + synthesized, sorted by slug descending (newest-first, like
34
+ * `readCampaigns`). `merge_status(committed, "complete")` is always `"complete"`
35
+ * — including over `failed`/`escalated` (a re-run that emitted a fresh event) —
36
+ * so the overlay is a single status set.
37
+ */
38
+ export declare function applyEventsProjection(campaigns: Campaign[], projection: CampaignEventsProjection): Campaign[];
39
+ //# sourceMappingURL=campaign-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-events.d.ts","sourceRoot":"","sources":["../../src/core/campaign-events.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,qBAAqB,CAAC;AAKlE,MAAM,WAAW,kBAAkB;IACjC;;8EAE0E;IAC1E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,iFAAiF;AACjF,MAAM,MAAM,wBAAwB,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAcpF;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GACtB,wBAAwB,CAwC1B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAUhF;AAmDD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,QAAQ,EAAE,EACrB,UAAU,EAAE,wBAAwB,GACnC,QAAQ,EAAE,CAwBZ"}