use crate::core::capabilities::*;
use crate::model_capabilities;
use crate::providers::firmware::Firmware;
model_capabilities! {
provider: Firmware,
models: {
ClaudeHaiku45 {
model_name: "claude-haiku-4-5",
constructor_name: claude_haiku_4_5,
display_name: "Claude Haiku 4.5",
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
ClaudeOpus45 {
model_name: "claude-opus-4-5",
constructor_name: claude_opus_4_5,
display_name: "Claude Opus 4.5",
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
ClaudeOpus46 {
model_name: "claude-opus-4-6",
constructor_name: claude_opus_4_6,
display_name: "Claude Opus 4.6",
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
ClaudeSonnet45 {
model_name: "claude-sonnet-4-5",
constructor_name: claude_sonnet_4_5,
display_name: "Claude Sonnet 4.5",
capabilities: [ImageInputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
Gemini25Flash {
model_name: "gemini-2.5-flash",
constructor_name: gemini_2_5_flash,
display_name: "Gemini 2.5 Flash",
capabilities: [AudioInputSupport, ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport, VideoInputSupport]
},
Gemini25Pro {
model_name: "gemini-2.5-pro",
constructor_name: gemini_2_5_pro,
display_name: "Gemini 2.5 Pro",
capabilities: [AudioInputSupport, ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport, VideoInputSupport]
},
Gemini3FlashPreview {
model_name: "gemini-3-flash-preview",
constructor_name: gemini_3_flash_preview,
display_name: "Gemini 3 Flash Preview",
capabilities: [AudioInputSupport, ImageInputSupport, ReasoningSupport, StructuredOutputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport, VideoInputSupport]
},
Gemini3ProPreview {
model_name: "gemini-3-pro-preview",
constructor_name: gemini_3_pro_preview,
display_name: "Gemini 3 Pro Preview",
capabilities: [AudioInputSupport, ImageInputSupport, ReasoningSupport, StructuredOutputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport, VideoInputSupport]
},
Gpt4o {
model_name: "gpt-4o",
constructor_name: gpt_4o,
display_name: "GPT-4o",
capabilities: [ImageInputSupport, StructuredOutputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
Gpt5 {
model_name: "gpt-5",
constructor_name: gpt_5,
display_name: "GPT-5",
capabilities: [ImageInputSupport, ReasoningSupport, StructuredOutputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
Gpt5Mini {
model_name: "gpt-5-mini",
constructor_name: gpt_5_mini,
display_name: "GPT-5 Mini",
capabilities: [ImageInputSupport, ReasoningSupport, StructuredOutputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
Gpt5Nano {
model_name: "gpt-5-nano",
constructor_name: gpt_5_nano,
display_name: "GPT-5 Nano",
capabilities: [ImageInputSupport, ReasoningSupport, StructuredOutputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
Gpt52 {
model_name: "gpt-5.2",
constructor_name: gpt_5_2,
display_name: "GPT-5.2",
capabilities: [ImageInputSupport, ReasoningSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
GptOss120b {
model_name: "gpt-oss-120b",
constructor_name: gpt_oss_120b,
display_name: "GPT OSS 120B",
capabilities: [ReasoningSupport, StructuredOutputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
GptOss20b {
model_name: "gpt-oss-20b",
constructor_name: gpt_oss_20b,
display_name: "GPT OSS 20B",
capabilities: [ReasoningSupport, StructuredOutputSupport, TextInputSupport, TextOutputSupport, ToolCallSupport]
},
}
}