use thiserror::Error;
#[derive(Error, Debug)]
pub enum DeepError {
#[error("deep config error: {0}")]
Config(String),
#[error("io error: {0}")]
Io(#[from] std::io::Error),
#[error("model returned malformed JSON: {0}")]
BadResponse(String),
#[error("transient upstream failure: {0}")]
Transient(String),
#[error("cost ceiling reached after ${spent:.4} USD")]
CostExceeded { spent: f64 },
#[error("request timed out after {secs}s")]
Timeout { secs: u64 },
#[error("HTTP error: {0}")]
Http(#[from] reqwest::Error),
}