Skip to content

Commit 54f853f

Browse files
committed
refactor: isolate responses terminal failure formatting
1 parent f77a63a commit 54f853f

3 files changed

Lines changed: 29 additions & 25 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from __future__ import annotations
2+
3+
from openai.types.responses import Response
4+
5+
6+
def format_response_terminal_failure(
7+
event_type: str,
8+
response: Response | None,
9+
) -> str:
10+
message = f"Responses stream ended with terminal event `{event_type}`."
11+
if response is None:
12+
return message
13+
14+
details: list[str] = []
15+
status = getattr(response, "status", None)
16+
if status:
17+
details.append(f"status={status}")
18+
error = getattr(response, "error", None)
19+
if error:
20+
details.append(f"error={error}")
21+
incomplete_details = getattr(response, "incomplete_details", None)
22+
if incomplete_details:
23+
details.append(f"incomplete_details={incomplete_details}")
24+
25+
if details:
26+
message = f"{message} {'; '.join(details)}."
27+
return message

src/agents/models/openai_responses.py

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
from ..util._json import _to_dump_compatible
6969
from ..version import __version__
7070
from ._openai_retry import get_openai_retry_advice
71+
from ._response_terminal import format_response_terminal_failure
7172
from ._retry_runtime import (
7273
should_disable_provider_managed_retries,
7374
should_disable_websocket_pre_event_retries,
@@ -184,30 +185,6 @@ def _construct_response_stream_event_from_payload(
184185
)
185186

186187

187-
def format_response_terminal_failure(
188-
event_type: str,
189-
response: Response | None,
190-
) -> str:
191-
message = f"Responses stream ended with terminal event `{event_type}`."
192-
if response is None:
193-
return message
194-
195-
details: list[str] = []
196-
status = getattr(response, "status", None)
197-
if status:
198-
details.append(f"status={status}")
199-
error = getattr(response, "error", None)
200-
if error:
201-
details.append(f"error={error}")
202-
incomplete_details = getattr(response, "incomplete_details", None)
203-
if incomplete_details:
204-
details.append(f"incomplete_details={incomplete_details}")
205-
206-
if details:
207-
message = f"{message} {'; '.join(details)}."
208-
return message
209-
210-
211188
@dataclass(frozen=True)
212189
class _WebsocketRequestTimeouts:
213190
lock: float | None

src/agents/run_internal/run_loop.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
from ..lifecycle import RunHooks
5959
from ..logger import logger
6060
from ..memory import Session
61-
from ..models.openai_responses import format_response_terminal_failure
61+
from ..models._response_terminal import format_response_terminal_failure
6262
from ..result import RunResultStreaming
6363
from ..run_config import ReasoningItemIdPolicy, RunConfig
6464
from ..run_context import AgentHookContext, RunContextWrapper, TContext

0 commit comments

Comments
 (0)