fix: research source extraction crashes on a non-dict finding (#1714)
This commit is contained in:
@@ -461,6 +461,8 @@ class ResearchHandler:
|
||||
seen = set()
|
||||
sources = []
|
||||
for f in findings:
|
||||
if not isinstance(f, dict):
|
||||
continue
|
||||
url = f.get("url", "")
|
||||
title = f.get("title", "") or url
|
||||
summary = f.get("summary", "") or f.get("evidence", "")
|
||||
|
||||
15
tests/test_research_handler_sources_nondict.py
Normal file
15
tests/test_research_handler_sources_nondict.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from src.research_handler import ResearchHandler
|
||||
|
||||
|
||||
def test_extract_sources_skips_non_dict_findings():
|
||||
# findings come from the DeepResearcher result list / cached JSON; a
|
||||
# malformed entry (None or a bare string) made the old loop call .get on a
|
||||
# non-dict and crash, dropping every real source in the set.
|
||||
findings = [
|
||||
{"url": "https://a.com", "title": "A", "summary": "real analysis of the topic"},
|
||||
"junk-row",
|
||||
None,
|
||||
{"url": "https://b.com", "summary": "more genuine detail here"},
|
||||
]
|
||||
out = ResearchHandler._extract_sources(findings)
|
||||
assert [s["url"] for s in out] == ["https://a.com", "https://b.com"]
|
||||
Reference in New Issue
Block a user