bmad-method 6.0.0-alpha.2 → 6.0.0-alpha.21

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 (1278) hide show
  1. package/.coderabbit.yaml +40 -0
  2. package/.github/CODE_OF_CONDUCT.md +128 -0
  3. package/.github/ISSUE_TEMPLATE/idea_submission.md +2 -2
  4. package/.github/scripts/discord-helpers.sh +34 -0
  5. package/.github/workflows/bundle-latest.yaml +329 -0
  6. package/.github/workflows/discord.yaml +302 -8
  7. package/.github/workflows/docs.yaml +72 -0
  8. package/.github/workflows/manual-release.yaml +35 -18
  9. package/.github/workflows/quality.yaml +94 -0
  10. package/.husky/pre-commit +4 -0
  11. package/.markdownlint-cli2.yaml +42 -0
  12. package/.prettierignore +7 -0
  13. package/.vscode/settings.json +4 -2
  14. package/CHANGELOG.md +772 -13
  15. package/CONTRIBUTING.md +2 -16
  16. package/LICENSE +1 -1
  17. package/README.md +159 -177
  18. package/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
  19. package/docs/agent-customization-guide.md +208 -0
  20. package/docs/custom-content-installation.md +149 -0
  21. package/docs/custom-content.md +122 -0
  22. package/docs/document-sharding-guide.md +449 -0
  23. package/docs/getting-started/installation.md +76 -0
  24. package/docs/ide-info/crush.md +1 -1
  25. package/docs/ide-info/cursor.md +7 -7
  26. package/docs/ide-info/iflow.md +3 -3
  27. package/docs/ide-info/index.md +24 -0
  28. package/docs/ide-info/opencode.md +1 -1
  29. package/docs/ide-info/rovo-dev.md +22 -0
  30. package/docs/index.md +143 -0
  31. package/docs/v4-to-v6-upgrade.md +38 -36
  32. package/docs/web-bundles-gemini-gpt-guide.md +21 -0
  33. package/eslint.config.mjs +23 -2
  34. package/package.json +25 -10
  35. package/samples/sample-custom-modules/README.md +11 -0
  36. package/samples/sample-custom-modules/sample-unitary-module/README.md +8 -0
  37. package/samples/sample-custom-modules/sample-unitary-module/agents/commit-poet/commit-poet.agent.yaml +129 -0
  38. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
  39. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
  40. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
  41. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
  42. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
  43. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
  44. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
  45. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
  46. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith.agent.yaml +109 -0
  47. package/samples/sample-custom-modules/sample-unitary-module/module.yaml +8 -0
  48. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-01-init.md +168 -0
  49. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-02-q1.md +155 -0
  50. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-03-q2.md +89 -0
  51. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-04-q3.md +36 -0
  52. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-05-q4.md +36 -0
  53. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-06-q5.md +36 -0
  54. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-07-q6.md +36 -0
  55. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-08-q7.md +36 -0
  56. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-09-q8.md +36 -0
  57. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-10-q9.md +36 -0
  58. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-11-q10.md +36 -0
  59. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-12-results.md +150 -0
  60. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/templates/csv-headers.template +1 -0
  61. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/workflow.md +54 -0
  62. package/samples/sample-custom-modules/sample-unitary-module/workflows/wassup/workflow.md +26 -0
  63. package/samples/sample-custom-modules/sample-wellness-module/README.md +6 -0
  64. package/samples/sample-custom-modules/sample-wellness-module/agents/meditation-guide.agent.yaml +136 -0
  65. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/foo.md +3 -0
  66. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/addition1.md +1 -0
  67. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/insights.md +13 -0
  68. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/instructions.md +30 -0
  69. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/memories.md +13 -0
  70. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/patterns.md +17 -0
  71. package/samples/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion.agent.yaml +120 -0
  72. package/samples/sample-custom-modules/sample-wellness-module/module.yaml +17 -0
  73. package/samples/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/README.md +32 -0
  74. package/samples/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/workflow.md +45 -0
  75. package/samples/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/README.md +31 -0
  76. package/samples/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/workflow.md +45 -0
  77. package/samples/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/README.md +31 -0
  78. package/samples/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/workflow.md +45 -0
  79. package/src/core/_module-installer/installer.js +1 -9
  80. package/src/core/agents/bmad-master.agent.yaml +9 -18
  81. package/src/core/module.yaml +25 -0
  82. package/src/core/resources/excalidraw/README.md +160 -0
  83. package/src/core/resources/excalidraw/excalidraw-helpers.md +127 -0
  84. package/src/core/resources/excalidraw/library-loader.md +50 -0
  85. package/src/core/resources/excalidraw/validate-json-instructions.md +79 -0
  86. package/src/core/tasks/advanced-elicitation-methods.csv +51 -0
  87. package/src/core/tasks/advanced-elicitation.xml +116 -0
  88. package/src/core/tasks/index-docs.xml +1 -1
  89. package/src/core/tasks/review-adversarial-general.xml +41 -0
  90. package/src/core/tasks/validate-workflow.xml +1 -1
  91. package/src/core/tasks/workflow.xml +126 -57
  92. package/src/core/tools/shard-doc.xml +53 -44
  93. package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
  94. package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +196 -0
  95. package/src/core/workflows/brainstorming/steps/step-01b-continue.md +121 -0
  96. package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +224 -0
  97. package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +236 -0
  98. package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +208 -0
  99. package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +263 -0
  100. package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +339 -0
  101. package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +302 -0
  102. package/src/core/workflows/brainstorming/template.md +13 -100
  103. package/src/core/workflows/brainstorming/workflow.md +51 -0
  104. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  105. package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +203 -0
  106. package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +158 -0
  107. package/src/core/workflows/party-mode/workflow.md +206 -0
  108. package/src/modules/bmb/README.md +12 -119
  109. package/src/modules/bmb/agents/agent-builder.agent.yaml +36 -0
  110. package/src/modules/bmb/agents/module-builder.agent.yaml +48 -0
  111. package/src/modules/bmb/agents/workflow-builder.agent.yaml +40 -0
  112. package/src/modules/bmb/docs/agents/agent-compilation.md +340 -0
  113. package/src/modules/bmb/docs/agents/agent-menu-patterns.md +523 -0
  114. package/src/modules/bmb/docs/agents/expert-agent-architecture.md +363 -0
  115. package/src/modules/bmb/docs/agents/index.md +55 -0
  116. package/src/modules/bmb/docs/agents/kb.csv +0 -0
  117. package/src/modules/bmb/docs/agents/simple-agent-architecture.md +257 -0
  118. package/src/modules/bmb/docs/agents/understanding-agent-types.md +184 -0
  119. package/src/modules/bmb/docs/index.md +247 -0
  120. package/src/modules/bmb/docs/workflows/architecture.md +220 -0
  121. package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +19 -0
  122. package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +206 -0
  123. package/src/modules/bmb/docs/workflows/index.md +45 -0
  124. package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
  125. package/src/modules/bmb/docs/workflows/kb.csv +0 -0
  126. package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +241 -0
  127. package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +223 -0
  128. package/src/modules/bmb/docs/workflows/templates/step-file.md +139 -0
  129. package/src/modules/bmb/docs/workflows/templates/step-template.md +290 -0
  130. package/src/modules/bmb/docs/workflows/templates/workflow-template.md +104 -0
  131. package/src/modules/bmb/docs/workflows/templates/workflow.md +58 -0
  132. package/src/modules/bmb/docs/workflows/terms.md +97 -0
  133. package/src/modules/bmb/module.yaml +16 -0
  134. package/src/modules/bmb/reference/README.md +3 -0
  135. package/src/modules/bmb/reference/agents/simple-examples/README.md +223 -0
  136. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  137. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  138. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  139. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +176 -0
  140. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +120 -0
  141. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  142. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +153 -0
  143. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  144. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  145. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  146. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  147. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  148. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  149. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  150. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  151. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  152. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  153. package/src/modules/bmb/workflows/create-agent/data/agent-validation-checklist.md +174 -0
  154. package/src/modules/bmb/workflows/create-agent/data/brainstorm-context.md +153 -0
  155. package/src/modules/bmb/workflows/create-agent/data/communication-presets.csv +61 -0
  156. package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +29 -0
  157. package/src/modules/bmb/workflows/create-agent/data/reference/README.md +3 -0
  158. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
  159. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
  160. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
  161. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
  162. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
  163. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +153 -0
  164. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +48 -0
  165. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +48 -0
  166. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +53 -0
  167. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
  168. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
  169. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  170. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  171. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  172. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
  173. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
  174. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  175. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
  176. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  177. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  178. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  179. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  180. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  181. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  182. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  183. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  184. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  185. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  186. package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +305 -0
  187. package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
  188. package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +206 -0
  189. package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +260 -0
  190. package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +237 -0
  191. package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +232 -0
  192. package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +186 -0
  193. package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +234 -0
  194. package/src/modules/bmb/workflows/create-agent/steps/step-08-celebrate.md +218 -0
  195. package/src/modules/bmb/workflows/create-agent/templates/agent-plan.template.md +3 -0
  196. package/src/modules/bmb/workflows/create-agent/templates/expert-agent.template.md +364 -0
  197. package/src/modules/bmb/workflows/create-agent/templates/simple-agent.template.md +257 -0
  198. package/src/modules/bmb/workflows/create-agent/workflow.md +58 -0
  199. package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +155 -0
  200. package/src/modules/bmb/workflows/create-module/steps/step-01b-continue.md +169 -0
  201. package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +217 -0
  202. package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +267 -0
  203. package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +228 -0
  204. package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +233 -0
  205. package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +296 -0
  206. package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +228 -0
  207. package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +186 -0
  208. package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +309 -0
  209. package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +337 -0
  210. package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +335 -0
  211. package/src/modules/bmb/workflows/create-module/templates/agent.template.md +313 -0
  212. package/src/modules/bmb/workflows/create-module/templates/installer.template.js +47 -0
  213. package/src/modules/bmb/workflows/create-module/templates/module-plan.template.md +5 -0
  214. package/src/modules/bmb/workflows/create-module/templates/module.template.yaml +53 -0
  215. package/src/modules/bmb/workflows/create-module/templates/workflow-plan-template.md +23 -0
  216. package/src/modules/bmb/workflows/create-module/validation.md +126 -0
  217. package/src/modules/bmb/workflows/create-module/workflow.md +55 -0
  218. package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +157 -0
  219. package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +211 -0
  220. package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +250 -0
  221. package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +216 -0
  222. package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +289 -0
  223. package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +271 -0
  224. package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +308 -0
  225. package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +284 -0
  226. package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +187 -0
  227. package/src/modules/bmb/workflows/create-workflow/workflow.md +58 -0
  228. package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
  229. package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
  230. package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
  231. package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
  232. package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
  233. package/src/modules/bmb/workflows/edit-agent/workflow.md +58 -0
  234. package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +217 -0
  235. package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
  236. package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
  237. package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
  238. package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
  239. package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
  240. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
  241. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
  242. package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +51 -0
  243. package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
  244. package/src/modules/bmb/workflows/edit-workflow/workflow.md +58 -0
  245. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
  246. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
  247. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
  248. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
  249. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
  250. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
  251. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
  252. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
  253. package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
  254. package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +58 -0
  255. package/src/modules/bmb/workflows-legacy/edit-module/README.md +171 -0
  256. package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +163 -0
  257. package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +340 -0
  258. package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +34 -0
  259. package/src/modules/bmb/workflows-legacy/module-brief/README.md +264 -0
  260. package/src/modules/bmb/workflows-legacy/module-brief/checklist.md +116 -0
  261. package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +268 -0
  262. package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +36 -0
  263. package/src/modules/bmgd/_module-installer/installer.js +160 -0
  264. package/src/modules/bmgd/_module-installer/platform-specifics/claude-code.js +23 -0
  265. package/src/modules/bmgd/_module-installer/platform-specifics/windsurf.js +18 -0
  266. package/src/modules/bmgd/agents/game-architect.agent.yaml +43 -0
  267. package/src/modules/bmgd/agents/game-designer.agent.yaml +48 -0
  268. package/src/modules/bmgd/agents/game-dev.agent.yaml +52 -0
  269. package/src/modules/bmgd/agents/game-qa.agent.yaml +60 -0
  270. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +59 -0
  271. package/src/modules/bmgd/agents/game-solo-dev.agent.yaml +52 -0
  272. package/src/modules/bmgd/docs/agents-guide.md +407 -0
  273. package/src/modules/bmgd/docs/game-types-guide.md +503 -0
  274. package/src/modules/bmgd/docs/glossary.md +294 -0
  275. package/src/modules/bmgd/docs/index.md +180 -0
  276. package/src/modules/bmgd/docs/quick-flow-guide.md +288 -0
  277. package/src/modules/bmgd/docs/quick-start.md +250 -0
  278. package/src/modules/bmgd/docs/troubleshooting.md +259 -0
  279. package/src/modules/bmgd/docs/workflow-overview.jpg +0 -0
  280. package/src/modules/bmgd/docs/workflows-guide.md +463 -0
  281. package/src/modules/bmgd/gametest/knowledge/balance-testing.md +220 -0
  282. package/src/modules/bmgd/gametest/knowledge/certification-testing.md +319 -0
  283. package/src/modules/bmgd/gametest/knowledge/compatibility-testing.md +228 -0
  284. package/src/modules/bmgd/gametest/knowledge/godot-testing.md +376 -0
  285. package/src/modules/bmgd/gametest/knowledge/input-testing.md +315 -0
  286. package/src/modules/bmgd/gametest/knowledge/localization-testing.md +304 -0
  287. package/src/modules/bmgd/gametest/knowledge/multiplayer-testing.md +322 -0
  288. package/src/modules/bmgd/gametest/knowledge/performance-testing.md +204 -0
  289. package/src/modules/bmgd/gametest/knowledge/playtesting.md +384 -0
  290. package/src/modules/bmgd/gametest/knowledge/qa-automation.md +190 -0
  291. package/src/modules/bmgd/gametest/knowledge/regression-testing.md +280 -0
  292. package/src/modules/bmgd/gametest/knowledge/save-testing.md +280 -0
  293. package/src/modules/bmgd/gametest/knowledge/smoke-testing.md +404 -0
  294. package/src/modules/bmgd/gametest/knowledge/test-priorities.md +271 -0
  295. package/src/modules/bmgd/gametest/knowledge/unity-testing.md +383 -0
  296. package/src/modules/bmgd/gametest/knowledge/unreal-testing.md +388 -0
  297. package/src/modules/bmgd/gametest/qa-index.csv +17 -0
  298. package/src/modules/bmgd/module.yaml +64 -0
  299. package/src/modules/bmgd/teams/default-party.csv +12 -0
  300. package/src/modules/bmgd/teams/team-gamedev.yaml +29 -0
  301. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +130 -0
  302. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-01-init.md +164 -0
  303. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-02-context.md +210 -0
  304. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-03-ideation.md +289 -0
  305. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-04-complete.md +275 -0
  306. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.md +49 -0
  307. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +62 -0
  308. package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +373 -0
  309. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01-init.md +223 -0
  310. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01b-continue.md +151 -0
  311. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-02-vision.md +218 -0
  312. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-03-market.md +218 -0
  313. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-04-fundamentals.md +231 -0
  314. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-05-scope.md +242 -0
  315. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-06-references.md +224 -0
  316. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-07-content.md +282 -0
  317. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-08-complete.md +296 -0
  318. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.md +62 -0
  319. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +67 -0
  320. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01-init.md +248 -0
  321. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01b-continue.md +173 -0
  322. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-02-context.md +332 -0
  323. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-03-platforms.md +245 -0
  324. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-04-vision.md +229 -0
  325. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-05-core-gameplay.md +258 -0
  326. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-06-mechanics.md +249 -0
  327. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-07-game-type.md +266 -0
  328. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-08-progression.md +272 -0
  329. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-09-levels.md +264 -0
  330. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-10-art-audio.md +255 -0
  331. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-11-technical.md +275 -0
  332. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-12-epics.md +284 -0
  333. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-13-metrics.md +250 -0
  334. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-14-complete.md +335 -0
  335. package/src/modules/bmgd/workflows/2-design/gdd/workflow.md +61 -0
  336. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +101 -0
  337. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +604 -0
  338. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01-init.md +228 -0
  339. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01b-continue.md +163 -0
  340. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-02-foundation.md +262 -0
  341. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-03-story.md +238 -0
  342. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-04-characters.md +297 -0
  343. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-05-world.md +262 -0
  344. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-06-dialogue.md +250 -0
  345. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-07-environmental.md +244 -0
  346. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-08-delivery.md +264 -0
  347. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-09-integration.md +254 -0
  348. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-10-production.md +262 -0
  349. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-11-complete.md +331 -0
  350. package/src/modules/bmgd/workflows/2-design/narrative/workflow.md +57 -0
  351. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +77 -0
  352. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +321 -0
  353. package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +240 -0
  354. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +701 -0
  355. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01-init.md +223 -0
  356. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01b-continue.md +153 -0
  357. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-02-context.md +262 -0
  358. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-03-starter.md +290 -0
  359. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-04-decisions.md +300 -0
  360. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-05-crosscutting.md +319 -0
  361. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-06-structure.md +304 -0
  362. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-07-patterns.md +349 -0
  363. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-08-validation.md +293 -0
  364. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-09-complete.md +356 -0
  365. package/src/modules/bmgd/workflows/3-technical/game-architecture/templates/architecture-template.md +103 -0
  366. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.md +55 -0
  367. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +98 -0
  368. package/src/modules/bmgd/workflows/3-technical/generate-project-context/project-context-template.md +20 -0
  369. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-01-discover.md +201 -0
  370. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-02-generate.md +373 -0
  371. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-03-complete.md +279 -0
  372. package/src/modules/bmgd/workflows/3-technical/generate-project-context/workflow.md +48 -0
  373. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +23 -0
  374. package/src/modules/bmgd/workflows/4-production/code-review/instructions.xml +225 -0
  375. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +64 -0
  376. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +279 -0
  377. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +206 -0
  378. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +63 -0
  379. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +358 -0
  380. package/src/modules/bmgd/workflows/4-production/create-story/instructions.xml +298 -0
  381. package/src/modules/bmgd/workflows/4-production/create-story/template.md +49 -0
  382. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +79 -0
  383. package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +80 -0
  384. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.xml +409 -0
  385. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +68 -0
  386. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +1443 -0
  387. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +62 -0
  388. package/src/modules/bmgd/workflows/4-production/sprint-planning/checklist.md +33 -0
  389. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +234 -0
  390. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
  391. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +56 -0
  392. package/src/modules/bmgd/workflows/4-production/sprint-status/instructions.md +229 -0
  393. package/src/modules/bmgd/workflows/4-production/sprint-status/workflow.yaml +35 -0
  394. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/instructions.md +140 -0
  395. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/workflow.yaml +27 -0
  396. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/checklist.md +37 -0
  397. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/instructions.md +220 -0
  398. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml +45 -0
  399. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/checklist.md +26 -0
  400. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/instructions.md +156 -0
  401. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml +36 -0
  402. package/src/modules/bmgd/workflows/gametest/automate/checklist.md +93 -0
  403. package/src/modules/bmgd/workflows/gametest/automate/instructions.md +317 -0
  404. package/src/modules/bmgd/workflows/gametest/automate/workflow.yaml +50 -0
  405. package/src/modules/bmgd/workflows/gametest/performance/checklist.md +96 -0
  406. package/src/modules/bmgd/workflows/gametest/performance/instructions.md +323 -0
  407. package/src/modules/bmgd/workflows/gametest/performance/performance-template.md +256 -0
  408. package/src/modules/bmgd/workflows/gametest/performance/workflow.yaml +48 -0
  409. package/src/modules/bmgd/workflows/gametest/playtest-plan/checklist.md +93 -0
  410. package/src/modules/bmgd/workflows/gametest/playtest-plan/instructions.md +297 -0
  411. package/src/modules/bmgd/workflows/gametest/playtest-plan/playtest-template.md +208 -0
  412. package/src/modules/bmgd/workflows/gametest/playtest-plan/workflow.yaml +59 -0
  413. package/src/modules/bmgd/workflows/gametest/test-design/checklist.md +98 -0
  414. package/src/modules/bmgd/workflows/gametest/test-design/instructions.md +280 -0
  415. package/src/modules/bmgd/workflows/gametest/test-design/test-design-template.md +205 -0
  416. package/src/modules/bmgd/workflows/gametest/test-design/workflow.yaml +47 -0
  417. package/src/modules/bmgd/workflows/gametest/test-framework/checklist.md +103 -0
  418. package/src/modules/bmgd/workflows/gametest/test-framework/instructions.md +348 -0
  419. package/src/modules/bmgd/workflows/gametest/test-framework/workflow.yaml +48 -0
  420. package/src/modules/bmgd/workflows/gametest/test-review/checklist.md +87 -0
  421. package/src/modules/bmgd/workflows/gametest/test-review/instructions.md +272 -0
  422. package/src/modules/bmgd/workflows/gametest/test-review/test-review-template.md +203 -0
  423. package/src/modules/bmgd/workflows/gametest/test-review/workflow.yaml +48 -0
  424. package/src/modules/bmgd/workflows/workflow-status/init/instructions.md +299 -0
  425. package/src/modules/bmgd/workflows/workflow-status/init/workflow.yaml +29 -0
  426. package/src/modules/bmgd/workflows/workflow-status/instructions.md +395 -0
  427. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-brownfield.yaml +65 -0
  428. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-greenfield.yaml +71 -0
  429. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-brownfield.yaml +29 -0
  430. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-greenfield.yaml +39 -0
  431. package/src/modules/bmgd/workflows/workflow-status/project-levels.yaml +63 -0
  432. package/src/modules/bmgd/workflows/workflow-status/workflow-status-template.yaml +24 -0
  433. package/src/modules/bmgd/workflows/workflow-status/workflow.yaml +30 -0
  434. package/src/modules/bmm/README.md +78 -92
  435. package/src/modules/bmm/_module-installer/installer.js +3 -37
  436. package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +1 -1
  437. package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +1 -1
  438. package/src/modules/bmm/agents/analyst.agent.yaml +27 -30
  439. package/src/modules/bmm/agents/architect.agent.yaml +16 -26
  440. package/src/modules/bmm/agents/dev.agent.yaml +29 -28
  441. package/src/modules/bmm/agents/pm.agent.yaml +27 -36
  442. package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +31 -0
  443. package/src/modules/bmm/agents/sm.agent.yaml +31 -52
  444. package/src/modules/bmm/agents/tea.agent.yaml +41 -35
  445. package/src/modules/bmm/agents/tech-writer.agent.yaml +54 -0
  446. package/src/modules/bmm/agents/ux-designer.agent.yaml +21 -18
  447. package/src/modules/bmm/data/README.md +29 -0
  448. package/src/modules/bmm/data/documentation-standards.md +262 -0
  449. package/src/modules/bmm/data/project-context-template.md +40 -0
  450. package/src/modules/bmm/docs/agents-guide.md +144 -0
  451. package/src/modules/bmm/docs/bmad-quick-flow.md +506 -0
  452. package/src/modules/bmm/docs/brownfield-guide.md +748 -0
  453. package/src/modules/bmm/docs/enterprise-agentic-development.md +686 -0
  454. package/src/modules/bmm/docs/faq.md +542 -0
  455. package/src/modules/bmm/docs/glossary.md +306 -0
  456. package/src/modules/bmm/docs/images/README.md +37 -0
  457. package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +5034 -0
  458. package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +4 -0
  459. package/src/modules/bmm/docs/index.md +168 -0
  460. package/src/modules/bmm/docs/party-mode.md +224 -0
  461. package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
  462. package/src/modules/bmm/docs/quick-spec-flow.md +638 -0
  463. package/src/modules/bmm/docs/quick-start.md +366 -0
  464. package/src/modules/bmm/docs/scale-adaptive-system.md +618 -0
  465. package/src/modules/bmm/docs/test-architecture.md +455 -0
  466. package/src/modules/bmm/docs/troubleshooting.md +661 -0
  467. package/src/modules/bmm/docs/workflow-architecture-reference.md +366 -0
  468. package/src/modules/bmm/docs/workflow-document-project-reference.md +489 -0
  469. package/src/modules/bmm/docs/workflows-analysis.md +266 -0
  470. package/src/modules/bmm/docs/workflows-implementation.md +210 -0
  471. package/src/modules/bmm/docs/workflows-planning.md +451 -0
  472. package/src/modules/bmm/docs/workflows-solutioning.md +509 -0
  473. package/src/modules/bmm/module.yaml +56 -0
  474. package/src/modules/bmm/teams/default-party.csv +21 -0
  475. package/src/modules/bmm/teams/team-fullstack.yaml +1 -0
  476. package/src/modules/bmm/testarch/knowledge/api-request.md +303 -0
  477. package/src/modules/bmm/testarch/knowledge/auth-session.md +356 -0
  478. package/src/modules/bmm/testarch/knowledge/burn-in.md +273 -0
  479. package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +1 -1
  480. package/src/modules/bmm/testarch/knowledge/file-utils.md +260 -0
  481. package/src/modules/bmm/testarch/knowledge/fixtures-composition.md +382 -0
  482. package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +280 -0
  483. package/src/modules/bmm/testarch/knowledge/log.md +294 -0
  484. package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +272 -0
  485. package/src/modules/bmm/testarch/knowledge/network-recorder.md +265 -0
  486. package/src/modules/bmm/testarch/knowledge/overview.md +283 -0
  487. package/src/modules/bmm/testarch/knowledge/recurse.md +296 -0
  488. package/src/modules/bmm/testarch/tea-index.csv +11 -0
  489. package/src/modules/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  490. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +181 -0
  491. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +165 -0
  492. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +203 -0
  493. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +206 -0
  494. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +209 -0
  495. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +223 -0
  496. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +198 -0
  497. package/src/modules/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
  498. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
  499. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
  500. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
  501. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
  502. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
  503. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +442 -0
  504. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +181 -0
  505. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +236 -0
  506. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +199 -0
  507. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +248 -0
  508. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +258 -0
  509. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +176 -0
  510. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +474 -0
  511. package/src/modules/bmm/workflows/1-analysis/research/research.template.md +29 -0
  512. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
  513. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +238 -0
  514. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +247 -0
  515. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +201 -0
  516. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +238 -0
  517. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +485 -0
  518. package/src/modules/bmm/workflows/1-analysis/research/workflow.md +173 -0
  519. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +134 -0
  520. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
  521. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +189 -0
  522. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
  523. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
  524. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
  525. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
  526. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
  527. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
  528. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
  529. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
  530. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
  531. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
  532. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
  533. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +227 -0
  534. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +6 -138
  535. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +42 -0
  536. package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
  537. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +7 -58
  538. package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
  539. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +196 -0
  540. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +165 -0
  541. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +420 -0
  542. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +289 -0
  543. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +290 -0
  544. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +270 -0
  545. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +261 -0
  546. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +257 -0
  547. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +298 -0
  548. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +269 -0
  549. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +293 -0
  550. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +185 -0
  551. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +61 -0
  552. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +189 -0
  553. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +177 -0
  554. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +178 -0
  555. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +138 -0
  556. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +251 -0
  557. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +132 -0
  558. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  559. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
  560. package/src/modules/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  561. package/src/modules/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
  562. package/src/modules/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  563. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  564. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +163 -0
  565. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +223 -0
  566. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +330 -0
  567. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +317 -0
  568. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +358 -0
  569. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +378 -0
  570. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +358 -0
  571. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +351 -0
  572. package/src/modules/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
  573. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +258 -0
  574. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +232 -0
  575. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +271 -0
  576. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +144 -0
  577. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  578. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
  579. package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +2 -1
  580. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +225 -0
  581. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +34 -36
  582. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  583. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +7 -2
  584. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +42 -27
  585. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
  586. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +344 -0
  587. package/src/modules/bmm/workflows/4-implementation/create-story/template.md +3 -5
  588. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +38 -27
  589. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
  590. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +409 -0
  591. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +9 -10
  592. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +1208 -244
  593. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +38 -26
  594. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +59 -55
  595. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +14 -14
  596. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +21 -8
  597. package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
  598. package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +36 -0
  599. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
  600. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +28 -0
  601. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
  602. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
  603. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
  604. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
  605. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
  606. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
  607. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +51 -0
  608. package/src/modules/bmm/workflows/document-project/checklist.md +1 -1
  609. package/src/modules/bmm/workflows/document-project/instructions.md +31 -32
  610. package/src/modules/bmm/workflows/document-project/workflow.yaml +4 -10
  611. package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +6 -6
  612. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  613. package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +13 -13
  614. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  615. package/src/modules/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
  616. package/src/modules/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
  617. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
  618. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
  619. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +27 -0
  620. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
  621. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
  622. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +27 -0
  623. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
  624. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
  625. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +27 -0
  626. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
  627. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
  628. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +27 -0
  629. package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +21 -0
  630. package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +183 -0
  631. package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +317 -0
  632. package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +277 -0
  633. package/src/modules/bmm/workflows/generate-project-context/workflow.md +48 -0
  634. package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +10 -9
  635. package/src/modules/bmm/workflows/testarch/atdd/checklist.md +1 -0
  636. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +26 -5
  637. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -9
  638. package/src/modules/bmm/workflows/testarch/automate/checklist.md +2 -0
  639. package/src/modules/bmm/workflows/testarch/automate/instructions.md +25 -4
  640. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -11
  641. package/src/modules/bmm/workflows/testarch/ci/checklist.md +7 -5
  642. package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +36 -3
  643. package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +25 -4
  644. package/src/modules/bmm/workflows/testarch/ci/instructions.md +23 -4
  645. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -10
  646. package/src/modules/bmm/workflows/testarch/framework/checklist.md +4 -4
  647. package/src/modules/bmm/workflows/testarch/framework/instructions.md +28 -2
  648. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -8
  649. package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +2 -0
  650. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  651. package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +2 -0
  652. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -11
  653. package/src/modules/bmm/workflows/testarch/test-design/checklist.md +7 -6
  654. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +182 -15
  655. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +13 -4
  656. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +13 -11
  657. package/src/modules/bmm/workflows/testarch/test-review/checklist.md +2 -0
  658. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +29 -9
  659. package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +2 -0
  660. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -9
  661. package/src/modules/bmm/workflows/testarch/trace/checklist.md +1 -0
  662. package/src/modules/bmm/workflows/testarch/trace/instructions.md +11 -9
  663. package/src/modules/bmm/workflows/testarch/trace/trace-template.md +2 -0
  664. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -13
  665. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +259 -210
  666. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +6 -5
  667. package/src/modules/bmm/workflows/workflow-status/instructions.md +188 -117
  668. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +122 -0
  669. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +110 -0
  670. package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +106 -0
  671. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +96 -0
  672. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  673. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
  674. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +7 -5
  675. package/src/modules/cis/_module-installer/installer.js +1 -1
  676. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +7 -10
  677. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +7 -10
  678. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +7 -10
  679. package/src/modules/cis/agents/innovation-strategist.agent.yaml +7 -10
  680. package/src/modules/cis/agents/presentation-master.agent.yaml +52 -0
  681. package/src/modules/cis/agents/storyteller/storyteller-sidecar/stories-told.md +7 -0
  682. package/src/modules/cis/agents/storyteller/storyteller-sidecar/story-preferences.md +7 -0
  683. package/src/modules/cis/agents/storyteller/storyteller.agent.yaml +25 -0
  684. package/src/modules/cis/docs/index.md +149 -0
  685. package/src/modules/cis/module.yaml +11 -0
  686. package/src/modules/cis/teams/creative-squad.yaml +1 -0
  687. package/src/modules/cis/teams/default-party.csv +12 -0
  688. package/src/modules/cis/workflows/README.md +102 -30
  689. package/src/modules/cis/workflows/design-thinking/instructions.md +4 -2
  690. package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -12
  691. package/src/modules/cis/workflows/innovation-strategy/instructions.md +7 -5
  692. package/src/modules/cis/workflows/innovation-strategy/template.md +3 -3
  693. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -12
  694. package/src/modules/cis/workflows/problem-solving/instructions.md +4 -2
  695. package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -12
  696. package/src/modules/cis/workflows/storytelling/instructions.md +14 -4
  697. package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -12
  698. package/src/utility/agent-components/activation-rules.txt +7 -0
  699. package/src/utility/agent-components/activation-steps.txt +13 -0
  700. package/src/utility/agent-components/agent-command-header.md +1 -0
  701. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  702. package/src/utility/agent-components/handler-action.txt +4 -0
  703. package/src/utility/agent-components/handler-exec.txt +6 -0
  704. package/src/utility/agent-components/handler-multi.txt +14 -0
  705. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  706. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  707. package/src/utility/agent-components/handler-workflow.txt +10 -0
  708. package/src/utility/agent-components/menu-handlers.txt +6 -0
  709. package/test/README.md +2 -2
  710. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +24 -0
  711. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +24 -0
  712. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
  713. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +30 -0
  714. package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +23 -0
  715. package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +22 -0
  716. package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +23 -0
  717. package/test/test-agent-schema.js +2 -2
  718. package/test/test-installation-components.js +214 -0
  719. package/tools/build-docs.js +630 -0
  720. package/tools/cli/README.md +1 -588
  721. package/tools/cli/commands/install.js +61 -20
  722. package/tools/cli/installers/install-messages.yaml +52 -0
  723. package/tools/cli/installers/lib/core/config-collector.js +596 -99
  724. package/tools/cli/installers/lib/core/custom-module-cache.js +259 -0
  725. package/tools/cli/installers/lib/core/dependency-resolver.js +2 -2
  726. package/tools/cli/installers/lib/core/detector.js +75 -16
  727. package/tools/cli/installers/lib/core/ide-config-manager.js +12 -8
  728. package/tools/cli/installers/lib/core/installer.js +1279 -724
  729. package/tools/cli/installers/lib/core/manifest-generator.js +285 -142
  730. package/tools/cli/installers/lib/core/manifest.js +74 -20
  731. package/tools/cli/installers/lib/custom/handler.js +363 -0
  732. package/tools/cli/installers/lib/ide/_base-ide.js +94 -12
  733. package/tools/cli/installers/lib/ide/antigravity.js +507 -0
  734. package/tools/cli/installers/lib/ide/auggie.js +148 -240
  735. package/tools/cli/installers/lib/ide/claude-code.js +95 -35
  736. package/tools/cli/installers/lib/ide/cline.js +64 -18
  737. package/tools/cli/installers/lib/ide/codex.js +226 -72
  738. package/tools/cli/installers/lib/ide/crush.js +79 -55
  739. package/tools/cli/installers/lib/ide/cursor.js +144 -20
  740. package/tools/cli/installers/lib/ide/gemini.js +180 -35
  741. package/tools/cli/installers/lib/ide/github-copilot.js +155 -58
  742. package/tools/cli/installers/lib/ide/iflow.js +79 -30
  743. package/tools/cli/installers/lib/ide/kilo.js +94 -16
  744. package/tools/cli/installers/lib/ide/kiro-cli.js +327 -0
  745. package/tools/cli/installers/lib/ide/manager.js +50 -0
  746. package/tools/cli/installers/lib/ide/opencode.js +66 -22
  747. package/tools/cli/installers/lib/ide/qwen.js +93 -11
  748. package/tools/cli/installers/lib/ide/roo.js +158 -176
  749. package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
  750. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +96 -0
  751. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +34 -19
  752. package/tools/cli/installers/lib/ide/shared/module-injections.js +2 -2
  753. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +119 -0
  754. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +241 -0
  755. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  756. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
  757. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
  758. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
  759. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
  760. package/tools/cli/installers/lib/ide/trae.js +67 -32
  761. package/tools/cli/installers/lib/ide/windsurf.js +65 -8
  762. package/tools/cli/installers/lib/message-loader.js +85 -0
  763. package/tools/cli/installers/lib/modules/manager.js +785 -97
  764. package/tools/cli/lib/activation-builder.js +8 -13
  765. package/tools/cli/lib/agent/compiler.js +565 -0
  766. package/tools/cli/lib/agent/installer.js +716 -0
  767. package/tools/cli/lib/agent/template-engine.js +152 -0
  768. package/tools/cli/lib/agent-analyzer.js +48 -20
  769. package/tools/cli/lib/agent-party-generator.js +5 -17
  770. package/tools/cli/lib/cli-utils.js +65 -46
  771. package/tools/cli/lib/config.js +7 -4
  772. package/tools/cli/lib/platform-codes.js +2 -2
  773. package/tools/cli/lib/ui.js +1133 -82
  774. package/tools/cli/lib/xml-handler.js +4 -55
  775. package/tools/cli/lib/yaml-format.js +6 -7
  776. package/tools/cli/lib/yaml-xml-builder.js +196 -56
  777. package/tools/flattener/ignoreRules.js +1 -1
  778. package/tools/flattener/xml.js +1 -7
  779. package/tools/lib/xml-utils.js +13 -0
  780. package/tools/maintainer/review-pr-README.md +55 -0
  781. package/tools/maintainer/review-pr.md +242 -0
  782. package/tools/migrate-custom-module-paths.js +124 -0
  783. package/tools/platform-codes.yaml +24 -0
  784. package/tools/schema/agent.js +312 -53
  785. package/tools/validate-agent-schema.js +2 -2
  786. package/tools/validate-svg-changes.sh +356 -0
  787. package/website/css/custom.css +52 -0
  788. package/website/docusaurus.config.js +179 -0
  789. package/website/sidebars.js +157 -0
  790. package/website/src/pages/downloads.md +81 -0
  791. package/website/src/pages/index.js +50 -0
  792. package/website/static/favicon.ico +0 -0
  793. package/website/static/img/logo.svg +4 -0
  794. package/website/static/robots.txt +37 -0
  795. package/.claude/commands/bmad/bmb/agents/bmad-builder.md +0 -70
  796. package/.claude/commands/bmad/bmb/workflows/README.md +0 -67
  797. package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +0 -15
  798. package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +0 -15
  799. package/.claude/commands/bmad/bmb/workflows/create-agent.md +0 -15
  800. package/.claude/commands/bmad/bmb/workflows/create-module.md +0 -15
  801. package/.claude/commands/bmad/bmb/workflows/create-workflow.md +0 -15
  802. package/.claude/commands/bmad/bmb/workflows/edit-agent.md +0 -15
  803. package/.claude/commands/bmad/bmb/workflows/edit-module.md +0 -15
  804. package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +0 -15
  805. package/.claude/commands/bmad/bmb/workflows/module-brief.md +0 -15
  806. package/.claude/commands/bmad/bmb/workflows/redoc.md +0 -15
  807. package/.claude/commands/bmad/bmd/agents/cli-chief.md +0 -108
  808. package/.claude/commands/bmad/bmd/agents/doc-keeper.md +0 -115
  809. package/.claude/commands/bmad/bmd/agents/release-chief.md +0 -109
  810. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -71
  811. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  812. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  813. package/.claude/commands/bmad/core/workflows/README.md +0 -27
  814. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -15
  815. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -15
  816. package/.claude/hooks/bmad-tts-injector.sh +0 -415
  817. package/.claude/hooks/bmad-voice-manager.sh +0 -511
  818. package/.claude/hooks/check-output-style.sh +0 -112
  819. package/.claude/hooks/download-extra-voices.sh +0 -244
  820. package/.claude/hooks/github-star-reminder.sh +0 -154
  821. package/.claude/hooks/language-manager.sh +0 -392
  822. package/.claude/hooks/learn-manager.sh +0 -475
  823. package/.claude/hooks/personality-manager.sh +0 -438
  824. package/.claude/hooks/piper-download-voices.sh +0 -165
  825. package/.claude/hooks/piper-installer.sh +0 -178
  826. package/.claude/hooks/piper-multispeaker-registry.sh +0 -165
  827. package/.claude/hooks/piper-voice-manager.sh +0 -293
  828. package/.claude/hooks/play-tts-elevenlabs.sh +0 -404
  829. package/.claude/hooks/play-tts-piper.sh +0 -338
  830. package/.claude/hooks/play-tts.sh +0 -100
  831. package/.claude/hooks/provider-commands.sh +0 -540
  832. package/.claude/hooks/provider-manager.sh +0 -298
  833. package/.claude/hooks/replay-target-audio.sh +0 -95
  834. package/.claude/hooks/sentiment-manager.sh +0 -201
  835. package/.claude/hooks/speed-manager.sh +0 -291
  836. package/.claude/hooks/voice-manager.sh +0 -594
  837. package/.claude/hooks/voices-config.sh +0 -70
  838. package/.claude/settings.local.json +0 -41
  839. package/.github/workflows/lint.yaml +0 -61
  840. package/bmad/_cfg/agent-manifest.csv +0 -7
  841. package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -42
  842. package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +0 -32
  843. package/bmad/_cfg/agents/bmd-doc-keeper.customize.yaml +0 -42
  844. package/bmad/_cfg/agents/bmd-release-chief.customize.yaml +0 -42
  845. package/bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  846. package/bmad/_cfg/files-manifest.csv +0 -83
  847. package/bmad/_cfg/manifest.yaml +0 -12
  848. package/bmad/_cfg/task-manifest.csv +0 -5
  849. package/bmad/_cfg/tool-manifest.csv +0 -2
  850. package/bmad/_cfg/workflow-manifest.csv +0 -15
  851. package/bmad/bmb/README.md +0 -132
  852. package/bmad/bmb/agents/bmad-builder.md +0 -70
  853. package/bmad/bmb/config.yaml +0 -14
  854. package/bmad/bmb/workflows/audit-workflow/checklist.md +0 -143
  855. package/bmad/bmb/workflows/audit-workflow/instructions.md +0 -341
  856. package/bmad/bmb/workflows/audit-workflow/template.md +0 -118
  857. package/bmad/bmb/workflows/audit-workflow/workflow.yaml +0 -23
  858. package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +0 -21
  859. package/bmad/bmb/workflows/convert-legacy/README.md +0 -262
  860. package/bmad/bmb/workflows/convert-legacy/checklist.md +0 -205
  861. package/bmad/bmb/workflows/convert-legacy/instructions.md +0 -377
  862. package/bmad/bmb/workflows/convert-legacy/workflow.yaml +0 -32
  863. package/bmad/bmb/workflows/create-agent/README.md +0 -320
  864. package/bmad/bmb/workflows/create-agent/agent-architecture.md +0 -419
  865. package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +0 -412
  866. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  867. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +0 -759
  868. package/bmad/bmb/workflows/create-agent/agent-types.md +0 -292
  869. package/bmad/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  870. package/bmad/bmb/workflows/create-agent/checklist.md +0 -62
  871. package/bmad/bmb/workflows/create-agent/communication-styles.md +0 -202
  872. package/bmad/bmb/workflows/create-agent/instructions.md +0 -430
  873. package/bmad/bmb/workflows/create-agent/workflow.yaml +0 -37
  874. package/bmad/bmb/workflows/create-module/README.md +0 -220
  875. package/bmad/bmb/workflows/create-module/README.md.bak +0 -218
  876. package/bmad/bmb/workflows/create-module/brainstorm-context.md +0 -137
  877. package/bmad/bmb/workflows/create-module/checklist.md +0 -244
  878. package/bmad/bmb/workflows/create-module/checklist.md.bak +0 -245
  879. package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  880. package/bmad/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  881. package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +0 -231
  882. package/bmad/bmb/workflows/create-module/instructions.md +0 -581
  883. package/bmad/bmb/workflows/create-module/instructions.md.bak +0 -521
  884. package/bmad/bmb/workflows/create-module/module-structure.md +0 -366
  885. package/bmad/bmb/workflows/create-module/module-structure.md.bak +0 -310
  886. package/bmad/bmb/workflows/create-module/workflow.yaml +0 -42
  887. package/bmad/bmb/workflows/create-module/workflow.yaml.bak +0 -40
  888. package/bmad/bmb/workflows/create-workflow/README.md +0 -277
  889. package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  890. package/bmad/bmb/workflows/create-workflow/checklist.md +0 -94
  891. package/bmad/bmb/workflows/create-workflow/instructions.md +0 -716
  892. package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
  893. package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  894. package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  895. package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  896. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -39
  897. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +0 -39
  898. package/bmad/bmb/workflows/create-workflow/workflow.yaml +0 -40
  899. package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +0 -38
  900. package/bmad/bmb/workflows/edit-agent/README.md +0 -112
  901. package/bmad/bmb/workflows/edit-agent/checklist.md +0 -112
  902. package/bmad/bmb/workflows/edit-agent/instructions.md +0 -290
  903. package/bmad/bmb/workflows/edit-agent/workflow.yaml +0 -33
  904. package/bmad/bmb/workflows/edit-module/README.md +0 -187
  905. package/bmad/bmb/workflows/edit-module/checklist.md +0 -165
  906. package/bmad/bmb/workflows/edit-module/instructions.md +0 -339
  907. package/bmad/bmb/workflows/edit-module/workflow.yaml +0 -34
  908. package/bmad/bmb/workflows/edit-workflow/README.md +0 -119
  909. package/bmad/bmb/workflows/edit-workflow/checklist.md +0 -70
  910. package/bmad/bmb/workflows/edit-workflow/instructions.md +0 -342
  911. package/bmad/bmb/workflows/edit-workflow/workflow.yaml +0 -27
  912. package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +0 -25
  913. package/bmad/bmb/workflows/module-brief/README.md +0 -264
  914. package/bmad/bmb/workflows/module-brief/checklist.md +0 -116
  915. package/bmad/bmb/workflows/module-brief/instructions.md +0 -267
  916. package/bmad/bmb/workflows/module-brief/workflow.yaml +0 -29
  917. package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +0 -27
  918. package/bmad/bmb/workflows/redoc/README.md +0 -87
  919. package/bmad/bmb/workflows/redoc/checklist.md +0 -99
  920. package/bmad/bmb/workflows/redoc/instructions.md +0 -265
  921. package/bmad/bmb/workflows/redoc/workflow.yaml +0 -32
  922. package/bmad/bmb/workflows/redoc/workflow.yaml.bak +0 -31
  923. package/bmad/bmd/README.md +0 -193
  924. package/bmad/bmd/README.md.bak +0 -193
  925. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  926. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +0 -102
  927. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  928. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +0 -68
  929. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  930. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +0 -123
  931. package/bmad/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  932. package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +0 -53
  933. package/bmad/bmd/agents/cli-chief.md +0 -108
  934. package/bmad/bmd/agents/cli-chief.md.bak +0 -108
  935. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  936. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +0 -177
  937. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  938. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +0 -81
  939. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  940. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +0 -88
  941. package/bmad/bmd/agents/doc-keeper.md +0 -115
  942. package/bmad/bmd/agents/doc-keeper.md.bak +0 -115
  943. package/bmad/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  944. package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +0 -164
  945. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  946. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +0 -82
  947. package/bmad/bmd/agents/release-chief-sidecar/memories.md +0 -73
  948. package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +0 -73
  949. package/bmad/bmd/agents/release-chief.md +0 -109
  950. package/bmad/bmd/agents/release-chief.md.bak +0 -109
  951. package/bmad/bmd/config.yaml +0 -10
  952. package/bmad/core/agents/bmad-master.md +0 -71
  953. package/bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -122
  954. package/bmad/core/config.yaml +0 -9
  955. package/bmad/core/tasks/adv-elicit-methods.csv +0 -39
  956. package/bmad/core/tasks/adv-elicit.xml +0 -104
  957. package/bmad/core/tasks/index-docs.xml +0 -65
  958. package/bmad/core/tasks/validate-workflow.xml +0 -89
  959. package/bmad/core/tasks/workflow.xml +0 -174
  960. package/bmad/core/tools/shard-doc.xml +0 -100
  961. package/bmad/core/workflows/brainstorming/README.md +0 -271
  962. package/bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  963. package/bmad/core/workflows/brainstorming/instructions.md +0 -314
  964. package/bmad/core/workflows/brainstorming/template.md +0 -102
  965. package/bmad/core/workflows/brainstorming/workflow.yaml +0 -43
  966. package/bmad/core/workflows/party-mode/instructions.md +0 -188
  967. package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
  968. package/bmad/docs/claude-code-instructions.md +0 -25
  969. package/bmad/docs/codex-instructions.md +0 -21
  970. package/bmd/README.md +0 -193
  971. package/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  972. package/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  973. package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  974. package/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  975. package/bmd/agents/cli-chief.agent.yaml +0 -126
  976. package/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  977. package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  978. package/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  979. package/bmd/agents/doc-keeper.agent.yaml +0 -137
  980. package/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  981. package/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  982. package/bmd/agents/release-chief-sidecar/memories.md +0 -73
  983. package/bmd/agents/release-chief.agent.yaml +0 -127
  984. package/bmd/bmad-custom-module-installer-plan.md +0 -1176
  985. package/bmd/config.yaml +0 -12
  986. package/docs/bmad-brownfield-guide.md +0 -1260
  987. package/docs/conversion-report-shard-doc-2025-10-26.md +0 -188
  988. package/docs/installers-bundlers/ide-injections.md +0 -186
  989. package/docs/installers-bundlers/installers-modules-platforms-reference.md +0 -327
  990. package/docs/installers-bundlers/web-bundler-usage.md +0 -54
  991. package/src/core/_module-installer/install-config.yaml +0 -28
  992. package/src/core/agents/bmad-web-orchestrator.agent.xml +0 -122
  993. package/src/core/tasks/adv-elicit-methods.csv +0 -39
  994. package/src/core/tasks/adv-elicit.xml +0 -104
  995. package/src/core/workflows/brainstorming/README.md +0 -271
  996. package/src/core/workflows/brainstorming/instructions.md +0 -314
  997. package/src/core/workflows/brainstorming/workflow.yaml +0 -43
  998. package/src/core/workflows/party-mode/instructions.md +0 -188
  999. package/src/core/workflows/party-mode/workflow.yaml +0 -23
  1000. package/src/modules/bmb/_module-installer/install-config.yaml +0 -26
  1001. package/src/modules/bmb/agents/bmad-builder.agent.yaml +0 -58
  1002. package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -143
  1003. package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
  1004. package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
  1005. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
  1006. package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
  1007. package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
  1008. package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
  1009. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -34
  1010. package/src/modules/bmb/workflows/create-agent/README.md +0 -320
  1011. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +0 -419
  1012. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  1013. package/src/modules/bmb/workflows/create-agent/agent-types.md +0 -292
  1014. package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  1015. package/src/modules/bmb/workflows/create-agent/checklist.md +0 -62
  1016. package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
  1017. package/src/modules/bmb/workflows/create-agent/instructions.md +0 -430
  1018. package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -49
  1019. package/src/modules/bmb/workflows/create-module/README.md +0 -220
  1020. package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
  1021. package/src/modules/bmb/workflows/create-module/checklist.md +0 -244
  1022. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  1023. package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  1024. package/src/modules/bmb/workflows/create-module/instructions.md +0 -581
  1025. package/src/modules/bmb/workflows/create-module/module-structure.md +0 -366
  1026. package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -44
  1027. package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
  1028. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  1029. package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
  1030. package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -716
  1031. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
  1032. package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  1033. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  1034. package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  1035. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -65
  1036. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -42
  1037. package/src/modules/bmb/workflows/edit-agent/README.md +0 -112
  1038. package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
  1039. package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -290
  1040. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -35
  1041. package/src/modules/bmb/workflows/edit-module/README.md +0 -187
  1042. package/src/modules/bmb/workflows/edit-module/checklist.md +0 -165
  1043. package/src/modules/bmb/workflows/edit-module/instructions.md +0 -339
  1044. package/src/modules/bmb/workflows/edit-module/workflow.yaml +0 -36
  1045. package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
  1046. package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
  1047. package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
  1048. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -29
  1049. package/src/modules/bmb/workflows/module-brief/README.md +0 -264
  1050. package/src/modules/bmb/workflows/module-brief/checklist.md +0 -116
  1051. package/src/modules/bmb/workflows/module-brief/instructions.md +0 -267
  1052. package/src/modules/bmb/workflows/module-brief/template.md +0 -275
  1053. package/src/modules/bmb/workflows/module-brief/workflow.yaml +0 -31
  1054. package/src/modules/bmb/workflows/redoc/README.md +0 -87
  1055. package/src/modules/bmb/workflows/redoc/checklist.md +0 -99
  1056. package/src/modules/bmb/workflows/redoc/instructions.md +0 -265
  1057. package/src/modules/bmb/workflows/redoc/workflow.yaml +0 -34
  1058. package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
  1059. package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
  1060. package/src/modules/bmm/_module-installer/install-config.yaml +0 -74
  1061. package/src/modules/bmm/agents/game-architect.agent.yaml +0 -35
  1062. package/src/modules/bmm/agents/game-designer.agent.yaml +0 -47
  1063. package/src/modules/bmm/agents/game-dev.agent.yaml +0 -39
  1064. package/src/modules/bmm/sub-modules/claude-code/config.yaml +0 -5
  1065. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +0 -242
  1066. package/src/modules/bmm/sub-modules/claude-code/readme.md +0 -87
  1067. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +0 -102
  1068. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +0 -82
  1069. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +0 -101
  1070. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +0 -84
  1071. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +0 -83
  1072. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +0 -81
  1073. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +0 -61
  1074. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +0 -168
  1075. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +0 -115
  1076. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +0 -123
  1077. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +0 -72
  1078. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +0 -51
  1079. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +0 -106
  1080. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +0 -102
  1081. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +0 -68
  1082. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +0 -108
  1083. package/src/modules/bmm/tasks/daily-standup.xml +0 -85
  1084. package/src/modules/bmm/tasks/retrospective.xml +0 -104
  1085. package/src/modules/bmm/teams/team-gamedev.yaml +0 -14
  1086. package/src/modules/bmm/testarch/README.md +0 -311
  1087. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +0 -38
  1088. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +0 -109
  1089. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +0 -41
  1090. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +0 -29
  1091. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -91
  1092. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  1093. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
  1094. package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +0 -221
  1095. package/src/modules/bmm/workflows/1-analysis/game-brief/instructions.md +0 -357
  1096. package/src/modules/bmm/workflows/1-analysis/game-brief/workflow.yaml +0 -44
  1097. package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +0 -180
  1098. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  1099. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -321
  1100. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -165
  1101. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -43
  1102. package/src/modules/bmm/workflows/1-analysis/research/README.md +0 -454
  1103. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -202
  1104. package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  1105. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +0 -259
  1106. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +0 -190
  1107. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +0 -337
  1108. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +0 -107
  1109. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +0 -329
  1110. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -433
  1111. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -613
  1112. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -125
  1113. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -501
  1114. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  1115. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -311
  1116. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -210
  1117. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -49
  1118. package/src/modules/bmm/workflows/2-plan-workflows/README.md +0 -258
  1119. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  1120. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1283
  1121. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -42
  1122. package/src/modules/bmm/workflows/2-plan-workflows/gdd/README.md +0 -222
  1123. package/src/modules/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md +0 -475
  1124. package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +0 -67
  1125. package/src/modules/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md +0 -557
  1126. package/src/modules/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +0 -38
  1127. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -117
  1128. package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +0 -63
  1129. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -449
  1130. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -46
  1131. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -107
  1132. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -11
  1133. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +0 -167
  1134. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +0 -278
  1135. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -269
  1136. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -55
  1137. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -56
  1138. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -52
  1139. package/src/modules/bmm/workflows/3-solutioning/README.md +0 -1
  1140. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -347
  1141. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  1142. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -244
  1143. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -703
  1144. package/src/modules/bmm/workflows/3-solutioning/architecture/readme.md +0 -318
  1145. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -54
  1146. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +0 -177
  1147. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -175
  1148. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -273
  1149. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -146
  1150. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -189
  1151. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -40
  1152. package/src/modules/bmm/workflows/4-implementation/README.md +0 -221
  1153. package/src/modules/bmm/workflows/4-implementation/code-review/README.md +0 -69
  1154. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -391
  1155. package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +0 -73
  1156. package/src/modules/bmm/workflows/4-implementation/create-story/README.md +0 -129
  1157. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -252
  1158. package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +0 -367
  1159. package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +0 -206
  1160. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -262
  1161. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/README.md +0 -195
  1162. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  1163. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -160
  1164. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  1165. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -34
  1166. package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +0 -77
  1167. package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +0 -156
  1168. package/src/modules/bmm/workflows/4-implementation/story-context/README.md +0 -234
  1169. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  1170. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  1171. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -201
  1172. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -32
  1173. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  1174. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -27
  1175. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  1176. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -27
  1177. package/src/modules/bmm/workflows/README.md +0 -577
  1178. package/src/modules/bmm/workflows/document-project/README.md +0 -444
  1179. package/src/modules/bmm/workflows/document-project/templates/README.md +0 -38
  1180. package/src/modules/bmm/workflows/testarch/README.md +0 -26
  1181. package/src/modules/bmm/workflows/testarch/atdd/README.md +0 -672
  1182. package/src/modules/bmm/workflows/testarch/automate/README.md +0 -869
  1183. package/src/modules/bmm/workflows/testarch/ci/README.md +0 -493
  1184. package/src/modules/bmm/workflows/testarch/framework/README.md +0 -340
  1185. package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +0 -469
  1186. package/src/modules/bmm/workflows/testarch/test-design/README.md +0 -493
  1187. package/src/modules/bmm/workflows/testarch/test-review/README.md +0 -775
  1188. package/src/modules/bmm/workflows/testarch/trace/README.md +0 -802
  1189. package/src/modules/bmm/workflows/workflow-status/README.md +0 -241
  1190. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-0.yaml +0 -54
  1191. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-1.yaml +0 -58
  1192. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +0 -76
  1193. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-3.yaml +0 -95
  1194. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +0 -88
  1195. package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +0 -75
  1196. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-0.yaml +0 -45
  1197. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-1.yaml +0 -49
  1198. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml +0 -78
  1199. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-3.yaml +0 -73
  1200. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +0 -75
  1201. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.md +0 -30
  1202. package/src/modules/cis/_module-installer/install-config.yaml +0 -14
  1203. package/src/modules/cis/agents/README.md +0 -104
  1204. package/src/modules/cis/agents/storyteller.agent.yaml +0 -23
  1205. package/src/modules/cis/readme.md +0 -86
  1206. package/src/utility/models/agent-activation-ide.xml +0 -51
  1207. package/src/utility/models/agent-activation-web.xml +0 -60
  1208. package/src/utility/models/agent-config-template.md +0 -23
  1209. package/src/utility/models/agent-in-team-activation.xml +0 -3
  1210. package/src/utility/models/fragments/activation-rules.xml +0 -8
  1211. package/src/utility/models/fragments/activation-steps.xml +0 -15
  1212. package/src/utility/models/fragments/handler-action.xml +0 -4
  1213. package/src/utility/models/fragments/handler-exec.xml +0 -5
  1214. package/src/utility/models/fragments/handler-tmpl.xml +0 -5
  1215. package/src/utility/models/fragments/handler-validate-workflow.xml +0 -7
  1216. package/src/utility/models/fragments/handler-workflow.xml +0 -9
  1217. package/src/utility/models/fragments/menu-handlers.xml +0 -6
  1218. package/src/utility/models/fragments/web-bundle-activation-steps.xml +0 -32
  1219. package/src/utility/templates/agent.customize.template.yaml +0 -42
  1220. package/test/fixtures/agent-schema/invalid/metadata/core-agent-with-module.agent.yaml +0 -26
  1221. package/test/fixtures/agent-schema/invalid/metadata/module-agent-missing-module.agent.yaml +0 -25
  1222. package/test/fixtures/agent-schema/invalid/metadata/wrong-module-value.agent.yaml +0 -26
  1223. package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
  1224. package/tools/cli/bundlers/bundle-web.js +0 -179
  1225. package/tools/cli/bundlers/test-analyst.js +0 -28
  1226. package/tools/cli/bundlers/test-bundler.js +0 -118
  1227. package/tools/cli/bundlers/web-bundler.js +0 -1479
  1228. package/tools/cli/commands/build.js +0 -458
  1229. package/tools/cli/commands/list.js +0 -28
  1230. package/tools/cli/commands/status.js +0 -47
  1231. package/tools/cli/commands/uninstall.js +0 -44
  1232. package/tools/cli/commands/update.js +0 -28
  1233. package/tools/cli/installers/lib/ide/task-tool-command-generator.js +0 -119
  1234. package/tools/cli/installers/lib/ide/workflow-command-generator.js +0 -235
  1235. package/tools/cli/installers/lib/ide/workflow-command-template.md +0 -15
  1236. package/tools/cli/lib/replace-project-root.js +0 -239
  1237. package/tools/cli/regenerate-manifests.js +0 -28
  1238. package/tools/cli/test-yaml-builder.js +0 -43
  1239. package/tools/validate-bundles.js +0 -87
  1240. package/v6-open-items.md +0 -23
  1241. /package/{bmad/bmb/workflows → src/modules/bmb/workflows-legacy}/module-brief/template.md +0 -0
  1242. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-brain-methods.csv +0 -0
  1243. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-context.md +0 -0
  1244. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/checklist.md +0 -0
  1245. /package/src/modules/{bmm/workflows/1-analysis/game-brief/template.md → bmgd/workflows/1-preproduction/game-brief/templates/game-brief-template.md} +0 -0
  1246. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/checklist.md +0 -0
  1247. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/action-platformer.md +0 -0
  1248. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/adventure.md +0 -0
  1249. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/card-game.md +0 -0
  1250. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/fighting.md +0 -0
  1251. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/horror.md +0 -0
  1252. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/idle-incremental.md +0 -0
  1253. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/metroidvania.md +0 -0
  1254. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/moba.md +0 -0
  1255. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/party-game.md +0 -0
  1256. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/puzzle.md +0 -0
  1257. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/racing.md +0 -0
  1258. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rhythm.md +0 -0
  1259. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/roguelike.md +0 -0
  1260. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rpg.md +0 -0
  1261. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sandbox.md +0 -0
  1262. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/shooter.md +0 -0
  1263. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/simulation.md +0 -0
  1264. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sports.md +0 -0
  1265. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/strategy.md +0 -0
  1266. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/survival.md +0 -0
  1267. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/text-based.md +0 -0
  1268. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/tower-defense.md +0 -0
  1269. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/turn-based-tactics.md +0 -0
  1270. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/visual-novel.md +0 -0
  1271. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types.csv +0 -0
  1272. /package/src/modules/{bmm/workflows/2-plan-workflows/gdd → bmgd/workflows/2-design/gdd/templates}/gdd-template.md +0 -0
  1273. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/checklist.md +0 -0
  1274. /package/src/modules/{bmm/workflows/2-plan-workflows/narrative → bmgd/workflows/2-design/narrative/templates}/narrative-template.md +0 -0
  1275. /package/src/modules/{bmm/workflows/3-solutioning/architecture → bmgd/workflows/3-technical/game-architecture}/decision-catalog.yaml +0 -0
  1276. /package/src/modules/{bmm/workflows/3-solutioning/architecture → bmgd/workflows/3-technical/game-architecture}/pattern-categories.csv +0 -0
  1277. /package/src/modules/{bmm/workflows/4-implementation/code-review/backlog_template.md → bmgd/workflows/4-production/code-review/backlog-template.md} +0 -0
  1278. /package/src/utility/{models/fragments/handler-data.xml → agent-components/handler-data.txt} +0 -0
@@ -1,1479 +0,0 @@
1
- const path = require('node:path');
2
- const fs = require('fs-extra');
3
- const chalk = require('chalk');
4
- const yaml = require('js-yaml');
5
- const { DependencyResolver } = require('../installers/lib/core/dependency-resolver');
6
- const { XmlHandler } = require('../lib/xml-handler');
7
- const { YamlXmlBuilder } = require('../lib/yaml-xml-builder');
8
- const { AgentPartyGenerator } = require('../lib/agent-party-generator');
9
- const xml2js = require('xml2js');
10
- const { getProjectRoot, getSourcePath, getModulePath } = require('../lib/project-root');
11
-
12
- class WebBundler {
13
- constructor(sourceDir = null, outputDir = 'web-bundles') {
14
- this.sourceDir = sourceDir || getSourcePath();
15
- this.outputDir = path.isAbsolute(outputDir) ? outputDir : path.join(getProjectRoot(), outputDir);
16
- this.modulesPath = getSourcePath('modules');
17
- this.utilityPath = getSourcePath('utility');
18
-
19
- this.dependencyResolver = new DependencyResolver();
20
- this.xmlHandler = new XmlHandler();
21
- this.yamlBuilder = new YamlXmlBuilder();
22
-
23
- // Cache for resolved dependencies to avoid duplicates
24
- this.dependencyCache = new Map();
25
-
26
- // Discovered agents and teams for manifest generation
27
- this.discoveredAgents = [];
28
- this.discoveredTeams = [];
29
-
30
- // Temporary directory for generated manifests
31
- this.tempDir = path.join(process.cwd(), '.bundler-temp');
32
- this.tempManifestDir = path.join(this.tempDir, 'bmad', '_cfg');
33
-
34
- // Bundle statistics
35
- this.stats = {
36
- totalAgents: 0,
37
- bundledAgents: 0,
38
- skippedAgents: 0,
39
- failedAgents: 0,
40
- invalidXml: 0,
41
- warnings: [],
42
- };
43
- }
44
-
45
- /**
46
- * Main entry point to bundle all modules
47
- */
48
- async bundleAll() {
49
- console.log(chalk.cyan.bold('═══════════════════════════════════════════════'));
50
- console.log(chalk.cyan.bold(' 🚀 Web Bundle Generation'));
51
- console.log(chalk.cyan.bold('═══════════════════════════════════════════════\n'));
52
-
53
- try {
54
- // Pre-discover all modules to generate complete manifests
55
- const modules = await this.discoverModules();
56
- for (const module of modules) {
57
- await this.preDiscoverModule(module);
58
- }
59
-
60
- // Create temporary manifest files
61
- await this.createTempManifests();
62
-
63
- // Process all modules
64
- for (const module of modules) {
65
- await this.bundleModule(module);
66
- }
67
-
68
- // Display summary
69
- this.displaySummary();
70
- } finally {
71
- // Clean up temp files
72
- await this.cleanupTempFiles();
73
- }
74
- }
75
-
76
- /**
77
- * Bundle a specific module
78
- */
79
- async bundleModule(moduleName) {
80
- const modulePath = path.join(this.modulesPath, moduleName);
81
-
82
- if (!(await fs.pathExists(modulePath))) {
83
- console.log(chalk.yellow(`Module ${moduleName} not found`));
84
- return { module: moduleName, agents: [], teams: [] };
85
- }
86
-
87
- console.log(chalk.bold(`\n📦 Bundling module: ${moduleName}`));
88
-
89
- const results = {
90
- module: moduleName,
91
- agents: [],
92
- teams: [],
93
- };
94
-
95
- // Pre-discover all agents and teams for manifest generation
96
- await this.preDiscoverModule(moduleName);
97
-
98
- // Ensure temp manifests exist (might not exist if called directly)
99
- if (!(await fs.pathExists(this.tempManifestDir))) {
100
- await this.createTempManifests();
101
- }
102
-
103
- // Process agents
104
- const agents = await this.discoverAgents(modulePath);
105
- for (const agent of agents) {
106
- try {
107
- await this.bundleAgent(moduleName, agent, false); // false = don't track again
108
- results.agents.push(agent);
109
- } catch (error) {
110
- console.error(` Failed to bundle agent ${agent}:`, error.message);
111
- }
112
- }
113
-
114
- // Process teams
115
- const teams = await this.discoverTeams(modulePath);
116
- for (const team of teams) {
117
- try {
118
- await this.bundleTeam(moduleName, team);
119
- results.teams.push(team);
120
- } catch (error) {
121
- console.error(` Failed to bundle team ${team}:`, error.message);
122
- }
123
- }
124
-
125
- return results;
126
- }
127
-
128
- /**
129
- * Bundle a single agent
130
- */
131
- async bundleAgent(moduleName, agentFile, shouldTrack = true) {
132
- const agentName = agentFile.endsWith('.agent.yaml') ? path.basename(agentFile, '.agent.yaml') : path.basename(agentFile, '.md');
133
- this.stats.totalAgents++;
134
-
135
- console.log(chalk.dim(` → Processing: ${agentName}`));
136
-
137
- const agentPath = path.join(this.modulesPath, moduleName, 'agents', agentFile);
138
-
139
- // Check if agent file exists
140
- if (!(await fs.pathExists(agentPath))) {
141
- this.stats.failedAgents++;
142
- console.log(chalk.red(` ✗ Agent file not found`));
143
- throw new Error(`Agent file not found: ${agentPath}`);
144
- }
145
-
146
- let content;
147
- let agentXml;
148
-
149
- // Handle YAML agents - build in-memory to XML
150
- if (agentFile.endsWith('.agent.yaml')) {
151
- // Build agent from YAML (no customize file for web bundles)
152
- const xmlContent = await this.yamlBuilder.buildFromYaml(agentPath, null, {
153
- includeMetadata: false, // Don't include build metadata in web bundles
154
- forWebBundle: true, // Use web-specific activation fragments
155
- });
156
-
157
- content = xmlContent;
158
- agentXml = this.extractAgentXml(xmlContent);
159
- } else {
160
- // Legacy MD format - read and extract XML
161
- content = await fs.readFile(agentPath, 'utf8');
162
- agentXml = this.extractAgentXml(content);
163
- }
164
-
165
- if (!agentXml) {
166
- this.stats.failedAgents++;
167
- console.log(chalk.red(` ✗ No agent XML found in ${agentFile}`));
168
- return;
169
- }
170
-
171
- // Check if agent has bundle="false" attribute
172
- if (this.shouldSkipBundling(agentXml)) {
173
- this.stats.skippedAgents++;
174
- console.log(chalk.gray(` ⊘ Skipped (bundle="false")`));
175
- return;
176
- }
177
-
178
- // Process {project-root} references in agent XML
179
- agentXml = this.processProjectRootReferences(agentXml);
180
-
181
- // Track for manifest generation BEFORE generating manifests (if not pre-discovered)
182
- if (shouldTrack) {
183
- const agentDetails = AgentPartyGenerator.extractAgentDetails(content, moduleName, agentName);
184
- if (agentDetails) {
185
- this.discoveredAgents.push(agentDetails);
186
- }
187
- }
188
-
189
- // Resolve dependencies with warning tracking
190
- const dependencyWarnings = [];
191
- const { dependencies, skippedWorkflows } = await this.resolveAgentDependencies(agentXml, moduleName, dependencyWarnings);
192
-
193
- if (dependencyWarnings.length > 0) {
194
- this.stats.warnings.push({ agent: agentName, warnings: dependencyWarnings });
195
- }
196
-
197
- // Remove commands for skipped workflows from agent XML
198
- if (skippedWorkflows.length > 0) {
199
- agentXml = this.removeSkippedWorkflowCommands(agentXml, skippedWorkflows);
200
- }
201
-
202
- // Build the bundle (no manifests for individual agents)
203
- const bundle = this.buildAgentBundle(agentXml, dependencies);
204
-
205
- // Validate XML
206
- const isValid = await this.validateXml(bundle);
207
- if (!isValid) {
208
- this.stats.invalidXml++;
209
- console.log(chalk.red(` ⚠ Invalid XML generated!`));
210
- }
211
-
212
- // Write bundle to output
213
- const outputPath = path.join(this.outputDir, moduleName, 'agents', `${agentName}.xml`);
214
- await fs.ensureDir(path.dirname(outputPath));
215
- await fs.writeFile(outputPath, bundle, 'utf8');
216
-
217
- this.stats.bundledAgents++;
218
- const statusIcon = isValid ? chalk.green('✓') : chalk.yellow('⚠');
219
- console.log(` ${statusIcon} Bundled: ${agentName}.xml${isValid ? '' : chalk.yellow(' (invalid XML)')}`);
220
- }
221
-
222
- /**
223
- * Bundle a team - includes orchestrator and all agents with their dependencies
224
- */
225
- async bundleTeam(moduleName, teamFile) {
226
- const teamName = path.basename(teamFile, path.extname(teamFile));
227
- console.log(chalk.dim(` → Processing team: ${teamName}`));
228
-
229
- const teamPath = path.join(this.modulesPath, moduleName, 'teams', teamFile);
230
-
231
- // Check if team file exists
232
- if (!(await fs.pathExists(teamPath))) {
233
- console.log(chalk.red(` ✗ Team file not found`));
234
- throw new Error(`Team file not found: ${teamPath}`);
235
- }
236
-
237
- // Read and parse team YAML
238
- const teamContent = await fs.readFile(teamPath, 'utf8');
239
- const teamConfig = yaml.load(teamContent);
240
-
241
- if (!teamConfig || !teamConfig.bundle) {
242
- console.log(chalk.red(` ✗ Invalid team configuration`));
243
- return;
244
- }
245
-
246
- // Start building the team bundle
247
- const dependencies = new Map();
248
- const processed = new Set();
249
- const allAgentXmls = [];
250
- const warnings = [];
251
-
252
- // 1. First, always add the bmad-web-orchestrator (XML file only, no transformation needed)
253
- const orchestratorXmlPath = path.join(this.sourceDir, 'core', 'agents', 'bmad-web-orchestrator.agent.xml');
254
-
255
- if (await fs.pathExists(orchestratorXmlPath)) {
256
- // Read the XML file directly - no transformation needed
257
- const xmlContent = await fs.readFile(orchestratorXmlPath, 'utf8');
258
- let orchestratorXml = xmlContent.trim();
259
-
260
- // Process {project-root} references
261
- orchestratorXml = this.processProjectRootReferences(orchestratorXml);
262
-
263
- // Inject help/exit menu items only (orchestrator has its own activation)
264
- orchestratorXml = this.injectHelpExitMenuItems(orchestratorXml);
265
-
266
- // Resolve orchestrator dependencies
267
- const { dependencies: orchDeps } = await this.resolveAgentDependencies(orchestratorXml, 'core', warnings);
268
-
269
- // Merge orchestrator dependencies
270
- for (const [id, content] of orchDeps) {
271
- if (!dependencies.has(id)) {
272
- dependencies.set(id, content);
273
- }
274
- }
275
-
276
- // Add orchestrator XML first
277
- allAgentXmls.push(orchestratorXml);
278
- console.log(chalk.gray(` + Added orchestrator: bmad-web-orchestrator`));
279
- } else {
280
- console.log(chalk.yellow(` ⚠ Orchestrator not found at: ${orchestratorXmlPath}`));
281
- }
282
-
283
- // 2. Determine which agents to include
284
- let agentsToBundle = [];
285
-
286
- if (teamConfig.agents === '*' || (Array.isArray(teamConfig.agents) && teamConfig.agents.includes('*'))) {
287
- // Include all agents from the module
288
- const agentsPath = path.join(this.modulesPath, moduleName, 'agents');
289
- if (await fs.pathExists(agentsPath)) {
290
- const agentFiles = await fs.readdir(agentsPath);
291
- agentsToBundle = agentFiles
292
- .filter((file) => file.endsWith('.agent.yaml') || (file.endsWith('.md') && !file.toLowerCase().includes('readme')))
293
- .map((file) => file.replace(/\.(agent\.yaml|md)$/, ''));
294
- }
295
- } else if (Array.isArray(teamConfig.agents)) {
296
- // Include specific agents listed
297
- agentsToBundle = teamConfig.agents;
298
- } else {
299
- console.log(chalk.yellow(` ⚠ No agents specified in team configuration`));
300
- }
301
-
302
- // 3. Process each agent and their dependencies
303
- for (const agentName of agentsToBundle) {
304
- // Try YAML first, then MD
305
- let agentPath = path.join(this.modulesPath, moduleName, 'agents', `${agentName}.agent.yaml`);
306
- let isYaml = await fs.pathExists(agentPath);
307
-
308
- if (!isYaml) {
309
- agentPath = path.join(this.modulesPath, moduleName, 'agents', `${agentName}.md`);
310
- if (!(await fs.pathExists(agentPath))) {
311
- console.log(chalk.yellow(` ⚠ Agent not found: ${agentName}`));
312
- continue;
313
- }
314
- }
315
-
316
- let agentXml;
317
-
318
- if (isYaml) {
319
- // Build YAML agent in-memory - skip activation for team agents (orchestrator handles it)
320
- const xmlContent = await this.yamlBuilder.buildFromYaml(agentPath, null, {
321
- includeMetadata: false,
322
- skipActivation: true, // Skip activation for team agents
323
- });
324
- agentXml = this.extractAgentXml(xmlContent);
325
- } else {
326
- // Read legacy MD agent
327
- const agentContent = await fs.readFile(agentPath, 'utf8');
328
- agentXml = this.extractAgentXml(agentContent);
329
- }
330
-
331
- if (!agentXml) {
332
- console.log(chalk.yellow(` ⚠ No XML found in agent: ${agentName}`));
333
- continue;
334
- }
335
-
336
- // Skip agents with bundle="false"
337
- if (this.shouldSkipBundling(agentXml)) {
338
- console.log(chalk.gray(` ⊘ Skipped agent (bundle="false"): ${agentName}`));
339
- continue;
340
- }
341
-
342
- // Process {project-root} references
343
- agentXml = this.processProjectRootReferences(agentXml);
344
-
345
- // Resolve agent dependencies
346
- const agentWarnings = [];
347
- const { dependencies: agentDeps, skippedWorkflows } = await this.resolveAgentDependencies(agentXml, moduleName, agentWarnings);
348
-
349
- if (agentWarnings.length > 0) {
350
- warnings.push({ agent: agentName, warnings: agentWarnings });
351
- }
352
-
353
- // Remove commands for skipped workflows from agent XML
354
- if (skippedWorkflows.length > 0) {
355
- agentXml = this.removeSkippedWorkflowCommands(agentXml, skippedWorkflows);
356
- }
357
-
358
- // Merge agent dependencies (deduplicate)
359
- for (const [id, content] of agentDeps) {
360
- if (!dependencies.has(id)) {
361
- dependencies.set(id, content);
362
- }
363
- }
364
-
365
- // Skip web activation injection for team agents - orchestrator handles everything
366
- // Only inject help/exit menu items if missing
367
- agentXml = this.injectHelpExitMenuItems(agentXml);
368
-
369
- // Add agent XML to the collection
370
- allAgentXmls.push(agentXml);
371
- console.log(chalk.gray(` + Added agent: ${agentName}`));
372
- }
373
-
374
- // 4. Build the team bundle XML
375
- const bundle = this.buildTeamBundle(teamConfig.bundle, allAgentXmls, dependencies);
376
-
377
- // 5. Validate XML
378
- const isValid = await this.validateXml(bundle);
379
- if (!isValid) {
380
- console.log(chalk.red(` ⚠ Invalid XML generated for team!`));
381
- }
382
-
383
- // 6. Write bundle to output
384
- const outputPath = path.join(this.outputDir, moduleName, 'teams', `${teamName}.xml`);
385
- await fs.ensureDir(path.dirname(outputPath));
386
- await fs.writeFile(outputPath, bundle, 'utf8');
387
-
388
- const statusIcon = isValid ? chalk.green('✓') : chalk.yellow('⚠');
389
- console.log(` ${statusIcon} Bundled team: ${teamName}.xml${isValid ? '' : chalk.yellow(' (invalid XML)')}`);
390
-
391
- // Track warnings
392
- if (warnings.length > 0) {
393
- this.stats.warnings.push(...warnings);
394
- }
395
- }
396
-
397
- /**
398
- * Build the final team bundle XML
399
- */
400
- buildTeamBundle(teamMetadata, agentXmls, dependencies) {
401
- const parts = ['<?xml version="1.0" encoding="UTF-8"?>', '<team-bundle>', ' <!-- Agent Definitions -->', ' <agents>'];
402
-
403
- for (const agentXml of agentXmls) {
404
- // Indent each agent XML properly (add 4 spaces to each line)
405
- const indentedAgent = agentXml
406
- .split('\n')
407
- .map((line) => ' ' + line)
408
- .join('\n');
409
- parts.push(indentedAgent);
410
- }
411
-
412
- parts.push(' </agents>');
413
-
414
- // Add all dependencies
415
- if (dependencies && dependencies.size > 0) {
416
- parts.push('', ' <!-- Shared Dependencies -->', ' <dependencies>');
417
-
418
- for (const [id, content] of dependencies) {
419
- // All dependencies are now consistently wrapped in <file> elements
420
- // Indent properly (add 4 spaces to each line)
421
- const indentedContent = content
422
- .split('\n')
423
- .map((line) => ' ' + line)
424
- .join('\n');
425
- parts.push(indentedContent);
426
- }
427
-
428
- parts.push(' </dependencies>');
429
- }
430
-
431
- parts.push('</team-bundle>');
432
-
433
- return parts.join('\n');
434
- }
435
-
436
- /**
437
- * Pre-discover all agents and teams in a module for manifest generation
438
- */
439
- async preDiscoverModule(moduleName) {
440
- const modulePath = path.join(this.modulesPath, moduleName);
441
-
442
- // Clear any previously discovered agents for this module
443
- this.discoveredAgents = this.discoveredAgents.filter((a) => a.module !== moduleName);
444
-
445
- // Discover agents
446
- const agentsPath = path.join(modulePath, 'agents');
447
- if (await fs.pathExists(agentsPath)) {
448
- const files = await fs.readdir(agentsPath);
449
- for (const file of files) {
450
- if (file.endsWith('.agent.yaml') || (file.endsWith('.md') && !file.toLowerCase().includes('readme'))) {
451
- const agentPath = path.join(agentsPath, file);
452
- let content;
453
-
454
- if (file.endsWith('.agent.yaml')) {
455
- // Build YAML agent in-memory
456
- content = await this.yamlBuilder.buildFromYaml(agentPath, null, {
457
- includeMetadata: false,
458
- });
459
- } else {
460
- // Read legacy MD agent
461
- content = await fs.readFile(agentPath, 'utf8');
462
- }
463
-
464
- const agentXml = this.extractAgentXml(content);
465
-
466
- if (agentXml) {
467
- // Skip agents with bundle="false"
468
- if (this.shouldSkipBundling(agentXml)) {
469
- continue;
470
- }
471
-
472
- const agentName = file.endsWith('.agent.yaml') ? path.basename(file, '.agent.yaml') : path.basename(file, '.md');
473
- // Use the shared generator to extract agent details (pass full content)
474
- const agentDetails = AgentPartyGenerator.extractAgentDetails(content, moduleName, agentName);
475
- if (agentDetails) {
476
- this.discoveredAgents.push(agentDetails);
477
- }
478
- }
479
- }
480
- }
481
- }
482
-
483
- // TODO: Discover teams when implemented
484
- }
485
-
486
- /**
487
- * Extract agent XML from markdown content
488
- */
489
- extractAgentXml(content) {
490
- // Try 4 backticks first (can contain 3 backtick blocks inside)
491
- let match = content.match(/````xml\s*([\s\S]*?)````/);
492
- if (!match) {
493
- // Fall back to 3 backticks if no 4-backtick block found
494
- match = content.match(/```xml\s*([\s\S]*?)```/);
495
- }
496
-
497
- if (match) {
498
- const xmlContent = match[1];
499
- const agentMatch = xmlContent.match(/<agent[^>]*>[\s\S]*?<\/agent>/);
500
- return agentMatch ? agentMatch[0] : null;
501
- }
502
-
503
- // Fall back to direct extraction
504
- match = content.match(/<agent[^>]*>[\s\S]*?<\/agent>/);
505
- return match ? match[0] : null;
506
- }
507
-
508
- /**
509
- * Resolve all dependencies for an agent
510
- */
511
- async resolveAgentDependencies(agentXml, moduleName, warnings = []) {
512
- const dependencies = new Map();
513
- const processed = new Set();
514
- const skippedWorkflows = [];
515
-
516
- // Extract file references from agent XML
517
- const { refs, workflowRefs } = this.extractFileReferences(agentXml);
518
-
519
- // Process regular file references
520
- for (const ref of refs) {
521
- await this.processFileDependency(ref, dependencies, processed, moduleName, warnings);
522
- }
523
-
524
- // Process workflow references with special handling
525
- for (const workflowRef of workflowRefs) {
526
- const result = await this.processWorkflowDependency(workflowRef, dependencies, processed, moduleName, warnings);
527
- if (result && result.skipped) {
528
- skippedWorkflows.push(workflowRef);
529
- }
530
- }
531
-
532
- return { dependencies, skippedWorkflows };
533
- }
534
-
535
- /**
536
- * Extract file references from agent XML
537
- */
538
- extractFileReferences(xml) {
539
- const refs = new Set();
540
- const workflowRefs = new Set();
541
-
542
- // Match various file reference patterns
543
- const patterns = [
544
- /exec="([^"]+)"/g, // Command exec paths
545
- /tmpl="([^"]+)"/g, // Template paths
546
- /data="([^"]+)"/g, // Data file paths
547
- /file="([^"]+)"/g, // Generic file refs
548
- /src="([^"]+)"/g, // Source paths
549
- /system-prompts="([^"]+)"/g,
550
- /tools="([^"]+)"/g,
551
- /knowledge="([^"]+)"/g,
552
- /{project-root}\/([^"'\s<>]+)/g,
553
- ];
554
-
555
- for (const pattern of patterns) {
556
- let match;
557
- while ((match = pattern.exec(xml)) !== null) {
558
- let filePath = match[1];
559
- // Remove {project-root} prefix if present
560
- filePath = filePath.replace(/^{project-root}\//, '');
561
-
562
- // Skip obvious placeholder/example paths
563
- if (filePath && !filePath.includes('path/to/') && !filePath.includes('example')) {
564
- refs.add(filePath);
565
- }
566
- }
567
- }
568
-
569
- // Extract workflow references - both 'workflow' and 'run-workflow' attributes
570
- const workflowPatterns = [
571
- /workflow="([^"]+)"/g, // Menu items with workflow attribute
572
- /run-workflow="([^"]+)"/g, // Commands with run-workflow attribute
573
- /validate-workflow="([^"]+)"/g, // Validation workflow references
574
- ];
575
-
576
- for (const pattern of workflowPatterns) {
577
- let match;
578
- while ((match = pattern.exec(xml)) !== null) {
579
- let workflowPath = match[1];
580
- workflowPath = workflowPath.replace(/^{project-root}\//, '');
581
-
582
- // Skip obvious placeholder/example paths
583
- if (workflowPath && workflowPath.endsWith('.yaml') && !workflowPath.includes('path/to/') && !workflowPath.includes('example')) {
584
- workflowRefs.add(workflowPath);
585
- }
586
- }
587
- }
588
-
589
- return { refs: [...refs], workflowRefs: [...workflowRefs] };
590
- }
591
-
592
- /**
593
- * Remove commands from agent XML that reference skipped workflows
594
- */
595
- removeSkippedWorkflowCommands(agentXml, skippedWorkflows) {
596
- let modifiedXml = agentXml;
597
-
598
- // For each skipped workflow, find and remove the corresponding <c> command
599
- for (const workflowPath of skippedWorkflows) {
600
- // Match: <c cmd="..." run-workflow="workflowPath">...</c>
601
- // Need to escape special regex characters in the path
602
- const escapedPath = workflowPath.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`);
603
-
604
- // Pattern to match the command line with this workflow
605
- const pattern = new RegExp(`\\s*<c\\s+cmd="[^"]*"\\s+run-workflow="[^"]*${escapedPath}"[^>]*>.*?</c>\\s*`, 'gs');
606
-
607
- modifiedXml = modifiedXml.replace(pattern, '');
608
- }
609
-
610
- return modifiedXml;
611
- }
612
-
613
- /**
614
- * Process a file dependency recursively
615
- */
616
- async processFileDependency(filePath, dependencies, processed, moduleName, warnings = []) {
617
- // Skip if already processed
618
- if (processed.has(filePath)) {
619
- return;
620
- }
621
- processed.add(filePath);
622
-
623
- // Skip agent-manifest.csv manifest for web bundles (agents are already bundled)
624
- if (filePath === 'bmad/_cfg/agent-manifest.csv' || filePath.endsWith('/agent-manifest.csv')) {
625
- return;
626
- }
627
-
628
- // Handle wildcard patterns
629
- if (filePath.includes('*')) {
630
- await this.processWildcardDependency(filePath, dependencies, processed, moduleName, warnings);
631
- return;
632
- }
633
-
634
- // Resolve actual file path
635
- const actualPath = this.resolveFilePath(filePath, moduleName);
636
-
637
- if (!actualPath || !(await fs.pathExists(actualPath))) {
638
- warnings.push(filePath);
639
- return;
640
- }
641
-
642
- // Read file content
643
- let content = await fs.readFile(actualPath, 'utf8');
644
-
645
- // Process {project-root} references
646
- content = this.processProjectRootReferences(content);
647
-
648
- // Extract dependencies from frontmatter if present
649
- const frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
650
- if (frontmatterMatch) {
651
- const frontmatter = frontmatterMatch[1];
652
- // Look for dependencies in frontmatter
653
- const depMatch = frontmatter.match(/dependencies:\s*\[(.*?)\]/);
654
- if (depMatch) {
655
- const deps = depMatch[1].match(/['"]([^'"]+)['"]/g);
656
- if (deps) {
657
- for (const dep of deps) {
658
- const depPath = dep.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
659
- if (depPath && !processed.has(depPath)) {
660
- await this.processFileDependency(depPath, dependencies, processed, moduleName, warnings);
661
- }
662
- }
663
- }
664
- }
665
- // Look for template references
666
- const templateMatch = frontmatter.match(/template:\s*\[(.*?)\]/);
667
- if (templateMatch) {
668
- const templates = templateMatch[1].match(/['"]([^'"]+)['"]/g);
669
- if (templates) {
670
- for (const template of templates) {
671
- const templatePath = template.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
672
- if (templatePath && !processed.has(templatePath)) {
673
- await this.processFileDependency(templatePath, dependencies, processed, moduleName, warnings);
674
- }
675
- }
676
- }
677
- }
678
- }
679
-
680
- // Extract XML from markdown if applicable
681
- const ext = path.extname(actualPath).toLowerCase();
682
- let processedContent = content;
683
-
684
- switch (ext) {
685
- case '.md': {
686
- // Try to extract XML from markdown - handle both 3 and 4 backtick blocks
687
- // First try 4 backticks (which can contain 3 backtick blocks inside)
688
- let xmlMatches = [...content.matchAll(/````xml\s*([\s\S]*?)````/g)];
689
-
690
- // If no 4-backtick blocks, try 3 backticks
691
- if (xmlMatches.length === 0) {
692
- xmlMatches = [...content.matchAll(/```xml\s*([\s\S]*?)```/g)];
693
- }
694
-
695
- const xmlBlocks = [];
696
-
697
- for (const match of xmlMatches) {
698
- if (match[1]) {
699
- xmlBlocks.push(match[1].trim());
700
- }
701
- }
702
-
703
- if (xmlBlocks.length > 0) {
704
- // For XML content, just include it directly (it's already valid XML)
705
- processedContent = xmlBlocks.join('\n\n');
706
- } else {
707
- // No XML blocks found, skip non-XML markdown files
708
- return;
709
- }
710
-
711
- break;
712
- }
713
- case '.csv': {
714
- // CSV files need special handling - convert to XML file-index
715
- const lines = content.split('\n').filter((line) => line.trim());
716
- if (lines.length === 0) return;
717
-
718
- const headers = lines[0].split(',').map((h) => h.trim());
719
- const rows = lines.slice(1);
720
-
721
- const indexParts = [`<file-index id="${filePath}">`];
722
- indexParts.push(' <items>');
723
-
724
- // Track files referenced in CSV for additional bundling
725
- const referencedFiles = new Set();
726
-
727
- for (const row of rows) {
728
- const values = row.split(',').map((v) => v.trim());
729
- if (values.every((v) => !v)) continue;
730
-
731
- indexParts.push(' <item>');
732
- for (const [i, header] of headers.entries()) {
733
- const value = values[i] || '';
734
- const tagName = header.toLowerCase().replaceAll(/[^a-z0-9]/g, '_');
735
- indexParts.push(` <${tagName}>${value}</${tagName}>`);
736
-
737
- // Track referenced files
738
- if (header.toLowerCase().includes('file') && value.endsWith('.md')) {
739
- // Build path relative to CSV location
740
- const csvDir = path.dirname(actualPath);
741
- const refPath = path.join(csvDir, value);
742
- if (fs.existsSync(refPath)) {
743
- const refId = filePath.replace('index.csv', value);
744
- referencedFiles.add(refId);
745
- }
746
- }
747
- }
748
- indexParts.push(' </item>');
749
- }
750
-
751
- indexParts.push(' </items>', '</file-index>');
752
-
753
- // Store the XML version wrapped in a file element
754
- const csvXml = indexParts.join('\n');
755
- const wrappedCsv = `<file id="${filePath}" type="xml">\n${csvXml}\n</file>`;
756
- dependencies.set(filePath, wrappedCsv);
757
-
758
- // Process referenced files from CSV
759
- for (const refId of referencedFiles) {
760
- if (!processed.has(refId)) {
761
- await this.processFileDependency(refId, dependencies, processed, moduleName, warnings);
762
- }
763
- }
764
-
765
- return;
766
- }
767
- case '.xml': {
768
- // XML files can be included directly
769
- processedContent = content;
770
- break;
771
- }
772
- default: {
773
- // For other non-XML file types, skip them
774
- return;
775
- }
776
- }
777
-
778
- // Determine file type for wrapping
779
- let fileType = 'text';
780
- if (ext === '.xml' || (ext === '.md' && processedContent.trim().startsWith('<'))) {
781
- fileType = 'xml';
782
- } else
783
- switch (ext) {
784
- case '.yaml':
785
- case '.yml': {
786
- fileType = 'yaml';
787
-
788
- break;
789
- }
790
- case '.json': {
791
- fileType = 'json';
792
-
793
- break;
794
- }
795
- case '.md': {
796
- fileType = 'md';
797
-
798
- break;
799
- }
800
- // No default
801
- }
802
-
803
- // Wrap content in file element and store
804
- const wrappedContent = this.wrapContentInXml(processedContent, filePath, fileType);
805
- dependencies.set(filePath, wrappedContent);
806
-
807
- // Recursively scan for more dependencies
808
- const { refs: nestedRefs } = this.extractFileReferences(processedContent);
809
- for (const ref of nestedRefs) {
810
- await this.processFileDependency(ref, dependencies, processed, moduleName, warnings);
811
- }
812
- }
813
-
814
- /**
815
- * Process a workflow YAML file and its bundle files
816
- */
817
- async processWorkflowDependency(workflowPath, dependencies, processed, moduleName, warnings = []) {
818
- // Skip if already processed
819
- if (processed.has(workflowPath)) {
820
- return { skipped: false };
821
- }
822
- processed.add(workflowPath);
823
-
824
- // Resolve actual file path
825
- const actualPath = this.resolveFilePath(workflowPath, moduleName);
826
-
827
- if (!actualPath || !(await fs.pathExists(actualPath))) {
828
- warnings.push(workflowPath);
829
- return { skipped: true };
830
- }
831
-
832
- // Read and parse YAML file
833
- const yamlContent = await fs.readFile(actualPath, 'utf8');
834
- let workflowConfig;
835
-
836
- try {
837
- workflowConfig = yaml.load(yamlContent);
838
- } catch (error) {
839
- warnings.push(`${workflowPath} (invalid YAML: ${error.message})`);
840
- return { skipped: true };
841
- }
842
-
843
- // Check if web_bundle is explicitly set to false
844
- if (workflowConfig.web_bundle === false) {
845
- // Mark this workflow as skipped so we can remove the command from agent
846
- return { skipped: true, workflowPath };
847
- }
848
-
849
- // Create YAML content with only web_bundle section (flattened)
850
- let bundleYamlContent;
851
- if (workflowConfig.web_bundle && typeof workflowConfig.web_bundle === 'object') {
852
- // Only include the web_bundle content, flattened to root level
853
- bundleYamlContent = yaml.dump(workflowConfig.web_bundle);
854
- } else {
855
- // If no web_bundle section, include full YAML
856
- bundleYamlContent = yamlContent;
857
- }
858
-
859
- // Include the YAML file with only web_bundle content, wrapped in XML
860
- const yamlId = workflowPath.replace(/^{project-root}\//, '');
861
- const wrappedYaml = this.wrapContentInXml(bundleYamlContent, yamlId, 'yaml');
862
- dependencies.set(yamlId, wrappedYaml);
863
-
864
- // Always include core workflow task when processing workflows
865
- await this.includeCoreWorkflowFiles(dependencies, processed, moduleName, warnings);
866
-
867
- // Check if advanced elicitation is enabled
868
- if (workflowConfig.web_bundle && workflowConfig.web_bundle.use_advanced_elicitation) {
869
- await this.includeAdvancedElicitationFiles(dependencies, processed, moduleName, warnings);
870
- }
871
-
872
- // Process web_bundle_files if they exist
873
- if (workflowConfig.web_bundle && workflowConfig.web_bundle.web_bundle_files) {
874
- const bundleFiles = workflowConfig.web_bundle.web_bundle_files;
875
-
876
- for (const bundleFilePath of bundleFiles) {
877
- if (processed.has(bundleFilePath)) {
878
- continue;
879
- }
880
-
881
- const bundleActualPath = this.resolveFilePath(bundleFilePath, moduleName);
882
-
883
- if (!bundleActualPath || !(await fs.pathExists(bundleActualPath))) {
884
- warnings.push(bundleFilePath);
885
- continue;
886
- }
887
-
888
- // Check if this is another workflow.yaml file - if so, recursively process it
889
- if (bundleFilePath.endsWith('workflow.yaml')) {
890
- // Recursively process this workflow and its dependencies
891
- await this.processWorkflowDependency(bundleFilePath, dependencies, processed, moduleName, warnings);
892
- } else {
893
- // Regular file - process normally
894
- processed.add(bundleFilePath);
895
-
896
- // Read the file content
897
- const fileContent = await fs.readFile(bundleActualPath, 'utf8');
898
- const fileExt = path.extname(bundleActualPath).toLowerCase().replace('.', '');
899
-
900
- // Wrap in XML with proper escaping
901
- const wrappedContent = this.wrapContentInXml(fileContent, bundleFilePath, fileExt);
902
- dependencies.set(bundleFilePath, wrappedContent);
903
- }
904
- }
905
- }
906
-
907
- return { skipped: false };
908
- }
909
-
910
- /**
911
- * Include core workflow task files
912
- */
913
- async includeCoreWorkflowFiles(dependencies, processed, moduleName, warnings = []) {
914
- const coreWorkflowPath = 'bmad/core/tasks/workflow.xml';
915
-
916
- if (processed.has(coreWorkflowPath)) {
917
- return;
918
- }
919
- processed.add(coreWorkflowPath);
920
-
921
- const actualPath = this.resolveFilePath(coreWorkflowPath, moduleName);
922
-
923
- if (!actualPath || !(await fs.pathExists(actualPath))) {
924
- warnings.push(coreWorkflowPath);
925
- return;
926
- }
927
-
928
- const fileContent = await fs.readFile(actualPath, 'utf8');
929
- const wrappedContent = this.wrapContentInXml(fileContent, coreWorkflowPath, 'xml');
930
- dependencies.set(coreWorkflowPath, wrappedContent);
931
- }
932
-
933
- /**
934
- * Include advanced elicitation files
935
- */
936
- async includeAdvancedElicitationFiles(dependencies, processed, moduleName, warnings = []) {
937
- const elicitationFiles = ['bmad/core/tasks/adv-elicit.xml', 'bmad/core/tasks/adv-elicit-methods.csv'];
938
-
939
- for (const filePath of elicitationFiles) {
940
- if (processed.has(filePath)) {
941
- continue;
942
- }
943
- processed.add(filePath);
944
-
945
- const actualPath = this.resolveFilePath(filePath, moduleName);
946
-
947
- if (!actualPath || !(await fs.pathExists(actualPath))) {
948
- warnings.push(filePath);
949
- continue;
950
- }
951
-
952
- const fileContent = await fs.readFile(actualPath, 'utf8');
953
- const fileExt = path.extname(actualPath).toLowerCase().replace('.', '');
954
- const wrappedContent = this.wrapContentInXml(fileContent, filePath, fileExt);
955
- dependencies.set(filePath, wrappedContent);
956
- }
957
- }
958
-
959
- /**
960
- * Wrap file content in XML with proper escaping
961
- */
962
- wrapContentInXml(content, id, type = 'text') {
963
- // For XML files, include directly without CDATA (they're already valid XML)
964
- if (type === 'xml') {
965
- // XML files can be included directly as they're already well-formed
966
- // Just wrap in a file element
967
- return `<file id="${id}" type="${type}">\n${content}\n</file>`;
968
- }
969
-
970
- // For all other file types, use CDATA to preserve content exactly
971
- // Escape any ]]> sequences in the content by splitting CDATA sections
972
- // Replace ]]> with ]]]]><![CDATA[> to properly escape it within CDATA
973
- const escapedContent = content.replaceAll(']]>', ']]]]><![CDATA[>');
974
-
975
- // Use CDATA to preserve content exactly as-is, including special characters
976
- return `<file id="${id}" type="${type}"><![CDATA[${escapedContent}]]></file>`;
977
- }
978
-
979
- /**
980
- * Process wildcard dependency patterns
981
- */
982
- async processWildcardDependency(pattern, dependencies, processed, moduleName, warnings = []) {
983
- // Remove {project-root} prefix
984
- pattern = pattern.replace(/^{project-root}\//, '');
985
-
986
- // Get directory and file pattern
987
- const lastSlash = pattern.lastIndexOf('/');
988
- const dirPath = pattern.slice(0, Math.max(0, lastSlash));
989
- const filePattern = pattern.slice(Math.max(0, lastSlash + 1));
990
-
991
- // Resolve directory path without checking file existence
992
- let dir;
993
- if (dirPath.startsWith('bmad/')) {
994
- // Remove bmad/ prefix
995
- const actualPath = dirPath.replace(/^bmad\//, '');
996
-
997
- // Try different path mappings for directories
998
- const possibleDirs = [
999
- // Try as module path: bmad/cis/... -> src/modules/cis/...
1000
- path.join(this.sourceDir, 'modules', actualPath),
1001
- // Try as direct path: bmad/core/... -> src/core/...
1002
- path.join(this.sourceDir, actualPath),
1003
- ];
1004
-
1005
- for (const testDir of possibleDirs) {
1006
- if (fs.existsSync(testDir)) {
1007
- dir = testDir;
1008
- break;
1009
- }
1010
- }
1011
- }
1012
-
1013
- if (!dir) {
1014
- warnings.push(`${pattern} (could not resolve directory)`);
1015
- return;
1016
- }
1017
- if (!(await fs.pathExists(dir))) {
1018
- warnings.push(pattern);
1019
- return;
1020
- }
1021
-
1022
- // Read directory and match files
1023
- const files = await fs.readdir(dir);
1024
- let matchedFiles = [];
1025
-
1026
- if (filePattern === '*.*') {
1027
- matchedFiles = files;
1028
- } else if (filePattern.startsWith('*.')) {
1029
- const ext = filePattern.slice(1);
1030
- matchedFiles = files.filter((f) => f.endsWith(ext));
1031
- } else {
1032
- // Simple glob matching
1033
- const regex = new RegExp('^' + filePattern.replace('*', '.*') + '$');
1034
- matchedFiles = files.filter((f) => regex.test(f));
1035
- }
1036
-
1037
- // Process each matched file
1038
- for (const file of matchedFiles) {
1039
- const fullPath = dirPath + '/' + file;
1040
- if (!processed.has(fullPath)) {
1041
- await this.processFileDependency(fullPath, dependencies, processed, moduleName, warnings);
1042
- }
1043
- }
1044
- }
1045
-
1046
- /**
1047
- * Resolve file path relative to project
1048
- */
1049
- resolveFilePath(filePath, moduleName) {
1050
- // Remove {project-root} prefix
1051
- filePath = filePath.replace(/^{project-root}\//, '');
1052
-
1053
- // Check temp directory first for _cfg files
1054
- if (filePath.startsWith('bmad/_cfg/')) {
1055
- const filename = filePath.split('/').pop();
1056
- const tempPath = path.join(this.tempManifestDir, filename);
1057
- if (fs.existsSync(tempPath)) {
1058
- return tempPath;
1059
- }
1060
- }
1061
-
1062
- // Handle different path patterns for bmad files
1063
- // bmad/cis/tasks/brain-session.md -> src/modules/cis/tasks/brain-session.md
1064
- // bmad/core/tasks/create-doc.md -> src/core/tasks/create-doc.md
1065
- // bmad/bmm/templates/brief.md -> src/modules/bmm/templates/brief.md
1066
-
1067
- let actualPath = filePath;
1068
-
1069
- if (filePath.startsWith('bmad/')) {
1070
- // Remove bmad/ prefix
1071
- actualPath = filePath.replace(/^bmad\//, '');
1072
-
1073
- // Check if it's a module-specific file (cis, bmm, etc) or core file
1074
- const parts = actualPath.split('/');
1075
- const firstPart = parts[0];
1076
-
1077
- // Try different path mappings
1078
- const possiblePaths = [
1079
- // Try in temp directory first
1080
- path.join(this.tempDir, filePath),
1081
- // Try as module path: bmad/cis/... -> src/modules/cis/...
1082
- path.join(this.sourceDir, 'modules', actualPath),
1083
- // Try as direct path: bmad/core/... -> src/core/...
1084
- path.join(this.sourceDir, actualPath),
1085
- // Try without any prefix in src
1086
- path.join(this.sourceDir, parts.slice(1).join('/')),
1087
- // Try in project root
1088
- path.join(this.sourceDir, '..', actualPath),
1089
- // Try original with bmad
1090
- path.join(this.sourceDir, '..', filePath),
1091
- ];
1092
-
1093
- for (const testPath of possiblePaths) {
1094
- if (fs.existsSync(testPath)) {
1095
- return testPath;
1096
- }
1097
- }
1098
- }
1099
-
1100
- // Try standard paths for non-bmad files
1101
- const basePaths = [
1102
- this.sourceDir, // src directory
1103
- path.join(this.modulesPath, moduleName), // Current module
1104
- path.join(this.sourceDir, '..'), // Project root
1105
- ];
1106
-
1107
- for (const basePath of basePaths) {
1108
- const fullPath = path.join(basePath, actualPath);
1109
- if (fs.existsSync(fullPath)) {
1110
- return fullPath;
1111
- }
1112
- }
1113
-
1114
- return null;
1115
- }
1116
-
1117
- /**
1118
- * Process and remove {project-root} references
1119
- */
1120
- processProjectRootReferences(content) {
1121
- // Remove {project-root}/ prefix (with slash)
1122
- content = content.replaceAll('{project-root}/', '');
1123
- // Also remove {project-root} without slash
1124
- content = content.replaceAll('{project-root}', '');
1125
- return content;
1126
- }
1127
-
1128
- /**
1129
- * Escape special XML characters in text content
1130
- */
1131
- escapeXmlText(text) {
1132
- return text
1133
- .replaceAll('&', '&amp;')
1134
- .replaceAll('<', '&lt;')
1135
- .replaceAll('>', '&gt;')
1136
- .replaceAll('"', '&quot;')
1137
- .replaceAll("'", '&apos;');
1138
- }
1139
-
1140
- /**
1141
- * Escape XML content while preserving XML tags
1142
- */
1143
- escapeXmlContent(content) {
1144
- const tagPattern = /<([^>]+)>/g;
1145
- const parts = [];
1146
- let lastIndex = 0;
1147
- let match;
1148
-
1149
- while ((match = tagPattern.exec(content)) !== null) {
1150
- if (match.index > lastIndex) {
1151
- parts.push(this.escapeXmlText(content.slice(lastIndex, match.index)));
1152
- }
1153
- parts.push('<' + match[1] + '>');
1154
- lastIndex = match.index + match[0].length;
1155
- }
1156
-
1157
- if (lastIndex < content.length) {
1158
- parts.push(this.escapeXmlText(content.slice(lastIndex)));
1159
- }
1160
-
1161
- return parts.join('');
1162
- }
1163
-
1164
- /**
1165
- * Inject help and exit menu items into agent XML
1166
- */
1167
- injectHelpExitMenuItems(agentXml) {
1168
- // Check if menu already has help and exit
1169
- const hasHelp = agentXml.includes('cmd="*help"') || agentXml.includes('trigger="*help"');
1170
- const hasExit = agentXml.includes('cmd="*exit"') || agentXml.includes('trigger="*exit"');
1171
-
1172
- if (hasHelp && hasExit) {
1173
- return agentXml; // Already has both, skip injection
1174
- }
1175
-
1176
- // Find the menu section
1177
- const menuMatch = agentXml.match(/(<menu>[\s\S]*?<\/menu>)/);
1178
- if (!menuMatch) {
1179
- return agentXml; // No menu found, skip injection
1180
- }
1181
-
1182
- const menuContent = menuMatch[1];
1183
- const menuClosingMatch = menuContent.match(/(\s*)<\/menu>/);
1184
- if (!menuClosingMatch) {
1185
- return agentXml;
1186
- }
1187
-
1188
- const indent = menuClosingMatch[1];
1189
- const menuItems = [];
1190
-
1191
- if (!hasHelp) {
1192
- menuItems.push(`${indent}<item cmd="*help">Show numbered menu</item>`);
1193
- }
1194
-
1195
- if (!hasExit) {
1196
- menuItems.push(`${indent}<item cmd="*exit">Exit with confirmation</item>`);
1197
- }
1198
-
1199
- if (menuItems.length === 0) {
1200
- return agentXml;
1201
- }
1202
-
1203
- // Inject menu items before closing </menu> tag
1204
- const newMenuContent = menuContent.replace(/(\s*)<\/menu>/, `\n${menuItems.join('\n')}\n${indent}</menu>`);
1205
- return agentXml.replace(menuContent, newMenuContent);
1206
- }
1207
-
1208
- /**
1209
- * Inject web activation instructions into agent XML
1210
- */
1211
- injectWebActivation(agentXml) {
1212
- // First, always inject help/exit menu items
1213
- agentXml = this.injectHelpExitMenuItems(agentXml);
1214
-
1215
- // Load the web activation template
1216
- const activationPath = path.join(this.sourceDir, 'utility', 'models', 'agent-activation-web.xml');
1217
-
1218
- if (!fs.existsSync(activationPath)) {
1219
- console.warn(chalk.yellow('Warning: agent-activation-web.xml not found, skipping activation injection'));
1220
- return agentXml;
1221
- }
1222
-
1223
- const activationXml = fs.readFileSync(activationPath, 'utf8');
1224
-
1225
- // For web bundles, ALWAYS replace existing activation with web activation
1226
- // This is because fragment-based activation assumes filesystem access which won't work in web bundles
1227
- const hasActivation = agentXml.includes('<activation');
1228
-
1229
- if (hasActivation) {
1230
- // Replace existing activation block with web activation
1231
- const injectedXml = agentXml.replace(/<activation[^>]*>[\s\S]*?<\/activation>/, activationXml);
1232
- return injectedXml;
1233
- }
1234
-
1235
- // Check for critical-actions block (legacy)
1236
- const hasCriticalActions = agentXml.includes('<critical-actions');
1237
-
1238
- if (hasCriticalActions) {
1239
- // Replace critical-actions block with activation
1240
- const injectedXml = agentXml.replace(/<critical-actions>[\s\S]*?<\/critical-actions>/, activationXml);
1241
- return injectedXml;
1242
- }
1243
-
1244
- // If no critical-actions, inject before closing </agent> tag
1245
- const closingTagMatch = agentXml.match(/(\s*)<\/agent>/);
1246
- if (!closingTagMatch) {
1247
- console.warn(chalk.yellow('Warning: Could not find </agent> tag for activation injection'));
1248
- return agentXml;
1249
- }
1250
-
1251
- // Inject the activation block before the closing </agent> tag
1252
- // Properly indent each line of the activation XML
1253
- const indent = closingTagMatch[1];
1254
- const indentedActivation = activationXml
1255
- .split('\n')
1256
- .map((line) => (line.trim() ? indent + line : ''))
1257
- .join('\n');
1258
-
1259
- const injectedXml = agentXml.replace(/(\s*)<\/agent>/, `\n${indentedActivation}\n${indent}</agent>`);
1260
-
1261
- return injectedXml;
1262
- }
1263
-
1264
- /**
1265
- * Build the final agent bundle XML
1266
- */
1267
- buildAgentBundle(agentXml, dependencies) {
1268
- // Web activation is now handled by fragments during YAML building
1269
- // agentXml = this.injectWebActivation(agentXml);
1270
-
1271
- const parts = [
1272
- '<?xml version="1.0" encoding="UTF-8"?>',
1273
- '<agent-bundle>',
1274
- ' <!-- Agent Definition -->',
1275
- ' ' + agentXml.replaceAll('\n', '\n '),
1276
- ];
1277
-
1278
- // Add dependencies (all are now consistently wrapped in <file> elements)
1279
- if (dependencies && dependencies.size > 0) {
1280
- parts.push('\n <!-- Dependencies -->');
1281
- for (const [id, content] of dependencies) {
1282
- // All dependencies are now wrapped in <file> elements
1283
- // Indent properly
1284
- const indentedContent = content
1285
- .split('\n')
1286
- .map((line) => ' ' + line)
1287
- .join('\n');
1288
- parts.push(indentedContent);
1289
- }
1290
- }
1291
-
1292
- parts.push('</agent-bundle>');
1293
-
1294
- return parts.join('\n');
1295
- }
1296
-
1297
- /**
1298
- * Discover all modules
1299
- */
1300
- async discoverModules() {
1301
- const modules = [];
1302
-
1303
- if (!(await fs.pathExists(this.modulesPath))) {
1304
- console.log(chalk.yellow('No modules directory found'));
1305
- return modules;
1306
- }
1307
-
1308
- const entries = await fs.readdir(this.modulesPath, { withFileTypes: true });
1309
-
1310
- for (const entry of entries) {
1311
- if (entry.isDirectory()) {
1312
- modules.push(entry.name);
1313
- }
1314
- }
1315
-
1316
- return modules;
1317
- }
1318
-
1319
- /**
1320
- * Discover agents in a module
1321
- */
1322
- async discoverAgents(modulePath) {
1323
- const agents = [];
1324
- const agentsPath = path.join(modulePath, 'agents');
1325
-
1326
- if (!(await fs.pathExists(agentsPath))) {
1327
- return agents;
1328
- }
1329
-
1330
- const files = await fs.readdir(agentsPath);
1331
-
1332
- for (const file of files) {
1333
- // Look for .agent.yaml files (new format) or .md files (legacy format)
1334
- if (file.endsWith('.agent.yaml') || (file.endsWith('.md') && !file.toLowerCase().includes('readme'))) {
1335
- agents.push(file);
1336
- }
1337
- }
1338
-
1339
- return agents;
1340
- }
1341
-
1342
- /**
1343
- * Discover all teams in a module
1344
- */
1345
- async discoverTeams(modulePath) {
1346
- const teams = [];
1347
- const teamsPath = path.join(modulePath, 'teams');
1348
-
1349
- if (!(await fs.pathExists(teamsPath))) {
1350
- return teams;
1351
- }
1352
-
1353
- const files = await fs.readdir(teamsPath);
1354
-
1355
- for (const file of files) {
1356
- if (file.endsWith('.yaml') || file.endsWith('.yml')) {
1357
- teams.push(file);
1358
- }
1359
- }
1360
-
1361
- return teams;
1362
- }
1363
-
1364
- /**
1365
- * Extract agent name from XML
1366
- */
1367
- getAgentName(xml) {
1368
- const match = xml.match(/<agent[^>]*name="([^"]+)"/);
1369
- return match ? match[1] : 'Unknown';
1370
- }
1371
-
1372
- /**
1373
- * Extract agent description from XML
1374
- */
1375
- getAgentDescription(xml) {
1376
- const match = xml.match(/<description>([^<]+)<\/description>/);
1377
- return match ? match[1] : '';
1378
- }
1379
-
1380
- /**
1381
- * Check if agent should be skipped for bundling
1382
- */
1383
- shouldSkipBundling(xml) {
1384
- // Check for bundle="false" attribute in the agent tag
1385
- const match = xml.match(/<agent[^>]*bundle="false"[^>]*>/);
1386
- return match !== null;
1387
- }
1388
-
1389
- /**
1390
- * Create temporary manifest files
1391
- */
1392
- async createTempManifests() {
1393
- // Ensure temp directory exists
1394
- await fs.ensureDir(this.tempManifestDir);
1395
-
1396
- // Generate agent-manifest.csv using shared generator
1397
- const agentPartyPath = path.join(this.tempManifestDir, 'agent-manifest.csv');
1398
- await AgentPartyGenerator.writeAgentParty(agentPartyPath, this.discoveredAgents, { forWeb: true });
1399
-
1400
- console.log(chalk.dim(' ✓ Created temporary manifest files'));
1401
- }
1402
-
1403
- /**
1404
- * Clean up temporary files
1405
- */
1406
- async cleanupTempFiles() {
1407
- if (await fs.pathExists(this.tempDir)) {
1408
- await fs.remove(this.tempDir);
1409
- console.log(chalk.dim('\n✓ Cleaned up temporary files'));
1410
- }
1411
- }
1412
-
1413
- /**
1414
- * Validate XML content
1415
- */
1416
- async validateXml(xmlContent) {
1417
- try {
1418
- await xml2js.parseStringPromise(xmlContent, {
1419
- strict: true,
1420
- explicitArray: false,
1421
- });
1422
- return true;
1423
- } catch {
1424
- return false;
1425
- }
1426
- }
1427
-
1428
- /**
1429
- * Display summary statistics
1430
- */
1431
- displaySummary() {
1432
- console.log(chalk.cyan.bold('\n═══════════════════════════════════════════════'));
1433
- console.log(chalk.cyan.bold(' SUMMARY'));
1434
- console.log(chalk.cyan.bold('═══════════════════════════════════════════════\n'));
1435
-
1436
- console.log(chalk.bold('Bundle Statistics:'));
1437
- console.log(` Total agents found: ${this.stats.totalAgents}`);
1438
- console.log(` Successfully bundled: ${chalk.green(this.stats.bundledAgents)}`);
1439
- console.log(` Skipped (bundle=false): ${chalk.gray(this.stats.skippedAgents)}`);
1440
-
1441
- if (this.stats.failedAgents > 0) {
1442
- console.log(` Failed to bundle: ${chalk.red(this.stats.failedAgents)}`);
1443
- }
1444
-
1445
- if (this.stats.invalidXml > 0) {
1446
- console.log(` Invalid XML bundles: ${chalk.yellow(this.stats.invalidXml)}`);
1447
- }
1448
-
1449
- // Display warnings summary
1450
- if (this.stats.warnings.length > 0) {
1451
- console.log(chalk.yellow('\n⚠ Missing Dependencies by Agent:'));
1452
-
1453
- // Group and display warnings by agent
1454
- for (const agentWarning of this.stats.warnings) {
1455
- if (agentWarning && agentWarning.warnings && agentWarning.warnings.length > 0) {
1456
- console.log(chalk.bold(`\n ${agentWarning.agent}:`));
1457
- // Display unique warnings for this agent
1458
- const uniqueWarnings = [...new Set(agentWarning.warnings)];
1459
- for (const warning of uniqueWarnings) {
1460
- console.log(chalk.dim(` • ${warning}`));
1461
- }
1462
- }
1463
- }
1464
- }
1465
-
1466
- // Final status
1467
- if (this.stats.invalidXml > 0) {
1468
- console.log(chalk.yellow('\n⚠ Some bundles have invalid XML. Please review the output.'));
1469
- } else if (this.stats.failedAgents > 0) {
1470
- console.log(chalk.yellow('\n⚠ Some agents failed to bundle. Please review the errors.'));
1471
- } else {
1472
- console.log(chalk.green('\n✨ All bundles generated successfully!'));
1473
- }
1474
-
1475
- console.log(chalk.cyan.bold('\n═══════════════════════════════════════════════\n'));
1476
- }
1477
- }
1478
-
1479
- module.exports = { WebBundler };