53 lines
1.0 KiB
Python
53 lines
1.0 KiB
Python
class AgentError(Exception):
|
|
"""Base error with a stable public code."""
|
|
|
|
code = "AGENT_ERROR"
|
|
status_code = 500
|
|
|
|
def __init__(self, message: str) -> None:
|
|
super().__init__(message)
|
|
self.message = message
|
|
|
|
|
|
class ValidationAgentError(AgentError):
|
|
code = "VALIDATION_ERROR"
|
|
status_code = 400
|
|
|
|
|
|
class UnauthorizedAgentError(AgentError):
|
|
code = "UNAUTHORIZED"
|
|
status_code = 401
|
|
|
|
|
|
class AgentTypeNotFoundError(ValidationAgentError):
|
|
code = "AGENT_TYPE_NOT_FOUND"
|
|
status_code = 404
|
|
|
|
|
|
class ForbiddenAgentError(AgentError):
|
|
code = "FORBIDDEN"
|
|
status_code = 403
|
|
|
|
|
|
class ConflictAgentError(AgentError):
|
|
code = "CONFLICT"
|
|
status_code = 409
|
|
|
|
|
|
class IdempotencyConflictError(ConflictAgentError):
|
|
code = "IDEMPOTENCY_CONFLICT"
|
|
|
|
|
|
class RecoverableAgentError(AgentError):
|
|
code = "RECOVERABLE_ERROR"
|
|
status_code = 503
|
|
|
|
|
|
class RunLeaseLostError(ConflictAgentError):
|
|
code = "RUN_LEASE_LOST"
|
|
|
|
|
|
class ResourceNotFoundError(AgentError):
|
|
code = "RESOURCE_NOT_FOUND"
|
|
status_code = 404
|