@@ -3,10 +3,12 @@ package models
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)
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)
246−func (m *ModelListComponent) SetProviders(providers []catwalk.Provider) {
247− m.providers = providers