aether_ai/
error.rs

1//! AI-specific error types.
2
3use thiserror::Error;
4
5/// Errors specific to AI operations.
6#[derive(Debug, Error)]
7pub enum AiError {
8    /// HTTP request failed.
9    #[error("HTTP request failed: {0}")]
10    HttpError(#[from] reqwest::Error),
11
12    /// API returned an error response.
13    #[error("API error: {status} - {message}")]
14    ApiError {
15        status: u16,
16        message: String,
17    },
18
19    /// Rate limit exceeded.
20    #[error("Rate limit exceeded. Retry after {retry_after} seconds")]
21    RateLimited {
22        retry_after: u64,
23    },
24
25    /// Invalid API key.
26    #[error("Invalid API key")]
27    InvalidApiKey,
28
29    /// Model not found.
30    #[error("Model '{0}' not found")]
31    ModelNotFound(String),
32
33    /// Response parsing failed.
34    #[error("Failed to parse response: {0}")]
35    ParseError(String),
36
37    /// Content filter triggered.
38    #[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}