mirror of
https://github.com/langgenius/dify.git
synced 2026-05-21 01:07:03 +08:00
62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
"""API-side errors for the Dify Agent backend integration.
|
|
|
|
The wire protocol and low-level HTTP behaviour are owned by ``dify-agent``.
|
|
This module only normalizes those client errors into the API backend's boundary
|
|
so workflow/node code does not depend directly on transport-specific exception
|
|
classes.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
|
|
class AgentBackendError(Exception):
|
|
"""Base error for API-side Agent backend integration failures."""
|
|
|
|
|
|
class AgentBackendRequestBuildError(AgentBackendError):
|
|
"""Raised when Dify product/workflow state cannot be mapped to a run request."""
|
|
|
|
|
|
class AgentBackendTransportError(AgentBackendError):
|
|
"""Raised for timeout or request-level failures talking to Agent backend."""
|
|
|
|
|
|
class AgentBackendHTTPError(AgentBackendTransportError):
|
|
"""Raised for Agent backend HTTP errors after status/detail normalization."""
|
|
|
|
status_code: int
|
|
detail: object
|
|
|
|
def __init__(self, message: str, *, status_code: int, detail: object) -> None:
|
|
self.status_code = status_code
|
|
self.detail = detail
|
|
super().__init__(message)
|
|
|
|
|
|
class AgentBackendValidationError(AgentBackendError):
|
|
"""Raised for local request validation or Agent backend 422 responses."""
|
|
|
|
detail: object
|
|
|
|
def __init__(self, message: str, *, detail: object) -> None:
|
|
self.detail = detail
|
|
super().__init__(message)
|
|
|
|
|
|
class AgentBackendStreamError(AgentBackendError):
|
|
"""Raised when an Agent backend event stream is malformed or exhausted."""
|
|
|
|
|
|
class AgentBackendRunFailedError(AgentBackendError):
|
|
"""Raised by callers that choose to translate a terminal failed run into an exception."""
|
|
|
|
run_id: str
|
|
detail: Any
|
|
|
|
def __init__(self, run_id: str, detail: Any) -> None:
|
|
self.run_id = run_id
|
|
self.detail = detail
|
|
super().__init__(f"Agent backend run failed: {run_id}")
|