NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4234 most downloaded on npm
Last release 4 days ago
30 Sep 2026
Ships on a steady schedule
a new release about every 8 days
Most releases are documented
notes for 38 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
689 releases · first in 2024
8c65988: feat(ai): add telemetry to speech generation and transcription, including provider usage propagation and experimental streaming lifecycle cal
ede5b89: chore: migrate package builds from tsup to tsdown
One column per month.
c2511c1: fix: use standards-compliant User-Agent header
d0290cf: fix(google): preserve realtime user utterances with independent IDs and cumulative transcripts, honor text-free transcription completion mark
32cf2f6: fix(google): send the default Gemini Live thinkingLevel when thinkingConfig sets neither thinkingLevel nor thinkingBudget, and stop overwriti
32cf2f6: fix(google): send the default Gemini Live thinkingLevel when thinkingConfig sets neither thinkingLevel nor thinkingBudget, and stop overwriting a raw generationConfig.thinkingConfig
525efc5: feat(provider): advertise image model file and mask input support
Use confirmed model IDs for capability declarations so unrecognized model names remain unknown. Include Together AI FLUX.2 Pro and Flex single-image editing, and allow asynchronous capability lookups and middleware overrides to resolve to unknown.
Advertise QuiverAI Arrow 2 and Arrow 2 Telos file-input support, and mark Together AI Gemini image inputs unsupported by the current single-image request mapping.
Updated dependencies [e3605f6]
Updated dependencies [525efc5]
Updated dependencies [ 94d5d6d ]
8beac3e: fix(google): serialize JSON Schema references in function responses
fe07867: Fix Google embedMany calls with more than 100 values by keeping per-value multimodal content aligned across automatic batches, including text
fe07867: Fix Google embedMany calls with more than 100 values by keeping per-value multimodal content aligned across automatic batches, including text-only entries. Validate content length before sending requests and validate each batch's provider options after middleware transforms them.
2db5621: fix(google): preserve code execution parts when replaying messages
2693319: Add Gemini 3.8 TTS support with structured speech metadata and per-turn speaker and style controls for prebuilt voices. Preserve native WAV responses without adding a second header, support explicit raw PCM, mu-law, and A-law output, and identify headerless audio formats correctly. Add the Gemini 3.8 speech model IDs to Google and Gateway types.
Share transcript and custom-voice inspection through the Google provider internal export, and reject empty speech transcripts before sending a request. Default newer and custom model IDs to structured speech while preserving the legacy format for Gemini 2.5 and 3.1.
771e74b: chore: enable dead code lint rules
Updated dependencies [fe07867]
Updated dependencies [a4b0940]
Updated dependencies [771e74b]
94d5d6d : Support reasoningEffortUpdate: 'none' for GPT-6 Sol and Luna in request-level options and positioned system messages. Validate update effort
reasoningEffortUpdate: 'none' for GPT-6 Sol and Luna in request-level options and positioned system messages. Validate update efforts against the model's supported efforts, warning and omitting unsupported request-level updates and rejecting unsupported historical updates.8dbe0be: fix(google): preserve image candidate finish reasons in provider metadata
### Patch Changes - Updated dependencies [2973485] - Updated dependencies [a4db5ea] - Updated dependencies [2937ea2] - @ai-sdk/provider-utils@5.0.45
e369c4d: fix(google): advertise the supported Gemini image per-call limit
d4d96bf: Add google.evaluationModel() for experimental Choice, Score, and Boolean evaluations through Gemini structured output, preserving provider th
google.evaluationModel() for experimental Choice, Score, and Boolean evaluations through Gemini structured output, preserving provider thinking options and validating exact labels and score bounds. Boolean answers contain prompted P(true) estimates validated to be in [0, 1]. Boolean estimates are not guaranteed to be calibrated; application code chooses thresholds.a22b5b2: fix(google): preserve prompt feedback and metadata across streaming chunks
4a994ad: feat(google): realtime session options for Gemini 3.8 Live
4a994ad: feat(google): realtime session options for Gemini 3.8 Live
Add thinkingConfig (thinkingLevel, thinkingBudget, includeThoughts) and
defaultToolBehavior to GoogleRealtimeModelOptions. thinkingConfig is merged
into the Live setup.generationConfig. Background-reasoning Live models such as
gemini-3.8-live-extended-thinking require exactly one of thinkingLevel or
thinkingBudget, so the provider sends thinkingLevel: 'low' on those models
when neither is set. defaultToolBehavior stamps behavior on every function
declaration in the setup.
Forward the Live interactionStatus and waitingForInput server messages as
custom events so applications can tell when a background-reasoning model is idle,
since turnComplete alone no longer means that.
### Patch Changes - Updated dependencies [5c0054d] - Updated dependencies [39535af] - @ai-sdk/provider@4.0.15 - @ai-sdk/provider-utils@5.0.41
2a32459: fix(google): preserve JSON Schema instead of converting to OpenAPI schema
2a32459: fix(google): preserve JSON Schema instead of converting to OpenAPI schema
d93e295: fix(google): keep a realtime functionResponse.response an object
Gemini types that field as a google.protobuf.Struct, which accepts an object and
nothing else. onToolCall returns unknown and addToolOutput takes unknown, so a
string, number, array or null tool result reached the wire unwrapped, Gemini closed
the socket with 1007, and the close code was dropped on the way back so the
application saw a plain disconnect. A non-object result is now wrapped under the
output key the field's own docstring prescribes; an object is passed through
unchanged, as before.
An output that is not valid JSON no longer becomes {}. That branch told the model
the tool had returned an empty object, with nothing thrown and the socket still up, so
the answer was wrong with nothing to notice. The text is kept instead.
f88c7dc: fix(vertex): download tool result file URLs
5ec21a6: fix: reject unsupported batch request types
ab6e9f9: feat(google): add batch cancellation and listing
### Patch Changes - Updated dependencies [912fb01] - @ai-sdk/provider@4.0.12 - @ai-sdk/provider-utils@5.0.38
a4ba394: feat: support per-request models in batch
d4485fe: feat(ai): support minItems and maxItems in array outputs
18ad19c: feat(google): support agentic video processing in the Interactions API
providerMetadata.<provider>.inputFileId / inputFileExpiresAt) and accept an inputFileExpiresAfter provider option on the OpenAI and xAI batch input file upload### Patch Changes - Updated dependencies [6bcc0f8] - @ai-sdk/provider-utils@5.0.36
5190b67: feat(provider): extend the FilesV4 interface with optional getFileMetadata, downloadFile (streaming), and deleteFile operations, plus abortSi
getFileMetadata, downloadFile (streaming), and deleteFile operations, plus abortSignal/headers call options and a { type: 'stream' } upload data variant; upload results now expose byteSize, createdAt, and expiresAt (also surfaced by the core uploadFile() helper, which now forwards abortSignal/headers); add postMultipartStreamToApi (streaming multipart uploads with deterministic part ordering and failure-path stream teardown), deleteFromApi, and createBinaryStreamResponseHandler to provider-utilse07b577: feat: add tool calling support to batch
6e405ae : fix(xai): preserve additionalProperties: false in tool schemas
### Patch Changes - Updated dependencies [aa45741] - @ai-sdk/provider@4.0.9 - @ai-sdk/provider-utils@5.0.34
4b8c4fa : feat(xai): add batch cancellation and listing
Updated dependencies [ 912fb01 ]
a4ba394 : feat: support per-request models in batch
048ce06 : feat(batch): surface the uploaded input file on the batch start result ( providerMetadata.<provider>.inputFileId / inputFileExpiresAt ) and
providerMetadata.<provider>.inputFileId / inputFileExpiresAt) and accept an inputFileExpiresAfter provider option on the OpenAI and xAI batch input file uploadgemini-3.5-transcribe) via generateContent with language detection, speaker diarization, word timestamps, and custom vocabulary, plus streaming transcription (gemini-3.5-transcribe-live) over the Live API WebSocket with mode: 'VERBATIM' | 'SMART' transcription formattingUpdated dependencies [ 6bcc0f8 ]
e7fc90e: feat(google): support the Gemini Batch API with experimental_startTextBatch
### Patch Changes - Updated dependencies [b74971f] - @ai-sdk/provider-utils@5.0.29
Updated dependencies [ 90192f1 ]
6c5a1ed: Inline local JSON Schema references in Google tool and structured-output schemas.
Updated dependencies [ 3e125ba ]
f69920a: fix(google): use low as the minimum reasoning level for full Gemini Flash 3.7 and later
bb0cf2e: fix(google): coerce minimal reasoning to low for Gemini 3.7 Flash
16650e9: feat(google): add gemini-3.7-flash model
gemini-3.7-flash model### Patch Changes - Updated dependencies [b6fff2e] - @ai-sdk/openai@4.0.42
a062795: fix(openai): support built-in and provider-defined tools in the Responses allowedTools option
allowedTools emitted every allow-list entry as { type: 'function', name }, but OpenAI identifies
built-in tools by type. Allow-listing a declared provider-defined tool (web search, image generation,
MCP, custom, ...) therefore failed with Tool choice '<name>' not found in 'tools' parameter. Entries
are now derived from the declared tool, including the MCP server label and custom tool name.
Tools that OpenAI cannot allow-list (the tool search tool, deferred tools, and namespaced tools) are dropped from the allow-list with a warning, and an error is thrown if that would leave the allow-list empty rather than silently sending an unrestricted request.
Ambiguous names are now reported instead of resolved silently. A name that matches both a declared tool and another tool's provider tool name resolves to the declared tool and warns; a provider tool name shared by several tools in the same request (two MCP servers, for example) is dropped with a warning. A name that matches no declared tool keeps its existing behavior and is now warned about.
b6fff2e: feat(provider/openai): support explicit Responses compaction triggers
da78d58: fix(google): convert enum values to the Gemini schema format
APICallError.data.1ffa1d2: feat(xai): speech timestamps, pronunciation replacements, provider metadata, and error parsing
1ffa1d2: feat(xai): speech timestamps, pronunciation replacements, provider metadata, and error parsing
withTimestamps and replace provider options for text to speech. With
withTimestamps, the JSON envelope is decoded and the audio returned as
usual, while duration, content type, and character-level alignment are
exposed via providerMetadata.xai.providerMetadata.xai.traceId (from the x-trace-id response
header) on every speech response.{"error":"..."}) so APICallError
messages carry xAI's real error detail instead of the HTTP reason phrase.4579b08: Preserve Anthropic server-tool caller metadata in multi-turn conversations.
484293f: feat(xai): support the priority service tier on chat and responses
a4d386d: feat(xai): add the Grok 4.6 model IDs and support its xhigh reasoning effort
xhigh reasoning effort*TranslationModel and its related types to *SpeechTranslationModel for consistency### Patch Changes - Updated dependencies [3469d0c] - @ai-sdk/provider@4.0.6 - @ai-sdk/provider-utils@5.0.23
### Patch Changes - Updated dependencies [2b60826] - @ai-sdk/provider-utils@5.0.22
### Patch Changes - Updated dependencies [1bec07d] - @ai-sdk/provider-utils@5.0.21
### Patch Changes - Updated dependencies [160ccdb] - @ai-sdk/provider-utils@5.0.20
79e133c: async APIs for generateVideo (poll, webhook)
79e133c: async APIs for generateVideo (poll, webhook)
Adds an asynchronous start/status flow to the experimental video model
interface (VideoModelV4): models may now implement doStart, doStatus,
and handleWebhookOption instead of (or in addition to) doGenerate, and
experimental_generateVideo accepts poll and webhook options to
orchestrate completion via polling or webhooks. Polling configuration can use
a custom delay implementation for durable workflow compatibility.
Updated dependencies [79e133c]
5fc7da5: chore: centralize empty language model usage creation in provider utilities.
### Patch Changes - Updated dependencies [fa95504] - @ai-sdk/provider-utils@5.0.17
d8210b6: chore: centralize record type guards in provider-utils
### Patch Changes - Updated dependencies [1659cd5] - Updated dependencies [6a5bdff] - @ai-sdk/provider-utils@5.0.15
d2d9324: Forward topK through Google Interactions requests and warn when unsupported frequency or presence penalties are provided.
topK through Google Interactions requests and warn when unsupported frequency or presence penalties are provided.c49380c: feat: add experimental streaming speech translation models (openai.translation('gpt-realtime-translate') over the OpenAI Realtime translation
openai.translation('gpt-realtime-translate') over the OpenAI Realtime translations WebSocket and google.translation('gemini-3.5-live-translate-preview') over the Gemini Live API). connectToWebSocket in @ai-sdk/provider-utils now passes close code and reason to onClose (additive, optional parameter).Your coding agent can read these notes before it upgrades. Set up the MCP server →