use crate::event;
use async_openai::error::OpenAIError;
use async_openai::types::RunStatus;
use derive_more::From;
use std::io;
use tokio::sync::broadcast;
pub type Result<T> = core::result::Result<T, Error>;
#[derive(Debug, From)]
pub enum Error {
ShouldNotDeleteLocalFile(String),
CannotFindThreadIdForConv(String),
MessageImageNotSupported,
NoMessageInMessageObjectContent,
NoMessageFoundInMessages,
NoOpenAIApiKeyInEnv,
DeleteAllFilesRequiresAtLeastOneGlob,
RunError(RunStatus),
FileNotFound(String),
FileCannotBundleNoneFile(String),
FileCannotCreate {
file: String,
cause: io::Error,
},
#[from]
BoadcastSend(broadcast::error::SendError<event::Event>),
#[from]
IO(io::Error),
#[from]
SimpleFs(simple_fs::Error),
#[from]
OpenAI(OpenAIError),
}
impl core::fmt::Display for Error {
fn fmt(
&self,
fmt: &mut core::fmt::Formatter,
) -> core::result::Result<(), core::fmt::Error> {
write!(fmt, "{self:?}")
}
}
impl std::error::Error for Error {}