Repository navigation
@tanstack/ai-client@1.0.0
·
14 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Major Changes
- #1840
f1b3f65- TanStack AI 1.0.0. This release removes every API that was deprecated in 0.x. Read the upgrade guide before you upgrade: https://tanstack.com/ai/latest/docs/migration/v1- Removed all
@deprecatedexports, options, fields, and type aliases. Each one has a replacement that already shipped in 0.x. - Removed
addToolApprovalResponse()fromChatClientand every chat hook. Resolve the boundtool-approvalinterrupt withresolveInterruptinstead. The devtools eventtools:approval:respondedis also removed. - Removed the old wire formats: the CUSTOM
approval-requestedandtool-input-availableevents, the[DONE]SSE line, thedatacopy offorwardedProps, pre-binding interrupt descriptors and theirapproval_requiredandclient_tool_inputreasons, and the STEP events that adapters sent next toREASONING_*events. Use a 1.0 client with a 1.0 server. - Removed the
toolNamealias fromTOOL_CALL_STARTchunks. ReadtoolCallNameinstead. threadIdis now required onuseChatand every other chat hook,ChatClient, the generation hooks and clients,chat(),summarize(), the generation functions,codeModeWithSnippets(),selectRelevantSnippets(),CompactionContext, andSummarizeInput. TanStack AI no longer makes a thread id for you. Pass a stable id for each conversation.createChatHookfactory options no longer takethreadId: pass it on each hook call. Octane generation hooks takethreadIdinstead ofid.@tanstack/ai-sandboxremovesresolveDurableThreadIdandDurableThreadIdRequiredError.- The published
@tanstack/ai-octane/uitypes are now strict.UI.Messages,UI.Message,UI.Part, andUI.Interruptstype their render children.ToolPropstypespart.inputandpart.outputfor the named tool.toolsComponentsandinterruptsComponentsare required when the chat options declare tools or named interrupts. Code that relied on the old loose types can fail to compile. - A connection adapter's
connect()andsend()need the run context (withthreadId) as their fourth argument.ChatClientand the generation clients pass it. @tanstack/ai-sandbox:createToolBridgeCore(),startHostToolBridge(), aToolBridgeProvisioner, andexecuteHostTool()take a requiredthreadId. Bridged tools get it in their context.@tanstack/ai-sandbox: the harness tool bridge andexecuteHostTool()refuse a tool withneedsApproval. Before, the tool ran with no approval. RemoveneedsApproval, or run the tool with an HTTP adapter.stream()andrpcStream()pass the AG-UIRunAgentInputfor the run as the fourth factory argument, the same body the HTTP adapters send. Read it on the server withchatParamsFromRequestBody()orgenerationParamsFromBody(), sothreadId,runId, and interruptresumereach a server function.RunAgentInputis exported from@tanstack/ai/client.- A generation
fetchergetsthreadIdandrunIdin its second argument, next tosignalandheaders. Pass them to the server generation call. generationParamsFromBody()andgenerationParamsFromRequest()read the generation input fromforwardedProps. A server that readsbody.datagetsundefined. Readbody.forwardedPropsinstead. They also requirethreadIdandrunIdand return them as strings, the same aschatParamsFromRequestBody()and the AG-UIRunAgentInput. A body that holds only the input is rejected.- Removed the readers for data saved in old 0.x formats (old Cloudflare run-log records, a bare
UIMessage[]from client persistence, artifact records withoutblobKey). - Removed provider models that are shut down.
@tanstack/ai-react-ui,@tanstack/ai-solid-ui, and@tanstack/ai-vue-uiget no 1.0 release. Import from@tanstack/ai-react/ui,@tanstack/ai-solid/ui, or@tanstack/ai-vue/ui.
- Removed all
Minor Changes
- #1881
9f5a18a- Reconnects of a durable run can ride out a server restart. The wait between reconnects now doubles frominitialDelayMs(default 250) up tomaxDelayMs(default 5000), with jitter. SetbudgetMsto keep reconnecting for a total time instead of a fixed number of attempts. A reconnect answered 408, 429, 502, 503, or 504 is retried, and aRetry-Afterheader sets the wait.delayMsstill works as the old name ofinitialDelayMs.
Patch Changes
-
#1755
39c1c79- Fix recovery, cancel, steer, and provider bugs, and fill small harness gaps.- Recovery: a resolve that another host recovers runs its continuation. Before, it settled
completedwith no answer. - Approvals: a tool that a middleware adds in
onConfigcan now be approved.chat()checks a durable resume after the wholeonConfigchain. - Cancel: a cancelled turn keeps the text it streamed, and ends with
TEXT_MESSAGE_ENDandRUN_FINISHED(outcome: cancelled). A turn that times out ends withRUN_ERROR(code: 'timeout'). - Steer: a steer from another sender gets a
queuedreceipt with its own operation.host.events()showsidleafter a turn that a steer joined. - The duplicate-input check no longer depends on the key order of the stored input.
TurnInfohasmodel,attempt, andsender. The log keeps the sender'sname.harness.input.acceptedcarries the message. The chat hydration haspendingWaits.ObservedSession.settled()reads a settlement with no open session. Another host'ssnapshot().pluginsshows the saved plugin state.- New options:
subagents.background: false,media.urlTtlMs,conversationSummarizer({ middleware }), and thebeforeWriteworkspace hook, which can refuse a write. - Plugin model calls (
ctx.model.chat) run the harness middleware. - Exports:
SHUTDOWN_REASON,BUDGET_REASON, andRUN_CANCEL_REASONfrom@tanstack/ai-harness,HARNESS_EVENTSfrom@tanstack/ai-harness/client, andChatHydrateOptionsandChatHydrationResultfrom@tanstack/ai-client. - Compaction drops a background summary that another model prepared.
- Sandbox file calls take an optional
{ signal }. - Anthropic:
outputSchemamoves keywords that Anthropic rejects intodescription, usage reports 1-hour cache writes ascacheWrite1hTokensagain, andreasoningon a model with no reasoning entry warns once. - OpenAI Responses: a message whose model call sent a reasoning item is marked with
metadata.tanstack.reasoningItem. A replay of that message without its reasoning item no longer sends itsmsg_andfc_ids. - Cloudflare: a
data:line with nochoicesno longer throws, and the SSE fix-up acceptsdata:with no space, CRLF line ends, and any case in the content type. - Structured output: a schema failure carries
rawText, and a parse failure has the codestructured-output-parse-failed. ChatClient.addToolResultanswers the interrupt when the tool's schemas differ, so the result is sent.- The persistence conformance suite no longer fails a correct store on a slow runner.
- Recovery: a resolve that another host recovers runs its continuation. Before, it settled
-
Updated dependencies [
fcbd199,39c1c79,959f43e,39c1c79,fa2a291,f7e7cce,7a0a48b,468063c,fe83aa0,781a3a8,39abb7e,f1b3f65]:- @tanstack/ai@1.0.0
- @tanstack/ai-utils@1.0.0
- @tanstack/ai-event-client@1.0.0