refactor(shared): share requirements eval for remote context

This commit is contained in:
Peter Steinberger
2026-02-15 14:26:10 +00:00
parent 33a3a56ee1
commit 34b6c743f5
3 changed files with 37 additions and 10 deletions

View File

@@ -2,7 +2,7 @@ import path from "node:path";
import type { OpenClawConfig } from "../config/config.js";
import type { HookEligibilityContext, HookEntry, HookInstallSpec } from "./types.js";
import { resolveEmojiAndHomepage } from "../shared/entry-metadata.js";
import { evaluateRequirementsFromMetadata } from "../shared/requirements.js";
import { evaluateRequirementsFromMetadataWithRemote } from "../shared/requirements.js";
import { CONFIG_DIR } from "../utils.js";
import { hasBinary, isConfigPathTruthy, resolveHookConfig } from "./config.js";
import { loadWorkspaceHookEntries } from "./workspace.js";
@@ -112,14 +112,12 @@ function buildHookStatus(
missing,
eligible: requirementsSatisfied,
configChecks,
} = evaluateRequirementsFromMetadata({
} = evaluateRequirementsFromMetadataWithRemote({
always,
metadata: entry.metadata,
hasLocalBin: hasBinary,
hasRemoteBin: eligibility?.remote?.hasBin,
hasRemoteAnyBin: eligibility?.remote?.hasAnyBin,
localPlatform: process.platform,
remotePlatforms: eligibility?.remote?.platforms,
remote: eligibility?.remote,
isEnvSatisfied: (envName) => Boolean(process.env[envName] || hookConfig?.env?.[envName]),
isConfigSatisfied: (pathStr) => isConfigPathTruthy(config, pathStr),
});