codetether_agent/tui/app/smart_switch/
local_model.rs1use crate::tui::constants::AUTOCHAT_LOCAL_DEFAULT_MODEL;
4
5pub fn normalize_local_model_ref(model: &str) -> String {
7 let trimmed = model.trim();
8 if trimmed.is_empty() {
9 return AUTOCHAT_LOCAL_DEFAULT_MODEL.to_string();
10 }
11 let (provider_name, _) = crate::provider::parse_model_string(trimmed);
12 if provider_name.is_some() {
13 trimmed.to_string()
14 } else {
15 format!("local_cuda/{trimmed}")
16 }
17}
18
19pub fn resolve_local_loop_model(current_model: Option<&str>) -> String {
21 if let Ok(explicit) = std::env::var("CODETETHER_TUI_LOCAL_MODEL")
22 .or_else(|_| std::env::var("CODETETHER_LOCAL_CUDA_MODEL"))
23 .or_else(|_| std::env::var("LOCAL_CUDA_MODEL"))
24 {
25 let normalized = normalize_local_model_ref(&explicit);
26 if !normalized.trim().is_empty() {
27 return normalized;
28 }
29 }
30
31 if let Some(model) = current_model {
32 let normalized = normalize_local_model_ref(model);
33 if normalized.starts_with("local_cuda/") {
34 return normalized;
35 }
36 }
37
38 AUTOCHAT_LOCAL_DEFAULT_MODEL.to_string()
39}