parser: stop loose JSON parser from hanging on malformed tool args
The gemma loose object/array parser could spin forever: when a recursive
value parse can't advance past a stray delimiter (e.g. '}' where ']' was
expected, as in the broken `{"files":[{"path":"x"]}}` a looping Gemma
finetune emits), the array/object loop kept iterating without consuming
input. parse_gemma_native_tool_calls and the new parse_tool_tag_json_calls
both feed model output through this parser, so a malformed tool call would
hang the request (not just be missed). Add a forward-progress guard to
both loops: bail when an iteration consumes no input. Best-effort recovers
the tool name + good fields from malformed JSON; clean input is unaffected.
Co-Authored-By:
Claude Opus 4.8 <noreply@anthropic.com>
Showing
Please
register
or
sign in
to comment