Skip to content

ci: Version Packages#724

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main
Open

ci: Version Packages#724
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@tanstack/ai@0.29.0

Minor Changes

  • #723 22c9b42 - Surface fal's billed units as result.usage. The fal adapters now read fal's x-fal-billable-units response 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 wrapping fetch themselves.

    • TokenUsage gains an optional unitsBilled field for usage-based (non-token) billing, denominated in the provider's priced unit.
    • falImage, falAudio, falVideo, falSpeech, and falTranscription populate result.usage.unitsBilled when fal reports it.
    • VideoUrlResult gains an optional usage slot; getVideoJobStatus now emits the video:usage event and returns usage when the completed result reports billed units.
  • #727 7d44569 - Add an 'error' terminal to ToolCallState. When a tool execution produces an output error, the StreamProcessor now transitions the tool-call part to state: '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's state could not distinguish "still executing" from "failed" without reverse-engineering the error-shaped output or the sibling tool-result part. The new terminal makes the tool-call state machine self-describing and symmetric with ToolResultState (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 an output-error result arrives before TOOL_CALL_END.

Patch Changes

  • #696 ff267a5 - Fix duplicate TOOL_CALL_END for server-executed tools. The adapter already streams START/ARGS/END for each tool call, but chat() emitted a second END afterwards with no matching START — an orphan event that AG-UI-strict consumers (e.g. @ag-ui/client's verifyEvents) reject. The post-execution phase now only adds TOOL_CALL_RESULT. Fixes #519.

  • #734 570c08a - Fix the default debug logger dropping meta payloads on Cloudflare Workers / workerd (#730). ConsoleLogger previously rendered meta with console.dir, which workerd never forwards to the terminal — debug mode printed category headlines but no request bodies, chunk contents, or RUN_ERROR payloads. The logger now detects the runtime: Node keeps the depth-unlimited console.dir dump, Cloudflare Workers renders meta as circular-safe pretty-printed JSON (workerd's own inspect truncates nested objects), and other runtimes (browsers, Deno, Bun) receive meta as an extra console argument so devtools keep collapsible trees. Detection checks workerd's navigator.userAgent marker before process.versions.node, since nodejs_compat emulates a Node version string.

  • #699 215b6b4 - Migrate the OpenAI realtime adapters from the retired Beta API (shut down 2026-05-12) to the GA API:

    • openaiRealtime() now exchanges WebRTC SDP via POST /v1/realtime/calls (the Beta ?model= shape returned beta_api_shape_disabled).
    • openaiRealtimeToken() now mints ephemeral keys via POST /v1/realtime/client_secrets instead of the retired /v1/realtime/sessions, and parses the GA top-level value/expires_at response shape.
    • session.update payloads use the GA shape: required session.type, audio.input.transcription, audio.input.turn_detection, audio.output.voice, output_modalities, and max_output_tokens. temperature was removed from the GA session config and is no longer sent (a debug log notes when it is dropped).
    • Server events are handled under their GA names (response.output_audio_transcript.*, response.output_audio.*, output_text/output_audio content parts).
    • The default realtime model is now gpt-realtime; the gpt-4o-(mini-)realtime-preview ids (shut down by OpenAI on 2026-05-07) were removed from OpenAIRealtimeModel.
  • Updated dependencies [ff267a5, 22c9b42, 7d44569]:

    • @tanstack/ai-event-client@0.6.0

@tanstack/ai-client@0.17.0

Minor Changes

  • #727 7d44569 - Add an 'error' terminal to ToolCallState. When a tool execution produces an output error, the StreamProcessor now transitions the tool-call part to state: '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's state could not distinguish "still executing" from "failed" without reverse-engineering the error-shaped output or the sibling tool-result part. The new terminal makes the tool-call state machine self-describing and symmetric with ToolResultState (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 an output-error result arrives before TOOL_CALL_END.

Patch Changes

@tanstack/ai-event-client@0.6.0

Minor Changes

  • #723 22c9b42 - Surface fal's billed units as result.usage. The fal adapters now read fal's x-fal-billable-units response 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 wrapping fetch themselves.

    • TokenUsage gains an optional unitsBilled field for usage-based (non-token) billing, denominated in the provider's priced unit.
    • falImage, falAudio, falVideo, falSpeech, and falTranscription populate result.usage.unitsBilled when fal reports it.
    • VideoUrlResult gains an optional usage slot; getVideoJobStatus now emits the video:usage event and returns usage when the completed result reports billed units.
  • #727 7d44569 - Add an 'error' terminal to ToolCallState. When a tool execution produces an output error, the StreamProcessor now transitions the tool-call part to state: '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's state could not distinguish "still executing" from "failed" without reverse-engineering the error-shaped output or the sibling tool-result part. The new terminal makes the tool-call state machine self-describing and symmetric with ToolResultState (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 an output-error result arrives before TOOL_CALL_END.

Patch Changes

  • #696 ff267a5 - Surface server-executed tool results in devtools from the TOOL_CALL_RESULT event. The devtools middleware previously read results only off TOOL_CALL_END, which the adapter emits before the tool runs (so it carries no result). Now that chat() no longer re-emits a post-execution TOOL_CALL_END (see the @tanstack/ai #519 fix), results travel on the spec-compliant TOOL_CALL_RESULT event — 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-fal@0.8.0

Minor Changes

  • #723 22c9b42 - Surface fal's billed units as result.usage. The fal adapters now read fal's x-fal-billable-units response 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 wrapping fetch themselves.
    • TokenUsage gains an optional unitsBilled field for usage-based (non-token) billing, denominated in the provider's priced unit.
    • falImage, falAudio, falVideo, falSpeech, and falTranscription populate result.usage.unitsBilled when fal reports it.
    • VideoUrlResult gains an optional usage slot; getVideoJobStatus now emits the video:usage event and returns usage when the completed result reports billed units.

Patch Changes

@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 existing gemini-3.1-flash-lite-preview entry and qualifies for the native combined tools + responseSchema streaming 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 by gemini-3.1-pro-preview)
    • gemini-2.5-flash-preview-09-2025 (superseded by stable gemini-2.5-flash)
    • gemini-2.5-flash-lite-preview-09-2025 (superseded by stable gemini-2.5-flash-lite)
    • gemini-2.0-flash and gemini-2.0-flash-lite (2.0 line retired from Google's published list)
    • gemini-2.0-flash-preview-image-generation (image; superseded by gemini-2.5-flash-image)

    Fixed

    • gemini-3.5-flash was missing from GeminiChatModelToolCapabilitiesByName, 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-flashgemini-2.5-flash).

Patch Changes

@tanstack/ai-anthropic@0.15.2

Patch Changes

@tanstack/ai-code-mode@0.2.6

Patch Changes

@tanstack/ai-code-mode-skills@0.2.6

Patch Changes

@tanstack/ai-devtools-core@0.4.9

Patch Changes

@tanstack/ai-elevenlabs@0.2.21

Patch Changes

@tanstack/ai-grok@0.11.3

Patch Changes

@tanstack/ai-groq@0.4.3

Patch Changes

@tanstack/ai-isolate-cloudflare@0.2.22

Patch Changes

  • Updated dependencies []:
    • @tanstack/ai-code-mode@0.2.6

@tanstack/ai-isolate-node@0.1.31

Patch Changes

  • Updated dependencies []:
    • @tanstack/ai-code-mode@0.2.6

@tanstack/ai-isolate-quickjs@0.1.31

Patch Changes

  • Updated dependencies []:
    • @tanstack/ai-code-mode@0.2.6

@tanstack/ai-mcp@0.1.1

Patch Changes

@tanstack/ai-ollama@0.8.2

Patch Changes

@tanstack/ai-openai@0.14.2

Patch Changes

  • #699 215b6b4 - Migrate the OpenAI realtime adapters from the retired Beta API (shut down 2026-05-12) to the GA API:

    • openaiRealtime() now exchanges WebRTC SDP via POST /v1/realtime/calls (the Beta ?model= shape returned beta_api_shape_disabled).
    • openaiRealtimeToken() now mints ephemeral keys via POST /v1/realtime/client_secrets instead of the retired /v1/realtime/sessions, and parses the GA top-level value/expires_at response shape.
    • session.update payloads use the GA shape: required session.type, audio.input.transcription, audio.input.turn_detection, audio.output.voice, output_modalities, and max_output_tokens. temperature was removed from the GA session config and is no longer sent (a debug log notes when it is dropped).
    • Server events are handled under their GA names (response.output_audio_transcript.*, response.output_audio.*, output_text/output_audio content parts).
    • The default realtime model is now gpt-realtime; the gpt-4o-(mini-)realtime-preview ids (shut down by OpenAI on 2026-05-07) were removed from OpenAIRealtimeModel.
  • Updated dependencies [ff267a5, 570c08a, 22c9b42, 215b6b4, 7d44569]:

    • @tanstack/ai@0.29.0
    • @tanstack/ai-client@0.17.0
    • @tanstack/openai-base@0.8.2

@tanstack/ai-openrouter@0.13.2

Patch Changes

@tanstack/ai-preact@0.9.5

Patch Changes

@tanstack/ai-react@0.15.5

Patch Changes

@tanstack/ai-react-ui@0.8.7

Patch Changes

  • Updated dependencies [7d44569]:
    • @tanstack/ai-client@0.17.0
    • @tanstack/ai-react@0.15.5

@tanstack/ai-solid@0.13.5

Patch Changes

@tanstack/ai-solid-ui@0.7.7

Patch Changes

  • Updated dependencies [7d44569]:
    • @tanstack/ai-client@0.17.0
    • @tanstack/ai-solid@0.13.5

@tanstack/ai-svelte@0.13.5

Patch Changes

@tanstack/ai-vue@0.13.5

Patch Changes

@tanstack/ai-vue-ui@0.2.17

Patch Changes

  • Updated dependencies []:
    • @tanstack/ai-vue@0.13.5

@tanstack/openai-base@0.8.2

Patch Changes

@tanstack/preact-ai-devtools@0.1.52

Patch Changes

  • Updated dependencies []:
    • @tanstack/ai-devtools-core@0.4.9

@tanstack/react-ai-devtools@0.2.52

Patch Changes

  • Updated dependencies []:
    • @tanstack/ai-devtools-core@0.4.9

@tanstack/solid-ai-devtools@0.2.52

Patch Changes

  • Updated dependencies []:
    • @tanstack/ai-devtools-core@0.4.9

@github-actions github-actions Bot force-pushed the changeset-release/main branch 5 times, most recently from f49a3f5 to 57336b5 Compare June 10, 2026 06:27
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 57336b5 to 38bbf91 Compare June 10, 2026 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chat(): duplicate TOOL_CALL_END (no preceding START) for server-executed tools breaks AG-UI verify

0 participants