@assistant-ui/mcp-docs-server 0.1.29 → 0.1.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/.docs/organized/code-examples/waterfall.md +15 -7
  2. package/.docs/organized/code-examples/with-a2a.md +9 -21
  3. package/.docs/organized/code-examples/with-ag-ui.md +11 -8
  4. package/.docs/organized/code-examples/with-ai-sdk-v6.md +10 -10
  5. package/.docs/organized/code-examples/with-artifacts.md +12 -10
  6. package/.docs/organized/code-examples/with-assistant-transport.md +11 -12
  7. package/.docs/organized/code-examples/with-chain-of-thought.md +83 -54
  8. package/.docs/organized/code-examples/with-cloud-standalone.md +14 -11
  9. package/.docs/organized/code-examples/with-cloud.md +9 -10
  10. package/.docs/organized/code-examples/with-custom-thread-list.md +61 -16
  11. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +17 -12
  12. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +13 -13
  13. package/.docs/organized/code-examples/with-expo.md +25 -21
  14. package/.docs/organized/code-examples/with-external-store.md +8 -8
  15. package/.docs/organized/code-examples/with-ffmpeg.md +17 -12
  16. package/.docs/organized/code-examples/with-generative-ui.md +9 -9
  17. package/.docs/organized/code-examples/with-google-adk.md +8 -8
  18. package/.docs/organized/code-examples/with-heat-graph.md +5 -5
  19. package/.docs/organized/code-examples/with-interactables.md +10 -25
  20. package/.docs/organized/code-examples/with-langchain.md +437 -0
  21. package/.docs/organized/code-examples/with-langgraph.md +16 -16
  22. package/.docs/organized/code-examples/with-livekit.md +18 -13
  23. package/.docs/organized/code-examples/with-opencode.md +105 -62
  24. package/.docs/organized/code-examples/with-parent-id-grouping.md +10 -10
  25. package/.docs/organized/code-examples/with-react-hook-form.md +220 -148
  26. package/.docs/organized/code-examples/with-react-ink.md +2 -2
  27. package/.docs/organized/code-examples/with-react-router.md +12 -12
  28. package/.docs/organized/code-examples/with-store.md +8 -5
  29. package/.docs/organized/code-examples/with-tanstack.md +10 -10
  30. package/.docs/organized/code-examples/with-tap-runtime.md +10 -6
  31. package/.docs/raw/docs/(docs)/cli.mdx +2 -1
  32. package/.docs/raw/docs/(docs)/copilots/assistant-frame.mdx +1 -0
  33. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +10 -3
  34. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +8 -3
  35. package/.docs/raw/docs/(docs)/copilots/make-assistant-visible.mdx +1 -0
  36. package/.docs/raw/docs/(docs)/copilots/model-context.mdx +1 -0
  37. package/.docs/raw/docs/(docs)/copilots/motivation.mdx +1 -0
  38. package/.docs/raw/docs/(docs)/copilots/use-assistant-instructions.mdx +1 -0
  39. package/.docs/raw/docs/(docs)/devtools.mdx +1 -0
  40. package/.docs/raw/docs/(docs)/index.mdx +1 -0
  41. package/.docs/raw/docs/(docs)/installation.mdx +1 -0
  42. package/.docs/raw/docs/(docs)/rtl.mdx +80 -0
  43. package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +34 -0
  44. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback-speech.mdx +41 -0
  45. package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +26 -0
  46. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +34 -0
  47. package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +31 -0
  48. package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +20 -0
  49. package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +26 -0
  50. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +72 -0
  51. package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +41 -0
  52. package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +48 -0
  53. package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +30 -0
  54. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +23 -0
  55. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +21 -0
  56. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +7 -0
  57. package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +149 -40
  58. package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +65 -0
  59. package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +2 -0
  60. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +50 -6
  61. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +15 -0
  62. package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +36 -1
  63. package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +38 -0
  64. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +9 -0
  65. package/.docs/raw/docs/(reference)/migrations/v0-14.mdx +144 -6
  66. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +231 -3
  67. package/.docs/raw/docs/cloud/ai-sdk.mdx +221 -3
  68. package/.docs/raw/docs/cloud/langgraph.mdx +274 -2
  69. package/.docs/raw/docs/{(docs)/guides → guides}/attachments.mdx +41 -36
  70. package/.docs/raw/docs/guides/branching.mdx +76 -0
  71. package/.docs/raw/docs/guides/chain-of-thought.mdx +166 -0
  72. package/.docs/raw/docs/{(docs)/guides → guides}/context-api.mdx +50 -22
  73. package/.docs/raw/docs/{(docs)/guides → guides}/dictation.mdx +2 -0
  74. package/.docs/raw/docs/guides/editing.mdx +102 -0
  75. package/.docs/raw/docs/guides/index.mdx +103 -0
  76. package/.docs/raw/docs/{(docs)/guides → guides}/interactables.mdx +49 -0
  77. package/.docs/raw/docs/{(docs)/guides → guides}/latex.mdx +51 -8
  78. package/.docs/raw/docs/guides/mentions.mdx +520 -0
  79. package/.docs/raw/docs/{(docs)/guides → guides}/message-timing.mdx +8 -2
  80. package/.docs/raw/docs/{(docs)/guides → guides}/multi-agent.mdx +64 -4
  81. package/.docs/raw/docs/{(docs)/guides → guides}/quoting.mdx +10 -17
  82. package/.docs/raw/docs/guides/slash-commands.mdx +361 -0
  83. package/.docs/raw/docs/guides/speech.mdx +156 -0
  84. package/.docs/raw/docs/{(docs)/guides → guides}/suggestions.mdx +21 -83
  85. package/.docs/raw/docs/{(docs)/guides → guides}/tool-ui.mdx +108 -36
  86. package/.docs/raw/docs/{(docs)/guides → guides}/tools.mdx +131 -35
  87. package/.docs/raw/docs/{(docs)/guides → guides}/voice.mdx +39 -0
  88. package/.docs/raw/docs/ink/index.mdx +1 -3
  89. package/.docs/raw/docs/ink/migration.mdx +1 -3
  90. package/.docs/raw/docs/ink/primitives.mdx +37 -1
  91. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +520 -0
  92. package/.docs/raw/docs/integrations/auth/better-auth.mdx +191 -0
  93. package/.docs/raw/docs/integrations/auth/clerk.mdx +172 -0
  94. package/.docs/raw/docs/integrations/auth/next-auth.mdx +196 -0
  95. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +79 -0
  96. package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +188 -0
  97. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +57 -0
  98. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +201 -0
  99. package/.docs/raw/docs/integrations/gateways/index.mdx +157 -0
  100. package/.docs/raw/docs/integrations/index.mdx +173 -0
  101. package/.docs/raw/docs/integrations/observability/helicone.mdx +130 -0
  102. package/.docs/raw/docs/integrations/observability/langfuse.mdx +156 -0
  103. package/.docs/raw/docs/integrations/observability/langsmith.mdx +146 -0
  104. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +712 -0
  105. package/.docs/raw/docs/integrations/tools/mcp.mdx +267 -0
  106. package/.docs/raw/docs/primitives/action-bar.mdx +1 -0
  107. package/.docs/raw/docs/primitives/assistant-modal.mdx +1 -0
  108. package/.docs/raw/docs/primitives/attachment.mdx +1 -0
  109. package/.docs/raw/docs/primitives/branch-picker.mdx +1 -0
  110. package/.docs/raw/docs/primitives/chain-of-thought.mdx +90 -85
  111. package/.docs/raw/docs/primitives/composer.mdx +96 -63
  112. package/.docs/raw/docs/primitives/error.mdx +1 -0
  113. package/.docs/raw/docs/primitives/index.mdx +2 -1
  114. package/.docs/raw/docs/primitives/message.mdx +68 -5
  115. package/.docs/raw/docs/primitives/selection-toolbar.mdx +1 -0
  116. package/.docs/raw/docs/primitives/suggestion.mdx +1 -0
  117. package/.docs/raw/docs/primitives/thread-list.mdx +39 -0
  118. package/.docs/raw/docs/primitives/thread.mdx +16 -13
  119. package/.docs/raw/docs/react-native/index.mdx +1 -3
  120. package/.docs/raw/docs/react-native/migration.mdx +1 -3
  121. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +396 -0
  122. package/.docs/raw/docs/runtimes/a2a/overview.mdx +60 -0
  123. package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +216 -0
  124. package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +70 -0
  125. package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +243 -0
  126. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +123 -0
  127. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +52 -0
  128. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +71 -131
  129. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +69 -63
  130. package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +365 -101
  131. package/.docs/raw/docs/runtimes/concepts/adapters.mdx +265 -0
  132. package/.docs/raw/docs/runtimes/concepts/architecture.mdx +125 -0
  133. package/.docs/raw/docs/runtimes/concepts/stability.mdx +67 -0
  134. package/.docs/raw/docs/runtimes/concepts/threads.mdx +428 -0
  135. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +703 -0
  136. package/.docs/raw/docs/runtimes/custom/data-stream.mdx +323 -0
  137. package/.docs/raw/docs/runtimes/custom/external-store.mdx +253 -1236
  138. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +746 -0
  139. package/.docs/raw/docs/runtimes/custom/overview.mdx +71 -0
  140. package/.docs/raw/docs/runtimes/google-adk/api.mdx +256 -0
  141. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +717 -0
  142. package/.docs/raw/docs/runtimes/google-adk/overview.mdx +69 -0
  143. package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +229 -0
  144. package/.docs/raw/docs/runtimes/langchain.mdx +533 -0
  145. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +305 -0
  146. package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +104 -0
  147. package/.docs/raw/docs/runtimes/langgraph/overview.mdx +84 -0
  148. package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +496 -0
  149. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +127 -0
  150. package/.docs/raw/docs/runtimes/langgraph/threads.mdx +113 -0
  151. package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +3 -3
  152. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -23
  153. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +1 -1
  154. package/.docs/raw/docs/runtimes/opencode/hooks.mdx +191 -0
  155. package/.docs/raw/docs/runtimes/opencode/overview.mdx +48 -0
  156. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +119 -0
  157. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +74 -198
  158. package/.docs/raw/docs/ui/accordion.mdx +1 -0
  159. package/.docs/raw/docs/ui/assistant-modal.mdx +1 -0
  160. package/.docs/raw/docs/ui/assistant-sidebar.mdx +1 -0
  161. package/.docs/raw/docs/ui/attachment.mdx +1 -0
  162. package/.docs/raw/docs/ui/badge.mdx +1 -0
  163. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +200 -0
  164. package/.docs/raw/docs/ui/context-display.mdx +1 -0
  165. package/.docs/raw/docs/ui/diff-viewer.mdx +1 -0
  166. package/.docs/raw/docs/ui/directive-text.mdx +114 -0
  167. package/.docs/raw/docs/ui/file.mdx +1 -0
  168. package/.docs/raw/docs/ui/image.mdx +1 -0
  169. package/.docs/raw/docs/ui/markdown.mdx +2 -14
  170. package/.docs/raw/docs/ui/mermaid.mdx +1 -0
  171. package/.docs/raw/docs/ui/message-timing.mdx +3 -2
  172. package/.docs/raw/docs/ui/model-selector.mdx +1 -0
  173. package/.docs/raw/docs/ui/part-grouping.mdx +325 -313
  174. package/.docs/raw/docs/ui/quote.mdx +1 -0
  175. package/.docs/raw/docs/ui/reasoning.mdx +69 -32
  176. package/.docs/raw/docs/ui/scrollbar.mdx +1 -0
  177. package/.docs/raw/docs/ui/select.mdx +1 -0
  178. package/.docs/raw/docs/ui/sources.mdx +1 -0
  179. package/.docs/raw/docs/ui/streamdown.mdx +1 -0
  180. package/.docs/raw/docs/ui/syntax-highlighting.mdx +1 -0
  181. package/.docs/raw/docs/ui/tabs.mdx +1 -0
  182. package/.docs/raw/docs/ui/thread-list.mdx +17 -0
  183. package/.docs/raw/docs/ui/thread.mdx +56 -1
  184. package/.docs/raw/docs/ui/tool-fallback.mdx +1 -0
  185. package/.docs/raw/docs/ui/tool-group.mdx +39 -11
  186. package/.docs/raw/docs/ui/voice.mdx +1 -0
  187. package/.docs/raw/docs/utilities/heat-graph.mdx +1 -0
  188. package/.docs/raw/docs/utilities/react-o11y.mdx +278 -0
  189. package/.docs/raw/docs/utilities/tw-shimmer.mdx +1 -0
  190. package/dist/utils/logger.js +1 -1
  191. package/dist/utils/logger.js.map +1 -1
  192. package/package.json +4 -4
  193. package/src/tools/tests/path-traversal.test.ts +1 -1
  194. package/src/utils/logger.ts +1 -1
  195. package/.docs/raw/docs/(docs)/guides/branching.mdx +0 -65
  196. package/.docs/raw/docs/(docs)/guides/chain-of-thought.mdx +0 -164
  197. package/.docs/raw/docs/(docs)/guides/editing.mdx +0 -66
  198. package/.docs/raw/docs/(docs)/guides/mentions.mdx +0 -406
  199. package/.docs/raw/docs/(docs)/guides/slash-commands.mdx +0 -275
  200. package/.docs/raw/docs/(docs)/guides/speech.mdx +0 -38
  201. package/.docs/raw/docs/runtimes/a2a/index.mdx +0 -298
  202. package/.docs/raw/docs/runtimes/assistant-transport.mdx +0 -1033
  203. package/.docs/raw/docs/runtimes/custom/custom-thread-list.mdx +0 -268
  204. package/.docs/raw/docs/runtimes/custom/local.mdx +0 -1464
  205. package/.docs/raw/docs/runtimes/data-stream.mdx +0 -422
  206. package/.docs/raw/docs/runtimes/google-adk/index.mdx +0 -686
  207. package/.docs/raw/docs/runtimes/helicone.mdx +0 -61
  208. package/.docs/raw/docs/runtimes/langgraph/index.mdx +0 -607
  209. package/.docs/raw/docs/runtimes/langgraph/tutorial/index.mdx +0 -12
  210. package/.docs/raw/docs/runtimes/langserve.mdx +0 -116
  211. package/.docs/raw/docs/runtimes/mastra/full-stack-integration.mdx +0 -218
  212. package/.docs/raw/docs/runtimes/mastra/overview.mdx +0 -18
  213. package/.docs/raw/docs/runtimes/mastra/separate-server-integration.mdx +0 -217
  214. package/.docs/raw/docs/ui/mention.mdx +0 -168
@@ -1,422 +0,0 @@
1
- ---
2
- title: Data Stream Protocol
3
- description: Integration with data stream protocol endpoints for streaming AI responses.
4
- ---
5
-
6
-
7
- The `@assistant-ui/react-data-stream` package provides integration with data stream protocol endpoints, enabling streaming AI responses with tool support and state management.
8
-
9
- ## Overview
10
-
11
- The data stream protocol is a standardized format for streaming AI responses that supports:
12
-
13
- - **Streaming text responses** with real-time updates
14
- - **Tool calling** with structured parameters and results
15
- - **State management** for conversation context
16
- - **Error handling** and cancellation support
17
- - **Attachment support** for multimodal interactions
18
-
19
- ## Installation
20
-
21
- <InstallCommand npm={["@assistant-ui/react", "@assistant-ui/react-data-stream"]} />
22
-
23
- ## Basic Usage
24
-
25
- <Steps>
26
-
27
- <Step>
28
-
29
- ### Set up the Runtime
30
-
31
- Use `useDataStreamRuntime` to connect to your data stream endpoint:
32
-
33
- ```tsx title="app/page.tsx"
34
- "use client";
35
- import { useDataStreamRuntime } from "@assistant-ui/react-data-stream";
36
- import { AssistantRuntimeProvider } from "@assistant-ui/react";
37
- import { Thread } from "@/components/assistant-ui/thread";
38
-
39
- export default function ChatPage() {
40
- const runtime = useDataStreamRuntime({
41
- api: "/api/chat",
42
- });
43
-
44
- return (
45
- <AssistantRuntimeProvider runtime={runtime}>
46
- <Thread />
47
- </AssistantRuntimeProvider>
48
- );
49
- }
50
- ```
51
-
52
- </Step>
53
-
54
- <Step>
55
-
56
- ### Create Backend Endpoint
57
-
58
- Your backend endpoint should accept POST requests and return data stream responses:
59
-
60
- ```typescript title="app/api/chat/route.ts"
61
- import { createAssistantStreamResponse } from "assistant-stream";
62
-
63
- export async function POST(request: Request) {
64
- const { messages, tools, system, threadId } = await request.json();
65
-
66
- return createAssistantStreamResponse(async (controller) => {
67
- // Process the request with your AI provider
68
- const stream = await processWithAI({
69
- messages,
70
- tools,
71
- system,
72
- });
73
-
74
- // Stream the response
75
- for await (const chunk of stream) {
76
- controller.appendText(chunk.text);
77
- }
78
- });
79
- }
80
- ```
81
-
82
- The request body includes:
83
- - `messages` - The conversation history
84
- - `tools` - Available tool definitions
85
- - `system` - System prompt (if configured)
86
- - `threadId` - The current thread/conversation identifier
87
-
88
- </Step>
89
-
90
- </Steps>
91
-
92
- ## Advanced Configuration
93
-
94
- ### Custom Headers and Authentication
95
-
96
- ```tsx
97
- const runtime = useDataStreamRuntime({
98
- api: "/api/chat",
99
- headers: {
100
- "Authorization": "Bearer " + token,
101
- "X-Custom-Header": "value",
102
- },
103
- credentials: "include",
104
- });
105
- ```
106
-
107
- ### Dynamic Headers
108
-
109
- ```tsx
110
- const runtime = useDataStreamRuntime({
111
- api: "/api/chat",
112
- headers: async () => {
113
- const token = await getAuthToken();
114
- return {
115
- "Authorization": "Bearer " + token,
116
- };
117
- },
118
- });
119
- ```
120
-
121
- ### Dynamic Body
122
-
123
- ```tsx
124
- const runtime = useDataStreamRuntime({
125
- api: "/api/chat",
126
- headers: async () => ({
127
- "Authorization": `Bearer ${await getAuthToken()}`,
128
- }),
129
- body: async () => ({
130
- requestId: crypto.randomUUID(),
131
- timestamp: Date.now(),
132
- signature: await computeSignature(),
133
- }),
134
- });
135
- ```
136
-
137
- ### Event Callbacks
138
-
139
- ```tsx
140
- const runtime = useDataStreamRuntime({
141
- api: "/api/chat",
142
- onResponse: (response) => {
143
- console.log("Response received:", response.status);
144
- },
145
- onFinish: (message) => {
146
- console.log("Message completed:", message);
147
- },
148
- onError: (error) => {
149
- console.error("Error occurred:", error);
150
- },
151
- onCancel: () => {
152
- console.log("Request cancelled");
153
- },
154
- });
155
- ```
156
-
157
- ## Tool Integration
158
-
159
- <Callout type="warn">
160
- Human-in-the-loop tools (using `human()` for tool interrupts) are not supported
161
- in the data stream runtime. If you need human approval workflows or interactive
162
- tool UIs, consider using [LocalRuntime](/docs/runtimes/custom/local) or
163
- [Assistant Cloud](/docs/cloud) instead.
164
- </Callout>
165
-
166
- ### Frontend Tools
167
-
168
- Use `toToolsJSONSchema` to serialize client-side tools:
169
-
170
- ```tsx
171
- import { tool } from "@assistant-ui/react";
172
- import { toToolsJSONSchema } from "assistant-stream";
173
-
174
- const myTools = {
175
- get_weather: tool({
176
- description: "Get current weather",
177
- parameters: z.object({
178
- location: z.string(),
179
- }),
180
- execute: async ({ location }) => {
181
- const weather = await fetchWeather(location);
182
- return `Weather in ${location}: ${weather}`;
183
- },
184
- }),
185
- };
186
-
187
- const runtime = useDataStreamRuntime({
188
- api: "/api/chat",
189
- body: {
190
- tools: toToolsJSONSchema(myTools),
191
- },
192
- });
193
- ```
194
-
195
- ### Backend Tool Processing
196
-
197
- Your backend should handle tool calls and return results:
198
-
199
- ```typescript title="Backend tool handling"
200
- // Tools are automatically forwarded to your endpoint
201
- const { tools } = await request.json();
202
-
203
- // Process tools with your AI provider
204
- const response = await ai.generateText({
205
- messages,
206
- tools,
207
- // Tool results are streamed back automatically
208
- });
209
- ```
210
-
211
- ## Assistant Cloud Integration
212
-
213
- For Assistant Cloud deployments, use `useCloudRuntime`:
214
-
215
- ```tsx
216
- import { useCloudRuntime } from "@assistant-ui/react-data-stream";
217
-
218
- const runtime = useCloudRuntime({
219
- cloud: assistantCloud,
220
- assistantId: "my-assistant-id",
221
- });
222
- ```
223
-
224
- <Callout type="info">
225
- The `useCloudRuntime` hook is currently under active development and not yet ready for production use.
226
- </Callout>
227
-
228
- ## Message Conversion
229
-
230
- ### Framework-Agnostic Conversion (Recommended)
231
-
232
- For custom integrations, use the framework-agnostic utilities from `assistant-stream`:
233
-
234
- ```tsx
235
- import { toGenericMessages, toToolsJSONSchema } from "assistant-stream";
236
-
237
- // Convert messages to a generic format
238
- const genericMessages = toGenericMessages(messages);
239
-
240
- // Convert tools to JSON Schema format
241
- const toolSchemas = toToolsJSONSchema(tools);
242
- ```
243
-
244
- The `GenericMessage` format can be easily converted to any LLM provider format:
245
-
246
- ```tsx
247
- import type { GenericMessage } from "assistant-stream";
248
-
249
- // GenericMessage is a union of:
250
- // - { role: "system"; content: string }
251
- // - { role: "user"; content: (GenericTextPart | GenericFilePart)[] }
252
- // - { role: "assistant"; content: (GenericTextPart | GenericToolCallPart)[] }
253
- // - { role: "tool"; content: GenericToolResultPart[] }
254
- ```
255
-
256
- ### AI SDK Specific Conversion
257
-
258
- For AI SDK integration, use `toLanguageModelMessages`:
259
-
260
- ```tsx
261
- import { toLanguageModelMessages } from "@assistant-ui/react-data-stream";
262
-
263
- // Convert to AI SDK LanguageModelV2Message format
264
- const languageModelMessages = toLanguageModelMessages(messages, {
265
- unstable_includeId: true, // Include message IDs
266
- });
267
- ```
268
-
269
- <Callout type="info">
270
- `toLanguageModelMessages` internally uses `toGenericMessages` and adds AI SDK-specific transformations.
271
- For new custom integrations, prefer using `toGenericMessages` directly.
272
- </Callout>
273
-
274
- ## Error Handling
275
-
276
- The runtime automatically handles common error scenarios:
277
-
278
- - **Network errors**: Automatically retried with exponential backoff
279
- - **Stream interruptions**: Gracefully handled with partial content preservation
280
- - **Tool execution errors**: Displayed in the UI with error states
281
- - **Cancellation**: Clean abort signal handling
282
-
283
- ## Best Practices
284
-
285
- ### Performance Optimization
286
-
287
- ```tsx
288
- // Use React.memo for expensive components
289
- const OptimizedThread = React.memo(Thread);
290
-
291
- // Memoize runtime configuration
292
- const runtimeConfig = useMemo(() => ({
293
- api: "/api/chat",
294
- headers: { "Authorization": `Bearer ${token}` },
295
- }), [token]);
296
-
297
- const runtime = useDataStreamRuntime(runtimeConfig);
298
- ```
299
-
300
- ### Error Boundaries
301
-
302
- ```tsx
303
- import { ErrorBoundary } from "react-error-boundary";
304
-
305
- function ChatErrorFallback({ error, resetErrorBoundary }) {
306
- return (
307
- <div role="alert">
308
- <h2>Something went wrong:</h2>
309
- <pre>{error.message}</pre>
310
- <button onClick={resetErrorBoundary}>Try again</button>
311
- </div>
312
- );
313
- }
314
-
315
- export default function App() {
316
- return (
317
- <ErrorBoundary FallbackComponent={ChatErrorFallback}>
318
- <AssistantRuntimeProvider runtime={runtime}>
319
- <Thread />
320
- </AssistantRuntimeProvider>
321
- </ErrorBoundary>
322
- );
323
- }
324
- ```
325
-
326
- ### State Persistence
327
-
328
- ```tsx
329
- const runtime = useDataStreamRuntime({
330
- api: "/api/chat",
331
- body: {
332
- // Include conversation state
333
- state: conversationState,
334
- },
335
- onFinish: (message) => {
336
- // Save state after each message
337
- saveConversationState(message.metadata.unstable_state);
338
- },
339
- });
340
- ```
341
-
342
- ## Examples
343
-
344
- Explore our [examples repository](https://github.com/assistant-ui/assistant-ui/tree/main/examples) for implementation references.
345
-
346
- ## LocalRuntimeOptions
347
-
348
- `useDataStreamRuntime` accepts all options from `LocalRuntimeOptions` in addition to its own options. These control the underlying local runtime behavior.
349
-
350
- ### `maxSteps`
351
-
352
- The maximum number of agentic steps (tool call rounds) allowed per run. Defaults to unlimited.
353
-
354
- ```tsx
355
- const runtime = useDataStreamRuntime({
356
- api: "/api/chat",
357
- maxSteps: 5,
358
- });
359
- ```
360
-
361
- ### `initialMessages`
362
-
363
- Pre-populate the thread with messages on first render. Useful for continuing an existing conversation.
364
-
365
- ```tsx
366
- const runtime = useDataStreamRuntime({
367
- api: "/api/chat",
368
- initialMessages: [
369
- { role: "user", content: [{ type: "text", text: "Hello" }] },
370
- { role: "assistant", content: [{ type: "text", text: "Hi! How can I help?" }] },
371
- ],
372
- });
373
- ```
374
-
375
- ### `adapters`
376
-
377
- Extend the runtime with optional capability adapters. The `chatModel` adapter is handled internally by `useDataStreamRuntime` and cannot be overridden here.
378
-
379
- ```tsx
380
- const runtime = useDataStreamRuntime({
381
- api: "/api/chat",
382
- adapters: {
383
- attachments: myAttachmentAdapter,
384
- history: myHistoryAdapter,
385
- speech: mySpeechAdapter,
386
- dictation: myDictationAdapter,
387
- feedback: myFeedbackAdapter,
388
- suggestion: mySuggestionAdapter,
389
- },
390
- });
391
- ```
392
-
393
- See the [LocalRuntime adapters documentation](/docs/runtimes/custom/local#adapters) for details on implementing each adapter.
394
-
395
- ### `cloud`
396
-
397
- Connect to [Assistant Cloud](/docs/cloud) for managed multi-thread support, persistence, and thread management.
398
-
399
- ```tsx
400
- import { AssistantCloud } from "assistant-cloud";
401
-
402
- const cloud = new AssistantCloud({ /* ... */ });
403
-
404
- const runtime = useDataStreamRuntime({
405
- api: "/api/chat",
406
- cloud,
407
- });
408
- ```
409
-
410
- ### `unstable_humanToolNames`
411
-
412
- Names of tools that should pause execution and wait for human or external approval before proceeding.
413
-
414
- <Callout type="warn">
415
- Human-in-the-loop tool interrupts (`unstable_humanToolNames`) are not supported
416
- in the data stream runtime. Use [LocalRuntime](/docs/runtimes/custom/local) if
417
- you need this feature.
418
- </Callout>
419
-
420
- ## API Reference
421
-
422
- For detailed API documentation, see the [`@assistant-ui/react-data-stream` API Reference](/docs/api-reference/integrations/react-data-stream).