mdan-cli 2.5.1 → 2.5.2
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/.augment/code_review_guidelines.yaml +271 -0
- package/.claude/skills/bmad-os-audit-file-refs/SKILL.md +6 -0
- package/.claude/skills/bmad-os-audit-file-refs/prompts/instructions.md +59 -0
- package/.claude/skills/bmad-os-changelog-social/SKILL.md +177 -0
- package/.claude/skills/bmad-os-changelog-social/examples/discord-example.md +53 -0
- package/.claude/skills/bmad-os-changelog-social/examples/linkedin-example.md +49 -0
- package/.claude/skills/bmad-os-changelog-social/examples/twitter-example.md +55 -0
- package/.claude/skills/bmad-os-diataxis-style-fix/SKILL.md +6 -0
- package/.claude/skills/bmad-os-diataxis-style-fix/prompts/instructions.md +229 -0
- package/.claude/skills/bmad-os-draft-changelog/SKILL.md +6 -0
- package/.claude/skills/bmad-os-draft-changelog/prompts/instructions.md +82 -0
- package/.claude/skills/bmad-os-gh-triage/SKILL.md +6 -0
- package/.claude/skills/bmad-os-gh-triage/prompts/agent-prompt.md +60 -0
- package/.claude/skills/bmad-os-gh-triage/prompts/instructions.md +74 -0
- package/.claude/skills/bmad-os-release-module/SKILL.md +6 -0
- package/.claude/skills/bmad-os-release-module/prompts/instructions.md +53 -0
- package/.claude/skills/bmad-os-review-pr/SKILL.md +6 -0
- package/.claude/skills/bmad-os-review-pr/prompts/instructions.md +231 -0
- package/.claude/skills/bmad-os-root-cause-analysis/SKILL.md +12 -0
- package/.claude/skills/bmad-os-root-cause-analysis/prompts/instructions.md +74 -0
- package/.coderabbit.yaml +85 -0
- package/.github/CODE_OF_CONDUCT.md +128 -0
- package/.github/FUNDING.yaml +15 -0
- package/.github/ISSUE_TEMPLATE/bug-report.yaml +124 -0
- package/.github/ISSUE_TEMPLATE/config.yaml +8 -0
- package/.github/ISSUE_TEMPLATE/documentation.yaml +55 -0
- package/.github/ISSUE_TEMPLATE/feature-request.md +22 -0
- package/.github/ISSUE_TEMPLATE/issue.md +32 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
- package/.github/scripts/discord-helpers.sh +34 -0
- package/.github/workflows/coderabbit-review.yaml +22 -0
- package/.github/workflows/discord.yaml +90 -0
- package/.github/workflows/docs.yaml +64 -0
- package/.github/workflows/quality.yaml +116 -0
- package/.husky/pre-commit +20 -0
- package/.markdownlint-cli2.yaml +41 -0
- package/.nvmrc +1 -0
- package/.prettierignore +12 -0
- package/.vscode/settings.json +96 -0
- package/AGENTS.md +227 -165
- package/AGENTS_LIST.md +946 -0
- package/ARCHITECTURE.md +590 -0
- package/CHANGELOG.md +1770 -0
- package/CNAME +1 -0
- package/CONTRIBUTING.md +512 -0
- package/CONTRIBUTORS.md +32 -0
- package/INSTALL.md +246 -0
- package/LICENSE +30 -0
- package/README.md +133 -194
- package/RELEASE_NOTES.md +246 -0
- package/SECURITY.md +85 -0
- package/TRADEMARK.md +55 -0
- package/USAGE.md +368 -0
- package/Wordmark.png +0 -0
- package/app/__init__.py +5 -0
- package/app/cis/agents/__init__.py +31 -0
- package/app/cis/agents/brainstorming-coach/__init__.py +3 -0
- package/app/cis/agents/brainstorming-coach/agent.py +162 -0
- package/app/cis/agents/brainstorming-coach/prompt.yaml +53 -0
- package/app/cis/agents/creative-problem-solver/__init__.py +3 -0
- package/app/cis/agents/creative-problem-solver/agent.py +233 -0
- package/app/cis/agents/creative-problem-solver/prompt.yaml +74 -0
- package/app/cis/agents/design-thinking-coach/__init__.py +3 -0
- package/app/cis/agents/design-thinking-coach/agent.py +241 -0
- package/app/cis/agents/design-thinking-coach/prompt.yaml +77 -0
- package/app/cis/agents/innovation-strategist/__init__.py +3 -0
- package/app/cis/agents/innovation-strategist/agent.py +271 -0
- package/app/cis/agents/innovation-strategist/prompt.yaml +70 -0
- package/app/cis/agents/presentation-master/__init__.py +3 -0
- package/app/cis/agents/presentation-master/agent.py +420 -0
- package/app/cis/agents/presentation-master/prompt.yaml +62 -0
- package/app/cis/agents/storyteller/__init__.py +3 -0
- package/app/cis/agents/storyteller/agent.py +303 -0
- package/app/cis/agents/storyteller/prompt.yaml +99 -0
- package/app/core/__init__.py +5 -0
- package/app/core/agents/__init__.py +5 -0
- package/app/core/agents/mdan-master/__init__.py +7 -0
- package/app/core/agents/mdan-master/agent.py +302 -0
- package/app/core/agents/mdan-master/prompt.yaml +105 -0
- package/app/mmb/agents/__init__.py +24 -0
- package/app/mmb/agents/agent-builder/__init__.py +5 -0
- package/app/mmb/agents/agent-builder/agent.py +261 -0
- package/app/mmb/agents/agent-builder/prompt.yaml +48 -0
- package/app/mmb/agents/module-builder/__init__.py +5 -0
- package/app/mmb/agents/module-builder/agent.py +299 -0
- package/app/mmb/agents/module-builder/prompt.yaml +50 -0
- package/app/mmb/agents/workflow-builder/__init__.py +5 -0
- package/app/mmb/agents/workflow-builder/agent.py +318 -0
- package/app/mmb/agents/workflow-builder/prompt.yaml +52 -0
- package/app/mmm/agents/__init__.py +48 -0
- package/app/mmm/agents/analyst/__init__.py +7 -0
- package/app/mmm/agents/analyst/agent.py +384 -0
- package/app/mmm/agents/analyst/prompt.yaml +62 -0
- package/app/mmm/agents/architect/__init__.py +7 -0
- package/app/mmm/agents/architect/agent.py +300 -0
- package/app/mmm/agents/architect/prompt.yaml +66 -0
- package/app/mmm/agents/dev/__init__.py +7 -0
- package/app/mmm/agents/dev/agent.py +285 -0
- package/app/mmm/agents/dev/prompt.yaml +62 -0
- package/app/mmm/agents/pm/__init__.py +7 -0
- package/app/mmm/agents/pm/agent.py +417 -0
- package/app/mmm/agents/pm/prompt.yaml +64 -0
- package/app/mmm/agents/qa/__init__.py +7 -0
- package/app/mmm/agents/qa/agent.py +267 -0
- package/app/mmm/agents/qa/prompt.yaml +67 -0
- package/app/mmm/agents/quick-flow-solo-dev/__init__.py +7 -0
- package/app/mmm/agents/quick-flow-solo-dev/agent.py +319 -0
- package/app/mmm/agents/quick-flow-solo-dev/prompt.yaml +60 -0
- package/app/mmm/agents/sm/__init__.py +7 -0
- package/app/mmm/agents/sm/agent.py +357 -0
- package/app/mmm/agents/sm/prompt.yaml +61 -0
- package/app/mmm/agents/tech-writer/__init__.py +7 -0
- package/app/mmm/agents/tech-writer/agent.py +420 -0
- package/app/mmm/agents/tech-writer/prompt.yaml +70 -0
- package/app/mmm/agents/ux-designer/__init__.py +14 -0
- package/app/mmm/agents/ux-designer/agent.py +412 -0
- package/app/mmm/agents/ux-designer/prompt.yaml +37 -0
- package/app/packs/__init__.py +32 -0
- package/app/packs/db-optimization/__init__.py +13 -0
- package/app/packs/db-optimization/agents/__init__.py +11 -0
- package/app/packs/db-optimization/agents/db-performance-analyst/__init__.py +5 -0
- package/app/packs/db-optimization/agents/db-performance-analyst/agent.py +559 -0
- package/app/packs/db-optimization/agents/db-performance-analyst/prompt.yaml +63 -0
- package/app/packs/db-optimization/agents/indexing-specialist/__init__.py +5 -0
- package/app/packs/db-optimization/agents/indexing-specialist/agent.py +713 -0
- package/app/packs/db-optimization/agents/indexing-specialist/prompt.yaml +92 -0
- package/app/packs/db-optimization/agents/query-optimizer/__init__.py +5 -0
- package/app/packs/db-optimization/agents/query-optimizer/agent.py +566 -0
- package/app/packs/db-optimization/agents/query-optimizer/prompt.yaml +74 -0
- package/app/packs/devops-azure/__init__.py +13 -0
- package/app/packs/devops-azure/agents/__init__.py +11 -0
- package/app/packs/devops-azure/agents/azure-specialist/__init__.py +5 -0
- package/app/packs/devops-azure/agents/azure-specialist/agent.py +584 -0
- package/app/packs/devops-azure/agents/azure-specialist/prompt.yaml +301 -0
- package/app/packs/devops-azure/agents/cicd-architect/__init__.py +5 -0
- package/app/packs/devops-azure/agents/cicd-architect/agent.py +665 -0
- package/app/packs/devops-azure/agents/cicd-architect/prompt.yaml +409 -0
- package/app/packs/devops-azure/agents/devops-engineer/__init__.py +5 -0
- package/app/packs/devops-azure/agents/devops-engineer/agent.py +545 -0
- package/app/packs/devops-azure/agents/devops-engineer/prompt.yaml +263 -0
- package/app/packs/fintech/__init__.py +13 -0
- package/app/packs/fintech/agents/__init__.py +11 -0
- package/app/packs/fintech/agents/compliance-officer/__init__.py +5 -0
- package/app/packs/fintech/agents/compliance-officer/agent.py +449 -0
- package/app/packs/fintech/agents/compliance-officer/prompt.yaml +135 -0
- package/app/packs/fintech/agents/financial-analyst/__init__.py +5 -0
- package/app/packs/fintech/agents/financial-analyst/agent.py +392 -0
- package/app/packs/fintech/agents/financial-analyst/prompt.yaml +143 -0
- package/app/packs/fintech/agents/risk-manager/__init__.py +5 -0
- package/app/packs/fintech/agents/risk-manager/agent.py +664 -0
- package/app/packs/fintech/agents/risk-manager/prompt.yaml +240 -0
- package/app/tea/agents/tea/__init__.py +9 -0
- package/app/tea/agents/tea/agent.py +689 -0
- package/app/tea/agents/tea/prompt.yaml +100 -0
- package/banner-bmad-method.png +0 -0
- package/docs/404.md +9 -0
- package/docs/_STYLE_GUIDE.md +370 -0
- package/docs/explanation/advanced-elicitation.md +49 -0
- package/docs/explanation/adversarial-review.md +59 -0
- package/docs/explanation/brainstorming.md +33 -0
- package/docs/explanation/established-projects-faq.md +50 -0
- package/docs/explanation/party-mode.md +59 -0
- package/docs/explanation/preventing-agent-conflicts.md +112 -0
- package/docs/explanation/project-context.md +157 -0
- package/docs/explanation/quick-flow.md +73 -0
- package/docs/explanation/why-solutioning-matters.md +77 -0
- package/docs/how-to/customize-bmad.md +172 -0
- package/docs/how-to/established-projects.md +117 -0
- package/docs/how-to/get-answers-about-bmad.md +134 -0
- package/docs/how-to/install-bmad.md +97 -0
- package/docs/how-to/non-interactive-installation.md +171 -0
- package/docs/how-to/project-context.md +136 -0
- package/docs/how-to/quick-fixes.md +123 -0
- package/docs/how-to/shard-large-documents.md +78 -0
- package/docs/how-to/upgrade-to-v6.md +97 -0
- package/docs/index.md +59 -0
- package/docs/reference/agents.md +28 -0
- package/docs/reference/commands.md +151 -0
- package/docs/reference/modules.md +76 -0
- package/docs/reference/testing.md +106 -0
- package/docs/reference/workflow-map.md +89 -0
- package/docs/roadmap.mdx +136 -0
- package/docs/tutorials/getting-started.md +286 -0
- package/eslint.config.mjs +141 -0
- package/package.json +106 -37
- package/prettier.config.mjs +32 -0
- package/prompts/cis/brainstorming-coach.yaml +53 -0
- package/prompts/cis/creative-problem-solver.yaml +74 -0
- package/prompts/cis/design-thinking-coach.yaml +77 -0
- package/prompts/cis/innovation-strategist.yaml +70 -0
- package/prompts/cis/presentation-master.yaml +62 -0
- package/prompts/cis/storyteller.yaml +99 -0
- package/prompts/core/mdan-master.yaml +105 -0
- package/prompts/mmb/agent-builder.yaml +48 -0
- package/prompts/mmb/module-builder.yaml +50 -0
- package/prompts/mmb/workflow-builder.yaml +52 -0
- package/prompts/mmm/analyst.yaml +62 -0
- package/prompts/mmm/architect.yaml +66 -0
- package/prompts/mmm/dev.yaml +62 -0
- package/prompts/mmm/pm.yaml +64 -0
- package/prompts/mmm/qa.yaml +67 -0
- package/prompts/mmm/quick-flow-solo-dev.yaml +60 -0
- package/prompts/mmm/sm.yaml +61 -0
- package/prompts/mmm/tech-writer.yaml +70 -0
- package/prompts/mmm/ux-designer.yaml +33 -0
- package/prompts/packs/db-optimization/db-performance-analyst.yaml +63 -0
- package/prompts/packs/db-optimization/indexing-specialist.yaml +92 -0
- package/prompts/packs/db-optimization/query-optimizer.yaml +74 -0
- package/prompts/packs/devops-azure/azure-specialist.yaml +301 -0
- package/prompts/packs/devops-azure/cicd-architect.yaml +409 -0
- package/prompts/packs/devops-azure/devops-engineer.yaml +263 -0
- package/prompts/packs/fintech/compliance-officer.yaml +135 -0
- package/prompts/packs/fintech/financial-analyst.yaml +143 -0
- package/prompts/packs/fintech/risk-manager.yaml +240 -0
- package/prompts/tea/tea.yaml +100 -0
- package/prompts.json +237 -0
- package/src/bmm/agents/analyst.agent.yaml +43 -0
- package/src/bmm/agents/architect.agent.yaml +29 -0
- package/src/bmm/agents/dev.agent.yaml +38 -0
- package/src/bmm/agents/pm.agent.yaml +44 -0
- package/src/bmm/agents/qa.agent.yaml +58 -0
- package/src/bmm/agents/quick-flow-solo-dev.agent.yaml +32 -0
- package/src/bmm/agents/sm.agent.yaml +37 -0
- package/src/bmm/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
- package/src/bmm/agents/tech-writer/tech-writer.agent.yaml +46 -0
- package/src/bmm/agents/ux-designer.agent.yaml +27 -0
- package/src/bmm/data/project-context-template.md +26 -0
- package/src/bmm/module-help.csv +31 -0
- package/src/bmm/module.yaml +50 -0
- package/src/bmm/teams/default-party.csv +20 -0
- package/src/bmm/teams/team-fullstack.yaml +12 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +57 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +444 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +476 -0
- package/src/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +233 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +487 -0
- package/src/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -0
- package/src/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -0
- package/src/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +15 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +152 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +154 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +170 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +63 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +63 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +42 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +184 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +172 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +173 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +133 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +245 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +129 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +13 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +173 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +329 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
- package/src/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
- package/src/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
- package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +43 -0
- package/src/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
- package/src/bmm/workflows/4-implementation/correct-course/instructions.md +207 -0
- package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +53 -0
- package/src/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
- package/src/bmm/workflows/4-implementation/create-story/instructions.xml +346 -0
- package/src/bmm/workflows/4-implementation/create-story/template.md +49 -0
- package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +52 -0
- package/src/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/src/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
- package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +20 -0
- package/src/bmm/workflows/4-implementation/retrospective/instructions.md +1444 -0
- package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +52 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +226 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +47 -0
- package/src/bmm/workflows/4-implementation/sprint-status/instructions.md +230 -0
- package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +25 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +174 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +118 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +111 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +111 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +104 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +146 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +189 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +143 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +126 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +200 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
- package/src/bmm/workflows/document-project/checklist.md +245 -0
- package/src/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/src/bmm/workflows/document-project/instructions.md +130 -0
- package/src/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/src/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/src/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/src/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/src/bmm/workflows/document-project/workflow.yaml +22 -0
- package/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/src/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/src/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/src/bmm/workflows/generate-project-context/project-context-template.md +21 -0
- package/src/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
- package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
- package/src/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
- package/src/bmm/workflows/generate-project-context/workflow.md +49 -0
- package/src/bmm/workflows/qa-generate-e2e-tests/checklist.md +33 -0
- package/src/bmm/workflows/qa-generate-e2e-tests/instructions.md +110 -0
- package/src/bmm/workflows/qa-generate-e2e-tests/workflow.yaml +42 -0
- package/src/core/agents/bmad-master.agent.yaml +30 -0
- package/src/core/module-help.csv +9 -0
- package/src/core/module.yaml +25 -0
- package/src/core/tasks/editorial-review-prose.xml +102 -0
- package/src/core/tasks/editorial-review-structure.xml +208 -0
- package/src/core/tasks/help.md +86 -0
- package/src/core/tasks/index-docs.xml +65 -0
- package/src/core/tasks/review-adversarial-general.xml +49 -0
- package/src/core/tasks/shard-doc.xml +108 -0
- package/src/core/tasks/workflow.xml +235 -0
- package/src/core/workflows/advanced-elicitation/methods.csv +51 -0
- package/src/core/workflows/advanced-elicitation/workflow.xml +118 -0
- package/src/core/workflows/brainstorming/brain-methods.csv +62 -0
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
- package/src/core/workflows/brainstorming/template.md +15 -0
- package/src/core/workflows/brainstorming/workflow.md +58 -0
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +168 -0
- package/src/core/workflows/party-mode/workflow.md +194 -0
- package/src/utility/agent-components/activation-rules.txt +6 -0
- package/src/utility/agent-components/activation-steps.txt +14 -0
- package/src/utility/agent-components/agent-command-header.md +1 -0
- package/src/utility/agent-components/agent.customize.template.yaml +41 -0
- package/src/utility/agent-components/handler-action.txt +4 -0
- package/src/utility/agent-components/handler-data.txt +5 -0
- package/src/utility/agent-components/handler-exec.txt +6 -0
- package/src/utility/agent-components/handler-multi.txt +14 -0
- package/src/utility/agent-components/handler-tmpl.txt +5 -0
- package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
- package/src/utility/agent-components/handler-workflow.txt +10 -0
- package/src/utility/agent-components/menu-handlers.txt +6 -0
- package/test/README.md +295 -0
- package/test/adversarial-review-tests/README.md +56 -0
- package/test/adversarial-review-tests/sample-content.md +46 -0
- package/test/adversarial-review-tests/test-cases.yaml +103 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +30 -0
- package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +22 -0
- package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +20 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +31 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +29 -0
- package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +31 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
- package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
- package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +27 -0
- package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +31 -0
- package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +38 -0
- package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +34 -0
- package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +28 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +30 -0
- package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +24 -0
- package/test/fixtures/file-refs-csv/invalid/all-empty-workflow.csv +3 -0
- package/test/fixtures/file-refs-csv/invalid/empty-data.csv +1 -0
- package/test/fixtures/file-refs-csv/invalid/no-workflow-column.csv +3 -0
- package/test/fixtures/file-refs-csv/invalid/unresolvable-vars.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/bmm-style.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/core-style.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/minimal.csv +2 -0
- package/test/test-agent-schema.js +387 -0
- package/test/test-cli-integration.sh +159 -0
- package/test/test-file-refs-csv.js +133 -0
- package/test/test-installation-components.js +212 -0
- package/test/test-rehype-plugins.mjs +1050 -0
- package/test/unit-test-schema.js +133 -0
- package/tests/run_all_tests.py +80 -0
- package/tests/scenarios/cis/brainstorming-coach.test.py +150 -0
- package/tests/scenarios/cis/creative-problem-solver.test.py +167 -0
- package/tests/scenarios/cis/design-thinking-coach.test.py +177 -0
- package/tests/scenarios/cis/innovation-strategist.test.py +191 -0
- package/tests/scenarios/cis/presentation-master.test.py +240 -0
- package/tests/scenarios/cis/storyteller.test.py +324 -0
- package/tests/scenarios/core/mdan-master.test.py +281 -0
- package/tests/scenarios/mmb/agent-builder.test.py +124 -0
- package/tests/scenarios/mmb/module-builder.test.py +124 -0
- package/tests/scenarios/mmb/workflow-builder.test.py +124 -0
- package/tests/scenarios/mmm/analyst.test.py +138 -0
- package/tests/scenarios/mmm/architect.test.py +138 -0
- package/tests/scenarios/mmm/dev.test.py +138 -0
- package/tests/scenarios/mmm/pm.test.py +138 -0
- package/tests/scenarios/mmm/qa.test.py +138 -0
- package/tests/scenarios/mmm/quick-flow-solo-dev.test.py +138 -0
- package/tests/scenarios/mmm/sm.test.py +138 -0
- package/tests/scenarios/mmm/tech-writer.test.py +138 -0
- package/tests/scenarios/mmm/ux-designer.test.py +294 -0
- package/tests/scenarios/packs/db-optimization/db-performance-analyst.test.py +108 -0
- package/tests/scenarios/packs/db-optimization/indexing-specialist.test.py +108 -0
- package/tests/scenarios/packs/db-optimization/query-optimizer.test.py +106 -0
- package/tests/scenarios/packs/devops-azure/azure-specialist.test.py +125 -0
- package/tests/scenarios/packs/devops-azure/cicd-architect.test.py +122 -0
- package/tests/scenarios/packs/devops-azure/devops-engineer.test.py +128 -0
- package/tests/scenarios/packs/fintech/compliance-officer.test.py +165 -0
- package/tests/scenarios/packs/fintech/financial-analyst.test.py +184 -0
- package/tests/scenarios/packs/fintech/risk-manager.test.py +171 -0
- package/tests/scenarios/tea/tea.test.py +346 -0
- package/tests/simple_cis_test.py +285 -0
- package/tests/simple_db_optimization_test.py +199 -0
- package/tests/simple_devops_test.py +193 -0
- package/tests/simple_fintech_test.py +205 -0
- package/tests/simple_mmb_test.py +103 -0
- package/tests/simple_mmm_test.py +159 -0
- package/tests/simple_tea_test.py +80 -0
- package/tests/simple_test.py +111 -0
- package/tests/simple_ux_designer_test.py +144 -0
- package/tests/validate_yaml.py +86 -0
- package/tools/bmad-npx-wrapper.js +38 -0
- package/tools/build-docs.mjs +463 -0
- package/tools/cli/README.md +60 -0
- package/tools/cli/bmad-cli.js +106 -0
- package/tools/cli/commands/install.js +87 -0
- package/tools/cli/commands/status.js +65 -0
- package/tools/cli/commands/uninstall.js +167 -0
- package/tools/cli/external-official-modules.yaml +53 -0
- package/tools/cli/installers/install-messages.yaml +39 -0
- package/tools/cli/installers/lib/core/config-collector.js +1285 -0
- package/tools/cli/installers/lib/core/custom-module-cache.js +260 -0
- package/tools/cli/installers/lib/core/dependency-resolver.js +743 -0
- package/tools/cli/installers/lib/core/detector.js +223 -0
- package/tools/cli/installers/lib/core/ide-config-manager.js +157 -0
- package/tools/cli/installers/lib/core/installer.js +3162 -0
- package/tools/cli/installers/lib/core/manifest-generator.js +1081 -0
- package/tools/cli/installers/lib/core/manifest.js +1038 -0
- package/tools/cli/installers/lib/custom/handler.js +358 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +665 -0
- package/tools/cli/installers/lib/ide/_config-driven.js +634 -0
- package/tools/cli/installers/lib/ide/codex.js +440 -0
- package/tools/cli/installers/lib/ide/github-copilot.js +699 -0
- package/tools/cli/installers/lib/ide/kilo.js +269 -0
- package/tools/cli/installers/lib/ide/manager.js +342 -0
- package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
- package/tools/cli/installers/lib/ide/platform-codes.yaml +243 -0
- package/tools/cli/installers/lib/ide/rovodev.js +257 -0
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +180 -0
- package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +174 -0
- package/tools/cli/installers/lib/ide/shared/module-injections.js +136 -0
- package/tools/cli/installers/lib/ide/shared/path-utils.js +299 -0
- package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +366 -0
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +318 -0
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-task.md +10 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-tool.md +10 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +6 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-task.toml +11 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml +11 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-agent.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-task.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-tool.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow.md +7 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-agent.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-task.md +13 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-tool.md +13 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow-yaml.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
- package/tools/cli/installers/lib/ide/templates/split/.gitkeep +0 -0
- package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
- package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
- package/tools/cli/installers/lib/message-loader.js +83 -0
- package/tools/cli/installers/lib/modules/external-manager.js +136 -0
- package/tools/cli/installers/lib/modules/manager.js +1498 -0
- package/tools/cli/lib/activation-builder.js +165 -0
- package/tools/cli/lib/agent/compiler.js +525 -0
- package/tools/cli/lib/agent/installer.js +680 -0
- package/tools/cli/lib/agent/template-engine.js +152 -0
- package/tools/cli/lib/agent-analyzer.js +109 -0
- package/tools/cli/lib/agent-party-generator.js +194 -0
- package/tools/cli/lib/cli-utils.js +182 -0
- package/tools/cli/lib/config.js +213 -0
- package/tools/cli/lib/file-ops.js +204 -0
- package/tools/cli/lib/platform-codes.js +116 -0
- package/tools/cli/lib/project-root.js +77 -0
- package/tools/cli/lib/prompts.js +809 -0
- package/tools/cli/lib/ui.js +1936 -0
- package/tools/cli/lib/xml-handler.js +177 -0
- package/tools/cli/lib/xml-to-markdown.js +82 -0
- package/tools/cli/lib/yaml-format.js +245 -0
- package/tools/cli/lib/yaml-xml-builder.js +587 -0
- package/tools/docs/_prompt-external-modules-page.md +59 -0
- package/tools/docs/fix-refs.md +91 -0
- package/tools/fix-doc-links.js +285 -0
- package/tools/format-workflow-md.js +263 -0
- package/tools/lib/xml-utils.js +13 -0
- package/tools/migrate-custom-module-paths.js +124 -0
- package/tools/platform-codes.yaml +157 -0
- package/tools/schema/agent.js +491 -0
- package/tools/validate-agent-schema.js +110 -0
- package/tools/validate-doc-links.js +407 -0
- package/tools/validate-file-refs.js +554 -0
- package/tools/validate-svg-changes.sh +356 -0
- package/website/README.md +75 -0
- package/website/astro.config.mjs +136 -0
- package/website/public/favicon.ico +0 -0
- package/website/public/img/bmad-dark.png +0 -0
- package/website/public/img/bmad-light.png +0 -0
- package/website/public/workflow-map-diagram.html +361 -0
- package/website/src/components/Banner.astro +62 -0
- package/website/src/components/Header.astro +96 -0
- package/website/src/components/MobileMenuFooter.astro +33 -0
- package/website/src/content/config.ts +6 -0
- package/website/src/lib/site-url.mjs +25 -0
- package/website/src/pages/404.astro +11 -0
- package/website/src/pages/robots.txt.ts +48 -0
- package/website/src/rehype-base-paths.js +112 -0
- package/website/src/rehype-markdown-links.js +119 -0
- package/website/src/styles/custom.css +805 -0
- package/.mcp.json +0 -46
- package/agents/AGENTS-REGISTRY.md +0 -215
- package/agents/architect.md +0 -160
- package/agents/dev.md +0 -166
- package/agents/devops.md +0 -230
- package/agents/doc.md +0 -189
- package/agents/learn.md +0 -377
- package/agents/product.md +0 -124
- package/agents/security.md +0 -168
- package/agents/test.md +0 -209
- package/agents/ux.md +0 -207
- package/cli/mdan.js +0 -628
- package/cli/mdan.py +0 -316
- package/cli/mdan.sh +0 -724
- package/cli/postinstall.js +0 -4
- package/core/orchestrator.md +0 -238
- package/core/universal-envelope.md +0 -160
- package/install.sh +0 -91
- package/integrations/all-integrations.md +0 -300
- package/integrations/claude.md +0 -46
- package/integrations/cursor.md +0 -74
- package/integrations/mcp.md +0 -153
- package/integrations/windsurf.md +0 -48
- package/memory/MDAN-STATE.template.json +0 -44
- package/memory/MEMORY-SYSTEM.md +0 -197
- package/phases/01-discover.md +0 -136
- package/phases/02-design.md +0 -147
- package/phases/03-build.md +0 -113
- package/phases/04-verify.md +0 -107
- package/phases/05-ship.md +0 -156
- package/skills/find-skills/skill.md +0 -133
- package/templates/ARCHITECTURE.md +0 -186
- package/templates/CHANGELOG.md +0 -41
- package/templates/MDAN-KNOWLEDGE.md +0 -73
- package/templates/PRD.md +0 -120
- package/templates/SECURITY-REVIEW.md +0 -99
- package/templates/TEST-PLAN.md +0 -97
- package/templates/prompts/README.md +0 -108
- package/templates/prompts/dev-agent.yaml +0 -85
- package/templates/prompts/orchestrator.yaml +0 -97
- package/templates/prompts.json +0 -81
- package/templates/tests/evaluations/README.md +0 -80
- package/templates/tests/evaluations/classification_eval.md +0 -136
- package/templates/tests/evaluations/rag_eval.md +0 -116
- package/templates/tests/scenarios/README.md +0 -62
- package/templates/tests/scenarios/basic_authentication.test.md +0 -82
- package/templates/tests/scenarios/user_registration.test.md +0 -107
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"""Scenario tests for Query Optimizer Agent."""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
# Add the app directory to the path
|
|
7
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../.."))
|
|
8
|
+
|
|
9
|
+
from app.packs.db_optimization.agents.query_optimizer.agent import QueryOptimizerAgent
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def test_query_optimizer_basic_info():
|
|
13
|
+
"""Test that Query Optimizer provides basic information."""
|
|
14
|
+
agent = QueryOptimizerAgent()
|
|
15
|
+
result = agent.get_info()
|
|
16
|
+
assert result is not None
|
|
17
|
+
assert "name" in result
|
|
18
|
+
assert result["name"] == "Query Optimizer"
|
|
19
|
+
assert "capabilities" in result
|
|
20
|
+
assert len(result["capabilities"]) > 0
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_query_optimizer_analyze():
|
|
24
|
+
"""Test that Query Optimizer can analyze queries."""
|
|
25
|
+
agent = QueryOptimizerAgent()
|
|
26
|
+
result = agent.process("analyze")
|
|
27
|
+
assert result is not None
|
|
28
|
+
assert len(result) > 0
|
|
29
|
+
assert "analysis" in result or "query" in result
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_query_optimizer_optimize():
|
|
33
|
+
"""Test that Query Optimizer can optimize queries."""
|
|
34
|
+
agent = QueryOptimizerAgent()
|
|
35
|
+
result = agent.process("optimize")
|
|
36
|
+
assert result is not None
|
|
37
|
+
assert len(result) > 0
|
|
38
|
+
assert "optimized" in result or "optimization" in result
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def test_query_optimizer_rewrite():
|
|
42
|
+
"""Test that Query Optimizer can rewrite queries."""
|
|
43
|
+
agent = QueryOptimizerAgent()
|
|
44
|
+
result = agent.process("rewrite")
|
|
45
|
+
assert result is not None
|
|
46
|
+
assert len(result) > 0
|
|
47
|
+
assert "rewrite" in result or "rewritten" in result
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def test_query_optimizer_explain():
|
|
51
|
+
"""Test that Query Optimizer can explain execution plans."""
|
|
52
|
+
agent = QueryOptimizerAgent()
|
|
53
|
+
result = agent.process("explain")
|
|
54
|
+
assert result is not None
|
|
55
|
+
assert len(result) > 0
|
|
56
|
+
assert "plan" in result or "execution" in result
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def test_query_optimizer_index():
|
|
60
|
+
"""Test that Query Optimizer can design indexes."""
|
|
61
|
+
agent = QueryOptimizerAgent()
|
|
62
|
+
result = agent.process("index")
|
|
63
|
+
assert result is not None
|
|
64
|
+
assert len(result) > 0
|
|
65
|
+
assert "index" in result or "indexes" in result
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def test_query_optimizer_select_star():
|
|
69
|
+
"""Test that Query Optimizer can handle SELECT * issues."""
|
|
70
|
+
agent = QueryOptimizerAgent()
|
|
71
|
+
result = agent.process("analyze")
|
|
72
|
+
assert result is not None
|
|
73
|
+
assert len(result) > 0
|
|
74
|
+
# Check that the response contains relevant information
|
|
75
|
+
assert "query" in str(result).lower() or "performance" in str(result).lower()
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
if __name__ == "__main__":
|
|
79
|
+
print("Running Query Optimizer Agent Scenario Tests...")
|
|
80
|
+
print()
|
|
81
|
+
|
|
82
|
+
tests = [
|
|
83
|
+
("Basic Info", test_query_optimizer_basic_info),
|
|
84
|
+
("Analyze Query", test_query_optimizer_analyze),
|
|
85
|
+
("Optimize Query", test_query_optimizer_optimize),
|
|
86
|
+
("Rewrite Query", test_query_optimizer_rewrite),
|
|
87
|
+
("Explain Plan", test_query_optimizer_explain),
|
|
88
|
+
("Design Indexes", test_query_optimizer_index),
|
|
89
|
+
("SELECT * Issue", test_query_optimizer_select_star),
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
passed = 0
|
|
93
|
+
failed = 0
|
|
94
|
+
|
|
95
|
+
for name, test_func in tests:
|
|
96
|
+
try:
|
|
97
|
+
test_func()
|
|
98
|
+
print(f"✓ {name}")
|
|
99
|
+
passed += 1
|
|
100
|
+
except Exception as e:
|
|
101
|
+
print(f"✗ {name}: {e}")
|
|
102
|
+
failed += 1
|
|
103
|
+
|
|
104
|
+
print()
|
|
105
|
+
print(f"Results: {passed} passed, {failed} failed")
|
|
106
|
+
sys.exit(0 if failed == 0 else 1)
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"""Scenario tests for Azure Specialist Agent."""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
# Add the app directory to the path
|
|
7
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../.."))
|
|
8
|
+
|
|
9
|
+
from app.packs.devops_azure.agents.azure_specialist.agent import AzureSpecialistAgent
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def test_azure_specialist_basic_info():
|
|
13
|
+
"""Test that Azure Specialist provides basic information."""
|
|
14
|
+
agent = AzureSpecialistAgent()
|
|
15
|
+
result = agent.process("What is Microsoft Azure?")
|
|
16
|
+
assert result is not None
|
|
17
|
+
assert len(result) > 0
|
|
18
|
+
assert "Azure" in result or "Microsoft" in result or "cloud" in result.lower()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_azure_specialist_vm():
|
|
22
|
+
"""Test that Azure Specialist can discuss Virtual Machines."""
|
|
23
|
+
agent = AzureSpecialistAgent()
|
|
24
|
+
result = agent.process("How do I create an Azure VM?")
|
|
25
|
+
assert result is not None
|
|
26
|
+
assert len(result) > 0
|
|
27
|
+
assert "VM" in result or "virtual machine" in result.lower() or "Azure" in result
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_azure_specialist_storage():
|
|
31
|
+
"""Test that Azure Specialist can discuss Azure Storage."""
|
|
32
|
+
agent = AzureSpecialistAgent()
|
|
33
|
+
result = agent.process("What storage options does Azure offer?")
|
|
34
|
+
assert result is not None
|
|
35
|
+
assert len(result) > 0
|
|
36
|
+
assert (
|
|
37
|
+
"storage" in result.lower()
|
|
38
|
+
or "blob" in result.lower()
|
|
39
|
+
or "disk" in result.lower()
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_azure_specialist_functions():
|
|
44
|
+
"""Test that Azure Specialist can discuss Azure Functions."""
|
|
45
|
+
agent = AzureSpecialistAgent()
|
|
46
|
+
result = agent.process("What are Azure Functions?")
|
|
47
|
+
assert result is not None
|
|
48
|
+
assert len(result) > 0
|
|
49
|
+
assert (
|
|
50
|
+
"Function" in result
|
|
51
|
+
or "serverless" in result.lower()
|
|
52
|
+
or "compute" in result.lower()
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def test_azure_specialist_cosmos_db():
|
|
57
|
+
"""Test that Azure Specialist can discuss Cosmos DB."""
|
|
58
|
+
agent = AzureSpecialistAgent()
|
|
59
|
+
result = agent.process("Tell me about Azure Cosmos DB")
|
|
60
|
+
assert result is not None
|
|
61
|
+
assert len(result) > 0
|
|
62
|
+
assert (
|
|
63
|
+
"Cosmos" in result
|
|
64
|
+
or "database" in result.lower()
|
|
65
|
+
or "NoSQL" in result
|
|
66
|
+
or "SQL" in result
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def test_azure_specialist_networking():
|
|
71
|
+
"""Test that Azure Specialist can discuss Azure Networking."""
|
|
72
|
+
agent = AzureSpecialistAgent()
|
|
73
|
+
result = agent.process("How do I set up a VNet in Azure?")
|
|
74
|
+
assert result is not None
|
|
75
|
+
assert len(result) > 0
|
|
76
|
+
assert (
|
|
77
|
+
"VNet" in result
|
|
78
|
+
or "virtual network" in result.lower()
|
|
79
|
+
or "network" in result.lower()
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_azure_specialist_security():
|
|
84
|
+
"""Test that Azure Specialist can discuss Azure Security."""
|
|
85
|
+
agent = AzureSpecialistAgent()
|
|
86
|
+
result = agent.process("What security features does Azure provide?")
|
|
87
|
+
assert result is not None
|
|
88
|
+
assert len(result) > 0
|
|
89
|
+
assert (
|
|
90
|
+
"security" in result.lower()
|
|
91
|
+
or "IAM" in result
|
|
92
|
+
or "RBAC" in result
|
|
93
|
+
or "firewall" in result.lower()
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
if __name__ == "__main__":
|
|
98
|
+
print("Running Azure Specialist Agent Scenario Tests...")
|
|
99
|
+
print()
|
|
100
|
+
|
|
101
|
+
tests = [
|
|
102
|
+
("Basic Info", test_azure_specialist_basic_info),
|
|
103
|
+
("Virtual Machines", test_azure_specialist_vm),
|
|
104
|
+
("Storage", test_azure_specialist_storage),
|
|
105
|
+
("Azure Functions", test_azure_specialist_functions),
|
|
106
|
+
("Cosmos DB", test_azure_specialist_cosmos_db),
|
|
107
|
+
("Networking", test_azure_specialist_networking),
|
|
108
|
+
("Security", test_azure_specialist_security),
|
|
109
|
+
]
|
|
110
|
+
|
|
111
|
+
passed = 0
|
|
112
|
+
failed = 0
|
|
113
|
+
|
|
114
|
+
for name, test_func in tests:
|
|
115
|
+
try:
|
|
116
|
+
test_func()
|
|
117
|
+
print(f"✓ {name}")
|
|
118
|
+
passed += 1
|
|
119
|
+
except Exception as e:
|
|
120
|
+
print(f"✗ {name}: {e}")
|
|
121
|
+
failed += 1
|
|
122
|
+
|
|
123
|
+
print()
|
|
124
|
+
print(f"Results: {passed} passed, {failed} failed")
|
|
125
|
+
sys.exit(0 if failed == 0 else 1)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"""Scenario tests for CI/CD Architect Agent."""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
# Add the app directory to the path
|
|
7
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../.."))
|
|
8
|
+
|
|
9
|
+
from app.packs.devops_azure.agents.cicd_architect.agent import CICDArchitectAgent
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def test_cicd_architect_basic_info():
|
|
13
|
+
"""Test that CI/CD Architect provides basic information."""
|
|
14
|
+
agent = CICDArchitectAgent()
|
|
15
|
+
result = agent.process("What is CI/CD architecture?")
|
|
16
|
+
assert result is not None
|
|
17
|
+
assert len(result) > 0
|
|
18
|
+
assert "CI" in result or "CD" in result or "architecture" in result.lower()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_cicd_architect_github_actions():
|
|
22
|
+
"""Test that CI/CD Architect can discuss GitHub Actions."""
|
|
23
|
+
agent = CICDArchitectAgent()
|
|
24
|
+
result = agent.process("How do I set up GitHub Actions?")
|
|
25
|
+
assert result is not None
|
|
26
|
+
assert len(result) > 0
|
|
27
|
+
assert "GitHub" in result or "Actions" in result or "workflow" in result.lower()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_cicd_architect_azure_devops():
|
|
31
|
+
"""Test that CI/CD Architect can discuss Azure DevOps."""
|
|
32
|
+
agent = CICDArchitectAgent()
|
|
33
|
+
result = agent.process("Explain Azure DevOps pipelines")
|
|
34
|
+
assert result is not None
|
|
35
|
+
assert len(result) > 0
|
|
36
|
+
assert (
|
|
37
|
+
"Azure DevOps" in result
|
|
38
|
+
or "pipeline" in result.lower()
|
|
39
|
+
or "build" in result.lower()
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_cicd_architect_jenkins():
|
|
44
|
+
"""Test that CI/CD Architect can discuss Jenkins."""
|
|
45
|
+
agent = CICDArchitectAgent()
|
|
46
|
+
result = agent.process("How do I configure Jenkins?")
|
|
47
|
+
assert result is not None
|
|
48
|
+
assert len(result) > 0
|
|
49
|
+
assert (
|
|
50
|
+
"Jenkins" in result or "pipeline" in result.lower() or "job" in result.lower()
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def test_cicd_architect_best_practices():
|
|
55
|
+
"""Test that CI/CD Architect can discuss best practices."""
|
|
56
|
+
agent = CICDArchitectAgent()
|
|
57
|
+
result = agent.process("What are CI/CD best practices?")
|
|
58
|
+
assert result is not None
|
|
59
|
+
assert len(result) > 0
|
|
60
|
+
assert (
|
|
61
|
+
"best practice" in result.lower()
|
|
62
|
+
or "practice" in result.lower()
|
|
63
|
+
or "recommend" in result.lower()
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def test_cicd_architect_testing():
|
|
68
|
+
"""Test that CI/CD Architect can discuss testing in CI/CD."""
|
|
69
|
+
agent = CICDArchitectAgent()
|
|
70
|
+
result = agent.process("How do I integrate automated testing?")
|
|
71
|
+
assert result is not None
|
|
72
|
+
assert len(result) > 0
|
|
73
|
+
assert (
|
|
74
|
+
"test" in result.lower()
|
|
75
|
+
or "automated" in result.lower()
|
|
76
|
+
or "unit" in result.lower()
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def test_cicd_architect_deployment_strategies():
|
|
81
|
+
"""Test that CI/CD Architect can discuss deployment strategies."""
|
|
82
|
+
agent = CICDArchitectAgent()
|
|
83
|
+
result = agent.process("What deployment strategies should I use?")
|
|
84
|
+
assert result is not None
|
|
85
|
+
assert len(result) > 0
|
|
86
|
+
assert (
|
|
87
|
+
"deploy" in result.lower()
|
|
88
|
+
or "strategy" in result.lower()
|
|
89
|
+
or "blue" in result.lower()
|
|
90
|
+
or "canary" in result.lower()
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
if __name__ == "__main__":
|
|
95
|
+
print("Running CI/CD Architect Agent Scenario Tests...")
|
|
96
|
+
print()
|
|
97
|
+
|
|
98
|
+
tests = [
|
|
99
|
+
("Basic Info", test_cicd_architect_basic_info),
|
|
100
|
+
("GitHub Actions", test_cicd_architect_github_actions),
|
|
101
|
+
("Azure DevOps", test_cicd_architect_azure_devops),
|
|
102
|
+
("Jenkins", test_cicd_architect_jenkins),
|
|
103
|
+
("Best Practices", test_cicd_architect_best_practices),
|
|
104
|
+
("Testing", test_cicd_architect_testing),
|
|
105
|
+
("Deployment Strategies", test_cicd_architect_deployment_strategies),
|
|
106
|
+
]
|
|
107
|
+
|
|
108
|
+
passed = 0
|
|
109
|
+
failed = 0
|
|
110
|
+
|
|
111
|
+
for name, test_func in tests:
|
|
112
|
+
try:
|
|
113
|
+
test_func()
|
|
114
|
+
print(f"✓ {name}")
|
|
115
|
+
passed += 1
|
|
116
|
+
except Exception as e:
|
|
117
|
+
print(f"✗ {name}: {e}")
|
|
118
|
+
failed += 1
|
|
119
|
+
|
|
120
|
+
print()
|
|
121
|
+
print(f"Results: {passed} passed, {failed} failed")
|
|
122
|
+
sys.exit(0 if failed == 0 else 1)
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"""Scenario tests for DevOps Engineer Agent."""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
# Add the app directory to the path
|
|
7
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../../.."))
|
|
8
|
+
|
|
9
|
+
from app.packs.devops_azure.agents.devops_engineer.agent import DevOpsEngineerAgent
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def test_devops_engineer_basic_info():
|
|
13
|
+
"""Test that DevOps Engineer provides basic information."""
|
|
14
|
+
agent = DevOpsEngineerAgent()
|
|
15
|
+
result = agent.process("What is DevOps?")
|
|
16
|
+
assert result is not None
|
|
17
|
+
assert len(result) > 0
|
|
18
|
+
assert (
|
|
19
|
+
"DevOps" in result
|
|
20
|
+
or "development" in result.lower()
|
|
21
|
+
or "operations" in result.lower()
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_devops_engineer_ci_cd():
|
|
26
|
+
"""Test that DevOps Engineer can explain CI/CD."""
|
|
27
|
+
agent = DevOpsEngineerAgent()
|
|
28
|
+
result = agent.process("Explain CI/CD pipeline")
|
|
29
|
+
assert result is not None
|
|
30
|
+
assert len(result) > 0
|
|
31
|
+
assert "CI" in result or "CD" in result or "pipeline" in result.lower()
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_devops_engineer_docker():
|
|
35
|
+
"""Test that DevOps Engineer can discuss Docker."""
|
|
36
|
+
agent = DevOpsEngineerAgent()
|
|
37
|
+
result = agent.process("How do I create a Dockerfile?")
|
|
38
|
+
assert result is not None
|
|
39
|
+
assert len(result) > 0
|
|
40
|
+
assert (
|
|
41
|
+
"Docker" in result
|
|
42
|
+
or "dockerfile" in result.lower()
|
|
43
|
+
or "container" in result.lower()
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def test_devops_engineer_kubernetes():
|
|
48
|
+
"""Test that DevOps Engineer can discuss Kubernetes."""
|
|
49
|
+
agent = DevOpsEngineerAgent()
|
|
50
|
+
result = agent.process("What is Kubernetes?")
|
|
51
|
+
assert result is not None
|
|
52
|
+
assert len(result) > 0
|
|
53
|
+
assert (
|
|
54
|
+
"Kubernetes" in result
|
|
55
|
+
or "k8s" in result.lower()
|
|
56
|
+
or "orchestration" in result.lower()
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def test_devops_engineer_monitoring():
|
|
61
|
+
"""Test that DevOps Engineer can discuss monitoring."""
|
|
62
|
+
agent = DevOpsEngineerAgent()
|
|
63
|
+
result = agent.process("What monitoring tools do you recommend?")
|
|
64
|
+
assert result is not None
|
|
65
|
+
assert len(result) > 0
|
|
66
|
+
assert (
|
|
67
|
+
"monitor" in result.lower()
|
|
68
|
+
or "prometheus" in result.lower()
|
|
69
|
+
or "grafana" in result.lower()
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def test_devops_engineer_automation():
|
|
74
|
+
"""Test that DevOps Engineer can discuss automation."""
|
|
75
|
+
agent = DevOpsEngineerAgent()
|
|
76
|
+
result = agent.process("How can I automate deployments?")
|
|
77
|
+
assert result is not None
|
|
78
|
+
assert len(result) > 0
|
|
79
|
+
assert (
|
|
80
|
+
"automat" in result.lower()
|
|
81
|
+
or "deploy" in result.lower()
|
|
82
|
+
or "script" in result.lower()
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def test_devops_engineer_troubleshooting():
|
|
87
|
+
"""Test that DevOps Engineer can help with troubleshooting."""
|
|
88
|
+
agent = DevOpsEngineerAgent()
|
|
89
|
+
result = agent.process("My deployment is failing, what should I check?")
|
|
90
|
+
assert result is not None
|
|
91
|
+
assert len(result) > 0
|
|
92
|
+
assert (
|
|
93
|
+
"check" in result.lower()
|
|
94
|
+
or "log" in result.lower()
|
|
95
|
+
or "error" in result.lower()
|
|
96
|
+
or "debug" in result.lower()
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
if __name__ == "__main__":
|
|
101
|
+
print("Running DevOps Engineer Agent Scenario Tests...")
|
|
102
|
+
print()
|
|
103
|
+
|
|
104
|
+
tests = [
|
|
105
|
+
("Basic Info", test_devops_engineer_basic_info),
|
|
106
|
+
("CI/CD", test_devops_engineer_ci_cd),
|
|
107
|
+
("Docker", test_devops_engineer_docker),
|
|
108
|
+
("Kubernetes", test_devops_engineer_kubernetes),
|
|
109
|
+
("Monitoring", test_devops_engineer_monitoring),
|
|
110
|
+
("Automation", test_devops_engineer_automation),
|
|
111
|
+
("Troubleshooting", test_devops_engineer_troubleshooting),
|
|
112
|
+
]
|
|
113
|
+
|
|
114
|
+
passed = 0
|
|
115
|
+
failed = 0
|
|
116
|
+
|
|
117
|
+
for name, test_func in tests:
|
|
118
|
+
try:
|
|
119
|
+
test_func()
|
|
120
|
+
print(f"✓ {name}")
|
|
121
|
+
passed += 1
|
|
122
|
+
except Exception as e:
|
|
123
|
+
print(f"✗ {name}: {e}")
|
|
124
|
+
failed += 1
|
|
125
|
+
|
|
126
|
+
print()
|
|
127
|
+
print(f"Results: {passed} passed, {failed} failed")
|
|
128
|
+
sys.exit(0 if failed == 0 else 1)
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"""Scenario tests for Compliance Officer agent."""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
# Add the app directory to the path
|
|
7
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../.."))
|
|
8
|
+
|
|
9
|
+
from app.packs.fintech.agents.compliance_officer.agent import ComplianceOfficer
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def test_regulatory_assessment():
|
|
13
|
+
"""Test regulatory compliance assessment capability."""
|
|
14
|
+
agent = ComplianceOfficer()
|
|
15
|
+
|
|
16
|
+
input_data = {
|
|
17
|
+
"task": "Assess regulatory compliance requirements",
|
|
18
|
+
"jurisdiction": "United States",
|
|
19
|
+
"industry": "Banking",
|
|
20
|
+
"company_size": "Medium (500-1000 employees)",
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
result = agent.process(input_data)
|
|
24
|
+
|
|
25
|
+
assert result is not None
|
|
26
|
+
assert "compliance" in result.lower()
|
|
27
|
+
assert "regulatory" in result.lower()
|
|
28
|
+
print("✓ Regulatory assessment test passed")
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_gdpr_compliance():
|
|
32
|
+
"""Test GDPR compliance assessment capability."""
|
|
33
|
+
agent = ComplianceOfficer()
|
|
34
|
+
|
|
35
|
+
input_data = {
|
|
36
|
+
"task": "Assess GDPR compliance",
|
|
37
|
+
"data_types": ["Personal data", "Financial data", "Contact information"],
|
|
38
|
+
"data_processing": ["Storage", "Transfer", "Analysis"],
|
|
39
|
+
"eu_residents": True,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
result = agent.process(input_data)
|
|
43
|
+
|
|
44
|
+
assert result is not None
|
|
45
|
+
assert "gdpr" in result.lower() or "data protection" in result.lower()
|
|
46
|
+
assert "consent" in result.lower() or "rights" in result.lower()
|
|
47
|
+
print("✓ GDPR compliance test passed")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def test_aml_compliance():
|
|
51
|
+
"""Test AML compliance assessment capability."""
|
|
52
|
+
agent = ComplianceOfficer()
|
|
53
|
+
|
|
54
|
+
input_data = {
|
|
55
|
+
"task": "Assess Anti-Money Laundering compliance",
|
|
56
|
+
"transaction_types": [
|
|
57
|
+
"Wire transfers",
|
|
58
|
+
"Cash deposits",
|
|
59
|
+
"International transfers",
|
|
60
|
+
],
|
|
61
|
+
"customer_types": ["Individuals", "Businesses", "High-net-worth individuals"],
|
|
62
|
+
"transaction_volume": "High",
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
result = agent.process(input_data)
|
|
66
|
+
|
|
67
|
+
assert result is not None
|
|
68
|
+
assert "aml" in result.lower() or "anti-money laundering" in result.lower()
|
|
69
|
+
assert "kyc" in result.lower() or "know your customer" in result.lower()
|
|
70
|
+
print("✓ AML compliance test passed")
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def test_policy_development():
|
|
74
|
+
"""Test compliance policy development capability."""
|
|
75
|
+
agent = ComplianceOfficer()
|
|
76
|
+
|
|
77
|
+
input_data = {
|
|
78
|
+
"task": "Develop compliance policy",
|
|
79
|
+
"policy_type": "Data Privacy Policy",
|
|
80
|
+
"scope": "All employees and contractors",
|
|
81
|
+
"regulations": ["GDPR", "CCPA", "HIPAA"],
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
result = agent.process(input_data)
|
|
85
|
+
|
|
86
|
+
assert result is not None
|
|
87
|
+
assert "policy" in result.lower()
|
|
88
|
+
assert "procedures" in result.lower() or "guidelines" in result.lower()
|
|
89
|
+
print("✓ Policy development test passed")
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def test_audit_preparation():
|
|
93
|
+
"""Test audit preparation capability."""
|
|
94
|
+
agent = ComplianceOfficer()
|
|
95
|
+
|
|
96
|
+
input_data = {
|
|
97
|
+
"task": "Prepare for regulatory audit",
|
|
98
|
+
"audit_type": "SOC 2 Type II",
|
|
99
|
+
"audit_scope": ["Security", "Availability", "Processing Integrity"],
|
|
100
|
+
"audit_date": "2026-06-01",
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
result = agent.process(input_data)
|
|
104
|
+
|
|
105
|
+
assert result is not None
|
|
106
|
+
assert "audit" in result.lower()
|
|
107
|
+
assert "preparation" in result.lower() or "readiness" in result.lower()
|
|
108
|
+
print("✓ Audit preparation test passed")
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def test_risk_assessment():
|
|
112
|
+
"""Test compliance risk assessment capability."""
|
|
113
|
+
agent = ComplianceOfficer()
|
|
114
|
+
|
|
115
|
+
input_data = {
|
|
116
|
+
"task": "Assess compliance risks",
|
|
117
|
+
"business_areas": [
|
|
118
|
+
"Data handling",
|
|
119
|
+
"Financial reporting",
|
|
120
|
+
"Third-party vendors",
|
|
121
|
+
],
|
|
122
|
+
"regulations": ["SOX", "GDPR", "PCI DSS"],
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
result = agent.process(input_data)
|
|
126
|
+
|
|
127
|
+
assert result is not None
|
|
128
|
+
assert "risk" in result.lower()
|
|
129
|
+
assert "mitigation" in result.lower() or "controls" in result.lower()
|
|
130
|
+
print("✓ Risk assessment test passed")
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def test_training_program():
|
|
134
|
+
"""Test compliance training program development capability."""
|
|
135
|
+
agent = ComplianceOfficer()
|
|
136
|
+
|
|
137
|
+
input_data = {
|
|
138
|
+
"task": "Develop compliance training program",
|
|
139
|
+
"target_audience": "All employees",
|
|
140
|
+
"topics": ["Data privacy", "Anti-corruption", "Insider trading"],
|
|
141
|
+
"duration": "Annual",
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
result = agent.process(input_data)
|
|
145
|
+
|
|
146
|
+
assert result is not None
|
|
147
|
+
assert "training" in result.lower()
|
|
148
|
+
assert "program" in result.lower() or "curriculum" in result.lower()
|
|
149
|
+
print("✓ Training program test passed")
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
if __name__ == "__main__":
|
|
153
|
+
print("Running Compliance Officer scenario tests...")
|
|
154
|
+
print()
|
|
155
|
+
|
|
156
|
+
test_regulatory_assessment()
|
|
157
|
+
test_gdpr_compliance()
|
|
158
|
+
test_aml_compliance()
|
|
159
|
+
test_policy_development()
|
|
160
|
+
test_audit_preparation()
|
|
161
|
+
test_risk_assessment()
|
|
162
|
+
test_training_program()
|
|
163
|
+
|
|
164
|
+
print()
|
|
165
|
+
print("All Compliance Officer tests passed! ✓")
|