Changelog
Release history
All releases published from the assistant-ui monorepo, grouped by date.
Jun 15, 2026
20 packages
@assistant-ui/core@0.2.17patchGitHub →
@assistant-ui/react@0.14.22patchGitHub →
@assistant-ui/react@0.14.21patchGitHub →
@assistant-ui/react-a2a@0.2.20patchGitHub →
@assistant-ui/react-ag-ui@0.0.41patchGitHub →
@assistant-ui/react-hook-form@0.12.21patchGitHub →
@assistant-ui/react-ink@0.0.28patchGitHub →
@assistant-ui/react-ink-markdown@0.0.27patchGitHub →
@assistant-ui/react-markdown@0.14.4patchGitHub →
@assistant-ui/react-mcp@0.0.14patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.0.13patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-native@0.1.26patchGitHub →
@assistant-ui/react-o11y@0.0.24patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-streamdown@0.3.4patchGitHub →
@assistant-ui/tap@0.9.2patchGitHub →
Jun 14, 2026
31 packages
@assistant-ui/core@0.2.16patchGitHub →
@assistant-ui/mcp-docs-server@0.1.35patchGitHub →
@assistant-ui/react@0.14.20patchGitHub →
@assistant-ui/react-devtools@1.2.6patchGitHub →
@assistant-ui/react-generative-ui@0.0.5patchGitHub →
@assistant-ui/react-hook-form@0.12.20patchGitHub →
@assistant-ui/react-ink@0.0.27patchGitHub →
@assistant-ui/react-ink-markdown@0.0.26patchGitHub →
@assistant-ui/react-langchain@0.0.14patchGitHub →
@assistant-ui/react-langgraph@0.14.8patchGitHub →
@assistant-ui/react-mcp@0.0.12patchGitHub →
Other
1@assistant-ui/react-native@0.1.25patchGitHub →
@assistant-ui/react-o11y@0.0.23patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/store@0.2.18patchGitHub →
@assistant-ui/tap@0.9.1patchGitHub →
@assistant-ui/vite@0.0.5patchGitHub →
@assistant-ui/x-generative-compiler@0.0.5patchGitHub →
create-assistant-ui@0.0.64patchGitHub →
Other
1Jun 13, 2026
14 packages
@assistant-ui/core@0.2.15patchGitHub →
Features
4featadd reasoningEffort to LanguageModelConfig
featapproval options vocabulary on tool approvals.
ToolCallMessagePart.approval gains request-supplied options (machine-readable kinds allow-once / allow-always / reject-once / reject-always, open to _-prefixed custom kinds), a recorded optionId, and a terminal resolution ("cancelled" | "expired") for non-decision outcomes. respondToApproval additionally accepts { optionId }, resolved in core against the option's kind; custom kinds require an explicit approved. ExternalThread gains an onRespondToToolApproval callback. The kit approval bar renders supplied options with an opt-in confirmation step showing the grants an option would persist. Persistence stays host-owned.featper-tool-call timing and stall detection.
ToolCallMessagePart gains a timing field ({ startedAt, completedAt? } in epoch ms), auto-populated by the assistant-stream accumulator at part start and result, and accepted on ThreadMessageLike for external-store hosts. New useToolCallElapsed hook returns the call's elapsed milliseconds, ticking once per second while running; unstable_useMessageStallDetection({ thresholdMs }) reports mid-run output stalls by watching a message content fingerprint. The kit ToolFallback trigger renders the duration when timing is present.@assistant-ui/react@0.14.19patchGitHub →
Features
3featapproval options vocabulary on tool approvals.
ToolCallMessagePart.approval gains request-supplied options (machine-readable kinds allow-once / allow-always / reject-once / reject-always, open to _-prefixed custom kinds), a recorded optionId, and a terminal resolution ("cancelled" | "expired") for non-decision outcomes. respondToApproval additionally accepts { optionId }, resolved in core against the option's kind; custom kinds require an explicit approved. ExternalThread gains an onRespondToToolApproval callback. The kit approval bar renders supplied options with an opt-in confirmation step showing the grants an option would persist. Persistence stays host-owned.featper-tool-call timing and stall detection.
ToolCallMessagePart gains a timing field ({ startedAt, completedAt? } in epoch ms), auto-populated by the assistant-stream accumulator at part start and result, and accepted on ThreadMessageLike for external-store hosts. New useToolCallElapsed hook returns the call's elapsed milliseconds, ticking once per second while running; unstable_useMessageStallDetection({ thresholdMs }) reports mid-run output stalls by watching a message content fingerprint. The kit ToolFallback trigger renders the duration when timing is present.@assistant-ui/react-ag-ui@0.0.39patchGitHub →
Features
2feataccept any AbstractAgent in useAgUiRuntime instead of requiring HttpAgent
featforward the full ExternalStoreThreadListAdapter (threads, archivedThreads, onRename, onArchive, ...) through adapters.threadList so server-persisted threads can be registered and switched to; clear messages before onSwitchToThread so the previous thread's messages no longer merge in as a phantom sibling branch; onSwitchToThread can return unstable_resume to reattach to an in-flight run after switching (resumes in the background and requires a ThreadHistoryAdapter with resume, otherwise it reports through onError instead of re-running the agent)
Fixes
2fixattach a TOOL_CALL_RESULT for a prior run's tool call to its owning message instead of synthesizing a duplicate empty-args part
fixkeep failed and aborted runs visible. the synthetic RUN_FINISHED from onRunFinalized used to overwrite RUN_ERROR with a successful status, so failed runs rendered as complete and MessagePrimitive.Error never showed. aborts (which @ag-ui/client routes through onRunFailed) now map to RUN_CANCELLED instead of RUN_ERROR, so the run lands as incomplete/cancelled.
@assistant-ui/react-devtools@1.2.5patchGitHub →
@assistant-ui/react-ink@0.0.26patchGitHub →
@assistant-ui/react-ink-markdown@0.0.25patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.0.11patchGitHub →
@assistant-ui/react-native@0.1.24patchGitHub →
Features
3featapproval options vocabulary on tool approvals.
ToolCallMessagePart.approval gains request-supplied options (machine-readable kinds allow-once / allow-always / reject-once / reject-always, open to _-prefixed custom kinds), a recorded optionId, and a terminal resolution ("cancelled" | "expired") for non-decision outcomes. respondToApproval additionally accepts { optionId }, resolved in core against the option's kind; custom kinds require an explicit approved. ExternalThread gains an onRespondToToolApproval callback. The kit approval bar renders supplied options with an opt-in confirmation step showing the grants an option would persist. Persistence stays host-owned.featper-tool-call timing and stall detection.
ToolCallMessagePart gains a timing field ({ startedAt, completedAt? } in epoch ms), auto-populated by the assistant-stream accumulator at part start and result, and accepted on ThreadMessageLike for external-store hosts. New useToolCallElapsed hook returns the call's elapsed milliseconds, ticking once per second while running; unstable_useMessageStallDetection({ thresholdMs }) reports mid-run output stalls by watching a message content fingerprint. The kit ToolFallback trigger renders the duration when timing is present.@assistant-ui/react-o11y@0.0.22patchGitHub →
@assistant-ui/react-pi@0.0.2patchGitHub →
Features
1featinitial
@assistant-ui/react-pi MVP — a Pi coding-agent runtime adapter@assistant-ui/store@0.2.17patchGitHub →
@assistant-ui/tap@0.8.1patchGitHub →
@assistant-ui/x-buildutils@0.0.13patchGitHub →
assistant-stream@0.3.22patchGitHub →
Features
1featper-tool-call timing and stall detection.
ToolCallMessagePart gains a timing field ({ startedAt, completedAt? } in epoch ms), auto-populated by the assistant-stream accumulator at part start and result, and accepted on ThreadMessageLike for external-store hosts. New useToolCallElapsed hook returns the call's elapsed milliseconds, ticking once per second while running; unstable_useMessageStallDetection({ thresholdMs }) reports mid-run output stalls by watching a message content fingerprint. The kit ToolFallback trigger renders the duration when timing is present.Jun 12, 2026
20 packages
@assistant-ui/core@0.2.14patchGitHub →
Features
3Fixes
2@assistant-ui/next@0.0.6patchGitHub →
Fixes
1fixgive each
"use generative" module a distinct bundler-redirect identity so two toolkits in one app no longer collide under next dev@assistant-ui/react@0.14.18patchGitHub →
Features
3Fixes
4fixexclude reasoning parts from copied message text
fixemit the GroupedParts streaming indicator for empty running messages, so the assistant slot shows a loading affordance immediately after sending instead of staying blank
fixcompensate scrollbar gutter in useScrollLock so collapsible animations don't shift centered content horizontally on classic scrollbars
@assistant-ui/react-ag-ui@0.0.38patchGitHub →
@assistant-ui/react-ai-sdk@1.3.35patchGitHub →
@assistant-ui/react-devtools@1.2.4patchGitHub →
@assistant-ui/react-generative-ui@0.0.4patchGitHub →
@assistant-ui/react-hook-form@0.12.19patchGitHub →
@assistant-ui/react-ink@0.0.25patchGitHub →
Docs
1@assistant-ui/react-ink-markdown@0.0.24patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-markdown@0.14.3patchGitHub →
@assistant-ui/react-mcp@0.0.10patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-native@0.1.23patchGitHub →
@assistant-ui/react-o11y@0.0.21patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.7patchGitHub →
Fixes
2fix· react-opencodere-sync thread history, session status, and pending permissions/questions after the event stream reconnects, so events lost while disconnected (e.g.
session.idle or permission.asked) cannot leave isRunning stuck or deadlock a run@assistant-ui/react-streamdown@0.3.3patchGitHub →
@assistant-ui/store@0.2.16patchGitHub →
Features
1@assistant-ui/tap@0.7.1patchGitHub →
Features
1featadd useTapHost, a React host that commits the resource in the passive phase without blocking paint; the returned per-render effects callback lets descendant consumers mount the commit ahead of their own effects via useEffect(effects). The React bridge hosts (useResource, useResources, useTapRoot) now also commit in useEffect instead of useLayoutEffect.
Fixes
1fixmatch React semantics: support render-phase updates (setState during render re-renders before committing, capped at 25 passes, instead of throwing; discarded render attempts drop their render-phase dispatches like React; updating a resource other than the one currently rendering throws), apply dispatches exactly once across React-discarded and replayed renders of tap sub-roots, run all effect cleanups before any setups within a commit, and compare only the common prefix of deps arrays that change length (with a dev warning)
assistant-ui@0.0.100patchGitHub →
create-assistant-ui@0.0.63patchGitHub →
Other
1Jun 9, 2026
6 packages
@assistant-ui/core@0.2.12patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/gorp@0.0.2patchGitHub →
@assistant-ui/react@0.14.16patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.0.8patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-o11y@0.0.19patchGitHub →
Other
1misc@assistant-ui/[email protected]
Jun 8, 2026
38 packages
@assistant-ui/core@0.2.11patchGitHub →
Features
5featcheck the generative compiler version against the core package compatibility range
Fixes
2fixmake
SimpleTextAttachmentAdapter and SimpleImageAttachmentAdapter work without FileReader. they read files via the browser only FileReader, so sending an attachment in a non browser runtime (e.g. @assistant-ui/react-ink in a terminal) threw ReferenceError: FileReader is not defined. the adapters now feature detect: they keep using FileReader when it exists (browser, and React Native whose Blob polyfill provides it) and fall back to file.text / file.arrayBuffer in Node. output is byte identical across all three environments, so @assistant-ui/react, @assistant-ui/react-native, and @assistant-ui/react-ink all keep re-exporting the same core implementation.@assistant-ui/mcp-docs-server@0.1.34patchGitHub →
@assistant-ui/metro@0.0.2patchGitHub →
Features
2featmerge toolkits across "use generative" files and allow a bare defineMcpToolkit default export
Fixes
1@assistant-ui/next@0.0.5patchGitHub →
@assistant-ui/react@0.14.15patchGitHub →
Features
3Fixes
2Refactors
1@assistant-ui/react-ag-ui@0.0.36patchGitHub →
Features
3featconsume ACTIVITY_SNAPSHOT events to support MCP Apps on the AG-UI runtime
featexport
fromAgUiMessages from the package root@assistant-ui/react-ai-sdk@1.3.33patchGitHub →
Fixes
2fix· react-ai-sdkmake the package metro-bundleable in react native / expo by serving a client-only entry under the react-native export condition
fix· react-ai-sdkmake the package root bundle on edge, cloudflare workers, deno, and browsers, not just react native. the node-only stdio MCP transport is now resolved through a package.json "imports" condition (
#mcp-stdio), so importing @assistant-ui/react-ai-sdk at root carries the full server toolkit on every target with http/sse MCP working on edge, while stdio MCP throws a clear runtime error only where a subprocess cannot be spawned (browser, react native, edge, workers) instead of breaking the build via @ai-sdk/mcp/mcp-stdio -> node:child_process. node, bun, and deno keep the real stdio transport.@assistant-ui/react-data-stream@0.12.17patchGitHub →
@assistant-ui/react-devtools@1.2.3patchGitHub →
Features
2featsurface full tool metadata (type, provider id, MCP server, providerOptions, deferred-results, backend defaults) in the devtools model context, and redact credentials (apiKey, authorization headers, tokens, MCP server headers/env) at the serializer boundary before they cross the postMessage bridge
@assistant-ui/react-generative-ui@0.0.3patchGitHub →
@assistant-ui/react-google-adk@0.0.15patchGitHub →
@assistant-ui/react-hook-form@0.12.18patchGitHub →
@assistant-ui/react-ink@0.0.24patchGitHub →
Features
3feat
defineToolkit and the tool markers (hitlTool / stubTool / providerTool) now have runtime implementations in @assistant-ui/react-ink, so Ink apps author tools with the same defineToolkit API (and typed args) as the web. An Ink app runs in a single Node process with no client/server boundary, so there is nothing for the "use generative" compiler to split: defineToolkit resolves each tool's type at runtime and no build step is required.Fixes
2fix· react-inkblock Enter submission while the thread is running unless the runtime supports queueing.
ComposerInput called composer.send unconditionally, so pressing Enter mid-run interrupted the active stream even on runtimes with capabilities.queue: false. It now applies the same gate as the web ComposerInput (isRunning && !capabilities.queue no-ops, keeping the typed text). The onSubmit override path is unaffected; apps using it own their submit behavior.@assistant-ui/react-ink-markdown@0.0.23patchGitHub →
@assistant-ui/react-langchain@0.0.13patchGitHub →
@assistant-ui/react-langgraph@0.14.7patchGitHub →
Features
1Fixes
2@assistant-ui/react-native@0.1.22patchGitHub →
Features
2@assistant-ui/react-streamdown@0.3.2patchGitHub →
@assistant-ui/react-syntax-highlighter@0.14.2patchGitHub →
@assistant-ui/store@0.2.14patchGitHub →
Refactors
1refactorrename the client composition and event hooks to the
use* convention to match the tap resource API: tapClientResource -> useClientResource, tapClientLookup -> useClientLookup, tapClientList -> useClientList, tapAssistantClientRef -> useAssistantClientRef, tapAssistantEmit -> useAssistantEmit.@assistant-ui/tap@0.6.0minorGitHub →
@assistant-ui/vite@0.0.4patchGitHub →
@assistant-ui/x-buildutils@0.0.12patchGitHub →
@assistant-ui/x-generative-compiler@0.0.4patchGitHub →
Features
4featcheck the generative compiler version against the core package compatibility range
featmerge toolkits across "use generative" files and allow a bare defineMcpToolkit default export
Fixes
2create-assistant-ui@0.0.62patchGitHub →
Other
1Jun 1, 2026
12 packages
@assistant-ui/core@0.2.9patchGitHub →
Features
2featadd the
ToolkitDeclaration / ToolkitDeclarationDefinition types for authoring a toolkit permissively (a backend tool may declare description/parameters/execute); the canonical Toolkit keeps those fields erased. Author with defineToolkit from @assistant-ui/react, which the "use generative" compiler strips per build.featmove the
defineToolkit and hitl use-generative markers from @assistant-ui/next into @assistant-ui/core/react, so they ship once from every distribution (@assistant-ui/react, @assistant-ui/react-native, @assistant-ui/react-ink) and stay portable across build targets. Import them from @assistant-ui/react instead of @assistant-ui/next; they remain no-op markers stripped at build time by a "use generative" compiler.@assistant-ui/next@0.0.3patchGitHub →
Features
3featadd @assistant-ui/next — the
withAui Next.js config wrapper and the compiler for the "use generative" directive that colocates a tool's schema, server-only execute, and client-only render in one filefeatextract the framework-agnostic
"use generative" compiler into the internal @assistant-ui/x-generative-compiler package. @assistant-ui/next now consumes the shared compiler instead of bundling its own copy, so other build integrations can reuse it.featmove the
defineToolkit and hitl use-generative markers from @assistant-ui/next into @assistant-ui/core/react, so they ship once from every distribution (@assistant-ui/react, @assistant-ui/react-native, @assistant-ui/react-ink) and stay portable across build targets. Import them from @assistant-ui/react instead of @assistant-ui/next; they remain no-op markers stripped at build time by a "use generative" compiler.@assistant-ui/react@0.14.13patchGitHub →
Features
2featadd the
ToolkitDeclaration / ToolkitDeclarationDefinition types for authoring a toolkit permissively (a backend tool may declare description/parameters/execute); the canonical Toolkit keeps those fields erased. Author with defineToolkit from @assistant-ui/react, which the "use generative" compiler strips per build.featmove the
defineToolkit and hitl use-generative markers from @assistant-ui/next into @assistant-ui/core/react, so they ship once from every distribution (@assistant-ui/react, @assistant-ui/react-native, @assistant-ui/react-ink) and stay portable across build targets. Import them from @assistant-ui/react instead of @assistant-ui/next; they remain no-op markers stripped at build time by a "use generative" compiler.@assistant-ui/react-ink@0.0.22patchGitHub →
Features
1featmove the
defineToolkit and hitl use-generative markers from @assistant-ui/next into @assistant-ui/core/react, so they ship once from every distribution (@assistant-ui/react, @assistant-ui/react-native, @assistant-ui/react-ink) and stay portable across build targets. Import them from @assistant-ui/react instead of @assistant-ui/next; they remain no-op markers stripped at build time by a "use generative" compiler.@assistant-ui/react-ink-markdown@0.0.21patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.0.5patchGitHub →
Other
1@assistant-ui/react-native@0.1.20patchGitHub →
Features
1featmove the
defineToolkit and hitl use-generative markers from @assistant-ui/next into @assistant-ui/core/react, so they ship once from every distribution (@assistant-ui/react, @assistant-ui/react-native, @assistant-ui/react-ink) and stay portable across build targets. Import them from @assistant-ui/react instead of @assistant-ui/next; they remain no-op markers stripped at build time by a "use generative" compiler.@assistant-ui/vite@0.0.2patchGitHub →
Features
1featadd @assistant-ui/vite — a Vite plugin (
aui) that compiles the "use generative" directive for Vite apps and TanStack Start. It transforms each toolkit per Vite environment (client keeps render, server environments keep execute), so no facade/redirect is needed; it also skips the Next-only server-only import, which has no react-server layer under Vite.@assistant-ui/x-generative-compiler@0.0.2patchGitHub →
assistant-stream@0.3.19patchGitHub →
Features
1featadd the
ToolkitDeclaration / ToolkitDeclarationDefinition types for authoring a toolkit permissively (a backend tool may declare description/parameters/execute); the canonical Toolkit keeps those fields erased. Author with defineToolkit from @assistant-ui/react, which the "use generative" compiler strips per build.assistant-ui@0.0.97patchGitHub →
Features
1featprompt to add assistant-ui agent skills when creating a project.
npx assistant-ui create now asks whether to add the agent skills and, on yes, delegates to the skills CLI (skills add assistant-ui/skills) so it installs into your chosen agent platforms (Claude Code, Cursor, Zed, etc.). Use --skills / --no-skills to skip the prompt; non-interactive runs default to adding them.create-assistant-ui@0.0.60patchGitHub →
Other
1May 31, 2026
1 package
@assistant-ui/next@0.0.2patchGitHub →
Features
1May 27, 2026
17 packages
@assistant-ui/core@0.2.7patchGitHub →
Features
2feat· corebuild a client-side tool-invocations pipeline directly into
useExternalStoreRuntime. Tool-call parts in messages now fire streamCall / execute automatically for any external-store runtime that opts in. Opt in per-adapter via unstable_enableToolInvocations: true (off by default — most external-store runtimes either run tools server-side or already wire their own client-side dispatch path; double-firing is the risk). The _store.isLoading flag signals when initial history is loaded: snapshots observed while isLoading === true are treated as historical (no fire), matching the contract that callers like importExternalState already rely on. Six in-tree runtimes (useAssistantTransportRuntime, useAISDKRuntime, useLangGraphRuntime, useStreamRuntime, useAgUiRuntime, useAdkRuntime) are migrated to the embedded tracker; the standalone useToolInvocations React hook is removed. Adds ExternalStoreAdapter.setToolStatuses so adapters can mirror the tracker's per-tool-call status into local React state for converter metadata. Auto-aborts in-flight tool calls on new turns (append with startRun, startRun) so a tool that finishes after the user moves on can no longer feed a stale result into the next turn.@assistant-ui/react@0.14.11patchGitHub →
@assistant-ui/react-ag-ui@0.0.33patchGitHub →
@assistant-ui/react-ai-sdk@1.3.30patchGitHub →
@assistant-ui/react-google-adk@0.0.12patchGitHub →
@assistant-ui/react-hook-form@0.12.16patchGitHub →
@assistant-ui/react-ink-markdown@0.0.19patchGitHub →
@assistant-ui/react-langchain@0.0.10patchGitHub →
@assistant-ui/react-langgraph@0.14.4patchGitHub →
@assistant-ui/react-mcp@0.0.3patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-o11y@0.0.16patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/tap@0.5.13patchGitHub →
assistant-ui@0.0.95patchGitHub →
create-assistant-ui@0.0.58patchGitHub →
Other
1May 26, 2026
10 packages
@assistant-ui/core@0.2.6patchGitHub →
Features
2featsurface AI SDK v6 tool approvals as a first-class
respondToApproval prop on tool components. tool-call parts in the approval-requested state now carry part.approval = { id, isAutomatic? }; tool components call respondToApproval({ approved, reason? }) to ack the gate without threading chatHelpers through application context. also fixes a transient requires-action flicker for the approval-responded state and tightens the external-message converter so interrupt vs pending tool calls are distinguished by an actual interrupt/approval field rather than by result === undefined.@assistant-ui/react@0.14.9patchGitHub →
Features
2featsurface AI SDK v6 tool approvals as a first-class
respondToApproval prop on tool components. tool-call parts in the approval-requested state now carry part.approval = { id, isAutomatic? }; tool components call respondToApproval({ approved, reason? }) to ack the gate without threading chatHelpers through application context. also fixes a transient requires-action flicker for the approval-responded state and tightens the external-message converter so interrupt vs pending tool calls are distinguished by an actual interrupt/approval field rather than by result === undefined.@assistant-ui/react-ai-sdk@1.3.28patchGitHub →
Features
1featsurface AI SDK v6 tool approvals as a first-class
respondToApproval prop on tool components. tool-call parts in the approval-requested state now carry part.approval = { id, isAutomatic? }; tool components call respondToApproval({ approved, reason? }) to ack the gate without threading chatHelpers through application context. also fixes a transient requires-action flicker for the approval-responded state and tightens the external-message converter so interrupt vs pending tool calls are distinguished by an actual interrupt/approval field rather than by result === undefined.@assistant-ui/react-ink@0.0.19patchGitHub →
Features
1featsurface AI SDK v6 tool approvals as a first-class
respondToApproval prop on tool components. tool-call parts in the approval-requested state now carry part.approval = { id, isAutomatic? }; tool components call respondToApproval({ approved, reason? }) to ack the gate without threading chatHelpers through application context. also fixes a transient requires-action flicker for the approval-responded state and tightens the external-message converter so interrupt vs pending tool calls are distinguished by an actual interrupt/approval field rather than by result === undefined.@assistant-ui/react-ink-markdown@0.0.18patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.0.2patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-native@0.1.18patchGitHub →
Features
2featsurface AI SDK v6 tool approvals as a first-class
respondToApproval prop on tool components. tool-call parts in the approval-requested state now carry part.approval = { id, isAutomatic? }; tool components call respondToApproval({ approved, reason? }) to ack the gate without threading chatHelpers through application context. also fixes a transient requires-action flicker for the approval-responded state and tightens the external-message converter so interrupt vs pending tool calls are distinguished by an actual interrupt/approval field rather than by result === undefined.assistant-stream@0.3.17patchGitHub →
Fixes
1fixpreserve parentId on streamed text and reasoning parts
assistant-ui@0.0.94patchGitHub →
Chores
1chore· clidrop
with-parent-id-grouping from the --example list. the example demonstrated MessagePrimitive.Unstable_PartsGroupedByParentId, which is deprecated; its grouping pattern is now better demonstrated by with-chain-of-thought using MessagePrimitive.GroupedParts, and the sources gap is closed by emitting source-url parts from a search_web tool in the same example. npx assistant-ui create -e with-parent-id-grouping will no longer resolve.