From 62ebae96e3bdbc3c5421d08f3c2a9d87670a5763 Mon Sep 17 00:00:00 2001 From: Bennet Bo Fenner Date: Fri, 11 Apr 2025 17:55:23 -0600 Subject: [PATCH] agent: Only show recommended models that are actually configured (#28613) Release Notes: - N/A --- .../src/language_model_selector.rs | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/crates/language_model_selector/src/language_model_selector.rs b/crates/language_model_selector/src/language_model_selector.rs index 7f18b4d9fd..c7b5d9cd48 100644 --- a/crates/language_model_selector/src/language_model_selector.rs +++ b/crates/language_model_selector/src/language_model_selector.rs @@ -396,26 +396,33 @@ impl PickerDelegate for LanguageModelPickerDelegate { cx.spawn_in(window, async move |this, cx| { let filtered_models = cx .background_spawn(async move { - let filter_models = |model_infos: &[ModelInfo]| { - model_infos - .iter() - .filter(|model_info| { - model_info - .model - .name() - .0 - .to_lowercase() - .contains(&query.to_lowercase()) - }) - .cloned() - .collect::>() + let matches = |info: &ModelInfo| { + info.model + .name() + .0 + .to_lowercase() + .contains(&query.to_lowercase()) }; - let recommended_models = filter_models(&all_models.recommended); + let recommended_models = all_models + .recommended + .iter() + .filter(|r| { + configured_providers.contains(&r.model.provider_id()) && matches(r) + }) + .cloned() + .collect(); let mut other_models = IndexMap::default(); for (provider_id, models) in &all_models.other { if configured_providers.contains(&provider_id) { - other_models.insert(provider_id.clone(), filter_models(models)); + other_models.insert( + provider_id.clone(), + models + .iter() + .filter(|m| matches(m)) + .cloned() + .collect::>(), + ); } } GroupedModels {