Skip to main content

abu_agent/agent/
error.rs

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}