Lower-level assistant-ui providers for custom renderers, scoped message parts, attachments, and advanced composition.
API Reference
ChainOfThoughtByIndicesProvider
ChainOfThoughtByIndicesProvider props
- startIndexnumber
- endIndexnumber
ComposerAttachmentByIndexProvider
ComposerAttachmentByIndexProvider props
- indexnumber
MessageAttachmentByIndexProvider
MessageAttachmentByIndexProvider props
- indexnumber
MessageByIndexProvider
MessageByIndexProvider props
- indexnumber
MessageProvider
MessageProvider props
- messageThreadMessage
- ThreadMessage
- status?ThreadAssistantMessage["status"]
- ThreadMessage["status"]
- type"running"
- metadataThreadMessage["metadata"]
- ThreadMessage["metadata"]
- unstable_state?ReadonlyJSONValueunstable
- unstable_annotations?readonly ReadonlyJSONValue[]unstable
- unstable_data?readonly ReadonlyJSONValue[]unstable
- steps?readonly ThreadStep[]
- submittedFeedback?ThreadMessage["metadata"]["submittedFeedback"]
- ThreadMessage["metadata"]["submittedFeedback"]
- type"positive" | "negative"
- timing?MessageTiming
- MessageTiming
- streamStartTimenumber
- firstTokenTime?number
- totalStreamTime?number
- tokenCount?number
- tokensPerSecond?number
- totalChunksnumber
- toolCallCountnumber
- isOptimistic?boolean
Marks a client-side optimistic placeholder. Such messages are evicted once off the head branch and are never persisted.
- customRecord<string, unknown>
- attachments?ThreadUserMessage["attachments"]
- idstring
- createdAtDate
- role"system"
- contentreadonly [TextMessagePart]
- indexnumber
- isLast?boolean
- branchNumber?number
- branchCount?number
PartByIndexProvider
PartByIndexProvider props
- indexnumber
ReadonlyThreadProvider
ReadonlyThreadProvider props
- messagesreadonly ThreadMessage[]
RuntimeAdapterProvider
RuntimeAdapterProvider props
- adaptersRuntimeAdapters
- RuntimeAdapters
- modelContext?ModelContextProvider | undefined
- RuntimeAdapters["modelContext"]
- getModelContext() => ModelContext
- subscribe?(callback: () => void) => Unsubscribe
- history?ThreadHistoryAdapter | undefined
- RuntimeAdapters["history"]
- load() => Promise<ExportedMessageRepository & { state?: ReadonlyJSONValue; unstable_resume?: boolean; }>
- resume?(options: ChatModelRunOptions) => AsyncGenerator<ChatModelRunResult, void, unknown>
- append(item: ExportedMessageRepositoryItem) => Promise<void>
- update?(item: ExportedMessageRepositoryItem) => Promise<void>
Rewrites a previously appended message in place, keyed by its message id. Adapters that implement this let a runtime persist a run paused for tool approval and finalize the same message once the run resumes. An update may arrive for an id whose earlier write failed; treat it as an upsert keyed on the message id rather than assuming the entry exists.
- delete?(items: ExportedMessageRepositoryItem[]) => Promise<void>
- withFormat?<TMessage, TStorageFormat extends Record<string, unknown>>(formatAdapter: MessageFormatAdapter<TMessage, TStorageFormat>) => GenericThreadHistoryAdapter<TMessage>
Required when used with `useAISDKRuntime` / `useChatRuntime`.
- attachments?AttachmentAdapter | undefined
- RuntimeAdapters["attachments"]
- acceptstring
- add(state: { file: File; }) => Promise<PendingAttachment> | AsyncGenerator<PendingAttachment, void>
- remove(attachment: Attachment) => Promise<void>
- send(attachment: PendingAttachment) => Promise<CompleteAttachment>
- feedback?FeedbackAdapter | undefined
- RuntimeAdapters["feedback"]
- submit(feedback: FeedbackAdapterFeedback) => void
- children?ReactNode
SuggestionByIndexProvider
SuggestionByIndexProvider props
- indexnumber
TextMessagePartProvider
TextMessagePartProvider props
- textstring
- isRunning?boolean
ThreadListItemByIndexProvider
ThreadListItemByIndexProvider props
- indexnumber
- archivedboolean
ThreadListItemRuntimeProvider
ThreadListItemRuntimeProvider props
- runtimeThreadListItemRuntime
- ThreadListItemRuntime
- pathThreadListItemRuntimePath
- ThreadListItemRuntimePath
- refstring
- threadSelectorThreadListItemRuntimePath["threadSelector"]
- ThreadListItemRuntimePath["threadSelector"]
- type"main"
- getState() => ThreadListItemState
- initialize() => Promise<{ remoteId: string; externalId: string | undefined; }>
- generateTitle(options?: ThreadListItemGenerateTitleOptions) => Promise<void>
- switchTo(options?: { unarchive?: boolean; }) => Promise<void>
- rename(newTitle: string) => Promise<void>
- updateCustom(custom: Record<string, unknown> | undefined) => Promise<void>
- archive() => Promise<void>
- unarchive() => Promise<void>
- delete() => Promise<void>
- detach() => void
- subscribe(callback: () => void) => Unsubscribe
- unstable_on<E extends ThreadListItemEventType>(event: E, callback: ThreadListItemEventCallback<E>) => Unsubscribeunstable