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::Gemini25FlashPreview,
16 ModelId::Gemini25Flash,
17 ModelId::Gemini25FlashLite,
18 ModelId::Gemini25Pro,
19 ModelId::GPT5,
21 ModelId::GPT5Codex,
22 ModelId::GPT5Mini,
23 ModelId::GPT5Nano,
24 ModelId::CodexMiniLatest,
25 ModelId::ClaudeOpus45,
27 ModelId::ClaudeOpus41,
28 ModelId::ClaudeSonnet45,
29 ModelId::ClaudeHaiku45,
30 ModelId::ClaudeSonnet4,
31 ModelId::DeepSeekChat,
33 ModelId::DeepSeekReasoner,
34 ModelId::XaiGrok4,
36 ModelId::XaiGrok4Mini,
37 ModelId::XaiGrok4Code,
38 ModelId::XaiGrok4CodeLatest,
39 ModelId::XaiGrok4Vision,
40 ModelId::ZaiGlm46,
42 ModelId::ZaiGlm47Flash,
43 ModelId::ZaiGlm45,
44 ModelId::ZaiGlm45Air,
45 ModelId::ZaiGlm45X,
46 ModelId::ZaiGlm45Airx,
47 ModelId::ZaiGlm45Flash,
48 ModelId::ZaiGlm432b0414128k,
49 ModelId::OllamaGptOss20b,
51 ModelId::OllamaGptOss20bCloud,
52 ModelId::OllamaGptOss120bCloud,
53 ModelId::OllamaQwen317b,
54 ModelId::OllamaDeepseekV32Cloud,
55 ModelId::OllamaQwen3Next80bCloud,
56 ModelId::OllamaMistralLarge3675bCloud,
57 ModelId::OllamaKimiK2ThinkingCloud,
58 ModelId::OllamaQwen3Coder480bCloud,
59 ModelId::OllamaGlm46Cloud,
60 ModelId::OllamaGlm47Cloud,
61 ModelId::OllamaGemini3ProPreviewLatestCloud,
62 ModelId::OllamaGemini3FlashPreviewCloud,
63 ModelId::OllamaDevstral2123bCloud,
64 ModelId::OllamaMinimaxM2Cloud,
65 ModelId::OllamaMinimaxM21Cloud,
66 ModelId::OllamaNemotron3Nano30bCloud,
67 ModelId::LmStudioMetaLlama38BInstruct,
69 ModelId::LmStudioMetaLlama318BInstruct,
70 ModelId::LmStudioQwen257BInstruct,
71 ModelId::LmStudioGemma22BIt,
72 ModelId::LmStudioGemma29BIt,
73 ModelId::LmStudioPhi31Mini4kInstruct,
74 ModelId::MinimaxM21,
76 ModelId::MinimaxM21Lightning,
77 ModelId::MinimaxM2,
78 ModelId::HuggingFaceDeepseekV32,
80 ModelId::HuggingFaceOpenAIGptOss20b,
81 ModelId::HuggingFaceOpenAIGptOss120b,
82 ModelId::HuggingFaceGlm47,
83 ModelId::HuggingFaceGlm47FlashNovita,
84 ModelId::HuggingFaceKimiK2Thinking,
85 ModelId::HuggingFaceMinimaxM21Novita,
86 ModelId::HuggingFaceDeepseekV32Novita,
87 ModelId::HuggingFaceXiaomiMimoV2FlashNovita,
88 ];
89 models.extend(Self::openrouter_models());
90 models
91 }
92
93 pub fn models_for_provider(provider: Provider) -> Vec<ModelId> {
95 Self::all_models()
96 .into_iter()
97 .filter(|model| model.provider() == provider)
98 .collect()
99 }
100}