1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum AiError {
8 #[error("HTTP request failed: {0}")]
10 HttpError(#[from] reqwest::Error),
11
12 #[error("API error: {status} - {message}")]
14 ApiError {
15 status: u16,
16 message: String,
17 },
18
19 #[error("Rate limit exceeded. Retry after {retry_after} seconds")]
21 RateLimited {
22 retry_after: u64,
23 },
24
25 #[error("Invalid API key")]
27 InvalidApiKey,
28
29 #[error("Model '{0}' not found")]
31 ModelNotFound(String),
32
33 #[error("Failed to parse response: {0}")]
35 ParseError(String),
36
37 #[error("Content filter triggered: {0}")]
39 ContentFiltered(String),
40}
41
42impl From<AiError> for aether_core::AetherError {
43 fn from(e: AiError) -> Self {
44 aether_core::AetherError::ProviderError(e.to_string())
45 }
46}