@assistant-ui/core#
0.2.4#
Patch Changes#
-
#4077
221d320- fix(core|MessageParts,GroupedParts): key part fibers by absolute part index (@Yonom)Inside
MessagePrimitive.GroupedPartsand the auto-grouped
toolGroup/reasoningGroupranges ofMessagePrimitive.Parts,
leaf fibers were keyed by their structural position in the
group tree rather than by the underlying part's absolute index.
When the parts list reshaped (e.g., a thread switch with a
different group layout), React reused the same fiber at a given
structural slot but with a differentindexprop, keeping the
prior tap subscription alive against an index that may now point
at a different part or be out of range — surfacing as
tapClientLookup: Index N out of boundsor
MessagePartText can only be used inside text or reasoning message parts. Keying by part index instead causes React to unmount the
fiber when the part underneath actually changes.
0.2.3#
Patch Changes#
-
#4023
94548fa- docs: add JSDoc for core runtime and assistant tool APIs (@AVGVSTVS96) -
#3513
8b6fc88- fix: guardnavigator.clipboardavailability and swallow write rejections inActionBarPrimitive.Copy. Previously, copy clicks in SSR, non-HTTPS contexts, or older browsers without the Clipboard API threw aReferenceError, and permission-denied rejections surfaced as unhandled promise rejections. The web copyToClipboard implementation in@assistant-ui/reactnow early-rejects when the API is unavailable, anduseActionBarCopyin@assistant-ui/coresilently absorbs the rejection so the rest of the UI is unaffected. (@JustAnOkapi) -
#4057
179895f- fix(core): firestreamCallfor already-resolved tool calls observed after the initial snapshot, and promote in-progress tool calls from the initial snapshot once they change. Previously the runtime silently skippedstreamCallwhenever a tool-call part arrived already-resolved (history reload, thread switch, mid-run resume, PTC sub-call surfacing), forcing fragile render-effect fallbacks.executestays suppressed for these cases so side effects don't double-run. (@Yonom)Also collapses the per-tool-call ref soup inside
useToolInvocationsinto a single discriminatedToolCallEntrymap keyed by logical tool-call id, with execution-lifecycle bookkeeping tracked separately by physical stream id. RemovesignoredToolIds,lastToolStates,toolCallIdAliasesRefidentity entries, the parallelrestoredSignaturesRef/preResolvedToolCallIdsRef/startedExecutionToolCallIdsRefsets, and the early-return that suppressedstreamCallfor already-resolved tool calls.reset()semantics are unchanged; integrators that already callreset()on history reload don't need to change. -
#3958
7a8bf26- refactor: hoistMessagePartPrimitiveInProgressto@assistant-ui/core/reactso@assistant-ui/react,@assistant-ui/react-ink, and other distributions can share the same implementation.@assistant-ui/react'sMessagePartPrimitive.InProgressis unchanged for callers; it now re-exports from core. (@ShobhitPatra) -
#3636
3b2bbce- feat(core): expose modelName and toolNames in ModelContextState (@ShobhitPatra) -
Updated dependencies [
845c7c1,db721df,94548fa,94548fa]:- assistant-cloud@0.1.28
- @assistant-ui/store@0.2.11
- assistant-stream@0.3.15
- @assistant-ui/tap@0.5.11
0.2.2#
Patch Changes#
- #4024
19d4d94- feat: add native MCP Apps renderer —McpAppRenderercomposes intoToolsto render MCP UI resources inline in chat over a JSON-RPC postMessage bridge onSafeContentFrame. Adds anmcpfield toToolCallMessagePartand forwardscallProviderMetadata.mcp.appthrough the AI SDK message converter. (@Yonom)
0.2.1#
Patch Changes#
-
#3984
35d0146- feat(composer): exposecanSendstate andisSendDisabledadapter input (@okisdev)ComposerState.canSend(read-only) is now derivable viauseAuiState((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 byuseComposerSend.ExternalStoreAdapter.isSendDisabledis a new optional input alongsideisDisabled. whentrue, the thread composer's input remains usable butsend()becomes a no-op andcanSendisfalse. 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 theCmd/Ctrl+Shift+Entersteer hotkey, form-requestSubmit(), and directaui.composer().send()calls are all gated by the same flag. the same gating is wired through the tap-basedExternalThreadclient via a newisSendDisabledprop onExternalThreadProps. -
#4008
fa4510a- feat: support multi-modal tool results viatoModelOutput(@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
toModelOutputcallback. 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-streamexports a newToolModelContentParttype ({ type: "text", text } | { type: "file", data, mediaType, filename? }) and aToolModelOutputFunction<TArgs, TResult>callback type.Tool.toModelOutputis wired throughunstable_runPendingToolsandToolExecutionStream, attaching the resultingmodelContentto thetool-callpart on the assistant message.@assistant-ui/corere-exportsToolModelContentPartand adds an optionalmodelContent?: readonly ToolModelContentPart[]field onToolCallMessagePart. existing tools and renderers are unchanged.@assistant-ui/react-ai-sdk'sfrontendTools(...)helper now also registers atoModelOutputon each forwarded tool. it transparently unwraps an envelope thatuseAISDKRuntimewrites when a frontend-executed tool producedmodelContent, 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 withouttoModelOutputis unchanged.
route handlers that adopt
toModelOutputalso need to passtoolstoconvertToModelMessages(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 usetoModelOutput. 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, orconvertMessagewill 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-sdkfrom this version onward. if you persist UI messages and read them from multiple environments, upgrade every reader before any writer starts producingtoModelOutput; otherwise older readers will treat the envelope object as theresultand break the affected toolrenderfunctions. -
#3972
c9dd16c- fix:useExternalStoreRuntimeno longer crashes with "Entry not available in the store" when the adapter setsthreadIdto a value that isn't present inthreads/archivedThreads. The runtime now synthesizes a regular thread item formainThreadId, so thin adapters (e.g.useAgUiRuntime) that only exposethreadIdresolve correctly on first render and after switching threads. Closes #3971. (@okisdev) -
#3674
dea8bc7- fix(core): guard MessagePrimitive.Attachments against missing user message attachments (@cewinharhar) -
#3634
9c3d24d- Support AI SDKsource-documentparts 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,fa4510a]:- assistant-stream@0.3.14
0.2.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/AssistantIfremoved (useuseAui/useAuiState/useAuiEvent/AuiIf).getExternalStoreMessage(singular) removed (usegetExternalStoreMessages).MessageState.submittedFeedbackremoved (usemessage.metadata.submittedFeedback).ThreadRuntime.startRun(parentId)positional overload removed (pass{ parentId }).ThreadRuntime.unstable_loadExternalStateremoved (useimportExternalState).ThreadRuntime.unstable_resumeRunremoved (useresumeRun).ThreadRuntime.getModelConfigremoved (usegetModelContext).AssistantRuntime.threadList/switchToNewThread/switchToThread/registerModelConfigProvider/resetremoved (usethreads/threads.switchToNewThread/threads.switchToThread/registerModelContextProvider/thread.reset).ChatModelRunOptions.configremoved (usecontext).useLocalThreadRuntimealias removed (useuseLocalRuntime).unstable_useRemoteThreadListRuntime/unstable_useCloudThreadListAdapter/unstable_RemoteThreadListAdapter/unstable_InMemoryThreadListAdapteraliases removed (drop theunstable_prefix).react-langgraphonSwitchToThreadremoved (useload).toAISDKTools/getEnabledToolsremoved (usetoToolsJSONSchemafromassistant-stream).
0.1.18#
Patch Changes#
-
#3953
7098bab- Add cursor-based pagination to the thread list.RemoteThreadListAdapter.list()accepts an optional{ after }cursor and may returnnextCursoron the response. The runtime exposesloadMore(),hasMore, andisLoadingMorethrough both the legacyThreadListRuntimeAPI and the tap-onlyaui.threads()path;ThreadListRuntimeCore.loadMore?(),hasMore?, andisLoadingMore?are optional, so non-paginating cores (local, external-store, single-thread, in-memory) remain conformant. (@okisdev)@assistant-ui/reactships a matchingThreadListPrimitive.LoadMorebutton built oncreateActionButton, plus auseThreadListLoadMoreprimitive hook. Consumers wanting anIntersectionObserversentinel can reads.threads.hasMore/isLoadingMorefromuseAuiStateand callaui.threads().loadMore()directly.In-flight
loadMore()calls dedup via a single promise. The existing_loadGenerationcounter drops stale append callbacks when areload()interleaves aloadMore(). The loadMore reducer captures the active adapter so a mid-flight adapter swap cannot leak a stale page. Empty-stringnextCursoris normalised toundefined.reload()pre-clears the cursor so consumers readinghasMoredirectly during a reload do not observe a stale value.Adapter rejections are surfaced via
console.errorin both the initial-load andloadMorepaths, matching the pattern inRemoteThreadListHookInstanceManageranduseToolInvocations. -
Updated dependencies [
b090acb,5fdf17e]:- assistant-stream@0.3.13
- @assistant-ui/store@0.2.10
- @assistant-ui/tap@0.5.11
- assistant-cloud@0.1.27
0.1.17#
Patch Changes#
-
#3916
0bbf5dd- chore: drop./*wildcard export and surface internal attachment status types (@Yonom)The
./*wildcard inexportswas exposing the entire dist tree as importable subpaths, which inadvertently leaked internal modules (e.g.@assistant-ui/core/tests/*,@assistant-ui/core/types/*) as public API. Removing it.Two attachment status types that were previously only reachable through the wildcard (
PendingAttachmentStatus,CompleteAttachmentStatus) are now re-exported from the package root so that consumers' inferred types remain portable. -
#3917
98f165c- feat: enrichcomposer.attachmentAddErrorevent with typed payload (@okisdev)The event now carries
{ reason, message, attachmentId?, error? }so subscribers can branch on the failure mode (no-adapter/not-accepted/adapter-error). The bridge no longer relies on afindLastheuristic to recover the failed attachment id.Several state-derivable events are now annotated
@deprecatedbecause they duplicate state observation:composer.send,composer.attachmentAdd,thread.runStart,thread.runEnd,thread.initialize,threadListItem.switchedTo,threadListItem.switchedAway. They continue to fire for backward compatibility; new code should observe state viauseAuiStateinstead. -
#3914
62ec5bd- fix: add typesVersions to support moduleResolution: node (@shashank-100)Users with
moduleResolution: nodein their tsconfig were seeingProperty 'message' does not exist on type 'AssistantState'because theexportsmap sub-paths (e.g.@assistant-ui/core/react) are ignored by legacy node module resolution. AddingtypesVersionsmakes TypeScript resolve sub-path types correctly under all moduleResolution modes. -
#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 singleswitch (part.type)."group-…"cases wrapchildren(the recursively-rendered subtree); real part types ("text","tool-call","reasoning", …) render the part directly with the sameEnrichedPartStateenrichments (toolUI,addResult,resume,dataRendererUI) that<MessagePrimitive.Parts>provides.GroupPartis 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
groupByreturn type is constrained to`group-${string}`so the unified switch can never collide with a real part type. The component infers a literalTKeyper call site, sopart.typenarrows to the exact union of group keys plus part types.For leaf parts,
childrenis a sentinel that throws if rendered — accidental fall-through likedefault: return children;errors loudly instead of silently rendering nothing. Returningnullfrom a leaf case is fine.Deprecates the legacy
components.ToolGroup,components.ReasoningGroup, andcomponents.ChainOfThoughtprops on<Parts>, and<MessagePrimitive.Unstable_PartsGrouped>for adjacent grouping — all still work for backwards compatibility.
0.1.16#
Patch Changes#
-
#3895
549037a- fix(core): emit attachmentAddError when no adapter is configured or file type is rejected (@okisdev) -
#3896
976aec5- fix(core): respectadapter.acceptwhen adding externalCreateAttachment(@okisdev)composer.addAttachmentpreviously bypassed the configuredAttachmentAdapterforCreateAttachmentdescriptors, including theadapter.acceptcontent-type check. It now validates the descriptor'scontentType(or filename extension) againstadapter.acceptwhen an adapter is configured, throwing and emittingcomposer.attachmentAddErroron mismatch. Without an adapter, external attachments are still added as-is, preserving the existing "no adapter required" guarantee for external sources. -
#3716
25b97d5- fix(core): show loading state for empty parts children API (@ShobhitPatra) -
#3891
2008fc9- fix(core): hoist remote thread runtime binder out ofunstable_Provider(@okisdev)RemoteThreadListAdapter.unstable_Provideris now allowed to render any subtree it likes; the runtime binding (composer state,__internal_setGetInitializePromise,runEnd → generateTitlelistener) executes outside it. This fixesEMPTY_THREAD_ERRORwhen the Provider deferschildren(e.g. behind a history-loading state) and avoids the history-switch regression seen when only the binder, but not the init listeners, were hoisted. Adds a dev-mode warning when the Provider does not renderchildrenwithin ~100ms. -
#3889
88fcd35- feat: addcustomslot toRemoteThreadMetadataandThreadListItemState(@okisdev)allows adapter authors to carry arbitrary backend session data through
list()/fetch()and surface it on the thread list item state. matches the existingcustom: Record<string, unknown>convention used onThreadMessage,RunConfig, andChatModelRunResult. consumers can intersect a typed shape at their own boundary, e.g.RemoteThreadMetadata & { custom: { workspaceId: string } }. -
Updated dependencies [
005f83f]:- @assistant-ui/store@0.2.9
- @assistant-ui/tap@0.5.10
0.1.15#
Patch Changes#
-
#3857
c7a274e- fix(core): edit composer no longer re-injects original file parts when user message attachments are modified. Non-text content parts on user messages are lifted into_attachmentsso attachment removals take effect and files aren't duplicated on resend; non-user messages keep the existing content pass-through. (@okisdev) -
#3796
ca8f526- feat(react-langgraph): add uiComponents option for static and dynamic data renderers (@ShobhitPatra)Add
uiComponentsoption touseLangGraphRuntimefor registering static data renderers by name and afallbackrenderer for dynamic loading (e.g. LangSmith'sLoadExternalComponent), directly from the runtime hook.Core
DataRenderersscope also gains afallbacksstack (plussetFallbackDataUImethod) that the adapter registers into; resolution isrenderers[name][0]→fallbacks[0]→ inlineFallback. -
#3873
c56f98f- feat(core): addreload()method onThreadListRuntimeandaui.threads()that re-invokes the remote adapter'slist()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) -
#3855
974d15e- fix:useExternalStoreRuntimenow correctly initializesmainThreadId,threadIds, andarchivedThreadIdsfrom the adapter on first render. Previously they stayed atDEFAULT_THREAD_IDuntil the user switched threads, soisMainwasfalseon initial load. Closes #2577. (@okisdev) -
#3859
4b19d42- fix(core):switchToThreadcould duplicate a thread or leave it in boththreadIdsandarchivedThreadIdswhen it raced withlist(). Both arrays are now filtered before the status-keyed append, matching theupdateStatusReducerpattern. (@bilaltahseen) -
#3858
da0f598- fix:useAISDKRuntimenow throws when the suppliedThreadHistoryAdapteromitswithFormat, instead of silently dropping all history load/append/update calls. The optional-call chainhistoryAdapter.withFormat?.(…).load()previously short-circuited toundefined. ThewithFormat-wrapped adapter is now memoized, and the persist effect short-circuits when no adapter is supplied (avoiding a redundant thread subscription).ThreadHistoryAdapter.withFormatgains a JSDoc note clarifying that it is required on the AI SDK path. (@okisdev) -
#3831
d53ff4f- chore: remove decorative separator comments across packages (@okisdev) -
#3872
20f8404- feat(core): let runtimes provide an explicitisRunningthat overrides the last-message-status heuristic.ExternalStoreAdapter.isRunningnow flows through tothread.isRunningdirectly, so applications can keep the thread in a running state even after the last assistant message has completed (e.g. while non-message stream chunks like suggestions, step-finish, or metadata updates are still arriving). When a runtime does not provideisRunning, the previous last-message-based behavior is preserved. (@okisdev) -
#3834
17958c9- refactor: unify mention/slash under behavior sub-primitives; delete Mention/SlashCommand aliases and theexecutefield onUnstable_TriggerItem; split TriggerPopoverResource; rename react-lexicalMentionNode/MentionPlugin/MentionChipProvider/mentionChipprop toDirectiveNode/DirectivePlugin/DirectiveChipProvider/directiveChip; fix IME/Unicode/copy-paste/undo bugs. Breaking (Unstable_APIs): replaceonSelect={{type:"insertDirective",formatter}}with<Unstable_TriggerPopover.Directive formatter={...}>; replaceonSelect={{type:"action",handler}}with<Unstable_TriggerPopover.Action onExecute={...}>. Renameunstable_useToolMentionAdapter→unstable_useMentionAdapterwith newitems/categories/includeModelContextToolsoptions.unstable_useSlashCommandAdapternow returns{ adapter, action }—executestays in the hook closure instead of on the item. Rename CSS classaui-mention-chip→aui-directive-chipand attributesdata-mention-*→data-directive-*. (@okisdev) -
Updated dependencies [
ce865bc,055dda5,d53ff4f]:- assistant-stream@0.3.12
- assistant-cloud@0.1.27
- @assistant-ui/store@0.2.8
- @assistant-ui/tap@0.5.9
0.1.14#
Patch Changes#
- f20b9ca: feat: add ExportedMessageRepository.fromBranchableArray() for constructing branching message trees from ThreadMessageLike messages
- c988db8: chore: update dependencies
- Updated dependencies [c988db8]
- assistant-stream@0.3.11
- assistant-cloud@0.1.26
- @assistant-ui/store@0.2.7
- @assistant-ui/tap@0.5.8
0.1.13#
Patch Changes#
-
42bc640: feat: support edit lineage and startRun in EditComposer send flow
- Add
SendOptionswithstartRunflag tocomposer.send() - Expose
parentIdandsourceIdonEditComposerState - Add
EditComposerRuntimeCoreinterface extendingComposerRuntimeCore - Bypass text-unchanged guard when
startRunis explicitly set ComposerSendOptionsextendsSendOptionsfor consistent layering
- Add
-
87e7761: feat: generalize mention system into trigger popover architecture with slash command support
- Introduce
ComposerInputPluginprotocol to decouple ComposerInput from mention-specific code - Extract generic
TriggerPopoverResourcefromMentionResourcesupporting multiple trigger characters - Add
Unstable_TriggerItem,Unstable_TriggerCategory,Unstable_TriggerAdaptergeneric types - Add
Unstable_SlashCommandAdapter,Unstable_SlashCommandItemtypes - Add
ComposerPrimitive.Unstable_TriggerPopoverRootand related primitives - Add
ComposerPrimitive.Unstable_SlashCommandRootand related primitives - Add
unstable_useSlashCommandAdapterhook for building slash command adapters - Refactor
MentionResourceas thin wrapper aroundTriggerPopoverResource - Alias
Unstable_MentionItem/Unstable_MentionAdapterto generic trigger types - Update
react-lexicalKeyboardPluginto use plugin protocol - All existing
Unstable_Mention*APIs remain unchanged
- Introduce
-
Updated dependencies [376bb00]
- assistant-cloud@0.1.25
- @assistant-ui/tap@0.5.7
- @assistant-ui/store@0.2.6
0.1.12#
Patch Changes#
- 19b1024: fix(core): move initialThreadId/threadId handling from constructor to __internal_load to prevent SSR crash
0.1.11#
Patch Changes#
- de29641: fix(core): start RemoteThreadList isLoading as true
- a8bf84b: feat(core): expose
getLoadThreadsPromise()onThreadListRuntimepublic API - 5fd5c3d: feat(core): add reactive
threadIdoption touseRemoteThreadListRuntimefor URL-based routing - ec50e8a: fix(core): prevent resolved history tool calls from re-executing
- Updated dependencies [2c5cd97]
- assistant-stream@0.3.10
0.1.10#
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.
-
9103282: fix: resolve biome lint warnings (optional chaining, unused suppressions)
-
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
-
4abb898: refactor: align interactables with codebase conventions
- Rename
useInteractabletouseAssistantInteractable(registration only, returns id) - Add
useInteractableStatehook for reading/writing interactable state - Remove
makeInteractableand related types - Rename
UseInteractableConfigtoAssistantInteractableProps - Extract
buildInteractableModelContextfromInteractablesresource - Add
with-interactablesexample to CLI
- Rename
-
209ae81: chore: remove aui-source export condition from package.json exports
-
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 [9103282]
-
Updated dependencies [bdce66f]
-
Updated dependencies [209ae81]
-
Updated dependencies [2dd0c9f]
- assistant-stream@0.3.9
- assistant-cloud@0.1.24
- @assistant-ui/store@0.2.6
- @assistant-ui/tap@0.5.6
0.1.9#
Patch Changes#
-
781f28d: feat: accept all file types and validate against adapter's accept constraint
-
3227e71: feat: add interactables with partial updates, multi-instance, and selection
useInteractable(name, config)hook andmakeInteractablefactory for registering AI-controllable UIInteractables()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
-
0f55ce8: fix(core): hide phantom empty bubble when user message has no text content
-
83a15f7: feat(core): stream interactable state updates as tool args arrive
-
52403c3: chore: update dependencies
-
ffa3a0f: feat(core): add attachmentAddError composer event
-
Updated dependencies [3227e71]
-
Updated dependencies [52403c3]
- assistant-stream@0.3.8
- assistant-cloud@0.1.23
- @assistant-ui/store@0.2.5
- @assistant-ui/tap@0.5.5
0.1.8#
Patch Changes#
-
1406aed: fix(core): prevent stale list() response from undoing concurrent delete/archive/unarchive in OptimisticState
-
9480f30: fix(core): stop thread runtime on delete to prevent store crash
-
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 native queue and steer support
- Add
queueadapter toExternalThreadPropsfor runtimes that support message queuing - Add
QueueItemPrimitive.Text,.Steer,.Removeprimitives for rendering queue items - Add
ComposerPrimitive.Queuefor rendering the queue list within the composer - Add
ComposerSendOptionswithsteerflag tocomposer.send() - Add
capabilities.queuetoRuntimeCapabilities ComposerPrimitive.Sendstays enabled during runs when queue is supported- Cmd/Ctrl+Shift+Enter hotkey sends with
steer: true(interrupt current run) - Add
queueItemscope toScopeRegistry - Add
queuefield toComposerStateandqueueItem()method toComposerMethods
- Add
-
Updated dependencies [28a987a]
-
Updated dependencies [736344c]
-
Updated dependencies [c71cb58]
- @assistant-ui/store@0.2.4
- assistant-stream@0.3.7
- @assistant-ui/tap@0.5.4
0.1.7#
Patch Changes#
- 7ecc497: feat: children API for primitives with part.toolUI, part.dataRendererUI, and MessagePrimitive.Quote
0.1.6#
Patch Changes#
-
1ed9867: feat: move resumeRun to stable
-
427ffaa: refactor: drop all barrel files
-
349f3c7: chore: update deps
-
02614aa: feat: add multi-agent support
ReadonlyThreadProviderandMessagePartPrimitive.Messagesfor rendering sub-agent messagesassistant-stream: addmessagesfield totool-resultchunks,ToolResponseLike, andToolCallParttypes, enabling sub-agent messages to flow through the streaming protocol
-
6cc4122: refactor: use primitive hooks
-
642bcda: Add
quote.tsxregistry components andinjectQuoteContexthelper -
Updated dependencies [427ffaa]
-
Updated dependencies [349f3c7]
-
Updated dependencies [02614aa]
- assistant-stream@0.3.6
- assistant-cloud@0.1.22
- @assistant-ui/store@0.2.3
- @assistant-ui/tap@0.5.3
0.1.5#
Patch Changes#
- 990e41d: refactor: code sharing between the multiple platforms
0.1.4#
Patch Changes#
- f032ea5: fix: restore
typeof processruntime guard in useCloudThreadListAdapter - Updated dependencies [2828b67]
- assistant-stream@0.3.5
0.1.3#
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
- 01bee2b: Remove zod dependency by using assistant-stream's toJSONSchema utility for schema serialization in AssistantFrameProvider
0.1.2#
Patch Changes#
- 03714af: fix: DataRenderers not in scope
0.1.1#
Patch Changes#
-
a638f05: refactor(core): depend on @assistant-ui/store, register chat scopes via module augmentation
-
28f39fe: Support custom content types via
data-*prefix in ThreadMessageLike (auto-converted to DataMessagePart), widenBaseAttachment.typeto accept custom strings, makecontentTypeoptional -
36ef3a2: chore: update dependencies
-
6692226: feat: support external source attachments in composer
addAttachment()now accepts either aFileor aCreateAttachmentdescriptor, allowing users to add attachments from external sources (URLs, API data, CMS references) without creating dummyFileobjects or requiring anAttachmentAdapter. -
c31c0fa: Extract shared React code (model-context, client, types, providers, RuntimeAdapter) into
@assistant-ui/core/reactsub-path so both@assistant-ui/reactand@assistant-ui/react-nativere-export from one source. -
fc98475: feat(core): move
@assistant-ui/tapto peerDependencies to fix npm deduplication -
374f83a: fix(core): stabilize object references in ExternalStoreThreadRuntimeCore to prevent infinite re-render loop
-
1672be8: feat: bindExternalStoreMessage
-
14769af: refactor: move RuntimeAdapter base logic to @assistant-ui/core; re-export missing core APIs from distribution packages
-
Updated dependencies [36ef3a2]
-
Updated dependencies [fc98475]
-
Updated dependencies [a638f05]
- assistant-stream@0.3.4
- @assistant-ui/store@0.2.1
- @assistant-ui/tap@0.5.1
0.1.0#
Minor Changes#
- 60bbe53: feat(core): ready for release
Patch Changes#
-
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
-
40a67b6: feat(core): add message, attachment, and utility type definitions
-
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.
-
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
-
Updated dependencies [b65428e]
-
Updated dependencies [b65428e]
-
Updated dependencies [b65428e]
-
Updated dependencies [6bd6419]
-
Updated dependencies [b65428e]
-
Updated dependencies [61b54e9]
-
Updated dependencies [b65428e]
-
Updated dependencies [93910bd]
-
Updated dependencies [b65428e]
- @assistant-ui/tap@0.5.0
- assistant-stream@0.3.3