use thiserror::Error;
#[derive(Debug, Error)]
pub enum A2AError {
#[error("Network error: {message}")]
NetworkError { message: String },
#[error("Serialization error: {message}")]
SerializationError { message: String },
#[error("Remote agent error: {message}")]
RemoteAgentError { message: String, code: Option<i32> },
#[error("Invalid parameter: {message}")]
InvalidParameter { message: String },
}
pub type A2AResult<T> = std::result::Result<T, A2AError>;
impl From<reqwest::Error> for A2AError {
fn from(error: reqwest::Error) -> Self {
A2AError::NetworkError {
message: error.to_string(),
}
}
}
impl From<serde_json::Error> for A2AError {
fn from(error: serde_json::Error) -> Self {
A2AError::SerializationError {
message: error.to_string(),
}
}
}