From d3628792825956702be7a6253061b96d976c623d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 4 May 2026 23:45:31 +0100 Subject: [PATCH] fix(plugins): normalize compat allowlist aliases --- ....providers.plugin-allowlist-compat.test.ts | 24 +++++++++++++++++++ src/plugins/bundled-compat.ts | 5 +++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/agents/models-config.providers.plugin-allowlist-compat.test.ts b/src/agents/models-config.providers.plugin-allowlist-compat.test.ts index 63e9d72cb0d..c48554b07e5 100644 --- a/src/agents/models-config.providers.plugin-allowlist-compat.test.ts +++ b/src/agents/models-config.providers.plugin-allowlist-compat.test.ts @@ -153,6 +153,30 @@ describe("implicit provider plugin allowlist compatibility", () => { }); }); + it("re-enables globally disabled plugins when allowlist mode accepts a plugin alias", () => { + const config = withBundledPluginEnablementCompat({ + config: { + plugins: { + enabled: false, + allow: [" Google-Gemini-Cli "], + bundledDiscovery: "allowlist", + }, + }, + pluginIds: ["google"], + }); + + expect(config).toEqual({ + plugins: { + enabled: true, + allow: [" Google-Gemini-Cli "], + bundledDiscovery: "allowlist", + entries: { + google: { enabled: true }, + }, + }, + }); + }); + it("still honors explicit plugin denies over compat allowlist injection", () => { const config = withBundledPluginEnablementCompat({ config: withBundledPluginAllowlistCompat({ diff --git a/src/plugins/bundled-compat.ts b/src/plugins/bundled-compat.ts index c86bc7d975c..67f739e2768 100644 --- a/src/plugins/bundled-compat.ts +++ b/src/plugins/bundled-compat.ts @@ -1,6 +1,7 @@ import type { OpenClawConfig } from "../config/types.openclaw.js"; import type { PluginEntryConfig } from "../config/types.plugins.js"; import { hasExplicitPluginConfig } from "./config-policy.js"; +import { normalizePluginId } from "./config-state.js"; export function withBundledPluginAllowlistCompat(params: { config: OpenClawConfig | undefined; @@ -45,7 +46,9 @@ export function withBundledPluginEnablementCompat(params: { const useCompatDiscovery = params.config?.plugins?.bundledDiscovery === "compat"; const allow = params.config?.plugins?.allow; const allowSet = - !useCompatDiscovery && Array.isArray(allow) && allow.length > 0 ? new Set(allow) : undefined; + !useCompatDiscovery && Array.isArray(allow) && allow.length > 0 + ? new Set(allow.map((pluginId) => normalizePluginId(pluginId)).filter(Boolean)) + : undefined; let hasEligiblePlugin = false; let changed = false; const nextEntries: Record = { ...existingEntries };