From 0435dddda1e1bde24dff3480fff92febf00191ca Mon Sep 17 00:00:00 2001 From: Rod Boev Date: Sat, 20 Jun 2026 08:59:52 -0400 Subject: [PATCH] Move approval handler before tool.progress per GPT-5.5 spec review --- api/gateway_chat.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/api/gateway_chat.py b/api/gateway_chat.py index 7204ccc9e..13691f914 100644 --- a/api/gateway_chat.py +++ b/api/gateway_chat.py @@ -663,6 +663,20 @@ def _run_gateway_chat_streaming( payload = json.loads(data) except json.JSONDecodeError: continue + _payload_event = str(payload.get("event") or payload.get("type") or sse_event).strip() + if _payload_event in {"hermes.approval.request", "approval.request"}: + approval_data = _gateway_runs_approval_event(payload) + if approval_data: + put_gateway_event("approval", approval_data) + try: + from api.route_approvals import submit_gateway_pending_mirror + submit_gateway_pending_mirror(session_id, approval_data) + except Exception: + logger.debug("submit_gateway_pending_mirror failed", exc_info=True) + else: + logger.debug("Ignoring malformed gateway approval payload") + sse_event = "message" + continue if sse_event == "hermes.tool.progress": translated = _gateway_tool_progress_event(payload) if translated: @@ -702,18 +716,6 @@ def _run_gateway_chat_streaming( put_gateway_event("reasoning", {"text": reason_delta}) sse_event = "message" continue - _payload_event = str(payload.get("event") or payload.get("type") or sse_event).strip() - if _payload_event in {"hermes.approval.request", "approval.request"}: - approval_data = _gateway_runs_approval_event(payload) - if approval_data: - put_gateway_event("approval", approval_data) - try: - from api.route_approvals import submit_gateway_pending_mirror - submit_gateway_pending_mirror(session_id, approval_data) - except Exception: - logger.debug("submit_gateway_pending_mirror failed", exc_info=True) - sse_event = "message" - continue last_payload = payload reasoning_delta = _gateway_sse_reasoning_delta(payload) if reasoning_delta: