Thinking models of the Bailing family intermittently emit <tool_call>
arg_key/arg_value XML inside the thinking block. The PEG layer consumes
that region as reasoning_content before the tool stage, so the call is
lost: empty content, no structured calls. update_chat_msg now promotes
well-formed blocks to tool calls on final parses with empty content.
Strictly additive; ids flow through set_tool_call_ids. Verified with a
standalone harness against live-captured payloads.