mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-01 12:52:11 +03:00
When proxying Claude responses through OmniRoute, thinking blocks were being
emitted as regular content (delta.content) with <think>...</think> XML tags.
Clients like Claude Code, Cursor, and Windsurf look for delta.reasoning_content
to render the thinking panel — not <think> tags inside content.
Root cause (claude-to-openai.ts):
- content_block_start type:thinking → emitted { content: '<think>' }
- content_block_delta thinking_delta → emitted { content: delta.thinking }
- content_block_stop thinking block → emitted { content: '</think>' }
Fix:
- content_block_start → emits { reasoning_content: '' } (signals block start)
- thinking_delta → emits { reasoning_content: delta.thinking }
- content_block_stop → no extra chunk needed (thinking streamed via reasoning_content)
This fix applies when sourceFormat=CLAUDE targetFormat=OPENAI (Antigravity OAuth,
direct Claude API providers). The user reported 'Thinking Budget: passthrough'
was enabled but thinking was invisible — this is the root cause.
Fixes #289