use super::BoxError;
use crate::json::JsonValue;
#[derive(Debug, thiserror::Error)]
#[error("invalid argument `{argument}`: {message}")]
pub struct InvalidArgumentError {
pub argument: String,
pub message: String,
#[source]
pub cause: Option<BoxError>,
}
impl InvalidArgumentError {
#[must_use]
pub fn new(argument: impl Into<String>, message: impl Into<String>) -> Self {
Self {
argument: argument.into(),
message: message.into(),
cause: None,
}
}
#[must_use]
pub fn with_cause(mut self, cause: impl std::error::Error + Send + Sync + 'static) -> Self {
self.cause = Some(Box::new(cause));
self
}
}
#[derive(Debug, thiserror::Error)]
#[error("invalid prompt: {message}")]
pub struct InvalidPromptError {
pub message: String,
pub prompt: Option<JsonValue>,
#[source]
pub cause: Option<BoxError>,
}
impl InvalidPromptError {
#[must_use]
pub fn new(message: impl Into<String>) -> Self {
Self {
message: message.into(),
prompt: None,
cause: None,
}
}
#[must_use]
pub fn with_prompt(mut self, prompt: JsonValue) -> Self {
self.prompt = Some(prompt);
self
}
#[must_use]
pub fn with_cause(mut self, cause: impl std::error::Error + Send + Sync + 'static) -> Self {
self.cause = Some(Box::new(cause));
self
}
}
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
#[error("{message}")]
pub struct LoadApiKeyError {
pub message: String,
}
impl LoadApiKeyError {
#[must_use]
pub fn new(message: impl Into<String>) -> Self {
Self {
message: message.into(),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
#[error("{message}")]
pub struct LoadSettingError {
pub message: String,
}
impl LoadSettingError {
#[must_use]
pub fn new(message: impl Into<String>) -> Self {
Self {
message: message.into(),
}
}
}