mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-20 14:12:59 +03:00
Follow-up after testing the Capy BYOK flow. The unconditional
`delete transformed.thinking` was killing legitimate thinking configs
that applyThinkingBudget had already converted to Anthropic-valid form
({type:"enabled"|"disabled", budget_tokens:N}). Replace with a
conditional strip that:
- Preserves Anthropic-valid shapes (enabled/disabled + numeric
budget_tokens, no extra fields)
- Strips Capy/Anthropic-SDK shapes Anthropic doesn't accept
(type:"adaptive", or presence of the Capy-specific `display` field)
Symptom we observed: clients sending
`thinking: {type:"adaptive", display:"summarized"}` on /v1/messages
saw plain text responses with no thinking block. Their UIs (e.g. Capy)
fell back to rendering answer text inside the empty "Thought" section.
With applyThinkingBudget in adaptive mode (default for many user
configs), the body reaching this executor already has a valid
Anthropic shape — the unconditional strip was undoing that work.
Bodies that bypass applyThinkingBudget (passthrough mode) still get
stripped here because Anthropic 400s on the unconverted shape.
5 new test cases cover the preserve/strip matrix on Anthropic-shape
and OpenAI-shape bodies.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>