From 8ebc76931f8c4459658d8f3db07b3daffaaa2a84 Mon Sep 17 00:00:00 2001 From: zhi Date: Fri, 20 Mar 2026 06:27:46 +0000 Subject: [PATCH] fix(plugin): normalize OpenClaw plugin config shapes - Accept flat config, nested entry.config, or missing config - Treat plugin as enabled unless explicitly disabled - Log resolved runtime config for gateway diagnostics --- plugin/index.ts | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/plugin/index.ts b/plugin/index.ts index c082198..84b10fd 100644 --- a/plugin/index.ts +++ b/plugin/index.ts @@ -17,6 +17,11 @@ interface PluginConfig { logLevel?: 'debug' | 'info' | 'warn' | 'error'; } +interface PluginEntryLike { + enabled?: boolean; + config?: PluginConfig; +} + interface PluginAPI { logger: { info: (...args: any[]) => void; @@ -30,7 +35,7 @@ interface PluginAPI { registerTool: (factory: (ctx: any) => any) => void; } -export default function register(api: PluginAPI, config: PluginConfig) { +export default function register(api: PluginAPI, rawConfig: PluginConfig | PluginEntryLike | undefined) { const logger = api.logger || { info: (...args: any[]) => console.log('[HF-Monitor]', ...args), error: (...args: any[]) => console.error('[HF-Monitor]', ...args), @@ -38,7 +43,24 @@ export default function register(api: PluginAPI, config: PluginConfig) { warn: (...args: any[]) => console.warn('[HF-Monitor]', ...args), }; - if (!config?.enabled) { + const entryLike = rawConfig as PluginEntryLike | undefined; + const config: PluginConfig = entryLike?.config + ? { + ...entryLike.config, + enabled: entryLike.config.enabled ?? entryLike.enabled, + } + : ((rawConfig as PluginConfig | undefined) ?? {}); + + const enabled = config.enabled !== false; + + logger.info('HarborForge Monitor plugin config resolved', { + enabled, + hasApiKey: Boolean(config.apiKey), + backendUrl: config.backendUrl ?? null, + identifier: config.identifier ?? null, + }); + + if (!enabled) { logger.info('HarborForge Monitor plugin disabled'); return; }