diff --git a/package-lock.json b/package-lock.json index a47768e68..3e78e584a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "gsd-pi", - "version": "0.2.3", + "version": "0.2.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "gsd-pi", - "version": "0.2.3", + "version": "0.2.4", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 6c95e4a7d..72f3ddb6b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gsd-pi", - "version": "0.2.3", + "version": "0.2.4", "description": "GSD — Get Stuff Done coding agent", "license": "MIT", "repository": { diff --git a/src/cli.ts b/src/cli.ts index d3a736515..00b917d5f 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -17,14 +17,19 @@ await runWizardIfNeeded(authStorage) const modelRegistry = new ModelRegistry(authStorage) const settingsManager = SettingsManager.create(agentDir) -// Auto-select a default model if none is configured. -// This prevents the "No model configured" error for users who logged in -// but never explicitly ran /model to pick one. -if (!settingsManager.getDefaultModel()) { - const availableModels = modelRegistry.getAvailable() +// Auto-select a default model if none is configured, or if the configured +// model no longer exists (e.g. stale settings referencing a retired model). +const configuredProvider = settingsManager.getDefaultProvider() +const configuredModel = settingsManager.getDefaultModel() +const availableModels = modelRegistry.getAvailable() +const configuredExists = configuredProvider && configuredModel && + availableModels.some((m) => m.provider === configuredProvider && m.id === configuredModel) + +if (!configuredModel || !configuredExists) { if (availableModels.length > 0) { - // Prefer a mid-tier Anthropic model (sonnet), then any Anthropic, then first available + // Preferred default: anthropic/claude-sonnet-4-6 const preferred = + availableModels.find((m) => m.provider === 'anthropic' && m.id === 'claude-sonnet-4-6') || availableModels.find((m) => m.provider === 'anthropic' && m.id.includes('sonnet')) || availableModels.find((m) => m.provider === 'anthropic') || availableModels[0] @@ -32,6 +37,11 @@ if (!settingsManager.getDefaultModel()) { } } +// Default thinking level: off +if (!settingsManager.getDefaultThinkingLevel()) { + settingsManager.setDefaultThinkingLevel('off') +} + // GSD always uses quiet startup — the gsd extension renders its own branded header if (!settingsManager.getQuietStartup()) { settingsManager.setQuietStartup(true)