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 | undefined; const existing = channels?.[builtInChannelId]; const existingRecord = existing && typeof existing === "object" && !Array.isArray(existing) ? (existing as Record) : {}; return { ...next, channels: { ...config.channels, [builtInChannelId]: { ...existingRecord, enabled, }, }, }; }