@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,518 @@
1
+ /*
2
+ * ws-upgrade-handler.ts — embedded-terminal WebSocket upgrade body.
3
+ *
4
+ * Extracted from `terminal/routes.ts` in iterate-2026-05-27-ws-upgrade-
5
+ * handler-split (ADR-103 retirement candidate #1). Owns the post-upgrade
6
+ * lifecycle for the WS attach contract:
7
+ *
8
+ * - replay-only branch for done/launch_failed tasks
9
+ * - live branch with:
10
+ * * atomic ptyManager.attach() returning {role, hadPriorWriter}
11
+ * * new-plain `awaiting_external_start → active` flip (AC-4)
12
+ * * subscribeForConnection (onData, onBackpressure, onPromoteToWriter)
13
+ * * sync `ready` envelope (auto-launch handshake timing — Spec 76)
14
+ * * async replay IIFE: pauseForConn → live-mirror-first / disk-fallback
15
+ * resolveReplaySnapshot → flushLiveBuffer → resumeForConn
16
+ * - per-message writer-role gating via getRole (non-mutating)
17
+ * - snapshot-on-detach via atomic detachAndCount (ADR-092)
18
+ *
19
+ * --- PROTECTED DEEP MODULE (see ADR-103 §Retirement Plan) -----------------
20
+ *
21
+ * ADR-103's deep-module argument names this file as the cohesive unit
22
+ * worth protecting: three shared locks (writer-slot, pause-refcount,
23
+ * attach-count), one onData broadcast, one backpressure budget. The
24
+ * argument applies to the WS body AS A WHOLE — splitting it further
25
+ * across more files is the exact failure mode ADR-101 calls out
26
+ * ("moving complexity outward"). Do NOT add unrelated terminal helpers
27
+ * (HTTP-only logic, spawn-env factory, image-paste utilities, …) to
28
+ * this module. If a helper genuinely belongs to the WS body alone,
29
+ * keep it private here; otherwise route it through `routes.ts` or a
30
+ * dedicated neutral module like `terminal-reset.ts`.
31
+ */
32
+ import { buildReplaySnapshotEnvelope, tryReadSnapshot as tryReadSnapshotShared, } from "./replay-snapshot.js";
33
+ import { deriveTerminalReset } from "./terminal-reset.js";
34
+ import { startWsHeartbeat } from "./ws-heartbeat.js";
35
+ import { createResyncGate } from "./resync-gate.js";
36
+ export function isWSInbound(v) {
37
+ if (!v || typeof v !== "object")
38
+ return false;
39
+ const o = v;
40
+ if (o.type === "data" && typeof o.payload === "string")
41
+ return true;
42
+ if (o.type === "resize" && typeof o.cols === "number" && typeof o.rows === "number") {
43
+ return true;
44
+ }
45
+ if (o.type === "redraw")
46
+ return true;
47
+ if (o.type === "resync")
48
+ return true;
49
+ return false;
50
+ }
51
+ // ---------------------------------------------------------------------------
52
+ // Private helpers (formerly factory-closure helpers inside routes.ts).
53
+ // Moved here as one cohesive unit per external plan review HIGH #2 so
54
+ // import order + initialization stay coupled to the WS body.
55
+ // ---------------------------------------------------------------------------
56
+ const tryReadSnapshot = (snapshotStore, taskId, expectedTerminalVersion) => tryReadSnapshotShared(snapshotStore, taskId, expectedTerminalVersion);
57
+ // ADR-092 — replay resolution: LIVE mirror wins over disk snapshot.
58
+ const resolveReplaySnapshot = async (ctx) => {
59
+ const live = await ctx.ptyManager.serializeMirrorIfLive(ctx.taskId);
60
+ if (live)
61
+ return live;
62
+ return tryReadSnapshot(ctx.snapshotStore, ctx.taskId, ctx.expectedTerminalVersion);
63
+ };
64
+ // ADR-089 — single-envelope replay emit. Backpressure stays trivial
65
+ // because the entire snapshot is one WS frame.
66
+ const sendReplaySnapshot = (ws, rec) => {
67
+ try {
68
+ ws.send(JSON.stringify(buildReplaySnapshotEnvelope(rec)));
69
+ return true;
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ };
75
+ // ---------------------------------------------------------------------------
76
+ // buildWsHandlers — entry point for the WS body.
77
+ // ---------------------------------------------------------------------------
78
+ /**
79
+ * Build the Hono WS handler object (`onOpen`, `onMessage`, `onClose`,
80
+ * `onError`) for the embedded-terminal WS upgrade.
81
+ *
82
+ * Precondition: `ctx` is a `ValidatedWsUpgradeContext` — all
83
+ * reject-the-upgrade validations passed in `routes.ts`. Failures
84
+ * raised inside the returned handlers degrade to WS disconnects, NOT
85
+ * HTTP upgrade rejections (see type doc).
86
+ *
87
+ * Dispatches between two branches:
88
+ * - **replay-only** (`task.state === "done" || task.state === "launch_failed"`):
89
+ * no pty is spawned. The WS sends a `ready` envelope, emits the
90
+ * stored cell-state snapshot if available, then closes cleanly.
91
+ * - **live** (anything else): the WS owns a live shell. The full
92
+ * ADR-068-A1 / ADR-087 / ADR-092 lifecycle applies.
93
+ */
94
+ export function buildWsHandlers(ctx) {
95
+ const isReplayOnly = ctx.task.state === "done" || ctx.task.state === "launch_failed";
96
+ if (isReplayOnly) {
97
+ return buildReplayOnlyHandlers(ctx);
98
+ }
99
+ return buildLiveHandlers(ctx);
100
+ }
101
+ // ---------------------------------------------------------------------------
102
+ // Replay-only branch (done / launch_failed tasks).
103
+ // ---------------------------------------------------------------------------
104
+ function buildReplayOnlyHandlers(ctx) {
105
+ const { taskId, trustedCwd, scrollbackStore, retentionDays, scrollbackDirHint } = ctx;
106
+ return {
107
+ onOpen(_evt, ws) {
108
+ void (async () => {
109
+ let scrollbackBytes = 0;
110
+ if (scrollbackStore && !scrollbackStore.disabled) {
111
+ try {
112
+ scrollbackBytes = await scrollbackStore.bytes(taskId);
113
+ }
114
+ catch { /* fall through with 0 */ }
115
+ }
116
+ try {
117
+ ws.send(JSON.stringify({
118
+ type: "ready",
119
+ role: "reader",
120
+ shellKind: null,
121
+ cwd: trustedCwd,
122
+ replayOnly: true,
123
+ // ADR-104 — replay-only tasks (done / launch_failed)
124
+ // never carry a reset banner: no pty is spawned and
125
+ // Resume is not applicable in a terminal state.
126
+ terminalReset: false,
127
+ // fix-resume-guard-survives-reload — replay-only
128
+ // tasks spawn no pty; there is nothing to reuse.
129
+ ptyReused: false,
130
+ scrollbackBytes,
131
+ retentionDays,
132
+ scrollbackDir: scrollbackDirHint,
133
+ }));
134
+ }
135
+ catch { /* ignore */ }
136
+ // Iterate C (ADR-087) — snapshot is the sole replay path.
137
+ // When `tryReadSnapshot` returns null (missing snapshot,
138
+ // version mismatch, or headlessMirrorEnabled=false), the
139
+ // client receives no replay history — by design, per the
140
+ // plan-of-record trade-off. The legacy chunked-replay
141
+ // emission has been retired.
142
+ const snap = await tryReadSnapshot(ctx.snapshotStore, taskId, ctx.expectedTerminalVersion);
143
+ if (snap) {
144
+ sendReplaySnapshot(ws, snap);
145
+ }
146
+ // Close cleanly — no live shell to keep open.
147
+ try {
148
+ ws.close?.(1000);
149
+ }
150
+ catch { /* ignore */ }
151
+ })();
152
+ },
153
+ // No onMessage / onClose / onError needed — there is no
154
+ // pty to detach from. The runtime tolerates omitted handlers.
155
+ };
156
+ }
157
+ // ---------------------------------------------------------------------------
158
+ // Live branch (pty-backed tasks).
159
+ // ---------------------------------------------------------------------------
160
+ function buildLiveHandlers(ctx) {
161
+ const { taskId, task, trustedCwd, store, scrollbackStore, retentionDays, scrollbackDirHint } = ctx;
162
+ // ADR-104 — capture pty-existence on the synchronous line
163
+ // IMMEDIATELY before spawn(). Race-free: there is no `await`
164
+ // between this probe and spawn(), and Node is single-threaded,
165
+ // so no concurrent WS attach can create the pty in between.
166
+ const ptyExistedBeforeAttach = ctx.ptyManager.get(taskId) !== undefined;
167
+ // D02/F02 — with NO live pty, resolve the disk snapshot BEFORE spawn()
168
+ // (its fresh empty mirror would else shadow it). Live pty → resolve in the
169
+ // IIFE (ADR-092 live-first / Guard 2a; spawn idempotent keeps the mirror).
170
+ const preSpawnReplay = ptyExistedBeforeAttach ? null : resolveReplaySnapshot(ctx);
171
+ // Ensure-or-create the pty against the realpath-validated cwd.
172
+ // ptyManager.spawn(): `shell` is a whitelisted binary NAME (ADR-067 allowlist +
173
+ // loopback Origin gate), not child_process({shell:true}). Semgrep false positive.
174
+ // nosemgrep: javascript.lang.security.audit.spawn-shell-true.spawn-shell-true
175
+ const meta = ctx.ptyManager.spawn(taskId, {
176
+ cwd: trustedCwd,
177
+ shell: ctx.resolveShell(),
178
+ });
179
+ // ADR-104 — true when this attach freshly re-created the pty
180
+ // after a prior Claude session was lost (server restart / crash).
181
+ const terminalReset = deriveTerminalReset(ptyExistedBeforeAttach, task.firstJsonlObservedAt);
182
+ // Per-connection identity is the WSContext (re-used in attach/detach).
183
+ // We build it inline to keep references stable across handlers.
184
+ const connToken = { taskId, t: Date.now() };
185
+ /*
186
+ * Replay gate. While a snapshot write is in flight, live pty output is BUFFERED
187
+ * instead of sent, then flushed once the snapshot has been emitted.
188
+ *
189
+ * Hoisted to the handler scope (it was local to `onOpen`) so the mid-session
190
+ * `resync` path reuses this EXACT sequence rather than a second, subtly different
191
+ * one. That matters: output produced while the snapshot serializes would
192
+ * otherwise be sent BEFORE the snapshot and then wiped by the client's
193
+ * `term.reset()` — the repair would itself lose the bytes it exists to restore.
194
+ */
195
+ const liveBuffer = [];
196
+ let replayDone = false;
197
+ /*
198
+ * True while SOME snapshot-emit sequence owns the gate. Initialised `true`
199
+ * because the attach replay is guaranteed to run and can only start after
200
+ * `onOpen` — a `resync` arriving in between would otherwise find the gate free
201
+ * and interleave with it.
202
+ *
203
+ * `resyncGate` alone is not enough: it serializes resync against resync, not
204
+ * against the ATTACH replay, and both share `liveBuffer`/`replayDone`. Whichever
205
+ * finished first would set `replayDone = true`, so live output would stream
206
+ * straight to the client while the other's snapshot was still resolving — and
207
+ * the client's `term.reset()` would then erase it. That is precisely the
208
+ * ordering invariant this iterate exists to protect (external review, HIGH).
209
+ *
210
+ * A resync that arrives during the attach replay is DROPPED rather than queued,
211
+ * and that is correct rather than merely convenient: the attach is already
212
+ * emitting a full grid, which is exactly what the resync would have asked for.
213
+ * If a drop lands after that snapshot was serialized, the episode-END notice
214
+ * arrives once the gate is free and the client asks again.
215
+ */
216
+ let replayBusy = true;
217
+ const sendData = (ws, data) => {
218
+ try {
219
+ ws.send(JSON.stringify({ type: "data", payload: data }));
220
+ }
221
+ catch { /* socket may be mid-close */ }
222
+ };
223
+ const flushLiveBuffer = (ws) => {
224
+ for (const data of liveBuffer)
225
+ sendData(ws, data);
226
+ liveBuffer.length = 0;
227
+ };
228
+ const resyncGate = createResyncGate();
229
+ /**
230
+ * Serve a client-requested full-grid resync. Mirrors the attach sequence
231
+ * deliberately — hold the gate, pause this conn, resolve live-mirror-first
232
+ * (ADR-092), emit ONE `replay_snapshot`, flush buffered output, resume — because
233
+ * that ordering is exactly what stops the repair from dropping bytes. Throttled
234
+ * by `resyncGate`; a denied request is dropped, and the episode-END backpressure
235
+ * notice guarantees the client gets another chance after the last drop.
236
+ */
237
+ const performResync = async (ws) => {
238
+ // Never interleave with the attach replay (or another resync) — see replayBusy.
239
+ if (replayBusy)
240
+ return;
241
+ if (!resyncGate.tryAcquire())
242
+ return;
243
+ replayBusy = true;
244
+ replayDone = false;
245
+ try {
246
+ ctx.ptyManager.pauseForConn(taskId, connToken);
247
+ const snap = await resolveReplaySnapshot(ctx);
248
+ if (snap)
249
+ sendReplaySnapshot(ws, snap);
250
+ }
251
+ catch (err) {
252
+ // eslint-disable-next-line no-console
253
+ console.warn(`[terminal] resync failed for ${taskId}: ${err.message}`);
254
+ }
255
+ finally {
256
+ flushLiveBuffer(ws);
257
+ replayDone = true;
258
+ replayBusy = false;
259
+ ctx.ptyManager.resumeForConn(taskId, connToken);
260
+ resyncGate.release();
261
+ }
262
+ };
263
+ return {
264
+ onOpen(_evt, ws) {
265
+ startWsHeartbeat(ws); // reap a dead socket → free a pinned writer slot (read-only false-blocker, iterate-2026-05-31)
266
+ // `hadPriorWriter` = atomic snapshot in attach() (iterate
267
+ // 2026-05-27-fix-pty-reused-prewarm-race); feeds ready.ptyReused
268
+ // so the guard arms only on real reload/multi-tab, not prewarm.
269
+ // `ptyExistedBeforeAttach` still drives ADR-104 terminalReset.
270
+ const { role, hadPriorWriter } = ctx.ptyManager.attach(taskId, connToken);
271
+ // Iterate v0.8.5 AC-4 — new-plain (`/api/external/launch`
272
+ // with actionId === "new-plain") tasks never write a JSONL
273
+ // until the user types their first message inside Claude
274
+ // (per known_issues.md "Awaiting-launch state — expected
275
+ // latency band"). The transcript-poll-driven state machine
276
+ // can therefore never flip these tasks out of
277
+ // `awaiting_external_start`, even though Claude is plainly
278
+ // reachable in the embedded terminal — confusing UX.
279
+ //
280
+ // Pty-up is the operator's mental model of "active" for
281
+ // new-plain. When the WS upgrade succeeds and the task is
282
+ // in `awaiting_external_start` AND was launched as
283
+ // new-plain, flip it to `active` immediately. The
284
+ // transcript-poll path remains authoritative for all other
285
+ // actionIds (slash-command launches; resume; fork) — they
286
+ // write JSONL at first prompt and the existing
287
+ // !firstJsonlObservedAt branch handles them.
288
+ if (task.state === "awaiting_external_start" &&
289
+ task.actionId === "new-plain") {
290
+ store.patch(taskId, { state: "active" });
291
+ // Don't set firstJsonlObservedAt — pty-up is not the
292
+ // same evidence as JSONL-on-disk; the existing
293
+ // transcript-poll transition will set the timestamp
294
+ // correctly when the user actually types something.
295
+ void store.persist();
296
+ }
297
+ // ADR-068-A1 replay flow (post-ADR-087 / Iterate C):
298
+ // 1. Subscribe with a liveBuffer so we don't miss live output
299
+ // while the snapshot read + send happens.
300
+ // 2. Pause pty (avoids OOM on slow xterm-render under
301
+ // backgrounded-tab conditions — Decision #15).
302
+ // 3. Send `ready` envelope.
303
+ // 4. Emit a single `replay_snapshot` envelope when a usable
304
+ // snapshot exists; otherwise emit no replay history
305
+ // (blank terminal with live shell — the chunked
306
+ // replay_start/chunk/separator/end fallback was retired).
307
+ // 5. Flush liveBuffer + flip replayDone.
308
+ // 6. Resume pty.
309
+ // The replay gate (liveBuffer / replayDone / flushLiveBuffer) lives in the
310
+ // handler scope so `resync` reuses it — see its declaration above.
311
+ ctx.ptyManager.subscribeForConnection(taskId, connToken, {
312
+ onData: (data) => {
313
+ if (replayDone)
314
+ sendData(ws, data);
315
+ else
316
+ liveBuffer.push(data);
317
+ },
318
+ // Forward the WHOLE notice. Destructuring `droppedBytes` here silently
319
+ // stripped every cumulative field (`droppedChunks`, `totalDroppedBytes`,
320
+ // `episode`, `episodeEnded`) so AC-2's countability never crossed the
321
+ // boundary — the client's tolerant parsing then masked it as zeroes.
322
+ // Guard: `ws-backpressure-envelope.test.ts`.
323
+ onBackpressure: (info) => {
324
+ try {
325
+ ws.send(JSON.stringify({ type: "backpressure", ...info }));
326
+ }
327
+ catch { /* ignore */ }
328
+ },
329
+ // Fired when the previous writer detaches and we get
330
+ // promoted (closes the StrictMode double-mount race).
331
+ onPromoteToWriter: () => {
332
+ try {
333
+ ws.send(JSON.stringify({ type: "writer-promoted" }));
334
+ }
335
+ catch { /* ignore */ }
336
+ },
337
+ });
338
+ // Iterate v0.8.2 AC-8/AC-9: ready envelope stays SYNC to
339
+ // preserve the auto-launch handshake timing (Spec 76
340
+ // regressed when ready was moved into the async IIFE).
341
+ // scrollbackBytes is initialised to 0 here; the precise
342
+ // value is computed inside the IIFE and emitted via a
343
+ // follow-up `scrollback-meta` envelope so the disclosure
344
+ // footer can update once the bytes() probe resolves.
345
+ try {
346
+ ws.send(JSON.stringify({
347
+ type: "ready",
348
+ role,
349
+ shellKind: meta.shellKind,
350
+ cwd: meta.cwd,
351
+ replayOnly: false,
352
+ // ADR-104 — drives the EmbeddedTerminal reset banner.
353
+ terminalReset,
354
+ // `true` iff a writer attached BEFORE this WS upgrade
355
+ // (iterate-2026-05-27-fix-pty-reused-prewarm-race —
356
+ // refined from `ptyExistedBeforeAttach`; prewarm-only
357
+ // ptys now correctly emit `false`).
358
+ ptyReused: hadPriorWriter,
359
+ scrollbackBytes: 0,
360
+ retentionDays,
361
+ scrollbackDir: scrollbackDirHint,
362
+ }));
363
+ // External code-review F8: also emit an explicit
364
+ // `second-attach` envelope so reader-role consumers can
365
+ // surface a UX banner before the first input attempt.
366
+ if (role === "reader") {
367
+ ws.send(JSON.stringify({ type: "second-attach" }));
368
+ }
369
+ }
370
+ catch { /* ignore */ }
371
+ // Iterate C (ADR-087) — snapshot is the sole replay path.
372
+ // ADR-086's "skip replay for new-plain" branch is gone:
373
+ // cell-state snapshots have no byte-stream corruption, and
374
+ // there is no chunked path to skip. ADR-068-A1's per-conn
375
+ // pause stake (pauseForConn / resumeForConn) is preserved
376
+ // so multi-tab attach still serializes the replay write
377
+ // cleanly with live pty output.
378
+ void (async () => {
379
+ try {
380
+ ctx.ptyManager.pauseForConn(taskId, connToken);
381
+ let scrollbackBytes = 0;
382
+ if (scrollbackStore && !scrollbackStore.disabled) {
383
+ try {
384
+ scrollbackBytes = await scrollbackStore.bytes(taskId);
385
+ }
386
+ catch { /* fall through with 0 */ }
387
+ }
388
+ // Privacy disclosure footer still receives the byte
389
+ // count — even though no chunked replay is emitted,
390
+ // the on-disk file may exist and the user has a
391
+ // "Clear history" button surfaced from this number.
392
+ try {
393
+ ws.send(JSON.stringify({
394
+ type: "scrollback-meta",
395
+ scrollbackBytes,
396
+ }));
397
+ }
398
+ catch { /* ignore */ }
399
+ // ADR-092 live-first / disk-fallback (resolveReplaySnapshot).
400
+ // D02/F02 — a no-live-pty attach was already resolved BEFORE spawn
401
+ // (preSpawnReplay) so the fresh empty mirror cannot shadow the disk
402
+ // snapshot; a live pty resolves here exactly as before.
403
+ const snap = await (preSpawnReplay ?? resolveReplaySnapshot(ctx));
404
+ if (snap) {
405
+ sendReplaySnapshot(ws, snap);
406
+ }
407
+ flushLiveBuffer(ws);
408
+ replayDone = true;
409
+ }
410
+ catch (err) {
411
+ // eslint-disable-next-line no-console
412
+ console.warn(`[terminal] replay failed for ${taskId}: ${err.message}`);
413
+ flushLiveBuffer(ws);
414
+ replayDone = true;
415
+ }
416
+ finally {
417
+ // Release the shared replay gate only now — a `resync` that arrived
418
+ // mid-attach must not have interleaved with this sequence.
419
+ replayBusy = false;
420
+ ctx.ptyManager.resumeForConn(taskId, connToken);
421
+ }
422
+ })();
423
+ },
424
+ onMessage(evt, ws) {
425
+ const raw = typeof evt.data === "string" ? evt.data : "";
426
+ let parsed;
427
+ try {
428
+ parsed = JSON.parse(raw);
429
+ }
430
+ catch {
431
+ return;
432
+ }
433
+ // App-level liveness ping (iterate-2026-06-18). Answered BEFORE the
434
+ // role gate so READERS stay alive too. The client uses the pong to
435
+ // detect a silently half/full-open socket (OS sleep / Tailscale
436
+ // partition) that never fires a `close` event, then reconnects.
437
+ // Distinct from the server's own protocol-level ping/pong heartbeat
438
+ // (ws-heartbeat.ts) — that frees the server slot; this wakes the client.
439
+ if (parsed &&
440
+ typeof parsed === "object" &&
441
+ parsed.type === "ping") {
442
+ try {
443
+ ws.send(JSON.stringify({ type: "pong" }));
444
+ }
445
+ catch {
446
+ /* ignore */
447
+ }
448
+ return;
449
+ }
450
+ // Answered BEFORE the writer gate, like `ping`: it never WRITES to the pty, and
451
+ // gating it on the writer slot would leave every READER permanently smeared by a
452
+ // drop. It does briefly PAUSE the shared pty while serializing — hence the throttle.
453
+ if (parsed &&
454
+ typeof parsed === "object" &&
455
+ parsed.type === "resync") {
456
+ void performResync(ws);
457
+ return;
458
+ }
459
+ if (!isWSInbound(parsed))
460
+ return;
461
+ // External code-review F6: use the non-mutating getRole()
462
+ // here so re-evaluating the writer gate on every inbound
463
+ // message can NOT silently flip the original writer to
464
+ // reader. attach() is idempotent for same-conn since the
465
+ // F6 fix, but getRole() is the cheaper + safer entrypoint.
466
+ const actualRole = ctx.ptyManager.getRole(taskId, connToken);
467
+ if (actualRole !== "writer") {
468
+ try {
469
+ ws.send(JSON.stringify({ type: "read_only" }));
470
+ }
471
+ catch { /* ignore */ }
472
+ return;
473
+ }
474
+ if (parsed.type === "data") {
475
+ ctx.ptyManager.write(taskId, parsed.payload);
476
+ }
477
+ else if (parsed.type === "redraw") {
478
+ // Writer-gated by the role check above — a reader must never poke the
479
+ // pty. See WSMessageRedraw for why this cannot be a no-op `resize`.
480
+ ctx.ptyManager.forceRedraw(taskId);
481
+ }
482
+ else if (parsed.type === "resize") {
483
+ ctx.ptyManager.resize(taskId, parsed.cols, parsed.rows);
484
+ }
485
+ },
486
+ onClose() {
487
+ // ADR-092 (Iterate E) — snapshot-on-detach resilience.
488
+ // `detachAndCount` performs the detach + post-state read
489
+ // as a single atomic observation (external code review
490
+ // OpenAI HIGH #1 — split-step "check count → detach →
491
+ // check count" was vulnerable to a concurrent attach
492
+ // landing between the two reads). Only when the
493
+ // post-detach count is 0 do we flush the mirror to disk
494
+ // so a future re-attach (or server restart) finds a
495
+ // usable snapshot via `tryReadSnapshot`. The pty stays
496
+ // alive; only persistence fires here. Fire-and-forget
497
+ // — never block the WS close handshake.
498
+ const { remainingAttachCount } = ctx.ptyManager.detachAndCount(taskId, connToken);
499
+ if (remainingAttachCount === 0) {
500
+ // flushMirrorSnapshot wraps its async body in try/catch
501
+ // internally — no rejection escapes (per Gemini LOW #3
502
+ // / OpenAI MED #4: ensures no unhandled rejection noise
503
+ // from this fire-and-forget call). SnapshotStore.write
504
+ // is per-task PQueue-serialized (snapshot-store.ts —
505
+ // Iterate B MEDIUM-1) so overlapping calls cannot
506
+ // corrupt the file.
507
+ void ctx.ptyManager.flushMirrorSnapshot(taskId);
508
+ }
509
+ },
510
+ onError() {
511
+ const { remainingAttachCount } = ctx.ptyManager.detachAndCount(taskId, connToken);
512
+ if (remainingAttachCount === 0) {
513
+ void ctx.ptyManager.flushMirrorSnapshot(taskId);
514
+ }
515
+ },
516
+ };
517
+ }
518
+ //# sourceMappingURL=ws-upgrade-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-upgrade-handler.js","sourceRoot":"","sources":["../../src/terminal/ws-upgrade-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAWH,OAAO,EACL,2BAA2B,EAC3B,eAAe,IAAI,qBAAqB,GACzC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AA8CpD,MAAM,UAAU,WAAW,CAAC,CAAU;IACpC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACpE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AA4CD,8EAA8E;AAC9E,uEAAuE;AACvE,sEAAsE;AACtE,6DAA6D;AAC7D,8EAA8E;AAE9E,MAAM,eAAe,GAAG,CACtB,aAAwC,EACxC,MAAc,EACd,uBAA2C,EACX,EAAE,CAClC,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAExE,oEAAoE;AACpE,MAAM,qBAAqB,GAAG,KAAK,EACjC,GAA8B,EACE,EAAE;IAClC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpE,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,eAAe,CACpB,GAAG,CAAC,aAAa,EACjB,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,uBAAuB,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,oEAAoE;AACpE,+CAA+C;AAC/C,MAAM,kBAAkB,GAAG,CACzB,EAA6B,EAC7B,GAAmB,EACV,EAAE;IACX,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,8EAA8E;AAC9E,iDAAiD;AACjD,8EAA8E;AAE9E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAC7B,GAA8B;IAE9B,MAAM,YAAY,GAChB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC;IAElE,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,mDAAmD;AACnD,8EAA8E;AAE9E,SAAS,uBAAuB,CAC9B,GAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC;IACtF,OAAO;QACL,MAAM,CAAC,IAAI,EAAE,EAAE;YACb,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,eAAe,GAAG,CAAC,CAAC;gBACxB,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;oBACjD,IAAI,CAAC;wBACH,eAAe,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACxD,CAAC;oBAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,CAAC;oBACH,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;wBACb,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,IAAI;wBACf,GAAG,EAAE,UAAU;wBACf,UAAU,EAAE,IAAI;wBAChB,qDAAqD;wBACrD,oDAAoD;wBACpD,gDAAgD;wBAChD,aAAa,EAAE,KAAK;wBACpB,iDAAiD;wBACjD,iDAAiD;wBACjD,SAAS,EAAE,KAAK;wBAChB,eAAe;wBACf,aAAa;wBACb,aAAa,EAAE,iBAAiB;qBACjC,CAAC,CACH,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBACxB,0DAA0D;gBAC1D,yDAAyD;gBACzD,yDAAyD;gBACzD,yDAAyD;gBACzD,sDAAsD;gBACtD,6BAA6B;gBAC7B,MAAM,IAAI,GAAG,MAAM,eAAe,CAChC,GAAG,CAAC,aAAa,EACjB,MAAM,EACN,GAAG,CAAC,uBAAuB,CAC5B,CAAC;gBACF,IAAI,IAAI,EAAE,CAAC;oBACT,kBAAkB,CAChB,EAAyD,EACzD,IAAI,CACL,CAAC;gBACJ,CAAC;gBACD,8CAA8C;gBAC9C,IAAI,CAAC;oBACF,EAAqD,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;gBACvE,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC1B,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,wDAAwD;QACxD,8DAA8D;KAC/D,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,SAAS,iBAAiB,CACxB,GAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC;IAEnG,0DAA0D;IAC1D,6DAA6D;IAC7D,+DAA+D;IAC/D,4DAA4D;IAC5D,MAAM,sBAAsB,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;IACxE,uEAAuE;IACvE,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,cAAc,GAClB,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC7D,+DAA+D;IAC/D,gFAAgF;IAChF,kFAAkF;IAClF,8EAA8E;IAC9E,MAAM,IAAI,GAAkB,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;QACvD,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE;KAC1B,CAAC,CAAC;IACH,6DAA6D;IAC7D,kEAAkE;IAClE,MAAM,aAAa,GAAG,mBAAmB,CACvC,sBAAsB,EACtB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;IAEF,uEAAuE;IACvE,gEAAgE;IAChE,MAAM,SAAS,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAW,CAAC;IAErD;;;;;;;;;OASG;IACH,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,MAAM,QAAQ,GAAG,CAAC,EAA6B,EAAE,IAAY,EAAQ,EAAE;QACrE,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAC3C,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,EAA6B,EAAQ,EAAE;QAC9D,KAAK,MAAM,IAAI,IAAI,UAAU;YAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAClD,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IAEtC;;;;;;;OAOG;IACH,MAAM,aAAa,GAAG,KAAK,EAAE,EAA6B,EAAiB,EAAE;QAC3E,gFAAgF;QAChF,IAAI,UAAU;YAAE,OAAO;QACvB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YAAE,OAAO;QACrC,UAAU,GAAG,IAAI,CAAC;QAClB,UAAU,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC;YACH,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,IAAI;gBAAE,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sCAAsC;YACtC,OAAO,CAAC,IAAI,CACV,gCAAgC,MAAM,KAAM,GAAa,CAAC,OAAO,EAAE,CACpE,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,eAAe,CAAC,EAAE,CAAC,CAAC;YACpB,UAAU,GAAG,IAAI,CAAC;YAClB,UAAU,GAAG,KAAK,CAAC;YACnB,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAChD,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,MAAM,CAAC,IAAI,EAAE,EAAE;YACb,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,+FAA+F;YACrH,0DAA0D;YAC1D,iEAAiE;YACjE,gEAAgE;YAChE,+DAA+D;YAC/D,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAE1E,0DAA0D;YAC1D,2DAA2D;YAC3D,yDAAyD;YACzD,yDAAyD;YACzD,2DAA2D;YAC3D,8CAA8C;YAC9C,2DAA2D;YAC3D,qDAAqD;YACrD,EAAE;YACF,wDAAwD;YACxD,0DAA0D;YAC1D,mDAAmD;YACnD,kDAAkD;YAClD,2DAA2D;YAC3D,0DAA0D;YAC1D,+CAA+C;YAC/C,6CAA6C;YAC7C,IACE,IAAI,CAAC,KAAK,KAAK,yBAAyB;gBACxC,IAAI,CAAC,QAAQ,KAAK,WAAW,EAC7B,CAAC;gBACD,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACzC,qDAAqD;gBACrD,+CAA+C;gBAC/C,oDAAoD;gBACpD,oDAAoD;gBACpD,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC;YAED,qDAAqD;YACrD,gEAAgE;YAChE,+CAA+C;YAC/C,wDAAwD;YACxD,oDAAoD;YACpD,8BAA8B;YAC9B,8DAA8D;YAC9D,yDAAyD;YACzD,qDAAqD;YACrD,+DAA+D;YAC/D,2CAA2C;YAC3C,mBAAmB;YACnB,2EAA2E;YAC3E,mEAAmE;YACnE,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE;gBACvD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACf,IAAI,UAAU;wBAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;;wBAC9B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;gBACD,uEAAuE;gBACvE,yEAAyE;gBACzE,sEAAsE;gBACtE,qEAAqE;gBACrE,6CAA6C;gBAC7C,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;oBACvB,IAAI,CAAC;wBACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC7D,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC1B,CAAC;gBACD,qDAAqD;gBACrD,sDAAsD;gBACtD,iBAAiB,EAAE,GAAG,EAAE;oBACtB,IAAI,CAAC;wBACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;oBACvD,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC1B,CAAC;aACF,CAAC,CAAC;YAEH,yDAAyD;YACzD,qDAAqD;YACrD,uDAAuD;YACvD,wDAAwD;YACxD,sDAAsD;YACtD,yDAAyD;YACzD,qDAAqD;YACrD,IAAI,CAAC;gBACH,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;oBACb,IAAI,EAAE,OAAO;oBACb,IAAI;oBACJ,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,UAAU,EAAE,KAAK;oBACjB,sDAAsD;oBACtD,aAAa;oBACb,sDAAsD;oBACtD,oDAAoD;oBACpD,sDAAsD;oBACtD,oCAAoC;oBACpC,SAAS,EAAE,cAAc;oBACzB,eAAe,EAAE,CAAC;oBAClB,aAAa;oBACb,aAAa,EAAE,iBAAiB;iBACjC,CAAC,CACH,CAAC;gBACF,iDAAiD;gBACjD,wDAAwD;gBACxD,sDAAsD;gBACtD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAExB,0DAA0D;YAC1D,wDAAwD;YACxD,2DAA2D;YAC3D,0DAA0D;YAC1D,0DAA0D;YAC1D,wDAAwD;YACxD,gCAAgC;YAChC,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;oBAC/C,IAAI,eAAe,GAAG,CAAC,CAAC;oBACxB,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;wBACjD,IAAI,CAAC;4BACH,eAAe,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBACxD,CAAC;wBAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;oBACvC,CAAC;oBACD,oDAAoD;oBACpD,oDAAoD;oBACpD,gDAAgD;oBAChD,oDAAoD;oBACpD,IAAI,CAAC;wBACH,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;4BACb,IAAI,EAAE,iBAAiB;4BACvB,eAAe;yBAChB,CAAC,CACH,CAAC;oBACJ,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;oBACxB,8DAA8D;oBAC9D,mEAAmE;oBACnE,oEAAoE;oBACpE,wDAAwD;oBACxD,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClE,IAAI,IAAI,EAAE,CAAC;wBACT,kBAAkB,CAChB,EAAyD,EACzD,IAAI,CACL,CAAC;oBACJ,CAAC;oBACD,eAAe,CAAC,EAAE,CAAC,CAAC;oBACpB,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,sCAAsC;oBACtC,OAAO,CAAC,IAAI,CACV,gCAAgC,MAAM,KAAM,GAAa,CAAC,OAAO,EAAE,CACpE,CAAC;oBACF,eAAe,CAAC,EAAE,CAAC,CAAC;oBACpB,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC;wBAAS,CAAC;oBACT,oEAAoE;oBACpE,2DAA2D;oBAC3D,UAAU,GAAG,KAAK,CAAC;oBACnB,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,SAAS,CAAC,GAAG,EAAE,EAAE;YACf,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;YACD,oEAAoE;YACpE,mEAAmE;YACnE,gEAAgE;YAChE,gEAAgE;YAChE,oEAAoE;YACpE,yEAAyE;YACzE,IACE,MAAM;gBACN,OAAO,MAAM,KAAK,QAAQ;gBACzB,MAA6B,CAAC,IAAI,KAAK,MAAM,EAC9C,CAAC;gBACD,IAAI,CAAC;oBACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC5C,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;gBACD,OAAO;YACT,CAAC;YACD,gFAAgF;YAChF,iFAAiF;YACjF,qFAAqF;YACrF,IACE,MAAM;gBACN,OAAO,MAAM,KAAK,QAAQ;gBACzB,MAA6B,CAAC,IAAI,KAAK,QAAQ,EAChD,CAAC;gBACD,KAAK,aAAa,CAAC,EAAE,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBAAE,OAAO;YACjC,0DAA0D;YAC1D,yDAAyD;YACzD,uDAAuD;YACvD,yDAAyD;YACzD,2DAA2D;YAC3D,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;gBACjD,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,sEAAsE;gBACtE,oEAAoE;gBACpE,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,OAAO;YACL,uDAAuD;YACvD,yDAAyD;YACzD,uDAAuD;YACvD,sDAAsD;YACtD,qDAAqD;YACrD,gDAAgD;YAChD,wDAAwD;YACxD,oDAAoD;YACpD,uDAAuD;YACvD,sDAAsD;YACtD,wCAAwC;YACxC,MAAM,EAAE,oBAAoB,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,cAAc,CAC5D,MAAM,EACN,SAAS,CACV,CAAC;YACF,IAAI,oBAAoB,KAAK,CAAC,EAAE,CAAC;gBAC/B,wDAAwD;gBACxD,uDAAuD;gBACvD,wDAAwD;gBACxD,uDAAuD;gBACvD,qDAAqD;gBACrD,kDAAkD;gBAClD,oBAAoB;gBACpB,KAAK,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,OAAO;YACL,MAAM,EAAE,oBAAoB,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,cAAc,CAC5D,MAAM,EACN,SAAS,CACV,CAAC;YACF,IAAI,oBAAoB,KAAK,CAAC,EAAE,CAAC;gBAC/B,KAAK,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Allowlist regex for `cli_flag` and `cli_flag_map` values. Validated at
3
+ * load time in `validateActionsSchema`. The `@` form is reserved for the
4
+ * positional `@<file>` shipwright-build argument (value_separator: "none").
5
+ *
6
+ * Matches: --foo, --foo-bar, -x, @
7
+ * Rejects: --foo=bar, "; rm -rf /", flags with whitespace, empty string.
8
+ */
9
+ export declare const CLI_FLAG_PATTERN: RegExp;
10
+ /**
11
+ * Allowlist regex for ParamSchema.name (used as object key in POST body).
12
+ */
13
+ export declare const PARAM_NAME_PATTERN: RegExp;
14
+ export type ParamType = "boolean" | "enum" | "string";
15
+ export type ValueSeparator = "space" | "equals" | "none";
16
+ export interface ParamSchema {
17
+ /** Internal key — kebab-case, matches PARAM_NAME_PATTERN. Eindeutig pro Schema-Block. */
18
+ name: string;
19
+ /** UI label shown in the modal. */
20
+ label: string;
21
+ /** Param type controls UI render and resolution rules. */
22
+ type: ParamType;
23
+ /**
24
+ * Single CLI flag emitted when the value is truthy. Mutually exclusive
25
+ * with `cli_flag_map`. Must match CLI_FLAG_PATTERN.
26
+ */
27
+ cli_flag?: string;
28
+ /**
29
+ * Per-enum-value flag map. Used when different enum values map to
30
+ * different flags (e.g. deploy.target: prod -> "--prod"). Map values
31
+ * must match CLI_FLAG_PATTERN; missing keys mean "skip emission" for
32
+ * that enum value (no empty strings allowed).
33
+ */
34
+ cli_flag_map?: Record<string, string>;
35
+ /** Allowed enum values (required when type === "enum"). */
36
+ enum?: string[];
37
+ /**
38
+ * Default value. Server applies this during resolution when the POST
39
+ * body is missing the key OR sends an empty/whitespace value.
40
+ * Validated against type/pattern/enum at load time.
41
+ */
42
+ default?: string | boolean;
43
+ /** UI placeholder for string inputs. */
44
+ placeholder?: string;
45
+ /** Optional helper text rendered under the field. */
46
+ helpText?: string;
47
+ /** How the value is joined to the flag. Default: "space". */
48
+ value_separator?: ValueSeparator;
49
+ /**
50
+ * Regex string used to validate string values. Compiled defensively
51
+ * with try/catch in the loader; malformed patterns reject at load time.
52
+ */
53
+ pattern?: string;
54
+ /**
55
+ * When true: client disables Copy until the value is set; server
56
+ * returns 400 if missing/empty.
57
+ */
58
+ required?: boolean;
59
+ /**
60
+ * Sensitive value (token/password). UI renders password input; preview
61
+ * shows fixed-length mask; server logs redact the value.
62
+ */
63
+ sensitive?: boolean;
64
+ }
65
+ export interface ResolvedParam {
66
+ /** Guaranteed non-empty after resolution. Comes from cli_flag or cli_flag_map[value]. */
67
+ cli_flag: string;
68
+ /** Present for string/enum values; absent for boolean flags. */
69
+ value?: string;
70
+ /** How to join cli_flag and value when rendering. */
71
+ separator: ValueSeparator;
72
+ /** Marker forwarded to logging layers; substituter ignores. */
73
+ sensitive?: boolean;
74
+ }
75
+ //# sourceMappingURL=action-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-schema.d.ts","sourceRoot":"","sources":["../../src/types/action-schema.ts"],"names":[],"mappings":"AAmBA;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,QAA6B,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAsB,CAAC;AAEtD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,IAAI,EAAE,SAAS,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,SAAS,EAAE,cAAc,CAAC;IAC1B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -0,0 +1,32 @@
1
+ /*
2
+ * Action parameter schema (canonical definition).
3
+ *
4
+ * iterate/launch-cli-parameters § 1 — Schema-Modul Layout.
5
+ *
6
+ * Server is the canonical source for ParamSchema/ResolvedParam. The
7
+ * client maintains a structural-subset RenderableParamSchema in
8
+ * client/src/types/action-schema.ts; a sync test prevents drift
9
+ * (client/src/test/action-schema-sync.test.ts).
10
+ *
11
+ * Cross-bundle imports (server -> client) are intentionally avoided:
12
+ * webui has no monorepo root + no path aliasing between workspaces.
13
+ *
14
+ * Security boundary:
15
+ * The cli_flag allowlist regex is the actual injection guard for
16
+ * user-overridable .shipwright-webui/actions.json. Per-shell escaping in
17
+ * actions-substitute.ts is the second layer for user-supplied VALUES.
18
+ */
19
+ /**
20
+ * Allowlist regex for `cli_flag` and `cli_flag_map` values. Validated at
21
+ * load time in `validateActionsSchema`. The `@` form is reserved for the
22
+ * positional `@<file>` shipwright-build argument (value_separator: "none").
23
+ *
24
+ * Matches: --foo, --foo-bar, -x, @
25
+ * Rejects: --foo=bar, "; rm -rf /", flags with whitespace, empty string.
26
+ */
27
+ export const CLI_FLAG_PATTERN = /^(--?[a-z][a-z0-9-]*|@)$/;
28
+ /**
29
+ * Allowlist regex for ParamSchema.name (used as object key in POST body).
30
+ */
31
+ export const PARAM_NAME_PATTERN = /^[a-z][a-z0-9-]*$/;
32
+ //# sourceMappingURL=action-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-schema.js","sourceRoot":"","sources":["../../src/types/action-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC"}