bmad-method 4.37.0 → 4.39.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
- package/.github/ISSUE_TEMPLATE/feature_request.md +3 -3
- package/.github/workflows/discord.yaml +11 -2
- package/.github/workflows/format-check.yaml +42 -0
- package/.github/workflows/manual-release.yaml +173 -0
- package/.husky/pre-commit +3 -0
- package/.vscode/settings.json +26 -1
- package/CHANGELOG.md +2 -23
- package/README.md +2 -0
- package/bmad-core/agent-teams/team-all.yaml +1 -1
- package/bmad-core/agents/analyst.md +16 -15
- package/bmad-core/agents/architect.md +11 -11
- package/bmad-core/agents/bmad-master.md +23 -22
- package/bmad-core/agents/bmad-orchestrator.md +13 -17
- package/bmad-core/agents/dev.md +14 -11
- package/bmad-core/agents/pm.md +15 -14
- package/bmad-core/agents/po.md +9 -8
- package/bmad-core/agents/qa.md +42 -22
- package/bmad-core/agents/sm.md +7 -6
- package/bmad-core/agents/ux-expert.md +6 -5
- package/bmad-core/core-config.yaml +2 -0
- package/bmad-core/data/bmad-kb.md +1 -1
- package/bmad-core/data/test-levels-framework.md +146 -0
- package/bmad-core/data/test-priorities-matrix.md +172 -0
- package/bmad-core/tasks/apply-qa-fixes.md +148 -0
- package/bmad-core/tasks/facilitate-brainstorming-session.md +1 -1
- package/bmad-core/tasks/nfr-assess.md +343 -0
- package/bmad-core/tasks/qa-gate.md +161 -0
- package/bmad-core/tasks/review-story.md +234 -74
- package/bmad-core/tasks/risk-profile.md +353 -0
- package/bmad-core/tasks/test-design.md +174 -0
- package/bmad-core/tasks/trace-requirements.md +264 -0
- package/bmad-core/templates/architecture-tmpl.yaml +49 -49
- package/bmad-core/templates/brainstorming-output-tmpl.yaml +5 -5
- package/bmad-core/templates/brownfield-architecture-tmpl.yaml +31 -31
- package/bmad-core/templates/brownfield-prd-tmpl.yaml +13 -13
- package/bmad-core/templates/competitor-analysis-tmpl.yaml +19 -6
- package/bmad-core/templates/front-end-architecture-tmpl.yaml +21 -9
- package/bmad-core/templates/front-end-spec-tmpl.yaml +24 -24
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +122 -104
- package/bmad-core/templates/market-research-tmpl.yaml +2 -2
- package/bmad-core/templates/prd-tmpl.yaml +9 -9
- package/bmad-core/templates/project-brief-tmpl.yaml +4 -4
- package/bmad-core/templates/qa-gate-tmpl.yaml +102 -0
- package/bmad-core/templates/story-tmpl.yaml +12 -12
- package/bmad-core/workflows/brownfield-fullstack.yaml +9 -9
- package/bmad-core/workflows/brownfield-service.yaml +1 -1
- package/bmad-core/workflows/brownfield-ui.yaml +1 -1
- package/bmad-core/workflows/greenfield-fullstack.yaml +1 -1
- package/bmad-core/workflows/greenfield-service.yaml +1 -1
- package/bmad-core/workflows/greenfield-ui.yaml +1 -1
- package/common/utils/bmad-doc-template.md +5 -5
- package/dist/agents/analyst.txt +1086 -1079
- package/dist/agents/architect.txt +1534 -1526
- package/dist/agents/bmad-master.txt +646 -632
- package/dist/agents/bmad-orchestrator.txt +40 -18
- package/dist/agents/dev.txt +158 -19
- package/dist/agents/pm.txt +1082 -1107
- package/dist/agents/po.txt +314 -332
- package/dist/agents/qa.txt +1754 -151
- package/dist/agents/sm.txt +88 -98
- package/dist/agents/ux-expert.txt +80 -87
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +109 -146
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +75 -86
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +41 -48
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +1903 -1941
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +15 -50
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +149 -195
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -15
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +20 -37
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +2660 -2752
- package/dist/expansion-packs/bmad-creative-writing/agents/beta-reader.txt +871 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/book-critic.txt +78 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/character-psychologist.txt +839 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/cover-designer.txt +85 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/dialog-specialist.txt +861 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/editor.txt +796 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/genre-specialist.txt +927 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/narrative-designer.txt +842 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/plot-architect.txt +1126 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/world-builder.txt +864 -0
- package/dist/expansion-packs/bmad-creative-writing/teams/agent-team.txt +5917 -0
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +25 -27
- package/dist/teams/team-all.txt +5541 -3768
- package/dist/teams/team-fullstack.txt +3014 -2987
- package/dist/teams/team-ide-minimal.txt +2219 -469
- package/dist/teams/team-no-ui.txt +2993 -2966
- package/docs/enhanced-ide-development-workflow.md +220 -15
- package/docs/user-guide.md +271 -18
- package/docs/versioning-and-releases.md +122 -44
- package/docs/working-in-the-brownfield.md +264 -31
- package/eslint.config.mjs +119 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +4 -4
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +26 -28
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +50 -50
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +24 -24
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +42 -42
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +3 -3
- package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +1 -1
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +23 -23
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +63 -63
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +20 -20
- package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +5 -5
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +1 -1
- package/expansion-packs/bmad-creative-writing/README.md +132 -0
- package/expansion-packs/bmad-creative-writing/agent-teams/agent-team.yaml +19 -0
- package/expansion-packs/bmad-creative-writing/agents/beta-reader.md +91 -0
- package/expansion-packs/bmad-creative-writing/agents/book-critic.md +35 -0
- package/expansion-packs/bmad-creative-writing/agents/character-psychologist.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/cover-designer.md +41 -0
- package/expansion-packs/bmad-creative-writing/agents/dialog-specialist.md +89 -0
- package/expansion-packs/bmad-creative-writing/agents/editor.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/genre-specialist.md +92 -0
- package/expansion-packs/bmad-creative-writing/agents/narrative-designer.md +90 -0
- package/expansion-packs/bmad-creative-writing/agents/plot-architect.md +92 -0
- package/expansion-packs/bmad-creative-writing/agents/world-builder.md +91 -0
- package/expansion-packs/bmad-creative-writing/checklists/beta-feedback-closure-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/character-consistency-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/comedic-timing-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/cyberpunk-aesthetic-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/ebook-formatting-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/epic-poetry-meter-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/fantasy-magic-system-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/foreshadowing-payoff-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/genre-tropes-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/historical-accuracy-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/horror-suspense-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/kdp-cover-ready-checklist.md +18 -0
- package/expansion-packs/bmad-creative-writing/checklists/line-edit-quality-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/marketing-copy-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/mystery-clue-trail-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/orbital-mechanics-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/plot-structure-checklist.md +49 -0
- package/expansion-packs/bmad-creative-writing/checklists/publication-readiness-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/romance-emotional-beats-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/scene-quality-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/scifi-technology-plausibility-checklist.md +15 -0
- package/expansion-packs/bmad-creative-writing/checklists/sensitivity-representation-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/steampunk-gadget-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/thriller-pacing-stakes-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/timeline-continuity-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/world-building-continuity-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/checklists/ya-appropriateness-checklist.md +16 -0
- package/expansion-packs/bmad-creative-writing/config.yaml +11 -0
- package/expansion-packs/bmad-creative-writing/data/bmad-kb.md +197 -0
- package/expansion-packs/bmad-creative-writing/data/story-structures.md +58 -0
- package/expansion-packs/bmad-creative-writing/docs/brief.md +183 -0
- package/expansion-packs/bmad-creative-writing/tasks/advanced-elicitation.md +117 -0
- package/expansion-packs/bmad-creative-writing/tasks/analyze-reader-feedback.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/analyze-story-structure.md +55 -0
- package/expansion-packs/bmad-creative-writing/tasks/assemble-kdp-package.md +22 -0
- package/expansion-packs/bmad-creative-writing/tasks/brainstorm-premise.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/build-world.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/character-depth-pass.md +15 -0
- package/expansion-packs/bmad-creative-writing/tasks/create-doc.md +101 -0
- package/expansion-packs/bmad-creative-writing/tasks/create-draft-section.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/critical-review.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/develop-character.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/execute-checklist.md +93 -0
- package/expansion-packs/bmad-creative-writing/tasks/expand-premise.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/expand-synopsis.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/final-polish.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-cover-brief.md +18 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-cover-prompts.md +19 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-scene-list.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/incorporate-feedback.md +18 -0
- package/expansion-packs/bmad-creative-writing/tasks/outline-scenes.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/provide-feedback.md +17 -0
- package/expansion-packs/bmad-creative-writing/tasks/publish-chapter.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/quick-feedback.md +15 -0
- package/expansion-packs/bmad-creative-writing/tasks/select-next-arc.md +16 -0
- package/expansion-packs/bmad-creative-writing/tasks/workshop-dialog.md +51 -0
- package/expansion-packs/bmad-creative-writing/templates/beta-feedback-form.yaml +96 -0
- package/expansion-packs/bmad-creative-writing/templates/chapter-draft-tmpl.yaml +81 -0
- package/expansion-packs/bmad-creative-writing/templates/character-profile-tmpl.yaml +92 -0
- package/expansion-packs/bmad-creative-writing/templates/cover-design-brief-tmpl.yaml +97 -0
- package/expansion-packs/bmad-creative-writing/templates/premise-brief-tmpl.yaml +77 -0
- package/expansion-packs/bmad-creative-writing/templates/scene-list-tmpl.yaml +54 -0
- package/expansion-packs/bmad-creative-writing/templates/story-outline-tmpl.yaml +96 -0
- package/expansion-packs/bmad-creative-writing/templates/world-guide-tmpl.yaml +88 -0
- package/expansion-packs/bmad-creative-writing/workflows/book-cover-design-workflow.md +176 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-greenfield-workflow.yaml +58 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-serial-workflow.yaml +51 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-snowflake-workflow.yaml +69 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-writing.yaml +92 -0
- package/expansion-packs/bmad-creative-writing/workflows/screenplay-development.yaml +86 -0
- package/expansion-packs/bmad-creative-writing/workflows/series-planning.yaml +79 -0
- package/expansion-packs/bmad-creative-writing/workflows/short-story-creation.yaml +65 -0
- package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +20 -20
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +7 -7
- package/package.json +62 -39
- package/prettier.config.mjs +32 -0
- package/sync-version.sh +23 -0
- package/tools/bmad-npx-wrapper.js +10 -10
- package/tools/builders/web-builder.js +124 -130
- package/tools/bump-all-versions.js +42 -33
- package/tools/bump-expansion-version.js +23 -16
- package/tools/cli.js +10 -12
- package/tools/flattener/aggregate.js +10 -10
- package/tools/flattener/binary.js +44 -17
- package/tools/flattener/discovery.js +19 -18
- package/tools/flattener/files.js +6 -6
- package/tools/flattener/ignoreRules.js +125 -125
- package/tools/flattener/main.js +426 -70
- package/tools/flattener/projectRoot.js +186 -25
- package/tools/flattener/prompts.js +9 -9
- package/tools/flattener/stats.helpers.js +395 -0
- package/tools/flattener/stats.js +64 -14
- package/tools/flattener/test-matrix.js +413 -0
- package/tools/flattener/xml.js +33 -31
- package/tools/installer/bin/bmad.js +156 -113
- package/tools/installer/config/ide-agent-config.yaml +1 -1
- package/tools/installer/config/install.config.yaml +13 -3
- package/tools/installer/lib/config-loader.js +46 -42
- package/tools/installer/lib/file-manager.js +91 -113
- package/tools/installer/lib/ide-base-setup.js +57 -56
- package/tools/installer/lib/ide-setup.js +545 -399
- package/tools/installer/lib/installer.js +875 -714
- package/tools/installer/lib/memory-profiler.js +54 -53
- package/tools/installer/lib/module-manager.js +19 -15
- package/tools/installer/lib/resource-locator.js +26 -28
- package/tools/installer/package.json +19 -19
- package/tools/lib/dependency-resolver.js +26 -30
- package/tools/lib/yaml-utils.js +7 -7
- package/tools/preview-release-notes.js +66 -0
- package/tools/shared/bannerArt.js +3 -3
- package/tools/sync-installer-version.js +7 -9
- package/tools/update-expansion-version.js +14 -15
- package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
- package/tools/version-bump.js +41 -26
- package/tools/yaml-format.js +56 -43
- package/.github/workflows/release.yaml +0 -60
- package/.releaserc.json +0 -21
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +0 -102
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash copy.txt +0 -13
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash.txt +0 -13
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.2 Agent Development Kit Installation/1.2.2 - Basic Project Structure - txt.txt +0 -25
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.1 - settings.py +0 -34
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.2 - main.py - Base Application.py +0 -70
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +0 -26
- package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +0 -109
- package/tools/semantic-release-sync-installer.js +0 -30
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* Reduces duplication and provides shared methods
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
const path = require(
|
|
7
|
-
const fs = require(
|
|
8
|
-
const yaml = require(
|
|
9
|
-
const chalk = require(
|
|
10
|
-
const fileManager = require(
|
|
11
|
-
const resourceLocator = require(
|
|
12
|
-
const { extractYamlFromAgent } = require(
|
|
6
|
+
const path = require('node:path');
|
|
7
|
+
const fs = require('fs-extra');
|
|
8
|
+
const yaml = require('js-yaml');
|
|
9
|
+
const chalk = require('chalk').default || require('chalk');
|
|
10
|
+
const fileManager = require('./file-manager');
|
|
11
|
+
const resourceLocator = require('./resource-locator');
|
|
12
|
+
const { extractYamlFromAgent } = require('../../lib/yaml-utils');
|
|
13
13
|
|
|
14
14
|
class BaseIdeSetup {
|
|
15
15
|
constructor() {
|
|
@@ -27,19 +27,19 @@ class BaseIdeSetup {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
const allAgents = new Set();
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
// Get core agents
|
|
32
32
|
const coreAgents = await this.getCoreAgentIds(installDir);
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
for (const id of coreAgents) allAgents.add(id);
|
|
34
|
+
|
|
35
35
|
// Get expansion pack agents
|
|
36
36
|
const expansionPacks = await this.getInstalledExpansionPacks(installDir);
|
|
37
37
|
for (const pack of expansionPacks) {
|
|
38
38
|
const packAgents = await this.getExpansionPackAgents(pack.path);
|
|
39
|
-
|
|
39
|
+
for (const id of packAgents) allAgents.add(id);
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
const result =
|
|
41
|
+
|
|
42
|
+
const result = [...allAgents];
|
|
43
43
|
this._agentCache.set(cacheKey, result);
|
|
44
44
|
return result;
|
|
45
45
|
}
|
|
@@ -50,14 +50,14 @@ class BaseIdeSetup {
|
|
|
50
50
|
async getCoreAgentIds(installDir) {
|
|
51
51
|
const coreAgents = [];
|
|
52
52
|
const corePaths = [
|
|
53
|
-
path.join(installDir,
|
|
54
|
-
path.join(installDir,
|
|
53
|
+
path.join(installDir, '.bmad-core', 'agents'),
|
|
54
|
+
path.join(installDir, 'bmad-core', 'agents'),
|
|
55
55
|
];
|
|
56
56
|
|
|
57
57
|
for (const agentsDir of corePaths) {
|
|
58
58
|
if (await fileManager.pathExists(agentsDir)) {
|
|
59
|
-
const files = await resourceLocator.findFiles(
|
|
60
|
-
coreAgents.push(...files.map(file => path.basename(file,
|
|
59
|
+
const files = await resourceLocator.findFiles('*.md', { cwd: agentsDir });
|
|
60
|
+
coreAgents.push(...files.map((file) => path.basename(file, '.md')));
|
|
61
61
|
break; // Use first found
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -76,13 +76,13 @@ class BaseIdeSetup {
|
|
|
76
76
|
|
|
77
77
|
// Use resource locator for efficient path finding
|
|
78
78
|
let agentPath = await resourceLocator.getAgentPath(agentId);
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
if (!agentPath) {
|
|
81
81
|
// Check installation-specific paths
|
|
82
82
|
const possiblePaths = [
|
|
83
|
-
path.join(installDir,
|
|
84
|
-
path.join(installDir,
|
|
85
|
-
path.join(installDir,
|
|
83
|
+
path.join(installDir, '.bmad-core', 'agents', `${agentId}.md`),
|
|
84
|
+
path.join(installDir, 'bmad-core', 'agents', `${agentId}.md`),
|
|
85
|
+
path.join(installDir, 'common', 'agents', `${agentId}.md`),
|
|
86
86
|
];
|
|
87
87
|
|
|
88
88
|
for (const testPath of possiblePaths) {
|
|
@@ -113,7 +113,7 @@ class BaseIdeSetup {
|
|
|
113
113
|
const metadata = yaml.load(yamlContent);
|
|
114
114
|
return metadata.agent_name || agentId;
|
|
115
115
|
}
|
|
116
|
-
} catch
|
|
116
|
+
} catch {
|
|
117
117
|
// Fallback to agent ID
|
|
118
118
|
}
|
|
119
119
|
return agentId;
|
|
@@ -129,31 +129,31 @@ class BaseIdeSetup {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
const expansionPacks = [];
|
|
132
|
-
|
|
132
|
+
|
|
133
133
|
// Check for dot-prefixed expansion packs
|
|
134
|
-
const dotExpansions = await resourceLocator.findFiles(
|
|
135
|
-
|
|
134
|
+
const dotExpansions = await resourceLocator.findFiles('.bmad-*', { cwd: installDir });
|
|
135
|
+
|
|
136
136
|
for (const dotExpansion of dotExpansions) {
|
|
137
|
-
if (dotExpansion !==
|
|
137
|
+
if (dotExpansion !== '.bmad-core') {
|
|
138
138
|
const packPath = path.join(installDir, dotExpansion);
|
|
139
|
-
const packName = dotExpansion.
|
|
139
|
+
const packName = dotExpansion.slice(1); // remove the dot
|
|
140
140
|
expansionPacks.push({
|
|
141
141
|
name: packName,
|
|
142
|
-
path: packPath
|
|
142
|
+
path: packPath,
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
|
|
146
|
+
|
|
147
147
|
// Check other dot folders that have config.yaml
|
|
148
|
-
const allDotFolders = await resourceLocator.findFiles(
|
|
148
|
+
const allDotFolders = await resourceLocator.findFiles('.*', { cwd: installDir });
|
|
149
149
|
for (const folder of allDotFolders) {
|
|
150
|
-
if (!folder.startsWith(
|
|
150
|
+
if (!folder.startsWith('.bmad-') && folder !== '.bmad-core') {
|
|
151
151
|
const packPath = path.join(installDir, folder);
|
|
152
|
-
const configPath = path.join(packPath,
|
|
152
|
+
const configPath = path.join(packPath, 'config.yaml');
|
|
153
153
|
if (await fileManager.pathExists(configPath)) {
|
|
154
154
|
expansionPacks.push({
|
|
155
|
-
name: folder.
|
|
156
|
-
path: packPath
|
|
155
|
+
name: folder.slice(1), // remove the dot
|
|
156
|
+
path: packPath,
|
|
157
157
|
});
|
|
158
158
|
}
|
|
159
159
|
}
|
|
@@ -167,13 +167,13 @@ class BaseIdeSetup {
|
|
|
167
167
|
* Get expansion pack agents
|
|
168
168
|
*/
|
|
169
169
|
async getExpansionPackAgents(packPath) {
|
|
170
|
-
const agentsDir = path.join(packPath,
|
|
170
|
+
const agentsDir = path.join(packPath, 'agents');
|
|
171
171
|
if (!(await fileManager.pathExists(agentsDir))) {
|
|
172
172
|
return [];
|
|
173
173
|
}
|
|
174
|
-
|
|
175
|
-
const agentFiles = await resourceLocator.findFiles(
|
|
176
|
-
return agentFiles.map(file => path.basename(file,
|
|
174
|
+
|
|
175
|
+
const agentFiles = await resourceLocator.findFiles('*.md', { cwd: agentsDir });
|
|
176
|
+
return agentFiles.map((file) => path.basename(file, '.md'));
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
/**
|
|
@@ -183,27 +183,28 @@ class BaseIdeSetup {
|
|
|
183
183
|
const agentContent = await fileManager.readFile(agentPath);
|
|
184
184
|
const agentTitle = await this.getAgentTitle(agentId, installDir);
|
|
185
185
|
const yamlContent = extractYamlFromAgent(agentContent);
|
|
186
|
-
|
|
187
|
-
let content =
|
|
188
|
-
|
|
186
|
+
|
|
187
|
+
let content = '';
|
|
188
|
+
|
|
189
189
|
if (format === 'mdc') {
|
|
190
190
|
// MDC format for Cursor
|
|
191
|
-
content =
|
|
192
|
-
content +=
|
|
193
|
-
content +=
|
|
194
|
-
content +=
|
|
195
|
-
content +=
|
|
191
|
+
content = '---\n';
|
|
192
|
+
content += 'description: \n';
|
|
193
|
+
content += 'globs: []\n';
|
|
194
|
+
content += 'alwaysApply: false\n';
|
|
195
|
+
content += '---\n\n';
|
|
196
196
|
content += `# ${agentId.toUpperCase()} Agent Rule\n\n`;
|
|
197
197
|
content += `This rule is triggered when the user types \`@${agentId}\` and activates the ${agentTitle} agent persona.\n\n`;
|
|
198
|
-
content +=
|
|
199
|
-
content +=
|
|
200
|
-
|
|
201
|
-
content +=
|
|
202
|
-
content +=
|
|
203
|
-
content +=
|
|
204
|
-
|
|
198
|
+
content += '## Agent Activation\n\n';
|
|
199
|
+
content +=
|
|
200
|
+
'CRITICAL: Read the full YAML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:\n\n';
|
|
201
|
+
content += '```yaml\n';
|
|
202
|
+
content += yamlContent || agentContent.replace(/^#.*$/m, '').trim();
|
|
203
|
+
content += '\n```\n\n';
|
|
204
|
+
content += '## File Reference\n\n';
|
|
205
|
+
const relativePath = path.relative(installDir, agentPath).replaceAll('\\', '/');
|
|
205
206
|
content += `The complete agent definition is available in [${relativePath}](mdc:${relativePath}).\n\n`;
|
|
206
|
-
content +=
|
|
207
|
+
content += '## Usage\n\n';
|
|
207
208
|
content += `When the user types \`@${agentId}\`, activate this ${agentTitle} persona and follow all instructions defined in the YAML configuration above.\n`;
|
|
208
209
|
} else if (format === 'claude') {
|
|
209
210
|
// Claude Code format
|
|
@@ -211,7 +212,7 @@ class BaseIdeSetup {
|
|
|
211
212
|
content += `When this command is used, adopt the following agent persona:\n\n`;
|
|
212
213
|
content += agentContent;
|
|
213
214
|
}
|
|
214
|
-
|
|
215
|
+
|
|
215
216
|
return content;
|
|
216
217
|
}
|
|
217
218
|
|
|
@@ -224,4 +225,4 @@ class BaseIdeSetup {
|
|
|
224
225
|
}
|
|
225
226
|
}
|
|
226
227
|
|
|
227
|
-
module.exports = BaseIdeSetup;
|
|
228
|
+
module.exports = BaseIdeSetup;
|