1use std::sync::PoisonError;
2
3#[derive(thiserror::Error, Debug)]
5#[allow(missing_docs)]
6#[non_exhaustive]
7pub enum Error
8{
9 #[error("SendError in streams communication, most likely end of stream: {0}.")]
10 SendError(String),
11 #[error("IO Error: {0}.")]
12 IOError(#[from] std::io::Error),
13 #[error("Deserialization error: {0}")]
14 DeserializationError(String),
15 #[cfg(feature = "ollama")]
16 #[error("Ollama error: {0}")]
17 OllamaError(#[from] ollama_rs::error::OllamaError),
18 #[error("Poison (Mutex/RwLock) error: {0}")]
19 PoisonError(String),
20 #[error("{0}")]
21 FuturesMpscSendError(#[from] futures::channel::mpsc::SendError),
22 #[cfg(feature = "image")]
23 #[error("{0}")]
24 ValueError(#[from] kproc_values::Error),
25 #[cfg(feature = "llama.cpp")]
26 #[error("{0}")]
27 HfApiError(#[from] hf_hub::api::sync::ApiError),
28 #[error("Invalid HugginFace uri.")]
29 HfInvalidUri,
30 #[cfg(feature = "llama.cpp")]
31 #[error("{0}")]
32 LlamaCpp(#[from] llama_cpp_2::LLamaCppError),
33 #[cfg(feature = "llama.cpp")]
34 #[error("{0}")]
35 LlamaModelLoad(#[from] llama_cpp_2::LlamaModelLoadError),
36 #[cfg(feature = "llama.cpp")]
37 #[error("{0}")]
38 LlamaContextLoad(#[from] llama_cpp_2::LlamaContextLoadError),
39 #[cfg(feature = "llama.cpp")]
40 #[error("{0}")]
41 LlamaStringToToken(#[from] llama_cpp_2::StringToTokenError),
42 #[cfg(feature = "llama.cpp")]
43 #[error("{0}")]
44 LlamaBatchAddError(#[from] llama_cpp_2::llama_batch::BatchAddError),
45 #[cfg(feature = "llama.cpp")]
46 #[error("{0}")]
47 LlamaDecodeError(#[from] llama_cpp_2::DecodeError),
48 #[cfg(feature = "llama.cpp")]
49 #[error("{0}")]
50 LlamaTokenToString(#[from] llama_cpp_2::TokenToStringError),
51 #[cfg(feature = "template")]
52 #[error("{0}")]
53 MinijinjaError(#[from] minijinja::Error),
54 #[cfg(feature = "llama.cpp")]
55 #[error("{0}")]
56 CCUtilsServerError(#[from] ccutils::servers::ServerError),
57 #[cfg(feature = "llama.cpp")]
58 #[error("Invalid JSON Grammar")]
59 InvalidJsonGrammar,
60}
61
62impl<T> From<PoisonError<T>> for Error
63{
64 fn from(value: PoisonError<T>) -> Self
65 {
66 Error::PoisonError(value.to_string())
67 }
68}