Skip to content

ci: Version Packages#547

Merged
AlemTuzlak merged 1 commit into
mainfrom
changeset-release/main
May 11, 2026
Merged

ci: Version Packages#547
AlemTuzlak merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions
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.16.0

Minor Changes

  • fix(ai-gemini): read/write thoughtSignature at Part level + thread typed metadata through tool-call lifecycle (#459)

    Two fixes shipped together because the adapter fix is only effective once the framework also preserves provider metadata across the tool-call round-trip.

    Adapter (Gemini): Gemini emits thoughtSignature as a Part-level sibling of functionCall (per the @google/genai Part type definition), not nested inside functionCall. The FunctionCall type has never had a thoughtSignature property. The adapter was reading from functionCall.thoughtSignature (does not exist in SDK types) and writing it back nested inside functionCall, causing Gemini 3.x to reject subsequent tool-call turns with 400 INVALID_ARGUMENT: "Function call is missing a thought_signature".

    • Read side: reads part.thoughtSignature directly using the SDK's typed Part interface
    • Write side: emits thoughtSignature as a Part-level sibling of functionCall

    Framework (typed tool-call metadata):

    • ToolCall.providerMetadata: Record<string, unknown> is now ToolCall<TMetadata>.metadata?: TMetadata, mirroring the existing typed-metadata pattern on content parts (ImagePart<TMetadata>, AudioPart<TMetadata>, etc.).
    • ToolCallPart gains a typed metadata?: TMetadata field (also generic).
    • ToolCallStartEvent.providerMetadata becomes metadata (kept as Record<string, unknown> because the AGUIEvent discriminated union does not survive a generic on the event type; adapters cast to their typed shape when emitting).
    • BaseTextAdapter and TextAdapter gain a sixth generic TToolCallMetadata (default unknown), exposed via ~types.toolCallMetadata for inference at call sites.
    • InternalToolCallState gains a metadata?: Record<string, unknown> field captured at TOOL_CALL_START and threaded through updateToolCallPart, buildAssistantMessages, modelMessageToUIMessage, and completeToolCall, fixing a previously-silent drop of provider metadata across the client-side UIMessage pipeline (closes the gap surfaced in providerMetadata lost in client-side UIMessage pipeline — breaks Gemini 3 thoughtSignature on multi-turn tool calls #403/fix(ai): preserve providerMetadata through client-side UIMessage pipeline #404).

    Gemini concrete impl: new GeminiToolCallMetadata { thoughtSignature?: string } exported from @tanstack/ai-gemini. The adapter declares its TToolCallMetadata as this type, so consumers see toolCall.metadata?.thoughtSignature typed end-to-end.

    Breaking: consumers reading toolCall.providerMetadata or toolCallStartEvent.providerMetadata should rename to metadata.

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai-event-client@0.3.0

@tanstack/ai-event-client@0.3.0

Minor Changes

  • fix(ai-gemini): read/write thoughtSignature at Part level + thread typed metadata through tool-call lifecycle (#459)

    Two fixes shipped together because the adapter fix is only effective once the framework also preserves provider metadata across the tool-call round-trip.

    Adapter (Gemini): Gemini emits thoughtSignature as a Part-level sibling of functionCall (per the @google/genai Part type definition), not nested inside functionCall. The FunctionCall type has never had a thoughtSignature property. The adapter was reading from functionCall.thoughtSignature (does not exist in SDK types) and writing it back nested inside functionCall, causing Gemini 3.x to reject subsequent tool-call turns with 400 INVALID_ARGUMENT: "Function call is missing a thought_signature".

    • Read side: reads part.thoughtSignature directly using the SDK's typed Part interface
    • Write side: emits thoughtSignature as a Part-level sibling of functionCall

    Framework (typed tool-call metadata):

    • ToolCall.providerMetadata: Record<string, unknown> is now ToolCall<TMetadata>.metadata?: TMetadata, mirroring the existing typed-metadata pattern on content parts (ImagePart<TMetadata>, AudioPart<TMetadata>, etc.).
    • ToolCallPart gains a typed metadata?: TMetadata field (also generic).
    • ToolCallStartEvent.providerMetadata becomes metadata (kept as Record<string, unknown> because the AGUIEvent discriminated union does not survive a generic on the event type; adapters cast to their typed shape when emitting).
    • BaseTextAdapter and TextAdapter gain a sixth generic TToolCallMetadata (default unknown), exposed via ~types.toolCallMetadata for inference at call sites.
    • InternalToolCallState gains a metadata?: Record<string, unknown> field captured at TOOL_CALL_START and threaded through updateToolCallPart, buildAssistantMessages, modelMessageToUIMessage, and completeToolCall, fixing a previously-silent drop of provider metadata across the client-side UIMessage pipeline (closes the gap surfaced in providerMetadata lost in client-side UIMessage pipeline — breaks Gemini 3 thoughtSignature on multi-turn tool calls #403/fix(ai): preserve providerMetadata through client-side UIMessage pipeline #404).

    Gemini concrete impl: new GeminiToolCallMetadata { thoughtSignature?: string } exported from @tanstack/ai-gemini. The adapter declares its TToolCallMetadata as this type, so consumers see toolCall.metadata?.thoughtSignature typed end-to-end.

    Breaking: consumers reading toolCall.providerMetadata or toolCallStartEvent.providerMetadata should rename to metadata.

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0

@tanstack/ai-anthropic@0.8.6

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0

@tanstack/ai-client@0.9.1

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/ai-event-client@0.3.0

@tanstack/ai-code-mode@0.1.10

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0

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

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/ai-code-mode@0.1.10

@tanstack/ai-devtools-core@0.3.27

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/ai-event-client@0.3.0

@tanstack/ai-elevenlabs@0.2.3

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/ai-client@0.9.1

@tanstack/ai-fal@0.7.3

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0

@tanstack/ai-gemini@0.10.3

Patch Changes

  • fix(ai-gemini): read/write thoughtSignature at Part level + thread typed metadata through tool-call lifecycle (#459)

    Two fixes shipped together because the adapter fix is only effective once the framework also preserves provider metadata across the tool-call round-trip.

    Adapter (Gemini): Gemini emits thoughtSignature as a Part-level sibling of functionCall (per the @google/genai Part type definition), not nested inside functionCall. The FunctionCall type has never had a thoughtSignature property. The adapter was reading from functionCall.thoughtSignature (does not exist in SDK types) and writing it back nested inside functionCall, causing Gemini 3.x to reject subsequent tool-call turns with 400 INVALID_ARGUMENT: "Function call is missing a thought_signature".

    • Read side: reads part.thoughtSignature directly using the SDK's typed Part interface
    • Write side: emits thoughtSignature as a Part-level sibling of functionCall

    Framework (typed tool-call metadata):

    • ToolCall.providerMetadata: Record<string, unknown> is now ToolCall<TMetadata>.metadata?: TMetadata, mirroring the existing typed-metadata pattern on content parts (ImagePart<TMetadata>, AudioPart<TMetadata>, etc.).
    • ToolCallPart gains a typed metadata?: TMetadata field (also generic).
    • ToolCallStartEvent.providerMetadata becomes metadata (kept as Record<string, unknown> because the AGUIEvent discriminated union does not survive a generic on the event type; adapters cast to their typed shape when emitting).
    • BaseTextAdapter and TextAdapter gain a sixth generic TToolCallMetadata (default unknown), exposed via ~types.toolCallMetadata for inference at call sites.
    • InternalToolCallState gains a metadata?: Record<string, unknown> field captured at TOOL_CALL_START and threaded through updateToolCallPart, buildAssistantMessages, modelMessageToUIMessage, and completeToolCall, fixing a previously-silent drop of provider metadata across the client-side UIMessage pipeline (closes the gap surfaced in providerMetadata lost in client-side UIMessage pipeline — breaks Gemini 3 thoughtSignature on multi-turn tool calls #403/fix(ai): preserve providerMetadata through client-side UIMessage pipeline #404).

    Gemini concrete impl: new GeminiToolCallMetadata { thoughtSignature?: string } exported from @tanstack/ai-gemini. The adapter declares its TToolCallMetadata as this type, so consumers see toolCall.metadata?.thoughtSignature typed end-to-end.

    Breaking: consumers reading toolCall.providerMetadata or toolCallStartEvent.providerMetadata should rename to metadata.

  • Updated dependencies [87f305c]:

    • @tanstack/ai@0.16.0

@tanstack/ai-grok@0.7.3

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/openai-base@0.2.1

@tanstack/ai-groq@0.1.11

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/openai-base@0.2.1

@tanstack/ai-isolate-cloudflare@0.2.1

Patch Changes

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

@tanstack/ai-isolate-node@0.1.10

Patch Changes

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

@tanstack/ai-isolate-quickjs@0.1.10

Patch Changes

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

@tanstack/ai-ollama@0.6.13

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0

@tanstack/ai-openai@0.8.5

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/ai-client@0.9.1
    • @tanstack/openai-base@0.2.1

@tanstack/ai-openrouter@0.8.5

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0

@tanstack/ai-preact@0.6.22

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/ai-client@0.9.1

@tanstack/ai-react@0.8.2

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/ai-client@0.9.1

@tanstack/ai-solid@0.7.2

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/ai-client@0.9.1

@tanstack/ai-svelte@0.7.2

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/ai-client@0.9.1

@tanstack/ai-vue@0.7.2

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0
    • @tanstack/ai-client@0.9.1

@tanstack/ai-vue-ui@0.1.33

Patch Changes

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

@tanstack/openai-base@0.2.1

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai@0.16.0

@tanstack/preact-ai-devtools@0.1.31

Patch Changes

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

@tanstack/react-ai-devtools@0.2.31

Patch Changes

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

@tanstack/solid-ai-devtools@0.2.31

Patch Changes

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

ts-svelte-chat@0.1.41

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai-gemini@0.10.3
    • @tanstack/ai@0.16.0
    • @tanstack/ai-anthropic@0.8.6
    • @tanstack/ai-client@0.9.1
    • @tanstack/ai-ollama@0.6.13
    • @tanstack/ai-openai@0.8.5
    • @tanstack/ai-svelte@0.7.2

ts-vue-chat@0.1.41

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai-gemini@0.10.3
    • @tanstack/ai@0.16.0
    • @tanstack/ai-anthropic@0.8.6
    • @tanstack/ai-client@0.9.1
    • @tanstack/ai-ollama@0.6.13
    • @tanstack/ai-openai@0.8.5
    • @tanstack/ai-vue@0.7.2
    • @tanstack/ai-vue-ui@0.1.33

vanilla-chat@0.0.37

Patch Changes

  • Updated dependencies []:
    • @tanstack/ai-client@0.9.1

@tanstack/ai-code-mode-models-eval@0.0.15

Patch Changes

  • Updated dependencies [87f305c]:
    • @tanstack/ai-gemini@0.10.3
    • @tanstack/ai@0.16.0
    • @tanstack/ai-anthropic@0.8.6
    • @tanstack/ai-code-mode@0.1.10
    • @tanstack/ai-grok@0.7.3
    • @tanstack/ai-groq@0.1.11
    • @tanstack/ai-ollama@0.6.13
    • @tanstack/ai-openai@0.8.5
    • @tanstack/ai-isolate-node@0.1.10

@AlemTuzlak AlemTuzlak merged commit 70ca589 into main May 11, 2026
@AlemTuzlak AlemTuzlak deleted the changeset-release/main branch May 11, 2026 14:41
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.

1 participant