use thiserror::Error;
#[derive(Error, Debug, Clone)]
pub enum InferenceError {
#[error("JSON parsing error: {0}")]
JsonParse(String),
#[error("Invalid JSON structure: expected object at root, found {0}")]
InvalidStructure(String),
#[error("Maximum nesting depth exceeded: {depth} > {max}")]
MaxDepthExceeded { depth: usize, max: usize },
#[error("No records provided for inference")]
NoRecords,
#[error("IO error: {0}")]
Io(String),
#[error("Staging error: {0}")]
Staging(String),
#[error("Failed to acquire lock for parallel processing")]
LockError,
}
impl From<serde_json::Error> for InferenceError {
fn from(e: serde_json::Error) -> Self {
InferenceError::JsonParse(e.to_string())
}
}
impl From<std::io::Error> for InferenceError {
fn from(e: std::io::Error) -> Self {
InferenceError::Io(e.to_string())
}
}