on main help sign in
chore: simplify model filtering
commitd9b0062208beee9e71cfb3e606a7de377b8c9493 authorKujtim Hoxha <kujtimii.h@gmail.com> dateMon 4 Aug 2025, 14:21 (1 year ago) parent0de5b24
3 files changed+12−29
internal/tui/components/chat/splash/splash.go−14 internal/tui/components/dialogs/models/list.go+12−4 internal/tui/components/dialogs/models/models.go−11
internal/tui/components/chat/splash/splash.go−14
@@ -100,20 +100,6 @@ func New() Splash {
100100
101101func (s *splashCmp) SetOnboarding(onboarding bool) {
102102 s.isOnboarding = onboarding
103− if onboarding {
104− providers, err := config.Providers()
105− if err != nil {
106− return
107− }
108− filteredProviders := []catwalk.Provider{}
109−
110− for _, p := range providers {
111− if strings.HasPrefix(p.APIKey, "$") && p.ID != catwalk.InferenceProviderAzure {
112− filteredProviders = append(filteredProviders, p)
113− }
114− }
115− s.modelList.SetProviders(filteredProviders)
116− }
117103}
118104
119105func (s *splashCmp) SetProjectInit(needsInit bool) {
internal/tui/components/dialogs/models/list.go+12−4
@@ -3,10 +3,12 @@ package models
33import (
44 "fmt"
55 "slices"
6+ "strings"
67
78 tea "github.com/charmbracelet/bubbletea/v2"
89 "github.com/charmbracelet/catwalk/pkg/catwalk"
910 "github.com/charmbracelet/crush/internal/config"
11+ "github.com/charmbracelet/crush/internal/env"
1012 "github.com/charmbracelet/crush/internal/tui/exp/list"
1113 "github.com/charmbracelet/crush/internal/tui/styles"
1214 "github.com/charmbracelet/crush/internal/tui/util"
@@ -49,6 +51,16 @@ func (m *ModelListComponent) Init() tea.Cmd {
4951 var cmds []tea.Cmd
5052 if len(m.providers) == 0 {
5153 providers, err := config.Providers()
54+ filteredProviders := []catwalk.Provider{}
55+ for _, p := range providers {
56+ hasApiKeyEnv := strings.HasPrefix(p.APIKey, "$")
57+ resolver := config.NewEnvironmentVariableResolver(env.New())
58+ endpoint, _ := resolver.ResolveValue(p.APIEndpoint)
59+ if endpoint != "" && hasApiKeyEnv {
60+ filteredProviders = append(filteredProviders, p)
61+ }
62+ }
63+
5264 m.providers = providers
5365 if err != nil {
5466 cmds = append(cmds, util.ReportError(err))
@@ -242,7 +254,3 @@ func (m *ModelListComponent) GetModelType() int {
242254func (m *ModelListComponent) SetInputPlaceholder(placeholder string) {
243255 m.list.SetInputPlaceholder(placeholder)
244256}
245−
246−func (m *ModelListComponent) SetProviders(providers []catwalk.Provider) {
247− m.providers = providers
248−}
internal/tui/components/dialogs/models/models.go−11
@@ -2,7 +2,6 @@ package models
22
33import (
44 "fmt"
5− "strings"
65 "time"
76
87 "github.com/charmbracelet/bubbles/v2/help"
@@ -96,16 +95,6 @@ func NewModelDialogCmp() ModelDialog {
9695}
9796
9897func (m *modelDialogCmp) Init() tea.Cmd {
99− providers, err := config.Providers()
100− if err == nil {
101− filteredProviders := []catwalk.Provider{}
102− for _, p := range providers {
103− if strings.HasPrefix(p.APIKey, "$") && p.ID != catwalk.InferenceProviderAzure {
104− filteredProviders = append(filteredProviders, p)
105− }
106− }
107− m.modelList.SetProviders(filteredProviders)
108− }
10998 return tea.Batch(m.modelList.Init(), m.apiKeyInput.Init())
11099}
111100