(
model_ref: &str,
available_models: &HashSet<String>,
model_variants: &HashMap<String, Vec<String>>,
)
| 3773 | } |
| 3774 | |
| 3775 | fn parse_model_ref_selection( |
| 3776 | model_ref: &str, |
| 3777 | available_models: &HashSet<String>, |
| 3778 | model_variants: &HashMap<String, Vec<String>>, |
| 3779 | ) -> (String, Option<String>) { |
| 3780 | let trimmed = model_ref.trim(); |
| 3781 | if trimmed.is_empty() { |
| 3782 | return (String::new(), None); |
| 3783 | } |
| 3784 | if available_models.contains(trimmed) { |
| 3785 | return (trimmed.to_string(), None); |
| 3786 | } |
| 3787 | |
| 3788 | let Some((candidate_base, candidate_variant)) = trimmed.rsplit_once('/') else { |
| 3789 | return (trimmed.to_string(), None); |
| 3790 | }; |
| 3791 | if candidate_variant.is_empty() || !available_models.contains(candidate_base) { |
| 3792 | return (trimmed.to_string(), None); |
| 3793 | } |
| 3794 | let Some(known_variants) = model_variants.get(candidate_base) else { |
| 3795 | return (trimmed.to_string(), None); |
| 3796 | }; |
| 3797 | if !known_variants |
| 3798 | .iter() |
| 3799 | .any(|value| value == candidate_variant) |
| 3800 | { |
| 3801 | return (trimmed.to_string(), None); |
| 3802 | } |
| 3803 | ( |
| 3804 | candidate_base.to_string(), |
| 3805 | Some(candidate_variant.to_string()), |
| 3806 | ) |
| 3807 | } |
| 3808 | |
| 3809 | fn selected_agent(context: &Arc<AppContext>) -> Option<String> { |
| 3810 | let agent = context.current_agent.read().clone(); |
no test coverage detected