diff --git a/bridge/aria_bridge.py b/bridge/aria_bridge.py index 5843911..8dc99b6 100644 --- a/bridge/aria_bridge.py +++ b/bridge/aria_bridge.py @@ -1316,7 +1316,9 @@ class ARIABridge: self._pending_files_flush_task = None text = self._build_pending_files_message(user_text) self._pending_files = [] - await self.send_to_core(text, source="app-file+chat") + # create_task statt await — sonst blockt der RVS-recv-Loop bis Brain + # fertig ist (siehe chat-handler oben). + asyncio.create_task(self.send_to_core(text, source="app-file+chat")) return True async def send_to_core(self, text: str, source: str = "bridge", client_msg_id: Optional[str] = None) -> None: @@ -1641,9 +1643,16 @@ class ARIABridge: " [BARGE-IN]" if interrupted else "", " [GPS]" if location else "", text[:80]) - await self.send_to_core(core_text, - source="app" + (" [barge-in]" if interrupted else ""), - client_msg_id=client_msg_id) + # KEIN await: send_to_core kann 20 Min dauern. Wenn wir + # hier awaiten, blockt der `async for raw_message in ws`- + # Loop solange → RVS-Server droppt uns nach ~4 Min idle. + # Als Task: Brain laeuft im Hintergrund, RVS-recv bleibt + # bedienbar, Pings werden beantwortet, Verbindung lebt. + asyncio.create_task(self.send_to_core( + core_text, + source="app" + (" [barge-in]" if interrupted else ""), + client_msg_id=client_msg_id, + )) return if msg_type == "cancel_request": @@ -1819,7 +1828,8 @@ class ARIABridge: if not file_b64: text = f"Stefan hat eine Datei gesendet ({file_name}, {file_type}) aber die Daten sind leer angekommen." - await self.send_to_core(text, source="app-file") + # create_task statt await — RVS-recv darf nicht blocken + asyncio.create_task(self.send_to_core(text, source="app-file")) return if file_type.startswith("image/"):