@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,66 @@
1
+ /**
2
+ * Candidate SPEC document locations, in preference order, built from the KNOWN
3
+ * LAYOUT only — never from a pointer- or record-supplied sub-path (§5.1c).
4
+ *
5
+ * Both real layouts are covered: the per-run directory
6
+ * (`…/iterate/<run_id>/mini-plan.md`) and the flat file
7
+ * (`…/iterate/<date-slug>.md`, i.e. the run_id minus its `iterate-` prefix,
8
+ * which is the shape the `spec` field records).
9
+ */
10
+ export declare function specCandidates(runId: string, slug: string | null): string[][];
11
+ /**
12
+ * The `spec` path RECORDED BY THE FRAMEWORK in `iterates/<run_id>.json`,
13
+ * validated into known-layout segments — or null.
14
+ *
15
+ * Why this exists (PROBE, 2026-07-18): measuring the 206 real iterate runs in
16
+ * this repo, the known-layout candidates resolve 82; 105 have genuinely no
17
+ * document left on disk; and **19 have a real spec the candidates MISS** —
18
+ * campaign SUB-ITERATE specs, which live at
19
+ * `.shipwright/planning/iterate/campaigns/<campaign>/sub-iterates/<ID>-<slug>.md`.
20
+ * That is this very campaign's own layout, so without this a campaign
21
+ * sub-iterate would show no Spec artifact at all.
22
+ *
23
+ * This is NOT a relaxation of §5.1. That rule forbids trusting a sub-path from
24
+ * the POINTER — untrusted, out-of-process input. This value comes from the
25
+ * framework's own agent-doc, and it is still fully constrained here:
26
+ * - it must live under `.shipwright/planning/iterate/` (so a recorded
27
+ * `01-adopted/spec.md#FR-01.25` — the whole project spec, which would be
28
+ * misleading as "the plan for this run" — is rejected along with anything
29
+ * outside the iterate tree);
30
+ * - any `#fragment` is dropped;
31
+ * - every segment must pass the strict id grammar (kills `..`, separators,
32
+ * encoded separators and unusual Unicode);
33
+ * - it must end in `.md`;
34
+ * and the caller still runs pathGuard + realPathGuard against the chosen root,
35
+ * which remains the actual security boundary.
36
+ */
37
+ export declare function specHintCandidate(hint: string | null | undefined): string[] | null;
38
+ /**
39
+ * Campaign sub-iterate spec candidates, rebuilt from the NEVER-EVICTED event
40
+ * facts (`campaign` + `sub_iterate_id` on `work_completed`).
41
+ *
42
+ * Why this exists (trg-92c0c36b). `iterates/<run_id>.json` is a bounded 50-entry
43
+ * recency window (`append_iterate_entry` retention), and for a campaign
44
+ * sub-iterate its `spec` hint is the ONLY thing that resolves the Spec artifact
45
+ * — the known-layout candidates cannot name a path they have no campaign slug
46
+ * for. So today a sub-iterate's Spec silently vanishes the moment its agent-doc
47
+ * ages out. PROBE, 2026-07-21, this repo: 214 iterate runs in the event log but
48
+ * only 54 surviving agent-docs (160 evicted, 75%); 14 of the survivors resolve
49
+ * ONLY via the hint, and 28 runs' specs are reachable from the event facts
50
+ * where the known layout misses. Rebuilding from the append-only log makes that
51
+ * resolution survive eviction instead of decaying with it.
52
+ *
53
+ * `spec` itself is NOT read from the event log: measured on the same corpus it
54
+ * is present on 1 of 54 rows, so it is not a substitute source — the campaign
55
+ * slug (55 rows) and sub-iterate id (54 rows) are.
56
+ *
57
+ * Trust model — UNCHANGED from `specHintCandidate`: the two values come from
58
+ * the framework's own event log, contribute exactly TWO path segments, and the
59
+ * layout around them is hard-coded here. Both must pass the strict id grammar
60
+ * (kills `..`, separators, encoded separators, unusual Unicode), the directory
61
+ * read is `pathGuard`ed, only regular files are offered (a symlink is never a
62
+ * candidate), and the caller still runs pathGuard + realPathGuard on whatever
63
+ * it opens — which remains the actual security boundary.
64
+ */
65
+ export declare function campaignSpecCandidates(root: string, campaign: string | null | undefined, subIterateId: string | null | undefined): string[][];
66
+ //# sourceMappingURL=spec-candidates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-candidates.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/spec-candidates.ts"],"names":[],"mappings":"AA8BA;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,EAAE,CAW7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,IAAI,CAgBlF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACtC,MAAM,EAAE,EAAE,CAwCZ"}
@@ -0,0 +1,164 @@
1
+ /*
2
+ * core/mission-context/spec-candidates.ts — every candidate PATH at which a
3
+ * run's spec document may live, in preference order.
4
+ *
5
+ * Three builders, in increasing order of how much they trust their input, and
6
+ * ALL of them emit only known-layout segment arrays — the caller still runs
7
+ * pathGuard + realPathGuard on whatever it opens, which remains the actual
8
+ * security boundary (§5.1):
9
+ *
10
+ * 1. `specCandidates` — pure layout, from run_id + slug alone.
11
+ * 2. `specHintCandidate` — the `spec` path the framework recorded in
12
+ * `iterates/<run_id>.json`, grammar-validated.
13
+ * 3. `campaignSpecCandidates` — a campaign sub-iterate path rebuilt from the
14
+ * never-evicted `work_completed` event, so it
15
+ * survives the agent-doc's 50-entry retention
16
+ * window (trg-92c0c36b).
17
+ *
18
+ * Split out of `iterate-record.ts` when (3) pushed that file past the 300-LOC
19
+ * ceiling; that module keeps the RECORD reads (agent-doc + event lookup), this
20
+ * one owns PATH construction.
21
+ */
22
+ import { readdirSync } from "node:fs";
23
+ import { pathGuard } from "../path-guard.js";
24
+ import { isSafeRunId } from "./pointer.js";
25
+ /** Bounds a pathological sub-iterates directory (CONTRACT §11). */
26
+ const MAX_CAMPAIGN_DIR_ENTRIES = 1000;
27
+ /**
28
+ * Candidate SPEC document locations, in preference order, built from the KNOWN
29
+ * LAYOUT only — never from a pointer- or record-supplied sub-path (§5.1c).
30
+ *
31
+ * Both real layouts are covered: the per-run directory
32
+ * (`…/iterate/<run_id>/mini-plan.md`) and the flat file
33
+ * (`…/iterate/<date-slug>.md`, i.e. the run_id minus its `iterate-` prefix,
34
+ * which is the shape the `spec` field records).
35
+ */
36
+ export function specCandidates(runId, slug) {
37
+ const base = [".shipwright", "planning", "iterate"];
38
+ const dateSlug = runId.startsWith("iterate-") ? runId.slice("iterate-".length) : runId;
39
+ const candidates = [
40
+ [...base, runId, "mini-plan.md"],
41
+ [...base, runId, "adr.md"],
42
+ [...base, `${runId}.md`],
43
+ [...base, `${dateSlug}.md`],
44
+ ];
45
+ if (slug && slug !== dateSlug)
46
+ candidates.push([...base, `${slug}.md`]);
47
+ return candidates;
48
+ }
49
+ /**
50
+ * The `spec` path RECORDED BY THE FRAMEWORK in `iterates/<run_id>.json`,
51
+ * validated into known-layout segments — or null.
52
+ *
53
+ * Why this exists (PROBE, 2026-07-18): measuring the 206 real iterate runs in
54
+ * this repo, the known-layout candidates resolve 82; 105 have genuinely no
55
+ * document left on disk; and **19 have a real spec the candidates MISS** —
56
+ * campaign SUB-ITERATE specs, which live at
57
+ * `.shipwright/planning/iterate/campaigns/<campaign>/sub-iterates/<ID>-<slug>.md`.
58
+ * That is this very campaign's own layout, so without this a campaign
59
+ * sub-iterate would show no Spec artifact at all.
60
+ *
61
+ * This is NOT a relaxation of §5.1. That rule forbids trusting a sub-path from
62
+ * the POINTER — untrusted, out-of-process input. This value comes from the
63
+ * framework's own agent-doc, and it is still fully constrained here:
64
+ * - it must live under `.shipwright/planning/iterate/` (so a recorded
65
+ * `01-adopted/spec.md#FR-01.25` — the whole project spec, which would be
66
+ * misleading as "the plan for this run" — is rejected along with anything
67
+ * outside the iterate tree);
68
+ * - any `#fragment` is dropped;
69
+ * - every segment must pass the strict id grammar (kills `..`, separators,
70
+ * encoded separators and unusual Unicode);
71
+ * - it must end in `.md`;
72
+ * and the caller still runs pathGuard + realPathGuard against the chosen root,
73
+ * which remains the actual security boundary.
74
+ */
75
+ export function specHintCandidate(hint) {
76
+ if (typeof hint !== "string" || hint.length === 0 || hint.length > 512)
77
+ return null;
78
+ const withoutFragment = hint.split("#")[0].trim();
79
+ if (!withoutFragment.toLowerCase().endsWith(".md"))
80
+ return null;
81
+ const parts = withoutFragment.replace(/\\/g, "/").split("/").filter((p) => p.length > 0);
82
+ const prefix = [".shipwright", "planning", "iterate"];
83
+ if (parts.length <= prefix.length)
84
+ return null;
85
+ for (let i = 0; i < prefix.length; i++) {
86
+ if (parts[i] !== prefix[i])
87
+ return null;
88
+ }
89
+ // Every remaining segment must be a safe id (the `.md` leaf included).
90
+ for (const seg of parts.slice(prefix.length)) {
91
+ if (!isSafeRunId(seg))
92
+ return null;
93
+ }
94
+ return parts;
95
+ }
96
+ /**
97
+ * Campaign sub-iterate spec candidates, rebuilt from the NEVER-EVICTED event
98
+ * facts (`campaign` + `sub_iterate_id` on `work_completed`).
99
+ *
100
+ * Why this exists (trg-92c0c36b). `iterates/<run_id>.json` is a bounded 50-entry
101
+ * recency window (`append_iterate_entry` retention), and for a campaign
102
+ * sub-iterate its `spec` hint is the ONLY thing that resolves the Spec artifact
103
+ * — the known-layout candidates cannot name a path they have no campaign slug
104
+ * for. So today a sub-iterate's Spec silently vanishes the moment its agent-doc
105
+ * ages out. PROBE, 2026-07-21, this repo: 214 iterate runs in the event log but
106
+ * only 54 surviving agent-docs (160 evicted, 75%); 14 of the survivors resolve
107
+ * ONLY via the hint, and 28 runs' specs are reachable from the event facts
108
+ * where the known layout misses. Rebuilding from the append-only log makes that
109
+ * resolution survive eviction instead of decaying with it.
110
+ *
111
+ * `spec` itself is NOT read from the event log: measured on the same corpus it
112
+ * is present on 1 of 54 rows, so it is not a substitute source — the campaign
113
+ * slug (55 rows) and sub-iterate id (54 rows) are.
114
+ *
115
+ * Trust model — UNCHANGED from `specHintCandidate`: the two values come from
116
+ * the framework's own event log, contribute exactly TWO path segments, and the
117
+ * layout around them is hard-coded here. Both must pass the strict id grammar
118
+ * (kills `..`, separators, encoded separators, unusual Unicode), the directory
119
+ * read is `pathGuard`ed, only regular files are offered (a symlink is never a
120
+ * candidate), and the caller still runs pathGuard + realPathGuard on whatever
121
+ * it opens — which remains the actual security boundary.
122
+ */
123
+ export function campaignSpecCandidates(root, campaign, subIterateId) {
124
+ if (!isSafeRunId(campaign) || !isSafeRunId(subIterateId))
125
+ return [];
126
+ const rel = [".shipwright", "planning", "iterate", "campaigns", campaign, "sub-iterates"];
127
+ const guard = pathGuard(root, rel.join("/"));
128
+ if (!guard.ok)
129
+ return [];
130
+ let names;
131
+ try {
132
+ names = readdirSync(guard.absolute, { withFileTypes: true })
133
+ // Bounded, so a pathological directory cannot turn a poll into a stall
134
+ // (CONTRACT §11). Real sub-iterate directories hold tens of entries.
135
+ .slice(0, MAX_CAMPAIGN_DIR_ENTRIES)
136
+ // Regular files ONLY — `isFile()` is false for a symlink, so a link is
137
+ // never even offered as a candidate.
138
+ .filter((e) => e.isFile())
139
+ .map((e) => e.name);
140
+ }
141
+ catch {
142
+ // ENOENT / ENOTDIR / EACCES — this run simply has no campaign spec here.
143
+ return [];
144
+ }
145
+ const exact = `${subIterateId.toLowerCase()}.md`;
146
+ // The trailing `-` is load-bearing: without it `W1` would also claim `W10-…`.
147
+ const prefix = `${subIterateId.toLowerCase()}-`;
148
+ return names
149
+ .filter((n) => {
150
+ if (!isSafeRunId(n))
151
+ return false;
152
+ const l = n.toLowerCase();
153
+ return l.endsWith(".md") && (l === exact || l.startsWith(prefix));
154
+ })
155
+ // Deterministic order — an exact `<id>.md` outranks a `<id>-<slug>.md`, then
156
+ // lexicographic. A stable order matters: the caller mints the document id
157
+ // from the candidate it matched.
158
+ .sort((a, b) => {
159
+ const rank = Number(a.toLowerCase() !== exact) - Number(b.toLowerCase() !== exact);
160
+ return rank !== 0 ? rank : a.localeCompare(b);
161
+ })
162
+ .map((n) => [...rel, n]);
163
+ }
164
+ //# sourceMappingURL=spec-candidates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-candidates.js","sourceRoot":"","sources":["../../../src/core/mission-context/spec-candidates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,mEAAmE;AACnE,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,IAAmB;IAC/D,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvF,MAAM,UAAU,GAAe;QAC7B,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC;QAChC,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;QAC1B,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC;QACxB,CAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,KAAK,CAAC;KAC5B,CAAC;IACF,IAAI,IAAI,IAAI,IAAI,KAAK,QAAQ;QAAE,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;IACxE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA+B;IAC/D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IACpF,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhE,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IAC1C,CAAC;IACD,uEAAuE;IACvE,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,QAAmC,EACnC,YAAuC;IAEvC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpE,MAAM,GAAG,GAAG,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IAEzB,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;YAC1D,uEAAuE;YACvE,qEAAqE;aACpE,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC;YACnC,uEAAuE;YACvE,qCAAqC;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC;IACjD,8EAA8E;IAC9E,MAAM,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC;IAEhD,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC;QACF,6EAA6E;QAC7E,0EAA0E;QAC1E,iCAAiC;SAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QACnF,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface TestEvidence {
2
+ status: "available" | "unavailable";
3
+ verifiedBehaviors: string[];
4
+ completeness: {
5
+ tested: number;
6
+ testable: number;
7
+ untestedTestable: number;
8
+ } | null;
9
+ note: string | null;
10
+ }
11
+ /** Read only the immutable F5c snapshot for this exact Mission run. */
12
+ export declare function readTestEvidence(projectRoot: string, runId: string): TestEvidence;
13
+ export declare function testEvidencePath(projectRoot: string, runId: string): string;
14
+ //# sourceMappingURL=test-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-evidence.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/test-evidence.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;IACpC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAID,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAwCjF;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3E"}
@@ -0,0 +1,53 @@
1
+ import { existsSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { readBoundedFile } from "./fs-read.js";
4
+ import { pathGuard } from "../path-guard.js";
5
+ const MAX_BYTES = 1024 * 1024;
6
+ /** Read only the immutable F5c snapshot for this exact Mission run. */
7
+ export function readTestEvidence(projectRoot, runId) {
8
+ const rel = [".shipwright", "agent_docs", "iterates", `${runId}.test-results.json`].join("/");
9
+ const guard = pathGuard(projectRoot, rel);
10
+ if (!guard.ok || !existsSync(guard.absolute)) {
11
+ return { status: "unavailable", verifiedBehaviors: [], completeness: null, note: "The per-run test evidence is not available." };
12
+ }
13
+ const read = readBoundedFile(guard.absolute, MAX_BYTES);
14
+ if (!read)
15
+ return { status: "unavailable", verifiedBehaviors: [], completeness: null, note: "The per-run test evidence could not be read." };
16
+ try {
17
+ const parsed = JSON.parse(read.text);
18
+ const latest = parsed.iterate_latest;
19
+ const completenessRecord = latest?.test_completeness;
20
+ if (latest?.run_id !== runId || !completenessRecord) {
21
+ return { status: "unavailable", verifiedBehaviors: [], completeness: null, note: "The per-run test evidence could not be matched to this Mission." };
22
+ }
23
+ if (completenessRecord.status === "n/a") {
24
+ return { status: "available", verifiedBehaviors: [], completeness: null, note: "This run recorded no testable behaviours." };
25
+ }
26
+ if (completenessRecord.status !== "complete" || !Array.isArray(completenessRecord.behaviors)) {
27
+ return { status: "unavailable", verifiedBehaviors: [], completeness: null, note: "The per-run test evidence is incomplete." };
28
+ }
29
+ const behaviors = completenessRecord.behaviors;
30
+ const isBehavior = (entry) => Boolean(entry) && typeof entry === "object" && typeof entry.behavior === "string" && entry.behavior.trim().length > 0 && (entry.disposition === "tested" || entry.disposition === "untestable");
31
+ if (!behaviors.every(isBehavior)) {
32
+ return { status: "unavailable", verifiedBehaviors: [], completeness: null, note: "The per-run test evidence contains malformed behaviours." };
33
+ }
34
+ const allVerifiedBehaviors = behaviors.filter((entry) => entry.disposition === "tested").map((entry) => entry.behavior);
35
+ const verifiedBehaviors = allVerifiedBehaviors.slice(0, 12);
36
+ const counts = completenessRecord.counts;
37
+ const nonNegativeInteger = (value) => typeof value === "number" && Number.isInteger(value) && value >= 0;
38
+ const completeness = counts && nonNegativeInteger(counts.tested) && nonNegativeInteger(counts.testable) && nonNegativeInteger(counts.untested_testable) && counts.tested <= counts.testable && counts.tested + counts.untested_testable === counts.testable && counts.tested === allVerifiedBehaviors.length
39
+ ? { tested: counts.tested, testable: counts.testable, untestedTestable: counts.untested_testable }
40
+ : null;
41
+ if (!completeness) {
42
+ return { status: "unavailable", verifiedBehaviors: [], completeness: null, note: "The per-run test-completeness counts are inconsistent." };
43
+ }
44
+ return { status: "available", verifiedBehaviors, completeness, note: null };
45
+ }
46
+ catch {
47
+ return { status: "unavailable", verifiedBehaviors: [], completeness: null, note: "The per-run test evidence is malformed." };
48
+ }
49
+ }
50
+ export function testEvidencePath(projectRoot, runId) {
51
+ return path.join(projectRoot, ".shipwright", "agent_docs", "iterates", `${runId}.test-results.json`);
52
+ }
53
+ //# sourceMappingURL=test-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-evidence.js","sourceRoot":"","sources":["../../../src/core/mission-context/test-evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { GitRunner } from "./worktree-roots.js";
2
+ import type { TestChangeKind } from "./types-slice2.js";
3
+ export interface ChangedTestFile {
4
+ /** POSIX-style repo-relative path. Display-safe: inside the repo by definition. */
5
+ path: string;
6
+ kind: TestChangeKind;
7
+ }
8
+ export type TestsDiff = {
9
+ status: "ok";
10
+ files: ChangedTestFile[];
11
+ truncated: boolean;
12
+ } | {
13
+ status: "unavailable";
14
+ reason: "bad_commit" | "git_failed";
15
+ };
16
+ /**
17
+ * Bound what we KEEP. Beyond this the caller reports truncation honestly.
18
+ *
19
+ * CALIBRATED, not guessed (external plan review, HIGH #3). Measured over this
20
+ * repo's last 60 commits: the median commit touches 0 test files, the 95th
21
+ * percentile touches 13, and the two largest — both campaign-scale sweeps, incl.
22
+ * the #289 traceability retrofit that re-tagged every suite — touch 77 and 116.
23
+ * A cap of 50 would therefore have truncated REAL commits, which is why the
24
+ * first guess was wrong. 500 leaves >4x headroom over the largest observed
25
+ * commit while keeping the response bounded (~100 KB worst case), so a
26
+ * paginated endpoint would add an access-controlled surface for a case the
27
+ * history does not contain. Truncation is still REPORTED if it ever happens.
28
+ */
29
+ export declare const MAX_TEST_FILES = 500;
30
+ /**
31
+ * Is this path a test file? Deliberately conservative — a false positive would
32
+ * put a production file in the Tests artifact and misreport the run.
33
+ *
34
+ * Covers this repo's two real conventions: co-located `*.test.ts(x)` (vitest)
35
+ * and `client/e2e/**\/*.spec.ts` (Playwright).
36
+ */
37
+ export declare function isTestFile(p: string): boolean;
38
+ /**
39
+ * Layer for a file the manifest does not know (the `removed` case always lands
40
+ * here — the entry is gone). Returns null rather than guessing when the path
41
+ * carries no signal: an honest unknown beats an invented layer.
42
+ */
43
+ export declare function inferLayer(p: string): string | null;
44
+ /**
45
+ * Parse `git show --name-status -z` output into changed TEST files only.
46
+ *
47
+ * NUL-DELIMITED, not line-based (external plan review, MEDIUM #6). A git path
48
+ * may contain a tab, a quote, a newline or arbitrary Unicode; with `-z` git
49
+ * emits the RAW bytes as `<status>NUL<path>NUL…` and performs no quoting, so
50
+ * splitting on NUL is exact. Line-splitting would mis-parse such a path — and
51
+ * silently, which is the worst way for a test-reporting feature to fail.
52
+ *
53
+ * Exported for direct unit testing: the parser is where the real logic lives,
54
+ * and testing it through a git double would only test the double.
55
+ */
56
+ export declare function parseNameStatus(out: string): {
57
+ files: ChangedTestFile[];
58
+ truncated: boolean;
59
+ };
60
+ /**
61
+ * Which test files this run's commit changed.
62
+ *
63
+ * `unavailable` is returned when git could not answer — NEVER an empty `ok`.
64
+ * Reporting "no tests changed" because git failed is precisely the false
65
+ * negative this feature must not produce.
66
+ */
67
+ export declare function readChangedTestFiles(projectRoot: string, commit: string | null, git: GitRunner): Promise<TestsDiff>;
68
+ //# sourceMappingURL=tests-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tests-diff.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/tests-diff.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,eAAe,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAC9D;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAAA;CAAE,CAAC;AAKnE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,MAAM,CAAC;AAKlC;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAK7C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKnD;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAqC7F;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,GAAG,EAAE,SAAS,GACb,OAAO,CAAC,SAAS,CAAC,CAkBpB"}
@@ -0,0 +1,151 @@
1
+ /*
2
+ * core/mission-context/tests-diff.ts — the Tests BASELINE-DIFF (CONTRACT
3
+ * §10 Slice-2, campaign 2026-07-18-mission-artifacts).
4
+ *
5
+ * The contract asks for "the manifest at iterate start vs. finalize (and/or the
6
+ * git diff of test files)". The WebUI is a read-only OBSERVER (Architecture
7
+ * rule 4, DO-NOT #1) — it is never running when an iterate starts, so it cannot
8
+ * capture a start-of-run snapshot. The git diff of the run's own commit IS the
9
+ * baseline diff, and it is authoritative rather than reconstructed:
10
+ *
11
+ * git show --name-status <commit> → A / M / D per file
12
+ *
13
+ * `D` is exactly the AC2 case — "its manifest entry no longer exists". A removed
14
+ * test cannot be found by inspecting the current manifest (that is the whole
15
+ * point of a removal), so the diff is the ONLY source that can classify it.
16
+ *
17
+ * git runs as an ARGUMENT ARRAY with `shell: false` (never a command string),
18
+ * and the commit is hex-validated BEFORE it becomes an argument, so a recorded
19
+ * sha cannot smuggle a flag (`--upload-pack=…`) or a pathspec.
20
+ */
21
+ /** Bound a pathological commit — a tree-wide rewrite must not be unbounded. */
22
+ const MAX_DIFF_TOKENS = 40_000;
23
+ /**
24
+ * Bound what we KEEP. Beyond this the caller reports truncation honestly.
25
+ *
26
+ * CALIBRATED, not guessed (external plan review, HIGH #3). Measured over this
27
+ * repo's last 60 commits: the median commit touches 0 test files, the 95th
28
+ * percentile touches 13, and the two largest — both campaign-scale sweeps, incl.
29
+ * the #289 traceability retrofit that re-tagged every suite — touch 77 and 116.
30
+ * A cap of 50 would therefore have truncated REAL commits, which is why the
31
+ * first guess was wrong. 500 leaves >4x headroom over the largest observed
32
+ * commit while keeping the response bounded (~100 KB worst case), so a
33
+ * paginated endpoint would add an access-controlled surface for a case the
34
+ * history does not contain. Truncation is still REPORTED if it ever happens.
35
+ */
36
+ export const MAX_TEST_FILES = 500;
37
+ /** A recorded sha is untrusted input until it matches this. */
38
+ const SHA_RE = /^[0-9a-f]{7,40}$/i;
39
+ /**
40
+ * Is this path a test file? Deliberately conservative — a false positive would
41
+ * put a production file in the Tests artifact and misreport the run.
42
+ *
43
+ * Covers this repo's two real conventions: co-located `*.test.ts(x)` (vitest)
44
+ * and `client/e2e/**\/*.spec.ts` (Playwright).
45
+ */
46
+ export function isTestFile(p) {
47
+ const f = p.toLowerCase();
48
+ if (/\.(test|spec)\.(ts|tsx|js|jsx|mts|cts)$/.test(f))
49
+ return true;
50
+ // A helper/fixture inside an e2e tree is part of the test surface too.
51
+ return /(^|\/)e2e\//.test(f) && /\.(ts|tsx)$/.test(f);
52
+ }
53
+ /**
54
+ * Layer for a file the manifest does not know (the `removed` case always lands
55
+ * here — the entry is gone). Returns null rather than guessing when the path
56
+ * carries no signal: an honest unknown beats an invented layer.
57
+ */
58
+ export function inferLayer(p) {
59
+ const f = p.toLowerCase();
60
+ if (/(^|\/)e2e\//.test(f) || /\.spec\.(ts|tsx|js|jsx)$/.test(f))
61
+ return "e2e";
62
+ if (/\.test\.(ts|tsx|js|jsx|mts|cts)$/.test(f))
63
+ return "unit";
64
+ return null;
65
+ }
66
+ function classify(status) {
67
+ const c = status[0]?.toUpperCase();
68
+ if (c === "A")
69
+ return "added";
70
+ if (c === "D")
71
+ return "removed";
72
+ // M (modified), T (type change), and — with `--no-renames` off, defensively —
73
+ // R/C are all "this file changed" from a reader's point of view.
74
+ if (c === "M" || c === "T" || c === "R" || c === "C")
75
+ return "modified";
76
+ return null;
77
+ }
78
+ /**
79
+ * Parse `git show --name-status -z` output into changed TEST files only.
80
+ *
81
+ * NUL-DELIMITED, not line-based (external plan review, MEDIUM #6). A git path
82
+ * may contain a tab, a quote, a newline or arbitrary Unicode; with `-z` git
83
+ * emits the RAW bytes as `<status>NUL<path>NUL…` and performs no quoting, so
84
+ * splitting on NUL is exact. Line-splitting would mis-parse such a path — and
85
+ * silently, which is the worst way for a test-reporting feature to fail.
86
+ *
87
+ * Exported for direct unit testing: the parser is where the real logic lives,
88
+ * and testing it through a git double would only test the double.
89
+ */
90
+ export function parseNameStatus(out) {
91
+ const files = [];
92
+ const seen = new Set();
93
+ const tokens = out.split("\0");
94
+ let truncated = false;
95
+ for (let i = 0; i + 1 < tokens.length; i += 2) {
96
+ if (i >= MAX_DIFF_TOKENS) {
97
+ truncated = true;
98
+ break;
99
+ }
100
+ // Tokens alternate status, path. A stray empty token (trailing NUL) is
101
+ // skipped by re-syncing on the next non-empty status token.
102
+ const status = tokens[i];
103
+ if (!status) {
104
+ i -= 1; // re-align: consume one token instead of two
105
+ continue;
106
+ }
107
+ const kind = classify(status);
108
+ // The token is used VERBATIM. Folding `\` to `/` or trimming would partly
109
+ // undo the `-z` hardening two lines up: git always reports POSIX paths, so
110
+ // a backslash here is a literal character in a legitimate filename, and
111
+ // leading/trailing whitespace is likewise part of the name. Either edit
112
+ // silently breaks the manifest join. (The backslash fold belongs to
113
+ // manifest ids, which may be Windows-shaped — `traceability.ts` does it
114
+ // there, where it is correct.)
115
+ const p = tokens[i + 1];
116
+ if (!kind || !p || !isTestFile(p) || seen.has(p))
117
+ continue;
118
+ if (files.length >= MAX_TEST_FILES) {
119
+ truncated = true;
120
+ break;
121
+ }
122
+ seen.add(p);
123
+ files.push({ path: p, kind });
124
+ }
125
+ return { files, truncated };
126
+ }
127
+ /**
128
+ * Which test files this run's commit changed.
129
+ *
130
+ * `unavailable` is returned when git could not answer — NEVER an empty `ok`.
131
+ * Reporting "no tests changed" because git failed is precisely the false
132
+ * negative this feature must not produce.
133
+ */
134
+ export async function readChangedTestFiles(projectRoot, commit, git) {
135
+ if (!commit || !SHA_RE.test(commit))
136
+ return { status: "unavailable", reason: "bad_commit" };
137
+ let out;
138
+ try {
139
+ out = await git(
140
+ // `-z` — raw NUL-delimited paths, so a path containing a tab/newline/
141
+ // quote cannot be mis-parsed. `--first-parent` keeps a merge commit
142
+ // meaningful instead of silently empty.
143
+ ["show", "--name-status", "--format=", "--no-renames", "--first-parent", "-z", commit, "--"], projectRoot);
144
+ }
145
+ catch {
146
+ // Commit not in this repo (a sibling clone's sha), git missing, timeout.
147
+ return { status: "unavailable", reason: "git_failed" };
148
+ }
149
+ return { status: "ok", ...parseNameStatus(out) };
150
+ }
151
+ //# sourceMappingURL=tests-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tests-diff.js","sourceRoot":"","sources":["../../../src/core/mission-context/tests-diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { TestFrRef } from "./types-slice2.js";
2
+ export declare const TRACEABILITY_REL = ".shipwright/compliance/test-traceability.json";
3
+ /**
4
+ * Cap on indexed test entries. A pathological manifest cannot make this loop
5
+ * (or the resulting Map) unbounded. Real: 1038.
6
+ */
7
+ export declare const MAX_TEST_ENTRIES = 50000;
8
+ export interface TraceabilityFileEntry {
9
+ /** Distinct layers this file's tests are recorded under (`unit`, `e2e`, …). */
10
+ layers: string[];
11
+ /**
12
+ * Distinct requirement links, deduped by `frId`. `mappedFrom` carries the
13
+ * fold provenance — the FOLDED id the source tag named, when the manifest
14
+ * resolved it to a surviving parent (AC2).
15
+ */
16
+ frs: TestFrRef[];
17
+ /** How many individual test cases the manifest records for this file. */
18
+ caseCount: number;
19
+ }
20
+ export type TraceabilityIndex = {
21
+ status: "ok";
22
+ byFile: Map<string, TraceabilityFileEntry>;
23
+ generatedAt: string | null;
24
+ /**
25
+ * The entry cap was hit, so the index is PARTIAL.
26
+ *
27
+ * This must be reported (external code review, MEDIUM): a changed test
28
+ * whose manifest entry fell after the cap would otherwise render with no
29
+ * requirement links while the UI claimed the manifest was fine — a false
30
+ * negative dressed as a clean answer, which is the exact failure this
31
+ * whole slice exists to prevent.
32
+ */
33
+ truncated: boolean;
34
+ } | {
35
+ status: "unavailable";
36
+ reason: "missing" | "too_large" | "corrupt" | "denied";
37
+ };
38
+ /** Absolute path to the manifest — used for `sourceRev` probing. */
39
+ export declare function traceabilityPath(projectRoot: string): string;
40
+ /**
41
+ * A manifest test `id` is `<file path>::<test name>`. Only the FILE half joins
42
+ * against a git diff, so split on the FIRST `::` and normalise separators —
43
+ * git reports POSIX paths, the manifest may carry either.
44
+ */
45
+ export declare function testIdToFile(id: string): string | null;
46
+ /**
47
+ * Read + invert the manifest. Never throws: every defect becomes a typed
48
+ * `unavailable` the caller renders honestly.
49
+ */
50
+ export declare function readTraceabilityIndex(projectRoot: string,
51
+ /**
52
+ * Entry cap. Overridable ONLY so the truncation branch below has a direct
53
+ * test: a 50k-entry fixture would be absurd, and asserting the cap through a
54
+ * hand-built `{truncated: true}` downstream would still pass if this producer
55
+ * never set the flag (internal code review, FIX-IF-CHEAP).
56
+ */
57
+ maxEntries?: number): TraceabilityIndex;
58
+ //# sourceMappingURL=traceability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceability.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/traceability.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,gBAAgB,kDAAkD,CAAC;AAKhF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;OAQG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB,GACD;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEtF,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMtD;AAcD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM;AACnB;;;;;GAKG;AACH,UAAU,GAAE,MAAyB,GACpC,iBAAiB,CAwFnB"}