fix(#93): enable cascade reuse for Sonnet 4.6 thinking with emulated tools
zhangzhang-bit reported "上下文会丢" using claude-sonnet-4-6-thinking in Claude Code. Debug log shows every CascadeChat is `reuse=false` and a new cascadeId starts each turn — fresh upstream session every call, in-session model state lost. Root cause: shouldUseCascadeReuse() with emulateTools=true only enabled reuse for Opus models via isToolSensitiveOpusModel(), which excluded Sonnet entirely. Fix: add isToolEmulatedReusableModel() covering Opus 4.6/4.7 AND Sonnet 4.6 (incl. -thinking variant). Sonnet 4.6 hits the same multi-turn tool-context loss as Opus 4.7 in Claude Code; same fix path applies. Strict reuse + multimodal-fallback gates stay Opus-only since those are Opus-specific behaviors. Add WINDSURFAPI_DISABLE_SONNET_TOOL_REUSE=1 env override for users who want the old behavior.
D
dwgx committed
4e3e6965e789703dedda45e5c26fb16cd119e2a6
Parent: 2fe8f7f