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

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 (1280) 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 +678 -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 +24 -9
  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 +6 -11
  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/bmad-builder.agent.yaml +77 -41
  110. package/src/modules/bmb/docs/agents/agent-compilation.md +340 -0
  111. package/src/modules/bmb/docs/agents/agent-menu-patterns.md +523 -0
  112. package/src/modules/bmb/docs/agents/expert-agent-architecture.md +363 -0
  113. package/src/modules/bmb/docs/agents/index.md +55 -0
  114. package/src/modules/bmb/docs/agents/kb.csv +0 -0
  115. package/src/modules/bmb/docs/agents/simple-agent-architecture.md +257 -0
  116. package/src/modules/bmb/docs/agents/understanding-agent-types.md +184 -0
  117. package/src/modules/bmb/docs/index.md +247 -0
  118. package/src/modules/bmb/docs/workflows/architecture.md +220 -0
  119. package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +19 -0
  120. package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +206 -0
  121. package/src/modules/bmb/docs/workflows/index.md +45 -0
  122. package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
  123. package/src/modules/bmb/docs/workflows/kb.csv +0 -0
  124. package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +241 -0
  125. package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +223 -0
  126. package/src/modules/bmb/docs/workflows/templates/step-file.md +139 -0
  127. package/src/modules/bmb/docs/workflows/templates/step-template.md +290 -0
  128. package/src/modules/bmb/docs/workflows/templates/workflow-template.md +104 -0
  129. package/src/modules/bmb/docs/workflows/templates/workflow.md +58 -0
  130. package/src/modules/bmb/docs/workflows/terms.md +97 -0
  131. package/src/modules/bmb/module.yaml +16 -0
  132. package/src/modules/bmb/reference/README.md +3 -0
  133. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/README.md +242 -0
  134. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
  135. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
  136. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
  137. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
  138. package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
  139. package/src/modules/bmb/reference/agents/module-examples/README.md +49 -0
  140. package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
  141. package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
  142. package/src/modules/bmb/reference/agents/simple-examples/README.md +223 -0
  143. package/src/modules/bmb/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
  144. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  145. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  146. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  147. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +176 -0
  148. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +120 -0
  149. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  150. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +153 -0
  151. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  152. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  153. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  154. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  155. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  156. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  157. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  158. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  159. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  160. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  161. package/src/modules/bmb/workflows/create-agent/data/agent-validation-checklist.md +174 -0
  162. package/src/modules/bmb/workflows/create-agent/data/brainstorm-context.md +153 -0
  163. package/src/modules/bmb/workflows/create-agent/data/communication-presets.csv +61 -0
  164. package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +29 -0
  165. package/src/modules/bmb/workflows/create-agent/data/reference/README.md +3 -0
  166. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
  167. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
  168. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
  169. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
  170. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
  171. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
  172. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +48 -0
  173. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
  174. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
  175. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
  176. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
  177. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
  178. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
  179. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
  180. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
  181. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
  182. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
  183. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
  184. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
  185. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
  186. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
  187. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
  188. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
  189. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
  190. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
  191. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
  192. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
  193. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
  194. package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +305 -0
  195. package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
  196. package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +206 -0
  197. package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +260 -0
  198. package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +237 -0
  199. package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +232 -0
  200. package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +186 -0
  201. package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +234 -0
  202. package/src/modules/bmb/workflows/create-agent/steps/step-08-celebrate.md +218 -0
  203. package/src/modules/bmb/workflows/create-agent/templates/agent-plan.template.md +3 -0
  204. package/src/modules/bmb/workflows/create-agent/templates/expert-agent.template.md +364 -0
  205. package/src/modules/bmb/workflows/create-agent/templates/simple-agent.template.md +257 -0
  206. package/src/modules/bmb/workflows/create-agent/workflow.md +58 -0
  207. package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +155 -0
  208. package/src/modules/bmb/workflows/create-module/steps/step-01b-continue.md +169 -0
  209. package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +217 -0
  210. package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +267 -0
  211. package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +228 -0
  212. package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +233 -0
  213. package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +296 -0
  214. package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +228 -0
  215. package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +186 -0
  216. package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +309 -0
  217. package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +337 -0
  218. package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +335 -0
  219. package/src/modules/bmb/workflows/create-module/templates/agent.template.md +313 -0
  220. package/src/modules/bmb/workflows/create-module/templates/installer.template.js +47 -0
  221. package/src/modules/bmb/workflows/create-module/templates/module-plan.template.md +5 -0
  222. package/src/modules/bmb/workflows/create-module/templates/module.template.yaml +53 -0
  223. package/src/modules/bmb/workflows/create-module/templates/workflow-plan-template.md +23 -0
  224. package/src/modules/bmb/workflows/create-module/validation.md +126 -0
  225. package/src/modules/bmb/workflows/create-module/workflow.md +55 -0
  226. package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +157 -0
  227. package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +211 -0
  228. package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +250 -0
  229. package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +216 -0
  230. package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +289 -0
  231. package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +271 -0
  232. package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +308 -0
  233. package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +284 -0
  234. package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +187 -0
  235. package/src/modules/bmb/workflows/create-workflow/workflow.md +58 -0
  236. package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
  237. package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
  238. package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
  239. package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
  240. package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
  241. package/src/modules/bmb/workflows/edit-agent/workflow.md +58 -0
  242. package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +217 -0
  243. package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
  244. package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
  245. package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
  246. package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
  247. package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
  248. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
  249. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
  250. package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +51 -0
  251. package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
  252. package/src/modules/bmb/workflows/edit-workflow/workflow.md +58 -0
  253. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
  254. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
  255. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
  256. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
  257. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
  258. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
  259. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
  260. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
  261. package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
  262. package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +58 -0
  263. package/src/modules/bmb/workflows-legacy/edit-module/README.md +171 -0
  264. package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +163 -0
  265. package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +340 -0
  266. package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +34 -0
  267. package/src/modules/bmb/workflows-legacy/module-brief/README.md +264 -0
  268. package/src/modules/bmb/workflows-legacy/module-brief/checklist.md +116 -0
  269. package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +268 -0
  270. package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +36 -0
  271. package/src/modules/bmgd/_module-installer/installer.js +160 -0
  272. package/src/modules/bmgd/_module-installer/platform-specifics/claude-code.js +23 -0
  273. package/src/modules/bmgd/_module-installer/platform-specifics/windsurf.js +18 -0
  274. package/src/modules/bmgd/agents/game-architect.agent.yaml +52 -0
  275. package/src/modules/bmgd/agents/game-designer.agent.yaml +60 -0
  276. package/src/modules/bmgd/agents/game-dev.agent.yaml +56 -0
  277. package/src/modules/bmgd/agents/game-qa.agent.yaml +64 -0
  278. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +63 -0
  279. package/src/modules/bmgd/agents/game-solo-dev.agent.yaml +56 -0
  280. package/src/modules/bmgd/docs/agents-guide.md +407 -0
  281. package/src/modules/bmgd/docs/game-types-guide.md +503 -0
  282. package/src/modules/bmgd/docs/glossary.md +294 -0
  283. package/src/modules/bmgd/docs/index.md +180 -0
  284. package/src/modules/bmgd/docs/quick-flow-guide.md +288 -0
  285. package/src/modules/bmgd/docs/quick-start.md +250 -0
  286. package/src/modules/bmgd/docs/troubleshooting.md +259 -0
  287. package/src/modules/bmgd/docs/workflow-overview.jpg +0 -0
  288. package/src/modules/bmgd/docs/workflows-guide.md +463 -0
  289. package/src/modules/bmgd/gametest/knowledge/balance-testing.md +220 -0
  290. package/src/modules/bmgd/gametest/knowledge/certification-testing.md +319 -0
  291. package/src/modules/bmgd/gametest/knowledge/compatibility-testing.md +228 -0
  292. package/src/modules/bmgd/gametest/knowledge/godot-testing.md +376 -0
  293. package/src/modules/bmgd/gametest/knowledge/input-testing.md +315 -0
  294. package/src/modules/bmgd/gametest/knowledge/localization-testing.md +304 -0
  295. package/src/modules/bmgd/gametest/knowledge/multiplayer-testing.md +322 -0
  296. package/src/modules/bmgd/gametest/knowledge/performance-testing.md +204 -0
  297. package/src/modules/bmgd/gametest/knowledge/playtesting.md +384 -0
  298. package/src/modules/bmgd/gametest/knowledge/qa-automation.md +190 -0
  299. package/src/modules/bmgd/gametest/knowledge/regression-testing.md +280 -0
  300. package/src/modules/bmgd/gametest/knowledge/save-testing.md +280 -0
  301. package/src/modules/bmgd/gametest/knowledge/smoke-testing.md +404 -0
  302. package/src/modules/bmgd/gametest/knowledge/test-priorities.md +271 -0
  303. package/src/modules/bmgd/gametest/knowledge/unity-testing.md +383 -0
  304. package/src/modules/bmgd/gametest/knowledge/unreal-testing.md +388 -0
  305. package/src/modules/bmgd/gametest/qa-index.csv +17 -0
  306. package/src/modules/bmgd/module.yaml +64 -0
  307. package/src/modules/bmgd/teams/default-party.csv +12 -0
  308. package/src/modules/bmgd/teams/team-gamedev.yaml +29 -0
  309. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +130 -0
  310. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-01-init.md +164 -0
  311. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-02-context.md +210 -0
  312. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-03-ideation.md +289 -0
  313. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-04-complete.md +275 -0
  314. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.md +49 -0
  315. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +62 -0
  316. package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +373 -0
  317. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01-init.md +223 -0
  318. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01b-continue.md +151 -0
  319. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-02-vision.md +218 -0
  320. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-03-market.md +218 -0
  321. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-04-fundamentals.md +231 -0
  322. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-05-scope.md +242 -0
  323. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-06-references.md +224 -0
  324. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-07-content.md +282 -0
  325. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-08-complete.md +296 -0
  326. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.md +62 -0
  327. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +67 -0
  328. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01-init.md +248 -0
  329. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01b-continue.md +173 -0
  330. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-02-context.md +332 -0
  331. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-03-platforms.md +245 -0
  332. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-04-vision.md +229 -0
  333. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-05-core-gameplay.md +258 -0
  334. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-06-mechanics.md +249 -0
  335. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-07-game-type.md +266 -0
  336. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-08-progression.md +272 -0
  337. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-09-levels.md +264 -0
  338. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-10-art-audio.md +255 -0
  339. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-11-technical.md +275 -0
  340. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-12-epics.md +284 -0
  341. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-13-metrics.md +250 -0
  342. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-14-complete.md +335 -0
  343. package/src/modules/bmgd/workflows/2-design/gdd/workflow.md +61 -0
  344. package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +101 -0
  345. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +604 -0
  346. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01-init.md +228 -0
  347. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01b-continue.md +163 -0
  348. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-02-foundation.md +262 -0
  349. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-03-story.md +238 -0
  350. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-04-characters.md +297 -0
  351. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-05-world.md +262 -0
  352. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-06-dialogue.md +250 -0
  353. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-07-environmental.md +244 -0
  354. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-08-delivery.md +264 -0
  355. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-09-integration.md +254 -0
  356. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-10-production.md +262 -0
  357. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-11-complete.md +331 -0
  358. package/src/modules/bmgd/workflows/2-design/narrative/workflow.md +57 -0
  359. package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +77 -0
  360. package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +321 -0
  361. package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +240 -0
  362. package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +701 -0
  363. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01-init.md +223 -0
  364. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01b-continue.md +153 -0
  365. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-02-context.md +262 -0
  366. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-03-starter.md +290 -0
  367. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-04-decisions.md +300 -0
  368. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-05-crosscutting.md +319 -0
  369. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-06-structure.md +304 -0
  370. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-07-patterns.md +349 -0
  371. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-08-validation.md +293 -0
  372. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-09-complete.md +356 -0
  373. package/src/modules/bmgd/workflows/3-technical/game-architecture/templates/architecture-template.md +103 -0
  374. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.md +55 -0
  375. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +98 -0
  376. package/src/modules/bmgd/workflows/3-technical/generate-project-context/project-context-template.md +20 -0
  377. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-01-discover.md +201 -0
  378. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-02-generate.md +373 -0
  379. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-03-complete.md +279 -0
  380. package/src/modules/bmgd/workflows/3-technical/generate-project-context/workflow.md +48 -0
  381. package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +23 -0
  382. package/src/modules/bmgd/workflows/4-production/code-review/instructions.xml +225 -0
  383. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +64 -0
  384. package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +279 -0
  385. package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +206 -0
  386. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +63 -0
  387. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +358 -0
  388. package/src/modules/bmgd/workflows/4-production/create-story/instructions.xml +298 -0
  389. package/src/modules/bmgd/workflows/4-production/create-story/template.md +49 -0
  390. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +79 -0
  391. package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +80 -0
  392. package/src/modules/bmgd/workflows/4-production/dev-story/instructions.xml +409 -0
  393. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +68 -0
  394. package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +1443 -0
  395. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +62 -0
  396. package/src/modules/bmgd/workflows/4-production/sprint-planning/checklist.md +33 -0
  397. package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +234 -0
  398. package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
  399. package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +56 -0
  400. package/src/modules/bmgd/workflows/4-production/sprint-status/instructions.md +229 -0
  401. package/src/modules/bmgd/workflows/4-production/sprint-status/workflow.yaml +35 -0
  402. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/instructions.md +140 -0
  403. package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/workflow.yaml +27 -0
  404. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/checklist.md +37 -0
  405. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/instructions.md +220 -0
  406. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml +45 -0
  407. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/checklist.md +26 -0
  408. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/instructions.md +156 -0
  409. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml +36 -0
  410. package/src/modules/bmgd/workflows/gametest/automate/checklist.md +93 -0
  411. package/src/modules/bmgd/workflows/gametest/automate/instructions.md +317 -0
  412. package/src/modules/bmgd/workflows/gametest/automate/workflow.yaml +50 -0
  413. package/src/modules/bmgd/workflows/gametest/performance/checklist.md +96 -0
  414. package/src/modules/bmgd/workflows/gametest/performance/instructions.md +323 -0
  415. package/src/modules/bmgd/workflows/gametest/performance/performance-template.md +256 -0
  416. package/src/modules/bmgd/workflows/gametest/performance/workflow.yaml +48 -0
  417. package/src/modules/bmgd/workflows/gametest/playtest-plan/checklist.md +93 -0
  418. package/src/modules/bmgd/workflows/gametest/playtest-plan/instructions.md +297 -0
  419. package/src/modules/bmgd/workflows/gametest/playtest-plan/playtest-template.md +208 -0
  420. package/src/modules/bmgd/workflows/gametest/playtest-plan/workflow.yaml +59 -0
  421. package/src/modules/bmgd/workflows/gametest/test-design/checklist.md +98 -0
  422. package/src/modules/bmgd/workflows/gametest/test-design/instructions.md +280 -0
  423. package/src/modules/bmgd/workflows/gametest/test-design/test-design-template.md +205 -0
  424. package/src/modules/bmgd/workflows/gametest/test-design/workflow.yaml +47 -0
  425. package/src/modules/bmgd/workflows/gametest/test-framework/checklist.md +103 -0
  426. package/src/modules/bmgd/workflows/gametest/test-framework/instructions.md +348 -0
  427. package/src/modules/bmgd/workflows/gametest/test-framework/workflow.yaml +48 -0
  428. package/src/modules/bmgd/workflows/gametest/test-review/checklist.md +87 -0
  429. package/src/modules/bmgd/workflows/gametest/test-review/instructions.md +272 -0
  430. package/src/modules/bmgd/workflows/gametest/test-review/test-review-template.md +203 -0
  431. package/src/modules/bmgd/workflows/gametest/test-review/workflow.yaml +48 -0
  432. package/src/modules/bmgd/workflows/workflow-status/init/instructions.md +299 -0
  433. package/src/modules/bmgd/workflows/workflow-status/init/workflow.yaml +29 -0
  434. package/src/modules/bmgd/workflows/workflow-status/instructions.md +395 -0
  435. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-brownfield.yaml +65 -0
  436. package/src/modules/bmgd/workflows/workflow-status/paths/gamedev-greenfield.yaml +71 -0
  437. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-brownfield.yaml +29 -0
  438. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-greenfield.yaml +39 -0
  439. package/src/modules/bmgd/workflows/workflow-status/project-levels.yaml +63 -0
  440. package/src/modules/bmgd/workflows/workflow-status/workflow-status-template.yaml +24 -0
  441. package/src/modules/bmgd/workflows/workflow-status/workflow.yaml +30 -0
  442. package/src/modules/bmm/README.md +78 -92
  443. package/src/modules/bmm/_module-installer/installer.js +3 -3
  444. package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +1 -1
  445. package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +1 -1
  446. package/src/modules/bmm/agents/analyst.agent.yaml +32 -23
  447. package/src/modules/bmm/agents/architect.agent.yaml +32 -25
  448. package/src/modules/bmm/agents/dev.agent.yaml +32 -27
  449. package/src/modules/bmm/agents/pm.agent.yaml +30 -30
  450. package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +27 -0
  451. package/src/modules/bmm/agents/sm.agent.yaml +35 -44
  452. package/src/modules/bmm/agents/tea.agent.yaml +31 -20
  453. package/src/modules/bmm/agents/tech-writer.agent.yaml +67 -0
  454. package/src/modules/bmm/agents/ux-designer.agent.yaml +35 -20
  455. package/src/modules/bmm/data/README.md +29 -0
  456. package/src/modules/bmm/data/documentation-standards.md +262 -0
  457. package/src/modules/bmm/data/project-context-template.md +40 -0
  458. package/src/modules/bmm/docs/agents-guide.md +144 -0
  459. package/src/modules/bmm/docs/bmad-quick-flow.md +506 -0
  460. package/src/modules/bmm/docs/brownfield-guide.md +748 -0
  461. package/src/modules/bmm/docs/enterprise-agentic-development.md +686 -0
  462. package/src/modules/bmm/docs/faq.md +542 -0
  463. package/src/modules/bmm/docs/glossary.md +306 -0
  464. package/src/modules/bmm/docs/images/README.md +37 -0
  465. package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +5034 -0
  466. package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +4 -0
  467. package/src/modules/bmm/docs/index.md +168 -0
  468. package/src/modules/bmm/docs/party-mode.md +224 -0
  469. package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
  470. package/src/modules/bmm/docs/quick-spec-flow.md +638 -0
  471. package/src/modules/bmm/docs/quick-start.md +366 -0
  472. package/src/modules/bmm/docs/scale-adaptive-system.md +618 -0
  473. package/src/modules/bmm/docs/test-architecture.md +455 -0
  474. package/src/modules/bmm/docs/troubleshooting.md +661 -0
  475. package/src/modules/bmm/docs/workflow-architecture-reference.md +366 -0
  476. package/src/modules/bmm/docs/workflow-document-project-reference.md +489 -0
  477. package/src/modules/bmm/docs/workflows-analysis.md +266 -0
  478. package/src/modules/bmm/docs/workflows-implementation.md +210 -0
  479. package/src/modules/bmm/docs/workflows-planning.md +451 -0
  480. package/src/modules/bmm/docs/workflows-solutioning.md +509 -0
  481. package/src/modules/bmm/module.yaml +56 -0
  482. package/src/modules/bmm/teams/default-party.csv +21 -0
  483. package/src/modules/bmm/teams/team-fullstack.yaml +1 -0
  484. package/src/modules/bmm/testarch/knowledge/api-request.md +303 -0
  485. package/src/modules/bmm/testarch/knowledge/auth-session.md +356 -0
  486. package/src/modules/bmm/testarch/knowledge/burn-in.md +273 -0
  487. package/src/modules/bmm/testarch/knowledge/ci-burn-in.md +1 -1
  488. package/src/modules/bmm/testarch/knowledge/file-utils.md +260 -0
  489. package/src/modules/bmm/testarch/knowledge/fixtures-composition.md +382 -0
  490. package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +280 -0
  491. package/src/modules/bmm/testarch/knowledge/log.md +294 -0
  492. package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +272 -0
  493. package/src/modules/bmm/testarch/knowledge/network-recorder.md +265 -0
  494. package/src/modules/bmm/testarch/knowledge/overview.md +283 -0
  495. package/src/modules/bmm/testarch/knowledge/recurse.md +296 -0
  496. package/src/modules/bmm/testarch/tea-index.csv +11 -0
  497. package/src/modules/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  498. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +192 -0
  499. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +165 -0
  500. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +203 -0
  501. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +206 -0
  502. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +209 -0
  503. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +223 -0
  504. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +198 -0
  505. package/src/modules/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
  506. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
  507. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
  508. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
  509. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
  510. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
  511. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +442 -0
  512. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +181 -0
  513. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +236 -0
  514. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +199 -0
  515. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +248 -0
  516. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +258 -0
  517. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +176 -0
  518. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +474 -0
  519. package/src/modules/bmm/workflows/1-analysis/research/research.template.md +29 -0
  520. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
  521. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +238 -0
  522. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +247 -0
  523. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +201 -0
  524. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +238 -0
  525. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +485 -0
  526. package/src/modules/bmm/workflows/1-analysis/research/workflow.md +173 -0
  527. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +159 -0
  528. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
  529. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +189 -0
  530. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
  531. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
  532. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
  533. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
  534. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
  535. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
  536. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
  537. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
  538. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
  539. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
  540. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
  541. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +226 -0
  542. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +6 -138
  543. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +57 -0
  544. package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
  545. package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +12 -58
  546. package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
  547. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +243 -0
  548. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +165 -0
  549. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +420 -0
  550. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +289 -0
  551. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +290 -0
  552. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +270 -0
  553. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +261 -0
  554. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +257 -0
  555. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +298 -0
  556. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +269 -0
  557. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +293 -0
  558. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +223 -0
  559. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +61 -0
  560. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +189 -0
  561. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +177 -0
  562. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +178 -0
  563. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +138 -0
  564. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +251 -0
  565. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +132 -0
  566. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  567. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
  568. package/src/modules/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  569. package/src/modules/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
  570. package/src/modules/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  571. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +182 -0
  572. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +163 -0
  573. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +223 -0
  574. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +330 -0
  575. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +317 -0
  576. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +358 -0
  577. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +378 -0
  578. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +358 -0
  579. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +351 -0
  580. package/src/modules/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
  581. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +258 -0
  582. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +232 -0
  583. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +271 -0
  584. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +144 -0
  585. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  586. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
  587. package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +2 -1
  588. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +225 -0
  589. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +34 -36
  590. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
  591. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +7 -2
  592. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +42 -27
  593. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
  594. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +344 -0
  595. package/src/modules/bmm/workflows/4-implementation/create-story/template.md +3 -5
  596. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +38 -27
  597. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
  598. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +409 -0
  599. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +9 -10
  600. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +1208 -244
  601. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +38 -26
  602. package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +59 -55
  603. package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +14 -14
  604. package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +21 -8
  605. package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
  606. package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +36 -0
  607. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
  608. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +28 -0
  609. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
  610. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
  611. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
  612. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
  613. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
  614. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
  615. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +51 -0
  616. package/src/modules/bmm/workflows/document-project/checklist.md +1 -1
  617. package/src/modules/bmm/workflows/document-project/instructions.md +31 -32
  618. package/src/modules/bmm/workflows/document-project/workflow.yaml +4 -10
  619. package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +6 -6
  620. package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
  621. package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +13 -13
  622. package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
  623. package/src/modules/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
  624. package/src/modules/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
  625. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
  626. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
  627. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +27 -0
  628. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
  629. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
  630. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +27 -0
  631. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
  632. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
  633. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +27 -0
  634. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
  635. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
  636. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +27 -0
  637. package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +21 -0
  638. package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +183 -0
  639. package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +317 -0
  640. package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +277 -0
  641. package/src/modules/bmm/workflows/generate-project-context/workflow.md +48 -0
  642. package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +10 -9
  643. package/src/modules/bmm/workflows/testarch/atdd/checklist.md +1 -0
  644. package/src/modules/bmm/workflows/testarch/atdd/instructions.md +26 -5
  645. package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -9
  646. package/src/modules/bmm/workflows/testarch/automate/checklist.md +2 -0
  647. package/src/modules/bmm/workflows/testarch/automate/instructions.md +25 -4
  648. package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -11
  649. package/src/modules/bmm/workflows/testarch/ci/checklist.md +7 -5
  650. package/src/modules/bmm/workflows/testarch/ci/github-actions-template.yaml +36 -3
  651. package/src/modules/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +25 -4
  652. package/src/modules/bmm/workflows/testarch/ci/instructions.md +23 -4
  653. package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -10
  654. package/src/modules/bmm/workflows/testarch/framework/checklist.md +4 -4
  655. package/src/modules/bmm/workflows/testarch/framework/instructions.md +28 -2
  656. package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -8
  657. package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +2 -0
  658. package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
  659. package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +2 -0
  660. package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -11
  661. package/src/modules/bmm/workflows/testarch/test-design/checklist.md +7 -6
  662. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +182 -15
  663. package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +13 -4
  664. package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +13 -11
  665. package/src/modules/bmm/workflows/testarch/test-review/checklist.md +2 -0
  666. package/src/modules/bmm/workflows/testarch/test-review/instructions.md +29 -9
  667. package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +2 -0
  668. package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -9
  669. package/src/modules/bmm/workflows/testarch/trace/checklist.md +1 -0
  670. package/src/modules/bmm/workflows/testarch/trace/instructions.md +11 -9
  671. package/src/modules/bmm/workflows/testarch/trace/trace-template.md +2 -0
  672. package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -13
  673. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +259 -210
  674. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +6 -5
  675. package/src/modules/bmm/workflows/workflow-status/instructions.md +188 -117
  676. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +122 -0
  677. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +110 -0
  678. package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +106 -0
  679. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +96 -0
  680. package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
  681. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
  682. package/src/modules/bmm/workflows/workflow-status/workflow.yaml +7 -5
  683. package/src/modules/cis/_module-installer/installer.js +1 -1
  684. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +15 -9
  685. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +14 -8
  686. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +14 -8
  687. package/src/modules/cis/agents/innovation-strategist.agent.yaml +14 -8
  688. package/src/modules/cis/agents/presentation-master.agent.yaml +61 -0
  689. package/src/modules/cis/agents/storyteller/storyteller-sidecar/stories-told.md +7 -0
  690. package/src/modules/cis/agents/storyteller/storyteller-sidecar/story-preferences.md +7 -0
  691. package/src/modules/cis/agents/storyteller/storyteller.agent.yaml +34 -0
  692. package/src/modules/cis/docs/index.md +149 -0
  693. package/src/modules/cis/module.yaml +11 -0
  694. package/src/modules/cis/teams/creative-squad.yaml +1 -0
  695. package/src/modules/cis/teams/default-party.csv +12 -0
  696. package/src/modules/cis/workflows/README.md +102 -30
  697. package/src/modules/cis/workflows/design-thinking/instructions.md +4 -2
  698. package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -12
  699. package/src/modules/cis/workflows/innovation-strategy/instructions.md +7 -5
  700. package/src/modules/cis/workflows/innovation-strategy/template.md +3 -3
  701. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -12
  702. package/src/modules/cis/workflows/problem-solving/instructions.md +4 -2
  703. package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -12
  704. package/src/modules/cis/workflows/storytelling/instructions.md +14 -4
  705. package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -12
  706. package/src/utility/agent-components/activation-rules.txt +7 -0
  707. package/src/utility/agent-components/activation-steps.txt +13 -0
  708. package/src/utility/agent-components/agent-command-header.md +1 -0
  709. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  710. package/src/utility/agent-components/handler-action.txt +4 -0
  711. package/src/utility/agent-components/handler-exec.txt +6 -0
  712. package/src/utility/agent-components/handler-multi.txt +14 -0
  713. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  714. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  715. package/src/utility/agent-components/handler-workflow.txt +10 -0
  716. package/src/utility/agent-components/menu-handlers.txt +6 -0
  717. package/test/README.md +2 -2
  718. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +24 -0
  719. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +24 -0
  720. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-wrong-shortcut.agent.yaml +24 -0
  721. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
  722. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +30 -0
  723. package/test/test-agent-schema.js +2 -2
  724. package/test/test-installation-components.js +214 -0
  725. package/tools/build-docs.js +630 -0
  726. package/tools/cli/README.md +1 -588
  727. package/tools/cli/commands/install.js +61 -20
  728. package/tools/cli/installers/install-messages.yaml +52 -0
  729. package/tools/cli/installers/lib/core/config-collector.js +595 -98
  730. package/tools/cli/installers/lib/core/custom-module-cache.js +259 -0
  731. package/tools/cli/installers/lib/core/dependency-resolver.js +2 -2
  732. package/tools/cli/installers/lib/core/detector.js +75 -16
  733. package/tools/cli/installers/lib/core/ide-config-manager.js +12 -8
  734. package/tools/cli/installers/lib/core/installer.js +1277 -722
  735. package/tools/cli/installers/lib/core/manifest-generator.js +285 -142
  736. package/tools/cli/installers/lib/core/manifest.js +74 -20
  737. package/tools/cli/installers/lib/custom/handler.js +363 -0
  738. package/tools/cli/installers/lib/ide/_base-ide.js +94 -12
  739. package/tools/cli/installers/lib/ide/antigravity.js +507 -0
  740. package/tools/cli/installers/lib/ide/auggie.js +148 -240
  741. package/tools/cli/installers/lib/ide/claude-code.js +92 -32
  742. package/tools/cli/installers/lib/ide/cline.js +64 -18
  743. package/tools/cli/installers/lib/ide/codex.js +226 -72
  744. package/tools/cli/installers/lib/ide/crush.js +79 -55
  745. package/tools/cli/installers/lib/ide/cursor.js +144 -20
  746. package/tools/cli/installers/lib/ide/gemini.js +180 -35
  747. package/tools/cli/installers/lib/ide/github-copilot.js +154 -57
  748. package/tools/cli/installers/lib/ide/iflow.js +79 -30
  749. package/tools/cli/installers/lib/ide/kilo.js +94 -16
  750. package/tools/cli/installers/lib/ide/kiro-cli.js +327 -0
  751. package/tools/cli/installers/lib/ide/manager.js +50 -0
  752. package/tools/cli/installers/lib/ide/opencode.js +66 -22
  753. package/tools/cli/installers/lib/ide/qwen.js +93 -11
  754. package/tools/cli/installers/lib/ide/roo.js +158 -176
  755. package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
  756. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +96 -0
  757. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +34 -19
  758. package/tools/cli/installers/lib/ide/shared/module-injections.js +2 -2
  759. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +119 -0
  760. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +241 -0
  761. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  762. package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
  763. package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
  764. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
  765. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
  766. package/tools/cli/installers/lib/ide/trae.js +67 -32
  767. package/tools/cli/installers/lib/ide/windsurf.js +65 -8
  768. package/tools/cli/installers/lib/message-loader.js +85 -0
  769. package/tools/cli/installers/lib/modules/manager.js +785 -97
  770. package/tools/cli/lib/activation-builder.js +8 -13
  771. package/tools/cli/lib/agent/compiler.js +564 -0
  772. package/tools/cli/lib/agent/installer.js +716 -0
  773. package/tools/cli/lib/agent/template-engine.js +152 -0
  774. package/tools/cli/lib/agent-analyzer.js +48 -20
  775. package/tools/cli/lib/agent-party-generator.js +5 -17
  776. package/tools/cli/lib/cli-utils.js +65 -46
  777. package/tools/cli/lib/config.js +7 -4
  778. package/tools/cli/lib/platform-codes.js +2 -2
  779. package/tools/cli/lib/ui.js +1132 -81
  780. package/tools/cli/lib/xml-handler.js +4 -55
  781. package/tools/cli/lib/yaml-format.js +6 -7
  782. package/tools/cli/lib/yaml-xml-builder.js +196 -56
  783. package/tools/flattener/ignoreRules.js +1 -1
  784. package/tools/flattener/xml.js +1 -7
  785. package/tools/lib/xml-utils.js +13 -0
  786. package/tools/maintainer/review-pr-README.md +55 -0
  787. package/tools/maintainer/review-pr.md +242 -0
  788. package/tools/migrate-custom-module-paths.js +124 -0
  789. package/tools/platform-codes.yaml +12 -0
  790. package/tools/schema/agent.js +304 -23
  791. package/tools/validate-agent-schema.js +2 -2
  792. package/tools/validate-svg-changes.sh +356 -0
  793. package/website/css/custom.css +52 -0
  794. package/website/docusaurus.config.js +179 -0
  795. package/website/sidebars.js +157 -0
  796. package/website/src/pages/downloads.md +81 -0
  797. package/website/src/pages/index.js +50 -0
  798. package/website/static/favicon.ico +0 -0
  799. package/website/static/img/logo.svg +4 -0
  800. package/website/static/robots.txt +37 -0
  801. package/.claude/commands/bmad/bmb/agents/bmad-builder.md +0 -70
  802. package/.claude/commands/bmad/bmb/workflows/README.md +0 -67
  803. package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +0 -15
  804. package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +0 -15
  805. package/.claude/commands/bmad/bmb/workflows/create-agent.md +0 -15
  806. package/.claude/commands/bmad/bmb/workflows/create-module.md +0 -15
  807. package/.claude/commands/bmad/bmb/workflows/create-workflow.md +0 -15
  808. package/.claude/commands/bmad/bmb/workflows/edit-agent.md +0 -15
  809. package/.claude/commands/bmad/bmb/workflows/edit-module.md +0 -15
  810. package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +0 -15
  811. package/.claude/commands/bmad/bmb/workflows/module-brief.md +0 -15
  812. package/.claude/commands/bmad/bmb/workflows/redoc.md +0 -15
  813. package/.claude/commands/bmad/bmd/agents/cli-chief.md +0 -108
  814. package/.claude/commands/bmad/bmd/agents/doc-keeper.md +0 -115
  815. package/.claude/commands/bmad/bmd/agents/release-chief.md +0 -109
  816. package/.claude/commands/bmad/core/agents/bmad-master.md +0 -71
  817. package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
  818. package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
  819. package/.claude/commands/bmad/core/workflows/README.md +0 -27
  820. package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -15
  821. package/.claude/commands/bmad/core/workflows/party-mode.md +0 -15
  822. package/.claude/hooks/bmad-tts-injector.sh +0 -415
  823. package/.claude/hooks/bmad-voice-manager.sh +0 -511
  824. package/.claude/hooks/check-output-style.sh +0 -112
  825. package/.claude/hooks/download-extra-voices.sh +0 -244
  826. package/.claude/hooks/github-star-reminder.sh +0 -154
  827. package/.claude/hooks/language-manager.sh +0 -392
  828. package/.claude/hooks/learn-manager.sh +0 -475
  829. package/.claude/hooks/personality-manager.sh +0 -438
  830. package/.claude/hooks/piper-download-voices.sh +0 -165
  831. package/.claude/hooks/piper-installer.sh +0 -178
  832. package/.claude/hooks/piper-multispeaker-registry.sh +0 -165
  833. package/.claude/hooks/piper-voice-manager.sh +0 -293
  834. package/.claude/hooks/play-tts-elevenlabs.sh +0 -404
  835. package/.claude/hooks/play-tts-piper.sh +0 -338
  836. package/.claude/hooks/play-tts.sh +0 -100
  837. package/.claude/hooks/provider-commands.sh +0 -540
  838. package/.claude/hooks/provider-manager.sh +0 -298
  839. package/.claude/hooks/replay-target-audio.sh +0 -95
  840. package/.claude/hooks/sentiment-manager.sh +0 -201
  841. package/.claude/hooks/speed-manager.sh +0 -291
  842. package/.claude/hooks/voice-manager.sh +0 -594
  843. package/.claude/hooks/voices-config.sh +0 -70
  844. package/.claude/settings.local.json +0 -41
  845. package/.github/workflows/lint.yaml +0 -61
  846. package/bmad/_cfg/agent-manifest.csv +0 -7
  847. package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -42
  848. package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +0 -32
  849. package/bmad/_cfg/agents/bmd-doc-keeper.customize.yaml +0 -42
  850. package/bmad/_cfg/agents/bmd-release-chief.customize.yaml +0 -42
  851. package/bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
  852. package/bmad/_cfg/files-manifest.csv +0 -83
  853. package/bmad/_cfg/manifest.yaml +0 -12
  854. package/bmad/_cfg/task-manifest.csv +0 -5
  855. package/bmad/_cfg/tool-manifest.csv +0 -2
  856. package/bmad/_cfg/workflow-manifest.csv +0 -15
  857. package/bmad/bmb/README.md +0 -132
  858. package/bmad/bmb/agents/bmad-builder.md +0 -70
  859. package/bmad/bmb/config.yaml +0 -14
  860. package/bmad/bmb/workflows/audit-workflow/checklist.md +0 -143
  861. package/bmad/bmb/workflows/audit-workflow/instructions.md +0 -341
  862. package/bmad/bmb/workflows/audit-workflow/template.md +0 -118
  863. package/bmad/bmb/workflows/audit-workflow/workflow.yaml +0 -23
  864. package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +0 -21
  865. package/bmad/bmb/workflows/convert-legacy/README.md +0 -262
  866. package/bmad/bmb/workflows/convert-legacy/checklist.md +0 -205
  867. package/bmad/bmb/workflows/convert-legacy/instructions.md +0 -377
  868. package/bmad/bmb/workflows/convert-legacy/workflow.yaml +0 -32
  869. package/bmad/bmb/workflows/create-agent/README.md +0 -320
  870. package/bmad/bmb/workflows/create-agent/agent-architecture.md +0 -419
  871. package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +0 -412
  872. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  873. package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +0 -759
  874. package/bmad/bmb/workflows/create-agent/agent-types.md +0 -292
  875. package/bmad/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  876. package/bmad/bmb/workflows/create-agent/checklist.md +0 -62
  877. package/bmad/bmb/workflows/create-agent/communication-styles.md +0 -202
  878. package/bmad/bmb/workflows/create-agent/instructions.md +0 -430
  879. package/bmad/bmb/workflows/create-agent/workflow.yaml +0 -37
  880. package/bmad/bmb/workflows/create-module/README.md +0 -220
  881. package/bmad/bmb/workflows/create-module/README.md.bak +0 -218
  882. package/bmad/bmb/workflows/create-module/brainstorm-context.md +0 -137
  883. package/bmad/bmb/workflows/create-module/checklist.md +0 -244
  884. package/bmad/bmb/workflows/create-module/checklist.md.bak +0 -245
  885. package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  886. package/bmad/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  887. package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +0 -231
  888. package/bmad/bmb/workflows/create-module/instructions.md +0 -581
  889. package/bmad/bmb/workflows/create-module/instructions.md.bak +0 -521
  890. package/bmad/bmb/workflows/create-module/module-structure.md +0 -366
  891. package/bmad/bmb/workflows/create-module/module-structure.md.bak +0 -310
  892. package/bmad/bmb/workflows/create-module/workflow.yaml +0 -42
  893. package/bmad/bmb/workflows/create-module/workflow.yaml.bak +0 -40
  894. package/bmad/bmb/workflows/create-workflow/README.md +0 -277
  895. package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  896. package/bmad/bmb/workflows/create-workflow/checklist.md +0 -94
  897. package/bmad/bmb/workflows/create-workflow/instructions.md +0 -716
  898. package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
  899. package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  900. package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  901. package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  902. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -39
  903. package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +0 -39
  904. package/bmad/bmb/workflows/create-workflow/workflow.yaml +0 -40
  905. package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +0 -38
  906. package/bmad/bmb/workflows/edit-agent/README.md +0 -112
  907. package/bmad/bmb/workflows/edit-agent/checklist.md +0 -112
  908. package/bmad/bmb/workflows/edit-agent/instructions.md +0 -290
  909. package/bmad/bmb/workflows/edit-agent/workflow.yaml +0 -33
  910. package/bmad/bmb/workflows/edit-module/README.md +0 -187
  911. package/bmad/bmb/workflows/edit-module/checklist.md +0 -165
  912. package/bmad/bmb/workflows/edit-module/instructions.md +0 -339
  913. package/bmad/bmb/workflows/edit-module/workflow.yaml +0 -34
  914. package/bmad/bmb/workflows/edit-workflow/README.md +0 -119
  915. package/bmad/bmb/workflows/edit-workflow/checklist.md +0 -70
  916. package/bmad/bmb/workflows/edit-workflow/instructions.md +0 -342
  917. package/bmad/bmb/workflows/edit-workflow/workflow.yaml +0 -27
  918. package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +0 -25
  919. package/bmad/bmb/workflows/module-brief/README.md +0 -264
  920. package/bmad/bmb/workflows/module-brief/checklist.md +0 -116
  921. package/bmad/bmb/workflows/module-brief/instructions.md +0 -267
  922. package/bmad/bmb/workflows/module-brief/workflow.yaml +0 -29
  923. package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +0 -27
  924. package/bmad/bmb/workflows/redoc/README.md +0 -87
  925. package/bmad/bmb/workflows/redoc/checklist.md +0 -99
  926. package/bmad/bmb/workflows/redoc/instructions.md +0 -265
  927. package/bmad/bmb/workflows/redoc/workflow.yaml +0 -32
  928. package/bmad/bmb/workflows/redoc/workflow.yaml.bak +0 -31
  929. package/bmad/bmd/README.md +0 -193
  930. package/bmad/bmd/README.md.bak +0 -193
  931. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  932. package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +0 -102
  933. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  934. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +0 -68
  935. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  936. package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +0 -123
  937. package/bmad/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  938. package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +0 -53
  939. package/bmad/bmd/agents/cli-chief.md +0 -108
  940. package/bmad/bmd/agents/cli-chief.md.bak +0 -108
  941. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  942. package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +0 -177
  943. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  944. package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +0 -81
  945. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  946. package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +0 -88
  947. package/bmad/bmd/agents/doc-keeper.md +0 -115
  948. package/bmad/bmd/agents/doc-keeper.md.bak +0 -115
  949. package/bmad/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  950. package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +0 -164
  951. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  952. package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +0 -82
  953. package/bmad/bmd/agents/release-chief-sidecar/memories.md +0 -73
  954. package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +0 -73
  955. package/bmad/bmd/agents/release-chief.md +0 -109
  956. package/bmad/bmd/agents/release-chief.md.bak +0 -109
  957. package/bmad/bmd/config.yaml +0 -10
  958. package/bmad/core/agents/bmad-master.md +0 -71
  959. package/bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -122
  960. package/bmad/core/config.yaml +0 -9
  961. package/bmad/core/tasks/adv-elicit-methods.csv +0 -39
  962. package/bmad/core/tasks/adv-elicit.xml +0 -104
  963. package/bmad/core/tasks/index-docs.xml +0 -65
  964. package/bmad/core/tasks/validate-workflow.xml +0 -89
  965. package/bmad/core/tasks/workflow.xml +0 -174
  966. package/bmad/core/tools/shard-doc.xml +0 -100
  967. package/bmad/core/workflows/brainstorming/README.md +0 -271
  968. package/bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
  969. package/bmad/core/workflows/brainstorming/instructions.md +0 -314
  970. package/bmad/core/workflows/brainstorming/template.md +0 -102
  971. package/bmad/core/workflows/brainstorming/workflow.yaml +0 -43
  972. package/bmad/core/workflows/party-mode/instructions.md +0 -188
  973. package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
  974. package/bmad/docs/claude-code-instructions.md +0 -25
  975. package/bmad/docs/codex-instructions.md +0 -21
  976. package/bmd/README.md +0 -193
  977. package/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
  978. package/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
  979. package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
  980. package/bmd/agents/cli-chief-sidecar/memories.md +0 -53
  981. package/bmd/agents/cli-chief.agent.yaml +0 -126
  982. package/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
  983. package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
  984. package/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
  985. package/bmd/agents/doc-keeper.agent.yaml +0 -137
  986. package/bmd/agents/release-chief-sidecar/instructions.md +0 -164
  987. package/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
  988. package/bmd/agents/release-chief-sidecar/memories.md +0 -73
  989. package/bmd/agents/release-chief.agent.yaml +0 -127
  990. package/bmd/bmad-custom-module-installer-plan.md +0 -1176
  991. package/bmd/config.yaml +0 -12
  992. package/docs/bmad-brownfield-guide.md +0 -1260
  993. package/docs/conversion-report-shard-doc-2025-10-26.md +0 -188
  994. package/docs/installers-bundlers/ide-injections.md +0 -186
  995. package/docs/installers-bundlers/installers-modules-platforms-reference.md +0 -327
  996. package/docs/installers-bundlers/web-bundler-usage.md +0 -54
  997. package/src/core/_module-installer/install-config.yaml +0 -28
  998. package/src/core/agents/bmad-web-orchestrator.agent.xml +0 -122
  999. package/src/core/tasks/adv-elicit-methods.csv +0 -39
  1000. package/src/core/tasks/adv-elicit.xml +0 -104
  1001. package/src/core/workflows/brainstorming/README.md +0 -271
  1002. package/src/core/workflows/brainstorming/instructions.md +0 -314
  1003. package/src/core/workflows/brainstorming/workflow.yaml +0 -43
  1004. package/src/core/workflows/party-mode/instructions.md +0 -188
  1005. package/src/core/workflows/party-mode/workflow.yaml +0 -23
  1006. package/src/modules/bmb/_module-installer/install-config.yaml +0 -26
  1007. package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -143
  1008. package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
  1009. package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
  1010. package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
  1011. package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
  1012. package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
  1013. package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
  1014. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -34
  1015. package/src/modules/bmb/workflows/create-agent/README.md +0 -320
  1016. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +0 -419
  1017. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
  1018. package/src/modules/bmb/workflows/create-agent/agent-types.md +0 -292
  1019. package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +0 -174
  1020. package/src/modules/bmb/workflows/create-agent/checklist.md +0 -62
  1021. package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
  1022. package/src/modules/bmb/workflows/create-agent/instructions.md +0 -430
  1023. package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -49
  1024. package/src/modules/bmb/workflows/create-module/README.md +0 -220
  1025. package/src/modules/bmb/workflows/create-module/brainstorm-context.md +0 -137
  1026. package/src/modules/bmb/workflows/create-module/checklist.md +0 -244
  1027. package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
  1028. package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +0 -231
  1029. package/src/modules/bmb/workflows/create-module/instructions.md +0 -581
  1030. package/src/modules/bmb/workflows/create-module/module-structure.md +0 -366
  1031. package/src/modules/bmb/workflows/create-module/workflow.yaml +0 -44
  1032. package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
  1033. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
  1034. package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
  1035. package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -716
  1036. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
  1037. package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
  1038. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
  1039. package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
  1040. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -65
  1041. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -42
  1042. package/src/modules/bmb/workflows/edit-agent/README.md +0 -112
  1043. package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
  1044. package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -290
  1045. package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -35
  1046. package/src/modules/bmb/workflows/edit-module/README.md +0 -187
  1047. package/src/modules/bmb/workflows/edit-module/checklist.md +0 -165
  1048. package/src/modules/bmb/workflows/edit-module/instructions.md +0 -339
  1049. package/src/modules/bmb/workflows/edit-module/workflow.yaml +0 -36
  1050. package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
  1051. package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
  1052. package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
  1053. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -29
  1054. package/src/modules/bmb/workflows/module-brief/README.md +0 -264
  1055. package/src/modules/bmb/workflows/module-brief/checklist.md +0 -116
  1056. package/src/modules/bmb/workflows/module-brief/instructions.md +0 -267
  1057. package/src/modules/bmb/workflows/module-brief/template.md +0 -275
  1058. package/src/modules/bmb/workflows/module-brief/workflow.yaml +0 -31
  1059. package/src/modules/bmb/workflows/redoc/README.md +0 -87
  1060. package/src/modules/bmb/workflows/redoc/checklist.md +0 -99
  1061. package/src/modules/bmb/workflows/redoc/instructions.md +0 -265
  1062. package/src/modules/bmb/workflows/redoc/workflow.yaml +0 -34
  1063. package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
  1064. package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
  1065. package/src/modules/bmm/_module-installer/install-config.yaml +0 -74
  1066. package/src/modules/bmm/agents/game-architect.agent.yaml +0 -35
  1067. package/src/modules/bmm/agents/game-designer.agent.yaml +0 -47
  1068. package/src/modules/bmm/agents/game-dev.agent.yaml +0 -39
  1069. package/src/modules/bmm/sub-modules/claude-code/config.yaml +0 -5
  1070. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +0 -242
  1071. package/src/modules/bmm/sub-modules/claude-code/readme.md +0 -87
  1072. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +0 -102
  1073. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +0 -82
  1074. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +0 -101
  1075. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +0 -84
  1076. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +0 -83
  1077. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +0 -81
  1078. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +0 -61
  1079. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +0 -168
  1080. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +0 -115
  1081. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +0 -123
  1082. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +0 -72
  1083. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +0 -51
  1084. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +0 -106
  1085. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +0 -102
  1086. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +0 -68
  1087. package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +0 -108
  1088. package/src/modules/bmm/tasks/daily-standup.xml +0 -85
  1089. package/src/modules/bmm/tasks/retrospective.xml +0 -104
  1090. package/src/modules/bmm/teams/team-gamedev.yaml +0 -14
  1091. package/src/modules/bmm/testarch/README.md +0 -311
  1092. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +0 -38
  1093. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +0 -109
  1094. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +0 -41
  1095. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +0 -29
  1096. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -91
  1097. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
  1098. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
  1099. package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +0 -221
  1100. package/src/modules/bmm/workflows/1-analysis/game-brief/instructions.md +0 -357
  1101. package/src/modules/bmm/workflows/1-analysis/game-brief/workflow.yaml +0 -44
  1102. package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +0 -180
  1103. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
  1104. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -321
  1105. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -165
  1106. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -43
  1107. package/src/modules/bmm/workflows/1-analysis/research/README.md +0 -454
  1108. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -202
  1109. package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
  1110. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +0 -259
  1111. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +0 -190
  1112. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +0 -337
  1113. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +0 -107
  1114. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +0 -329
  1115. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -433
  1116. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -613
  1117. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -125
  1118. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -501
  1119. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
  1120. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -311
  1121. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -210
  1122. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -49
  1123. package/src/modules/bmm/workflows/2-plan-workflows/README.md +0 -258
  1124. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
  1125. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1283
  1126. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -42
  1127. package/src/modules/bmm/workflows/2-plan-workflows/gdd/README.md +0 -222
  1128. package/src/modules/bmm/workflows/2-plan-workflows/gdd/instructions-gdd.md +0 -475
  1129. package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +0 -67
  1130. package/src/modules/bmm/workflows/2-plan-workflows/narrative/instructions-narrative.md +0 -557
  1131. package/src/modules/bmm/workflows/2-plan-workflows/narrative/workflow.yaml +0 -38
  1132. package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -117
  1133. package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +0 -63
  1134. package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -449
  1135. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -46
  1136. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -107
  1137. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -11
  1138. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +0 -167
  1139. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +0 -278
  1140. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -269
  1141. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -55
  1142. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -56
  1143. package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -52
  1144. package/src/modules/bmm/workflows/3-solutioning/README.md +0 -1
  1145. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -347
  1146. package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
  1147. package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -244
  1148. package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -703
  1149. package/src/modules/bmm/workflows/3-solutioning/architecture/readme.md +0 -318
  1150. package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -54
  1151. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +0 -177
  1152. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/checklist.md +0 -175
  1153. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -273
  1154. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/template.md +0 -146
  1155. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -189
  1156. package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -40
  1157. package/src/modules/bmm/workflows/4-implementation/README.md +0 -221
  1158. package/src/modules/bmm/workflows/4-implementation/code-review/README.md +0 -69
  1159. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -391
  1160. package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +0 -73
  1161. package/src/modules/bmm/workflows/4-implementation/create-story/README.md +0 -129
  1162. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -252
  1163. package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +0 -367
  1164. package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +0 -206
  1165. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -262
  1166. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/README.md +0 -195
  1167. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
  1168. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -160
  1169. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
  1170. package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -34
  1171. package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +0 -77
  1172. package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +0 -156
  1173. package/src/modules/bmm/workflows/4-implementation/story-context/README.md +0 -234
  1174. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
  1175. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
  1176. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -201
  1177. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -32
  1178. package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
  1179. package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -27
  1180. package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
  1181. package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -27
  1182. package/src/modules/bmm/workflows/README.md +0 -577
  1183. package/src/modules/bmm/workflows/document-project/README.md +0 -444
  1184. package/src/modules/bmm/workflows/document-project/templates/README.md +0 -38
  1185. package/src/modules/bmm/workflows/testarch/README.md +0 -26
  1186. package/src/modules/bmm/workflows/testarch/atdd/README.md +0 -672
  1187. package/src/modules/bmm/workflows/testarch/automate/README.md +0 -869
  1188. package/src/modules/bmm/workflows/testarch/ci/README.md +0 -493
  1189. package/src/modules/bmm/workflows/testarch/framework/README.md +0 -340
  1190. package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +0 -469
  1191. package/src/modules/bmm/workflows/testarch/test-design/README.md +0 -493
  1192. package/src/modules/bmm/workflows/testarch/test-review/README.md +0 -775
  1193. package/src/modules/bmm/workflows/testarch/trace/README.md +0 -802
  1194. package/src/modules/bmm/workflows/workflow-status/README.md +0 -241
  1195. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-0.yaml +0 -54
  1196. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-1.yaml +0 -58
  1197. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +0 -76
  1198. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-3.yaml +0 -95
  1199. package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +0 -88
  1200. package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +0 -75
  1201. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-0.yaml +0 -45
  1202. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-1.yaml +0 -49
  1203. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml +0 -78
  1204. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-3.yaml +0 -73
  1205. package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +0 -75
  1206. package/src/modules/bmm/workflows/workflow-status/workflow-status-template.md +0 -30
  1207. package/src/modules/cis/_module-installer/install-config.yaml +0 -14
  1208. package/src/modules/cis/agents/README.md +0 -104
  1209. package/src/modules/cis/agents/storyteller.agent.yaml +0 -23
  1210. package/src/modules/cis/readme.md +0 -86
  1211. package/src/utility/models/agent-activation-ide.xml +0 -51
  1212. package/src/utility/models/agent-activation-web.xml +0 -60
  1213. package/src/utility/models/agent-config-template.md +0 -23
  1214. package/src/utility/models/agent-in-team-activation.xml +0 -3
  1215. package/src/utility/models/fragments/activation-rules.xml +0 -8
  1216. package/src/utility/models/fragments/activation-steps.xml +0 -15
  1217. package/src/utility/models/fragments/handler-action.xml +0 -4
  1218. package/src/utility/models/fragments/handler-exec.xml +0 -5
  1219. package/src/utility/models/fragments/handler-tmpl.xml +0 -5
  1220. package/src/utility/models/fragments/handler-validate-workflow.xml +0 -7
  1221. package/src/utility/models/fragments/handler-workflow.xml +0 -9
  1222. package/src/utility/models/fragments/menu-handlers.xml +0 -6
  1223. package/src/utility/models/fragments/web-bundle-activation-steps.xml +0 -32
  1224. package/src/utility/templates/agent.customize.template.yaml +0 -42
  1225. package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
  1226. package/tools/cli/bundlers/bundle-web.js +0 -179
  1227. package/tools/cli/bundlers/test-analyst.js +0 -28
  1228. package/tools/cli/bundlers/test-bundler.js +0 -118
  1229. package/tools/cli/bundlers/web-bundler.js +0 -1479
  1230. package/tools/cli/commands/build.js +0 -458
  1231. package/tools/cli/commands/list.js +0 -28
  1232. package/tools/cli/commands/status.js +0 -47
  1233. package/tools/cli/commands/uninstall.js +0 -44
  1234. package/tools/cli/commands/update.js +0 -28
  1235. package/tools/cli/installers/lib/ide/task-tool-command-generator.js +0 -119
  1236. package/tools/cli/installers/lib/ide/workflow-command-generator.js +0 -235
  1237. package/tools/cli/installers/lib/ide/workflow-command-template.md +0 -15
  1238. package/tools/cli/lib/replace-project-root.js +0 -239
  1239. package/tools/cli/regenerate-manifests.js +0 -28
  1240. package/tools/cli/test-yaml-builder.js +0 -43
  1241. package/tools/validate-bundles.js +0 -87
  1242. package/v6-open-items.md +0 -23
  1243. /package/{bmad/bmb/workflows → src/modules/bmb/workflows-legacy}/module-brief/template.md +0 -0
  1244. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-brain-methods.csv +0 -0
  1245. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-context.md +0 -0
  1246. /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/checklist.md +0 -0
  1247. /package/src/modules/{bmm/workflows/1-analysis/game-brief/template.md → bmgd/workflows/1-preproduction/game-brief/templates/game-brief-template.md} +0 -0
  1248. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/checklist.md +0 -0
  1249. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/action-platformer.md +0 -0
  1250. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/adventure.md +0 -0
  1251. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/card-game.md +0 -0
  1252. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/fighting.md +0 -0
  1253. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/horror.md +0 -0
  1254. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/idle-incremental.md +0 -0
  1255. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/metroidvania.md +0 -0
  1256. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/moba.md +0 -0
  1257. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/party-game.md +0 -0
  1258. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/puzzle.md +0 -0
  1259. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/racing.md +0 -0
  1260. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rhythm.md +0 -0
  1261. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/roguelike.md +0 -0
  1262. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rpg.md +0 -0
  1263. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sandbox.md +0 -0
  1264. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/shooter.md +0 -0
  1265. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/simulation.md +0 -0
  1266. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sports.md +0 -0
  1267. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/strategy.md +0 -0
  1268. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/survival.md +0 -0
  1269. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/text-based.md +0 -0
  1270. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/tower-defense.md +0 -0
  1271. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/turn-based-tactics.md +0 -0
  1272. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/visual-novel.md +0 -0
  1273. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types.csv +0 -0
  1274. /package/src/modules/{bmm/workflows/2-plan-workflows/gdd → bmgd/workflows/2-design/gdd/templates}/gdd-template.md +0 -0
  1275. /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/checklist.md +0 -0
  1276. /package/src/modules/{bmm/workflows/2-plan-workflows/narrative → bmgd/workflows/2-design/narrative/templates}/narrative-template.md +0 -0
  1277. /package/src/modules/{bmm/workflows/3-solutioning/architecture → bmgd/workflows/3-technical/game-architecture}/decision-catalog.yaml +0 -0
  1278. /package/src/modules/{bmm/workflows/3-solutioning/architecture → bmgd/workflows/3-technical/game-architecture}/pattern-categories.csv +0 -0
  1279. /package/src/modules/{bmm/workflows/4-implementation/code-review/backlog_template.md → bmgd/workflows/4-production/code-review/backlog-template.md} +0 -0
  1280. /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 };