@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,387 @@
1
+ /**
2
+ * Beads Integration Utilities
3
+ *
4
+ * Provides utilities for integrating with beads distributed issue tracker:
5
+ * - Project epic creation
6
+ * - Phase task management
7
+ * - Task hierarchy setup
8
+ */
9
+ import { execSync } from 'node:child_process';
10
+ import { createLogger } from './logger.js';
11
+ const logger = createLogger('BeadsIntegration');
12
+ /**
13
+ * Beads integration manager for the workflows server
14
+ */
15
+ export class BeadsIntegration {
16
+ projectPath;
17
+ constructor(projectPath) {
18
+ this.projectPath = projectPath;
19
+ }
20
+ /**
21
+ * Ensure beads is initialized in the project directory
22
+ */
23
+ async ensureBeadsInitialized() {
24
+ try {
25
+ // Check if beads is already initialized by running a simple command
26
+ execSync('bd list --limit 1', {
27
+ cwd: this.projectPath,
28
+ encoding: 'utf-8',
29
+ stdio: ['ignore', 'pipe', 'pipe'],
30
+ });
31
+ // If we get here, beads is already initialized
32
+ return;
33
+ }
34
+ catch (error) {
35
+ const errorMessage = error instanceof Error ? error.message : String(error);
36
+ // Check if the error suggests beads is not initialized
37
+ if (errorMessage.includes('not initialized') ||
38
+ errorMessage.includes('no database') ||
39
+ errorMessage.includes('init')) {
40
+ logger.info('Beads not initialized, running bd init --no-db', {
41
+ projectPath: this.projectPath,
42
+ });
43
+ try {
44
+ // Initialize beads without database
45
+ execSync('bd init --no-db', {
46
+ cwd: this.projectPath,
47
+ encoding: 'utf-8',
48
+ stdio: ['ignore', 'pipe', 'pipe'],
49
+ });
50
+ logger.info('Successfully initialized beads in project', {
51
+ projectPath: this.projectPath,
52
+ });
53
+ }
54
+ catch (initError) {
55
+ const initErrorMessage = initError instanceof Error ? initError.message : String(initError);
56
+ logger.error('Failed to initialize beads', initError instanceof Error
57
+ ? initError
58
+ : new Error(initErrorMessage), { projectPath: this.projectPath });
59
+ throw new Error(`Failed to initialize beads: ${initErrorMessage}`);
60
+ }
61
+ }
62
+ else {
63
+ // Some other beads error, re-throw
64
+ throw error;
65
+ }
66
+ }
67
+ }
68
+ /**
69
+ * Create a project epic in beads for the development session
70
+ */
71
+ async createProjectEpic(projectName, workflowName, description, planFilename) {
72
+ // Validate parameters first
73
+ this.validateCreateEpicParameters(projectName, workflowName, description, planFilename);
74
+ // Ensure beads is initialized
75
+ await this.ensureBeadsInitialized();
76
+ const epicTitle = planFilename
77
+ ? `${projectName}: ${workflowName} (${planFilename})`
78
+ : `${projectName}: ${workflowName}`;
79
+ const epicDescription = description ||
80
+ `Responsible vibe engineering session using ${workflowName} workflow for ${projectName}`;
81
+ const priority = 2;
82
+ const command = `bd create "${epicTitle}" --description "${epicDescription}" --priority ${priority}`;
83
+ logger.debug('Creating beads project epic', {
84
+ command,
85
+ projectName,
86
+ workflowName,
87
+ projectPath: this.projectPath,
88
+ });
89
+ try {
90
+ const output = execSync(command, {
91
+ cwd: this.projectPath,
92
+ encoding: 'utf-8',
93
+ stdio: ['ignore', 'pipe', 'pipe'],
94
+ });
95
+ // Extract task ID from beads output
96
+ // Support both new format (v0.47.1+): "✓ Created issue: project-name-123"
97
+ // and legacy format: "Created bd-a1b2c3"
98
+ const match = output.match(/✓ Created issue: ([\w\d.-]+)/) ||
99
+ output.match(/Created issue: ([\w\d.-]+)/) ||
100
+ output.match(/Created (bd-[\w\d.]+)/);
101
+ if (!match) {
102
+ logger.warn('Failed to extract task ID from beads output', {
103
+ command: `bd create "${epicTitle}" --description "${epicDescription}" --priority 2`,
104
+ output: output.slice(0, 200), // Truncated for logging
105
+ });
106
+ throw new Error(`Failed to extract task ID from beads output: ${output.slice(0, 100)}...`);
107
+ }
108
+ const epicId = match[1] || '';
109
+ logger.info('Created beads project epic', {
110
+ epicId,
111
+ epicTitle,
112
+ projectPath: this.projectPath,
113
+ });
114
+ return epicId;
115
+ }
116
+ catch (error) {
117
+ const errorMessage = error instanceof Error ? error.message : String(error);
118
+ const commandInfo = {
119
+ command,
120
+ projectName,
121
+ workflowName,
122
+ projectPath: this.projectPath,
123
+ };
124
+ logger.error('Failed to create beads project epic', error instanceof Error ? error : new Error(errorMessage), commandInfo);
125
+ // Include stderr if available for better debugging
126
+ const execError = error;
127
+ if (execError?.stderr) {
128
+ logger.error('Beads command stderr output', new Error('Command stderr'), {
129
+ stderr: execError.stderr.toString(),
130
+ ...commandInfo,
131
+ });
132
+ }
133
+ throw new Error(`Failed to create beads project epic: ${errorMessage}`);
134
+ }
135
+ }
136
+ /**
137
+ * Create phase tasks for all workflow phases under the project epic
138
+ */
139
+ async createPhaseTasks(epicId, phases, workflowName) {
140
+ // Validate parameters
141
+ this.validateCreatePhaseParameters(epicId, phases, workflowName);
142
+ const phaseTasks = [];
143
+ const phaseNames = Object.keys(phases);
144
+ for (const phase of phaseNames) {
145
+ const phaseTitle = `${this.capitalizePhase(phase)}`;
146
+ const priority = 3;
147
+ const stateDefinition = phases[phase];
148
+ // Escape the description to prevent shell injection and handle special characters
149
+ const description = (stateDefinition?.default_instructions ||
150
+ `${workflowName} workflow ${phase} phase tasks`)
151
+ .replace(/"/g, '\\"') // Escape double quotes
152
+ .replace(/\n/g, ' ') // Replace newlines with spaces
153
+ .replace(/\r/g, '') // Remove carriage returns
154
+ .trim();
155
+ const command = `bd create "${phaseTitle}" --description "${description}" --parent ${epicId} --priority ${priority}`;
156
+ logger.debug('Creating beads phase task', {
157
+ command,
158
+ phase,
159
+ epicId,
160
+ projectPath: this.projectPath,
161
+ });
162
+ try {
163
+ const output = execSync(command, {
164
+ cwd: this.projectPath,
165
+ encoding: 'utf-8',
166
+ stdio: ['ignore', 'pipe', 'pipe'],
167
+ });
168
+ // Extract task ID from beads output
169
+ // Support both new format (v0.47.1+): "✓ Created issue: project-name-123"
170
+ // and legacy format: "Created bd-a1b2c3"
171
+ const match = output.match(/✓ Created issue: ([\w\d.-]+)/) ||
172
+ output.match(/Created issue: ([\w\d.-]+)/) ||
173
+ output.match(/Created (bd-[\w\d.]+)/);
174
+ if (!match) {
175
+ logger.warn('Failed to extract phase task ID from beads output', {
176
+ command,
177
+ output: output.slice(0, 200), // Truncated for logging
178
+ });
179
+ throw new Error(`Failed to extract task ID from beads output: ${output.slice(0, 100)}...`);
180
+ }
181
+ const phaseTaskId = match[1] || '';
182
+ phaseTasks.push({
183
+ phaseId: phase,
184
+ phaseName: phaseTitle,
185
+ taskId: phaseTaskId,
186
+ });
187
+ logger.debug('Created beads phase task', {
188
+ phase,
189
+ phaseTaskId,
190
+ epicId,
191
+ projectPath: this.projectPath,
192
+ });
193
+ }
194
+ catch (error) {
195
+ const errorMessage = error instanceof Error ? error.message : String(error);
196
+ const commandInfo = {
197
+ command,
198
+ phase,
199
+ epicId,
200
+ projectPath: this.projectPath,
201
+ };
202
+ logger.error('Failed to create beads phase task', error instanceof Error ? error : new Error(errorMessage), commandInfo);
203
+ // Include stderr if available for better debugging
204
+ const execError = error;
205
+ if (execError?.stderr) {
206
+ logger.error('Beads phase command stderr output', new Error('Command stderr'), {
207
+ stderr: execError.stderr.toString(),
208
+ ...commandInfo,
209
+ });
210
+ }
211
+ throw new Error(`Failed to create beads phase task for ${phase}: ${errorMessage}`);
212
+ }
213
+ }
214
+ logger.info('Created all beads phase tasks', {
215
+ count: phaseTasks.length,
216
+ epicId,
217
+ projectPath: this.projectPath,
218
+ });
219
+ return phaseTasks;
220
+ }
221
+ /**
222
+ * Create sequential dependencies between workflow phase tasks
223
+ * Implements graceful error handling: logs warnings for failed dependencies but continues
224
+ */
225
+ async createPhaseDependencies(phaseTasks) {
226
+ if (phaseTasks.length < 2) {
227
+ logger.debug('Skipping phase dependencies - less than 2 phases', {
228
+ phaseCount: phaseTasks.length,
229
+ projectPath: this.projectPath,
230
+ });
231
+ return;
232
+ }
233
+ logger.info('Creating sequential phase dependencies', {
234
+ phaseCount: phaseTasks.length,
235
+ projectPath: this.projectPath,
236
+ });
237
+ // Track failed dependencies for logging
238
+ const failedDependencies = [];
239
+ // Create dependencies in sequence: each phase blocks the next one
240
+ for (let i = 0; i < phaseTasks.length - 1; i++) {
241
+ const currentPhase = phaseTasks[i];
242
+ const nextPhase = phaseTasks[i + 1];
243
+ if (!currentPhase || !nextPhase) {
244
+ logger.warn('Skipping phase dependency - missing phase data', {
245
+ currentPhaseIndex: i,
246
+ nextPhaseIndex: i + 1,
247
+ totalPhases: phaseTasks.length,
248
+ projectPath: this.projectPath,
249
+ });
250
+ failedDependencies.push({
251
+ from: `Phase ${i}`,
252
+ to: `Phase ${i + 1}`,
253
+ error: 'Missing phase data',
254
+ });
255
+ continue;
256
+ }
257
+ const command = `bd dep ${currentPhase.taskId} --blocks ${nextPhase.taskId}`;
258
+ logger.debug('Creating phase dependency', {
259
+ command,
260
+ currentPhase: currentPhase.phaseName,
261
+ nextPhase: nextPhase.phaseName,
262
+ currentTaskId: currentPhase.taskId,
263
+ nextTaskId: nextPhase.taskId,
264
+ projectPath: this.projectPath,
265
+ });
266
+ try {
267
+ execSync(command, {
268
+ cwd: this.projectPath,
269
+ encoding: 'utf-8',
270
+ stdio: ['ignore', 'pipe', 'pipe'],
271
+ });
272
+ logger.debug('Successfully created phase dependency', {
273
+ currentPhase: currentPhase.phaseName,
274
+ nextPhase: nextPhase.phaseName,
275
+ projectPath: this.projectPath,
276
+ });
277
+ }
278
+ catch (error) {
279
+ // Log as warning but don't fail the entire setup
280
+ const errorMessage = error instanceof Error ? error.message : String(error);
281
+ logger.warn('Failed to create phase dependency - continuing anyway', {
282
+ error: errorMessage,
283
+ command,
284
+ currentPhase: currentPhase.phaseName,
285
+ nextPhase: nextPhase.phaseName,
286
+ projectPath: this.projectPath,
287
+ });
288
+ // Include stderr if available for better debugging
289
+ const execError = error;
290
+ if (execError?.stderr) {
291
+ logger.debug('Beads dependency command stderr', {
292
+ stderr: execError.stderr.toString(),
293
+ command,
294
+ projectPath: this.projectPath,
295
+ });
296
+ }
297
+ // Track failed dependency but continue
298
+ failedDependencies.push({
299
+ from: currentPhase.phaseName,
300
+ to: nextPhase.phaseName,
301
+ error: errorMessage,
302
+ });
303
+ }
304
+ }
305
+ if (failedDependencies.length > 0) {
306
+ logger.warn('Some phase dependencies could not be created - app continues without these dependencies', {
307
+ failedCount: failedDependencies.length,
308
+ failedDependencies,
309
+ projectPath: this.projectPath,
310
+ });
311
+ }
312
+ logger.info('Completed phase dependency creation', {
313
+ dependencyCount: phaseTasks.length - 1,
314
+ successCount: phaseTasks.length - 1 - failedDependencies.length,
315
+ failedCount: failedDependencies.length,
316
+ projectPath: this.projectPath,
317
+ });
318
+ }
319
+ /**
320
+ * Capitalize phase name for display
321
+ */
322
+ capitalizePhase(phase) {
323
+ return phase
324
+ .split('_')
325
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
326
+ .join(' ');
327
+ }
328
+ /**
329
+ * Validate parameters for epic creation
330
+ */
331
+ validateCreateEpicParameters(projectName, workflowName, description, planFilename) {
332
+ if (!projectName ||
333
+ typeof projectName !== 'string' ||
334
+ projectName.trim() === '') {
335
+ throw new Error('Project name is required and cannot be empty');
336
+ }
337
+ if (!workflowName ||
338
+ typeof workflowName !== 'string' ||
339
+ workflowName.trim() === '') {
340
+ throw new Error('Workflow name is required and cannot be empty');
341
+ }
342
+ // Optional description validation - if provided, must be a valid string
343
+ if (description !== undefined &&
344
+ (typeof description !== 'string' || description.trim() === '')) {
345
+ throw new Error('Description, if provided, must be a non-empty string');
346
+ }
347
+ // Optional plan filename validation - if provided, must be a valid string
348
+ if (planFilename !== undefined &&
349
+ (typeof planFilename !== 'string' || planFilename.trim() === '')) {
350
+ throw new Error('Plan filename, if provided, must be a non-empty string');
351
+ }
352
+ }
353
+ /**
354
+ * Validate parameters for phase task creation
355
+ */
356
+ validateCreatePhaseParameters(epicId, phases, workflowName) {
357
+ if (!epicId || typeof epicId !== 'string' || epicId.trim() === '') {
358
+ throw new Error('Epic ID is required and cannot be empty');
359
+ }
360
+ if (!phases ||
361
+ typeof phases !== 'object' ||
362
+ Object.keys(phases).length === 0) {
363
+ throw new Error('Phases object is required and cannot be empty');
364
+ }
365
+ if (!workflowName ||
366
+ typeof workflowName !== 'string' ||
367
+ workflowName.trim() === '') {
368
+ throw new Error('Workflow name is required and cannot be empty');
369
+ }
370
+ // Validate each phase
371
+ for (const [phaseName, phaseState] of Object.entries(phases)) {
372
+ if (!phaseName ||
373
+ typeof phaseName !== 'string' ||
374
+ phaseName.trim() === '') {
375
+ throw new Error(`Invalid phase name: "${phaseName}" - phase names must be non-empty strings`);
376
+ }
377
+ if (!phaseState || typeof phaseState !== 'object') {
378
+ throw new Error(`Invalid phase state for "${phaseName}" - phase states must be objects`);
379
+ }
380
+ if (!phaseState.default_instructions ||
381
+ typeof phaseState.default_instructions !== 'string') {
382
+ throw new Error(`Invalid phase state for "${phaseName}" - default_instructions must be a non-empty string`);
383
+ }
384
+ }
385
+ }
386
+ }
387
+ //# sourceMappingURL=beads-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads-integration.js","sourceRoot":"","sources":["../src/beads-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * BeadsStateManager
3
+ *
4
+ * Manages beads-specific conversation state including phase task mappings
5
+ * and epic information. Provides persistent storage for beads integration
6
+ * data with proper separation of concerns from conversation management.
7
+ */
8
+ import type { BeadsPhaseTask } from './beads-integration.js';
9
+ /**
10
+ * Beads-specific conversation state
11
+ */
12
+ export interface BeadsConversationState {
13
+ conversationId: string;
14
+ projectPath: string;
15
+ epicId: string;
16
+ phaseTasks: BeadsPhaseTask[];
17
+ createdAt: string;
18
+ updatedAt: string;
19
+ }
20
+ /**
21
+ * Manager for beads conversation state persistence
22
+ */
23
+ export declare class BeadsStateManager {
24
+ private projectPath;
25
+ constructor(projectPath: string);
26
+ /**
27
+ * Get the path to the beads state file for a conversation
28
+ */
29
+ private getBeadsStatePath;
30
+ /**
31
+ * Create beads state for a conversation
32
+ */
33
+ createState(conversationId: string, epicId: string, phaseTasks: BeadsPhaseTask[]): Promise<BeadsConversationState>;
34
+ /**
35
+ * Get beads state for a conversation
36
+ */
37
+ getState(conversationId: string): Promise<BeadsConversationState | null>;
38
+ /**
39
+ * Get phase task ID for a specific phase
40
+ */
41
+ getPhaseTaskId(conversationId: string, phase: string): Promise<string | null>;
42
+ /**
43
+ * Update beads state for a conversation
44
+ */
45
+ updateState(conversationId: string, updates: Partial<Omit<BeadsConversationState, 'conversationId' | 'createdAt'>>): Promise<BeadsConversationState | null>;
46
+ /**
47
+ * Clean up beads state for a conversation
48
+ */
49
+ cleanup(conversationId: string): Promise<void>;
50
+ /**
51
+ * Check if beads state exists for a conversation
52
+ */
53
+ hasState(conversationId: string): Promise<boolean>;
54
+ /**
55
+ * Save beads state to file
56
+ */
57
+ private saveState;
58
+ }
@@ -0,0 +1,212 @@
1
+ /**
2
+ * BeadsStateManager
3
+ *
4
+ * Manages beads-specific conversation state including phase task mappings
5
+ * and epic information. Provides persistent storage for beads integration
6
+ * data with proper separation of concerns from conversation management.
7
+ */
8
+ import { writeFile, readFile, mkdir, access } from 'node:fs/promises';
9
+ import { join, dirname } from 'node:path';
10
+ import { createLogger } from './logger.js';
11
+ const logger = createLogger('BeadsStateManager');
12
+ /**
13
+ * Manager for beads conversation state persistence
14
+ */
15
+ export class BeadsStateManager {
16
+ projectPath;
17
+ constructor(projectPath) {
18
+ this.projectPath = projectPath;
19
+ }
20
+ /**
21
+ * Get the path to the beads state file for a conversation
22
+ */
23
+ getBeadsStatePath(conversationId) {
24
+ return join(this.projectPath, '.vibe', `beads-state-${conversationId}.json`);
25
+ }
26
+ /**
27
+ * Create beads state for a conversation
28
+ */
29
+ async createState(conversationId, epicId, phaseTasks) {
30
+ const state = {
31
+ conversationId,
32
+ projectPath: this.projectPath,
33
+ epicId,
34
+ phaseTasks,
35
+ createdAt: new Date().toISOString(),
36
+ updatedAt: new Date().toISOString(),
37
+ };
38
+ await this.saveState(state);
39
+ logger.info('Created beads conversation state', {
40
+ conversationId,
41
+ epicId,
42
+ phaseCount: phaseTasks.length,
43
+ projectPath: this.projectPath,
44
+ });
45
+ return state;
46
+ }
47
+ /**
48
+ * Get beads state for a conversation
49
+ */
50
+ async getState(conversationId) {
51
+ const statePath = this.getBeadsStatePath(conversationId);
52
+ try {
53
+ // Check if file exists
54
+ await access(statePath);
55
+ const content = await readFile(statePath, 'utf-8');
56
+ const state = JSON.parse(content);
57
+ logger.debug('Retrieved beads conversation state', {
58
+ conversationId,
59
+ epicId: state.epicId,
60
+ phaseCount: state.phaseTasks.length,
61
+ projectPath: this.projectPath,
62
+ });
63
+ return state;
64
+ }
65
+ catch (error) {
66
+ if (error.code === 'ENOENT') {
67
+ // File doesn't exist - this is normal for conversations without beads
68
+ logger.debug('No beads state found for conversation', {
69
+ conversationId,
70
+ projectPath: this.projectPath,
71
+ });
72
+ return null;
73
+ }
74
+ // Other errors (permission, invalid JSON, etc.)
75
+ const errorMessage = error instanceof Error ? error.message : String(error);
76
+ logger.warn('Failed to read beads state file', {
77
+ error: errorMessage,
78
+ conversationId,
79
+ statePath,
80
+ projectPath: this.projectPath,
81
+ });
82
+ return null;
83
+ }
84
+ }
85
+ /**
86
+ * Get phase task ID for a specific phase
87
+ */
88
+ async getPhaseTaskId(conversationId, phase) {
89
+ const state = await this.getState(conversationId);
90
+ if (!state) {
91
+ return null;
92
+ }
93
+ const phaseTask = state.phaseTasks.find(task => task.phaseId === phase);
94
+ if (phaseTask) {
95
+ logger.debug('Found phase task ID', {
96
+ conversationId,
97
+ phase,
98
+ taskId: phaseTask.taskId,
99
+ projectPath: this.projectPath,
100
+ });
101
+ return phaseTask.taskId;
102
+ }
103
+ logger.debug('No task ID found for phase', {
104
+ conversationId,
105
+ phase,
106
+ availablePhases: state.phaseTasks.map(t => t.phaseId),
107
+ projectPath: this.projectPath,
108
+ });
109
+ return null;
110
+ }
111
+ /**
112
+ * Update beads state for a conversation
113
+ */
114
+ async updateState(conversationId, updates) {
115
+ const existingState = await this.getState(conversationId);
116
+ if (!existingState) {
117
+ logger.warn('Cannot update non-existent beads state', {
118
+ conversationId,
119
+ projectPath: this.projectPath,
120
+ });
121
+ return null;
122
+ }
123
+ const updatedState = {
124
+ ...existingState,
125
+ ...updates,
126
+ conversationId, // Ensure conversationId doesn't change
127
+ updatedAt: new Date().toISOString(),
128
+ };
129
+ await this.saveState(updatedState);
130
+ logger.info('Updated beads conversation state', {
131
+ conversationId,
132
+ updatedFields: Object.keys(updates),
133
+ projectPath: this.projectPath,
134
+ });
135
+ return updatedState;
136
+ }
137
+ /**
138
+ * Clean up beads state for a conversation
139
+ */
140
+ async cleanup(conversationId) {
141
+ const statePath = this.getBeadsStatePath(conversationId);
142
+ try {
143
+ await access(statePath);
144
+ await writeFile(statePath + '.backup', await readFile(statePath));
145
+ logger.info('Cleaned up beads conversation state', {
146
+ conversationId,
147
+ statePath,
148
+ projectPath: this.projectPath,
149
+ });
150
+ }
151
+ catch (error) {
152
+ if (error.code === 'ENOENT') {
153
+ // File doesn't exist - nothing to clean up
154
+ logger.debug('No beads state to clean up', {
155
+ conversationId,
156
+ projectPath: this.projectPath,
157
+ });
158
+ return;
159
+ }
160
+ const errorMessage = error instanceof Error ? error.message : String(error);
161
+ logger.warn('Failed to clean up beads state', {
162
+ error: errorMessage,
163
+ conversationId,
164
+ statePath,
165
+ projectPath: this.projectPath,
166
+ });
167
+ }
168
+ }
169
+ /**
170
+ * Check if beads state exists for a conversation
171
+ */
172
+ async hasState(conversationId) {
173
+ const statePath = this.getBeadsStatePath(conversationId);
174
+ try {
175
+ await access(statePath);
176
+ return true;
177
+ }
178
+ catch {
179
+ return false;
180
+ }
181
+ }
182
+ /**
183
+ * Save beads state to file
184
+ */
185
+ async saveState(state) {
186
+ const statePath = this.getBeadsStatePath(state.conversationId);
187
+ const stateDir = dirname(statePath);
188
+ try {
189
+ // Ensure .vibe directory exists
190
+ await mkdir(stateDir, { recursive: true });
191
+ // Write state with pretty formatting for readability
192
+ const content = JSON.stringify(state, null, 2);
193
+ await writeFile(statePath, content, 'utf-8');
194
+ logger.debug('Saved beads state to file', {
195
+ conversationId: state.conversationId,
196
+ statePath,
197
+ fileSize: content.length,
198
+ projectPath: this.projectPath,
199
+ });
200
+ }
201
+ catch (error) {
202
+ const errorMessage = error instanceof Error ? error.message : String(error);
203
+ logger.error('Failed to save beads state', error instanceof Error ? error : new Error(errorMessage), {
204
+ conversationId: state.conversationId,
205
+ statePath,
206
+ projectPath: this.projectPath,
207
+ });
208
+ throw error;
209
+ }
210
+ }
211
+ }
212
+ //# sourceMappingURL=beads-state-manager.js.map