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" | "codex" => Some(models::openai::SUPPORTED_MODELS),
8 "anthropic" => Some(models::anthropic::SUPPORTED_MODELS),
9 "copilot" => Some(models::copilot::SUPPORTED_MODELS),
10 "mimo" => Some(models::mimo::SUPPORTED_MODELS),
11 "minimax" => Some(models::minimax::SUPPORTED_MODELS),
12 "deepseek" => Some(models::deepseek::SUPPORTED_MODELS),
13 #[cfg(not(docsrs))]
14 "openrouter" => Some(models::openrouter::SUPPORTED_MODELS),
15 #[cfg(docsrs)]
16 "openrouter" => Some(&[]),
17 "moonshot" => Some(models::moonshot::SUPPORTED_MODELS),
18 "zai" => Some(models::zai::SUPPORTED_MODELS),
19 "opencode-zen" => Some(models::opencode_zen::CONFIGURED_MODELS),
20 "opencode-go" => Some(models::opencode_go::CONFIGURED_MODELS),
21 "ollama" => Some(models::ollama::SUPPORTED_MODELS),
22 "qwen" => Some(models::qwen::SUPPORTED_MODELS),
23 _ => None,
24 }
25}
26
27pub fn default_for(provider: &str) -> Option<&'static str> {
29 match provider {
30 "google" | "gemini" => Some(models::google::DEFAULT_MODEL),
31 "openai" | "codex" => Some(models::openai::DEFAULT_MODEL),
32 "anthropic" => Some(models::anthropic::DEFAULT_MODEL),
33 "copilot" => Some(models::copilot::DEFAULT_MODEL),
34 "mimo" => Some(models::mimo::DEFAULT_MODEL),
35 "minimax" => Some(models::minimax::DEFAULT_MODEL),
36 "deepseek" => Some(models::deepseek::DEFAULT_MODEL),
37 #[cfg(not(docsrs))]
38 "openrouter" => Some(models::openrouter::DEFAULT_MODEL),
39 #[cfg(docsrs)]
40 "openrouter" => Some("openrouter/auto"), "moonshot" => Some(models::moonshot::DEFAULT_MODEL),
42 "zai" => Some(models::zai::DEFAULT_MODEL),
43 "opencode-zen" => Some(models::opencode_zen::DEFAULT_MODEL),
44 "opencode-go" => Some(models::opencode_go::DEFAULT_MODEL),
45 "ollama" => Some(models::ollama::DEFAULT_MODEL),
46 "qwen" => Some(models::qwen::DEFAULT_MODEL),
47 _ => None,
48 }
49}
50
51pub fn is_valid(provider: &str, model: &str) -> bool {
53 supported_for(provider)
54 .map(|list| list.contains(&model))
55 .unwrap_or(false)
56}