ctlst
281100e2df
fix(agent): prevent AsyncOpenAI/httpx cross-loop deadlock in gateway mode ( #2701 )
...
In gateway mode, async tools (vision_analyze, web_extract, session_search)
deadlock because _run_async() spawns a thread with asyncio.run(), creating
a new event loop, but _get_cached_client() returns an AsyncOpenAI client
bound to a different loop. httpx.AsyncClient cannot work across event loop
boundaries, causing await client.chat.completions.create() to hang forever.
Fix: include the event loop identity in the async client cache key so each
loop gets its own AsyncOpenAI instance. Also fix session_search_tool.py
which had its own broken asyncio.run()-in-thread pattern — now uses the
centralized _run_async() bridge.
2026-03-25 17:31:56 -07:00
..
2026-03-21 15:54:10 -07:00
2026-03-25 16:09:27 -07:00
2026-03-25 11:13:21 -07:00
2026-03-25 15:51:15 -07:00
2026-03-25 17:03:05 -07:00
2026-03-21 09:34:00 -07:00
2026-03-24 07:30:25 -07:00
2026-03-24 19:44:02 -07:00
2026-03-25 16:52:04 -07:00
2026-03-17 02:02:33 -07:00
2026-03-17 02:53:33 -07:00
2026-03-17 01:50:59 -07:00
2026-03-17 04:24:27 -07:00
2026-03-15 08:02:29 -07:00
2026-03-14 11:03:20 -07:00
2026-03-21 16:54:43 -07:00
2026-03-17 01:07:11 +03:00
2026-03-14 19:38:55 -07:00
2026-03-14 19:38:55 -07:00
2026-03-19 17:47:05 -07:00
2026-03-14 22:31:51 -07:00
2026-03-14 22:31:51 -07:00
2026-03-17 04:46:15 -07:00
2026-03-14 11:57:44 -07:00
2026-03-25 15:00:33 -07:00
2026-03-21 09:42:07 -07:00
2026-03-20 04:35:17 -07:00
2026-03-17 02:53:33 -07:00
2026-03-15 19:03:34 -07:00
2026-03-20 04:35:17 -07:00
2026-03-14 21:28:51 -07:00
2026-03-17 02:05:26 -07:00
2026-03-23 06:20:19 -07:00
2026-03-20 06:04:33 -07:00
2026-03-14 21:19:22 -07:00
2026-03-14 15:00:45 +03:00
2026-03-17 03:44:44 -07:00
2026-03-17 02:05:26 -07:00
2026-03-18 15:22:51 -07:00
2026-03-23 16:02:06 -07:00
2026-03-24 12:50:24 -07:00
2026-03-23 06:40:05 -07:00
2026-03-22 05:58:26 -07:00
2026-03-25 17:31:56 -07:00
2026-03-15 08:02:29 -07:00
2026-03-15 21:59:53 -07:00
2026-03-18 02:42:58 -07:00
2026-03-25 09:47:28 -07:00
2026-03-17 03:44:44 -07:00
2026-03-17 02:53:33 -07:00
2026-03-17 02:53:33 -07:00
2026-03-24 08:19:23 -07:00
2026-03-19 21:24:53 +01:00
2026-03-17 23:40:22 -07:00
2026-03-20 15:41:06 -04:00
2026-03-16 06:35:46 -07:00
2026-03-21 09:47:33 -07:00
2026-03-22 05:58:26 -07:00
2026-03-17 00:12:16 -07:00
2026-03-17 02:53:33 -07:00
2026-03-17 02:53:33 -07:00
2026-03-25 12:16:39 -07:00
2026-03-19 10:34:44 -07:00
2026-03-25 12:05:37 -07:00
2026-03-24 06:41:11 -07:00
2026-03-19 15:16:35 +01:00
2026-03-25 12:46:04 -07:00
2026-03-16 23:48:14 -07:00
2026-03-21 09:41:17 -07:00
2026-03-14 11:03:25 -07:00
2026-03-14 21:51:27 -07:00
2026-03-14 21:51:27 -07:00