use clap::ValueEnum;
use core::fmt;
use std::fmt::{Display, Formatter};
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum FileType {
Input,
Guidelines,
Context,
}
#[derive(Debug, Clone, ValueEnum, PartialEq, Default)]
pub enum LlmProvider {
#[default]
Google,
Openai,
}
#[derive(Debug, Clone, ValueEnum, PartialEq, Default)]
pub enum LlmModel {
#[default]
#[clap(name = "gemini-2.0-flash")]
GeminiFlash2,
#[clap(name = "gemini-2.5-flash-preview-05-20")]
GeminiFlash25Prev,
#[clap(name = "gpt-4o-mini-2024-07-18")]
Openai4oMini,
#[clap(name = "gpt-4.1-nano-2025-04-14")]
Openai41Nano,
}
impl Display for LlmModel {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
match self {
LlmModel::GeminiFlash2 => write!(f, "gemini-2.0-flash"),
LlmModel::GeminiFlash25Prev => write!(f, "gemini-2.5-flash-preview-05-20"),
LlmModel::Openai4oMini => write!(f, "gpt-4o-mini-2024-07-18"),
LlmModel::Openai41Nano => write!(f, "gpt-4.1-nano-2025-04-14"),
}
}
}