diff --git a/internal/tui/components/chat/sidebar/sidebar.go b/internal/tui/components/chat/sidebar/sidebar.go index a454605c8ee2938fa02d98d9770704388d0bd38a..40bc8821e0a3dc7c3dec62bbcde34a5241ec4aa7 100644 --- a/internal/tui/components/chat/sidebar/sidebar.go +++ b/internal/tui/components/chat/sidebar/sidebar.go @@ -8,7 +8,6 @@ import ( tea "charm.land/bubbletea/v2" "charm.land/lipgloss/v2" - "github.com/charmbracelet/catwalk/pkg/catwalk" "github.com/charmbracelet/crush/internal/config" "github.com/charmbracelet/crush/internal/csync" "github.com/charmbracelet/crush/internal/diff" @@ -548,7 +547,6 @@ func (s *sidebarCmp) currentModelBlock() string { selectedModel := cfg.Models[agentCfg.Model] model := config.Get().GetModelByType(agentCfg.Model) - modelProvider := config.Get().GetProviderForModel(agentCfg.Model) t := styles.CurrentTheme() @@ -560,15 +558,14 @@ func (s *sidebarCmp) currentModelBlock() string { } if model.CanReason { reasoningInfoStyle := t.S().Subtle.PaddingLeft(2) - switch modelProvider.Type { - case catwalk.TypeAnthropic: + if len(model.ReasoningLevels) == 0 { formatter := cases.Title(language.English, cases.NoLower) if selectedModel.Think { parts = append(parts, reasoningInfoStyle.Render(formatter.String("Thinking on"))) } else { parts = append(parts, reasoningInfoStyle.Render(formatter.String("Thinking off"))) } - default: + } else { reasoningEffort := model.DefaultReasoningEffort if selectedModel.ReasoningEffort != "" { reasoningEffort = selectedModel.ReasoningEffort diff --git a/internal/tui/components/dialogs/commands/commands.go b/internal/tui/components/dialogs/commands/commands.go index cde5b203ca985f81c390d02725ef04d11a5cd518..3c86c984561f96350b2b621c15ae14be9649ae36 100644 --- a/internal/tui/components/dialogs/commands/commands.go +++ b/internal/tui/components/dialogs/commands/commands.go @@ -10,10 +10,8 @@ import ( "charm.land/bubbles/v2/key" tea "charm.land/bubbletea/v2" "charm.land/lipgloss/v2" - "github.com/charmbracelet/catwalk/pkg/catwalk" "github.com/charmbracelet/crush/internal/agent" - "github.com/charmbracelet/crush/internal/agent/hyper" "github.com/charmbracelet/crush/internal/agent/tools/mcp" "github.com/charmbracelet/crush/internal/config" "github.com/charmbracelet/crush/internal/csync" @@ -364,7 +362,7 @@ func (c *commandDialogCmp) defaultCommands() []Command { selectedModel := cfg.Models[agentCfg.Model] // Anthropic models: thinking toggle - if providerCfg.Type == catwalk.TypeAnthropic || providerCfg.Type == catwalk.Type(hyper.Name) { + if model.CanReason && len(model.ReasoningLevels) == 0 { status := "Enable" if selectedModel.Think { status = "Disable" diff --git a/internal/ui/dialog/commands.go b/internal/ui/dialog/commands.go index 6595b56fb702069b6a0f0786ee25cd4e94f13642..2422c39cc79b9ce1b71b5891ad55c2f4107c9295 100644 --- a/internal/ui/dialog/commands.go +++ b/internal/ui/dialog/commands.go @@ -9,8 +9,6 @@ import ( "charm.land/bubbles/v2/spinner" "charm.land/bubbles/v2/textinput" tea "charm.land/bubbletea/v2" - "github.com/charmbracelet/catwalk/pkg/catwalk" - "github.com/charmbracelet/crush/internal/agent/hyper" "github.com/charmbracelet/crush/internal/commands" "github.com/charmbracelet/crush/internal/config" "github.com/charmbracelet/crush/internal/ui/common" @@ -405,7 +403,7 @@ func (c *Commands) defaultCommands() []*CommandItem { selectedModel := cfg.Models[agentCfg.Model] // Anthropic models: thinking toggle - if providerCfg.Type == catwalk.TypeAnthropic || providerCfg.Type == catwalk.Type(hyper.Name) { + if model.CanReason && len(model.ReasoningLevels) == 0 { status := "Enable" if selectedModel.Think { status = "Disable" diff --git a/internal/ui/model/sidebar.go b/internal/ui/model/sidebar.go index 7e6a61864a42f37ba7bf1c955b6844f4c488b942..7316025aaedad67688b226cf1c7c37314f3b7a30 100644 --- a/internal/ui/model/sidebar.go +++ b/internal/ui/model/sidebar.go @@ -5,7 +5,6 @@ import ( "fmt" "charm.land/lipgloss/v2" - "github.com/charmbracelet/catwalk/pkg/catwalk" "github.com/charmbracelet/crush/internal/ui/common" "github.com/charmbracelet/crush/internal/ui/logo" uv "github.com/charmbracelet/ultraviolet" @@ -28,14 +27,13 @@ func (m *UI) modelInfo(width int) string { // Only check reasoning if model can reason if model.CatwalkCfg.CanReason { - switch providerConfig.Type { - case catwalk.TypeAnthropic: + if model.ModelCfg.ReasoningEffort == "" { if model.ModelCfg.Think { reasoningInfo = "Thinking On" } else { reasoningInfo = "Thinking Off" } - default: + } else { formatter := cases.Title(language.English, cases.NoLower) reasoningEffort := cmp.Or(model.ModelCfg.ReasoningEffort, model.CatwalkCfg.DefaultReasoningEffort) reasoningInfo = formatter.String(fmt.Sprintf("Reasoning %s", reasoningEffort))