Skip to main content

vtcode_config/constants/
model_helpers.rs

1use super::models;
2
3/// Get supported models for a provider
4pub 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
23/// Get default model for a provider
24pub 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"), // Fallback for docs.rs build
35        "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
42/// Validate if a model is supported by a provider
43pub fn is_valid(provider: &str, model: &str) -> bool {
44    supported_for(provider)
45        .map(|list| list.contains(&model))
46        .unwrap_or(false)
47}