bmad-method 5.1.2 → 6.0.0-alpha.0

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 (579) hide show
  1. package/.github/FUNDING.yaml +2 -2
  2. package/.github/ISSUE_TEMPLATE/config.yaml +1 -0
  3. package/.github/ISSUE_TEMPLATE/idea_submission.md +109 -0
  4. package/.github/workflows/discord.yaml +1 -10
  5. package/.github/workflows/format-check.yaml +3 -2
  6. package/.github/workflows/manual-release.yaml +2 -2
  7. package/.nvmrc +1 -0
  8. package/.vscode/settings.json +34 -9
  9. package/CHANGELOG.md +211 -577
  10. package/CONTRIBUTING.md +130 -60
  11. package/LICENSE +6 -1
  12. package/docs/codebase-flattener.md +19 -0
  13. package/docs/ide-info/auggie.md +31 -0
  14. package/docs/ide-info/claude-code.md +25 -0
  15. package/docs/ide-info/cline.md +31 -0
  16. package/docs/ide-info/codex.md +32 -0
  17. package/docs/ide-info/crush.md +30 -0
  18. package/docs/ide-info/cursor.md +25 -0
  19. package/docs/ide-info/gemini.md +25 -0
  20. package/docs/ide-info/github-copilot.md +26 -0
  21. package/docs/ide-info/iflow.md +33 -0
  22. package/docs/ide-info/kilo.md +24 -0
  23. package/docs/ide-info/qwen.md +25 -0
  24. package/docs/ide-info/roo.md +27 -0
  25. package/docs/ide-info/trae.md +25 -0
  26. package/docs/ide-info/windsurf.md +22 -0
  27. package/docs/installers-bundlers/ide-injections.md +196 -0
  28. package/docs/installers-bundlers/installers-modules-platforms-reference.md +355 -0
  29. package/docs/installers-bundlers/web-bundler-usage.md +54 -0
  30. package/eslint.config.mjs +17 -7
  31. package/package.json +26 -35
  32. package/prettier.config.mjs +1 -1
  33. package/readme.md +216 -0
  34. package/src/core/_module-installer/install-menu-config.yaml +24 -0
  35. package/src/core/_module-installer/installer.js +68 -0
  36. package/src/core/agents/bmad-master.md +27 -0
  37. package/src/core/agents/bmad-web-orchestrator.md +71 -0
  38. package/src/core/tasks/adv-elicit-methods.csv +39 -0
  39. package/src/core/tasks/adv-elicit.md +109 -0
  40. package/src/core/tasks/index-docs.md +69 -0
  41. package/src/core/tasks/shard-doc.md +57 -0
  42. package/src/core/tasks/validate-workflow.md +92 -0
  43. package/src/core/tasks/workflow.md +141 -0
  44. package/src/core/workflows/bmad-init/instructions.md +79 -0
  45. package/src/core/workflows/bmad-init/workflow.yaml +24 -0
  46. package/src/core/workflows/party-mode/instructions.md +181 -0
  47. package/src/core/workflows/party-mode/workflow.yaml +24 -0
  48. package/src/modules/bmb/_module-installer/install-menu-config.yaml +16 -0
  49. package/src/modules/bmb/agents/bmad-builder.md +30 -0
  50. package/src/modules/bmb/workflows/convert-legacy/README.md +262 -0
  51. package/src/modules/bmb/workflows/convert-legacy/checklist.md +204 -0
  52. package/src/modules/bmb/workflows/convert-legacy/instructions.md +328 -0
  53. package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +35 -0
  54. package/src/modules/bmb/workflows/create-agent/README.md +268 -0
  55. package/src/modules/bmb/workflows/create-agent/agent-architecture.md +412 -0
  56. package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +757 -0
  57. package/src/modules/bmb/workflows/create-agent/agent-types.md +177 -0
  58. package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +174 -0
  59. package/src/modules/bmb/workflows/create-agent/checklist.md +134 -0
  60. package/src/modules/bmb/workflows/create-agent/communication-styles.md +240 -0
  61. package/src/modules/bmb/workflows/create-agent/instructions.md +340 -0
  62. package/src/modules/bmb/workflows/create-agent/workflow.yaml +39 -0
  63. package/src/modules/bmb/workflows/create-module/README.md +218 -0
  64. package/src/modules/bmb/workflows/create-module/brainstorm-context.md +137 -0
  65. package/src/modules/bmb/workflows/create-module/checklist.md +245 -0
  66. package/src/modules/bmb/workflows/create-module/installer-templates/install-module-config.yaml +132 -0
  67. package/src/modules/bmb/workflows/create-module/installer-templates/installer.js +231 -0
  68. package/src/modules/bmb/workflows/create-module/instructions.md +509 -0
  69. package/src/modules/bmb/workflows/create-module/module-structure.md +310 -0
  70. package/src/modules/bmb/workflows/create-module/workflow.yaml +47 -0
  71. package/src/modules/bmb/workflows/create-workflow/README.md +216 -0
  72. package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +197 -0
  73. package/src/modules/bmb/workflows/create-workflow/checklist.md +72 -0
  74. package/src/modules/bmb/workflows/create-workflow/instructions.md +267 -0
  75. package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +456 -0
  76. package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +24 -0
  77. package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +12 -0
  78. package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +9 -0
  79. package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +35 -0
  80. package/src/modules/bmb/workflows/create-workflow/workflow.yaml +42 -0
  81. package/src/modules/bmb/workflows/edit-workflow/README.md +63 -0
  82. package/src/modules/bmb/workflows/edit-workflow/checklist.md +70 -0
  83. package/src/modules/bmb/workflows/edit-workflow/instructions.md +170 -0
  84. package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +34 -0
  85. package/src/modules/bmb/workflows/module-brief/README.md +264 -0
  86. package/src/modules/bmb/workflows/module-brief/checklist.md +116 -0
  87. package/src/modules/bmb/workflows/module-brief/instructions.md +265 -0
  88. package/src/modules/bmb/workflows/module-brief/template.md +275 -0
  89. package/src/modules/bmb/workflows/module-brief/workflow.yaml +30 -0
  90. package/src/modules/bmb/workflows/redoc/README.md +87 -0
  91. package/src/modules/bmb/workflows/redoc/checklist.md +99 -0
  92. package/src/modules/bmb/workflows/redoc/instructions.md +255 -0
  93. package/src/modules/bmb/workflows/redoc/workflow.yaml +33 -0
  94. package/src/modules/bmm/_module-installer/assets/bmm-kb.md +1 -0
  95. package/src/modules/bmm/_module-installer/assets/technical-decisions-template.md +30 -0
  96. package/src/modules/bmm/_module-installer/install-menu-config.yaml +49 -0
  97. package/src/modules/bmm/_module-installer/installer.js +131 -0
  98. package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +35 -0
  99. package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +32 -0
  100. package/src/modules/bmm/agents/analyst.md +26 -0
  101. package/src/modules/bmm/agents/architect.md +29 -0
  102. package/src/modules/bmm/agents/dev.md +61 -0
  103. package/src/modules/bmm/agents/game-architect.md +26 -0
  104. package/src/modules/bmm/agents/game-designer.md +27 -0
  105. package/src/modules/bmm/agents/game-dev.md +28 -0
  106. package/src/modules/bmm/agents/pm.md +26 -0
  107. package/src/modules/bmm/agents/po.md +25 -0
  108. package/src/modules/bmm/agents/sm.md +29 -0
  109. package/src/modules/bmm/agents/tea.md +32 -0
  110. package/src/modules/bmm/agents/ux-expert.md +24 -0
  111. package/src/modules/bmm/sub-modules/claude-code/config.yaml +5 -0
  112. package/src/modules/bmm/sub-modules/claude-code/injections.yaml +242 -0
  113. package/src/modules/bmm/sub-modules/claude-code/readme.md +87 -0
  114. package/src/modules/bmm/sub-modules/claude-code/sub-agents/api-documenter.md +85 -0
  115. package/src/modules/bmm/sub-modules/claude-code/sub-agents/codebase-analyzer.md +64 -0
  116. package/src/modules/bmm/sub-modules/claude-code/sub-agents/data-analyst.md +84 -0
  117. package/src/modules/bmm/sub-modules/claude-code/sub-agents/dependency-mapper.md +67 -0
  118. package/src/modules/bmm/sub-modules/claude-code/sub-agents/document-reviewer.md +85 -0
  119. package/src/modules/bmm/sub-modules/claude-code/sub-agents/epic-optimizer.md +66 -0
  120. package/src/modules/bmm/sub-modules/claude-code/sub-agents/market-researcher.md +34 -0
  121. package/src/modules/bmm/sub-modules/claude-code/sub-agents/pattern-detector.md +67 -0
  122. package/src/modules/bmm/sub-modules/claude-code/sub-agents/requirements-analyst.md +61 -0
  123. package/src/modules/bmm/sub-modules/claude-code/sub-agents/tech-debt-auditor.md +89 -0
  124. package/src/modules/bmm/sub-modules/claude-code/sub-agents/technical-decisions-curator.md +146 -0
  125. package/src/modules/bmm/sub-modules/claude-code/sub-agents/technical-evaluator.md +51 -0
  126. package/src/modules/bmm/sub-modules/claude-code/sub-agents/test-coverage-analyzer.md +91 -0
  127. package/src/modules/bmm/sub-modules/claude-code/sub-agents/trend-spotter.md +99 -0
  128. package/src/modules/bmm/sub-modules/claude-code/sub-agents/user-journey-mapper.md +101 -0
  129. package/src/modules/bmm/sub-modules/claude-code/sub-agents/user-researcher.md +56 -0
  130. package/src/modules/bmm/tasks/daily-standup.md +91 -0
  131. package/src/modules/bmm/tasks/retrospective.md +110 -0
  132. package/src/modules/bmm/teams/team-all.yaml +7 -0
  133. package/src/modules/bmm/teams/team-dev.yaml +14 -0
  134. package/src/modules/bmm/teams/team-gamedev.yaml +9 -0
  135. package/src/modules/bmm/testarch/atdd.md +40 -0
  136. package/src/modules/bmm/testarch/automate.md +38 -0
  137. package/src/modules/bmm/testarch/ci.md +39 -0
  138. package/src/modules/bmm/testarch/framework.md +41 -0
  139. package/src/modules/bmm/testarch/nfr-assess.md +38 -0
  140. package/src/modules/bmm/testarch/risk-profile.md +38 -0
  141. package/src/modules/bmm/testarch/tea-commands.csv +11 -0
  142. package/src/modules/bmm/testarch/tea-gate.md +38 -0
  143. package/src/modules/bmm/testarch/tea-knowledge.md +275 -0
  144. package/src/modules/bmm/testarch/test-design.md +39 -0
  145. package/{bmad-core/data → src/modules/bmm/testarch}/test-levels-framework.md +2 -0
  146. package/{bmad-core/data → src/modules/bmm/testarch}/test-priorities-matrix.md +2 -0
  147. package/src/modules/bmm/testarch/trace-requirements.md +38 -0
  148. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/game-brain-methods.csv +26 -0
  149. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/game-context.md +115 -0
  150. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +47 -0
  151. package/src/modules/bmm/workflows/1-analysis/brainstorm-game/workflow.yaml +22 -0
  152. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +38 -0
  153. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +25 -0
  154. package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +21 -0
  155. package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +221 -0
  156. package/src/modules/bmm/workflows/1-analysis/game-brief/checklist.md +128 -0
  157. package/src/modules/bmm/workflows/1-analysis/game-brief/instructions.md +517 -0
  158. package/src/modules/bmm/workflows/1-analysis/game-brief/template.md +205 -0
  159. package/src/modules/bmm/workflows/1-analysis/game-brief/workflow.yaml +34 -0
  160. package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +180 -0
  161. package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +115 -0
  162. package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +353 -0
  163. package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +165 -0
  164. package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +33 -0
  165. package/src/modules/bmm/workflows/1-analysis/research/README.md +454 -0
  166. package/src/modules/bmm/workflows/1-analysis/research/checklist.md +202 -0
  167. package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +114 -0
  168. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +259 -0
  169. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +190 -0
  170. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +337 -0
  171. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +107 -0
  172. package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +329 -0
  173. package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +370 -0
  174. package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +553 -0
  175. package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +91 -0
  176. package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +442 -0
  177. package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +94 -0
  178. package/src/modules/bmm/workflows/1-analysis/research/template-market.md +311 -0
  179. package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +210 -0
  180. package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +149 -0
  181. package/src/modules/bmm/workflows/2-plan/README.md +203 -0
  182. package/src/modules/bmm/workflows/2-plan/checklist.md +369 -0
  183. package/src/modules/bmm/workflows/2-plan/gdd/README.md +222 -0
  184. package/src/modules/bmm/workflows/2-plan/gdd/game-types/action-platformer.md +45 -0
  185. package/src/modules/bmm/workflows/2-plan/gdd/game-types/adventure.md +84 -0
  186. package/src/modules/bmm/workflows/2-plan/gdd/game-types/card-game.md +76 -0
  187. package/src/modules/bmm/workflows/2-plan/gdd/game-types/fighting.md +89 -0
  188. package/src/modules/bmm/workflows/2-plan/gdd/game-types/horror.md +86 -0
  189. package/src/modules/bmm/workflows/2-plan/gdd/game-types/idle-incremental.md +78 -0
  190. package/src/modules/bmm/workflows/2-plan/gdd/game-types/metroidvania.md +87 -0
  191. package/src/modules/bmm/workflows/2-plan/gdd/game-types/moba.md +74 -0
  192. package/src/modules/bmm/workflows/2-plan/gdd/game-types/party-game.md +79 -0
  193. package/src/modules/bmm/workflows/2-plan/gdd/game-types/puzzle.md +58 -0
  194. package/src/modules/bmm/workflows/2-plan/gdd/game-types/racing.md +88 -0
  195. package/src/modules/bmm/workflows/2-plan/gdd/game-types/rhythm.md +79 -0
  196. package/src/modules/bmm/workflows/2-plan/gdd/game-types/roguelike.md +69 -0
  197. package/src/modules/bmm/workflows/2-plan/gdd/game-types/rpg.md +70 -0
  198. package/src/modules/bmm/workflows/2-plan/gdd/game-types/sandbox.md +79 -0
  199. package/src/modules/bmm/workflows/2-plan/gdd/game-types/shooter.md +62 -0
  200. package/src/modules/bmm/workflows/2-plan/gdd/game-types/simulation.md +73 -0
  201. package/src/modules/bmm/workflows/2-plan/gdd/game-types/sports.md +75 -0
  202. package/src/modules/bmm/workflows/2-plan/gdd/game-types/strategy.md +71 -0
  203. package/src/modules/bmm/workflows/2-plan/gdd/game-types/survival.md +79 -0
  204. package/src/modules/bmm/workflows/2-plan/gdd/game-types/text-based.md +91 -0
  205. package/src/modules/bmm/workflows/2-plan/gdd/game-types/tower-defense.md +79 -0
  206. package/src/modules/bmm/workflows/2-plan/gdd/game-types/turn-based-tactics.md +88 -0
  207. package/src/modules/bmm/workflows/2-plan/gdd/game-types/visual-novel.md +89 -0
  208. package/src/modules/bmm/workflows/2-plan/gdd/game-types.csv +25 -0
  209. package/src/modules/bmm/workflows/2-plan/gdd/gdd-template.md +159 -0
  210. package/src/modules/bmm/workflows/2-plan/gdd/instructions-gdd.md +480 -0
  211. package/src/modules/bmm/workflows/2-plan/instructions-router.md +222 -0
  212. package/src/modules/bmm/workflows/2-plan/narrative/instructions-narrative.md +517 -0
  213. package/src/modules/bmm/workflows/2-plan/narrative/narrative-template.md +195 -0
  214. package/src/modules/bmm/workflows/2-plan/prd/analysis-template.md +53 -0
  215. package/src/modules/bmm/workflows/2-plan/prd/epics-template.md +18 -0
  216. package/src/modules/bmm/workflows/2-plan/prd/instructions-lg.md +267 -0
  217. package/src/modules/bmm/workflows/2-plan/prd/instructions-med.md +251 -0
  218. package/src/modules/bmm/workflows/2-plan/prd/prd-template.md +73 -0
  219. package/src/modules/bmm/workflows/2-plan/tech-spec/instructions-sm.md +137 -0
  220. package/src/modules/bmm/workflows/2-plan/tech-spec/tech-spec-template.md +59 -0
  221. package/src/modules/bmm/workflows/2-plan/ux/instructions-ux.md +360 -0
  222. package/src/modules/bmm/workflows/2-plan/ux/ux-spec-template.md +162 -0
  223. package/src/modules/bmm/workflows/2-plan/workflow.yaml +60 -0
  224. package/src/modules/bmm/workflows/3-solutioning/ADR-template.md +74 -0
  225. package/src/modules/bmm/workflows/3-solutioning/README.md +565 -0
  226. package/src/modules/bmm/workflows/3-solutioning/checklist.md +170 -0
  227. package/src/modules/bmm/workflows/3-solutioning/instructions.md +661 -0
  228. package/src/modules/bmm/workflows/3-solutioning/project-types/backend-questions.md +490 -0
  229. package/src/modules/bmm/workflows/3-solutioning/project-types/cli-questions.md +337 -0
  230. package/src/modules/bmm/workflows/3-solutioning/project-types/data-questions.md +472 -0
  231. package/src/modules/bmm/workflows/3-solutioning/project-types/desktop-questions.md +299 -0
  232. package/src/modules/bmm/workflows/3-solutioning/project-types/embedded-questions.md +118 -0
  233. package/src/modules/bmm/workflows/3-solutioning/project-types/extension-questions.md +374 -0
  234. package/src/modules/bmm/workflows/3-solutioning/project-types/game-questions.md +133 -0
  235. package/src/modules/bmm/workflows/3-solutioning/project-types/infra-questions.md +484 -0
  236. package/src/modules/bmm/workflows/3-solutioning/project-types/library-questions.md +146 -0
  237. package/src/modules/bmm/workflows/3-solutioning/project-types/mobile-questions.md +110 -0
  238. package/src/modules/bmm/workflows/3-solutioning/project-types/project-types.csv +12 -0
  239. package/src/modules/bmm/workflows/3-solutioning/project-types/web-questions.md +136 -0
  240. package/src/modules/bmm/workflows/3-solutioning/tech-spec/README.md +195 -0
  241. package/src/modules/bmm/workflows/3-solutioning/tech-spec/checklist.md +17 -0
  242. package/src/modules/bmm/workflows/3-solutioning/tech-spec/instructions.md +73 -0
  243. package/src/modules/bmm/workflows/3-solutioning/tech-spec/template.md +76 -0
  244. package/src/modules/bmm/workflows/3-solutioning/tech-spec/workflow.yaml +51 -0
  245. package/src/modules/bmm/workflows/3-solutioning/templates/backend-service-architecture.md +66 -0
  246. package/src/modules/bmm/workflows/3-solutioning/templates/cli-tool-architecture.md +66 -0
  247. package/src/modules/bmm/workflows/3-solutioning/templates/data-pipeline-architecture.md +66 -0
  248. package/src/modules/bmm/workflows/3-solutioning/templates/desktop-app-architecture.md +66 -0
  249. package/src/modules/bmm/workflows/3-solutioning/templates/embedded-firmware-architecture.md +66 -0
  250. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-architecture.md +244 -0
  251. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-godot-guide.md +428 -0
  252. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-unity-guide.md +333 -0
  253. package/src/modules/bmm/workflows/3-solutioning/templates/game-engine-web-guide.md +528 -0
  254. package/src/modules/bmm/workflows/3-solutioning/templates/infrastructure-architecture.md +66 -0
  255. package/src/modules/bmm/workflows/3-solutioning/templates/library-package-architecture.md +66 -0
  256. package/src/modules/bmm/workflows/3-solutioning/templates/mobile-app-architecture.md +66 -0
  257. package/src/modules/bmm/workflows/3-solutioning/templates/registry.csv +172 -0
  258. package/src/modules/bmm/workflows/3-solutioning/templates/web-api-architecture.md +66 -0
  259. package/src/modules/bmm/workflows/3-solutioning/templates/web-fullstack-architecture.md +277 -0
  260. package/src/modules/bmm/workflows/3-solutioning/workflow.yaml +65 -0
  261. package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +279 -0
  262. package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +190 -0
  263. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +35 -0
  264. package/src/modules/bmm/workflows/4-implementation/create-story/README.md +42 -0
  265. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +39 -0
  266. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +81 -0
  267. package/src/modules/bmm/workflows/4-implementation/create-story/template.md +57 -0
  268. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +72 -0
  269. package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +84 -0
  270. package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +38 -0
  271. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +87 -0
  272. package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +53 -0
  273. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +391 -0
  274. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +41 -0
  275. package/src/modules/bmm/workflows/4-implementation/review-story/README.md +72 -0
  276. package/src/modules/bmm/workflows/4-implementation/review-story/backlog_template.md +12 -0
  277. package/src/modules/bmm/workflows/4-implementation/review-story/checklist.md +22 -0
  278. package/src/modules/bmm/workflows/4-implementation/review-story/instructions.md +176 -0
  279. package/src/modules/bmm/workflows/4-implementation/review-story/workflow.yaml +99 -0
  280. package/src/modules/bmm/workflows/4-implementation/story-context/README.md +234 -0
  281. package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +16 -0
  282. package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +34 -0
  283. package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +76 -0
  284. package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +56 -0
  285. package/src/modules/cis/_module-installer/install-menu-config.yaml +14 -0
  286. package/src/modules/cis/_module-installer/installer.js +92 -0
  287. package/src/modules/cis/agents/README.md +104 -0
  288. package/src/modules/cis/agents/brainstorming-coach.md +24 -0
  289. package/src/modules/cis/agents/creative-problem-solver.md +24 -0
  290. package/src/modules/cis/agents/design-thinking-coach.md +24 -0
  291. package/src/modules/cis/agents/innovation-strategist.md +24 -0
  292. package/src/modules/cis/agents/storyteller.md +24 -0
  293. package/src/modules/cis/readme.md +86 -0
  294. package/src/modules/cis/teams/creative-squad.yaml +6 -0
  295. package/src/modules/cis/workflows/README.md +67 -0
  296. package/src/modules/cis/workflows/brainstorming/README.md +271 -0
  297. package/src/modules/cis/workflows/brainstorming/brain-methods.csv +36 -0
  298. package/src/modules/cis/workflows/brainstorming/instructions.md +310 -0
  299. package/src/modules/cis/workflows/brainstorming/template.md +102 -0
  300. package/src/modules/cis/workflows/brainstorming/workflow.yaml +30 -0
  301. package/src/modules/cis/workflows/design-thinking/README.md +56 -0
  302. package/src/modules/cis/workflows/design-thinking/design-methods.csv +31 -0
  303. package/src/modules/cis/workflows/design-thinking/instructions.md +200 -0
  304. package/src/modules/cis/workflows/design-thinking/template.md +111 -0
  305. package/src/modules/cis/workflows/design-thinking/workflow.yaml +29 -0
  306. package/src/modules/cis/workflows/innovation-strategy/README.md +56 -0
  307. package/src/modules/cis/workflows/innovation-strategy/innovation-frameworks.csv +31 -0
  308. package/src/modules/cis/workflows/innovation-strategy/instructions.md +274 -0
  309. package/src/modules/cis/workflows/innovation-strategy/template.md +189 -0
  310. package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +29 -0
  311. package/src/modules/cis/workflows/problem-solving/README.md +56 -0
  312. package/src/modules/cis/workflows/problem-solving/instructions.md +250 -0
  313. package/src/modules/cis/workflows/problem-solving/solving-methods.csv +31 -0
  314. package/src/modules/cis/workflows/problem-solving/template.md +165 -0
  315. package/src/modules/cis/workflows/problem-solving/workflow.yaml +29 -0
  316. package/src/modules/cis/workflows/storytelling/README.md +58 -0
  317. package/src/modules/cis/workflows/storytelling/instructions.md +275 -0
  318. package/src/modules/cis/workflows/storytelling/story-types.csv +26 -0
  319. package/src/modules/cis/workflows/storytelling/template.md +113 -0
  320. package/src/modules/cis/workflows/storytelling/workflow.yaml +29 -0
  321. package/src/utility/models/agent-activation-ide.xml +51 -0
  322. package/src/utility/models/agent-config-template.md +23 -0
  323. package/tools/cli/bmad-cli.js +42 -0
  324. package/tools/cli/bundlers/bundle-web.js +157 -0
  325. package/tools/cli/bundlers/test-analyst.js +28 -0
  326. package/tools/cli/bundlers/test-bundler.js +118 -0
  327. package/tools/cli/bundlers/web-bundler.js +880 -0
  328. package/tools/cli/commands/install.js +41 -0
  329. package/tools/cli/commands/list.js +28 -0
  330. package/tools/cli/commands/status.js +47 -0
  331. package/tools/cli/commands/uninstall.js +44 -0
  332. package/tools/cli/commands/update.js +28 -0
  333. package/tools/cli/installers/lib/core/config-collector.js +383 -0
  334. package/tools/cli/installers/lib/core/dependency-resolver.js +721 -0
  335. package/tools/cli/installers/lib/core/detector.js +208 -0
  336. package/tools/cli/installers/lib/core/installer.js +1070 -0
  337. package/tools/cli/installers/lib/core/manifest-generator.js +385 -0
  338. package/tools/cli/installers/lib/core/manifest.js +484 -0
  339. package/tools/cli/installers/lib/ide/_base-ide.js +281 -0
  340. package/tools/cli/installers/lib/ide/auggie.js +271 -0
  341. package/tools/cli/installers/lib/ide/claude-code.js +625 -0
  342. package/tools/cli/installers/lib/ide/cline.js +301 -0
  343. package/tools/cli/installers/lib/ide/codex.js +267 -0
  344. package/tools/cli/installers/lib/ide/crush.js +204 -0
  345. package/tools/cli/installers/lib/ide/cursor.js +224 -0
  346. package/tools/cli/installers/lib/ide/gemini.js +160 -0
  347. package/tools/cli/installers/lib/ide/github-copilot.js +289 -0
  348. package/tools/cli/installers/lib/ide/iflow.js +142 -0
  349. package/tools/cli/installers/lib/ide/kilo.js +171 -0
  350. package/tools/cli/installers/lib/ide/manager.js +203 -0
  351. package/tools/cli/installers/lib/ide/qwen.js +188 -0
  352. package/tools/cli/installers/lib/ide/roo.js +288 -0
  353. package/tools/cli/installers/lib/ide/trae.js +182 -0
  354. package/tools/cli/installers/lib/ide/windsurf.js +149 -0
  355. package/tools/cli/installers/lib/ide/workflow-command-generator.js +162 -0
  356. package/tools/cli/installers/lib/ide/workflow-command-template.md +11 -0
  357. package/tools/cli/installers/lib/modules/manager.js +452 -0
  358. package/tools/cli/lib/agent-party-generator.js +206 -0
  359. package/tools/cli/lib/cli-utils.js +208 -0
  360. package/tools/cli/lib/config.js +210 -0
  361. package/tools/cli/lib/file-ops.js +204 -0
  362. package/tools/cli/lib/platform-codes.js +116 -0
  363. package/tools/cli/lib/project-root.js +71 -0
  364. package/tools/cli/lib/replace-project-root.js +239 -0
  365. package/tools/cli/lib/ui.js +516 -0
  366. package/tools/cli/lib/xml-handler.js +183 -0
  367. package/tools/cli/lib/xml-to-markdown.js +82 -0
  368. package/tools/{yaml-format.js → cli/lib/yaml-format.js} +3 -10
  369. package/tools/cli/regenerate-manifests.js +28 -0
  370. package/tools/flattener/ignoreRules.js +2 -6
  371. package/tools/flattener/main.js +31 -121
  372. package/tools/flattener/projectRoot.js +3 -8
  373. package/tools/flattener/stats.helpers.js +8 -35
  374. package/tools/flattener/stats.js +1 -6
  375. package/tools/flattener/test-matrix.js +1 -5
  376. package/tools/platform-codes.yaml +127 -0
  377. package/tools/test-agents/captain-kirk-commander.md +110 -0
  378. package/tools/test-agents/data-operations-android.md +123 -0
  379. package/tools/test-agents/geordi-chief-engineer.md +135 -0
  380. package/tools/test-agents/isabella-martinez-ethicist.md +109 -0
  381. package/tools/test-agents/marcus-thompson-security.md +109 -0
  382. package/tools/test-agents/maya-patel-pragmatist.md +82 -0
  383. package/tools/test-agents/picard-diplomat-captain.md +134 -0
  384. package/tools/test-agents/spock-science-officer.md +124 -0
  385. package/tools/test-agents/william-smithers-technocrat.md +71 -0
  386. package/tools/test-agents/zara-chen-designer.md +94 -0
  387. package/tools/validate-bundles.js +87 -0
  388. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -22
  389. package/README.md +0 -221
  390. package/bmad-core/agent-teams/team-all.yaml +0 -14
  391. package/bmad-core/agent-teams/team-fullstack.yaml +0 -18
  392. package/bmad-core/agent-teams/team-ide-minimal.yaml +0 -10
  393. package/bmad-core/agent-teams/team-no-ui.yaml +0 -13
  394. package/bmad-core/agents/analyst.md +0 -81
  395. package/bmad-core/agents/architect.md +0 -83
  396. package/bmad-core/agents/bmad-master.md +0 -107
  397. package/bmad-core/agents/bmad-orchestrator.md +0 -149
  398. package/bmad-core/agents/dev.md +0 -75
  399. package/bmad-core/agents/pm.md +0 -81
  400. package/bmad-core/agents/po.md +0 -76
  401. package/bmad-core/agents/qa.md +0 -88
  402. package/bmad-core/agents/sm.md +0 -62
  403. package/bmad-core/agents/ux-expert.md +0 -66
  404. package/bmad-core/checklists/architect-checklist.md +0 -438
  405. package/bmad-core/checklists/change-checklist.md +0 -182
  406. package/bmad-core/checklists/pm-checklist.md +0 -370
  407. package/bmad-core/checklists/po-master-checklist.md +0 -432
  408. package/bmad-core/checklists/story-dod-checklist.md +0 -94
  409. package/bmad-core/checklists/story-draft-checklist.md +0 -153
  410. package/bmad-core/core-config.yaml +0 -20
  411. package/bmad-core/data/bmad-kb.md +0 -806
  412. package/bmad-core/data/brainstorming-techniques.md +0 -36
  413. package/bmad-core/data/elicitation-methods.md +0 -154
  414. package/bmad-core/data/technical-preferences.md +0 -3
  415. package/bmad-core/tasks/advanced-elicitation.md +0 -117
  416. package/bmad-core/tasks/brownfield-create-epic.md +0 -160
  417. package/bmad-core/tasks/brownfield-create-story.md +0 -147
  418. package/bmad-core/tasks/correct-course.md +0 -70
  419. package/bmad-core/tasks/create-brownfield-story.md +0 -312
  420. package/bmad-core/tasks/create-deep-research-prompt.md +0 -278
  421. package/bmad-core/tasks/create-next-story.md +0 -112
  422. package/bmad-core/tasks/document-project.md +0 -343
  423. package/bmad-core/tasks/facilitate-brainstorming-session.md +0 -136
  424. package/bmad-core/tasks/generate-ai-frontend-prompt.md +0 -51
  425. package/bmad-core/tasks/index-docs.md +0 -173
  426. package/bmad-core/tasks/kb-mode-interaction.md +0 -75
  427. package/bmad-core/tasks/nfr-assess.md +0 -343
  428. package/bmad-core/tasks/qa-gate.md +0 -159
  429. package/bmad-core/tasks/review-story.md +0 -314
  430. package/bmad-core/tasks/risk-profile.md +0 -353
  431. package/bmad-core/tasks/shard-doc.md +0 -185
  432. package/bmad-core/tasks/test-design.md +0 -174
  433. package/bmad-core/tasks/trace-requirements.md +0 -264
  434. package/bmad-core/tasks/validate-next-story.md +0 -134
  435. package/bmad-core/templates/architecture-tmpl.yaml +0 -650
  436. package/bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
  437. package/bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -476
  438. package/bmad-core/templates/brownfield-prd-tmpl.yaml +0 -280
  439. package/bmad-core/templates/competitor-analysis-tmpl.yaml +0 -306
  440. package/bmad-core/templates/front-end-architecture-tmpl.yaml +0 -218
  441. package/bmad-core/templates/front-end-spec-tmpl.yaml +0 -349
  442. package/bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -823
  443. package/bmad-core/templates/market-research-tmpl.yaml +0 -252
  444. package/bmad-core/templates/prd-tmpl.yaml +0 -202
  445. package/bmad-core/templates/project-brief-tmpl.yaml +0 -221
  446. package/bmad-core/templates/qa-gate-tmpl.yaml +0 -102
  447. package/bmad-core/templates/story-tmpl.yaml +0 -137
  448. package/bmad-core/workflows/brownfield-fullstack.yaml +0 -297
  449. package/bmad-core/workflows/brownfield-service.yaml +0 -187
  450. package/bmad-core/workflows/brownfield-ui.yaml +0 -197
  451. package/bmad-core/workflows/greenfield-fullstack.yaml +0 -240
  452. package/bmad-core/workflows/greenfield-service.yaml +0 -206
  453. package/bmad-core/workflows/greenfield-ui.yaml +0 -235
  454. package/common/tasks/create-doc.md +0 -101
  455. package/common/tasks/execute-checklist.md +0 -86
  456. package/common/utils/bmad-doc-template.md +0 -325
  457. package/common/utils/workflow-management.md +0 -69
  458. package/dist/agents/analyst.txt +0 -2889
  459. package/dist/agents/architect.txt +0 -3552
  460. package/dist/agents/bmad-master.txt +0 -8769
  461. package/dist/agents/bmad-orchestrator.txt +0 -1513
  462. package/dist/agents/dev.txt +0 -414
  463. package/dist/agents/pm.txt +0 -2204
  464. package/dist/agents/po.txt +0 -1346
  465. package/dist/agents/qa.txt +0 -1987
  466. package/dist/agents/sm.txt +0 -658
  467. package/dist/agents/ux-expert.txt +0 -694
  468. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +0 -2371
  469. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +0 -1620
  470. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +0 -815
  471. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -10952
  472. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +0 -4012
  473. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +0 -3698
  474. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -450
  475. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +0 -973
  476. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -15376
  477. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +0 -2075
  478. package/dist/teams/team-all.txt +0 -12682
  479. package/dist/teams/team-fullstack.txt +0 -10421
  480. package/dist/teams/team-ide-minimal.txt +0 -5103
  481. package/dist/teams/team-no-ui.txt +0 -8980
  482. package/docs/GUIDING-PRINCIPLES.md +0 -91
  483. package/docs/core-architecture.md +0 -219
  484. package/docs/enhanced-ide-development-workflow.md +0 -248
  485. package/docs/expansion-packs.md +0 -280
  486. package/docs/how-to-contribute-with-pull-requests.md +0 -158
  487. package/docs/user-guide.md +0 -504
  488. package/docs/versioning-and-releases.md +0 -147
  489. package/docs/versions.md +0 -48
  490. package/docs/working-in-the-brownfield.md +0 -597
  491. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +0 -102
  492. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash copy.txt +0 -13
  493. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash.txt +0 -13
  494. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.2 Agent Development Kit Installation/1.2.2 - Basic Project Structure - txt.txt +0 -25
  495. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.1 - settings.py +0 -34
  496. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.2 - main.py - Base Application.py +0 -70
  497. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +0 -26
  498. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +0 -109
  499. package/expansion-packs/README.md +0 -3
  500. package/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +0 -13
  501. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +0 -71
  502. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +0 -78
  503. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +0 -64
  504. package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +0 -201
  505. package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +0 -160
  506. package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +0 -8
  507. package/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +0 -250
  508. package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +0 -647
  509. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +0 -110
  510. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +0 -216
  511. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +0 -290
  512. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +0 -613
  513. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +0 -356
  514. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +0 -343
  515. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +0 -253
  516. package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +0 -484
  517. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +0 -183
  518. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +0 -175
  519. package/expansion-packs/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +0 -14
  520. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.md +0 -80
  521. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.md +0 -77
  522. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +0 -78
  523. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.md +0 -65
  524. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +0 -391
  525. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +0 -203
  526. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +0 -201
  527. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +0 -124
  528. package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +0 -6
  529. package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +0 -769
  530. package/expansion-packs/bmad-2d-unity-game-dev/data/development-guidelines.md +0 -586
  531. package/expansion-packs/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +0 -110
  532. package/expansion-packs/bmad-2d-unity-game-dev/tasks/correct-course-game.md +0 -141
  533. package/expansion-packs/bmad-2d-unity-game-dev/tasks/create-game-story.md +0 -184
  534. package/expansion-packs/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +0 -290
  535. package/expansion-packs/bmad-2d-unity-game-dev/tasks/validate-game-story.md +0 -200
  536. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +0 -1030
  537. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +0 -356
  538. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +0 -705
  539. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +0 -256
  540. package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +0 -484
  541. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +0 -183
  542. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +0 -175
  543. package/expansion-packs/bmad-infrastructure-devops/README.md +0 -147
  544. package/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +0 -71
  545. package/expansion-packs/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +0 -484
  546. package/expansion-packs/bmad-infrastructure-devops/config.yaml +0 -9
  547. package/expansion-packs/bmad-infrastructure-devops/data/bmad-kb.md +0 -305
  548. package/expansion-packs/bmad-infrastructure-devops/tasks/review-infrastructure.md +0 -159
  549. package/expansion-packs/bmad-infrastructure-devops/tasks/validate-infrastructure.md +0 -153
  550. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +0 -424
  551. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +0 -629
  552. package/release_notes.md +0 -32
  553. package/tools/bmad-npx-wrapper.js +0 -39
  554. package/tools/builders/web-builder.js +0 -675
  555. package/tools/bump-all-versions.js +0 -115
  556. package/tools/bump-expansion-version.js +0 -90
  557. package/tools/cli.js +0 -152
  558. package/tools/installer/README.md +0 -8
  559. package/tools/installer/bin/bmad.js +0 -585
  560. package/tools/installer/config/ide-agent-config.yaml +0 -58
  561. package/tools/installer/config/install.config.yaml +0 -123
  562. package/tools/installer/lib/config-loader.js +0 -257
  563. package/tools/installer/lib/file-manager.js +0 -389
  564. package/tools/installer/lib/ide-base-setup.js +0 -228
  565. package/tools/installer/lib/ide-setup.js +0 -1441
  566. package/tools/installer/lib/installer.js +0 -1995
  567. package/tools/installer/lib/memory-profiler.js +0 -225
  568. package/tools/installer/lib/module-manager.js +0 -114
  569. package/tools/installer/lib/resource-locator.js +0 -308
  570. package/tools/installer/package.json +0 -44
  571. package/tools/lib/dependency-resolver.js +0 -175
  572. package/tools/lib/yaml-utils.js +0 -29
  573. package/tools/md-assets/web-agent-startup-instructions.md +0 -39
  574. package/tools/preview-release-notes.js +0 -66
  575. package/tools/shared/bannerArt.js +0 -105
  576. package/tools/sync-installer-version.js +0 -32
  577. package/tools/update-expansion-version.js +0 -53
  578. package/tools/upgraders/v3-to-v4-upgrader.js +0 -672
  579. package/tools/version-bump.js +0 -94
@@ -0,0 +1,721 @@
1
+ const fs = require('fs-extra');
2
+ const path = require('node:path');
3
+ const glob = require('glob');
4
+ const chalk = require('chalk');
5
+ const yaml = require('js-yaml');
6
+
7
+ /**
8
+ * Dependency Resolver for BMAD modules
9
+ * Handles cross-module dependencies and ensures all required files are included
10
+ */
11
+ class DependencyResolver {
12
+ constructor() {
13
+ this.dependencies = new Map();
14
+ this.resolvedFiles = new Set();
15
+ this.missingDependencies = new Set();
16
+ }
17
+
18
+ /**
19
+ * Resolve all dependencies for selected modules
20
+ * @param {string} bmadDir - BMAD installation directory
21
+ * @param {Array} selectedModules - Modules explicitly selected by user
22
+ * @param {Object} options - Resolution options
23
+ * @returns {Object} Resolution results with all required files
24
+ */
25
+ async resolve(bmadDir, selectedModules = [], options = {}) {
26
+ if (options.verbose) {
27
+ console.log(chalk.cyan('Resolving module dependencies...'));
28
+ }
29
+
30
+ // Always include core as base
31
+ const modulesToProcess = new Set(['core', ...selectedModules]);
32
+
33
+ // First pass: collect all explicitly selected files
34
+ const primaryFiles = await this.collectPrimaryFiles(bmadDir, modulesToProcess);
35
+
36
+ // Second pass: parse and resolve dependencies
37
+ const allDependencies = await this.parseDependencies(primaryFiles);
38
+
39
+ // Third pass: resolve dependency paths and collect files
40
+ const resolvedDeps = await this.resolveDependencyPaths(bmadDir, allDependencies);
41
+
42
+ // Fourth pass: check for transitive dependencies
43
+ const transitiveDeps = await this.resolveTransitiveDependencies(bmadDir, resolvedDeps);
44
+
45
+ // Combine all files
46
+ const allFiles = new Set([...primaryFiles.map((f) => f.path), ...resolvedDeps, ...transitiveDeps]);
47
+
48
+ // Organize by module
49
+ const organizedFiles = this.organizeByModule(bmadDir, allFiles);
50
+
51
+ // Report results (only in verbose mode)
52
+ if (options.verbose) {
53
+ this.reportResults(organizedFiles, selectedModules);
54
+ }
55
+
56
+ return {
57
+ primaryFiles,
58
+ dependencies: resolvedDeps,
59
+ transitiveDependencies: transitiveDeps,
60
+ allFiles: [...allFiles],
61
+ byModule: organizedFiles,
62
+ missing: [...this.missingDependencies],
63
+ };
64
+ }
65
+
66
+ /**
67
+ * Collect primary files from selected modules
68
+ */
69
+ async collectPrimaryFiles(bmadDir, modules) {
70
+ const files = [];
71
+
72
+ for (const module of modules) {
73
+ // Handle both source (src/) and installed (bmad/) directory structures
74
+ let moduleDir;
75
+
76
+ // Check if this is a source directory (has 'src' subdirectory)
77
+ const srcDir = path.join(bmadDir, 'src');
78
+ if (await fs.pathExists(srcDir)) {
79
+ // Source directory structure: src/core or src/modules/xxx
80
+ moduleDir = module === 'core' ? path.join(srcDir, 'core') : path.join(srcDir, 'modules', module);
81
+ } else {
82
+ // Installed directory structure: bmad/core or bmad/modules/xxx
83
+ moduleDir = module === 'core' ? path.join(bmadDir, 'core') : path.join(bmadDir, 'modules', module);
84
+ }
85
+
86
+ if (!(await fs.pathExists(moduleDir))) {
87
+ console.warn(chalk.yellow(`Module directory not found: ${moduleDir}`));
88
+ continue;
89
+ }
90
+
91
+ // Collect agents
92
+ const agentsDir = path.join(moduleDir, 'agents');
93
+ if (await fs.pathExists(agentsDir)) {
94
+ const agentFiles = await glob.glob('*.md', { cwd: agentsDir });
95
+ for (const file of agentFiles) {
96
+ const agentPath = path.join(agentsDir, file);
97
+
98
+ // Check for localskip attribute
99
+ const content = await fs.readFile(agentPath, 'utf8');
100
+ const hasLocalSkip = content.match(/<agent[^>]*\slocalskip="true"[^>]*>/);
101
+ if (hasLocalSkip) {
102
+ continue; // Skip agents marked for web-only
103
+ }
104
+
105
+ files.push({
106
+ path: agentPath,
107
+ type: 'agent',
108
+ module,
109
+ name: path.basename(file, '.md'),
110
+ });
111
+ }
112
+ }
113
+
114
+ // Collect tasks
115
+ const tasksDir = path.join(moduleDir, 'tasks');
116
+ if (await fs.pathExists(tasksDir)) {
117
+ const taskFiles = await glob.glob('*.md', { cwd: tasksDir });
118
+ for (const file of taskFiles) {
119
+ files.push({
120
+ path: path.join(tasksDir, file),
121
+ type: 'task',
122
+ module,
123
+ name: path.basename(file, '.md'),
124
+ });
125
+ }
126
+ }
127
+ }
128
+
129
+ return files;
130
+ }
131
+
132
+ /**
133
+ * Parse dependencies from file content
134
+ */
135
+ async parseDependencies(files) {
136
+ const allDeps = new Set();
137
+
138
+ for (const file of files) {
139
+ const content = await fs.readFile(file.path, 'utf8');
140
+
141
+ // Parse YAML frontmatter for explicit dependencies
142
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
143
+ if (frontmatterMatch) {
144
+ try {
145
+ // Pre-process to handle backticks in YAML values
146
+ let yamlContent = frontmatterMatch[1];
147
+ // Quote values with backticks to make them valid YAML
148
+ yamlContent = yamlContent.replaceAll(/: `([^`]+)`/g, ': "$1"');
149
+
150
+ const frontmatter = yaml.load(yamlContent);
151
+ if (frontmatter.dependencies) {
152
+ const deps = Array.isArray(frontmatter.dependencies) ? frontmatter.dependencies : [frontmatter.dependencies];
153
+
154
+ for (const dep of deps) {
155
+ allDeps.add({
156
+ from: file.path,
157
+ dependency: dep,
158
+ type: 'explicit',
159
+ });
160
+ }
161
+ }
162
+
163
+ // Check for template dependencies
164
+ if (frontmatter.template) {
165
+ const templates = Array.isArray(frontmatter.template) ? frontmatter.template : [frontmatter.template];
166
+ for (const template of templates) {
167
+ allDeps.add({
168
+ from: file.path,
169
+ dependency: template,
170
+ type: 'template',
171
+ });
172
+ }
173
+ }
174
+ } catch (error) {
175
+ console.warn(chalk.yellow(`Failed to parse frontmatter in ${file.name}: ${error.message}`));
176
+ }
177
+ }
178
+
179
+ // Parse content for command references (cross-module dependencies)
180
+ const commandRefs = this.parseCommandReferences(content);
181
+ for (const ref of commandRefs) {
182
+ allDeps.add({
183
+ from: file.path,
184
+ dependency: ref,
185
+ type: 'command',
186
+ });
187
+ }
188
+
189
+ // Parse for file path references
190
+ const fileRefs = this.parseFileReferences(content);
191
+ for (const ref of fileRefs) {
192
+ // Determine type based on path format
193
+ // Paths starting with bmad/ are absolute references to the bmad installation
194
+ const depType = ref.startsWith('bmad/') ? 'bmad-path' : 'file';
195
+ allDeps.add({
196
+ from: file.path,
197
+ dependency: ref,
198
+ type: depType,
199
+ });
200
+ }
201
+ }
202
+
203
+ return allDeps;
204
+ }
205
+
206
+ /**
207
+ * Parse command references from content
208
+ */
209
+ parseCommandReferences(content) {
210
+ const refs = new Set();
211
+
212
+ // Match @task-{name} or @agent-{name} or @{module}-{type}-{name}
213
+ const commandPattern = /@(task-|agent-|bmad-)([a-z0-9-]+)/g;
214
+ let match;
215
+
216
+ while ((match = commandPattern.exec(content)) !== null) {
217
+ refs.add(match[0]);
218
+ }
219
+
220
+ // Match file paths like bmad/core/agents/analyst
221
+ const pathPattern = /bmad\/(core|bmm|cis)\/(agents|tasks)\/([a-z0-9-]+)/g;
222
+
223
+ while ((match = pathPattern.exec(content)) !== null) {
224
+ refs.add(match[0]);
225
+ }
226
+
227
+ return [...refs];
228
+ }
229
+
230
+ /**
231
+ * Parse file path references from content
232
+ */
233
+ parseFileReferences(content) {
234
+ const refs = new Set();
235
+
236
+ // Match relative paths like ../templates/file.yaml or ./data/file.md
237
+ const relativePattern = /['"](\.\.?\/[^'"]+\.(md|yaml|yml|xml|json|txt|csv))['"]/g;
238
+ let match;
239
+
240
+ while ((match = relativePattern.exec(content)) !== null) {
241
+ refs.add(match[1]);
242
+ }
243
+
244
+ // Parse exec attributes in command tags
245
+ const execPattern = /exec="([^"]+)"/g;
246
+ while ((match = execPattern.exec(content)) !== null) {
247
+ let execPath = match[1];
248
+ if (execPath && execPath !== '*') {
249
+ // Remove {project-root} prefix to get the actual path
250
+ // Usage is like {project-root}/bmad/core/tasks/foo.md
251
+ if (execPath.includes('{project-root}')) {
252
+ execPath = execPath.replace('{project-root}', '');
253
+ }
254
+ refs.add(execPath);
255
+ }
256
+ }
257
+
258
+ // Parse tmpl attributes in command tags
259
+ const tmplPattern = /tmpl="([^"]+)"/g;
260
+ while ((match = tmplPattern.exec(content)) !== null) {
261
+ let tmplPath = match[1];
262
+ if (tmplPath && tmplPath !== '*') {
263
+ // Remove {project-root} prefix to get the actual path
264
+ // Usage is like {project-root}/bmad/core/tasks/foo.md
265
+ if (tmplPath.includes('{project-root}')) {
266
+ tmplPath = tmplPath.replace('{project-root}', '');
267
+ }
268
+ refs.add(tmplPath);
269
+ }
270
+ }
271
+
272
+ return [...refs];
273
+ }
274
+
275
+ /**
276
+ * Resolve dependency paths to actual files
277
+ */
278
+ async resolveDependencyPaths(bmadDir, dependencies) {
279
+ const resolved = new Set();
280
+
281
+ for (const dep of dependencies) {
282
+ const resolvedPaths = await this.resolveSingleDependency(bmadDir, dep);
283
+ for (const path of resolvedPaths) {
284
+ resolved.add(path);
285
+ }
286
+ }
287
+
288
+ return resolved;
289
+ }
290
+
291
+ /**
292
+ * Resolve a single dependency to file paths
293
+ */
294
+ async resolveSingleDependency(bmadDir, dep) {
295
+ const paths = [];
296
+
297
+ switch (dep.type) {
298
+ case 'explicit':
299
+ case 'file': {
300
+ let depPath = dep.dependency;
301
+
302
+ // Handle {project-root} prefix if present
303
+ if (depPath.includes('{project-root}')) {
304
+ // Remove {project-root} and resolve as bmad path
305
+ depPath = depPath.replace('{project-root}', '');
306
+
307
+ if (depPath.startsWith('bmad/')) {
308
+ const bmadPath = depPath.replace(/^bmad\//, '');
309
+
310
+ // Handle glob patterns
311
+ if (depPath.includes('*')) {
312
+ // Extract the base path and pattern
313
+ const pathParts = bmadPath.split('/');
314
+ const module = pathParts[0];
315
+ const filePattern = pathParts.at(-1);
316
+ const middlePath = pathParts.slice(1, -1).join('/');
317
+
318
+ let basePath;
319
+ if (module === 'core') {
320
+ basePath = path.join(bmadDir, 'core', middlePath);
321
+ } else {
322
+ basePath = path.join(bmadDir, 'modules', module, middlePath);
323
+ }
324
+
325
+ if (await fs.pathExists(basePath)) {
326
+ const files = await glob.glob(filePattern, { cwd: basePath });
327
+ for (const file of files) {
328
+ paths.push(path.join(basePath, file));
329
+ }
330
+ }
331
+ } else {
332
+ // Direct path
333
+ if (bmadPath.startsWith('core/')) {
334
+ const corePath = path.join(bmadDir, bmadPath);
335
+ if (await fs.pathExists(corePath)) {
336
+ paths.push(corePath);
337
+ }
338
+ } else {
339
+ const parts = bmadPath.split('/');
340
+ const module = parts[0];
341
+ const rest = parts.slice(1).join('/');
342
+ const modulePath = path.join(bmadDir, 'modules', module, rest);
343
+
344
+ if (await fs.pathExists(modulePath)) {
345
+ paths.push(modulePath);
346
+ }
347
+ }
348
+ }
349
+ }
350
+ } else {
351
+ // Regular relative path handling
352
+ const sourceDir = path.dirname(dep.from);
353
+
354
+ // Handle glob patterns
355
+ if (depPath.includes('*')) {
356
+ const basePath = path.resolve(sourceDir, path.dirname(depPath));
357
+ const pattern = path.basename(depPath);
358
+
359
+ if (await fs.pathExists(basePath)) {
360
+ const files = await glob.glob(pattern, { cwd: basePath });
361
+ for (const file of files) {
362
+ paths.push(path.join(basePath, file));
363
+ }
364
+ }
365
+ } else {
366
+ // Direct file reference
367
+ const fullPath = path.resolve(sourceDir, depPath);
368
+ if (await fs.pathExists(fullPath)) {
369
+ paths.push(fullPath);
370
+ } else {
371
+ this.missingDependencies.add(`${depPath} (referenced by ${path.basename(dep.from)})`);
372
+ }
373
+ }
374
+ }
375
+
376
+ break;
377
+ }
378
+ case 'command': {
379
+ // Resolve command references to actual files
380
+ const commandPath = await this.resolveCommandToPath(bmadDir, dep.dependency);
381
+ if (commandPath) {
382
+ paths.push(commandPath);
383
+ }
384
+
385
+ break;
386
+ }
387
+ case 'bmad-path': {
388
+ // Resolve bmad/ paths (from {project-root}/bmad/... references)
389
+ // These are paths relative to the src directory structure
390
+ const bmadPath = dep.dependency.replace(/^bmad\//, '');
391
+
392
+ // Try to resolve as if it's in src structure
393
+ // bmad/core/tasks/foo.md -> src/core/tasks/foo.md
394
+ // bmad/bmm/tasks/bar.md -> src/modules/bmm/tasks/bar.md
395
+
396
+ if (bmadPath.startsWith('core/')) {
397
+ const corePath = path.join(bmadDir, bmadPath);
398
+ if (await fs.pathExists(corePath)) {
399
+ paths.push(corePath);
400
+ } else {
401
+ // Not found, but don't report as missing since it might be installed later
402
+ }
403
+ } else {
404
+ // It's a module path like bmm/tasks/foo.md or cis/agents/bar.md
405
+ const parts = bmadPath.split('/');
406
+ const module = parts[0];
407
+ const rest = parts.slice(1).join('/');
408
+ const modulePath = path.join(bmadDir, 'modules', module, rest);
409
+
410
+ if (await fs.pathExists(modulePath)) {
411
+ paths.push(modulePath);
412
+ } else {
413
+ // Not found, but don't report as missing since it might be installed later
414
+ }
415
+ }
416
+
417
+ break;
418
+ }
419
+ case 'template': {
420
+ // Resolve template references
421
+ let templateDep = dep.dependency;
422
+
423
+ // Handle {project-root} prefix if present
424
+ if (templateDep.includes('{project-root}')) {
425
+ // Remove {project-root} and treat as bmad-path
426
+ templateDep = templateDep.replace('{project-root}', '');
427
+
428
+ // Now resolve as a bmad path
429
+ if (templateDep.startsWith('bmad/')) {
430
+ const bmadPath = templateDep.replace(/^bmad\//, '');
431
+
432
+ if (bmadPath.startsWith('core/')) {
433
+ const corePath = path.join(bmadDir, bmadPath);
434
+ if (await fs.pathExists(corePath)) {
435
+ paths.push(corePath);
436
+ }
437
+ } else {
438
+ // Module path like cis/templates/brainstorm.md
439
+ const parts = bmadPath.split('/');
440
+ const module = parts[0];
441
+ const rest = parts.slice(1).join('/');
442
+ const modulePath = path.join(bmadDir, 'modules', module, rest);
443
+
444
+ if (await fs.pathExists(modulePath)) {
445
+ paths.push(modulePath);
446
+ }
447
+ }
448
+ }
449
+ } else {
450
+ // Regular relative template path
451
+ const sourceDir = path.dirname(dep.from);
452
+ const templatePath = path.resolve(sourceDir, templateDep);
453
+
454
+ if (await fs.pathExists(templatePath)) {
455
+ paths.push(templatePath);
456
+ } else {
457
+ this.missingDependencies.add(`Template: ${dep.dependency}`);
458
+ }
459
+ }
460
+
461
+ break;
462
+ }
463
+ // No default
464
+ }
465
+
466
+ return paths;
467
+ }
468
+
469
+ /**
470
+ * Resolve command reference to file path
471
+ */
472
+ async resolveCommandToPath(bmadDir, command) {
473
+ // Parse command format: @task-name or @agent-name or bmad/module/type/name
474
+
475
+ if (command.startsWith('@task-')) {
476
+ const taskName = command.slice(6);
477
+ // Search all modules for this task
478
+ for (const module of ['core', 'bmm', 'cis']) {
479
+ const taskPath =
480
+ module === 'core'
481
+ ? path.join(bmadDir, 'core', 'tasks', `${taskName}.md`)
482
+ : path.join(bmadDir, 'modules', module, 'tasks', `${taskName}.md`);
483
+ if (await fs.pathExists(taskPath)) {
484
+ return taskPath;
485
+ }
486
+ }
487
+ } else if (command.startsWith('@agent-')) {
488
+ const agentName = command.slice(7);
489
+ // Search all modules for this agent
490
+ for (const module of ['core', 'bmm', 'cis']) {
491
+ const agentPath =
492
+ module === 'core'
493
+ ? path.join(bmadDir, 'core', 'agents', `${agentName}.md`)
494
+ : path.join(bmadDir, 'modules', module, 'agents', `${agentName}.md`);
495
+ if (await fs.pathExists(agentPath)) {
496
+ return agentPath;
497
+ }
498
+ }
499
+ } else if (command.startsWith('bmad/')) {
500
+ // Direct path reference
501
+ const parts = command.split('/');
502
+ if (parts.length >= 4) {
503
+ const [, module, type, ...nameParts] = parts;
504
+ const name = nameParts.join('/'); // Handle nested paths
505
+
506
+ // Check if name already has extension
507
+ const fileName = name.endsWith('.md') ? name : `${name}.md`;
508
+
509
+ const filePath =
510
+ module === 'core' ? path.join(bmadDir, 'core', type, fileName) : path.join(bmadDir, 'modules', module, type, fileName);
511
+ if (await fs.pathExists(filePath)) {
512
+ return filePath;
513
+ }
514
+ }
515
+ }
516
+
517
+ // Don't report as missing if it's a self-reference within the module being installed
518
+ if (!command.includes('cis') || command.includes('brain')) {
519
+ // Only report missing if it's a true external dependency
520
+ // this.missingDependencies.add(`Command: ${command}`);
521
+ }
522
+ return null;
523
+ }
524
+
525
+ /**
526
+ * Resolve transitive dependencies (dependencies of dependencies)
527
+ */
528
+ async resolveTransitiveDependencies(bmadDir, directDeps) {
529
+ const transitive = new Set();
530
+ const processed = new Set();
531
+
532
+ // Process each direct dependency
533
+ for (const depPath of directDeps) {
534
+ if (processed.has(depPath)) continue;
535
+ processed.add(depPath);
536
+
537
+ // Only process markdown and YAML files for transitive deps
538
+ if ((depPath.endsWith('.md') || depPath.endsWith('.yaml') || depPath.endsWith('.yml')) && (await fs.pathExists(depPath))) {
539
+ const content = await fs.readFile(depPath, 'utf8');
540
+ const subDeps = await this.parseDependencies([
541
+ {
542
+ path: depPath,
543
+ type: 'dependency',
544
+ module: this.getModuleFromPath(bmadDir, depPath),
545
+ name: path.basename(depPath),
546
+ },
547
+ ]);
548
+
549
+ const resolvedSubDeps = await this.resolveDependencyPaths(bmadDir, subDeps);
550
+ for (const subDep of resolvedSubDeps) {
551
+ if (!directDeps.has(subDep)) {
552
+ transitive.add(subDep);
553
+ }
554
+ }
555
+ }
556
+ }
557
+
558
+ return transitive;
559
+ }
560
+
561
+ /**
562
+ * Get module name from file path
563
+ */
564
+ getModuleFromPath(bmadDir, filePath) {
565
+ const relative = path.relative(bmadDir, filePath);
566
+ const parts = relative.split(path.sep);
567
+
568
+ // Handle source directory structure (src/core or src/modules/xxx)
569
+ if (parts[0] === 'src') {
570
+ if (parts[1] === 'core') {
571
+ return 'core';
572
+ } else if (parts[1] === 'modules' && parts.length > 2) {
573
+ return parts[2];
574
+ }
575
+ }
576
+
577
+ // Check if it's in modules directory (installed structure)
578
+ if (parts[0] === 'modules' && parts.length > 1) {
579
+ return parts[1];
580
+ }
581
+
582
+ // Otherwise return the first part (core, etc.)
583
+ // But don't return 'src' as a module name
584
+ if (parts[0] === 'src') {
585
+ return 'unknown';
586
+ }
587
+ return parts[0] || 'unknown';
588
+ }
589
+
590
+ /**
591
+ * Organize files by module
592
+ */
593
+ organizeByModule(bmadDir, files) {
594
+ const organized = {};
595
+
596
+ for (const file of files) {
597
+ const module = this.getModuleFromPath(bmadDir, file);
598
+ if (!organized[module]) {
599
+ organized[module] = {
600
+ agents: [],
601
+ tasks: [],
602
+ templates: [],
603
+ data: [],
604
+ other: [],
605
+ };
606
+ }
607
+
608
+ // Get relative path correctly based on module structure
609
+ let moduleBase;
610
+
611
+ // Check if file is in source directory structure
612
+ if (file.includes('/src/core/') || file.includes('/src/modules/')) {
613
+ moduleBase = module === 'core' ? path.join(bmadDir, 'src', 'core') : path.join(bmadDir, 'src', 'modules', module);
614
+ } else {
615
+ // Installed structure
616
+ moduleBase = module === 'core' ? path.join(bmadDir, 'core') : path.join(bmadDir, 'modules', module);
617
+ }
618
+
619
+ const relative = path.relative(moduleBase, file);
620
+
621
+ // Check file path for categorization
622
+ // Brain-tech files are data, not tasks (even though they're in tasks/brain-tech/)
623
+ if (file.includes('/brain-tech/')) {
624
+ organized[module].data.push(file);
625
+ } else if (relative.startsWith('agents/') || file.includes('/agents/')) {
626
+ organized[module].agents.push(file);
627
+ } else if (relative.startsWith('tasks/') || file.includes('/tasks/')) {
628
+ organized[module].tasks.push(file);
629
+ } else if (relative.includes('template') || file.includes('/templates/')) {
630
+ organized[module].templates.push(file);
631
+ } else if (relative.includes('data/')) {
632
+ organized[module].data.push(file);
633
+ } else {
634
+ organized[module].other.push(file);
635
+ }
636
+ }
637
+
638
+ return organized;
639
+ }
640
+
641
+ /**
642
+ * Report resolution results
643
+ */
644
+ reportResults(organized, selectedModules) {
645
+ console.log(chalk.green('\n✓ Dependency resolution complete'));
646
+
647
+ for (const [module, files] of Object.entries(organized)) {
648
+ const isSelected = selectedModules.includes(module) || module === 'core';
649
+ const totalFiles = files.agents.length + files.tasks.length + files.templates.length + files.data.length + files.other.length;
650
+
651
+ if (totalFiles > 0) {
652
+ console.log(chalk.cyan(`\n ${module.toUpperCase()} module:`));
653
+ console.log(chalk.dim(` Status: ${isSelected ? 'Selected' : 'Dependencies only'}`));
654
+
655
+ if (files.agents.length > 0) {
656
+ console.log(chalk.dim(` Agents: ${files.agents.length}`));
657
+ }
658
+ if (files.tasks.length > 0) {
659
+ console.log(chalk.dim(` Tasks: ${files.tasks.length}`));
660
+ }
661
+ if (files.templates.length > 0) {
662
+ console.log(chalk.dim(` Templates: ${files.templates.length}`));
663
+ }
664
+ if (files.data.length > 0) {
665
+ console.log(chalk.dim(` Data files: ${files.data.length}`));
666
+ }
667
+ if (files.other.length > 0) {
668
+ console.log(chalk.dim(` Other files: ${files.other.length}`));
669
+ }
670
+ }
671
+ }
672
+
673
+ if (this.missingDependencies.size > 0) {
674
+ console.log(chalk.yellow('\n ⚠ Missing dependencies:'));
675
+ for (const missing of this.missingDependencies) {
676
+ console.log(chalk.yellow(` - ${missing}`));
677
+ }
678
+ }
679
+ }
680
+
681
+ /**
682
+ * Create a bundle for web deployment
683
+ * @param {Object} resolution - Resolution results from resolve()
684
+ * @returns {Object} Bundle data ready for web
685
+ */
686
+ async createWebBundle(resolution) {
687
+ const bundle = {
688
+ metadata: {
689
+ created: new Date().toISOString(),
690
+ modules: Object.keys(resolution.byModule),
691
+ totalFiles: resolution.allFiles.length,
692
+ },
693
+ agents: {},
694
+ tasks: {},
695
+ templates: {},
696
+ data: {},
697
+ };
698
+
699
+ // Bundle all files by type
700
+ for (const filePath of resolution.allFiles) {
701
+ if (!(await fs.pathExists(filePath))) continue;
702
+
703
+ const content = await fs.readFile(filePath, 'utf8');
704
+ const relative = path.relative(path.dirname(resolution.primaryFiles[0]?.path || '.'), filePath);
705
+
706
+ if (filePath.includes('/agents/')) {
707
+ bundle.agents[relative] = content;
708
+ } else if (filePath.includes('/tasks/')) {
709
+ bundle.tasks[relative] = content;
710
+ } else if (filePath.includes('template')) {
711
+ bundle.templates[relative] = content;
712
+ } else {
713
+ bundle.data[relative] = content;
714
+ }
715
+ }
716
+
717
+ return bundle;
718
+ }
719
+ }
720
+
721
+ module.exports = { DependencyResolver };