ci: Version Packages#913
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
f576402 to
6a1ebd8
Compare
6a1ebd8 to
3213a2a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.41.0
Minor Changes
#405
2665085- Added Gemini Realtime Adapter#918
f830d9e- Gate the tool-call part'sapprovalfield on the tool'sneedsApprovalflag.Previously
approval?was declared on every typed tool-call part regardless ofwhether the tool could ever request approval. Now the flag is captured as a
literal type (
toolDefinition({ needsApproval: true })→true) and threadedthrough
ClientTool/ToolDefinitionInstance/ToolDefinition, andToolCallPartForToolonly includesapprovalfor tools defined withneedsApproval: true:This is the primary migration surface for this release. When you pass a typed
toolsarray touseChat/createChat/injectChat, readingpart.approvalon a mixed tool-call union without first narrowing by
part.nameno longercompiles. Code that previously did
part.approval?.idin a generic handler overall tool-call parts must be updated:
Untyped
useChat()(no inferredtoolsgeneric) and the baseToolCallParttype are unaffected:
approvalstays available on every tool-call part there.Runtime behavior is unchanged — only TypeScript narrowing is stricter.
Adds a
TNeedsApproval extends booleantype parameter (defaulting tofalse)to the client tool types; existing explicit type arguments keep working via the
default. Literal capture requires
toolDefinition({ needsApproval: true })atthe call site — a dynamic
needsApproval: booleanvariable will not gate thetype.
#918
f830d9e- Populate the parsedinputon tool-call message parts.ToolCallPartalreadydeclared a typed
input?field, but it was never written at runtime — only theraw
argumentsstring (andoutput) were set, sopart.inputwas alwaysundefinedand consumers had to fall back topart.input ?? JSON.parse(part.arguments).inputis now set from the parsed arguments once they are complete(
state: 'input-complete'and later, includingapproval-requested), in thestreaming processor, the
TOOL_CALL_END-with-parsed-input path, and whenhydrating history via
modelMessagesToUIMessages. While arguments are stillstreaming,
inputstaysundefinedand the rawargumentsstring remains thelive source. A tool call that terminates in an error state may also keep
inputunset.
argumentsis unchanged, always present, and not deprecated.With typed tools (
useChat({ tools })),part.inputis fully typed per toolvia the
part.namediscriminant — matchingpart.output.Patch Changes
#924
5fcaf90- fix: resolve directory-barrel imports in published.d.tsfiles. Bare imports ofutils/tools/middlewarebarrels were emitted as../utils.js(etc.), which do not resolve under bundler/node16/nodenext (no/indexfallback for explicit.js). With consumerskipLibCheck: truethose symbols silently becameany. Imports now target concrete modules (e.g.utils/client,middleware/types) or explicit/indexpaths so public types resolve correctly.#922
e0bbbdd- fix: resolve dangling relative imports in published declaration filesSwitch directory-barrel imports (
../utils,../tools,../middleware) toconcrete module paths so emitted
.d.tsspecifiers resolve underbundler/node16/nodenextresolution. Adds atest:dtsscanner guardrail.Fixes #920
#886
de5fbb5- FixgenerateVideo/getVideoJobStatusrejecting video adapters that declare a narrowed per-model duration union (e.g. Gemini's4 | 6 | 8for Veo or10for Omni Flash) at the type level. The activity'sTAdapter extends VideoAdapter<string, any, any, any>constraints left the input-modality and duration generics at their defaults, soduration?: numberfailed contravariance against the adapter's literal union. All video-activity constraints and helper conditionals now span all sixVideoAdaptergenerics.@tanstack/ai-client@0.21.0
Minor Changes
#405
2665085- Added Gemini Realtime Adapter#918
f830d9e- Gate the tool-call part'sapprovalfield on the tool'sneedsApprovalflag.Previously
approval?was declared on every typed tool-call part regardless ofwhether the tool could ever request approval. Now the flag is captured as a
literal type (
toolDefinition({ needsApproval: true })→true) and threadedthrough
ClientTool/ToolDefinitionInstance/ToolDefinition, andToolCallPartForToolonly includesapprovalfor tools defined withneedsApproval: true:This is the primary migration surface for this release. When you pass a typed
toolsarray touseChat/createChat/injectChat, readingpart.approvalon a mixed tool-call union without first narrowing by
part.nameno longercompiles. Code that previously did
part.approval?.idin a generic handler overall tool-call parts must be updated:
Untyped
useChat()(no inferredtoolsgeneric) and the baseToolCallParttype are unaffected:
approvalstays available on every tool-call part there.Runtime behavior is unchanged — only TypeScript narrowing is stricter.
Adds a
TNeedsApproval extends booleantype parameter (defaulting tofalse)to the client tool types; existing explicit type arguments keep working via the
default. Literal capture requires
toolDefinition({ needsApproval: true })atthe call site — a dynamic
needsApproval: booleanvariable will not gate thetype.
Patch Changes
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-gemini@0.20.0
Minor Changes
#886
de5fbb5- Add Gemini Omni Flash (gemini-omni-flash-preview) video generation via the Interactions API. Omni only serves the Interactions API (generateContentrejects it), so the video adapter now routes by model: Veo models keep the:predictLongRunningoperations flow, whilegeminiVideo('gemini-omni-flash-preview')creates a background interaction withresponse_modalities: ['video'], polls it by id, and returns the inline base64 MP4 as adata:URL (Files-API URI delivery passes through). Usage is mapped from the interaction'soutput_tokens_by_modality. Image and video prompt parts are sent as interaction content blocks, andmodelOptions.previous_interaction_idchains a new prompt onto a prior Omni generation for conversational video editing. The top-levelsizeoption maps ontoresponse_format.aspect_ratio('16:9' | '9:16') anddurationontoresponse_format.duration— any value in the 3–10 second range (fractional seconds included, verified against the live API), defaulting to a 10-second clip when omitted. Raises the@google/genaifloor to^2.10.0for the Interactions API surface.#908
dcc7407- fix(ai-gemini, ai-openai): don't buffer arbitrary HTTP(S) URL image inputs by default on paths that require uploaded bytes.Gemini Veo (
createGeminiVideo), OpenAI image edits (createOpenaiImage), and OpenAI Sorainput_reference(createOpenaiVideo) have no URL passthrough — the provider only accepts inline bytes (or, for Veo, ags://reference). Previously an HTTP(S) URL image input was silently fetched and buffered in memory, which can OOM memory-constrained runtimes (e.g. Cloudflare Workers).These paths now throw on an HTTP(S) URL image input by default, with an error pointing to the alternatives.
data:URIs (andgs://for Veo) still work without any flag. To opt back into fetching + buffering, setallowUrlFetch: trueon the adapter config:Migration: if you passed HTTP(S) URL image inputs to these adapters, either fetch the bytes yourself and pass a
data:URI, pass ags://reference (Veo), or setallowUrlFetch: true.#405
2665085- Added Gemini Realtime AdapterPatch Changes
#924
5fcaf90- fix: resolve directory-barrel imports in published.d.tsfiles. Bare imports ofutils/tools/middlewarebarrels were emitted as../utils.js(etc.), which do not resolve under bundler/node16/nodenext (no/indexfallback for explicit.js). With consumerskipLibCheck: truethose symbols silently becameany. Imports now target concrete modules (e.g.utils/client,middleware/types) or explicit/indexpaths so public types resolve correctly.#919
d453647- fix(ai-gemini): fixGeminiClientConfigtype import in the published adapter declarations. The emitted.d.tsfiles importedGeminiClientConfigfrom a non-existent'../utils.js'(the barrel builds toutils/index.js), so underskipLibCheckit silently resolved toanyin consumers — masking client-config type-checking for every adapter and producing a spurious "httpOptionsdoes not exist" error oncreateGeminiVideo. Adapters now import the type from the concrete'../utils/client'module so the declarations resolve to the real type.#908
dcc7407- fix(ai-gemini): stop fetching arbitrary HTTPS image URLs increateGeminiImage. URL sources in multimodal image-generation prompts now pass through asfileData.fileUri(Gemini fetches them server-side), matching the chat adapter. This avoids fetch + base64 double-buffering that could OOM on memory-constrained runtimes such as Cloudflare Workers.#922
e0bbbdd- fix: resolve dangling relative imports in published declaration filesSwitch directory-barrel imports (
../utils,../tools,../middleware) toconcrete module paths so emitted
.d.tsspecifiers resolve underbundler/node16/nodenextresolution. Adds atest:dtsscanner guardrail.Fixes #920
Updated dependencies [
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-openai@0.17.0
Minor Changes
#908
dcc7407- fix(ai-gemini, ai-openai): don't buffer arbitrary HTTP(S) URL image inputs by default on paths that require uploaded bytes.Gemini Veo (
createGeminiVideo), OpenAI image edits (createOpenaiImage), and OpenAI Sorainput_reference(createOpenaiVideo) have no URL passthrough — the provider only accepts inline bytes (or, for Veo, ags://reference). Previously an HTTP(S) URL image input was silently fetched and buffered in memory, which can OOM memory-constrained runtimes (e.g. Cloudflare Workers).These paths now throw on an HTTP(S) URL image input by default, with an error pointing to the alternatives.
data:URIs (andgs://for Veo) still work without any flag. To opt back into fetching + buffering, setallowUrlFetch: trueon the adapter config:Migration: if you passed HTTP(S) URL image inputs to these adapters, either fetch the bytes yourself and pass a
data:URI, pass ags://reference (Veo), or setallowUrlFetch: true.Patch Changes
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-react@0.17.0
Minor Changes
2665085- Added Gemini Realtime AdapterPatch Changes
f830d9e- Add theconstmodifier to theTToolstype parameter ofuseChat(
createChatin Svelte,injectChatin Angular) so a plain inlinetoolsarraynow yields full type-safe message chunks. Previously the array widened to
Array<Union>and lost the literal toolnames that drive thediscriminated
tool-callpart union, so callers had to wrap their tools inclientTools(...)(or addas const) to get narrowing. That wrapper is nowoptional —
tools: [toolA, toolB]narrowspart.name,part.input, andpart.outputon its own.clientTools(...)still works and remains usefulfor defining a shared tuple outside the hook call.
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-acp@0.2.2
Patch Changes
5fcaf90,2665085,1deaa29,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-angular@0.2.4
Patch Changes
f830d9e- Add theconstmodifier to theTToolstype parameter ofuseChat(
createChatin Svelte,injectChatin Angular) so a plain inlinetoolsarraynow yields full type-safe message chunks. Previously the array widened to
Array<Union>and lost the literal toolnames that drive thediscriminated
tool-callpart union, so callers had to wrap their tools inclientTools(...)(or addas const) to get narrowing. That wrapper is nowoptional —
tools: [toolA, toolB]narrowspart.name,part.input, andpart.outputon its own.clientTools(...)still works and remains usefulfor defining a shared tuple outside the hook call.
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-anthropic@0.16.2
Patch Changes
#924
5fcaf90- fix: resolve directory-barrel imports in published.d.tsfiles. Bare imports ofutils/tools/middlewarebarrels were emitted as../utils.js(etc.), which do not resolve under bundler/node16/nodenext (no/indexfallback for explicit.js). With consumerskipLibCheck: truethose symbols silently becameany. Imports now target concrete modules (e.g.utils/client,middleware/types) or explicit/indexpaths so public types resolve correctly.#922
e0bbbdd- fix: resolve dangling relative imports in published declaration filesSwitch directory-barrel imports (
../utils,../tools,../middleware) toconcrete module paths so emitted
.d.tsspecifiers resolve underbundler/node16/nodenextresolution. Adds atest:dtsscanner guardrail.Fixes #920
Updated dependencies [
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-bedrock@0.1.3
Patch Changes
#924
5fcaf90- fix: resolve directory-barrel imports in published.d.tsfiles. Bare imports ofutils/tools/middlewarebarrels were emitted as../utils.js(etc.), which do not resolve under bundler/node16/nodenext (no/indexfallback for explicit.js). With consumerskipLibCheck: truethose symbols silently becameany. Imports now target concrete modules (e.g.utils/client,middleware/types) or explicit/indexpaths so public types resolve correctly.#922
e0bbbdd- fix: resolve dangling relative imports in published declaration filesSwitch directory-barrel imports (
../utils,../tools,../middleware) toconcrete module paths so emitted
.d.tsspecifiers resolve underbundler/node16/nodenextresolution. Adds atest:dtsscanner guardrail.Fixes #920
Updated dependencies [
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-claude-code@0.2.2
Patch Changes
5fcaf90,2665085,1deaa29,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-code-mode@0.3.7
Patch Changes
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-code-mode-skills@0.3.10
Patch Changes
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-codex@0.2.2
Patch Changes
5fcaf90,2665085,1deaa29,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-devtools-core@0.4.23
Patch Changes
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-elevenlabs@0.2.33
Patch Changes
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-fal@0.9.11
Patch Changes
#924
5fcaf90- fix: resolve directory-barrel imports in published.d.tsfiles. Bare imports ofutils/tools/middlewarebarrels were emitted as../utils.js(etc.), which do not resolve under bundler/node16/nodenext (no/indexfallback for explicit.js). With consumerskipLibCheck: truethose symbols silently becameany. Imports now target concrete modules (e.g.utils/client,middleware/types) or explicit/indexpaths so public types resolve correctly.#922
e0bbbdd- fix: resolve dangling relative imports in published declaration filesSwitch directory-barrel imports (
../utils,../tools,../middleware) toconcrete module paths so emitted
.d.tsspecifiers resolve underbundler/node16/nodenextresolution. Adds atest:dtsscanner guardrail.Fixes #920
Updated dependencies [
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-grok@0.14.8
Patch Changes
#924
5fcaf90- fix: resolve directory-barrel imports in published.d.tsfiles. Bare imports ofutils/tools/middlewarebarrels were emitted as../utils.js(etc.), which do not resolve under bundler/node16/nodenext (no/indexfallback for explicit.js). With consumerskipLibCheck: truethose symbols silently becameany. Imports now target concrete modules (e.g.utils/client,middleware/types) or explicit/indexpaths so public types resolve correctly.#922
e0bbbdd- fix: resolve dangling relative imports in published declaration filesSwitch directory-barrel imports (
../utils,../tools,../middleware) toconcrete module paths so emitted
.d.tsspecifiers resolve underbundler/node16/nodenextresolution. Adds atest:dtsscanner guardrail.Fixes #920
Updated dependencies [
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-grok-build@0.2.2
Patch Changes
5fcaf90,2665085,1deaa29,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-groq@0.5.2
Patch Changes
#924
5fcaf90- fix: resolve directory-barrel imports in published.d.tsfiles. Bare imports ofutils/tools/middlewarebarrels were emitted as../utils.js(etc.), which do not resolve under bundler/node16/nodenext (no/indexfallback for explicit.js). With consumerskipLibCheck: truethose symbols silently becameany. Imports now target concrete modules (e.g.utils/client,middleware/types) or explicit/indexpaths so public types resolve correctly.#922
e0bbbdd- fix: resolve dangling relative imports in published declaration filesSwitch directory-barrel imports (
../utils,../tools,../middleware) toconcrete module paths so emitted
.d.tsspecifiers resolve underbundler/node16/nodenextresolution. Adds atest:dtsscanner guardrail.Fixes #920
Updated dependencies [
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-isolate-cloudflare@0.2.37
Patch Changes
@tanstack/ai-isolate-node@0.1.46
Patch Changes
@tanstack/ai-isolate-quickjs@0.1.46
Patch Changes
@tanstack/ai-mcp@0.2.4
Patch Changes
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-mistral@0.2.2
Patch Changes
#924
5fcaf90- fix: resolve directory-barrel imports in published.d.tsfiles. Bare imports ofutils/tools/middlewarebarrels were emitted as../utils.js(etc.), which do not resolve under bundler/node16/nodenext (no/indexfallback for explicit.js). With consumerskipLibCheck: truethose symbols silently becameany. Imports now target concrete modules (e.g.utils/client,middleware/types) or explicit/indexpaths so public types resolve correctly.#922
e0bbbdd- fix: resolve dangling relative imports in published declaration filesSwitch directory-barrel imports (
../utils,../tools,../middleware) toconcrete module paths so emitted
.d.tsspecifiers resolve underbundler/node16/nodenextresolution. Adds atest:dtsscanner guardrail.Fixes #920
Updated dependencies [
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-ollama@0.8.15
Patch Changes
#924
5fcaf90- fix: resolve directory-barrel imports in published.d.tsfiles. Bare imports ofutils/tools/middlewarebarrels were emitted as../utils.js(etc.), which do not resolve under bundler/node16/nodenext (no/indexfallback for explicit.js). With consumerskipLibCheck: truethose symbols silently becameany. Imports now target concrete modules (e.g.utils/client,middleware/types) or explicit/indexpaths so public types resolve correctly.#922
e0bbbdd- fix: resolve dangling relative imports in published declaration filesSwitch directory-barrel imports (
../utils,../tools,../middleware) toconcrete module paths so emitted
.d.tsspecifiers resolve underbundler/node16/nodenextresolution. Adds atest:dtsscanner guardrail.Fixes #920
Updated dependencies [
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-opencode@0.2.2
Patch Changes
5fcaf90,2665085,1deaa29,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-openrouter@0.15.9
Patch Changes
#924
5fcaf90- fix: resolve directory-barrel imports in published.d.tsfiles. Bare imports ofutils/tools/middlewarebarrels were emitted as../utils.js(etc.), which do not resolve under bundler/node16/nodenext (no/indexfallback for explicit.js). With consumerskipLibCheck: truethose symbols silently becameany. Imports now target concrete modules (e.g.utils/client,middleware/types) or explicit/indexpaths so public types resolve correctly.#922
e0bbbdd- fix: resolve dangling relative imports in published declaration filesSwitch directory-barrel imports (
../utils,../tools,../middleware) toconcrete module paths so emitted
.d.tsspecifiers resolve underbundler/node16/nodenextresolution. Adds atest:dtsscanner guardrail.Fixes #920
Updated dependencies [
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-preact@0.10.4
Patch Changes
f830d9e- Add theconstmodifier to theTToolstype parameter ofuseChat(
createChatin Svelte,injectChatin Angular) so a plain inlinetoolsarraynow yields full type-safe message chunks. Previously the array widened to
Array<Union>and lost the literal toolnames that drive thediscriminated
tool-callpart union, so callers had to wrap their tools inclientTools(...)(or addas const) to get narrowing. That wrapper is nowoptional —
tools: [toolA, toolB]narrowspart.name,part.input, andpart.outputon its own.clientTools(...)still works and remains usefulfor defining a shared tuple outside the hook call.
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-react-ui@0.8.14
Patch Changes
2665085,f830d9e,f830d9e]:@tanstack/ai-sandbox@0.2.3
Patch Changes
#917
1deaa29- Make sandbox file-diff correct and observable (follow-up to #892):diff()now synthesizes an add-patch for any file git isn't tracking (a file the agent created and every later edit to it), keyed on tracked-ness at the baseline rather than on the event being acreate— so agent-created files no longer stream empty diffs. A tracked file identical to the baseline still diffs empty, and a transient git-show probe failure no longer fabricates a bogus add-patch.git diff's add-file shape (diff --githeader,new file mode, repo-relative paths).diff()returns'', so a secret like a.envnever has its contents surfaced.fs.watchwatcher re-seeds lazily if its initial workspace listing fails, so a pre-existing file is correctly reported as achange(not acreate) on first edit.create/deletestorms: a failed poll (thrown exec, or non-zero exit with no output) preserves the previous snapshot, a failed initial poll seeds without diffing, and a partial (findpermission-denied) poll is merged rather than diffed so transiently-unreadable files aren't reported as deleted.fs.watch), the git-baseline capture, and per-hook dispatch — is now logged (real anomalies undererrors, expected-empty conditions under thesandboxdebug category) instead of silently becoming empty data.Updated dependencies [
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-sandbox-cloudflare@0.2.3
Patch Changes
5fcaf90,2665085,1deaa29,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-solid@0.14.4
Patch Changes
f830d9e- Add theconstmodifier to theTToolstype parameter ofuseChat(
createChatin Svelte,injectChatin Angular) so a plain inlinetoolsarraynow yields full type-safe message chunks. Previously the array widened to
Array<Union>and lost the literal toolnames that drive thediscriminated
tool-callpart union, so callers had to wrap their tools inclientTools(...)(or addas const) to get narrowing. That wrapper is nowoptional —
tools: [toolA, toolB]narrowspart.name,part.input, andpart.outputon its own.clientTools(...)still works and remains usefulfor defining a shared tuple outside the hook call.
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-solid-ui@0.7.13
Patch Changes
2665085,f830d9e,f830d9e]:@tanstack/ai-svelte@0.14.4
Patch Changes
f830d9e- Add theconstmodifier to theTToolstype parameter ofuseChat(
createChatin Svelte,injectChatin Angular) so a plain inlinetoolsarraynow yields full type-safe message chunks. Previously the array widened to
Array<Union>and lost the literal toolnames that drive thediscriminated
tool-callpart union, so callers had to wrap their tools inclientTools(...)(or addas const) to get narrowing. That wrapper is nowoptional —
tools: [toolA, toolB]narrowspart.name,part.input, andpart.outputon its own.clientTools(...)still works and remains usefulfor defining a shared tuple outside the hook call.
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-vue@0.14.4
Patch Changes
f830d9e- Add theconstmodifier to theTToolstype parameter ofuseChat(
createChatin Svelte,injectChatin Angular) so a plain inlinetoolsarraynow yields full type-safe message chunks. Previously the array widened to
Array<Union>and lost the literal toolnames that drive thediscriminated
tool-callpart union, so callers had to wrap their tools inclientTools(...)(or addas const) to get narrowing. That wrapper is nowoptional —
tools: [toolA, toolB]narrowspart.name,part.input, andpart.outputon its own.clientTools(...)still works and remains usefulfor defining a shared tuple outside the hook call.
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/ai-vue-ui@0.2.32
Patch Changes
f830d9e]:@tanstack/openai-base@0.9.8
Patch Changes
5fcaf90,2665085,e0bbbdd,f830d9e,f830d9e,de5fbb5]:@tanstack/preact-ai-devtools@0.1.66
Patch Changes
@tanstack/react-ai-devtools@0.2.66
Patch Changes
@tanstack/solid-ai-devtools@0.2.66
Patch Changes