vtcode_config/constants/
model_helpers.rs1use super::models;
2
3pub fn supported_for(provider: &str) -> Option<&'static [&'static str]> {
5 match provider {
6 "google" | "gemini" => Some(models::google::SUPPORTED_MODELS),
7 "openai" => Some(models::openai::SUPPORTED_MODELS),
8 "anthropic" => Some(models::anthropic::SUPPORTED_MODELS),
9 "minimax" => Some(models::minimax::SUPPORTED_MODELS),
10 "deepseek" => Some(models::deepseek::SUPPORTED_MODELS),
11 #[cfg(not(docsrs))]
12 "openrouter" => Some(models::openrouter::SUPPORTED_MODELS),
13 #[cfg(docsrs)]
14 "openrouter" => Some(&[]),
15 "moonshot" => Some(models::moonshot::SUPPORTED_MODELS),
16 "xai" => Some(models::xai::SUPPORTED_MODELS),
17 "zai" => Some(models::zai::SUPPORTED_MODELS),
18 "ollama" => Some(models::ollama::SUPPORTED_MODELS),
19 _ => None,
20 }
21}
22
23pub fn default_for(provider: &str) -> Option<&'static str> {
25 match provider {
26 "google" | "gemini" => Some(models::google::DEFAULT_MODEL),
27 "openai" => Some(models::openai::DEFAULT_MODEL),
28 "anthropic" => Some(models::anthropic::DEFAULT_MODEL),
29 "minimax" => Some(models::minimax::DEFAULT_MODEL),
30 "deepseek" => Some(models::deepseek::DEFAULT_MODEL),
31 #[cfg(not(docsrs))]
32 "openrouter" => Some(models::openrouter::DEFAULT_MODEL),
33 #[cfg(docsrs)]
34 "openrouter" => Some("openrouter/auto"), "xai" => Some(models::xai::DEFAULT_MODEL),
36 "zai" => Some(models::zai::DEFAULT_MODEL),
37 "ollama" => Some(models::ollama::DEFAULT_MODEL),
38 _ => None,
39 }
40}
41
42pub fn is_valid(provider: &str, model: &str) -> bool {
44 supported_for(provider)
45 .map(|list| list.contains(&model))
46 .unwrap_or(false)
47}