pub(super) fn default_model_for_provider(provider: &str, model_tier: Option<&str>) -> String {
match (provider, model_tier.unwrap_or("balanced")) {
("zhipuai" | "zai", _) => "glm-5.1".to_string(),
("openrouter", _) => "z-ai/glm-5".to_string(),
("minimax-credits", _) => "MiniMax-M2.5-highspeed".to_string(),
("minimax", "fast" | "quick") => "MiniMax-M2.5-highspeed".to_string(),
("minimax", _) => "MiniMax-M2.5".to_string(),
("moonshotai", _) => "kimi-k2.5".to_string(),
("anthropic", _) => "claude-sonnet-4-20250514".to_string(),
("openai", _) => "o3".to_string(),
("google", "fast" | "quick") => "gemini-2.5-flash".to_string(),
("google", _) => "gemini-2.5-pro".to_string(),
("bedrock", "heavy" | "deep") => "us.anthropic.claude-opus-4-6-v1".to_string(),
("bedrock", _) => "amazon.nova-lite-v1:0".to_string(),
_ => "glm-5.1".to_string(),
}
}
pub(super) fn prefers_temperature_one(model: &str) -> bool {
let normalized = model.to_ascii_lowercase();
normalized.contains("kimi-k2") || normalized.contains("glm-") || normalized.contains("minimax")
}