From 07325c27e8c116e38de4a9f91052e14e789c6d2f Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Sun, 25 Jan 2026 23:59:11 +0100 Subject: [PATCH] fix: use findInitialModel in SDK, default to opus-4-5 for anthropic --- .../coding-agent/src/core/model-resolver.ts | 4 +- packages/coding-agent/src/core/sdk.ts | 39 +++++++------------ 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/packages/coding-agent/src/core/model-resolver.ts b/packages/coding-agent/src/core/model-resolver.ts index aa9a7c0f..b7631725 100644 --- a/packages/coding-agent/src/core/model-resolver.ts +++ b/packages/coding-agent/src/core/model-resolver.ts @@ -11,8 +11,8 @@ import type { ModelRegistry } from "./model-registry.js"; /** Default model IDs for each known provider */ export const defaultModelPerProvider: Record = { - "amazon-bedrock": "global.anthropic.claude-sonnet-4-5-20250929-v1:0", - anthropic: "claude-sonnet-4-5", + "amazon-bedrock": "us.anthropic.claude-opus-4-20250514-v1:0", + anthropic: "claude-opus-4-5", openai: "gpt-5.1-codex", "azure-openai-responses": "gpt-5.2", "openai-codex": "gpt-5.2-codex", diff --git a/packages/coding-agent/src/core/sdk.ts b/packages/coding-agent/src/core/sdk.ts index bd7be23e..1a1bb866 100644 --- a/packages/coding-agent/src/core/sdk.ts +++ b/packages/coding-agent/src/core/sdk.ts @@ -7,6 +7,7 @@ import { AuthStorage } from "./auth-storage.js"; import type { ExtensionRunner, LoadExtensionsResult, ToolDefinition } from "./extensions/index.js"; import { convertToLlm } from "./messages.js"; import { ModelRegistry } from "./model-registry.js"; +import { findInitialModel } from "./model-resolver.js"; import type { ResourceLoader } from "./resource-loader.js"; import { DefaultResourceLoader } from "./resource-loader.js"; import { SessionManager } from "./session-manager.js"; @@ -195,33 +196,21 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {} } } - // If still no model, try settings default + // If still no model, use findInitialModel (checks settings default, then provider defaults) if (!model) { - const defaultProvider = settingsManager.getDefaultProvider(); - const defaultModelId = settingsManager.getDefaultModel(); - if (defaultProvider && defaultModelId) { - const settingsModel = modelRegistry.find(defaultProvider, defaultModelId); - if (settingsModel && (await modelRegistry.getApiKey(settingsModel))) { - model = settingsModel; - } - } - } - - // Fall back to first available model with a valid API key - if (!model) { - for (const m of modelRegistry.getAll()) { - if (await modelRegistry.getApiKey(m)) { - model = m; - break; - } - } - if (model) { - if (modelFallbackMessage) { - modelFallbackMessage += `. Using ${model.provider}/${model.id}`; - } - } else { - // No models available - set message so user knows to /login or configure keys + const result = await findInitialModel({ + scopedModels: [], + isContinuing: hasExistingSession, + defaultProvider: settingsManager.getDefaultProvider(), + defaultModelId: settingsManager.getDefaultModel(), + defaultThinkingLevel: settingsManager.getDefaultThinkingLevel(), + modelRegistry, + }); + model = result.model; + if (!model) { modelFallbackMessage = `No models available. Use /login or set an API key environment variable. See ${join(getDocsPath(), "authentication.md")}. Then use /model to select a model.`; + } else if (modelFallbackMessage) { + modelFallbackMessage += `. Using ${model.provider}/${model.id}`; } }