fix: remove circular self-dependency, default to anthropic/claude-sonnet-4-6 with thinking off

- Remove gsd-pi from its own dependencies (circular dep caused ENOTEMPTY install failures)
- Auto-select anthropic/claude-sonnet-4-6 as default model for new installs
- Reset to valid model if configured model no longer exists in registry
- Default thinking level to off
This commit is contained in:
Lex Christopherson 2026-03-11 01:37:14 -06:00
parent 1c714e09e3
commit b364e369d5
3 changed files with 19 additions and 9 deletions

4
package-lock.json generated
View file

@ -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": {

View file

@ -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": {

View file

@ -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)