mod client;
mod fix_generator;
mod prompts;
pub use client::{AiClient, AiConfig, LlmBackend, Message, Role};
pub use fix_generator::{CodeChange, FixGenerator, FixProposal, FixConfidence, FixType};
pub use prompts::{FixPromptBuilder, PromptTemplate};
use thiserror::Error;
#[derive(Error, Debug)]
pub enum AiError {
#[error("Missing API key: {env_var} not set. Get your key at {signup_url}")]
MissingApiKey { env_var: String, signup_url: String },
#[error("API request failed: {0}")]
RequestFailed(#[from] reqwest::Error),
#[error("API error: {status} - {message}")]
ApiError { status: u16, message: String },
#[error("Failed to parse API response: {0}")]
ParseError(String),
#[error("Invalid configuration: {0}")]
ConfigError(String),
#[error("IO error: {0}")]
IoError(#[from] std::io::Error),
}
pub type AiResult<T> = Result<T, AiError>;