use thiserror::Error;
#[derive(Debug, Error)]
pub enum ChainError {
#[error("LLM error: {0}")]
LlmError(#[from] LlmError),
#[error("missing prompt variable: {0}")]
MissingVariable(String),
#[error("memory error: {0}")]
MemoryError(String),
#[error("tool error: {0}")]
ToolError(#[from] ToolError),
#[error("parse error: {0}")]
ParseError(String),
#[error("{0}")]
Other(String),
}
#[derive(Debug, Error, Clone)]
pub enum LlmError {
#[error("request failed: {0}")]
RequestFailed(String),
#[error("provider error: {0}")]
ProviderError(String),
#[error("invalid response: {0}")]
InvalidResponse(String),
#[error("tool use not supported: {0}")]
ToolUseNotSupported(String),
#[error("{0}")]
Other(String),
}
#[derive(Debug, Error, Clone)]
pub enum ToolError {
#[error("invalid input: {0}")]
InvalidInput(String),
#[error("execution failed: {0}")]
ExecutionFailed(String),
#[error("{0}")]
Other(String),
}