| import { normalizeChatChannelId } from "../channels/registry.js"; | |
| import type { OpenClawConfig } from "../config/config.js"; | |
| import { ensurePluginAllowlisted } from "../config/plugins-allowlist.js"; | |
| import { setPluginEnabledInConfig } from "./toggle-config.js"; | |
| export type PluginEnableResult = { | |
| config: OpenClawConfig; | |
| enabled: boolean; | |
| reason?: string; | |
| }; | |
| export function enablePluginInConfig(cfg: OpenClawConfig, pluginId: string): PluginEnableResult { | |
| const builtInChannelId = normalizeChatChannelId(pluginId); | |
| const resolvedId = builtInChannelId ?? pluginId; | |
| if (cfg.plugins?.enabled === false) { | |
| return { config: cfg, enabled: false, reason: "plugins disabled" }; | |
| } | |
| if (cfg.plugins?.deny?.includes(pluginId) || cfg.plugins?.deny?.includes(resolvedId)) { | |
| return { config: cfg, enabled: false, reason: "blocked by denylist" }; | |
| } | |
| let next = setPluginEnabledInConfig(cfg, resolvedId, true); | |
| next = ensurePluginAllowlisted(next, resolvedId); | |
| return { config: next, enabled: true }; | |
| } | |