From a6540b21c79d0368d91b46d3ed6f75016b167347 Mon Sep 17 00:00:00 2001 From: CREDO23 Date: Thu, 30 Apr 2026 21:42:58 +0200 Subject: [PATCH] Fix stream_new_chat interrupt resolution using LangGraph snapshot.interrupts. --- .../app/tasks/chat/stream_new_chat.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/surfsense_backend/app/tasks/chat/stream_new_chat.py b/surfsense_backend/app/tasks/chat/stream_new_chat.py index 5d1f4b572..c9ae38f24 100644 --- a/surfsense_backend/app/tasks/chat/stream_new_chat.py +++ b/surfsense_backend/app/tasks/chat/stream_new_chat.py @@ -1374,11 +1374,19 @@ async def _stream_agent_events( result.agent_called_update_memory = called_update_memory _log_file_contract("turn_outcome", result) - is_interrupted = state.tasks and any(task.interrupts for task in state.tasks) - if is_interrupted: + snapshot_interrupts = getattr(state, "interrupts", ()) or () + interrupt_value = None + if snapshot_interrupts: + interrupt_value = snapshot_interrupts[0].value + else: + for task in state.tasks or []: + if task.interrupts: + interrupt_value = task.interrupts[0].value + break + if interrupt_value is not None: result.is_interrupted = True - result.interrupt_value = state.tasks[0].interrupts[0].value - yield streaming_service.format_interrupt_request(result.interrupt_value) + result.interrupt_value = interrupt_value + yield streaming_service.format_interrupt_request(interrupt_value) async def stream_new_chat(