@@ -61,34 +61,43 @@ func (m *ModelListComponent) SelectedIndex() int {
6161func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
6262 m.modelType = modelType
6363
64− providers := config.Providers()
64+ providers, err := config.Providers()
65+ if err != nil {
66+ return util.ReportError(err)
67+ }
68+
6569 modelItems := []util.Model{}
6670 selectIndex := 0
6771
6872 cfg := config.Get()
69− var currentModel config.PreferredModel
73+ var currentModel config.SelectedModel
7074 if m.modelType == LargeModelType {
71− currentModel = cfg.Models.Large
75+ currentModel = cfg.Models[config.SelectedModelTypeLarge]
7276 } else {
73− currentModel = cfg.Models.Small
77+ currentModel = cfg.Models[config.SelectedModelTypeSmall]
7478 }
7579
76− addedProviders := make(map[provider.InferenceProvider]bool)
80+ // Create a map to track which providers we've already added
81+ addedProviders := make(map[string]bool)
7782
83+ // First, add any configured providers that are not in the known providers list
84+ // These should appear at the top of the list
7885 knownProviders := provider.KnownProviders()
7986 for providerID, providerConfig := range cfg.Providers {
80− if providerConfig.Disabled {
87+ if providerConfig.Disable {
8188 continue
8289 }
8390
8491 // 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
8694 configProvider := provider.Provider{
87− Name: string(providerID),
88− ID: providerID,
95+ Name: string(providerID), // Use provider ID as name for unknown providers
96+ ID: provider.InferenceProvider(providerID),
8997 Models: make([]provider.Model, len(providerConfig.Models)),
9098 }
9199
100+ // Convert models
92101 for i, model := range providerConfig.Models {
93102 configProvider.Models[i] = provider.Model{
94103 ID: model.ID,
@@ -101,11 +110,12 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
101110 DefaultMaxTokens: model.DefaultMaxTokens,
102111 CanReason: model.CanReason,
103112 HasReasoningEffort: model.HasReasoningEffort,
104− DefaultReasoningEffort: model.ReasoningEffort,
113+ DefaultReasoningEffort: model.DefaultReasoningEffort,
105114 SupportsImages: model.SupportsImages,
106115 }
107116 }
108117
118+ // Add this unknown provider to the list
109119 name := configProvider.Name
110120 if name == "" {
111121 name = string(configProvider.ID)
@@ -116,20 +126,23 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
116126 Provider: configProvider,
117127 Model: model,
118128 }))
119− if model.ID == currentModel.ModelID && configProvider.ID == currentModel.Provider {
120− selectIndex = len(modelItems) - 1
129+ if model.ID == currentModel.Model && string(configProvider.ID) == currentModel.Provider {
130+ selectIndex = len(modelItems) - 1 // Set the selected index to the current model
121131 }
122132 }
123133 addedProviders[providerID] = true
124134 }
125135 }
126136
137+ // Then add the known providers from the predefined list
127138 for _, provider := range providers {
128− if addedProviders[provider.ID] {
139+ // Skip if we already added this provider as an unknown provider
140+ if addedProviders[string(provider.ID)] {
129141 continue
130142 }
131143
132− if providerConfig, exists := cfg.Providers[provider.ID]; exists && providerConfig.Disabled {
144+ // Check if this provider is configured and not disabled
145+ if providerConfig, exists := cfg.Providers[string(provider.ID)]; exists && providerConfig.Disable {
133146 continue
134147 }
135148
@@ -143,8 +156,8 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
143156 Provider: provider,
144157 Model: model,
145158 }))
146− if model.ID == currentModel.ModelID && provider.ID == currentModel.Provider {
147− selectIndex = len(modelItems) - 1
159+ if model.ID == currentModel.Model && string(provider.ID) == currentModel.Provider {
160+ selectIndex = len(modelItems) - 1 // Set the selected index to the current model
148161 }
149162 }
150163 }
@@ -156,4 +169,3 @@ func (m *ModelListComponent) SetModelType(modelType int) tea.Cmd {
156169func (m *ModelListComponent) GetModelType() int {
157170 return m.modelType
158171}
159−