From b3d23191a0d0a879916a9137bc755967c7bccb8a Mon Sep 17 00:00:00 2001 From: kujtimiihoxha Date: Fri, 10 Oct 2025 13:34:08 +0200 Subject: [PATCH] chore: change reasoning effort --- go.mod | 5 ++--- go.sum | 4 ++-- internal/config/config.go | 2 +- internal/config/load.go | 6 ----- .../components/dialogs/commands/commands.go | 2 +- .../tui/components/dialogs/models/list.go | 2 +- .../components/dialogs/reasoning/reasoning.go | 22 ++++++++----------- internal/tui/page/chat/chat.go | 2 +- 8 files changed, 17 insertions(+), 28 deletions(-) diff --git a/go.mod b/go.mod index 7c65b8aed977a86983dc3e874327f9428838d28d..52e15a657fc1769af27f3c924594214d761c76fa 100644 --- a/go.mod +++ b/go.mod @@ -13,8 +13,9 @@ require ( github.com/charlievieth/fastwalk v1.0.14 github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250820203609-601216f68ee2 github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20250910155747-997384b0b35e - github.com/charmbracelet/catwalk v0.6.4-0.20251002104711-f8c6c1e5b4a5 + github.com/charmbracelet/catwalk v0.6.5-0.20251010111259-a1bafd2530bb github.com/charmbracelet/fang v0.4.2 + github.com/charmbracelet/fantasy v0.0.0-20251003071236-5d39f0348e5d github.com/charmbracelet/glamour/v2 v2.0.0-20250811143442-a27abb32f018 github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.3.0.20250917201909-41ff0bf215ea github.com/charmbracelet/log/v2 v2.0.0-20250226163916-c379e29ff706 @@ -46,8 +47,6 @@ require ( mvdan.cc/sh/v3 v3.12.1-0.20250902163504-3cf4fd5717a5 ) -require github.com/charmbracelet/fantasy v0.0.0-20251003071236-5d39f0348e5d - require ( cloud.google.com/go v0.116.0 // indirect cloud.google.com/go/auth v0.9.3 // indirect diff --git a/go.sum b/go.sum index 8bb0e350a15984faf142231dda0aaeecbbe480ca..54c43709bfe1e904fab540d298adea24aaf2630f 100644 --- a/go.sum +++ b/go.sum @@ -45,8 +45,8 @@ github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250820203609-601216f68ee2 github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250820203609-601216f68ee2/go.mod h1:6HamsBKWqEC/FVHuQMHgQL+knPyvHH55HwJDHl/adMw= github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20250910155747-997384b0b35e h1:4BBnKWFwJ5FLyhw/ijFxKE04i9rubr8WIPR1kjO57iA= github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20250910155747-997384b0b35e/go.mod h1:F7AfLKYQqpM3NNBVs7ctW417tavhvoh9SBjsgtwpzbY= -github.com/charmbracelet/catwalk v0.6.4-0.20251002104711-f8c6c1e5b4a5 h1:d/Gs0/fQoe4fJ7wnu7C1oA72C5KkTmacbXLN86EeqqE= -github.com/charmbracelet/catwalk v0.6.4-0.20251002104711-f8c6c1e5b4a5/go.mod h1:ReU4SdrLfe63jkEjWMdX2wlZMV3k9r11oQAmzN0m+KY= +github.com/charmbracelet/catwalk v0.6.5-0.20251010111259-a1bafd2530bb h1:1dANrQJF+y+irksWTqd4dvN91JP7e/gdYZscef3PxkY= +github.com/charmbracelet/catwalk v0.6.5-0.20251010111259-a1bafd2530bb/go.mod h1:ReU4SdrLfe63jkEjWMdX2wlZMV3k9r11oQAmzN0m+KY= github.com/charmbracelet/colorprofile v0.3.2 h1:9J27WdztfJQVAQKX2WOlSSRB+5gaKqqITmrvb1uTIiI= github.com/charmbracelet/colorprofile v0.3.2/go.mod h1:mTD5XzNeWHj8oqHb+S1bssQb7vIHbepiebQ2kPKVKbI= github.com/charmbracelet/fang v0.4.2 h1:nWr7Tb82/TTNNGMGG35aTZ1X68loAOQmpb0qxkKXjas= diff --git a/internal/config/config.go b/internal/config/config.go index 9ccf837c9738773469b457cbeeef3474b1319e63..8d6c2c57ba55211b9391c7c192b3d4a12c783dc0 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -563,7 +563,7 @@ func (c *ProviderConfig) TestConnection(resolver VariableResolver) error { testURL = baseURL + "/models" headers["x-api-key"] = apiKey headers["anthropic-version"] = "2023-06-01" - case catwalk.TypeGemini: + case catwalk.TypeGoogle: baseURL, _ := resolver.ResolveValue(c.BaseURL) if baseURL == "" { baseURL = "https://generativelanguage.googleapis.com" diff --git a/internal/config/load.go b/internal/config/load.go index b610b4ab1e3f5df7bcc71e9bb1b151ae5e3aa8ff..1e7d9c4e5d80623bcd9201a7170ded97a0433eb1 100644 --- a/internal/config/load.go +++ b/internal/config/load.go @@ -282,12 +282,6 @@ func (c *Config) configureProviders(env env.Env, resolver VariableResolver, know c.Providers.Del(id) continue } - if providerConfig.Type != catwalk.TypeOpenAI && providerConfig.Type != catwalk.TypeAnthropic && providerConfig.Type != catwalk.TypeGemini { - slog.Warn("Skipping custom provider because the provider type is not supported", "provider", id, "type", providerConfig.Type) - c.Providers.Del(id) - continue - } - apiKey, err := resolver.ResolveValue(providerConfig.APIKey) if apiKey == "" || err != nil { slog.Warn("Provider is missing API key, this might be OK for local providers", "provider", id) diff --git a/internal/tui/components/dialogs/commands/commands.go b/internal/tui/components/dialogs/commands/commands.go index 0c3269336b5d382c8a5e4ddcca316696850a1052..03289032c069ec423d158060e8805b32af3fcc69 100644 --- a/internal/tui/components/dialogs/commands/commands.go +++ b/internal/tui/components/dialogs/commands/commands.go @@ -326,7 +326,7 @@ func (c *commandDialogCmp) defaultCommands() []Command { } // OpenAI models: reasoning effort dialog - if model.HasReasoningEffort { + if len(model.ReasoningLevels) > 0 { commands = append(commands, Command{ ID: "select_reasoning_effort", Title: "Select Reasoning Effort", diff --git a/internal/tui/components/dialogs/models/list.go b/internal/tui/components/dialogs/models/list.go index 77398c4d17d85126ab155a9e9c5b2085c0691672..0ec3816c1bd08b841686ea6e852d027db7b57848 100644 --- a/internal/tui/components/dialogs/models/list.go +++ b/internal/tui/components/dialogs/models/list.go @@ -151,7 +151,7 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd { ContextWindow: model.ContextWindow, DefaultMaxTokens: model.DefaultMaxTokens, CanReason: model.CanReason, - HasReasoningEffort: model.HasReasoningEffort, + ReasoningLevels: model.ReasoningLevels, DefaultReasoningEffort: model.DefaultReasoningEffort, SupportsImages: model.SupportsImages, } diff --git a/internal/tui/components/dialogs/reasoning/reasoning.go b/internal/tui/components/dialogs/reasoning/reasoning.go index a53819d1644528159158bfc3f4765d95a1cc91d3..bfd7a45ad696a1b25c417ea955f063b91830c1d4 100644 --- a/internal/tui/components/dialogs/reasoning/reasoning.go +++ b/internal/tui/components/dialogs/reasoning/reasoning.go @@ -5,6 +5,8 @@ import ( "github.com/charmbracelet/bubbles/v2/key" tea "github.com/charmbracelet/bubbletea/v2" "github.com/charmbracelet/lipgloss/v2" + "golang.org/x/text/cases" + "golang.org/x/text/language" "github.com/charmbracelet/crush/internal/config" "github.com/charmbracelet/crush/internal/tui/components/core" @@ -130,19 +132,13 @@ func (r *reasoningDialogCmp) populateEffortOptions() tea.Cmd { currentEffort = model.DefaultReasoningEffort } - efforts := []EffortOption{ - { - Title: "Low", - Effort: "low", - }, - { - Title: "Medium", - Effort: "medium", - }, - { - Title: "High", - Effort: "high", - }, + efforts := []EffortOption{} + caser := cases.Title(language.Und) + for _, level := range model.ReasoningLevels { + efforts = append(efforts, EffortOption{ + Title: caser.String(level), + Effort: level, + }) } effortItems := []list.CompletionItem[EffortOption]{} diff --git a/internal/tui/page/chat/chat.go b/internal/tui/page/chat/chat.go index 6e0a4de9112397db8d487d0ed6c0c394e177a6a8..f7bc2b4e11726727cbf1030916495c5eda4230ba 100644 --- a/internal/tui/page/chat/chat.go +++ b/internal/tui/page/chat/chat.go @@ -563,7 +563,7 @@ func (p *chatPage) openReasoningDialog() tea.Cmd { model := cfg.GetModelByType(agentCfg.Model) providerCfg := cfg.GetProviderForModel(agentCfg.Model) - if providerCfg != nil && model != nil && model.HasReasoningEffort { + if providerCfg != nil && model != nil && len(model.ReasoningLevels) > 0 { // Return the OpenDialogMsg directly so it bubbles up to the main TUI return dialogs.OpenDialogMsg{ Model: reasoning.NewReasoningDialog(),