bmad-enhanced 1.3.8 → 1.4.1
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/README.md +115 -131
- package/_bmad/_config/agent-manifest.csv +23 -0
- package/_bmad/_config/agents/bmb-agent-builder.customize.yaml +41 -0
- package/_bmad/_config/agents/bmb-module-builder.customize.yaml +41 -0
- package/_bmad/_config/agents/bmb-workflow-builder.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-analyst.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-architect.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-dev.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-pm.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-quick-flow-solo-dev.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-quinn.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-sm.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-tech-writer.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-ux-designer.customize.yaml +41 -0
- package/_bmad/_config/agents/cis-brainstorming-coach.customize.yaml +41 -0
- package/_bmad/_config/agents/cis-creative-problem-solver.customize.yaml +41 -0
- package/_bmad/_config/agents/cis-design-thinking-coach.customize.yaml +41 -0
- package/_bmad/_config/agents/cis-innovation-strategist.customize.yaml +41 -0
- package/_bmad/_config/agents/cis-presentation-master.customize.yaml +41 -0
- package/_bmad/_config/agents/cis-storyteller.customize.yaml +41 -0
- package/_bmad/_config/agents/core-bmad-master.customize.yaml +41 -0
- package/_bmad/_config/agents/tea-tea.customize.yaml +41 -0
- package/_bmad/_config/bmad-help.csv +66 -0
- package/_bmad/_config/files-manifest.csv +602 -0
- package/_bmad/_config/manifest.yaml +42 -0
- package/_bmad/_config/task-manifest.csv +9 -0
- package/_bmad/_config/tool-manifest.csv +1 -0
- package/_bmad/_config/workflow-manifest.csv +41 -0
- package/_bmad/_memory/config.yaml +11 -0
- package/_bmad/_memory/storyteller-sidecar/stories-told.md +7 -0
- package/_bmad/_memory/storyteller-sidecar/story-preferences.md +7 -0
- package/_bmad/bmb/agents/agent-builder.md +59 -0
- package/_bmad/bmb/agents/module-builder.md +60 -0
- package/_bmad/bmb/agents/workflow-builder.md +61 -0
- package/_bmad/bmb/config.yaml +12 -0
- package/_bmad/bmb/module-help.csv +13 -0
- package/_bmad/bmb/workflows/agent/data/agent-compilation.md +273 -0
- package/_bmad/bmb/workflows/agent/data/agent-menu-patterns.md +233 -0
- package/_bmad/bmb/workflows/agent/data/agent-metadata.md +208 -0
- package/_bmad/bmb/workflows/agent/data/brainstorm-context.md +146 -0
- package/_bmad/bmb/workflows/agent/data/communication-presets.csv +61 -0
- package/_bmad/bmb/workflows/agent/data/critical-actions.md +120 -0
- package/_bmad/bmb/workflows/agent/data/expert-agent-architecture.md +236 -0
- package/_bmad/bmb/workflows/agent/data/expert-agent-validation.md +174 -0
- package/_bmad/bmb/workflows/agent/data/module-agent-validation.md +126 -0
- package/_bmad/bmb/workflows/agent/data/persona-properties.md +266 -0
- package/_bmad/bmb/workflows/agent/data/principles-crafting.md +292 -0
- package/_bmad/bmb/workflows/agent/data/reference/module-examples/architect.md +68 -0
- package/_bmad/bmb/workflows/agent/data/simple-agent-architecture.md +204 -0
- package/_bmad/bmb/workflows/agent/data/simple-agent-validation.md +133 -0
- package/_bmad/bmb/workflows/agent/data/understanding-agent-types.md +222 -0
- package/_bmad/bmb/workflows/agent/steps-c/step-01-brainstorm.md +128 -0
- package/_bmad/bmb/workflows/agent/steps-c/step-02-discovery.md +170 -0
- package/_bmad/bmb/workflows/agent/steps-c/step-03-type-metadata.md +296 -0
- package/_bmad/bmb/workflows/agent/steps-c/step-04-persona.md +212 -0
- package/_bmad/bmb/workflows/agent/steps-c/step-05-commands-menu.md +178 -0
- package/_bmad/bmb/workflows/agent/steps-c/step-06-activation.md +279 -0
- package/_bmad/bmb/workflows/agent/steps-c/step-07a-build-simple.md +187 -0
- package/_bmad/bmb/workflows/agent/steps-c/step-07b-build-expert.md +201 -0
- package/_bmad/bmb/workflows/agent/steps-c/step-07c-build-module.md +258 -0
- package/_bmad/bmb/workflows/agent/steps-c/step-08-celebrate.md +249 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-01-load-existing.md +221 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-02-discover-edits.md +193 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-03-placeholder.md +1 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-04-type-metadata.md +124 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-05-persona.md +134 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-06-commands-menu.md +122 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-07-activation.md +125 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-08a-edit-simple.md +137 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-08b-edit-expert.md +119 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-08c-edit-module.md +123 -0
- package/_bmad/bmb/workflows/agent/steps-e/e-09-celebrate.md +155 -0
- package/_bmad/bmb/workflows/agent/steps-v/v-01-load-review.md +136 -0
- package/_bmad/bmb/workflows/agent/steps-v/v-02a-validate-metadata.md +116 -0
- package/_bmad/bmb/workflows/agent/steps-v/v-02b-validate-persona.md +124 -0
- package/_bmad/bmb/workflows/agent/steps-v/v-02c-validate-menu.md +145 -0
- package/_bmad/bmb/workflows/agent/steps-v/v-02d-validate-structure.md +136 -0
- package/_bmad/bmb/workflows/agent/steps-v/v-02e-validate-sidecar.md +136 -0
- package/_bmad/bmb/workflows/agent/steps-v/v-03-summary.md +104 -0
- package/_bmad/bmb/workflows/agent/templates/agent-plan.template.md +5 -0
- package/_bmad/bmb/workflows/agent/templates/expert-agent-template/expert-agent.template.md +77 -0
- package/_bmad/bmb/workflows/agent/templates/simple-agent.template.md +72 -0
- package/_bmad/bmb/workflows/agent/workflow.md +123 -0
- package/_bmad/bmb/workflows/module/data/agent-architecture.md +179 -0
- package/_bmad/bmb/workflows/module/data/agent-spec-template.md +79 -0
- package/_bmad/bmb/workflows/module/data/module-installer-standards.md +348 -0
- package/_bmad/bmb/workflows/module/data/module-standards.md +280 -0
- package/_bmad/bmb/workflows/module/data/module-yaml-conventions.md +392 -0
- package/_bmad/bmb/workflows/module/steps-b/step-01-welcome.md +147 -0
- package/_bmad/bmb/workflows/module/steps-b/step-02-spark.md +140 -0
- package/_bmad/bmb/workflows/module/steps-b/step-03-module-type.md +148 -0
- package/_bmad/bmb/workflows/module/steps-b/step-04-vision.md +82 -0
- package/_bmad/bmb/workflows/module/steps-b/step-05-identity.md +96 -0
- package/_bmad/bmb/workflows/module/steps-b/step-06-users.md +85 -0
- package/_bmad/bmb/workflows/module/steps-b/step-07-value.md +75 -0
- package/_bmad/bmb/workflows/module/steps-b/step-08-agents.md +96 -0
- package/_bmad/bmb/workflows/module/steps-b/step-09-workflows.md +82 -0
- package/_bmad/bmb/workflows/module/steps-b/step-10-tools.md +90 -0
- package/_bmad/bmb/workflows/module/steps-b/step-11-scenarios.md +83 -0
- package/_bmad/bmb/workflows/module/steps-b/step-12-creative.md +94 -0
- package/_bmad/bmb/workflows/module/steps-b/step-13-review.md +104 -0
- package/_bmad/bmb/workflows/module/steps-b/step-14-finalize.md +117 -0
- package/_bmad/bmb/workflows/module/steps-c/step-01-load-brief.md +178 -0
- package/_bmad/bmb/workflows/module/steps-c/step-01b-continue.md +83 -0
- package/_bmad/bmb/workflows/module/steps-c/step-02-structure.md +109 -0
- package/_bmad/bmb/workflows/module/steps-c/step-03-config.md +118 -0
- package/_bmad/bmb/workflows/module/steps-c/step-04-installer.md +160 -0
- package/_bmad/bmb/workflows/module/steps-c/step-05-agents.md +167 -0
- package/_bmad/bmb/workflows/module/steps-c/step-06-workflows.md +183 -0
- package/_bmad/bmb/workflows/module/steps-c/step-07-docs.md +402 -0
- package/_bmad/bmb/workflows/module/steps-c/step-08-complete.md +123 -0
- package/_bmad/bmb/workflows/module/steps-e/step-01-load-target.md +81 -0
- package/_bmad/bmb/workflows/module/steps-e/step-02-select-edit.md +77 -0
- package/_bmad/bmb/workflows/module/steps-e/step-03-apply-edit.md +77 -0
- package/_bmad/bmb/workflows/module/steps-e/step-04-review.md +80 -0
- package/_bmad/bmb/workflows/module/steps-e/step-05-confirm.md +75 -0
- package/_bmad/bmb/workflows/module/steps-v/step-01-load-target.md +96 -0
- package/_bmad/bmb/workflows/module/steps-v/step-02-file-structure.md +94 -0
- package/_bmad/bmb/workflows/module/steps-v/step-03-module-yaml.md +99 -0
- package/_bmad/bmb/workflows/module/steps-v/step-04-agent-specs.md +152 -0
- package/_bmad/bmb/workflows/module/steps-v/step-05-workflow-specs.md +152 -0
- package/_bmad/bmb/workflows/module/steps-v/step-06-documentation.md +143 -0
- package/_bmad/bmb/workflows/module/steps-v/step-07-installation.md +113 -0
- package/_bmad/bmb/workflows/module/steps-v/step-08-report.md +197 -0
- package/_bmad/bmb/workflows/module/templates/brief-template.md +154 -0
- package/_bmad/bmb/workflows/module/templates/workflow-spec-template.md +96 -0
- package/_bmad/bmb/workflows/module/workflow.md +100 -0
- package/_bmad/bmb/workflows/workflow/data/architecture.md +152 -0
- package/_bmad/bmb/workflows/workflow/data/common-workflow-tools.csv +19 -0
- package/_bmad/bmb/workflows/workflow/data/csv-data-file-standards.md +81 -0
- package/_bmad/bmb/workflows/workflow/data/frontmatter-standards.md +225 -0
- package/_bmad/bmb/workflows/workflow/data/input-discovery-standards.md +269 -0
- package/_bmad/bmb/workflows/workflow/data/intent-vs-prescriptive-spectrum.md +50 -0
- package/_bmad/bmb/workflows/workflow/data/menu-handling-standards.md +167 -0
- package/_bmad/bmb/workflows/workflow/data/output-format-standards.md +188 -0
- package/_bmad/bmb/workflows/workflow/data/step-file-rules.md +235 -0
- package/_bmad/bmb/workflows/workflow/data/step-type-patterns.md +311 -0
- package/_bmad/bmb/workflows/workflow/data/subprocess-optimization-patterns.md +386 -0
- package/_bmad/bmb/workflows/workflow/data/trimodal-workflow-structure.md +209 -0
- package/_bmad/bmb/workflows/workflow/data/workflow-chaining-standards.md +271 -0
- package/_bmad/bmb/workflows/workflow/data/workflow-examples.md +276 -0
- package/_bmad/bmb/workflows/workflow/data/workflow-type-criteria.md +172 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-00-conversion.md +262 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-01-discovery.md +194 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-01b-continuation.md +3 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-02-classification.md +269 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-03-requirements.md +282 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-04-tools.md +281 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-05-plan-review.md +242 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-06-design.md +329 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-07-foundation.md +238 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-08-build-step-01.md +377 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-09-build-next-step.md +350 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-10-confirmation.md +320 -0
- package/_bmad/bmb/workflows/workflow/steps-c/step-11-completion.md +191 -0
- package/_bmad/bmb/workflows/workflow/steps-e/step-e-01-assess-workflow.md +237 -0
- package/_bmad/bmb/workflows/workflow/steps-e/step-e-02-discover-edits.md +248 -0
- package/_bmad/bmb/workflows/workflow/steps-e/step-e-03-fix-validation.md +252 -0
- package/_bmad/bmb/workflows/workflow/steps-e/step-e-04-direct-edit.md +275 -0
- package/_bmad/bmb/workflows/workflow/steps-e/step-e-05-apply-edit.md +154 -0
- package/_bmad/bmb/workflows/workflow/steps-e/step-e-06-validate-after.md +190 -0
- package/_bmad/bmb/workflows/workflow/steps-e/step-e-07-complete.md +206 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-01-validate-max-mode.md +109 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-01-validate.md +221 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-01b-structure.md +152 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-02-frontmatter-validation.md +199 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-02b-path-violations.md +265 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-03-menu-validation.md +164 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-04-step-type-validation.md +211 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-05-output-format-validation.md +200 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-06-validation-design-check.md +195 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-07-instruction-style-check.md +209 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-08-collaborative-experience-check.md +199 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-08b-subprocess-optimization.md +179 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-09-cohesive-review.md +186 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-10-report-complete.md +154 -0
- package/_bmad/bmb/workflows/workflow/steps-v/step-11-plan-validation.md +237 -0
- package/_bmad/bmb/workflows/workflow/templates/minimal-output-template.md +11 -0
- package/_bmad/bmb/workflows/workflow/templates/step-01-init-continuable-template.md +241 -0
- package/_bmad/bmb/workflows/workflow/templates/step-1b-template.md +223 -0
- package/_bmad/bmb/workflows/workflow/templates/step-template.md +290 -0
- package/_bmad/bmb/workflows/workflow/templates/workflow-template.md +102 -0
- package/_bmad/bmb/workflows/workflow/workflow.md +109 -0
- package/_bmad/bmm/agents/analyst.md +76 -0
- package/_bmad/bmm/agents/architect.md +58 -0
- package/_bmad/bmm/agents/dev.md +69 -0
- package/_bmad/bmm/agents/pm.md +72 -0
- package/_bmad/bmm/agents/qa.md +92 -0
- package/_bmad/bmm/agents/quick-flow-solo-dev.md +69 -0
- package/_bmad/bmm/agents/sm.md +70 -0
- package/_bmad/bmm/agents/tech-writer/tech-writer.md +70 -0
- package/_bmad/bmm/agents/ux-designer.md +57 -0
- package/_bmad/bmm/config.yaml +16 -0
- package/_bmad/bmm/data/project-context-template.md +26 -0
- package/_bmad/bmm/module-help.csv +32 -0
- package/_bmad/bmm/teams/default-party.csv +20 -0
- package/_bmad/bmm/teams/team-fullstack.yaml +12 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
- package/_bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
- package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/_bmad/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
- package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/_bmad/bmm/workflows/1-analysis/research/workflow.md +173 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +13 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +153 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +218 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md +433 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow.md +150 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +135 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
- package/_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
- package/_bmad/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
- package/_bmad/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
- package/_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +50 -0
- package/_bmad/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
- package/_bmad/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
- package/_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +58 -0
- package/_bmad/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
- package/_bmad/bmm/workflows/4-implementation/create-story/instructions.xml +345 -0
- package/_bmad/bmm/workflows/4-implementation/create-story/template.md +49 -0
- package/_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +59 -0
- package/_bmad/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/_bmad/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
- package/_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +25 -0
- package/_bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
- package/_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +57 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +53 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
- package/_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +35 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +176 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +149 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +192 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +145 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +128 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +201 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
- package/_bmad/bmm/workflows/document-project/checklist.md +245 -0
- package/_bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/_bmad/bmm/workflows/document-project/instructions.md +221 -0
- package/_bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/_bmad/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/_bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/_bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/_bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/_bmad/bmm/workflows/document-project/workflow.yaml +28 -0
- package/_bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/_bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/_bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/_bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +26 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +26 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +26 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
- package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +26 -0
- package/_bmad/bmm/workflows/qa/automate/checklist.md +33 -0
- package/_bmad/bmm/workflows/qa/automate/instructions.md +110 -0
- package/_bmad/bmm/workflows/qa/automate/workflow.yaml +47 -0
- package/_bmad/cis/agents/brainstorming-coach.md +61 -0
- package/_bmad/cis/agents/creative-problem-solver.md +61 -0
- package/_bmad/cis/agents/design-thinking-coach.md +61 -0
- package/_bmad/cis/agents/innovation-strategist.md +61 -0
- package/_bmad/cis/agents/presentation-master.md +67 -0
- package/_bmad/cis/agents/storyteller/storyteller.md +58 -0
- package/_bmad/cis/config.yaml +12 -0
- package/_bmad/cis/module-help.csv +6 -0
- package/_bmad/cis/teams/creative-squad.yaml +7 -0
- package/_bmad/cis/teams/default-party.csv +12 -0
- package/_bmad/cis/workflows/README.md +139 -0
- package/_bmad/cis/workflows/design-thinking/README.md +56 -0
- package/_bmad/cis/workflows/design-thinking/design-methods.csv +31 -0
- package/_bmad/cis/workflows/design-thinking/instructions.md +202 -0
- package/_bmad/cis/workflows/design-thinking/template.md +111 -0
- package/_bmad/cis/workflows/design-thinking/workflow.yaml +27 -0
- package/_bmad/cis/workflows/innovation-strategy/README.md +56 -0
- package/_bmad/cis/workflows/innovation-strategy/innovation-frameworks.csv +31 -0
- package/_bmad/cis/workflows/innovation-strategy/instructions.md +276 -0
- package/_bmad/cis/workflows/innovation-strategy/template.md +189 -0
- package/_bmad/cis/workflows/innovation-strategy/workflow.yaml +27 -0
- package/_bmad/cis/workflows/problem-solving/README.md +56 -0
- package/_bmad/cis/workflows/problem-solving/instructions.md +252 -0
- package/_bmad/cis/workflows/problem-solving/solving-methods.csv +31 -0
- package/_bmad/cis/workflows/problem-solving/template.md +165 -0
- package/_bmad/cis/workflows/problem-solving/workflow.yaml +27 -0
- package/_bmad/cis/workflows/storytelling/README.md +58 -0
- package/_bmad/cis/workflows/storytelling/instructions.md +293 -0
- package/_bmad/cis/workflows/storytelling/story-types.csv +26 -0
- package/_bmad/cis/workflows/storytelling/template.md +113 -0
- package/_bmad/cis/workflows/storytelling/workflow.yaml +27 -0
- package/_bmad/core/agents/bmad-master.md +56 -0
- package/_bmad/core/config.yaml +9 -0
- package/_bmad/core/module-help.csv +9 -0
- package/_bmad/core/resources/excalidraw/README.md +160 -0
- package/_bmad/core/resources/excalidraw/excalidraw-helpers.md +127 -0
- package/_bmad/core/resources/excalidraw/library-loader.md +50 -0
- package/_bmad/core/resources/excalidraw/validate-json-instructions.md +79 -0
- package/_bmad/core/tasks/editorial-review-prose.xml +100 -0
- package/_bmad/core/tasks/editorial-review-structure.xml +209 -0
- package/_bmad/core/tasks/help.md +62 -0
- package/_bmad/core/tasks/index-docs.xml +65 -0
- package/_bmad/core/tasks/review-adversarial-general.xml +48 -0
- package/_bmad/core/tasks/shard-doc.xml +109 -0
- package/_bmad/core/tasks/workflow.xml +235 -0
- package/_bmad/core/workflows/advanced-elicitation/methods.csv +51 -0
- package/_bmad/core/workflows/advanced-elicitation/workflow.xml +117 -0
- package/_bmad/core/workflows/brainstorming/brain-methods.csv +62 -0
- package/_bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
- package/_bmad/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
- package/_bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
- package/_bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
- package/_bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
- package/_bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
- package/_bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
- package/_bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
- package/_bmad/core/workflows/brainstorming/template.md +15 -0
- package/_bmad/core/workflows/brainstorming/workflow.md +58 -0
- package/_bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/_bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/_bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +157 -0
- package/_bmad/core/workflows/party-mode/workflow.md +194 -0
- package/_bmad/tea/agents/tea.md +71 -0
- package/_bmad/tea/config.yaml +19 -0
- package/_bmad/tea/module-help.csv +10 -0
- package/_bmad/tea/teams/default-party.csv +2 -0
- package/_bmad/tea/testarch/knowledge/adr-quality-readiness-checklist.md +377 -0
- package/_bmad/tea/testarch/knowledge/api-request.md +442 -0
- package/_bmad/tea/testarch/knowledge/api-testing-patterns.md +851 -0
- package/_bmad/tea/testarch/knowledge/auth-session.md +548 -0
- package/_bmad/tea/testarch/knowledge/burn-in.md +273 -0
- package/_bmad/tea/testarch/knowledge/ci-burn-in.md +675 -0
- package/_bmad/tea/testarch/knowledge/component-tdd.md +486 -0
- package/_bmad/tea/testarch/knowledge/contract-testing.md +957 -0
- package/_bmad/tea/testarch/knowledge/data-factories.md +500 -0
- package/_bmad/tea/testarch/knowledge/email-auth.md +721 -0
- package/_bmad/tea/testarch/knowledge/error-handling.md +725 -0
- package/_bmad/tea/testarch/knowledge/feature-flags.md +750 -0
- package/_bmad/tea/testarch/knowledge/file-utils.md +456 -0
- package/_bmad/tea/testarch/knowledge/fixture-architecture.md +401 -0
- package/_bmad/tea/testarch/knowledge/fixtures-composition.md +382 -0
- package/_bmad/tea/testarch/knowledge/intercept-network-call.md +426 -0
- package/_bmad/tea/testarch/knowledge/log.md +426 -0
- package/_bmad/tea/testarch/knowledge/network-error-monitor.md +401 -0
- package/_bmad/tea/testarch/knowledge/network-first.md +486 -0
- package/_bmad/tea/testarch/knowledge/network-recorder.md +527 -0
- package/_bmad/tea/testarch/knowledge/nfr-criteria.md +670 -0
- package/_bmad/tea/testarch/knowledge/overview.md +286 -0
- package/_bmad/tea/testarch/knowledge/playwright-config.md +730 -0
- package/_bmad/tea/testarch/knowledge/probability-impact.md +601 -0
- package/_bmad/tea/testarch/knowledge/recurse.md +421 -0
- package/_bmad/tea/testarch/knowledge/risk-governance.md +615 -0
- package/_bmad/tea/testarch/knowledge/selective-testing.md +732 -0
- package/_bmad/tea/testarch/knowledge/selector-resilience.md +527 -0
- package/_bmad/tea/testarch/knowledge/test-healing-patterns.md +644 -0
- package/_bmad/tea/testarch/knowledge/test-levels-framework.md +473 -0
- package/_bmad/tea/testarch/knowledge/test-priorities-matrix.md +373 -0
- package/_bmad/tea/testarch/knowledge/test-quality.md +664 -0
- package/_bmad/tea/testarch/knowledge/timing-debugging.md +372 -0
- package/_bmad/tea/testarch/knowledge/visual-debugging.md +524 -0
- package/_bmad/tea/testarch/tea-index.csv +35 -0
- package/_bmad/tea/workflows/testarch/README.md +74 -0
- package/_bmad/tea/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
- package/_bmad/tea/workflows/testarch/atdd/checklist.md +374 -0
- package/_bmad/tea/workflows/testarch/atdd/instructions.md +38 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-c/step-01-preflight-and-context.md +110 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-c/step-02-generation-mode.md +79 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-c/step-03-test-strategy.md +76 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04-generate-tests.md +228 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04a-subprocess-api-failing.md +215 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04b-subprocess-e2e-failing.md +212 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04c-aggregate.md +329 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-c/step-05-validate-and-complete.md +68 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-e/step-01-assess.md +65 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-e/step-02-apply-edit.md +60 -0
- package/_bmad/tea/workflows/testarch/atdd/steps-v/step-01-validate.md +67 -0
- package/_bmad/tea/workflows/testarch/atdd/validation-report-20260127-095021.md +73 -0
- package/_bmad/tea/workflows/testarch/atdd/validation-report-20260127-102401.md +116 -0
- package/_bmad/tea/workflows/testarch/atdd/workflow-plan.md +21 -0
- package/_bmad/tea/workflows/testarch/atdd/workflow.md +39 -0
- package/_bmad/tea/workflows/testarch/atdd/workflow.yaml +45 -0
- package/_bmad/tea/workflows/testarch/automate/checklist.md +582 -0
- package/_bmad/tea/workflows/testarch/automate/instructions.md +43 -0
- package/_bmad/tea/workflows/testarch/automate/steps-c/step-01-preflight-and-context.md +127 -0
- package/_bmad/tea/workflows/testarch/automate/steps-c/step-02-identify-targets.md +95 -0
- package/_bmad/tea/workflows/testarch/automate/steps-c/step-03-generate-tests.md +199 -0
- package/_bmad/tea/workflows/testarch/automate/steps-c/step-03a-subprocess-api.md +183 -0
- package/_bmad/tea/workflows/testarch/automate/steps-c/step-03b-subprocess-e2e.md +181 -0
- package/_bmad/tea/workflows/testarch/automate/steps-c/step-03c-aggregate.md +300 -0
- package/_bmad/tea/workflows/testarch/automate/steps-c/step-04-validate-and-summarize.md +69 -0
- package/_bmad/tea/workflows/testarch/automate/steps-e/step-01-assess.md +65 -0
- package/_bmad/tea/workflows/testarch/automate/steps-e/step-02-apply-edit.md +60 -0
- package/_bmad/tea/workflows/testarch/automate/steps-v/step-01-validate.md +67 -0
- package/_bmad/tea/workflows/testarch/automate/validation-report-20260127-095021.md +72 -0
- package/_bmad/tea/workflows/testarch/automate/validation-report-20260127-102401.md +114 -0
- package/_bmad/tea/workflows/testarch/automate/workflow-plan.md +20 -0
- package/_bmad/tea/workflows/testarch/automate/workflow.md +39 -0
- package/_bmad/tea/workflows/testarch/automate/workflow.yaml +52 -0
- package/_bmad/tea/workflows/testarch/ci/checklist.md +247 -0
- package/_bmad/tea/workflows/testarch/ci/github-actions-template.yaml +198 -0
- package/_bmad/tea/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
- package/_bmad/tea/workflows/testarch/ci/instructions.md +38 -0
- package/_bmad/tea/workflows/testarch/ci/steps-c/step-01-preflight.md +92 -0
- package/_bmad/tea/workflows/testarch/ci/steps-c/step-02-generate-pipeline.md +82 -0
- package/_bmad/tea/workflows/testarch/ci/steps-c/step-03-configure-quality-gates.md +75 -0
- package/_bmad/tea/workflows/testarch/ci/steps-c/step-04-validate-and-summary.md +67 -0
- package/_bmad/tea/workflows/testarch/ci/steps-e/step-01-assess.md +65 -0
- package/_bmad/tea/workflows/testarch/ci/steps-e/step-02-apply-edit.md +60 -0
- package/_bmad/tea/workflows/testarch/ci/steps-v/step-01-validate.md +67 -0
- package/_bmad/tea/workflows/testarch/ci/validation-report-20260127-095021.md +72 -0
- package/_bmad/tea/workflows/testarch/ci/validation-report-20260127-102401.md +114 -0
- package/_bmad/tea/workflows/testarch/ci/workflow-plan.md +20 -0
- package/_bmad/tea/workflows/testarch/ci/workflow.md +39 -0
- package/_bmad/tea/workflows/testarch/ci/workflow.yaml +45 -0
- package/_bmad/tea/workflows/testarch/framework/checklist.md +320 -0
- package/_bmad/tea/workflows/testarch/framework/instructions.md +38 -0
- package/_bmad/tea/workflows/testarch/framework/steps-c/step-01-preflight.md +75 -0
- package/_bmad/tea/workflows/testarch/framework/steps-c/step-02-select-framework.md +73 -0
- package/_bmad/tea/workflows/testarch/framework/steps-c/step-03-scaffold-framework.md +120 -0
- package/_bmad/tea/workflows/testarch/framework/steps-c/step-04-docs-and-scripts.md +70 -0
- package/_bmad/tea/workflows/testarch/framework/steps-c/step-05-validate-and-summary.md +68 -0
- package/_bmad/tea/workflows/testarch/framework/steps-e/step-01-assess.md +65 -0
- package/_bmad/tea/workflows/testarch/framework/steps-e/step-02-apply-edit.md +60 -0
- package/_bmad/tea/workflows/testarch/framework/steps-v/step-01-validate.md +67 -0
- package/_bmad/tea/workflows/testarch/framework/validation-report-20260127-095021.md +73 -0
- package/_bmad/tea/workflows/testarch/framework/validation-report-20260127-102401.md +116 -0
- package/_bmad/tea/workflows/testarch/framework/workflow-plan.md +22 -0
- package/_bmad/tea/workflows/testarch/framework/workflow.md +39 -0
- package/_bmad/tea/workflows/testarch/framework/workflow.yaml +47 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/checklist.md +407 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/instructions.md +36 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/nfr-report-template.md +462 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-01-load-context.md +85 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-02-define-thresholds.md +82 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-03-gather-evidence.md +64 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04-evaluate-and-score.md +140 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04a-subprocess-security.md +138 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04b-subprocess-performance.md +84 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04c-subprocess-reliability.md +85 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04d-subprocess-scalability.md +88 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04e-aggregate-nfr.md +219 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-05-generate-report.md +71 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-e/step-01-assess.md +65 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-e/step-02-apply-edit.md +60 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/steps-v/step-01-validate.md +67 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-095021.md +73 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-102401.md +116 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/workflow-plan.md +19 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/workflow.md +39 -0
- package/_bmad/tea/workflows/testarch/nfr-assess/workflow.yaml +47 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/checklist.md +197 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/data/curriculum.yaml +129 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/data/quiz-questions.yaml +206 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/data/role-paths.yaml +136 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/data/session-content-map.yaml +204 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/data/tea-resources-index.yaml +359 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/instructions.md +130 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-01-init.md +235 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-01b-continue.md +147 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-02-assess.md +258 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-03-session-menu.md +219 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-01.md +460 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-02.md +465 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-03.md +301 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-04.md +234 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-05.md +234 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-06.md +209 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-07.md +212 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-05-completion.md +339 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-e/step-e-01-assess-workflow.md +141 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-e/step-e-02-apply-edits.md +122 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/steps-v/step-v-01-validate.md +263 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/templates/certificate-template.md +86 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/templates/progress-template.yaml +95 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/templates/session-notes-template.md +83 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/workflow-plan-teach-me-testing.md +950 -0
- package/_bmad/tea/workflows/testarch/teach-me-testing/workflow.md +90 -0
- package/_bmad/tea/workflows/testarch/test-design/checklist.md +410 -0
- package/_bmad/tea/workflows/testarch/test-design/instructions.md +52 -0
- package/_bmad/tea/workflows/testarch/test-design/steps-c/step-01-detect-mode.md +109 -0
- package/_bmad/tea/workflows/testarch/test-design/steps-c/step-02-load-context.md +127 -0
- package/_bmad/tea/workflows/testarch/test-design/steps-c/step-03-risk-and-testability.md +85 -0
- package/_bmad/tea/workflows/testarch/test-design/steps-c/step-04-coverage-plan.md +98 -0
- package/_bmad/tea/workflows/testarch/test-design/steps-c/step-05-generate-output.md +97 -0
- package/_bmad/tea/workflows/testarch/test-design/steps-e/step-01-assess.md +65 -0
- package/_bmad/tea/workflows/testarch/test-design/steps-e/step-02-apply-edit.md +60 -0
- package/_bmad/tea/workflows/testarch/test-design/steps-v/step-01-validate.md +67 -0
- package/_bmad/tea/workflows/testarch/test-design/test-design-architecture-template.md +222 -0
- package/_bmad/tea/workflows/testarch/test-design/test-design-qa-template.md +296 -0
- package/_bmad/tea/workflows/testarch/test-design/test-design-template.md +294 -0
- package/_bmad/tea/workflows/testarch/test-design/validation-report-20260127-095021.md +73 -0
- package/_bmad/tea/workflows/testarch/test-design/validation-report-20260127-102401.md +116 -0
- package/_bmad/tea/workflows/testarch/test-design/workflow-plan.md +22 -0
- package/_bmad/tea/workflows/testarch/test-design/workflow.md +39 -0
- package/_bmad/tea/workflows/testarch/test-design/workflow.yaml +69 -0
- package/_bmad/tea/workflows/testarch/test-review/checklist.md +472 -0
- package/_bmad/tea/workflows/testarch/test-review/instructions.md +36 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-c/step-01-load-context.md +101 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-c/step-02-discover-tests.md +69 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03-quality-evaluation.md +184 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03a-subprocess-determinism.md +214 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03b-subprocess-isolation.md +125 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03c-subprocess-maintainability.md +102 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03d-subprocess-coverage.md +111 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03e-subprocess-performance.md +117 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03f-aggregate-scores.md +246 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-c/step-04-generate-report.md +72 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-e/step-01-assess.md +65 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-e/step-02-apply-edit.md +60 -0
- package/_bmad/tea/workflows/testarch/test-review/steps-v/step-01-validate.md +67 -0
- package/_bmad/tea/workflows/testarch/test-review/test-review-template.md +390 -0
- package/_bmad/tea/workflows/testarch/test-review/validation-report-20260127-095021.md +72 -0
- package/_bmad/tea/workflows/testarch/test-review/validation-report-20260127-102401.md +114 -0
- package/_bmad/tea/workflows/testarch/test-review/workflow-plan.md +18 -0
- package/_bmad/tea/workflows/testarch/test-review/workflow.md +39 -0
- package/_bmad/tea/workflows/testarch/test-review/workflow.yaml +46 -0
- package/_bmad/tea/workflows/testarch/trace/checklist.md +642 -0
- package/_bmad/tea/workflows/testarch/trace/instructions.md +36 -0
- package/_bmad/tea/workflows/testarch/trace/steps-c/step-01-load-context.md +80 -0
- package/_bmad/tea/workflows/testarch/trace/steps-c/step-02-discover-tests.md +69 -0
- package/_bmad/tea/workflows/testarch/trace/steps-c/step-03-map-criteria.md +65 -0
- package/_bmad/tea/workflows/testarch/trace/steps-c/step-04-analyze-gaps.md +244 -0
- package/_bmad/tea/workflows/testarch/trace/steps-c/step-05-gate-decision.md +232 -0
- package/_bmad/tea/workflows/testarch/trace/steps-e/step-01-assess.md +65 -0
- package/_bmad/tea/workflows/testarch/trace/steps-e/step-02-apply-edit.md +60 -0
- package/_bmad/tea/workflows/testarch/trace/steps-v/step-01-validate.md +67 -0
- package/_bmad/tea/workflows/testarch/trace/trace-template.md +675 -0
- package/_bmad/tea/workflows/testarch/trace/validation-report-20260127-095021.md +73 -0
- package/_bmad/tea/workflows/testarch/trace/validation-report-20260127-102401.md +116 -0
- package/_bmad/tea/workflows/testarch/trace/workflow-plan.md +21 -0
- package/_bmad/tea/workflows/testarch/trace/workflow.md +39 -0
- package/_bmad/tea/workflows/testarch/trace/workflow.yaml +55 -0
- package/index.js +37 -58
- package/package.json +25 -4
- package/scripts/bmad-doctor.js +324 -0
- package/scripts/install-all-agents.js +55 -207
- package/scripts/install-emma.js +17 -14
- package/scripts/install-wade.js +17 -14
- package/scripts/postinstall.js +10 -7
- package/scripts/update/bmad-migrate.js +58 -5
- package/scripts/update/bmad-update.js +18 -8
- package/scripts/update/bmad-version.js +21 -7
- package/scripts/update/lib/backup-manager.js +22 -58
- package/scripts/update/lib/config-merger.js +4 -39
- package/scripts/update/lib/migration-runner.js +78 -114
- package/scripts/update/lib/refresh-installation.js +132 -0
- package/scripts/update/lib/utils.js +96 -0
- package/scripts/update/lib/validator.js +31 -151
- package/scripts/update/lib/version-detector.js +36 -41
- package/scripts/update/migrations/1.0.x-to-1.3.0.js +41 -222
- package/scripts/update/migrations/1.1.x-to-1.3.0.js +7 -188
- package/scripts/update/migrations/1.2.x-to-1.3.0.js +7 -188
- package/scripts/update/migrations/registry.js +27 -53
- package/_bmad-output/design-artifacts/EMMA-USER-GUIDE.md +0 -710
- package/_bmad-output/design-artifacts/WADE-USER-GUIDE.md +0 -1191
- package/_bmad-output/vortex-artifacts/EMMA-USER-GUIDE.md +0 -450
- package/_bmad-output/vortex-artifacts/WADE-USER-GUIDE.md +0 -471
- package/create-github-release.sh +0 -19
package/scripts/install-emma.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const fs = require('fs-extra');
|
|
4
4
|
const path = require('path');
|
|
5
|
+
const { findProjectRoot } = require('./update/lib/utils');
|
|
5
6
|
|
|
6
7
|
const BOLD = '\x1b[1m';
|
|
7
8
|
const RESET = '\x1b[0m';
|
|
@@ -20,11 +21,10 @@ function printBanner() {
|
|
|
20
21
|
console.log('');
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
function checkPrerequisites() {
|
|
24
|
+
function checkPrerequisites(projectRoot) {
|
|
24
25
|
console.log(`${CYAN}[1/4]${RESET} Checking prerequisites...`);
|
|
25
26
|
|
|
26
|
-
const
|
|
27
|
-
const bmadDir = path.join(targetDir, '_bmad');
|
|
27
|
+
const bmadDir = path.join(projectRoot, '_bmad');
|
|
28
28
|
|
|
29
29
|
// Check if BMAD Method is installed
|
|
30
30
|
if (!fs.existsSync(bmadDir)) {
|
|
@@ -45,11 +45,11 @@ function checkPrerequisites() {
|
|
|
45
45
|
console.log(`${GREEN} ✓${RESET} Prerequisites met`);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
function copyAgentFiles() {
|
|
48
|
+
function copyAgentFiles(projectRoot) {
|
|
49
49
|
console.log(`${CYAN}[2/4]${RESET} Installing Emma agent files...`);
|
|
50
50
|
|
|
51
51
|
const sourceDir = path.join(__dirname, '..', '_bmad', 'bme', '_vortex');
|
|
52
|
-
const targetDir = path.join(
|
|
52
|
+
const targetDir = path.join(projectRoot, '_bmad', 'bme', '_vortex');
|
|
53
53
|
|
|
54
54
|
// Create target directory structure
|
|
55
55
|
fs.mkdirSync(path.join(targetDir, 'agents'), { recursive: true });
|
|
@@ -83,11 +83,11 @@ function copyAgentFiles() {
|
|
|
83
83
|
console.log(`${GREEN} ✓${RESET} Agent files installed`);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
function updateConfig() {
|
|
86
|
+
function updateConfig(projectRoot) {
|
|
87
87
|
console.log(`${CYAN}[3/4]${RESET} Configuring Emma...`);
|
|
88
88
|
|
|
89
|
-
const configPath = path.join(
|
|
90
|
-
const manifestPath = path.join(
|
|
89
|
+
const configPath = path.join(projectRoot, '_bmad', 'bme', '_vortex', 'config.yaml');
|
|
90
|
+
const manifestPath = path.join(projectRoot, '_bmad', '_config', 'agent-manifest.csv');
|
|
91
91
|
|
|
92
92
|
// Create config if doesn't exist
|
|
93
93
|
if (!fs.existsSync(configPath)) {
|
|
@@ -135,10 +135,10 @@ core_module: bme
|
|
|
135
135
|
console.log(`${GREEN} ✓${RESET} Configuration complete`);
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
function createOutputDirectory() {
|
|
138
|
+
function createOutputDirectory(projectRoot) {
|
|
139
139
|
console.log(`${CYAN}[4/4]${RESET} Setting up output directory...`);
|
|
140
140
|
|
|
141
|
-
const outputDir = path.join(
|
|
141
|
+
const outputDir = path.join(projectRoot, '_bmad-output', 'vortex-artifacts');
|
|
142
142
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
143
143
|
|
|
144
144
|
console.log(`${GREEN} ✓${RESET} Output directory ready`);
|
|
@@ -166,11 +166,14 @@ function printSuccess() {
|
|
|
166
166
|
|
|
167
167
|
async function main() {
|
|
168
168
|
try {
|
|
169
|
+
// Use findProjectRoot for existing projects, fall back to cwd for fresh installs
|
|
170
|
+
const projectRoot = findProjectRoot() || process.cwd();
|
|
171
|
+
|
|
169
172
|
printBanner();
|
|
170
|
-
checkPrerequisites();
|
|
171
|
-
copyAgentFiles();
|
|
172
|
-
updateConfig();
|
|
173
|
-
createOutputDirectory();
|
|
173
|
+
checkPrerequisites(projectRoot);
|
|
174
|
+
copyAgentFiles(projectRoot);
|
|
175
|
+
updateConfig(projectRoot);
|
|
176
|
+
createOutputDirectory(projectRoot);
|
|
174
177
|
printSuccess();
|
|
175
178
|
} catch (error) {
|
|
176
179
|
console.error(`${RED}✗ Installation failed:${RESET}`, error.message);
|
package/scripts/install-wade.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const fs = require('fs-extra');
|
|
4
4
|
const path = require('path');
|
|
5
|
+
const { findProjectRoot } = require('./update/lib/utils');
|
|
5
6
|
|
|
6
7
|
const BOLD = '\x1b[1m';
|
|
7
8
|
const RESET = '\x1b[0m';
|
|
@@ -20,11 +21,10 @@ function printBanner() {
|
|
|
20
21
|
console.log('');
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
function checkPrerequisites() {
|
|
24
|
+
function checkPrerequisites(projectRoot) {
|
|
24
25
|
console.log(`${CYAN}[1/4]${RESET} Checking prerequisites...`);
|
|
25
26
|
|
|
26
|
-
const
|
|
27
|
-
const bmadDir = path.join(targetDir, '_bmad');
|
|
27
|
+
const bmadDir = path.join(projectRoot, '_bmad');
|
|
28
28
|
|
|
29
29
|
// Check if BMAD Method is installed
|
|
30
30
|
if (!fs.existsSync(bmadDir)) {
|
|
@@ -45,11 +45,11 @@ function checkPrerequisites() {
|
|
|
45
45
|
console.log(`${GREEN} ✓${RESET} Prerequisites met`);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
function copyAgentFiles() {
|
|
48
|
+
function copyAgentFiles(projectRoot) {
|
|
49
49
|
console.log(`${CYAN}[2/4]${RESET} Installing Wade agent files...`);
|
|
50
50
|
|
|
51
51
|
const sourceDir = path.join(__dirname, '..', '_bmad', 'bme', '_vortex');
|
|
52
|
-
const targetDir = path.join(
|
|
52
|
+
const targetDir = path.join(projectRoot, '_bmad', 'bme', '_vortex');
|
|
53
53
|
|
|
54
54
|
// Create target directory structure
|
|
55
55
|
fs.mkdirSync(path.join(targetDir, 'agents'), { recursive: true });
|
|
@@ -83,11 +83,11 @@ function copyAgentFiles() {
|
|
|
83
83
|
console.log(`${GREEN} ✓${RESET} Agent files installed`);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
function updateConfig() {
|
|
86
|
+
function updateConfig(projectRoot) {
|
|
87
87
|
console.log(`${CYAN}[3/4]${RESET} Configuring Wade...`);
|
|
88
88
|
|
|
89
|
-
const configPath = path.join(
|
|
90
|
-
const manifestPath = path.join(
|
|
89
|
+
const configPath = path.join(projectRoot, '_bmad', 'bme', '_vortex', 'config.yaml');
|
|
90
|
+
const manifestPath = path.join(projectRoot, '_bmad', '_config', 'agent-manifest.csv');
|
|
91
91
|
|
|
92
92
|
// Update or create config
|
|
93
93
|
if (!fs.existsSync(configPath)) {
|
|
@@ -145,10 +145,10 @@ core_module: bme
|
|
|
145
145
|
console.log(`${GREEN} ✓${RESET} Configuration complete`);
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
function createOutputDirectory() {
|
|
148
|
+
function createOutputDirectory(projectRoot) {
|
|
149
149
|
console.log(`${CYAN}[4/4]${RESET} Setting up output directory...`);
|
|
150
150
|
|
|
151
|
-
const outputDir = path.join(
|
|
151
|
+
const outputDir = path.join(projectRoot, '_bmad-output', 'vortex-artifacts');
|
|
152
152
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
153
153
|
|
|
154
154
|
console.log(`${GREEN} ✓${RESET} Output directory ready`);
|
|
@@ -176,11 +176,14 @@ function printSuccess() {
|
|
|
176
176
|
|
|
177
177
|
async function main() {
|
|
178
178
|
try {
|
|
179
|
+
// Use findProjectRoot for existing projects, fall back to cwd for fresh installs
|
|
180
|
+
const projectRoot = findProjectRoot() || process.cwd();
|
|
181
|
+
|
|
179
182
|
printBanner();
|
|
180
|
-
checkPrerequisites();
|
|
181
|
-
copyAgentFiles();
|
|
182
|
-
updateConfig();
|
|
183
|
-
createOutputDirectory();
|
|
183
|
+
checkPrerequisites(projectRoot);
|
|
184
|
+
copyAgentFiles(projectRoot);
|
|
185
|
+
updateConfig(projectRoot);
|
|
186
|
+
createOutputDirectory(projectRoot);
|
|
184
187
|
printSuccess();
|
|
185
188
|
} catch (error) {
|
|
186
189
|
console.error(`${RED}✗ Installation failed:${RESET}`, error.message);
|
package/scripts/postinstall.js
CHANGED
|
@@ -27,9 +27,12 @@ async function main() {
|
|
|
27
27
|
const versionDetector = require('./update/lib/version-detector');
|
|
28
28
|
const registry = require('./update/migrations/registry');
|
|
29
29
|
|
|
30
|
-
const
|
|
30
|
+
const { findProjectRoot, compareVersions } = require('./update/lib/utils');
|
|
31
|
+
const projectRoot = findProjectRoot();
|
|
32
|
+
|
|
33
|
+
const currentVersion = versionDetector.getCurrentVersion(projectRoot);
|
|
31
34
|
const targetVersion = versionDetector.getTargetVersion();
|
|
32
|
-
const scenario = versionDetector.detectInstallationScenario();
|
|
35
|
+
const scenario = versionDetector.detectInstallationScenario(projectRoot);
|
|
33
36
|
|
|
34
37
|
// Fresh install
|
|
35
38
|
if (scenario === 'fresh' || !currentVersion) {
|
|
@@ -52,7 +55,7 @@ async function main() {
|
|
|
52
55
|
}
|
|
53
56
|
|
|
54
57
|
// Upgrade detected
|
|
55
|
-
if (
|
|
58
|
+
if (compareVersions(currentVersion, targetVersion) < 0) {
|
|
56
59
|
console.log(`${YELLOW}${BOLD}⚠ UPGRADE DETECTED${RESET}`);
|
|
57
60
|
console.log('');
|
|
58
61
|
console.log(` Current version: ${RED}${currentVersion}${RESET}`);
|
|
@@ -60,7 +63,7 @@ async function main() {
|
|
|
60
63
|
console.log('');
|
|
61
64
|
|
|
62
65
|
// Check for breaking changes
|
|
63
|
-
const breakingChanges = registry.getBreakingChanges(currentVersion
|
|
66
|
+
const breakingChanges = registry.getBreakingChanges(currentVersion);
|
|
64
67
|
if (breakingChanges.length > 0) {
|
|
65
68
|
console.log(`${RED}${BOLD} ⚠ Breaking changes detected!${RESET}`);
|
|
66
69
|
console.log('');
|
|
@@ -83,7 +86,7 @@ async function main() {
|
|
|
83
86
|
}
|
|
84
87
|
|
|
85
88
|
// Downgrade (shouldn't happen normally)
|
|
86
|
-
if (
|
|
89
|
+
if (compareVersions(currentVersion, targetVersion) > 0) {
|
|
87
90
|
console.log(`${YELLOW}Note: Package version (${targetVersion}) is older than installed version (${currentVersion})${RESET}`);
|
|
88
91
|
console.log('');
|
|
89
92
|
return;
|
|
@@ -95,8 +98,8 @@ async function main() {
|
|
|
95
98
|
console.log(` ${CYAN}npx bmad-install-agents${RESET} - Install all agents (Emma + Wade)`);
|
|
96
99
|
console.log('');
|
|
97
100
|
console.log('Or install individually:');
|
|
98
|
-
console.log(` ${CYAN}npx bmad-install-emma${RESET} - Install Emma (
|
|
99
|
-
console.log(` ${CYAN}npx bmad-install-wade${RESET} - Install Wade (
|
|
101
|
+
console.log(` ${CYAN}npx bmad-install-emma${RESET} - Install Emma (contextualization-expert)`);
|
|
102
|
+
console.log(` ${CYAN}npx bmad-install-wade${RESET} - Install Wade (lean-experiments-specialist)`);
|
|
100
103
|
console.log('');
|
|
101
104
|
}
|
|
102
105
|
}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
const chalk = require('chalk');
|
|
4
4
|
const registry = require('./migrations/registry');
|
|
5
|
+
const backupManager = require('./lib/backup-manager');
|
|
6
|
+
const { refreshInstallation } = require('./lib/refresh-installation');
|
|
7
|
+
const { findProjectRoot } = require('./lib/utils');
|
|
5
8
|
|
|
6
9
|
/**
|
|
7
10
|
* BMAD-Enhanced Migrate CLI
|
|
@@ -11,6 +14,15 @@ const registry = require('./migrations/registry');
|
|
|
11
14
|
async function main() {
|
|
12
15
|
const args = process.argv.slice(2);
|
|
13
16
|
|
|
17
|
+
// Validate project root
|
|
18
|
+
const projectRoot = findProjectRoot();
|
|
19
|
+
if (!projectRoot) {
|
|
20
|
+
console.error('');
|
|
21
|
+
console.error(chalk.red('Not in a BMAD project. Could not find _bmad/ directory.'));
|
|
22
|
+
console.error('');
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
|
|
14
26
|
// No args - show available migrations
|
|
15
27
|
if (args.length === 0) {
|
|
16
28
|
showAvailableMigrations();
|
|
@@ -32,6 +44,15 @@ async function main() {
|
|
|
32
44
|
process.exit(1);
|
|
33
45
|
}
|
|
34
46
|
|
|
47
|
+
// Check if already applied
|
|
48
|
+
const configPath = require('path').join(projectRoot, '_bmad/bme/_vortex/config.yaml');
|
|
49
|
+
if (registry.hasMigrationBeenApplied(migrationName, configPath)) {
|
|
50
|
+
console.log('');
|
|
51
|
+
console.log(chalk.yellow(`Migration '${migrationName}' has already been applied.`));
|
|
52
|
+
console.log('');
|
|
53
|
+
process.exit(0);
|
|
54
|
+
}
|
|
55
|
+
|
|
35
56
|
// Load migration module
|
|
36
57
|
if (!migration.module) {
|
|
37
58
|
try {
|
|
@@ -44,29 +65,61 @@ async function main() {
|
|
|
44
65
|
}
|
|
45
66
|
}
|
|
46
67
|
|
|
47
|
-
// Run migration
|
|
68
|
+
// Run migration with backup and refresh
|
|
48
69
|
console.log('');
|
|
49
70
|
console.log(chalk.cyan.bold(`Running migration: ${migration.name}`));
|
|
50
71
|
console.log(chalk.gray(migration.description));
|
|
51
72
|
console.log('');
|
|
52
73
|
|
|
74
|
+
let backupMetadata = null;
|
|
75
|
+
|
|
53
76
|
try {
|
|
54
|
-
|
|
77
|
+
// Create backup before running delta
|
|
78
|
+
console.log(chalk.cyan('Creating backup...'));
|
|
79
|
+
backupMetadata = await backupManager.createBackup('manual', projectRoot);
|
|
80
|
+
console.log(chalk.green(`✓ Backup created: ${require('path').basename(backupMetadata.backup_dir)}`));
|
|
81
|
+
console.log('');
|
|
82
|
+
|
|
83
|
+
// Run the delta
|
|
84
|
+
const changes = await migration.module.apply(projectRoot);
|
|
55
85
|
|
|
56
86
|
console.log('');
|
|
57
|
-
console.log(chalk.green.bold('✓ Migration completed'));
|
|
87
|
+
console.log(chalk.green.bold('✓ Migration delta completed'));
|
|
58
88
|
console.log('');
|
|
59
|
-
console.log(chalk.cyan('
|
|
89
|
+
console.log(chalk.cyan('Delta changes:'));
|
|
60
90
|
changes.forEach(change => {
|
|
61
91
|
console.log(chalk.gray(` - ${change}`));
|
|
62
92
|
});
|
|
63
93
|
console.log('');
|
|
64
94
|
|
|
95
|
+
// Refresh installation after delta
|
|
96
|
+
console.log(chalk.cyan('Refreshing installation files...'));
|
|
97
|
+
await refreshInstallation(projectRoot);
|
|
98
|
+
console.log(chalk.green('✓ Installation refreshed'));
|
|
99
|
+
console.log('');
|
|
100
|
+
|
|
65
101
|
} catch (error) {
|
|
66
102
|
console.error('');
|
|
67
103
|
console.error(chalk.red.bold('✗ Migration failed'));
|
|
68
104
|
console.error(chalk.red(error.message));
|
|
69
105
|
console.error('');
|
|
106
|
+
|
|
107
|
+
// Rollback if we have a backup
|
|
108
|
+
if (backupMetadata) {
|
|
109
|
+
console.log(chalk.yellow('Restoring from backup...'));
|
|
110
|
+
try {
|
|
111
|
+
await backupManager.restoreBackup(backupMetadata, projectRoot);
|
|
112
|
+
console.log(chalk.green('✓ Installation restored from backup'));
|
|
113
|
+
console.log('');
|
|
114
|
+
} catch (restoreError) {
|
|
115
|
+
console.error(chalk.red('✗ Restore failed!'));
|
|
116
|
+
console.error(chalk.red(restoreError.message));
|
|
117
|
+
console.error('');
|
|
118
|
+
console.error(chalk.yellow(`Manual restore may be needed from: ${backupMetadata.backup_dir}`));
|
|
119
|
+
console.error('');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
70
123
|
if (error.stack) {
|
|
71
124
|
console.error(chalk.gray(error.stack));
|
|
72
125
|
console.error('');
|
|
@@ -95,7 +148,7 @@ function showAvailableMigrations() {
|
|
|
95
148
|
const breaking = m.breaking ? chalk.red('[BREAKING]') : chalk.green('[SAFE]');
|
|
96
149
|
console.log(` ${index + 1}. ${chalk.cyan(m.name)} ${breaking}`);
|
|
97
150
|
console.log(` ${chalk.gray(m.description)}`);
|
|
98
|
-
console.log(` ${chalk.gray(
|
|
151
|
+
console.log(` ${chalk.gray(`From: ${m.fromVersion}`)}`);
|
|
99
152
|
console.log('');
|
|
100
153
|
});
|
|
101
154
|
|
|
@@ -5,6 +5,7 @@ const chalk = require('chalk');
|
|
|
5
5
|
const versionDetector = require('./lib/version-detector');
|
|
6
6
|
const migrationRunner = require('./lib/migration-runner');
|
|
7
7
|
const registry = require('./migrations/registry');
|
|
8
|
+
const { findProjectRoot } = require('./lib/utils');
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* BMAD-Enhanced Update CLI
|
|
@@ -15,7 +16,6 @@ async function main() {
|
|
|
15
16
|
const args = process.argv.slice(2);
|
|
16
17
|
const dryRun = args.includes('--dry-run');
|
|
17
18
|
const yes = args.includes('--yes') || args.includes('-y');
|
|
18
|
-
const force = args.includes('--force');
|
|
19
19
|
const verbose = args.includes('--verbose') || args.includes('-v');
|
|
20
20
|
|
|
21
21
|
// Header
|
|
@@ -25,10 +25,20 @@ async function main() {
|
|
|
25
25
|
console.log(chalk.bold.magenta('╚════════════════════════════════════════╝'));
|
|
26
26
|
console.log('');
|
|
27
27
|
|
|
28
|
+
// Validate project root
|
|
29
|
+
const projectRoot = findProjectRoot();
|
|
30
|
+
if (!projectRoot) {
|
|
31
|
+
console.log(chalk.red('Not in a BMAD project. Could not find _bmad/ directory.'));
|
|
32
|
+
console.log('');
|
|
33
|
+
console.log('Run: ' + chalk.cyan('npx bmad-install-agents'));
|
|
34
|
+
console.log('');
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
|
|
28
38
|
// 1. Detect current state
|
|
29
|
-
const currentVersion = versionDetector.getCurrentVersion();
|
|
39
|
+
const currentVersion = versionDetector.getCurrentVersion(projectRoot);
|
|
30
40
|
const targetVersion = versionDetector.getTargetVersion();
|
|
31
|
-
const scenario = versionDetector.detectInstallationScenario();
|
|
41
|
+
const scenario = versionDetector.detectInstallationScenario(projectRoot);
|
|
32
42
|
|
|
33
43
|
// Handle different scenarios
|
|
34
44
|
if (scenario === 'fresh') {
|
|
@@ -88,7 +98,7 @@ async function main() {
|
|
|
88
98
|
console.log(` To: ${chalk.green(targetVersion)}`);
|
|
89
99
|
console.log('');
|
|
90
100
|
|
|
91
|
-
const migrations = registry.getMigrationsFor(currentVersion
|
|
101
|
+
const migrations = registry.getMigrationsFor(currentVersion);
|
|
92
102
|
|
|
93
103
|
if (migrations.length === 0) {
|
|
94
104
|
console.log(chalk.yellow('No migrations needed (versions compatible)'));
|
|
@@ -104,7 +114,7 @@ async function main() {
|
|
|
104
114
|
console.log('');
|
|
105
115
|
|
|
106
116
|
// 3. Show breaking changes warning
|
|
107
|
-
const breakingChanges = registry.getBreakingChanges(currentVersion
|
|
117
|
+
const breakingChanges = registry.getBreakingChanges(currentVersion);
|
|
108
118
|
if (breakingChanges.length > 0) {
|
|
109
119
|
console.log(chalk.red.bold('⚠ BREAKING CHANGES:'));
|
|
110
120
|
breakingChanges.forEach(change => {
|
|
@@ -119,7 +129,7 @@ async function main() {
|
|
|
119
129
|
console.log('');
|
|
120
130
|
|
|
121
131
|
try {
|
|
122
|
-
await migrationRunner.runMigrations(currentVersion,
|
|
132
|
+
await migrationRunner.runMigrations(currentVersion, { dryRun: true, verbose });
|
|
123
133
|
} catch (error) {
|
|
124
134
|
console.error(chalk.red('Error during preview:'), error.message);
|
|
125
135
|
process.exit(1);
|
|
@@ -148,7 +158,7 @@ async function main() {
|
|
|
148
158
|
console.log(chalk.cyan.bold('Starting migration...'));
|
|
149
159
|
|
|
150
160
|
try {
|
|
151
|
-
const result = await migrationRunner.runMigrations(currentVersion,
|
|
161
|
+
const result = await migrationRunner.runMigrations(currentVersion, { verbose });
|
|
152
162
|
|
|
153
163
|
// 7. Show success report
|
|
154
164
|
console.log('');
|
|
@@ -167,7 +177,7 @@ async function main() {
|
|
|
167
177
|
console.log(chalk.gray(`Backup location: ${result.backupMetadata.backup_dir}`));
|
|
168
178
|
console.log('');
|
|
169
179
|
|
|
170
|
-
} catch (
|
|
180
|
+
} catch (_error) {
|
|
171
181
|
// Error already logged by migration-runner
|
|
172
182
|
process.exit(1);
|
|
173
183
|
}
|
|
@@ -5,6 +5,7 @@ const path = require('path');
|
|
|
5
5
|
const chalk = require('chalk');
|
|
6
6
|
const yaml = require('js-yaml');
|
|
7
7
|
const versionDetector = require('./lib/version-detector');
|
|
8
|
+
const { findProjectRoot, compareVersions } = require('./lib/utils');
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* BMAD-Enhanced Version CLI
|
|
@@ -12,14 +13,26 @@ const versionDetector = require('./lib/version-detector');
|
|
|
12
13
|
*/
|
|
13
14
|
|
|
14
15
|
async function main() {
|
|
15
|
-
const
|
|
16
|
+
const projectRoot = findProjectRoot();
|
|
16
17
|
const targetVersion = versionDetector.getTargetVersion();
|
|
17
|
-
const scenario = versionDetector.detectInstallationScenario();
|
|
18
18
|
|
|
19
19
|
console.log('');
|
|
20
20
|
console.log(chalk.bold('BMAD-Enhanced Version Information'));
|
|
21
21
|
console.log('');
|
|
22
22
|
|
|
23
|
+
// Not in a BMAD project
|
|
24
|
+
if (!projectRoot) {
|
|
25
|
+
console.log(chalk.yellow('Status: Not in a BMAD project'));
|
|
26
|
+
console.log(`Package version: ${chalk.cyan(targetVersion)}`);
|
|
27
|
+
console.log('');
|
|
28
|
+
console.log('Run: ' + chalk.cyan('npx bmad-install-agents'));
|
|
29
|
+
console.log('');
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const currentVersion = versionDetector.getCurrentVersion(projectRoot);
|
|
34
|
+
const scenario = versionDetector.detectInstallationScenario(projectRoot);
|
|
35
|
+
|
|
23
36
|
// Fresh install - not installed yet
|
|
24
37
|
if (scenario === 'fresh') {
|
|
25
38
|
console.log(chalk.yellow('Status: Not installed'));
|
|
@@ -64,7 +77,7 @@ async function main() {
|
|
|
64
77
|
// Status
|
|
65
78
|
if (currentVersion === targetVersion) {
|
|
66
79
|
console.log(chalk.green('Status: ✓ Up to date'));
|
|
67
|
-
} else if (
|
|
80
|
+
} else if (compareVersions(currentVersion, targetVersion) < 0) {
|
|
68
81
|
console.log(chalk.yellow('Status: ⚠ Update available'));
|
|
69
82
|
console.log('');
|
|
70
83
|
console.log('Run: ' + chalk.cyan('npx bmad-update --dry-run') + ' (to preview)');
|
|
@@ -74,7 +87,7 @@ async function main() {
|
|
|
74
87
|
}
|
|
75
88
|
|
|
76
89
|
// Show migration history
|
|
77
|
-
const migrationHistory = await getMigrationHistory();
|
|
90
|
+
const migrationHistory = await getMigrationHistory(projectRoot);
|
|
78
91
|
if (migrationHistory && migrationHistory.length > 0) {
|
|
79
92
|
console.log('');
|
|
80
93
|
console.log(chalk.cyan('Migration History:'));
|
|
@@ -94,10 +107,11 @@ async function main() {
|
|
|
94
107
|
|
|
95
108
|
/**
|
|
96
109
|
* Get migration history from config.yaml
|
|
110
|
+
* @param {string} projectRoot - Project root
|
|
97
111
|
* @returns {Promise<Array|null>} Migration history or null
|
|
98
112
|
*/
|
|
99
|
-
async function getMigrationHistory() {
|
|
100
|
-
const configPath = path.join(
|
|
113
|
+
async function getMigrationHistory(projectRoot) {
|
|
114
|
+
const configPath = path.join(projectRoot, '_bmad/bme/_vortex/config.yaml');
|
|
101
115
|
|
|
102
116
|
if (!fs.existsSync(configPath)) {
|
|
103
117
|
return null;
|
|
@@ -108,7 +122,7 @@ async function getMigrationHistory() {
|
|
|
108
122
|
const config = yaml.load(configContent);
|
|
109
123
|
|
|
110
124
|
return config.migration_history || null;
|
|
111
|
-
} catch (
|
|
125
|
+
} catch (_error) {
|
|
112
126
|
return null;
|
|
113
127
|
}
|
|
114
128
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const fs = require('fs-extra');
|
|
4
4
|
const path = require('path');
|
|
5
|
+
const { countUserDataFiles } = require('./utils');
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Backup Manager for BMAD-Enhanced
|
|
@@ -11,12 +12,13 @@ const path = require('path');
|
|
|
11
12
|
/**
|
|
12
13
|
* Create a backup of critical installation files
|
|
13
14
|
* @param {string} version - Current version being backed up
|
|
15
|
+
* @param {string} projectRoot - Absolute path to project root
|
|
14
16
|
* @returns {Promise<object>} Backup metadata
|
|
15
17
|
*/
|
|
16
|
-
async function createBackup(version) {
|
|
18
|
+
async function createBackup(version, projectRoot) {
|
|
17
19
|
const timestamp = Date.now();
|
|
18
20
|
const backupDir = path.join(
|
|
19
|
-
|
|
21
|
+
projectRoot,
|
|
20
22
|
'_bmad-output/.backups',
|
|
21
23
|
`backup-${version}-${timestamp}`
|
|
22
24
|
);
|
|
@@ -24,7 +26,7 @@ async function createBackup(version) {
|
|
|
24
26
|
console.log(`Creating backup in: ${backupDir}`);
|
|
25
27
|
|
|
26
28
|
// Ensure backup directory exists
|
|
27
|
-
await ensureBackupDirectory();
|
|
29
|
+
await ensureBackupDirectory(projectRoot);
|
|
28
30
|
|
|
29
31
|
// Create backup directory
|
|
30
32
|
await fs.ensureDir(backupDir);
|
|
@@ -34,7 +36,7 @@ async function createBackup(version) {
|
|
|
34
36
|
|
|
35
37
|
// Copy each file/directory to backup
|
|
36
38
|
for (const file of filesToBackup) {
|
|
37
|
-
const sourcePath = path.join(
|
|
39
|
+
const sourcePath = path.join(projectRoot, file.path);
|
|
38
40
|
|
|
39
41
|
if (!fs.existsSync(sourcePath)) {
|
|
40
42
|
console.log(` Skipping ${file.path} (does not exist)`);
|
|
@@ -44,12 +46,7 @@ async function createBackup(version) {
|
|
|
44
46
|
const destPath = path.join(backupDir, file.name);
|
|
45
47
|
|
|
46
48
|
try {
|
|
47
|
-
|
|
48
|
-
await fs.copy(sourcePath, destPath);
|
|
49
|
-
} else if (file.type === 'directory') {
|
|
50
|
-
await fs.copy(sourcePath, destPath);
|
|
51
|
-
}
|
|
52
|
-
|
|
49
|
+
await fs.copy(sourcePath, destPath);
|
|
53
50
|
backedUpFiles.push(file.path);
|
|
54
51
|
console.log(` ✓ Backed up: ${file.path}`);
|
|
55
52
|
} catch (error) {
|
|
@@ -59,7 +56,7 @@ async function createBackup(version) {
|
|
|
59
56
|
}
|
|
60
57
|
|
|
61
58
|
// Count user data files (for integrity check)
|
|
62
|
-
const userDataCount = await countUserDataFiles();
|
|
59
|
+
const userDataCount = await countUserDataFiles(projectRoot);
|
|
63
60
|
|
|
64
61
|
// Create backup manifest
|
|
65
62
|
const manifest = {
|
|
@@ -82,9 +79,10 @@ async function createBackup(version) {
|
|
|
82
79
|
/**
|
|
83
80
|
* Restore from backup after migration failure
|
|
84
81
|
* @param {object} backupMetadata - Metadata from createBackup
|
|
82
|
+
* @param {string} projectRoot - Absolute path to project root
|
|
85
83
|
* @returns {Promise<void>}
|
|
86
84
|
*/
|
|
87
|
-
async function restoreBackup(backupMetadata) {
|
|
85
|
+
async function restoreBackup(backupMetadata, projectRoot) {
|
|
88
86
|
const backupDir = backupMetadata.backup_dir;
|
|
89
87
|
|
|
90
88
|
console.log('');
|
|
@@ -104,7 +102,7 @@ async function restoreBackup(backupMetadata) {
|
|
|
104
102
|
continue;
|
|
105
103
|
}
|
|
106
104
|
|
|
107
|
-
const destPath = path.join(
|
|
105
|
+
const destPath = path.join(projectRoot, file.path);
|
|
108
106
|
|
|
109
107
|
try {
|
|
110
108
|
// Remove existing file/directory first
|
|
@@ -126,10 +124,11 @@ async function restoreBackup(backupMetadata) {
|
|
|
126
124
|
|
|
127
125
|
/**
|
|
128
126
|
* List available backups
|
|
127
|
+
* @param {string} projectRoot - Absolute path to project root
|
|
129
128
|
* @returns {Promise<Array>} List of backup metadata
|
|
130
129
|
*/
|
|
131
|
-
async function listBackups() {
|
|
132
|
-
const backupsDir = path.join(
|
|
130
|
+
async function listBackups(projectRoot) {
|
|
131
|
+
const backupsDir = path.join(projectRoot, '_bmad-output/.backups');
|
|
133
132
|
|
|
134
133
|
if (!fs.existsSync(backupsDir)) {
|
|
135
134
|
return [];
|
|
@@ -161,10 +160,11 @@ async function listBackups() {
|
|
|
161
160
|
/**
|
|
162
161
|
* Clean up old backups, keeping only the most recent N
|
|
163
162
|
* @param {number} keepCount - Number of backups to keep
|
|
163
|
+
* @param {string} projectRoot - Absolute path to project root
|
|
164
164
|
* @returns {Promise<number>} Number of backups deleted
|
|
165
165
|
*/
|
|
166
|
-
async function cleanupOldBackups(keepCount = 5) {
|
|
167
|
-
const backups = await listBackups();
|
|
166
|
+
async function cleanupOldBackups(keepCount = 5, projectRoot) {
|
|
167
|
+
const backups = await listBackups(projectRoot);
|
|
168
168
|
|
|
169
169
|
if (backups.length <= keepCount) {
|
|
170
170
|
return 0; // Nothing to clean up
|
|
@@ -188,13 +188,14 @@ async function cleanupOldBackups(keepCount = 5) {
|
|
|
188
188
|
|
|
189
189
|
/**
|
|
190
190
|
* Ensure backup directory exists
|
|
191
|
+
* @param {string} projectRoot - Absolute path to project root
|
|
191
192
|
* @returns {Promise<void>}
|
|
192
193
|
*/
|
|
193
|
-
async function ensureBackupDirectory() {
|
|
194
|
-
const backupDir = path.join(
|
|
194
|
+
async function ensureBackupDirectory(projectRoot) {
|
|
195
|
+
const backupDir = path.join(projectRoot, '_bmad-output/.backups');
|
|
195
196
|
|
|
196
197
|
if (!fs.existsSync(backupDir)) {
|
|
197
|
-
const outputDir = path.join(
|
|
198
|
+
const outputDir = path.join(projectRoot, '_bmad-output');
|
|
198
199
|
|
|
199
200
|
if (!fs.existsSync(outputDir)) {
|
|
200
201
|
throw new Error('_bmad-output directory not found. Is BMAD Method installed?');
|
|
@@ -233,47 +234,10 @@ function getFilesToBackup() {
|
|
|
233
234
|
];
|
|
234
235
|
}
|
|
235
236
|
|
|
236
|
-
/**
|
|
237
|
-
* Count user data files in _bmad-output (for integrity check)
|
|
238
|
-
* @returns {Promise<number>} Number of user files
|
|
239
|
-
*/
|
|
240
|
-
async function countUserDataFiles() {
|
|
241
|
-
const outputDir = path.join(process.cwd(), '_bmad-output');
|
|
242
|
-
|
|
243
|
-
if (!fs.existsSync(outputDir)) {
|
|
244
|
-
return 0;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
let count = 0;
|
|
248
|
-
|
|
249
|
-
async function countRecursive(dir) {
|
|
250
|
-
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
251
|
-
|
|
252
|
-
for (const entry of entries) {
|
|
253
|
-
const fullPath = path.join(dir, entry.name);
|
|
254
|
-
|
|
255
|
-
// Skip .backups and .logs directories
|
|
256
|
-
if (entry.name === '.backups' || entry.name === '.logs') {
|
|
257
|
-
continue;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
if (entry.isDirectory()) {
|
|
261
|
-
await countRecursive(fullPath);
|
|
262
|
-
} else if (entry.isFile()) {
|
|
263
|
-
count++;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
await countRecursive(outputDir);
|
|
269
|
-
return count;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
237
|
module.exports = {
|
|
273
238
|
createBackup,
|
|
274
239
|
restoreBackup,
|
|
275
240
|
listBackups,
|
|
276
241
|
cleanupOldBackups,
|
|
277
|
-
ensureBackupDirectory
|
|
278
|
-
countUserDataFiles
|
|
242
|
+
ensureBackupDirectory
|
|
279
243
|
};
|