Skip to main content

alchemy_llm/
error.rs

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>;