Files
openclaw/src/plugins/toggle-config.ts
2026-02-23 19:40:42 +00:00

48 lines
1.1 KiB
TypeScript

import { normalizeChatChannelId } from "../channels/registry.js";
import type { OpenClawConfig } from "../config/config.js";
export function setPluginEnabledInConfig(
config: OpenClawConfig,
pluginId: string,
enabled: boolean,
): OpenClawConfig {
const builtInChannelId = normalizeChatChannelId(pluginId);
const resolvedId = builtInChannelId ?? pluginId;
const next: OpenClawConfig = {
...config,
plugins: {
...config.plugins,
entries: {
...config.plugins?.entries,
[resolvedId]: {
...(config.plugins?.entries?.[resolvedId] as object | undefined),
enabled,
},
},
},
};
if (!builtInChannelId) {
return next;
}
const channels = config.channels as Record<string, unknown> | undefined;
const existing = channels?.[builtInChannelId];
const existingRecord =
existing && typeof existing === "object" && !Array.isArray(existing)
? (existing as Record<string, unknown>)
: {};
return {
...next,
channels: {
...config.channels,
[builtInChannelId]: {
...existingRecord,
enabled,
},
},
};
}