on main help sign in
chore: changes after rebase
fca9fbbKujtim Hoxha
internal/config/init.go+8
@@ -103,3 +103,11 @@ func MarkProjectInitialized() error {
103
103
104 return nil
104 return nil
105}
105}
106+
107+func HasInitialDataConfig() bool {
108+ cfgPath := globalConfigData()
109+ if _, err := os.Stat(cfgPath); err != nil {
110+ return false
111+ }
112+ return true
113+}
internal/tui/components/chat/chat.go−3
@@ -8,7 +8,6 @@ import (
8 tea "github.com/charmbracelet/bubbletea/v2"
8 tea "github.com/charmbracelet/bubbletea/v2"
9 "github.com/charmbracelet/crush/internal/app"
9 "github.com/charmbracelet/crush/internal/app"
10 "github.com/charmbracelet/crush/internal/llm/agent"
10 "github.com/charmbracelet/crush/internal/llm/agent"
11− "github.com/charmbracelet/crush/internal/logging"
12 "github.com/charmbracelet/crush/internal/message"
11 "github.com/charmbracelet/crush/internal/message"
13 "github.com/charmbracelet/crush/internal/pubsub"
12 "github.com/charmbracelet/crush/internal/pubsub"
14 "github.com/charmbracelet/crush/internal/session"
13 "github.com/charmbracelet/crush/internal/session"
@@ -81,7 +80,6 @@ func (m *messageListCmp) Init() tea.Cmd {
81
80
82// Update handles incoming messages and updates the component state.
81// Update handles incoming messages and updates the component state.
83func (m *messageListCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
82func (m *messageListCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
84− logging.Info("messageListCmp.Update", "msg", msg)
85 switch msg := msg.(type) {
83 switch msg := msg.(type) {
86 case SessionSelectedMsg:
84 case SessionSelectedMsg:
87 if msg.ID != m.session.ID {
85 if msg.ID != m.session.ID {
@@ -380,7 +378,6 @@ func (m *messageListCmp) handleNewAssistantMessage(msg message.Message) tea.Cmd
380
378
381// SetSession loads and displays messages for a new session.
379// SetSession loads and displays messages for a new session.
382func (m *messageListCmp) SetSession(session session.Session) tea.Cmd {
380func (m *messageListCmp) SetSession(session session.Session) tea.Cmd {
383− logging.Info("messageListCmp.SetSession", "sessionID", session.ID)
384 if m.session.ID == session.ID {
381 if m.session.ID == session.ID {
385 return nil
382 return nil
386 }
383 }
internal/tui/components/dialogs/models/list.go+29−17
@@ -61,34 +61,43 @@ func (m *ModelListComponent) SelectedIndex() int {
61func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
61func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
62 m.modelType = modelType
62 m.modelType = modelType
63
63
64− providers := config.Providers()
64+ providers, err := config.Providers()
65+ if err != nil {
66+ return util.ReportError(err)
67+ }
68+
65 modelItems := []util.Model{}
69 modelItems := []util.Model{}
66 selectIndex := 0
70 selectIndex := 0
67
71
68 cfg := config.Get()
72 cfg := config.Get()
69− var currentModel config.PreferredModel
73+ var currentModel config.SelectedModel
70 if m.modelType == LargeModelType {
74 if m.modelType == LargeModelType {
71− currentModel = cfg.Models.Large
75+ currentModel = cfg.Models[config.SelectedModelTypeLarge]
72 } else {
76 } else {
73− currentModel = cfg.Models.Small
77+ currentModel = cfg.Models[config.SelectedModelTypeSmall]
74 }
78 }
75
79
80+ // Create a map to track which providers we've already added
76− addedProviders := make(map[provider.InferenceProvider]bool)
81+ addedProviders := make(map[string]bool)
77
82
83+ // First, add any configured providers that are not in the known providers list
84+ // These should appear at the top of the list
78 knownProviders := provider.KnownProviders()
85 knownProviders := provider.KnownProviders()
79 for providerID, providerConfig := range cfg.Providers {
86 for providerID, providerConfig := range cfg.Providers {
80− if providerConfig.Disabled {
87+ if providerConfig.Disable {
81 continue
88 continue
82 }
89 }
83
90
84 // Check if this provider is not in the known providers list
91 // Check if this provider is not in the known providers list
85− if !slices.Contains(knownProviders, providerID) {
92+ if !slices.Contains(knownProviders, provider.InferenceProvider(providerID)) {
93+ // Convert config provider to provider.Provider format
86 configProvider := provider.Provider{
94 configProvider := provider.Provider{
87− Name: string(providerID),
95+ Name: string(providerID), // Use provider ID as name for unknown providers
88− ID: providerID,
96+ ID: provider.InferenceProvider(providerID),
89 Models: make([]provider.Model, len(providerConfig.Models)),
97 Models: make([]provider.Model, len(providerConfig.Models)),
90 }
98 }
91
99
100+ // Convert models
92 for i, model := range providerConfig.Models {
101 for i, model := range providerConfig.Models {
93 configProvider.Models[i] = provider.Model{
102 configProvider.Models[i] = provider.Model{
94 ID: model.ID,
103 ID: model.ID,
@@ -101,11 +110,12 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
101 DefaultMaxTokens: model.DefaultMaxTokens,
110 DefaultMaxTokens: model.DefaultMaxTokens,
102 CanReason: model.CanReason,
111 CanReason: model.CanReason,
103 HasReasoningEffort: model.HasReasoningEffort,
112 HasReasoningEffort: model.HasReasoningEffort,
104− DefaultReasoningEffort: model.ReasoningEffort,
113+ DefaultReasoningEffort: model.DefaultReasoningEffort,
105 SupportsImages: model.SupportsImages,
114 SupportsImages: model.SupportsImages,
106 }
115 }
107 }
116 }
108
117
118+ // Add this unknown provider to the list
109 name := configProvider.Name
119 name := configProvider.Name
110 if name == "" {
120 if name == "" {
111 name = string(configProvider.ID)
121 name = string(configProvider.ID)
@@ -116,20 +126,23 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
116 Provider: configProvider,
126 Provider: configProvider,
117 Model: model,
127 Model: model,
118 }))
128 }))
119− if model.ID == currentModel.ModelID && configProvider.ID == currentModel.Provider {
129+ if model.ID == currentModel.Model && string(configProvider.ID) == currentModel.Provider {
120− selectIndex = len(modelItems) - 1
130+ selectIndex = len(modelItems) - 1 // Set the selected index to the current model
121 }
131 }
122 }
132 }
123 addedProviders[providerID] = true
133 addedProviders[providerID] = true
124 }
134 }
125 }
135 }
126
136
137+ // Then add the known providers from the predefined list
127 for _, provider := range providers {
138 for _, provider := range providers {
139+ // Skip if we already added this provider as an unknown provider
128− if addedProviders[provider.ID] {
140+ if addedProviders[string(provider.ID)] {
129 continue
141 continue
130 }
142 }
131
143
144+ // Check if this provider is configured and not disabled
132− if providerConfig, exists := cfg.Providers[provider.ID]; exists && providerConfig.Disabled {
145+ if providerConfig, exists := cfg.Providers[string(provider.ID)]; exists && providerConfig.Disable {
133 continue
146 continue
134 }
147 }
135
148
@@ -143,8 +156,8 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
143 Provider: provider,
156 Provider: provider,
144 Model: model,
157 Model: model,
145 }))
158 }))
146− if model.ID == currentModel.ModelID && provider.ID == currentModel.Provider {
159+ if model.ID == currentModel.Model && string(provider.ID) == currentModel.Provider {
147− selectIndex = len(modelItems) - 1
160+ selectIndex = len(modelItems) - 1 // Set the selected index to the current model
148 }
161 }
149 }
162 }
150 }
163 }
@@ -156,4 +169,3 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
156func (m *ModelListComponent) GetModelType() int {
169func (m *ModelListComponent) GetModelType() int {
157 return m.modelType
170 return m.modelType
158}
171}
159−
internal/tui/components/dialogs/models/models.go+1−1
@@ -105,7 +105,7 @@ func (m *modelDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
105
105
106 var modelType config.SelectedModelType
106 var modelType config.SelectedModelType
107 if m.modelList.GetModelType() == LargeModelType {
107 if m.modelList.GetModelType() == LargeModelType {
108− modelType = config.LargeModel
108+ modelType = config.SelectedModelTypeLarge
109 } else {
109 } else {
110 modelType = config.SelectedModelTypeSmall
110 modelType = config.SelectedModelTypeSmall
111 }
111 }