Skip to main content

chat_core/
error.rs

1use crate::types::metadata::Metadata;
2use thiserror::Error;
3
4#[derive(Clone, Debug, Error)]
5pub enum ChatError {
6    #[error("network error: {0}")]
7    Network(String),
8
9    #[error("provider error: {0}")]
10    Provider(String),
11
12    #[error("rate limited")]
13    RateLimited,
14
15    #[error("invalid response: {0}")]
16    InvalidResponse(String),
17
18    #[error("error in callback function: {0}")]
19    Callback(String),
20
21    #[error("unknown error: {0}")]
22    Other(String),
23}
24
25#[derive(Clone, Debug, Error)]
26#[error("Chat engine failed: {err}")]
27pub struct ChatFailure {
28    pub metadata: Option<Metadata>,
29    #[source]
30    pub err: ChatError,
31}
32
33impl ChatFailure {
34    pub fn from_err<E: Into<ChatError>>(err: E) -> Self {
35        Self {
36            metadata: None,
37            err: err.into(),
38        }
39    }
40}