bmad-method 6.0.0-Beta.0 → 6.0.0-Beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/package.json +1 -1
  3. package/src/bmm/module-help.csv +31 -31
  4. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +1 -1
  5. package/src/core/module-help.csv +8 -8
  6. package/tools/cli/installers/install-messages.yaml +11 -10
  7. package/tools/cli/installers/lib/core/installer.js +26 -40
  8. package/tools/cli/installers/lib/ide/_config-driven.js +423 -0
  9. package/tools/cli/installers/lib/ide/codex.js +40 -12
  10. package/tools/cli/installers/lib/ide/manager.js +65 -38
  11. package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
  12. package/tools/cli/installers/lib/ide/platform-codes.yaml +241 -0
  13. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +19 -5
  14. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +5 -0
  15. package/tools/cli/installers/lib/ide/shared/path-utils.js +166 -50
  16. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +7 -5
  17. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +21 -3
  18. package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
  19. package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +15 -0
  20. package/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +14 -0
  21. package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +6 -0
  22. package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
  23. package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
  24. package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
  25. package/tools/cli/installers/lib/ide/templates/split/gemini/body.md +10 -0
  26. package/tools/cli/installers/lib/ide/templates/split/gemini/header.toml +2 -0
  27. package/tools/cli/installers/lib/ide/templates/split/opencode/body.md +10 -0
  28. package/tools/cli/installers/lib/ide/templates/split/opencode/header.md +4 -0
  29. package/tools/cli/lib/ui.js +19 -75
  30. package/tools/cli/installers/lib/ide/STANDARDIZATION_PLAN.md +0 -208
  31. package/tools/cli/installers/lib/ide/antigravity.js +0 -474
  32. package/tools/cli/installers/lib/ide/auggie.js +0 -244
  33. package/tools/cli/installers/lib/ide/claude-code.js +0 -506
  34. package/tools/cli/installers/lib/ide/cline.js +0 -272
  35. package/tools/cli/installers/lib/ide/crush.js +0 -149
  36. package/tools/cli/installers/lib/ide/cursor.js +0 -160
  37. package/tools/cli/installers/lib/ide/gemini.js +0 -301
  38. package/tools/cli/installers/lib/ide/github-copilot.js +0 -383
  39. package/tools/cli/installers/lib/ide/iflow.js +0 -191
  40. package/tools/cli/installers/lib/ide/opencode.js +0 -257
  41. package/tools/cli/installers/lib/ide/qwen.js +0 -372
  42. package/tools/cli/installers/lib/ide/roo.js +0 -273
  43. package/tools/cli/installers/lib/ide/rovo-dev.js +0 -290
  44. package/tools/cli/installers/lib/ide/trae.js +0 -313
  45. package/tools/cli/installers/lib/ide/windsurf.js +0 -258
@@ -1,244 +0,0 @@
1
- const path = require('node:path');
2
- const fs = require('fs-extra');
3
- const { BaseIdeSetup } = require('./_base-ide');
4
- const chalk = require('chalk');
5
- const { AgentCommandGenerator } = require('./shared/agent-command-generator');
6
- const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
7
-
8
- /**
9
- * Auggie CLI setup handler
10
- * Installs to project directory (.augment/commands)
11
- */
12
- class AuggieSetup extends BaseIdeSetup {
13
- constructor() {
14
- super('auggie', 'Auggie CLI');
15
- this.detectionPaths = ['.augment'];
16
- }
17
-
18
- /**
19
- * Setup Auggie CLI configuration
20
- * @param {string} projectDir - Project directory
21
- * @param {string} bmadDir - BMAD installation directory
22
- * @param {Object} options - Setup options
23
- */
24
- async setup(projectDir, bmadDir, options = {}) {
25
- console.log(chalk.cyan(`Setting up ${this.name}...`));
26
-
27
- // Always use project directory
28
- const location = path.join(projectDir, '.augment', 'commands');
29
-
30
- // Clean up old BMAD installation first
31
- await this.cleanup(projectDir);
32
-
33
- // Generate agent launchers
34
- const agentGen = new AgentCommandGenerator(this.bmadFolderName);
35
- const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
36
-
37
- // Get tasks, tools, and workflows (ALL workflows now generate commands)
38
- const tasks = await this.getTasks(bmadDir, true);
39
- const tools = await this.getTools(bmadDir, true);
40
-
41
- // Get ALL workflows using the new workflow command generator
42
- const workflowGenerator = new WorkflowCommandGenerator(this.bmadFolderName);
43
- const { artifacts: workflowArtifacts, counts: workflowCounts } = await workflowGenerator.collectWorkflowArtifacts(bmadDir);
44
-
45
- // Convert workflow artifacts to expected format
46
- const workflows = workflowArtifacts
47
- .filter((artifact) => artifact.type === 'workflow-command')
48
- .map((artifact) => ({
49
- module: artifact.module,
50
- name: path.basename(artifact.relativePath, '.md'),
51
- path: artifact.sourcePath,
52
- content: artifact.content,
53
- }));
54
-
55
- const bmadCommandsDir = path.join(location, 'bmad');
56
- const agentsDir = path.join(bmadCommandsDir, 'agents');
57
- const tasksDir = path.join(bmadCommandsDir, 'tasks');
58
- const toolsDir = path.join(bmadCommandsDir, 'tools');
59
- const workflowsDir = path.join(bmadCommandsDir, 'workflows');
60
-
61
- await this.ensureDir(agentsDir);
62
- await this.ensureDir(tasksDir);
63
- await this.ensureDir(toolsDir);
64
- await this.ensureDir(workflowsDir);
65
-
66
- // Install agent launchers
67
- for (const artifact of agentArtifacts) {
68
- const targetPath = path.join(agentsDir, `${artifact.module}-${artifact.name}.md`);
69
- await this.writeFile(targetPath, artifact.content);
70
- }
71
-
72
- // Install tasks
73
- for (const task of tasks) {
74
- const content = await this.readFile(task.path);
75
- const commandContent = this.createTaskCommand(task, content);
76
-
77
- const targetPath = path.join(tasksDir, `${task.module}-${task.name}.md`);
78
- await this.writeFile(targetPath, commandContent);
79
- }
80
-
81
- // Install tools
82
- for (const tool of tools) {
83
- const content = await this.readFile(tool.path);
84
- const commandContent = this.createToolCommand(tool, content);
85
-
86
- const targetPath = path.join(toolsDir, `${tool.module}-${tool.name}.md`);
87
- await this.writeFile(targetPath, commandContent);
88
- }
89
-
90
- // Install workflows (already generated commands)
91
- for (const workflow of workflows) {
92
- // Use the pre-generated workflow command content
93
- const targetPath = path.join(workflowsDir, `${workflow.module}-${workflow.name}.md`);
94
- await this.writeFile(targetPath, workflow.content);
95
- }
96
-
97
- const totalInstalled = agentArtifacts.length + tasks.length + tools.length + workflows.length;
98
-
99
- console.log(chalk.green(`✓ ${this.name} configured:`));
100
- console.log(chalk.dim(` - ${agentArtifacts.length} agents installed`));
101
- console.log(chalk.dim(` - ${tasks.length} tasks installed`));
102
- console.log(chalk.dim(` - ${tools.length} tools installed`));
103
- console.log(chalk.dim(` - ${workflows.length} workflows installed`));
104
- console.log(chalk.dim(` - Location: ${path.relative(projectDir, location)}`));
105
- console.log(chalk.yellow(`\n 💡 Tip: Add 'model: gpt-4o' to command frontmatter to specify AI model`));
106
-
107
- return {
108
- success: true,
109
- agents: agentArtifacts.length,
110
- tasks: tasks.length,
111
- tools: tools.length,
112
- workflows: workflows.length,
113
- };
114
- }
115
-
116
- /**
117
- * Create task command content
118
- */
119
- createTaskCommand(task, content) {
120
- const nameMatch = content.match(/name="([^"]+)"/);
121
- const taskName = nameMatch ? nameMatch[1] : this.formatTitle(task.name);
122
-
123
- return `---
124
- description: "Execute the ${taskName} task"
125
- ---
126
-
127
- # ${taskName} Task
128
-
129
- ${content}
130
-
131
- ## Module
132
- BMAD ${task.module.toUpperCase()} module
133
- `;
134
- }
135
-
136
- /**
137
- * Create tool command content
138
- */
139
- createToolCommand(tool, content) {
140
- const nameMatch = content.match(/name="([^"]+)"/);
141
- const toolName = nameMatch ? nameMatch[1] : this.formatTitle(tool.name);
142
-
143
- return `---
144
- description: "Use the ${toolName} tool"
145
- ---
146
-
147
- # ${toolName} Tool
148
-
149
- ${content}
150
-
151
- ## Module
152
- BMAD ${tool.module.toUpperCase()} module
153
- `;
154
- }
155
-
156
- /**
157
- * Create workflow command content
158
- */
159
- createWorkflowCommand(workflow, content) {
160
- const description = workflow.description || `Execute the ${workflow.name} workflow`;
161
-
162
- return `---
163
- description: "${description}"
164
- ---
165
-
166
- # ${workflow.name} Workflow
167
-
168
- ${content}
169
-
170
- ## Module
171
- BMAD ${workflow.module.toUpperCase()} module
172
- `;
173
- }
174
-
175
- /**
176
- * Cleanup Auggie configuration
177
- */
178
- async cleanup(projectDir) {
179
- const fs = require('fs-extra');
180
-
181
- // Only clean up project directory
182
- const location = path.join(projectDir, '.augment', 'commands');
183
- const bmadDir = path.join(location, 'bmad');
184
-
185
- if (await fs.pathExists(bmadDir)) {
186
- await fs.remove(bmadDir);
187
- console.log(chalk.dim(` Removed old BMAD commands`));
188
- }
189
- }
190
-
191
- /**
192
- * Install a custom agent launcher for Auggie
193
- * @param {string} projectDir - Project directory
194
- * @param {string} agentName - Agent name (e.g., "fred-commit-poet")
195
- * @param {string} agentPath - Path to compiled agent (relative to project root)
196
- * @param {Object} metadata - Agent metadata
197
- * @returns {Object} Installation result
198
- */
199
- async installCustomAgentLauncher(projectDir, agentName, agentPath, metadata) {
200
- // Auggie uses .augment/commands directory
201
- const location = path.join(projectDir, '.augment', 'commands');
202
- const bmadCommandsDir = path.join(location, 'bmad');
203
- const agentsDir = path.join(bmadCommandsDir, 'agents');
204
-
205
- // Create .augment/commands/bmad/agents directory if it doesn't exist
206
- await fs.ensureDir(agentsDir);
207
-
208
- // Create custom agent launcher
209
- const launcherContent = `---
210
- description: "Use the ${agentName} custom agent"
211
- ---
212
-
213
- # ${agentName} Custom Agent
214
-
215
- **⚠️ IMPORTANT**: Run @${agentPath} first to load the complete agent!
216
-
217
- This is a launcher for the custom BMAD agent "${agentName}".
218
-
219
- ## Usage
220
- 1. First run: \`${agentPath}\` to load the complete agent
221
- 2. Then use this command to activate ${agentName}
222
-
223
- The agent will follow the persona and instructions from the main agent file.
224
-
225
- ## Module
226
- BMAD Custom agent
227
- `;
228
-
229
- const fileName = `custom-${agentName.toLowerCase()}.md`;
230
- const launcherPath = path.join(agentsDir, fileName);
231
-
232
- // Write the launcher file
233
- await fs.writeFile(launcherPath, launcherContent, 'utf8');
234
-
235
- return {
236
- ide: 'auggie',
237
- path: path.relative(projectDir, launcherPath),
238
- command: agentName,
239
- type: 'custom-agent-launcher',
240
- };
241
- }
242
- }
243
-
244
- module.exports = { AuggieSetup };