mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-26 13:16:24 +00:00
`web_search_tool` skipped non-object entries but returned the filtered list even when it was empty, so a non-empty `results`/`entries`/`articles` container holding no objects fell through to "No results found". That tells the agent the query legitimately matched nothing instead of surfacing the malformed payload -- the failure mode the sibling providers already contain (brave #6550, groundroute #6603, tavily #6645, sofya #6719): a 200 body wrapped around an upstream error page ends a research loop as "no hits". Extract `_response_rows`, which treats a missing or null container as an empty search and a container that is not a list, or a non-empty list holding no objects, as the provider's format error, keeping non-object entries skipped in order so valid rows survive. Both call sites (all three verticals share one helper) now return the existing structured error. RED/GREEN: the 7 new cases fail on main with "No results found" and pass with the fix; test_serply_tools.py 34 passed, the five provider suites (serply/serper/tavily/sofya/tencent_wsa) 284 passed, ruff check and format clean.