Merge branch 'main' into story-automator

This commit is contained in:
bm 2026-03-28 04:26:32 -03:00 committed by GitHub
commit 21d8da520b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 48 additions and 4 deletions

View File

@ -4,7 +4,7 @@
modules:
bmad-builder:
url: https://github.com/bmad-code-org/bmad-builder
module-definition: src/module.yaml
module-definition: skills/module.yaml
code: bmb
name: "BMad Builder"
description: "Agent and Builder"

View File

@ -102,6 +102,13 @@ platforms:
- .iflow/commands
target_dir: .iflow/skills
junie:
name: "Junie"
preferred: false
installer:
target_dir: .agents/skills
ancestor_conflict_check: false
kilo:
name: "KiloCoder"
preferred: false

View File

@ -313,10 +313,41 @@ class ExternalModuleManager {
// The module-definition specifies the path to module.yaml relative to repo root
// We need to return the directory containing module.yaml
const moduleDefinitionPath = moduleInfo.moduleDefinition; // e.g., 'src/module.yaml'
const moduleDir = path.dirname(path.join(cloneDir, moduleDefinitionPath));
const moduleDefinitionPath = moduleInfo.moduleDefinition; // e.g., 'skills/module.yaml'
const configuredPath = path.join(cloneDir, moduleDefinitionPath);
return moduleDir;
if (await fs.pathExists(configuredPath)) {
return path.dirname(configuredPath);
}
// Fallback: search skills/ and src/ (root level and one level deep for subfolders)
for (const dir of ['skills', 'src']) {
const rootCandidate = path.join(cloneDir, dir, 'module.yaml');
if (await fs.pathExists(rootCandidate)) {
return path.dirname(rootCandidate);
}
const dirPath = path.join(cloneDir, dir);
if (await fs.pathExists(dirPath)) {
const entries = await fs.readdir(dirPath, { withFileTypes: true });
for (const entry of entries) {
if (entry.isDirectory()) {
const subCandidate = path.join(dirPath, entry.name, 'module.yaml');
if (await fs.pathExists(subCandidate)) {
return path.dirname(subCandidate);
}
}
}
}
}
// Check repo root as last fallback
const rootCandidate = path.join(cloneDir, 'module.yaml');
if (await fs.pathExists(rootCandidate)) {
return path.dirname(rootCandidate);
}
// Nothing found: return configured path (preserves old behavior for error messaging)
return path.dirname(configuredPath);
}
}

View File

@ -127,6 +127,12 @@ platforms:
category: ide
description: "AI-powered IDE with cascade flows"
junie:
name: "Junie"
preferred: false
category: cli
description: "AI coding agent by JetBrains"
ona:
name: "Ona"
preferred: false