Compare commits

...

1 Commits

Author SHA1 Message Date
Alex Verkhovsky
6717ddbb4b fix(installer): enforce manifest ide selection 2025-10-06 11:47:47 -07:00
3 changed files with 18 additions and 4 deletions

View File

@@ -385,7 +385,9 @@ class Installer {
// Generate CSV manifests for workflows, agents, tasks AND ALL FILES with hashes BEFORE IDE setup
spinner.start('Generating workflow and agent manifests...');
const manifestGen = new ManifestGenerator();
const manifestStats = await manifestGen.generateManifests(bmadDir, config.modules || [], this.installedFiles);
const manifestStats = await manifestGen.generateManifests(bmadDir, config.modules || [], this.installedFiles, {
ides: config.ides || [],
});
spinner.succeed(
`Manifests generated: ${manifestStats.workflows} workflows, ${manifestStats.agents} agents, ${manifestStats.tasks} tasks, ${manifestStats.files} files`,

View File

@@ -14,6 +14,7 @@ class ManifestGenerator {
this.tasks = [];
this.modules = [];
this.files = [];
this.selectedIdes = [];
}
/**
@@ -22,7 +23,7 @@ class ManifestGenerator {
* @param {Array} selectedModules - Selected modules for installation
* @param {Array} installedFiles - All installed files (optional, for hash tracking)
*/
async generateManifests(bmadDir, selectedModules, installedFiles = []) {
async generateManifests(bmadDir, selectedModules, installedFiles = [], options = {}) {
// Create _cfg directory if it doesn't exist
const cfgDir = path.join(bmadDir, '_cfg');
await fs.ensureDir(cfgDir);
@@ -32,6 +33,17 @@ class ManifestGenerator {
this.bmadDir = bmadDir;
this.allInstalledFiles = installedFiles;
if (!Object.prototype.hasOwnProperty.call(options, 'ides')) {
throw new Error('ManifestGenerator requires `options.ides` to be provided installer should supply the selected IDEs array.');
}
const resolvedIdes = options.ides ?? [];
if (!Array.isArray(resolvedIdes)) {
throw new TypeError('ManifestGenerator expected `options.ides` to be an array.');
}
this.selectedIdes = resolvedIdes;
// Collect workflow data
await this.collectWorkflows(selectedModules);
@@ -324,7 +336,7 @@ class ManifestGenerator {
lastUpdated: new Date().toISOString(),
},
modules: this.modules,
ides: ['claude-code'],
ides: this.selectedIdes,
};
const yamlStr = yaml.dump(manifest, {

View File

@@ -13,7 +13,7 @@ async function regenerateManifests() {
console.log('Target directory:', bmadDir);
try {
const result = await generator.generateManifests(bmadDir, selectedModules);
const result = await generator.generateManifests(bmadDir, selectedModules, [], { ides: [] });
console.log('✓ Manifests generated successfully:');
console.log(` - ${result.workflows} workflows`);
console.log(` - ${result.agents} agents`);