# What changed in ai

> 278 changes in ai 5 to 7 from its official release notes, upgrade guides and advisories: 22 breaking, 2 deprecations, 9 security, 65 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/ai/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## ai 7

### Breaking changes

- Public state forms are normalized into parts before providers are called, with text and JSON objects mapped to text and json parts. (7.0.133) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.133)
- Arrays passed directly as state are interpreted as decision state parts; JSON arrays must be wrapped. (7.0.133) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.133)
- TypeSafe AI rejects file inputs in decision state. (7.0.133) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.133)
- The evaluate API was renamed to decide. (7.0.128) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.128)
- Undetermined generated audio formats now throw InvalidResponseDataError instead of a generic Error. (7.0.128) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.128)
- Provider-executed tool errors bypass the UI stream onError callback, while stream errors and invalid tool calls still invoke it. (6.0.297, 7.0.122) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.297), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.122)
- Together AI Gemini image inputs are marked unsupported by the current single-image request mapping. (7.0.119) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.119)
- Packages are compiled for an ES2022 runtime target, which may affect the runtime environment required by developers. (7.0.116) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.116)
- URL MIME types are matched exactly so unsupported subtypes are not forwarded to providers. (7.0.116) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.116)
- Histories whose reconstructed schema output differs are rejected, including signed approvals with missing original input. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- addToolOutput now rejects continuous sessions. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- sendTextMessage now rejects continuous sessions. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- Utility input validation now uses InvalidArgumentError, changing the error developers may need to handle. (7.0.99) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.99)
- Unsupported batch request types are now rejected. (7.0.98) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.98)
- Embedding model responses containing no embeddings are now rejected. (5.0.259, 6.0.284, 7.0.95) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.284), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.259), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.95)
- Batch operations now support selecting models per request. (7.0.94) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.94)
- Tool execution no longer starts automatically when a model call ends with an unsafe finish reason. (5.0.241, 6.0.260, 7.0.70) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.260), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.241), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.70)

### Security

- Unavailable tools no longer expose persisted output to models. (5.0.273, 7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.273), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- Default stream reconnection URLs encode chat IDs, reject standalone dot IDs, and preserve custom URLs unchanged. (5.0.270, 6.0.297, 7.0.122) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.297), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.270), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.122)
- Tracing-channel context is now filtered according to telemetry allowlists. (7.0.114) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.114)
- URL-backed language model file outputs are securely downloaded and expose actual base64 and byte content, with valid data URLs in UI streams. (7.0.111) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.111)
- Prevents direct execution of tools governed by tool callers. (7.0.108) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.108)
- Default Node.js downloads retain DNS validation and connection pinning when global fetch is wrapped before or after SDK loading. (5.0.271, 6.0.298, 7.0.103) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.298), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.271), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.103)
- Prevents streamText from executing tool calls that violate tool choice. (7.0.94) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.108), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.94)

### Deprecations

- Deprecation warnings now use stable codes and are deduplicated. (7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- rawInput is deprecated in output-error UI message parts. (7.0.103) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.103)

### New APIs and options

- Adds configurable concurrency for tool call execution. (7.0.140) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.140)
- Adds an optional shared citation representation across generated text, stream events, result content, and UI message text parts. (7.0.138) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.138)
- Embedding functions accept a new top-level dimensions setting. (7.0.135) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.135)
- Adds persistent WebSocket chat transport with correlated streaming, backpressure, cancellation, protocol validation, lifecycle handling, and sequence-based resume support. (7.0.135) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.135)
- Experimental decision state now supports ordered text, file, and JSON parts. (7.0.133) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.133)
- OpenAI Decisions and language model adapters now support image input. (7.0.133) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.133)
- Introduces a callback for persisting messages when a UI message step ends. (7.0.132) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.132)
- Adds portable max reasoning with native provider mappings, compatibility coercions, and budget-based fallback support. (7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- ReasoningLevel now includes max, so exhaustive switches and Record mappings must handle the new value. (7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- extractReasoningMiddleware supports custom reasoning delimiters. (7.0.128) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.128)
- WorkflowAgent gains durable non-streaming generation with a shared tool loop, typed output, and a 20-step default. (7.0.128) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.128)
- Tool search can select and rank eligible deferred tools through a search callback. (7.0.127) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.127)
- Tool search supports configuring the maximum number of returned tools. (7.0.127) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.127)
- Experimental streaming lifecycle callbacks were added for speech generation and transcription. (7.0.124) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.124)
- File-input support is advertised for QuiverAI Arrow 2 and Arrow 2 Telos. (7.0.119) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.119)
- Single-image editing capability is included for Together AI FLUX.2 Pro and Flex. (7.0.119) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.119)
- Gemini TTS supports explicit A-law output. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Gemini 3.8 TTS support adds structured speech metadata and per-turn speaker and style controls for prebuilt voices. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Gemini TTS supports explicit mu-law output. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Gemini TTS supports explicit raw PCM output. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- customProvider now accepts evaluationModels for experimental evaluation model aliasing and registry resolution. (7.0.104) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.104)
- Registries now expose evaluationModel for evaluation-capable model resolution. (7.0.104) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.104)
- Adds a native tool search tool for applications that need tool discovery. (7.0.104) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.104)
- Adds experimental evaluation of Choice, Score, and Boolean questions against shared state with typed answers and validation. (7.0.103) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.103)
- Adds an error for unsupported evaluation question types. (7.0.103) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.103)
- Applications exchange WebRTC SDP through an application endpoint using api.session. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- Experimental client-delegated Live conversations can use browser-direct WebRTC alongside the existing WebSocket path. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- The unified factory adds experimental OpenAI Live provider support for server WebSocket sessions with client delegation. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- An OpenAI-specific api override is available for early-access models. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- Typed AI SDK errors are exposed for UI transport and completion failures. (7.0.100) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.100)
- Image generation requests are now supported in batches. (7.0.98) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.98)
- A type guard for tool output errors was added alongside a stable UI message type. (7.0.98) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.98)
- A stable UI message type and a type guard for tool output errors were added. (7.0.98) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.98)
- Batch cancellation and listing APIs were added for managing batches. (7.0.97) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.97)
- Adds an API for canceling batches. (7.0.96) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.96)
- Adds an API for listing batches. (7.0.96) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.96)
- Array outputs now support maxItems constraints. (7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- Array outputs now support minItems constraints. (7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- onLanguageModelCallStart is formally included in the ToolLoopAgentSettings type. (7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- Adds configurable recovery for provider errors after response streaming begins, with isolated retry attempts and successful-attempt-only results and metadata. (7.0.91) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.91)
- Adds a bounded callback-directed recovery path for streamed provider errors when streamRetries is configured to 0. (7.0.91) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.91)
- Upload results now expose the uploaded file size. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- Provider-utils adds a handler for binary stream responses. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- Upload results now expose the file creation timestamp. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- FilesV4 now supports optionally deleting files. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- FilesV4 now supports optional streaming file downloads. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- Upload results now expose the file expiration timestamp. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- FilesV4 operations can receive an abort signal for cancellation. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- FilesV4 operations can receive custom request headers. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- FilesV4 now supports optionally retrieving file metadata. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- Provider-utils adds streaming multipart uploads with deterministic part ordering and failure-path stream teardown. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- Uploads can use a stream data variant for streaming uploads. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- Batch operations now support tool calling. (7.0.88) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.88)
- WorkflowAgent now supports signed tool approvals. (7.0.86) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.86)
- Anthropic batch requests now support the full language-model option surface. (7.0.85) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.85)
- Individual image generation calls are now exposed for direct use. (7.0.85) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.85)
- UI message stream end callbacks now provide operation-level outcomes. (5.0.249, 6.0.271, 7.0.83) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.271), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.249), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.83)
- UI messages retain the optional approval request reason separately from an approver's response reason. (7.0.82) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.82)
- Manual tool approval statuses can include a reason that is preserved across core, model, and UI approval requests. (7.0.82) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.82)
- The gateway provider registers batch completion webhooks through the batch callbackUrl contract. (7.0.79) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.79)
- Batch completion webhooks can be configured with a webhook URL. (7.0.79) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.79)

### Behavior and default changes

- Streamed custom-tool input is marked as text so UI clients can display it progressively without JSON parsing. (7.0.142) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.142)
- A warning is logged when the default step limit stops a tool loop. (7.0.135) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.135)
- Model-call spans now record normalized state parts, while outer spans retain public state inputs. (7.0.133) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.133)
- Decision file bytes are serialized as base64 in OpenTelemetry state attributes. (7.0.133) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.133)
- Shared state is labeled in language-model decision prompts. (7.0.133) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.133)
- Decision refusals are reported as refusal answers. (7.0.130) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.130)
- Portable minimal, xhigh, and max retain or receive provider mappings and now return compatibility warnings. (7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- Speech generation and transcription now include telemetry and provider usage propagation. (7.0.124) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.124)
- Provider capability declarations advertise file and mask input support using confirmed model IDs. (7.0.119) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.119)
- Newer and custom model IDs default to structured speech, while legacy formats remain for older models. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- UI message stream end callbacks now report consumer cancellation. (7.0.112) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.112)
- Adds telemetry support to experimental_evaluate. (7.0.111) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.111)
- Accepts string model IDs when an evaluation-capable default provider is explicitly configured; evaluation does not implicitly fall back to Gateway. (7.0.104) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.104)
- Tool search now supports direct tool calling. (7.0.104) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.104)
- Code-mode can discover and update tools during a conversation. (7.0.103) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.103)
- Live continuous sessions enforce 128 KiB frame and combined buffered-send budgets using actual encoded wire bytes. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- Known Live model IDs route to Live, while unknown IDs retain legacy Realtime defaults. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- maxPlaybackBufferSeconds is supported only for continuous PCM sessions. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- Runtime context attribution was added to embed, embedMany, and rerank operations. (7.0.98) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.98)
- Runtime context attribution was added to embed, embedMany, and rerank operations. (7.0.98) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.98)
- Runtime context attribution was added to embed, embedMany, and rerank operations. (7.0.98) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.98)
- Google and Google Vertex prompt blocks are now treated as terminal. (7.0.94) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.94)
- Retryability classification is provider-independent and preserved through the AI Gateway. (5.0.255, 6.0.280, 7.0.94) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.280), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.255), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.94)
- The core uploadFile helper now forwards abortSignal and headers options. (7.0.89) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.89)
- Parsed structured output is now exposed in streamText end callbacks. (6.0.273, 7.0.84) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.273), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.84)
- Chats can continue automatically after tool approval denials reach the output-denied state. (6.0.270, 7.0.83) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.83), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.270)
- OPA requires-approval decisions now surface their reason to human approvers. (7.0.82) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.82)
- Preliminary tool outputs are filtered when ignoreIncompleteToolCalls is enabled. (5.0.241, 6.0.260, 7.0.70) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.260), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.241), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.70)
- Chat status remains submitted until response content begins streaming. (6.0.255, 7.0.66) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.66), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.255)

### Fixes and other changes

- Raw OpenAI custom-tool input deltas are restored for consumers forwarding them to Responses API clients. (6.0.308, 7.0.142) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.142), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.308)
- The text encoding is preserved when partial UI messages are saved and resumed. (6.0.308, 7.0.142) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.142), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.308)
- Workflow now passes runtime context when telemetry.includeRuntimeContext allows it. (7.0.141) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.141)
- Rejects approved tool calls without results before sending later context to providers. (6.0.304, 7.0.138) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.138), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.304)
- Fixes validation of rounded choice probabilities. (7.0.138) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.138)
- Prevents duplicate message parts when replayed streams are resumed. (6.0.304, 7.0.138) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.138), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.304)
- Reports incomplete model streams with no output as errors. (7.0.138) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.138)
- Updates streaming chat messages by stable ID. (5.0.274, 6.0.304, 7.0.138) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.138), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.304), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.274)
- Updates tool outputs in the message containing the matching tool call. (5.0.274, 6.0.304, 7.0.138) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.138), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.304), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.274)
- Prevents a second resume request on mount when a chat is already submitted or streaming. (5.0.274, 6.0.304, 7.0.138) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.138), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.304), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.274)
- Discards unrelated message state when reading resumed streams. (5.0.274, 6.0.303, 7.0.137) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.274), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.137), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.303)
- chunkMs and firstChunkMs stop when model responses end, retries receive fresh timeout budgets, and stepMs still covers local tools. (7.0.136) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.136)
- Stopping now waits for chat stream cleanup to complete. (5.0.274, 6.0.303, 7.0.135) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.274), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.303), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.135)
- Repeated tool approval responses no longer trigger duplicate continuation requests. (7.0.135) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.135)
- Provider-executed tool calls are preserved when streams are resumed. (7.0.134) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.134)
- Async sendAutomaticallyWhen failures from tool updates are now propagated. (7.0.134) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.134)
- Gateway keeps its existing string and JSON request format and rejects file inputs. (7.0.133) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.133)
- Pending result promises are rejected and pending streams are canceled when the abort signal fires. (7.0.130) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.130)
- Nova 2 portable xhigh now sends maxReasoningEffort high instead of max and returns a compatibility warning. (7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- Chat reconnect URLs no longer contain duplicate slashes. (5.0.273, 6.0.302, 7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.302), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.273), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- Provider options are now preserved from approval-only tool messages. (7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- V2 provider-reported total tokens are now preserved in raw usage. (6.0.302, 7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.302), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- The latest error is now published after repeated failed stream resume attempts. (6.0.302, 7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.302), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- WebKit network errors are now recognized. (7.0.129) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.129)
- Silent audio now returns successful empty transcripts. (7.0.128) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.128)
- Tool approval state is preserved when resuming streams. (7.0.128) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.128)
- Tool approval inputs created in another JavaScript realm are accepted when unchanged. (7.0.127) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.127)
- Merged UI message streams are canceled when the consumer disconnects. (7.0.127) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.127)
- Tool approvals are cleared when addToolOutput runs. (7.0.126) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.126)
- Partial reasoning tags are preserved when streamed text parts end. (7.0.123) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.123)
- Pending tool approvals superseded by user messages are ignored. (7.0.123) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.123)
- All tool content is pruned when retaining zero trailing messages. (7.0.123) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.123)
- Idle UI message streams remain open through optional SSE heartbeats. (5.0.270, 6.0.297, 7.0.123) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.123), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.297), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.270)
- Active UI message parts now continue when resuming after a disconnect. (5.0.268, 6.0.295, 7.0.120) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.120), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.295), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.268)
- Tool metadata is now preserved from tool output chunks. (6.0.296, 7.0.120) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.120), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.296)
- Response streams are canceled when clients disconnect. (5.0.268, 6.0.294, 7.0.119) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.119), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.294), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.268)
- Static tool input errors are stored in the current input field. (7.0.119) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.119)
- Unhandled stream completion rejections are prevented in non-Node runtimes. (7.0.119) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.119)
- Original opaque URI strings are preserved in tagged file URLs during prompt conversion. (7.0.116) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.116)
- Google embedMany calls with more than 100 values now preserve multimodal alignment across automatic batches. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Content length is validated before Google embedding requests are sent. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Each automatic batch validates provider options after middleware transforms them. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Headerless audio formats are identified correctly. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Direct transport stream callbacks now preserve message history. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Empty speech transcripts are rejected before requests are sent. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Completed streamed tool input callbacks are routed to repaired tools. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Tool approvals can resume from earlier messages. (6.0.290, 7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.290)
- Manually approved tool inputs produced by schema transforms are executed while preserving approved inputs during revalidation. (6.0.290, 7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.290)
- Transformed UI tool inputs are validated against reconstructed output before returning them as static tool parts. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Video models are preserved when using legacy fallback providers. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Native WAV responses are preserved without adding a second header. (7.0.113) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.113)
- Opaque file URI strings are preserved during provider serialization. (5.0.264, 6.0.289, 7.0.112) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.112), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.289), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.264)
- UI message validation now preserves parsed metadata and data values. (5.0.265, 6.0.290, 7.0.112) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.112), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.290), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.265)
- Reasoning file parts are now pruned when reasoning is removed. (7.0.112) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.112)
- Cancellation is propagated to batch file downloads. (7.0.111) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.111)
- Reasoning extraction streams now preserve overlapping text blocks. (7.0.109) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.109)
- Replacement completion requests remain loading and cancellable when an earlier request settles. (7.0.109) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.109)
- Validated toolsContext is forwarded to host-executed tools in alignment with ToolLoopAgent. (7.0.109) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.109)
- Stops pending tool-call repairs when generation is cancelled. (7.0.108) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.108)
- Preserves file data when adapting v3 language models. (7.0.108) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.108)
- Base64 text data URLs are decoded using their declared charset. (7.0.107) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.107)
- Query parameters are preserved in chat reconnect URLs. (7.0.107) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.107)
- Chat transport requests no longer include duplicate content types. (5.0.264, 6.0.289, 7.0.107) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.289), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.264), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.107)
- Input callbacks receive tool-specific context. (7.0.107) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.107)
- Preliminary tool outputs no longer complete chats prematurely. (6.0.289, 7.0.107) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.289), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.107)
- Raw speech audio format metadata is preserved. (7.0.107) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.107)
- Node stream responses preserve multiple Set-Cookie headers. (7.0.107) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.107)
- Polling timeouts are enforced for in-flight video status requests. (7.0.107) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.107)
- WorkflowAgent supports deferred tool discovery. (7.0.107) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.107)
- Provider file and skill upload APIs are preserved when using wrapProvider. (7.0.107) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.107)
- Input available callbacks are skipped for invalid streamed tool calls. (7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106)
- Null and empty-string JSON partial outputs are now streamed. (6.0.286, 7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.286)
- onEnd is no longer called after aborting a multi-step text stream. (7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106)
- Streamed step results now report the model selected by prepareStep. (6.0.286, 7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.286)
- Prompt attachment downloads are canceled when model calls are aborted or time out. (6.0.286, 7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.286)
- Provider metadata is preserved when simulating text streams. (5.0.260, 6.0.286, 7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.286), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.260)
- Serialized tool outputs now preserve properties named after object prototypes. (7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106)
- Streamed JSON fences are stripped before arbitrary trailing whitespace. (7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106)
- Streamed response metadata fallbacks now use the model selected by prepareStep. (7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106)
- Structured output is streamed from the final tool-loop step. (6.0.286, 7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.286)
- Telemetry spans are closed when provider response streams fail. (7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106)
- Tool calls required by retained pending approvals are preserved. (6.0.286, 7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.286)
- Unhandled rejections are prevented when reading a UI message stream stops early. (5.0.261, 6.0.286, 7.0.106) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.106), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.286), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.261)
- Evaluation model IDs are resolved through AI Gateway when no default provider is configured, including string aliases in custom providers. (7.0.105) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.105)
- Abnormal realtime WebSocket close diagnostics are now reported through onError. (7.0.104) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.104)
- Oversized manual operations remain recoverable, while startup and automatic audio failures close the session. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- Abnormal realtime WebSocket close codes and reasons are reported through the session error path. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- Automatically denied tool calls in UI streams now settle instead of remaining unresolved. (7.0.102) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.102)
- Tool output JSON values are now serialized. (7.0.101) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.101)
- Invalid reranking provider indices are now rejected. (6.0.284, 7.0.98) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.284), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.98)
- validateUIMessages now accepts inferred tools. (7.0.98) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.98)
- Receiver rejections are observed before generation starts, preventing unhandled rejections while preserving start error precedence. (7.0.97) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.97)
- Calls atob without a receiver for Cloudflare Workers compatibility. (6.0.280, 7.0.96) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.96), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.280)
- Unclassified empty image results are retried. (5.0.255, 6.0.280, 7.0.94) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.280), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.255), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.94)
- Retry-attempt accounting is preserved during result retries. (7.0.94) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.94)
- Abort signals are supported when the global AbortSignal is not a constructor. (7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- Embedding responses are rejected when their count does not match the input values. (7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- Image call diagnostics are preserved when no image is generated. (7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- Provider metadata is preserved when failed tool calls are converted. (6.0.287, 7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.287), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- Replacing a message in sendMessage now uses a new message ID. (7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- Text data URLs are now decoded in Node.js. (5.0.255, 6.0.279, 7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.279), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.255), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- onLanguageModelCallEnd is formally included in the ToolLoopAgentSettings type. (7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- Tool part titles are preserved when UI messages are validated. (7.0.93) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.93)
- Fallback errors are surfaced when HTTP responses have empty bodies. (7.0.92) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.92)
- Skips smoothStream delays while the document is hidden. (5.0.252, 6.0.276, 7.0.92) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.92), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.276), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.252)
- Provider metadata stays on corresponding smoothStream chunks without carrying into later metadata-free deltas. (5.0.269, 6.0.276, 7.0.92) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.296), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.269), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.92), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.276)
- onAbort callbacks now expose the call ID and abort reason. (7.0.92) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.92)
- generateText no longer accepts responses that violate required tool choices. (7.0.88) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.88)
- Approval descriptors are preserved in UI message streams. (6.0.274, 7.0.87) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.274), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.87)
- Canonical hashes now preserve the positions of undefined elements in arrays. (7.0.85) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.85)
- Gateway now sums image-generation costs across split requests. (7.0.85) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.85)
- Anthropic provider metadata now preserves native message batch request counts. (7.0.85) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.85)
- Tool approval secrets are now allowed in prepareCall. (7.0.84) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.84)
- smoothStream now handles stateful and empty-match regular expressions. (7.0.84) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.84)
- Tool approval secrets are now allowed in ToolLoopAgent settings. (7.0.84) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.84)
- Stream cancellation is handled when it occurs before an inner stream is registered. (6.0.270, 7.0.83) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.83), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.270)
- Persisted typed tool calls are validated against current schemas, with incompatible history loaded as dynamic tool parts. (5.0.250, 6.0.271, 7.0.83) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.250), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.271), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.83)
- Structured output is parsed when providers return text without a finishReason. (7.0.79) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.79)
- Active text and reasoning parts are preserved when another merged UI message stream finishes a step. (7.0.79) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.79)
- Continues approved generateText, streamText, and WorkflowAgent turns with a model-visible tool error when revalidated tool input is invalid. (7.0.78) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.78)
- Allows nullish metadata schemas for UI messages with branded IDs. (7.0.76) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.76)
- Prevents duplicate IDs for text and reasoning parts. (6.0.264, 7.0.76) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.76), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.264)
- Exceptions in streaming onChunk and onError callbacks no longer terminate the stream or mask provider errors. (7.0.71) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.71)
- Multi-step text generation now stops for client tool approval when a provider-executed tool has a deferred result. (7.0.70) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.70)
- Result promises are rejected and failed completion is reported when the provider stream errors. (5.0.241, 6.0.260, 7.0.70) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.260), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.241), [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.70)
- Partial UI message parts are cleared when a WorkflowAgent model-call step is retried. (7.0.70) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.70)
- Declaration emit now works for exported values that infer an Output type. (5.0.237, 6.0.255, 7.0.66) — [release notes](https://github.com/vercel/ai/releases/tag/ai%407.0.66), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.255), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.237)

## ai 6

### Breaking changes

- Automatic chat resumption no longer occurs when completed tool output is followed by terminal text without completed stream state. (5.0.270, 6.0.297) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.297), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.270)
- Inherited names no longer resolve as registered providers. (6.0.297) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.297)
- Rejects responses that do not satisfy a required or specifically selected tool choice. (6.0.272) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.272)

### Security

- Unavailable tools, including names matching Object.prototype properties, no longer expose persisted output to models. (6.0.302) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.302)

### New APIs and options

- Streamed input is marked as text so UI clients can display it progressively without JSON parsing. (6.0.308) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.308)
- Exposes normalized response content for opt-in recovery from tool choice violations. (6.0.272) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.272)
- Allows tool approval secrets in ToolLoopAgent settings and prepareCall. (6.0.272) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.272)

### Performance

- Avoids repeatedly cloning accumulated text while preserving independent snapshots for mutable nested values. (5.0.237, 6.0.255) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.255), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.237)

### Behavior and default changes

- Google and Google Vertex content-filtered results are treated as terminal and are not retried. (6.0.280) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.280)

### Fixes and other changes

- Final provider tool-call inputs remain JSON-encoded after streamed input uses text encoding. (6.0.308) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.308)
- Prevents global type conflicts when multiple SDK versions are used. (5.0.274, 6.0.303) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.274), [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.303)
- Hydrated partial static tool input is preserved across stream resumptions. (5.0.270, 6.0.297) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.297), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.270)
- Custom URLs returned by prepareReconnectToStreamRequest remain unchanged. (5.0.270, 6.0.297) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.297), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.270)
- Prototype-named tools are preserved as own properties without changing lookup object prototypes. (6.0.297) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.297)
- Agent UI streams can use original messages as input. (6.0.296) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.296)
- Preserves media types on tool result file URLs and matches full MIME types exactly when checking native URL support. (6.0.293) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.293)
- Google embedMany now keeps per-value multimodal content aligned across automatic batches and validates content and provider options. (6.0.290) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.290)
- Streamed tool input callbacks now await start and delta callbacks before onInputAvailable on newer Node.js versions. (5.0.264, 6.0.289) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.289), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.264)
- Retry-attempt accounting is preserved during image-result retries. (6.0.280) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.280)
- Approved turns continue with a model-visible tool error when revalidated tool input is invalid. (6.0.266) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.266)
- Aborted, errored, or cancelled calls no longer retain per-call state through abort cleanup listeners. (6.0.266) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.266)
- Exceptions in streaming onChunk callbacks no longer terminate the stream or mask provider errors. (5.0.243, 6.0.262) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.262), [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.243)
- Exceptions in streaming onError callbacks no longer terminate the stream or mask provider errors. (6.0.262) — [release notes](https://github.com/vercel/ai/releases/tag/ai%406.0.262)

## ai 5

### Breaking changes

- Prototype-named tools and providers are preserved as own properties, while inherited names no longer resolve as registered providers. (5.0.270) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.270)
- createTestServer and TestResponseController are no longer re-exported here; import them from @ai-sdk/test-server/with-vitest instead. (5.0.245) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.245)

### Security

- Deleted tools named after Object.prototype properties no longer expose persisted output to models. (5.0.273) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.273)

### New APIs and options

- Exported isDynamicToolUIPart from the ai package, making it available for application code. (5.0.272) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.272)

### Behavior and default changes

- Diagnostics from completed attempts are preserved, giving developers more information when retries occur. (5.0.255) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.255)
- Google Vertex RAI-filtered results are treated as terminal and are not retried. (5.0.255) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.255)
- OpenAI and Azure OpenAI embedding requests are split by a conservative UTF-8 byte budget derived from aggregate token limits, alongside input count limits. (5.0.248) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.248)

### Fixes and other changes

- Prototype-named provider metadata no longer causes image metadata aggregation to fail. (5.0.270) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.270)
- Result retryability classification is preserved through the AI Gateway. (5.0.255) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.255)
- Manual continuations can reuse JSON tool outputs containing undefined object properties. (5.0.253) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.253)
- Transient network errors while reading successful response bodies are now marked retryable, including AI Gateway responses. (5.0.250) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.250)
- Mocks now return configured results in order starting with the first call. (5.0.242) — [release notes](https://github.com/vercel/ai/releases/tag/ai%405.0.242)
