• Stefy Lanza (nextime / spora )'s avatar
    parser: stop loose JSON parser from hanging on malformed tool args · cf50ab84
    Stefy Lanza (nextime / spora ) authored
    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: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
    cf50ab84
parser.py 96.8 KB