Releases: TanStack/ai
@tanstack/ai-groq@0.4.3
@tanstack/ai-grok@0.11.3
@tanstack/ai-gemini@0.16.0
Minor Changes
-
#714
efa76c8- Sync Gemini model metadata with Google's current published model list (#620, #621).Added
gemini-3.1-flash-lite(stable GA) — joins the existinggemini-3.1-flash-lite-previewentry and qualifies for the native combined tools +responseSchemastreaming path (GEMINI_COMBINED_TOOLS_AND_SCHEMA_MODELS).
Removed (retired by Google — these ids now 404 against the Gemini API or are no longer published)
gemini-3-pro-preview(verified 404; superseded bygemini-3.1-pro-preview)gemini-2.5-flash-preview-09-2025(superseded by stablegemini-2.5-flash)gemini-2.5-flash-lite-preview-09-2025(superseded by stablegemini-2.5-flash-lite)gemini-2.0-flashandgemini-2.0-flash-lite(2.0 line retired from Google's published list)gemini-2.0-flash-preview-image-generation(image; superseded bygemini-2.5-flash-image)
Fixed
gemini-3.5-flashwas missing fromGeminiChatModelToolCapabilitiesByName, leaving its provider-tool typing broken.
If you were passing a removed id to
geminiText()/geminiSummarize(), switch to the listed successor (e.g.gemini-2.0-flash→gemini-2.5-flash).
Patch Changes
@tanstack/ai-fal@0.8.0
Minor Changes
- #723
22c9b42- Surface fal's billed units asresult.usage. The fal adapters now read fal'sx-fal-billable-unitsresponse header off the result fetch and expose the billed quantity (usage.unitsBilled) on the generation result, so consumers can compute exact media-generation cost without wrappingfetchthemselves.TokenUsagegains an optionalunitsBilledfield for usage-based (non-token) billing, denominated in the provider's priced unit.falImage,falAudio,falVideo,falSpeech, andfalTranscriptionpopulateresult.usage.unitsBilledwhen fal reports it.VideoUrlResultgains an optionalusageslot;getVideoJobStatusnow emits thevideo:usageevent and returnsusagewhen the completed result reports billed units.
Patch Changes
@tanstack/ai-event-client@0.6.0
Minor Changes
-
#723
22c9b42- Surface fal's billed units asresult.usage. The fal adapters now read fal'sx-fal-billable-unitsresponse header off the result fetch and expose the billed quantity (usage.unitsBilled) on the generation result, so consumers can compute exact media-generation cost without wrappingfetchthemselves.TokenUsagegains an optionalunitsBilledfield for usage-based (non-token) billing, denominated in the provider's priced unit.falImage,falAudio,falVideo,falSpeech, andfalTranscriptionpopulateresult.usage.unitsBilledwhen fal reports it.VideoUrlResultgains an optionalusageslot;getVideoJobStatusnow emits thevideo:usageevent and returnsusagewhen the completed result reports billed units.
-
#727
7d44569- Add an'error'terminal toToolCallState. When a tool execution produces an output error, the StreamProcessor now transitions thetool-callpart tostate: 'error'instead of parking it at'input-complete'.Previously an errored tool call left the tool-call part at
'input-complete'forever, so UIs that render lifecycle from the part'sstatecould not distinguish "still executing" from "failed" without reverse-engineering the error-shapedoutputor the siblingtool-resultpart. The new terminal makes the tool-call state machine self-describing and symmetric withToolResultState(which already has'error'):if (part.type === 'tool-call' && part.state === 'error') { // render failure — no more inferring from output shape }
The completion safety net (
RUN_FINISHED/ stream finalization) no longer downgrades a failed tool call back to'input-complete', including when anoutput-errorresult arrives beforeTOOL_CALL_END.
Patch Changes
-
#696
ff267a5- Surface server-executed tool results in devtools from theTOOL_CALL_RESULTevent. The devtools middleware previously read results only offTOOL_CALL_END, which the adapter emits before the tool runs (so it carries no result). Now thatchat()no longer re-emits a post-executionTOOL_CALL_END(see the@tanstack/ai#519 fix), results travel on the spec-compliantTOOL_CALL_RESULTevent — the middleware now handles it so devtools keeps showing server-tool output. -
Updated dependencies [
ff267a5,570c08a,22c9b42,215b6b4,7d44569]:- @tanstack/ai@0.29.0
@tanstack/ai-elevenlabs@0.2.21
@tanstack/ai-devtools-core@0.4.9
@tanstack/ai-code-mode@0.2.6
@tanstack/ai-code-mode-skills@0.2.6
@tanstack/ai-client@0.17.0
Minor Changes
-
#727
7d44569- Add an'error'terminal toToolCallState. When a tool execution produces an output error, the StreamProcessor now transitions thetool-callpart tostate: 'error'instead of parking it at'input-complete'.Previously an errored tool call left the tool-call part at
'input-complete'forever, so UIs that render lifecycle from the part'sstatecould not distinguish "still executing" from "failed" without reverse-engineering the error-shapedoutputor the siblingtool-resultpart. The new terminal makes the tool-call state machine self-describing and symmetric withToolResultState(which already has'error'):if (part.type === 'tool-call' && part.state === 'error') { // render failure — no more inferring from output shape }
The completion safety net (
RUN_FINISHED/ stream finalization) no longer downgrades a failed tool call back to'input-complete', including when anoutput-errorresult arrives beforeTOOL_CALL_END.