fix(agents): support loadSkillsFromDir result

main
Peter Steinberger 2025-12-20 13:31:24 +00:00
parent 055d839fc3
commit 137980b46e
2 changed files with 29 additions and 10 deletions

View File

@ -147,12 +147,17 @@ export async function installSkill(
}; };
} }
const result = command.shell const result = await (async () => {
? await runShell(command.shell, timeoutMs) if (command.shell) return runShell(command.shell, timeoutMs);
: await runCommandWithTimeout(command.argv, { const argv = command.argv;
if (!argv || argv.length === 0) {
return { code: null, stdout: "", stderr: "invalid install command" };
}
return runCommandWithTimeout(argv, {
timeoutMs, timeoutMs,
cwd: command.cwd, cwd: command.cwd,
}); });
})();
const success = result.code === 0; const success = result.code === 0;
return { return {

View File

@ -412,6 +412,20 @@ function loadSkillEntries(
bundledSkillsDir?: string; bundledSkillsDir?: string;
}, },
): SkillEntry[] { ): SkillEntry[] {
const loadSkills = (params: { dir: string; source: string }): Skill[] => {
const loaded = loadSkillsFromDir(params);
if (Array.isArray(loaded)) return loaded;
if (
loaded &&
typeof loaded === "object" &&
"skills" in loaded &&
Array.isArray((loaded as { skills?: unknown }).skills)
) {
return (loaded as { skills: Skill[] }).skills;
}
return [];
};
const managedSkillsDir = const managedSkillsDir =
opts?.managedSkillsDir ?? path.join(CONFIG_DIR, "skills"); opts?.managedSkillsDir ?? path.join(CONFIG_DIR, "skills");
const workspaceSkillsDir = path.join(workspaceDir, "skills"); const workspaceSkillsDir = path.join(workspaceDir, "skills");
@ -422,23 +436,23 @@ function loadSkillEntries(
.filter(Boolean); .filter(Boolean);
const bundledSkills = bundledSkillsDir const bundledSkills = bundledSkillsDir
? loadSkillsFromDir({ ? loadSkills({
dir: bundledSkillsDir, dir: bundledSkillsDir,
source: "clawdis-bundled", source: "clawdis-bundled",
}) })
: []; : [];
const extraSkills = extraDirs.flatMap((dir) => { const extraSkills = extraDirs.flatMap((dir) => {
const resolved = resolveUserPath(dir); const resolved = resolveUserPath(dir);
return loadSkillsFromDir({ return loadSkills({
dir: resolved, dir: resolved,
source: "clawdis-extra", source: "clawdis-extra",
}); });
}); });
const managedSkills = loadSkillsFromDir({ const managedSkills = loadSkills({
dir: managedSkillsDir, dir: managedSkillsDir,
source: "clawdis-managed", source: "clawdis-managed",
}); });
const workspaceSkills = loadSkillsFromDir({ const workspaceSkills = loadSkills({
dir: workspaceSkillsDir, dir: workspaceSkillsDir,
source: "clawdis-workspace", source: "clawdis-workspace",
}); });