Spaces:
Sleeping
Sleeping
| """ | |
| Error response schemas for structured error handling. | |
| """ | |
| from typing import Optional, Literal | |
| from pydantic import BaseModel | |
| class ErrorResponse(BaseModel): | |
| """Structured error response model.""" | |
| error_code: str | |
| detail: str | |
| source: Literal["AI_PROVIDER", "AUTHENTICATION", "VALIDATION", "DATABASE", "INTERNAL"] | |
| provider: Optional[str] = None | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "error_code": "RATE_LIMIT_EXCEEDED", | |
| "detail": "AI service rate limit exceeded. Please wait a moment and try again.", | |
| "source": "AI_PROVIDER", | |
| "provider": "gemini" | |
| } | |
| } | |
| # Error code constants | |
| class ErrorCode: | |
| """Standard error codes for the application.""" | |
| # AI Provider errors | |
| RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED" | |
| API_KEY_MISSING = "API_KEY_MISSING" | |
| API_KEY_INVALID = "API_KEY_INVALID" | |
| PROVIDER_UNAVAILABLE = "PROVIDER_UNAVAILABLE" | |
| PROVIDER_ERROR = "PROVIDER_ERROR" | |
| # Authentication errors | |
| UNAUTHORIZED = "UNAUTHORIZED" | |
| TOKEN_EXPIRED = "TOKEN_EXPIRED" | |
| TOKEN_INVALID = "TOKEN_INVALID" | |
| # Validation errors | |
| INVALID_INPUT = "INVALID_INPUT" | |
| MESSAGE_TOO_LONG = "MESSAGE_TOO_LONG" | |
| MESSAGE_EMPTY = "MESSAGE_EMPTY" | |
| # Database errors | |
| CONVERSATION_NOT_FOUND = "CONVERSATION_NOT_FOUND" | |
| DATABASE_ERROR = "DATABASE_ERROR" | |
| # Internal errors | |
| INTERNAL_ERROR = "INTERNAL_ERROR" | |
| UNKNOWN_ERROR = "UNKNOWN_ERROR" | |