bmad-method 6.0.0-alpha.11 → 6.0.0-alpha.13
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.
- package/.github/workflows/bundle-latest.yaml +79 -27
- package/CHANGELOG.md +167 -1
- package/README.md +3 -1
- package/custom/src/agents/commit-poet/commit-poet.agent.yaml +129 -0
- package/custom/src/agents/commit-poet/installation-guide.md +36 -0
- package/custom/src/agents/toolsmith/installation-guide.md +36 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
- package/custom/src/agents/toolsmith/toolsmith.agent.yaml +108 -0
- package/docs/custom-agent-installation.md +31 -17
- package/docs/ide-info/rovo-dev.md +388 -0
- package/docs/index.md +6 -81
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +1 -1
- package/package.json +3 -2
- package/src/core/agents/bmad-master.agent.yaml +1 -1
- package/src/core/agents/bmad-web-orchestrator.agent.xml +1 -1
- package/src/core/tasks/advanced-elicitation-methods.csv +51 -21
- package/src/core/tasks/advanced-elicitation.xml +18 -8
- package/src/core/tasks/workflow.xml +36 -71
- package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +196 -0
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +121 -0
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +224 -0
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +236 -0
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +208 -0
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +263 -0
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +339 -0
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +302 -0
- package/src/core/workflows/brainstorming/template.md +13 -104
- package/src/core/workflows/brainstorming/workflow.md +51 -0
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +203 -0
- package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +159 -0
- package/src/core/workflows/party-mode/workflow.md +207 -0
- package/src/modules/bmb/README.md +153 -86
- package/src/modules/bmb/_module-installer/install-config.yaml +3 -3
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +45 -31
- package/src/modules/bmb/docs/{agent-menu-patterns.md → agents/agent-menu-patterns.md} +1 -1
- package/src/modules/bmb/docs/agents/kb.csv +0 -0
- package/src/modules/bmb/docs/{module-agent-architecture.md → agents/module-agent-architecture.md} +1 -1
- package/src/modules/bmb/docs/{simple-agent-architecture.md → agents/simple-agent-architecture.md} +1 -1
- package/src/modules/bmb/docs/workflows/architecture.md +220 -0
- package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +19 -0
- package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +206 -0
- package/src/modules/bmb/docs/workflows/index.md +45 -0
- package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
- package/src/modules/bmb/docs/workflows/kb.csv +0 -0
- package/src/modules/bmb/docs/workflows/step-template.md +283 -0
- package/src/modules/bmb/docs/workflows/terms.md +97 -0
- package/src/modules/bmb/docs/workflows/workflow-template.md +152 -0
- package/src/modules/bmb/reference/agents/module-examples/README.md +1 -1
- package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +2 -2
- package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +1 -1
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
- package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +17 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/README.md +3 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +50 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
- package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +305 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +210 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +260 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +237 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +231 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +224 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +234 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +179 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +197 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +180 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-11-celebrate.md +222 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_commands.md +21 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_persona.md +25 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_purpose_and_type.md +23 -0
- package/src/modules/bmb/workflows/create-agent/workflow.md +91 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +168 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +233 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-overview.md +127 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-04-core-tools.md +145 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-05-memory-requirements.md +136 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-06-external-tools.md +154 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-07-installation-guidance.md +159 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-08-tools-summary.md +167 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-09-design.md +239 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-10-plan-review.md +215 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-11-build.md +262 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-12-review.md +270 -0
- package/src/modules/bmb/workflows/create-workflow/templates/build-summary.md +36 -0
- package/src/modules/bmb/workflows/create-workflow/templates/completion-section.md +39 -0
- package/src/modules/bmb/workflows/create-workflow/templates/content-template.md +21 -0
- package/src/modules/bmb/workflows/create-workflow/templates/design-section.md +53 -0
- package/src/modules/bmb/workflows/create-workflow/templates/project-info.md +18 -0
- package/src/modules/bmb/workflows/create-workflow/templates/requirements-section.md +47 -0
- package/src/modules/bmb/workflows/create-workflow/templates/review-section.md +56 -0
- package/src/modules/bmb/workflows/create-workflow/templates/step-file.md +139 -0
- package/src/modules/bmb/workflows/create-workflow/templates/workflow-plan.md +54 -0
- package/src/modules/bmb/workflows/create-workflow/templates/workflow.md +58 -0
- package/src/modules/bmb/workflows/create-workflow/workflow.md +58 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
- package/src/modules/bmb/workflows/edit-agent/workflow.md +58 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +221 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +51 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
- package/src/modules/bmb/workflows/edit-workflow/workflow.md +58 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +58 -0
- package/src/modules/bmgd/agents/game-architect.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-designer.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-dev.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +1 -1
- package/src/modules/bmm/_module-installer/install-config.yaml +9 -15
- package/src/modules/bmm/agents/analyst.agent.yaml +14 -14
- package/src/modules/bmm/agents/architect.agent.yaml +12 -10
- package/src/modules/bmm/agents/dev.agent.yaml +20 -16
- package/src/modules/bmm/agents/pm.agent.yaml +13 -31
- package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +36 -0
- package/src/modules/bmm/agents/sm.agent.yaml +13 -31
- package/src/modules/bmm/agents/tea.agent.yaml +10 -7
- package/src/modules/bmm/agents/tech-writer.agent.yaml +7 -20
- package/src/modules/bmm/agents/ux-designer.agent.yaml +12 -10
- package/src/modules/bmm/data/README.md +29 -0
- package/src/modules/bmm/data/project-context-template.md +40 -0
- package/src/modules/bmm/docs/README.md +21 -9
- package/src/modules/bmm/docs/agents-guide.md +69 -23
- package/src/modules/bmm/docs/bmad-quick-flow.md +528 -0
- package/src/modules/bmm/docs/brownfield-guide.md +9 -10
- package/src/modules/bmm/docs/enterprise-agentic-development.md +1 -1
- package/src/modules/bmm/docs/glossary.md +5 -5
- package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +909 -1654
- package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +2 -2
- package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
- package/src/modules/bmm/docs/scale-adaptive-system.md +5 -5
- package/src/modules/bmm/docs/test-architecture.md +84 -18
- package/src/modules/bmm/docs/workflows-analysis.md +36 -140
- package/src/modules/bmm/docs/workflows-implementation.md +32 -157
- package/src/modules/bmm/docs/workflows-planning.md +51 -212
- package/src/modules/bmm/docs/workflows-solutioning.md +24 -69
- package/src/modules/bmm/teams/default-party.csv +15 -14
- package/src/modules/bmm/teams/team-fullstack.yaml +0 -1
- package/src/modules/bmm/testarch/knowledge/api-request.md +303 -0
- package/src/modules/bmm/testarch/knowledge/auth-session.md +356 -0
- package/src/modules/bmm/testarch/knowledge/burn-in.md +273 -0
- package/src/modules/bmm/testarch/knowledge/file-utils.md +260 -0
- package/src/modules/bmm/testarch/knowledge/fixtures-composition.md +382 -0
- package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +280 -0
- package/src/modules/bmm/testarch/knowledge/log.md +294 -0
- package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +272 -0
- package/src/modules/bmm/testarch/knowledge/network-recorder.md +265 -0
- package/src/modules/bmm/testarch/knowledge/overview.md +284 -0
- package/src/modules/bmm/testarch/knowledge/recurse.md +296 -0
- package/src/modules/bmm/testarch/tea-index.csv +11 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/product-brief.template.md +8 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01-init.md +192 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01b-continue.md +167 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-02-vision.md +203 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-03-users.md +206 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-04-metrics.md +209 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-05-scope.md +223 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-06-complete.md +199 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.md +58 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +235 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +198 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +247 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +257 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +175 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/src/modules/bmm/workflows/1-analysis/research/research.template.md +16 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +237 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +246 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +200 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +237 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/src/modules/bmm/workflows/1-analysis/research/workflow.md +198 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +159 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +209 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +226 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +6 -138
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +53 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +5 -200
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +161 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +123 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +275 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +271 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +272 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +249 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +240 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +236 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +280 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +251 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +275 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +210 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +61 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-decision-template.md +13 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/data/domain-complexity.csv +11 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/data/project-types.csv +7 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01-init.md +194 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01b-continue.md +163 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-02-context.md +223 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-03-starter.md +330 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-04-decisions.md +317 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-05-patterns.md +358 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-06-structure.md +378 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-07-validation.md +358 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-08-complete.md +351 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.md +48 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md +247 -476
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +8 -18
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +176 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +4 -11
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +324 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +21 -34
- package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +406 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +6 -37
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +4 -3
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +26 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/checklist.md +25 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/instructions.md +105 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +29 -0
- package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +20 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +193 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +317 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +277 -0
- package/src/modules/bmm/workflows/generate-project-context/workflow.md +48 -0
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +23 -3
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +23 -2
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +18 -1
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +27 -1
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +8 -2
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +28 -8
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +66 -54
- package/src/modules/bmm/workflows/workflow-status/instructions.md +11 -4
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +3 -2
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +3 -2
- package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +3 -2
- package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +3 -2
- package/src/modules/cis/agents/README.md +1 -1
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +3 -2
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +2 -1
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +2 -1
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +2 -1
- package/src/modules/cis/agents/presentation-master.agent.yaml +3 -2
- package/src/modules/cis/agents/storyteller.agent.yaml +2 -1
- package/src/modules/cis/teams/default-party.csv +6 -5
- package/src/utility/models/agent-activation-ide.xml +4 -4
- package/src/utility/models/agent-activation-web.xml +1 -11
- package/src/utility/models/fragments/activation-rules.xml +5 -6
- package/src/utility/models/fragments/handler-exec.xml +6 -5
- package/src/utility/models/fragments/handler-multi.xml +14 -0
- package/test/README.md +1 -1
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
- package/tools/cli/README.md +1 -0
- package/tools/cli/bundlers/web-bundler.js +3 -14
- package/tools/cli/commands/agent-install.js +8 -8
- package/tools/cli/commands/cleanup.js +141 -0
- package/tools/cli/commands/install.js +48 -3
- package/tools/cli/installers/lib/core/config-collector.js +24 -0
- package/tools/cli/installers/lib/core/installer.js +612 -43
- package/tools/cli/installers/lib/ide/antigravity.js +51 -7
- package/tools/cli/installers/lib/ide/auggie.js +53 -0
- package/tools/cli/installers/lib/ide/claude-code.js +1 -6
- package/tools/cli/installers/lib/ide/cline.js +49 -0
- package/tools/cli/installers/lib/ide/codex.js +2 -2
- package/tools/cli/installers/lib/ide/crush.js +47 -0
- package/tools/cli/installers/lib/ide/gemini.js +47 -0
- package/tools/cli/installers/lib/ide/github-copilot.js +59 -48
- package/tools/cli/installers/lib/ide/iflow.js +47 -0
- package/tools/cli/installers/lib/ide/kilo.js +74 -0
- package/tools/cli/installers/lib/ide/qwen.js +54 -0
- package/tools/cli/installers/lib/ide/roo.js +71 -0
- package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
- package/tools/cli/installers/lib/ide/trae.js +47 -0
- package/tools/cli/lib/agent/compiler.js +156 -22
- package/tools/cli/lib/agent/installer.js +13 -3
- package/tools/cli/lib/agent-analyzer.js +46 -18
- package/tools/cli/lib/ui.js +204 -9
- package/tools/cli/lib/yaml-xml-builder.js +123 -24
- package/tools/platform-codes.yaml +12 -0
- package/tools/schema/agent.js +169 -20
- package/src/core/tasks/adv-elicit-methods.csv +0 -39
- package/src/core/workflows/brainstorming/README.md +0 -261
- package/src/core/workflows/brainstorming/instructions.md +0 -315
- package/src/core/workflows/brainstorming/workflow.yaml +0 -38
- package/src/core/workflows/party-mode/instructions.md +0 -183
- package/src/core/workflows/party-mode/workflow.yaml +0 -28
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -142
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
- package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
- package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
- package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
- package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
- package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
- package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -30
- package/src/modules/bmb/workflows/create-agent/instructions.md +0 -519
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -55
- package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
- package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
- package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
- package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -725
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1327
- package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
- package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -15
- package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
- package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -61
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -41
- package/src/modules/bmb/workflows/edit-agent/README.md +0 -239
- package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -654
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -49
- package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
- package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -27
- package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
- package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
- package/src/modules/bmm/docs/quick-spec-flow.md +0 -652
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -112
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
- package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +0 -425
- package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +0 -180
- package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -56
- package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -181
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -61
- package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
- package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
- package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -299
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -438
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -675
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -134
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -534
- package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
- package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -347
- package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -245
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -62
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1308
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -93
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -703
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -78
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -436
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -980
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -60
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
- package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
- package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -768
- package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -100
- package/src/modules/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
- package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -58
- package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
- package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
- package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -63
- package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
- package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -28
- package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
- package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -25
- package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
- package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
- /package/src/modules/bmb/docs/{agent-compilation.md → agents/agent-compilation.md} +0 -0
- /package/src/modules/bmb/docs/{expert-agent-architecture.md → agents/expert-agent-architecture.md} +0 -0
- /package/src/modules/bmb/docs/{index.md → agents/index.md} +0 -0
- /package/src/modules/bmb/docs/{understanding-agent-types.md → agents/understanding-agent-types.md} +0 -0
- /package/src/modules/bmb/reference/{readme.md → README.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{agent-validation-checklist.md → data/agent-validation-checklist.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{brainstorm-context.md → data/brainstorm-context.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{communication-presets.csv → data/communication-presets.csv} +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/brainstorm-context.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/checklist.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/installer-templates/install-config.yaml +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/installer-templates/installer.js +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/module-structure.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/workflow.yaml +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/checklist.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/workflow.yaml +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/checklist.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/template.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/workflow.yaml +0 -0
- /package/src/modules/bmm/{workflows/techdoc → data}/documentation-standards.md +0 -0
|
@@ -49,9 +49,10 @@ You must fully embody this agent's persona and follow all activation instruction
|
|
|
49
49
|
* Build simple activation block for custom agents
|
|
50
50
|
* @param {Array} criticalActions - Agent-specific critical actions
|
|
51
51
|
* @param {Array} menuItems - Menu items to determine which handlers to include
|
|
52
|
+
* @param {string} deploymentType - 'ide' or 'web' - filters commands based on ide-only/web-only flags
|
|
52
53
|
* @returns {string} Activation XML
|
|
53
54
|
*/
|
|
54
|
-
function buildSimpleActivation(criticalActions = [], menuItems = []) {
|
|
55
|
+
function buildSimpleActivation(criticalActions = [], menuItems = [], deploymentType = 'ide') {
|
|
55
56
|
let activation = '<activation critical="MANDATORY">\n';
|
|
56
57
|
|
|
57
58
|
let stepNum = 1;
|
|
@@ -75,13 +76,28 @@ function buildSimpleActivation(criticalActions = [], menuItems = []) {
|
|
|
75
76
|
activation += ` <step n="${stepNum++}">On user input: Number → execute menu item[n] | Text → case-insensitive substring match | Multiple matches → ask user
|
|
76
77
|
to clarify | No match → show "Not recognized"</step>\n`;
|
|
77
78
|
|
|
78
|
-
//
|
|
79
|
+
// Filter menu items based on deployment type
|
|
80
|
+
const filteredMenuItems = menuItems.filter((item) => {
|
|
81
|
+
// Skip web-only commands for IDE deployment
|
|
82
|
+
if (deploymentType === 'ide' && item['web-only'] === true) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
// Skip ide-only commands for web deployment
|
|
86
|
+
if (deploymentType === 'web' && item['ide-only'] === true) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Detect which handlers are actually used in the filtered menu
|
|
79
93
|
const usedHandlers = new Set();
|
|
80
|
-
for (const item of
|
|
94
|
+
for (const item of filteredMenuItems) {
|
|
81
95
|
if (item.action) usedHandlers.add('action');
|
|
82
96
|
if (item.workflow) usedHandlers.add('workflow');
|
|
83
97
|
if (item.exec) usedHandlers.add('exec');
|
|
84
98
|
if (item.tmpl) usedHandlers.add('tmpl');
|
|
99
|
+
if (item.data) usedHandlers.add('data');
|
|
100
|
+
if (item['validate-workflow']) usedHandlers.add('validate-workflow');
|
|
85
101
|
}
|
|
86
102
|
|
|
87
103
|
// Only include menu-handlers section if handlers are used
|
|
@@ -124,6 +140,25 @@ function buildSimpleActivation(criticalActions = [], menuItems = []) {
|
|
|
124
140
|
</handler>\n`;
|
|
125
141
|
}
|
|
126
142
|
|
|
143
|
+
if (usedHandlers.has('data')) {
|
|
144
|
+
activation += ` <handler type="data">
|
|
145
|
+
When menu item has: data="path/to/x.json|yaml|yml"
|
|
146
|
+
Load the file, parse as JSON/YAML, make available as {data} to subsequent operations
|
|
147
|
+
</handler>\n`;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (usedHandlers.has('validate-workflow')) {
|
|
151
|
+
activation += ` <handler type="validate-workflow">
|
|
152
|
+
When menu item has: validate-workflow="path/to/workflow.yaml"
|
|
153
|
+
1. CRITICAL: Always LOAD {project-root}/{bmad_folder}/core/tasks/validate-workflow.xml
|
|
154
|
+
2. Read the complete file - this is the CORE OS for validating BMAD workflows
|
|
155
|
+
3. Pass the workflow.yaml path as 'workflow' parameter to those instructions
|
|
156
|
+
4. Pass any checklist.md from the workflow location as 'checklist' parameter if available
|
|
157
|
+
5. Execute validate-workflow.xml instructions precisely following all steps
|
|
158
|
+
6. Generate validation report with thorough analysis
|
|
159
|
+
</handler>\n`;
|
|
160
|
+
}
|
|
161
|
+
|
|
127
162
|
activation += ` </handlers>
|
|
128
163
|
</menu-handlers>\n`;
|
|
129
164
|
}
|
|
@@ -208,42 +243,141 @@ function buildPromptsXml(prompts) {
|
|
|
208
243
|
|
|
209
244
|
/**
|
|
210
245
|
* Build menu XML section
|
|
246
|
+
* Supports both legacy and multi format menu items
|
|
247
|
+
* Multi items display as a single menu item with nested handlers
|
|
211
248
|
* @param {Array} menuItems - Menu items
|
|
212
249
|
* @returns {string} Menu XML
|
|
213
250
|
*/
|
|
214
251
|
function buildMenuXml(menuItems) {
|
|
215
252
|
let xml = ' <menu>\n';
|
|
216
253
|
|
|
217
|
-
// Always inject
|
|
218
|
-
xml += ` <item cmd="*
|
|
254
|
+
// Always inject menu display option first
|
|
255
|
+
xml += ` <item cmd="*menu">[M] Redisplay Menu Options</item>\n`;
|
|
219
256
|
|
|
220
257
|
// Add user-defined menu items
|
|
221
258
|
if (menuItems && menuItems.length > 0) {
|
|
222
259
|
for (const item of menuItems) {
|
|
223
|
-
|
|
224
|
-
if (
|
|
225
|
-
|
|
260
|
+
// Handle multi format menu items with nested handlers
|
|
261
|
+
if (item.multi && item.triggers && Array.isArray(item.triggers)) {
|
|
262
|
+
xml += ` <item type="multi">${escapeXml(item.multi)}\n`;
|
|
263
|
+
xml += buildNestedHandlers(item.triggers);
|
|
264
|
+
xml += ` </item>\n`;
|
|
226
265
|
}
|
|
266
|
+
// Handle legacy format menu items
|
|
267
|
+
else if (item.trigger) {
|
|
268
|
+
// For legacy items, keep using cmd with *<trigger> format
|
|
269
|
+
let trigger = item.trigger || '';
|
|
270
|
+
if (!trigger.startsWith('*')) {
|
|
271
|
+
trigger = '*' + trigger;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
const attrs = [`cmd="${trigger}"`];
|
|
275
|
+
|
|
276
|
+
// Add handler attributes
|
|
277
|
+
if (item.workflow) attrs.push(`workflow="${item.workflow}"`);
|
|
278
|
+
if (item.exec) attrs.push(`exec="${item.exec}"`);
|
|
279
|
+
if (item.tmpl) attrs.push(`tmpl="${item.tmpl}"`);
|
|
280
|
+
if (item.data) attrs.push(`data="${item.data}"`);
|
|
281
|
+
if (item.action) attrs.push(`action="${item.action}"`);
|
|
282
|
+
|
|
283
|
+
xml += ` <item ${attrs.join(' ')}>${escapeXml(item.description || '')}</item>\n`;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// Always inject dismiss last
|
|
289
|
+
xml += ` <item cmd="*dismiss">[D] Dismiss Agent</item>\n`;
|
|
290
|
+
|
|
291
|
+
xml += ' </menu>\n';
|
|
292
|
+
|
|
293
|
+
return xml;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Build nested handlers for multi format menu items
|
|
298
|
+
* @param {Array} triggers - Triggers array from multi format
|
|
299
|
+
* @returns {string} Handler XML
|
|
300
|
+
*/
|
|
301
|
+
function buildNestedHandlers(triggers) {
|
|
302
|
+
let xml = '';
|
|
303
|
+
|
|
304
|
+
for (const triggerGroup of triggers) {
|
|
305
|
+
for (const [triggerName, execArray] of Object.entries(triggerGroup)) {
|
|
306
|
+
// Build trigger with * prefix
|
|
307
|
+
let trigger = triggerName.startsWith('*') ? triggerName : '*' + triggerName;
|
|
227
308
|
|
|
228
|
-
|
|
309
|
+
// Extract the relevant execution data
|
|
310
|
+
const execData = processExecArray(execArray);
|
|
229
311
|
|
|
230
|
-
//
|
|
231
|
-
|
|
232
|
-
if (item.exec) attrs.push(`exec="${item.exec}"`);
|
|
233
|
-
if (item.tmpl) attrs.push(`tmpl="${item.tmpl}"`);
|
|
234
|
-
if (item.data) attrs.push(`data="${item.data}"`);
|
|
235
|
-
if (item.action) attrs.push(`action="${item.action}"`);
|
|
312
|
+
// For nested handlers in multi items, we use match attribute for fuzzy matching
|
|
313
|
+
const attrs = [`match="${escapeXml(execData.description || '')}"`];
|
|
236
314
|
|
|
237
|
-
|
|
315
|
+
// Add handler attributes based on exec data
|
|
316
|
+
if (execData.route) attrs.push(`exec="${execData.route}"`);
|
|
317
|
+
if (execData.workflow) attrs.push(`workflow="${execData.workflow}"`);
|
|
318
|
+
if (execData['validate-workflow']) attrs.push(`validate-workflow="${execData['validate-workflow']}"`);
|
|
319
|
+
if (execData.action) attrs.push(`action="${execData.action}"`);
|
|
320
|
+
if (execData.data) attrs.push(`data="${execData.data}"`);
|
|
321
|
+
if (execData.tmpl) attrs.push(`tmpl="${execData.tmpl}"`);
|
|
322
|
+
// Only add type if it's not 'exec' (exec is already implied by the exec attribute)
|
|
323
|
+
if (execData.type && execData.type !== 'exec') attrs.push(`type="${execData.type}"`);
|
|
324
|
+
|
|
325
|
+
xml += ` <handler ${attrs.join(' ')}></handler>\n`;
|
|
238
326
|
}
|
|
239
327
|
}
|
|
240
328
|
|
|
241
|
-
|
|
242
|
-
|
|
329
|
+
return xml;
|
|
330
|
+
}
|
|
243
331
|
|
|
244
|
-
|
|
332
|
+
/**
|
|
333
|
+
* Process the execution array from multi format triggers
|
|
334
|
+
* Extracts relevant data for XML attributes
|
|
335
|
+
* @param {Array} execArray - Array of execution objects
|
|
336
|
+
* @returns {Object} Processed execution data
|
|
337
|
+
*/
|
|
338
|
+
function processExecArray(execArray) {
|
|
339
|
+
const result = {
|
|
340
|
+
description: '',
|
|
341
|
+
route: null,
|
|
342
|
+
workflow: null,
|
|
343
|
+
data: null,
|
|
344
|
+
action: null,
|
|
345
|
+
type: null,
|
|
346
|
+
};
|
|
245
347
|
|
|
246
|
-
|
|
348
|
+
if (!Array.isArray(execArray)) {
|
|
349
|
+
return result;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
for (const exec of execArray) {
|
|
353
|
+
if (exec.input) {
|
|
354
|
+
// Use input as description if no explicit description is provided
|
|
355
|
+
result.description = exec.input;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
if (exec.route) {
|
|
359
|
+
// Determine if it's a workflow or exec based on file extension or context
|
|
360
|
+
if (exec.route.endsWith('.yaml') || exec.route.endsWith('.yml')) {
|
|
361
|
+
result.workflow = exec.route;
|
|
362
|
+
} else {
|
|
363
|
+
result.route = exec.route;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
if (exec.data !== null && exec.data !== undefined) {
|
|
368
|
+
result.data = exec.data;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
if (exec.action) {
|
|
372
|
+
result.action = exec.action;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
if (exec.type) {
|
|
376
|
+
result.type = exec.type;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
return result;
|
|
247
381
|
}
|
|
248
382
|
|
|
249
383
|
/**
|
|
@@ -275,8 +409,8 @@ function compileToXml(agentYaml, agentName = '', targetPath = '') {
|
|
|
275
409
|
|
|
276
410
|
xml += `<agent ${agentAttrs.join(' ')}>\n`;
|
|
277
411
|
|
|
278
|
-
// Activation block - pass menu items to determine which handlers to include
|
|
279
|
-
xml += buildSimpleActivation(agent.critical_actions || [], agent.menu || []);
|
|
412
|
+
// Activation block - pass menu items and deployment type to determine which handlers to include
|
|
413
|
+
xml += buildSimpleActivation(agent.critical_actions || [], agent.menu || [], 'ide');
|
|
280
414
|
|
|
281
415
|
// Persona section
|
|
282
416
|
xml += buildPersonaXml(agent.persona);
|
|
@@ -677,6 +677,12 @@ function extractManifestData(xmlContent, metadata, agentPath, moduleName = 'cust
|
|
|
677
677
|
return match[1].trim().replaceAll(/\n+/g, ' ').replaceAll(/\s+/g, ' ').trim();
|
|
678
678
|
};
|
|
679
679
|
|
|
680
|
+
// Extract attributes from agent tag
|
|
681
|
+
const extractAgentAttribute = (attr) => {
|
|
682
|
+
const match = xmlContent.match(new RegExp(`<agent[^>]*\\s${attr}=["']([^"']+)["']`));
|
|
683
|
+
return match ? match[1] : '';
|
|
684
|
+
};
|
|
685
|
+
|
|
680
686
|
const extractPrinciples = () => {
|
|
681
687
|
const match = xmlContent.match(/<principles>([\s\S]*?)<\/principles>/);
|
|
682
688
|
if (!match) return '';
|
|
@@ -689,11 +695,15 @@ function extractManifestData(xmlContent, metadata, agentPath, moduleName = 'cust
|
|
|
689
695
|
return principles;
|
|
690
696
|
};
|
|
691
697
|
|
|
698
|
+
// Prioritize XML extraction over metadata for agent persona info
|
|
699
|
+
const xmlTitle = extractAgentAttribute('title') || extractTag('name');
|
|
700
|
+
const xmlIcon = extractAgentAttribute('icon');
|
|
701
|
+
|
|
692
702
|
return {
|
|
693
703
|
name: metadata.id ? path.basename(metadata.id, '.md') : metadata.name.toLowerCase().replaceAll(/\s+/g, '-'),
|
|
694
|
-
displayName: metadata.name || '',
|
|
695
|
-
title: metadata.title || '',
|
|
696
|
-
icon: metadata.icon || '',
|
|
704
|
+
displayName: xmlTitle || metadata.name || '',
|
|
705
|
+
title: xmlTitle || metadata.title || '',
|
|
706
|
+
icon: xmlIcon || metadata.icon || '',
|
|
697
707
|
role: extractTag('role'),
|
|
698
708
|
identity: extractTag('identity'),
|
|
699
709
|
communicationStyle: extractTag('communication_style'),
|
|
@@ -29,24 +29,52 @@ class AgentAnalyzer {
|
|
|
29
29
|
// Track the menu item
|
|
30
30
|
profile.menuItems.push(item);
|
|
31
31
|
|
|
32
|
-
// Check for
|
|
33
|
-
if (item.
|
|
34
|
-
profile.usedAttributes.add('
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
32
|
+
// Check for multi format items
|
|
33
|
+
if (item.multi && item.triggers) {
|
|
34
|
+
profile.usedAttributes.add('multi');
|
|
35
|
+
|
|
36
|
+
// Also check attributes in nested handlers
|
|
37
|
+
for (const triggerGroup of item.triggers) {
|
|
38
|
+
for (const [triggerName, execArray] of Object.entries(triggerGroup)) {
|
|
39
|
+
if (Array.isArray(execArray)) {
|
|
40
|
+
for (const exec of execArray) {
|
|
41
|
+
if (exec.route) {
|
|
42
|
+
// Check if route is a workflow or exec
|
|
43
|
+
if (exec.route.endsWith('.yaml') || exec.route.endsWith('.yml')) {
|
|
44
|
+
profile.usedAttributes.add('workflow');
|
|
45
|
+
} else {
|
|
46
|
+
profile.usedAttributes.add('exec');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (exec.workflow) profile.usedAttributes.add('workflow');
|
|
50
|
+
if (exec.action) profile.usedAttributes.add('action');
|
|
51
|
+
if (exec.type && ['exec', 'action', 'workflow'].includes(exec.type)) {
|
|
52
|
+
profile.usedAttributes.add(exec.type);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
// Check for each possible attribute in legacy items
|
|
60
|
+
if (item.workflow) {
|
|
61
|
+
profile.usedAttributes.add('workflow');
|
|
62
|
+
}
|
|
63
|
+
if (item['validate-workflow']) {
|
|
64
|
+
profile.usedAttributes.add('validate-workflow');
|
|
65
|
+
}
|
|
66
|
+
if (item.exec) {
|
|
67
|
+
profile.usedAttributes.add('exec');
|
|
68
|
+
}
|
|
69
|
+
if (item.tmpl) {
|
|
70
|
+
profile.usedAttributes.add('tmpl');
|
|
71
|
+
}
|
|
72
|
+
if (item.data) {
|
|
73
|
+
profile.usedAttributes.add('data');
|
|
74
|
+
}
|
|
75
|
+
if (item.action) {
|
|
76
|
+
profile.usedAttributes.add('action');
|
|
77
|
+
}
|
|
50
78
|
}
|
|
51
79
|
}
|
|
52
80
|
|
package/tools/cli/lib/ui.js
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: tools/cli/lib/ui.js
|
|
3
|
+
*
|
|
4
|
+
* BMAD Method - Business Model Agile Development Method
|
|
5
|
+
* Repository: https://github.com/paulpreibisch/BMAD-METHOD
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) 2025 Paul Preibisch
|
|
8
|
+
* Licensed under the Apache License, Version 2.0
|
|
9
|
+
*
|
|
10
|
+
* ---
|
|
11
|
+
*
|
|
12
|
+
* @fileoverview Interactive installation prompts and user input collection for BMAD CLI
|
|
13
|
+
* @context Guides users through installation configuration including core settings, modules, IDEs, and optional AgentVibes TTS
|
|
14
|
+
* @architecture Facade pattern - presents unified installation flow, delegates to Detector/ConfigCollector/IdeManager for specifics
|
|
15
|
+
* @dependencies inquirer (prompts), chalk (formatting), detector.js (existing installation detection)
|
|
16
|
+
* @entrypoints Called by install.js command via ui.promptInstall(), returns complete configuration object
|
|
17
|
+
* @patterns Progressive disclosure (prompts in order), early IDE selection (Windows compat), AgentVibes auto-detection
|
|
18
|
+
* @related installer.js (consumes config), AgentVibes#34 (TTS integration), promptAgentVibes()
|
|
19
|
+
*/
|
|
20
|
+
|
|
1
21
|
const chalk = require('chalk');
|
|
2
22
|
const inquirer = require('inquirer');
|
|
3
23
|
const path = require('node:path');
|
|
@@ -99,6 +119,9 @@ class UI {
|
|
|
99
119
|
const moduleChoices = await this.getModuleChoices(installedModuleIds);
|
|
100
120
|
const selectedModules = await this.selectModules(moduleChoices);
|
|
101
121
|
|
|
122
|
+
// Prompt for AgentVibes TTS integration
|
|
123
|
+
const agentVibesConfig = await this.promptAgentVibes(confirmedDirectory);
|
|
124
|
+
|
|
102
125
|
// Collect IDE tool selection AFTER configuration prompts (fixes Windows/PowerShell hang)
|
|
103
126
|
// This allows text-based prompts to complete before the checkbox prompt
|
|
104
127
|
const toolSelection = await this.promptToolSelection(confirmedDirectory, selectedModules);
|
|
@@ -114,6 +137,8 @@ class UI {
|
|
|
114
137
|
ides: toolSelection.ides,
|
|
115
138
|
skipIde: toolSelection.skipIde,
|
|
116
139
|
coreConfig: coreConfig, // Pass collected core config to installer
|
|
140
|
+
enableAgentVibes: agentVibesConfig.enabled, // AgentVibes TTS integration
|
|
141
|
+
agentVibesInstalled: agentVibesConfig.alreadyInstalled,
|
|
117
142
|
};
|
|
118
143
|
}
|
|
119
144
|
|
|
@@ -201,15 +226,51 @@ class UI {
|
|
|
201
226
|
|
|
202
227
|
CLIUtils.displaySection('Tool Integration', 'Select AI coding assistants and IDEs to configure');
|
|
203
228
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
229
|
+
let answers;
|
|
230
|
+
let userConfirmedNoTools = false;
|
|
231
|
+
|
|
232
|
+
// Loop until user selects at least one tool OR explicitly confirms no tools
|
|
233
|
+
while (!userConfirmedNoTools) {
|
|
234
|
+
answers = await inquirer.prompt([
|
|
235
|
+
{
|
|
236
|
+
type: 'checkbox',
|
|
237
|
+
name: 'ides',
|
|
238
|
+
message: 'Select tools to configure:',
|
|
239
|
+
choices: ideChoices,
|
|
240
|
+
pageSize: 15,
|
|
241
|
+
},
|
|
242
|
+
]);
|
|
243
|
+
|
|
244
|
+
// If tools were selected, we're done
|
|
245
|
+
if (answers.ides && answers.ides.length > 0) {
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Warn that no tools were selected - users often miss the spacebar requirement
|
|
250
|
+
console.log();
|
|
251
|
+
console.log(chalk.red.bold('⚠️ WARNING: No tools were selected!'));
|
|
252
|
+
console.log(chalk.red(' You must press SPACEBAR to select items, then ENTER to confirm.'));
|
|
253
|
+
console.log(chalk.red(' Simply highlighting an item does NOT select it.'));
|
|
254
|
+
console.log();
|
|
255
|
+
|
|
256
|
+
const { goBack } = await inquirer.prompt([
|
|
257
|
+
{
|
|
258
|
+
type: 'confirm',
|
|
259
|
+
name: 'goBack',
|
|
260
|
+
message: chalk.yellow('Would you like to go back and select at least one tool?'),
|
|
261
|
+
default: true,
|
|
262
|
+
},
|
|
263
|
+
]);
|
|
264
|
+
|
|
265
|
+
if (goBack) {
|
|
266
|
+
// Re-display the section header before looping back
|
|
267
|
+
console.log();
|
|
268
|
+
CLIUtils.displaySection('Tool Integration', 'Select AI coding assistants and IDEs to configure');
|
|
269
|
+
} else {
|
|
270
|
+
// User explicitly chose to proceed without tools
|
|
271
|
+
userConfirmedNoTools = true;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
213
274
|
|
|
214
275
|
return {
|
|
215
276
|
ides: answers.ides || [],
|
|
@@ -603,6 +664,140 @@ class UI {
|
|
|
603
664
|
// Resolve to the absolute path relative to the current working directory
|
|
604
665
|
return path.resolve(expanded);
|
|
605
666
|
}
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* @function promptAgentVibes
|
|
670
|
+
* @intent Ask user if they want AgentVibes TTS integration during BMAD installation
|
|
671
|
+
* @why Enables optional voice features without forcing TTS on users who don't want it
|
|
672
|
+
* @param {string} projectDir - Absolute path to user's project directory
|
|
673
|
+
* @returns {Promise<Object>} Configuration object: { enabled: boolean, alreadyInstalled: boolean }
|
|
674
|
+
* @sideeffects None - pure user input collection, no files written
|
|
675
|
+
* @edgecases Shows warning if user enables TTS but AgentVibes not detected
|
|
676
|
+
* @calledby promptInstall() during installation flow, after core config, before IDE selection
|
|
677
|
+
* @calls checkAgentVibesInstalled(), inquirer.prompt(), chalk.green/yellow/dim()
|
|
678
|
+
*
|
|
679
|
+
* AI NOTE: This prompt is strategically positioned in installation flow:
|
|
680
|
+
* - AFTER core config (bmad_folder, user_name, etc)
|
|
681
|
+
* - BEFORE IDE selection (which can hang on Windows/PowerShell)
|
|
682
|
+
*
|
|
683
|
+
* Flow Logic:
|
|
684
|
+
* 1. Auto-detect if AgentVibes already installed (checks for hook files)
|
|
685
|
+
* 2. Show detection status to user (green checkmark or gray "not detected")
|
|
686
|
+
* 3. Prompt: "Enable AgentVibes TTS?" (defaults to true if detected)
|
|
687
|
+
* 4. If user says YES but AgentVibes NOT installed:
|
|
688
|
+
* → Show warning with installation link (graceful degradation)
|
|
689
|
+
* 5. Return config to promptInstall(), which passes to installer.install()
|
|
690
|
+
*
|
|
691
|
+
* State Flow:
|
|
692
|
+
* promptAgentVibes() → { enabled, alreadyInstalled }
|
|
693
|
+
* ↓
|
|
694
|
+
* promptInstall() → config.enableAgentVibes
|
|
695
|
+
* ↓
|
|
696
|
+
* installer.install() → this.enableAgentVibes
|
|
697
|
+
* ↓
|
|
698
|
+
* processTTSInjectionPoints() → injects OR strips markers
|
|
699
|
+
*
|
|
700
|
+
* RELATED:
|
|
701
|
+
* ========
|
|
702
|
+
* - Detection: checkAgentVibesInstalled() - looks for bmad-speak.sh and play-tts.sh
|
|
703
|
+
* - Processing: installer.js::processTTSInjectionPoints()
|
|
704
|
+
* - Markers: src/core/workflows/party-mode/instructions.md:101, src/modules/bmm/agents/*.md
|
|
705
|
+
* - GitHub Issue: paulpreibisch/AgentVibes#36
|
|
706
|
+
*/
|
|
707
|
+
async promptAgentVibes(projectDir) {
|
|
708
|
+
CLIUtils.displaySection('🎤 Voice Features', 'Enable TTS for multi-agent conversations');
|
|
709
|
+
|
|
710
|
+
// Check if AgentVibes is already installed
|
|
711
|
+
const agentVibesInstalled = await this.checkAgentVibesInstalled(projectDir);
|
|
712
|
+
|
|
713
|
+
if (agentVibesInstalled) {
|
|
714
|
+
console.log(chalk.green(' ✓ AgentVibes detected'));
|
|
715
|
+
} else {
|
|
716
|
+
console.log(chalk.dim(' AgentVibes not detected'));
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
const answers = await inquirer.prompt([
|
|
720
|
+
{
|
|
721
|
+
type: 'confirm',
|
|
722
|
+
name: 'enableTts',
|
|
723
|
+
message: 'Enable Agents to Speak Out loud (powered by Agent Vibes? Claude Code only currently)',
|
|
724
|
+
default: false, // Default to yes - recommended for best experience
|
|
725
|
+
},
|
|
726
|
+
]);
|
|
727
|
+
|
|
728
|
+
if (answers.enableTts && !agentVibesInstalled) {
|
|
729
|
+
console.log(chalk.yellow('\n ⚠️ AgentVibes not installed'));
|
|
730
|
+
console.log(chalk.dim(' Install AgentVibes separately to enable TTS:'));
|
|
731
|
+
console.log(chalk.dim(' https://github.com/paulpreibisch/AgentVibes\n'));
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
return {
|
|
735
|
+
enabled: answers.enableTts,
|
|
736
|
+
alreadyInstalled: agentVibesInstalled,
|
|
737
|
+
};
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* @function checkAgentVibesInstalled
|
|
742
|
+
* @intent Detect if AgentVibes TTS hooks are present in user's project
|
|
743
|
+
* @why Allows auto-enabling TTS and showing helpful installation guidance
|
|
744
|
+
* @param {string} projectDir - Absolute path to user's project directory
|
|
745
|
+
* @returns {Promise<boolean>} true if both required AgentVibes hooks exist, false otherwise
|
|
746
|
+
* @sideeffects None - read-only file existence checks
|
|
747
|
+
* @edgecases Returns false if either hook missing (both required for functional TTS)
|
|
748
|
+
* @calledby promptAgentVibes() to determine default value and show detection status
|
|
749
|
+
* @calls fs.pathExists() twice (bmad-speak.sh, play-tts.sh)
|
|
750
|
+
*
|
|
751
|
+
* AI NOTE: This checks for the MINIMUM viable AgentVibes installation.
|
|
752
|
+
*
|
|
753
|
+
* Required Files:
|
|
754
|
+
* ===============
|
|
755
|
+
* 1. .claude/hooks/bmad-speak.sh
|
|
756
|
+
* - Maps agent display names → agent IDs → voice profiles
|
|
757
|
+
* - Calls play-tts.sh with agent's assigned voice
|
|
758
|
+
* - Created by AgentVibes installer
|
|
759
|
+
*
|
|
760
|
+
* 2. .claude/hooks/play-tts.sh
|
|
761
|
+
* - Core TTS router (ElevenLabs or Piper)
|
|
762
|
+
* - Provider-agnostic interface
|
|
763
|
+
* - Required by bmad-speak.sh
|
|
764
|
+
*
|
|
765
|
+
* Why Both Required:
|
|
766
|
+
* ==================
|
|
767
|
+
* - bmad-speak.sh alone: No TTS backend
|
|
768
|
+
* - play-tts.sh alone: No BMAD agent voice mapping
|
|
769
|
+
* - Both together: Full party mode TTS integration
|
|
770
|
+
*
|
|
771
|
+
* Detection Strategy:
|
|
772
|
+
* ===================
|
|
773
|
+
* We use simple file existence (not version checks) because:
|
|
774
|
+
* - Fast and reliable
|
|
775
|
+
* - Works across all AgentVibes versions
|
|
776
|
+
* - User will discover version issues when TTS runs (fail-fast)
|
|
777
|
+
*
|
|
778
|
+
* PATTERN: Adding New Detection Criteria
|
|
779
|
+
* =======================================
|
|
780
|
+
* If future AgentVibes features require additional files:
|
|
781
|
+
* 1. Add new pathExists check to this function
|
|
782
|
+
* 2. Update documentation in promptAgentVibes()
|
|
783
|
+
* 3. Consider: should missing file prevent detection or just log warning?
|
|
784
|
+
*
|
|
785
|
+
* RELATED:
|
|
786
|
+
* ========
|
|
787
|
+
* - AgentVibes Installer: creates these hooks
|
|
788
|
+
* - bmad-speak.sh: calls play-tts.sh with agent voices
|
|
789
|
+
* - Party Mode: uses bmad-speak.sh for agent dialogue
|
|
790
|
+
*/
|
|
791
|
+
async checkAgentVibesInstalled(projectDir) {
|
|
792
|
+
const fs = require('fs-extra');
|
|
793
|
+
const path = require('node:path');
|
|
794
|
+
|
|
795
|
+
// Check for AgentVibes hook files
|
|
796
|
+
const hookPath = path.join(projectDir, '.claude', 'hooks', 'bmad-speak.sh');
|
|
797
|
+
const playTtsPath = path.join(projectDir, '.claude', 'hooks', 'play-tts.sh');
|
|
798
|
+
|
|
799
|
+
return (await fs.pathExists(hookPath)) && (await fs.pathExists(playTtsPath));
|
|
800
|
+
}
|
|
606
801
|
}
|
|
607
802
|
|
|
608
803
|
module.exports = { UI };
|