bmad-method 6.0.0-alpha.1 → 6.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/idea_submission.md +1 -1
- package/.github/workflows/bundle-latest.yaml +277 -0
- package/.github/workflows/manual-release.yaml +64 -17
- package/.github/workflows/{lint.yaml → quality.yaml} +19 -2
- package/.husky/pre-commit +4 -0
- package/.prettierignore +4 -0
- package/.vscode/settings.json +3 -1
- package/CHANGELOG.md +321 -12
- package/CONTRIBUTING.md +1 -13
- package/README.md +138 -187
- package/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
- package/docs/agent-customization-guide.md +208 -0
- package/docs/custom-agent-installation.md +169 -0
- package/docs/document-sharding-guide.md +449 -0
- package/docs/ide-info/crush.md +1 -1
- package/docs/ide-info/cursor.md +7 -7
- package/docs/ide-info/iflow.md +3 -3
- package/docs/ide-info/opencode.md +1 -1
- package/docs/index.md +227 -0
- package/docs/installers-bundlers/ide-injections.md +2 -2
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +80 -19
- package/docs/v4-to-v6-upgrade.md +21 -19
- package/docs/v6-open-items.md +17 -0
- package/docs/web-bundles-gemini-gpt-guide.md +473 -0
- package/eslint.config.mjs +2 -0
- package/package.json +6 -3
- package/src/core/_module-installer/install-config.yaml +17 -10
- package/src/core/_module-installer/installer.js +0 -8
- package/src/core/agents/bmad-master.agent.yaml +5 -5
- package/src/core/agents/bmad-web-orchestrator.agent.xml +8 -17
- package/src/core/resources/excalidraw/README.md +160 -0
- package/src/core/resources/excalidraw/excalidraw-helpers.md +127 -0
- package/src/core/resources/excalidraw/library-loader.md +50 -0
- package/src/core/resources/excalidraw/validate-json-instructions.md +79 -0
- package/src/core/tasks/advanced-elicitation-methods.csv +21 -0
- package/{bmad/core/tasks/adv-elicit.xml → src/core/tasks/advanced-elicitation.xml} +6 -4
- package/src/core/tasks/index-docs.xml +1 -1
- package/src/core/tasks/validate-workflow.xml +1 -1
- package/src/core/tasks/workflow.xml +126 -22
- package/src/core/tools/shard-doc.xml +54 -45
- package/src/core/workflows/brainstorming/README.md +6 -16
- package/src/core/workflows/brainstorming/instructions.md +6 -5
- package/src/core/workflows/brainstorming/template.md +4 -0
- package/src/core/workflows/brainstorming/workflow.yaml +8 -13
- package/src/core/workflows/party-mode/instructions.md +2 -7
- package/src/core/workflows/party-mode/workflow.yaml +11 -6
- package/src/modules/bmb/README.md +135 -73
- package/src/modules/bmb/_module-installer/install-config.yaml +9 -4
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +11 -12
- package/src/modules/bmb/docs/agent-compilation.md +340 -0
- package/src/modules/bmb/docs/agent-menu-patterns.md +524 -0
- package/src/modules/bmb/docs/expert-agent-architecture.md +364 -0
- package/src/modules/bmb/docs/index.md +55 -0
- package/src/modules/bmb/docs/module-agent-architecture.md +367 -0
- package/src/modules/bmb/docs/simple-agent-architecture.md +288 -0
- package/src/modules/bmb/docs/understanding-agent-types.md +184 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/README.md +242 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
- package/src/modules/bmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
- package/src/modules/bmb/reference/agents/module-examples/README.md +50 -0
- package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
- package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
- package/src/modules/bmb/reference/agents/simple-examples/README.md +223 -0
- package/src/modules/bmb/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
- package/src/modules/bmb/reference/readme.md +3 -0
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +5 -6
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +6 -6
- package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +2 -2
- package/src/modules/bmb/workflows/convert-legacy/README.md +5 -5
- package/src/modules/bmb/workflows/convert-legacy/checklist.md +2 -2
- package/src/modules/bmb/workflows/convert-legacy/instructions.md +17 -17
- package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +6 -10
- package/src/modules/bmb/workflows/create-agent/agent-validation-checklist.md +174 -0
- package/src/modules/bmb/workflows/create-agent/brainstorm-context.md +99 -120
- package/src/modules/bmb/workflows/create-agent/communication-presets.csv +61 -0
- package/src/modules/bmb/workflows/create-agent/instructions.md +171 -82
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +26 -20
- package/src/modules/bmb/workflows/create-module/README.md +163 -154
- package/src/modules/bmb/workflows/create-module/checklist.md +1 -10
- package/src/modules/bmb/workflows/create-module/installer-templates/install-config.yaml +1 -1
- package/src/modules/bmb/workflows/create-module/instructions.md +13 -17
- package/src/modules/bmb/workflows/create-module/module-structure.md +39 -5
- package/src/modules/bmb/workflows/create-module/workflow.yaml +21 -13
- package/src/modules/bmb/workflows/create-workflow/README.md +4 -4
- package/src/modules/bmb/workflows/create-workflow/checklist.md +1 -1
- package/src/modules/bmb/workflows/create-workflow/instructions.md +46 -37
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +219 -42
- package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +4 -2
- package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +12 -16
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +7 -8
- package/src/modules/bmb/workflows/edit-agent/README.md +174 -47
- package/src/modules/bmb/workflows/edit-agent/instructions.md +399 -35
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +27 -13
- package/src/modules/bmb/workflows/edit-module/README.md +2 -2
- package/src/modules/bmb/workflows/edit-module/checklist.md +2 -2
- package/src/modules/bmb/workflows/edit-module/instructions.md +7 -5
- package/src/modules/bmb/workflows/edit-module/workflow.yaml +11 -13
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +4 -4
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +6 -8
- package/src/modules/bmb/workflows/module-brief/README.md +2 -2
- package/src/modules/bmb/workflows/module-brief/checklist.md +2 -2
- package/src/modules/bmb/workflows/module-brief/instructions.md +3 -2
- package/src/modules/bmb/workflows/module-brief/workflow.yaml +12 -7
- package/src/modules/bmgd/README.md +208 -0
- package/src/modules/bmgd/_module-installer/install-config.yaml +54 -0
- package/src/modules/bmgd/agents/game-architect.agent.yaml +33 -0
- package/src/modules/bmgd/agents/game-designer.agent.yaml +40 -0
- package/src/modules/bmgd/agents/game-dev.agent.yaml +40 -0
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +75 -0
- package/src/modules/bmgd/teams/default-party.csv +10 -0
- package/src/modules/{bmm → bmgd}/teams/team-gamedev.yaml +5 -1
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +130 -0
- package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/workflow.yaml +10 -10
- package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/instructions.md +44 -28
- package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/workflow.yaml +9 -17
- package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/instructions-gdd.md +58 -31
- package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +81 -0
- package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/instructions-narrative.md +75 -28
- package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/workflow.yaml +6 -12
- package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-patterns.yaml +321 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/architecture-template.md +103 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/checklist.md +240 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/decision-catalog.yaml +222 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +701 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/pattern-categories.csv +13 -0
- package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +69 -0
- package/src/modules/bmgd/workflows/4-production/code-review/backlog_template.md +12 -0
- package/src/modules/bmgd/workflows/4-production/code-review/checklist.md +22 -0
- package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +398 -0
- package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +61 -0
- package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +279 -0
- package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +206 -0
- package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +58 -0
- package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +240 -0
- package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +256 -0
- package/src/modules/bmgd/workflows/4-production/create-story/template.md +51 -0
- package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +74 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/checklist.md +38 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +267 -0
- package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +58 -0
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +17 -0
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +164 -0
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/template.md +76 -0
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +58 -0
- package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +1443 -0
- package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +57 -0
- package/src/modules/bmgd/workflows/4-production/sprint-planning/checklist.md +33 -0
- package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +234 -0
- package/src/modules/bmgd/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +51 -0
- package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +16 -0
- package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +34 -0
- package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +209 -0
- package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +63 -0
- package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +111 -0
- package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +28 -0
- package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +117 -0
- package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +25 -0
- package/src/modules/bmm/README.md +79 -92
- package/src/modules/bmm/_module-installer/install-config.yaml +9 -23
- package/src/modules/bmm/_module-installer/installer.js +2 -2
- package/src/modules/bmm/agents/analyst.agent.yaml +25 -19
- package/src/modules/bmm/agents/architect.agent.yaml +28 -19
- package/src/modules/bmm/agents/dev.agent.yaml +12 -15
- package/src/modules/bmm/agents/pm.agent.yaml +40 -22
- package/src/modules/bmm/agents/sm.agent.yaml +30 -24
- package/src/modules/bmm/agents/tea.agent.yaml +25 -17
- package/src/modules/bmm/agents/tech-writer.agent.yaml +80 -0
- package/src/modules/bmm/agents/ux-designer.agent.yaml +22 -12
- package/src/modules/bmm/docs/README.md +240 -0
- package/src/modules/bmm/docs/agents-guide.md +1058 -0
- package/src/modules/bmm/docs/brownfield-guide.md +762 -0
- package/src/modules/bmm/docs/enterprise-agentic-development.md +686 -0
- package/src/modules/bmm/docs/faq.md +588 -0
- package/src/modules/bmm/docs/glossary.md +320 -0
- package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +5919 -0
- package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +2 -0
- package/src/modules/bmm/docs/party-mode.md +224 -0
- package/src/modules/bmm/docs/quick-spec-flow.md +652 -0
- package/src/modules/bmm/docs/quick-start.md +382 -0
- package/src/modules/bmm/docs/scale-adaptive-system.md +618 -0
- package/src/modules/bmm/docs/test-architecture.md +396 -0
- package/src/modules/bmm/{workflows/3-solutioning/architecture/readme.md → docs/workflow-architecture-reference.md} +132 -84
- package/src/modules/bmm/{workflows/document-project/README.md → docs/workflow-document-project-reference.md} +49 -4
- package/src/modules/bmm/docs/workflows-analysis.md +370 -0
- package/src/modules/bmm/docs/workflows-implementation.md +296 -0
- package/src/modules/bmm/docs/workflows-planning.md +612 -0
- package/src/modules/bmm/docs/workflows-solutioning.md +554 -0
- package/src/modules/bmm/teams/default-party.csv +20 -0
- package/src/modules/bmm/teams/team-fullstack.yaml +2 -0
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +45 -24
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +8 -8
- package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +425 -0
- package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +180 -0
- package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +56 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +435 -232
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +93 -77
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +32 -14
- package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +144 -0
- package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +249 -0
- package/src/modules/bmm/workflows/1-analysis/research/checklist.md +156 -59
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +70 -65
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +205 -143
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +55 -46
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +116 -83
- package/src/modules/bmm/workflows/1-analysis/research/template-market.md +37 -1
- package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +36 -1
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +25 -12
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +51 -26
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +67 -16
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +292 -63
- package/src/modules/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +544 -290
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +165 -23
- package/src/modules/bmm/workflows/2-plan-workflows/prd/project-types.csv +11 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +50 -18
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +146 -36
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +67 -4
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +436 -0
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +874 -163
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +132 -6
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +54 -20
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +36 -28
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -26
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +5 -9
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +215 -150
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +72 -26
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/epics-template.md +80 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md +616 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +63 -0
- package/src/modules/bmm/workflows/3-solutioning/{solutioning-gate-check → implementation-readiness}/checklist.md +7 -13
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/instructions.md +332 -0
- package/src/modules/bmm/workflows/3-solutioning/{solutioning-gate-check → implementation-readiness}/template.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml +64 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +25 -18
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +31 -26
- package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +7 -2
- package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +38 -25
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +22 -18
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +38 -14
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +8 -3
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +35 -5
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +10 -6
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +40 -16
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +1207 -243
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +38 -26
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +28 -15
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +1 -1
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +16 -6
- package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +1 -1
- package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +23 -15
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +39 -8
- package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +5 -4
- package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +6 -6
- package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +5 -7
- package/src/modules/bmm/workflows/diagrams/_shared/excalidraw-library.json +90 -0
- package/src/modules/bmm/workflows/diagrams/_shared/excalidraw-templates.yaml +127 -0
- package/src/modules/bmm/workflows/diagrams/create-dataflow/checklist.md +39 -0
- package/src/modules/bmm/workflows/diagrams/create-dataflow/instructions.md +130 -0
- package/src/modules/bmm/workflows/diagrams/create-dataflow/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/diagrams/create-diagram/checklist.md +43 -0
- package/src/modules/bmm/workflows/diagrams/create-diagram/instructions.md +141 -0
- package/src/modules/bmm/workflows/diagrams/create-diagram/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/diagrams/create-flowchart/checklist.md +49 -0
- package/src/modules/bmm/workflows/diagrams/create-flowchart/instructions.md +241 -0
- package/src/modules/bmm/workflows/diagrams/create-flowchart/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/diagrams/create-wireframe/checklist.md +38 -0
- package/src/modules/bmm/workflows/diagrams/create-wireframe/instructions.md +133 -0
- package/src/modules/bmm/workflows/diagrams/create-wireframe/workflow.yaml +27 -0
- package/src/modules/bmm/workflows/document-project/checklist.md +1 -1
- package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
- package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -7
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive-instructions.md +4 -4
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
- package/src/modules/bmm/workflows/document-project/workflows/full-scan-instructions.md +13 -13
- package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
- package/src/modules/bmm/workflows/techdoc/documentation-standards.md +262 -0
- package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -9
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -11
- package/src/modules/bmm/workflows/testarch/ci/checklist.md +4 -4
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -10
- package/src/modules/bmm/workflows/testarch/framework/checklist.md +4 -4
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -8
- package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -11
- package/src/modules/bmm/workflows/testarch/test-design/checklist.md +4 -4
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +175 -14
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +4 -4
- package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +7 -11
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -9
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +9 -9
- package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -13
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +249 -212
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +6 -5
- package/src/modules/bmm/workflows/workflow-status/instructions.md +177 -113
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +126 -0
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +114 -0
- package/src/modules/bmm/workflows/workflow-status/paths/{brownfield-level-3.yaml → method-brownfield.yaml} +48 -33
- package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +101 -0
- package/src/modules/bmm/workflows/workflow-status/paths/{brownfield-level-1.yaml → quick-flow-brownfield.yaml} +18 -18
- package/src/modules/bmm/workflows/workflow-status/paths/{greenfield-level-1.yaml → quick-flow-greenfield.yaml} +16 -18
- package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
- package/src/modules/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -0
- package/src/modules/bmm/workflows/workflow-status/workflow.yaml +5 -5
- package/src/modules/cis/README.md +153 -0
- package/src/modules/cis/_module-installer/install-config.yaml +6 -4
- package/src/modules/cis/agents/README.md +1 -1
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +13 -8
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +13 -8
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +13 -8
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +13 -8
- package/src/modules/cis/agents/presentation-master.agent.yaml +60 -0
- package/src/modules/cis/agents/storyteller.agent.yaml +13 -8
- package/src/modules/cis/teams/creative-squad.yaml +1 -0
- package/src/modules/cis/teams/default-party.csv +11 -0
- package/src/modules/cis/workflows/README.md +102 -30
- package/src/modules/cis/workflows/design-thinking/instructions.md +4 -2
- package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -12
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +7 -5
- package/src/modules/cis/workflows/innovation-strategy/template.md +3 -3
- package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -12
- package/src/modules/cis/workflows/problem-solving/instructions.md +4 -2
- package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -12
- package/src/modules/cis/workflows/storytelling/instructions.md +14 -4
- package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -12
- package/src/utility/models/action-command-header.md +0 -0
- package/src/utility/models/agent-activation-ide.xml +3 -3
- package/src/utility/models/agent-activation-web.xml +4 -4
- package/src/utility/models/agent-command-header.md +1 -0
- package/src/utility/models/fragments/activation-steps.xml +3 -2
- package/src/utility/models/fragments/handler-validate-workflow.xml +1 -1
- package/src/utility/models/fragments/handler-workflow.xml +1 -1
- package/src/utility/models/fragments/web-bundle-activation-steps.xml +3 -3
- package/test/test-installation-components.js +214 -0
- package/tools/bmad-npx-wrapper.js +10 -98
- package/tools/cli/README.md +50 -32
- package/tools/cli/bundlers/web-bundler.js +322 -26
- package/tools/cli/commands/agent-install.js +409 -0
- package/tools/cli/commands/install.js +2 -5
- package/tools/cli/installers/lib/core/config-collector.js +279 -39
- package/tools/cli/installers/lib/core/detector.js +62 -7
- package/tools/cli/installers/lib/core/ide-config-manager.js +3 -1
- package/tools/cli/installers/lib/core/installer.js +338 -46
- package/tools/cli/installers/lib/core/manifest-generator.js +33 -117
- package/tools/cli/installers/lib/core/manifest.js +6 -2
- package/tools/cli/installers/lib/ide/_base-ide.js +82 -3
- package/tools/cli/installers/lib/ide/antigravity.js +463 -0
- package/tools/cli/installers/lib/ide/auggie.js +81 -238
- package/tools/cli/installers/lib/ide/claude-code.js +90 -25
- package/tools/cli/installers/lib/ide/cline.js +15 -18
- package/tools/cli/installers/lib/ide/codex.js +225 -71
- package/tools/cli/installers/lib/ide/crush.js +14 -50
- package/tools/cli/installers/lib/ide/cursor.js +116 -8
- package/tools/cli/installers/lib/ide/gemini.js +87 -37
- package/tools/cli/installers/lib/ide/github-copilot.js +121 -35
- package/tools/cli/installers/lib/ide/iflow.js +13 -30
- package/tools/cli/installers/lib/ide/kilo.js +20 -16
- package/tools/cli/installers/lib/ide/manager.js +50 -0
- package/tools/cli/installers/lib/ide/opencode.js +61 -17
- package/tools/cli/installers/lib/ide/qwen.js +39 -11
- package/tools/cli/installers/lib/ide/roo.js +27 -62
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +90 -0
- package/tools/cli/installers/lib/ide/{task-tool-command-generator.js → shared/task-tool-command-generator.js} +1 -1
- package/tools/cli/installers/lib/ide/{workflow-command-generator.js → shared/workflow-command-generator.js} +11 -9
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
- package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
- package/tools/cli/installers/lib/ide/{workflow-command-template.md → templates/workflow-command-template.md} +3 -5
- package/tools/cli/installers/lib/ide/trae.js +20 -32
- package/tools/cli/installers/lib/ide/windsurf.js +65 -8
- package/tools/cli/installers/lib/modules/manager.js +213 -7
- package/tools/cli/lib/agent/compiler.js +390 -0
- package/tools/cli/lib/agent/installer.js +725 -0
- package/tools/cli/lib/agent/template-engine.js +152 -0
- package/tools/cli/lib/cli-utils.js +52 -50
- package/tools/cli/lib/config.js +3 -1
- package/tools/cli/lib/ui.js +34 -17
- package/tools/cli/lib/xml-handler.js +1 -0
- package/tools/cli/lib/yaml-format.js +2 -1
- package/tools/cli/lib/yaml-xml-builder.js +76 -8
- package/tools/schema/agent.js +12 -3
- package/.claude/commands/bmad/bmb/agents/bmad-builder.md +0 -70
- package/.claude/commands/bmad/bmb/workflows/README.md +0 -67
- package/.claude/commands/bmad/bmb/workflows/audit-workflow.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/convert-legacy.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/create-agent.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/create-module.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/create-workflow.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/edit-agent.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/edit-module.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/edit-workflow.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/module-brief.md +0 -15
- package/.claude/commands/bmad/bmb/workflows/redoc.md +0 -15
- package/.claude/commands/bmad/bmd/agents/cli-chief.md +0 -108
- package/.claude/commands/bmad/bmd/agents/doc-keeper.md +0 -115
- package/.claude/commands/bmad/bmd/agents/release-chief.md +0 -109
- package/.claude/commands/bmad/core/agents/bmad-master.md +0 -71
- package/.claude/commands/bmad/core/tasks/index-docs.md +0 -9
- package/.claude/commands/bmad/core/tools/shard-doc.md +0 -9
- package/.claude/commands/bmad/core/workflows/README.md +0 -27
- package/.claude/commands/bmad/core/workflows/brainstorming.md +0 -15
- package/.claude/commands/bmad/core/workflows/party-mode.md +0 -15
- package/.claude/hooks/bmad-tts-injector.sh +0 -415
- package/.claude/hooks/bmad-voice-manager.sh +0 -511
- package/.claude/hooks/check-output-style.sh +0 -112
- package/.claude/hooks/download-extra-voices.sh +0 -244
- package/.claude/hooks/github-star-reminder.sh +0 -154
- package/.claude/hooks/language-manager.sh +0 -392
- package/.claude/hooks/learn-manager.sh +0 -475
- package/.claude/hooks/personality-manager.sh +0 -438
- package/.claude/hooks/piper-download-voices.sh +0 -165
- package/.claude/hooks/piper-installer.sh +0 -178
- package/.claude/hooks/piper-multispeaker-registry.sh +0 -165
- package/.claude/hooks/piper-voice-manager.sh +0 -293
- package/.claude/hooks/play-tts-elevenlabs.sh +0 -404
- package/.claude/hooks/play-tts-piper.sh +0 -338
- package/.claude/hooks/play-tts.sh +0 -100
- package/.claude/hooks/provider-commands.sh +0 -540
- package/.claude/hooks/provider-manager.sh +0 -298
- package/.claude/hooks/replay-target-audio.sh +0 -95
- package/.claude/hooks/sentiment-manager.sh +0 -201
- package/.claude/hooks/speed-manager.sh +0 -291
- package/.claude/hooks/voice-manager.sh +0 -594
- package/.claude/hooks/voices-config.sh +0 -70
- package/.claude/settings.local.json +0 -41
- package/bmad/_cfg/agent-manifest.csv +0 -7
- package/bmad/_cfg/agents/bmb-bmad-builder.customize.yaml +0 -42
- package/bmad/_cfg/agents/bmd-cli-chief.customize.yaml +0 -32
- package/bmad/_cfg/agents/bmd-doc-keeper.customize.yaml +0 -42
- package/bmad/_cfg/agents/bmd-release-chief.customize.yaml +0 -42
- package/bmad/_cfg/agents/core-bmad-master.customize.yaml +0 -42
- package/bmad/_cfg/files-manifest.csv +0 -83
- package/bmad/_cfg/manifest.yaml +0 -12
- package/bmad/_cfg/task-manifest.csv +0 -5
- package/bmad/_cfg/tool-manifest.csv +0 -2
- package/bmad/_cfg/workflow-manifest.csv +0 -15
- package/bmad/bmb/README.md +0 -132
- package/bmad/bmb/agents/bmad-builder.md +0 -70
- package/bmad/bmb/config.yaml +0 -14
- package/bmad/bmb/workflows/audit-workflow/checklist.md +0 -143
- package/bmad/bmb/workflows/audit-workflow/instructions.md +0 -341
- package/bmad/bmb/workflows/audit-workflow/template.md +0 -118
- package/bmad/bmb/workflows/audit-workflow/workflow.yaml +0 -23
- package/bmad/bmb/workflows/audit-workflow/workflow.yaml.bak +0 -21
- package/bmad/bmb/workflows/convert-legacy/README.md +0 -262
- package/bmad/bmb/workflows/convert-legacy/checklist.md +0 -205
- package/bmad/bmb/workflows/convert-legacy/instructions.md +0 -377
- package/bmad/bmb/workflows/convert-legacy/workflow.yaml +0 -32
- package/bmad/bmb/workflows/create-agent/README.md +0 -320
- package/bmad/bmb/workflows/create-agent/agent-architecture.md +0 -419
- package/bmad/bmb/workflows/create-agent/agent-architecture.md.bak +0 -412
- package/bmad/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
- package/bmad/bmb/workflows/create-agent/agent-command-patterns.md.bak +0 -759
- package/bmad/bmb/workflows/create-agent/agent-types.md +0 -292
- package/bmad/bmb/workflows/create-agent/brainstorm-context.md +0 -174
- package/bmad/bmb/workflows/create-agent/checklist.md +0 -62
- package/bmad/bmb/workflows/create-agent/communication-styles.md +0 -202
- package/bmad/bmb/workflows/create-agent/instructions.md +0 -430
- package/bmad/bmb/workflows/create-agent/workflow.yaml +0 -37
- package/bmad/bmb/workflows/create-module/README.md +0 -220
- package/bmad/bmb/workflows/create-module/README.md.bak +0 -218
- package/bmad/bmb/workflows/create-module/brainstorm-context.md +0 -137
- package/bmad/bmb/workflows/create-module/checklist.md +0 -244
- package/bmad/bmb/workflows/create-module/checklist.md.bak +0 -245
- package/bmad/bmb/workflows/create-module/installer-templates/install-config.yaml +0 -92
- package/bmad/bmb/workflows/create-module/installer-templates/installer.js +0 -231
- package/bmad/bmb/workflows/create-module/installer-templates/installer.js.bak +0 -231
- package/bmad/bmb/workflows/create-module/instructions.md +0 -581
- package/bmad/bmb/workflows/create-module/instructions.md.bak +0 -521
- package/bmad/bmb/workflows/create-module/module-structure.md +0 -366
- package/bmad/bmb/workflows/create-module/module-structure.md.bak +0 -310
- package/bmad/bmb/workflows/create-module/workflow.yaml +0 -42
- package/bmad/bmb/workflows/create-module/workflow.yaml.bak +0 -40
- package/bmad/bmb/workflows/create-workflow/README.md +0 -277
- package/bmad/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
- package/bmad/bmb/workflows/create-workflow/checklist.md +0 -94
- package/bmad/bmb/workflows/create-workflow/instructions.md +0 -716
- package/bmad/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1150
- package/bmad/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
- package/bmad/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -13
- package/bmad/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
- package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -39
- package/bmad/bmb/workflows/create-workflow/workflow-template/workflow.yaml.bak +0 -39
- package/bmad/bmb/workflows/create-workflow/workflow.yaml +0 -40
- package/bmad/bmb/workflows/create-workflow/workflow.yaml.bak +0 -38
- package/bmad/bmb/workflows/edit-agent/README.md +0 -112
- package/bmad/bmb/workflows/edit-agent/checklist.md +0 -112
- package/bmad/bmb/workflows/edit-agent/instructions.md +0 -290
- package/bmad/bmb/workflows/edit-agent/workflow.yaml +0 -33
- package/bmad/bmb/workflows/edit-module/README.md +0 -187
- package/bmad/bmb/workflows/edit-module/checklist.md +0 -165
- package/bmad/bmb/workflows/edit-module/instructions.md +0 -339
- package/bmad/bmb/workflows/edit-module/workflow.yaml +0 -34
- package/bmad/bmb/workflows/edit-workflow/README.md +0 -119
- package/bmad/bmb/workflows/edit-workflow/checklist.md +0 -70
- package/bmad/bmb/workflows/edit-workflow/instructions.md +0 -342
- package/bmad/bmb/workflows/edit-workflow/workflow.yaml +0 -27
- package/bmad/bmb/workflows/edit-workflow/workflow.yaml.bak +0 -25
- package/bmad/bmb/workflows/module-brief/README.md +0 -264
- package/bmad/bmb/workflows/module-brief/checklist.md +0 -116
- package/bmad/bmb/workflows/module-brief/instructions.md +0 -267
- package/bmad/bmb/workflows/module-brief/template.md +0 -275
- package/bmad/bmb/workflows/module-brief/workflow.yaml +0 -29
- package/bmad/bmb/workflows/module-brief/workflow.yaml.bak +0 -27
- package/bmad/bmb/workflows/redoc/README.md +0 -87
- package/bmad/bmb/workflows/redoc/checklist.md +0 -99
- package/bmad/bmb/workflows/redoc/instructions.md +0 -265
- package/bmad/bmb/workflows/redoc/workflow.yaml +0 -32
- package/bmad/bmb/workflows/redoc/workflow.yaml.bak +0 -31
- package/bmad/bmd/README.md +0 -193
- package/bmad/bmd/README.md.bak +0 -193
- package/bmad/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
- package/bmad/bmd/agents/cli-chief-sidecar/instructions.md.bak +0 -102
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/README.md.bak +0 -68
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
- package/bmad/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md.bak +0 -123
- package/bmad/bmd/agents/cli-chief-sidecar/memories.md +0 -53
- package/bmad/bmd/agents/cli-chief-sidecar/memories.md.bak +0 -53
- package/bmad/bmd/agents/cli-chief.md +0 -108
- package/bmad/bmd/agents/cli-chief.md.bak +0 -108
- package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
- package/bmad/bmd/agents/doc-keeper-sidecar/instructions.md.bak +0 -177
- package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
- package/bmad/bmd/agents/doc-keeper-sidecar/knowledge/README.md.bak +0 -81
- package/bmad/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
- package/bmad/bmd/agents/doc-keeper-sidecar/memories.md.bak +0 -88
- package/bmad/bmd/agents/doc-keeper.md +0 -115
- package/bmad/bmd/agents/doc-keeper.md.bak +0 -115
- package/bmad/bmd/agents/release-chief-sidecar/instructions.md +0 -164
- package/bmad/bmd/agents/release-chief-sidecar/instructions.md.bak +0 -164
- package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
- package/bmad/bmd/agents/release-chief-sidecar/knowledge/README.md.bak +0 -82
- package/bmad/bmd/agents/release-chief-sidecar/memories.md +0 -73
- package/bmad/bmd/agents/release-chief-sidecar/memories.md.bak +0 -73
- package/bmad/bmd/agents/release-chief.md +0 -109
- package/bmad/bmd/agents/release-chief.md.bak +0 -109
- package/bmad/bmd/config.yaml +0 -10
- package/bmad/core/agents/bmad-master.md +0 -71
- package/bmad/core/agents/bmad-web-orchestrator.agent.xml +0 -122
- package/bmad/core/config.yaml +0 -9
- package/bmad/core/tasks/adv-elicit-methods.csv +0 -39
- package/bmad/core/tasks/index-docs.xml +0 -65
- package/bmad/core/tasks/validate-workflow.xml +0 -89
- package/bmad/core/tasks/workflow.xml +0 -174
- package/bmad/core/tools/shard-doc.xml +0 -100
- package/bmad/core/workflows/brainstorming/README.md +0 -271
- package/bmad/core/workflows/brainstorming/brain-methods.csv +0 -36
- package/bmad/core/workflows/brainstorming/instructions.md +0 -314
- package/bmad/core/workflows/brainstorming/template.md +0 -102
- package/bmad/core/workflows/brainstorming/workflow.yaml +0 -43
- package/bmad/core/workflows/party-mode/instructions.md +0 -188
- package/bmad/core/workflows/party-mode/workflow.yaml +0 -23
- package/bmad/docs/claude-code-instructions.md +0 -25
- package/bmad/docs/codex-instructions.md +0 -21
- package/bmd/README.md +0 -193
- package/bmd/agents/cli-chief-sidecar/instructions.md +0 -102
- package/bmd/agents/cli-chief-sidecar/knowledge/README.md +0 -68
- package/bmd/agents/cli-chief-sidecar/knowledge/cli-reference.md +0 -123
- package/bmd/agents/cli-chief-sidecar/memories.md +0 -53
- package/bmd/agents/cli-chief.agent.yaml +0 -126
- package/bmd/agents/doc-keeper-sidecar/instructions.md +0 -177
- package/bmd/agents/doc-keeper-sidecar/knowledge/README.md +0 -81
- package/bmd/agents/doc-keeper-sidecar/memories.md +0 -88
- package/bmd/agents/doc-keeper.agent.yaml +0 -137
- package/bmd/agents/release-chief-sidecar/instructions.md +0 -164
- package/bmd/agents/release-chief-sidecar/knowledge/README.md +0 -82
- package/bmd/agents/release-chief-sidecar/memories.md +0 -73
- package/bmd/agents/release-chief.agent.yaml +0 -127
- package/bmd/bmad-custom-module-installer-plan.md +0 -1176
- package/bmd/config.yaml +0 -12
- package/docs/bmad-brownfield-guide.md +0 -1260
- package/docs/conversion-report-shard-doc-2025-10-26.md +0 -188
- package/docs/installers-bundlers/web-bundler-usage.md +0 -54
- package/src/core/tasks/adv-elicit.xml +0 -104
- package/src/modules/bmb/workflows/create-agent/README.md +0 -320
- package/src/modules/bmb/workflows/create-agent/agent-architecture.md +0 -419
- package/src/modules/bmb/workflows/create-agent/agent-command-patterns.md +0 -759
- package/src/modules/bmb/workflows/create-agent/agent-types.md +0 -292
- package/src/modules/bmb/workflows/create-agent/checklist.md +0 -62
- package/src/modules/bmb/workflows/create-agent/communication-styles.md +0 -202
- package/src/modules/bmb/workflows/edit-agent/checklist.md +0 -112
- package/src/modules/bmb/workflows/redoc/README.md +0 -87
- package/src/modules/bmb/workflows/redoc/checklist.md +0 -99
- package/src/modules/bmb/workflows/redoc/instructions.md +0 -265
- package/src/modules/bmb/workflows/redoc/workflow.yaml +0 -34
- package/src/modules/bmm/agents/game-architect.agent.yaml +0 -35
- package/src/modules/bmm/agents/game-designer.agent.yaml +0 -47
- package/src/modules/bmm/agents/game-dev.agent.yaml +0 -39
- package/src/modules/bmm/sub-modules/claude-code/config.yaml +0 -5
- package/src/modules/bmm/sub-modules/claude-code/injections.yaml +0 -242
- package/src/modules/bmm/sub-modules/claude-code/readme.md +0 -87
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +0 -102
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +0 -82
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +0 -101
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +0 -84
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +0 -83
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +0 -81
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +0 -61
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +0 -168
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +0 -115
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +0 -123
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +0 -72
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +0 -51
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +0 -106
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +0 -102
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +0 -68
- package/src/modules/bmm/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +0 -108
- package/src/modules/bmm/tasks/daily-standup.xml +0 -85
- package/src/modules/bmm/tasks/retrospective.xml +0 -104
- package/src/modules/bmm/testarch/README.md +0 -311
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/README.md +0 -38
- package/src/modules/bmm/workflows/1-analysis/brainstorm-game/instructions.md +0 -109
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/README.md +0 -29
- package/src/modules/bmm/workflows/1-analysis/game-brief/README.md +0 -221
- package/src/modules/bmm/workflows/1-analysis/product-brief/README.md +0 -180
- package/src/modules/bmm/workflows/1-analysis/research/README.md +0 -454
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-competitor-analyzer.md +0 -259
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-data-analyst.md +0 -190
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-market-researcher.md +0 -337
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-trend-spotter.md +0 -107
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/sub-agents/bmm-user-researcher.md +0 -329
- package/src/modules/bmm/workflows/2-plan-workflows/README.md +0 -258
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/README.md +0 -222
- package/src/modules/bmm/workflows/2-plan-workflows/gdd/workflow.yaml +0 -67
- package/src/modules/bmm/workflows/2-plan-workflows/prd/epics-template.md +0 -63
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level0-story.md +0 -167
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-level1-stories.md +0 -278
- package/src/modules/bmm/workflows/3-solutioning/README.md +0 -1
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/README.md +0 -177
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/instructions.md +0 -273
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/validation-criteria.yaml +0 -189
- package/src/modules/bmm/workflows/3-solutioning/solutioning-gate-check/workflow.yaml +0 -40
- package/src/modules/bmm/workflows/4-implementation/README.md +0 -221
- package/src/modules/bmm/workflows/4-implementation/code-review/README.md +0 -69
- package/src/modules/bmm/workflows/4-implementation/correct-course/README.md +0 -73
- package/src/modules/bmm/workflows/4-implementation/create-story/README.md +0 -129
- package/src/modules/bmm/workflows/4-implementation/dev-story/AUDIT-REPORT.md +0 -367
- package/src/modules/bmm/workflows/4-implementation/dev-story/README.md +0 -206
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/README.md +0 -195
- package/src/modules/bmm/workflows/4-implementation/retrospective/README.md +0 -77
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/README.md +0 -156
- package/src/modules/bmm/workflows/4-implementation/story-context/README.md +0 -234
- package/src/modules/bmm/workflows/README.md +0 -577
- package/src/modules/bmm/workflows/document-project/templates/README.md +0 -38
- package/src/modules/bmm/workflows/testarch/README.md +0 -26
- package/src/modules/bmm/workflows/testarch/atdd/README.md +0 -672
- package/src/modules/bmm/workflows/testarch/automate/README.md +0 -869
- package/src/modules/bmm/workflows/testarch/ci/README.md +0 -493
- package/src/modules/bmm/workflows/testarch/framework/README.md +0 -340
- package/src/modules/bmm/workflows/testarch/nfr-assess/README.md +0 -469
- package/src/modules/bmm/workflows/testarch/test-design/README.md +0 -493
- package/src/modules/bmm/workflows/testarch/test-review/README.md +0 -775
- package/src/modules/bmm/workflows/testarch/trace/README.md +0 -802
- package/src/modules/bmm/workflows/workflow-status/README.md +0 -241
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-0.yaml +0 -54
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-2.yaml +0 -76
- package/src/modules/bmm/workflows/workflow-status/paths/brownfield-level-4.yaml +0 -88
- package/src/modules/bmm/workflows/workflow-status/paths/game-design.yaml +0 -75
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-0.yaml +0 -45
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-2.yaml +0 -78
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-3.yaml +0 -73
- package/src/modules/bmm/workflows/workflow-status/paths/greenfield-level-4.yaml +0 -75
- package/src/modules/bmm/workflows/workflow-status/workflow-status-template.md +0 -30
- package/src/modules/cis/readme.md +0 -86
- package/test/fixtures/agent-schema/invalid/persona/principles-as-string.agent.yaml +0 -23
- package/v6-open-items.md +0 -23
- /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-brain-methods.csv +0 -0
- /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/brainstorm-game/game-context.md +0 -0
- /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/checklist.md +0 -0
- /package/src/modules/{bmm/workflows/1-analysis → bmgd/workflows/1-preproduction}/game-brief/template.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/checklist.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/action-platformer.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/adventure.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/card-game.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/fighting.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/horror.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/idle-incremental.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/metroidvania.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/moba.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/party-game.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/puzzle.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/racing.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rhythm.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/roguelike.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/rpg.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sandbox.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/shooter.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/simulation.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/sports.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/strategy.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/survival.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/text-based.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/tower-defense.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/turn-based-tactics.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types/visual-novel.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/game-types.csv +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/gdd/gdd-template.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/checklist.md +0 -0
- /package/src/modules/{bmm/workflows/2-plan-workflows → bmgd/workflows/2-design}/narrative/narrative-template.md +0 -0
|
@@ -51,8 +51,13 @@ class WebBundler {
|
|
|
51
51
|
console.log(chalk.cyan.bold('═══════════════════════════════════════════════\n'));
|
|
52
52
|
|
|
53
53
|
try {
|
|
54
|
-
//
|
|
54
|
+
// Vendor cross-module workflows FIRST
|
|
55
55
|
const modules = await this.discoverModules();
|
|
56
|
+
for (const module of modules) {
|
|
57
|
+
await this.vendorCrossModuleWorkflows(module);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Pre-discover all modules to generate complete manifests
|
|
56
61
|
for (const module of modules) {
|
|
57
62
|
await this.preDiscoverModule(module);
|
|
58
63
|
}
|
|
@@ -92,6 +97,9 @@ class WebBundler {
|
|
|
92
97
|
teams: [],
|
|
93
98
|
};
|
|
94
99
|
|
|
100
|
+
// Vendor cross-module workflows first (if not already done by bundleAll)
|
|
101
|
+
await this.vendorCrossModuleWorkflows(moduleName);
|
|
102
|
+
|
|
95
103
|
// Pre-discover all agents and teams for manifest generation
|
|
96
104
|
await this.preDiscoverModule(moduleName);
|
|
97
105
|
|
|
@@ -134,6 +142,9 @@ class WebBundler {
|
|
|
134
142
|
|
|
135
143
|
console.log(chalk.dim(` → Processing: ${agentName}`));
|
|
136
144
|
|
|
145
|
+
// Vendor cross-module workflows first (if not already done)
|
|
146
|
+
await this.vendorCrossModuleWorkflows(moduleName);
|
|
147
|
+
|
|
137
148
|
const agentPath = path.join(this.modulesPath, moduleName, 'agents', agentFile);
|
|
138
149
|
|
|
139
150
|
// Check if agent file exists
|
|
@@ -148,6 +159,16 @@ class WebBundler {
|
|
|
148
159
|
|
|
149
160
|
// Handle YAML agents - build in-memory to XML
|
|
150
161
|
if (agentFile.endsWith('.agent.yaml')) {
|
|
162
|
+
// Check for webskip flag in YAML before building
|
|
163
|
+
const yamlContent = await fs.readFile(agentPath, 'utf8');
|
|
164
|
+
const agentYaml = yaml.load(yamlContent);
|
|
165
|
+
|
|
166
|
+
if (agentYaml?.agent?.webskip === true) {
|
|
167
|
+
this.stats.skippedAgents++;
|
|
168
|
+
console.log(chalk.gray(` ⊘ Skipped (webskip="true")`));
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
|
|
151
172
|
// Build agent from YAML (no customize file for web bundles)
|
|
152
173
|
const xmlContent = await this.yamlBuilder.buildFromYaml(agentPath, null, {
|
|
153
174
|
includeMetadata: false, // Don't include build metadata in web bundles
|
|
@@ -194,6 +215,18 @@ class WebBundler {
|
|
|
194
215
|
this.stats.warnings.push({ agent: agentName, warnings: dependencyWarnings });
|
|
195
216
|
}
|
|
196
217
|
|
|
218
|
+
// Check for module's default-party.csv and include it as agent manifest
|
|
219
|
+
const defaultPartyPath = path.join(this.modulesPath, moduleName, 'teams', 'default-party.csv');
|
|
220
|
+
if (await fs.pathExists(defaultPartyPath)) {
|
|
221
|
+
const partyContent = await fs.readFile(defaultPartyPath, 'utf8');
|
|
222
|
+
// Process any placeholders in the CSV content
|
|
223
|
+
const processedPartyContent = this.processProjectRootReferences(partyContent);
|
|
224
|
+
// Wrap as text to preserve raw CSV format in CDATA
|
|
225
|
+
const wrappedParty = this.wrapContentInXml(processedPartyContent, 'bmad/_cfg/agent-manifest.csv', 'text');
|
|
226
|
+
dependencies.set('bmad/_cfg/agent-manifest.csv', wrappedParty);
|
|
227
|
+
console.log(chalk.gray(` + Added party manifest from module default-party.csv`));
|
|
228
|
+
}
|
|
229
|
+
|
|
197
230
|
// Remove commands for skipped workflows from agent XML
|
|
198
231
|
if (skippedWorkflows.length > 0) {
|
|
199
232
|
agentXml = this.removeSkippedWorkflowCommands(agentXml, skippedWorkflows);
|
|
@@ -209,10 +242,13 @@ class WebBundler {
|
|
|
209
242
|
console.log(chalk.red(` ⚠ Invalid XML generated!`));
|
|
210
243
|
}
|
|
211
244
|
|
|
245
|
+
// Format XML for readability
|
|
246
|
+
const formattedBundle = this.formatXml(bundle);
|
|
247
|
+
|
|
212
248
|
// Write bundle to output
|
|
213
249
|
const outputPath = path.join(this.outputDir, moduleName, 'agents', `${agentName}.xml`);
|
|
214
250
|
await fs.ensureDir(path.dirname(outputPath));
|
|
215
|
-
await fs.writeFile(outputPath,
|
|
251
|
+
await fs.writeFile(outputPath, formattedBundle, 'utf8');
|
|
216
252
|
|
|
217
253
|
this.stats.bundledAgents++;
|
|
218
254
|
const statusIcon = isValid ? chalk.green('✓') : chalk.yellow('⚠');
|
|
@@ -249,6 +285,24 @@ class WebBundler {
|
|
|
249
285
|
const allAgentXmls = [];
|
|
250
286
|
const warnings = [];
|
|
251
287
|
|
|
288
|
+
// Check if team has a party CSV file (agent manifest)
|
|
289
|
+
const hasPartyFile = teamConfig.party && teamConfig.party.endsWith('.csv');
|
|
290
|
+
if (hasPartyFile) {
|
|
291
|
+
// Load the party CSV and add it as bmad/_cfg/agent-manifest.csv
|
|
292
|
+
const partyPath = path.join(path.dirname(teamPath), teamConfig.party.replace(/^\.\//, ''));
|
|
293
|
+
if (await fs.pathExists(partyPath)) {
|
|
294
|
+
const partyContent = await fs.readFile(partyPath, 'utf8');
|
|
295
|
+
// Process any placeholders in the CSV content
|
|
296
|
+
const processedPartyContent = this.processProjectRootReferences(partyContent);
|
|
297
|
+
// Wrap as text/csv to preserve raw CSV format in CDATA
|
|
298
|
+
const wrappedParty = this.wrapContentInXml(processedPartyContent, 'bmad/_cfg/agent-manifest.csv', 'text');
|
|
299
|
+
dependencies.set('bmad/_cfg/agent-manifest.csv', wrappedParty);
|
|
300
|
+
console.log(chalk.gray(` + Added agent manifest from: ${teamConfig.party}`));
|
|
301
|
+
} else {
|
|
302
|
+
console.log(chalk.yellow(` ⚠ Party file not found: ${partyPath}`));
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
252
306
|
// 1. First, always add the bmad-web-orchestrator (XML file only, no transformation needed)
|
|
253
307
|
const orchestratorXmlPath = path.join(this.sourceDir, 'core', 'agents', 'bmad-web-orchestrator.agent.xml');
|
|
254
308
|
|
|
@@ -316,6 +370,15 @@ class WebBundler {
|
|
|
316
370
|
let agentXml;
|
|
317
371
|
|
|
318
372
|
if (isYaml) {
|
|
373
|
+
// Check for webskip flag in YAML
|
|
374
|
+
const yamlContent = await fs.readFile(agentPath, 'utf8');
|
|
375
|
+
const agentYaml = yaml.load(yamlContent);
|
|
376
|
+
|
|
377
|
+
if (agentYaml?.agent?.webskip === true) {
|
|
378
|
+
console.log(chalk.gray(` ⊘ Skipped agent (webskip="true"): ${agentName}`));
|
|
379
|
+
continue;
|
|
380
|
+
}
|
|
381
|
+
|
|
319
382
|
// Build YAML agent in-memory - skip activation for team agents (orchestrator handles it)
|
|
320
383
|
const xmlContent = await this.yamlBuilder.buildFromYaml(agentPath, null, {
|
|
321
384
|
includeMetadata: false,
|
|
@@ -380,10 +443,13 @@ class WebBundler {
|
|
|
380
443
|
console.log(chalk.red(` ⚠ Invalid XML generated for team!`));
|
|
381
444
|
}
|
|
382
445
|
|
|
446
|
+
// Format XML for readability
|
|
447
|
+
const formattedBundle = this.formatXml(bundle);
|
|
448
|
+
|
|
383
449
|
// 6. Write bundle to output
|
|
384
450
|
const outputPath = path.join(this.outputDir, moduleName, 'teams', `${teamName}.xml`);
|
|
385
451
|
await fs.ensureDir(path.dirname(outputPath));
|
|
386
|
-
await fs.writeFile(outputPath,
|
|
452
|
+
await fs.writeFile(outputPath, formattedBundle, 'utf8');
|
|
387
453
|
|
|
388
454
|
const statusIcon = isValid ? chalk.green('✓') : chalk.yellow('⚠');
|
|
389
455
|
console.log(` ${statusIcon} Bundled team: ${teamName}.xml${isValid ? '' : chalk.yellow(' (invalid XML)')}`);
|
|
@@ -433,6 +499,99 @@ class WebBundler {
|
|
|
433
499
|
return parts.join('\n');
|
|
434
500
|
}
|
|
435
501
|
|
|
502
|
+
/**
|
|
503
|
+
* Vendor cross-module workflows for a module
|
|
504
|
+
* Scans source agent YAML files for workflow-install attributes and copies workflows
|
|
505
|
+
*/
|
|
506
|
+
async vendorCrossModuleWorkflows(moduleName) {
|
|
507
|
+
const modulePath = path.join(this.modulesPath, moduleName);
|
|
508
|
+
const agentsPath = path.join(modulePath, 'agents');
|
|
509
|
+
|
|
510
|
+
if (!(await fs.pathExists(agentsPath))) {
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
// Find all agent YAML files
|
|
515
|
+
const files = await fs.readdir(agentsPath);
|
|
516
|
+
const yamlFiles = files.filter((f) => f.endsWith('.agent.yaml'));
|
|
517
|
+
|
|
518
|
+
for (const agentFile of yamlFiles) {
|
|
519
|
+
const agentPath = path.join(agentsPath, agentFile);
|
|
520
|
+
const agentYaml = yaml.load(await fs.readFile(agentPath, 'utf8'));
|
|
521
|
+
|
|
522
|
+
const menuItems = agentYaml?.agent?.menu || [];
|
|
523
|
+
const workflowInstallItems = menuItems.filter((item) => item['workflow-install']);
|
|
524
|
+
|
|
525
|
+
for (const item of workflowInstallItems) {
|
|
526
|
+
const sourceWorkflowPath = item.workflow;
|
|
527
|
+
const installWorkflowPath = item['workflow-install'];
|
|
528
|
+
|
|
529
|
+
if (!sourceWorkflowPath || !installWorkflowPath) {
|
|
530
|
+
continue;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
// Parse paths to extract module and workflow location
|
|
534
|
+
// Support both {project-root}/bmad/... and {project-root}/{bmad_folder}/... patterns
|
|
535
|
+
const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/(?:\{bmad_folder\}|bmad)\/([^/]+)\/workflows\/(.+)/);
|
|
536
|
+
const installMatch = installWorkflowPath.match(/\{project-root\}\/(?:\{bmad_folder\}|bmad)\/([^/]+)\/workflows\/(.+)/);
|
|
537
|
+
|
|
538
|
+
if (!sourceMatch || !installMatch) {
|
|
539
|
+
continue;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
const sourceModule = sourceMatch[1];
|
|
543
|
+
const sourceWorkflowRelPath = sourceMatch[2];
|
|
544
|
+
const installModule = installMatch[1];
|
|
545
|
+
const installWorkflowRelPath = installMatch[2];
|
|
546
|
+
|
|
547
|
+
// Build actual filesystem paths
|
|
548
|
+
const actualSourceWorkflowPath = path.join(this.modulesPath, sourceModule, 'workflows', sourceWorkflowRelPath);
|
|
549
|
+
const actualDestWorkflowPath = path.join(this.modulesPath, installModule, 'workflows', installWorkflowRelPath);
|
|
550
|
+
|
|
551
|
+
// Check if source workflow exists
|
|
552
|
+
if (!(await fs.pathExists(actualSourceWorkflowPath))) {
|
|
553
|
+
console.log(chalk.yellow(` ⚠ Source workflow not found for vendoring: ${sourceWorkflowPath}`));
|
|
554
|
+
continue;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
// Check if destination already exists (skip if already vendored)
|
|
558
|
+
if (await fs.pathExists(actualDestWorkflowPath)) {
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
// Get workflow directory (workflow.yaml is in a directory with other files)
|
|
563
|
+
const sourceWorkflowDir = path.dirname(actualSourceWorkflowPath);
|
|
564
|
+
const destWorkflowDir = path.dirname(actualDestWorkflowPath);
|
|
565
|
+
|
|
566
|
+
// Copy entire workflow directory
|
|
567
|
+
await fs.copy(sourceWorkflowDir, destWorkflowDir, { overwrite: false });
|
|
568
|
+
|
|
569
|
+
// Update config_source in the vendored workflow.yaml
|
|
570
|
+
const workflowYamlPath = actualDestWorkflowPath;
|
|
571
|
+
if (await fs.pathExists(workflowYamlPath)) {
|
|
572
|
+
await this.updateWorkflowConfigSource(workflowYamlPath, installModule);
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
console.log(chalk.dim(` → Vendored workflow: ${sourceWorkflowRelPath} → ${installModule}/workflows/${installWorkflowRelPath}`));
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
/**
|
|
581
|
+
* Update config_source in a vendored workflow YAML file
|
|
582
|
+
*/
|
|
583
|
+
async updateWorkflowConfigSource(workflowYamlPath, newModuleName) {
|
|
584
|
+
let yamlContent = await fs.readFile(workflowYamlPath, 'utf8');
|
|
585
|
+
|
|
586
|
+
// Replace config_source with new module reference
|
|
587
|
+
// Support both old format (bmad) and new format ({bmad_folder})
|
|
588
|
+
const configSourcePattern = /config_source:\s*["']?\{project-root\}\/(?:\{bmad_folder\}|bmad)\/[^/]+\/config\.yaml["']?/g;
|
|
589
|
+
const newConfigSource = `config_source: "{project-root}/{bmad_folder}/${newModuleName}/config.yaml"`;
|
|
590
|
+
|
|
591
|
+
const updatedYaml = yamlContent.replaceAll(configSourcePattern, newConfigSource);
|
|
592
|
+
await fs.writeFile(workflowYamlPath, updatedYaml, 'utf8');
|
|
593
|
+
}
|
|
594
|
+
|
|
436
595
|
/**
|
|
437
596
|
* Pre-discover all agents and teams in a module for manifest generation
|
|
438
597
|
*/
|
|
@@ -452,6 +611,14 @@ class WebBundler {
|
|
|
452
611
|
let content;
|
|
453
612
|
|
|
454
613
|
if (file.endsWith('.agent.yaml')) {
|
|
614
|
+
// Check for webskip flag in YAML
|
|
615
|
+
const yamlContent = await fs.readFile(agentPath, 'utf8');
|
|
616
|
+
const agentYaml = yaml.load(yamlContent);
|
|
617
|
+
|
|
618
|
+
if (agentYaml?.agent?.webskip === true) {
|
|
619
|
+
continue; // Skip this agent
|
|
620
|
+
}
|
|
621
|
+
|
|
455
622
|
// Build YAML agent in-memory
|
|
456
623
|
content = await this.yamlBuilder.buildFromYaml(agentPath, null, {
|
|
457
624
|
includeMetadata: false,
|
|
@@ -539,6 +706,12 @@ class WebBundler {
|
|
|
539
706
|
const refs = new Set();
|
|
540
707
|
const workflowRefs = new Set();
|
|
541
708
|
|
|
709
|
+
// Remove agent id attribute to prevent it from being treated as a dependency
|
|
710
|
+
// The id attribute is just a metadata identifier, not a file reference
|
|
711
|
+
const xmlWithoutAgentId = xml.replace(/<agent[^>]*id="[^"]*"[^>]*>/, (match) => {
|
|
712
|
+
return match.replace(/\sid="[^"]*"/, '');
|
|
713
|
+
});
|
|
714
|
+
|
|
542
715
|
// Match various file reference patterns
|
|
543
716
|
const patterns = [
|
|
544
717
|
/exec="([^"]+)"/g, // Command exec paths
|
|
@@ -549,18 +722,27 @@ class WebBundler {
|
|
|
549
722
|
/system-prompts="([^"]+)"/g,
|
|
550
723
|
/tools="([^"]+)"/g,
|
|
551
724
|
/knowledge="([^"]+)"/g,
|
|
552
|
-
/{project-root}\/([^"'\s<>]+)/g,
|
|
725
|
+
/{project-root}\/([^"'\s<>]+)/g, // Legacy {project-root} paths
|
|
726
|
+
/\bbmad\/([^"'\s<>]+)/g, // Direct bmad/ paths (after {bmad_folder} replacement)
|
|
553
727
|
];
|
|
554
728
|
|
|
555
729
|
for (const pattern of patterns) {
|
|
556
730
|
let match;
|
|
557
|
-
|
|
731
|
+
// Use the XML with agent id removed for pattern matching
|
|
732
|
+
while ((match = pattern.exec(xmlWithoutAgentId)) !== null) {
|
|
558
733
|
let filePath = match[1];
|
|
559
734
|
// Remove {project-root} prefix if present
|
|
560
735
|
filePath = filePath.replace(/^{project-root}\//, '');
|
|
736
|
+
// Remove {bmad_folder} prefix if present (should be rare, mostly replaced already)
|
|
737
|
+
filePath = filePath.replace(/^{bmad_folder}\//, 'bmad/');
|
|
738
|
+
|
|
739
|
+
// For bmad/ pattern, prepend 'bmad/' since it was captured without it
|
|
740
|
+
if (pattern.source.includes(String.raw`\bbmad\/`)) {
|
|
741
|
+
filePath = 'bmad/' + filePath;
|
|
742
|
+
}
|
|
561
743
|
|
|
562
744
|
// Skip obvious placeholder/example paths
|
|
563
|
-
if (filePath && !filePath.includes('path/to/') && !filePath.includes('example')) {
|
|
745
|
+
if (filePath && !filePath.includes('path/to/') && !filePath.includes('example') && !filePath.includes('...')) {
|
|
564
746
|
refs.add(filePath);
|
|
565
747
|
}
|
|
566
748
|
}
|
|
@@ -575,9 +757,12 @@ class WebBundler {
|
|
|
575
757
|
|
|
576
758
|
for (const pattern of workflowPatterns) {
|
|
577
759
|
let match;
|
|
760
|
+
// Use original xml for workflow patterns (they don't conflict with agent id)
|
|
578
761
|
while ((match = pattern.exec(xml)) !== null) {
|
|
579
762
|
let workflowPath = match[1];
|
|
580
763
|
workflowPath = workflowPath.replace(/^{project-root}\//, '');
|
|
764
|
+
// Remove {bmad_folder} prefix if present and replace with bmad
|
|
765
|
+
workflowPath = workflowPath.replace(/^{bmad_folder}\//, 'bmad/');
|
|
581
766
|
|
|
582
767
|
// Skip obvious placeholder/example paths
|
|
583
768
|
if (workflowPath && workflowPath.endsWith('.yaml') && !workflowPath.includes('path/to/') && !workflowPath.includes('example')) {
|
|
@@ -595,16 +780,25 @@ class WebBundler {
|
|
|
595
780
|
removeSkippedWorkflowCommands(agentXml, skippedWorkflows) {
|
|
596
781
|
let modifiedXml = agentXml;
|
|
597
782
|
|
|
598
|
-
// For each skipped workflow, find and remove
|
|
783
|
+
// For each skipped workflow, find and remove menu items and commands
|
|
599
784
|
for (const workflowPath of skippedWorkflows) {
|
|
600
|
-
// Match: <c cmd="..." run-workflow="workflowPath">...</c>
|
|
601
785
|
// Need to escape special regex characters in the path
|
|
602
786
|
const escapedPath = workflowPath.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`);
|
|
603
787
|
|
|
604
|
-
// Pattern
|
|
605
|
-
|
|
788
|
+
// Pattern 1: Remove <item> tags with workflow attribute
|
|
789
|
+
// Match: <item cmd="..." workflow="workflowPath">...</item>
|
|
790
|
+
const itemWorkflowPattern = new RegExp(`\\s*<item\\s+[^>]*workflow="[^"]*${escapedPath}"[^>]*>.*?</item>\\s*`, 'gs');
|
|
791
|
+
modifiedXml = modifiedXml.replace(itemWorkflowPattern, '');
|
|
792
|
+
|
|
793
|
+
// Pattern 2: Remove <item> tags with run-workflow attribute
|
|
794
|
+
// Match: <item cmd="..." run-workflow="workflowPath">...</item>
|
|
795
|
+
const itemRunWorkflowPattern = new RegExp(`\\s*<item\\s+[^>]*run-workflow="[^"]*${escapedPath}"[^>]*>.*?</item>\\s*`, 'gs');
|
|
796
|
+
modifiedXml = modifiedXml.replace(itemRunWorkflowPattern, '');
|
|
606
797
|
|
|
607
|
-
|
|
798
|
+
// Pattern 3: Remove <c> tags with run-workflow attribute (legacy)
|
|
799
|
+
// Match: <c cmd="..." run-workflow="workflowPath">...</c>
|
|
800
|
+
const cPattern = new RegExp(`\\s*<c\\s+[^>]*run-workflow="[^"]*${escapedPath}"[^>]*>.*?</c>\\s*`, 'gs');
|
|
801
|
+
modifiedXml = modifiedXml.replace(cPattern, '');
|
|
608
802
|
}
|
|
609
803
|
|
|
610
804
|
return modifiedXml;
|
|
@@ -614,6 +808,11 @@ class WebBundler {
|
|
|
614
808
|
* Process a file dependency recursively
|
|
615
809
|
*/
|
|
616
810
|
async processFileDependency(filePath, dependencies, processed, moduleName, warnings = []) {
|
|
811
|
+
// Skip workflow YAML files - they're handled by processWorkflowDependency
|
|
812
|
+
if (filePath.includes('/workflow') && filePath.endsWith('workflow.yaml')) {
|
|
813
|
+
return;
|
|
814
|
+
}
|
|
815
|
+
|
|
617
816
|
// Skip if already processed
|
|
618
817
|
if (processed.has(filePath)) {
|
|
619
818
|
return;
|
|
@@ -639,6 +838,13 @@ class WebBundler {
|
|
|
639
838
|
return;
|
|
640
839
|
}
|
|
641
840
|
|
|
841
|
+
// Skip if it's a directory
|
|
842
|
+
const stats = await fs.stat(actualPath);
|
|
843
|
+
if (stats.isDirectory()) {
|
|
844
|
+
// Silently skip directories - they're not file dependencies
|
|
845
|
+
return;
|
|
846
|
+
}
|
|
847
|
+
|
|
642
848
|
// Read file content
|
|
643
849
|
let content = await fs.readFile(actualPath, 'utf8');
|
|
644
850
|
|
|
@@ -655,7 +861,8 @@ class WebBundler {
|
|
|
655
861
|
const deps = depMatch[1].match(/['"]([^'"]+)['"]/g);
|
|
656
862
|
if (deps) {
|
|
657
863
|
for (const dep of deps) {
|
|
658
|
-
|
|
864
|
+
let depPath = dep.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
|
|
865
|
+
depPath = depPath.replace(/^{bmad_folder}\//, 'bmad/');
|
|
659
866
|
if (depPath && !processed.has(depPath)) {
|
|
660
867
|
await this.processFileDependency(depPath, dependencies, processed, moduleName, warnings);
|
|
661
868
|
}
|
|
@@ -668,7 +875,8 @@ class WebBundler {
|
|
|
668
875
|
const templates = templateMatch[1].match(/['"]([^'"]+)['"]/g);
|
|
669
876
|
if (templates) {
|
|
670
877
|
for (const template of templates) {
|
|
671
|
-
|
|
878
|
+
let templatePath = template.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
|
|
879
|
+
templatePath = templatePath.replace(/^{bmad_folder}\//, 'bmad/');
|
|
672
880
|
if (templatePath && !processed.has(templatePath)) {
|
|
673
881
|
await this.processFileDependency(templatePath, dependencies, processed, moduleName, warnings);
|
|
674
882
|
}
|
|
@@ -856,8 +1064,13 @@ class WebBundler {
|
|
|
856
1064
|
bundleYamlContent = yamlContent;
|
|
857
1065
|
}
|
|
858
1066
|
|
|
1067
|
+
// Process {project-root} and {bmad_folder} references in the YAML content
|
|
1068
|
+
bundleYamlContent = this.processProjectRootReferences(bundleYamlContent);
|
|
1069
|
+
|
|
859
1070
|
// Include the YAML file with only web_bundle content, wrapped in XML
|
|
860
|
-
|
|
1071
|
+
// Process the workflow path to create a clean ID
|
|
1072
|
+
let yamlId = workflowPath.replace(/^{project-root}\//, '');
|
|
1073
|
+
yamlId = yamlId.replace(/^{bmad_folder}\//, 'bmad/');
|
|
861
1074
|
const wrappedYaml = this.wrapContentInXml(bundleYamlContent, yamlId, 'yaml');
|
|
862
1075
|
dependencies.set(yamlId, wrappedYaml);
|
|
863
1076
|
|
|
@@ -874,14 +1087,19 @@ class WebBundler {
|
|
|
874
1087
|
const bundleFiles = workflowConfig.web_bundle.web_bundle_files;
|
|
875
1088
|
|
|
876
1089
|
for (const bundleFilePath of bundleFiles) {
|
|
877
|
-
if
|
|
1090
|
+
// Process the file path to create a clean ID for checking if already processed
|
|
1091
|
+
let cleanFilePath = bundleFilePath.replace(/^{project-root}\//, '');
|
|
1092
|
+
cleanFilePath = cleanFilePath.replace(/^{bmad_folder}\//, 'bmad/');
|
|
1093
|
+
|
|
1094
|
+
if (processed.has(cleanFilePath)) {
|
|
878
1095
|
continue;
|
|
879
1096
|
}
|
|
880
1097
|
|
|
881
1098
|
const bundleActualPath = this.resolveFilePath(bundleFilePath, moduleName);
|
|
882
1099
|
|
|
883
1100
|
if (!bundleActualPath || !(await fs.pathExists(bundleActualPath))) {
|
|
884
|
-
warnings
|
|
1101
|
+
// Use the cleaned path in warnings (with {bmad_folder} replaced)
|
|
1102
|
+
warnings.push(cleanFilePath);
|
|
885
1103
|
continue;
|
|
886
1104
|
}
|
|
887
1105
|
|
|
@@ -891,15 +1109,18 @@ class WebBundler {
|
|
|
891
1109
|
await this.processWorkflowDependency(bundleFilePath, dependencies, processed, moduleName, warnings);
|
|
892
1110
|
} else {
|
|
893
1111
|
// Regular file - process normally
|
|
894
|
-
processed.add(
|
|
1112
|
+
processed.add(cleanFilePath);
|
|
895
1113
|
|
|
896
1114
|
// Read the file content
|
|
897
|
-
|
|
1115
|
+
let fileContent = await fs.readFile(bundleActualPath, 'utf8');
|
|
898
1116
|
const fileExt = path.extname(bundleActualPath).toLowerCase().replace('.', '');
|
|
899
1117
|
|
|
1118
|
+
// Process {project-root} references before wrapping
|
|
1119
|
+
fileContent = this.processProjectRootReferences(fileContent);
|
|
1120
|
+
|
|
900
1121
|
// Wrap in XML with proper escaping
|
|
901
|
-
const wrappedContent = this.wrapContentInXml(fileContent,
|
|
902
|
-
dependencies.set(
|
|
1122
|
+
const wrappedContent = this.wrapContentInXml(fileContent, cleanFilePath, fileExt);
|
|
1123
|
+
dependencies.set(cleanFilePath, wrappedContent);
|
|
903
1124
|
}
|
|
904
1125
|
}
|
|
905
1126
|
}
|
|
@@ -925,7 +1146,9 @@ class WebBundler {
|
|
|
925
1146
|
return;
|
|
926
1147
|
}
|
|
927
1148
|
|
|
928
|
-
|
|
1149
|
+
let fileContent = await fs.readFile(actualPath, 'utf8');
|
|
1150
|
+
// Process {project-root} and {bmad_folder} references
|
|
1151
|
+
fileContent = this.processProjectRootReferences(fileContent);
|
|
929
1152
|
const wrappedContent = this.wrapContentInXml(fileContent, coreWorkflowPath, 'xml');
|
|
930
1153
|
dependencies.set(coreWorkflowPath, wrappedContent);
|
|
931
1154
|
}
|
|
@@ -934,7 +1157,7 @@ class WebBundler {
|
|
|
934
1157
|
* Include advanced elicitation files
|
|
935
1158
|
*/
|
|
936
1159
|
async includeAdvancedElicitationFiles(dependencies, processed, moduleName, warnings = []) {
|
|
937
|
-
const elicitationFiles = ['bmad/core/tasks/
|
|
1160
|
+
const elicitationFiles = ['bmad/core/tasks/advanced-elicitation.xml', 'bmad/core/tasks/advanced-elicitation-methods.csv'];
|
|
938
1161
|
|
|
939
1162
|
for (const filePath of elicitationFiles) {
|
|
940
1163
|
if (processed.has(filePath)) {
|
|
@@ -949,7 +1172,9 @@ class WebBundler {
|
|
|
949
1172
|
continue;
|
|
950
1173
|
}
|
|
951
1174
|
|
|
952
|
-
|
|
1175
|
+
let fileContent = await fs.readFile(actualPath, 'utf8');
|
|
1176
|
+
// Process {project-root} and {bmad_folder} references
|
|
1177
|
+
fileContent = this.processProjectRootReferences(fileContent);
|
|
953
1178
|
const fileExt = path.extname(actualPath).toLowerCase().replace('.', '');
|
|
954
1179
|
const wrappedContent = this.wrapContentInXml(fileContent, filePath, fileExt);
|
|
955
1180
|
dependencies.set(filePath, wrappedContent);
|
|
@@ -982,6 +1207,8 @@ class WebBundler {
|
|
|
982
1207
|
async processWildcardDependency(pattern, dependencies, processed, moduleName, warnings = []) {
|
|
983
1208
|
// Remove {project-root} prefix
|
|
984
1209
|
pattern = pattern.replace(/^{project-root}\//, '');
|
|
1210
|
+
// Replace {bmad_folder} with bmad
|
|
1211
|
+
pattern = pattern.replace(/^{bmad_folder}\//, 'bmad/');
|
|
985
1212
|
|
|
986
1213
|
// Get directory and file pattern
|
|
987
1214
|
const lastSlash = pattern.lastIndexOf('/');
|
|
@@ -1049,6 +1276,9 @@ class WebBundler {
|
|
|
1049
1276
|
resolveFilePath(filePath, moduleName) {
|
|
1050
1277
|
// Remove {project-root} prefix
|
|
1051
1278
|
filePath = filePath.replace(/^{project-root}\//, '');
|
|
1279
|
+
// Replace {bmad_folder} with bmad
|
|
1280
|
+
filePath = filePath.replace(/^{bmad_folder}\//, 'bmad/');
|
|
1281
|
+
filePath = filePath.replace(/^{bmad_folder}$/, 'bmad');
|
|
1052
1282
|
|
|
1053
1283
|
// Check temp directory first for _cfg files
|
|
1054
1284
|
if (filePath.startsWith('bmad/_cfg/')) {
|
|
@@ -1115,13 +1345,15 @@ class WebBundler {
|
|
|
1115
1345
|
}
|
|
1116
1346
|
|
|
1117
1347
|
/**
|
|
1118
|
-
* Process and remove {project-root} references
|
|
1348
|
+
* Process and remove {project-root} references and replace {bmad_folder} with bmad
|
|
1119
1349
|
*/
|
|
1120
1350
|
processProjectRootReferences(content) {
|
|
1121
1351
|
// Remove {project-root}/ prefix (with slash)
|
|
1122
1352
|
content = content.replaceAll('{project-root}/', '');
|
|
1123
1353
|
// Also remove {project-root} without slash
|
|
1124
1354
|
content = content.replaceAll('{project-root}', '');
|
|
1355
|
+
// Replace {bmad_folder} with bmad
|
|
1356
|
+
content = content.replaceAll('{bmad_folder}', 'bmad');
|
|
1125
1357
|
return content;
|
|
1126
1358
|
}
|
|
1127
1359
|
|
|
@@ -1425,6 +1657,63 @@ class WebBundler {
|
|
|
1425
1657
|
}
|
|
1426
1658
|
}
|
|
1427
1659
|
|
|
1660
|
+
/**
|
|
1661
|
+
* Format XML content for readability
|
|
1662
|
+
*/
|
|
1663
|
+
formatXml(xml) {
|
|
1664
|
+
const TAB = ' '; // 2 spaces
|
|
1665
|
+
let result = '';
|
|
1666
|
+
let depth = 0;
|
|
1667
|
+
|
|
1668
|
+
// Split by tags while preserving them
|
|
1669
|
+
const parts = xml.split(/(<[^>]+>)/g);
|
|
1670
|
+
|
|
1671
|
+
for (let i = 0; i < parts.length; i++) {
|
|
1672
|
+
const part = parts[i];
|
|
1673
|
+
if (!part) continue;
|
|
1674
|
+
|
|
1675
|
+
if (part.startsWith('<?xml')) {
|
|
1676
|
+
// XML declaration - no indent
|
|
1677
|
+
result += part + '\n';
|
|
1678
|
+
} else if (part.startsWith('<!--')) {
|
|
1679
|
+
// Comment
|
|
1680
|
+
result += TAB.repeat(depth) + part + '\n';
|
|
1681
|
+
} else if (part.startsWith('</')) {
|
|
1682
|
+
// Closing tag - unindent first
|
|
1683
|
+
depth = Math.max(0, depth - 1);
|
|
1684
|
+
result += TAB.repeat(depth) + part + '\n';
|
|
1685
|
+
} else if (part.startsWith('<')) {
|
|
1686
|
+
// Opening or self-closing tag
|
|
1687
|
+
const isSelfClosing = part.endsWith('/>');
|
|
1688
|
+
const tagName = part.match(/<(\w+)/)?.[1];
|
|
1689
|
+
|
|
1690
|
+
// Check if next part is simple text content
|
|
1691
|
+
const nextPart = parts[i + 1];
|
|
1692
|
+
const hasSimpleContent = nextPart && !nextPart.startsWith('<') && nextPart.trim().length > 0 && nextPart.trim().length <= 100;
|
|
1693
|
+
|
|
1694
|
+
if (hasSimpleContent && parts[i + 2] && parts[i + 2] === `</${tagName}>`) {
|
|
1695
|
+
// Simple tag with inline content: <tag>content</tag>
|
|
1696
|
+
result += TAB.repeat(depth) + part + nextPart.trim() + parts[i + 2] + '\n';
|
|
1697
|
+
i += 2; // Skip content and closing tag
|
|
1698
|
+
} else {
|
|
1699
|
+
// Multi-line tag
|
|
1700
|
+
result += TAB.repeat(depth) + part + '\n';
|
|
1701
|
+
if (!isSelfClosing) {
|
|
1702
|
+
depth++;
|
|
1703
|
+
}
|
|
1704
|
+
}
|
|
1705
|
+
} else {
|
|
1706
|
+
// Text content between tags
|
|
1707
|
+
const trimmed = part.trim();
|
|
1708
|
+
if (trimmed) {
|
|
1709
|
+
result += TAB.repeat(depth) + trimmed + '\n';
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
return result;
|
|
1715
|
+
}
|
|
1716
|
+
|
|
1428
1717
|
/**
|
|
1429
1718
|
* Display summary statistics
|
|
1430
1719
|
*/
|
|
@@ -1436,7 +1725,9 @@ class WebBundler {
|
|
|
1436
1725
|
console.log(chalk.bold('Bundle Statistics:'));
|
|
1437
1726
|
console.log(` Total agents found: ${this.stats.totalAgents}`);
|
|
1438
1727
|
console.log(` Successfully bundled: ${chalk.green(this.stats.bundledAgents)}`);
|
|
1439
|
-
|
|
1728
|
+
if (this.stats.skippedAgents > 0) {
|
|
1729
|
+
console.log(` Skipped (webskip/bundle): ${chalk.gray(this.stats.skippedAgents)}`);
|
|
1730
|
+
}
|
|
1440
1731
|
|
|
1441
1732
|
if (this.stats.failedAgents > 0) {
|
|
1442
1733
|
console.log(` Failed to bundle: ${chalk.red(this.stats.failedAgents)}`);
|
|
@@ -1447,7 +1738,10 @@ class WebBundler {
|
|
|
1447
1738
|
}
|
|
1448
1739
|
|
|
1449
1740
|
// Display warnings summary
|
|
1450
|
-
if
|
|
1741
|
+
// Check if there are actually any warnings with content
|
|
1742
|
+
const hasActualWarnings = this.stats.warnings.some((w) => w && w.warnings && w.warnings.length > 0);
|
|
1743
|
+
|
|
1744
|
+
if (hasActualWarnings) {
|
|
1451
1745
|
console.log(chalk.yellow('\n⚠ Missing Dependencies by Agent:'));
|
|
1452
1746
|
|
|
1453
1747
|
// Group and display warnings by agent
|
|
@@ -1461,6 +1755,8 @@ class WebBundler {
|
|
|
1461
1755
|
}
|
|
1462
1756
|
}
|
|
1463
1757
|
}
|
|
1758
|
+
} else {
|
|
1759
|
+
console.log(chalk.green('\n✓ No missing dependencies'));
|
|
1464
1760
|
}
|
|
1465
1761
|
|
|
1466
1762
|
// Final status
|