Change summary
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(-)
Detailed changes
@@ -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) {
@@ -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
-}
@@ -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())
}