From c5e732951bb2ce4c9a78ad101d97573335c0d179 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 20 Jan 2026 08:47:44 +0000 Subject: [PATCH] fix: prefer bundled plugin schema --- src/plugins/loader.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/plugins/loader.ts b/src/plugins/loader.ts index dc598cf06..2b6cc2134 100644 --- a/src/plugins/loader.ts +++ b/src/plugins/loader.ts @@ -335,6 +335,12 @@ export function loadClawdbotPlugins(options: PluginLoadOptions = {}): PluginRegi ...(pluginSdkAlias ? { alias: { "clawdbot/plugin-sdk": pluginSdkAlias } } : {}), }); + const bundledIds = new Set( + discovery.candidates + .filter((candidate) => candidate.origin === "bundled") + .map((candidate) => candidate.idHint), + ); + const seenIds = new Map(); const memorySlot = normalized.slots.memory; let selectedMemoryPluginId: string | null = null; @@ -442,6 +448,22 @@ export function loadClawdbotPlugins(options: PluginLoadOptions = {}): PluginRegi : undefined; if (!definition?.configSchema) { + const hasBundledFallback = + candidate.origin !== "bundled" && bundledIds.has(candidate.idHint); + if (hasBundledFallback) { + record.enabled = false; + record.status = "disabled"; + record.error = "missing config schema (using bundled plugin)"; + registry.plugins.push(record); + registry.diagnostics.push({ + level: "warn", + pluginId: record.id, + source: record.source, + message: record.error, + }); + continue; + } + logger.error(`[plugins] ${record.id} missing config schema`); record.status = "error"; record.error = "missing config schema";