mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 09:10:45 +00:00
refactor: share bundled plugin compat decisions
This commit is contained in:
@@ -52,6 +52,23 @@ export type BundledPluginCompatibleLoadValues = Pick<
|
||||
"rawConfig" | "config" | "activationSourceConfig" | "autoEnabledReasons" | "compatPluginIds"
|
||||
>;
|
||||
|
||||
type BundledPluginCompatibleActivationParams = {
|
||||
rawConfig?: OpenClawConfig;
|
||||
resolvedConfig?: OpenClawConfig;
|
||||
autoEnabledReasons?: Record<string, string[]>;
|
||||
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<string, string[]>;
|
||||
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<string, string[]>;
|
||||
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,
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user