vtcode_config/models/model_id/
collection.rs1use crate::models::Provider;
2
3use super::ModelId;
4
5impl ModelId {
6 pub fn openrouter_vendor(&self) -> Option<&'static str> {
8 self.openrouter_metadata().map(|meta| meta.vendor)
9 }
10
11 pub fn all_models() -> Vec<ModelId> {
13 let mut models = vec![
14 ModelId::Gemini3ProPreview,
16 ModelId::Gemini3FlashPreview,
17 ModelId::GPT5,
19 ModelId::GPT52,
20 ModelId::GPT52Codex,
21 ModelId::GPT5Codex,
22 ModelId::GPT5Mini,
23 ModelId::GPT5Nano,
24 ModelId::GPT51,
25 ModelId::GPT51Codex,
26 ModelId::GPT51CodexMax,
27 ModelId::GPT51Mini,
28 ModelId::CodexMiniLatest,
29 ModelId::ClaudeOpus46,
31 ModelId::ClaudeOpus45,
32 ModelId::ClaudeOpus41,
33 ModelId::ClaudeSonnet45,
34 ModelId::ClaudeHaiku45,
35 ModelId::ClaudeOpus4,
36 ModelId::ClaudeSonnet4,
37 ModelId::ClaudeSonnet37,
38 ModelId::ClaudeHaiku35,
39 ModelId::DeepSeekChat,
41 ModelId::DeepSeekReasoner,
42 ModelId::XaiGrok4,
44 ModelId::XaiGrok4Mini,
45 ModelId::XaiGrok4Code,
46 ModelId::XaiGrok4CodeLatest,
47 ModelId::XaiGrok4Vision,
48 ModelId::ZaiGlm5,
50 ModelId::MoonshotMinimaxM25,
52 ModelId::MoonshotQwen3CoderNext,
53 ModelId::OllamaGptOss20b,
55 ModelId::OllamaGptOss20bCloud,
56 ModelId::OllamaGptOss120bCloud,
57 ModelId::OllamaQwen317b,
58 ModelId::OllamaDeepseekV32Cloud,
59 ModelId::OllamaQwen3Next80bCloud,
60 ModelId::OllamaMistralLarge3675bCloud,
61 ModelId::OllamaQwen3Coder480bCloud,
62 ModelId::OllamaGlm5Cloud,
63 ModelId::OllamaGemini3ProPreviewLatestCloud,
64 ModelId::OllamaGemini3FlashPreviewCloud,
65 ModelId::OllamaDevstral2123bCloud,
66 ModelId::OllamaMinimaxM2Cloud,
67 ModelId::OllamaMinimaxM25Cloud,
68 ModelId::OllamaNemotron3Nano30bCloud,
69 ModelId::LmStudioMetaLlama38BInstruct,
71 ModelId::LmStudioMetaLlama318BInstruct,
72 ModelId::LmStudioQwen257BInstruct,
73 ModelId::LmStudioGemma22BIt,
74 ModelId::LmStudioGemma29BIt,
75 ModelId::LmStudioPhi31Mini4kInstruct,
76 ModelId::MinimaxM25,
78 ModelId::MinimaxM2,
79 ModelId::HuggingFaceDeepseekV32,
81 ModelId::HuggingFaceOpenAIGptOss20b,
82 ModelId::HuggingFaceOpenAIGptOss120b,
83 ModelId::HuggingFaceMinimaxM25Novita,
84 ModelId::HuggingFaceDeepseekV32Novita,
85 ModelId::HuggingFaceXiaomiMimoV2FlashNovita,
86 ModelId::HuggingFaceGlm5Novita,
87 ModelId::HuggingFaceQwen3CoderNextNovita,
88 ModelId::OpenRouterMinimaxM25,
89 ModelId::OpenRouterQwen3CoderNext,
90 ];
91 models.extend(Self::openrouter_models());
92 models
93 }
94
95 pub fn models_for_provider(provider: Provider) -> Vec<ModelId> {
97 Self::all_models()
98 .into_iter()
99 .filter(|model| model.provider() == provider)
100 .collect()
101 }
102}