bmad-enhanced 1.3.5 → 1.3.7

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/CHANGELOG.md CHANGED
@@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ ## [1.3.6] - 2026-02-18
11
+
12
+ ### Fixed
13
+
14
+ **🔍 Improved Installation Diagnostics:**
15
+ - Added detailed debugging output to config.yaml creation in install script
16
+ - Shows exact file path where config.yaml will be created
17
+ - Verifies file existence immediately after write
18
+ - Catches and displays any errors during config creation
19
+ - Better error handling with try-catch blocks
20
+
21
+ **📊 Improved Version Check Messaging:**
22
+ - `bmad-version` now distinguishes between "fresh", "partial", and "corrupted" installations
23
+ - "Partial installation" message when config.yaml is missing but other files exist
24
+ - "Corrupted installation" message when required agent files are missing
25
+ - Each scenario now provides specific next steps for resolution
26
+ - No longer shows generic "Not installed" for all cases
27
+
28
+ **What this helps with:**
29
+ - Easier troubleshooting when installations fail
30
+ - Clear indication of what's wrong with partial installations
31
+ - Better guidance on how to fix installation issues
32
+ - More detailed logs for support/debugging
33
+
34
+ ---
35
+
10
36
  ## [1.3.5] - 2026-02-18
11
37
 
12
38
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bmad-enhanced",
3
- "version": "1.3.5",
3
+ "version": "1.3.7",
4
4
  "description": "Vortex Framework - Contextualize and Externalize streams for Lean Startup validation",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -157,12 +157,14 @@ function updateConfig() {
157
157
  const configPath = path.join(process.cwd(), '_bmad', 'bme', '_vortex', 'config.yaml');
158
158
  const manifestPath = path.join(process.cwd(), '_bmad', '_config', 'agent-manifest.csv');
159
159
 
160
+ console.log(`${CYAN} →${RESET} Config path: ${configPath}`);
161
+
160
162
  // Create config
161
163
  const configContent = `---
162
164
  submodule_name: _vortex
163
165
  description: Contextualize and Externalize streams - Strategic framing and validated learning
164
166
  module: bme
165
- version: 1.3.4
167
+ version: 1.3.7
166
168
 
167
169
  # Output Configuration
168
170
  output_folder: "{project-root}/_bmad-output/vortex-artifacts"
@@ -191,9 +193,21 @@ workflows:
191
193
  party_mode_enabled: true
192
194
  core_module: bme
193
195
  `;
194
- fs.mkdirSync(path.dirname(configPath), { recursive: true });
195
- fs.writeFileSync(configPath, configContent);
196
- console.log(`${GREEN} ✓${RESET} Created config.yaml`);
196
+
197
+ try {
198
+ fs.mkdirSync(path.dirname(configPath), { recursive: true });
199
+ fs.writeFileSync(configPath, configContent);
200
+
201
+ // Verify file was created
202
+ if (fs.existsSync(configPath)) {
203
+ console.log(`${GREEN} ✓${RESET} Created config.yaml`);
204
+ } else {
205
+ console.error(`${RED} ✗${RESET} Config file not found after write!`);
206
+ }
207
+ } catch (error) {
208
+ console.error(`${RED} ✗${RESET} Error creating config.yaml:`, error.message);
209
+ throw error;
210
+ }
197
211
 
198
212
  // Create manifest
199
213
  fs.mkdirSync(path.dirname(manifestPath), { recursive: true });
@@ -288,11 +302,43 @@ function printSuccess() {
288
302
  console.log('');
289
303
  }
290
304
 
305
+ function cleanupLegacyFiles() {
306
+ console.log(`${CYAN} →${RESET} Cleaning up legacy files...`);
307
+
308
+ // Remove _designos directory (pre-Vortex structure) from all possible locations
309
+ const legacyPaths = [
310
+ path.join(process.cwd(), '_bmad', 'bme', '_designos'),
311
+ path.join(process.cwd(), '_bmad', '_designos'),
312
+ ];
313
+
314
+ for (const legacyPath of legacyPaths) {
315
+ if (fs.existsSync(legacyPath)) {
316
+ fs.removeSync(legacyPath);
317
+ console.log(`${GREEN} ✓${RESET} Removed legacy directory: ${path.relative(process.cwd(), legacyPath)}`);
318
+ }
319
+ }
320
+
321
+ // Remove deprecated agent files from _vortex/agents
322
+ const agentsDir = path.join(process.cwd(), '_bmad', 'bme', '_vortex', 'agents');
323
+ const deprecatedAgents = ['empathy-mapper.md', 'wireframe-designer.md'];
324
+
325
+ for (const agent of deprecatedAgents) {
326
+ const agentPath = path.join(agentsDir, agent);
327
+ if (fs.existsSync(agentPath)) {
328
+ fs.removeSync(agentPath);
329
+ console.log(`${GREEN} ✓${RESET} Removed deprecated agent: ${agent}`);
330
+ }
331
+ }
332
+
333
+ console.log(`${GREEN} ✓${RESET} Legacy cleanup complete`);
334
+ }
335
+
291
336
  async function main() {
292
337
  try {
293
338
  printBanner();
294
339
  checkPrerequisites();
295
340
  copyAllAgentFiles();
341
+ cleanupLegacyFiles();
296
342
  updateConfig();
297
343
  createOutputDirectory();
298
344
  verifyInstallation();
@@ -21,7 +21,7 @@ async function main() {
21
21
  console.log('');
22
22
 
23
23
  // Fresh install - not installed yet
24
- if (scenario === 'fresh' || !currentVersion) {
24
+ if (scenario === 'fresh') {
25
25
  console.log(chalk.yellow('Status: Not installed'));
26
26
  console.log(`Package version: ${chalk.cyan(targetVersion)}`);
27
27
  console.log('');
@@ -30,6 +30,32 @@ async function main() {
30
30
  return;
31
31
  }
32
32
 
33
+ // Partial installation - config.yaml missing but some files exist
34
+ if (scenario === 'partial' || !currentVersion) {
35
+ console.log(chalk.red('Status: Partial installation (config.yaml missing)'));
36
+ console.log(`Package version: ${chalk.cyan(targetVersion)}`);
37
+ console.log('');
38
+ console.log(chalk.yellow('This indicates an installation error.'));
39
+ console.log('');
40
+ console.log('Try running: ' + chalk.cyan('npx bmad-install-agents'));
41
+ console.log('');
42
+ console.log('If the problem persists, check the installation logs.');
43
+ console.log('');
44
+ return;
45
+ }
46
+
47
+ // Corrupted installation
48
+ if (scenario === 'corrupted') {
49
+ console.log(chalk.red('Status: Corrupted installation (missing required files)'));
50
+ console.log(`Package version: ${chalk.cyan(targetVersion)}`);
51
+ console.log('');
52
+ console.log(chalk.yellow('Some required files are missing.'));
53
+ console.log('');
54
+ console.log('Run: ' + chalk.cyan('npx bmad-install-agents') + ' to reinstall');
55
+ console.log('');
56
+ return;
57
+ }
58
+
33
59
  // Installed
34
60
  console.log(`Installed version: ${chalk.cyan(currentVersion)}`);
35
61
  console.log(`Package version: ${chalk.cyan(targetVersion)}`);
@@ -16,7 +16,7 @@ const configMerger = require('../lib/config-merger');
16
16
  module.exports = {
17
17
  name: '1.0.x-to-1.3.0',
18
18
  fromVersion: '1.0.x',
19
- toVersion: '1.3.5',
19
+ toVersion: '1.3.7',
20
20
  breaking: true,
21
21
 
22
22
  /**
@@ -65,7 +65,7 @@ module.exports = {
65
65
  changes.push('Installed 7 new Vortex Framework workflows');
66
66
 
67
67
  // 5. Update config.yaml with new structure
68
- await updateConfig(targetDir, '1.3.5');
68
+ await updateConfig(targetDir, '1.3.7');
69
69
  changes.push('Updated config.yaml');
70
70
 
71
71
  // 6. Update agent files
@@ -289,12 +289,21 @@ async function copyUserGuides() {
289
289
  * Remove old _designos directory (pre-Vortex structure)
290
290
  */
291
291
  async function removeOldDesignosDirectory() {
292
- const designosPath = path.join(process.cwd(), '_bmad/bme/_designos');
292
+ const legacyPaths = [
293
+ path.join(process.cwd(), '_bmad/bme/_designos'),
294
+ path.join(process.cwd(), '_bmad/_designos'),
295
+ ];
293
296
 
294
- if (fs.existsSync(designosPath)) {
295
- await fs.remove(designosPath);
296
- console.log(' Removed legacy _designos directory');
297
- } else {
297
+ let removed = false;
298
+ for (const designosPath of legacyPaths) {
299
+ if (fs.existsSync(designosPath)) {
300
+ await fs.remove(designosPath);
301
+ console.log(` Removed legacy directory: ${path.relative(process.cwd(), designosPath)}`);
302
+ removed = true;
303
+ }
304
+ }
305
+
306
+ if (!removed) {
298
307
  console.log(' No legacy _designos directory found (OK)');
299
308
  }
300
309
  }
@@ -17,7 +17,7 @@ const configMerger = require('../lib/config-merger');
17
17
  module.exports = {
18
18
  name: '1.1.x-to-1.3.0',
19
19
  fromVersion: '1.1.x',
20
- toVersion: '1.3.5',
20
+ toVersion: '1.3.7',
21
21
  breaking: false,
22
22
 
23
23
  /**
@@ -27,7 +27,7 @@ module.exports = {
27
27
  async preview() {
28
28
  return {
29
29
  actions: [
30
- 'Update version: 1.1.x → 1.3.5',
30
+ 'Update version: 1.1.x → 1.3.7',
31
31
  'Verify deprecated workflows archived',
32
32
  'Remove legacy _designos directory (pre-Vortex structure)',
33
33
  'Remove deprecated agent files (empathy-mapper.md, wireframe-designer.md)',
@@ -47,8 +47,8 @@ module.exports = {
47
47
  const targetDir = path.join(process.cwd(), '_bmad/bme/_vortex');
48
48
 
49
49
  // 1. Update version in config.yaml
50
- await updateConfigVersion('1.3.5');
51
- changes.push('Updated version to 1.3.5');
50
+ await updateConfigVersion('1.3.7');
51
+ changes.push('Updated version to 1.3.7');
52
52
 
53
53
  // 2. Verify deprecated structure exists
54
54
  await ensureDeprecatedStructure(targetDir);
@@ -190,12 +190,21 @@ async function copyUserGuides() {
190
190
  * Remove old _designos directory (pre-Vortex structure)
191
191
  */
192
192
  async function removeOldDesignosDirectory() {
193
- const designosPath = path.join(process.cwd(), '_bmad/bme/_designos');
193
+ const legacyPaths = [
194
+ path.join(process.cwd(), '_bmad/bme/_designos'),
195
+ path.join(process.cwd(), '_bmad/_designos'),
196
+ ];
194
197
 
195
- if (fs.existsSync(designosPath)) {
196
- await fs.remove(designosPath);
197
- console.log(' Removed legacy _designos directory');
198
- } else {
198
+ let removed = false;
199
+ for (const designosPath of legacyPaths) {
200
+ if (fs.existsSync(designosPath)) {
201
+ await fs.remove(designosPath);
202
+ console.log(` Removed legacy directory: ${path.relative(process.cwd(), designosPath)}`);
203
+ removed = true;
204
+ }
205
+ }
206
+
207
+ if (!removed) {
199
208
  console.log(' No legacy _designos directory found (OK)');
200
209
  }
201
210
  }
@@ -17,7 +17,7 @@ const configMerger = require('../lib/config-merger');
17
17
  module.exports = {
18
18
  name: '1.2.x-to-1.3.0',
19
19
  fromVersion: '1.2.x',
20
- toVersion: '1.3.5',
20
+ toVersion: '1.3.7',
21
21
  breaking: false,
22
22
 
23
23
  /**
@@ -27,7 +27,7 @@ module.exports = {
27
27
  async preview() {
28
28
  return {
29
29
  actions: [
30
- 'Update version: 1.2.x → 1.3.5',
30
+ 'Update version: 1.2.x → 1.3.7',
31
31
  'Verify deprecated workflows archived',
32
32
  'Remove legacy _designos directory (pre-Vortex structure)',
33
33
  'Remove deprecated agent files (empathy-mapper.md, wireframe-designer.md)',
@@ -47,8 +47,8 @@ module.exports = {
47
47
  const targetDir = path.join(process.cwd(), '_bmad/bme/_vortex');
48
48
 
49
49
  // 1. Update version in config.yaml
50
- await updateConfigVersion('1.3.5');
51
- changes.push('Updated version to 1.3.5');
50
+ await updateConfigVersion('1.3.7');
51
+ changes.push('Updated version to 1.3.7');
52
52
 
53
53
  // 2. Verify deprecated structure exists
54
54
  await ensureDeprecatedStructure(targetDir);
@@ -190,12 +190,21 @@ async function copyUserGuides() {
190
190
  * Remove old _designos directory (pre-Vortex structure)
191
191
  */
192
192
  async function removeOldDesignosDirectory() {
193
- const designosPath = path.join(process.cwd(), '_bmad/bme/_designos');
193
+ const legacyPaths = [
194
+ path.join(process.cwd(), '_bmad/bme/_designos'),
195
+ path.join(process.cwd(), '_bmad/_designos'),
196
+ ];
194
197
 
195
- if (fs.existsSync(designosPath)) {
196
- await fs.remove(designosPath);
197
- console.log(' Removed legacy _designos directory');
198
- } else {
198
+ let removed = false;
199
+ for (const designosPath of legacyPaths) {
200
+ if (fs.existsSync(designosPath)) {
201
+ await fs.remove(designosPath);
202
+ console.log(` Removed legacy directory: ${path.relative(process.cwd(), designosPath)}`);
203
+ removed = true;
204
+ }
205
+ }
206
+
207
+ if (!removed) {
199
208
  console.log(' No legacy _designos directory found (OK)');
200
209
  }
201
210
  }
@@ -14,7 +14,7 @@ const MIGRATIONS = [
14
14
  {
15
15
  name: '1.0.x-to-1.3.0',
16
16
  fromVersion: '1.0.x',
17
- toVersion: '1.3.5',
17
+ toVersion: '1.3.7',
18
18
  breaking: true,
19
19
  description: 'Migrate empathy-map workflow to lean-persona',
20
20
  module: null // Loaded on demand
@@ -22,7 +22,7 @@ const MIGRATIONS = [
22
22
  {
23
23
  name: '1.1.x-to-1.3.0',
24
24
  fromVersion: '1.1.x',
25
- toVersion: '1.3.5',
25
+ toVersion: '1.3.7',
26
26
  breaking: false,
27
27
  description: 'Archive deprecated workflows, update agents',
28
28
  module: null // Loaded on demand
@@ -30,7 +30,7 @@ const MIGRATIONS = [
30
30
  {
31
31
  name: '1.2.x-to-1.3.0',
32
32
  fromVersion: '1.2.x',
33
- toVersion: '1.3.5',
33
+ toVersion: '1.3.7',
34
34
  breaking: false,
35
35
  description: 'Update to v1.3.0 with migration system',
36
36
  module: null // Loaded on demand