use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ModelProvider {
OpenRouter,
Ollama,
Mlx,
}
impl std::fmt::Display for ModelProvider {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
ModelProvider::OpenRouter => write!(f, "OpenRouter"),
ModelProvider::Ollama => write!(f, "Ollama"),
ModelProvider::Mlx => write!(f, "MLX"),
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AiModel {
pub display_name: String,
pub identifier: String,
pub provider: ModelProvider,
pub is_free: bool,
pub context_window: u32,
}