looprs 0.4.0

Concise coding assistant REPL — core library
Documentation
use thiserror::Error;

#[derive(Debug, Error)]
pub enum ProviderError {
    #[error("No provider configured")]
    NoProviderConfigured,

    #[error("Missing API key for provider: {0}")]
    MissingApiKey(String),

    #[error("Provider configuration error: {0}")]
    Config(String),

    #[error("HTTP error: {0}")]
    Http(#[from] reqwest::Error),

    #[error("JSON error: {0}")]
    Json(#[from] serde_json::Error),

    #[error("Invalid response: {0}")]
    InvalidResponse(String),

    #[error("API error: {0}")]
    ApiError(String),
}

#[derive(Debug, Error)]
pub enum ToolContextError {
    #[error("Working directory unavailable: {0}")]
    WorkingDirUnavailable(#[from] std::io::Error),
}

#[derive(Debug, Error)]
pub enum AgentError {
    #[error("Tool context initialization failed: {0}")]
    ToolContextInit(#[from] ToolContextError),

    #[error("Provider error: {0}")]
    Provider(#[from] ProviderError),

    #[error("Inference error: {0}")]
    Inference(String),

    #[error("Provider request timed out")]
    Timeout,
}