From 6f2f88d3ad6267f82f0119f277032a4e3f507b3f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 18:47:50 +0000 Subject: [PATCH] refactor(status): reuse Requirements types --- src/agents/skills-status.ts | 22 ++++------------------ src/hooks/hooks-status.ts | 22 ++++------------------ 2 files changed, 8 insertions(+), 36 deletions(-) diff --git a/src/agents/skills-status.ts b/src/agents/skills-status.ts index 029b8e4254b..483fd8cf6d5 100644 --- a/src/agents/skills-status.ts +++ b/src/agents/skills-status.ts @@ -1,5 +1,6 @@ import path from "node:path"; import type { OpenClawConfig } from "../config/config.js"; +import type { RequirementConfigCheck, Requirements } from "../shared/requirements.js"; import { evaluateEntryMetadataRequirements } from "../shared/entry-status.js"; import { CONFIG_DIR } from "../utils.js"; import { @@ -17,10 +18,7 @@ import { } from "./skills.js"; import { resolveBundledSkillsContext } from "./skills/bundled-context.js"; -export type SkillStatusConfigCheck = { - path: string; - satisfied: boolean; -}; +export type SkillStatusConfigCheck = RequirementConfigCheck; export type SkillInstallOption = { id: string; @@ -44,20 +42,8 @@ export type SkillStatusEntry = { disabled: boolean; blockedByAllowlist: boolean; eligible: boolean; - requirements: { - bins: string[]; - anyBins: string[]; - env: string[]; - config: string[]; - os: string[]; - }; - missing: { - bins: string[]; - anyBins: string[]; - env: string[]; - config: string[]; - os: string[]; - }; + requirements: Requirements; + missing: Requirements; configChecks: SkillStatusConfigCheck[]; install: SkillInstallOption[]; }; diff --git a/src/hooks/hooks-status.ts b/src/hooks/hooks-status.ts index 0a9867f76fe..af7cacd5a0a 100644 --- a/src/hooks/hooks-status.ts +++ b/src/hooks/hooks-status.ts @@ -1,15 +1,13 @@ import path from "node:path"; import type { OpenClawConfig } from "../config/config.js"; +import type { RequirementConfigCheck, Requirements } from "../shared/requirements.js"; import type { HookEligibilityContext, HookEntry, HookInstallSpec } from "./types.js"; import { evaluateEntryMetadataRequirements } from "../shared/entry-status.js"; import { CONFIG_DIR } from "../utils.js"; import { hasBinary, isConfigPathTruthy, resolveHookConfig } from "./config.js"; import { loadWorkspaceHookEntries } from "./workspace.js"; -export type HookStatusConfigCheck = { - path: string; - satisfied: boolean; -}; +export type HookStatusConfigCheck = RequirementConfigCheck; export type HookInstallOption = { id: string; @@ -34,20 +32,8 @@ export type HookStatusEntry = { disabled: boolean; eligible: boolean; managedByPlugin: boolean; - requirements: { - bins: string[]; - anyBins: string[]; - env: string[]; - config: string[]; - os: string[]; - }; - missing: { - bins: string[]; - anyBins: string[]; - env: string[]; - config: string[]; - os: string[]; - }; + requirements: Requirements; + missing: Requirements; configChecks: HookStatusConfigCheck[]; install: HookInstallOption[]; };