fix: evaluate_turn_regex crashes on a non-string agent_reply (#1723)

This commit is contained in:
Afonso Coutinho
2026-06-03 05:31:26 +01:00
committed by GitHub
parent 290d398900
commit ada30aa039
2 changed files with 15 additions and 1 deletions

View File

@@ -112,7 +112,7 @@ def evaluate_turn_regex(
return ("failure", f"tool result matched error pattern {pat.pattern!r}: {snippet!r}") return ("failure", f"tool result matched error pattern {pat.pattern!r}: {snippet!r}")
# Agent verbally gave up? # Agent verbally gave up?
if agent_reply: if isinstance(agent_reply, str) and agent_reply:
for pat in _REPLY_GIVE_UP_PATTERNS: for pat in _REPLY_GIVE_UP_PATTERNS:
m = pat.search(agent_reply) m = pat.search(agent_reply)
if m: if m:

View File

@@ -0,0 +1,14 @@
from src.teacher_escalation import evaluate_turn_regex
def test_evaluate_turn_regex_tolerates_non_string_reply():
# agent_reply is typed str but is the raw LLM turn output; a non-string
# (dict / number from a malformed turn) made pat.search(agent_reply) raise
# TypeError. The tool_results branch already isinstance-guards its rows.
assert evaluate_turn_regex([], 123) == ("ok", None)
assert evaluate_turn_regex([], {"text": "I cannot do that"}) == ("ok", None)
def test_evaluate_turn_regex_still_flags_give_up_string():
status, _ = evaluate_turn_regex([], "I don't have a tool to do that")
assert status == "failure"