1#[derive(Debug, thiserror::Error)]
2pub enum Error {
3 #[error("No API key provided for provider: {0}")]
4 NoApiKey(String),
5
6 #[error("HTTP request failed: {0}")]
7 RequestError(#[from] reqwest::Error),
8
9 #[error("API returned error: {status_code} - {message}")]
10 ApiError { status_code: u16, message: String },
11
12 #[error("Stream aborted")]
13 Aborted,
14
15 #[error("Invalid response: {0}")]
16 InvalidResponse(String),
17
18 #[error("Invalid header: {0}")]
19 InvalidHeader(String),
20
21 #[error("Invalid JSON: {0}")]
22 InvalidJson(#[from] serde_json::Error),
23
24 #[error("Model not found: provider={provider}, model_id={model_id}")]
25 ModelNotFound { provider: String, model_id: String },
26
27 #[error("Unknown provider: {0}")]
28 UnknownProvider(String),
29
30 #[error("Unknown API: {0}")]
31 UnknownApi(String),
32
33 #[error("Tool validation failed: {0}")]
34 ToolValidationFailed(String),
35
36 #[error("Tool not found: {0}")]
37 ToolNotFound(String),
38
39 #[error("Context overflow: model context window exceeded")]
40 ContextOverflow,
41}
42
43pub type Result<T> = std::result::Result<T, Error>;