Skip to content

Errors

Exception hierarchy for AgentiCraft packages. All exceptions inherit from AgentiCraftError.

AgentiCraftError
├── ProviderError
│   ├── RateLimitError
│   ├── AuthenticationError
│   ├── ModelNotFoundError
│   ├── ContentFilterError
│   └── TimeoutError
├── CircuitOpenError
├── ConfigError
├── QuotaExceededError
└── OrchestrationError
    └── NoProvidersAvailableError

agenticraft_types.errors

Exception hierarchy for AgentiCraft packages.

AgentiCraftError

Bases: Exception

Base exception for all AgentiCraft errors.

Source code in src/agenticraft_types/errors.py
class AgentiCraftError(Exception):
    """Base exception for all AgentiCraft errors."""

    def __init__(
        self,
        message: str,
        *,
        details: dict[str, Any] | None = None,
    ):
        super().__init__(message)
        self.message = message
        self.details = details or {}

ProviderError

Bases: AgentiCraftError

Error from an LLM provider.

Source code in src/agenticraft_types/errors.py
class ProviderError(AgentiCraftError):
    """Error from an LLM provider."""

    def __init__(
        self,
        message: str,
        *,
        provider: str | None = None,
        model: str | None = None,
        status_code: int | None = None,
        details: dict[str, Any] | None = None,
    ):
        super().__init__(message, details=details)
        self.provider = provider
        self.model = model
        self.status_code = status_code

    def __str__(self) -> str:
        parts = [self.message]
        if self.provider:
            parts.append(f"provider={self.provider}")
        if self.model:
            parts.append(f"model={self.model}")
        return " | ".join(parts)

RateLimitError

Bases: ProviderError

Rate limit exceeded.

Source code in src/agenticraft_types/errors.py
class RateLimitError(ProviderError):
    """Rate limit exceeded."""

    def __init__(
        self,
        message: str,
        *,
        provider: str | None = None,
        model: str | None = None,
        retry_after: float | None = None,
        details: dict[str, Any] | None = None,
    ):
        super().__init__(message, provider=provider, model=model, details=details)
        self.retry_after = retry_after

AuthenticationError

Bases: ProviderError

Authentication error -- API key invalid, expired, or missing.

Source code in src/agenticraft_types/errors.py
class AuthenticationError(ProviderError):
    """Authentication error -- API key invalid, expired, or missing."""

ModelNotFoundError

Bases: ProviderError

Model not found or unavailable.

Source code in src/agenticraft_types/errors.py
class ModelNotFoundError(ProviderError):
    """Model not found or unavailable."""

    def __init__(
        self,
        message: str,
        *,
        provider: str | None = None,
        model: str | None = None,
        available_models: list[str] | None = None,
        details: dict[str, Any] | None = None,
    ):
        super().__init__(message, provider=provider, model=model, details=details)
        self.available_models = available_models or []

ContentFilterError

Bases: ProviderError

Content filtered by provider safety systems.

Source code in src/agenticraft_types/errors.py
class ContentFilterError(ProviderError):
    """Content filtered by provider safety systems."""

TimeoutError

Bases: ProviderError

Request timeout.

Source code in src/agenticraft_types/errors.py
class TimeoutError(ProviderError):
    """Request timeout."""

    def __init__(
        self,
        message: str,
        *,
        provider: str | None = None,
        model: str | None = None,
        timeout_seconds: float | None = None,
        details: dict[str, Any] | None = None,
    ):
        super().__init__(message, provider=provider, model=model, details=details)
        self.timeout_seconds = timeout_seconds

CircuitOpenError

Bases: AgentiCraftError

Circuit breaker is open, rejecting requests.

Source code in src/agenticraft_types/errors.py
class CircuitOpenError(AgentiCraftError):
    """Circuit breaker is open, rejecting requests."""

    def __init__(
        self,
        message: str,
        *,
        provider: str | None = None,
        details: dict[str, Any] | None = None,
    ):
        super().__init__(message, details=details)
        self.provider = provider

ConfigError

Bases: AgentiCraftError

Configuration error.

Source code in src/agenticraft_types/errors.py
class ConfigError(AgentiCraftError):
    """Configuration error."""

    def __init__(
        self,
        message: str,
        *,
        field: str | None = None,
        value: Any = None,
        details: dict[str, Any] | None = None,
    ):
        super().__init__(message, details=details)
        self.field = field
        self.value = value

QuotaExceededError

Bases: AgentiCraftError

Quota exceeded.

Source code in src/agenticraft_types/errors.py
class QuotaExceededError(AgentiCraftError):
    """Quota exceeded."""

    def __init__(
        self,
        message: str,
        *,
        tenant_id: str | None = None,
        resource: str | None = None,
        limit: int | None = None,
        current: int | None = None,
        details: dict[str, Any] | None = None,
    ):
        super().__init__(message, details=details)
        self.tenant_id = tenant_id
        self.resource = resource
        self.limit = limit
        self.current = current

OrchestrationError

Bases: AgentiCraftError

Orchestration error -- all providers failed.

Source code in src/agenticraft_types/errors.py
class OrchestrationError(AgentiCraftError):
    """Orchestration error -- all providers failed."""

    def __init__(
        self,
        message: str,
        *,
        strategy: str | None = None,
        providers_tried: list[str] | None = None,
        errors: list[Exception] | None = None,
        details: dict[str, Any] | None = None,
    ):
        super().__init__(message, details=details)
        self.strategy = strategy
        self.providers_tried = providers_tried or []
        self.errors = errors or []

NoProvidersAvailableError

Bases: OrchestrationError

No providers available for the request.

Source code in src/agenticraft_types/errors.py
class NoProvidersAvailableError(OrchestrationError):
    """No providers available for the request."""