1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum A2AError {
8 #[error("Network error: {message}")]
10 NetworkError { message: String },
11
12 #[error("Serialization error: {message}")]
14 SerializationError { message: String },
15
16 #[error("Remote agent error: {message}")]
18 RemoteAgentError { message: String, code: Option<i32> },
19
20 #[error("Invalid parameter: {message}")]
22 InvalidParameter { message: String },
23}
24
25pub type A2AResult<T> = std::result::Result<T, A2AError>;
27
28impl From<reqwest::Error> for A2AError {
30 fn from(error: reqwest::Error) -> Self {
31 A2AError::NetworkError {
32 message: error.to_string(),
33 }
34 }
35}
36
37impl From<serde_json::Error> for A2AError {
39 fn from(error: serde_json::Error) -> Self {
40 A2AError::SerializationError {
41 message: error.to_string(),
42 }
43 }
44}