bmad-method 6.0.0-alpha.15 → 6.0.0-alpha.16
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/.coderabbit.yaml +1 -1
- package/CHANGELOG.md +32 -1
- package/docs/agent-customization-guide.md +7 -7
- package/docs/ide-info/crush.md +1 -1
- package/docs/ide-info/cursor.md +7 -7
- package/docs/ide-info/iflow.md +3 -3
- package/docs/ide-info/opencode.md +1 -1
- package/docs/installers-bundlers/ide-injections.md +2 -2
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +23 -23
- package/docs/v4-to-v6-upgrade.md +10 -10
- package/docs/web-bundles-gemini-gpt-guide.md +1 -1
- package/package.json +1 -1
- package/src/core/agents/bmad-master.agent.yaml +5 -5
- package/src/core/agents/bmad-web-orchestrator.agent.xml +6 -6
- package/src/core/module.yaml +0 -7
- package/src/core/resources/excalidraw/README.md +4 -4
- package/src/core/tasks/advanced-elicitation.xml +3 -3
- package/src/core/tasks/index-docs.xml +1 -1
- package/src/core/tasks/validate-workflow.xml +1 -1
- package/src/core/tasks/workflow.xml +4 -4
- package/src/core/tools/shard-doc.xml +1 -1
- package/src/core/workflows/brainstorming/workflow.md +2 -2
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +2 -2
- package/src/core/workflows/party-mode/workflow.md +4 -4
- package/src/modules/bmb/README.md +2 -2
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +15 -15
- package/src/modules/bmb/docs/agents/agent-compilation.md +2 -2
- package/src/modules/bmb/docs/agents/agent-menu-patterns.md +22 -22
- package/src/modules/bmb/docs/agents/expert-agent-architecture.md +1 -1
- package/src/modules/bmb/docs/agents/index.md +1 -1
- package/src/modules/bmb/docs/agents/module-agent-architecture.md +50 -51
- package/src/modules/bmb/docs/agents/understanding-agent-types.md +3 -3
- package/src/modules/bmb/docs/workflows/architecture.md +1 -1
- package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +3 -3
- package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +1 -1
- package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +1 -1
- package/src/modules/bmb/docs/workflows/templates/step-file.md +3 -3
- package/src/modules/bmb/docs/workflows/templates/step-template.md +3 -3
- package/src/modules/bmb/docs/workflows/templates/workflow-template.md +2 -2
- package/src/modules/bmb/docs/workflows/templates/workflow.md +1 -1
- package/src/modules/bmb/module.yaml +0 -1
- package/src/modules/bmb/reference/agents/module-examples/README.md +1 -1
- package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +5 -5
- package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +1 -1
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +1 -1
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +3 -3
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +3 -3
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +5 -5
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +5 -5
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +5 -5
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +2 -2
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +6 -6
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +3 -3
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +3 -3
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +5 -5
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +5 -5
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +5 -5
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +2 -2
- package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +5 -5
- package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +7 -7
- package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +3 -3
- package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +3 -3
- package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +3 -3
- package/src/modules/bmb/workflows/create-agent/steps/step-11-celebrate.md +3 -3
- package/src/modules/bmb/workflows/create-agent/workflow.md +13 -13
- package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +2 -2
- package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +4 -4
- package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +4 -4
- package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +3 -3
- package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +4 -4
- package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +6 -6
- package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +3 -3
- package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +4 -4
- package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +4 -4
- package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +3 -3
- package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +4 -4
- package/src/modules/bmb/workflows/create-module/templates/agent.template.md +7 -7
- package/src/modules/bmb/workflows/create-module/templates/module.template.yaml +1 -1
- package/src/modules/bmb/workflows/create-module/workflow.md +2 -2
- package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +2 -2
- package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +5 -5
- package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +4 -4
- package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +3 -3
- package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +3 -3
- package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +10 -10
- package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +12 -12
- package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +3 -3
- package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +1 -1
- package/src/modules/bmb/workflows/create-workflow/workflow.md +1 -1
- package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +3 -3
- package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +13 -13
- package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +5 -5
- package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +3 -3
- package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +5 -5
- package/src/modules/bmb/workflows/edit-agent/workflow.md +1 -1
- package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +4 -4
- package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +3 -3
- package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +6 -6
- package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +3 -3
- package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +3 -3
- package/src/modules/bmb/workflows/edit-workflow/workflow.md +1 -1
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +3 -3
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +5 -5
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +6 -6
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +3 -3
- package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +1 -1
- package/src/modules/bmb/workflows-legacy/edit-module/README.md +2 -2
- package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +2 -2
- package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +4 -4
- package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +10 -10
- package/src/modules/bmb/workflows-legacy/module-brief/README.md +2 -2
- package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +2 -2
- package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +4 -4
- package/src/modules/bmgd/README.md +1 -1
- package/src/modules/bmgd/agents/game-architect.agent.yaml +6 -6
- package/src/modules/bmgd/agents/game-designer.agent.yaml +7 -7
- package/src/modules/bmgd/agents/game-dev.agent.yaml +9 -9
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +21 -21
- package/src/modules/bmgd/module.yaml +0 -1
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +1 -1
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +9 -9
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +1 -1
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +8 -8
- package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +4 -4
- package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +30 -30
- package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +1 -1
- package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +5 -5
- package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +1 -1
- package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +1 -1
- package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +1 -1
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +3 -3
- package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +1 -1
- package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +1 -1
- package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +1 -1
- package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +1 -1
- package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +2 -2
- package/src/modules/bmm/agents/analyst.agent.yaml +8 -8
- package/src/modules/bmm/agents/architect.agent.yaml +8 -8
- package/src/modules/bmm/agents/dev.agent.yaml +3 -3
- package/src/modules/bmm/agents/pm.agent.yaml +8 -8
- package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +5 -5
- package/src/modules/bmm/agents/sm.agent.yaml +9 -9
- package/src/modules/bmm/agents/tea.agent.yaml +13 -13
- package/src/modules/bmm/agents/tech-writer.agent.yaml +9 -9
- package/src/modules/bmm/agents/ux-designer.agent.yaml +6 -6
- package/src/modules/bmm/docs/README.md +0 -25
- package/src/modules/bmm/docs/agents-guide.md +4 -4
- package/src/modules/bmm/docs/brownfield-guide.md +4 -4
- package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
- package/src/modules/bmm/docs/faq.md +1 -1
- package/src/modules/bmm/docs/party-mode.md +3 -3
- package/src/modules/bmm/docs/quick-start.md +1 -1
- package/src/modules/bmm/docs/test-architecture.md +3 -3
- package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
- package/src/modules/bmm/docs/workflows-implementation.md +0 -100
- package/src/modules/bmm/module.yaml +1 -2
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01-init.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01b-continue.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-02-vision.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-03-users.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-04-metrics.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-05-scope.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-06-complete.md +5 -3
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/research/workflow.md +2 -2
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +2 -2
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +3 -3
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +7 -7
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +8 -8
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +12 -12
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +12 -12
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +10 -10
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +7 -7
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +9 -9
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +9 -9
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-02-context.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-03-starter.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-04-decisions.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-05-patterns.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-06-structure.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-07-validation.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-08-complete.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-01-document-discovery.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-02-prd-analysis.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-03-epic-coverage-validation.md +6 -6
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-04-ux-alignment.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-05-epic-quality-review.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-06-final-assessment.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +1 -1
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +2 -2
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +1 -1
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +3 -3
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +7 -7
- package/src/modules/bmm/workflows/diagrams/create-dataflow/instructions.md +1 -1
- package/src/modules/bmm/workflows/diagrams/create-dataflow/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/diagrams/create-diagram/instructions.md +2 -2
- package/src/modules/bmm/workflows/diagrams/create-diagram/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/diagrams/create-flowchart/instructions.md +2 -2
- package/src/modules/bmm/workflows/diagrams/create-flowchart/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/diagrams/create-wireframe/instructions.md +1 -1
- package/src/modules/bmm/workflows/diagrams/create-wireframe/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
- package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
- package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
- package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +2 -2
- package/src/modules/bmm/workflows/generate-project-context/workflow.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +3 -3
- package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +3 -3
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +6 -6
- package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +1 -1
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +4 -4
- package/src/modules/bmm/workflows/workflow-status/instructions.md +3 -3
- package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
- package/src/modules/bmm/workflows/workflow-status/workflow.yaml +2 -2
- package/src/modules/cis/README.md +1 -1
- package/src/modules/cis/agents/README.md +1 -1
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +4 -4
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +4 -4
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +4 -4
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +4 -4
- package/src/modules/cis/agents/presentation-master.agent.yaml +3 -3
- package/src/modules/cis/agents/storyteller.agent.yaml +4 -4
- package/src/modules/cis/module.yaml +0 -1
- package/src/modules/cis/workflows/README.md +1 -1
- package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
- package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -7
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
- package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -7
- package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
- package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -7
- package/src/modules/cis/workflows/storytelling/instructions.md +2 -2
- package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -7
- package/src/utility/models/agent-activation-ide.xml +3 -3
- package/src/utility/models/agent-activation-web.xml +3 -3
- package/src/utility/models/fragments/activation-steps.xml +1 -1
- package/src/utility/models/fragments/handler-validate-workflow.xml +1 -1
- package/src/utility/models/fragments/handler-workflow.xml +1 -1
- package/src/utility/models/fragments/web-bundle-activation-steps.xml +3 -3
- package/tools/cli/README.md +19 -19
- package/tools/cli/bundlers/web-bundler.js +23 -33
- package/tools/cli/commands/build.js +5 -5
- package/tools/cli/installers/lib/core/config-collector.js +19 -14
- package/tools/cli/installers/lib/core/custom-module-cache.js +18 -6
- package/tools/cli/installers/lib/core/installer.js +104 -109
- package/tools/cli/installers/lib/core/manifest-generator.js +1 -1
- package/tools/cli/installers/lib/custom/handler.js +1 -4
- package/tools/cli/installers/lib/ide/_base-ide.js +14 -14
- package/tools/cli/installers/lib/ide/gemini.js +4 -4
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +2 -2
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +3 -3
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +1 -1
- package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +3 -3
- package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +3 -3
- package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +1 -1
- package/tools/cli/installers/lib/modules/manager.js +24 -24
- package/tools/cli/lib/agent/compiler.js +3 -3
- package/tools/cli/lib/agent/installer.js +2 -2
- package/tools/cli/lib/ui.js +234 -238
- package/tools/cli/regenerate-manifests.js +3 -4
- package/tools/migrate-custom-module-paths.js +1 -1
- package/example-custom-content/README.md +0 -8
- package/example-custom-content/agents/commit-poet/commit-poet.agent.yaml +0 -129
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/instructions.md +0 -70
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +0 -111
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +0 -70
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +0 -114
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +0 -134
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +0 -161
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +0 -103
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/memories.md +0 -17
- package/example-custom-content/agents/toolsmith/toolsmith.agent.yaml +0 -109
- package/example-custom-content/module.yaml +0 -4
- package/example-custom-content/workflows/quiz-master/steps/step-01-init.md +0 -168
- package/example-custom-content/workflows/quiz-master/steps/step-02-q1.md +0 -155
- package/example-custom-content/workflows/quiz-master/steps/step-03-q2.md +0 -89
- package/example-custom-content/workflows/quiz-master/steps/step-04-q3.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-05-q4.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-06-q5.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-07-q6.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-08-q7.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-09-q8.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-10-q9.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-11-q10.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-12-results.md +0 -150
- package/example-custom-content/workflows/quiz-master/templates/csv-headers.template +0 -1
- package/example-custom-content/workflows/quiz-master/workflow.md +0 -54
- package/example-custom-content/workflows/wassup/workflow.md +0 -26
- package/example-custom-module/mwm/README.md +0 -9
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/cognitive-distortions.md +0 -47
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/thought-records.md +0 -17
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml +0 -151
- package/example-custom-module/mwm/agents/crisis-navigator.agent.yaml +0 -138
- package/example-custom-module/mwm/agents/meditation-guide.agent.yaml +0 -138
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/insights.md +0 -13
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/instructions.md +0 -30
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/memories.md +0 -13
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/patterns.md +0 -17
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion.agent.yaml +0 -125
- package/example-custom-module/mwm/module.yaml +0 -28
- package/example-custom-module/mwm/workflows/cbt-thought-record/README.md +0 -31
- package/example-custom-module/mwm/workflows/cbt-thought-record/workflow.md +0 -45
- package/example-custom-module/mwm/workflows/crisis-support/README.md +0 -31
- package/example-custom-module/mwm/workflows/crisis-support/workflow.md +0 -45
- package/example-custom-module/mwm/workflows/daily-checkin/README.md +0 -32
- package/example-custom-module/mwm/workflows/daily-checkin/workflow.md +0 -45
- package/example-custom-module/mwm/workflows/guided-meditation/README.md +0 -31
- package/example-custom-module/mwm/workflows/guided-meditation/workflow.md +0 -45
- package/example-custom-module/mwm/workflows/wellness-journal/README.md +0 -31
- package/example-custom-module/mwm/workflows/wellness-journal/workflow.md +0 -45
package/tools/cli/lib/ui.js
CHANGED
|
@@ -24,6 +24,7 @@ const path = require('node:path');
|
|
|
24
24
|
const os = require('node:os');
|
|
25
25
|
const fs = require('fs-extra');
|
|
26
26
|
const { CLIUtils } = require('./cli-utils');
|
|
27
|
+
const { CustomHandler } = require('../installers/lib/custom/handler');
|
|
27
28
|
|
|
28
29
|
/**
|
|
29
30
|
* UI utilities for the installer
|
|
@@ -135,7 +136,7 @@ class UI {
|
|
|
135
136
|
// Create the bmad directory based on core config
|
|
136
137
|
const path = require('node:path');
|
|
137
138
|
const fs = require('fs-extra');
|
|
138
|
-
const bmadFolderName =
|
|
139
|
+
const bmadFolderName = '.bmad';
|
|
139
140
|
const bmadDir = path.join(confirmedDirectory, bmadFolderName);
|
|
140
141
|
|
|
141
142
|
await fs.ensureDir(bmadDir);
|
|
@@ -150,7 +151,6 @@ class UI {
|
|
|
150
151
|
const { CustomModuleCache } = require('../installers/lib/core/custom-module-cache');
|
|
151
152
|
const cache = new CustomModuleCache(bmadDir);
|
|
152
153
|
|
|
153
|
-
const { CustomHandler } = require('../installers/lib/custom/handler');
|
|
154
154
|
const customHandler = new CustomHandler();
|
|
155
155
|
const customFiles = await customHandler.findCustomContent(customContentConfig.customPath);
|
|
156
156
|
|
|
@@ -218,7 +218,6 @@ class UI {
|
|
|
218
218
|
customContentConfig.selectedFiles = selectedCustomContent.map((mod) => mod.replace('__CUSTOM_CONTENT__', ''));
|
|
219
219
|
// Convert custom content to module IDs for installation
|
|
220
220
|
const customContentModuleIds = [];
|
|
221
|
-
const { CustomHandler } = require('../installers/lib/custom/handler');
|
|
222
221
|
const customHandler = new CustomHandler();
|
|
223
222
|
for (const customFile of customContentConfig.selectedFiles) {
|
|
224
223
|
// Get the module info to extract the ID
|
|
@@ -637,8 +636,8 @@ class UI {
|
|
|
637
636
|
moduleData = yaml.load(yamlContent);
|
|
638
637
|
foundPath = configPath;
|
|
639
638
|
break;
|
|
640
|
-
} catch {
|
|
641
|
-
|
|
639
|
+
} catch (error) {
|
|
640
|
+
throw new Error(`Failed to parse config at ${configPath}: ${error.message}`);
|
|
642
641
|
}
|
|
643
642
|
}
|
|
644
643
|
}
|
|
@@ -654,20 +653,11 @@ class UI {
|
|
|
654
653
|
cached: true,
|
|
655
654
|
});
|
|
656
655
|
} else {
|
|
657
|
-
//
|
|
658
|
-
console.log(chalk.dim(`DEBUG: No module config found for ${cachedModule.id}`));
|
|
659
|
-
console.log(
|
|
660
|
-
chalk.dim(
|
|
661
|
-
`DEBUG: Tried paths:`,
|
|
662
|
-
possibleConfigPaths.map((p) => p.replace(cachedModule.cachePath, '.')),
|
|
663
|
-
),
|
|
664
|
-
);
|
|
665
|
-
console.log(chalk.dim(`DEBUG: cachedModule:`, JSON.stringify(cachedModule, null, 2)));
|
|
656
|
+
// Module config not found - skip silently (non-critical)
|
|
666
657
|
}
|
|
667
658
|
}
|
|
668
659
|
} else if (customContentConfig.customPath) {
|
|
669
660
|
// Existing installation - show from directory
|
|
670
|
-
const { CustomHandler } = require('../installers/lib/custom/handler');
|
|
671
661
|
const customHandler = new CustomHandler();
|
|
672
662
|
const customFiles = await customHandler.findCustomContent(customContentConfig.customPath);
|
|
673
663
|
|
|
@@ -820,104 +810,108 @@ class UI {
|
|
|
820
810
|
*/
|
|
821
811
|
async promptCustomContentLocation() {
|
|
822
812
|
try {
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
const { hasCustomContent } = await inquirer.prompt([
|
|
826
|
-
{
|
|
827
|
-
type: 'list',
|
|
828
|
-
name: 'hasCustomContent',
|
|
829
|
-
message: 'Do you have custom content to install?',
|
|
830
|
-
choices: [
|
|
831
|
-
{ name: 'No (skip custom content)', value: 'none' },
|
|
832
|
-
{ name: 'Enter a directory path', value: 'directory' },
|
|
833
|
-
{ name: 'Enter a URL', value: 'url' },
|
|
834
|
-
],
|
|
835
|
-
default: 'none',
|
|
836
|
-
},
|
|
837
|
-
]);
|
|
838
|
-
|
|
839
|
-
if (hasCustomContent === 'none') {
|
|
840
|
-
return { hasCustomContent: false };
|
|
841
|
-
}
|
|
842
|
-
|
|
843
|
-
if (hasCustomContent === 'url') {
|
|
844
|
-
console.log(chalk.yellow('\nURL-based custom content installation is coming soon!'));
|
|
845
|
-
console.log(chalk.cyan('For now, please download your custom content and choose "Enter a directory path".\n'));
|
|
846
|
-
return { hasCustomContent: false };
|
|
847
|
-
}
|
|
848
|
-
|
|
849
|
-
if (hasCustomContent === 'directory') {
|
|
850
|
-
let customPath;
|
|
851
|
-
while (!customPath) {
|
|
852
|
-
let expandedPath;
|
|
853
|
-
const { directory } = await inquirer.prompt([
|
|
854
|
-
{
|
|
855
|
-
type: 'input',
|
|
856
|
-
name: 'directory',
|
|
857
|
-
message: 'Enter directory to search for custom content (will scan subfolders):',
|
|
858
|
-
default: process.cwd(), // Use actual current working directory
|
|
859
|
-
validate: async (input) => {
|
|
860
|
-
if (!input || input.trim() === '') {
|
|
861
|
-
return 'Please enter a directory path';
|
|
862
|
-
}
|
|
863
|
-
|
|
864
|
-
try {
|
|
865
|
-
expandedPath = this.expandUserPath(input.trim());
|
|
866
|
-
} catch (error) {
|
|
867
|
-
return error.message;
|
|
868
|
-
}
|
|
869
|
-
|
|
870
|
-
// Check if the path exists
|
|
871
|
-
const pathExists = await fs.pathExists(expandedPath);
|
|
872
|
-
if (!pathExists) {
|
|
873
|
-
return 'Directory does not exist';
|
|
874
|
-
}
|
|
875
|
-
|
|
876
|
-
return true;
|
|
877
|
-
},
|
|
878
|
-
},
|
|
879
|
-
]);
|
|
880
|
-
|
|
881
|
-
// Now expand the path for use after the prompt
|
|
882
|
-
expandedPath = this.expandUserPath(directory.trim());
|
|
883
|
-
|
|
884
|
-
// Check if directory has custom content
|
|
885
|
-
const { CustomHandler } = require('../installers/lib/custom/handler');
|
|
886
|
-
const customHandler = new CustomHandler();
|
|
887
|
-
const customFiles = await customHandler.findCustomContent(expandedPath);
|
|
888
|
-
|
|
889
|
-
if (customFiles.length === 0) {
|
|
890
|
-
console.log(chalk.yellow(`\nNo custom content found in ${expandedPath}`));
|
|
891
|
-
|
|
892
|
-
const { tryAgain } = await inquirer.prompt([
|
|
893
|
-
{
|
|
894
|
-
type: 'confirm',
|
|
895
|
-
name: 'tryAgain',
|
|
896
|
-
message: 'Try a different directory?',
|
|
897
|
-
default: true,
|
|
898
|
-
},
|
|
899
|
-
]);
|
|
900
|
-
|
|
901
|
-
if (tryAgain) {
|
|
902
|
-
continue;
|
|
903
|
-
} else {
|
|
904
|
-
return { hasCustomContent: false };
|
|
905
|
-
}
|
|
906
|
-
}
|
|
907
|
-
|
|
908
|
-
customPath = expandedPath;
|
|
909
|
-
console.log(chalk.green(`\n✓ Found ${customFiles.length} custom content item(s):`));
|
|
910
|
-
for (const file of customFiles) {
|
|
911
|
-
const relativePath = path.relative(expandedPath, path.dirname(file));
|
|
912
|
-
const folderName = path.dirname(file).split(path.sep).pop();
|
|
913
|
-
console.log(chalk.dim(` • ${folderName} ${chalk.gray(`(${relativePath})`)}`));
|
|
914
|
-
}
|
|
915
|
-
}
|
|
916
|
-
|
|
917
|
-
return { hasCustomContent: true, customPath };
|
|
918
|
-
}
|
|
919
|
-
|
|
813
|
+
// Skip custom content installation - always return false
|
|
920
814
|
return { hasCustomContent: false };
|
|
815
|
+
|
|
816
|
+
// TODO: Custom content installation temporarily disabled
|
|
817
|
+
// CLIUtils.displaySection('Custom Content', 'Optional: Add custom agents, workflows, and modules');
|
|
818
|
+
|
|
819
|
+
// const { hasCustomContent } = await inquirer.prompt([
|
|
820
|
+
// {
|
|
821
|
+
// type: 'list',
|
|
822
|
+
// name: 'hasCustomContent',
|
|
823
|
+
// message: 'Do you have custom content to install?',
|
|
824
|
+
// choices: [
|
|
825
|
+
// { name: 'No (skip custom content)', value: 'none' },
|
|
826
|
+
// { name: 'Enter a directory path', value: 'directory' },
|
|
827
|
+
// { name: 'Enter a URL', value: 'url' },
|
|
828
|
+
// ],
|
|
829
|
+
// default: 'none',
|
|
830
|
+
// },
|
|
831
|
+
// ]);
|
|
832
|
+
|
|
833
|
+
// if (hasCustomContent === 'none') {
|
|
834
|
+
// return { hasCustomContent: false };
|
|
835
|
+
// }
|
|
836
|
+
|
|
837
|
+
// TODO: Custom content installation temporarily disabled
|
|
838
|
+
// if (hasCustomContent === 'url') {
|
|
839
|
+
// console.log(chalk.yellow('\nURL-based custom content installation is coming soon!'));
|
|
840
|
+
// console.log(chalk.cyan('For now, please download your custom content and choose "Enter a directory path".\n'));
|
|
841
|
+
// return { hasCustomContent: false };
|
|
842
|
+
// }
|
|
843
|
+
|
|
844
|
+
// if (hasCustomContent === 'directory') {
|
|
845
|
+
// let customPath;
|
|
846
|
+
// while (!customPath) {
|
|
847
|
+
// let expandedPath;
|
|
848
|
+
// const { directory } = await inquirer.prompt([
|
|
849
|
+
// {
|
|
850
|
+
// type: 'input',
|
|
851
|
+
// name: 'directory',
|
|
852
|
+
// message: 'Enter directory to search for custom content (will scan subfolders):',
|
|
853
|
+
// default: process.cwd(), // Use actual current working directory
|
|
854
|
+
// validate: async (input) => {
|
|
855
|
+
// if (!input || input.trim() === '') {
|
|
856
|
+
// return 'Please enter a directory path';
|
|
857
|
+
// }
|
|
858
|
+
|
|
859
|
+
// try {
|
|
860
|
+
// expandedPath = this.expandUserPath(input.trim());
|
|
861
|
+
// } catch (error) {
|
|
862
|
+
// return error.message;
|
|
863
|
+
// }
|
|
864
|
+
|
|
865
|
+
// // Check if the path exists
|
|
866
|
+
// const pathExists = await fs.pathExists(expandedPath);
|
|
867
|
+
// if (!pathExists) {
|
|
868
|
+
// return 'Directory does not exist';
|
|
869
|
+
// }
|
|
870
|
+
|
|
871
|
+
// return true;
|
|
872
|
+
// },
|
|
873
|
+
// },
|
|
874
|
+
// ]);
|
|
875
|
+
|
|
876
|
+
// // Now expand the path for use after the prompt
|
|
877
|
+
// expandedPath = this.expandUserPath(directory.trim());
|
|
878
|
+
|
|
879
|
+
// // Check if directory has custom content
|
|
880
|
+
// const customHandler = new CustomHandler();
|
|
881
|
+
// const customFiles = await customHandler.findCustomContent(expandedPath);
|
|
882
|
+
|
|
883
|
+
// if (customFiles.length === 0) {
|
|
884
|
+
// console.log(chalk.yellow(`\nNo custom content found in ${expandedPath}`));
|
|
885
|
+
|
|
886
|
+
// const { tryAgain } = await inquirer.prompt([
|
|
887
|
+
// {
|
|
888
|
+
// type: 'confirm',
|
|
889
|
+
// name: 'tryAgain',
|
|
890
|
+
// message: 'Try a different directory?',
|
|
891
|
+
// default: true,
|
|
892
|
+
// },
|
|
893
|
+
// ]);
|
|
894
|
+
|
|
895
|
+
// if (tryAgain) {
|
|
896
|
+
// continue;
|
|
897
|
+
// } else {
|
|
898
|
+
// return { hasCustomContent: false };
|
|
899
|
+
// }
|
|
900
|
+
// }
|
|
901
|
+
|
|
902
|
+
// customPath = expandedPath;
|
|
903
|
+
// console.log(chalk.green(`\n✓ Found ${customFiles.length} custom content item(s):`));
|
|
904
|
+
// for (const file of customFiles) {
|
|
905
|
+
// const relativePath = path.relative(expandedPath, path.dirname(file));
|
|
906
|
+
// const folderName = path.dirname(file).split(path.sep).pop();
|
|
907
|
+
// console.log(chalk.dim(` • ${folderName} ${chalk.gray(`(${relativePath})`)}`));
|
|
908
|
+
// }
|
|
909
|
+
// }
|
|
910
|
+
|
|
911
|
+
// return { hasCustomContent: true, customPath };
|
|
912
|
+
// }
|
|
913
|
+
|
|
914
|
+
// return { hasCustomContent: false };
|
|
921
915
|
} catch (error) {
|
|
922
916
|
console.error(chalk.red('Error in custom content prompt:'), error);
|
|
923
917
|
return { hasCustomContent: false };
|
|
@@ -1088,7 +1082,7 @@ class UI {
|
|
|
1088
1082
|
* @calls checkAgentVibesInstalled(), inquirer.prompt(), chalk.green/yellow/dim()
|
|
1089
1083
|
*
|
|
1090
1084
|
* AI NOTE: This prompt is strategically positioned in installation flow:
|
|
1091
|
-
* - AFTER core config (
|
|
1085
|
+
* - AFTER core config (user_name, etc)
|
|
1092
1086
|
* - BEFORE IDE selection (which can hang on Windows/PowerShell)
|
|
1093
1087
|
*
|
|
1094
1088
|
* Flow Logic:
|
|
@@ -1216,132 +1210,134 @@ class UI {
|
|
|
1216
1210
|
*/
|
|
1217
1211
|
async promptCustomContentForExisting() {
|
|
1218
1212
|
try {
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
const { hasCustomContent } = await inquirer.prompt([
|
|
1222
|
-
{
|
|
1223
|
-
type: 'list',
|
|
1224
|
-
name: 'hasCustomContent',
|
|
1225
|
-
message: 'Do you want to add or update custom content?',
|
|
1226
|
-
choices: [
|
|
1227
|
-
{
|
|
1228
|
-
name: 'No, continue with current installation only',
|
|
1229
|
-
value: false,
|
|
1230
|
-
},
|
|
1231
|
-
{
|
|
1232
|
-
name: 'Yes, I have custom content to add or update',
|
|
1233
|
-
value: true,
|
|
1234
|
-
},
|
|
1235
|
-
],
|
|
1236
|
-
default: false,
|
|
1237
|
-
},
|
|
1238
|
-
]);
|
|
1239
|
-
|
|
1240
|
-
if (!hasCustomContent) {
|
|
1241
|
-
return { hasCustomContent: false };
|
|
1242
|
-
}
|
|
1243
|
-
|
|
1244
|
-
// Get directory path
|
|
1245
|
-
const { customPath } = await inquirer.prompt([
|
|
1246
|
-
{
|
|
1247
|
-
type: 'input',
|
|
1248
|
-
name: 'customPath',
|
|
1249
|
-
message: 'Enter directory to search for custom content (will scan subfolders):',
|
|
1250
|
-
default: process.cwd(),
|
|
1251
|
-
validate: async (input) => {
|
|
1252
|
-
if (!input || input.trim() === '') {
|
|
1253
|
-
return 'Please enter a directory path';
|
|
1254
|
-
}
|
|
1255
|
-
|
|
1256
|
-
// Normalize and check if path exists
|
|
1257
|
-
const expandedPath = CLIUtils.expandPath(input.trim());
|
|
1258
|
-
const pathExists = await fs.pathExists(expandedPath);
|
|
1259
|
-
if (!pathExists) {
|
|
1260
|
-
return 'Directory does not exist';
|
|
1261
|
-
}
|
|
1262
|
-
|
|
1263
|
-
// Check if it's actually a directory
|
|
1264
|
-
const stats = await fs.stat(expandedPath);
|
|
1265
|
-
if (!stats.isDirectory()) {
|
|
1266
|
-
return 'Path must be a directory';
|
|
1267
|
-
}
|
|
1268
|
-
|
|
1269
|
-
return true;
|
|
1270
|
-
},
|
|
1271
|
-
transformer: (input) => {
|
|
1272
|
-
return CLIUtils.expandPath(input);
|
|
1273
|
-
},
|
|
1274
|
-
},
|
|
1275
|
-
]);
|
|
1276
|
-
|
|
1277
|
-
const resolvedPath = CLIUtils.expandPath(customPath);
|
|
1278
|
-
|
|
1279
|
-
// Find custom content
|
|
1280
|
-
const { CustomHandler } = require('../installers/lib/custom/handler');
|
|
1281
|
-
const customHandler = new CustomHandler();
|
|
1282
|
-
const customFiles = await customHandler.findCustomContent(resolvedPath);
|
|
1283
|
-
|
|
1284
|
-
if (customFiles.length === 0) {
|
|
1285
|
-
console.log(chalk.yellow(`\nNo custom content found in ${resolvedPath}`));
|
|
1286
|
-
|
|
1287
|
-
const { tryDifferent } = await inquirer.prompt([
|
|
1288
|
-
{
|
|
1289
|
-
type: 'confirm',
|
|
1290
|
-
name: 'tryDifferent',
|
|
1291
|
-
message: 'Try a different directory?',
|
|
1292
|
-
default: true,
|
|
1293
|
-
},
|
|
1294
|
-
]);
|
|
1295
|
-
|
|
1296
|
-
if (tryDifferent) {
|
|
1297
|
-
return await this.promptCustomContentForExisting();
|
|
1298
|
-
}
|
|
1299
|
-
|
|
1300
|
-
return { hasCustomContent: false };
|
|
1301
|
-
}
|
|
1302
|
-
|
|
1303
|
-
// Display found items
|
|
1304
|
-
console.log(chalk.cyan(`\nFound ${customFiles.length} custom content file(s):`));
|
|
1305
|
-
const { CustomHandler: CustomHandler2 } = require('../installers/lib/custom/handler');
|
|
1306
|
-
const customHandler2 = new CustomHandler2();
|
|
1307
|
-
const customContentItems = [];
|
|
1308
|
-
|
|
1309
|
-
for (const customFile of customFiles) {
|
|
1310
|
-
const customInfo = await customHandler2.getCustomInfo(customFile);
|
|
1311
|
-
if (customInfo) {
|
|
1312
|
-
customContentItems.push({
|
|
1313
|
-
name: `${chalk.cyan('✓')} ${customInfo.name} ${chalk.gray(`(${customInfo.relativePath})`)}`,
|
|
1314
|
-
value: `__CUSTOM_CONTENT__${customFile}`,
|
|
1315
|
-
checked: true,
|
|
1316
|
-
});
|
|
1317
|
-
}
|
|
1318
|
-
}
|
|
1319
|
-
|
|
1320
|
-
// Add option to keep existing custom content
|
|
1321
|
-
console.log(chalk.yellow('\nExisting custom modules will be preserved unless you remove them'));
|
|
1322
|
-
|
|
1323
|
-
const { selectedFiles } = await inquirer.prompt([
|
|
1324
|
-
{
|
|
1325
|
-
type: 'checkbox',
|
|
1326
|
-
name: 'selectedFiles',
|
|
1327
|
-
message: 'Select custom content to add:',
|
|
1328
|
-
choices: customContentItems,
|
|
1329
|
-
pageSize: 15,
|
|
1330
|
-
validate: (answer) => {
|
|
1331
|
-
if (answer.length === 0) {
|
|
1332
|
-
return 'You must select at least one item';
|
|
1333
|
-
}
|
|
1334
|
-
return true;
|
|
1335
|
-
},
|
|
1336
|
-
},
|
|
1337
|
-
]);
|
|
1213
|
+
// Skip custom content installation - always return false
|
|
1214
|
+
return { hasCustomContent: false };
|
|
1338
1215
|
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1216
|
+
// TODO: Custom content installation temporarily disabled
|
|
1217
|
+
// CLIUtils.displaySection('Custom Content', 'Add new custom agents, workflows, or modules to your installation');
|
|
1218
|
+
|
|
1219
|
+
// const { hasCustomContent } = await inquirer.prompt([
|
|
1220
|
+
// {
|
|
1221
|
+
// type: 'list',
|
|
1222
|
+
// name: 'hasCustomContent',
|
|
1223
|
+
// message: 'Do you want to add or update custom content?',
|
|
1224
|
+
// choices: [
|
|
1225
|
+
// {
|
|
1226
|
+
// name: 'No, continue with current installation only',
|
|
1227
|
+
// value: false,
|
|
1228
|
+
// },
|
|
1229
|
+
// {
|
|
1230
|
+
// name: 'Yes, I have custom content to add or update',
|
|
1231
|
+
// value: true,
|
|
1232
|
+
// },
|
|
1233
|
+
// ],
|
|
1234
|
+
// default: false,
|
|
1235
|
+
// },
|
|
1236
|
+
// ]);
|
|
1237
|
+
|
|
1238
|
+
// if (!hasCustomContent) {
|
|
1239
|
+
// return { hasCustomContent: false };
|
|
1240
|
+
// }
|
|
1241
|
+
|
|
1242
|
+
// TODO: Custom content installation temporarily disabled
|
|
1243
|
+
// // Get directory path
|
|
1244
|
+
// const { customPath } = await inquirer.prompt([
|
|
1245
|
+
// {
|
|
1246
|
+
// type: 'input',
|
|
1247
|
+
// name: 'customPath',
|
|
1248
|
+
// message: 'Enter directory to search for custom content (will scan subfolders):',
|
|
1249
|
+
// default: process.cwd(),
|
|
1250
|
+
// validate: async (input) => {
|
|
1251
|
+
// if (!input || input.trim() === '') {
|
|
1252
|
+
// return 'Please enter a directory path';
|
|
1253
|
+
// }
|
|
1254
|
+
|
|
1255
|
+
// // Normalize and check if path exists
|
|
1256
|
+
// const expandedPath = CLIUtils.expandPath(input.trim());
|
|
1257
|
+
// const pathExists = await fs.pathExists(expandedPath);
|
|
1258
|
+
// if (!pathExists) {
|
|
1259
|
+
// return 'Directory does not exist';
|
|
1260
|
+
// }
|
|
1261
|
+
|
|
1262
|
+
// // Check if it's actually a directory
|
|
1263
|
+
// const stats = await fs.stat(expandedPath);
|
|
1264
|
+
// if (!stats.isDirectory()) {
|
|
1265
|
+
// return 'Path must be a directory';
|
|
1266
|
+
// }
|
|
1267
|
+
|
|
1268
|
+
// return true;
|
|
1269
|
+
// },
|
|
1270
|
+
// transformer: (input) => {
|
|
1271
|
+
// return CLIUtils.expandPath(input);
|
|
1272
|
+
// },
|
|
1273
|
+
// },
|
|
1274
|
+
// ]);
|
|
1275
|
+
|
|
1276
|
+
// const resolvedPath = CLIUtils.expandPath(customPath);
|
|
1277
|
+
|
|
1278
|
+
// // Find custom content
|
|
1279
|
+
// const customHandler = new CustomHandler();
|
|
1280
|
+
// const customFiles = await customHandler.findCustomContent(resolvedPath);
|
|
1281
|
+
|
|
1282
|
+
// if (customFiles.length === 0) {
|
|
1283
|
+
// console.log(chalk.yellow(`\nNo custom content found in ${resolvedPath}`));
|
|
1284
|
+
|
|
1285
|
+
// const { tryDifferent } = await inquirer.prompt([
|
|
1286
|
+
// {
|
|
1287
|
+
// type: 'confirm',
|
|
1288
|
+
// name: 'tryDifferent',
|
|
1289
|
+
// message: 'Try a different directory?',
|
|
1290
|
+
// default: true,
|
|
1291
|
+
// },
|
|
1292
|
+
// ]);
|
|
1293
|
+
|
|
1294
|
+
// if (tryDifferent) {
|
|
1295
|
+
// return await this.promptCustomContentForExisting();
|
|
1296
|
+
// }
|
|
1297
|
+
|
|
1298
|
+
// return { hasCustomContent: false };
|
|
1299
|
+
// }
|
|
1300
|
+
|
|
1301
|
+
// // Display found items
|
|
1302
|
+
// console.log(chalk.cyan(`\nFound ${customFiles.length} custom content file(s):`));
|
|
1303
|
+
// const customContentItems = [];
|
|
1304
|
+
|
|
1305
|
+
// for (const customFile of customFiles) {
|
|
1306
|
+
// const customInfo = await customHandler.getCustomInfo(customFile);
|
|
1307
|
+
// if (customInfo) {
|
|
1308
|
+
// customContentItems.push({
|
|
1309
|
+
// name: `${chalk.cyan('✓')} ${customInfo.name} ${chalk.gray(`(${customInfo.relativePath})`)}`,
|
|
1310
|
+
// value: `__CUSTOM_CONTENT__${customFile}`,
|
|
1311
|
+
// checked: true,
|
|
1312
|
+
// });
|
|
1313
|
+
// }
|
|
1314
|
+
// }
|
|
1315
|
+
|
|
1316
|
+
// // Add option to keep existing custom content
|
|
1317
|
+
// console.log(chalk.yellow('\nExisting custom modules will be preserved unless you remove them'));
|
|
1318
|
+
|
|
1319
|
+
// const { selectedFiles } = await inquirer.prompt([
|
|
1320
|
+
// {
|
|
1321
|
+
// type: 'checkbox',
|
|
1322
|
+
// name: 'selectedFiles',
|
|
1323
|
+
// message: 'Select custom content to add:',
|
|
1324
|
+
// choices: customContentItems,
|
|
1325
|
+
// pageSize: 15,
|
|
1326
|
+
// validate: (answer) => {
|
|
1327
|
+
// if (answer.length === 0) {
|
|
1328
|
+
// return 'You must select at least one item';
|
|
1329
|
+
// }
|
|
1330
|
+
// return true;
|
|
1331
|
+
// },
|
|
1332
|
+
// },
|
|
1333
|
+
// ]);
|
|
1334
|
+
|
|
1335
|
+
// return {
|
|
1336
|
+
// hasCustomContent: true,
|
|
1337
|
+
// customPath: resolvedPath,
|
|
1338
|
+
// selected: true,
|
|
1339
|
+
// selectedFiles: selectedFiles,
|
|
1340
|
+
// };
|
|
1345
1341
|
} catch (error) {
|
|
1346
1342
|
console.error(chalk.red('Error configuring custom content:'), error);
|
|
1347
1343
|
return { hasCustomContent: false };
|
|
@@ -3,17 +3,16 @@ const { ManifestGenerator } = require('./installers/lib/core/manifest-generator'
|
|
|
3
3
|
|
|
4
4
|
async function regenerateManifests() {
|
|
5
5
|
const generator = new ManifestGenerator();
|
|
6
|
-
const targetDir = process.argv[2]
|
|
7
|
-
const bmadDir = path.join(process.cwd(), targetDir, 'bmad');
|
|
6
|
+
const targetDir = process.argv[2];
|
|
8
7
|
|
|
9
8
|
// List of modules to include in manifests
|
|
10
9
|
const selectedModules = ['bmb', 'bmm', 'cis'];
|
|
11
10
|
|
|
12
11
|
console.log('Regenerating manifests with relative paths...');
|
|
13
|
-
console.log('Target directory:'
|
|
12
|
+
console.log('Target directory: .bmad');
|
|
14
13
|
|
|
15
14
|
try {
|
|
16
|
-
const result = await generator.generateManifests(
|
|
15
|
+
const result = await generator.generateManifests('.bmad', selectedModules, [], { ides: [] });
|
|
17
16
|
console.log('✓ Manifests generated successfully:');
|
|
18
17
|
console.log(` - ${result.workflows} workflows`);
|
|
19
18
|
console.log(` - ${result.agents} agents`);
|
|
@@ -12,7 +12,7 @@ const chalk = require('chalk');
|
|
|
12
12
|
* Find BMAD directory in project
|
|
13
13
|
*/
|
|
14
14
|
function findBmadDir(projectDir = process.cwd()) {
|
|
15
|
-
const possibleNames = ['
|
|
15
|
+
const possibleNames = ['.bmad'];
|
|
16
16
|
|
|
17
17
|
for (const name of possibleNames) {
|
|
18
18
|
const bmadDir = path.join(projectDir, name);
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
# Example Custom Content module
|
|
2
|
-
|
|
3
|
-
This is a demonstration of custom stand along agents and workflows. By having this content all in a folder with a custom.yaml file,
|
|
4
|
-
These items will be discovered by the installer and offered for installation.
|
|
5
|
-
|
|
6
|
-
This is how you could also create and share other custom agents and workflows not tied to a specific module.
|
|
7
|
-
|
|
8
|
-
To see how these become installable, rename custom.bak -> custom.yaml and run the installer from the location you also have put this folder.
|