mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-13 08:15:21 +02:00
parse_llm_json is explicitly designed to return a list when the model emits a
top-level JSON array (it has a dedicated test for that). The QA analyzers then
call parsed.get("tags", ...) directly on the result. When parsed is a list,
that raises AttributeError, which is NOT caught by the surrounding
except (json.JSONDecodeError, ValueError) — so a single stray array response
from the QA model crashed the entire QA analysis run instead of degrading to
empty results.
The live variable-extraction path already guards this exact case with an
isinstance(..., dict) check; mirror it in both QA analysis call sites
(_run_qa_analysis per-node and _run_whole_call_qa_analysis fallback) so a
non-dict parse result coerces to {} and the run produces empty defaults.
Adds a regression test that drives the whole-call analyzer with an array
response and asserts empty results rather than a crash.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| node_specs | ||
| qa | ||
| tools | ||
| __init__.py | ||
| audit.py | ||
| disposition_mapper.py | ||
| dto.py | ||
| duplicate.py | ||
| errors.py | ||
| layout.py | ||
| mcp_tool_session.py | ||
| node_data.py | ||
| pipecat_engine.py | ||
| pipecat_engine_callbacks.py | ||
| pipecat_engine_context_composer.py | ||
| pipecat_engine_context_summarizer.py | ||
| pipecat_engine_custom_tools.py | ||
| pipecat_engine_variable_extractor.py | ||
| text_chat_logs.py | ||
| text_chat_runner.py | ||
| text_chat_session_service.py | ||
| trigger_paths.py | ||
| workflow_graph.py | ||