mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-26 13:16:24 +00:00
* feat(community): migrate GroundRoute tools to async HTTP The GroundRoute provider sent its search and fetch requests through a sync httpx.Client. A sync LangChain tool invoked through ainvoke runs on the default executor, so the request held one of that pool's threads for the whole network round-trip, and several providers queried in parallel queued behind each other. Make both tools coroutines over httpx.AsyncClient, resolve the API key and the configured max_results in a single config read, and keep that read off the event loop with asyncio.to_thread. * refactor(community): drop the dead GroundRoute API key wrapper The async migration resolved the key and max_results through _resolve_tool_settings, which left _get_api_key as a second seam around the same config read: only TestGetApiKey still exercised it. web_fetch now reads its key through the same resolver, and the tests point at _resolve_tool_settings. Also record which httpx client factory the provider reaches for in the runtime anchor. MockTransport runs its handler on the calling thread without real blocking I/O, so a provider that stayed async but sent the request through a sync client would satisfy the thread assertion; the recorded factory is what catches that partial regression. --------- Co-authored-by: treasuresyq <309743290+treasuresyq@users.noreply.github.com>