What's Changed
- Add coverage for persisting provider content blocks on paused turns by @dfinchenko in #861
- Add coverage for storing generated audio on a filesystem disk by @dfinchenko in #863
- Add coverage for storing a generated image on a filesystem disk by @dfinchenko in #862
- Trigger failover when a provider connection fails by @JVillator0 in #781
- Fail over on transient gateway and Cloudflare upstream errors, not only 503 by @sulimanbenhalim in #810
- Execute
then(...)callback when faking the queued generation of transcription/image/audio/embeddings by @gdebrauwer in #797 - Add web search support to the xAI provider by @sulimanbenhalim in #857
- Add transcription support to the OpenAI-compatible provider by @sulimanbenhalim in #858
- Add transcription support to the Groq provider by @sulimanbenhalim in #868
- Fail over when Anthropic rejects a request for hitting a usage limit by @oddvalue in #864
- Reconstruct S3 document attachments in File::fromArray by @sulimanbenhalim in #878
- Handle Mistral responses that return content as a list of blocks by @lazerg in #866
- Reset text part state after TextEnd in Responses API streams by @chrisnetonline in #854
- Fix OpenAI gateway dropping cache write tokens from usage by @aqu1les in #846
- Add hosted tool search via ToolSearch tool and stateless output replay (OpenAI + Anthropic) by @behzadsp in #697
- Repair unknown local tool calls by @pushpak1300 in #859
- Make stream errors throw instead of silently ending the run by @pushpak1300 in #870
- Thread one invocation id through an entire agent run by @pushpak1300 in #871
- Report tool invocations through a run context by @pushpak1300 in #872
- Report each generation step through the run context by @pushpak1300 in #873
- Report tool failures and how long a tool ran by @pushpak1300 in #874
- Link an agent invoked as a tool back to its parent by @pushpak1300 in #875
- Report a run's terminal failure by @pushpak1300 in #876
- Filter partially-orphaned tool calls when replaying conversation history by @filipposallemi in #758
- [BUG] [0.x] Sum streamed usage across tool-call steps in all provider gateways by @mo-inkhan in #698
- Map Anthropic refusal and model_context_window_exceeded stop reasons by @egantz in #881
- Update Gemini default text model to gemini-3.7-flash by @pushpak1300 in #887
- Keep the MCP request bound while converting generator results by @pushpak1300 in #888
- Add support for the OpenRouter web fetch server tool by @CamilleScholtz in #889
- Send text/plain for all text document sources on Anthropic by @calrloco in #886
- Fail over on Anthropic transient gateway and Cloudflare errors by @sulimanbenhalim in #884
- Strip markdown code fences from OpenAI-compatible structured output by @sulimanbenhalim in #879
- Add file search support to the xAI provider by @timmcleod in #894
- Added assertPromptedTimes test method by @F1nnG in #891
- Surface Anthropic web fetch citations on the response by @sulimanbenhalim in #892
- Exclude DeepSeek cache-hit tokens from the reported prompt token count by @sulimanbenhalim in #896
New Contributors
- @gdebrauwer made their first contribution in #797
- @oddvalue made their first contribution in #864
- @lazerg made their first contribution in #866
- @chrisnetonline made their first contribution in #854
- @aqu1les made their first contribution in #846
- @behzadsp made their first contribution in #697
- @filipposallemi made their first contribution in #758
- @mo-inkhan made their first contribution in #698
- @egantz made their first contribution in #881
- @CamilleScholtz made their first contribution in #889
- @calrloco made their first contribution in #886
- @F1nnG made their first contribution in #891
Full Changelog: v0.10.3...v0.11.0