import { Component, ContextLevel, RuntimeHooks } from "./context";
export const contextColors = {
"Assistant Context": "#4a86e8",
"Thread Context": "#45a049",
"Composer Context": "#ff9933",
"Message Context": "#bb2244",
"MessagePart Context": "#268bd2",
"Attachment Context": "#FFB6C1",
"ThreadListItem Context": "#c678dd",
};
Cloud#
Runtime API#
AI SDK#
Data Stream#
useDataStreamRuntimeuseCloudRuntimetoLanguageModelMessages(AI SDK specific)
assistant-stream (Framework-Agnostic)#
LangGraph#
Local Runtime#
External Store Runtime#
Thread List Runtime#
Runtime Adapters#
Attachment#
AttachmentAdapterSimpleImageAttachmentAdapterSimpleTextAttachmentAdapterCompositeAttachmentAdapter
Feedback#
Speech#
Highest Level Context Providers#
<Component
name="AssistantRuntimeProvider"
isContextProvider={true}
providedContexts={[
{ name: "Assistant Context", color: contextColors["Assistant Context"] },
{ name: "Thread Context", color: contextColors["Thread Context"] },
{
name: "Thread Composer Context",
color: contextColors["Composer Context"],
link: "#composer-context",
},
]}
docsLink="./context-providers/assistant-runtime-provider"
tooltip="Provides the highest level context for the assistant-ui"
props="runtime={runtime}"
<Component
name="TextMessagePartProvider"
isContextProvider={true}
providedContexts={[
{
name: "Text MessagePart Context",
color: contextColors["MessagePart Context"],
link: "#MessagePart-context",
},
]}
docsLink="./context-providers/text-message-part-provider"
tooltip="Provides context for text message parts"
props="text={text}"
<ContextLevel color={contextColors["Assistant Context"]}>
Assistant Context#
The context available to components inside <AssistantRuntimeProvider />. You usually wrap your entire application in this context.
AssistantRuntime#
Programmatically access the assistant's state and actions via useAui().
Instructions#
Add system prompt instructions
Tool UI#
Register tool UIs
Programmatically access the list of registered tool UIs via useAuiState((s) => s.tools) and useAui().tools().
ThreadListPrimitive#
Shows a list of threads and allows the user to switch between them.
<Component
name="ThreadListPrimitive.Root"
docsLink="#thread-list-primitive-root"
tooltip="Root component for the thread list"
<Component
name="ThreadListPrimitive.Items"
isContextProvider={true}
providedContexts={[
{
name: "ThreadListItem Context",
color: contextColors["ThreadListItem Context"],
},
]}
docsLink="#thread-list-primitive-items"
tooltip="Container for thread list items, provides context for individual items"
props="components={...}"
/>
<ContextLevel color={contextColors["Thread Context"]}>
Thread Context#
The context for a single thread. Currently always corresponds to the runtime's main thread.
ThreadRuntime#
Programmatically access the thread's state and actions.
- State:
useAuiState((s) => s.thread) - Actions:
useAui().thread() - Composer:
useAuiState((s) => s.composer)
ModelContext#
useAui().thread().getModelContext()
ThreadViewportStore#
ThreadPrimitive#
A conversation thread.
<Component
name="ThreadPrimitive.Root"
docsLink="#thread-primitive-root"
tooltip="Root component for a thread"
<Component
name="ThreadPrimitive.Viewport"
docsLink="#thread-primitive-viewport"
tooltip="Viewport for the thread content"
<Component
name="ThreadPrimitive.Messages"
isContextProvider={true}
providedContexts={[
{ name: "Message Context", color: contextColors["Message Context"] },
{
name: "Edit Composer Context",
color: contextColors["Composer Context"],
link: "#composer-context",
},
]}
docsLink="#thread-primitive-messages"
tooltip="Container for thread messages, provides context for messages and edit composer"
AssistantModalPrimitive#
A floating modal that usually appears in the lower right corner of the screen. Common for support use cases.
<Component
name="AssistantModalPrimitive.Root"
docsLink="#assistant-modal-primitive-root"
tooltip="Root component for the assistant modal"
<ContextLevel color={contextColors["Composer Context"]}>
Composer Context#
Manages the state and actions for the message composer
ComposerRuntime#
- State:
useAuiState((s) => s.composer) - Actions:
useAui().composer()
ComposerPrimitive#
<Component
name="ComposerPrimitive.Root"
docsLink="#composer-primitive-root"
tooltip="Root component for the composer"
<Component
name="ComposerPrimitive.Attachments"
isContextProvider={true}
providedContexts={[
{
name: "Attachment Context",
color: contextColors["Attachment Context"],
},
]}
docsLink="#composer-primitive-attachments"
tooltip="Manages attachments in the composer"
/>
<ContextLevel color={contextColors["Message Context"]}>
Message Context#
Manages the state and actions for individual messages
MessageRuntime#
- State:
useAuiState((s) => s.message) - Edit Composer:
useAuiState((s) => s.message.composer) - Actions:
useAui().message() - Utilities:
useAuiState((s) => s.message.isCopied)/useAuiState((s) => s.message.isHovering)
MessagePrimitive#
<Component
name="MessagePrimitive.Root"
docsLink="#message-primitive-root"
tooltip="Root component for a message"
<Component
name="MessagePrimitive.Parts"
isContextProvider={true}
providedContexts={[
{
name: "MessagePart Context",
color: contextColors["MessagePart Context"],
},
]}
docsLink="#message-primitive-parts"
tooltip="Displays the parts of the message"
/>
<Component
name="MessagePrimitive.Attachments"
isContextProvider={true}
providedContexts={[
{
name: "Attachment Context",
color: contextColors["Attachment Context"],
},
]}
docsLink="#message-primitive-attachments"
tooltip="Displays attachments in the message"
/>
ActionBarPrimitive#
<Component
name="ActionBarPrimitive.Root"
docsLink="#action-bar-primitive-root"
tooltip="Root component for the action bar"
BranchPickerPrimitive#
<Component
name="BranchPickerPrimitive.Root"
docsLink="#branch-picker-primitive-root"
tooltip="Root component for the branch picker"
<ContextLevel color={contextColors["MessagePart Context"]}>
MessagePart Context#
Manages the state and actions for message parts within messages
MessagePartRuntime#
- State:
useAuiState((s) => s.part) - Actions:
useAui().part()
MessagePartPrimitive#
MarkdownText#
<ContextLevel color={contextColors["Attachment Context"]}>
Attachment Context#
Manages the state and actions for attachments in messages and composer
AttachmentRuntime#
- State:
useAuiState((s) => s.attachment) - Actions:
useAui().attachment()
AttachmentPrimitive#
<Component
name="AttachmentPrimitive.Root"
docsLink="#attachment-primitive-root"
tooltip="Root component for an attachment"
<ContextLevel color={contextColors["ThreadListItem Context"]}>
ThreadListItem Context#
Manages the state and actions for individual thread list items
ThreadListItemRuntime#
- State:
useAuiState((s) => s.threadListItem) - Actions:
useAui().threadListItem()
ThreadListItem#
<Component
name="ThreadListItemPrimitive.Root"
docsLink="#thread-list-item-primitive-root"
tooltip="Root component for a thread list item"
<Component
name="ThreadListItemPrimitive.Trigger"
docsLink="#thread-list-item-primitive-trigger"
tooltip="Trigger for thread list item actions"