diff --git a/src/channels/config-presence.ts b/src/channels/config-presence.ts index e08b2b7d007..09d30bad404 100644 --- a/src/channels/config-presence.ts +++ b/src/channels/config-presence.ts @@ -115,10 +115,10 @@ function hasEnvConfiguredChannel(env: NodeJS.ProcessEnv): boolean { } export function hasPotentialConfiguredChannels( - cfg: OpenClawConfig, + cfg: OpenClawConfig | null | undefined, env: NodeJS.ProcessEnv = process.env, ): boolean { - const channels = isRecord(cfg.channels) ? cfg.channels : null; + const channels = isRecord(cfg?.channels) ? cfg.channels : null; if (channels) { for (const [key, value] of Object.entries(channels)) { if (IGNORED_CHANNEL_CONFIG_KEYS.has(key)) { diff --git a/src/config/plugin-auto-enable.ts b/src/config/plugin-auto-enable.ts index 942d0edf82c..73d57f470ac 100644 --- a/src/config/plugin-auto-enable.ts +++ b/src/config/plugin-auto-enable.ts @@ -653,20 +653,21 @@ export function applyPluginAutoEnable(params: { manifestRegistry?: PluginManifestRegistry; }): PluginAutoEnableResult { const env = params.env ?? process.env; - if (!configMayNeedPluginAutoEnable(params.config, env)) { - return { config: params.config, changes: [], autoEnabledReasons: {} }; + const config = params.config ?? ({} as OpenClawConfig); + if (!configMayNeedPluginAutoEnable(config, env)) { + return { config, changes: [], autoEnabledReasons: {} }; } const registry = params.manifestRegistry ?? - (configMayNeedPluginManifestRegistry(params.config) - ? loadPluginManifestRegistry({ config: params.config, env }) + (configMayNeedPluginManifestRegistry(config) + ? loadPluginManifestRegistry({ config, env }) : EMPTY_PLUGIN_MANIFEST_REGISTRY); - const configured = resolveConfiguredPlugins(params.config, env, registry); + const configured = resolveConfiguredPlugins(config, env, registry); if (configured.length === 0) { - return { config: params.config, changes: [], autoEnabledReasons: {} }; + return { config, changes: [], autoEnabledReasons: {} }; } - let next = params.config; + let next = config; const changes: string[] = []; const autoEnabledReasons = new Map(); diff --git a/src/plugin-sdk/facade-runtime.ts b/src/plugin-sdk/facade-runtime.ts index 164417a550f..84433d925bf 100644 --- a/src/plugin-sdk/facade-runtime.ts +++ b/src/plugin-sdk/facade-runtime.ts @@ -155,8 +155,8 @@ function getFacadeBoundaryResolvedConfig() { const resolved = { rawConfig, config, - normalizedPluginsConfig: normalizePluginsConfig(config.plugins), - sourceNormalizedPluginsConfig: normalizePluginsConfig(rawConfig.plugins), + normalizedPluginsConfig: normalizePluginsConfig(config?.plugins), + sourceNormalizedPluginsConfig: normalizePluginsConfig(rawConfig?.plugins), autoEnabledReasons: autoEnabled.autoEnabledReasons, }; cachedBoundaryRawConfig = rawConfig;