@codemcp/workflows 5.3.0 → 6.0.2

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 (580) hide show
  1. package/README.md +91 -0
  2. package/package.json +78 -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/cli/resources/agents/architect.yaml +61 -0
  11. package/packages/cli/resources/agents/business-analyst.yaml +60 -0
  12. package/packages/cli/resources/agents/developer.yaml +61 -0
  13. package/packages/cli/resources/templates/architecture/arc42/arc42-template-EN.md +1077 -0
  14. package/packages/cli/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio-2023.png +0 -0
  15. package/packages/cli/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio.png +0 -0
  16. package/packages/cli/resources/templates/architecture/arc42/images/05_building_blocks-EN.png +0 -0
  17. package/packages/cli/resources/templates/architecture/arc42/images/08-concepts-EN.drawio.png +0 -0
  18. package/packages/cli/resources/templates/architecture/arc42/images/arc42-logo.png +0 -0
  19. package/packages/cli/resources/templates/architecture/c4.md +224 -0
  20. package/packages/cli/resources/templates/architecture/freestyle.md +53 -0
  21. package/packages/cli/resources/templates/architecture/game.md +250 -0
  22. package/packages/cli/resources/templates/architecture/none.md +17 -0
  23. package/packages/cli/resources/templates/design/comprehensive.md +207 -0
  24. package/packages/cli/resources/templates/design/freestyle.md +37 -0
  25. package/packages/cli/resources/templates/design/game.md +66 -0
  26. package/packages/cli/resources/templates/design/none.md +17 -0
  27. package/packages/cli/resources/templates/requirements/ears.md +90 -0
  28. package/packages/cli/resources/templates/requirements/freestyle.md +42 -0
  29. package/packages/cli/resources/templates/requirements/game.md +162 -0
  30. package/packages/cli/resources/templates/requirements/none.md +17 -0
  31. package/packages/cli/resources/templates/skills/POWER.md +23 -0
  32. package/packages/cli/resources/templates/skills/SKILL.md +19 -0
  33. package/packages/cli/resources/workflows/adr.yaml +157 -0
  34. package/packages/cli/resources/workflows/big-bang-conversion.yaml +592 -0
  35. package/packages/cli/resources/workflows/boundary-testing.yaml +376 -0
  36. package/packages/cli/resources/workflows/bugfix.yaml +177 -0
  37. package/packages/cli/resources/workflows/business-analysis.yaml +597 -0
  38. package/packages/cli/resources/workflows/c4-analysis.yaml +471 -0
  39. package/packages/cli/resources/workflows/epcc.yaml +183 -0
  40. package/packages/cli/resources/workflows/game-beginner.yaml +434 -0
  41. package/packages/cli/resources/workflows/greenfield.yaml +201 -0
  42. package/packages/cli/resources/workflows/minor.yaml +138 -0
  43. package/packages/cli/resources/workflows/posts.yaml +193 -0
  44. package/packages/cli/resources/workflows/sdd-bugfix-crowd.yaml +608 -0
  45. package/packages/cli/resources/workflows/sdd-bugfix.yaml +381 -0
  46. package/packages/cli/resources/workflows/sdd-feature-crowd.yaml +713 -0
  47. package/packages/cli/resources/workflows/sdd-feature.yaml +471 -0
  48. package/packages/cli/resources/workflows/sdd-greenfield-crowd.yaml +336 -0
  49. package/packages/cli/resources/workflows/sdd-greenfield.yaml +463 -0
  50. package/packages/cli/resources/workflows/slides.yaml +237 -0
  51. package/packages/cli/resources/workflows/tdd.yaml +160 -0
  52. package/packages/cli/resources/workflows/waterfall.yaml +209 -0
  53. package/packages/core/dist/beads-integration.d.ts +50 -0
  54. package/packages/core/dist/beads-integration.js +387 -0
  55. package/packages/core/dist/beads-integration.js.map +1 -0
  56. package/packages/core/dist/beads-state-manager.d.ts +58 -0
  57. package/packages/core/dist/beads-state-manager.js +212 -0
  58. package/packages/core/dist/beads-state-manager.js.map +1 -0
  59. package/packages/core/dist/config-manager.d.ts +24 -0
  60. package/packages/core/dist/config-manager.js +68 -0
  61. package/packages/core/dist/config-manager.js.map +1 -0
  62. package/packages/core/dist/conversation-manager.d.ts +98 -0
  63. package/packages/core/dist/conversation-manager.js +382 -0
  64. package/packages/core/dist/conversation-manager.js.map +1 -0
  65. package/packages/core/dist/file-detection-manager.d.ts +53 -0
  66. package/packages/core/dist/file-detection-manager.js +221 -0
  67. package/packages/core/dist/file-detection-manager.js.map +1 -0
  68. package/packages/core/dist/file-storage.d.ts +93 -0
  69. package/packages/core/dist/file-storage.js +301 -0
  70. package/packages/core/dist/file-storage.js.map +1 -0
  71. package/packages/core/dist/git-manager.d.ts +22 -0
  72. package/packages/core/dist/git-manager.js +123 -0
  73. package/packages/core/dist/git-manager.js.map +1 -0
  74. package/packages/core/dist/index.d.ts +24 -0
  75. package/packages/core/dist/index.js +31 -0
  76. package/packages/core/dist/index.js.map +1 -0
  77. package/packages/core/dist/instruction-generator.d.ts +40 -0
  78. package/packages/core/dist/instruction-generator.js +89 -0
  79. package/packages/core/dist/instruction-generator.js.map +1 -0
  80. package/packages/core/dist/interaction-logger.d.ts +37 -0
  81. package/packages/core/dist/interaction-logger.js +87 -0
  82. package/packages/core/dist/interaction-logger.js.map +1 -0
  83. package/packages/core/dist/interfaces/index.d.ts +9 -0
  84. package/packages/core/dist/interfaces/index.js +10 -0
  85. package/packages/core/dist/interfaces/index.js.map +1 -0
  86. package/packages/core/dist/interfaces/instruction-generator.interface.d.ts +41 -0
  87. package/packages/core/dist/interfaces/instruction-generator.interface.js +8 -0
  88. package/packages/core/dist/interfaces/instruction-generator.interface.js.map +1 -0
  89. package/packages/core/dist/interfaces/plan-manager.interface.d.ts +55 -0
  90. package/packages/core/dist/interfaces/plan-manager.interface.js +8 -0
  91. package/packages/core/dist/interfaces/plan-manager.interface.js.map +1 -0
  92. package/packages/core/dist/interfaces/task-backend-client.interface.d.ts +52 -0
  93. package/packages/core/dist/interfaces/task-backend-client.interface.js +8 -0
  94. package/packages/core/dist/interfaces/task-backend-client.interface.js.map +1 -0
  95. package/packages/core/dist/logger.d.ts +64 -0
  96. package/packages/core/dist/logger.js +283 -0
  97. package/packages/core/dist/logger.js.map +1 -0
  98. package/packages/core/dist/path-validation-utils.d.ts +75 -0
  99. package/packages/core/dist/path-validation-utils.js +238 -0
  100. package/packages/core/dist/path-validation-utils.js.map +1 -0
  101. package/packages/core/dist/persistence-interface.d.ts +91 -0
  102. package/packages/core/dist/persistence-interface.js +9 -0
  103. package/packages/core/dist/persistence-interface.js.map +1 -0
  104. package/{dist/components/beads/beads-plan-manager.d.ts → packages/core/dist/plan-manager.d.ts} +15 -15
  105. package/{dist/components/beads/beads-plan-manager.js → packages/core/dist/plan-manager.js} +66 -50
  106. package/packages/core/dist/plan-manager.js.map +1 -0
  107. package/packages/core/dist/project-docs-manager.d.ts +119 -0
  108. package/packages/core/dist/project-docs-manager.js +366 -0
  109. package/packages/core/dist/project-docs-manager.js.map +1 -0
  110. package/packages/core/dist/state-machine-loader.d.ts +61 -0
  111. package/packages/core/dist/state-machine-loader.js +273 -0
  112. package/packages/core/dist/state-machine-loader.js.map +1 -0
  113. package/packages/core/dist/state-machine-types.d.ts +64 -0
  114. package/packages/core/dist/state-machine-types.js +7 -0
  115. package/packages/core/dist/state-machine-types.js.map +1 -0
  116. package/packages/core/dist/state-machine.d.ts +52 -0
  117. package/packages/core/dist/state-machine.js +256 -0
  118. package/packages/core/dist/state-machine.js.map +1 -0
  119. package/packages/core/dist/system-prompt-generator.d.ts +14 -0
  120. package/packages/core/dist/system-prompt-generator.js +42 -0
  121. package/packages/core/dist/system-prompt-generator.js.map +1 -0
  122. package/packages/core/dist/task-backend.d.ts +45 -0
  123. package/packages/core/dist/task-backend.js +176 -0
  124. package/packages/core/dist/task-backend.js.map +1 -0
  125. package/packages/core/dist/template-manager.d.ts +61 -0
  126. package/packages/core/dist/template-manager.js +231 -0
  127. package/packages/core/dist/template-manager.js.map +1 -0
  128. package/packages/core/dist/transition-engine.d.ts +77 -0
  129. package/packages/core/dist/transition-engine.js +244 -0
  130. package/packages/core/dist/transition-engine.js.map +1 -0
  131. package/packages/core/dist/types.d.ts +54 -0
  132. package/packages/core/dist/types.js +5 -0
  133. package/packages/core/dist/workflow-manager.d.ts +89 -0
  134. package/packages/core/dist/workflow-manager.js +468 -0
  135. package/packages/core/dist/workflow-manager.js.map +1 -0
  136. package/packages/core/package.json +33 -0
  137. package/packages/core/resources/agents/architect.yaml +61 -0
  138. package/packages/core/resources/agents/business-analyst.yaml +60 -0
  139. package/packages/core/resources/agents/developer.yaml +61 -0
  140. package/packages/core/resources/templates/architecture/arc42/arc42-template-EN.md +1077 -0
  141. package/packages/core/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio-2023.png +0 -0
  142. package/packages/core/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio.png +0 -0
  143. package/packages/core/resources/templates/architecture/arc42/images/05_building_blocks-EN.png +0 -0
  144. package/packages/core/resources/templates/architecture/arc42/images/08-concepts-EN.drawio.png +0 -0
  145. package/packages/core/resources/templates/architecture/arc42/images/arc42-logo.png +0 -0
  146. package/packages/core/resources/templates/architecture/c4.md +224 -0
  147. package/packages/core/resources/templates/architecture/freestyle.md +53 -0
  148. package/packages/core/resources/templates/architecture/game.md +250 -0
  149. package/packages/core/resources/templates/architecture/none.md +17 -0
  150. package/packages/core/resources/templates/design/comprehensive.md +207 -0
  151. package/packages/core/resources/templates/design/freestyle.md +37 -0
  152. package/packages/core/resources/templates/design/game.md +66 -0
  153. package/packages/core/resources/templates/design/none.md +17 -0
  154. package/packages/core/resources/templates/requirements/ears.md +90 -0
  155. package/packages/core/resources/templates/requirements/freestyle.md +42 -0
  156. package/packages/core/resources/templates/requirements/game.md +162 -0
  157. package/packages/core/resources/templates/requirements/none.md +17 -0
  158. package/packages/core/resources/templates/skills/POWER.md +23 -0
  159. package/packages/core/resources/templates/skills/SKILL.md +19 -0
  160. package/packages/core/resources/workflows/adr.yaml +157 -0
  161. package/packages/core/resources/workflows/big-bang-conversion.yaml +592 -0
  162. package/packages/core/resources/workflows/boundary-testing.yaml +376 -0
  163. package/packages/core/resources/workflows/bugfix.yaml +177 -0
  164. package/packages/core/resources/workflows/business-analysis.yaml +597 -0
  165. package/packages/core/resources/workflows/c4-analysis.yaml +471 -0
  166. package/packages/core/resources/workflows/epcc.yaml +183 -0
  167. package/packages/core/resources/workflows/game-beginner.yaml +434 -0
  168. package/packages/core/resources/workflows/greenfield.yaml +201 -0
  169. package/packages/core/resources/workflows/minor.yaml +138 -0
  170. package/packages/core/resources/workflows/posts.yaml +193 -0
  171. package/packages/core/resources/workflows/sdd-bugfix-crowd.yaml +608 -0
  172. package/packages/core/resources/workflows/sdd-bugfix.yaml +381 -0
  173. package/packages/core/resources/workflows/sdd-feature-crowd.yaml +713 -0
  174. package/packages/core/resources/workflows/sdd-feature.yaml +471 -0
  175. package/packages/core/resources/workflows/sdd-greenfield-crowd.yaml +336 -0
  176. package/packages/core/resources/workflows/sdd-greenfield.yaml +463 -0
  177. package/packages/core/resources/workflows/slides.yaml +237 -0
  178. package/packages/core/resources/workflows/tdd.yaml +160 -0
  179. package/packages/core/resources/workflows/waterfall.yaml +209 -0
  180. package/packages/docs/.vitepress/dist/.gitignore +2 -0
  181. package/packages/docs/.vitepress/dist/404.html +23 -0
  182. package/packages/docs/.vitepress/dist/assets/app.Dz3lZH3M.js +1 -0
  183. package/packages/docs/.vitepress/dist/assets/chunks/framework.DZS7lpav.js +19 -0
  184. package/packages/docs/.vitepress/dist/assets/chunks/theme.q5Ewb3F1.js +206 -0
  185. package/packages/docs/.vitepress/dist/assets/dev_ARCHITECTURE.md.da_vFDwM.js +130 -0
  186. package/packages/docs/.vitepress/dist/assets/dev_ARCHITECTURE.md.da_vFDwM.lean.js +1 -0
  187. package/packages/docs/.vitepress/dist/assets/dev_DEVELOPMENT.md.DWl9cccE.js +72 -0
  188. package/packages/docs/.vitepress/dist/assets/dev_DEVELOPMENT.md.DWl9cccE.lean.js +1 -0
  189. package/packages/docs/.vitepress/dist/assets/dev_LOGGING.md.BebvbW7z.js +34 -0
  190. package/packages/docs/.vitepress/dist/assets/dev_LOGGING.md.BebvbW7z.lean.js +1 -0
  191. package/packages/docs/.vitepress/dist/assets/dev_PUBLISHING.md.CQqbiIOF.js +1 -0
  192. package/packages/docs/.vitepress/dist/assets/dev_PUBLISHING.md.CQqbiIOF.lean.js +1 -0
  193. package/packages/docs/.vitepress/dist/assets/index.md.D6ROLohf.js +2 -0
  194. package/packages/docs/.vitepress/dist/assets/index.md.D6ROLohf.lean.js +1 -0
  195. package/packages/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  196. package/packages/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  197. package/packages/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  198. package/packages/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  199. package/packages/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  200. package/packages/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  201. package/packages/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  202. package/packages/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  203. package/packages/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  204. package/packages/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  205. package/packages/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  206. package/packages/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  207. package/packages/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  208. package/packages/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  209. package/packages/docs/.vitepress/dist/assets/mcp-interaction-pattern.VdvOPuTt.png +0 -0
  210. package/packages/docs/.vitepress/dist/assets/placeholder-demo-greenfield.B8lG_tBI.png +0 -0
  211. package/packages/docs/.vitepress/dist/assets/style.CAgdBzOq.css +1 -0
  212. package/packages/docs/.vitepress/dist/assets/user_advanced-engineering.md.MkETYNtq.js +50 -0
  213. package/packages/docs/.vitepress/dist/assets/user_advanced-engineering.md.MkETYNtq.lean.js +1 -0
  214. package/packages/docs/.vitepress/dist/assets/user_agent-setup.md.B54OLL2H.js +24 -0
  215. package/packages/docs/.vitepress/dist/assets/user_agent-setup.md.B54OLL2H.lean.js +1 -0
  216. package/packages/docs/.vitepress/dist/assets/user_beads-integration.md.BzdR5Fif.js +15 -0
  217. package/packages/docs/.vitepress/dist/assets/user_beads-integration.md.BzdR5Fif.lean.js +1 -0
  218. package/packages/docs/.vitepress/dist/assets/user_crowd-mcp-integration.md.C15kSdIJ.js +157 -0
  219. package/packages/docs/.vitepress/dist/assets/user_crowd-mcp-integration.md.C15kSdIJ.lean.js +1 -0
  220. package/packages/docs/.vitepress/dist/assets/user_custom-workflows.md.Cz4IYCXa.js +143 -0
  221. package/packages/docs/.vitepress/dist/assets/user_custom-workflows.md.Cz4IYCXa.lean.js +1 -0
  222. package/packages/docs/.vitepress/dist/assets/user_git-commit-feature.md.UcTvDR-O.js +1 -0
  223. package/packages/docs/.vitepress/dist/assets/user_git-commit-feature.md.UcTvDR-O.lean.js +1 -0
  224. package/packages/docs/.vitepress/dist/assets/user_how-it-works.md.DiOXNgaL.js +23 -0
  225. package/packages/docs/.vitepress/dist/assets/user_how-it-works.md.DiOXNgaL.lean.js +1 -0
  226. package/packages/docs/.vitepress/dist/assets/user_long-term-memory.md.DZh0tjNa.js +43 -0
  227. package/packages/docs/.vitepress/dist/assets/user_long-term-memory.md.DZh0tjNa.lean.js +1 -0
  228. package/packages/docs/.vitepress/dist/assets/user_packaged-workflows.md.s1HT89ZU.js +2 -0
  229. package/packages/docs/.vitepress/dist/assets/user_packaged-workflows.md.s1HT89ZU.lean.js +1 -0
  230. package/packages/docs/.vitepress/dist/assets/user_tutorial.md.Dmj8zLB2.js +3 -0
  231. package/packages/docs/.vitepress/dist/assets/user_tutorial.md.Dmj8zLB2.lean.js +1 -0
  232. package/packages/docs/.vitepress/dist/assets/user_workflow-selection.md.CrPGw9Hr.js +7 -0
  233. package/packages/docs/.vitepress/dist/assets/user_workflow-selection.md.CrPGw9Hr.lean.js +1 -0
  234. package/packages/docs/.vitepress/dist/assets/workflows.md.Bm5sGt3u.js +1 -0
  235. package/packages/docs/.vitepress/dist/assets/workflows.md.Bm5sGt3u.lean.js +1 -0
  236. package/packages/docs/.vitepress/dist/assets/workflows_adr.md.DEaXkbRp.js +1 -0
  237. package/packages/docs/.vitepress/dist/assets/workflows_adr.md.DEaXkbRp.lean.js +1 -0
  238. package/packages/docs/.vitepress/dist/assets/workflows_big-bang-conversion.md.BA5R1LxZ.js +1 -0
  239. package/packages/docs/.vitepress/dist/assets/workflows_big-bang-conversion.md.BA5R1LxZ.lean.js +1 -0
  240. package/packages/docs/.vitepress/dist/assets/workflows_boundary-testing.md.DBcYnMhx.js +1 -0
  241. package/packages/docs/.vitepress/dist/assets/workflows_boundary-testing.md.DBcYnMhx.lean.js +1 -0
  242. package/packages/docs/.vitepress/dist/assets/workflows_bugfix.md.CZRCL0Hp.js +1 -0
  243. package/packages/docs/.vitepress/dist/assets/workflows_bugfix.md.CZRCL0Hp.lean.js +1 -0
  244. package/packages/docs/.vitepress/dist/assets/workflows_business-analysis.md.fGLml8Hw.js +1 -0
  245. package/packages/docs/.vitepress/dist/assets/workflows_business-analysis.md.fGLml8Hw.lean.js +1 -0
  246. package/packages/docs/.vitepress/dist/assets/workflows_c4-analysis.md.Dnssqzuf.js +1 -0
  247. package/packages/docs/.vitepress/dist/assets/workflows_c4-analysis.md.Dnssqzuf.lean.js +1 -0
  248. package/packages/docs/.vitepress/dist/assets/workflows_epcc.md.M6DnIhpp.js +1 -0
  249. package/packages/docs/.vitepress/dist/assets/workflows_epcc.md.M6DnIhpp.lean.js +1 -0
  250. package/packages/docs/.vitepress/dist/assets/workflows_game-beginner.md.CNxzWLtd.js +1 -0
  251. package/packages/docs/.vitepress/dist/assets/workflows_game-beginner.md.CNxzWLtd.lean.js +1 -0
  252. package/packages/docs/.vitepress/dist/assets/workflows_greenfield.md.vx_g-WOe.js +1 -0
  253. package/packages/docs/.vitepress/dist/assets/workflows_greenfield.md.vx_g-WOe.lean.js +1 -0
  254. package/packages/docs/.vitepress/dist/assets/workflows_minor.md.DdnfwMf4.js +1 -0
  255. package/packages/docs/.vitepress/dist/assets/workflows_minor.md.DdnfwMf4.lean.js +1 -0
  256. package/packages/docs/.vitepress/dist/assets/workflows_posts.md.SOldXvq7.js +1 -0
  257. package/packages/docs/.vitepress/dist/assets/workflows_posts.md.SOldXvq7.lean.js +1 -0
  258. package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix-crowd.md.-lSf42gJ.js +1 -0
  259. package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix-crowd.md.-lSf42gJ.lean.js +1 -0
  260. package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix.md.oRAsEVbc.js +1 -0
  261. package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix.md.oRAsEVbc.lean.js +1 -0
  262. package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature-crowd.md.DAtnfCAd.js +1 -0
  263. package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature-crowd.md.DAtnfCAd.lean.js +1 -0
  264. package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature.md.Ce3-H_g3.js +1 -0
  265. package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature.md.Ce3-H_g3.lean.js +1 -0
  266. package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield-crowd.md.8DUvcmLe.js +1 -0
  267. package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield-crowd.md.8DUvcmLe.lean.js +1 -0
  268. package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield.md.eEN6U0J4.js +1 -0
  269. package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield.md.eEN6U0J4.lean.js +1 -0
  270. package/packages/docs/.vitepress/dist/assets/workflows_slides.md.Cqt-19_1.js +1 -0
  271. package/packages/docs/.vitepress/dist/assets/workflows_slides.md.Cqt-19_1.lean.js +1 -0
  272. package/packages/docs/.vitepress/dist/assets/workflows_tdd.md.BjVC69tu.js +1 -0
  273. package/packages/docs/.vitepress/dist/assets/workflows_tdd.md.BjVC69tu.lean.js +1 -0
  274. package/packages/docs/.vitepress/dist/assets/workflows_waterfall.md.CL6jTZP9.js +1 -0
  275. package/packages/docs/.vitepress/dist/assets/workflows_waterfall.md.CL6jTZP9.lean.js +1 -0
  276. package/packages/docs/.vitepress/dist/dev/ARCHITECTURE.html +155 -0
  277. package/packages/docs/.vitepress/dist/dev/DEVELOPMENT.html +97 -0
  278. package/packages/docs/.vitepress/dist/dev/LOGGING.html +59 -0
  279. package/packages/docs/.vitepress/dist/dev/PUBLISHING.html +30 -0
  280. package/packages/docs/.vitepress/dist/hashmap.json +1 -0
  281. package/packages/docs/.vitepress/dist/index.html +27 -0
  282. package/packages/docs/.vitepress/dist/user/advanced-engineering.html +75 -0
  283. package/packages/docs/.vitepress/dist/user/agent-setup.html +49 -0
  284. package/packages/docs/.vitepress/dist/user/beads-integration.html +40 -0
  285. package/packages/docs/.vitepress/dist/user/crowd-mcp-integration.html +182 -0
  286. package/packages/docs/.vitepress/dist/user/custom-workflows.html +168 -0
  287. package/packages/docs/.vitepress/dist/user/git-commit-feature.html +30 -0
  288. package/packages/docs/.vitepress/dist/user/how-it-works.html +48 -0
  289. package/packages/docs/.vitepress/dist/user/long-term-memory.html +68 -0
  290. package/packages/docs/.vitepress/dist/user/packaged-workflows.html +27 -0
  291. package/packages/docs/.vitepress/dist/user/tutorial.html +28 -0
  292. package/packages/docs/.vitepress/dist/user/workflow-selection.html +32 -0
  293. package/packages/docs/.vitepress/dist/vp-icons.css +0 -0
  294. package/packages/docs/.vitepress/dist/workflows/adr.html +26 -0
  295. package/packages/docs/.vitepress/dist/workflows/adr.yaml +157 -0
  296. package/packages/docs/.vitepress/dist/workflows/big-bang-conversion.html +26 -0
  297. package/packages/docs/.vitepress/dist/workflows/big-bang-conversion.yaml +592 -0
  298. package/packages/docs/.vitepress/dist/workflows/boundary-testing.html +26 -0
  299. package/packages/docs/.vitepress/dist/workflows/boundary-testing.yaml +376 -0
  300. package/packages/docs/.vitepress/dist/workflows/bugfix.html +26 -0
  301. package/packages/docs/.vitepress/dist/workflows/bugfix.yaml +177 -0
  302. package/packages/docs/.vitepress/dist/workflows/business-analysis.html +26 -0
  303. package/packages/docs/.vitepress/dist/workflows/business-analysis.yaml +597 -0
  304. package/packages/docs/.vitepress/dist/workflows/c4-analysis.html +26 -0
  305. package/packages/docs/.vitepress/dist/workflows/c4-analysis.yaml +471 -0
  306. package/packages/docs/.vitepress/dist/workflows/epcc.html +26 -0
  307. package/packages/docs/.vitepress/dist/workflows/epcc.yaml +183 -0
  308. package/packages/docs/.vitepress/dist/workflows/game-beginner.html +26 -0
  309. package/packages/docs/.vitepress/dist/workflows/game-beginner.yaml +434 -0
  310. package/packages/docs/.vitepress/dist/workflows/greenfield.html +26 -0
  311. package/packages/docs/.vitepress/dist/workflows/greenfield.yaml +201 -0
  312. package/packages/docs/.vitepress/dist/workflows/minor.html +26 -0
  313. package/packages/docs/.vitepress/dist/workflows/minor.yaml +138 -0
  314. package/packages/docs/.vitepress/dist/workflows/posts.html +26 -0
  315. package/packages/docs/.vitepress/dist/workflows/posts.yaml +193 -0
  316. package/packages/docs/.vitepress/dist/workflows/sdd-bugfix-crowd.html +26 -0
  317. package/packages/docs/.vitepress/dist/workflows/sdd-bugfix-crowd.yaml +608 -0
  318. package/packages/docs/.vitepress/dist/workflows/sdd-bugfix.html +26 -0
  319. package/packages/docs/.vitepress/dist/workflows/sdd-bugfix.yaml +381 -0
  320. package/packages/docs/.vitepress/dist/workflows/sdd-feature-crowd.html +26 -0
  321. package/packages/docs/.vitepress/dist/workflows/sdd-feature-crowd.yaml +713 -0
  322. package/packages/docs/.vitepress/dist/workflows/sdd-feature.html +26 -0
  323. package/packages/docs/.vitepress/dist/workflows/sdd-feature.yaml +471 -0
  324. package/packages/docs/.vitepress/dist/workflows/sdd-greenfield-crowd.html +26 -0
  325. package/packages/docs/.vitepress/dist/workflows/sdd-greenfield-crowd.yaml +336 -0
  326. package/packages/docs/.vitepress/dist/workflows/sdd-greenfield.html +26 -0
  327. package/packages/docs/.vitepress/dist/workflows/sdd-greenfield.yaml +463 -0
  328. package/packages/docs/.vitepress/dist/workflows/slides.html +26 -0
  329. package/packages/docs/.vitepress/dist/workflows/slides.yaml +237 -0
  330. package/packages/docs/.vitepress/dist/workflows/tdd.html +26 -0
  331. package/packages/docs/.vitepress/dist/workflows/tdd.yaml +160 -0
  332. package/packages/docs/.vitepress/dist/workflows/waterfall.html +26 -0
  333. package/packages/docs/.vitepress/dist/workflows/waterfall.yaml +209 -0
  334. package/packages/docs/.vitepress/dist/workflows.html +26 -0
  335. package/packages/docs/package.json +32 -0
  336. package/packages/mcp-server/dist/index.js +10546 -0
  337. package/packages/mcp-server/package.json +41 -0
  338. package/packages/mcp-server/resources/agents/architect.yaml +61 -0
  339. package/packages/mcp-server/resources/agents/business-analyst.yaml +60 -0
  340. package/packages/mcp-server/resources/agents/developer.yaml +61 -0
  341. package/packages/mcp-server/resources/templates/architecture/arc42/arc42-template-EN.md +1077 -0
  342. package/packages/mcp-server/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio-2023.png +0 -0
  343. package/packages/mcp-server/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio.png +0 -0
  344. package/packages/mcp-server/resources/templates/architecture/arc42/images/05_building_blocks-EN.png +0 -0
  345. package/packages/mcp-server/resources/templates/architecture/arc42/images/08-concepts-EN.drawio.png +0 -0
  346. package/packages/mcp-server/resources/templates/architecture/arc42/images/arc42-logo.png +0 -0
  347. package/packages/mcp-server/resources/templates/architecture/c4.md +224 -0
  348. package/packages/mcp-server/resources/templates/architecture/freestyle.md +53 -0
  349. package/packages/mcp-server/resources/templates/architecture/game.md +250 -0
  350. package/packages/mcp-server/resources/templates/architecture/none.md +17 -0
  351. package/packages/mcp-server/resources/templates/design/comprehensive.md +207 -0
  352. package/packages/mcp-server/resources/templates/design/freestyle.md +37 -0
  353. package/packages/mcp-server/resources/templates/design/game.md +66 -0
  354. package/packages/mcp-server/resources/templates/design/none.md +17 -0
  355. package/packages/mcp-server/resources/templates/requirements/ears.md +90 -0
  356. package/packages/mcp-server/resources/templates/requirements/freestyle.md +42 -0
  357. package/packages/mcp-server/resources/templates/requirements/game.md +162 -0
  358. package/packages/mcp-server/resources/templates/requirements/none.md +17 -0
  359. package/packages/mcp-server/resources/templates/skills/POWER.md +23 -0
  360. package/packages/mcp-server/resources/templates/skills/SKILL.md +19 -0
  361. package/packages/mcp-server/resources/workflows/adr.yaml +157 -0
  362. package/packages/mcp-server/resources/workflows/big-bang-conversion.yaml +592 -0
  363. package/packages/mcp-server/resources/workflows/boundary-testing.yaml +376 -0
  364. package/packages/mcp-server/resources/workflows/bugfix.yaml +177 -0
  365. package/packages/mcp-server/resources/workflows/business-analysis.yaml +597 -0
  366. package/packages/mcp-server/resources/workflows/c4-analysis.yaml +471 -0
  367. package/packages/mcp-server/resources/workflows/epcc.yaml +183 -0
  368. package/packages/mcp-server/resources/workflows/game-beginner.yaml +434 -0
  369. package/packages/mcp-server/resources/workflows/greenfield.yaml +201 -0
  370. package/packages/mcp-server/resources/workflows/minor.yaml +138 -0
  371. package/packages/mcp-server/resources/workflows/posts.yaml +193 -0
  372. package/packages/mcp-server/resources/workflows/sdd-bugfix-crowd.yaml +608 -0
  373. package/packages/mcp-server/resources/workflows/sdd-bugfix.yaml +381 -0
  374. package/packages/mcp-server/resources/workflows/sdd-feature-crowd.yaml +713 -0
  375. package/packages/mcp-server/resources/workflows/sdd-feature.yaml +471 -0
  376. package/packages/mcp-server/resources/workflows/sdd-greenfield-crowd.yaml +336 -0
  377. package/packages/mcp-server/resources/workflows/sdd-greenfield.yaml +463 -0
  378. package/packages/mcp-server/resources/workflows/slides.yaml +237 -0
  379. package/packages/mcp-server/resources/workflows/tdd.yaml +160 -0
  380. package/packages/mcp-server/resources/workflows/waterfall.yaml +209 -0
  381. package/packages/visualizer/dist/WorkflowVisualizer.vue +1147 -0
  382. package/packages/visualizer/dist/index.ts +17 -0
  383. package/packages/visualizer/dist/main.ts +673 -0
  384. package/packages/visualizer/dist/services/BundledWorkflows.ts +35 -0
  385. package/packages/visualizer/dist/services/FileUploadHandler.ts +166 -0
  386. package/packages/visualizer/dist/services/WorkflowLoader.ts +198 -0
  387. package/packages/visualizer/dist/services/YamlParser.ts +248 -0
  388. package/packages/visualizer/dist/services/workflow-list.ts +23 -0
  389. package/packages/visualizer/dist/types/ui-types.ts +84 -0
  390. package/packages/visualizer/dist/types/visualization-types.ts +95 -0
  391. package/packages/visualizer/dist/types/vite-env.d.ts +12 -0
  392. package/packages/visualizer/dist/utils/DomHelpers.ts +206 -0
  393. package/packages/visualizer/dist/utils/ErrorHandler.ts +170 -0
  394. package/packages/visualizer/dist/utils/PlantUMLEncoder.ts +121 -0
  395. package/packages/visualizer/dist/visualization/DiagramRenderer.ts +430 -0
  396. package/packages/visualizer/dist/visualization/LayoutEngine.ts +339 -0
  397. package/packages/visualizer/dist/visualization/PlantUMLRenderer.ts +507 -0
  398. package/packages/visualizer/dist/visualization/StateRenderer.ts +339 -0
  399. package/packages/visualizer/dist/visualization/TransitionRenderer.ts +432 -0
  400. package/packages/visualizer/package.json +39 -0
  401. package/resources/.DS_Store +0 -0
  402. package/resources/agents/architect.yaml +61 -0
  403. package/resources/agents/business-analyst.yaml +60 -0
  404. package/resources/agents/developer.yaml +61 -0
  405. package/resources/state-machine-schema.json +114 -0
  406. package/resources/templates/architecture/arc42/arc42-template-EN.md +1077 -0
  407. package/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio-2023.png +0 -0
  408. package/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio.png +0 -0
  409. package/resources/templates/architecture/arc42/images/05_building_blocks-EN.png +0 -0
  410. package/resources/templates/architecture/arc42/images/08-concepts-EN.drawio.png +0 -0
  411. package/resources/templates/architecture/arc42/images/arc42-logo.png +0 -0
  412. package/resources/templates/architecture/c4.md +224 -0
  413. package/resources/templates/architecture/freestyle.md +53 -0
  414. package/resources/templates/architecture/game.md +250 -0
  415. package/resources/templates/architecture/none.md +17 -0
  416. package/resources/templates/design/comprehensive.md +207 -0
  417. package/resources/templates/design/freestyle.md +37 -0
  418. package/resources/templates/design/game.md +66 -0
  419. package/resources/templates/design/none.md +17 -0
  420. package/resources/templates/requirements/ears.md +90 -0
  421. package/resources/templates/requirements/freestyle.md +42 -0
  422. package/resources/templates/requirements/game.md +162 -0
  423. package/resources/templates/requirements/none.md +17 -0
  424. package/resources/templates/skills/POWER.md +23 -0
  425. package/resources/templates/skills/SKILL.md +19 -0
  426. package/resources/workflows/adr.yaml +157 -0
  427. package/resources/workflows/big-bang-conversion.yaml +592 -0
  428. package/resources/workflows/boundary-testing.yaml +376 -0
  429. package/resources/workflows/bugfix.yaml +177 -0
  430. package/resources/workflows/business-analysis.yaml +597 -0
  431. package/resources/workflows/c4-analysis.yaml +471 -0
  432. package/resources/workflows/epcc.yaml +183 -0
  433. package/resources/workflows/game-beginner.yaml +434 -0
  434. package/resources/workflows/greenfield.yaml +201 -0
  435. package/resources/workflows/minor.yaml +138 -0
  436. package/resources/workflows/posts.yaml +193 -0
  437. package/resources/workflows/sdd-bugfix-crowd.yaml +608 -0
  438. package/resources/workflows/sdd-bugfix.yaml +381 -0
  439. package/resources/workflows/sdd-feature-crowd.yaml +713 -0
  440. package/resources/workflows/sdd-feature.yaml +471 -0
  441. package/resources/workflows/sdd-greenfield-crowd.yaml +336 -0
  442. package/resources/workflows/sdd-greenfield.yaml +463 -0
  443. package/resources/workflows/slides.yaml +237 -0
  444. package/resources/workflows/tdd.yaml +160 -0
  445. package/resources/workflows/waterfall.yaml +209 -0
  446. package/dist/components/beads/beads-instruction-generator.d.ts +0 -44
  447. package/dist/components/beads/beads-instruction-generator.d.ts.map +0 -1
  448. package/dist/components/beads/beads-instruction-generator.js +0 -160
  449. package/dist/components/beads/beads-instruction-generator.js.map +0 -1
  450. package/dist/components/beads/beads-plan-manager.d.ts.map +0 -1
  451. package/dist/components/beads/beads-plan-manager.js.map +0 -1
  452. package/dist/components/beads/beads-task-backend-client.d.ts +0 -43
  453. package/dist/components/beads/beads-task-backend-client.d.ts.map +0 -1
  454. package/dist/components/beads/beads-task-backend-client.js +0 -175
  455. package/dist/components/beads/beads-task-backend-client.js.map +0 -1
  456. package/dist/index.d.ts +0 -9
  457. package/dist/index.d.ts.map +0 -1
  458. package/dist/index.js +0 -74
  459. package/dist/index.js.map +0 -1
  460. package/dist/notification-service.d.ts +0 -14
  461. package/dist/notification-service.d.ts.map +0 -1
  462. package/dist/notification-service.js +0 -18
  463. package/dist/notification-service.js.map +0 -1
  464. package/dist/plugin-system/beads-plugin.d.ts +0 -71
  465. package/dist/plugin-system/beads-plugin.d.ts.map +0 -1
  466. package/dist/plugin-system/beads-plugin.js +0 -465
  467. package/dist/plugin-system/beads-plugin.js.map +0 -1
  468. package/dist/plugin-system/commit-plugin.d.ts +0 -40
  469. package/dist/plugin-system/commit-plugin.d.ts.map +0 -1
  470. package/dist/plugin-system/commit-plugin.js +0 -204
  471. package/dist/plugin-system/commit-plugin.js.map +0 -1
  472. package/dist/plugin-system/index.d.ts +0 -9
  473. package/dist/plugin-system/index.d.ts.map +0 -1
  474. package/dist/plugin-system/index.js +0 -9
  475. package/dist/plugin-system/index.js.map +0 -1
  476. package/dist/plugin-system/plugin-interfaces.d.ts +0 -98
  477. package/dist/plugin-system/plugin-interfaces.d.ts.map +0 -1
  478. package/dist/plugin-system/plugin-interfaces.js +0 -9
  479. package/dist/plugin-system/plugin-interfaces.js.map +0 -1
  480. package/dist/plugin-system/plugin-registry.d.ts +0 -44
  481. package/dist/plugin-system/plugin-registry.d.ts.map +0 -1
  482. package/dist/plugin-system/plugin-registry.js +0 -132
  483. package/dist/plugin-system/plugin-registry.js.map +0 -1
  484. package/dist/resource-handlers/conversation-state.d.ts +0 -15
  485. package/dist/resource-handlers/conversation-state.d.ts.map +0 -1
  486. package/dist/resource-handlers/conversation-state.js +0 -40
  487. package/dist/resource-handlers/conversation-state.js.map +0 -1
  488. package/dist/resource-handlers/development-plan.d.ts +0 -14
  489. package/dist/resource-handlers/development-plan.d.ts.map +0 -1
  490. package/dist/resource-handlers/development-plan.js +0 -31
  491. package/dist/resource-handlers/development-plan.js.map +0 -1
  492. package/dist/resource-handlers/index.d.ts +0 -24
  493. package/dist/resource-handlers/index.d.ts.map +0 -1
  494. package/dist/resource-handlers/index.js +0 -62
  495. package/dist/resource-handlers/index.js.map +0 -1
  496. package/dist/resource-handlers/system-prompt.d.ts +0 -15
  497. package/dist/resource-handlers/system-prompt.d.ts.map +0 -1
  498. package/dist/resource-handlers/system-prompt.js +0 -40
  499. package/dist/resource-handlers/system-prompt.js.map +0 -1
  500. package/dist/resource-handlers/workflow-resource.d.ts +0 -15
  501. package/dist/resource-handlers/workflow-resource.d.ts.map +0 -1
  502. package/dist/resource-handlers/workflow-resource.js +0 -85
  503. package/dist/resource-handlers/workflow-resource.js.map +0 -1
  504. package/dist/response-renderer.d.ts +0 -30
  505. package/dist/response-renderer.d.ts.map +0 -1
  506. package/dist/response-renderer.js +0 -94
  507. package/dist/response-renderer.js.map +0 -1
  508. package/dist/server-config.d.ts +0 -34
  509. package/dist/server-config.d.ts.map +0 -1
  510. package/dist/server-config.js +0 -503
  511. package/dist/server-config.js.map +0 -1
  512. package/dist/server-helpers.d.ts +0 -70
  513. package/dist/server-helpers.d.ts.map +0 -1
  514. package/dist/server-helpers.js +0 -171
  515. package/dist/server-helpers.js.map +0 -1
  516. package/dist/server-implementation.d.ts +0 -74
  517. package/dist/server-implementation.d.ts.map +0 -1
  518. package/dist/server-implementation.js +0 -201
  519. package/dist/server-implementation.js.map +0 -1
  520. package/dist/server.d.ts +0 -6
  521. package/dist/server.d.ts.map +0 -1
  522. package/dist/server.js +0 -5
  523. package/dist/server.js.map +0 -1
  524. package/dist/tool-handlers/base-tool-handler.d.ts +0 -50
  525. package/dist/tool-handlers/base-tool-handler.d.ts.map +0 -1
  526. package/dist/tool-handlers/base-tool-handler.js +0 -81
  527. package/dist/tool-handlers/base-tool-handler.js.map +0 -1
  528. package/dist/tool-handlers/conduct-review.d.ts +0 -49
  529. package/dist/tool-handlers/conduct-review.d.ts.map +0 -1
  530. package/dist/tool-handlers/conduct-review.js +0 -104
  531. package/dist/tool-handlers/conduct-review.js.map +0 -1
  532. package/dist/tool-handlers/get-tool-info.d.ts +0 -75
  533. package/dist/tool-handlers/get-tool-info.d.ts.map +0 -1
  534. package/dist/tool-handlers/get-tool-info.js +0 -168
  535. package/dist/tool-handlers/get-tool-info.js.map +0 -1
  536. package/dist/tool-handlers/index.d.ts +0 -41
  537. package/dist/tool-handlers/index.d.ts.map +0 -1
  538. package/dist/tool-handlers/index.js +0 -71
  539. package/dist/tool-handlers/index.js.map +0 -1
  540. package/dist/tool-handlers/list-workflows.d.ts +0 -35
  541. package/dist/tool-handlers/list-workflows.d.ts.map +0 -1
  542. package/dist/tool-handlers/list-workflows.js +0 -43
  543. package/dist/tool-handlers/list-workflows.js.map +0 -1
  544. package/dist/tool-handlers/no-idea.d.ts +0 -41
  545. package/dist/tool-handlers/no-idea.d.ts.map +0 -1
  546. package/dist/tool-handlers/no-idea.js +0 -29
  547. package/dist/tool-handlers/no-idea.js.map +0 -1
  548. package/dist/tool-handlers/proceed-to-phase.d.ts +0 -41
  549. package/dist/tool-handlers/proceed-to-phase.d.ts.map +0 -1
  550. package/dist/tool-handlers/proceed-to-phase.js +0 -165
  551. package/dist/tool-handlers/proceed-to-phase.js.map +0 -1
  552. package/dist/tool-handlers/reset-development.d.ts +0 -31
  553. package/dist/tool-handlers/reset-development.d.ts.map +0 -1
  554. package/dist/tool-handlers/reset-development.js +0 -48
  555. package/dist/tool-handlers/reset-development.js.map +0 -1
  556. package/dist/tool-handlers/resume-workflow.d.ts +0 -87
  557. package/dist/tool-handlers/resume-workflow.d.ts.map +0 -1
  558. package/dist/tool-handlers/resume-workflow.js +0 -212
  559. package/dist/tool-handlers/resume-workflow.js.map +0 -1
  560. package/dist/tool-handlers/setup-project-docs.d.ts +0 -37
  561. package/dist/tool-handlers/setup-project-docs.d.ts.map +0 -1
  562. package/dist/tool-handlers/setup-project-docs.js +0 -138
  563. package/dist/tool-handlers/setup-project-docs.js.map +0 -1
  564. package/dist/tool-handlers/start-development.d.ts +0 -79
  565. package/dist/tool-handlers/start-development.d.ts.map +0 -1
  566. package/dist/tool-handlers/start-development.js +0 -484
  567. package/dist/tool-handlers/start-development.js.map +0 -1
  568. package/dist/tool-handlers/whats-next.d.ts +0 -41
  569. package/dist/tool-handlers/whats-next.d.ts.map +0 -1
  570. package/dist/tool-handlers/whats-next.js +0 -123
  571. package/dist/tool-handlers/whats-next.js.map +0 -1
  572. package/dist/types.d.ts +0 -119
  573. package/dist/types.d.ts.map +0 -1
  574. package/dist/types.js +0 -5
  575. package/dist/version-info.d.ts +0 -30
  576. package/dist/version-info.d.ts.map +0 -1
  577. package/dist/version-info.js +0 -178
  578. package/dist/version-info.js.map +0 -1
  579. package/skill/SKILL.md +0 -28
  580. /package/{dist → packages/core/dist}/types.js.map +0 -0
@@ -0,0 +1,507 @@
1
+ import { YamlStateMachine, YamlState } from '../types/ui-types';
2
+ import {
3
+ encodePlantUML,
4
+ encodePlantUMLFallback,
5
+ } from '../utils/PlantUMLEncoder';
6
+
7
+ export class PlantUMLRenderer {
8
+ private container: HTMLElement;
9
+ private onElementClick?: (
10
+ elementType: 'state' | 'transition' | 'clear-selection',
11
+ elementId: string,
12
+ data?: unknown
13
+ ) => void;
14
+
15
+ constructor(container: HTMLElement) {
16
+ this.container = container;
17
+ }
18
+
19
+ /**
20
+ * Set click handler for interactive elements
21
+ */
22
+ public setClickHandler(
23
+ handler: (
24
+ elementType: 'state' | 'transition' | 'clear-selection',
25
+ elementId: string,
26
+ data?: unknown
27
+ ) => void
28
+ ): void {
29
+ this.onElementClick = handler;
30
+ }
31
+
32
+ /**
33
+ /**
34
+ * Render workflow using PlantUML with auto-layout
35
+ */
36
+ public async renderWorkflow(workflow: YamlStateMachine): Promise<void> {
37
+ this.container.innerHTML = '';
38
+ this.container.style.overflow = 'auto';
39
+ this.container.style.height = '100%';
40
+
41
+ const plantUMLCode = this.generatePlantUMLStateMachine(workflow);
42
+ const diagramUrl = await this.createPlantUMLUrl(plantUMLCode);
43
+
44
+ // Create container with diagram and interactive overlay
45
+ const diagramContainer = document.createElement('div');
46
+ diagramContainer.style.position = 'relative';
47
+ diagramContainer.style.padding = '20px';
48
+ diagramContainer.style.textAlign = 'center';
49
+
50
+ // Add title
51
+ const title = document.createElement('div');
52
+ title.innerHTML = `
53
+ <div style="
54
+ display: flex;
55
+ align-items: flex-start;
56
+ justify-content: center;
57
+ gap: 8px;
58
+ ">
59
+ <h2 style="
60
+ color: #1e293b;
61
+ margin: 0;
62
+ font-size: 1.5rem;
63
+ cursor: pointer;
64
+ padding: 8px 12px;
65
+ border-radius: 6px;
66
+ transition: background-color 0.2s ease;
67
+ "
68
+ class="workflow-title-clickable"
69
+ title="Click to show workflow information"
70
+ >${workflow.name} workflow</h2>
71
+ ${
72
+ workflow.metadata?.domain
73
+ ? `<span class="domain-pill" data-domain="${workflow.metadata.domain}" style="
74
+ display: inline-block;
75
+ background-color: #dbeafe;
76
+ color: #1e40af;
77
+ padding: 2px;
78
+ border-radius: 12px;
79
+ font-size: 0.7rem;
80
+ font-weight: 600;
81
+ border: 1px solid #93c5fd;
82
+ text-transform: uppercase;
83
+ letter-spacing: 0.5px;
84
+ margin-top: 6px;
85
+ ">${workflow.metadata.domain}</span>`
86
+ : ''
87
+ }
88
+ </div>
89
+ <p style="color: #64748b; margin-bottom: 20px; text-align: center;">${workflow.description || ''}</p>
90
+ `;
91
+
92
+ // Add click handler for workflow title
93
+ const titleElement = title.querySelector(
94
+ '.workflow-title-clickable'
95
+ ) as HTMLElement;
96
+ if (titleElement) {
97
+ titleElement.addEventListener('click', () => {
98
+ if (this.onElementClick) {
99
+ this.onElementClick('clear-selection', '', null);
100
+ }
101
+ });
102
+
103
+ // Add hover effects
104
+ titleElement.addEventListener('mouseenter', () => {
105
+ titleElement.style.backgroundColor = '#f8fafc';
106
+ });
107
+
108
+ titleElement.addEventListener('mouseleave', () => {
109
+ titleElement.style.backgroundColor = 'transparent';
110
+ });
111
+ }
112
+
113
+ diagramContainer.appendChild(title);
114
+
115
+ // Add PlantUML diagram with SVG proxy for interactivity
116
+ const diagramWrapper = document.createElement('div');
117
+ diagramWrapper.style.position = 'relative';
118
+ diagramWrapper.style.display = 'inline-block';
119
+
120
+ // Instead of img, fetch the SVG directly and embed it
121
+ this.loadInteractiveSVG(diagramUrl, diagramWrapper, workflow);
122
+
123
+ diagramContainer.appendChild(diagramWrapper);
124
+
125
+ this.container.appendChild(diagramContainer);
126
+ }
127
+
128
+ /**
129
+ * Generate PlantUML state machine code with proper syntax and auto-layout
130
+ */
131
+ private generatePlantUMLStateMachine(workflow: YamlStateMachine): string {
132
+ const lines: string[] = [];
133
+
134
+ lines.push('@startuml');
135
+ lines.push('!theme plain');
136
+ lines.push('skinparam backgroundColor white');
137
+ lines.push('skinparam state {');
138
+ lines.push(' BackgroundColor white');
139
+ lines.push(' BorderColor #2563eb');
140
+ lines.push(' FontColor #1e293b');
141
+ lines.push(' FontSize 12');
142
+ lines.push('}');
143
+ lines.push('skinparam arrow {');
144
+ lines.push(' Color #94a3b8');
145
+ lines.push(' FontColor #64748b');
146
+ lines.push(' FontSize 10');
147
+ lines.push('}');
148
+ lines.push('');
149
+
150
+ // Add initial state
151
+ lines.push(`[*] --> ${workflow.initial_state}`);
152
+ lines.push('');
153
+
154
+ // Add states with descriptions
155
+ for (const [stateName, stateConfig] of Object.entries(workflow.states) as [
156
+ string,
157
+ YamlState,
158
+ ][]) {
159
+ if (stateConfig.description) {
160
+ lines.push(`${stateName} : ${stateConfig.description}`);
161
+ }
162
+ }
163
+ lines.push('');
164
+
165
+ // Add transitions
166
+ for (const [stateName, stateConfig] of Object.entries(workflow.states) as [
167
+ string,
168
+ YamlState,
169
+ ][]) {
170
+ if (stateConfig.transitions) {
171
+ for (const transition of stateConfig.transitions) {
172
+ const label = transition.trigger.replace(/_/g, ' ');
173
+
174
+ // Check for review perspectives and add review icon
175
+ const hasReviews =
176
+ transition.review_perspectives &&
177
+ transition.review_perspectives.length > 0;
178
+ // Add review indicator
179
+ let reviewIcon = '';
180
+ if (hasReviews) {
181
+ reviewIcon = ' 🛡️';
182
+ }
183
+
184
+ const finalLabel = `${label}${reviewIcon}`;
185
+ lines.push(`${stateName} --> ${transition.to} : ${finalLabel}`);
186
+ }
187
+ }
188
+ }
189
+
190
+ // Add final states if any
191
+ const finalStates = Object.keys(workflow.states).filter(state => {
192
+ const stateConfig = workflow.states[state];
193
+ return (
194
+ stateConfig &&
195
+ (!stateConfig.transitions || stateConfig.transitions.length === 0)
196
+ );
197
+ });
198
+ if (finalStates.length > 0) {
199
+ lines.push('');
200
+ for (const state of finalStates) {
201
+ lines.push(`${state} --> [*]`);
202
+ }
203
+ }
204
+
205
+ lines.push('');
206
+ lines.push('@enduml');
207
+
208
+ return lines.join('\n');
209
+ }
210
+
211
+ /**
212
+ * Create PlantUML web service URL with proper encoding
213
+ */
214
+ private async createPlantUMLUrl(plantUMLCode: string): Promise<string> {
215
+ try {
216
+ // Try DEFLATE encoding first (proper PlantUML format)
217
+ const encoded = await encodePlantUML(plantUMLCode);
218
+ return `https://www.plantuml.com/plantuml/svg/${encoded}`;
219
+ } catch (error) {
220
+ console.warn('DEFLATE encoding failed, trying fallback:', error);
221
+ try {
222
+ // Fallback to base64 with ~1 header
223
+ const encoded = await encodePlantUMLFallback(plantUMLCode);
224
+ return `https://www.plantuml.com/plantuml/svg/${encoded}`;
225
+ } catch (fallbackError) {
226
+ console.error('All PlantUML encoding methods failed:', fallbackError);
227
+ // Final fallback to simple URL encoding
228
+ const encoded = encodeURIComponent(plantUMLCode);
229
+ return `https://www.plantuml.com/plantuml/svg/~1${encoded}`;
230
+ }
231
+ }
232
+ }
233
+
234
+ /**
235
+ * Load SVG directly and make it interactive
236
+ */
237
+ private async loadInteractiveSVG(
238
+ svgUrl: string,
239
+ container: HTMLElement,
240
+ workflow: YamlStateMachine
241
+ ): Promise<void> {
242
+ try {
243
+ const response = await fetch(svgUrl);
244
+
245
+ if (!response.ok) {
246
+ throw new Error(`Failed to fetch SVG: ${response.status}`);
247
+ }
248
+
249
+ const svgText = await response.text();
250
+
251
+ // Create a div to hold the SVG
252
+ const svgContainer = document.createElement('div');
253
+ svgContainer.innerHTML = svgText;
254
+ svgContainer.style.border = '1px solid #e2e8f0';
255
+ svgContainer.style.borderRadius = '8px';
256
+ svgContainer.style.backgroundColor = 'white';
257
+ svgContainer.style.overflow = 'hidden';
258
+
259
+ const svgElement = svgContainer.querySelector('svg');
260
+ if (svgElement) {
261
+ // Make SVG responsive
262
+ svgElement.style.maxWidth = '100%';
263
+ svgElement.style.height = 'auto';
264
+ svgElement.style.display = 'block';
265
+
266
+ // Add interactivity to SVG elements
267
+ this.makeSVGInteractive(svgElement, workflow);
268
+ }
269
+
270
+ container.appendChild(svgContainer);
271
+ } catch (error) {
272
+ console.error('Failed to load interactive SVG:', error);
273
+ this.showError('Failed to load interactive diagram. Using fallback.');
274
+ this.renderFallbackDiagram();
275
+ }
276
+ }
277
+
278
+ /**
279
+ * Make SVG elements interactive by adding click handlers
280
+ */
281
+ private makeSVGInteractive(
282
+ svgElement: SVGSVGElement,
283
+ workflow: YamlStateMachine
284
+ ): void {
285
+ /**
286
+ * STATE DETECTION STRATEGY:
287
+ *
288
+ * PlantUML generates SVG where state elements don't have meaningful IDs that match
289
+ * state names. Instead, states appear as <g> elements with empty/random IDs, but
290
+ * they contain <text> elements with the actual state names.
291
+ *
292
+ * Strategy:
293
+ * 1. Find all <text> elements in the SVG
294
+ * 2. Check if text content matches any workflow state name
295
+ * 3. Navigate up to find the parent <g> element
296
+ * 4. Attach click handlers to the parent <g>
297
+ *
298
+ * This approach works because PlantUML consistently puts state names
299
+ * in <text> elements, even though the container IDs are not predictable.
300
+ */
301
+ const states = Object.keys(workflow.states);
302
+
303
+ // Find all text elements and check if their content matches a state name
304
+ const textElements = svgElement.querySelectorAll('text');
305
+ for (const textElement of textElements) {
306
+ const textContent = textElement.textContent?.trim();
307
+ if (textContent && states.includes(textContent)) {
308
+ // Found a text element with a state name, get its parent group
309
+ const group = textElement.closest('g');
310
+ if (group) {
311
+ const stateName = textContent;
312
+
313
+ // Make the entire group clickable
314
+ (group as unknown as HTMLElement).style.cursor = 'pointer';
315
+ (group as unknown as HTMLElement).style.transition = 'all 0.2s ease';
316
+
317
+ // Find the rect/shape element for hover effects
318
+ const shape = group.querySelector('rect, ellipse, polygon');
319
+ const originalFill = shape?.getAttribute('fill') || '#ffffff';
320
+ const originalStroke = shape?.getAttribute('stroke') || '#000000';
321
+
322
+ // Add hover effects
323
+ group.addEventListener('mouseenter', () => {
324
+ if (shape) {
325
+ shape.setAttribute('fill', '#e0f2fe');
326
+ shape.setAttribute('stroke', '#2563eb');
327
+ shape.setAttribute('stroke-width', '2');
328
+ }
329
+ });
330
+
331
+ group.addEventListener('mouseleave', () => {
332
+ if (shape) {
333
+ shape.setAttribute('fill', originalFill);
334
+ shape.setAttribute('stroke', originalStroke);
335
+ shape.setAttribute('stroke-width', '1');
336
+ }
337
+ });
338
+
339
+ // Add click handler
340
+ group.addEventListener('click', e => {
341
+ e.stopPropagation();
342
+ if (this.onElementClick) {
343
+ this.onElementClick(
344
+ 'state',
345
+ stateName,
346
+ workflow.states[stateName]
347
+ );
348
+ }
349
+ });
350
+ }
351
+ }
352
+ }
353
+
354
+ /**
355
+ * TRANSITION DETECTION STRATEGY:
356
+ *
357
+ * PlantUML generates transition elements as <g class="link"> with IDs like "lnk3",
358
+ * "lnk4", etc. These IDs don't contain source/target state information.
359
+ *
360
+ * The original code expected IDs like "link_reproduce_analyze" but PlantUML
361
+ * generates generic IDs like "lnk3". We can't rely on ID parsing.
362
+ *
363
+ * Strategy:
364
+ * 1. Find all <g class="link"> elements with IDs starting with "lnk"
365
+ * 2. Extract the transition label text from the <text> element inside
366
+ * 3. Use fuzzy text matching to find corresponding transition in workflow data
367
+ * 4. Match transition trigger text against the SVG label text
368
+ * 5. Attach click handlers with full transition data
369
+ *
370
+ * This approach works because:
371
+ * - PlantUML consistently puts transition labels in <text> elements
372
+ * - We can normalize text (underscores to spaces) for matching
373
+ * - We have access to complete workflow transition data for context
374
+ */
375
+ const linkGroups = svgElement.querySelectorAll('g.link[id^="lnk"]');
376
+ for (const linkGroup of linkGroups) {
377
+ const linkId = linkGroup.getAttribute('id');
378
+ if (linkId && linkId.startsWith('lnk')) {
379
+ // Make the entire link group clickable
380
+ (linkGroup as unknown as HTMLElement).style.cursor = 'pointer';
381
+ (linkGroup as unknown as HTMLElement).style.transition =
382
+ 'all 0.2s ease';
383
+
384
+ // Find path and text elements for hover effects
385
+ const pathEl = linkGroup.querySelector('path');
386
+ const textEl = linkGroup.querySelector('text');
387
+ const originalStroke = pathEl?.getAttribute('stroke') || '#94A3B8';
388
+ const originalTextFill = textEl?.getAttribute('fill') || '#64748B';
389
+
390
+ // Add hover effects
391
+ linkGroup.addEventListener('mouseenter', () => {
392
+ if (pathEl) {
393
+ pathEl.setAttribute('stroke', '#2563eb');
394
+ pathEl.setAttribute('stroke-width', '3');
395
+ }
396
+ if (textEl) {
397
+ textEl.setAttribute('fill', '#2563eb');
398
+ (textEl as unknown as HTMLElement).style.fontWeight = 'bold';
399
+ }
400
+ });
401
+
402
+ linkGroup.addEventListener('mouseleave', () => {
403
+ if (pathEl) {
404
+ pathEl.setAttribute('stroke', originalStroke);
405
+ pathEl.setAttribute('stroke-width', '1');
406
+ }
407
+ if (textEl) {
408
+ textEl.setAttribute('fill', originalTextFill);
409
+ (textEl as unknown as HTMLElement).style.fontWeight = 'normal';
410
+ }
411
+ });
412
+
413
+ // Add click handler - find transition by label text matching
414
+ linkGroup.addEventListener('click', e => {
415
+ e.stopPropagation();
416
+
417
+ // Try to find matching transition by analyzing the label text
418
+ const labelText = textEl?.textContent?.trim();
419
+ if (labelText) {
420
+ // Clean the label text (remove emoji/icons, normalize spaces)
421
+ const cleanLabel = labelText.replace(/[^\w\s]/g, '').trim();
422
+
423
+ // Search through all states to find matching transition
424
+ for (const [stateName, stateData] of Object.entries(
425
+ workflow.states
426
+ )) {
427
+ if (stateData.transitions) {
428
+ for (const transition of stateData.transitions) {
429
+ // Normalize trigger text: "bug_reproduced" -> "bug reproduced"
430
+ const cleanTrigger = transition.trigger.replace(/_/g, ' ');
431
+
432
+ // Fuzzy match: check if labels contain each other (case-insensitive)
433
+ if (
434
+ cleanTrigger
435
+ .toLowerCase()
436
+ .includes(cleanLabel.toLowerCase()) ||
437
+ cleanLabel
438
+ .toLowerCase()
439
+ .includes(cleanTrigger.toLowerCase())
440
+ ) {
441
+ // Found matching transition - attach complete data
442
+ if (this.onElementClick) {
443
+ this.onElementClick(
444
+ 'transition',
445
+ `${stateName}->${transition.to}`,
446
+ {
447
+ from: stateName,
448
+ to: transition.to,
449
+ trigger: transition.trigger,
450
+ instructions: transition.instructions,
451
+ additional_instructions:
452
+ transition.additional_instructions,
453
+ transition_reason: transition.transition_reason,
454
+ review_perspectives:
455
+ transition.review_perspectives || [],
456
+ }
457
+ );
458
+ }
459
+ return; // Exit once we find a match
460
+ }
461
+ }
462
+ }
463
+ }
464
+ }
465
+
466
+ // Note: If no transition mapping is found, the click is silently ignored
467
+ // This can happen if the PlantUML label doesn't match any workflow trigger text
468
+ });
469
+ }
470
+ }
471
+ }
472
+
473
+ /**
474
+ * Render fallback diagram if PlantUML fails
475
+ */
476
+ private renderFallbackDiagram(): void {
477
+ const fallbackDiv = document.createElement('div');
478
+ fallbackDiv.style.padding = '20px';
479
+ fallbackDiv.style.border = '2px dashed #94a3b8';
480
+ fallbackDiv.style.borderRadius = '8px';
481
+ fallbackDiv.style.backgroundColor = '#f8fafc';
482
+ fallbackDiv.style.textAlign = 'center';
483
+
484
+ fallbackDiv.innerHTML = `
485
+ <div style="color: #64748b; margin-bottom: 20px;">
486
+ <strong>⚠️ PlantUML diagram failed to load</strong><br>
487
+ <span style="font-size: 14px;">Using fallback interactive view</span>
488
+ </div>
489
+ `;
490
+
491
+ this.container.appendChild(fallbackDiv);
492
+ }
493
+
494
+ /**
495
+ * Show error message
496
+ */
497
+ private showError(message: string): void {
498
+ console.error(message);
499
+ }
500
+
501
+ /**
502
+ * Clear the container
503
+ */
504
+ public clear(): void {
505
+ this.container.innerHTML = '';
506
+ }
507
+ }