From d9b0062208beee9e71cfb3e606a7de377b8c9493 Mon Sep 17 00:00:00 2001 From: Kujtim Hoxha Date: Mon, 4 Aug 2025 14:21:53 +0200 Subject: [PATCH] chore: simplify model filtering --- internal/tui/components/chat/splash/splash.go | 14 -------------- internal/tui/components/dialogs/models/list.go | 16 ++++++++++++---- internal/tui/components/dialogs/models/models.go | 11 ----------- 3 files changed, 12 insertions(+), 29 deletions(-) diff --git a/internal/tui/components/chat/splash/splash.go b/internal/tui/components/chat/splash/splash.go index c87f965f47298a9de726ce20a16587ffde7971ca..b0681c798631ee8cf3960fda26bfc2416aff2692 100644 --- a/internal/tui/components/chat/splash/splash.go +++ b/internal/tui/components/chat/splash/splash.go @@ -100,20 +100,6 @@ func New() Splash { func (s *splashCmp) SetOnboarding(onboarding bool) { s.isOnboarding = onboarding - if onboarding { - providers, err := config.Providers() - if err != nil { - return - } - filteredProviders := []catwalk.Provider{} - - for _, p := range providers { - if strings.HasPrefix(p.APIKey, "$") && p.ID != catwalk.InferenceProviderAzure { - filteredProviders = append(filteredProviders, p) - } - } - s.modelList.SetProviders(filteredProviders) - } } func (s *splashCmp) SetProjectInit(needsInit bool) { diff --git a/internal/tui/components/dialogs/models/list.go b/internal/tui/components/dialogs/models/list.go index 4d2986d2192568c9aac4db76f9011552ac61ee34..8c22094323ca2274a421ba50d668beaa42616041 100644 --- a/internal/tui/components/dialogs/models/list.go +++ b/internal/tui/components/dialogs/models/list.go @@ -3,10 +3,12 @@ package models import ( "fmt" "slices" + "strings" tea "github.com/charmbracelet/bubbletea/v2" "github.com/charmbracelet/catwalk/pkg/catwalk" "github.com/charmbracelet/crush/internal/config" + "github.com/charmbracelet/crush/internal/env" "github.com/charmbracelet/crush/internal/tui/exp/list" "github.com/charmbracelet/crush/internal/tui/styles" "github.com/charmbracelet/crush/internal/tui/util" @@ -49,6 +51,16 @@ func (m *ModelListComponent) Init() tea.Cmd { var cmds []tea.Cmd if len(m.providers) == 0 { providers, err := config.Providers() + filteredProviders := []catwalk.Provider{} + for _, p := range providers { + hasApiKeyEnv := strings.HasPrefix(p.APIKey, "$") + resolver := config.NewEnvironmentVariableResolver(env.New()) + endpoint, _ := resolver.ResolveValue(p.APIEndpoint) + if endpoint != "" && hasApiKeyEnv { + filteredProviders = append(filteredProviders, p) + } + } + m.providers = providers if err != nil { cmds = append(cmds, util.ReportError(err)) @@ -242,7 +254,3 @@ func (m *ModelListComponent) GetModelType() int { func (m *ModelListComponent) SetInputPlaceholder(placeholder string) { m.list.SetInputPlaceholder(placeholder) } - -func (m *ModelListComponent) SetProviders(providers []catwalk.Provider) { - m.providers = providers -} diff --git a/internal/tui/components/dialogs/models/models.go b/internal/tui/components/dialogs/models/models.go index bdeaae4f3c7d86cfc7c68605574132c653022407..e09b040a52ebf911ceefc455b0892c7c9ceba754 100644 --- a/internal/tui/components/dialogs/models/models.go +++ b/internal/tui/components/dialogs/models/models.go @@ -2,7 +2,6 @@ package models import ( "fmt" - "strings" "time" "github.com/charmbracelet/bubbles/v2/help" @@ -96,16 +95,6 @@ func NewModelDialogCmp() ModelDialog { } func (m *modelDialogCmp) Init() tea.Cmd { - providers, err := config.Providers() - if err == nil { - filteredProviders := []catwalk.Provider{} - for _, p := range providers { - if strings.HasPrefix(p.APIKey, "$") && p.ID != catwalk.InferenceProviderAzure { - filteredProviders = append(filteredProviders, p) - } - } - m.modelList.SetProviders(filteredProviders) - } return tea.Batch(m.modelList.Init(), m.apiKeyInput.Init()) }