appiq-solution 1.4.8 → 1.5.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 (738) hide show
  1. package/README.md +172 -48
  2. package/bmad-core/agent-teams/team-fullstack.yaml +1 -11
  3. package/bmad-core/agents/analyst.md +3 -7
  4. package/bmad-core/agents/architect.md +0 -6
  5. package/bmad-core/agents/dev.md +5 -24
  6. package/bmad-core/agents/pm.md +3 -7
  7. package/bmad-core/agents/qa.md +0 -17
  8. package/bmad-core/agents/sm.md +3 -8
  9. package/bmad-core/agents/ux-expert.md +3 -8
  10. package/bmad-core/data/technical-preferences.md +1 -147
  11. package/bmad-core/templates/fullstack-architecture-tmpl.yaml +5 -12
  12. package/bmad-core/workflows/brownfield-fullstack.yaml +1 -15
  13. package/bmad-core/workflows/greenfield-fullstack.yaml +5 -49
  14. package/bmad-core/working-in-the-brownfield.md +10 -19
  15. package/dist/agents/bmad-orchestrator.txt +0 -111
  16. package/dist/agents/pm.txt +2 -0
  17. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -111
  18. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -111
  19. package/dist/teams/team-all.txt +2 -111
  20. package/dist/teams/team-fullstack.txt +2 -111
  21. package/dist/teams/team-ide-minimal.txt +0 -111
  22. package/dist/teams/team-no-ui.txt +2 -111
  23. package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/config.yaml +1 -0
  24. package/package.json +60 -18
  25. package/tools/cli.js +3 -3
  26. package/tools/installer/lib/ide-setup.js +11 -0
  27. package/tools/installer/package-lock.json +2 -2
  28. package/#NEW APP PROMPT/ARCHITECTURE.md +0 -279
  29. package/#NEW APP PROMPT/ARCHITECTURE_UNIFIED.md +0 -414
  30. package/#NEW APP PROMPT/accesibility_prompt.md +0 -103
  31. package/#NEW APP PROMPT/clean-code.mdc +0 -55
  32. package/#NEW APP PROMPT/codequality.mdc +0 -47
  33. package/#NEW APP PROMPT/flutter-ai-rules/LICENSE +0 -21
  34. package/#NEW APP PROMPT/flutter-ai-rules/README.md +0 -104
  35. package/#NEW APP PROMPT/flutter-ai-rules/combined/README.md +0 -25
  36. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart.md +0 -192
  37. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart__under_6K.md +0 -99
  38. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_bloc_mocktail.md +0 -308
  39. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_bloc_mocktail__under_6K.md +0 -87
  40. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_change_notifier.md +0 -254
  41. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_change_notifier__under_6K.md +0 -98
  42. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_provider.md +0 -261
  43. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_provider__under_6K.md +0 -105
  44. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_riverpod_mockito.md +0 -371
  45. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_riverpod_mockito__under_6K.md +0 -92
  46. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_bloc.md +0 -287
  47. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_bloc__under_6K.md +0 -68
  48. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_riverpod.md +0 -375
  49. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_riverpod__under_6K.md +0 -106
  50. package/#NEW APP PROMPT/flutter-ai-rules/media/flutter_ai_rules.png +0 -0
  51. package/#NEW APP PROMPT/flutter-ai-rules/media/mocktail_md_01.png +0 -0
  52. package/#NEW APP PROMPT/flutter-ai-rules/media/mocktail_md_02.png +0 -0
  53. package/#NEW APP PROMPT/flutter-ai-rules/rules/bloc.md +0 -94
  54. package/#NEW APP PROMPT/flutter-ai-rules/rules/dart_3_updates.md +0 -93
  55. package/#NEW APP PROMPT/flutter-ai-rules/rules/effective_dart.md +0 -105
  56. package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_app_architecture.md +0 -57
  57. package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_change_notifier.md +0 -62
  58. package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_errors.md +0 -11
  59. package/#NEW APP PROMPT/flutter-ai-rules/rules/mockito.md +0 -31
  60. package/#NEW APP PROMPT/flutter-ai-rules/rules/mocktail.md +0 -24
  61. package/#NEW APP PROMPT/flutter-ai-rules/rules/provider.md +0 -69
  62. package/#NEW APP PROMPT/flutter-ai-rules/rules/riverpod.md +0 -188
  63. package/#NEW APP PROMPT/generate ssh.md +0 -4
  64. package/#NEW APP PROMPT/project_ai_prompt.md +0 -544
  65. package/#Tools/APPIQ-METHOD/.bmad-config.json +0 -13
  66. package/#Tools/APPIQ-METHOD/.cursor/commands/analyze.md +0 -27
  67. package/#Tools/APPIQ-METHOD/.cursor/commands/appiq.md +0 -27
  68. package/#Tools/APPIQ-METHOD/.cursor/commands/help.md +0 -27
  69. package/#Tools/APPIQ-METHOD/.cursor/commands/story.md +0 -27
  70. package/#Tools/APPIQ-METHOD/DEVELOPMENT_GUIDE.md +0 -855
  71. package/#Tools/APPIQ-METHOD/NPM-README.md +0 -138
  72. package/#Tools/APPIQ-METHOD/README.md +0 -107
  73. package/#Tools/APPIQ-METHOD/SMART_WORKFLOW_GUIDE.md +0 -401
  74. package/#Tools/APPIQ-METHOD/activate-appiq.js +0 -81
  75. package/#Tools/APPIQ-METHOD/appiq-solution/README.md +0 -226
  76. package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-all.yaml +0 -14
  77. package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-flutter-mobile.yaml +0 -114
  78. package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-fullstack.yaml +0 -28
  79. package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-ide-minimal.yaml +0 -10
  80. package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-no-ui.yaml +0 -13
  81. package/#Tools/APPIQ-METHOD/bmad-core/agents/analyst.md +0 -85
  82. package/#Tools/APPIQ-METHOD/bmad-core/agents/architect.md +0 -90
  83. package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-master.md +0 -108
  84. package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-orchestrator.md +0 -150
  85. package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-smart-launcher.md +0 -170
  86. package/#Tools/APPIQ-METHOD/bmad-core/agents/dev.md +0 -95
  87. package/#Tools/APPIQ-METHOD/bmad-core/agents/init-flow-po.md +0 -143
  88. package/#Tools/APPIQ-METHOD/bmad-core/agents/pm.md +0 -85
  89. package/#Tools/APPIQ-METHOD/bmad-core/agents/po.md +0 -76
  90. package/#Tools/APPIQ-METHOD/bmad-core/agents/qa.md +0 -86
  91. package/#Tools/APPIQ-METHOD/bmad-core/agents/sm.md +0 -67
  92. package/#Tools/APPIQ-METHOD/bmad-core/agents/ux-expert.md +0 -71
  93. package/#Tools/APPIQ-METHOD/bmad-core/bmad-core/user-guide.md +0 -0
  94. package/#Tools/APPIQ-METHOD/bmad-core/checklists/architect-checklist.md +0 -443
  95. package/#Tools/APPIQ-METHOD/bmad-core/checklists/change-checklist.md +0 -182
  96. package/#Tools/APPIQ-METHOD/bmad-core/checklists/pm-checklist.md +0 -375
  97. package/#Tools/APPIQ-METHOD/bmad-core/checklists/po-master-checklist.md +0 -441
  98. package/#Tools/APPIQ-METHOD/bmad-core/checklists/security-validation-checklist.md +0 -332
  99. package/#Tools/APPIQ-METHOD/bmad-core/checklists/story-dod-checklist.md +0 -101
  100. package/#Tools/APPIQ-METHOD/bmad-core/checklists/story-draft-checklist.md +0 -156
  101. package/#Tools/APPIQ-METHOD/bmad-core/core-config.yaml +0 -20
  102. package/#Tools/APPIQ-METHOD/bmad-core/core-config.yaml.bak +0 -20
  103. package/#Tools/APPIQ-METHOD/bmad-core/data/backend-services-integration.md +0 -686
  104. package/#Tools/APPIQ-METHOD/bmad-core/data/bmad-kb.md +0 -803
  105. package/#Tools/APPIQ-METHOD/bmad-core/data/brainstorming-techniques.md +0 -36
  106. package/#Tools/APPIQ-METHOD/bmad-core/data/elicitation-methods.md +0 -134
  107. package/#Tools/APPIQ-METHOD/bmad-core/data/shadcn-ui-integration.md +0 -388
  108. package/#Tools/APPIQ-METHOD/bmad-core/data/technical-preferences.md +0 -149
  109. package/#Tools/APPIQ-METHOD/bmad-core/enhanced-ide-development-workflow.md +0 -43
  110. package/#Tools/APPIQ-METHOD/bmad-core/tasks/advanced-elicitation.md +0 -117
  111. package/#Tools/APPIQ-METHOD/bmad-core/tasks/brownfield-create-epic.md +0 -160
  112. package/#Tools/APPIQ-METHOD/bmad-core/tasks/brownfield-create-story.md +0 -147
  113. package/#Tools/APPIQ-METHOD/bmad-core/tasks/correct-course.md +0 -70
  114. package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-brownfield-story.md +0 -304
  115. package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-deep-research-prompt.md +0 -289
  116. package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-flutter-story.md +0 -197
  117. package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-next-story.md +0 -112
  118. package/#Tools/APPIQ-METHOD/bmad-core/tasks/document-project.md +0 -341
  119. package/#Tools/APPIQ-METHOD/bmad-core/tasks/facilitate-brainstorming-session.md +0 -136
  120. package/#Tools/APPIQ-METHOD/bmad-core/tasks/generate-ai-frontend-prompt.md +0 -51
  121. package/#Tools/APPIQ-METHOD/bmad-core/tasks/index-docs.md +0 -179
  122. package/#Tools/APPIQ-METHOD/bmad-core/tasks/intelligent-epic-creation.md +0 -234
  123. package/#Tools/APPIQ-METHOD/bmad-core/tasks/kb-mode-interaction.md +0 -75
  124. package/#Tools/APPIQ-METHOD/bmad-core/tasks/review-story.md +0 -145
  125. package/#Tools/APPIQ-METHOD/bmad-core/tasks/shard-doc.md +0 -187
  126. package/#Tools/APPIQ-METHOD/bmad-core/tasks/smart-project-analysis.md +0 -289
  127. package/#Tools/APPIQ-METHOD/bmad-core/tasks/validate-next-story.md +0 -134
  128. package/#Tools/APPIQ-METHOD/bmad-core/templates/architecture-tmpl.yaml +0 -650
  129. package/#Tools/APPIQ-METHOD/bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
  130. package/#Tools/APPIQ-METHOD/bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -476
  131. package/#Tools/APPIQ-METHOD/bmad-core/templates/brownfield-prd-tmpl.yaml +0 -280
  132. package/#Tools/APPIQ-METHOD/bmad-core/templates/competitor-analysis-tmpl.yaml +0 -293
  133. package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-mobile-prd-tmpl.yaml +0 -330
  134. package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-story-tmpl.yaml +0 -376
  135. package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-ui-spec-tmpl.yaml +0 -415
  136. package/#Tools/APPIQ-METHOD/bmad-core/templates/front-end-architecture-tmpl.yaml +0 -206
  137. package/#Tools/APPIQ-METHOD/bmad-core/templates/front-end-spec-tmpl.yaml +0 -349
  138. package/#Tools/APPIQ-METHOD/bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -812
  139. package/#Tools/APPIQ-METHOD/bmad-core/templates/market-research-tmpl.yaml +0 -252
  140. package/#Tools/APPIQ-METHOD/bmad-core/templates/prd-tmpl.yaml +0 -202
  141. package/#Tools/APPIQ-METHOD/bmad-core/templates/project-brief-tmpl.yaml +0 -221
  142. package/#Tools/APPIQ-METHOD/bmad-core/templates/story-tmpl.yaml +0 -137
  143. package/#Tools/APPIQ-METHOD/bmad-core/user-guide.md +0 -251
  144. package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-fullstack.yaml +0 -311
  145. package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-service.yaml +0 -187
  146. package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-ui.yaml +0 -197
  147. package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-fullstack.yaml +0 -284
  148. package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-service.yaml +0 -206
  149. package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-ui.yaml +0 -235
  150. package/#Tools/APPIQ-METHOD/bmad-core/working-in-the-brownfield.md +0 -373
  151. package/#Tools/APPIQ-METHOD/commands/README.md +0 -28
  152. package/#Tools/APPIQ-METHOD/commands/analyze.md +0 -27
  153. package/#Tools/APPIQ-METHOD/commands/appiq.md +0 -27
  154. package/#Tools/APPIQ-METHOD/commands/help.md +0 -27
  155. package/#Tools/APPIQ-METHOD/commands/story.md +0 -27
  156. package/#Tools/APPIQ-METHOD/dist/agents/analyst.txt +0 -2882
  157. package/#Tools/APPIQ-METHOD/dist/agents/architect.txt +0 -3543
  158. package/#Tools/APPIQ-METHOD/dist/agents/bmad-master.txt +0 -8756
  159. package/#Tools/APPIQ-METHOD/dist/agents/bmad-orchestrator.txt +0 -1490
  160. package/#Tools/APPIQ-METHOD/dist/agents/dev.txt +0 -428
  161. package/#Tools/APPIQ-METHOD/dist/agents/pm.txt +0 -2229
  162. package/#Tools/APPIQ-METHOD/dist/agents/po.txt +0 -1364
  163. package/#Tools/APPIQ-METHOD/dist/agents/qa.txt +0 -386
  164. package/#Tools/APPIQ-METHOD/dist/agents/sm.txt +0 -668
  165. package/#Tools/APPIQ-METHOD/dist/agents/ux-expert.txt +0 -701
  166. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +0 -2408
  167. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +0 -1631
  168. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +0 -822
  169. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -10989
  170. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +0 -4047
  171. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +0 -3744
  172. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -465
  173. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +0 -990
  174. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -15467
  175. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +0 -2077
  176. package/#Tools/APPIQ-METHOD/dist/teams/team-all.txt +0 -11062
  177. package/#Tools/APPIQ-METHOD/dist/teams/team-fullstack.txt +0 -10392
  178. package/#Tools/APPIQ-METHOD/dist/teams/team-ide-minimal.txt +0 -3507
  179. package/#Tools/APPIQ-METHOD/dist/teams/team-no-ui.txt +0 -8951
  180. package/#Tools/APPIQ-METHOD/install-appiq.sh +0 -41
  181. package/#Tools/APPIQ-METHOD/package-lock.json +0 -631
  182. package/#Tools/APPIQ-METHOD/package.json +0 -44
  183. package/#Tools/APPIQ-METHOD/tasks/todo.md +0 -275
  184. package/#Tools/APPIQ-METHOD/tools/appiq-installer.js +0 -2711
  185. package/#Tools/APPIQ-METHOD/tools/bmad-npx-wrapper.js +0 -39
  186. package/#Tools/APPIQ-METHOD/tools/builders/web-builder.js +0 -681
  187. package/#Tools/APPIQ-METHOD/tools/bump-all-versions.js +0 -106
  188. package/#Tools/APPIQ-METHOD/tools/bump-expansion-version.js +0 -83
  189. package/#Tools/APPIQ-METHOD/tools/cli.js +0 -152
  190. package/#Tools/APPIQ-METHOD/tools/epic-solution-installer.js +0 -536
  191. package/#Tools/APPIQ-METHOD/tools/flattener/main.js +0 -570
  192. package/#Tools/APPIQ-METHOD/tools/installer/README.md +0 -8
  193. package/#Tools/APPIQ-METHOD/tools/installer/bin/bmad.js +0 -483
  194. package/#Tools/APPIQ-METHOD/tools/installer/config/ide-agent-config.yaml +0 -58
  195. package/#Tools/APPIQ-METHOD/tools/installer/config/install.config.yaml +0 -92
  196. package/#Tools/APPIQ-METHOD/tools/installer/lib/config-loader.js +0 -253
  197. package/#Tools/APPIQ-METHOD/tools/installer/lib/file-manager.js +0 -411
  198. package/#Tools/APPIQ-METHOD/tools/installer/lib/ide-base-setup.js +0 -227
  199. package/#Tools/APPIQ-METHOD/tools/installer/lib/ide-setup.js +0 -1096
  200. package/#Tools/APPIQ-METHOD/tools/installer/lib/installer.js +0 -1772
  201. package/#Tools/APPIQ-METHOD/tools/installer/lib/memory-profiler.js +0 -224
  202. package/#Tools/APPIQ-METHOD/tools/installer/lib/module-manager.js +0 -110
  203. package/#Tools/APPIQ-METHOD/tools/installer/lib/resource-locator.js +0 -310
  204. package/#Tools/APPIQ-METHOD/tools/installer/package-lock.json +0 -906
  205. package/#Tools/APPIQ-METHOD/tools/installer/package.json +0 -43
  206. package/#Tools/APPIQ-METHOD/tools/lib/dependency-resolver.js +0 -179
  207. package/#Tools/APPIQ-METHOD/tools/lib/yaml-utils.js +0 -29
  208. package/#Tools/APPIQ-METHOD/tools/md-assets/web-agent-startup-instructions.md +0 -39
  209. package/#Tools/APPIQ-METHOD/tools/semantic-release-sync-installer.js +0 -30
  210. package/#Tools/APPIQ-METHOD/tools/setup-ide-commands.js +0 -348
  211. package/#Tools/APPIQ-METHOD/tools/smart-installer.js +0 -592
  212. package/#Tools/APPIQ-METHOD/tools/sync-installer-version.js +0 -34
  213. package/#Tools/APPIQ-METHOD/tools/update-expansion-version.js +0 -54
  214. package/#Tools/APPIQ-METHOD/tools/upgraders/v3-to-v4-upgrader.js +0 -763
  215. package/#Tools/APPIQ-METHOD/tools/version-bump.js +0 -79
  216. package/#Tools/APPIQ-METHOD/tools/yaml-format.js +0 -240
  217. package/#Tools/SkyReels-V2/.pre-commit-config.yaml +0 -25
  218. package/#Tools/SkyReels-V2/LICENSE.txt +0 -38
  219. package/#Tools/SkyReels-V2/README.md +0 -766
  220. package/#Tools/SkyReels-V2/generate_video.py +0 -161
  221. package/#Tools/SkyReels-V2/generate_video_df.py +0 -220
  222. package/#Tools/SkyReels-V2/requirements.txt +0 -16
  223. package/#Tools/SkyReels-V2/skycaptioner_v1/README.md +0 -278
  224. package/#Tools/SkyReels-V2/skycaptioner_v1/examples/test.csv +0 -5
  225. package/#Tools/SkyReels-V2/skycaptioner_v1/examples/test_result.csv +0 -5
  226. package/#Tools/SkyReels-V2/skycaptioner_v1/infer_fusion_caption.sh +0 -9
  227. package/#Tools/SkyReels-V2/skycaptioner_v1/infer_struct_caption.sh +0 -8
  228. package/#Tools/SkyReels-V2/skycaptioner_v1/requirements.txt +0 -3
  229. package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/gradio_fusion_caption.py +0 -146
  230. package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/gradio_struct_caption.py +0 -92
  231. package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/utils.py +0 -19
  232. package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/vllm_fusion_caption.py +0 -256
  233. package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/vllm_struct_caption.py +0 -156
  234. package/#Tools/SkyReels-V2/skyreels_v2_infer/__init__.py +0 -1
  235. package/#Tools/SkyReels-V2/skyreels_v2_infer/distributed/__init__.py +0 -0
  236. package/#Tools/SkyReels-V2/skyreels_v2_infer/distributed/xdit_context_parallel.py +0 -286
  237. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/__init__.py +0 -69
  238. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/attention.py +0 -179
  239. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/clip.py +0 -525
  240. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/t5.py +0 -454
  241. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/tokenizers.py +0 -78
  242. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/transformer.py +0 -839
  243. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/vae.py +0 -639
  244. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/xlm_roberta.py +0 -165
  245. package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/__init__.py +0 -5
  246. package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/diffusion_forcing_pipeline.py +0 -659
  247. package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/image2video_pipeline.py +0 -156
  248. package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/prompt_enhancer.py +0 -65
  249. package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/text2video_pipeline.py +0 -110
  250. package/#Tools/SkyReels-V2/skyreels_v2_infer/scheduler/__init__.py +0 -0
  251. package/#Tools/SkyReels-V2/skyreels_v2_infer/scheduler/fm_solvers_unipc.py +0 -759
  252. package/#Tools/SuperClaude/.claude/commands/analyze.md +0 -36
  253. package/#Tools/SuperClaude/.claude/commands/build.md +0 -35
  254. package/#Tools/SuperClaude/.claude/commands/cleanup.md +0 -46
  255. package/#Tools/SuperClaude/.claude/commands/deploy.md +0 -55
  256. package/#Tools/SuperClaude/.claude/commands/design.md +0 -91
  257. package/#Tools/SuperClaude/.claude/commands/dev-setup.md +0 -37
  258. package/#Tools/SuperClaude/.claude/commands/document.md +0 -99
  259. package/#Tools/SuperClaude/.claude/commands/estimate.md +0 -69
  260. package/#Tools/SuperClaude/.claude/commands/explain.md +0 -85
  261. package/#Tools/SuperClaude/.claude/commands/git.md +0 -47
  262. package/#Tools/SuperClaude/.claude/commands/improve.md +0 -162
  263. package/#Tools/SuperClaude/.claude/commands/index.md +0 -159
  264. package/#Tools/SuperClaude/.claude/commands/load.md +0 -65
  265. package/#Tools/SuperClaude/.claude/commands/migrate.md +0 -76
  266. package/#Tools/SuperClaude/.claude/commands/scan.md +0 -163
  267. package/#Tools/SuperClaude/.claude/commands/shared/ambiguity-check.yml +0 -40
  268. package/#Tools/SuperClaude/.claude/commands/shared/audit.yml +0 -21
  269. package/#Tools/SuperClaude/.claude/commands/shared/checkpoint.yml +0 -28
  270. package/#Tools/SuperClaude/.claude/commands/shared/cleanup-patterns.yml +0 -107
  271. package/#Tools/SuperClaude/.claude/commands/shared/command-memory.yml +0 -52
  272. package/#Tools/SuperClaude/.claude/commands/shared/command-templates.yml +0 -167
  273. package/#Tools/SuperClaude/.claude/commands/shared/config-validator.yml +0 -206
  274. package/#Tools/SuperClaude/.claude/commands/shared/constants.yml +0 -311
  275. package/#Tools/SuperClaude/.claude/commands/shared/documentation-dirs.yml +0 -134
  276. package/#Tools/SuperClaude/.claude/commands/shared/error-handling.yml +0 -341
  277. package/#Tools/SuperClaude/.claude/commands/shared/evidence.yml +0 -75
  278. package/#Tools/SuperClaude/.claude/commands/shared/execution-lifecycle.yml +0 -277
  279. package/#Tools/SuperClaude/.claude/commands/shared/git-operations.yml +0 -217
  280. package/#Tools/SuperClaude/.claude/commands/shared/git-workflow.yml +0 -37
  281. package/#Tools/SuperClaude/.claude/commands/shared/implementation.yml +0 -199
  282. package/#Tools/SuperClaude/.claude/commands/shared/loading-config.yml +0 -73
  283. package/#Tools/SuperClaude/.claude/commands/shared/mcp-flags.yml +0 -109
  284. package/#Tools/SuperClaude/.claude/commands/shared/migration-report.md +0 -165
  285. package/#Tools/SuperClaude/.claude/commands/shared/patterns.yml +0 -155
  286. package/#Tools/SuperClaude/.claude/commands/shared/performance.yml +0 -317
  287. package/#Tools/SuperClaude/.claude/commands/shared/planning-mode.yml +0 -51
  288. package/#Tools/SuperClaude/.claude/commands/shared/research-first.yml +0 -278
  289. package/#Tools/SuperClaude/.claude/commands/shared/session-recovery.yml +0 -144
  290. package/#Tools/SuperClaude/.claude/commands/shared/severity-levels.yml +0 -252
  291. package/#Tools/SuperClaude/.claude/commands/shared/task-system.yml +0 -380
  292. package/#Tools/SuperClaude/.claude/commands/shared/task-ultracompressed.yml +0 -88
  293. package/#Tools/SuperClaude/.claude/commands/shared/templates/feature-template.md +0 -59
  294. package/#Tools/SuperClaude/.claude/commands/shared/templates/task-ultracompressed.md +0 -26
  295. package/#Tools/SuperClaude/.claude/commands/shared/thinking-modes.yml +0 -61
  296. package/#Tools/SuperClaude/.claude/commands/shared/ultracompressed.yml +0 -97
  297. package/#Tools/SuperClaude/.claude/commands/shared/user-experience.yml +0 -208
  298. package/#Tools/SuperClaude/.claude/commands/shared/validation.yml +0 -54
  299. package/#Tools/SuperClaude/.claude/commands/shared/workflow-chains.yml +0 -138
  300. package/#Tools/SuperClaude/.claude/commands/spawn.md +0 -106
  301. package/#Tools/SuperClaude/.claude/commands/task.md +0 -110
  302. package/#Tools/SuperClaude/.claude/commands/test.md +0 -67
  303. package/#Tools/SuperClaude/.claude/commands/troubleshoot.md +0 -93
  304. package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/bug_report.yml +0 -114
  305. package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/feature_request.yml +0 -119
  306. package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/question.yml +0 -87
  307. package/#Tools/SuperClaude/.github/pull_request_template.md +0 -62
  308. package/#Tools/SuperClaude/CHANGELOG.md +0 -109
  309. package/#Tools/SuperClaude/CLAUDE.md +0 -95
  310. package/#Tools/SuperClaude/CODE_OF_CONDUCT.md +0 -45
  311. package/#Tools/SuperClaude/CONTRIBUTING.md +0 -225
  312. package/#Tools/SuperClaude/Commands_Cheat_Sheet.md +0 -160
  313. package/#Tools/SuperClaude/LICENSE +0 -21
  314. package/#Tools/SuperClaude/MCP.md +0 -117
  315. package/#Tools/SuperClaude/PERSONAS.md +0 -115
  316. package/#Tools/SuperClaude/README.md +0 -249
  317. package/#Tools/SuperClaude/RULES.md +0 -220
  318. package/#Tools/SuperClaude/SECURITY.md +0 -91
  319. package/#Tools/SuperClaude/install.sh +0 -296
  320. package/#Tools/claude-talk-to-figma-mcp/.github/workflows/test.yml +0 -36
  321. package/#Tools/claude-talk-to-figma-mcp/CHANGELOG.md +0 -88
  322. package/#Tools/claude-talk-to-figma-mcp/Dockerfile +0 -16
  323. package/#Tools/claude-talk-to-figma-mcp/LICENSE +0 -22
  324. package/#Tools/claude-talk-to-figma-mcp/TESTING.md +0 -216
  325. package/#Tools/claude-talk-to-figma-mcp/bun.lock +0 -964
  326. package/#Tools/claude-talk-to-figma-mcp/context/01/00-analisis.md +0 -151
  327. package/#Tools/claude-talk-to-figma-mcp/context/01/01-tools-refactor.md +0 -370
  328. package/#Tools/claude-talk-to-figma-mcp/context/01/02-tools-refactor-backlog.md +0 -253
  329. package/#Tools/claude-talk-to-figma-mcp/context/01/03-tools-refactor-test.md +0 -138
  330. package/#Tools/claude-talk-to-figma-mcp/context/01/04-tools-refactor-channel-error.md +0 -133
  331. package/#Tools/claude-talk-to-figma-mcp/context/01/04-tools-refactor-test-backlog.md +0 -0
  332. package/#Tools/claude-talk-to-figma-mcp/context/01/05-tools-refactor-four-tools-error.md +0 -356
  333. package/#Tools/claude-talk-to-figma-mcp/context/01/06-tools-refactor-four-tools-error-backlog.md +0 -425
  334. package/#Tools/claude-talk-to-figma-mcp/context/01/prompt-dev-nodejs-bun.md +0 -105
  335. package/#Tools/claude-talk-to-figma-mcp/context/01-prompt.md +0 -135
  336. package/#Tools/claude-talk-to-figma-mcp/context/02/00-analisis.md +0 -131
  337. package/#Tools/claude-talk-to-figma-mcp/context/02/01-plan.md +0 -162
  338. package/#Tools/claude-talk-to-figma-mcp/context/02/02-backlog.md +0 -241
  339. package/#Tools/claude-talk-to-figma-mcp/context/02-analisis.md +0 -202
  340. package/#Tools/claude-talk-to-figma-mcp/context/99-notas.md +0 -139
  341. package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-analisis.md +0 -221
  342. package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-claude-tests.md +0 -152
  343. package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-npm-publishing.md +0 -272
  344. package/#Tools/claude-talk-to-figma-mcp/images/claude-talk-to-figma.png +0 -0
  345. package/#Tools/claude-talk-to-figma-mcp/images/mcp-figma-plugin-configuration.png +0 -0
  346. package/#Tools/claude-talk-to-figma-mcp/jest.config.cjs +0 -25
  347. package/#Tools/claude-talk-to-figma-mcp/package.json +0 -67
  348. package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-es.md +0 -82
  349. package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-gal.md +0 -80
  350. package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-pt.md +0 -80
  351. package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-specialist.md +0 -80
  352. package/#Tools/claude-talk-to-figma-mcp/readme.md +0 -307
  353. package/#Tools/claude-talk-to-figma-mcp/scripts/configure-claude.js +0 -90
  354. package/#Tools/claude-talk-to-figma-mcp/scripts/setup.sh +0 -30
  355. package/#Tools/claude-talk-to-figma-mcp/scripts/test-integration.js +0 -339
  356. package/#Tools/claude-talk-to-figma-mcp/smithery.yaml +0 -26
  357. package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/code.js +0 -3295
  358. package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/manifest.json +0 -24
  359. package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/setcharacters.js +0 -215
  360. package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/ui.html +0 -656
  361. package/#Tools/claude-talk-to-figma-mcp/src/socket.ts +0 -349
  362. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/bun.lock +0 -246
  363. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/config/config.ts +0 -22
  364. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/package.json +0 -31
  365. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/prompts/index.ts +0 -297
  366. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/server.ts +0 -62
  367. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/component-tools.ts +0 -48
  368. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/creation-tools.ts +0 -620
  369. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/document-tools.ts +0 -390
  370. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/index.ts +0 -28
  371. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/modification-tools.ts +0 -408
  372. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/text-tools.ts +0 -531
  373. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tsconfig.json +0 -18
  374. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/types/color.ts +0 -13
  375. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/types/index.ts +0 -87
  376. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/defaults.ts +0 -23
  377. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/figma-helpers.ts +0 -142
  378. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/logger.ts +0 -8
  379. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/websocket.ts +0 -258
  380. package/#Tools/claude-talk-to-figma-mcp/tests/fixtures/test-data.ts +0 -32
  381. package/#Tools/claude-talk-to-figma-mcp/tests/integration/set-fill-color.test.ts +0 -309
  382. package/#Tools/claude-talk-to-figma-mcp/tests/integration/set-stroke-color.test.ts +0 -387
  383. package/#Tools/claude-talk-to-figma-mcp/tests/setup.ts +0 -7
  384. package/#Tools/claude-talk-to-figma-mcp/tests/unit/utils/defaults.test.ts +0 -131
  385. package/#Tools/claude-talk-to-figma-mcp/tsconfig.json +0 -17
  386. package/#Tools/claude-talk-to-figma-mcp/tsup.config.ts +0 -14
  387. package/#Tools/jwt creator/AuthKey_MZ7UQGFV2Q.p8 +0 -6
  388. package/#Tools/jwt creator/generate_apple_jwt.js +0 -18
  389. package/#Tools/jwt creator/node_modules/.package-lock.json +0 -145
  390. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/.travis.yml +0 -4
  391. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/LICENSE.txt +0 -12
  392. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/README.md +0 -50
  393. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/index.js +0 -41
  394. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/package.json +0 -21
  395. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/test.js +0 -42
  396. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/CODEOWNERS +0 -1
  397. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/LICENSE +0 -201
  398. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/README.md +0 -65
  399. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/package.json +0 -46
  400. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts +0 -17
  401. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js +0 -187
  402. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js +0 -23
  403. package/#Tools/jwt creator/node_modules/jsonwebtoken/LICENSE +0 -21
  404. package/#Tools/jwt creator/node_modules/jsonwebtoken/README.md +0 -396
  405. package/#Tools/jwt creator/node_modules/jsonwebtoken/decode.js +0 -30
  406. package/#Tools/jwt creator/node_modules/jsonwebtoken/index.js +0 -8
  407. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/JsonWebTokenError.js +0 -14
  408. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/NotBeforeError.js +0 -13
  409. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/TokenExpiredError.js +0 -13
  410. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js +0 -3
  411. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/psSupported.js +0 -3
  412. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js +0 -3
  413. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/timespan.js +0 -18
  414. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js +0 -66
  415. package/#Tools/jwt creator/node_modules/jsonwebtoken/package.json +0 -71
  416. package/#Tools/jwt creator/node_modules/jsonwebtoken/sign.js +0 -253
  417. package/#Tools/jwt creator/node_modules/jsonwebtoken/verify.js +0 -263
  418. package/#Tools/jwt creator/node_modules/jwa/LICENSE +0 -17
  419. package/#Tools/jwt creator/node_modules/jwa/README.md +0 -150
  420. package/#Tools/jwt creator/node_modules/jwa/index.js +0 -266
  421. package/#Tools/jwt creator/node_modules/jwa/package.json +0 -37
  422. package/#Tools/jwt creator/node_modules/jws/CHANGELOG.md +0 -34
  423. package/#Tools/jwt creator/node_modules/jws/LICENSE +0 -17
  424. package/#Tools/jwt creator/node_modules/jws/index.js +0 -22
  425. package/#Tools/jwt creator/node_modules/jws/lib/data-stream.js +0 -55
  426. package/#Tools/jwt creator/node_modules/jws/lib/sign-stream.js +0 -78
  427. package/#Tools/jwt creator/node_modules/jws/lib/tostring.js +0 -10
  428. package/#Tools/jwt creator/node_modules/jws/lib/verify-stream.js +0 -120
  429. package/#Tools/jwt creator/node_modules/jws/package.json +0 -34
  430. package/#Tools/jwt creator/node_modules/jws/readme.md +0 -255
  431. package/#Tools/jwt creator/node_modules/lodash.includes/LICENSE +0 -47
  432. package/#Tools/jwt creator/node_modules/lodash.includes/README.md +0 -18
  433. package/#Tools/jwt creator/node_modules/lodash.includes/index.js +0 -745
  434. package/#Tools/jwt creator/node_modules/lodash.includes/package.json +0 -17
  435. package/#Tools/jwt creator/node_modules/lodash.isboolean/LICENSE +0 -22
  436. package/#Tools/jwt creator/node_modules/lodash.isboolean/README.md +0 -18
  437. package/#Tools/jwt creator/node_modules/lodash.isboolean/index.js +0 -70
  438. package/#Tools/jwt creator/node_modules/lodash.isboolean/package.json +0 -17
  439. package/#Tools/jwt creator/node_modules/lodash.isinteger/LICENSE +0 -47
  440. package/#Tools/jwt creator/node_modules/lodash.isinteger/README.md +0 -18
  441. package/#Tools/jwt creator/node_modules/lodash.isinteger/index.js +0 -265
  442. package/#Tools/jwt creator/node_modules/lodash.isinteger/package.json +0 -17
  443. package/#Tools/jwt creator/node_modules/lodash.isnumber/LICENSE +0 -22
  444. package/#Tools/jwt creator/node_modules/lodash.isnumber/README.md +0 -18
  445. package/#Tools/jwt creator/node_modules/lodash.isnumber/index.js +0 -79
  446. package/#Tools/jwt creator/node_modules/lodash.isnumber/package.json +0 -17
  447. package/#Tools/jwt creator/node_modules/lodash.isplainobject/LICENSE +0 -47
  448. package/#Tools/jwt creator/node_modules/lodash.isplainobject/README.md +0 -18
  449. package/#Tools/jwt creator/node_modules/lodash.isplainobject/index.js +0 -139
  450. package/#Tools/jwt creator/node_modules/lodash.isplainobject/package.json +0 -17
  451. package/#Tools/jwt creator/node_modules/lodash.isstring/LICENSE +0 -22
  452. package/#Tools/jwt creator/node_modules/lodash.isstring/README.md +0 -18
  453. package/#Tools/jwt creator/node_modules/lodash.isstring/index.js +0 -95
  454. package/#Tools/jwt creator/node_modules/lodash.isstring/package.json +0 -17
  455. package/#Tools/jwt creator/node_modules/lodash.once/LICENSE +0 -47
  456. package/#Tools/jwt creator/node_modules/lodash.once/README.md +0 -18
  457. package/#Tools/jwt creator/node_modules/lodash.once/index.js +0 -294
  458. package/#Tools/jwt creator/node_modules/lodash.once/package.json +0 -17
  459. package/#Tools/jwt creator/node_modules/ms/index.js +0 -162
  460. package/#Tools/jwt creator/node_modules/ms/license.md +0 -21
  461. package/#Tools/jwt creator/node_modules/ms/package.json +0 -38
  462. package/#Tools/jwt creator/node_modules/ms/readme.md +0 -59
  463. package/#Tools/jwt creator/node_modules/safe-buffer/LICENSE +0 -21
  464. package/#Tools/jwt creator/node_modules/safe-buffer/README.md +0 -584
  465. package/#Tools/jwt creator/node_modules/safe-buffer/index.d.ts +0 -187
  466. package/#Tools/jwt creator/node_modules/safe-buffer/index.js +0 -65
  467. package/#Tools/jwt creator/node_modules/safe-buffer/package.json +0 -51
  468. package/#Tools/jwt creator/node_modules/semver/LICENSE +0 -15
  469. package/#Tools/jwt creator/node_modules/semver/README.md +0 -664
  470. package/#Tools/jwt creator/node_modules/semver/bin/semver.js +0 -191
  471. package/#Tools/jwt creator/node_modules/semver/classes/comparator.js +0 -143
  472. package/#Tools/jwt creator/node_modules/semver/classes/index.js +0 -7
  473. package/#Tools/jwt creator/node_modules/semver/classes/range.js +0 -556
  474. package/#Tools/jwt creator/node_modules/semver/classes/semver.js +0 -319
  475. package/#Tools/jwt creator/node_modules/semver/functions/clean.js +0 -8
  476. package/#Tools/jwt creator/node_modules/semver/functions/cmp.js +0 -54
  477. package/#Tools/jwt creator/node_modules/semver/functions/coerce.js +0 -62
  478. package/#Tools/jwt creator/node_modules/semver/functions/compare-build.js +0 -9
  479. package/#Tools/jwt creator/node_modules/semver/functions/compare-loose.js +0 -5
  480. package/#Tools/jwt creator/node_modules/semver/functions/compare.js +0 -7
  481. package/#Tools/jwt creator/node_modules/semver/functions/diff.js +0 -60
  482. package/#Tools/jwt creator/node_modules/semver/functions/eq.js +0 -5
  483. package/#Tools/jwt creator/node_modules/semver/functions/gt.js +0 -5
  484. package/#Tools/jwt creator/node_modules/semver/functions/gte.js +0 -5
  485. package/#Tools/jwt creator/node_modules/semver/functions/inc.js +0 -21
  486. package/#Tools/jwt creator/node_modules/semver/functions/lt.js +0 -5
  487. package/#Tools/jwt creator/node_modules/semver/functions/lte.js +0 -5
  488. package/#Tools/jwt creator/node_modules/semver/functions/major.js +0 -5
  489. package/#Tools/jwt creator/node_modules/semver/functions/minor.js +0 -5
  490. package/#Tools/jwt creator/node_modules/semver/functions/neq.js +0 -5
  491. package/#Tools/jwt creator/node_modules/semver/functions/parse.js +0 -18
  492. package/#Tools/jwt creator/node_modules/semver/functions/patch.js +0 -5
  493. package/#Tools/jwt creator/node_modules/semver/functions/prerelease.js +0 -8
  494. package/#Tools/jwt creator/node_modules/semver/functions/rcompare.js +0 -5
  495. package/#Tools/jwt creator/node_modules/semver/functions/rsort.js +0 -5
  496. package/#Tools/jwt creator/node_modules/semver/functions/satisfies.js +0 -12
  497. package/#Tools/jwt creator/node_modules/semver/functions/sort.js +0 -5
  498. package/#Tools/jwt creator/node_modules/semver/functions/valid.js +0 -8
  499. package/#Tools/jwt creator/node_modules/semver/index.js +0 -91
  500. package/#Tools/jwt creator/node_modules/semver/internal/constants.js +0 -37
  501. package/#Tools/jwt creator/node_modules/semver/internal/debug.js +0 -11
  502. package/#Tools/jwt creator/node_modules/semver/internal/identifiers.js +0 -25
  503. package/#Tools/jwt creator/node_modules/semver/internal/lrucache.js +0 -42
  504. package/#Tools/jwt creator/node_modules/semver/internal/parse-options.js +0 -17
  505. package/#Tools/jwt creator/node_modules/semver/internal/re.js +0 -223
  506. package/#Tools/jwt creator/node_modules/semver/package.json +0 -78
  507. package/#Tools/jwt creator/node_modules/semver/preload.js +0 -4
  508. package/#Tools/jwt creator/node_modules/semver/range.bnf +0 -16
  509. package/#Tools/jwt creator/node_modules/semver/ranges/gtr.js +0 -6
  510. package/#Tools/jwt creator/node_modules/semver/ranges/intersects.js +0 -9
  511. package/#Tools/jwt creator/node_modules/semver/ranges/ltr.js +0 -6
  512. package/#Tools/jwt creator/node_modules/semver/ranges/max-satisfying.js +0 -27
  513. package/#Tools/jwt creator/node_modules/semver/ranges/min-satisfying.js +0 -26
  514. package/#Tools/jwt creator/node_modules/semver/ranges/min-version.js +0 -63
  515. package/#Tools/jwt creator/node_modules/semver/ranges/outside.js +0 -82
  516. package/#Tools/jwt creator/node_modules/semver/ranges/simplify.js +0 -49
  517. package/#Tools/jwt creator/node_modules/semver/ranges/subset.js +0 -249
  518. package/#Tools/jwt creator/node_modules/semver/ranges/to-comparators.js +0 -10
  519. package/#Tools/jwt creator/node_modules/semver/ranges/valid.js +0 -13
  520. package/#Tools/jwt creator/package-lock.json +0 -150
  521. package/#Tools/jwt creator/package.json +0 -5
  522. package/#Tools/package.json +0 -94
  523. package/SuperClaude/.claude/commands/analyze.md +0 -36
  524. package/SuperClaude/.claude/commands/build.md +0 -35
  525. package/SuperClaude/.claude/commands/cleanup.md +0 -46
  526. package/SuperClaude/.claude/commands/deploy.md +0 -55
  527. package/SuperClaude/.claude/commands/design.md +0 -91
  528. package/SuperClaude/.claude/commands/dev-setup.md +0 -37
  529. package/SuperClaude/.claude/commands/document.md +0 -99
  530. package/SuperClaude/.claude/commands/estimate.md +0 -69
  531. package/SuperClaude/.claude/commands/explain.md +0 -85
  532. package/SuperClaude/.claude/commands/git.md +0 -47
  533. package/SuperClaude/.claude/commands/improve.md +0 -162
  534. package/SuperClaude/.claude/commands/index.md +0 -159
  535. package/SuperClaude/.claude/commands/load.md +0 -65
  536. package/SuperClaude/.claude/commands/migrate.md +0 -76
  537. package/SuperClaude/.claude/commands/scan.md +0 -163
  538. package/SuperClaude/.claude/commands/shared/ambiguity-check.yml +0 -40
  539. package/SuperClaude/.claude/commands/shared/audit.yml +0 -21
  540. package/SuperClaude/.claude/commands/shared/checkpoint.yml +0 -28
  541. package/SuperClaude/.claude/commands/shared/cleanup-patterns.yml +0 -107
  542. package/SuperClaude/.claude/commands/shared/command-memory.yml +0 -52
  543. package/SuperClaude/.claude/commands/shared/command-templates.yml +0 -167
  544. package/SuperClaude/.claude/commands/shared/config-validator.yml +0 -206
  545. package/SuperClaude/.claude/commands/shared/constants.yml +0 -311
  546. package/SuperClaude/.claude/commands/shared/documentation-dirs.yml +0 -134
  547. package/SuperClaude/.claude/commands/shared/error-handling.yml +0 -341
  548. package/SuperClaude/.claude/commands/shared/evidence.yml +0 -75
  549. package/SuperClaude/.claude/commands/shared/execution-lifecycle.yml +0 -277
  550. package/SuperClaude/.claude/commands/shared/git-operations.yml +0 -217
  551. package/SuperClaude/.claude/commands/shared/git-workflow.yml +0 -37
  552. package/SuperClaude/.claude/commands/shared/implementation.yml +0 -199
  553. package/SuperClaude/.claude/commands/shared/loading-config.yml +0 -73
  554. package/SuperClaude/.claude/commands/shared/mcp-flags.yml +0 -109
  555. package/SuperClaude/.claude/commands/shared/migration-report.md +0 -165
  556. package/SuperClaude/.claude/commands/shared/patterns.yml +0 -155
  557. package/SuperClaude/.claude/commands/shared/performance.yml +0 -317
  558. package/SuperClaude/.claude/commands/shared/planning-mode.yml +0 -51
  559. package/SuperClaude/.claude/commands/shared/research-first.yml +0 -278
  560. package/SuperClaude/.claude/commands/shared/session-recovery.yml +0 -144
  561. package/SuperClaude/.claude/commands/shared/severity-levels.yml +0 -252
  562. package/SuperClaude/.claude/commands/shared/task-system.yml +0 -380
  563. package/SuperClaude/.claude/commands/shared/task-ultracompressed.yml +0 -88
  564. package/SuperClaude/.claude/commands/shared/templates/feature-template.md +0 -59
  565. package/SuperClaude/.claude/commands/shared/templates/task-ultracompressed.md +0 -26
  566. package/SuperClaude/.claude/commands/shared/thinking-modes.yml +0 -61
  567. package/SuperClaude/.claude/commands/shared/ultracompressed.yml +0 -97
  568. package/SuperClaude/.claude/commands/shared/user-experience.yml +0 -208
  569. package/SuperClaude/.claude/commands/shared/validation.yml +0 -54
  570. package/SuperClaude/.claude/commands/shared/workflow-chains.yml +0 -138
  571. package/SuperClaude/.claude/commands/spawn.md +0 -106
  572. package/SuperClaude/.claude/commands/task.md +0 -110
  573. package/SuperClaude/.claude/commands/test.md +0 -67
  574. package/SuperClaude/.claude/commands/troubleshoot.md +0 -93
  575. package/SuperClaude/.github/ISSUE_TEMPLATE/bug_report.yml +0 -114
  576. package/SuperClaude/.github/ISSUE_TEMPLATE/feature_request.yml +0 -119
  577. package/SuperClaude/.github/ISSUE_TEMPLATE/question.yml +0 -87
  578. package/SuperClaude/.github/pull_request_template.md +0 -62
  579. package/SuperClaude/CHANGELOG.md +0 -109
  580. package/SuperClaude/CLAUDE.md +0 -95
  581. package/SuperClaude/CODE_OF_CONDUCT.md +0 -45
  582. package/SuperClaude/CONTRIBUTING.md +0 -225
  583. package/SuperClaude/Commands_Cheat_Sheet.md +0 -160
  584. package/SuperClaude/LICENSE +0 -21
  585. package/SuperClaude/MCP.md +0 -117
  586. package/SuperClaude/PERSONAS.md +0 -115
  587. package/SuperClaude/README.md +0 -249
  588. package/SuperClaude/RULES.md +0 -220
  589. package/SuperClaude/SECURITY.md +0 -91
  590. package/SuperClaude/install.sh +0 -296
  591. package/appiq-mcp installer/How-to.md +0 -250
  592. package/appiq-mcp installer/LICENSE +0 -21
  593. package/appiq-mcp installer/README.md +0 -235
  594. package/appiq-mcp installer/index.js +0 -672
  595. package/appiq-mcp installer/my_mcps.md +0 -105
  596. package/appiq-mcp installer/package-lock.json +0 -708
  597. package/appiq-mcp installer/package.json +0 -46
  598. package/appiq-mcp installer/test-install.bat +0 -60
  599. package/appiq-mcp installer/test-install.sh +0 -55
  600. package/appiq-mcp installer/test-load.js +0 -40
  601. package/bmad-core/agent-teams/team-flutter-mobile.yaml +0 -114
  602. package/bmad-core/agents/bmad-smart-launcher.md +0 -170
  603. package/bmad-core/agents/init-flow-po.md +0 -143
  604. package/bmad-core/checklists/security-validation-checklist.md +0 -332
  605. package/bmad-core/core-config.yaml.bak +0 -20
  606. package/bmad-core/data/backend-services-integration.md +0 -686
  607. package/bmad-core/data/shadcn-ui-integration.md +0 -388
  608. package/bmad-core/tasks/create-flutter-story.md +0 -197
  609. package/bmad-core/tasks/intelligent-epic-creation.md +0 -234
  610. package/bmad-core/tasks/smart-project-analysis.md +0 -289
  611. package/bmad-core/templates/flutter-mobile-prd-tmpl.yaml +0 -330
  612. package/bmad-core/templates/flutter-story-tmpl.yaml +0 -376
  613. package/bmad-core/templates/flutter-ui-spec-tmpl.yaml +0 -415
  614. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.txt +0 -1530
  615. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.txt +0 -322
  616. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.txt +0 -692
  617. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.txt +0 -382
  618. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.txt +0 -665
  619. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.txt +0 -1070
  620. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.txt +0 -1494
  621. package/dist/expansion-packs/bmad-mobile-app-dev/teams/mobile-team-cross-platform.txt +0 -15613
  622. package/flutter/CLAUDE.md +0 -58
  623. package/flutter/punkt.claude/New Folder With Items/channel.md +0 -221
  624. package/flutter/punkt.claude/New Folder With Items/commands/add-translations.md +0 -12
  625. package/flutter/punkt.claude/New Folder With Items/commands/create-feature.md +0 -168
  626. package/flutter/punkt.claude/New Folder With Items/commands/explain-codebase.md +0 -1
  627. package/flutter/punkt.claude/New Folder With Items/commands/feature-business-logic.md +0 -551
  628. package/flutter/punkt.claude/New Folder With Items/commands/feature-data-layer.md +0 -924
  629. package/flutter/punkt.claude/New Folder With Items/commands/feature-domain-layer.md +0 -540
  630. package/flutter/punkt.claude/New Folder With Items/commands/feature-integration.md +0 -493
  631. package/flutter/punkt.claude/New Folder With Items/commands/feature-localization.md +0 -427
  632. package/flutter/punkt.claude/New Folder With Items/commands/feature-ui-layer.md +0 -300
  633. package/flutter/punkt.claude/New Folder With Items/commands/git-commit.md +0 -3
  634. package/flutter/punkt.claude/New Folder With Items/commands/search-web.md +0 -1
  635. package/flutter/punkt.claude/punkt.claude/channel.md +0 -225
  636. package/flutter/punkt.claude/punkt.claude/commands/add-translations.md +0 -60
  637. package/flutter/punkt.claude/punkt.claude/commands/bug-fix.md +0 -32
  638. package/flutter/punkt.claude/punkt.claude/commands/checkdev.md +0 -122
  639. package/flutter/punkt.claude/punkt.claude/commands/create-feature.md +0 -174
  640. package/flutter/punkt.claude/punkt.claude/commands/dev.md +0 -79
  641. package/flutter/punkt.claude/punkt.claude/commands/explain-codebase.md +0 -1
  642. package/flutter/punkt.claude/punkt.claude/commands/feature-business-logic.md +0 -430
  643. package/flutter/punkt.claude/punkt.claude/commands/feature-data-layer.md +0 -572
  644. package/flutter/punkt.claude/punkt.claude/commands/feature-domain-layer.md +0 -537
  645. package/flutter/punkt.claude/punkt.claude/commands/feature-integration.md +0 -493
  646. package/flutter/punkt.claude/punkt.claude/commands/feature-localization.md +0 -427
  647. package/flutter/punkt.claude/punkt.claude/commands/feature-ui-layer.md +0 -831
  648. package/flutter/punkt.claude/punkt.claude/commands/git-commit.md +0 -3
  649. package/flutter/punkt.claude/punkt.claude/commands/manage-translations.md +0 -433
  650. package/flutter/punkt.claude/punkt.claude/commands/search-web.md +0 -1
  651. package/flutter/punkt.claude/punkt.claude/developer_check.md +0 -121
  652. package/tools/appiq-installer.js +0 -2711
  653. package/tools/epic-solution-installer.js +0 -536
  654. package/tools/setup-ide-commands.js +0 -348
  655. package/tools/smart-installer.js +0 -592
  656. package/web/CLAUDE.md +0 -58
  657. /package/{#Tools/APPIQ-METHOD/.github → .github}/FUNDING.yaml +0 -0
  658. /package/{#Tools/APPIQ-METHOD/.github → .github}/ISSUE_TEMPLATE/bug_report.md +0 -0
  659. /package/{#Tools/APPIQ-METHOD/.github → .github}/ISSUE_TEMPLATE/feature_request.md +0 -0
  660. /package/{#Tools/APPIQ-METHOD/.github → .github}/workflows/release.yaml +0 -0
  661. /package/{#Tools/APPIQ-METHOD/.releaserc.json → .releaserc.json} +0 -0
  662. /package/{#Tools/APPIQ-METHOD/.vscode → .vscode}/settings.json +0 -0
  663. /package/{#Tools/APPIQ-METHOD/CHANGELOG.md → CHANGELOG.md} +0 -0
  664. /package/{#Tools/APPIQ-METHOD/CONTRIBUTING.md → CONTRIBUTING.md} +0 -0
  665. /package/{#Tools/APPIQ-METHOD/LICENSE → LICENSE} +0 -0
  666. /package/{#Tools/APPIQ-METHOD/common → common}/tasks/create-doc.md +0 -0
  667. /package/{#Tools/APPIQ-METHOD/common → common}/tasks/execute-checklist.md +0 -0
  668. /package/{#Tools/APPIQ-METHOD/common → common}/utils/bmad-doc-template.md +0 -0
  669. /package/{#Tools/APPIQ-METHOD/common → common}/utils/workflow-management.md +0 -0
  670. /package/{#Tools/APPIQ-METHOD/docs → docs}/GUIDING-PRINCIPLES.md +0 -0
  671. /package/{#Tools/APPIQ-METHOD/docs → docs}/core-architecture.md +0 -0
  672. /package/{#Tools/APPIQ-METHOD/docs → docs}/expansion-packs.md +0 -0
  673. /package/{#Tools/APPIQ-METHOD/docs → docs}/how-to-contribute-with-pull-requests.md +0 -0
  674. /package/{#Tools/APPIQ-METHOD/docs → docs}/versioning-and-releases.md +0 -0
  675. /package/{#Tools/APPIQ-METHOD/docs → docs}/versions.md +0 -0
  676. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/README.md +0 -0
  677. /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agent-teams/flutter-mobile-team.yaml +0 -0
  678. /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-cubit-agent.md +0 -0
  679. /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-data-agent.md +0 -0
  680. /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-domain-agent.md +0 -0
  681. /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-ui-agent.md +0 -0
  682. /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agents/shared-components-agent.md +0 -0
  683. /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/checklists/flutter-story-dod-checklist.md +0 -0
  684. /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/data/flutter-development-guidelines.md +0 -0
  685. /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/templates/flutter-mobile-architecture-tmpl.yaml +0 -0
  686. /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/workflows/flutter-ui-first-development.yaml +0 -0
  687. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +0 -0
  688. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/agents/game-designer.md +0 -0
  689. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/agents/game-developer.md +0 -0
  690. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/agents/game-sm.md +0 -0
  691. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +0 -0
  692. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +0 -0
  693. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/config.yaml +0 -0
  694. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/data/bmad-kb.md +0 -0
  695. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/data/development-guidelines.md +0 -0
  696. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +0 -0
  697. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/tasks/create-game-story.md +0 -0
  698. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +0 -0
  699. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +0 -0
  700. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +0 -0
  701. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +0 -0
  702. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +0 -0
  703. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +0 -0
  704. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +0 -0
  705. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +0 -0
  706. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +0 -0
  707. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/agents/game-architect.md +0 -0
  708. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/agents/game-designer.md +0 -0
  709. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/agents/game-developer.md +0 -0
  710. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/agents/game-sm.md +0 -0
  711. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +0 -0
  712. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +0 -0
  713. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +0 -0
  714. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +0 -0
  715. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/config.yaml +0 -0
  716. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/data/bmad-kb.md +0 -0
  717. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/data/development-guidelines.md +0 -0
  718. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +0 -0
  719. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/tasks/correct-course-game.md +0 -0
  720. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/tasks/create-game-story.md +0 -0
  721. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +0 -0
  722. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/tasks/validate-game-story.md +0 -0
  723. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +0 -0
  724. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +0 -0
  725. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +0 -0
  726. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +0 -0
  727. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +0 -0
  728. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +0 -0
  729. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +0 -0
  730. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/README.md +0 -0
  731. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/agents/infra-devops-platform.md +0 -0
  732. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +0 -0
  733. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/config.yaml +0 -0
  734. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/data/bmad-kb.md +0 -0
  735. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/tasks/review-infrastructure.md +0 -0
  736. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/tasks/validate-infrastructure.md +0 -0
  737. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +0 -0
  738. /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +0 -0
@@ -1,1772 +0,0 @@
1
- const path = require("node:path");
2
- const fs = require("fs-extra");
3
- const chalk = require("chalk");
4
- const ora = require("ora");
5
- const inquirer = require("inquirer");
6
- const fileManager = require("./file-manager");
7
- const configLoader = require("./config-loader");
8
- const ideSetup = require("./ide-setup");
9
- const { extractYamlFromAgent } = require("../../lib/yaml-utils");
10
- const resourceLocator = require("./resource-locator");
11
-
12
- class Installer {
13
- async getCoreVersion() {
14
- try {
15
- // Always use package.json version
16
- const packagePath = path.join(__dirname, '..', '..', '..', 'package.json');
17
- const packageJson = require(packagePath);
18
- return packageJson.version;
19
- } catch (error) {
20
- console.warn("Could not read version from package.json, using 'unknown'");
21
- return "unknown";
22
- }
23
- }
24
-
25
- async install(config) {
26
- const spinner = ora("Analyzing installation directory...").start();
27
-
28
- try {
29
- // Store the original CWD where npx was executed
30
- const originalCwd = process.env.INIT_CWD || process.env.PWD || process.cwd();
31
-
32
- // Resolve installation directory relative to where the user ran the command
33
- let installDir = path.isAbsolute(config.directory)
34
- ? config.directory
35
- : path.resolve(originalCwd, config.directory);
36
-
37
- if (path.basename(installDir) === '.bmad-core') {
38
- // If user points directly to .bmad-core, treat its parent as the project root
39
- installDir = path.dirname(installDir);
40
- }
41
-
42
- // Log resolved path for clarity
43
- if (!path.isAbsolute(config.directory)) {
44
- spinner.text = `Resolving "${config.directory}" to: ${installDir}`;
45
- }
46
-
47
- // Check if directory exists and handle non-existent directories
48
- if (!(await fileManager.pathExists(installDir))) {
49
- spinner.stop();
50
- console.log(`\nThe directory ${installDir} does not exist.`);
51
-
52
- const { action } = await inquirer.prompt([
53
- {
54
- type: 'list',
55
- name: 'action',
56
- message: 'What would you like to do?',
57
- choices: [
58
- {
59
- name: 'Create the directory and continue',
60
- value: 'create'
61
- },
62
- {
63
- name: 'Choose a different directory',
64
- value: 'change'
65
- },
66
- {
67
- name: 'Cancel installation',
68
- value: 'cancel'
69
- }
70
- ]
71
- }
72
- ]);
73
-
74
- if (action === 'cancel') {
75
- console.log('Installation cancelled.');
76
- process.exit(0);
77
- } else if (action === 'change') {
78
- const { newDirectory } = await inquirer.prompt([
79
- {
80
- type: 'input',
81
- name: 'newDirectory',
82
- message: 'Enter the new directory path:',
83
- validate: (input) => {
84
- if (!input.trim()) {
85
- return 'Please enter a valid directory path';
86
- }
87
- return true;
88
- }
89
- }
90
- ]);
91
- // Preserve the original CWD for the recursive call
92
- config.directory = newDirectory;
93
- return await this.install(config); // Recursive call with new directory
94
- } else if (action === 'create') {
95
- try {
96
- await fileManager.ensureDirectory(installDir);
97
- console.log(`✓ Created directory: ${installDir}`);
98
- } catch (error) {
99
- console.error(`Failed to create directory: ${error.message}`);
100
- console.error('You may need to check permissions or use a different path.');
101
- process.exit(1);
102
- }
103
- }
104
-
105
- spinner.start("Analyzing installation directory...");
106
- }
107
-
108
- // If this is an update request from early detection, handle it directly
109
- if (config.installType === 'update') {
110
- const state = await this.detectInstallationState(installDir);
111
- if (state.type === 'v4_existing') {
112
- return await this.performUpdate(config, installDir, state.manifest, spinner);
113
- } else {
114
- spinner.fail('No existing v4 installation found to update');
115
- throw new Error('No existing v4 installation found');
116
- }
117
- }
118
-
119
- // Detect current state
120
- const state = await this.detectInstallationState(installDir);
121
-
122
- // Handle different states
123
- switch (state.type) {
124
- case "clean":
125
- return await this.performFreshInstall(config, installDir, spinner);
126
-
127
- case "v4_existing":
128
- return await this.handleExistingV4Installation(
129
- config,
130
- installDir,
131
- state,
132
- spinner
133
- );
134
-
135
- case "v3_existing":
136
- return await this.handleV3Installation(
137
- config,
138
- installDir,
139
- state,
140
- spinner
141
- );
142
-
143
- case "unknown_existing":
144
- return await this.handleUnknownInstallation(
145
- config,
146
- installDir,
147
- state,
148
- spinner
149
- );
150
- }
151
- } catch (error) {
152
- // Check if modules were initialized
153
- if (spinner) {
154
- spinner.fail("Installation failed");
155
- } else {
156
- console.error("Installation failed:", error.message);
157
- }
158
- throw error;
159
- }
160
- }
161
-
162
- async detectInstallationState(installDir) {
163
- const state = {
164
- type: "clean",
165
- hasV4Manifest: false,
166
- hasV3Structure: false,
167
- hasBmadCore: false,
168
- hasOtherFiles: false,
169
- manifest: null,
170
- expansionPacks: {},
171
- };
172
-
173
- // Check if directory exists
174
- if (!(await fileManager.pathExists(installDir))) {
175
- return state; // clean install
176
- }
177
-
178
- // Check for V4 installation (has .bmad-core with manifest)
179
- const bmadCorePath = path.join(installDir, ".bmad-core");
180
- const manifestPath = path.join(bmadCorePath, "install-manifest.yaml");
181
-
182
- if (await fileManager.pathExists(manifestPath)) {
183
- state.type = "v4_existing";
184
- state.hasV4Manifest = true;
185
- state.hasBmadCore = true;
186
- state.manifest = await fileManager.readManifest(installDir);
187
- return state;
188
- }
189
-
190
- // Check for V3 installation (has bmad-agent directory)
191
- const bmadAgentPath = path.join(installDir, "bmad-agent");
192
- if (await fileManager.pathExists(bmadAgentPath)) {
193
- state.type = "v3_existing";
194
- state.hasV3Structure = true;
195
- return state;
196
- }
197
-
198
- // Check for .bmad-core without manifest (broken V4 or manual copy)
199
- if (await fileManager.pathExists(bmadCorePath)) {
200
- state.type = "unknown_existing";
201
- state.hasBmadCore = true;
202
- return state;
203
- }
204
-
205
- // Check if directory has other files
206
- const files = await resourceLocator.findFiles("**/*", {
207
- cwd: installDir,
208
- nodir: true,
209
- ignore: ["**/.git/**", "**/node_modules/**"],
210
- });
211
-
212
- if (files.length > 0) {
213
- // Directory has other files, but no BMad installation.
214
- // Treat as clean install but record that it isn't empty.
215
- state.hasOtherFiles = true;
216
- }
217
-
218
- // Check for expansion packs (folders starting with .)
219
- const expansionPacks = await this.detectExpansionPacks(installDir);
220
- state.expansionPacks = expansionPacks;
221
-
222
- return state; // clean install
223
- }
224
-
225
- async performFreshInstall(config, installDir, spinner, options = {}) {
226
- spinner.text = "Installing BMad Method...";
227
-
228
- let files = [];
229
-
230
- if (config.installType === "full") {
231
- // Full installation - copy entire .bmad-core folder as a subdirectory
232
- spinner.text = "Copying complete .bmad-core folder...";
233
- const sourceDir = resourceLocator.getBmadCorePath();
234
- const bmadCoreDestDir = path.join(installDir, ".bmad-core");
235
- await fileManager.copyDirectoryWithRootReplacement(sourceDir, bmadCoreDestDir, ".bmad-core");
236
-
237
- // Copy common/ items to .bmad-core
238
- spinner.text = "Copying common utilities...";
239
- await this.copyCommonItems(installDir, ".bmad-core", spinner);
240
-
241
- // Get list of all files for manifest
242
- const foundFiles = await resourceLocator.findFiles("**/*", {
243
- cwd: bmadCoreDestDir,
244
- nodir: true,
245
- ignore: ["**/.git/**", "**/node_modules/**"],
246
- });
247
- files = foundFiles.map((file) => path.join(".bmad-core", file));
248
- } else if (config.installType === "single-agent") {
249
- // Single agent installation
250
- spinner.text = `Installing ${config.agent} agent...`;
251
-
252
- // Copy agent file with {root} replacement
253
- const agentPath = configLoader.getAgentPath(config.agent);
254
- const destAgentPath = path.join(
255
- installDir,
256
- ".bmad-core",
257
- "agents",
258
- `${config.agent}.md`
259
- );
260
- await fileManager.copyFileWithRootReplacement(agentPath, destAgentPath, ".bmad-core");
261
- files.push(`.bmad-core/agents/${config.agent}.md`);
262
-
263
- // Copy dependencies
264
- const { all: dependencies } = await resourceLocator.getAgentDependencies(
265
- config.agent
266
- );
267
- const sourceBase = resourceLocator.getBmadCorePath();
268
-
269
- for (const dep of dependencies) {
270
- spinner.text = `Copying dependency: ${dep}`;
271
-
272
- if (dep.includes("*")) {
273
- // Handle glob patterns with {root} replacement
274
- const copiedFiles = await fileManager.copyGlobPattern(
275
- dep.replace(".bmad-core/", ""),
276
- sourceBase,
277
- path.join(installDir, ".bmad-core"),
278
- ".bmad-core"
279
- );
280
- files.push(...copiedFiles.map(f => `.bmad-core/${f}`));
281
- } else {
282
- // Handle single files with {root} replacement if needed
283
- const sourcePath = path.join(
284
- sourceBase,
285
- dep.replace(".bmad-core/", "")
286
- );
287
- const destPath = path.join(
288
- installDir,
289
- dep
290
- );
291
-
292
- const needsRootReplacement = dep.endsWith('.md') || dep.endsWith('.yaml') || dep.endsWith('.yml');
293
- let success = false;
294
-
295
- if (needsRootReplacement) {
296
- success = await fileManager.copyFileWithRootReplacement(sourcePath, destPath, ".bmad-core");
297
- } else {
298
- success = await fileManager.copyFile(sourcePath, destPath);
299
- }
300
-
301
- if (success) {
302
- files.push(dep);
303
- }
304
- }
305
- }
306
-
307
- // Copy common/ items to .bmad-core
308
- spinner.text = "Copying common utilities...";
309
- const commonFiles = await this.copyCommonItems(installDir, ".bmad-core", spinner);
310
- files.push(...commonFiles);
311
- } else if (config.installType === "team") {
312
- // Team installation
313
- spinner.text = `Installing ${config.team} team...`;
314
-
315
- // Get team dependencies
316
- const teamDependencies = await configLoader.getTeamDependencies(config.team);
317
- const sourceBase = resourceLocator.getBmadCorePath();
318
-
319
- // Install all team dependencies
320
- for (const dep of teamDependencies) {
321
- spinner.text = `Copying team dependency: ${dep}`;
322
-
323
- if (dep.includes("*")) {
324
- // Handle glob patterns with {root} replacement
325
- const copiedFiles = await fileManager.copyGlobPattern(
326
- dep.replace(".bmad-core/", ""),
327
- sourceBase,
328
- path.join(installDir, ".bmad-core"),
329
- ".bmad-core"
330
- );
331
- files.push(...copiedFiles.map(f => `.bmad-core/${f}`));
332
- } else {
333
- // Handle single files with {root} replacement if needed
334
- const sourcePath = path.join(sourceBase, dep.replace(".bmad-core/", ""));
335
- const destPath = path.join(installDir, dep);
336
-
337
- const needsRootReplacement = dep.endsWith('.md') || dep.endsWith('.yaml') || dep.endsWith('.yml');
338
- let success = false;
339
-
340
- if (needsRootReplacement) {
341
- success = await fileManager.copyFileWithRootReplacement(sourcePath, destPath, ".bmad-core");
342
- } else {
343
- success = await fileManager.copyFile(sourcePath, destPath);
344
- }
345
-
346
- if (success) {
347
- files.push(dep);
348
- }
349
- }
350
- }
351
-
352
- // Copy common/ items to .bmad-core
353
- spinner.text = "Copying common utilities...";
354
- const commonFiles = await this.copyCommonItems(installDir, ".bmad-core", spinner);
355
- files.push(...commonFiles);
356
- } else if (config.installType === "expansion-only") {
357
- // Expansion-only installation - DO NOT create .bmad-core
358
- // Only install expansion packs
359
- spinner.text = "Installing expansion packs only...";
360
- }
361
-
362
- // Install expansion packs if requested
363
- const expansionFiles = await this.installExpansionPacks(installDir, config.expansionPacks, spinner, config);
364
- files.push(...expansionFiles);
365
-
366
- // Install web bundles if requested
367
- if (config.includeWebBundles && config.webBundlesDirectory) {
368
- spinner.text = "Installing web bundles...";
369
- // Resolve web bundles directory using the same logic as the main installation directory
370
- const originalCwd = process.env.INIT_CWD || process.env.PWD || process.cwd();
371
- let resolvedWebBundlesDir = path.isAbsolute(config.webBundlesDirectory)
372
- ? config.webBundlesDirectory
373
- : path.resolve(originalCwd, config.webBundlesDirectory);
374
- await this.installWebBundles(resolvedWebBundlesDir, config, spinner);
375
- }
376
-
377
- // Set up IDE integration if requested
378
- const ides = config.ides || (config.ide ? [config.ide] : []);
379
- if (ides.length > 0) {
380
- for (const ide of ides) {
381
- spinner.text = `Setting up ${ide} integration...`;
382
- const preConfiguredSettings = ide === 'github-copilot' ? config.githubCopilotConfig : null;
383
- await ideSetup.setup(ide, installDir, config.agent, spinner, preConfiguredSettings);
384
- }
385
- }
386
-
387
- // Modify core-config.yaml if sharding preferences were provided
388
- if (config.installType !== "expansion-only" && (config.prdSharded !== undefined || config.architectureSharded !== undefined)) {
389
- spinner.text = "Configuring document sharding settings...";
390
- await fileManager.modifyCoreConfig(installDir, config);
391
- }
392
-
393
- // Create manifest (skip for expansion-only installations)
394
- if (config.installType !== "expansion-only") {
395
- spinner.text = "Creating installation manifest...";
396
- await fileManager.createManifest(installDir, config, files);
397
- }
398
-
399
- spinner.succeed("Installation complete!");
400
- this.showSuccessMessage(config, installDir, options);
401
- }
402
-
403
- async handleExistingV4Installation(config, installDir, state, spinner) {
404
- spinner.stop();
405
-
406
- const currentVersion = state.manifest.version;
407
- const newVersion = await this.getCoreVersion();
408
- const versionCompare = this.compareVersions(currentVersion, newVersion);
409
-
410
- console.log(chalk.yellow("\n🔍 Found existing BMad v4 installation"));
411
- console.log(` Directory: ${installDir}`);
412
- console.log(` Current version: ${currentVersion}`);
413
- console.log(` Available version: ${newVersion}`);
414
- console.log(
415
- ` Installed: ${new Date(
416
- state.manifest.installed_at
417
- ).toLocaleDateString()}`
418
- );
419
-
420
- // Check file integrity
421
- spinner.start("Checking installation integrity...");
422
- const integrity = await fileManager.checkFileIntegrity(installDir, state.manifest);
423
- spinner.stop();
424
-
425
- const hasMissingFiles = integrity.missing.length > 0;
426
- const hasModifiedFiles = integrity.modified.length > 0;
427
- const hasIntegrityIssues = hasMissingFiles || hasModifiedFiles;
428
-
429
- if (hasIntegrityIssues) {
430
- console.log(chalk.red("\n⚠️ Installation issues detected:"));
431
- if (hasMissingFiles) {
432
- console.log(chalk.red(` Missing files: ${integrity.missing.length}`));
433
- if (integrity.missing.length <= 5) {
434
- integrity.missing.forEach(file => console.log(chalk.dim(` - ${file}`)));
435
- }
436
- }
437
- if (hasModifiedFiles) {
438
- console.log(chalk.yellow(` Modified files: ${integrity.modified.length}`));
439
- if (integrity.modified.length <= 5) {
440
- integrity.modified.forEach(file => console.log(chalk.dim(` - ${file}`)));
441
- }
442
- }
443
- }
444
-
445
- // Show existing expansion packs
446
- if (Object.keys(state.expansionPacks).length > 0) {
447
- console.log(chalk.cyan("\n📦 Installed expansion packs:"));
448
- for (const [packId, packInfo] of Object.entries(state.expansionPacks)) {
449
- if (packInfo.hasManifest && packInfo.manifest) {
450
- console.log(` - ${packId} (v${packInfo.manifest.version || 'unknown'})`);
451
- } else {
452
- console.log(` - ${packId} (no manifest)`);
453
- }
454
- }
455
- }
456
-
457
- let choices = [];
458
-
459
- if (versionCompare < 0) {
460
- console.log(chalk.cyan("\n⬆️ Upgrade available for BMad core"));
461
- choices.push({ name: `Upgrade BMad core (v${currentVersion} → v${newVersion})`, value: "upgrade" });
462
- } else if (versionCompare === 0) {
463
- if (hasIntegrityIssues) {
464
- // Offer repair option when files are missing or modified
465
- choices.push({
466
- name: "Repair installation (restore missing/modified files)",
467
- value: "repair"
468
- });
469
- }
470
- console.log(chalk.yellow("\n⚠️ Same version already installed"));
471
- choices.push({ name: `Force reinstall BMad core (v${currentVersion} - reinstall)`, value: "reinstall" });
472
- } else {
473
- console.log(chalk.yellow("\n⬇️ Installed version is newer than available"));
474
- choices.push({ name: `Downgrade BMad core (v${currentVersion} → v${newVersion})`, value: "reinstall" });
475
- }
476
-
477
- choices.push(
478
- { name: "Add/update expansion packs only", value: "expansions" },
479
- { name: "Cancel", value: "cancel" }
480
- );
481
-
482
- const { action } = await inquirer.prompt([
483
- {
484
- type: "list",
485
- name: "action",
486
- message: "What would you like to do?",
487
- choices: choices,
488
- },
489
- ]);
490
-
491
- switch (action) {
492
- case "upgrade":
493
- return await this.performUpdate(config, installDir, state.manifest, spinner);
494
- case "repair":
495
- // For repair, restore missing/modified files while backing up modified ones
496
- return await this.performRepair(config, installDir, state.manifest, integrity, spinner);
497
- case "reinstall":
498
- // For reinstall, don't check for modifications - just overwrite
499
- return await this.performReinstall(config, installDir, spinner);
500
- case "expansions": {
501
- // Ask which expansion packs to install
502
- const availableExpansionPacks = await resourceLocator.getExpansionPacks();
503
-
504
- if (availableExpansionPacks.length === 0) {
505
- console.log(chalk.yellow("No expansion packs available."));
506
- return;
507
- }
508
-
509
- const { selectedPacks } = await inquirer.prompt([
510
- {
511
- type: 'checkbox',
512
- name: 'selectedPacks',
513
- message: 'Select expansion packs to install/update:',
514
- choices: availableExpansionPacks.map(pack => ({
515
- name: `${pack.name} (v${pack.version}) .${pack.id}`,
516
- value: pack.id,
517
- checked: state.expansionPacks[pack.id] !== undefined
518
- }))
519
- }
520
- ]);
521
-
522
- if (selectedPacks.length === 0) {
523
- console.log(chalk.yellow("No expansion packs selected."));
524
- return;
525
- }
526
-
527
- spinner.start("Installing expansion packs...");
528
- const expansionFiles = await this.installExpansionPacks(installDir, selectedPacks, spinner, { ides: config.ides || [] });
529
- spinner.succeed("Expansion packs installed successfully!");
530
-
531
- console.log(chalk.green("\n✓ Installation complete!"));
532
- console.log(chalk.green(`✓ Expansion packs installed/updated:`));
533
- for (const packId of selectedPacks) {
534
- console.log(chalk.green(` - ${packId} → .${packId}/`));
535
- }
536
- return;
537
- }
538
- case "cancel":
539
- console.log("Installation cancelled.");
540
- return;
541
- }
542
- }
543
-
544
- async handleV3Installation(config, installDir, state, spinner) {
545
- spinner.stop();
546
-
547
- console.log(
548
- chalk.yellow("\n🔍 Found BMad v3 installation (bmad-agent/ directory)")
549
- );
550
- console.log(` Directory: ${installDir}`);
551
-
552
- const { action } = await inquirer.prompt([
553
- {
554
- type: "list",
555
- name: "action",
556
- message: "What would you like to do?",
557
- choices: [
558
- { name: "Upgrade from v3 to v4 (recommended)", value: "upgrade" },
559
- { name: "Install v4 alongside v3", value: "alongside" },
560
- { name: "Cancel", value: "cancel" },
561
- ],
562
- },
563
- ]);
564
-
565
- switch (action) {
566
- case "upgrade": {
567
- console.log(chalk.cyan("\n📦 Starting v3 to v4 upgrade process..."));
568
- const V3ToV4Upgrader = require("../../upgraders/v3-to-v4-upgrader");
569
- const upgrader = new V3ToV4Upgrader();
570
- return await upgrader.upgrade({
571
- projectPath: installDir,
572
- ides: config.ides || [] // Pass IDE selections from initial config
573
- });
574
- }
575
- case "alongside":
576
- return await this.performFreshInstall(config, installDir, spinner);
577
- case "cancel":
578
- console.log("Installation cancelled.");
579
- return;
580
- }
581
- }
582
-
583
- async handleUnknownInstallation(config, installDir, state, spinner) {
584
- spinner.stop();
585
-
586
- console.log(chalk.yellow("\n⚠️ Directory contains existing files"));
587
- console.log(` Directory: ${installDir}`);
588
-
589
- if (state.hasBmadCore) {
590
- console.log(" Found: .bmad-core directory (but no manifest)");
591
- }
592
- if (state.hasOtherFiles) {
593
- console.log(" Found: Other files in directory");
594
- }
595
-
596
- const { action } = await inquirer.prompt([
597
- {
598
- type: "list",
599
- name: "action",
600
- message: "What would you like to do?",
601
- choices: [
602
- { name: "Install anyway (may overwrite files)", value: "force" },
603
- { name: "Choose different directory", value: "different" },
604
- { name: "Cancel", value: "cancel" },
605
- ],
606
- },
607
- ]);
608
-
609
- switch (action) {
610
- case "force":
611
- return await this.performFreshInstall(config, installDir, spinner);
612
- case "different": {
613
- const { newDir } = await inquirer.prompt([
614
- {
615
- type: "input",
616
- name: "newDir",
617
- message: "Enter new installation directory:",
618
- default: path.join(path.dirname(installDir), "bmad-project"),
619
- },
620
- ]);
621
- config.directory = newDir;
622
- return await this.install(config);
623
- }
624
- case "cancel":
625
- console.log("Installation cancelled.");
626
- return;
627
- }
628
- }
629
-
630
- async performUpdate(newConfig, installDir, manifest, spinner) {
631
- spinner.start("Checking for updates...");
632
-
633
- try {
634
- // Get current and new versions
635
- const currentVersion = manifest.version;
636
- const newVersion = await this.getCoreVersion();
637
- const versionCompare = this.compareVersions(currentVersion, newVersion);
638
-
639
- // Only check for modified files if it's an actual version upgrade
640
- let modifiedFiles = [];
641
- if (versionCompare !== 0) {
642
- spinner.text = "Checking for modified files...";
643
- modifiedFiles = await fileManager.checkModifiedFiles(
644
- installDir,
645
- manifest
646
- );
647
- }
648
-
649
- if (modifiedFiles.length > 0) {
650
- spinner.warn("Found modified files");
651
- console.log(chalk.yellow("\nThe following files have been modified:"));
652
- for (const file of modifiedFiles) {
653
- console.log(` - ${file}`);
654
- }
655
-
656
- const { action } = await inquirer.prompt([
657
- {
658
- type: "list",
659
- name: "action",
660
- message: "How would you like to proceed?",
661
- choices: [
662
- { name: "Backup and overwrite modified files", value: "backup" },
663
- { name: "Skip modified files", value: "skip" },
664
- { name: "Cancel update", value: "cancel" },
665
- ],
666
- },
667
- ]);
668
-
669
- if (action === "cancel") {
670
- console.log("Update cancelled.");
671
- return;
672
- }
673
-
674
- if (action === "backup") {
675
- spinner.start("Backing up modified files...");
676
- for (const file of modifiedFiles) {
677
- const filePath = path.join(installDir, file);
678
- const backupPath = await fileManager.backupFile(filePath);
679
- console.log(
680
- chalk.dim(` Backed up: ${file} → ${path.basename(backupPath)}`)
681
- );
682
- }
683
- }
684
- }
685
-
686
- // Perform update by re-running installation
687
- spinner.text = versionCompare === 0 ? "Reinstalling files..." : "Updating files...";
688
- const config = {
689
- installType: manifest.install_type,
690
- agent: manifest.agent,
691
- directory: installDir,
692
- ides: newConfig?.ides || manifest.ides_setup || [],
693
- };
694
-
695
- await this.performFreshInstall(config, installDir, spinner, { isUpdate: true });
696
-
697
- // Clean up .yml files that now have .yaml counterparts
698
- spinner.text = "Cleaning up legacy .yml files...";
699
- await this.cleanupLegacyYmlFiles(installDir, spinner);
700
- } catch (error) {
701
- spinner.fail("Update failed");
702
- throw error;
703
- }
704
- }
705
-
706
- async performRepair(config, installDir, manifest, integrity, spinner) {
707
- spinner.start("Preparing to repair installation...");
708
-
709
- try {
710
- // Back up modified files
711
- if (integrity.modified.length > 0) {
712
- spinner.text = "Backing up modified files...";
713
- for (const file of integrity.modified) {
714
- const filePath = path.join(installDir, file);
715
- if (await fileManager.pathExists(filePath)) {
716
- const backupPath = await fileManager.backupFile(filePath);
717
- console.log(chalk.dim(` Backed up: ${file} → ${path.basename(backupPath)}`));
718
- }
719
- }
720
- }
721
-
722
- // Restore missing and modified files
723
- spinner.text = "Restoring files...";
724
- const sourceBase = resourceLocator.getBmadCorePath();
725
- const filesToRestore = [...integrity.missing, ...integrity.modified];
726
-
727
- for (const file of filesToRestore) {
728
- // Skip the manifest file itself
729
- if (file.endsWith('install-manifest.yaml')) continue;
730
-
731
- const relativePath = file.replace('.bmad-core/', '');
732
- const destPath = path.join(installDir, file);
733
-
734
- // Check if this is a common/ file that needs special processing
735
- const commonBase = path.dirname(path.dirname(path.dirname(path.dirname(__filename))));
736
- const commonSourcePath = path.join(commonBase, 'common', relativePath);
737
-
738
- if (await fileManager.pathExists(commonSourcePath)) {
739
- // This is a common/ file - needs template processing
740
- const fs = require('fs').promises;
741
- const content = await fs.readFile(commonSourcePath, 'utf8');
742
- const updatedContent = content.replace(/\{root\}/g, '.bmad-core');
743
- await fileManager.ensureDirectory(path.dirname(destPath));
744
- await fs.writeFile(destPath, updatedContent, 'utf8');
745
- spinner.text = `Restored: ${file}`;
746
- } else {
747
- // Regular file from bmad-core
748
- const sourcePath = path.join(sourceBase, relativePath);
749
- if (await fileManager.pathExists(sourcePath)) {
750
- await fileManager.copyFile(sourcePath, destPath);
751
- spinner.text = `Restored: ${file}`;
752
-
753
- // If this is a .yaml file, check for and remove corresponding .yml file
754
- if (file.endsWith('.yaml')) {
755
- const ymlFile = file.replace(/\.yaml$/, '.yml');
756
- const ymlPath = path.join(installDir, ymlFile);
757
- if (await fileManager.pathExists(ymlPath)) {
758
- const fs = require('fs').promises;
759
- await fs.unlink(ymlPath);
760
- console.log(chalk.dim(` Removed legacy: ${ymlFile} (replaced by ${file})`));
761
- }
762
- }
763
- } else {
764
- console.warn(chalk.yellow(` Warning: Source file not found: ${file}`));
765
- }
766
- }
767
- }
768
-
769
- // Clean up .yml files that now have .yaml counterparts
770
- spinner.text = "Cleaning up legacy .yml files...";
771
- await this.cleanupLegacyYmlFiles(installDir, spinner);
772
-
773
- spinner.succeed("Repair completed successfully!");
774
-
775
- // Show summary
776
- console.log(chalk.green("\n✓ Installation repaired!"));
777
- if (integrity.missing.length > 0) {
778
- console.log(chalk.green(` Restored ${integrity.missing.length} missing files`));
779
- }
780
- if (integrity.modified.length > 0) {
781
- console.log(chalk.green(` Restored ${integrity.modified.length} modified files (backups created)`));
782
- }
783
-
784
- // Warning for Cursor custom modes if agents were repaired
785
- const ides = manifest.ides_setup || [];
786
- if (ides.includes('cursor')) {
787
- console.log(chalk.yellow.bold("\n⚠️ IMPORTANT: Cursor Custom Modes Update Required"));
788
- console.log(chalk.yellow("Since agent files have been repaired, you need to update any custom agent modes configured in the Cursor custom agent GUI per the Cursor docs."));
789
- }
790
-
791
- } catch (error) {
792
- spinner.fail("Repair failed");
793
- throw error;
794
- }
795
- }
796
-
797
- async performReinstall(config, installDir, spinner) {
798
- spinner.start("Preparing to reinstall BMad Method...");
799
-
800
- // Remove existing .bmad-core
801
- const bmadCorePath = path.join(installDir, ".bmad-core");
802
- if (await fileManager.pathExists(bmadCorePath)) {
803
- spinner.text = "Removing existing installation...";
804
- await fileManager.removeDirectory(bmadCorePath);
805
- }
806
-
807
- spinner.text = "Installing fresh copy...";
808
- const result = await this.performFreshInstall(config, installDir, spinner, { isUpdate: true });
809
-
810
- // Clean up .yml files that now have .yaml counterparts
811
- spinner.text = "Cleaning up legacy .yml files...";
812
- await this.cleanupLegacyYmlFiles(installDir, spinner);
813
-
814
- return result;
815
- }
816
-
817
- showSuccessMessage(config, installDir, options = {}) {
818
- console.log(chalk.green("\n✓ BMad Method installed successfully!\n"));
819
-
820
- const ides = config.ides || (config.ide ? [config.ide] : []);
821
- if (ides.length > 0) {
822
- for (const ide of ides) {
823
- const ideConfig = configLoader.getIdeConfiguration(ide);
824
- if (ideConfig?.instructions) {
825
- console.log(
826
- chalk.bold(`To use BMad agents in ${ideConfig.name}:`)
827
- );
828
- console.log(ideConfig.instructions);
829
- }
830
- }
831
- } else {
832
- console.log(chalk.yellow("No IDE configuration was set up."));
833
- console.log(
834
- "You can manually configure your IDE using the agent files in:",
835
- installDir
836
- );
837
- }
838
-
839
- // Information about installation components
840
- console.log(chalk.bold("\n🎯 Installation Summary:"));
841
- if (config.installType !== "expansion-only") {
842
- console.log(chalk.green("✓ .bmad-core framework installed with all agents and workflows"));
843
- }
844
-
845
- if (config.expansionPacks && config.expansionPacks.length > 0) {
846
- console.log(chalk.green(`✓ Expansion packs installed:`));
847
- for (const packId of config.expansionPacks) {
848
- console.log(chalk.green(` - ${packId} → .${packId}/`));
849
- }
850
- }
851
-
852
- if (config.includeWebBundles && config.webBundlesDirectory) {
853
- const bundleInfo = this.getWebBundleInfo(config);
854
- // Resolve the web bundles directory for display
855
- const originalCwd = process.env.INIT_CWD || process.env.PWD || process.cwd();
856
- const resolvedWebBundlesDir = path.isAbsolute(config.webBundlesDirectory)
857
- ? config.webBundlesDirectory
858
- : path.resolve(originalCwd, config.webBundlesDirectory);
859
- console.log(chalk.green(`✓ Web bundles (${bundleInfo}) installed to: ${resolvedWebBundlesDir}`));
860
- }
861
-
862
- if (ides.length > 0) {
863
- const ideNames = ides.map(ide => {
864
- const ideConfig = configLoader.getIdeConfiguration(ide);
865
- return ideConfig?.name || ide;
866
- }).join(", ");
867
- console.log(chalk.green(`✓ IDE rules and configurations set up for: ${ideNames}`));
868
- }
869
-
870
-
871
-
872
- // Information about web bundles
873
- if (!config.includeWebBundles) {
874
- console.log(chalk.bold("\n📦 Web Bundles Available:"));
875
- console.log("Pre-built web bundles are available and can be added later:");
876
- console.log(chalk.cyan(" Run the installer again to add them to your project"));
877
- console.log("These bundles work independently and can be shared, moved, or used");
878
- console.log("in other projects as standalone files.");
879
- }
880
-
881
- if (config.installType === "single-agent") {
882
- console.log(
883
- chalk.dim(
884
- "\nNeed other agents? Run: npx bmad-method install --agent=<name>"
885
- )
886
- );
887
- console.log(
888
- chalk.dim("Need everything? Run: npx bmad-method install --full")
889
- );
890
- }
891
-
892
- // Warning for Cursor custom modes if agents were updated
893
- if (options.isUpdate && ides.includes('cursor')) {
894
- console.log(chalk.yellow.bold("\n⚠️ IMPORTANT: Cursor Custom Modes Update Required"));
895
- console.log(chalk.yellow("Since agents have been updated, you need to update any custom agent modes configured in the Cursor custom agent GUI per the Cursor docs."));
896
- }
897
-
898
- // Important notice to read the user guide
899
- console.log(chalk.red.bold("\n📖 IMPORTANT: Please read the user guide installed at .bmad-core/user-guide.md"));
900
- console.log(chalk.red("This guide contains essential information about the BMad workflow and how to use the agents effectively."));
901
- }
902
-
903
- // Legacy method for backward compatibility
904
- async update() {
905
- console.log(chalk.yellow('The "update" command is deprecated.'));
906
- console.log(
907
- 'Please use "install" instead - it will detect and offer to update existing installations.'
908
- );
909
-
910
- const installDir = await this.findInstallation();
911
- if (installDir) {
912
- const config = {
913
- installType: "full",
914
- directory: path.dirname(installDir),
915
- ide: null,
916
- };
917
- return await this.install(config);
918
- }
919
- console.log(chalk.red("No BMad installation found."));
920
- }
921
-
922
- async listAgents() {
923
- const agents = await resourceLocator.getAvailableAgents();
924
-
925
- console.log(chalk.bold("\nAvailable BMad Agents:\n"));
926
-
927
- for (const agent of agents) {
928
- console.log(chalk.cyan(` ${agent.id.padEnd(20)}`), agent.description);
929
- }
930
-
931
- console.log(
932
- chalk.dim("\nInstall with: npx bmad-method install --agent=<id>\n")
933
- );
934
- }
935
-
936
- async listExpansionPacks() {
937
- const expansionPacks = await resourceLocator.getExpansionPacks();
938
-
939
- console.log(chalk.bold("\nAvailable BMad Expansion Packs:\n"));
940
-
941
- if (expansionPacks.length === 0) {
942
- console.log(chalk.yellow("No expansion packs found."));
943
- return;
944
- }
945
-
946
- for (const pack of expansionPacks) {
947
- console.log(chalk.cyan(` ${pack.id.padEnd(20)}`),
948
- `${pack.name} v${pack.version}`);
949
- console.log(chalk.dim(` ${' '.repeat(22)}${pack.description}`));
950
- if (pack.author && pack.author !== 'Unknown') {
951
- console.log(chalk.dim(` ${' '.repeat(22)}by ${pack.author}`));
952
- }
953
- console.log();
954
- }
955
-
956
- console.log(
957
- chalk.dim("Install with: npx bmad-method install --full --expansion-packs <id>\n")
958
- );
959
- }
960
-
961
- async showStatus() {
962
- const installDir = await this.findInstallation();
963
-
964
- if (!installDir) {
965
- console.log(
966
- chalk.yellow("No BMad installation found in current directory tree")
967
- );
968
- return;
969
- }
970
-
971
- const manifest = await fileManager.readManifest(installDir);
972
-
973
- if (!manifest) {
974
- console.log(chalk.red("Invalid installation - manifest not found"));
975
- return;
976
- }
977
-
978
- console.log(chalk.bold("\nBMad Installation Status:\n"));
979
- console.log(` Directory: ${installDir}`);
980
- console.log(` Version: ${manifest.version}`);
981
- console.log(
982
- ` Installed: ${new Date(
983
- manifest.installed_at
984
- ).toLocaleDateString()}`
985
- );
986
- console.log(` Type: ${manifest.install_type}`);
987
-
988
- if (manifest.agent) {
989
- console.log(` Agent: ${manifest.agent}`);
990
- }
991
-
992
- if (manifest.ides_setup && manifest.ides_setup.length > 0) {
993
- console.log(` IDE Setup: ${manifest.ides_setup.join(', ')}`);
994
- }
995
-
996
- console.log(` Total Files: ${manifest.files.length}`);
997
-
998
- // Check for modifications
999
- const modifiedFiles = await fileManager.checkModifiedFiles(
1000
- installDir,
1001
- manifest
1002
- );
1003
- if (modifiedFiles.length > 0) {
1004
- console.log(chalk.yellow(` Modified Files: ${modifiedFiles.length}`));
1005
- }
1006
-
1007
- console.log("");
1008
- }
1009
-
1010
- async getAvailableAgents() {
1011
- return resourceLocator.getAvailableAgents();
1012
- }
1013
-
1014
- async getAvailableExpansionPacks() {
1015
- return resourceLocator.getExpansionPacks();
1016
- }
1017
-
1018
- async getAvailableTeams() {
1019
- return configLoader.getAvailableTeams();
1020
- }
1021
-
1022
- async installExpansionPacks(installDir, selectedPacks, spinner, config = {}) {
1023
- if (!selectedPacks || selectedPacks.length === 0) {
1024
- return [];
1025
- }
1026
-
1027
- const installedFiles = [];
1028
-
1029
- for (const packId of selectedPacks) {
1030
- spinner.text = `Installing expansion pack: ${packId}...`;
1031
-
1032
- try {
1033
- const expansionPacks = await resourceLocator.getExpansionPacks();
1034
- const pack = expansionPacks.find(p => p.id === packId);
1035
-
1036
- if (!pack) {
1037
- console.warn(`Expansion pack ${packId} not found, skipping...`);
1038
- continue;
1039
- }
1040
-
1041
- // Check if expansion pack already exists
1042
- let expansionDotFolder = path.join(installDir, `.${packId}`);
1043
- const existingManifestPath = path.join(expansionDotFolder, 'install-manifest.yaml');
1044
-
1045
- if (await fileManager.pathExists(existingManifestPath)) {
1046
- spinner.stop();
1047
- const existingManifest = await fileManager.readExpansionPackManifest(installDir, packId);
1048
-
1049
- console.log(chalk.yellow(`\n🔍 Found existing ${pack.name} installation`));
1050
- console.log(` Current version: ${existingManifest.version || 'unknown'}`);
1051
- console.log(` New version: ${pack.version}`);
1052
-
1053
- // Check integrity of existing expansion pack
1054
- const packIntegrity = await fileManager.checkFileIntegrity(installDir, existingManifest);
1055
- const hasPackIntegrityIssues = packIntegrity.missing.length > 0 || packIntegrity.modified.length > 0;
1056
-
1057
- if (hasPackIntegrityIssues) {
1058
- console.log(chalk.red(" ⚠️ Installation issues detected:"));
1059
- if (packIntegrity.missing.length > 0) {
1060
- console.log(chalk.red(` Missing files: ${packIntegrity.missing.length}`));
1061
- }
1062
- if (packIntegrity.modified.length > 0) {
1063
- console.log(chalk.yellow(` Modified files: ${packIntegrity.modified.length}`));
1064
- }
1065
- }
1066
-
1067
- const versionCompare = this.compareVersions(existingManifest.version || '0.0.0', pack.version);
1068
-
1069
- if (versionCompare === 0) {
1070
- console.log(chalk.yellow(' ⚠️ Same version already installed'));
1071
-
1072
- const choices = [];
1073
- if (hasPackIntegrityIssues) {
1074
- choices.push({ name: 'Repair (restore missing/modified files)', value: 'repair' });
1075
- }
1076
- choices.push(
1077
- { name: 'Force reinstall (overwrite)', value: 'overwrite' },
1078
- { name: 'Skip this expansion pack', value: 'skip' },
1079
- { name: 'Cancel installation', value: 'cancel' }
1080
- );
1081
-
1082
- const { action } = await inquirer.prompt([{
1083
- type: 'list',
1084
- name: 'action',
1085
- message: `${pack.name} v${pack.version} is already installed. What would you like to do?`,
1086
- choices: choices
1087
- }]);
1088
-
1089
- if (action === 'skip') {
1090
- spinner.start();
1091
- continue;
1092
- } else if (action === 'cancel') {
1093
- console.log('Installation cancelled.');
1094
- process.exit(0);
1095
- } else if (action === 'repair') {
1096
- // Repair the expansion pack
1097
- await this.repairExpansionPack(installDir, packId, pack, packIntegrity, spinner);
1098
- continue;
1099
- }
1100
- } else if (versionCompare < 0) {
1101
- console.log(chalk.cyan(' ⬆️ Upgrade available'));
1102
-
1103
- const { proceed } = await inquirer.prompt([{
1104
- type: 'confirm',
1105
- name: 'proceed',
1106
- message: `Upgrade ${pack.name} from v${existingManifest.version} to v${pack.version}?`,
1107
- default: true
1108
- }]);
1109
-
1110
- if (!proceed) {
1111
- spinner.start();
1112
- continue;
1113
- }
1114
- } else {
1115
- console.log(chalk.yellow(' ⬇️ Installed version is newer than available version'));
1116
-
1117
- const { action } = await inquirer.prompt([{
1118
- type: 'list',
1119
- name: 'action',
1120
- message: 'What would you like to do?',
1121
- choices: [
1122
- { name: 'Keep current version', value: 'skip' },
1123
- { name: 'Downgrade to available version', value: 'downgrade' },
1124
- { name: 'Cancel installation', value: 'cancel' }
1125
- ]
1126
- }]);
1127
-
1128
- if (action === 'skip') {
1129
- spinner.start();
1130
- continue;
1131
- } else if (action === 'cancel') {
1132
- console.log('Installation cancelled.');
1133
- process.exit(0);
1134
- }
1135
- }
1136
-
1137
- // If we get here, we're proceeding with installation
1138
- spinner.start(`Removing old ${pack.name} installation...`);
1139
- await fileManager.removeDirectory(expansionDotFolder);
1140
- }
1141
-
1142
- const expansionPackDir = pack.path;
1143
-
1144
- // Ensure dedicated dot folder exists for this expansion pack
1145
- expansionDotFolder = path.join(installDir, `.${packId}`);
1146
- await fileManager.ensureDirectory(expansionDotFolder);
1147
-
1148
- // Define the folders to copy from expansion packs
1149
- const foldersToSync = [
1150
- 'agents',
1151
- 'agent-teams',
1152
- 'templates',
1153
- 'tasks',
1154
- 'checklists',
1155
- 'workflows',
1156
- 'data',
1157
- 'utils',
1158
- 'schemas'
1159
- ];
1160
-
1161
- // Copy each folder if it exists
1162
- for (const folder of foldersToSync) {
1163
- const sourceFolder = path.join(expansionPackDir, folder);
1164
-
1165
- // Check if folder exists in expansion pack
1166
- if (await fileManager.pathExists(sourceFolder)) {
1167
- // Get all files in this folder
1168
- const files = await resourceLocator.findFiles('**/*', {
1169
- cwd: sourceFolder,
1170
- nodir: true
1171
- });
1172
-
1173
- // Copy each file to the expansion pack's dot folder with {root} replacement
1174
- for (const file of files) {
1175
- const sourcePath = path.join(sourceFolder, file);
1176
- const destPath = path.join(expansionDotFolder, folder, file);
1177
-
1178
- const needsRootReplacement = file.endsWith('.md') || file.endsWith('.yaml') || file.endsWith('.yml');
1179
- let success = false;
1180
-
1181
- if (needsRootReplacement) {
1182
- success = await fileManager.copyFileWithRootReplacement(sourcePath, destPath, `.${packId}`);
1183
- } else {
1184
- success = await fileManager.copyFile(sourcePath, destPath);
1185
- }
1186
-
1187
- if (success) {
1188
- installedFiles.push(path.join(`.${packId}`, folder, file));
1189
- }
1190
- }
1191
- }
1192
- }
1193
-
1194
- // Copy config.yaml with {root} replacement
1195
- const configPath = path.join(expansionPackDir, 'config.yaml');
1196
- if (await fileManager.pathExists(configPath)) {
1197
- const configDestPath = path.join(expansionDotFolder, 'config.yaml');
1198
- if (await fileManager.copyFileWithRootReplacement(configPath, configDestPath, `.${packId}`)) {
1199
- installedFiles.push(path.join(`.${packId}`, 'config.yaml'));
1200
- }
1201
- }
1202
-
1203
- // Copy README if it exists with {root} replacement
1204
- const readmePath = path.join(expansionPackDir, 'README.md');
1205
- if (await fileManager.pathExists(readmePath)) {
1206
- const readmeDestPath = path.join(expansionDotFolder, 'README.md');
1207
- if (await fileManager.copyFileWithRootReplacement(readmePath, readmeDestPath, `.${packId}`)) {
1208
- installedFiles.push(path.join(`.${packId}`, 'README.md'));
1209
- }
1210
- }
1211
-
1212
- // Copy common/ items to expansion pack folder
1213
- spinner.text = `Copying common utilities to ${packId}...`;
1214
- await this.copyCommonItems(installDir, `.${packId}`, spinner);
1215
-
1216
- // Check and resolve core dependencies
1217
- await this.resolveExpansionPackCoreDependencies(installDir, expansionDotFolder, packId, pack, spinner);
1218
-
1219
- // Check and resolve core agents referenced by teams
1220
- await this.resolveExpansionPackCoreAgents(installDir, expansionDotFolder, packId, spinner);
1221
-
1222
- // Create manifest for this expansion pack
1223
- spinner.text = `Creating manifest for ${packId}...`;
1224
- const expansionConfig = {
1225
- installType: 'expansion-pack',
1226
- expansionPackId: packId,
1227
- expansionPackName: pack.name,
1228
- expansionPackVersion: pack.version,
1229
- ides: config.ides || [] // Use ides_setup instead of ide_setup
1230
- };
1231
-
1232
- // Get all files installed in this expansion pack
1233
- const foundFiles = await resourceLocator.findFiles('**/*', {
1234
- cwd: expansionDotFolder,
1235
- nodir: true
1236
- });
1237
- const expansionPackFiles = foundFiles.map(f => path.join(`.${packId}`, f));
1238
-
1239
- await fileManager.createExpansionPackManifest(installDir, packId, expansionConfig, expansionPackFiles);
1240
-
1241
- console.log(chalk.green(`✓ Installed expansion pack: ${pack.name} to ${`.${packId}`}`));
1242
- } catch (error) {
1243
- console.error(`Failed to install expansion pack ${packId}: ${error.message}`);
1244
- console.error(`Stack trace: ${error.stack}`);
1245
- }
1246
- }
1247
-
1248
- return installedFiles;
1249
- }
1250
-
1251
- async resolveExpansionPackCoreDependencies(installDir, expansionDotFolder, packId, pack, spinner) {
1252
- const yaml = require('js-yaml');
1253
- const fs = require('fs').promises;
1254
-
1255
- // Find all agent files in the expansion pack
1256
- const agentFiles = await resourceLocator.findFiles('agents/*.md', {
1257
- cwd: expansionDotFolder
1258
- });
1259
-
1260
- for (const agentFile of agentFiles) {
1261
- const agentPath = path.join(expansionDotFolder, agentFile);
1262
- const agentContent = await fs.readFile(agentPath, 'utf8');
1263
-
1264
- // Extract YAML frontmatter to check dependencies
1265
- const yamlContent = extractYamlFromAgent(agentContent);
1266
- if (yamlContent) {
1267
- try {
1268
- const agentConfig = yaml.load(yamlContent);
1269
- const dependencies = agentConfig.dependencies || {};
1270
-
1271
- // Check for core dependencies (those that don't exist in the expansion pack)
1272
- for (const depType of ['tasks', 'templates', 'checklists', 'workflows', 'utils', 'data']) {
1273
- const deps = dependencies[depType] || [];
1274
-
1275
- for (const dep of deps) {
1276
- const depFileName = dep.endsWith('.md') || dep.endsWith('.yaml') ? dep :
1277
- (depType === 'templates' ? `${dep}.yaml` : `${dep}.md`);
1278
- const expansionDepPath = path.join(expansionDotFolder, depType, depFileName);
1279
-
1280
- // Check if dependency exists in expansion pack dot folder
1281
- if (!(await fileManager.pathExists(expansionDepPath))) {
1282
- // Try to find it in expansion pack source
1283
- const sourceDepPath = path.join(pack.path, depType, depFileName);
1284
-
1285
- if (await fileManager.pathExists(sourceDepPath)) {
1286
- // Copy from expansion pack source
1287
- spinner.text = `Copying ${packId} dependency ${dep}...`;
1288
- const destPath = path.join(expansionDotFolder, depType, depFileName);
1289
- await fileManager.copyFileWithRootReplacement(sourceDepPath, destPath, `.${packId}`);
1290
- console.log(chalk.dim(` Added ${packId} dependency: ${depType}/${depFileName}`));
1291
- } else {
1292
- // Try to find it in core
1293
- const coreDepPath = path.join(resourceLocator.getBmadCorePath(), depType, depFileName);
1294
-
1295
- if (await fileManager.pathExists(coreDepPath)) {
1296
- spinner.text = `Copying core dependency ${dep} for ${packId}...`;
1297
-
1298
- // Copy from core to expansion pack dot folder with {root} replacement
1299
- const destPath = path.join(expansionDotFolder, depType, depFileName);
1300
- await fileManager.copyFileWithRootReplacement(coreDepPath, destPath, `.${packId}`);
1301
-
1302
- console.log(chalk.dim(` Added core dependency: ${depType}/${depFileName}`));
1303
- } else {
1304
- console.warn(chalk.yellow(` Warning: Dependency ${depType}/${dep} not found in core or expansion pack`));
1305
- }
1306
- }
1307
- }
1308
- }
1309
- }
1310
- } catch (error) {
1311
- console.warn(` Warning: Could not parse agent dependencies: ${error.message}`);
1312
- }
1313
- }
1314
- }
1315
- }
1316
-
1317
- async resolveExpansionPackCoreAgents(installDir, expansionDotFolder, packId, spinner) {
1318
- const yaml = require('js-yaml');
1319
- const fs = require('fs').promises;
1320
-
1321
- // Find all team files in the expansion pack
1322
- const teamFiles = await resourceLocator.findFiles('agent-teams/*.yaml', {
1323
- cwd: expansionDotFolder
1324
- });
1325
-
1326
- // Also get existing agents in the expansion pack
1327
- const existingAgents = new Set();
1328
- const agentFiles = await resourceLocator.findFiles('agents/*.md', {
1329
- cwd: expansionDotFolder
1330
- });
1331
- for (const agentFile of agentFiles) {
1332
- const agentName = path.basename(agentFile, '.md');
1333
- existingAgents.add(agentName);
1334
- }
1335
-
1336
- // Process each team file
1337
- for (const teamFile of teamFiles) {
1338
- const teamPath = path.join(expansionDotFolder, teamFile);
1339
- const teamContent = await fs.readFile(teamPath, 'utf8');
1340
-
1341
- try {
1342
- const teamConfig = yaml.load(teamContent);
1343
- const agents = teamConfig.agents || [];
1344
-
1345
- // Add bmad-orchestrator if not present (required for all teams)
1346
- if (!agents.includes('bmad-orchestrator')) {
1347
- agents.unshift('bmad-orchestrator');
1348
- }
1349
-
1350
- // Check each agent in the team
1351
- for (const agentId of agents) {
1352
- if (!existingAgents.has(agentId)) {
1353
- // Agent not in expansion pack, try to get from core
1354
- const coreAgentPath = path.join(resourceLocator.getBmadCorePath(), 'agents', `${agentId}.md`);
1355
-
1356
- if (await fileManager.pathExists(coreAgentPath)) {
1357
- spinner.text = `Copying core agent ${agentId} for ${packId}...`;
1358
-
1359
- // Copy agent file with {root} replacement
1360
- const destPath = path.join(expansionDotFolder, 'agents', `${agentId}.md`);
1361
- await fileManager.copyFileWithRootReplacement(coreAgentPath, destPath, `.${packId}`);
1362
- existingAgents.add(agentId);
1363
-
1364
- console.log(chalk.dim(` Added core agent: ${agentId}`));
1365
-
1366
- // Now resolve this agent's dependencies too
1367
- const agentContent = await fs.readFile(coreAgentPath, 'utf8');
1368
- const yamlContent = extractYamlFromAgent(agentContent, true);
1369
-
1370
- if (yamlContent) {
1371
- try {
1372
-
1373
- const agentConfig = yaml.load(yamlContent);
1374
- const dependencies = agentConfig.dependencies || {};
1375
-
1376
- // Copy all dependencies for this agent
1377
- for (const depType of ['tasks', 'templates', 'checklists', 'workflows', 'utils', 'data']) {
1378
- const deps = dependencies[depType] || [];
1379
-
1380
- for (const dep of deps) {
1381
- const depFileName = dep.endsWith('.md') || dep.endsWith('.yaml') ? dep :
1382
- (depType === 'templates' ? `${dep}.yaml` : `${dep}.md`);
1383
- const expansionDepPath = path.join(expansionDotFolder, depType, depFileName);
1384
-
1385
- // Check if dependency exists in expansion pack
1386
- if (!(await fileManager.pathExists(expansionDepPath))) {
1387
- // Try to find it in core
1388
- const coreDepPath = path.join(resourceLocator.getBmadCorePath(), depType, depFileName);
1389
-
1390
- if (await fileManager.pathExists(coreDepPath)) {
1391
- const destDepPath = path.join(expansionDotFolder, depType, depFileName);
1392
- await fileManager.copyFileWithRootReplacement(coreDepPath, destDepPath, `.${packId}`);
1393
- console.log(chalk.dim(` Added agent dependency: ${depType}/${depFileName}`));
1394
- } else {
1395
- // Try common folder
1396
- const sourceBase = path.dirname(path.dirname(path.dirname(path.dirname(__filename)))); // Go up to project root
1397
- const commonDepPath = path.join(sourceBase, 'common', depType, depFileName);
1398
- if (await fileManager.pathExists(commonDepPath)) {
1399
- const destDepPath = path.join(expansionDotFolder, depType, depFileName);
1400
- await fileManager.copyFile(commonDepPath, destDepPath);
1401
- console.log(chalk.dim(` Added agent dependency from common: ${depType}/${depFileName}`));
1402
- }
1403
- }
1404
- }
1405
- }
1406
- }
1407
- } catch (error) {
1408
- console.warn(` Warning: Could not parse agent ${agentId} dependencies: ${error.message}`);
1409
- }
1410
- }
1411
- } else {
1412
- console.warn(chalk.yellow(` Warning: Core agent ${agentId} not found for team ${path.basename(teamFile, '.yaml')}`));
1413
- }
1414
- }
1415
- }
1416
- } catch (error) {
1417
- console.warn(` Warning: Could not parse team file ${teamFile}: ${error.message}`);
1418
- }
1419
- }
1420
- }
1421
-
1422
- getWebBundleInfo(config) {
1423
- const webBundleType = config.webBundleType || 'all';
1424
-
1425
- switch (webBundleType) {
1426
- case 'all':
1427
- return 'all bundles';
1428
- case 'agents':
1429
- return 'individual agents only';
1430
- case 'teams':
1431
- return config.selectedWebBundleTeams ?
1432
- `teams: ${config.selectedWebBundleTeams.join(', ')}` :
1433
- 'selected teams';
1434
- case 'custom': {
1435
- const parts = [];
1436
- if (config.selectedWebBundleTeams && config.selectedWebBundleTeams.length > 0) {
1437
- parts.push(`teams: ${config.selectedWebBundleTeams.join(', ')}`);
1438
- }
1439
- if (config.includeIndividualAgents) {
1440
- parts.push('individual agents');
1441
- }
1442
- return parts.length > 0 ? parts.join(' + ') : 'custom selection';
1443
- }
1444
- default:
1445
- return 'selected bundles';
1446
- }
1447
- }
1448
-
1449
- async installWebBundles(webBundlesDirectory, config, spinner) {
1450
-
1451
- try {
1452
- // Find the dist directory in the BMad installation
1453
- const distDir = configLoader.getDistPath();
1454
-
1455
- if (!(await fileManager.pathExists(distDir))) {
1456
- console.warn('Web bundles not found. Run "npm run build" to generate them.');
1457
- return;
1458
- }
1459
-
1460
- // Ensure web bundles directory exists
1461
- await fileManager.ensureDirectory(webBundlesDirectory);
1462
-
1463
- const webBundleType = config.webBundleType || 'all';
1464
-
1465
- if (webBundleType === 'all') {
1466
- // Copy the entire dist directory structure
1467
- await fileManager.copyDirectory(distDir, webBundlesDirectory);
1468
- console.log(chalk.green(`✓ Installed all web bundles to: ${webBundlesDirectory}`));
1469
- } else {
1470
- let copiedCount = 0;
1471
-
1472
- // Copy specific selections based on type
1473
- if (webBundleType === 'agents' || (webBundleType === 'custom' && config.includeIndividualAgents)) {
1474
- const agentsSource = path.join(distDir, 'agents');
1475
- const agentsTarget = path.join(webBundlesDirectory, 'agents');
1476
- if (await fileManager.pathExists(agentsSource)) {
1477
- await fileManager.copyDirectory(agentsSource, agentsTarget);
1478
- console.log(chalk.green(`✓ Copied individual agent bundles`));
1479
- copiedCount += 10; // Approximate count for agents
1480
- }
1481
- }
1482
-
1483
- if (webBundleType === 'teams' || webBundleType === 'custom') {
1484
- if (config.selectedWebBundleTeams && config.selectedWebBundleTeams.length > 0) {
1485
- const teamsSource = path.join(distDir, 'teams');
1486
- const teamsTarget = path.join(webBundlesDirectory, 'teams');
1487
- await fileManager.ensureDirectory(teamsTarget);
1488
-
1489
- for (const teamId of config.selectedWebBundleTeams) {
1490
- const teamFile = `${teamId}.txt`;
1491
- const sourcePath = path.join(teamsSource, teamFile);
1492
- const targetPath = path.join(teamsTarget, teamFile);
1493
-
1494
- if (await fileManager.pathExists(sourcePath)) {
1495
- await fileManager.copyFile(sourcePath, targetPath);
1496
- copiedCount++;
1497
- console.log(chalk.green(`✓ Copied team bundle: ${teamId}`));
1498
- }
1499
- }
1500
- }
1501
- }
1502
-
1503
- // Always copy expansion packs if they exist
1504
- const expansionSource = path.join(distDir, 'expansion-packs');
1505
- const expansionTarget = path.join(webBundlesDirectory, 'expansion-packs');
1506
- if (await fileManager.pathExists(expansionSource)) {
1507
- await fileManager.copyDirectory(expansionSource, expansionTarget);
1508
- console.log(chalk.green(`✓ Copied expansion pack bundles`));
1509
- }
1510
-
1511
- console.log(chalk.green(`✓ Installed ${copiedCount} selected web bundles to: ${webBundlesDirectory}`));
1512
- }
1513
- } catch (error) {
1514
- console.error(`Failed to install web bundles: ${error.message}`);
1515
- }
1516
- }
1517
-
1518
- async copyCommonItems(installDir, targetSubdir, spinner) {
1519
-
1520
- const fs = require('fs').promises;
1521
- const sourceBase = path.dirname(path.dirname(path.dirname(path.dirname(__filename)))); // Go up to project root
1522
- const commonPath = path.join(sourceBase, 'common');
1523
- const targetPath = path.join(installDir, targetSubdir);
1524
- const copiedFiles = [];
1525
-
1526
- // Check if common/ exists
1527
- if (!(await fileManager.pathExists(commonPath))) {
1528
- console.warn('Warning: common/ folder not found');
1529
- return copiedFiles;
1530
- }
1531
-
1532
- // Copy all items from common/ to target
1533
- const commonItems = await resourceLocator.findFiles('**/*', {
1534
- cwd: commonPath,
1535
- nodir: true
1536
- });
1537
-
1538
- for (const item of commonItems) {
1539
- const sourcePath = path.join(commonPath, item);
1540
- const destPath = path.join(targetPath, item);
1541
-
1542
- // Read the file content
1543
- const content = await fs.readFile(sourcePath, 'utf8');
1544
-
1545
- // Replace {root} with the target subdirectory
1546
- const updatedContent = content.replace(/\{root\}/g, targetSubdir);
1547
-
1548
- // Ensure directory exists
1549
- await fileManager.ensureDirectory(path.dirname(destPath));
1550
-
1551
- // Write the updated content
1552
- await fs.writeFile(destPath, updatedContent, 'utf8');
1553
- copiedFiles.push(path.join(targetSubdir, item));
1554
- }
1555
-
1556
- console.log(chalk.dim(` Added ${commonItems.length} common utilities`));
1557
- return copiedFiles;
1558
- }
1559
-
1560
- async detectExpansionPacks(installDir) {
1561
- const expansionPacks = {};
1562
- const glob = require("glob");
1563
-
1564
- // Find all dot folders that might be expansion packs
1565
- const dotFolders = glob.sync(".*", {
1566
- cwd: installDir,
1567
- ignore: [".git", ".git/**", ".bmad-core", ".bmad-core/**"],
1568
- });
1569
-
1570
- for (const folder of dotFolders) {
1571
- const folderPath = path.join(installDir, folder);
1572
- const stats = await fileManager.pathExists(folderPath);
1573
-
1574
- if (stats) {
1575
- // Check if it has a manifest
1576
- const manifestPath = path.join(folderPath, "install-manifest.yaml");
1577
- if (await fileManager.pathExists(manifestPath)) {
1578
- const manifest = await fileManager.readExpansionPackManifest(installDir, folder.substring(1));
1579
- if (manifest) {
1580
- expansionPacks[folder.substring(1)] = {
1581
- path: folderPath,
1582
- manifest: manifest,
1583
- hasManifest: true
1584
- };
1585
- }
1586
- } else {
1587
- // Check if it has a config.yaml (expansion pack without manifest)
1588
- const configPath = path.join(folderPath, "config.yaml");
1589
- if (await fileManager.pathExists(configPath)) {
1590
- expansionPacks[folder.substring(1)] = {
1591
- path: folderPath,
1592
- manifest: null,
1593
- hasManifest: false
1594
- };
1595
- }
1596
- }
1597
- }
1598
- }
1599
-
1600
- return expansionPacks;
1601
- }
1602
-
1603
- async repairExpansionPack(installDir, packId, pack, integrity, spinner) {
1604
- spinner.start(`Repairing ${pack.name}...`);
1605
-
1606
- try {
1607
- const expansionDotFolder = path.join(installDir, `.${packId}`);
1608
-
1609
- // Back up modified files
1610
- if (integrity.modified.length > 0) {
1611
- spinner.text = "Backing up modified files...";
1612
- for (const file of integrity.modified) {
1613
- const filePath = path.join(installDir, file);
1614
- if (await fileManager.pathExists(filePath)) {
1615
- const backupPath = await fileManager.backupFile(filePath);
1616
- console.log(chalk.dim(` Backed up: ${file} → ${path.basename(backupPath)}`));
1617
- }
1618
- }
1619
- }
1620
-
1621
- // Restore missing and modified files
1622
- spinner.text = "Restoring files...";
1623
- const filesToRestore = [...integrity.missing, ...integrity.modified];
1624
-
1625
- for (const file of filesToRestore) {
1626
- // Skip the manifest file itself
1627
- if (file.endsWith('install-manifest.yaml')) continue;
1628
-
1629
- const relativePath = file.replace(`.${packId}/`, '');
1630
- const sourcePath = path.join(pack.path, relativePath);
1631
- const destPath = path.join(installDir, file);
1632
-
1633
- // Check if this is a common/ file that needs special processing
1634
- const commonBase = path.dirname(path.dirname(path.dirname(path.dirname(__filename))));
1635
- const commonSourcePath = path.join(commonBase, 'common', relativePath);
1636
-
1637
- if (await fileManager.pathExists(commonSourcePath)) {
1638
- // This is a common/ file - needs template processing
1639
- const fs = require('fs').promises;
1640
- const content = await fs.readFile(commonSourcePath, 'utf8');
1641
- const updatedContent = content.replace(/\{root\}/g, `.${packId}`);
1642
- await fileManager.ensureDirectory(path.dirname(destPath));
1643
- await fs.writeFile(destPath, updatedContent, 'utf8');
1644
- spinner.text = `Restored: ${file}`;
1645
- } else if (await fileManager.pathExists(sourcePath)) {
1646
- // Regular file from expansion pack
1647
- await fileManager.copyFile(sourcePath, destPath);
1648
- spinner.text = `Restored: ${file}`;
1649
- } else {
1650
- console.warn(chalk.yellow(` Warning: Source file not found: ${file}`));
1651
- }
1652
- }
1653
-
1654
- spinner.succeed(`${pack.name} repaired successfully!`);
1655
-
1656
- // Show summary
1657
- console.log(chalk.green(`\n✓ ${pack.name} repaired!`));
1658
- if (integrity.missing.length > 0) {
1659
- console.log(chalk.green(` Restored ${integrity.missing.length} missing files`));
1660
- }
1661
- if (integrity.modified.length > 0) {
1662
- console.log(chalk.green(` Restored ${integrity.modified.length} modified files (backups created)`));
1663
- }
1664
-
1665
- } catch (error) {
1666
- if (spinner) spinner.fail(`Failed to repair ${pack.name}`);
1667
- console.error(`Error: ${error.message}`);
1668
- }
1669
- }
1670
-
1671
- compareVersions(v1, v2) {
1672
- // Simple semver comparison
1673
- const parts1 = v1.split('.').map(Number);
1674
- const parts2 = v2.split('.').map(Number);
1675
-
1676
- for (let i = 0; i < 3; i++) {
1677
- const part1 = parts1[i] || 0;
1678
- const part2 = parts2[i] || 0;
1679
-
1680
- if (part1 > part2) return 1;
1681
- if (part1 < part2) return -1;
1682
- }
1683
-
1684
- return 0;
1685
- }
1686
-
1687
- async cleanupLegacyYmlFiles(installDir, spinner) {
1688
- const glob = require('glob');
1689
- const fs = require('fs').promises;
1690
-
1691
- try {
1692
- // Find all .yml files in the installation directory
1693
- const ymlFiles = glob.sync('**/*.yml', {
1694
- cwd: installDir,
1695
- ignore: ['**/node_modules/**', '**/.git/**']
1696
- });
1697
-
1698
- let deletedCount = 0;
1699
-
1700
- for (const ymlFile of ymlFiles) {
1701
- // Check if corresponding .yaml file exists
1702
- const yamlFile = ymlFile.replace(/\.yml$/, '.yaml');
1703
- const ymlPath = path.join(installDir, ymlFile);
1704
- const yamlPath = path.join(installDir, yamlFile);
1705
-
1706
- if (await fileManager.pathExists(yamlPath)) {
1707
- // .yaml counterpart exists, delete the .yml file
1708
- await fs.unlink(ymlPath);
1709
- deletedCount++;
1710
- console.log(chalk.dim(` Removed legacy: ${ymlFile} (replaced by ${yamlFile})`));
1711
- }
1712
- }
1713
-
1714
- if (deletedCount > 0) {
1715
- console.log(chalk.green(`✓ Cleaned up ${deletedCount} legacy .yml files`));
1716
- }
1717
-
1718
- } catch (error) {
1719
- console.warn(`Warning: Could not cleanup legacy .yml files: ${error.message}`);
1720
- }
1721
- }
1722
-
1723
- async findInstallation() {
1724
- // Look for .bmad-core in current directory or parent directories
1725
- let currentDir = process.cwd();
1726
-
1727
- while (currentDir !== path.dirname(currentDir)) {
1728
- const bmadDir = path.join(currentDir, ".bmad-core");
1729
- const manifestPath = path.join(bmadDir, "install-manifest.yaml");
1730
-
1731
- if (await fileManager.pathExists(manifestPath)) {
1732
- return bmadDir;
1733
- }
1734
-
1735
- currentDir = path.dirname(currentDir);
1736
- }
1737
-
1738
- // Also check if we're inside a .bmad-core directory
1739
- if (path.basename(process.cwd()) === ".bmad-core") {
1740
- const manifestPath = path.join(process.cwd(), "install-manifest.yaml");
1741
- if (await fileManager.pathExists(manifestPath)) {
1742
- return process.cwd();
1743
- }
1744
- }
1745
-
1746
- return null;
1747
- }
1748
-
1749
- async flatten(options) {
1750
- const { spawn } = require('child_process');
1751
- const flattenerPath = path.join(__dirname, '..', '..', 'flattener', 'main.js');
1752
-
1753
- const args = [];
1754
- if (options.input) {
1755
- args.push('--input', options.input);
1756
- }
1757
- if (options.output) {
1758
- args.push('--output', options.output);
1759
- }
1760
-
1761
- const child = spawn('node', [flattenerPath, ...args], {
1762
- stdio: 'inherit',
1763
- cwd: process.cwd()
1764
- });
1765
-
1766
- child.on('exit', (code) => {
1767
- process.exit(code);
1768
- });
1769
- }
1770
- }
1771
-
1772
- module.exports = new Installer();