mstro-app 0.4.2 → 0.4.4

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 (342) hide show
  1. package/bin/mstro.js +119 -40
  2. package/dist/server/cli/headless/claude-invoker-process.d.ts +11 -0
  3. package/dist/server/cli/headless/claude-invoker-process.d.ts.map +1 -0
  4. package/dist/server/cli/headless/claude-invoker-process.js +140 -0
  5. package/dist/server/cli/headless/claude-invoker-process.js.map +1 -0
  6. package/dist/server/cli/headless/claude-invoker-stall.d.ts +40 -0
  7. package/dist/server/cli/headless/claude-invoker-stall.d.ts.map +1 -0
  8. package/dist/server/cli/headless/claude-invoker-stall.js +98 -0
  9. package/dist/server/cli/headless/claude-invoker-stall.js.map +1 -0
  10. package/dist/server/cli/headless/claude-invoker-stream.d.ts +44 -0
  11. package/dist/server/cli/headless/claude-invoker-stream.d.ts.map +1 -0
  12. package/dist/server/cli/headless/claude-invoker-stream.js +276 -0
  13. package/dist/server/cli/headless/claude-invoker-stream.js.map +1 -0
  14. package/dist/server/cli/headless/claude-invoker-tools.d.ts +21 -0
  15. package/dist/server/cli/headless/claude-invoker-tools.d.ts.map +1 -0
  16. package/dist/server/cli/headless/claude-invoker-tools.js +137 -0
  17. package/dist/server/cli/headless/claude-invoker-tools.js.map +1 -0
  18. package/dist/server/cli/headless/claude-invoker.d.ts +6 -4
  19. package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
  20. package/dist/server/cli/headless/claude-invoker.js +10 -804
  21. package/dist/server/cli/headless/claude-invoker.js.map +1 -1
  22. package/dist/server/cli/headless/haiku-assessments.d.ts +62 -0
  23. package/dist/server/cli/headless/haiku-assessments.d.ts.map +1 -0
  24. package/dist/server/cli/headless/haiku-assessments.js +281 -0
  25. package/dist/server/cli/headless/haiku-assessments.js.map +1 -0
  26. package/dist/server/cli/headless/headless-logger.d.ts +3 -2
  27. package/dist/server/cli/headless/headless-logger.d.ts.map +1 -1
  28. package/dist/server/cli/headless/headless-logger.js +28 -5
  29. package/dist/server/cli/headless/headless-logger.js.map +1 -1
  30. package/dist/server/cli/headless/native-timeout-detector.d.ts +44 -0
  31. package/dist/server/cli/headless/native-timeout-detector.d.ts.map +1 -0
  32. package/dist/server/cli/headless/native-timeout-detector.js +99 -0
  33. package/dist/server/cli/headless/native-timeout-detector.js.map +1 -0
  34. package/dist/server/cli/headless/stall-assessor.d.ts +2 -110
  35. package/dist/server/cli/headless/stall-assessor.d.ts.map +1 -1
  36. package/dist/server/cli/headless/stall-assessor.js +65 -457
  37. package/dist/server/cli/headless/stall-assessor.js.map +1 -1
  38. package/dist/server/cli/headless/types.d.ts +4 -1
  39. package/dist/server/cli/headless/types.d.ts.map +1 -1
  40. package/dist/server/cli/improvisation-attachments.d.ts +21 -0
  41. package/dist/server/cli/improvisation-attachments.d.ts.map +1 -0
  42. package/dist/server/cli/improvisation-attachments.js +116 -0
  43. package/dist/server/cli/improvisation-attachments.js.map +1 -0
  44. package/dist/server/cli/improvisation-retry.d.ts +52 -0
  45. package/dist/server/cli/improvisation-retry.d.ts.map +1 -0
  46. package/dist/server/cli/improvisation-retry.js +434 -0
  47. package/dist/server/cli/improvisation-retry.js.map +1 -0
  48. package/dist/server/cli/improvisation-session-manager.d.ts +10 -266
  49. package/dist/server/cli/improvisation-session-manager.d.ts.map +1 -1
  50. package/dist/server/cli/improvisation-session-manager.js +117 -1079
  51. package/dist/server/cli/improvisation-session-manager.js.map +1 -1
  52. package/dist/server/cli/improvisation-types.d.ts +86 -0
  53. package/dist/server/cli/improvisation-types.d.ts.map +1 -0
  54. package/dist/server/cli/improvisation-types.js +10 -0
  55. package/dist/server/cli/improvisation-types.js.map +1 -0
  56. package/dist/server/cli/prompt-builders.d.ts +68 -0
  57. package/dist/server/cli/prompt-builders.d.ts.map +1 -0
  58. package/dist/server/cli/prompt-builders.js +312 -0
  59. package/dist/server/cli/prompt-builders.js.map +1 -0
  60. package/dist/server/index.js +33 -212
  61. package/dist/server/index.js.map +1 -1
  62. package/dist/server/mcp/bouncer-haiku.d.ts +10 -0
  63. package/dist/server/mcp/bouncer-haiku.d.ts.map +1 -0
  64. package/dist/server/mcp/bouncer-haiku.js +152 -0
  65. package/dist/server/mcp/bouncer-haiku.js.map +1 -0
  66. package/dist/server/mcp/bouncer-integration.d.ts +3 -4
  67. package/dist/server/mcp/bouncer-integration.d.ts.map +1 -1
  68. package/dist/server/mcp/bouncer-integration.js +50 -196
  69. package/dist/server/mcp/bouncer-integration.js.map +1 -1
  70. package/dist/server/mcp/security-analysis.d.ts +38 -0
  71. package/dist/server/mcp/security-analysis.d.ts.map +1 -0
  72. package/dist/server/mcp/security-analysis.js +183 -0
  73. package/dist/server/mcp/security-analysis.js.map +1 -0
  74. package/dist/server/mcp/security-audit.d.ts +1 -1
  75. package/dist/server/mcp/security-audit.d.ts.map +1 -1
  76. package/dist/server/mcp/security-patterns.d.ts +1 -25
  77. package/dist/server/mcp/security-patterns.d.ts.map +1 -1
  78. package/dist/server/mcp/security-patterns.js +55 -260
  79. package/dist/server/mcp/security-patterns.js.map +1 -1
  80. package/dist/server/server-setup.d.ts +22 -0
  81. package/dist/server/server-setup.d.ts.map +1 -0
  82. package/dist/server/server-setup.js +101 -0
  83. package/dist/server/server-setup.js.map +1 -0
  84. package/dist/server/services/file-explorer-ops.d.ts +24 -0
  85. package/dist/server/services/file-explorer-ops.d.ts.map +1 -0
  86. package/dist/server/services/file-explorer-ops.js +211 -0
  87. package/dist/server/services/file-explorer-ops.js.map +1 -0
  88. package/dist/server/services/files.d.ts +2 -85
  89. package/dist/server/services/files.d.ts.map +1 -1
  90. package/dist/server/services/files.js +7 -427
  91. package/dist/server/services/files.js.map +1 -1
  92. package/dist/server/services/plan/composer.d.ts +1 -1
  93. package/dist/server/services/plan/composer.d.ts.map +1 -1
  94. package/dist/server/services/plan/composer.js +118 -32
  95. package/dist/server/services/plan/composer.js.map +1 -1
  96. package/dist/server/services/plan/config-installer.d.ts +25 -0
  97. package/dist/server/services/plan/config-installer.d.ts.map +1 -0
  98. package/dist/server/services/plan/config-installer.js +182 -0
  99. package/dist/server/services/plan/config-installer.js.map +1 -0
  100. package/dist/server/services/plan/dependency-resolver.d.ts +1 -1
  101. package/dist/server/services/plan/dependency-resolver.d.ts.map +1 -1
  102. package/dist/server/services/plan/dependency-resolver.js +4 -1
  103. package/dist/server/services/plan/dependency-resolver.js.map +1 -1
  104. package/dist/server/services/plan/executor.d.ts +38 -74
  105. package/dist/server/services/plan/executor.d.ts.map +1 -1
  106. package/dist/server/services/plan/executor.js +274 -460
  107. package/dist/server/services/plan/executor.js.map +1 -1
  108. package/dist/server/services/plan/front-matter.d.ts +18 -0
  109. package/dist/server/services/plan/front-matter.d.ts.map +1 -0
  110. package/dist/server/services/plan/front-matter.js +44 -0
  111. package/dist/server/services/plan/front-matter.js.map +1 -0
  112. package/dist/server/services/plan/output-manager.d.ts +22 -0
  113. package/dist/server/services/plan/output-manager.d.ts.map +1 -0
  114. package/dist/server/services/plan/output-manager.js +97 -0
  115. package/dist/server/services/plan/output-manager.js.map +1 -0
  116. package/dist/server/services/plan/parser-core.d.ts +20 -0
  117. package/dist/server/services/plan/parser-core.d.ts.map +1 -0
  118. package/dist/server/services/plan/parser-core.js +350 -0
  119. package/dist/server/services/plan/parser-core.js.map +1 -0
  120. package/dist/server/services/plan/parser-migration.d.ts +5 -0
  121. package/dist/server/services/plan/parser-migration.d.ts.map +1 -0
  122. package/dist/server/services/plan/parser-migration.js +124 -0
  123. package/dist/server/services/plan/parser-migration.js.map +1 -0
  124. package/dist/server/services/plan/parser.d.ts +11 -3
  125. package/dist/server/services/plan/parser.d.ts.map +1 -1
  126. package/dist/server/services/plan/parser.js +184 -369
  127. package/dist/server/services/plan/parser.js.map +1 -1
  128. package/dist/server/services/plan/prompt-builder.d.ts +17 -0
  129. package/dist/server/services/plan/prompt-builder.d.ts.map +1 -0
  130. package/dist/server/services/plan/prompt-builder.js +137 -0
  131. package/dist/server/services/plan/prompt-builder.js.map +1 -0
  132. package/dist/server/services/plan/review-gate.d.ts +28 -0
  133. package/dist/server/services/plan/review-gate.d.ts.map +1 -0
  134. package/dist/server/services/plan/review-gate.js +191 -0
  135. package/dist/server/services/plan/review-gate.js.map +1 -0
  136. package/dist/server/services/plan/state-reconciler.d.ts +1 -1
  137. package/dist/server/services/plan/state-reconciler.d.ts.map +1 -1
  138. package/dist/server/services/plan/state-reconciler.js +59 -7
  139. package/dist/server/services/plan/state-reconciler.js.map +1 -1
  140. package/dist/server/services/plan/types.d.ts +68 -0
  141. package/dist/server/services/plan/types.d.ts.map +1 -1
  142. package/dist/server/services/platform-credentials.d.ts +24 -0
  143. package/dist/server/services/platform-credentials.d.ts.map +1 -0
  144. package/dist/server/services/platform-credentials.js +68 -0
  145. package/dist/server/services/platform-credentials.js.map +1 -0
  146. package/dist/server/services/platform.d.ts +1 -31
  147. package/dist/server/services/platform.d.ts.map +1 -1
  148. package/dist/server/services/platform.js +11 -109
  149. package/dist/server/services/platform.js.map +1 -1
  150. package/dist/server/services/terminal/pty-manager.d.ts +7 -97
  151. package/dist/server/services/terminal/pty-manager.d.ts.map +1 -1
  152. package/dist/server/services/terminal/pty-manager.js +53 -266
  153. package/dist/server/services/terminal/pty-manager.js.map +1 -1
  154. package/dist/server/services/terminal/pty-utils.d.ts +57 -0
  155. package/dist/server/services/terminal/pty-utils.d.ts.map +1 -0
  156. package/dist/server/services/terminal/pty-utils.js +141 -0
  157. package/dist/server/services/terminal/pty-utils.js.map +1 -0
  158. package/dist/server/services/websocket/file-definition-handlers.d.ts +4 -0
  159. package/dist/server/services/websocket/file-definition-handlers.d.ts.map +1 -0
  160. package/dist/server/services/websocket/file-definition-handlers.js +153 -0
  161. package/dist/server/services/websocket/file-definition-handlers.js.map +1 -0
  162. package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -1
  163. package/dist/server/services/websocket/file-explorer-handlers.js +52 -391
  164. package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -1
  165. package/dist/server/services/websocket/file-search-handlers.d.ts +5 -0
  166. package/dist/server/services/websocket/file-search-handlers.d.ts.map +1 -0
  167. package/dist/server/services/websocket/file-search-handlers.js +238 -0
  168. package/dist/server/services/websocket/file-search-handlers.js.map +1 -0
  169. package/dist/server/services/websocket/file-utils.js +3 -3
  170. package/dist/server/services/websocket/file-utils.js.map +1 -1
  171. package/dist/server/services/websocket/git-branch-handlers.d.ts +7 -0
  172. package/dist/server/services/websocket/git-branch-handlers.d.ts.map +1 -0
  173. package/dist/server/services/websocket/git-branch-handlers.js +110 -0
  174. package/dist/server/services/websocket/git-branch-handlers.js.map +1 -0
  175. package/dist/server/services/websocket/git-diff-handlers.d.ts +6 -0
  176. package/dist/server/services/websocket/git-diff-handlers.d.ts.map +1 -0
  177. package/dist/server/services/websocket/git-diff-handlers.js +123 -0
  178. package/dist/server/services/websocket/git-diff-handlers.js.map +1 -0
  179. package/dist/server/services/websocket/git-handlers.d.ts +2 -31
  180. package/dist/server/services/websocket/git-handlers.d.ts.map +1 -1
  181. package/dist/server/services/websocket/git-handlers.js +35 -541
  182. package/dist/server/services/websocket/git-handlers.js.map +1 -1
  183. package/dist/server/services/websocket/git-log-handlers.d.ts +6 -0
  184. package/dist/server/services/websocket/git-log-handlers.d.ts.map +1 -0
  185. package/dist/server/services/websocket/git-log-handlers.js +128 -0
  186. package/dist/server/services/websocket/git-log-handlers.js.map +1 -0
  187. package/dist/server/services/websocket/git-pr-handlers.d.ts.map +1 -1
  188. package/dist/server/services/websocket/git-pr-handlers.js +13 -53
  189. package/dist/server/services/websocket/git-pr-handlers.js.map +1 -1
  190. package/dist/server/services/websocket/git-tag-handlers.d.ts +6 -0
  191. package/dist/server/services/websocket/git-tag-handlers.d.ts.map +1 -0
  192. package/dist/server/services/websocket/git-tag-handlers.js +76 -0
  193. package/dist/server/services/websocket/git-tag-handlers.js.map +1 -0
  194. package/dist/server/services/websocket/git-utils.d.ts +43 -0
  195. package/dist/server/services/websocket/git-utils.d.ts.map +1 -0
  196. package/dist/server/services/websocket/git-utils.js +201 -0
  197. package/dist/server/services/websocket/git-utils.js.map +1 -0
  198. package/dist/server/services/websocket/handler.d.ts +2 -0
  199. package/dist/server/services/websocket/handler.d.ts.map +1 -1
  200. package/dist/server/services/websocket/handler.js +37 -112
  201. package/dist/server/services/websocket/handler.js.map +1 -1
  202. package/dist/server/services/websocket/plan-board-handlers.d.ts +11 -0
  203. package/dist/server/services/websocket/plan-board-handlers.d.ts.map +1 -0
  204. package/dist/server/services/websocket/plan-board-handlers.js +218 -0
  205. package/dist/server/services/websocket/plan-board-handlers.js.map +1 -0
  206. package/dist/server/services/websocket/plan-execution-handlers.d.ts +9 -0
  207. package/dist/server/services/websocket/plan-execution-handlers.d.ts.map +1 -0
  208. package/dist/server/services/websocket/plan-execution-handlers.js +142 -0
  209. package/dist/server/services/websocket/plan-execution-handlers.js.map +1 -0
  210. package/dist/server/services/websocket/plan-handlers.d.ts +7 -2
  211. package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -1
  212. package/dist/server/services/websocket/plan-handlers.js +21 -462
  213. package/dist/server/services/websocket/plan-handlers.js.map +1 -1
  214. package/dist/server/services/websocket/plan-helpers.d.ts +19 -0
  215. package/dist/server/services/websocket/plan-helpers.d.ts.map +1 -0
  216. package/dist/server/services/websocket/plan-helpers.js +199 -0
  217. package/dist/server/services/websocket/plan-helpers.js.map +1 -0
  218. package/dist/server/services/websocket/plan-issue-handlers.d.ts +12 -0
  219. package/dist/server/services/websocket/plan-issue-handlers.d.ts.map +1 -0
  220. package/dist/server/services/websocket/plan-issue-handlers.js +162 -0
  221. package/dist/server/services/websocket/plan-issue-handlers.js.map +1 -0
  222. package/dist/server/services/websocket/plan-sprint-handlers.d.ts +7 -0
  223. package/dist/server/services/websocket/plan-sprint-handlers.d.ts.map +1 -0
  224. package/dist/server/services/websocket/plan-sprint-handlers.js +206 -0
  225. package/dist/server/services/websocket/plan-sprint-handlers.js.map +1 -0
  226. package/dist/server/services/websocket/quality-complexity.d.ts +14 -0
  227. package/dist/server/services/websocket/quality-complexity.d.ts.map +1 -0
  228. package/dist/server/services/websocket/quality-complexity.js +262 -0
  229. package/dist/server/services/websocket/quality-complexity.js.map +1 -0
  230. package/dist/server/services/websocket/quality-fix-agent.d.ts +16 -0
  231. package/dist/server/services/websocket/quality-fix-agent.d.ts.map +1 -0
  232. package/dist/server/services/websocket/quality-fix-agent.js +140 -0
  233. package/dist/server/services/websocket/quality-fix-agent.js.map +1 -0
  234. package/dist/server/services/websocket/quality-handlers.d.ts.map +1 -1
  235. package/dist/server/services/websocket/quality-handlers.js +34 -346
  236. package/dist/server/services/websocket/quality-handlers.js.map +1 -1
  237. package/dist/server/services/websocket/quality-linting.d.ts +9 -0
  238. package/dist/server/services/websocket/quality-linting.d.ts.map +1 -0
  239. package/dist/server/services/websocket/quality-linting.js +178 -0
  240. package/dist/server/services/websocket/quality-linting.js.map +1 -0
  241. package/dist/server/services/websocket/quality-review-agent.d.ts +19 -0
  242. package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -0
  243. package/dist/server/services/websocket/quality-review-agent.js +206 -0
  244. package/dist/server/services/websocket/quality-review-agent.js.map +1 -0
  245. package/dist/server/services/websocket/quality-service.d.ts +3 -51
  246. package/dist/server/services/websocket/quality-service.d.ts.map +1 -1
  247. package/dist/server/services/websocket/quality-service.js +9 -651
  248. package/dist/server/services/websocket/quality-service.js.map +1 -1
  249. package/dist/server/services/websocket/quality-tools.d.ts +23 -0
  250. package/dist/server/services/websocket/quality-tools.d.ts.map +1 -0
  251. package/dist/server/services/websocket/quality-tools.js +208 -0
  252. package/dist/server/services/websocket/quality-tools.js.map +1 -0
  253. package/dist/server/services/websocket/quality-types.d.ts +59 -0
  254. package/dist/server/services/websocket/quality-types.d.ts.map +1 -0
  255. package/dist/server/services/websocket/quality-types.js +101 -0
  256. package/dist/server/services/websocket/quality-types.js.map +1 -0
  257. package/dist/server/services/websocket/session-handlers.d.ts +3 -4
  258. package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
  259. package/dist/server/services/websocket/session-handlers.js +3 -378
  260. package/dist/server/services/websocket/session-handlers.js.map +1 -1
  261. package/dist/server/services/websocket/session-history.d.ts +4 -0
  262. package/dist/server/services/websocket/session-history.d.ts.map +1 -0
  263. package/dist/server/services/websocket/session-history.js +208 -0
  264. package/dist/server/services/websocket/session-history.js.map +1 -0
  265. package/dist/server/services/websocket/session-initialization.d.ts +5 -0
  266. package/dist/server/services/websocket/session-initialization.d.ts.map +1 -0
  267. package/dist/server/services/websocket/session-initialization.js +163 -0
  268. package/dist/server/services/websocket/session-initialization.js.map +1 -0
  269. package/dist/server/services/websocket/types.d.ts +12 -2
  270. package/dist/server/services/websocket/types.d.ts.map +1 -1
  271. package/package.json +1 -2
  272. package/server/cli/headless/claude-invoker-process.ts +204 -0
  273. package/server/cli/headless/claude-invoker-stall.ts +164 -0
  274. package/server/cli/headless/claude-invoker-stream.ts +353 -0
  275. package/server/cli/headless/claude-invoker-tools.ts +187 -0
  276. package/server/cli/headless/claude-invoker.ts +15 -1092
  277. package/server/cli/headless/haiku-assessments.ts +365 -0
  278. package/server/cli/headless/headless-logger.ts +26 -5
  279. package/server/cli/headless/native-timeout-detector.ts +117 -0
  280. package/server/cli/headless/stall-assessor.ts +65 -618
  281. package/server/cli/headless/types.ts +4 -1
  282. package/server/cli/improvisation-attachments.ts +148 -0
  283. package/server/cli/improvisation-retry.ts +602 -0
  284. package/server/cli/improvisation-session-manager.ts +140 -1349
  285. package/server/cli/improvisation-types.ts +98 -0
  286. package/server/cli/prompt-builders.ts +370 -0
  287. package/server/index.ts +35 -246
  288. package/server/mcp/bouncer-haiku.ts +182 -0
  289. package/server/mcp/bouncer-integration.ts +87 -248
  290. package/server/mcp/security-analysis.ts +217 -0
  291. package/server/mcp/security-audit.ts +1 -1
  292. package/server/mcp/security-patterns.ts +60 -283
  293. package/server/server-setup.ts +114 -0
  294. package/server/services/file-explorer-ops.ts +293 -0
  295. package/server/services/files.ts +20 -532
  296. package/server/services/plan/composer.ts +140 -35
  297. package/server/services/plan/config-installer.ts +187 -0
  298. package/server/services/plan/dependency-resolver.ts +4 -1
  299. package/server/services/plan/executor.ts +281 -488
  300. package/server/services/plan/front-matter.ts +48 -0
  301. package/server/services/plan/output-manager.ts +113 -0
  302. package/server/services/plan/parser-core.ts +406 -0
  303. package/server/services/plan/parser-migration.ts +128 -0
  304. package/server/services/plan/parser.ts +188 -394
  305. package/server/services/plan/prompt-builder.ts +161 -0
  306. package/server/services/plan/review-gate.ts +212 -0
  307. package/server/services/plan/state-reconciler.ts +68 -7
  308. package/server/services/plan/types.ts +101 -1
  309. package/server/services/platform-credentials.ts +83 -0
  310. package/server/services/platform.ts +16 -131
  311. package/server/services/terminal/pty-manager.ts +66 -313
  312. package/server/services/terminal/pty-utils.ts +176 -0
  313. package/server/services/websocket/file-definition-handlers.ts +165 -0
  314. package/server/services/websocket/file-explorer-handlers.ts +37 -452
  315. package/server/services/websocket/file-search-handlers.ts +291 -0
  316. package/server/services/websocket/file-utils.ts +3 -3
  317. package/server/services/websocket/git-branch-handlers.ts +130 -0
  318. package/server/services/websocket/git-diff-handlers.ts +140 -0
  319. package/server/services/websocket/git-handlers.ts +40 -625
  320. package/server/services/websocket/git-log-handlers.ts +149 -0
  321. package/server/services/websocket/git-pr-handlers.ts +17 -62
  322. package/server/services/websocket/git-tag-handlers.ts +91 -0
  323. package/server/services/websocket/git-utils.ts +230 -0
  324. package/server/services/websocket/handler.ts +39 -112
  325. package/server/services/websocket/plan-board-handlers.ts +277 -0
  326. package/server/services/websocket/plan-execution-handlers.ts +184 -0
  327. package/server/services/websocket/plan-handlers.ts +23 -544
  328. package/server/services/websocket/plan-helpers.ts +215 -0
  329. package/server/services/websocket/plan-issue-handlers.ts +204 -0
  330. package/server/services/websocket/plan-sprint-handlers.ts +252 -0
  331. package/server/services/websocket/quality-complexity.ts +294 -0
  332. package/server/services/websocket/quality-fix-agent.ts +181 -0
  333. package/server/services/websocket/quality-handlers.ts +36 -404
  334. package/server/services/websocket/quality-linting.ts +187 -0
  335. package/server/services/websocket/quality-review-agent.ts +246 -0
  336. package/server/services/websocket/quality-service.ts +11 -762
  337. package/server/services/websocket/quality-tools.ts +209 -0
  338. package/server/services/websocket/quality-types.ts +169 -0
  339. package/server/services/websocket/session-handlers.ts +5 -437
  340. package/server/services/websocket/session-history.ts +222 -0
  341. package/server/services/websocket/session-initialization.ts +209 -0
  342. package/server/services/websocket/types.ts +46 -2
@@ -1,181 +1,11 @@
1
1
  // Copyright (c) 2025-present Mstro, Inc. All rights reserved.
2
2
  // Licensed under the MIT License. See LICENSE file for details.
3
- /**
4
- * Plan Handlers WebSocket message handlers for Plan view
5
- *
6
- * Routes plan* messages to the PPS parser and file operations.
7
- * Follows the same pattern as quality-handlers.ts and git-handlers.ts.
8
- */
9
- import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
10
- import { join, resolve } from 'node:path';
11
- import { handlePlanPrompt } from '../plan/composer.js';
12
- import { PlanExecutor } from '../plan/executor.js';
13
- import { getNextId, parsePlanDirectory, parseSingleIssue, parseSingleMilestone, parseSingleSprint, planDirExists, resolvePmDir } from '../plan/parser.js';
14
- import { PlanWatcher } from '../plan/watcher.js';
15
- const watcherCache = new Map();
16
- const executorCache = new Map();
17
- // ============================================================================
18
- // Helpers
19
- // ============================================================================
20
- /** Validate that a user-supplied path resolves within the .pm/ (or legacy .plan/) directory. */
21
- function resolvePlanPath(workingDir, relativePath) {
22
- const pmDir = resolvePmDir(workingDir);
23
- if (!pmDir)
24
- return null;
25
- const resolved = resolve(pmDir, relativePath);
26
- if (!resolved.startsWith(`${pmDir}/`) && resolved !== pmDir)
27
- return null;
28
- return resolved;
29
- }
30
- /** Guard for write operations — returns true if denied. */
31
- function denyIfViewOnly(ctx, ws, permission) {
32
- if (permission === 'view') {
33
- ctx.send(ws, { type: 'planError', data: { error: 'Permission denied' } });
34
- return true;
35
- }
36
- return false;
37
- }
38
- function formatYamlValue(value) {
39
- if (value === null || value === undefined)
40
- return 'null';
41
- if (typeof value === 'boolean')
42
- return String(value);
43
- if (typeof value === 'number')
44
- return String(value);
45
- if (Array.isArray(value)) {
46
- if (value.length === 0)
47
- return '[]';
48
- return `[${value.map(v => typeof v === 'string' ? v : String(v)).join(', ')}]`;
49
- }
50
- return `"${String(value).replace(/"/g, '\\"')}"`;
51
- }
52
- function buildIssueMarkdown(id, title, type, priority, labels, sprint, description) {
53
- const labelsYaml = labels.length > 0 ? `[${labels.join(', ')}]` : '[]';
54
- const today = new Date().toISOString().split('T')[0];
55
- return `---
56
- id: ${id}
57
- title: "${title.replace(/"/g, '\\"')}"
58
- type: ${type}
59
- status: backlog
60
- priority: ${priority}
61
- estimate: null
62
- labels: ${labelsYaml}
63
- epic: null
64
- sprint: ${sprint || 'null'}
65
- milestone: null
66
- assigned: null
67
- created: "${today}"
68
- due: null
69
- blocked_by: []
70
- blocks: []
71
- relates_to: []
72
- ---
73
-
74
- # ${id}: ${title}
75
-
76
- ## Description
77
- ${description}
78
-
79
- ## Acceptance Criteria
80
-
81
- ## Technical Notes
82
-
83
- ## Files to Modify
84
-
85
- ## Activity
86
- `;
87
- }
88
- function buildProjectMarkdown(name) {
89
- const today = new Date().toISOString().split('T')[0];
90
- const projectId = name.toLowerCase().replace(/[^a-z0-9]+/g, '-');
91
- return `---
92
- name: "${name}"
93
- id: ${projectId}
94
- created: "${today}"
95
- status: active
96
- estimation: fibonacci
97
- id_prefixes:
98
- epic: EP
99
- issue: IS
100
- bug: BG
101
- labels: []
102
- ---
103
-
104
- # ${name}
105
-
106
- ## Goals
107
-
108
- ## Teams
109
-
110
- ## Labels
111
-
112
- ## Workflows
113
- | Status | Category | Description |
114
- |---|---|---|
115
- | backlog | unstarted | Accepted, not yet scheduled |
116
- | todo | unstarted | Scheduled for current sprint |
117
- | in_progress | started | Actively being worked on |
118
- | in_review | started | PR open, awaiting review |
119
- | done | completed | Merged and verified |
120
- | cancelled | cancelled | Will not be done |
121
- `;
122
- }
123
- function buildStateMarkdown(name) {
124
- return `---
125
- project: "${name}"
126
- current_sprint: null
127
- active_milestone: null
128
- paused: false
129
- last_session: null
130
- ---
131
-
132
- # Project State
133
-
134
- ## Current Focus
135
-
136
- ## Ready to Work
137
-
138
- ## In Progress
139
-
140
- ## Blocked
141
-
142
- ## Recently Completed
143
-
144
- ## Warnings
145
- `;
146
- }
147
- function getWatcher(workingDir, ctx) {
148
- let watcher = watcherCache.get(workingDir);
149
- if (!watcher) {
150
- watcher = new PlanWatcher(workingDir, ctx);
151
- watcherCache.set(workingDir, watcher);
152
- }
153
- return watcher;
154
- }
155
- function getExecutor(workingDir) {
156
- let executor = executorCache.get(workingDir);
157
- if (!executor) {
158
- executor = new PlanExecutor(workingDir);
159
- executorCache.set(workingDir, executor);
160
- }
161
- return executor;
162
- }
163
- /** Cleanup watchers and executors for a working directory. */
164
- export function cleanupPlanResources(workingDir) {
165
- const watcher = watcherCache.get(workingDir);
166
- if (watcher) {
167
- watcher.stop();
168
- watcherCache.delete(workingDir);
169
- }
170
- const executor = executorCache.get(workingDir);
171
- if (executor) {
172
- executor.stop();
173
- executorCache.delete(workingDir);
174
- }
175
- }
176
- // ============================================================================
177
- // Main dispatcher
178
- // ============================================================================
3
+ import { handleArchiveBoard, handleCreateBoard, handleGetBoard, handleGetBoardArtifacts, handleGetBoardState, handleReorderBoards, handleSetActiveBoard, handleUpdateBoard } from './plan-board-handlers.js';
4
+ import { handleExecute, handleExecuteEpic, handlePause, handlePrompt, handleResume, handleStop } from './plan-execution-handlers.js';
5
+ import { handleCreateIssue, handleDeleteIssue, handleGetIssue, handleGetMilestone, handleGetSprint, handleListIssues, handlePlanInit, handleScaffold, handleUpdateIssue } from './plan-issue-handlers.js';
6
+ import { handleActivateSprint, handleCompleteSprint, handleCreateSprint, handleGetSprintArtifacts } from './plan-sprint-handlers.js';
7
+ // Re-export for backward compatibility
8
+ export { cleanupPlanResources } from './plan-helpers.js';
179
9
  export function handlePlanMessage(ctx, ws, msg, _tabId, workingDir, permission) {
180
10
  const handlers = {
181
11
  planInit: () => handlePlanInit(ctx, ws, workingDir),
@@ -189,11 +19,25 @@ export function handlePlanMessage(ctx, ws, msg, _tabId, workingDir, permission)
189
19
  planDeleteIssue: () => handleDeleteIssue(ctx, ws, msg, workingDir, permission),
190
20
  planScaffold: () => handleScaffold(ctx, ws, msg, workingDir, permission),
191
21
  planPrompt: () => handlePrompt(ctx, ws, msg, workingDir, permission),
192
- planExecute: () => handleExecute(ctx, ws, workingDir, permission),
22
+ planExecute: () => handleExecute(ctx, ws, msg, workingDir, permission),
193
23
  planExecuteEpic: () => handleExecuteEpic(ctx, ws, msg, workingDir, permission),
194
24
  planPause: () => handlePause(ctx, ws, workingDir, permission),
195
25
  planStop: () => handleStop(ctx, ws, workingDir, permission),
196
26
  planResume: () => handleResume(ctx, ws, workingDir, permission),
27
+ // Board lifecycle
28
+ planCreateBoard: () => handleCreateBoard(ctx, ws, msg, workingDir, permission),
29
+ planUpdateBoard: () => handleUpdateBoard(ctx, ws, msg, workingDir, permission),
30
+ planArchiveBoard: () => handleArchiveBoard(ctx, ws, msg, workingDir, permission),
31
+ planGetBoard: () => handleGetBoard(ctx, ws, msg, workingDir),
32
+ planGetBoardState: () => handleGetBoardState(ctx, ws, msg, workingDir),
33
+ planReorderBoards: () => handleReorderBoards(ctx, ws, msg, workingDir, permission),
34
+ planSetActiveBoard: () => handleSetActiveBoard(ctx, ws, msg, workingDir, permission),
35
+ planGetBoardArtifacts: () => handleGetBoardArtifacts(ctx, ws, msg, workingDir),
36
+ // Sprint lifecycle (legacy)
37
+ planCreateSprint: () => handleCreateSprint(ctx, ws, msg, workingDir, permission),
38
+ planActivateSprint: () => handleActivateSprint(ctx, ws, msg, workingDir, permission),
39
+ planCompleteSprint: () => handleCompleteSprint(ctx, ws, msg, workingDir, permission),
40
+ planGetSprintArtifacts: () => handleGetSprintArtifacts(ctx, ws, msg, workingDir),
197
41
  };
198
42
  const handler = handlers[msg.type];
199
43
  if (!handler)
@@ -206,289 +50,4 @@ export function handlePlanMessage(ctx, ws, msg, _tabId, workingDir, permission)
206
50
  ctx.send(ws, { type: 'planError', data: { error: errMsg } });
207
51
  }
208
52
  }
209
- // ============================================================================
210
- // Read-only handlers
211
- // ============================================================================
212
- function handlePlanInit(ctx, ws, workingDir) {
213
- if (!planDirExists(workingDir)) {
214
- ctx.send(ws, { type: 'planNotFound', data: {} });
215
- return;
216
- }
217
- const fullState = parsePlanDirectory(workingDir);
218
- if (!fullState) {
219
- ctx.send(ws, { type: 'planNotFound', data: {} });
220
- return;
221
- }
222
- ctx.send(ws, { type: 'planState', data: fullState });
223
- const watcher = getWatcher(workingDir, ctx);
224
- watcher.start();
225
- }
226
- function handleListIssues(ctx, ws, workingDir) {
227
- const fullState = parsePlanDirectory(workingDir);
228
- if (!fullState) {
229
- ctx.send(ws, { type: 'planNotFound', data: {} });
230
- return;
231
- }
232
- ctx.send(ws, { type: 'planIssueList', data: { issues: fullState.issues } });
233
- }
234
- function handleGetIssue(ctx, ws, msg, workingDir) {
235
- const path = msg.data?.path;
236
- if (!path || !resolvePlanPath(workingDir, path)) {
237
- ctx.send(ws, { type: 'planError', data: { error: 'Invalid issue path' } });
238
- return;
239
- }
240
- const issue = parseSingleIssue(workingDir, path);
241
- if (!issue) {
242
- ctx.send(ws, { type: 'planError', data: { error: `Issue not found: ${path}` } });
243
- return;
244
- }
245
- ctx.send(ws, { type: 'planIssue', data: issue });
246
- }
247
- function handleGetSprint(ctx, ws, msg, workingDir) {
248
- const path = msg.data?.path;
249
- if (!path || !resolvePlanPath(workingDir, path)) {
250
- ctx.send(ws, { type: 'planError', data: { error: 'Invalid sprint path' } });
251
- return;
252
- }
253
- const sprint = parseSingleSprint(workingDir, path);
254
- if (!sprint) {
255
- ctx.send(ws, { type: 'planError', data: { error: `Sprint not found: ${path}` } });
256
- return;
257
- }
258
- ctx.send(ws, { type: 'planSprint', data: sprint });
259
- }
260
- function handleGetMilestone(ctx, ws, msg, workingDir) {
261
- const path = msg.data?.path;
262
- if (!path || !resolvePlanPath(workingDir, path)) {
263
- ctx.send(ws, { type: 'planError', data: { error: 'Invalid milestone path' } });
264
- return;
265
- }
266
- const milestone = parseSingleMilestone(workingDir, path);
267
- if (!milestone) {
268
- ctx.send(ws, { type: 'planError', data: { error: `Milestone not found: ${path}` } });
269
- return;
270
- }
271
- ctx.send(ws, { type: 'planMilestone', data: milestone });
272
- }
273
- // ============================================================================
274
- // Mutation handlers
275
- // ============================================================================
276
- function handleCreateIssue(ctx, ws, msg, workingDir, permission) {
277
- if (denyIfViewOnly(ctx, ws, permission))
278
- return;
279
- const { title, type = 'issue', priority = 'P2', labels = [], sprint, description = '' } = msg.data || {};
280
- if (!title) {
281
- ctx.send(ws, { type: 'planError', data: { error: 'Title required' } });
282
- return;
283
- }
284
- const pmDir = resolvePmDir(workingDir) ?? join(workingDir, '.pm');
285
- const backlogDir = join(pmDir, 'backlog');
286
- if (!existsSync(backlogDir)) {
287
- mkdirSync(backlogDir, { recursive: true });
288
- }
289
- const fullState = parsePlanDirectory(workingDir);
290
- const prefix = type === 'bug' ? 'BG' : type === 'epic' ? 'EP' : 'IS';
291
- const id = fullState ? getNextId(fullState.issues, prefix) : `${prefix}-001`;
292
- const content = buildIssueMarkdown(id, title, type, priority, labels, sprint, description);
293
- const fileName = `${id}.md`;
294
- writeFileSync(join(backlogDir, fileName), content, 'utf-8');
295
- const issue = parseSingleIssue(workingDir, `backlog/${fileName}`);
296
- ctx.broadcastToAll({ type: 'planIssueCreated', data: issue });
297
- }
298
- function handleUpdateIssue(ctx, ws, msg, workingDir, permission) {
299
- if (denyIfViewOnly(ctx, ws, permission))
300
- return;
301
- const { path, fields } = msg.data || {};
302
- if (!path || !fields) {
303
- ctx.send(ws, { type: 'planError', data: { error: 'Path and fields required' } });
304
- return;
305
- }
306
- const fullPath = resolvePlanPath(workingDir, path);
307
- if (!fullPath || !existsSync(fullPath)) {
308
- ctx.send(ws, { type: 'planError', data: { error: `File not found: ${path}` } });
309
- return;
310
- }
311
- const content = readFileSync(fullPath, 'utf-8');
312
- const match = content.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
313
- if (!match) {
314
- ctx.send(ws, { type: 'planError', data: { error: 'Invalid file format' } });
315
- return;
316
- }
317
- let yamlStr = match[1];
318
- const body = match[2];
319
- for (const [key, value] of Object.entries(fields)) {
320
- const yamlKey = key.replace(/([A-Z])/g, '_$1').toLowerCase();
321
- const yamlValue = formatYamlValue(value);
322
- const regex = new RegExp(`^${yamlKey}:.*$`, 'm');
323
- if (regex.test(yamlStr)) {
324
- yamlStr = yamlStr.replace(regex, `${yamlKey}: ${yamlValue}`);
325
- }
326
- else {
327
- yamlStr += `\n${yamlKey}: ${yamlValue}`;
328
- }
329
- }
330
- writeFileSync(fullPath, `---\n${yamlStr}\n---\n${body}`, 'utf-8');
331
- const issue = parseSingleIssue(workingDir, path);
332
- ctx.broadcastToAll({ type: 'planIssueUpdated', data: issue });
333
- }
334
- function handleDeleteIssue(ctx, ws, msg, workingDir, permission) {
335
- if (denyIfViewOnly(ctx, ws, permission))
336
- return;
337
- const path = msg.data?.path;
338
- if (!path) {
339
- ctx.send(ws, { type: 'planError', data: { error: 'Path required' } });
340
- return;
341
- }
342
- const fullPath = resolvePlanPath(workingDir, path);
343
- if (!fullPath || !existsSync(fullPath)) {
344
- ctx.send(ws, { type: 'planError', data: { error: `File not found: ${path}` } });
345
- return;
346
- }
347
- unlinkSync(fullPath);
348
- ctx.broadcastToAll({ type: 'planIssueDeleted', data: { path } });
349
- }
350
- function handleScaffold(ctx, ws, msg, workingDir, permission) {
351
- if (denyIfViewOnly(ctx, ws, permission))
352
- return;
353
- const name = msg.data?.name || 'My Project';
354
- const planDir = join(workingDir, '.pm');
355
- for (const dir of ['backlog', 'sprints', 'milestones', 'docs', 'docs/decisions']) {
356
- mkdirSync(join(planDir, dir), { recursive: true });
357
- }
358
- writeFileSync(join(planDir, 'project.md'), buildProjectMarkdown(name), 'utf-8');
359
- writeFileSync(join(planDir, 'STATE.md'), buildStateMarkdown(name), 'utf-8');
360
- writeFileSync(join(planDir, 'progress.md'), '# Progress Log\n', 'utf-8');
361
- const fullState = parsePlanDirectory(workingDir);
362
- ctx.broadcastToAll({ type: 'planScaffolded', data: fullState });
363
- }
364
- // ============================================================================
365
- // Composer + Execution handlers
366
- // ============================================================================
367
- function handlePrompt(ctx, ws, msg, workingDir, permission) {
368
- if (denyIfViewOnly(ctx, ws, permission))
369
- return;
370
- const prompt = msg.data?.prompt;
371
- if (!prompt) {
372
- ctx.send(ws, { type: 'planError', data: { error: 'Prompt required' } });
373
- return;
374
- }
375
- handlePlanPrompt(ctx, ws, prompt, workingDir).catch(error => {
376
- ctx.send(ws, {
377
- type: 'planError',
378
- data: { error: error instanceof Error ? error.message : String(error) },
379
- });
380
- });
381
- }
382
- function wireExecutorEvents(executor, ctx, workingDir) {
383
- executor.removeAllListeners();
384
- executor.on('statusChanged', (status) => {
385
- ctx.broadcastToAll({ type: 'planExecutionProgress', data: { status } });
386
- });
387
- executor.on('issueStarted', (issue) => {
388
- ctx.broadcastToAll({
389
- type: 'planExecutionProgress',
390
- data: { issueId: issue.id, status: 'executing', title: issue.title },
391
- });
392
- });
393
- executor.on('output', (data) => {
394
- ctx.broadcastToAll({ type: 'planExecutionOutput', data });
395
- });
396
- executor.on('issueCompleted', () => {
397
- ctx.broadcastToAll({ type: 'planExecutionMetrics', data: executor.getMetrics() });
398
- const fullState = parsePlanDirectory(workingDir);
399
- if (fullState) {
400
- ctx.broadcastToAll({ type: 'planStateUpdated', data: fullState });
401
- }
402
- });
403
- executor.on('issueError', (data) => {
404
- ctx.broadcastToAll({ type: 'planExecutionError', data });
405
- });
406
- executor.on('waveStarted', (data) => {
407
- ctx.broadcastToAll({
408
- type: 'planExecutionProgress',
409
- data: { status: 'wave', issueIds: data.issueIds },
410
- });
411
- });
412
- executor.on('waveError', (data) => {
413
- ctx.broadcastToAll({ type: 'planExecutionError', data });
414
- });
415
- executor.on('stateUpdated', () => {
416
- const fullState = parsePlanDirectory(workingDir);
417
- if (fullState) {
418
- ctx.broadcastToAll({ type: 'planStateUpdated', data: fullState });
419
- }
420
- });
421
- executor.on('complete', (reason) => {
422
- ctx.broadcastToAll({ type: 'planExecutionComplete', data: { reason, metrics: executor.getMetrics() } });
423
- });
424
- executor.on('error', (error) => {
425
- ctx.broadcastToAll({ type: 'planExecutionError', data: { error } });
426
- });
427
- }
428
- function handleExecute(ctx, ws, workingDir, permission) {
429
- if (denyIfViewOnly(ctx, ws, permission))
430
- return;
431
- const executor = getExecutor(workingDir);
432
- if (executor.getStatus() === 'executing' || executor.getStatus() === 'starting') {
433
- ctx.send(ws, { type: 'planError', data: { error: 'Execution already in progress' } });
434
- return;
435
- }
436
- wireExecutorEvents(executor, ctx, workingDir);
437
- ctx.send(ws, { type: 'planExecutionStarted', data: { status: 'executing' } });
438
- executor.start().catch(error => {
439
- ctx.send(ws, {
440
- type: 'planExecutionError',
441
- data: { error: error instanceof Error ? error.message : String(error) },
442
- });
443
- });
444
- }
445
- function handleExecuteEpic(ctx, ws, msg, workingDir, permission) {
446
- if (denyIfViewOnly(ctx, ws, permission))
447
- return;
448
- const epicPath = msg.data?.epicPath;
449
- if (!epicPath) {
450
- ctx.send(ws, { type: 'planError', data: { error: 'Epic path required' } });
451
- return;
452
- }
453
- const executor = getExecutor(workingDir);
454
- if (executor.getStatus() === 'executing' || executor.getStatus() === 'starting') {
455
- ctx.send(ws, { type: 'planError', data: { error: 'Execution already in progress' } });
456
- return;
457
- }
458
- wireExecutorEvents(executor, ctx, workingDir);
459
- ctx.send(ws, { type: 'planExecutionStarted', data: { status: 'executing', epicPath } });
460
- executor.startEpic(epicPath).catch(error => {
461
- ctx.send(ws, {
462
- type: 'planExecutionError',
463
- data: { error: error instanceof Error ? error.message : String(error) },
464
- });
465
- });
466
- }
467
- function handlePause(ctx, ws, workingDir, permission) {
468
- if (denyIfViewOnly(ctx, ws, permission))
469
- return;
470
- const executor = executorCache.get(workingDir);
471
- if (executor)
472
- executor.pause();
473
- }
474
- function handleStop(ctx, ws, workingDir, permission) {
475
- if (denyIfViewOnly(ctx, ws, permission))
476
- return;
477
- const executor = executorCache.get(workingDir);
478
- if (executor)
479
- executor.stop();
480
- }
481
- function handleResume(ctx, ws, workingDir, permission) {
482
- if (denyIfViewOnly(ctx, ws, permission))
483
- return;
484
- const executor = executorCache.get(workingDir);
485
- if (executor) {
486
- executor.resume().catch(error => {
487
- ctx.send(ws, {
488
- type: 'planExecutionError',
489
- data: { error: error instanceof Error ? error.message : String(error) },
490
- });
491
- });
492
- }
493
- }
494
53
  //# sourceMappingURL=plan-handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan-handlers.js","sourceRoot":"","sources":["../../../../server/services/websocket/plan-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-handlers.js","sourceRoot":"","sources":["../../../../server/services/websocket/plan-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { PlanExecutor } from '../plan/executor.js';
2
+ import { PlanWatcher } from '../plan/watcher.js';
3
+ import type { HandlerContext } from './handler-context.js';
4
+ import type { WSContext } from './types.js';
5
+ export declare const watcherCache: Map<string, PlanWatcher>;
6
+ export declare const executorCache: Map<string, PlanExecutor>;
7
+ /** Validate that a user-supplied path resolves within the .pm/ (or legacy .plan/) directory. */
8
+ export declare function resolvePlanPath(workingDir: string, relativePath: string): string | null;
9
+ /** Guard for write operations — returns true if denied. */
10
+ export declare function denyIfViewOnly(ctx: HandlerContext, ws: WSContext, permission?: 'control' | 'view'): boolean;
11
+ export declare function formatYamlValue(value: unknown): string;
12
+ export declare function buildIssueMarkdown(id: string, title: string, type: string, priority: string, labels: string[], sprint: string | null, description: string): string;
13
+ export declare function getWatcher(workingDir: string, ctx: HandlerContext): PlanWatcher;
14
+ export declare function getExecutor(workingDir: string): PlanExecutor;
15
+ /** Cleanup watchers and executors for a working directory. */
16
+ export declare function cleanupPlanResources(workingDir: string): void;
17
+ /** Create the .mstro/pm/ directory structure with a default board. */
18
+ export declare function scaffoldPmDirectory(workingDir: string, name: string): void;
19
+ //# sourceMappingURL=plan-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-helpers.d.ts","sourceRoot":"","sources":["../../../../server/services/websocket/plan-helpers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,YAAY,0BAAiC,CAAC;AAC3D,eAAO,MAAM,aAAa,2BAAkC,CAAC;AAE7D,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvF;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAM3G;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAStD;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EACzD,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,GAC3D,MAAM,CAmCR;AA+DD,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,WAAW,CAO/E;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAO5D;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAW7D;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAoC1E"}