Attribute replayed reasoning to its tool round; honor user reasoning override
Review follow-ups on the replay shape:
The FinalAnswer handler merges the pre-tool stream into content when
tools ran, so recovered think blocks can belong to earlier tool rounds,
not just the final answer. The live loop now persists each round's
reasoning on the round's first Call update (optional field, absent on
old messages), and replay re-attaches it to that round's assistant
tool-call message, deduping it out of the final message's blocks. Old
conversations keep the previous behavior of attaching recovered
reasoning to the final message.
The cross-turn reasoning gate previously read only the static
supportsReasoning flag, while reasoning_effort forwarding also honors
the per-user reasoningOverrides setting, which can force-enable a model
on self-hosted installs or force-disable a flagged one. The override is
now threaded through both flows and wins in both directions, with the
capability flag as fallback.