fix: expansion install config

This commit is contained in:
Brian Madison
2025-06-28 01:57:02 -05:00
parent c70f1a056b
commit 50d17ed65d
16 changed files with 64 additions and 97 deletions

View File

@@ -17,4 +17,3 @@ devLoadAlwaysFiles:
- docs/architecture/source-tree.md
devDebugLog: .ai/debug-log.md
devStoryLocation: docs/stories
agentCoreDump: .ai/core-dump{n}.md

View File

@@ -0,0 +1,5 @@
name: bmad-2d-phaser-game-dev
version: 1.1.0
short-title: 2D game development with Phaser 3 & TypeScript
description: 2D Game Development expansion pack for BMAD Method - Phaser 3 & TypeScript focused
author: Brian (BMad)

View File

@@ -1,45 +0,0 @@
name: bmad-2d-phaser-game-dev
version: 1.0.0
description: 2D Game Development expansion pack for BMAD Method - Phaser 3 & TypeScript focused
author: BMAD Team
files:
- source: agents/game-designer.md
destination: .bmad-core/agents/game-designer.md
- source: agents/game-developer.md
destination: .bmad-core/agents/game-developer.md
- source: agents/game-sm.md
destination: .bmad-core/agents/game-sm.md
- source: team-game-dev.yml
destination: .bmad-core/agent-teams/team-game-dev.yml
- source: templates/game-design-doc-tmpl.md
destination: .bmad-core/templates/game-design-doc-tmpl.md
- source: templates/game-architecture-tmpl.md
destination: .bmad-core/templates/game-architecture-tmpl.md
- source: templates/level-design-doc-tmpl.md
destination: .bmad-core/templates/level-design-doc-tmpl.md
- source: templates/game-story-tmpl.md
destination: .bmad-core/templates/game-story-tmpl.md
- source: templates/game-brief-tmpl.md
destination: .bmad-core/templates/game-brief-tmpl.md
- source: tasks/create-game-story.md
destination: .bmad-core/tasks/create-game-story.md
- source: tasks/game-design-brainstorming.md
destination: .bmad-core/tasks/game-design-brainstorming.md
- source: tasks/advanced-elicitation.md
destination: .bmad-core/tasks/advanced-elicitation.md
- source: checklists/game-story-dod-checklist.md
destination: .bmad-core/checklists/game-story-dod-checklist.md
- source: checklists/game-design-checklist.md
destination: .bmad-core/checklists/game-design-checklist.md
- source: data/bmad-kb.md
destination: .bmad-core/data/bmad-kb.md
- source: data/development-guidelines.md
destination: .bmad-core/data/development-guidelines.md
- source: workflows/game-dev-greenfield.yml
destination: .bmad-core/workflows/game-dev-greenfield.yml
- source: workflows/game-prototype.yml
destination: .bmad-core/workflows/game-prototype.yml
dependencies:
- architect
- developer
- sm

View File

@@ -0,0 +1,5 @@
name: bmad-creator-tools
version: 1.0.0
short-title: Tools for creating BMAD framework components
description: Tools for creating and extending BMAD framework components.
author: Brian (BMad)

View File

@@ -0,0 +1,5 @@
name: bmad-infrastructure-devops
version: 1.0.0
short-title: Infrastructure and DevOps capabilities
description: This expansion pack extends BMAD Method with comprehensive infrastructure and DevOps capabilities. It's designed for teams that need to define, implement, and manage cloud infrastructure alongside their application development.
author: Brian (BMad)

View File

@@ -1,23 +0,0 @@
name: bmad-infrastructure-devops
version: 1.0.0
description: Infrastructure & DevOps expansion pack for BMAD Method - Platform engineering and cloud infrastructure focused
author: BMAD Team
files:
- source: agents/infra-devops-platform.md
destination: .bmad-core/agents/infra-devops-platform.md
- source: templates/infrastructure-architecture-tmpl.md
destination: .bmad-core/templates/infrastructure-architecture-tmpl.md
- source: templates/infrastructure-platform-from-arch-tmpl.md
destination: .bmad-core/templates/infrastructure-platform-from-arch-tmpl.md
- source: tasks/create-doc.md
destination: .bmad-core/tasks/create-doc.md
- source: tasks/review-infrastructure.md
destination: .bmad-core/tasks/review-infrastructure.md
- source: tasks/validate-infrastructure.md
destination: .bmad-core/tasks/validate-infrastructure.md
- source: checklists/infrastructure-checklist.md
destination: .bmad-core/checklists/infrastructure-checklist.md
dependencies:
- architect
- operations-specialist
- security-specialist

View File

@@ -1,12 +0,0 @@
name: bmad-creator-tools
version: 1.0.0
description: Tools for creating and extending BMAD framework components
type: creator-tools
compatibility:
bmad-version: '>=4.0.0'
components:
agents:
- bmad-the-creator
tasks:
- create-agent
- generate-expansion-pack

View File

@@ -77,24 +77,45 @@ class ConfigLoader {
const expansionPacks = [];
for (const entry of entries) {
if (entry.isDirectory()) {
const manifestPath = path.join(expansionPacksDir, entry.name, 'manifest.yml');
if (entry.isDirectory() && !entry.name.startsWith('.')) {
const packPath = path.join(expansionPacksDir, entry.name);
const configPath = path.join(packPath, 'config.yml');
try {
const manifestContent = await fs.readFile(manifestPath, 'utf8');
const manifest = yaml.load(manifestContent);
// Read config.yml
const configContent = await fs.readFile(configPath, 'utf8');
const config = yaml.load(configContent);
expansionPacks.push({
id: entry.name,
name: manifest.name || entry.name,
description: manifest.description || 'No description available',
version: manifest.version || '1.0.0',
author: manifest.author || 'Unknown',
manifestPath: manifestPath,
dependencies: manifest.dependencies || []
name: config.name || entry.name,
description: config['short-title'] || config.description || 'No description available',
fullDescription: config.description || config['short-title'] || 'No description available',
version: config.version || '1.0.0',
author: config.author || 'BMAD Team',
packPath: packPath,
dependencies: config.dependencies?.agents || []
});
} catch (error) {
console.warn(`Failed to read manifest for expansion pack ${entry.name}: ${error.message}`);
// Fallback if config.yml doesn't exist or can't be read
console.warn(`Failed to read config for expansion pack ${entry.name}: ${error.message}`);
// Try to derive info from directory name as fallback
const name = entry.name
.split('-')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(' ');
expansionPacks.push({
id: entry.name,
name: name,
description: 'No description available',
fullDescription: 'No description available',
version: '1.0.0',
author: 'BMAD Team',
packPath: packPath,
dependencies: []
});
}
}
}

View File

@@ -817,7 +817,7 @@ class Installer {
continue;
}
const expansionPackDir = path.dirname(pack.manifestPath);
const expansionPackDir = pack.packPath;
// Create dedicated dot folder for this expansion pack
const expansionDotFolder = path.join(installDir, `.${packId}`);
@@ -860,10 +860,22 @@ class Installer {
}
}
// Copy manifest to the expansion pack's dot folder
const manifestDestPath = path.join(expansionDotFolder, 'manifest.yml');
if (await fileManager.copyFile(pack.manifestPath, manifestDestPath)) {
installedFiles.push(path.join(`.${packId}`, 'manifest.yml'));
// Copy config.yml
const configPath = path.join(expansionPackDir, 'config.yml');
if (await fileManager.pathExists(configPath)) {
const configDestPath = path.join(expansionDotFolder, 'config.yml');
if (await fileManager.copyFile(configPath, configDestPath)) {
installedFiles.push(path.join(`.${packId}`, 'config.yml'));
}
}
// Copy README if it exists
const readmePath = path.join(expansionPackDir, 'README.md');
if (await fileManager.pathExists(readmePath)) {
const readmeDestPath = path.join(expansionDotFolder, 'README.md');
if (await fileManager.copyFile(readmePath, readmeDestPath)) {
installedFiles.push(path.join(`.${packId}`, 'README.md'));
}
}
// Copy common/ items to expansion pack folder