54ce9e47fc
After a prewalk hand-off plus mid-run compaction, the openai-responses input builder re-encoded replayed assistant turns via convertResponsesAssistantMessage, demoting their reasoning to <think> output_text and emitting no reasoning item. DeepSeek (opencode-go) then rejected the thinking-mode continuation with 400 "The reasoning_text in the thinking mode must be passed back to the API" and OMP looped on the unchanged request. The encoder now synthesizes a reasoning_text reasoning item for every replayed assistant turn when the target requires reasoning replay in thinking mode (requiresReasoningContentForAllAssistantTurns / requiresReasoningContentForToolCalls), carrying surviving thinking text when present, mirroring the chat-completions reasoning_content safety net. Gated on reasoning being active for the request, so non-DeepSeek Responses targets and reasoning-disabled turns are unaffected. Fixes #8248