fix: chat_template, keep tool-call reasoning across later user turns

#49
by dimondev - opened

Summary

Same one-line fix filed on E4B/E2B: an assistant turn that called a tool loses its reasoning_content once a later user message exists, invalidating ~27% of the cached prefix on agent loops.

Patched chat_template.jinja attached.

- {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}
+ {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or message.get('tool_calls') or preserve_thinking -%}

ChatLint stays at 0 errors / gate PASS (this repo already passes the error tier). The change clears a history_rewrite that was previously masked by an earlier tail_marker warning on the generation prompt, same root cause as E4B, where it surfaces as an error.

pip install chatlint
chatlint check chat_template.jinja
Ready to merge
This branch is ready to get merged automatically.

Sign up or log in to comment