1use thiserror::Error;
4
5#[derive(Debug, Error)]
6pub enum AgentError {
7 #[error("Max turns exceeded: {0}")]
8 MaxTurnsExceeded(usize),
9
10 #[error("Model error: {0}")]
11 ModelError(String),
12
13 #[error("Tool error: {tool_name}: {message}")]
14 ToolError { tool_name: String, message: String },
15
16 #[error("Invalid JSON: {0}")]
17 InvalidJson(String),
18
19 #[error("Model behavior error: {0}")]
20 ModelBehavior(String),
21
22 #[error("Agent configuration error: {0}")]
23 Configuration(String),
24
25 #[error("HTTP error: {0}")]
26 Http(#[from] reqwest::Error),
27
28 #[error("JSON parsing error: {0}")]
29 JsonParse(#[from] serde_json::Error),
30
31 #[error("Generic error: {0}")]
32 Other(#[from] anyhow::Error),
33}
34
35pub type Result<T> = std::result::Result<T, AgentError>;