1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, AgnoError>;
4
5#[derive(Debug, Error)]
6pub enum AgnoError {
7 #[error("tool `{0}` not found")]
8 ToolNotFound(String),
9
10 #[error("tool `{name}` invocation failed: {source}")]
11 ToolInvocation {
12 name: String,
13 #[source]
14 source: Box<dyn std::error::Error + Send + Sync>,
15 },
16
17 #[error("language model error: {0}")]
18 LanguageModel(String),
19
20 #[error("protocol error: {0}")]
21 Protocol(String),
22
23 #[error("storage error: {0}")]
24 Storage(String),
25
26 #[error(transparent)]
27 Serde(#[from] serde_json::Error),
28
29 #[error(transparent)]
30 Io(#[from] std::io::Error),
31
32 #[error("telemetry error: {0}")]
33 Telemetry(String),
34
35 #[error("MCP error: {0}")]
36 Mcp(String),
37}
38