from dataclasses import dataclass from typing import Any ROADMAP_GENERATION_FAILED = "ROADMAP_GENERATION_FAILED" RESOURCE_SEARCH_FAILED = "RESOURCE_SEARCH_FAILED" MODEL_PROVIDER_FAILED = "MODEL_PROVIDER_FAILED" SCHEMA_VALIDATION_FAILED = "SCHEMA_VALIDATION_FAILED" LINK_VALIDATION_FAILED = "LINK_VALIDATION_FAILED" CACHE_ERROR = "CACHE_ERROR" @dataclass class ServiceError(Exception): code: str message: str stage: str retryable: bool = True debug: dict[str, Any] | None = None def __str__(self) -> str: return f"{self.code} at {self.stage}: {self.message}"