Some Kimi K2.5 model variants (nvidia/Kimi-K2.5-NVFP4) omit
<|tool_calls_section_begin|> and go directly to <|tool_call_begin|>.
The tool parser was only looking for section-level markers, so these
tool calls were forwarded as raw content text instead of being parsed.
Fix: _find_section_start and _find_section_start_end now fall back to
<|tool_call_begin|> as a section start when no section-level marker
is found. The section end falls back to <|tool_call_end|>.
Tool parser:
- Case 3/4: return None instead of DeltaMessage(content='') when
inside an open tool section with no parseable content yet.
Empty-string content deltas pollute the response and break the
content=null vs content='' contract with non-streaming.
Reasoning parser:
- Suppress tool-calls section markers from content forwarding.
The tool parser detects them via current_text re-parsing; forwarding
them as content causes double-handling.
- Already-past-reasoning path: strip section markers from content
for the same reason.