adk_core/
error.rs

1#[derive(Debug, thiserror::Error)]
2pub enum AdkError {
3    #[error("Agent error: {0}")]
4    Agent(String),
5
6    #[error("Model error: {0}")]
7    Model(String),
8
9    #[error("Tool error: {0}")]
10    Tool(String),
11
12    #[error("Session error: {0}")]
13    Session(String),
14
15    #[error("Artifact error: {0}")]
16    Artifact(String),
17
18    #[error("Memory error: {0}")]
19    Memory(String),
20
21    #[error("Configuration error: {0}")]
22    Config(String),
23
24    #[error("IO error: {0}")]
25    Io(#[from] std::io::Error),
26
27    #[error("Serialization error: {0}")]
28    Serde(#[from] serde_json::Error),
29}
30
31pub type Result<T> = std::result::Result<T, AdkError>;
32
33#[cfg(test)]
34mod tests {
35    use super::*;
36
37    #[test]
38    fn test_error_display() {
39        let err = AdkError::Agent("test error".to_string());
40        assert_eq!(err.to_string(), "Agent error: test error");
41    }
42
43    #[test]
44    fn test_error_from_io() {
45        let io_err = std::io::Error::new(std::io::ErrorKind::NotFound, "file not found");
46        let adk_err: AdkError = io_err.into();
47        assert!(matches!(adk_err, AdkError::Io(_)));
48    }
49
50    #[test]
51    #[allow(clippy::unnecessary_literal_unwrap)]
52    fn test_result_type() {
53        let ok_result: Result<i32> = Ok(42);
54        assert_eq!(ok_result.unwrap(), 42);
55
56        let err_result: Result<i32> = Err(AdkError::Config("invalid".to_string()));
57        assert!(err_result.is_err());
58    }
59}