From 49bd2927468a48ff57d15ad4a8ca1fde91007904 Mon Sep 17 00:00:00 2001 From: ciregenz Date: Tue, 9 Jun 2026 12:59:00 -0700 Subject: [PATCH] [eric] backend: answer client:ping on /ws/dashboard, the missing pong let the client heartbeat kill the socket every 35s --- backend/main.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/main.py b/backend/main.py index 4cac137d..d51267a8 100644 --- a/backend/main.py +++ b/backend/main.py @@ -381,7 +381,13 @@ async def websocket_dashboard(websocket: WebSocket): event = msg.get("event") payload = msg.get("data", {}) - if event == "agent:approval_response": + if event == "client:ping": + # No pong here meant the client heartbeat force-closed this socket every 35s, forever. + await websocket.send_text(json.dumps({ + "event": "server:pong", + "data": {"nonce": payload.get("nonce")}, + })) + elif event == "agent:approval_response": from backend.apps.agents.agent_manager import agent_manager agent_manager.handle_approval(payload.get("request_id"), { "behavior": payload.get("behavior", "deny"),