Context Providers
Lower-level assistant-ui providers for custom renderers, scoped message parts, attachments, and advanced composition.
API Reference
ChainOfThoughtByIndicesProvider
ChainOfThoughtByIndicesProvider propsstartIndex: numberendIndex: number
ComposerAttachmentByIndexProvider
ComposerAttachmentByIndexProvider propsindex: number
MessageAttachmentByIndexProvider
MessageAttachmentByIndexProvider propsindex: number
MessageByIndexProvider
MessageByIndexProvider propsindex: number
MessageProvider
MessageProvider propsmessage: ThreadMessagestatus?: ThreadAssistantMessage["status"]type: "running"
metadata: ThreadMessage["metadata"]unstable_stateunstable?: ReadonlyJSONValueunstable_annotationsunstable?: readonly ReadonlyJSONValue[]unstable_dataunstable?: readonly ReadonlyJSONValue[]steps?: readonly ThreadStep[]submittedFeedback?: ThreadMessage["metadata"]["submittedFeedback"]type: "positive" | "negative"
timing?: MessageTimingstreamStartTime: numberfirstTokenTime?: numbertotalStreamTime?: numbertokenCount?: numbertokensPerSecond?: numbertotalChunks: numbertoolCallCount: number
isOptimistic?: booleanMarks a client-side optimistic placeholder. Such messages are evicted once off the head branch and are never persisted.
custom: Record<string, unknown>
attachments?: ThreadUserMessage["attachments"]id: stringcreatedAt: Daterole: "system"content: readonly [TextMessagePart]
index: numberisLast?: booleanbranchNumber?: numberbranchCount?: number
PartByIndexProvider
PartByIndexProvider propsindex: number
ReadonlyThreadProvider
ReadonlyThreadProvider propsmessages: readonly ThreadMessage[]
RuntimeAdapterProvider
RuntimeAdapterProvider propsadapters: RuntimeAdaptersmodelContext?: ModelContextProvidergetModelContext: () => ModelContextsubscribe?: (callback: () => void) => Unsubscribe
history?: ThreadHistoryAdapterload: () => Promise<ExportedMessageRepository & { unstable_resume?: boolean; }>resume?: (options: ChatModelRunOptions) => AsyncGenerator<ChatModelRunResult, void, unknown>append: (item: ExportedMessageRepositoryItem) => Promise<void>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?: AttachmentAdapteraccept: stringadd: (state: { file: File; }) => Promise<PendingAttachment> | AsyncGenerator<PendingAttachment, void>remove: (attachment: Attachment) => Promise<void>send: (attachment: PendingAttachment) => Promise<CompleteAttachment>
children?: ReactNode
SuggestionByIndexProvider
SuggestionByIndexProvider propsindex: number
TextMessagePartProvider
TextMessagePartProvider propstext: stringisRunning?: boolean
ThreadListItemByIndexProvider
ThreadListItemByIndexProvider propsindex: numberarchived: boolean
ThreadListItemRuntimeProvider
ThreadListItemRuntimeProvider propsruntime: ThreadListItemRuntimepath: ThreadListItemRuntimePathref: stringthreadSelector: ThreadListItemRuntimePath["threadSelector"]type: "main"
getState: () => ThreadListItemStateinitialize: () => Promise<{ remoteId: string; externalId: string | undefined; }>generateTitle: () => 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: () => voidsubscribe: (callback: () => void) => Unsubscribeunstable_onunstable: <E extends ThreadListItemEventType>(event: E, callback: ThreadListItemEventCallback<E>) => Unsubscribe