Patch Changes
-
#7849
6e128be- fix: expose the current thread to assistive technology on react-native-web (@rupic-app) -
#8030
e8fac8d- feat: show a message with uploading attachments in the thread while it is being sent (@okisdev)MessagePrimitive.Attachmentsnow hands its render functionAttachmentrather thanCompleteAttachment, because the row of a message that is still being sent shows attachments that are still uploading. a render function that readsattachment.contentshould checkattachment.status.type === "complete"first. -
#7877
83f5354- fix: honor registered data-part fallbacks on native MessageContent and grouped parts (@Kinfe123) -
#7760
84e0cf4- fix: emit declarations from one TypeScript program so two builds of the same commit produce the same.d.ts(@okisdev)aui-buildnow emits the unbundled.d.tsoutput in one TypeScript pass over the whole package, so two builds of the same commit produce identical declarations; the per-module emit it replaced followed the bundler's load order and let union member order, alias visibility and import specifiers move between builds. Declarations import barrels as the source does and keepimport type; the exported types are unchanged. A/// <reference>directive that must reach the published declarations now carriespreserve="true"in the source. -
#7838
3d01501- fix: every distribution re-exports the same shared surface from@assistant-ui/core.@assistant-ui/react-inkgainsReadonlyThreadProvider,ToolCallMessagePartStatus,groupPartByType,GroupByContext,VoiceSessionState, the external store runtime (useExternalStoreRuntime,useExternalMessageConverter, their adapters and options), the message queue, the tool approval types, the generative UI renderer and the cloud thread list hooks;@assistant-ui/react-nativegainsVoiceSessionState, the cloud thread list hooks, the generative UI renderer and the runtime state and adapter types the web package already carried;@assistant-ui/reactgainsMessageRole,RunConfig,RuntimeCapabilities,RemoteThreadListOptions,ThreadsState,JoinStrategy,TitleGenerationAdapter,createSimpleTitleAdapterandChainOfThoughtPartByIndexProvider. (@okisdev) -
#7736
5e238ee- fix: prevent duplicate history requests at the start of a message list (@Kinfe123) -
#7780
2d91835- feat: export ReadonlyThreadProvider and ToolCallMessagePartStatus (@okisdev) -
#7725
258ad13- fix: expose feedback submission state to assistive technology (@rupic-app) -
#7979
35a58a0- fix: type theThreadPrimitive.Messageschildrenmessageas theMessageStatethe package exports, which is the store state the primitive passes at runtime (@okisdev) -
#7981
0252c69- feat: name the runtime state typesThreadRuntimeState,MessageRuntimeState,ComposerRuntimeState,AttachmentRuntimeStateandThreadListItemRuntimeState(@okisdev)these are the states
ThreadRuntime,MessageRuntime,ComposerRuntime,AttachmentRuntimeandThreadListItemRuntimereturn fromgetState(), now exported by all three distributions;@assistant-ui/react-nativeand@assistant-ui/react-inkhad no name for them. in@assistant-ui/react,ThreadState,MessageState,ComposerState,AttachmentStateandThreadListItemStatestill name these runtime states but are deprecated: from 0.16 they name the store statesuseAuiStatereads, as they already do in@assistant-ui/react-nativeand@assistant-ui/react-ink. code that annotates a runtime'sgetState()result should move to the new names. -
#8065
2caacad- feat: a tool UI can record what the user did on its tool call withunstable_recordInteraction, kept on the part asunstable_interactionsand stored in cloud history; the answer to a human input request is recorded once the runtime accepts it, the local runtime persists records and keeps them out of model input, external stores receive them throughunstable_onRecordToolInteraction, and readonly threads ignore them (@okisdev) -
#7777
c51ba8f- feat(core): let typed text enter a connected voice session throughsendText(@okisdev)a
RealtimeVoiceAdapter.Session(and theVoiceSessionControlsreturned tocreateVoiceSession) can implementsendText(text). while a running session takes typed text,VoiceSessionState.canSendTextis true, the thread composer can send, andthread.appendwith a plain text user message hands the text to the session and commits it once as a typed turn (nometadata.modality) through the same path as a finalized transcript: the local runtime writes it to the repository and history, an external store receives it throughonVoiceTranscript. the session must not echo the typed text throughonTranscript. a session withoutsendTextkeeps rejecting typed sends as before. while a session is connected the send button and the Enter key followcanSendalone, so a reply being spoken no longer blocks them. the ai-sdk runtime keeps the message's own modality when it persists a voice session message, so a typed turn is no longer marked as spoken. -
Updated dependencies [
b4f5153,aa83d87,d096801,9b902fa,aa0f338,d8394bc,63f3236,6b93933,eb034f6,5a8ff94,2e3fd9e,9f286dc,920422c,02043de,9cb7aa4,40ba7f0,967de5d,b649669,0ce62a8,5d33fca,92d16d7,a88fa97,96e11d9,3af3b61,e8fac8d,d403574,f71c285,0ad784f,bbd01b5,84e0cf4,fc3aa3e,9eafe31,d97af06,e0b7805,1c58865,9619b42,5496fce,f04c7f0,a4a2739,fdf5706,443b0a5,178e340,1afdc46,dea2462,c45ae5a,7face86,0a9ed7b,6407760,4bed51f,819c065,21f8bdf,8e1508a,e9c1ccd,4928364,5c5eb45,11f9648,c5b5d3a,7725cbd,777df32,dcd43fd,a486a13,0ee58d8,0252c69,75bd488,7260270,0cfd31e,c2e125e,1790780,662b607,f270950,84cdbb0,92e991a,534e11f,9da3697,e046327,2caacad,e525f14,c171588,a5c9c5a,4b069f9,d9e4086,89c0f55,c51ba8f,e6aa5df]:- @assistant-ui/core@0.3.21
- assistant-cloud@0.2.3
- assistant-stream@0.3.45
- @assistant-ui/store@0.3.15
- @assistant-ui/tap@0.9.19