1use abu_base::chat::ChatRequestBuilderError;
2use abu_mcp::McpError;
3use abu_skill::SkillError;
4use abu_tool::ToolError;
5use crate::model::ChatModelError;
6
7#[thiserrorctx::context_error]
8pub enum AgentError {
9 #[error(transparent)]
10 Io(#[from] std::io::Error),
11
12 #[error(transparent)]
13 Chat(#[from] ChatModelError),
14
15 #[error(transparent)]
16 Skill(#[from] SkillError),
17
18 #[error(transparent)]
19 Memory(Box<dyn std::error::Error + 'static + Send + Sync>),
20
21 #[error(transparent)]
22 Hook(Box<dyn std::error::Error + 'static + Send + Sync>),
23
24 #[error("when {0} error {1}")]
25 Middleware(&'static str, Box<dyn std::error::Error + 'static + Send + Sync>),
26
27 #[error(transparent)]
28 SerdeJson(#[from] serde_json::Error),
29
30 #[error(transparent)]
31 Mcp(#[from] McpError),
32
33 #[error(transparent)]
34 Tool(#[from] ToolError),
35
36 #[error("Unsupport tool {0}")]
37 UnsupportTool(String),
38
39 #[error("chat provide error: {0}")]
40 ChatProvider(Box<dyn std::error::Error + Sync + Send + 'static>),
41
42 #[error(transparent)]
43 EnvVar(#[from] std::env::VarError),
44
45 #[error(transparent)]
46 Dotenv(#[from] dotenv::Error),
47
48 #[error("Except messgae {0}")]
49 ExceptMessage(&'static str),
50
51 #[error(transparent)]
52 ChatRequest(#[from] ChatRequestBuilderError),
53
54 #[error("no choise in response")]
55 NoChoise,
56}