Documents
CHANGELOG
CHANGELOG
Type
External
Status
Published
Created
Mar 17, 2026
Updated
May 21, 2026
Updated by
Dosu Bot
Source
View

@assistant-ui/react#

0.14.7#

Patch Changes#

  • #4073 44ac459 - fix(react|useSmooth): render-phase resync of displayed text on part change (@Yonom)

    Drop one frame of stale text after a thread switch by resyncing
    displayedText in render when the part instance flips or text
    breaks its streaming-append continuity, instead of waiting for
    the post-commit effect.

  • Updated dependencies [221d320]:

0.14.6#

Patch Changes#

  • #4023 94548fa - docs: add React JSDoc and deprecation notices for primitive and tool APIs (@AVGVSTVS96)

  • #3513 8b6fc88 - fix: guard navigator.clipboard availability and swallow write rejections in ActionBarPrimitive.Copy. Previously, copy clicks in SSR, non-HTTPS contexts, or older browsers without the Clipboard API threw a ReferenceError, and permission-denied rejections surfaced as unhandled promise rejections. The web copyToClipboard implementation in @assistant-ui/react now early-rejects when the API is unavailable, and useActionBarCopy in @assistant-ui/core silently absorbs the rejection so the rest of the UI is unaffected. (@JustAnOkapi)

  • #4040 b481ec5 - fix: useExternalStoreRuntime no longer leaves phantom assistant siblings when the external store swaps a message id between syncs (e.g. AI SDK v6 useChat replacing a client-generated id with a server-provided id mid-stream, surfacing as BranchPicker showing 2/2 on a turn the user never branched). The messages-array sync path now diffs against the previous sync and removes ids that disappeared, matching the messageRepository path's snapshot semantics. Closes #4037. (@okisdev)

  • #4063 8f0dbb8 - fix thread initialization timing race which caused scrollToBottomOnInitialize to fail in useLocalRuntime (@AVGVSTVS96)

  • #3958 7a8bf26 - refactor: hoist MessagePartPrimitiveInProgress to @assistant-ui/core/react so @assistant-ui/react, @assistant-ui/react-ink, and other distributions can share the same implementation. @assistant-ui/react's MessagePartPrimitive.InProgress is unchanged for callers; it now re-exports from core. (@ShobhitPatra)

  • #4050 693922b - fix(x-buildutils): include local types/ in typeRoots so x-buildutils itself can resolve its ambient browser-process types (@Yonom)

    feat(react): re-export Unstable_DirectiveFormatter, Unstable_DirectiveSegment, Unstable_TriggerItem, and unstable_defaultDirectiveFormatter from @assistant-ui/core so downstream packages don't need to depend on @assistant-ui/core directly

  • Updated dependencies [845c7c1, db721df, 94548fa, 94548fa, 94548fa, 8b6fc88, 179895f, 7a8bf26, 3b2bbce]:

0.14.5#

Patch Changes#

  • Accept the MCP-UI 2026-01-26 method names in the MCP App bridge (e.g. ui/notifications/size-changed, ui/request-display-mode, ui/open-link, ui/message). Widgets built with the current xmcp host-bridge emit these names; previously the host silently ignored them, leaving features like auto-resize broken (iframe never received a height change from onSizeChange).

0.14.4#

Patch Changes#

  • #4033 552ffb0 - feat(react): export getMcpAppFromToolPart so hosts can detect MCP-app tool parts (@Yonom)

  • Updated dependencies []:

    • safe-content-frame@0.0.19

0.14.3#

Patch Changes#

  • #4031 30f0357 - feat(react): clamp MCP app auto-resize height to a configurable max (default 800px) (@Yonom)

0.14.2#

Patch Changes#

  • #4024 19d4d94 - feat: add native MCP Apps renderer — McpAppRenderer composes into Tools to render MCP UI resources inline in chat over a JSON-RPC postMessage bridge on SafeContentFrame. Adds an mcp field to ToolCallMessagePart and forwards callProviderMetadata.mcp.app through the AI SDK message converter. (@Yonom)

  • #4022 4c3eaa1 - fix(composer): apply WAI-ARIA combobox attributes to the textarea while a trigger popover is open (@okisdev)

    Unstable_TriggerPopover rendered the listbox half of the WAI-ARIA editable combobox pattern, but the focused element (the textarea) lacked the corresponding combobox attributes. screen readers had no way to announce that an autocomplete was open or which item was highlighted.

    ComposerPrimitive.Input now reads the active popover descriptor from TriggerPopoverRoot and applies aria-controls, aria-expanded, aria-haspopup="listbox", and aria-activedescendant to the textarea while a popover is open. attributes are removed when the popover closes. consumers using ComposerPrimitive.Input outside a TriggerPopoverRoot are unaffected.

  • #4020 03694bd - fix(composer): select highlighted item on Tab in trigger popover (@serhiizghama)

    ComposerPrimitive.Unstable_TriggerPopover only accepted the highlighted entry on Enter. Tab fell through to the underlying textarea, moving focus out of the composer or inserting a tab character. This diverged from the autocomplete convention used in CLIs, IDEs, command palettes, GitHub, Slack, Discord, and Notion, where Tab accepts the highlighted suggestion.

    Tab now mirrors Enter and selects the highlighted item or category. Shift+Tab still passes through so native focus traversal keeps working.

  • Updated dependencies [19d4d94]:

0.14.1#

Patch Changes#

  • #3984 35d0146 - feat(composer): expose canSend state and isSendDisabled adapter input (@okisdev)

    ComposerState.canSend (read-only) is now derivable via useAuiState((s) => s.composer.canSend) and <AuiIf condition={(s) => s.composer.canSend}/>. it reflects whether the composer is in a state where send is permitted; cross-thread gating (isRunning, capabilities.queue) continues to be layered on top by useComposerSend.

    ExternalStoreAdapter.isSendDisabled is a new optional input alongside isDisabled. when true, the thread composer's input remains usable but send() becomes a no-op and canSend is false. use this to gate sending on external React state (e.g. while tool config is loading) without disabling the input itself. edit composers (saving in-progress message edits) intentionally ignore this flag, since it is a thread-scoped gate.

    BaseComposerRuntimeCore.send() now early-returns when !canSend, so the Cmd/Ctrl+Shift+Enter steer hotkey, form-requestSubmit(), and direct aui.composer().send() calls are all gated by the same flag. the same gating is wired through the tap-based ExternalThread client via a new isSendDisabled prop on ExternalThreadProps.

  • #4008 fa4510a - feat: support multi-modal tool results via toModelOutput (@okisdev)

    frontend tools can now project their execution output into multi-modal model content (text + image / pdf / arbitrary file parts), aligning with the AI SDK v6 toModelOutput callback. previously, tool results were always serialized as a single JSON value, so a "read pdf" style tool had no way to send the PDF back to a multi-modal model.

    • assistant-stream exports a new ToolModelContentPart type ({ type: "text", text } | { type: "file", data, mediaType, filename? }) and a ToolModelOutputFunction<TArgs, TResult> callback type. Tool.toModelOutput is wired through unstable_runPendingTools and ToolExecutionStream, attaching the resulting modelContent to the tool-call part on the assistant message.
    • @assistant-ui/core re-exports ToolModelContentPart and adds an optional modelContent?: readonly ToolModelContentPart[] field on ToolCallMessagePart. existing tools and renderers are unchanged.
    • @assistant-ui/react-ai-sdk's frontendTools(...) helper now also registers a toModelOutput on each forwarded tool. it transparently unwraps an envelope that useAISDKRuntime writes when a frontend-executed tool produced modelContent, turning it into AI SDK's { type: "content", value: [...] } output. plain (non-envelope) outputs fall back to the existing { type: "text" | "json", value } shape, so behavior for tools without toModelOutput is unchanged.

    route handlers that adopt toModelOutput also need to pass tools to convertToModelMessages (this is the AI SDK's documented pattern):

    const aiSDKTools = { ...frontendTools(tools ?? {}) };
    streamText({
      messages: await convertToModelMessages(messages, { tools: aiSDKTools }),
      tools: aiSDKTools,
    });
    

    templates and existing examples are unchanged. they keep the simpler convertToModelMessages(messages) form because none of the tools they ship with use toModelOutput. the new tools guide page documents how to opt in.

    reserved key. when a frontend tool defines toModelOutput, its result is persisted in the AI SDK chat as { __aui_modelContent: ToolModelContentPart[], value: <your result> }. tools must not return objects whose top-level key is literally __aui_modelContent, or convertMessage will misread the result. the prefix is namespaced for this reason.

    read/write compatibility for persisted threads. the envelope is recognized by @assistant-ui/react-ai-sdk from this version onward. if you persist UI messages and read them from multiple environments, upgrade every reader before any writer starts producing toModelOutput; otherwise older readers will treat the envelope object as the result and break the affected tool render functions.

  • #3634 9c3d24d - Support AI SDK source-document parts by preserving them as assistant-ui (@sicko7947)
    document source message parts across conversion and cloud serialization,
    including the legacy React cloud encoder.

  • Updated dependencies [9ecda1d, 35d0146, fa4510a, c9dd16c, dea8bc7, 9c3d24d]:

0.14.0#

Minor Changes#

  • #3970 040d469 - chore: drop APIs deprecated in v0.11/v0.12 (@Yonom)

    See the v0.14 migration guide for the full removal list and replacements.

    • useAssistantApi / useAssistantState / useAssistantEvent / AssistantIf removed (use useAui / useAuiState / useAuiEvent / AuiIf).
    • getExternalStoreMessage (singular) removed (use getExternalStoreMessages).
    • MessageState.submittedFeedback removed (use message.metadata.submittedFeedback).
    • ThreadRuntime.startRun(parentId) positional overload removed (pass { parentId }).
    • ThreadRuntime.unstable_loadExternalState removed (use importExternalState).
    • ThreadRuntime.unstable_resumeRun removed (use resumeRun).
    • ThreadRuntime.getModelConfig removed (use getModelContext).
    • AssistantRuntime.threadList / switchToNewThread / switchToThread / registerModelConfigProvider / reset removed (use threads / threads.switchToNewThread / threads.switchToThread / registerModelContextProvider / thread.reset).
    • ChatModelRunOptions.config removed (use context).
    • useLocalThreadRuntime alias removed (use useLocalRuntime).
    • unstable_useRemoteThreadListRuntime / unstable_useCloudThreadListAdapter / unstable_RemoteThreadListAdapter / unstable_InMemoryThreadListAdapter aliases removed (drop the unstable_ prefix).
    • react-langgraph onSwitchToThread removed (use load).
    • toAISDKTools / getEnabledTools removed (use toToolsJSONSchema from assistant-stream).

Patch Changes#

0.13.0#

Minor Changes#

  • #3908 d864d07 - fix: robust top-turn anchoring with viewport-owned reserve (@AVGVSTVS96)

    Migration:

    • Remove ThreadPrimitive.ViewportSlack from your tree. It has been removed from the public API because top-anchor target registration is now handled automatically by MessagePrimitive.Root when turnAnchor="top".
    • If you customized fillClampThreshold / fillClampOffset on ThreadPrimitive.ViewportSlack or MessagePrimitive.Root, replace them with topAnchorMessageClamp on ThreadPrimitive.Viewport:
    // Before, either:
    <MessagePrimitive.Root fillClampThreshold="10em" fillClampOffset="6em" />
    
    // or:
    <ThreadPrimitive.ViewportSlack fillClampThreshold="10em" fillClampOffset="6em">
      ...
    </ThreadPrimitive.ViewportSlack>
    
    // After
    <ThreadPrimitive.Viewport
      turnAnchor="top"
      topAnchorMessageClamp={{ tallerThan: "10em", visibleHeight: "6em" }}
      ...
    </ThreadPrimitive.Viewport>
    

Patch Changes#

  • #3924 801b9a6 - fix(react): recover ComposerPrimitive.Input from dropped compositionend (@nitnizzie)

    reset compositionRef when the next change event reports isComposing: false so a dropped compositionend (chromium dead-key layouts, mid-composition focus loss) can no longer freeze the input. additionally call setText during composition so React 19's stricter controlled-input reconciliation does not reset the textarea mid-IME. fixes #3923.

  • #3953 7098bab - Add cursor-based pagination to the thread list. RemoteThreadListAdapter.list() accepts an optional { after } cursor and may return nextCursor on the response. The runtime exposes loadMore(), hasMore, and isLoadingMore through both the legacy ThreadListRuntime API and the tap-only aui.threads() path; ThreadListRuntimeCore.loadMore?(), hasMore?, and isLoadingMore? are optional, so non-paginating cores (local, external-store, single-thread, in-memory) remain conformant. (@okisdev)

    @assistant-ui/react ships a matching ThreadListPrimitive.LoadMore button built on createActionButton, plus a useThreadListLoadMore primitive hook. Consumers wanting an IntersectionObserver sentinel can read s.threads.hasMore / isLoadingMore from useAuiState and call aui.threads().loadMore() directly.

    In-flight loadMore() calls dedup via a single promise. The existing _loadGeneration counter drops stale append callbacks when a reload() interleaves a loadMore(). The loadMore reducer captures the active adapter so a mid-flight adapter swap cannot leak a stale page. Empty-string nextCursor is normalised to undefined. reload() pre-clears the cursor so consumers reading hasMore directly during a reload do not observe a stale value.

    Adapter rejections are surfaced via console.error in both the initial-load and loadMore paths, matching the pattern in RemoteThreadListHookInstanceManager and useToolInvocations.

  • #3954 aa6e071 - fix: keep active top-anchored messages visible to layout (@AVGVSTVS96)

  • #3962 b090acb - chore: update dependencies (@Yonom)

  • #3952 df7eb3e - perf: cut per-message overhead in long threads (@okisdev)

    Two MessagePrimitive.Root changes remove work that scaled with message count:

    • Defer the parseCssLength call inside the top-anchor target ref to the next animation frame. The synchronous getComputedStyle read previously forced a full-tree layout during the bulk-mount of a long thread (a 335 ms forced reflow at 100 messages in our trace). Deferring past first paint lets the browser do the layout naturally.
    • Split the root into a default and a top-anchor path. Threads using the default turnAnchor="bottom" no longer subscribe to the top-anchor useAuiState selectors per message.

    The only observable change is that top-anchor target registration is now async by one frame.

    Note: @assistant-ui/ui (private, copy-into-project) gains a content-visibility: auto default on message wrappers in the same PR. On a cold load with pre-existing history taller than the viewport, the placeholder-based scrollHeight can transiently disagree with the at-bottom check until off-screen messages are measured. useOnResizeContent resyncs within a frame, and the auto-scroll path uses an explicit "scrolling" flag rather than trusting isAtBottom alone, so run-start scrolling is unaffected.

  • #3948 f4a693e - fix(core): restore adapter context flow through RemoteThreadListAdapter.unstable_Provider (@okisdev)

    PR #3891 hoisted the runtime binder out of RemoteThreadListAdapter.unstable_Provider so that user-supplied loading / Suspense wrappers no longer strand the runtime binding. as a side effect, any RuntimeAdapterProvider mounted inside unstable_Provider (history, attachments — what useCloudThreadListAdapter and LocalStorageThreadListAdapter both do) ended up below the binder in the render tree. useRuntimeAdapters() reads context from above, so the runtime hook saw null and useExternalHistory early-returned.

    for useChatRuntime({ cloud }) setups this silently disabled message persistence (POST /v1/threads/:id/messages), thread history loading, run telemetry (POST /v1/runs), and forced cloud attachments to fall back to vercelAttachmentAdapter's base64 inlining. the same regression hits useA2ARuntime, useAgUiRuntime, and useLocalRuntime whenever they are wrapped by useRemoteThreadListRuntime with a similar adapter.

    restore the pre-#3891 layering: the binder once again renders inside unstable_Provider, so the runtime hook reads any context the Provider injects. the ProviderRenderDetector warning introduced by #3891 is kept and now fires whenever Provider gates children behind suspense, loading state, or useEffect (the original #3678 case), pointing the user at the synchronous-children rule. no API surface changes; first-party adapters keep working unchanged.

  • Updated dependencies [7098bab, b090acb, 5fdf17e]:

0.12.28#

Patch Changes#

  • #3853 6a919c1 - feat: add <MessagePrimitive.GroupedParts> for hierarchical adjacent grouping of message parts (@Yonom)

    Introduces a new primitive that coalesces adjacent parts into groups via a user-supplied groupBy(part) → "group-…" | readonly "group-…"[] | null. Adjacent parts sharing a key-path prefix coalesce up to that prefix; ungrouped parts render as direct leaves.

    The render function takes { part, children } and dispatches on a single switch (part.type). "group-…" cases wrap children (the recursively-rendered subtree); real part types ("text", "tool-call", "reasoning", …) render the part directly with the same EnrichedPartState enrichments (toolUI, addResult, resume, dataRendererUI) that <MessagePrimitive.Parts> provides.

    GroupPart is intentionally minimal: { type, status, indices }. The render function is invoked once per group node and once per individual leaf part, so users never have to nest a <MessagePrimitive.Parts> call.

    The groupBy return type is constrained to `group-${string}` so the unified switch can never collide with a real part type. The component infers a literal TKey per call site, so part.type narrows to the exact union of group keys plus part types.

    For leaf parts, children is a sentinel that throws if rendered — accidental fall-through like default: return children; errors loudly instead of silently rendering nothing. Returning null from a leaf case is fine.

    Deprecates the legacy components.ToolGroup, components.ReasoningGroup, and components.ChainOfThought props on <Parts>, and <MessagePrimitive.Unstable_PartsGrouped> for adjacent grouping — all still work for backwards compatibility.

  • Updated dependencies [0bbf5dd, 98f165c, 62ec5bd, 6a919c1]:

0.12.27#

Patch Changes#

0.12.26#

Patch Changes#

  • #3876 ce865bc - chore: update dependencies (@Yonom)

  • #3873 c56f98f - feat(core): add reload() method on ThreadListRuntime and aui.threads() that re-invokes the remote adapter's list() and refreshes the thread list. Use this after asynchronous auth (e.g. OIDC, better-auth) completes to recover from an initial load that ran before the authenticated user was available. A generation counter ensures a mid-flight response from a superseded load cannot overwrite a newer reload's state. (@okisdev)

  • #3829 9aa5410 - fix: add render prop support to dropdown menu primitives (@AVGVSTVS96)

  • #3583 a1f84ae - fix: process dropped attachments in parallel (@samdickson22)

    Align drag-and-drop attachment handling with paste so multiple files appear together instead of appearing one by one.

  • #3870 b4fde97 - fix(composer): sync mouse hover with keyboard highlight in TriggerPopover. Items and categories now update highlightedIndex on mouse move, keeping data-highlighted, aria-selected, and aria-activedescendant consistent with the hovered element. A new highlightIndex(index) method is exposed on the popover scope. Closes #3868. (@okisdev)

  • #3831 d53ff4f - chore: remove decorative separator comments across packages (@okisdev)

  • #3834 17958c9 - refactor: unify mention/slash under behavior sub-primitives; delete Mention/SlashCommand aliases and the execute field on Unstable_TriggerItem; split TriggerPopoverResource; rename react-lexical MentionNode/MentionPlugin/MentionChipProvider/mentionChip prop to DirectiveNode/DirectivePlugin/DirectiveChipProvider/directiveChip; fix IME/Unicode/copy-paste/undo bugs. Breaking (Unstable_ APIs): replace onSelect={{type:"insertDirective",formatter}} with <Unstable_TriggerPopover.Directive formatter={...}>; replace onSelect={{type:"action",handler}} with <Unstable_TriggerPopover.Action onExecute={...}>. Rename unstable_useToolMentionAdapterunstable_useMentionAdapter with new items/categories/includeModelContextTools options. unstable_useSlashCommandAdapter now returns { adapter, action }execute stays in the hook closure instead of on the item. Rename CSS class aui-mention-chipaui-directive-chip and attributes data-mention-*data-directive-*. (@okisdev)

  • #3827 477fa8a - feat: unify mention and slash command primitives under Unstable_TriggerPopover (@okisdev)

  • Updated dependencies [c7a274e, ce865bc, ca8f526, c56f98f, 974d15e, 4b19d42, 055dda5, da0f598, d53ff4f, 20f8404, 17958c9]:

0.12.25#

Patch Changes#

0.12.24#

Patch Changes#

  • 42bc640: feat: support edit lineage and startRun in EditComposer send flow

    • Add SendOptions with startRun flag to composer.send()
    • Expose parentId and sourceId on EditComposerState
    • Add EditComposerRuntimeCore interface extending ComposerRuntimeCore
    • Bypass text-unchanged guard when startRun is explicitly set
    • ComposerSendOptions extends SendOptions for consistent layering
  • e82726c: fix(react): forward viewport slack props from MessagePrimitive.Root

  • 376bb00: chore: update dependencies

  • 87e7761: feat: generalize mention system into trigger popover architecture with slash command support

    • Introduce ComposerInputPlugin protocol to decouple ComposerInput from mention-specific code
    • Extract generic TriggerPopoverResource from MentionResource supporting multiple trigger characters
    • Add Unstable_TriggerItem, Unstable_TriggerCategory, Unstable_TriggerAdapter generic types
    • Add Unstable_SlashCommandAdapter, Unstable_SlashCommandItem types
    • Add ComposerPrimitive.Unstable_TriggerPopoverRoot and related primitives
    • Add ComposerPrimitive.Unstable_SlashCommandRoot and related primitives
    • Add unstable_useSlashCommandAdapter hook for building slash command adapters
    • Refactor MentionResource as thin wrapper around TriggerPopoverResource
    • Alias Unstable_MentionItem/Unstable_MentionAdapter to generic trigger types
    • Update react-lexical KeyboardPlugin to use plugin protocol
    • All existing Unstable_Mention* APIs remain unchanged
  • Updated dependencies [42bc640]

  • Updated dependencies [376bb00]

  • Updated dependencies [87e7761]

0.12.23#

Patch Changes#

  • a8bf84b: feat(core): expose getLoadThreadsPromise() on ThreadListRuntime public API
  • bdbd024: fix(core): set EMPTY_THREAD_CORE.isLoading to true to prevent Welcome page flash during thread switch
  • 0958070: feat(core): add initialThreadId option to useRemoteThreadListRuntime
  • Updated dependencies [de29641]
  • Updated dependencies [a8bf84b]
  • Updated dependencies [5fd5c3d]
  • Updated dependencies [2c5cd97]
  • Updated dependencies [ec50e8a]

0.12.22#

Patch Changes#

  • 6554892: feat: add useAssistantContext for dynamic context injection

    Register a callback-based context provider that injects computed text into the system prompt at evaluation time, ensuring the prompt always reflects current application state.

  • d726499: fix: unify assistant-transport request body format with AssistantChatTransport

    callSettings and config are now sent as nested objects in the request body,
    aligned with the AI SDK transport. The old top-level spread is preserved for
    backward compatibility but deprecated and will be removed in a future version.

  • 876f75d: feat: add interactable state persistence

    Add persistence API to interactables with exportState/importState, debounced setPersistenceAdapter, per-id isPending/error tracking, flush() for immediate sync, and auto-flush on component unregister.

  • bdce66f: chore: update dependencies

  • c362685: feat: add RealtimeVoiceAdapter with VoiceOrb UI, mode/volume support, and ElevenLabs/LiveKit examples

  • 4abb898: refactor: align interactables with codebase conventions

    • Rename useInteractable to useAssistantInteractable (registration only, returns id)
    • Add useInteractableState hook for reading/writing interactable state
    • Remove makeInteractable and related types
    • Rename UseInteractableConfig to AssistantInteractableProps
    • Extract buildInteractableModelContext from Interactables resource
    • Add with-interactables example to CLI
  • 209ae81: chore: remove aui-source export condition from package.json exports

  • 50b3100: feat: add render prop support to all primitives for shadcn "Base" component library compatibility

  • af70d7f: feat: add useToolArgsStatus hook for per-prop streaming status

    Add a convenience hook that derives per-property streaming completion status from tool call args using structural partial JSON analysis.

  • Updated dependencies [dffb6b4]

  • Updated dependencies [6554892]

  • Updated dependencies [9103282]

  • Updated dependencies [876f75d]

  • Updated dependencies [bdce66f]

  • Updated dependencies [4abb898]

  • Updated dependencies [209ae81]

  • Updated dependencies [2dd0c9f]

  • Updated dependencies [af70d7f]

0.12.21#

Patch Changes#

  • 3227e71: feat: add interactables with partial updates, multi-instance, and selection

    • useInteractable(name, config) hook and makeInteractable factory for registering AI-controllable UI
    • Interactables() scope resource with auto-generated update tools and system prompt injection
    • Partial updates — auto-generated tools use partial schemas so AI only sends changed fields
    • Multi-instance support — same name with different IDs get separate update_{name}_{id} tools
    • Selection — setSelected(true) marks an interactable as focused, surfaced as (SELECTED) in system prompt
  • 52403c3: chore: update dependencies

  • Updated dependencies [781f28d]

  • Updated dependencies [3227e71]

  • Updated dependencies [3227e71]

  • Updated dependencies [0f55ce8]

  • Updated dependencies [83a15f7]

  • Updated dependencies [52403c3]

  • Updated dependencies [ffa3a0f]

0.12.20#

Patch Changes#

  • 28a987a: feat: SingleThreadList resource
    refactor: attachTransformScopes should mutate the scopes instead of cloning it

  • 736344c: chore: update dependencies

  • ff3be2a: Add @-mention system with cursor-aware trigger detection, keyboard navigation, search, and Lexical rich editor support

  • 70b19f3: feat: add queue.clear callback, route thread.append through queue

    • Add clear(reason: "edit" | "reload" | "cancel-run") to ExternalThreadQueueAdapter
    • thread.append() now routes through queue.enqueue when a queue adapter is present
    • Cancel, edit, and reload operations call queue.clear with the appropriate reason
  • 70b19f3: feat: add native queue and steer support

    • Add queue adapter to ExternalThreadProps for runtimes that support message queuing
    • Add QueueItemPrimitive.Text, .Steer, .Remove primitives for rendering queue items
    • Add ComposerPrimitive.Queue for rendering the queue list within the composer
    • Add ComposerSendOptions with steer flag to composer.send()
    • Add capabilities.queue to RuntimeCapabilities
    • ComposerPrimitive.Send stays enabled during runs when queue is supported
    • Cmd/Ctrl+Shift+Enter hotkey sends with steer: true (interrupt current run)
    • Add queueItem scope to ScopeRegistry
    • Add queue field to ComposerState and queueItem() method to ComposerMethods
  • c71cb58: chore: update dependencies

  • Updated dependencies [1406aed]

  • Updated dependencies [9480f30]

  • Updated dependencies [28a987a]

  • Updated dependencies [736344c]

  • Updated dependencies [ff3be2a]

  • Updated dependencies [70b19f3]

  • Updated dependencies [c71cb58]

0.12.19#

Patch Changes#

  • 7ecc497: feat: children API for primitives with part.toolUI, part.dataRendererUI, and MessagePrimitive.Quote
  • Updated dependencies [7ecc497]

0.12.18#

Patch Changes#

  • 1ed9867: feat: move resumeRun to stable

  • 427ffaa: refactor: useRemoteThreadListRuntime no longer marked unstable

  • 349f3c7: chore: update deps

  • 02614aa: feat: add multi-agent support

    • ReadonlyThreadProvider and MessagePartPrimitive.Messages for rendering sub-agent messages
    • assistant-stream: add messages field to tool-result chunks, ToolResponseLike, and ToolCallPart types, enabling sub-agent messages to flow through the streaming protocol
  • 642bcda: Add quote.tsx registry components and injectQuoteContext helper

  • Updated dependencies [1ed9867]

  • Updated dependencies [427ffaa]

  • Updated dependencies [349f3c7]

  • Updated dependencies [02614aa]

  • Updated dependencies [6cc4122]

  • Updated dependencies [642bcda]

0.12.17#

Patch Changes#

  • 990e41d: refactor: code sharing between the multiple platforms
  • Updated dependencies [990e41d]

0.12.16#

Patch Changes#

  • 5ae74fe: fix: prevent double-submit when ComposerPrimitive.Send child has type="submit"
  • 8ed9d6f: Refactor React Native component API: move shared runtime logic (remote thread list, external store, cloud adapters, message converter, tool invocations) into @assistant-ui/core for reuse across React and React Native
  • Updated dependencies [5ae74fe]
  • Updated dependencies [8ed9d6f]
  • Updated dependencies [01bee2b]

0.12.15#

Patch Changes#

  • 07dcce0: fix(react): duplicate toolCallId parts when joining consecutive assistant snapshots in the external message converter.
  • a845911: chore: update dependencies
  • bc40eaf: fix(react): ActionBarMorePrimitive disappearing when ActionBarPrimitive.Root uses autohide="not-last" on non-last messages.
  • be23d74: fix(react): make useToolInvocations args stream rewrites recover safely and avoid premature closure for non-executable client tools.
  • 1eb059c: fix(react): avoid crashing when external message conversion receives orphaned tool results without a matching tool call.
  • Updated dependencies [a845911]

0.12.14#

Patch Changes#

  • 03714af: fix: DataRenderers not in scope
  • Updated dependencies [03714af]

0.12.13#

Patch Changes#

  • 17cf9a8: feat(telemetry): add reasoning/cached token usage across cloud reporting paths
  • Updated dependencies [17cf9a8]
    • assistant-cloud@0.1.20

0.12.12#

Patch Changes#

  • 36ef3a2: chore: update dependencies

  • 6692226: feat: support external source attachments in composer

    addAttachment() now accepts either a File or a CreateAttachment descriptor, allowing users to add attachments from external sources (URLs, API data, CMS references) without creating dummy File objects or requiring an AttachmentAdapter.

  • c31c0fa: Extract shared React code (model-context, client, types, providers, RuntimeAdapter) into @assistant-ui/core/react sub-path so both @assistant-ui/react and @assistant-ui/react-native re-export from one source.

  • 1672be8: feat: bindExternalStoreMessage

  • 28f39fe: Handle unknown attachment types with fallback component and unknown message part types with console.warn instead of throwing

  • 3a1cb66: feat: assistant transport prepareRequestBody support

  • 14769af: refactor: move RuntimeAdapter base logic to @assistant-ui/core; re-export missing core APIs from distribution packages

  • 7c360ce: Update npm README

  • a638f05: refactor(react): target @assistant-ui/store for ScopeRegistry module augmentation

  • 8a78cd2: fix: stabilize runtimeHook identity in useRemoteThreadListRuntime to avoid unnecessary option updates and thread state churn

  • Updated dependencies [a638f05]

  • Updated dependencies [28f39fe]

  • Updated dependencies [36ef3a2]

  • Updated dependencies [6692226]

  • Updated dependencies [c31c0fa]

  • Updated dependencies [fc98475]

  • Updated dependencies [374f83a]

  • Updated dependencies [fc98475]

  • Updated dependencies [1672be8]

  • Updated dependencies [14769af]

  • Updated dependencies [a638f05]

0.12.11#

Patch Changes#

  • 5bbe8a9: Fix rewritten streaming tool arguments in assistant transport by safely restarting tool-call arg streams without crashing, preserving logical tool call IDs, and preventing stale status cleanup after reset.

  • 5e304ea: feat: client-side run telemetry reporting with beforeReport hook

  • 546c053: feat(core): extract subscribable, utils, and model-context; add public/internal API split

  • a7039e3: feat(core): extract remote-thread-list and assistant-transport utilities to @assistant-ui/core

  • 16c10fd: feat(core): extract runtime and adapters to @assistant-ui/core

  • 98c3d54: feat(react): support custom components for "data" message parts

  • b181803: feat(core): introduce @assistant-ui/core package

    Extract framework-agnostic core from @assistant-ui/react. Replace React ComponentType references with framework-agnostic types and decouple AssistantToolProps/AssistantInstructionsConfig from React hook files.

  • 7836760: fix(assistant-cloud): expand joined messages for AI SDK v6 history export and telemetry reporting

  • 9276547: fix: thread deletion crash "Entry not available in the store"

  • b65428e: refactor: thread().composer() now needs to be invoked

  • af5b085: feat(assistant-cloud): support MCP tool observability

  • 61b54e9: Add message timing metadata: AssistantMessageTiming type, automatic timing tracking in AssistantMessageAccumulator, MessageTiming type, useMessageTiming() hook, and client-side streaming timing for AI SDK runtime.

  • a094c45: fix: add DataMessagePart to ThreadUserMessagePart for parity with ThreadAssistantMessagePart

  • 4d7f712: feat(core): move runtime-to-client bridge to core/store for framework reuse

  • ecc29ec: feat(core): move scope types and client implementations to @assistant-ui/core/store

  • 6e97999: feat(core): move store tap infrastructure to @assistant-ui/core/store

  • a247fc9: feat(assistant-cloud): allow save complete multi-step message

  • f414af9: fix: avoid stale thread metadata overwrite while streaming generated titles

  • b48912c: fix(react): smooth streaming behaviour to include first chunk

  • 93910bd: Rename .tsx files to .ts where no JSX syntax is used

  • 58a8472: feat: Add standalone AI SDK hooks for cloud persistence without assistant-ui

    New @assistant-ui/cloud-ai-sdk package with useCloudChat and useThreads hooks. Wraps AI SDK's useChat with automatic message persistence, thread management, and auto-title generation.

  • Updated dependencies [b65428e]

  • Updated dependencies [d08a488]

  • Updated dependencies [b65428e]

  • Updated dependencies [5e304ea]

  • Updated dependencies [546c053]

  • Updated dependencies [a7039e3]

  • Updated dependencies [16c10fd]

  • Updated dependencies [40a67b6]

  • Updated dependencies [b65428e]

  • Updated dependencies [b181803]

  • Updated dependencies [b65428e]

  • Updated dependencies [6bd6419]

  • Updated dependencies [b65428e]

  • Updated dependencies [b65428e]

  • Updated dependencies [af5b085]

  • Updated dependencies [61b54e9]

  • Updated dependencies [4d7f712]

  • Updated dependencies [ecc29ec]

  • Updated dependencies [6e97999]

  • Updated dependencies [a247fc9]

  • Updated dependencies [b65428e]

  • Updated dependencies [93910bd]

  • Updated dependencies [60bbe53]

  • Updated dependencies [58a8472]

  • Updated dependencies [b65428e]

  • Updated dependencies [b65428e]

0.12.10#

Patch Changes#

  • afaaf3b: fix: use bracket notation for process.env

  • afaaf3b: fix: duplicate key toolCallId error in HITL tools (#3197)

  • afaaf3b: fix(react): runConfig not applied when clicking Suggestion with send=true

  • afaaf3b: feat(react): Quote Selected Text primitives

    Added new primitives and hooks for quoting selected text from messages:

    • SelectionToolbarPrimitive.Root - Floating toolbar that appears on text selection within a message
    • SelectionToolbarPrimitive.Quote - Button inside the floating toolbar to capture the selection as a quote
    • ComposerPrimitive.Quote - Container for quote preview (renders only when quote is set)
    • ComposerPrimitive.QuoteText - Displays the quoted text
    • ComposerPrimitive.QuoteDismiss - Button to clear the quote
    • useMessageQuote() - Hook to read quote info from message metadata
    • QuoteInfo type - { text: string; messageId: string }
    • ComposerRuntime.setQuote() - Programmatic API to set/clear quotes
    • MessagePrimitive.Root now renders data-message-id attribute
  • 51d24be: feat(react): add submitMode prop

    Add submitMode prop to ComposerInput with three options: "enter" (default), "ctrlEnter", and "none". This controls keyboard submission behavior - "ctrlEnter" mode allows plain Enter to insert newlines for easier multi-line message composition, "none" disables keyboard submission entirely.

    The existing submitOnEnter prop is now deprecated but still supported for backward compatibility.

  • afaaf3b: feat(assistant-transport): support editing messages

  • Updated dependencies [afaaf3b]

0.12.9#

Patch Changes#

  • a088518: chore: update dependencies
  • d8122cc: feat: ChainOfThought Layout API
  • Updated dependencies [a088518]

0.12.8#

Patch Changes#

  • 38f4a32: feat: ChainOfThoughtPrimitive

0.12.7#

Patch Changes#

  • 77af8c3: fix: runtime not responsive if loaded under React StrictMode (critial bug)
  • 9ef966a: fix(store): memoize the aui client instance
  • Updated dependencies [77af8c3]
  • Updated dependencies [9ef966a]

0.12.6#

Patch Changes#

  • 39fefec: feat: importExternalState API

0.12.5#

Patch Changes#

  • d45b893: chore: update dependencies
  • fe71bfc: feat: use enhanced tapSubscribableResource hook
  • Updated dependencies [d45b893]
  • Updated dependencies [fe71bfc]
  • Updated dependencies [fe71bfc]

0.12.4#

Patch Changes#

  • 86baaee: fix(react): devtools not register
  • 3bbe318: fix: allow destructuring proxy methods (e.g. addToolResult, resumeToolCall)
  • Updated dependencies [3bbe318]

0.12.3#

Patch Changes#

  • 07d1c65: fix: nesting assistant providers
  • b591d72: feat: new tools API
  • 59a338a: feat: åshowEmptyOnNonTextEnd
  • acbaf07: feat: add framework-agnostic toToolsJSONSchema and toGenericMessages utilities to assistant-stream
  • c665612: fix: do not capture handleSendMessage errors
  • 0371d72: feat: AssistantRuntimeProvider aui prop
  • e8b3f34: feat: Suggestions API and Primitives
  • Updated dependencies [07d1c65]
  • Updated dependencies [acbaf07]
  • Updated dependencies [5ab3690]
  • Updated dependencies [0371d72]

0.12.2#

Patch Changes#

  • 1ea3e28: feat(react): better error handling
  • 8cbf686: fix: tap should run effects after remount
  • a8be364: feat: log individual errors when throwing AggregateError
  • 605d825: chore: update dependencies
  • Updated dependencies [8cbf686]
  • Updated dependencies [2e088eb]
  • Updated dependencies [a8be364]
  • Updated dependencies [605d825]
  • Updated dependencies [fe15232]

0.12.1#

Patch Changes#

  • 8672695: fix: race condition in RemoteThreadListRuntime causing app crash on thread deletion

0.12.0#

Minor Changes#

  • 9314b36: feat: use @assistant-ui/store to power state management

Patch Changes#

  • 6eab31e: fix(react): handle tool argsText key reordering during streaming
  • 083ed83: fix(cloud): serialize image and file parts across all formats
  • 6511990: fix(react): bind this context when calling __internal_setGetInitializePromise
  • a526e63: fix uncaught AbortError when cancelling streams
  • Updated dependencies [11625b5]

0.11.59#

Patch Changes#

  • fe06c7c: Revert "fix(react): accept URL-based images in sanitizeImageContent (#3069)"
  • Updated dependencies

0.11.58#

Patch Changes#

  • 3719567: chore: update deps
  • Updated dependencies [3719567]

0.11.57#

Patch Changes#

  • 9a110ea: fix(react): prevent viewport slack feedback loop
  • caee095: feat(react): allow passing threadId to backend
  • 9883125: fix(react): merge reasoning parts with same parentId in ExternalStoreRuntime

0.11.56#

Patch Changes#

  • 3a0b9c8: fix(react): scroll to bottom on initial history load
  • b8f62e1: fix: add missing type export for ExportedMessageRespositoryItem
  • 8d5c20c: fix: restore useLocalThreadRuntime export as deprecated alias to useLocalRuntime

0.11.55#

Patch Changes#

  • 5ca09bc: fix(cloud): filter unsupported messages parts passed to generateTitle

0.11.54#

Patch Changes#

  • ab2259d: feat(react): thread list item more primitive

  • 699e585: feat(react): action bar more primitive

  • 4b63488: Allow async function for body in runtime options

  • aee8561: feat(react): add dictation (speech-to-text) support

    Adds dictation (speech-to-text) support via a new DictationAdapter interface. Users can now convert voice input to text in the composer using the browser's Web Speech API or custom adapters.

    • New adapter: WebSpeechDictationAdapter - uses browser's Web Speech API
    • New components: ComposerPrimitive.Dictate, ComposerPrimitive.StopDictation, ComposerPrimitive.DictationTranscript
    • New state: composer.dictation for dictation status and transcript
    • New methods: composer.startDictation(), composer.stopDictation()
    • Configuration via adapters.dictation in runtime options
  • dbfdb11: fix(docs): fix broken migration links

0.11.53#

Patch Changes#

  • 57bd207: chore: update dependencies
  • cce009d: chore: use tsc for building packages
  • Updated dependencies [57bd207]
  • Updated dependencies [cce009d]

0.11.52#

Patch Changes#

  • 4db92c9: fix(react): useIsHoveringRef on SSR issue

0.11.51#

Patch Changes#

  • fix: update tap package

0.11.50#

Patch Changes#

  • bae3aa2: feat: use new tap global flushSync method
  • e8ea57b: chore: update deps
  • Updated dependencies [bae3aa2]
  • Updated dependencies [bae3aa2]
  • Updated dependencies [bae3aa2]
  • Updated dependencies [bae3aa2]
  • Updated dependencies [bae3aa2]
  • Updated dependencies [bae3aa2]
  • Updated dependencies [e8ea57b]
  • Updated dependencies [bae3aa2]

0.11.49#

Patch Changes#

  • 89aec17: feat: AI SDK frontend tool execution cancellation support
    fix: AI SDK isRunning status when running frontend tools
  • ee7040f: fix: always scroll to bottom when switching to a thread
  • bd27465: feat: ability to disable auto scrollToBottom on message send / thread switch
  • a3e9549: feat: only add turn anchor slack after the first turn
  • 206616b: fix: scroll to bottom button flickers on send message
  • 7aa77b5: feat: do not take viewport padding into account when calculating the slack inset
  • Updated dependencies [89aec17]
    • assistant-stream@0.2.44

0.11.48#

Patch Changes#

  • ba26b22: feat(react): export as anything

  • d169e4f: feat: add AssistantIf

  • da9f8a6: Fix ESC keydown handler to only trigger when event originates from the composer input

    The useEscapeKeydown hook was intercepting ESC key events globally, preventing other UI elements (like Radix dialogs) from responding to ESC. The handler now checks if the event target is within the composer input before calling preventDefault().

  • 01c31fe: chore: update dependencies

  • Updated dependencies [01c31fe]

0.11.47#

Patch Changes#

  • 45d771f: fix(react): data-status stuck on running when smooth streaming disabled

0.11.46#

Patch Changes#

  • ab8953b: feat(react): add allowNesting option to allow wrapping runtimes with custom thread list adapters

0.11.45#

Patch Changes#

  • ec662cd: chore: update dependencies
  • Updated dependencies [ec662cd]

0.11.44#

Patch Changes#

  • 4f6afef: feat: unified json schema

0.11.43#

Patch Changes#

  • f54c17b: feat: Viewport turnAnchor="top"

0.11.42#

Patch Changes#

  • 354c5c3: feat: MessageState.index
  • c3ac004: fix: export ComposerAttachmentDropzone as ComposerPrimitive.AttachmentDropzone
    fix: prevent drag state flicker in ComposerAttachmentDropzone
  • 282a596: feat: ThreadPrimitive.ScrollToBottom behavior prop

0.11.41#

Patch Changes#

  • 08430e8: feat(assistant-transport): support command enqueue inside onError/onCancel
    feat(assistant-transport): cancel queued commands on error

0.11.40#

Patch Changes#

  • 2c33091: chore: update deps
  • Updated dependencies [2c33091]

0.11.39#

Patch Changes#

  • b408005: feat(react-ai-sdk): Integrate AI SDK v5 data parts in message content
  • 7a6d9ca: fix: LocalThreadRuntime deleting branches during message reloads
  • 70d5966: feat: allow storing runConfig with ThreadHistoryAdapter
  • 3754bdd: refactor: rename toolUIs to tools and remove ToolUI API
  • 0a4bdc1: feat: renamed ResourceElementConstructor to Resource, changed ResourceElement.type to be Resource instead of ResourceFn
  • Updated dependencies [0a4bdc1]

0.11.38#

Patch Changes#

  • 66a13a0: fix: separate scroll-to-bottom button from autoScroll behavior (#1916)

  • 4e3877e: feat: Add thread fetching capability to remote thread list adapter

    • Add fetch method to RemoteThreadListAdapter interface
    • Implement fetch in cloud adapter to retrieve individual threads
    • Enhance switchToThread to automatically fetch and load threads not present in the current list
    • Add get method to AssistantCloudThreads for individual thread retrieval
  • eef682b: fix(react): update check for scroll position in autoscroll

  • Updated dependencies [4e3877e]

    • assistant-cloud@0.1.7

0.11.37#

Patch Changes#

  • 0ce129b: add scroll lock hook for reasoning component

0.11.36#

Patch Changes#

  • 3ab9484: feat: Toolkit API
  • 7a88ead: chore: mark all old context API hooks as deprecated
  • 81b581f: feat: display AI SDK errors
  • 2fc7e99: chore: update deps
  • Updated dependencies [dbc4ec7]
  • Updated dependencies [2fc7e99]

0.11.35#

Patch Changes#

  • 2fc5c3d: feat: AssistantTransport wire format
  • 04144dd: feat: useAssistantTransportState
  • Updated dependencies [2fc5c3d]
    • assistant-stream@0.2.38

0.11.34#

Patch Changes#

  • 953db24: chore: update deps
  • fix: submittedFeedback external message converter support
  • Updated dependencies [953db24]

0.11.33#

Patch Changes#

  • refactor: move submittedFeedback to metadata, add ThreadMessageLike support

0.11.32#

Patch Changes#

  • fix: Cannot enqueue a chunk into a readable stream that is closed or has been requested to be closed

0.11.31#

Patch Changes#

  • chore: update deps
  • Updated dependencies

0.11.30#

Patch Changes#

  • feat: add submittedFeedback ThreadAssistantMessage

0.11.29#

Patch Changes#

  • 92dfb0f: fix: update and maintain message levels on reparent

0.11.28#

Patch Changes#

  • fix: useExternalMessageConverter Tool subagent messages support

0.11.27#

Patch Changes#

  • e6a46e4: chore: update deps
  • Updated dependencies [e6a46e4]

0.11.26#

Patch Changes#

  • feat: Add support for nested tool calls in assistant transport. Tool calls can now include a messages field containing nested ThreadMessage[], enabling subagent tool calls to be automatically invoked by useToolInvocations.

0.11.25#

Patch Changes#

  • feat: ToolCallMessagePart.messages for subagent messages

0.11.24#

Patch Changes#

  • 4a1e4cf: Deprecate autoSend and method in favor of send and clearComposer

    <ThreadPrimitive.Suggestion
      prompt="Tell me about React hooks"
      send // same as autoSend=true
      clearComposer // same as method="replace", defaults to true
    />
    

    When send and clearComposer are false, the suggestion is appended to existing user input

0.11.23#

Patch Changes#

  • 3caad00: refactor: rename interrupt -> human for tool input handling
  • Updated dependencies [3caad00]
    • assistant-stream@0.2.33

0.11.22#

Patch Changes#

  • e8d6d7b: feat: revamp Assistant augmentation mechanism
  • e81784b: feat: Tool Call interrupt() resume() API
  • Updated dependencies [e81784b]
    • assistant-stream@0.2.32

0.11.21#

Patch Changes#

  • 7a020fa: fix: disallow branch switching during runs for most runtimes
  • 7a020fa: feat: Add switchBranchDuringRun capability flag to control branch switching while running
  • c5188d9: feat: revamp langgraph thread management integration

0.11.20#

Patch Changes#

  • 94fcc39: feat: Add custom commands support to useAssistantTransportRuntime

    Adds the ability to send custom commands through useAssistantTransportRuntime by:

    • Introducing a global augmentation pattern via Assistant.Commands interface
    • Adding useAssistantTransportSendCommand hook for sending custom commands
    • Supporting custom command types in the transport layer

    Users can now extend the Assistant interface to define their own command types:

    declare global {
      interface Assistant {
        Commands: {
          myCommand: { type: "my-command"; data: string };
        };
      }
    }
    

0.11.19#

Patch Changes#

  • 2c6198a: fix: thread empty should return false while thread is loading
    fix: devtools hydration warning

0.11.18#

Patch Changes#

  • 057cdc7: fix: notify when suggestions change

0.11.17#

Patch Changes#

  • 2bbe604: feat: createMssageConverter toThreadMessages isRunning support

0.11.16#

Patch Changes#

  • cc9945b: feat: MessageProvider API

0.11.15#

Patch Changes#

  • d19ebab: feat(assistant-transport): surface stream errors to caller
  • Updated dependencies [d19ebab]
    • assistant-stream@0.2.29

0.11.14#

Patch Changes#

  • feat: throttle only on stream resume
  • Updated dependencies
    • assistant-stream@0.2.28

0.11.13#

Patch Changes#

  • 3ce485f: feat: add cancel handling and extend message types

0.11.12#

Patch Changes#

  • c4830cc: feat: assistant transport allow passing state in converter

0.11.11#

Patch Changes#

  • fix: make accumulator throttling smoother
  • Updated dependencies
    • assistant-stream@0.2.27

0.11.10#

Patch Changes#

  • 367996e: fix: subscribe to scope identity changes

0.11.9#

Patch Changes#

  • 6c36e21: fix: react 18 compatibility for AssistantProvider API

0.11.8#

Patch Changes#

  • 0f21c70: feat: Attachment support for useAssistantTransportRuntime
  • Updated dependencies [0f21c70]
    • assistant-stream@0.2.26

0.11.7#

Patch Changes#

  • 8f6fb59: feat: useAssistantTransportRuntime (experimental)
  • d318c83: fix: ThreadMessageLike should prefer argsText if provided over json stringifying args

0.11.6#

Patch Changes#

  • 5cdfc9c: fix: TextContentPartProvider not updating when passed text changes

0.11.5#

Patch Changes#

  • 161db8b: fix: newThreadId should be null instead of undefined when empty
  • 161db8b: fix: composer.add-attachment should only fire once
  • 161db8b: feat: add wildcard event support to EventManager
    • Added support for wildcard "*" event subscriptions to listen to all events
    • Wildcard listeners receive events in format: { event: string, payload: any }
    • Updated type definitions to include "*" as a valid event type
    • Modified emit method to trigger both specific and wildcard listeners

0.11.4#

Patch Changes#

  • effd817: fix: race condition in remote threadlist runtime

0.11.3#

Patch Changes#

  • 2e1815e: feat: select attachment by id

0.11.2#

Patch Changes#

  • 2d46069: chore: drop deprecated renamed fields

0.11.1#

Patch Changes#

  • 986b1c0: fix: attachments should not cause infinite rerenders
  • 0534bc5: refactor: reorganize runtime files to prepare for part 2 of runtime rearchitecture
  • Updated dependencies [0534bc5]

0.11.0#

Minor Changes#

  • 5437dbe: feat: runtime rearchitecture (unified state API)

Patch Changes#

  • 39ac2f3: feat: AI SDK v5 import support
  • Updated dependencies [5437dbe]

0.10.50#

Patch Changes#

  • 3498c99: feat: assistant cloud attachments support

0.10.49#

Patch Changes#

  • af2666a: fix: AssistantCloudThreadHistoryAdapter should be stateless

0.10.48#

Patch Changes#

  • ad53f5f: fix: ComposerInput does not auto focus on thread switch when using ExternalStoreRuntime

0.10.47#

Patch Changes#

  • 1f2ad24: fix: reset assistantOptimisticId on import
  • 1f2ad24: fix: drop resetScheduled mechanism

0.10.46#

Patch Changes#

  • 25104d0: feat: MessageRepository should delete dangling messages on resetHead

0.10.45#

Patch Changes#

  • e242a06: feat: AssistantFrameHost, AssistantFrameProvider APIs
  • e242a06: feat: ModelContextRegistry API

0.10.44#

Patch Changes#

  • 13684d5: feat: useExternalStoreRuntime improved reset handling

0.10.43#

Patch Changes#

  • a80dcff: feat: Add *ByIndex primitives for direct indexed access

    Added new primitives that allow rendering individual items by index, improving performance and enabling more granular control:

    • ThreadPrimitive.MessageByIndex - Render a specific message by index
    • MessagePrimitive.PartByIndex - Render a specific message part by index
    • MessagePrimitive.AttachmentByIndex - Render a specific message attachment by index
    • ComposerPrimitive.AttachmentByIndex - Render a specific composer attachment by index
    • ThreadListPrimitive.ItemByIndex - Render a specific thread list item by index

    These primitives provide direct access to individual items without iterating through entire collections, and are now used internally by their parent components (Messages, Parts, Attachments, Items) for improved efficiency.

0.10.42#

Patch Changes#

  • 12e0a77: chore: update deps
  • Updated dependencies [12e0a77]
    • assistant-stream@0.2.23
    • assistant-cloud@0.1.1

0.10.41#

Patch Changes#

  • eda5558: feat: AI SDK custom UIMessage type support

0.10.40#

Patch Changes#

  • 179f8b7: Add format parameter support to assistant-cloud client library

    • Add optional format query parameter to AssistantCloudThreadMessages.list() method
    • Update cloud history adapter to pass format parameter when loading messages
    • Enables backend-level message format conversion when supported by the cloud backend
  • Updated dependencies [179f8b7]

    • assistant-cloud@0.1.0

0.10.39#

Patch Changes#

  • a4389da: feat: AI SDK v5 assistant-cloud thread history support

0.10.38#

Patch Changes#

  • 979ee67: feat: assistant cloud support for AI SDK v5

0.10.37#

Patch Changes#

  • f32b6a4: fix: new thread functionality no longer working with new threadlistruntime

0.10.36#

Patch Changes#

  • ed78407: Modified the detach and cancelRun methods to create a standardized Error object with a JSON-encoded message and a name of "AbortError", improving consistency in how abort reasons are passed and processed.
  • 77ce337: Fix polymorphic ref type error in ComposerInput
  • f59959e: fix: add image message part support and sanitize function

0.10.35#

Patch Changes#

  • fix: threadListItemRuntime Method not implemented
  • feat: support zod v4

0.10.34#

Patch Changes#

  • 0f063e0: chore: update dependencies
  • 5d8b074: feat: MessagePrimitive.PartsGrouedp
  • Updated dependencies [0f063e0]
    • assistant-stream@0.2.22
    • assistant-cloud@0.0.4

0.10.33#

Patch Changes#

  • fix: error on mount of local runtime

0.10.32#

Patch Changes#

  • fix: race condition in generateTitle when a newly running thread is detached

0.10.31#

Patch Changes#

  • fix: maintain chronological order for parts without parentId in PartsGroupedByParentId

0.10.30#

Patch Changes#

  • fix: race condition in RunController when using parentIds
  • 3fb37f9: Fix internal dependency cycles
  • Updated dependencies
    • assistant-stream@0.2.21

0.10.29#

Patch Changes#

  • 1f2fb01: fix: message id not found when using messageRepository in external store

0.10.28#

Patch Changes#

  • e92f7cc: feat: ExternalStoreAdapter.messageRepository API
  • c823efe: feat: add runtime.thread.reset() method for clearing thread

0.10.27#

Patch Changes#

  • f23fdb6: feat: add parent ID grouping for message parts
  • Updated dependencies [f23fdb6]
    • assistant-stream@0.2.20

0.10.26#

Patch Changes#

  • e359ffc: Fix circular dependency in ThreadMessageLike
  • 2561cc0: fix: remove double onAddToolResult call in ExternalStoreThreadRuntimeCore
  • 9793e64: fix: if tool calls have no argsText, assume empty object instead of crashing
  • Updated dependencies [20a4649]
  • Updated dependencies [9793e64]
    • assistant-stream@0.2.19

0.10.25#

Patch Changes#

  • 65b3ff1: chore: update deps
  • 2731323: refactor: rename ContentPart to MessagePart
  • 308afff: feat(react): add isLoading state to ThreadList and Thread runtimes
  • cc9f567: feat: allow forwarding portal props for assistant modal content
  • c380f37: feat: MessageContent.ToolGroup
  • Updated dependencies [65b3ff1]
    • assistant-stream@0.2.18
    • assistant-cloud@0.0.3

0.10.24#

Patch Changes#

  • b65e354: docs: add JSDoc comments
  • 8eda24b: performance: Memoize Array.from() calls in render methods
  • 644abb8: chore: update deps
  • Updated dependencies [644abb8]
    • assistant-stream@0.2.17
    • assistant-cloud@0.0.2

0.10.23#

Patch Changes#

  • 1b77d8a: fix: Add missing useLocalThreadRuntime export

0.10.22#

Patch Changes#

  • 5a86bda: feat(runtime): export useLocalThreadRuntime for more flexibility and runtime customization
  • 7a65c80: feat(assistant-cloud): filesToPdf support
  • Updated dependencies [51b8493]
    • assistant-stream@0.2.15

0.10.21#

Patch Changes#

  • 57b5735: fix: logic for ComposerPrimitive.Input disabled prop

0.10.20#

Patch Changes#

  • 8aa3020: Fix: Export missing adapter primitives
  • f69ca69: fix(react): preserve message metadata in useThreadRuntime().append()

0.10.19#

Patch Changes#

  • d0867eb: fix(message): add missing condition in MessageIf
  • 52e18bc: feat: addToolResponse ToolResponse support
  • 52e18bc: fix: add support for artifact and isError for langgraph tool calls
  • Updated dependencies [52e18bc]
    • assistant-stream@0.2.14

0.10.18#

Patch Changes#

  • 3ed39ef: feat: export MessagePartStatus

0.10.17#

Patch Changes#

  • fix: useInlineRender should correctly handle updates

0.10.16#

Patch Changes#

  • fix: Last is not a partial call attempt 3
  • Updated dependencies
    • assistant-stream@0.2.13

0.10.15#

Patch Changes#

  • fix: add another workaround for Last is not a partial call
  • Updated dependencies
    • assistant-stream@0.2.12

0.10.14#

Patch Changes#

  • fix: Last is not a partial call error
  • Updated dependencies
    • assistant-stream@0.2.11

0.10.13#

Patch Changes#

  • 971b05c: feat: useCloudRuntime (wip)

0.10.12#

Patch Changes#

  • chore: update deps
  • Updated dependencies
    • assistant-stream@0.2.10

0.10.11#

Patch Changes#

  • 6d214b9: add ComposerAttachmentDropzone component to enable file drag and drop

0.10.10#

Patch Changes#

  • 9811ff8: Introduced a new ErrorPrimitive component for displaying error messages in the UI, including ErrorPrimitive.Root and ErrorPrimitive.Message.

    Added MessagePrimitive.Error for rendering error states in messages.

  • 1a4927a: feat: ThreadListItem.detach()

0.10.9#

Patch Changes#

  • fix: correctly forward state updates from ChatModelAdapter

0.10.8#

Patch Changes#

  • 5cb9598: feat(assistant-stream): ObjectStream
  • Updated dependencies [5cb9598]
    • assistant-stream@0.2.7

0.10.7#

Patch Changes#

  • 621f35a: fix: patch Safari/iOS attachment issue by adding/removing input element to DOM
  • Updated dependencies [0809c9f]
    • assistant-stream@0.2.6

0.10.6#

Patch Changes#

  • e63d574: feat: MessagePrimitive.If last

0.10.5#

Patch Changes#

  • e9f8e7e: feat: tighten tool args type to be object
  • c4c60cf: fix: server-side tool results should be forwarded to StreamCallController
  • 73a6ff1: feat: Tool.type
  • Updated dependencies [c4c60cf]
  • Updated dependencies [73a6ff1]
    • assistant-stream@0.2.5

0.10.4#

Patch Changes#

  • 98a680e: fix: allow import from route handlers
  • 98a680e: chore: update deps
  • Updated dependencies [98a680e]
    • assistant-stream@0.2.4

0.10.3#

Patch Changes#

  • 30ae924: fix: disabled tools should still execute if invoked

0.10.2#

Patch Changes#

  • fix: ESM without bundler compat

0.10.1#

Patch Changes#

  • fix: correctly include Typescript declarations

0.10.0#

Patch Changes#

  • 557c3f7: build: drop CJS builds

0.9.6#

Patch Changes#

  • chore: update deps

0.9.5#

Patch Changes#

  • chore: bump assistant-stream dependency
  • 1ad0696: feat: assistant-ui update CLI command

0.9.4#

Patch Changes#

  • c77ef43: feat: assistant-ui update CLI command

0.9.3#

Patch Changes#

  • 62c2af7: feat: tool.streamCall API
  • b9c731a: chore: update dependencies

0.9.2#

Patch Changes#

  • 553bdff: feat: early return ChatModelAdapter.run on cancellation
  • c0c9422: feat: useToolArgsFieldStatus
  • 675fb20: feat: export types from external-store
  • 4e86ab4: fix: should allow sending assistant messages from the composer
  • e893985: fix: allow useMessagePartText on reasoning parts
  • 0500584: fix: make addResult typesafe

0.9.1#

Patch Changes#

  • chore: update deps

0.9.0#

Patch Changes#

  • afae5c9: refactor!: edge package split
  • Updated dependencies [1f65c94]
  • Updated dependencies [8df35f6]
  • Updated dependencies [476cbfb]
    • assistant-stream@0.0.33

0.8.20#

Patch Changes#

  • Updated dependencies [545a17c]
    • assistant-stream@0.0.32

0.8.19#

Patch Changes#

  • 93c3eb4: fix: drop ToolResponseBrand
  • Updated dependencies [93c3eb4]
    • assistant-stream@0.0.31

0.8.18#

Patch Changes#

  • a22bc7a: refactor: merge setResult and setArtifact to setResponse
  • 39aecd7: chore: update dependencies
  • Updated dependencies [a22bc7a]
  • Updated dependencies [39aecd7]
    • assistant-stream@0.0.30

0.8.17#

Patch Changes#

  • feat: expose assitant-stream ToolResponse API
  • Updated dependencies
    • assistant-stream@0.0.29

0.8.16#

Patch Changes#

  • 40579cd: feat: ToolResponse support
  • Updated dependencies [40579cd]
    • assistant-stream@0.0.28

0.8.15#

Patch Changes#

  • fix: assistant-stream appendText must only append to the very last part
  • Updated dependencies
    • assistant-stream@0.0.27

0.8.14#

Patch Changes#

  • feat: update resumeRun signature

0.8.12#

Patch Changes#

  • c4d7b29: feat: tool call artifacts
  • 0962274: feat: ThreadRuntime.unstable_resumeRun
  • Updated dependencies [c4d7b29]
    • assistant-stream@0.0.26

0.8.11#

Patch Changes#

  • Updated dependencies
    • assistant-stream@0.0.25

0.8.10#

Patch Changes#

  • Updated dependencies
    • assistant-stream@0.0.24

0.8.9#

Patch Changes#

  • fix: adjust message status even if no message-finish event is emitted

0.8.8#

Patch Changes#

  • 439ae67: fix: properly emit tool-call args-text finish
  • Updated dependencies [439ae67]
    • assistant-stream@0.0.23

0.8.7#

Patch Changes#

  • ecc6afd: feat: ThreadHistoryAdapter.resume
  • b07603d: feat: assistant-stream rewrite
  • b07603d: feat: use assistant-stream
  • Updated dependencies [b07603d]
    • assistant-stream@0.0.22

0.8.6#

Patch Changes#

  • f8a157a: Add support for dynamic headers in EdgeChatAdapter
  • 2497388: fix: useAssistantInstructions should correctly update on disabled change

0.8.5#

Patch Changes#

  • chore: update deps

0.8.4#

Patch Changes#

  • 4f22af9: fix: infinite rerender bug with useThread

0.8.3#

Patch Changes#

  • 2e299b6: chore: update typescript

0.8.2#

Patch Changes#

  • feat: source message parts

0.8.1#

Patch Changes#

  • ba4a282: fix: cloud env variable loading

0.8.0#

Breaking changes#

  • pre-styled UI components have moved to @assistant-ui/react-ui
  • run npx assistant-ui upgrade to update your codebase
  • manual upgrade: change styled component imports from @assistant-ui/react to @assistant-ui/react-ui (and same with markdown)
  • manual upgrade: change styled component imports from @assistant-ui/react to @assistant-ui/react-ui (and same with Markdown)

0.7.91#

Patch Changes#

  • feat: dispatch events for edit action; allow text area

0.7.90#

Patch Changes#

  • feat: makeAssistantVisible editable

0.7.89#

Patch Changes#

  • 5540aae: feat: local runtime SuggestionAdapter

0.7.88#

Patch Changes#

  • a36fd9e: fix: bind reset method

0.7.87#

Patch Changes#

  • e01b6cd: fix: remove reset() method on local-runtime
  • 2dd5abc: feat: makeAssistantReadable
  • 4531190: feat: ExportdMessageRepository.fromArray
  • 400ff97: feat.import() should reset the MessageRepository

0.7.86#

Patch Changes#

  • 4685652: feat: useToolArgsFieldStatus

0.7.85#

Patch Changes#

  • 3454871: fix: Vite bundler compat

0.7.84#

Patch Changes#

  • fix: pin nanoid version for CJS compat
  • Updated dependencies
    • assistant-stream@0.0.21

0.7.83#

Patch Changes#

  • 54b631c: chore: update README

0.7.82#

Patch Changes#

  • 934ee4b: feat: anonymous login and auto-config for cloud

0.7.81#

Patch Changes#

  • 7f7ab5e: refactor: assitant-stream API
  • Updated dependencies [7f7ab5e]
    • assistant-stream@0.0.20

0.7.80#

Patch Changes#

  • fix: relax ReadonlyJSONObject requirement on tool/toolUI

0.7.79#

Patch Changes#

  • fix: argsText parsing

0.7.78#

Patch Changes#

  • fix: result sometimes set to undefined

0.7.77#

Patch Changes#

  • f2a1e86: feat: unstable_humanToolNames

0.7.76#

Patch Changes#

  • fix: README

0.7.75#

Patch Changes#

  • 87fa024: fix: remove tailwind from peerdeps

0.7.74#

Patch Changes#

  • 61f278b: fix: drop tailwind peer dependency

0.7.73#

Patch Changes#

  • fix: return from createMessageConverter
  • 86ba433: fix: ToolMessagePart.args should never be null

0.7.72#

Patch Changes#

  • 797ce9c: fix: ToolMessagePart.args should never be null

0.7.71#

Patch Changes#

  • 72e66db: chore: update dependencies
  • Updated dependencies [72e66db]
    • assistant-stream@0.0.19

0.7.70#

Patch Changes#

  • 55a9cb2: fix: runConfig for reload / edits
  • 2bc6781: feat: send toolCallId to the exeucte callback
  • 2bc6781: feat: Tool.experimental_onSchemaValidationError
  • 9fefc9d: feat: ThreadViewportContext & multiple renders of the same thread support

0.7.69#

Patch Changes#

  • a7a871e: feat: make ThreadPrimitive.Suggestion method optional
  • a7a871e: fix: ThreadPrimitive.Suggestion no longer clears the composer
  • a7a871e: feat: expose the useThreadViewportAutoScroll in the API

0.7.68#

Patch Changes#

  • eb4e13c: feat: useExternalMessageConverter megeConfig.joinStrategy

0.7.67#

Patch Changes#

  • ddf468e: fix: import path

0.7.66#

Patch Changes#

  • f4d71da: feat: Edge Runtime onResponse/onError/onfinish, sendExtraMessageFields, unstable_AISDKInterop=v2 support
  • 16cd124: feat(local-runtime): native support for AssistantCloud

0.7.65#

Patch Changes#

  • a07d8c1: fix: thread auto-scroll reliability

0.7.64#

Patch Changes#

  • 6703842: feat: codemod to migrate to @assistant-ui/react-ui
  • 79f7120: feat: createMessageConverter API

0.7.63#

Patch Changes#

  • 843047d: feat(thread-list): forward model context to thread runtimes

0.7.62#

Patch Changes#

  • 7e5f127: fix: useSmooth unnecessary re-renders

0.7.61#

Patch Changes#

  • bd78a70: feat: ThreadListPrimitive.Root
  • 9ea8100: feat: ThreadMessageLike optional toolCallId + args

0.7.60#

Patch Changes#

  • 246ce4e: fix: export getExternalStoreMessages

0.7.59#

Patch Changes#

  • 8ec1f07: feat: AssistantCloudThreadHistoryAdapter
  • 4f5d77f: feat: ToolCallMessagePart.args should be JSONObject
  • 8ec1f07: feat: auto-inject history adapter in local runtime

0.7.58#

Patch Changes#

  • 02996f9: fix: support AISDKInterop + sendMessageId for human+system messages

0.7.57#

Patch Changes#

  • 103efee: fix: mark ChatAdapter types as readonly
  • 60bb6ff: fix: memoize MessageRepository.getMessages()

0.7.56#

Patch Changes#

  • dba4dde: feat(ai-sdk): message.metadata.annotations
  • efd60fe: fix(ai-sdk): onSwitchToThread

0.7.55#

Patch Changes#

  • 0bf5082: fix: tailwindcss plugin crashes without config

0.7.54#

Patch Changes#

  • 6cb7d10: refactor: rename ModelConfig to ModelContext
  • c302933: feat: convertExternalMessages

0.7.53#

Patch Changes#

  • 7618bf3: feat: AI SDK DataStream ReasoningDelta, StartStep support

0.7.52#

Patch Changes#

  • fix: excessive number of classes included via tailwindcss plugin

0.7.51#

Patch Changes#

  • fix: crash when message part is empty

0.7.50#

Patch Changes#

  • fix: properly forward unstable_shouldContinueIgnoreToolNames

0.7.49#

Patch Changes#

  • feat(local-runtime): add temporary shouldContinueIgnoreToolNames override

0.7.48#

Patch Changes#

  • fix: crash

0.7.47#

Patch Changes#

  • a3c6c1a: feat: ensure runtime methods are bound to the object
  • a76ea0e: feat: AttachmentAdapter file upload progress update support via generator add callback
  • a3c6c1a: feat: useRuntimeState API

0.7.46#

Patch Changes#

  • fix: improved interrupt+Command support
  • feat: MessagesFooter UI
  • 2713487: feat: styled UI assistant message footer

0.7.45#

Patch Changes#

  • 9934aef: feat(cloud-threadlist): auto initialize threads
  • 3a8b55a: feat: styled UI assistant message footer

0.7.44#

Patch Changes#

  • 2f44e9e: refactor: move switchToThread / switchToNewThread to runtime.threads
  • 2f44e9e: refactor: rename runtime.threadList to runtime.threads
  • 2f44e9e: refactor: drop CloudThreadListItemRuntime
  • 2f44e9e: feat: add threads.getById and threads.main
  • 2f44e9e: feat: ThreadListItemRuntime.initialize()

0.7.43#

Patch Changes#

  • feat: reverse order of threads in useRemoteThreadListRuntime

0.7.42#

Patch Changes#

  • 9c3961d: fix: event subscriptions triggering on threadList changes

0.7.41#

Patch Changes#

  • 08de9c9: fix: RemoteThreadList should not return an iterator

0.7.40#

Patch Changes#

  • feat: export useRemoteThreadListRuntime

0.7.39#

Patch Changes#

  • 0979334: feat(local-runtime): New ThreadList items should appear at the top of the list
  • 22272e6: chore: update dependencies
  • Updated dependencies [b44a7ad]
  • Updated dependencies [22272e6]
    • assistant-stream@0.0.18

0.7.38#

Patch Changes#

  • 5794b1b: feat: CreateStartRunConfig

0.7.37#

Patch Changes#

  • 799dc79: feat: AppendMessage.sourceId
  • 799dc79: feat: StartRunConfig.sourceId

0.7.36#

Patch Changes#

  • 34d2915: feat: widen initialMessages type to ThreadMessageLike
  • 4f3834a: refactor: deprecate UIMessagePart
  • b8b11d3: feat: FileMessagePart
  • 889a55e: fix: attachment filename should never overflow
  • a7d9e41: feat: ComposerRuntime.unstable_on("attachment_add", ...)

0.7.35#

Patch Changes#

  • 345f3d5: chore: update dependencies
  • 345f3d5: fix: import errors in react server environments
  • 2846559: feat: allow selecting multiple files as attachments

0.7.34#

Patch Changes#

  • 9a3dc93: fix(external-store): metadata & attachments support
  • 4c2bf58: chore: update dependencies

0.7.33#

Patch Changes#

  • bb47b90: fix: invalid JSON in argsText should be gracefully handled

0.7.32#

Patch Changes#

  • feat: MessagePrimitive.tools.Override

0.7.31#

Patch Changes#

  • fix: data results should be forwarded via LocalThreadRuntime

0.7.30#

Patch Changes#

  • 982a6a2: chore: update dependencies

0.7.29#

Patch Changes#

  • 75a274f: feat: AssistantRuntimeCore.RenderComponent
  • dcf51cb: fix: do not throw on AI SDK annotation packets
  • 9ad9e75: fix: mark arrays in message types as readonly
  • 75a274f: refactor: drop AssistantRuntimeCore.Provider due to causing app rerenders on runtime switch
  • 65de5d6: feat: message.metadata.unstable_data

0.7.28#

Patch Changes#

  • a8ac203: feat: export useThreadListItemRuntime

0.7.27#

Patch Changes#

  • 528cfd3: feat: ExternalStoreAdapter.unstable_Provider
  • 3c70ea1: feat: allow customizing thread max width

0.7.26#

Patch Changes#

  • 6a17ec2: feat: useAssistantInstructions disable support

0.7.25#

Patch Changes#

  • 798e9f3: fix: AttachmentRemove should not trigger AttachmentPreviewDialog
  • 37e1abc: feat: ComposerRuntime.clearAttachments
  • d6b3b79: feat: useRemoteThreadListRuntime

0.7.24#

Patch Changes#

  • fix: ComposerRuntime.send() should not reset role or runConfig

0.7.23#

Patch Changes#

  • feat(edge-runtime): pass RunConfig to backend

0.7.22#

Patch Changes#

  • feat: RunConfig

0.7.21#

Patch Changes#

  • feat: Composer.unstable_on("send", callback)

0.7.20#

Patch Changes#

  • 2c7dec0: feat: useAssistantTool allow disabling tools

0.7.19#

Patch Changes#

  • ec3b8cc: chore: update dependencies

0.7.18#

Patch Changes#

  • 1b16dce: fix: thread initialization
  • b0f309a: feat: allow specifying Empty component in thread-config

0.7.17#

Patch Changes#

  • fix: toLanguageModelMessages should include attachments

0.7.16#

Patch Changes#

  • fix: ensure message status is set on runResultStream flush

0.7.15#

Patch Changes#

  • fix: toolResultStream should support JSONSchema params

0.7.14#

Patch Changes#

  • fix: assistantDecoderStream should end current tool call on flush

0.7.12#

Patch Changes#

  • 4c54273: chore: update dependencies
  • 4c54273: fix: initialize thread on import

0.7.11#

Patch Changes#

  • 0f88efb: fix: external store thread list should not crash

0.7.10#

Patch Changes#

  • 1eab7b4: refactor: ThreadList

0.7.9#

Patch Changes#

  • 2276e57: fix: cjs builds
  • e8752ac: fix: ThreadList a11y improvements

0.7.8#

Patch Changes#

  • 589d37b: feat: ThreadList / ThreadListItem UI
  • 2112ce8: chore: update dependencies

0.7.7#

Patch Changes#

  • 10d70db: fix: remove console.log
  • c3027a0: fix: disallow nested ThreadConfigs

0.7.6#

Patch Changes#

  • 933b8c0: chore: update deps
  • 09a2a38: fix: TextMessagePartProvider should support MessagePartRuntime.getState()

0.7.5#

Patch Changes#

  • c59d8b5: chore: update dependencies

0.7.4#

Patch Changes#

  • 5462390: fix: Thread.Messages AssistantEditComposer support
  • 0fb80c1: feat: ThreadConfig.UserMessage / AssistantMessage / EditComposer

0.7.3#

Patch Changes#

  • 0dcd9cf: feat: mark message types as readonly

0.7.2#

Patch Changes#

  • 7fa9a1b: feat: ThreadMessageLike metadata support
  • 1a1f4a5: feat: message metadata for all message types

0.7.1#

Patch Changes#

  • c2f75e5: feat: ThreadListRuntime API types

0.7.0#

Breaking Changes#

  • c6e886b: refactor!: drop deprecated features

Patch Changes#

  • 2912fda: feat: ThreadListItemPrimitive

0.5.100#

Patch Changes#

  • b5f92fe: fix(external-store): crash on cancel when using separate converter, fix branching

0.5.99#

Patch Changes#

  • cdcfe1e: feat: ThreadListItemPrimitive (wip)
  • cdcfe1e: fix: add React 19 RC to peerDeps
  • 94feab2: feat: ComposerState.role / ComposerRuntime.setRole
  • 472c548: feat: ThreadListPrimitive
  • 14da684: feat: AppendMessage.startRun flag
  • 1ada091: chore: update deps

0.5.98#

Patch Changes#

  • ff5b86c: build: refactor build script into @assistant-ui/tsbuildutils
  • ff5b86c: fix: better ESM compatibility
  • ff5b86c: chore: update deps

0.5.97#

Patch Changes#

  • 9a9c01d: feat(edge-runtime): add unstable_AISDKInterop flag

0.5.96#

Patch Changes#

  • fix: properly pass initialMessages to LocalRuntime

0.5.95#

Patch Changes#

  • fix: include generated css files in bundle

0.5.94#

Patch Changes#

  • fix: toMessagePartStatus support for parallel tool calls

0.5.93#

Patch Changes#

  • d2375cd: build: disable bundling in UI package releases

0.5.92#

Patch Changes#

  • f6d197a: feat: Edge Runtime Server Accessible Ids (temp)

0.5.91#

Patch Changes#

  • 56f80fa: fix: tailwind plugin turbopack interop

0.5.90#

Patch Changes#

  • 2090544: fix: attachments infinite rerender bug
  • be04b5b: feat: Unstable_AudioMessagePart (wip)
  • 2090544: fix: Attachment preview accessibility
  • fb32e61: chore: update deps
  • fb32e61: feat: react-19 support

0.5.89#

Patch Changes#

  • fd9ff67: fix(local-runtime): update capabilities on initial render

0.5.88#

Patch Changes#

  • 0afecda: fix(ai-sdk): server-side maxSteps interop

0.5.87#

Patch Changes#

  • b38165d: feat: export useAttachmentRuntime, useAttachment, FeedbackAdapter
  • a1bfd26: fix(ai-sdk): DataStream interop without tool call streaming
  • b38165d: feat(ai-sdk): Adapters support (attachment, feedback, speech, threadManager)

0.5.86#

Patch Changes#

  • fix: do not cache adapter in useEdgeRuntime

0.5.85#

Patch Changes#

  • 3a602b9: fix: correctly handle new thread creation

0.5.84#

Patch Changes#

  • ba5116f: feat: useInlineRender hook

0.5.83#

Patch Changes#

  • c38a018: feat: ThreadListRuntime

0.5.82#

Patch Changes#

  • 0edadd1: feat: useThreadModelConfig API
  • 1aeda53: feat: Runtime.path API
  • 0c8277e: feat: MessageRuntime.unstable_getCopyText API
  • 91d3951: feat: MessageRuntime.getMessagePartByToolCallId
  • cf6861c: refactor!: simplify SpeechSynthesisAdapter to accept a text string
  • 7c76939: feat: ThreadRuntime.getMesssageById

0.5.79#

Patch Changes#

  • feat: allow out of order tool args streaming

0.5.78#

Patch Changes#

  • dba0082: fix: border should apply to all aui-root children
  • b182ea5: feat: Events API (experimental)

0.5.77#

Patch Changes#

  • 0a3bd06: feat: Attachment image thumbnail and previews

0.5.76#

Patch Changes#

  • c3806f8: fix: do not export internal Runtime types
  • 899b963: refactor: add BaseThreadRuntimeCore class
  • 899b963: feat: work towards Edit Composer attachment support
  • 899b963: refactor: remove composerState.attachmentAccept, add composerRuntime.getAttachmentAccept()
  • 8c80f2a: feat: MessageState.submittedFeedback state
  • 809c5c1: feat: New Attachment UI

0.5.75#

Patch Changes#

  • 31702b2: feat: MessageRuntime.stopSpeaking MessageState.speech state
  • 44bfecd: refactor: move primitive types under the same namespace as the primitive components

0.5.74#

Patch Changes#

  • 3d31f10: refactor: deprecate primitive-hooks
  • cf872da: feat: AttachmentPrimitive

0.5.73#

Patch Changes#

  • fb46305: chore: update dependencies
  • e225116: feat(ui): add component override option for ThreadWelcome
  • 0ff22a7: feat: switch to DataStream transfer protocol for edge runtime
  • 378ee99: refactor: rename maxToolRoundtrips to maxSteps
  • 378ee99: feat: server-side tool roundtrips support

0.5.72#

Patch Changes#

  • d0db602: fix: useDangerousInBrowserRuntime correct options forwarding

0.5.71#

Patch Changes#

  • 55942d8: fix: useMessagePartText backwards compat type
  • e455aff: feat: FollowupSuggestions
  • f7c156b: feat: mark new runtime API methods as stable
  • f6a832e: chore: update dependencies
  • 2b7c6fe: refactor: define interface types for the new runtime API

0.5.70#

Patch Changes#

  • 3df0061: fix: TextMessagePartProvider missing fields

0.5.69#

Patch Changes#

  • 46f91c2: feat(langgraph): allow disabling autocancellation of pending tool calls

0.5.68#

Patch Changes#

  • 96b9d1f: feat: new Runtime API part 8
  • 9fd85da: fix: ensure branch picker is supported before showing it
  • d8bd40b: chore: update dependencies
  • 42156cf: refactor: drop ReactThreadRuntimeCore, unstable_synchronizer

0.5.67#

Patch Changes#

  • cfa8844: feat: useComposerRuntime hook
  • 70720ba: feat: lift EditComposer to runtime layer

0.5.66#

Patch Changes#

  • 325b049: fix: include attachments prop in the useExternalMessageConverter
  • df9ec8f: feat: new Runtime API rollout part 2
  • 3f549b2: refactor: rename internal export

0.5.65#

Patch Changes#

  • 27208fb: fix: only include "use client" banner in ESM builds

0.5.64#

Patch Changes#

  • ed24305: fix: add newline after "use client" for .js builds

0.5.63#

Patch Changes#

  • c438773: feat: allow disabling ComposerInput keyboard shortcuts
  • e1ae3d0: chore: update dependencies

0.5.62#

Patch Changes#

  • cd1b286: fix: BranchPicker styles

0.5.61#

Patch Changes#

  • 88957ac: feat: New unified Runtime API (part 1/n)
  • 1a99132: feat: ThreadRuntime.Composer subscribe
  • 3187013: feat: add status, attachments and metadata fields to all messages

0.5.60#

Patch Changes#

  • 926dce5: feat: Feedback Primtives, UI and Adapter
  • 155d6e7: chore: update dependencies
  • f80226f: feat: ThreadActions.getModelConfig

0.5.59#

Patch Changes#

  • 0f547a9: fix: useSmooth should work inside TextMessagePartProvider

0.5.58#

Patch Changes#

  • 6507071: fix: TextMessagePartProvider text streaming support
  • 6507071: feat: TextMessagePartProvider isRunning

0.5.57#

Patch Changes#

  • 745d6e1: fix(runtimes/external-store): switch to thread should correctly copy the entire store
  • 745d6e1: fix: only deprecate the null usage of switchToThread

0.5.56#

Patch Changes#

  • e4863bb: feat(runtimes/external): add onSwitchToNewThread callback
  • e4863bb: feat: add attachmentAccept to ThreadComposer

0.5.55#

Patch Changes#

  • b0a22e3: feat: runtime.switchToNewThread()
  • 11ca453: refactor: drop useModelConfig Context - use useAssistantActions instead

0.5.54#

Patch Changes#

  • 0f99aa6: feat: New Context API
  • c348553: chore: update dependencies

0.5.53#

Patch Changes#

  • f0f7497: feat: MessageContent Empty should be displayed for empty messages with empty text part
  • 8555685: feat: allow editing assistant/system messages
  • 892b019: fix: Empty should default to the provided Text component

0.5.52#

Patch Changes#

  • c0f975a: feat: TextMessagePartProvider

0.5.51#

Patch Changes#

  • 164e46c: feat: ignore edits with text part unchanged
  • 5eccae7: fix: createActionButton disabled handling

0.5.50#

Patch Changes#

  • 04f6fc8: chore: update deps

0.5.49#

Patch Changes#

  • 7ed296b: fix: make AppendMessage attachments field optional for now

0.5.48#

Patch Changes#

  • 25a711d: fix: user message action bar css

0.5.47#

Patch Changes#

  • a81b18f: feat: ComposerPrimitive.AddAttachment
  • 44d08bd: feat: styled components for attachments
  • b48fbcc: feat: UserMessageAttachment UI
  • cc5e7d4: perf: memoize tool Ul components
  • bdd3084: feat: allow runtimes to signal support for attachments
  • 7dcab47: fix: message copy handling for runtimes
  • a22e6bb: feat: AttachmentAdapter.accept allow attachment adapters to specify supported file types
  • 9e00772: feat: add composer attachments state
  • d2580d3: feat: SimpleImageAttachmentAdapter
  • c845fcf: feat: allow sending attachment-only messages
  • 3ba193e: feat: AttachmentContext
  • d2580d3: feat: SimpleTextAttachmentAdapter
  • 3b0f20b: feat: MessagePrimitive.Attachments
  • 3ba193e: feat: ComposerPrimitive.Attachments
  • d2580d3: feat: CompositeAttachmentAdapter
  • 44d08bd: feat: Edge/Local runtime AttachmentAdapter support

0.5.46#

Patch Changes#

  • 0a4b8d7: feat: adjust the override order of tool UIs
  • 34ad491: feat: ThreadConfig.ToolFallback
  • 34ad491: feat: ThreadConfig.tools
  • 0a4b8d7: fix: tool UI fallback should not override makeAssistantToolUI definitions

0.5.45#

Patch Changes#

  • fb8e58f: feat: add thread runtime threadId

0.5.44#

Patch Changes#

  • b2801ce: feat(styling): cursor-not-allowed when composer input is disabled
  • 0aa4e6b: fix: use-smooth-state should notdesync

0.5.43#

Patch Changes#

  • 3962831: feat: useExternalMessageConverter API
  • 85defe1: feat: allow string content in ThreadMessageLike
  • 6f7ccf7: feat: add toolName to addToolResult callback
  • 6f7ccf7: feat: thread converter should ignore empty text parts

0.5.42#

Patch Changes#

  • c8b98b6: feat: animate composer border color on focus
  • 800eb9e: fix: error on switchToThread / switchToNewThread
  • 8768c67: feat: support shadcn scroll area

0.5.41#

Patch Changes#

  • f526279: feat: SpeechSyntehsis
  • e8aa697: refactor: remove unsupported external runtime onCopy callback

0.5.40#

Patch Changes#

  • 4333382: fix(runtime/edge): handle maxToolRoundtrips

0.5.39#

Patch Changes#

  • ab1160c: fix: switchToThread should persist maxToolRoundtrips

0.5.38#

Patch Changes#

  • 554a423: chore: update deps

0.5.37#

Patch Changes#

  • 60c0fdc: fix: remove Composer focus ring when using @tailwindcss/forms
  • edbab24: feat(runtimes/local): reset thread

0.5.36#

Patch Changes#

  • edb5a16: feat: DangerousInBrowserRuntime
  • f8e2cf1: fix: @tailwindcss/forms input border

0.5.35#

Patch Changes#

  • 53cf707: fix: do not require content in ChatModelRunResult

0.5.34#

Patch Changes#

  • 3178788: feat: custom AssistantMessage metadata

0.5.33#

Patch Changes#

  • c154b8f: feat(runtime/edge): allow extra headers & body

0.5.32#

Patch Changes#

  • cd70d4f: refactor: rewrite ai-sdk integration to use external runtime

0.5.31#

Patch Changes#

  • 34621cc: feat(runtimes/edge): getEdgeRuntimeResponse API
  • 2df3e73: fix: CircleStopIcon invisible on safari
  • 1b9ded0: feat: lift thread composer state to ThreadRuntime.Composer

0.5.30#

Patch Changes#

  • ccf5fef: fix: do not capture enter key during IME composition events

0.5.29#

Patch Changes#

  • 556001f: chore: update deps
  • 556001f: feat: tool call cancellation support

0.5.28#

Patch Changes#

  • 915b5b7: feat: expose streamUtils
  • 9a55735: chore: update deps

0.5.27#

Patch Changes#

  • dbf1042: fix: minor styling fixes
  • dbf1042: chore: update deps

0.5.26#

Patch Changes#

  • 440b051: fix: sending messages when thread is empty

0.5.25#

Patch Changes#

  • 0445cdf: fix: disallow sending new messages when last message is in requires-action state
  • 0445cdf: refactor: remove Runtime.isRunning / auto-infer isRunning state from last message state
  • 71f4b77: feat: update Tooltip styles

0.5.24#

Patch Changes#

  • a7e8ef6: refactor: rewrite external store sync
  • 6629dd8: fix: render loop if a message ID is used twice

0.5.23#

Patch Changes#

  • f83e4d1: feat: LocalRuntime export / import

0.5.22#

Patch Changes#

  • 134d39e: fix: undo moving internal utilities to /react/internal

0.5.20#

Patch Changes#

  • de04d92: feat: loading status & smooth streaming interop
  • 3cc67f2: refactor: move internal utilities to @assistant-ui/react/internal

0.5.19#

Patch Changes#

  • 2534938: feat: Message.Content Empty component

0.5.18#

Patch Changes#

  • 0302235: fix(external-store): add initial messages to message repository

0.5.17#

Patch Changes#

  • 4b4f9c8: feat(local-runtime): AsyncGenerator support

0.5.16#

Patch Changes#

  • 9dc942f: feat: useThread.isDisabled flag

0.5.15#

Patch Changes#

  • 0418c73: fix(runtimes/external-store): invalidate cache when isRunning changes during autoStatus

0.5.12#

Patch Changes#

  • 8688a9f: feat(runtimes/external-store): loosen the return type for convertMessage callback

0.5.11#

Patch Changes#

  • fc6bc35: feat: initialMessages SSR support

0.5.10#

Patch Changes#

  • 1c6bf72: feat(tailwindcss): allow customizing colors directly in tailwind config

0.5.9#

Patch Changes#

  • a216fbf: chore: update deps

0.5.6#

Patch Changes#

  • e5e6b20: feat(runtime): BranchPicker feature detection

0.5.5#

Patch Changes#

  • f26783a: feat(ui): allow ReactNode in SuggestionConfig.text

0.5.4#

Patch Changes#

  • f2d7590: fix(rsc): hide copy message button

0.5.3#

Patch Changes#

  • 1acdf45: feat: external store runtime

0.5.2#

Patch Changes#

  • 2d7a8bd: fix: markdown loading indicator
  • 2d7a8bd: fix: ScrollToBottom visbility bug
  • 2d7a8bd: fix: text message part data-status field

0.5.1#

Patch Changes#

  • ee38c0c: feat: message status v2
  • ee38c0c: fix(runtimes/edge): wait for serverside tool call results before reporting onFinish
  • 2baa898: chore: v5

0.4.6#

Patch Changes#

  • bc77b4f: feat(runtimes/edge): dynamic model creator functions
  • e220617: feat(runtimes/edge): client side API key, model name, model parameters specification

0.4.4#

Patch Changes#

  • 998081b: fix: reduce specificity of built-in CSS styles

0.4.3#

Minor Changes#

  • feat: scrolling to bottom during streaming is now instant
  • fix: useSmooth gets triggered during branch switch

0.4.2#

Minor Changes#

  • fix: issue with forwarding props to primitives

0.4.1#

Minor Changes#

  • fix: useSmooth scrolling performance in dev mode

0.4.0#

Minor Changes#

  • e0e51cf: refactor!: Rename AssistantMessage to ThreadAssistantMessage
  • e0e51cf: refactor!: Rename UserMessage to ThreadUserMessage
  • 679cd54: feat: system message support

Patch Changes#

  • c7ba6a2: feat: Edge Runtime API
  • e0e51cf: feat: add styled UI components

0.3.5#

Patch Changes#

  • ef25706: feat: Code Header and Syntax Highlighter support

0.3.3#

Patch Changes#

  • b5aa29f: feat: smooth streaming by default

0.3.2#

Patch Changes#

  • 1a8919b: feat: smooth text streaming

0.3.1#

Patch Changes#

  • 05fd5d6: feat: runtime capabilities API

0.3.0#

Minor Changes#

  • 5b68f4a: refactor!: drop Message.InProgress support

Patch Changes#

  • 3dd7384: fix: better message hover state tracking
  • 23f474e: fix: remove warning about useLayoutEffect in SSR

0.2.4#

Patch Changes#

  • c373fc9: feat: AssistantModalPrimitive.Anchor

0.2.3#

Patch Changes#

  • be2c26b: fix: Vercel useAssistant BranchPicker duplicates bug

0.2.2#

Patch Changes#

  • 62e9f19: feat: AssistantRuntime newThread
  • 611fdcc: feat: useAssistantActions
  • ca0eaa1: feat: Programmatic Interactions API

0.2.1#

Patch Changes#

  • d52c345: feat: Primitive Prop Types

0.2.0#

Minor Changes#

  • de20b1c: feat!: MessagePartText is now a

    element

  • 2ab2cab: feat!: experimental features are now marked as stable

0.1.12#

Patch Changes#

  • 904556d: feat: ComposerContext focus() API
  • 33ae8f9: feat: AssistantModalPrimitive

0.1.11#

Patch Changes#

  • fd6a202: feat: Primitive Hook useThreadViewportAutoScroll
  • c2a6b22: fix: improved Viewport autoscroll handling
  • c2a6b22: fix: more reliable escape hotkey handling
  • c2a6b22: feat: add "role" field to AppendMessage

0.1.10#

Patch Changes#

  • 269b32f: feat: Primitive Hooks API
  • 2867923: feat: Composer API Docs

0.1.9#

Patch Changes#

  • ab16a99: feat: useMessageUtils Context API
  • ab16a99: feat: useThreadActions Context API
  • ab16a99: fix: make all Context APIs read-only

0.1.8#

Patch Changes#

  • 8513f9a: feat: ToolUI addResult API

0.1.7#

Patch Changes#

  • 36f3a1f: fix: add DisplayName to primitive components for better error logs
  • 36f3a1f: chore: upgrade to radix-ui 1.1
  • 36f3a1f: chore: update dependencies

0.1.6#

Patch Changes#

  • a6769d5: feat: MessagePartComponent types
  • 52236ab: feat: new default chat bubble design

0.1.5#

Patch Changes#

  • 671dc86: feat: Tool Render functions

0.1.4#

Patch Changes#

  • a73b50f: fix: ComposerRoot onSubmit should be called when using keyboard shortcuts

0.1.3#

Patch Changes#

  • 6e9528d: build: add changesets
  • 6e9528d: feat: add useAssistantTool API