In-progress state for a single streamed tool call.
args and args_parts are two representations of the arguments used one at
a time, depending on whether the provider delivers the value whole or in
JSON string fragments.
Fragments are scanned incrementally as they arrive: the private _args_*
fields hold a JSON lexer folded over everything scanned so far, so
parse_args can tell "still streaming" from "complete" without re-reading
the accumulated prefix on every chunk. That makes the fragment path linear
over a stream, at the cost of a second invariant — the lexer state must stay
in step with args_parts. Mutate args_parts only by appending or by
rebinding it wholesale (see its docstring).