UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

33 lines (32 loc) 1.49 kB
//#region src/commands/doctor-skills-core.ts /** Returns allowed skills that are unusable in the current runtime environment. */ function collectUnavailableAgentSkills(report) { return report.skills.filter((skill) => !skill.eligible && !skill.disabled && !skill.blockedByAllowlist && !skill.blockedByAgentFilter && !skill.platformIncompatible); } function formatMissingSkillSummary(skill) { const missing = []; if (skill.missing.bins.length > 0) missing.push(`bins: ${skill.missing.bins.join(", ")}`); if (skill.missing.anyBins.length > 0) missing.push(`any bins: ${skill.missing.anyBins.join(", ")}`); if (skill.missing.env.length > 0) missing.push(`env: ${skill.missing.env.join(", ")}`); if (skill.missing.config.length > 0) missing.push(`config: ${skill.missing.config.join(", ")}`); if (skill.missing.os.length > 0) missing.push(`os: ${skill.missing.os.join(", ")}`); return missing.join("; ") || "unknown requirement"; } /** Disables unavailable skills in config while preserving existing skill entries. */ function disableUnavailableSkillsInConfig(config, skills) { if (skills.length === 0) return config; const entries = { ...config.skills?.entries }; for (const skill of skills) entries[skill.skillKey] = { ...entries[skill.skillKey], enabled: false }; return { ...config, skills: { ...config.skills, entries } }; } //#endregion export { disableUnavailableSkillsInConfig as n, formatMissingSkillSummary as r, collectUnavailableAgentSkills as t };