pub(crate) fn default_model_for_provider(provider: &str) -> String {
match provider {
"moonshotai" => "kimi-k2.5".to_string(),
"anthropic" => "claude-sonnet-4-20250514".to_string(),
"minimax" => "MiniMax-M2.5".to_string(),
"openai" => "gpt-4o".to_string(),
"google" => "gemini-2.5-pro".to_string(),
"local_cuda" => std::env::var("LOCAL_CUDA_MODEL")
.or_else(|_| std::env::var("CODETETHER_LOCAL_CUDA_MODEL"))
.unwrap_or_else(|_| "qwen3.5-9b".to_string()),
"zhipuai" | "zai" | "zai-api" => "glm-5".to_string(),
"openrouter" => "z-ai/glm-5".to_string(),
"novita" => "Qwen/Qwen3.5-35B-A3B".to_string(),
"github-copilot" | "github-copilot-enterprise" => "gpt-5-mini".to_string(),
_ => "gpt-4o".to_string(),
}
}
#[cfg(test)]
mod tests {
use super::default_model_for_provider;
#[test]
fn openai_defaults_to_gpt4o() {
assert_eq!(default_model_for_provider("openai"), "gpt-4o");
}
#[test]
fn unknown_provider_defaults_to_gpt4o() {
assert_eq!(default_model_for_provider("does-not-exist"), "gpt-4o");
}
#[test]
fn zhipuai_aliases_resolve_to_glm() {
assert_eq!(default_model_for_provider("zai"), "glm-5");
assert_eq!(default_model_for_provider("zhipuai"), "glm-5");
assert_eq!(default_model_for_provider("zai-api"), "glm-5");
}
}