From 60818959b01bfd0d71c9288a0f039460ff469e91 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 20 Apr 2026 14:04:04 +0100 Subject: [PATCH] refactor: share bundled plugin compat decisions --- src/plugins/activation-context.ts | 129 ++++++++++++++++-------------- 1 file changed, 69 insertions(+), 60 deletions(-) diff --git a/src/plugins/activation-context.ts b/src/plugins/activation-context.ts index 252a5b158d3..fa9add9df4c 100644 --- a/src/plugins/activation-context.ts +++ b/src/plugins/activation-context.ts @@ -52,6 +52,23 @@ export type BundledPluginCompatibleLoadValues = Pick< "rawConfig" | "config" | "activationSourceConfig" | "autoEnabledReasons" | "compatPluginIds" >; +type BundledPluginCompatibleActivationParams = { + rawConfig?: OpenClawConfig; + resolvedConfig?: OpenClawConfig; + autoEnabledReasons?: Record; + env?: NodeJS.ProcessEnv; + workspaceDir?: string; + onlyPluginIds?: readonly string[]; + applyAutoEnable?: boolean; + compatMode: PluginActivationBundledCompatMode; + resolveCompatPluginIds: (params: { + config?: OpenClawConfig; + workspaceDir?: string; + env?: NodeJS.ProcessEnv; + onlyPluginIds?: readonly string[]; + }) => string[]; +}; + export function withActivatedPluginIds(params: { config?: OpenClawConfig; pluginIds: readonly string[]; @@ -117,6 +134,34 @@ export function applyPluginCompatibilityOverrides(params: { return vitestCompat; } +function shouldResolveBundledCompatPluginIds(params: { + compatMode: PluginActivationBundledCompatMode; + allowlistCompatEnabled: boolean; +}): boolean { + return ( + params.allowlistCompatEnabled || + params.compatMode.enablement === "always" || + (params.compatMode.enablement === "allowlist" && params.allowlistCompatEnabled) || + params.compatMode.vitest === true + ); +} + +function createBundledPluginCompatConfig(params: { + compatMode: PluginActivationBundledCompatMode; + allowlistCompatEnabled: boolean; + compatPluginIds: string[]; +}): PluginActivationCompatConfig { + return { + allowlistPluginIds: params.allowlistCompatEnabled ? params.compatPluginIds : undefined, + enablementPluginIds: + params.compatMode.enablement === "always" || + (params.compatMode.enablement === "allowlist" && params.allowlistCompatEnabled) + ? params.compatPluginIds + : undefined, + vitestPluginIds: params.compatMode.vitest ? params.compatPluginIds : undefined, + }; +} + export function resolvePluginActivationSnapshot(params: { rawConfig?: OpenClawConfig; resolvedConfig?: OpenClawConfig; @@ -182,22 +227,9 @@ export function resolvePluginActivationInputs(params: { }; } -export function resolveBundledPluginCompatibleActivationInputs(params: { - rawConfig?: OpenClawConfig; - resolvedConfig?: OpenClawConfig; - autoEnabledReasons?: Record; - env?: NodeJS.ProcessEnv; - workspaceDir?: string; - onlyPluginIds?: readonly string[]; - applyAutoEnable?: boolean; - compatMode: PluginActivationBundledCompatMode; - resolveCompatPluginIds: (params: { - config?: OpenClawConfig; - workspaceDir?: string; - env?: NodeJS.ProcessEnv; - onlyPluginIds?: readonly string[]; - }) => string[]; -}): BundledPluginCompatibleActivationInputs { +export function resolveBundledPluginCompatibleActivationInputs( + params: BundledPluginCompatibleActivationParams, +): BundledPluginCompatibleActivationInputs { const snapshot = resolvePluginActivationSnapshot({ rawConfig: params.rawConfig, resolvedConfig: params.resolvedConfig, @@ -206,11 +238,10 @@ export function resolveBundledPluginCompatibleActivationInputs(params: { applyAutoEnable: params.applyAutoEnable, }); const allowlistCompatEnabled = params.compatMode.allowlist === true; - const shouldResolveCompatPluginIds = - allowlistCompatEnabled || - params.compatMode.enablement === "always" || - (params.compatMode.enablement === "allowlist" && allowlistCompatEnabled) || - params.compatMode.vitest === true; + const shouldResolveCompatPluginIds = shouldResolveBundledCompatPluginIds({ + compatMode: params.compatMode, + allowlistCompatEnabled, + }); const compatPluginIds = shouldResolveCompatPluginIds ? params.resolveCompatPluginIds({ config: snapshot.config, @@ -224,15 +255,11 @@ export function resolveBundledPluginCompatibleActivationInputs(params: { resolvedConfig: snapshot.config, autoEnabledReasons: snapshot.autoEnabledReasons, env: params.env, - compat: { - allowlistPluginIds: allowlistCompatEnabled ? compatPluginIds : undefined, - enablementPluginIds: - params.compatMode.enablement === "always" || - (params.compatMode.enablement === "allowlist" && allowlistCompatEnabled) - ? compatPluginIds - : undefined, - vitestPluginIds: params.compatMode.vitest ? compatPluginIds : undefined, - }, + compat: createBundledPluginCompatConfig({ + compatMode: params.compatMode, + allowlistCompatEnabled, + compatPluginIds, + }), }); return { @@ -241,22 +268,9 @@ export function resolveBundledPluginCompatibleActivationInputs(params: { }; } -export function resolveBundledPluginCompatibleLoadValues(params: { - rawConfig?: OpenClawConfig; - resolvedConfig?: OpenClawConfig; - autoEnabledReasons?: Record; - env?: NodeJS.ProcessEnv; - workspaceDir?: string; - onlyPluginIds?: readonly string[]; - applyAutoEnable?: boolean; - compatMode: PluginActivationBundledCompatMode; - resolveCompatPluginIds: (params: { - config?: OpenClawConfig; - workspaceDir?: string; - env?: NodeJS.ProcessEnv; - onlyPluginIds?: readonly string[]; - }) => string[]; -}): BundledPluginCompatibleLoadValues { +export function resolveBundledPluginCompatibleLoadValues( + params: BundledPluginCompatibleActivationParams, +): BundledPluginCompatibleLoadValues { const env = params.env ?? process.env; const rawConfig = params.rawConfig ?? params.resolvedConfig; let resolvedConfig = params.resolvedConfig ?? params.rawConfig; @@ -272,11 +286,10 @@ export function resolveBundledPluginCompatibleLoadValues(params: { } const allowlistCompatEnabled = params.compatMode.allowlist === true; - const shouldResolveCompatPluginIds = - allowlistCompatEnabled || - params.compatMode.enablement === "always" || - (params.compatMode.enablement === "allowlist" && allowlistCompatEnabled) || - params.compatMode.vitest === true; + const shouldResolveCompatPluginIds = shouldResolveBundledCompatPluginIds({ + compatMode: params.compatMode, + allowlistCompatEnabled, + }); const compatPluginIds = shouldResolveCompatPluginIds ? params.resolveCompatPluginIds({ config: resolvedConfig, @@ -287,15 +300,11 @@ export function resolveBundledPluginCompatibleLoadValues(params: { : []; const config = applyPluginCompatibilityOverrides({ config: resolvedConfig, - compat: { - allowlistPluginIds: allowlistCompatEnabled ? compatPluginIds : undefined, - enablementPluginIds: - params.compatMode.enablement === "always" || - (params.compatMode.enablement === "allowlist" && allowlistCompatEnabled) - ? compatPluginIds - : undefined, - vitestPluginIds: params.compatMode.vitest ? compatPluginIds : undefined, - }, + compat: createBundledPluginCompatConfig({ + compatMode: params.compatMode, + allowlistCompatEnabled, + compatPluginIds, + }), env, });