on main help sign in
chore: simplify model filtering
d9b0062Kujtim Hoxha
internal/tui/components/chat/splash/splash.go−14
@@ -100,20 +100,6 @@ func New() Splash {
100
100
101func (s *splashCmp) SetOnboarding(onboarding bool) {
101func (s *splashCmp) SetOnboarding(onboarding bool) {
102 s.isOnboarding = onboarding
102 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− }
117}
103}
118
104
119func (s *splashCmp) SetProjectInit(needsInit bool) {
105func (s *splashCmp) SetProjectInit(needsInit bool) {
internal/tui/components/dialogs/models/list.go+12−4
@@ -3,10 +3,12 @@ package models
3import (
3import (
4 "fmt"
4 "fmt"
5 "slices"
5 "slices"
6+ "strings"
6
7
7 tea "github.com/charmbracelet/bubbletea/v2"
8 tea "github.com/charmbracelet/bubbletea/v2"
8 "github.com/charmbracelet/catwalk/pkg/catwalk"
9 "github.com/charmbracelet/catwalk/pkg/catwalk"
9 "github.com/charmbracelet/crush/internal/config"
10 "github.com/charmbracelet/crush/internal/config"
11+ "github.com/charmbracelet/crush/internal/env"
10 "github.com/charmbracelet/crush/internal/tui/exp/list"
12 "github.com/charmbracelet/crush/internal/tui/exp/list"
11 "github.com/charmbracelet/crush/internal/tui/styles"
13 "github.com/charmbracelet/crush/internal/tui/styles"
12 "github.com/charmbracelet/crush/internal/tui/util"
14 "github.com/charmbracelet/crush/internal/tui/util"
@@ -49,6 +51,16 @@ func (m *ModelListComponent) Init() tea.Cmd {
49 var cmds []tea.Cmd
51 var cmds []tea.Cmd
50 if len(m.providers) == 0 {
52 if len(m.providers) == 0 {
51 providers, err := config.Providers()
53 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+
52 m.providers = providers
64 m.providers = providers
53 if err != nil {
65 if err != nil {
54 cmds = append(cmds, util.ReportError(err))
66 cmds = append(cmds, util.ReportError(err))
@@ -242,7 +254,3 @@ func (m *ModelListComponent) GetModelType() int {
242func (m *ModelListComponent) SetInputPlaceholder(placeholder string) {
254func (m *ModelListComponent) SetInputPlaceholder(placeholder string) {
243 m.list.SetInputPlaceholder(placeholder)
255 m.list.SetInputPlaceholder(placeholder)
244}
256}
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
2
2
3import (
3import (
4 "fmt"
4 "fmt"
5− "strings"
6 "time"
5 "time"
7
6
8 "github.com/charmbracelet/bubbles/v2/help"
7 "github.com/charmbracelet/bubbles/v2/help"
@@ -96,16 +95,6 @@ func NewModelDialogCmp() ModelDialog {
96}
95}
97
96
98func (m *modelDialogCmp) Init() tea.Cmd {
97func (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− }
109 return tea.Batch(m.modelList.Init(), m.apiKeyInput.Init())
98 return tea.Batch(m.modelList.Init(), m.apiKeyInput.Init())
110}
99}
111
100