use std::io;
#[derive(Debug, thiserror::Error)]
pub enum SdkError {
#[error("failed to spawn claude process: {0}")]
ProcessSpawn(#[source] io::Error),
#[error("claude process died (exit code: {exit_code:?}, stderr: {stderr})")]
ProcessDied {
exit_code: Option<i32>,
stderr: String,
},
#[error("invalid JSON from claude stdout: {message}")]
InvalidJson {
message: String,
line: String,
#[source]
source: serde_json::Error,
},
#[error("protocol error: {0}")]
ProtocolError(String),
#[error("operation timed out after {0:?}")]
Timeout(std::time::Duration),
#[error("I/O error: {0}")]
Io(#[from] io::Error),
#[error("session is not connected")]
NotConnected,
}
pub type Result<T> = std::result::Result<T, SdkError>;