🤖 Fix Anthropic thinking error with context-aware filtering #171
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When users interrupt a thinking stream and resume with Anthropic's extended thinking enabled, the API returns an error:
This happens because:
filterEmptyAssistantMessages()
strips reasoning-only messagesSolution
Implement context-aware filtering that preserves reasoning-only messages when needed:
This gives Anthropic's thinking API the context it needs while keeping other flows clean.
Implementation
filterEmptyAssistantMessages()
now accepts optional context:provider
- AI provider namethinkingLevel
- Thinking settingFiltering logic:
Testing
New integration test with 5 tricky message scenarios:
Tests both Anthropic and OpenAI to ensure the fix doesn't break other providers.
Uses direct HistoryService manipulation (not timing-dependent interrupts) for reliability.
Results:
Related
This builds on #170 which changed the sentinel from
[INTERRUPTED]
to[CONTINUE]
for better model understanding.Generated with
cmux