From d46859d88678b220fd383f6c811aa9c4ef3f306f Mon Sep 17 00:00:00 2001 From: Shakker Date: Wed, 6 May 2026 07:00:33 +0100 Subject: [PATCH] fix: reuse plugin snapshot for agent metadata --- src/agents/provider-auth-aliases.ts | 23 ++++++++++++++++++----- src/agents/skills/plugin-skills.ts | 24 ++++++++++++++++-------- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/agents/provider-auth-aliases.ts b/src/agents/provider-auth-aliases.ts index 1d673994986..33b7e541e4a 100644 --- a/src/agents/provider-auth-aliases.ts +++ b/src/agents/provider-auth-aliases.ts @@ -1,4 +1,5 @@ import type { OpenClawConfig } from "../config/types.openclaw.js"; +import { getCurrentPluginMetadataSnapshot } from "../plugins/current-plugin-metadata-snapshot.js"; import type { PluginManifestRecord } from "../plugins/manifest-registry.js"; import { isWorkspacePluginAllowedByConfig, @@ -118,11 +119,23 @@ export function resolveProviderAuthAliasMap( if (cached) { return cached; } - const snapshot = loadPluginMetadataSnapshot({ - config: params?.config ?? {}, - workspaceDir: params?.workspaceDir, - env, - }); + const config = params?.config ?? {}; + const snapshot = + params?.workspaceDir !== undefined + ? (getCurrentPluginMetadataSnapshot({ + config, + workspaceDir: params.workspaceDir, + env, + }) ?? + loadPluginMetadataSnapshot({ + config, + workspaceDir: params.workspaceDir, + env, + })) + : loadPluginMetadataSnapshot({ + config, + env, + }); const preferredAliases = new Map(); const aliases: Record = Object.create(null) as Record; for (const plugin of snapshot.plugins) { diff --git a/src/agents/skills/plugin-skills.ts b/src/agents/skills/plugin-skills.ts index d7875d6a9b6..757c926df5d 100644 --- a/src/agents/skills/plugin-skills.ts +++ b/src/agents/skills/plugin-skills.ts @@ -9,6 +9,7 @@ import { resolveEffectivePluginActivationState, resolveMemorySlotDecision, } from "../../plugins/config-policy.js"; +import { getCurrentPluginMetadataSnapshot } from "../../plugins/current-plugin-metadata-snapshot.js"; import { loadPluginMetadataSnapshot } from "../../plugins/plugin-metadata-snapshot.js"; import { hasKind } from "../../plugins/slots.js"; import { isPathInsideWithRealpath } from "../../security/scan-paths.js"; @@ -28,11 +29,18 @@ export function resolvePluginSkillDirs(params: { if (!workspaceDir) { return []; } - const metadataSnapshot = loadPluginMetadataSnapshot({ - workspaceDir, - config: params.config ?? {}, - env: process.env, - }); + const config = params.config ?? {}; + const metadataSnapshot = + getCurrentPluginMetadataSnapshot({ + config, + env: process.env, + workspaceDir, + }) ?? + loadPluginMetadataSnapshot({ + workspaceDir, + config, + env: process.env, + }); const registry = metadataSnapshot.manifestRegistry; if (registry.plugins.length === 0) { publishPluginSkills([], { @@ -41,10 +49,10 @@ export function resolvePluginSkillDirs(params: { return []; } const normalizedPlugins = normalizePluginsConfigWithResolver( - params.config?.plugins, + config.plugins, metadataSnapshot.normalizePluginId, ); - const acpRuntimeAvailable = isAcpRuntimeSpawnAvailable({ config: params.config }); + const acpRuntimeAvailable = isAcpRuntimeSpawnAvailable({ config }); const memorySlot = normalizedPlugins.slots.memory; let selectedMemoryPluginId: string | null = null; const seen = new Set(); @@ -58,7 +66,7 @@ export function resolvePluginSkillDirs(params: { id: record.id, origin: record.origin, config: normalizedPlugins, - rootConfig: params.config, + rootConfig: config, enabledByDefault: record.enabledByDefault, }); if (!activationState.activated) {