refactor(shared): derive requirements from metadata

This commit is contained in:
Peter Steinberger
2026-02-14 14:40:59 +00:00
parent 7bd073340a
commit 270779b2cd
4 changed files with 76 additions and 44 deletions

View File

@@ -1,6 +1,6 @@
import path from "node:path";
import type { OpenClawConfig } from "../config/config.js";
import { evaluateRequirements } from "../shared/requirements.js";
import { evaluateRequirementsFromMetadata } from "../shared/requirements.js";
import { CONFIG_DIR } from "../utils.js";
import {
hasBinary,
@@ -197,25 +197,14 @@ function buildSkillStatus(
? bundledNames.has(entry.skill.name)
: entry.skill.source === "openclaw-bundled";
const requiredBins = entry.metadata?.requires?.bins ?? [];
const requiredAnyBins = entry.metadata?.requires?.anyBins ?? [];
const requiredEnv = entry.metadata?.requires?.env ?? [];
const requiredConfig = entry.metadata?.requires?.config ?? [];
const requiredOs = entry.metadata?.os ?? [];
const {
required,
missing,
eligible: requirementsSatisfied,
configChecks,
} = evaluateRequirements({
} = evaluateRequirementsFromMetadata({
always,
required: {
bins: requiredBins,
anyBins: requiredAnyBins,
env: requiredEnv,
config: requiredConfig,
os: requiredOs,
},
metadata: entry.metadata,
hasLocalBin: hasBinary,
hasRemoteBin: eligibility?.remote?.hasBin,
hasRemoteAnyBin: eligibility?.remote?.hasAnyBin,
@@ -247,13 +236,7 @@ function buildSkillStatus(
disabled,
blockedByAllowlist,
eligible,
requirements: {
bins: requiredBins,
anyBins: requiredAnyBins,
env: requiredEnv,
config: requiredConfig,
os: requiredOs,
},
requirements: required,
missing,
configChecks,
install: normalizeInstallOptions(entry, prefs ?? resolveSkillsInstallPreferences(config)),