
























@@ -3,10 +3,7 @@ import path from "node:path";
33import type { OpenClawConfig } from "../config/types.js";
44import type { PluginInstallRecord } from "../config/types.plugins.js";
55import { isBlockedObjectKey } from "../infra/prototype-keys.js";
6-import {
7-normalizeOptionalLowercaseString,
8-normalizeOptionalString,
9-} from "../shared/string-coerce.js";
6+import { normalizeOptionalString } from "../shared/string-coerce.js";
107import { normalizeOptionalTrimmedStringList } from "../shared/string-normalization.js";
118import { sanitizeForLog } from "../terminal/ansi.js";
129import { resolveUserPath } from "../utils.js";
@@ -169,90 +166,6 @@ const DEFAULT_MANIFEST_CACHE_MS = 1000;
169166170167export { clearPluginManifestRegistryCache } from "./manifest-registry-state.js";
171168172-function listContractValues(
173-plugin: PluginManifestRecord,
174-contract: PluginManifestContractListKey,
175-): readonly string[] {
176-return plugin.contracts?.[contract] ?? [];
177-}
178-179-export function resolveManifestContractPluginIds(params: {
180-contract: PluginManifestContractListKey;
181-origin?: PluginOrigin;
182-config?: OpenClawConfig;
183-workspaceDir?: string;
184-env?: NodeJS.ProcessEnv;
185-onlyPluginIds?: readonly string[];
186-}): string[] {
187-const onlyPluginIdSet =
188-params.onlyPluginIds && params.onlyPluginIds.length > 0 ? new Set(params.onlyPluginIds) : null;
189-return loadPluginManifestRegistry({
190-config: params.config,
191-workspaceDir: params.workspaceDir,
192-env: params.env,
193-})
194-.plugins.filter(
195-(plugin) =>
196-(!params.origin || plugin.origin === params.origin) &&
197-(!onlyPluginIdSet || onlyPluginIdSet.has(plugin.id)) &&
198-listContractValues(plugin, params.contract).length > 0,
199-)
200-.map((plugin) => plugin.id)
201-.toSorted((left, right) => left.localeCompare(right));
202-}
203-204-export function resolveManifestContractPluginIdsByCompatibilityRuntimePath(params: {
205-contract: PluginManifestContractListKey;
206-path: string | undefined;
207-origin?: PluginOrigin;
208-config?: OpenClawConfig;
209-workspaceDir?: string;
210-env?: NodeJS.ProcessEnv;
211-}): string[] {
212-const normalizedPath = params.path?.trim();
213-if (!normalizedPath) {
214-return [];
215-}
216-return loadPluginManifestRegistry({
217-config: params.config,
218-workspaceDir: params.workspaceDir,
219-env: params.env,
220-})
221-.plugins.filter(
222-(plugin) =>
223-(!params.origin || plugin.origin === params.origin) &&
224-listContractValues(plugin, params.contract).length > 0 &&
225-(plugin.configContracts?.compatibilityRuntimePaths ?? []).includes(normalizedPath),
226-)
227-.map((plugin) => plugin.id)
228-.toSorted((left, right) => left.localeCompare(right));
229-}
230-231-export function resolveManifestContractOwnerPluginId(params: {
232-contract: PluginManifestContractListKey;
233-value: string | undefined;
234-origin?: PluginOrigin;
235-config?: OpenClawConfig;
236-workspaceDir?: string;
237-env?: NodeJS.ProcessEnv;
238-}): string | undefined {
239-const normalizedValue = normalizeOptionalLowercaseString(params.value);
240-if (!normalizedValue) {
241-return undefined;
242-}
243-return loadPluginManifestRegistry({
244-config: params.config,
245-workspaceDir: params.workspaceDir,
246-env: params.env,
247-}).plugins.find(
248-(plugin) =>
249-(!params.origin || plugin.origin === params.origin) &&
250-listContractValues(plugin, params.contract).some(
251-(candidate) => normalizeOptionalLowercaseString(candidate) === normalizedValue,
252-),
253-)?.id;
254-}
255-256169function resolveManifestCacheMs(env: NodeJS.ProcessEnv): number {
257170const raw = env.OPENCLAW_PLUGIN_MANIFEST_CACHE_MS?.trim();
258171if (raw === "" || raw === "0") {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。