use thiserror::Error as ThisError;
#[derive(ThisError, Debug)]
pub enum Error {
#[error("Missing mandatory arguments: {0}\nTry `apprentice --help` for more information.")]
MissingArgError(&'static str),
#[error("Failed to call LLM: {0}")]
LLMCallError(#[from] reqwest::Error),
#[error("Failed to process LLM call: {0}")]
LLMJsonError(#[from] serde_json::Error),
#[error("Failed to parse LLM response: {0}")]
LLMResponseError(&'static str),
#[error("{0}")]
Error(String),
#[error("LLM provider responded with error: {0}")]
LLMErrorMessage(String),
#[cfg(test)]
#[error("Test error: {0}")]
ForTests(&'static str),
}