@codemcp/workflows 5.3.0 → 6.0.1

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 (451) hide show
  1. package/README.md +91 -0
  2. package/package.json +77 -17
  3. package/packages/cli/dist/chunk-R5U7XKVJ.js +16 -0
  4. package/packages/cli/dist/chunk-RTDQR2KY.js +6718 -0
  5. package/packages/cli/dist/cli-CZ4FMSWR.js +1421 -0
  6. package/packages/cli/dist/dist-KZOA4GL5.js +65 -0
  7. package/packages/cli/dist/dist-UGVUJIDN.js +14475 -0
  8. package/packages/cli/dist/index.js +21 -0
  9. package/packages/cli/package.json +28 -0
  10. package/packages/core/dist/beads-integration.d.ts +50 -0
  11. package/packages/core/dist/beads-integration.js +387 -0
  12. package/packages/core/dist/beads-integration.js.map +1 -0
  13. package/packages/core/dist/beads-state-manager.d.ts +58 -0
  14. package/packages/core/dist/beads-state-manager.js +212 -0
  15. package/packages/core/dist/beads-state-manager.js.map +1 -0
  16. package/packages/core/dist/config-manager.d.ts +24 -0
  17. package/packages/core/dist/config-manager.js +68 -0
  18. package/packages/core/dist/config-manager.js.map +1 -0
  19. package/packages/core/dist/conversation-manager.d.ts +98 -0
  20. package/packages/core/dist/conversation-manager.js +382 -0
  21. package/packages/core/dist/conversation-manager.js.map +1 -0
  22. package/packages/core/dist/file-detection-manager.d.ts +53 -0
  23. package/packages/core/dist/file-detection-manager.js +221 -0
  24. package/packages/core/dist/file-detection-manager.js.map +1 -0
  25. package/packages/core/dist/file-storage.d.ts +93 -0
  26. package/packages/core/dist/file-storage.js +301 -0
  27. package/packages/core/dist/file-storage.js.map +1 -0
  28. package/packages/core/dist/git-manager.d.ts +22 -0
  29. package/packages/core/dist/git-manager.js +123 -0
  30. package/packages/core/dist/git-manager.js.map +1 -0
  31. package/packages/core/dist/index.d.ts +24 -0
  32. package/packages/core/dist/index.js +31 -0
  33. package/packages/core/dist/index.js.map +1 -0
  34. package/packages/core/dist/instruction-generator.d.ts +40 -0
  35. package/packages/core/dist/instruction-generator.js +89 -0
  36. package/packages/core/dist/instruction-generator.js.map +1 -0
  37. package/packages/core/dist/interaction-logger.d.ts +37 -0
  38. package/packages/core/dist/interaction-logger.js +87 -0
  39. package/packages/core/dist/interaction-logger.js.map +1 -0
  40. package/packages/core/dist/interfaces/index.d.ts +9 -0
  41. package/packages/core/dist/interfaces/index.js +10 -0
  42. package/packages/core/dist/interfaces/index.js.map +1 -0
  43. package/packages/core/dist/interfaces/instruction-generator.interface.d.ts +41 -0
  44. package/packages/core/dist/interfaces/instruction-generator.interface.js +8 -0
  45. package/packages/core/dist/interfaces/instruction-generator.interface.js.map +1 -0
  46. package/packages/core/dist/interfaces/plan-manager.interface.d.ts +55 -0
  47. package/packages/core/dist/interfaces/plan-manager.interface.js +8 -0
  48. package/packages/core/dist/interfaces/plan-manager.interface.js.map +1 -0
  49. package/packages/core/dist/interfaces/task-backend-client.interface.d.ts +52 -0
  50. package/packages/core/dist/interfaces/task-backend-client.interface.js +8 -0
  51. package/packages/core/dist/interfaces/task-backend-client.interface.js.map +1 -0
  52. package/packages/core/dist/logger.d.ts +64 -0
  53. package/packages/core/dist/logger.js +283 -0
  54. package/packages/core/dist/logger.js.map +1 -0
  55. package/packages/core/dist/path-validation-utils.d.ts +75 -0
  56. package/packages/core/dist/path-validation-utils.js +238 -0
  57. package/packages/core/dist/path-validation-utils.js.map +1 -0
  58. package/packages/core/dist/persistence-interface.d.ts +91 -0
  59. package/packages/core/dist/persistence-interface.js +9 -0
  60. package/packages/core/dist/persistence-interface.js.map +1 -0
  61. package/{dist/components/beads/beads-plan-manager.d.ts → packages/core/dist/plan-manager.d.ts} +15 -15
  62. package/{dist/components/beads/beads-plan-manager.js → packages/core/dist/plan-manager.js} +66 -50
  63. package/packages/core/dist/plan-manager.js.map +1 -0
  64. package/packages/core/dist/project-docs-manager.d.ts +119 -0
  65. package/packages/core/dist/project-docs-manager.js +366 -0
  66. package/packages/core/dist/project-docs-manager.js.map +1 -0
  67. package/packages/core/dist/state-machine-loader.d.ts +61 -0
  68. package/packages/core/dist/state-machine-loader.js +273 -0
  69. package/packages/core/dist/state-machine-loader.js.map +1 -0
  70. package/packages/core/dist/state-machine-types.d.ts +64 -0
  71. package/packages/core/dist/state-machine-types.js +7 -0
  72. package/packages/core/dist/state-machine-types.js.map +1 -0
  73. package/packages/core/dist/state-machine.d.ts +52 -0
  74. package/packages/core/dist/state-machine.js +256 -0
  75. package/packages/core/dist/state-machine.js.map +1 -0
  76. package/packages/core/dist/system-prompt-generator.d.ts +14 -0
  77. package/packages/core/dist/system-prompt-generator.js +42 -0
  78. package/packages/core/dist/system-prompt-generator.js.map +1 -0
  79. package/packages/core/dist/task-backend.d.ts +45 -0
  80. package/packages/core/dist/task-backend.js +176 -0
  81. package/packages/core/dist/task-backend.js.map +1 -0
  82. package/packages/core/dist/template-manager.d.ts +61 -0
  83. package/packages/core/dist/template-manager.js +231 -0
  84. package/packages/core/dist/template-manager.js.map +1 -0
  85. package/packages/core/dist/transition-engine.d.ts +77 -0
  86. package/packages/core/dist/transition-engine.js +244 -0
  87. package/packages/core/dist/transition-engine.js.map +1 -0
  88. package/packages/core/dist/types.d.ts +54 -0
  89. package/packages/core/dist/types.js +5 -0
  90. package/packages/core/dist/workflow-manager.d.ts +89 -0
  91. package/packages/core/dist/workflow-manager.js +468 -0
  92. package/packages/core/dist/workflow-manager.js.map +1 -0
  93. package/packages/core/package.json +33 -0
  94. package/packages/docs/.vitepress/dist/.gitignore +2 -0
  95. package/packages/docs/.vitepress/dist/404.html +23 -0
  96. package/packages/docs/.vitepress/dist/assets/app.Dz3lZH3M.js +1 -0
  97. package/packages/docs/.vitepress/dist/assets/chunks/framework.DZS7lpav.js +19 -0
  98. package/packages/docs/.vitepress/dist/assets/chunks/theme.q5Ewb3F1.js +206 -0
  99. package/packages/docs/.vitepress/dist/assets/dev_ARCHITECTURE.md.da_vFDwM.js +130 -0
  100. package/packages/docs/.vitepress/dist/assets/dev_ARCHITECTURE.md.da_vFDwM.lean.js +1 -0
  101. package/packages/docs/.vitepress/dist/assets/dev_DEVELOPMENT.md.DWl9cccE.js +72 -0
  102. package/packages/docs/.vitepress/dist/assets/dev_DEVELOPMENT.md.DWl9cccE.lean.js +1 -0
  103. package/packages/docs/.vitepress/dist/assets/dev_LOGGING.md.BebvbW7z.js +34 -0
  104. package/packages/docs/.vitepress/dist/assets/dev_LOGGING.md.BebvbW7z.lean.js +1 -0
  105. package/packages/docs/.vitepress/dist/assets/dev_PUBLISHING.md.CQqbiIOF.js +1 -0
  106. package/packages/docs/.vitepress/dist/assets/dev_PUBLISHING.md.CQqbiIOF.lean.js +1 -0
  107. package/packages/docs/.vitepress/dist/assets/index.md.D6ROLohf.js +2 -0
  108. package/packages/docs/.vitepress/dist/assets/index.md.D6ROLohf.lean.js +1 -0
  109. package/packages/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  110. package/packages/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  111. package/packages/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  112. package/packages/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  113. package/packages/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  114. package/packages/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  115. package/packages/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  116. package/packages/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  117. package/packages/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  118. package/packages/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  119. package/packages/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  120. package/packages/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  121. package/packages/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  122. package/packages/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  123. package/packages/docs/.vitepress/dist/assets/mcp-interaction-pattern.VdvOPuTt.png +0 -0
  124. package/packages/docs/.vitepress/dist/assets/placeholder-demo-greenfield.B8lG_tBI.png +0 -0
  125. package/packages/docs/.vitepress/dist/assets/style.CAgdBzOq.css +1 -0
  126. package/packages/docs/.vitepress/dist/assets/user_advanced-engineering.md.MkETYNtq.js +50 -0
  127. package/packages/docs/.vitepress/dist/assets/user_advanced-engineering.md.MkETYNtq.lean.js +1 -0
  128. package/packages/docs/.vitepress/dist/assets/user_agent-setup.md.B54OLL2H.js +24 -0
  129. package/packages/docs/.vitepress/dist/assets/user_agent-setup.md.B54OLL2H.lean.js +1 -0
  130. package/packages/docs/.vitepress/dist/assets/user_beads-integration.md.BzdR5Fif.js +15 -0
  131. package/packages/docs/.vitepress/dist/assets/user_beads-integration.md.BzdR5Fif.lean.js +1 -0
  132. package/packages/docs/.vitepress/dist/assets/user_crowd-mcp-integration.md.C15kSdIJ.js +157 -0
  133. package/packages/docs/.vitepress/dist/assets/user_crowd-mcp-integration.md.C15kSdIJ.lean.js +1 -0
  134. package/packages/docs/.vitepress/dist/assets/user_custom-workflows.md.Cz4IYCXa.js +143 -0
  135. package/packages/docs/.vitepress/dist/assets/user_custom-workflows.md.Cz4IYCXa.lean.js +1 -0
  136. package/packages/docs/.vitepress/dist/assets/user_git-commit-feature.md.UcTvDR-O.js +1 -0
  137. package/packages/docs/.vitepress/dist/assets/user_git-commit-feature.md.UcTvDR-O.lean.js +1 -0
  138. package/packages/docs/.vitepress/dist/assets/user_how-it-works.md.DiOXNgaL.js +23 -0
  139. package/packages/docs/.vitepress/dist/assets/user_how-it-works.md.DiOXNgaL.lean.js +1 -0
  140. package/packages/docs/.vitepress/dist/assets/user_long-term-memory.md.DZh0tjNa.js +43 -0
  141. package/packages/docs/.vitepress/dist/assets/user_long-term-memory.md.DZh0tjNa.lean.js +1 -0
  142. package/packages/docs/.vitepress/dist/assets/user_packaged-workflows.md.s1HT89ZU.js +2 -0
  143. package/packages/docs/.vitepress/dist/assets/user_packaged-workflows.md.s1HT89ZU.lean.js +1 -0
  144. package/packages/docs/.vitepress/dist/assets/user_tutorial.md.Dmj8zLB2.js +3 -0
  145. package/packages/docs/.vitepress/dist/assets/user_tutorial.md.Dmj8zLB2.lean.js +1 -0
  146. package/packages/docs/.vitepress/dist/assets/user_workflow-selection.md.CrPGw9Hr.js +7 -0
  147. package/packages/docs/.vitepress/dist/assets/user_workflow-selection.md.CrPGw9Hr.lean.js +1 -0
  148. package/packages/docs/.vitepress/dist/assets/workflows.md.Bm5sGt3u.js +1 -0
  149. package/packages/docs/.vitepress/dist/assets/workflows.md.Bm5sGt3u.lean.js +1 -0
  150. package/packages/docs/.vitepress/dist/assets/workflows_adr.md.DEaXkbRp.js +1 -0
  151. package/packages/docs/.vitepress/dist/assets/workflows_adr.md.DEaXkbRp.lean.js +1 -0
  152. package/packages/docs/.vitepress/dist/assets/workflows_big-bang-conversion.md.BA5R1LxZ.js +1 -0
  153. package/packages/docs/.vitepress/dist/assets/workflows_big-bang-conversion.md.BA5R1LxZ.lean.js +1 -0
  154. package/packages/docs/.vitepress/dist/assets/workflows_boundary-testing.md.DBcYnMhx.js +1 -0
  155. package/packages/docs/.vitepress/dist/assets/workflows_boundary-testing.md.DBcYnMhx.lean.js +1 -0
  156. package/packages/docs/.vitepress/dist/assets/workflows_bugfix.md.CZRCL0Hp.js +1 -0
  157. package/packages/docs/.vitepress/dist/assets/workflows_bugfix.md.CZRCL0Hp.lean.js +1 -0
  158. package/packages/docs/.vitepress/dist/assets/workflows_business-analysis.md.fGLml8Hw.js +1 -0
  159. package/packages/docs/.vitepress/dist/assets/workflows_business-analysis.md.fGLml8Hw.lean.js +1 -0
  160. package/packages/docs/.vitepress/dist/assets/workflows_c4-analysis.md.Dnssqzuf.js +1 -0
  161. package/packages/docs/.vitepress/dist/assets/workflows_c4-analysis.md.Dnssqzuf.lean.js +1 -0
  162. package/packages/docs/.vitepress/dist/assets/workflows_epcc.md.M6DnIhpp.js +1 -0
  163. package/packages/docs/.vitepress/dist/assets/workflows_epcc.md.M6DnIhpp.lean.js +1 -0
  164. package/packages/docs/.vitepress/dist/assets/workflows_game-beginner.md.CNxzWLtd.js +1 -0
  165. package/packages/docs/.vitepress/dist/assets/workflows_game-beginner.md.CNxzWLtd.lean.js +1 -0
  166. package/packages/docs/.vitepress/dist/assets/workflows_greenfield.md.vx_g-WOe.js +1 -0
  167. package/packages/docs/.vitepress/dist/assets/workflows_greenfield.md.vx_g-WOe.lean.js +1 -0
  168. package/packages/docs/.vitepress/dist/assets/workflows_minor.md.DdnfwMf4.js +1 -0
  169. package/packages/docs/.vitepress/dist/assets/workflows_minor.md.DdnfwMf4.lean.js +1 -0
  170. package/packages/docs/.vitepress/dist/assets/workflows_posts.md.SOldXvq7.js +1 -0
  171. package/packages/docs/.vitepress/dist/assets/workflows_posts.md.SOldXvq7.lean.js +1 -0
  172. package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix-crowd.md.-lSf42gJ.js +1 -0
  173. package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix-crowd.md.-lSf42gJ.lean.js +1 -0
  174. package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix.md.oRAsEVbc.js +1 -0
  175. package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix.md.oRAsEVbc.lean.js +1 -0
  176. package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature-crowd.md.DAtnfCAd.js +1 -0
  177. package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature-crowd.md.DAtnfCAd.lean.js +1 -0
  178. package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature.md.Ce3-H_g3.js +1 -0
  179. package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature.md.Ce3-H_g3.lean.js +1 -0
  180. package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield-crowd.md.8DUvcmLe.js +1 -0
  181. package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield-crowd.md.8DUvcmLe.lean.js +1 -0
  182. package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield.md.eEN6U0J4.js +1 -0
  183. package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield.md.eEN6U0J4.lean.js +1 -0
  184. package/packages/docs/.vitepress/dist/assets/workflows_slides.md.Cqt-19_1.js +1 -0
  185. package/packages/docs/.vitepress/dist/assets/workflows_slides.md.Cqt-19_1.lean.js +1 -0
  186. package/packages/docs/.vitepress/dist/assets/workflows_tdd.md.BjVC69tu.js +1 -0
  187. package/packages/docs/.vitepress/dist/assets/workflows_tdd.md.BjVC69tu.lean.js +1 -0
  188. package/packages/docs/.vitepress/dist/assets/workflows_waterfall.md.CL6jTZP9.js +1 -0
  189. package/packages/docs/.vitepress/dist/assets/workflows_waterfall.md.CL6jTZP9.lean.js +1 -0
  190. package/packages/docs/.vitepress/dist/dev/ARCHITECTURE.html +155 -0
  191. package/packages/docs/.vitepress/dist/dev/DEVELOPMENT.html +97 -0
  192. package/packages/docs/.vitepress/dist/dev/LOGGING.html +59 -0
  193. package/packages/docs/.vitepress/dist/dev/PUBLISHING.html +30 -0
  194. package/packages/docs/.vitepress/dist/hashmap.json +1 -0
  195. package/packages/docs/.vitepress/dist/index.html +27 -0
  196. package/packages/docs/.vitepress/dist/user/advanced-engineering.html +75 -0
  197. package/packages/docs/.vitepress/dist/user/agent-setup.html +49 -0
  198. package/packages/docs/.vitepress/dist/user/beads-integration.html +40 -0
  199. package/packages/docs/.vitepress/dist/user/crowd-mcp-integration.html +182 -0
  200. package/packages/docs/.vitepress/dist/user/custom-workflows.html +168 -0
  201. package/packages/docs/.vitepress/dist/user/git-commit-feature.html +30 -0
  202. package/packages/docs/.vitepress/dist/user/how-it-works.html +48 -0
  203. package/packages/docs/.vitepress/dist/user/long-term-memory.html +68 -0
  204. package/packages/docs/.vitepress/dist/user/packaged-workflows.html +27 -0
  205. package/packages/docs/.vitepress/dist/user/tutorial.html +28 -0
  206. package/packages/docs/.vitepress/dist/user/workflow-selection.html +32 -0
  207. package/packages/docs/.vitepress/dist/vp-icons.css +0 -0
  208. package/packages/docs/.vitepress/dist/workflows/adr.html +26 -0
  209. package/packages/docs/.vitepress/dist/workflows/adr.yaml +157 -0
  210. package/packages/docs/.vitepress/dist/workflows/big-bang-conversion.html +26 -0
  211. package/packages/docs/.vitepress/dist/workflows/big-bang-conversion.yaml +592 -0
  212. package/packages/docs/.vitepress/dist/workflows/boundary-testing.html +26 -0
  213. package/packages/docs/.vitepress/dist/workflows/boundary-testing.yaml +376 -0
  214. package/packages/docs/.vitepress/dist/workflows/bugfix.html +26 -0
  215. package/packages/docs/.vitepress/dist/workflows/bugfix.yaml +177 -0
  216. package/packages/docs/.vitepress/dist/workflows/business-analysis.html +26 -0
  217. package/packages/docs/.vitepress/dist/workflows/business-analysis.yaml +597 -0
  218. package/packages/docs/.vitepress/dist/workflows/c4-analysis.html +26 -0
  219. package/packages/docs/.vitepress/dist/workflows/c4-analysis.yaml +471 -0
  220. package/packages/docs/.vitepress/dist/workflows/epcc.html +26 -0
  221. package/packages/docs/.vitepress/dist/workflows/epcc.yaml +183 -0
  222. package/packages/docs/.vitepress/dist/workflows/game-beginner.html +26 -0
  223. package/packages/docs/.vitepress/dist/workflows/game-beginner.yaml +434 -0
  224. package/packages/docs/.vitepress/dist/workflows/greenfield.html +26 -0
  225. package/packages/docs/.vitepress/dist/workflows/greenfield.yaml +201 -0
  226. package/packages/docs/.vitepress/dist/workflows/minor.html +26 -0
  227. package/packages/docs/.vitepress/dist/workflows/minor.yaml +138 -0
  228. package/packages/docs/.vitepress/dist/workflows/posts.html +26 -0
  229. package/packages/docs/.vitepress/dist/workflows/posts.yaml +193 -0
  230. package/packages/docs/.vitepress/dist/workflows/sdd-bugfix-crowd.html +26 -0
  231. package/packages/docs/.vitepress/dist/workflows/sdd-bugfix-crowd.yaml +608 -0
  232. package/packages/docs/.vitepress/dist/workflows/sdd-bugfix.html +26 -0
  233. package/packages/docs/.vitepress/dist/workflows/sdd-bugfix.yaml +381 -0
  234. package/packages/docs/.vitepress/dist/workflows/sdd-feature-crowd.html +26 -0
  235. package/packages/docs/.vitepress/dist/workflows/sdd-feature-crowd.yaml +713 -0
  236. package/packages/docs/.vitepress/dist/workflows/sdd-feature.html +26 -0
  237. package/packages/docs/.vitepress/dist/workflows/sdd-feature.yaml +471 -0
  238. package/packages/docs/.vitepress/dist/workflows/sdd-greenfield-crowd.html +26 -0
  239. package/packages/docs/.vitepress/dist/workflows/sdd-greenfield-crowd.yaml +336 -0
  240. package/packages/docs/.vitepress/dist/workflows/sdd-greenfield.html +26 -0
  241. package/packages/docs/.vitepress/dist/workflows/sdd-greenfield.yaml +463 -0
  242. package/packages/docs/.vitepress/dist/workflows/slides.html +26 -0
  243. package/packages/docs/.vitepress/dist/workflows/slides.yaml +237 -0
  244. package/packages/docs/.vitepress/dist/workflows/tdd.html +26 -0
  245. package/packages/docs/.vitepress/dist/workflows/tdd.yaml +160 -0
  246. package/packages/docs/.vitepress/dist/workflows/waterfall.html +26 -0
  247. package/packages/docs/.vitepress/dist/workflows/waterfall.yaml +209 -0
  248. package/packages/docs/.vitepress/dist/workflows.html +26 -0
  249. package/packages/docs/package.json +32 -0
  250. package/packages/mcp-server/dist/index.js +10546 -0
  251. package/packages/mcp-server/package.json +41 -0
  252. package/packages/visualizer/dist/WorkflowVisualizer.vue +1147 -0
  253. package/packages/visualizer/dist/index.ts +17 -0
  254. package/packages/visualizer/dist/main.ts +673 -0
  255. package/packages/visualizer/dist/services/BundledWorkflows.ts +35 -0
  256. package/packages/visualizer/dist/services/FileUploadHandler.ts +166 -0
  257. package/packages/visualizer/dist/services/WorkflowLoader.ts +198 -0
  258. package/packages/visualizer/dist/services/YamlParser.ts +248 -0
  259. package/packages/visualizer/dist/services/workflow-list.ts +23 -0
  260. package/packages/visualizer/dist/types/ui-types.ts +84 -0
  261. package/packages/visualizer/dist/types/visualization-types.ts +95 -0
  262. package/packages/visualizer/dist/types/vite-env.d.ts +12 -0
  263. package/packages/visualizer/dist/utils/DomHelpers.ts +206 -0
  264. package/packages/visualizer/dist/utils/ErrorHandler.ts +170 -0
  265. package/packages/visualizer/dist/utils/PlantUMLEncoder.ts +121 -0
  266. package/packages/visualizer/dist/visualization/DiagramRenderer.ts +430 -0
  267. package/packages/visualizer/dist/visualization/LayoutEngine.ts +339 -0
  268. package/packages/visualizer/dist/visualization/PlantUMLRenderer.ts +507 -0
  269. package/packages/visualizer/dist/visualization/StateRenderer.ts +339 -0
  270. package/packages/visualizer/dist/visualization/TransitionRenderer.ts +432 -0
  271. package/packages/visualizer/package.json +39 -0
  272. package/resources/.DS_Store +0 -0
  273. package/resources/agents/architect.yaml +61 -0
  274. package/resources/agents/business-analyst.yaml +60 -0
  275. package/resources/agents/developer.yaml +61 -0
  276. package/resources/state-machine-schema.json +114 -0
  277. package/resources/templates/architecture/arc42/arc42-template-EN.md +1077 -0
  278. package/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio-2023.png +0 -0
  279. package/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio.png +0 -0
  280. package/resources/templates/architecture/arc42/images/05_building_blocks-EN.png +0 -0
  281. package/resources/templates/architecture/arc42/images/08-concepts-EN.drawio.png +0 -0
  282. package/resources/templates/architecture/arc42/images/arc42-logo.png +0 -0
  283. package/resources/templates/architecture/c4.md +224 -0
  284. package/resources/templates/architecture/freestyle.md +53 -0
  285. package/resources/templates/architecture/game.md +250 -0
  286. package/resources/templates/architecture/none.md +17 -0
  287. package/resources/templates/design/comprehensive.md +207 -0
  288. package/resources/templates/design/freestyle.md +37 -0
  289. package/resources/templates/design/game.md +66 -0
  290. package/resources/templates/design/none.md +17 -0
  291. package/resources/templates/requirements/ears.md +90 -0
  292. package/resources/templates/requirements/freestyle.md +42 -0
  293. package/resources/templates/requirements/game.md +162 -0
  294. package/resources/templates/requirements/none.md +17 -0
  295. package/resources/templates/skills/POWER.md +23 -0
  296. package/resources/templates/skills/SKILL.md +19 -0
  297. package/resources/workflows/adr.yaml +157 -0
  298. package/resources/workflows/big-bang-conversion.yaml +592 -0
  299. package/resources/workflows/boundary-testing.yaml +376 -0
  300. package/resources/workflows/bugfix.yaml +177 -0
  301. package/resources/workflows/business-analysis.yaml +597 -0
  302. package/resources/workflows/c4-analysis.yaml +471 -0
  303. package/resources/workflows/epcc.yaml +183 -0
  304. package/resources/workflows/game-beginner.yaml +434 -0
  305. package/resources/workflows/greenfield.yaml +201 -0
  306. package/resources/workflows/minor.yaml +138 -0
  307. package/resources/workflows/posts.yaml +193 -0
  308. package/resources/workflows/sdd-bugfix-crowd.yaml +608 -0
  309. package/resources/workflows/sdd-bugfix.yaml +381 -0
  310. package/resources/workflows/sdd-feature-crowd.yaml +713 -0
  311. package/resources/workflows/sdd-feature.yaml +471 -0
  312. package/resources/workflows/sdd-greenfield-crowd.yaml +336 -0
  313. package/resources/workflows/sdd-greenfield.yaml +463 -0
  314. package/resources/workflows/slides.yaml +237 -0
  315. package/resources/workflows/tdd.yaml +160 -0
  316. package/resources/workflows/waterfall.yaml +209 -0
  317. package/dist/components/beads/beads-instruction-generator.d.ts +0 -44
  318. package/dist/components/beads/beads-instruction-generator.d.ts.map +0 -1
  319. package/dist/components/beads/beads-instruction-generator.js +0 -160
  320. package/dist/components/beads/beads-instruction-generator.js.map +0 -1
  321. package/dist/components/beads/beads-plan-manager.d.ts.map +0 -1
  322. package/dist/components/beads/beads-plan-manager.js.map +0 -1
  323. package/dist/components/beads/beads-task-backend-client.d.ts +0 -43
  324. package/dist/components/beads/beads-task-backend-client.d.ts.map +0 -1
  325. package/dist/components/beads/beads-task-backend-client.js +0 -175
  326. package/dist/components/beads/beads-task-backend-client.js.map +0 -1
  327. package/dist/index.d.ts +0 -9
  328. package/dist/index.d.ts.map +0 -1
  329. package/dist/index.js +0 -74
  330. package/dist/index.js.map +0 -1
  331. package/dist/notification-service.d.ts +0 -14
  332. package/dist/notification-service.d.ts.map +0 -1
  333. package/dist/notification-service.js +0 -18
  334. package/dist/notification-service.js.map +0 -1
  335. package/dist/plugin-system/beads-plugin.d.ts +0 -71
  336. package/dist/plugin-system/beads-plugin.d.ts.map +0 -1
  337. package/dist/plugin-system/beads-plugin.js +0 -465
  338. package/dist/plugin-system/beads-plugin.js.map +0 -1
  339. package/dist/plugin-system/commit-plugin.d.ts +0 -40
  340. package/dist/plugin-system/commit-plugin.d.ts.map +0 -1
  341. package/dist/plugin-system/commit-plugin.js +0 -204
  342. package/dist/plugin-system/commit-plugin.js.map +0 -1
  343. package/dist/plugin-system/index.d.ts +0 -9
  344. package/dist/plugin-system/index.d.ts.map +0 -1
  345. package/dist/plugin-system/index.js +0 -9
  346. package/dist/plugin-system/index.js.map +0 -1
  347. package/dist/plugin-system/plugin-interfaces.d.ts +0 -98
  348. package/dist/plugin-system/plugin-interfaces.d.ts.map +0 -1
  349. package/dist/plugin-system/plugin-interfaces.js +0 -9
  350. package/dist/plugin-system/plugin-interfaces.js.map +0 -1
  351. package/dist/plugin-system/plugin-registry.d.ts +0 -44
  352. package/dist/plugin-system/plugin-registry.d.ts.map +0 -1
  353. package/dist/plugin-system/plugin-registry.js +0 -132
  354. package/dist/plugin-system/plugin-registry.js.map +0 -1
  355. package/dist/resource-handlers/conversation-state.d.ts +0 -15
  356. package/dist/resource-handlers/conversation-state.d.ts.map +0 -1
  357. package/dist/resource-handlers/conversation-state.js +0 -40
  358. package/dist/resource-handlers/conversation-state.js.map +0 -1
  359. package/dist/resource-handlers/development-plan.d.ts +0 -14
  360. package/dist/resource-handlers/development-plan.d.ts.map +0 -1
  361. package/dist/resource-handlers/development-plan.js +0 -31
  362. package/dist/resource-handlers/development-plan.js.map +0 -1
  363. package/dist/resource-handlers/index.d.ts +0 -24
  364. package/dist/resource-handlers/index.d.ts.map +0 -1
  365. package/dist/resource-handlers/index.js +0 -62
  366. package/dist/resource-handlers/index.js.map +0 -1
  367. package/dist/resource-handlers/system-prompt.d.ts +0 -15
  368. package/dist/resource-handlers/system-prompt.d.ts.map +0 -1
  369. package/dist/resource-handlers/system-prompt.js +0 -40
  370. package/dist/resource-handlers/system-prompt.js.map +0 -1
  371. package/dist/resource-handlers/workflow-resource.d.ts +0 -15
  372. package/dist/resource-handlers/workflow-resource.d.ts.map +0 -1
  373. package/dist/resource-handlers/workflow-resource.js +0 -85
  374. package/dist/resource-handlers/workflow-resource.js.map +0 -1
  375. package/dist/response-renderer.d.ts +0 -30
  376. package/dist/response-renderer.d.ts.map +0 -1
  377. package/dist/response-renderer.js +0 -94
  378. package/dist/response-renderer.js.map +0 -1
  379. package/dist/server-config.d.ts +0 -34
  380. package/dist/server-config.d.ts.map +0 -1
  381. package/dist/server-config.js +0 -503
  382. package/dist/server-config.js.map +0 -1
  383. package/dist/server-helpers.d.ts +0 -70
  384. package/dist/server-helpers.d.ts.map +0 -1
  385. package/dist/server-helpers.js +0 -171
  386. package/dist/server-helpers.js.map +0 -1
  387. package/dist/server-implementation.d.ts +0 -74
  388. package/dist/server-implementation.d.ts.map +0 -1
  389. package/dist/server-implementation.js +0 -201
  390. package/dist/server-implementation.js.map +0 -1
  391. package/dist/server.d.ts +0 -6
  392. package/dist/server.d.ts.map +0 -1
  393. package/dist/server.js +0 -5
  394. package/dist/server.js.map +0 -1
  395. package/dist/tool-handlers/base-tool-handler.d.ts +0 -50
  396. package/dist/tool-handlers/base-tool-handler.d.ts.map +0 -1
  397. package/dist/tool-handlers/base-tool-handler.js +0 -81
  398. package/dist/tool-handlers/base-tool-handler.js.map +0 -1
  399. package/dist/tool-handlers/conduct-review.d.ts +0 -49
  400. package/dist/tool-handlers/conduct-review.d.ts.map +0 -1
  401. package/dist/tool-handlers/conduct-review.js +0 -104
  402. package/dist/tool-handlers/conduct-review.js.map +0 -1
  403. package/dist/tool-handlers/get-tool-info.d.ts +0 -75
  404. package/dist/tool-handlers/get-tool-info.d.ts.map +0 -1
  405. package/dist/tool-handlers/get-tool-info.js +0 -168
  406. package/dist/tool-handlers/get-tool-info.js.map +0 -1
  407. package/dist/tool-handlers/index.d.ts +0 -41
  408. package/dist/tool-handlers/index.d.ts.map +0 -1
  409. package/dist/tool-handlers/index.js +0 -71
  410. package/dist/tool-handlers/index.js.map +0 -1
  411. package/dist/tool-handlers/list-workflows.d.ts +0 -35
  412. package/dist/tool-handlers/list-workflows.d.ts.map +0 -1
  413. package/dist/tool-handlers/list-workflows.js +0 -43
  414. package/dist/tool-handlers/list-workflows.js.map +0 -1
  415. package/dist/tool-handlers/no-idea.d.ts +0 -41
  416. package/dist/tool-handlers/no-idea.d.ts.map +0 -1
  417. package/dist/tool-handlers/no-idea.js +0 -29
  418. package/dist/tool-handlers/no-idea.js.map +0 -1
  419. package/dist/tool-handlers/proceed-to-phase.d.ts +0 -41
  420. package/dist/tool-handlers/proceed-to-phase.d.ts.map +0 -1
  421. package/dist/tool-handlers/proceed-to-phase.js +0 -165
  422. package/dist/tool-handlers/proceed-to-phase.js.map +0 -1
  423. package/dist/tool-handlers/reset-development.d.ts +0 -31
  424. package/dist/tool-handlers/reset-development.d.ts.map +0 -1
  425. package/dist/tool-handlers/reset-development.js +0 -48
  426. package/dist/tool-handlers/reset-development.js.map +0 -1
  427. package/dist/tool-handlers/resume-workflow.d.ts +0 -87
  428. package/dist/tool-handlers/resume-workflow.d.ts.map +0 -1
  429. package/dist/tool-handlers/resume-workflow.js +0 -212
  430. package/dist/tool-handlers/resume-workflow.js.map +0 -1
  431. package/dist/tool-handlers/setup-project-docs.d.ts +0 -37
  432. package/dist/tool-handlers/setup-project-docs.d.ts.map +0 -1
  433. package/dist/tool-handlers/setup-project-docs.js +0 -138
  434. package/dist/tool-handlers/setup-project-docs.js.map +0 -1
  435. package/dist/tool-handlers/start-development.d.ts +0 -79
  436. package/dist/tool-handlers/start-development.d.ts.map +0 -1
  437. package/dist/tool-handlers/start-development.js +0 -484
  438. package/dist/tool-handlers/start-development.js.map +0 -1
  439. package/dist/tool-handlers/whats-next.d.ts +0 -41
  440. package/dist/tool-handlers/whats-next.d.ts.map +0 -1
  441. package/dist/tool-handlers/whats-next.js +0 -123
  442. package/dist/tool-handlers/whats-next.js.map +0 -1
  443. package/dist/types.d.ts +0 -119
  444. package/dist/types.d.ts.map +0 -1
  445. package/dist/types.js +0 -5
  446. package/dist/version-info.d.ts +0 -30
  447. package/dist/version-info.d.ts.map +0 -1
  448. package/dist/version-info.js +0 -178
  449. package/dist/version-info.js.map +0 -1
  450. package/skill/SKILL.md +0 -28
  451. /package/{dist → packages/core/dist}/types.js.map +0 -0
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Template Manager
3
+ *
4
+ * Handles loading and rendering of project document templates.
5
+ * Supports different template formats for architecture, requirements, and design documents.
6
+ */
7
+ import { readFile, readdir, stat } from 'node:fs/promises';
8
+ import { join, dirname } from 'node:path';
9
+ import { fileURLToPath } from 'node:url';
10
+ import { createRequire } from 'node:module';
11
+ import { createLogger } from './logger.js';
12
+ const logger = createLogger('TemplateManager');
13
+ export class TemplateManager {
14
+ templatesPath;
15
+ constructor() {
16
+ this.templatesPath = this.resolveTemplatesPath();
17
+ }
18
+ /**
19
+ * Resolve templates path using similar strategy as WorkflowManager
20
+ */
21
+ resolveTemplatesPath() {
22
+ const strategies = [];
23
+ // Strategy 1: Local resources directory (symlinked from root)
24
+ strategies.push(join(dirname(fileURLToPath(import.meta.url)), '../resources/templates'));
25
+ // Strategy 2: From compiled dist directory
26
+ const currentFileUrl = import.meta.url;
27
+ if (currentFileUrl.startsWith('file://')) {
28
+ const currentFilePath = fileURLToPath(currentFileUrl);
29
+ // From dist/template-manager.js -> ../resources/templates
30
+ strategies.push(join(dirname(currentFilePath), '../resources/templates'));
31
+ }
32
+ // Strategy 3: Current working directory (for development)
33
+ strategies.push(join(process.cwd(), 'resources/templates'));
34
+ // Strategy 4: From node_modules
35
+ strategies.push(join(process.cwd(), 'node_modules/@codemcp/workflows-core/resources/templates'));
36
+ // Strategy 5: From package directory (for development)
37
+ try {
38
+ const require = createRequire(import.meta.url);
39
+ const packagePath = require.resolve('@codemcp/workflows-core/package.json');
40
+ const packageDir = dirname(packagePath);
41
+ strategies.push(join(packageDir, 'resources/templates'));
42
+ }
43
+ catch (_error) {
44
+ // Ignore if package not found
45
+ }
46
+ // Find the first existing path
47
+ for (const strategy of strategies) {
48
+ try {
49
+ // This will throw if path doesn't exist
50
+ require('node:fs').accessSync(strategy);
51
+ logger.debug('Using templates path', { path: strategy });
52
+ return strategy;
53
+ }
54
+ catch (_error) {
55
+ // Continue to next strategy
56
+ }
57
+ }
58
+ // Fallback to first strategy if none found
59
+ const fallback = strategies[0];
60
+ logger.warn('No templates directory found, using fallback', {
61
+ fallback,
62
+ strategies,
63
+ });
64
+ return fallback;
65
+ }
66
+ /**
67
+ * Get the default template options based on available templates
68
+ */
69
+ async getDefaults() {
70
+ const availableTemplates = await this.getAvailableTemplates();
71
+ return {
72
+ architecture: this.getPreferredTemplate(availableTemplates.architecture, [
73
+ 'arc42',
74
+ 'freestyle',
75
+ ]),
76
+ requirements: this.getPreferredTemplate(availableTemplates.requirements, [
77
+ 'ears',
78
+ 'freestyle',
79
+ ]),
80
+ design: this.getPreferredTemplate(availableTemplates.design, [
81
+ 'comprehensive',
82
+ 'freestyle',
83
+ ]),
84
+ };
85
+ }
86
+ /**
87
+ * Get preferred template from available options, with fallback preferences
88
+ */
89
+ getPreferredTemplate(available, preferences) {
90
+ // Try to find the first preference that's available
91
+ for (const preference of preferences) {
92
+ if (available.includes(preference)) {
93
+ return preference;
94
+ }
95
+ }
96
+ // If no preferences are available, return the first available template
97
+ return available[0] || preferences[0];
98
+ }
99
+ /**
100
+ * Load and render a template
101
+ */
102
+ async loadTemplate(type, template) {
103
+ const templatePath = join(this.templatesPath, type, template);
104
+ const templateFilePath = `${templatePath}.md`;
105
+ try {
106
+ // First try to check if it's a directory (like arc42)
107
+ try {
108
+ const stats = await stat(templatePath);
109
+ if (stats.isDirectory()) {
110
+ return await this.loadDirectoryTemplate(templatePath);
111
+ }
112
+ }
113
+ catch (_error) {
114
+ // Not a directory, continue to file check
115
+ }
116
+ // Try to load as a markdown file
117
+ const content = await readFile(templateFilePath, 'utf-8');
118
+ return { content };
119
+ }
120
+ catch (error) {
121
+ logger.error(`Failed to load template: ${type}/${template}`, error);
122
+ throw new Error(`Template not found: ${type}/${template}. Tried: ${templatePath} (directory) and ${templateFilePath} (file)`);
123
+ }
124
+ }
125
+ /**
126
+ * Load a directory-based template (like arc42 with images)
127
+ */
128
+ async loadDirectoryTemplate(templatePath) {
129
+ const additionalFiles = [];
130
+ // Find the main markdown file
131
+ const files = await readdir(templatePath);
132
+ const markdownFile = files.find(file => file.endsWith('.md'));
133
+ if (!markdownFile) {
134
+ throw new Error(`No markdown file found in template directory: ${templatePath}`);
135
+ }
136
+ const content = await readFile(join(templatePath, markdownFile), 'utf-8');
137
+ // Load additional files (like images)
138
+ await this.loadAdditionalFiles(templatePath, '', additionalFiles);
139
+ return {
140
+ content,
141
+ additionalFiles: additionalFiles.filter(file => !file.relativePath.endsWith('.md')),
142
+ };
143
+ }
144
+ /**
145
+ * Recursively load additional files from template directory
146
+ */
147
+ async loadAdditionalFiles(basePath, relativePath, additionalFiles) {
148
+ const currentPath = join(basePath, relativePath);
149
+ const items = await readdir(currentPath);
150
+ for (const item of items) {
151
+ const itemPath = join(currentPath, item);
152
+ const itemRelativePath = relativePath ? join(relativePath, item) : item;
153
+ const stats = await stat(itemPath);
154
+ if (stats.isDirectory()) {
155
+ // Recursively process subdirectories
156
+ await this.loadAdditionalFiles(basePath, itemRelativePath, additionalFiles);
157
+ }
158
+ else if (!item.endsWith('.md')) {
159
+ // Load non-markdown files as additional files
160
+ const content = await readFile(itemPath);
161
+ additionalFiles.push({
162
+ relativePath: itemRelativePath,
163
+ content,
164
+ });
165
+ }
166
+ }
167
+ }
168
+ /**
169
+ * Validate template options against available templates
170
+ */
171
+ async validateOptions(options) {
172
+ const availableTemplates = await this.getAvailableTemplates();
173
+ if (options.architecture &&
174
+ !availableTemplates.architecture.includes(options.architecture)) {
175
+ throw new Error(`Invalid architecture template: ${options.architecture}. Valid options: ${availableTemplates.architecture.join(', ')}`);
176
+ }
177
+ if (options.requirements &&
178
+ !availableTemplates.requirements.includes(options.requirements)) {
179
+ throw new Error(`Invalid requirements template: ${options.requirements}. Valid options: ${availableTemplates.requirements.join(', ')}`);
180
+ }
181
+ if (options.design && !availableTemplates.design.includes(options.design)) {
182
+ throw new Error(`Invalid design template: ${options.design}. Valid options: ${availableTemplates.design.join(', ')}`);
183
+ }
184
+ }
185
+ /**
186
+ * Get available templates for each type by scanning the file system
187
+ */
188
+ async getAvailableTemplates() {
189
+ const result = {
190
+ architecture: [],
191
+ requirements: [],
192
+ design: [],
193
+ };
194
+ try {
195
+ // Scan each template type directory
196
+ for (const [type, templates] of Object.entries(result)) {
197
+ const typePath = join(this.templatesPath, type);
198
+ try {
199
+ const entries = await readdir(typePath, { withFileTypes: true });
200
+ for (const entry of entries) {
201
+ if (entry.isDirectory()) {
202
+ // Directory-based template (like arc42)
203
+ templates.push(entry.name);
204
+ }
205
+ else if (entry.isFile() && entry.name.endsWith('.md')) {
206
+ // File-based template (like freestyle.md)
207
+ const templateName = entry.name.replace('.md', '');
208
+ templates.push(templateName);
209
+ }
210
+ }
211
+ // Sort templates for consistent ordering
212
+ templates.sort();
213
+ }
214
+ catch (error) {
215
+ logger.warn(`Failed to scan templates for type: ${type}`, {
216
+ typePath,
217
+ error: error instanceof Error ? error.message : String(error),
218
+ });
219
+ }
220
+ }
221
+ logger.debug('Discovered available templates', result);
222
+ return result;
223
+ }
224
+ catch (error) {
225
+ logger.error('Failed to discover templates', error);
226
+ // Return empty arrays if discovery fails
227
+ return result;
228
+ }
229
+ }
230
+ }
231
+ //# sourceMappingURL=template-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-manager.js","sourceRoot":"","sources":["../src/template-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Transition Engine
3
+ *
4
+ * Manages the development state machine and determines appropriate phase transitions.
5
+ * Analyzes conversation context and user input to make intelligent phase decisions.
6
+ */
7
+ import type { ConversationState } from './types.js';
8
+ export interface TransitionContext {
9
+ currentPhase: string;
10
+ projectPath: string;
11
+ conversationId: string;
12
+ userInput?: string;
13
+ context?: string;
14
+ conversationSummary?: string;
15
+ recentMessages?: Array<{
16
+ role: string;
17
+ content: string;
18
+ }>;
19
+ }
20
+ export interface TransitionResult {
21
+ newPhase: string;
22
+ instructions: string;
23
+ transitionReason: string;
24
+ isModeled: boolean;
25
+ }
26
+ export declare class TransitionEngine {
27
+ private stateMachineLoader;
28
+ private workflowManager;
29
+ private conversationManager?;
30
+ constructor(projectPath: string);
31
+ /**
32
+ * Set the conversation manager (dependency injection)
33
+ */
34
+ setConversationManager(conversationManager: {
35
+ hasInteractions: (conversationId: string) => Promise<boolean>;
36
+ getConversationState: (conversationId: string) => Promise<ConversationState | null>;
37
+ }): void;
38
+ /**
39
+ * Get the loaded state machine for the current project
40
+ */
41
+ getStateMachine(projectPath: string, workflowName?: string): import("./state-machine-types.js").YamlStateMachine;
42
+ /**
43
+ * Check if this is the first call from initial state based on database interactions
44
+ */
45
+ private isFirstCallFromInitialState;
46
+ /**
47
+ * Generate instructions for defining phase entrance criteria
48
+ */
49
+ private generateCriteriaDefinitionInstructions;
50
+ /**
51
+ * Get phase-specific instructions for continuing work in current phase
52
+ */
53
+ private getContinuePhaseInstructions;
54
+ /**
55
+ * Get the first development phase from the state machine
56
+ */
57
+ private getFirstDevelopmentPhase;
58
+ /**
59
+ * Analyze context and determine appropriate phase transition
60
+ */
61
+ analyzePhaseTransition(context: TransitionContext): Promise<TransitionResult>;
62
+ /**
63
+ * Handle explicit phase transition request
64
+ */
65
+ handleExplicitTransition(currentPhase: string, targetPhase: string, projectPath: string, reason?: string, workflowName?: string): TransitionResult;
66
+ /**
67
+ * Capitalize phase name for display
68
+ */
69
+ private capitalizePhase;
70
+ /**
71
+ * Filter transitions based on agent role (for crowd workflows)
72
+ * Returns transitions applicable to the current agent
73
+ */
74
+ filterTransitionsByRole<T extends {
75
+ role?: string;
76
+ }>(transitions: T[], agentRole?: string): T[];
77
+ }
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Transition Engine
3
+ *
4
+ * Manages the development state machine and determines appropriate phase transitions.
5
+ * Analyzes conversation context and user input to make intelligent phase decisions.
6
+ */
7
+ import { createLogger } from './logger.js';
8
+ import { StateMachineLoader } from './state-machine-loader.js';
9
+ import { WorkflowManager } from './workflow-manager.js';
10
+ const logger = createLogger('TransitionEngine');
11
+ export class TransitionEngine {
12
+ stateMachineLoader;
13
+ workflowManager;
14
+ conversationManager;
15
+ constructor(projectPath) {
16
+ this.stateMachineLoader = new StateMachineLoader();
17
+ this.workflowManager = new WorkflowManager();
18
+ logger.info('TransitionEngine initialized', { projectPath });
19
+ }
20
+ /**
21
+ * Set the conversation manager (dependency injection)
22
+ */
23
+ setConversationManager(conversationManager) {
24
+ this.conversationManager = conversationManager;
25
+ }
26
+ /**
27
+ * Get the loaded state machine for the current project
28
+ */
29
+ getStateMachine(projectPath, workflowName) {
30
+ // Use WorkflowManager to load the appropriate workflow
31
+ return this.workflowManager.loadWorkflowForProject(projectPath, workflowName);
32
+ }
33
+ /**
34
+ * Check if this is the first call from initial state based on database interactions
35
+ */
36
+ async isFirstCallFromInitialState(context) {
37
+ // Check database for any previous interactions in this conversation
38
+ if (!this.conversationManager) {
39
+ logger.warn('ConversationManager not set, assuming first call');
40
+ return true;
41
+ }
42
+ const hasInteractions = await this.conversationManager.hasInteractions(context.conversationId);
43
+ logger.debug('Checking first call from initial state', {
44
+ hasInteractions,
45
+ conversationId: context.conversationId,
46
+ currentPhase: context.currentPhase,
47
+ });
48
+ return !hasInteractions;
49
+ }
50
+ /**
51
+ * Generate instructions for defining phase entrance criteria
52
+ */
53
+ async generateCriteriaDefinitionInstructions(projectPath, conversationId) {
54
+ // Get workflow name from conversation state
55
+ const conversationState = await this.conversationManager?.getConversationState(conversationId);
56
+ const workflowName = conversationState?.workflowName;
57
+ const stateMachine = this.workflowManager.loadWorkflowForProject(projectPath, workflowName);
58
+ const phases = Object.keys(stateMachine.states);
59
+ let instructions = `Welcome to ${stateMachine.name}!
60
+
61
+ Before we begin development, let's establish clear entrance criteria for each phase. This will help us make informed decisions about when to transition between phases throughout the development process.
62
+
63
+ Please update the plan file with a "Phase Entrance Criteria" section that defines specific, measurable criteria for entering each phase:
64
+
65
+ ## Phase Entrance Criteria
66
+
67
+ `;
68
+ // Generate criteria template for each phase (except initial state)
69
+ for (const phase of phases) {
70
+ if (phase === stateMachine.initial_state)
71
+ continue; // Skip initial state
72
+ const phaseDefinition = stateMachine.states[phase];
73
+ const capitalizedPhase = this.capitalizePhase(phase);
74
+ instructions += `### ${capitalizedPhase} Phase
75
+ *${phaseDefinition.description}*
76
+
77
+ **Enter when:**
78
+ - [ ] [Define specific criteria for entering ${phase} phase]
79
+ - [ ] [Add measurable conditions that must be met]
80
+ - [ ] [Include any deliverables or milestones required]
81
+
82
+ `;
83
+ }
84
+ instructions += `
85
+ Once you've defined these criteria, we can begin development. Throughout the process, consult these criteria when considering phase transitions.
86
+
87
+ **Remember**: These criteria should be specific and measurable so we can clearly determine when each phase is ready to begin.`;
88
+ return instructions;
89
+ }
90
+ /**
91
+ * Get phase-specific instructions for continuing work in current phase
92
+ */
93
+ async getContinuePhaseInstructions(phase, projectPath, conversationId) {
94
+ // Get workflow name from conversation state
95
+ const conversationState = await this.conversationManager?.getConversationState(conversationId);
96
+ const workflowName = conversationState?.workflowName;
97
+ const stateMachine = this.workflowManager.loadWorkflowForProject(projectPath, workflowName);
98
+ const stateDefinition = stateMachine.states[phase];
99
+ if (!stateDefinition) {
100
+ logger.error('Unknown phase', new Error(`Unknown phase: ${phase}`));
101
+ throw new Error(`Unknown phase: ${phase}`);
102
+ }
103
+ const continueTransition = stateDefinition.transitions.find(t => t.to === phase);
104
+ if (continueTransition) {
105
+ // Use the transition instructions if available, otherwise use default + additional
106
+ if (continueTransition.instructions) {
107
+ return continueTransition.instructions;
108
+ }
109
+ else {
110
+ let composedInstructions = stateDefinition.default_instructions;
111
+ if (continueTransition.additional_instructions) {
112
+ composedInstructions = `${composedInstructions}\n\n**Additional Context:**\n${continueTransition.additional_instructions}`;
113
+ }
114
+ return composedInstructions;
115
+ }
116
+ }
117
+ // Fall back to default instructions for the phase
118
+ return stateDefinition.default_instructions;
119
+ }
120
+ /**
121
+ * Get the first development phase from the state machine
122
+ */
123
+ async getFirstDevelopmentPhase(projectPath, conversationId) {
124
+ // Get workflow name from conversation state
125
+ const conversationState = await this.conversationManager?.getConversationState(conversationId);
126
+ const workflowName = conversationState?.workflowName;
127
+ const stateMachine = this.workflowManager.loadWorkflowForProject(projectPath, workflowName);
128
+ const initialState = stateMachine.initial_state;
129
+ // The first development phase IS the initial state - we should stay there
130
+ // Don't automatically transition to the first transition target
131
+ return initialState;
132
+ }
133
+ /**
134
+ * Analyze context and determine appropriate phase transition
135
+ */
136
+ async analyzePhaseTransition(context) {
137
+ const { currentPhase, projectPath, conversationId, userInput, context: additionalContext, conversationSummary, } = context;
138
+ // Load the appropriate workflow for this project/conversation
139
+ logger.debug('Analyzing phase transition', {
140
+ currentPhase,
141
+ projectPath,
142
+ hasUserInput: !!userInput,
143
+ hasContext: !!additionalContext,
144
+ hasSummary: !!conversationSummary,
145
+ userInput: userInput
146
+ ? userInput.substring(0, 50) + (userInput.length > 50 ? '...' : '')
147
+ : undefined,
148
+ });
149
+ // Check if this is the first call from initial state - transition to first development phase
150
+ if (await this.isFirstCallFromInitialState(context)) {
151
+ const firstDevelopmentPhase = await this.getFirstDevelopmentPhase(projectPath, conversationId);
152
+ logger.info('First call from initial state - transitioning to first development phase with criteria', {
153
+ currentPhase,
154
+ firstDevelopmentPhase,
155
+ projectPath,
156
+ });
157
+ // Combine criteria definition with first phase instructions
158
+ const criteriaInstructions = await this.generateCriteriaDefinitionInstructions(projectPath, conversationId);
159
+ const phaseInstructions = await this.getContinuePhaseInstructions(firstDevelopmentPhase, projectPath, conversationId);
160
+ return {
161
+ newPhase: firstDevelopmentPhase, // Transition to first development phase
162
+ instructions: criteriaInstructions + '\n\n---\n\n' + phaseInstructions,
163
+ transitionReason: 'Starting development - defining criteria and beginning first phase',
164
+ isModeled: true,
165
+ };
166
+ }
167
+ // For all other cases, stay in current phase and let LLM decide based on plan file criteria
168
+ // The LLM will consult the entrance criteria in the plan file and use proceed_to_phase when ready
169
+ const continueInstructions = await this.getContinuePhaseInstructions(currentPhase, projectPath, conversationId);
170
+ logger.debug('Continuing in current phase - LLM will evaluate transition criteria', {
171
+ currentPhase,
172
+ projectPath,
173
+ });
174
+ return {
175
+ newPhase: currentPhase,
176
+ instructions: continueInstructions,
177
+ transitionReason: 'Continue current phase - LLM will evaluate transition criteria from plan file',
178
+ isModeled: false,
179
+ };
180
+ }
181
+ /**
182
+ * Handle explicit phase transition request
183
+ */
184
+ handleExplicitTransition(currentPhase, targetPhase, projectPath, reason, workflowName) {
185
+ // Load the appropriate state machine for this project/workflow
186
+ const stateMachine = this.getStateMachine(projectPath, workflowName);
187
+ logger.debug('Handling explicit phase transition', {
188
+ currentPhase,
189
+ targetPhase,
190
+ projectPath,
191
+ workflowName,
192
+ reason,
193
+ });
194
+ // Validate that the target phase exists in the state machine
195
+ if (!stateMachine.states[targetPhase]) {
196
+ const validPhases = Object.keys(stateMachine.states);
197
+ const errorMsg = `Invalid target phase: "${targetPhase}". Valid phases are: ${validPhases.join(', ')}`;
198
+ logger.error('Invalid target phase', new Error(errorMsg));
199
+ throw new Error(errorMsg);
200
+ }
201
+ // Get default instructions from the target state
202
+ const targetState = stateMachine.states[targetPhase];
203
+ const instructions = targetState.default_instructions;
204
+ const transitionInfo = {
205
+ instructions: instructions,
206
+ transitionReason: reason || `Moving to ${targetPhase}`,
207
+ isModeled: false, // Direct phase transitions are not modeled
208
+ };
209
+ logger.info('Explicit phase transition processed', {
210
+ fromPhase: currentPhase,
211
+ toPhase: targetPhase,
212
+ reason: transitionInfo.transitionReason,
213
+ isModeled: transitionInfo.isModeled,
214
+ });
215
+ return {
216
+ newPhase: targetPhase,
217
+ instructions: transitionInfo.instructions,
218
+ transitionReason: reason || transitionInfo.transitionReason,
219
+ isModeled: transitionInfo.isModeled,
220
+ };
221
+ }
222
+ /**
223
+ * Capitalize phase name for display
224
+ */
225
+ capitalizePhase(phase) {
226
+ return phase
227
+ .split('_')
228
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
229
+ .join(' ');
230
+ }
231
+ /**
232
+ * Filter transitions based on agent role (for crowd workflows)
233
+ * Returns transitions applicable to the current agent
234
+ */
235
+ filterTransitionsByRole(transitions, agentRole) {
236
+ // If no role specified, return all transitions (single-agent mode)
237
+ if (!agentRole) {
238
+ return transitions;
239
+ }
240
+ // Filter transitions: include if no role specified OR role matches
241
+ return transitions.filter(t => !t.role || t.role === agentRole);
242
+ }
243
+ }
244
+ //# sourceMappingURL=transition-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transition-engine.js","sourceRoot":"","sources":["../src/transition-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Common types used across the application
3
+ */
4
+ /**
5
+ * Interface for interaction log entries
6
+ */
7
+ export interface InteractionLog {
8
+ id?: number;
9
+ conversationId: string;
10
+ toolName: string;
11
+ inputParams: string;
12
+ responseData: string;
13
+ currentPhase: string;
14
+ timestamp: string;
15
+ isReset?: boolean;
16
+ resetAt?: string;
17
+ }
18
+ /**
19
+ * Interface for conversation state
20
+ */
21
+ /**
22
+ * Git commit configuration options
23
+ */
24
+ export interface GitCommitConfig {
25
+ enabled: boolean;
26
+ commitOnStep: boolean;
27
+ commitOnPhase: boolean;
28
+ commitOnComplete: boolean;
29
+ initialMessage: string;
30
+ startCommitHash?: string;
31
+ }
32
+ export interface ConversationState {
33
+ conversationId: string;
34
+ projectPath: string;
35
+ gitBranch: string;
36
+ currentPhase: string;
37
+ planFilePath: string;
38
+ workflowName: string;
39
+ requireReviewsBeforePhaseTransition: boolean;
40
+ createdAt: string;
41
+ updatedAt: string;
42
+ }
43
+ /**
44
+ * Interface for conversation context
45
+ */
46
+ export interface ConversationContext {
47
+ conversationId: string;
48
+ projectPath: string;
49
+ gitBranch: string;
50
+ currentPhase: string;
51
+ planFilePath: string;
52
+ workflowName: string;
53
+ requireReviewsBeforePhaseTransition?: boolean;
54
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Common types used across the application
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map