From bc0ba843ac5e929c1c25ce28eefc8a34e6c80e66 Mon Sep 17 00:00:00 2001 From: Robin Mordasiewicz Date: Sat, 14 Mar 2026 05:16:50 +0000 Subject: [PATCH] fix(agent-loader): convert model object to string for opencode compatibility mapClaudeModelToOpenCode() returns {providerID, modelID} but opencode expects model as a string. Both agent loaders now convert to 'providerID/modelID' string format before assigning to config. --- dist/index.js | 6 ++++-- src/features/claude-code-agent-loader/loader.ts | 5 ++++- src/features/claude-code-plugin-loader/agent-loader.ts | 5 ++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/dist/index.js b/dist/index.js index c24e496e7..6d9624b9d 100644 --- a/dist/index.js +++ b/dist/index.js @@ -19721,11 +19721,12 @@ function loadPluginAgents(plugins) { const originalDescription = data.description || ""; const formattedDescription = `(plugin: ${plugin.name}) ${originalDescription}`; const mappedModelOverride = mapClaudeModelToOpenCode(data.model); + const modelString = mappedModelOverride ? `${mappedModelOverride.providerID}/${mappedModelOverride.modelID}` : undefined; const config = { description: formattedDescription, mode: "subagent", prompt: body.trim(), - ...mappedModelOverride ? { model: mappedModelOverride } : {} + ...modelString ? { model: modelString } : {} }; const toolsConfig = parseToolsConfig(data.tools); if (toolsConfig) { @@ -92687,11 +92688,12 @@ function loadAgentsFromDir(agentsDir, scope) { const originalDescription = data.description || ""; const formattedDescription = `(${scope}) ${originalDescription}`; const mappedModelOverride = mapClaudeModelToOpenCode(data.model); + const modelString = mappedModelOverride ? `${mappedModelOverride.providerID}/${mappedModelOverride.modelID}` : undefined; const config4 = { description: formattedDescription, mode: data.mode || "subagent", prompt: body.trim(), - ...mappedModelOverride ? { model: mappedModelOverride } : {} + ...modelString ? { model: modelString } : {} }; const toolsConfig = parseToolsConfig2(data.tools); if (toolsConfig) { diff --git a/src/features/claude-code-agent-loader/loader.ts b/src/features/claude-code-agent-loader/loader.ts index ef84995cb..d2ef89b03 100644 --- a/src/features/claude-code-agent-loader/loader.ts +++ b/src/features/claude-code-agent-loader/loader.ts @@ -43,12 +43,15 @@ function loadAgentsFromDir(agentsDir: string, scope: AgentScope): LoadedAgent[] const formattedDescription = `(${scope}) ${originalDescription}` const mappedModelOverride = mapClaudeModelToOpenCode(data.model) + const modelString = mappedModelOverride + ? `${mappedModelOverride.providerID}/${mappedModelOverride.modelID}` + : undefined const config: ClaudeCodeAgentConfig = { description: formattedDescription, mode: data.mode || "subagent", prompt: body.trim(), - ...(mappedModelOverride ? { model: mappedModelOverride } : {}), + ...(modelString ? { model: modelString } : {}), } const toolsConfig = parseToolsConfig(data.tools) diff --git a/src/features/claude-code-plugin-loader/agent-loader.ts b/src/features/claude-code-plugin-loader/agent-loader.ts index 215e29d1b..1aff57e0c 100644 --- a/src/features/claude-code-plugin-loader/agent-loader.ts +++ b/src/features/claude-code-plugin-loader/agent-loader.ts @@ -47,12 +47,15 @@ export function loadPluginAgents(plugins: LoadedPlugin[]): Record