When Claude Code sends requests with large thinking_budget values, the model may spend all tokens on "thinking" and return empty responses, causing Claude Code to stop mid-conversation. This commit adds a retry mechanism that: - Throws EmptyResponseError instead of emitting fake message on empty response - Retries up to 2 times before giving up - Emits fallback message only after all retries are exhausted Changes: - src/errors.js: Added EmptyResponseError class and isEmptyResponseError() - src/cloudcode/sse-streamer.js: Throw error instead of yielding fake message - src/cloudcode/streaming-handler.js: Added retry loop with fallback Tested for 6+ hours with 1,884 API requests and 88% recovery rate on empty responses. Fixes #61 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
13 KiB
13 KiB