@assistant-ui/react-native#
0.1.16#
Patch Changes#
-
#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. -
Updated dependencies [
9ecda1d,35d0146,fa4510a,c9dd16c,dea8bc7,9c3d24d]:- assistant-stream@0.3.14
- @assistant-ui/core@0.2.1
0.1.15#
Patch Changes#
- Updated dependencies [
040d469]:- @assistant-ui/core@0.2.0
0.1.14#
Patch Changes#
-
#3932
6700da5- feat: re-export RuntimeAdapterProvider, useRuntimeAdapters, and CompleteAttachment (@AVGVSTVS96) -
Updated dependencies [
7098bab,b090acb,5fdf17e]:- @assistant-ui/core@0.1.18
- assistant-stream@0.3.13
- @assistant-ui/store@0.2.10
- @assistant-ui/tap@0.5.11
0.1.13#
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 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. -
Updated dependencies [
0bbf5dd,98f165c,62ec5bd,6a919c1]:- @assistant-ui/core@0.1.17
0.1.12#
Patch Changes#
-
Updated dependencies [
c7a274e,ce865bc,ca8f526,c56f98f,974d15e,4b19d42,055dda5,da0f598,d53ff4f,20f8404,17958c9]:- @assistant-ui/core@0.1.15
- assistant-stream@0.3.12
- @assistant-ui/store@0.2.8
- @assistant-ui/tap@0.5.9
0.1.11#
Patch Changes#
- 0d2d2f3: fix: export ExportedMessageRepository and ExportedMessageRepositoryItem from react-native
- c988db8: chore: update dependencies
- Updated dependencies [f20b9ca]
- Updated dependencies [c988db8]
- @assistant-ui/core@0.1.14
- assistant-stream@0.3.11
- @assistant-ui/store@0.2.7
- @assistant-ui/tap@0.5.8
0.1.10#
Patch Changes#
- 376bb00: chore: update dependencies
- Updated dependencies [42bc640]
- Updated dependencies [376bb00]
- Updated dependencies [87e7761]
- @assistant-ui/core@0.1.13
- @assistant-ui/tap@0.5.7
0.1.9#
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.
-
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 [6554892]
-
Updated dependencies [9103282]
-
Updated dependencies [876f75d]
-
Updated dependencies [bdce66f]
-
Updated dependencies [4abb898]
-
Updated dependencies [209ae81]
-
Updated dependencies [2dd0c9f]
-
Updated dependencies [af70d7f]
- assistant-stream@0.3.9
- @assistant-ui/core@0.1.10
- @assistant-ui/store@0.2.6
- @assistant-ui/tap@0.5.6
0.1.8#
Patch Changes#
-
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
-
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]
- @assistant-ui/core@0.1.9
- assistant-stream@0.3.8
- @assistant-ui/store@0.2.5
- @assistant-ui/tap@0.5.5
0.1.7#
Patch Changes#
- 736344c: chore: update dependencies
- Updated dependencies [1406aed]
- Updated dependencies [9480f30]
- Updated dependencies [28a987a]
- Updated dependencies [736344c]
- Updated dependencies [ff3be2a]
- Updated dependencies [70b19f3]
- Updated dependencies [c71cb58]
- @assistant-ui/core@0.1.8
- @assistant-ui/store@0.2.4
- assistant-stream@0.3.7
- @assistant-ui/tap@0.5.4
0.1.6#
Patch Changes#
- 7ecc497: feat: children API for primitives with part.toolUI, part.dataRendererUI, and MessagePrimitive.Quote
- Updated dependencies [7ecc497]
- @assistant-ui/core@0.1.7
0.1.5#
Patch Changes#
- 4a904de: refactor: remove useAssistantRuntime hook
- 349f3c7: chore: update deps
- 6cc4122: refactor: use primitive hooks
- 642bcda: Add
quote.tsxregistry components andinjectQuoteContexthelper - Updated dependencies [1ed9867]
- Updated dependencies [427ffaa]
- Updated dependencies [349f3c7]
- Updated dependencies [02614aa]
- Updated dependencies [6cc4122]
- Updated dependencies [642bcda]
- @assistant-ui/core@0.1.6
- assistant-stream@0.3.6
- @assistant-ui/store@0.2.3
- @assistant-ui/tap@0.5.3
0.1.4#
Patch Changes#
- 990e41d: refactor: code sharing between the multiple platforms
- Updated dependencies [990e41d]
- @assistant-ui/core@0.1.5
0.1.3#
Patch Changes#
- 8ed9d6f: Add optional
auiparameter to AssistantRuntimeProvider for passing an AssistantClient - 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]
- @assistant-ui/core@0.1.3
0.1.2#
Patch Changes#
- a845911: chore: update dependencies
- Updated dependencies [a845911]
- @assistant-ui/store@0.2.2
- @assistant-ui/tap@0.5.2
0.1.1#
Patch Changes#
- 36ef3a2: chore: update dependencies
- 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. - 14769af: refactor: move RuntimeAdapter base logic to @assistant-ui/core; re-export missing core APIs from distribution packages
- f8abe87: feat(react-native): add attachment primitives and useComposerAddAttachment hook
- a638f05: refactor(react-native): import generic store utilities from @assistant-ui/store, remove deprecated hooks in favor of useAuiState
- d74d309: feat(react-native): add tool system, model context hooks, and data renderers
- 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]
- @assistant-ui/core@0.1.1
- assistant-stream@0.3.4
- @assistant-ui/store@0.2.1
- @assistant-ui/tap@0.5.1
0.1.0#
Minor Changes#
- 124ae9f: feat(react-native): setup
- ef5d622: feat(react-native): integrate store system
Patch Changes#
- 9276547: fix: thread deletion crash "Entry not available in the store"
- f116f55: feat(react-native): use core's RemoteThreadList infrastructure
- Updated dependencies [b65428e]
- Updated dependencies [b65428e]
- 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 [61b54e9]
- Updated dependencies [4d7f712]
- Updated dependencies [ecc29ec]
- Updated dependencies [6e97999]
- Updated dependencies [b65428e]
- Updated dependencies [93910bd]
- Updated dependencies [60bbe53]
- Updated dependencies [b65428e]
- Updated dependencies [b65428e]
- @assistant-ui/tap@0.5.0
- @assistant-ui/store@0.2.0
- @assistant-ui/core@0.1.0
- assistant-stream@0.3.3