#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("claude binary not found")]
BinaryNotFound,
#[error("failed to spawn claude process: {0}")]
Spawn(#[from] std::io::Error),
#[error("claude call timed out")]
Timeout,
#[error("failed to parse claude output: {0}")]
Parse(#[from] serde_json::Error),
#[error("claude CLI failed (exit {status:?}): {stderr}")]
Cli {
status: Option<i32>,
stderr: String,
},
#[error("claude API error{}: {message}", .status.map(|s| format!(" (HTTP {s})")).unwrap_or_default())]
Api {
status: Option<u16>,
message: String,
},
#[error("failed to set up isolated config dir: {0}")]
Isolation(std::io::Error),
}
pub type Result<T> = std::result::Result<T, Error>;