import { createSubsystemLogger } from "../../logging/subsystem.js"; import { resolveBundledSkillsDir, type BundledSkillsResolveOptions } from "./bundled-dir.js"; import { loadSkillsFromDirSafe } from "./local-loader.js";
const skillsLogger = createSubsystemLogger("skills");
let hasWarnedMissingBundledDir = false;
let cachedBundledContext: { dir: string; names: Set<string> } | null = null;
export type BundledSkillsContext = {
dir?: string;
names: Set<string>;
};
export function resolveBundledSkillsContext(
opts: BundledSkillsResolveOptions = {},
): BundledSkillsContext { const dir = resolveBundledSkillsDir(opts); const names = new Set<string>(); if (!dir) { if (!hasWarnedMissingBundledDir) {
hasWarnedMissingBundledDir = true;
skillsLogger.warn( "Bundled skills directory could not be resolved; built-in skills may be missing.",
);
} return { dir, names };
}
if (cachedBundledContext?.dir === dir) { return { dir, names: new Set(cachedBundledContext.names) };
} const result = loadSkillsFromDirSafe({ dir, source: "openclaw-bundled" }); for (const skill of result.skills) { if (skill.name.trim()) {
names.add(skill.name);
}
}
cachedBundledContext = { dir, names: new Set(names) }; return { dir, names };
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.