@@ -37,6 +37,30 @@ func (mt ModelType) String() string {
3737 }
3838}
3939
40+// Config returns the corresponding config model type.
41+func (mt ModelType) Config() config.SelectedModelType {
42+ switch mt {
43+ case ModelTypeLarge:
44+ return config.SelectedModelTypeLarge
45+ case ModelTypeSmall:
46+ return config.SelectedModelTypeSmall
47+ default:
48+ return ""
49+ }
50+}
51+
52+// Placeholder returns the input placeholder for the model type.
53+func (mt ModelType) Placeholder() string {
54+ switch mt {
55+ case ModelTypeLarge:
56+ return largeModelInputPlaceholder
57+ case ModelTypeSmall:
58+ return smallModelInputPlaceholder
59+ default:
60+ return ""
61+ }
62+}
63+
4064const (
4165 largeModelInputPlaceholder = "Choose a model for large, complex tasks"
4266 smallModelInputPlaceholder = "Choose a model for small, simple tasks"
@@ -180,8 +204,8 @@ func (m *Models) Update(msg tea.Msg) tea.Msg {
180204 }
181205
182206 return ModelSelectedMsg{
183− Provider: modelItem.prov,
184− Model: modelItem.model,
207+ Model: modelItem.SelectedModel(),
208+ ModelType: modelItem.SelectedModelType(),
185209 }
186210 case key.Matches(msg, m.keyMap.Tab):
187211 if m.modelType == ModelTypeLarge {
@@ -276,14 +300,8 @@ func (m *Models) setProviderItems() error {
276300 t := m.com.Styles
277301 cfg := m.com.Config()
278302
279− selectedType := config.SelectedModelTypeLarge
280− if m.modelType == ModelTypeLarge {
281− selectedType = config.SelectedModelTypeLarge
282− } else {
283− selectedType = config.SelectedModelTypeSmall
284− }
285−
286303 var selectedItemID string
304+ selectedType := m.modelType.Config()
287305 currentModel := cfg.Models[selectedType]
288306 recentItems := cfg.RecentModels[selectedType]
289307
@@ -325,7 +343,7 @@ func (m *Models) setProviderItems() error {
325343
326344 group := NewModelGroup(t, name, true)
327345 for _, model := range p.Models {
328− item := NewModelItem(t, provider, model, false)
346+ item := NewModelItem(t, provider, model, m.modelType, false)
329347 group.AppendItems(item)
330348 itemsMap[item.ID()] = item
331349 if model.ID == currentModel.Model && string(provider.ID) == currentModel.Provider {
@@ -379,7 +397,7 @@ func (m *Models) setProviderItems() error {
379397
380398 group := NewModelGroup(t, name, providerConfigured)
381399 for _, model := range displayProvider.Models {
382− item := NewModelItem(t, provider, model, false)
400+ item := NewModelItem(t, provider, model, m.modelType, false)
383401 group.AppendItems(item)
384402 itemsMap[item.ID()] = item
385403 if model.ID == currentModel.Model && string(provider.ID) == currentModel.Provider {
@@ -402,7 +420,7 @@ func (m *Models) setProviderItems() error {
402420 }
403421
404422 // Show provider for recent items
405− item = NewModelItem(t, item.prov, item.model, true)
423+ item = NewModelItem(t, item.prov, item.model, m.modelType, true)
406424 item.showProvider = true
407425
408426 validRecentItems = append(validRecentItems, recent)
@@ -429,11 +447,7 @@ func (m *Models) setProviderItems() error {
429447 m.list.SetSelectedItem(selectedItemID)
430448
431449 // Update placeholder based on model type
432− if m.modelType == ModelTypeLarge {
433− m.input.Placeholder = largeModelInputPlaceholder
434− } else {
435− m.input.Placeholder = smallModelInputPlaceholder
436− }
450+ m.input.Placeholder = m.modelType.Placeholder()
437451
438452 return nil
439453}