use paladin_ports::output::llm_port::LlmError;
use thiserror::Error;
#[derive(Debug, Error, Clone)]
pub enum LlmProviderError {
#[error("Authentication error: {0}")]
AuthenticationError(String),
#[error("Network error: {0}")]
NetworkError(String),
#[error("Rate limit exceeded")]
RateLimitExceeded,
#[error("Invalid prompt: {0}")]
InvalidPrompt(String),
#[error("Processing error: {0}")]
ProcessingError(String),
#[error("Token limit exceeded")]
TokenLimitExceeded,
#[error("Model not available: {0}")]
ModelNotAvailable(String),
#[error("Timeout: {0}")]
Timeout(String),
#[error("Configuration error: {0}")]
ConfigurationError(String),
}
impl From<LlmProviderError> for LlmError {
fn from(err: LlmProviderError) -> Self {
match err {
LlmProviderError::AuthenticationError(msg) => LlmError::AuthenticationError(msg),
LlmProviderError::NetworkError(msg) => LlmError::NetworkError(msg),
LlmProviderError::RateLimitExceeded => LlmError::RateLimitExceeded,
LlmProviderError::InvalidPrompt(msg) => LlmError::InvalidPrompt(msg),
LlmProviderError::ProcessingError(msg) => LlmError::ProcessingError(msg),
LlmProviderError::TokenLimitExceeded => LlmError::TokenLimitExceeded,
LlmProviderError::ModelNotAvailable(msg) => LlmError::ModelNotAvailable(msg),
LlmProviderError::Timeout(msg) => LlmError::Timeout(msg),
LlmProviderError::ConfigurationError(msg) => {
LlmError::ProcessingError(format!("Configuration error: {}", msg))
}
}
}
}