"""Stable, non-enumerating Console error contract for KnowledgeFS.""" from libs.exception import BaseHTTPException from services.knowledge_fs.product_dto import KnowledgeFSPublicFailureResponse class _KnowledgeFSFailureHTTPError(BaseHTTPException): details_model = KnowledgeFSPublicFailureResponse def __init__(self, failure: KnowledgeFSPublicFailureResponse | None = None) -> None: super().__init__(failure.message if failure else None) if failure is not None and self.data is not None: details = failure.model_dump(by_alias=True, exclude_none=True) self.data["details"] = details # Keep the legacy field for clients that do not consume the documented error details. self.data["failure"] = details class KnowledgeFSSpaceNotFoundHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_space_not_found" description = "Agent Knowledge Base was not found." code = 404 class KnowledgeFSResourceNotFoundHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_resource_not_found" description = "Agent Knowledge Base resource was not found." code = 404 class KnowledgeFSOperationUnavailableHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_operation_unavailable" description = "Agent Knowledge Base operation is not available." code = 503 class KnowledgeFSUpstreamUnavailableHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_upstream_unavailable" description = "Agent Knowledge Base is unavailable." code = 503 class KnowledgeFSTimeoutHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_timeout" description = "Agent Knowledge Base request timed out." code = 504 class KnowledgeFSInvalidRequestHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_invalid_request" description = "Agent Knowledge Base request is invalid." code = 400 class KnowledgeFSAccessDeniedHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_access_denied" description = "Agent Knowledge Base operation is not allowed." code = 403 class KnowledgeFSConflictHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_conflict" description = "Agent Knowledge Base operation conflicts with the current resource state." code = 409 class KnowledgeFSRequestTooLargeHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_request_too_large" description = "Agent Knowledge Base request is too large." code = 413 class KnowledgeFSRequestRejectedHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_request_rejected" description = "Agent Knowledge Base request was rejected." code = 422 class KnowledgeFSRateLimitHTTPError(_KnowledgeFSFailureHTTPError): error_code = "knowledge_fs_rate_limit_exceeded" description = "Agent Knowledge Base request rate limit exceeded." code = 429 __all__ = [ "KnowledgeFSAccessDeniedHTTPError", "KnowledgeFSConflictHTTPError", "KnowledgeFSInvalidRequestHTTPError", "KnowledgeFSOperationUnavailableHTTPError", "KnowledgeFSRateLimitHTTPError", "KnowledgeFSRequestRejectedHTTPError", "KnowledgeFSRequestTooLargeHTTPError", "KnowledgeFSResourceNotFoundHTTPError", "KnowledgeFSSpaceNotFoundHTTPError", "KnowledgeFSTimeoutHTTPError", "KnowledgeFSUpstreamUnavailableHTTPError", ]