@assistant-ui/mcp-docs-server 0.2.1 → 0.2.3

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 (187) hide show
  1. package/.docs/organized/code-examples/waterfall.md +3 -3
  2. package/.docs/organized/code-examples/with-a2a.md +5 -4
  3. package/.docs/organized/code-examples/with-ag-ui.md +7 -6
  4. package/.docs/organized/code-examples/with-ai-sdk-v7.md +14 -13
  5. package/.docs/organized/code-examples/with-artifacts.md +12 -11
  6. package/.docs/organized/code-examples/with-assistant-transport.md +6 -5
  7. package/.docs/organized/code-examples/with-browser-extension.md +6 -6
  8. package/.docs/organized/code-examples/with-chain-of-thought.md +16 -14
  9. package/.docs/organized/code-examples/with-cloud-standalone.md +7 -7
  10. package/.docs/organized/code-examples/with-cloud.md +11 -10
  11. package/.docs/organized/code-examples/with-custom-thread-list.md +11 -10
  12. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +14 -13
  13. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +15 -14
  14. package/.docs/organized/code-examples/with-eve.md +6 -5
  15. package/.docs/organized/code-examples/with-expo.md +213 -36
  16. package/.docs/organized/code-examples/with-external-store.md +6 -5
  17. package/.docs/organized/code-examples/with-ffmpeg.md +11 -10
  18. package/.docs/organized/code-examples/with-generative-ui.md +263 -29
  19. package/.docs/organized/code-examples/with-google-adk.md +5 -4
  20. package/.docs/organized/code-examples/with-heat-graph.md +3 -3
  21. package/.docs/organized/code-examples/with-image-generation.md +8 -7
  22. package/.docs/organized/code-examples/with-interactables.md +11 -10
  23. package/.docs/organized/code-examples/with-langchain.md +10 -9
  24. package/.docs/organized/code-examples/with-langgraph.md +7 -6
  25. package/.docs/organized/code-examples/with-livekit.md +15 -14
  26. package/.docs/organized/code-examples/with-mcp.md +14 -12
  27. package/.docs/organized/code-examples/with-nuxt.md +511 -575
  28. package/.docs/organized/code-examples/with-opencode.md +4 -4
  29. package/.docs/organized/code-examples/with-openui.md +450 -0
  30. package/.docs/organized/code-examples/with-pi.md +6 -5
  31. package/.docs/organized/code-examples/with-react-hook-form.md +16 -13
  32. package/.docs/organized/code-examples/with-react-ink-web.md +65 -15
  33. package/.docs/organized/code-examples/with-react-ink.md +5 -4
  34. package/.docs/organized/code-examples/with-react-router.md +8 -7
  35. package/.docs/organized/code-examples/with-resumable-stream.md +13 -12
  36. package/.docs/organized/code-examples/with-store.md +3 -3
  37. package/.docs/organized/code-examples/with-svelte.md +415 -0
  38. package/.docs/organized/code-examples/with-sveltekit.md +1061 -0
  39. package/.docs/organized/code-examples/with-tanstack.md +10 -9
  40. package/.docs/organized/code-examples/with-tap-runtime.md +5 -4
  41. package/.docs/organized/code-examples/with-virtualized-thread.md +6 -5
  42. package/.docs/organized/code-examples/with-vue.md +2 -2
  43. package/.docs/raw/docs/{(docs) → (getting-started)}/cli.mdx +6 -1
  44. package/.docs/raw/docs/{(docs) → (getting-started)}/devtools.mdx +1 -1
  45. package/.docs/raw/docs/{(docs) → (getting-started)}/index.mdx +4 -2
  46. package/.docs/raw/docs/{(docs) → (getting-started)}/installation.mdx +26 -26
  47. package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +6 -0
  48. package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +1 -1
  49. package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +6 -1
  50. package/.docs/raw/docs/(reference)/api-reference/generative-ui/slack.mdx +5 -1
  51. package/.docs/raw/docs/(reference)/api-reference/generative-ui/teams.mdx +9 -2
  52. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +2 -2
  53. package/.docs/raw/docs/(reference)/api-reference/integrations/{react-ai-sdk.mdx → ai-sdk.mdx} +43 -18
  54. package/.docs/raw/docs/(reference)/api-reference/integrations/eve.mdx +61 -2
  55. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +3 -3
  56. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +2 -2
  57. package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +20 -2
  58. package/.docs/raw/docs/(reference)/api-reference/tools/interactables.mdx +1 -1
  59. package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +1 -1
  60. package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +1 -1
  61. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +32 -1
  62. package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +1 -1
  63. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +10 -10
  64. package/.docs/raw/docs/cloud/ai-sdk.mdx +4 -2
  65. package/.docs/raw/docs/cloud/index.mdx +1 -1
  66. package/.docs/raw/docs/copilots/assistant-frame.mdx +19 -8
  67. package/.docs/raw/docs/guides/attachments.mdx +4 -4
  68. package/.docs/raw/docs/guides/branching.mdx +1 -1
  69. package/.docs/raw/docs/guides/chatgpt-subscription.mdx +1 -1
  70. package/.docs/raw/docs/guides/context-api.mdx +15 -17
  71. package/.docs/raw/docs/guides/dictation.mdx +2 -2
  72. package/.docs/raw/docs/guides/electron.mdx +1 -1
  73. package/.docs/raw/docs/guides/latex.mdx +1 -1
  74. package/.docs/raw/docs/guides/mentions.mdx +2 -0
  75. package/.docs/raw/docs/guides/message-timing.mdx +11 -5
  76. package/.docs/raw/docs/guides/quoting.mdx +1 -1
  77. package/.docs/raw/docs/guides/resumable-streams.mdx +3 -3
  78. package/.docs/raw/docs/guides/speech.mdx +1 -1
  79. package/.docs/raw/docs/guides/suggestions.mdx +8 -5
  80. package/.docs/raw/docs/guides/voice.mdx +1 -1
  81. package/.docs/raw/docs/ink/hooks.mdx +1 -1
  82. package/.docs/raw/docs/ink/index.mdx +3 -2
  83. package/.docs/raw/docs/ink/migration.mdx +1 -1
  84. package/.docs/raw/docs/ink/primitives.mdx +1 -1
  85. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +3 -3
  86. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +3 -3
  87. package/.docs/raw/docs/integrations/frameworks/{cloudflare-agents/overview.mdx → cloudflare-agents.mdx} +4 -3
  88. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +1 -1
  89. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +1 -1
  90. package/.docs/raw/docs/integrations/index.mdx +2 -2
  91. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +149 -131
  92. package/.docs/raw/docs/migrations/toolkit-tools.mdx +2 -2
  93. package/.docs/raw/docs/migrations/v0-15.mdx +34 -0
  94. package/.docs/raw/docs/primitives/action-bar.mdx +1 -1
  95. package/.docs/raw/docs/primitives/assistant-modal.mdx +1 -1
  96. package/.docs/raw/docs/primitives/attachment.mdx +1 -1
  97. package/.docs/raw/docs/primitives/branch-picker.mdx +1 -1
  98. package/.docs/raw/docs/primitives/chain-of-thought.mdx +3 -3
  99. package/.docs/raw/docs/primitives/composer.mdx +1 -1
  100. package/.docs/raw/docs/primitives/error.mdx +1 -1
  101. package/.docs/raw/docs/primitives/message.mdx +1 -1
  102. package/.docs/raw/docs/primitives/selection-toolbar.mdx +1 -1
  103. package/.docs/raw/docs/primitives/suggestion.mdx +4 -2
  104. package/.docs/raw/docs/primitives/thread-list.mdx +1 -1
  105. package/.docs/raw/docs/primitives/thread.mdx +2 -2
  106. package/.docs/raw/docs/react-native/adapters.mdx +1 -1
  107. package/.docs/raw/docs/react-native/index.mdx +2 -2
  108. package/.docs/raw/docs/react-native/migration.mdx +2 -2
  109. package/.docs/raw/docs/react-native/primitives.mdx +142 -5
  110. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +48 -6
  111. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +3 -3
  112. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +4 -4
  113. package/.docs/raw/docs/runtimes/ai-sdk/v7.mdx +31 -16
  114. package/.docs/raw/docs/runtimes/claude-managed-agents.mdx +118 -0
  115. package/.docs/raw/docs/runtimes/concepts/adapters.mdx +3 -3
  116. package/.docs/raw/docs/runtimes/concepts/architecture.mdx +3 -3
  117. package/.docs/raw/docs/runtimes/concepts/stability.mdx +2 -1
  118. package/.docs/raw/docs/runtimes/concepts/threads.mdx +73 -33
  119. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +1 -1
  120. package/.docs/raw/docs/runtimes/custom/external-store.mdx +6 -2
  121. package/.docs/raw/docs/runtimes/langchain.mdx +2 -2
  122. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +4 -0
  123. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +1 -1
  124. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +9 -2
  125. package/.docs/raw/docs/tools/backend.mdx +4 -4
  126. package/.docs/raw/docs/tools/defining-tools.mdx +21 -2
  127. package/.docs/raw/docs/tools/generative-ui-primitive.mdx +180 -0
  128. package/.docs/raw/docs/tools/generative-ui-slack.mdx +167 -0
  129. package/.docs/raw/docs/tools/generative-ui-teams.mdx +160 -0
  130. package/.docs/raw/docs/tools/generative-ui.mdx +224 -211
  131. package/.docs/raw/docs/tools/index.mdx +2 -1
  132. package/.docs/raw/docs/tools/interactables.mdx +8 -7
  133. package/.docs/raw/docs/tools/mcp-apps.mdx +18 -1
  134. package/.docs/raw/docs/tools/mcp.mdx +2 -2
  135. package/.docs/raw/docs/tools/openui.mdx +175 -0
  136. package/.docs/raw/docs/tools/tool-ui.mdx +18 -7
  137. package/.docs/raw/docs/tools/user-managed-mcp.mdx +7 -3
  138. package/.docs/raw/docs/ui/assistant-modal.mdx +3 -3
  139. package/.docs/raw/docs/ui/assistant-sidebar.mdx +1 -1
  140. package/.docs/raw/docs/ui/attachment.mdx +50 -3
  141. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +36 -1
  142. package/.docs/raw/docs/ui/context-display.mdx +1 -1
  143. package/.docs/raw/docs/ui/directive-text.mdx +1 -1
  144. package/.docs/raw/docs/ui/file.mdx +2 -2
  145. package/.docs/raw/docs/ui/follow-up-suggestions.mdx +1 -1
  146. package/.docs/raw/docs/ui/image.mdx +2 -2
  147. package/.docs/raw/docs/ui/markdown.mdx +40 -1
  148. package/.docs/raw/docs/ui/mermaid.mdx +1 -1
  149. package/.docs/raw/docs/ui/message-timing.mdx +1 -1
  150. package/.docs/raw/docs/ui/model-selector.mdx +4 -4
  151. package/.docs/raw/docs/ui/part-grouping.mdx +1 -1
  152. package/.docs/raw/docs/ui/quote.mdx +3 -3
  153. package/.docs/raw/docs/ui/reasoning.mdx +31 -3
  154. package/.docs/raw/docs/ui/scrollbar.mdx +1 -1
  155. package/.docs/raw/docs/ui/sources.mdx +10 -1
  156. package/.docs/raw/docs/ui/streamdown.mdx +2 -2
  157. package/.docs/raw/docs/ui/syntax-highlighting.mdx +1 -1
  158. package/.docs/raw/docs/ui/thread-list.mdx +40 -1
  159. package/.docs/raw/docs/ui/thread.mdx +49 -2
  160. package/.docs/raw/docs/ui/tool-fallback.mdx +23 -9
  161. package/.docs/raw/docs/ui/tool-group.mdx +1 -1
  162. package/.docs/raw/docs/ui/voice.mdx +1 -1
  163. package/.docs/raw/docs/utilities/react-o11y.mdx +2 -2
  164. package/dist/xulux/catalog-client.d.ts.map +1 -1
  165. package/dist/xulux/catalog-client.js +51 -6
  166. package/dist/xulux/catalog-client.js.map +1 -1
  167. package/dist/xulux/types.d.ts +7 -7
  168. package/dist/xulux/types.d.ts.map +1 -1
  169. package/dist/xulux/types.js.map +1 -1
  170. package/package.json +5 -5
  171. package/src/tools/tests/docs.test.ts +10 -7
  172. package/src/tools/tests/path-traversal.test.ts +5 -2
  173. package/src/tools/tests/xulux-templates.test.ts +63 -0
  174. package/src/xulux/catalog-client.ts +68 -23
  175. package/src/xulux/types.ts +17 -13
  176. package/.docs/raw/docs/tools/interactables-legacy.mdx +0 -423
  177. package/.docs/raw/docs/ui/accordion.mdx +0 -266
  178. package/.docs/raw/docs/ui/badge.mdx +0 -150
  179. package/.docs/raw/docs/ui/diff-viewer.mdx +0 -280
  180. package/.docs/raw/docs/ui/dot-matrix.mdx +0 -133
  181. package/.docs/raw/docs/ui/number-roll.mdx +0 -154
  182. package/.docs/raw/docs/ui/select.mdx +0 -254
  183. package/.docs/raw/docs/ui/tabs.mdx +0 -271
  184. /package/.docs/raw/docs/{(docs) → (getting-started)}/architecture.mdx +0 -0
  185. /package/.docs/raw/docs/{(docs) → (getting-started)}/base-ui.mdx +0 -0
  186. /package/.docs/raw/docs/{(docs) → (getting-started)}/llm.mdx +0 -0
  187. /package/.docs/raw/docs/{(docs) → (getting-started)}/rtl.mdx +0 -0
@@ -65,13 +65,13 @@
65
65
  "@assistant-ui/react": "workspace:*",
66
66
  "@assistant-ui/react-markdown": "workspace:*",
67
67
  "@tailwindcss/vite": "^4.3.3",
68
- "@tanstack/react-router": "^1.170.21",
69
- "@tanstack/react-start": "^1.168.38",
68
+ "@tanstack/react-router": "^1.170.32",
69
+ "@tanstack/react-start": "^1.168.49",
70
70
  "class-variance-authority": "^0.7.1",
71
71
  "clsx": "^2.1.1",
72
- "lucide-react": "^1.29.0",
72
+ "lucide-react": "^1.33.0",
73
73
  "nitro": "^3.0.260311-beta",
74
- "openai": "^7.4.0",
74
+ "openai": "^7.5.0",
75
75
  "react": "^19.2.8",
76
76
  "react-dom": "^19.2.8",
77
77
  "remark-gfm": "^4.0.1",
@@ -81,12 +81,12 @@
81
81
  },
82
82
  "devDependencies": {
83
83
  "@assistant-ui/x-buildutils": "workspace:*",
84
- "@types/node": "^26.1.2",
84
+ "@types/node": "^26.2.0",
85
85
  "@types/react": "^19.2.18",
86
- "@types/react-dom": "^19.2.4",
87
- "@vitejs/plugin-react": "^6.0.5",
86
+ "@types/react-dom": "^19.2.5",
87
+ "@vitejs/plugin-react": "^6.1.0",
88
88
  "typescript": "^7.0.2",
89
- "vite": "^8.2.1"
89
+ "vite": "^8.2.2"
90
90
  }
91
91
  }
92
92
 
@@ -463,7 +463,7 @@ export const chatStream = createServerFn({ method: "POST" })
463
463
  });
464
464
 
465
465
  const stream = await openai.chat.completions.create({
466
- model: "gpt-5.4-nano",
466
+ model: "gpt-5.6-luna",
467
467
  messages: data.messages,
468
468
  stream: true,
469
469
  });
@@ -748,6 +748,7 @@ export const chatStream = createServerFn({ method: "POST" })
748
748
  "@/components/assistant-ui/*": [
749
749
  "../../packages/ui/src/components/assistant-ui/*"
750
750
  ],
751
+ "@/hooks/*": ["../../packages/ui/src/hooks/*"],
751
752
  "@/components/ui/*": [
752
753
  "../../packages/ui/src/components/ui/base/*",
753
754
  "../../packages/ui/src/components/ui/radix/*"
@@ -600,8 +600,8 @@ export default withAui(nextConfig);
600
600
  "@assistant-ui/ui": "workspace:*",
601
601
  "class-variance-authority": "^0.7.1",
602
602
  "clsx": "^2.1.1",
603
- "lucide-react": "^1.29.0",
604
- "next": "^16.3.0",
603
+ "lucide-react": "^1.33.0",
604
+ "next": "^16.3.2",
605
605
  "react": "^19.2.8",
606
606
  "react-dom": "^19.2.8",
607
607
  "tailwind-merge": "^3.6.0"
@@ -610,9 +610,9 @@ export default withAui(nextConfig);
610
610
  "@assistant-ui/next": "workspace:*",
611
611
  "@assistant-ui/x-buildutils": "workspace:*",
612
612
  "@tailwindcss/postcss": "^4.3.3",
613
- "@types/node": "^26.1.2",
613
+ "@types/node": "^26.2.0",
614
614
  "@types/react": "^19.2.18",
615
- "@types/react-dom": "^19.2.4",
615
+ "@types/react-dom": "^19.2.5",
616
616
  "postcss": "^8.5.26",
617
617
  "tailwindcss": "^4.3.3",
618
618
  "tw-animate-css": "^1.4.0",
@@ -785,6 +785,7 @@ You can extend this example to:
785
785
  "@/components/assistant-ui/*": [
786
786
  "../../packages/ui/src/components/assistant-ui/*"
787
787
  ],
788
+ "@/hooks/*": ["../../packages/ui/src/hooks/*"],
788
789
  "@/components/ui/*": [
789
790
  "../../packages/ui/src/components/ui/base/*",
790
791
  "../../packages/ui/src/components/ui/radix/*"
@@ -597,11 +597,11 @@ export default withAui(nextConfig);
597
597
  "@assistant-ui/react": "workspace:*",
598
598
  "@assistant-ui/react-markdown": "workspace:*",
599
599
  "@assistant-ui/ui": "workspace:*",
600
- "@tanstack/react-virtual": "^3.14.9",
600
+ "@tanstack/react-virtual": "^3.14.10",
601
601
  "class-variance-authority": "^0.7.1",
602
602
  "clsx": "^2.1.1",
603
- "lucide-react": "^1.29.0",
604
- "next": "^16.3.0",
603
+ "lucide-react": "^1.33.0",
604
+ "next": "^16.3.2",
605
605
  "react": "^19.2.8",
606
606
  "react-dom": "^19.2.8",
607
607
  "tailwind-merge": "^3.6.0"
@@ -610,9 +610,9 @@ export default withAui(nextConfig);
610
610
  "@assistant-ui/next": "workspace:*",
611
611
  "@assistant-ui/x-buildutils": "workspace:*",
612
612
  "@tailwindcss/postcss": "^4.3.3",
613
- "@types/node": "^26.1.2",
613
+ "@types/node": "^26.2.0",
614
614
  "@types/react": "^19.2.18",
615
- "@types/react-dom": "^19.2.4",
615
+ "@types/react-dom": "^19.2.5",
616
616
  "postcss": "^8.5.26",
617
617
  "tailwindcss": "^4.3.3",
618
618
  "tw-animate-css": "^1.4.0",
@@ -661,6 +661,7 @@ See the [thread virtualization guide](https://assistant-ui.com/docs/guides/virtu
661
661
  "@/components/assistant-ui/*": [
662
662
  "../../packages/ui/src/components/assistant-ui/*"
663
663
  ],
664
+ "@/hooks/*": ["../../packages/ui/src/hooks/*"],
664
665
  "@/components/ui/*": [
665
666
  "../../packages/ui/src/components/ui/base/*",
666
667
  "../../packages/ui/src/components/ui/radix/*"
@@ -18,7 +18,7 @@
18
18
  "@assistant-ui/store": "workspace:*",
19
19
  "@assistant-ui/tap": "workspace:*",
20
20
  "@assistant-ui/vue": "workspace:*",
21
- "@lucide/vue": "^1.29.0",
21
+ "@lucide/vue": "^1.33.0",
22
22
  "vue": "^3.5.41"
23
23
  },
24
24
  "devDependencies": {
@@ -27,7 +27,7 @@
27
27
  "@vitejs/plugin-vue": "^6.0.8",
28
28
  "tailwindcss": "^4.3.3",
29
29
  "typescript": "^7.0.2",
30
- "vite": "^8.2.1"
30
+ "vite": "^8.2.2"
31
31
  }
32
32
  }
33
33
 
@@ -78,6 +78,7 @@ Use `--example` to create a project from one of the monorepo examples with full
78
78
  | `with-chain-of-thought` | Chain-of-thought reasoning, tool calls, and source citations | `npx assistant-ui create my-app -e with-chain-of-thought` |
79
79
  | `with-external-store` | External message store | `npx assistant-ui create my-app -e with-external-store` |
80
80
  | `with-interactables` | AI-driven interactive UI components | `npx assistant-ui create my-app -e with-interactables` |
81
+ | `with-openui` | [OpenUI](/docs/tools/openui) generative UI integration | `npx assistant-ui create my-app -e with-openui` |
81
82
  | `with-custom-thread-list` | Custom thread list UI | `npx assistant-ui create my-app -e with-custom-thread-list` |
82
83
  | `with-react-hook-form` | React Hook Form integration | `npx assistant-ui create my-app -e with-react-hook-form` |
83
84
  | `with-ffmpeg` | FFmpeg video processing tool | `npx assistant-ui create my-app -e with-ffmpeg` |
@@ -233,11 +234,15 @@ This command:
233
234
  - Prompts to install new packages
234
235
 
235
236
  **What it does:**
236
- - Applies all available codemods sequentially
237
+ - Applies the current bundled codemods sequentially
237
238
  - Shows progress bar with file count
238
239
  - Reports any transformation errors
239
240
  - Automatically detects and offers to install new dependencies
240
241
 
242
+ The latest upgrade excludes the historical v0.8 UI package split because its
243
+ `@assistant-ui/react-ui` destination is incompatible with current runtime versions.
244
+ Do not run `codemod v0-8/ui-package-split` as part of a v0.15 upgrade.
245
+
241
246
  **Example output:**
242
247
 
243
248
  ```bash
@@ -4,7 +4,7 @@ description: Inspect runtime state, context, and events in the browser.
4
4
  platforms: ["react"]
5
5
  ---
6
6
 
7
- import { DevToolsSample, DevToolsModalSample } from "@/components/docs/samples/devtools";
7
+ import { DevToolsSample, DevToolsModalSample } from "@/components/pages/docs/samples/devtools";
8
8
 
9
9
  The assistant-ui DevTools allows you to debug the assistant-ui state and context, and events without resorting to `console.log`. It's an easy way to see how data flows to the assistant-ui's runtime layer.
10
10
 
@@ -6,9 +6,11 @@ platforms: ["react"]
6
6
 
7
7
  <Quickstart />
8
8
 
9
- ## One library, any interface
9
+ ## Pick a surface
10
10
 
11
- <DemoShowcase />
11
+ Same primitives on web, native, and the terminal.
12
+
13
+ <SurfaceGrid />
12
14
 
13
15
  ## Bring your own backend
14
16
 
@@ -93,37 +93,37 @@ Install provider SDK:
93
93
 
94
94
  <Tabs groupId="provider" items={["OpenAI", "Anthropic", "Azure", "AWS", "Gemini", "GCP", "Groq", "Fireworks", "Cohere", "Ollama", "Chrome AI"]}>
95
95
  <Tab>
96
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "@ai-sdk/openai"]} />
96
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "@ai-sdk/openai"]} />
97
97
  </Tab>
98
98
  <Tab>
99
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "@ai-sdk/anthropic"]} />
99
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "@ai-sdk/anthropic"]} />
100
100
  </Tab>
101
101
  <Tab>
102
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "@ai-sdk/azure"]} />
102
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "@ai-sdk/azure"]} />
103
103
  </Tab>
104
104
  <Tab>
105
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "@ai-sdk/amazon-bedrock"]} />
105
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "@ai-sdk/amazon-bedrock"]} />
106
106
  </Tab>
107
107
  <Tab>
108
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "@ai-sdk/google"]} />
108
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "@ai-sdk/google"]} />
109
109
  </Tab>
110
110
  <Tab>
111
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "@ai-sdk/google-vertex"]} />
111
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "@ai-sdk/google-vertex"]} />
112
112
  </Tab>
113
113
  <Tab>
114
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "@ai-sdk/groq"]} />
114
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "@ai-sdk/groq"]} />
115
115
  </Tab>
116
116
  <Tab>
117
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "@ai-sdk/fireworks"]} />
117
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "@ai-sdk/fireworks"]} />
118
118
  </Tab>
119
119
  <Tab>
120
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "@ai-sdk/cohere"]} />
120
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "@ai-sdk/cohere"]} />
121
121
  </Tab>
122
122
  <Tab>
123
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "ollama-ai-provider-v2"]} />
123
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "ollama-ai-provider-v2"]} />
124
124
  </Tab>
125
125
  <Tab>
126
- <InstallCommand npm={["ai", "@assistant-ui/react-ai-sdk", "chrome-ai"]} />
126
+ <InstallCommand npm={["ai", "@assistant-ui/ai-sdk", "chrome-ai"]} />
127
127
  </Tab>
128
128
  </Tabs>
129
129
 
@@ -132,7 +132,7 @@ Add an API endpoint:
132
132
  <Tabs groupId="provider" items={["OpenAI", "Anthropic", "Azure", "AWS", "Gemini", "GCP", "Groq", "Fireworks", "Cohere", "Ollama", "Chrome AI"]}>
133
133
  ```ts title="/app/api/chat/route.ts" tab="OpenAI"
134
134
  import { openai } from "@ai-sdk/openai";
135
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
135
+ import { frontendTools } from "@assistant-ui/ai-sdk";
136
136
  import { convertToModelMessages, streamText } from "ai";
137
137
 
138
138
  export const maxDuration = 30;
@@ -151,7 +151,7 @@ export async function POST(req: Request) {
151
151
 
152
152
  ```ts title="/app/api/chat/route.ts" tab="Anthropic"
153
153
  import { anthropic } from "@ai-sdk/anthropic";
154
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
154
+ import { frontendTools } from "@assistant-ui/ai-sdk";
155
155
  import { convertToModelMessages, streamText } from "ai";
156
156
 
157
157
  export const maxDuration = 30;
@@ -170,7 +170,7 @@ export async function POST(req: Request) {
170
170
 
171
171
  ```ts title="/app/api/chat/route.ts" tab="Azure"
172
172
  import { azure } from "@ai-sdk/azure";
173
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
173
+ import { frontendTools } from "@assistant-ui/ai-sdk";
174
174
  import { convertToModelMessages, streamText } from "ai";
175
175
 
176
176
  export const maxDuration = 30;
@@ -189,7 +189,7 @@ export async function POST(req: Request) {
189
189
 
190
190
  ```ts title="/app/api/chat/route.ts" tab="AWS"
191
191
  import { bedrock } from "@ai-sdk/amazon-bedrock";
192
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
192
+ import { frontendTools } from "@assistant-ui/ai-sdk";
193
193
  import { convertToModelMessages, streamText } from "ai";
194
194
 
195
195
  export const maxDuration = 30;
@@ -208,7 +208,7 @@ export async function POST(req: Request) {
208
208
 
209
209
  ```ts title="/app/api/chat/route.ts" tab="Gemini"
210
210
  import { google } from "@ai-sdk/google";
211
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
211
+ import { frontendTools } from "@assistant-ui/ai-sdk";
212
212
  import { convertToModelMessages, streamText } from "ai";
213
213
 
214
214
  export const maxDuration = 30;
@@ -227,7 +227,7 @@ export async function POST(req: Request) {
227
227
 
228
228
  ```ts title="/app/api/chat/route.ts" tab="GCP"
229
229
  import { vertex } from "@ai-sdk/google-vertex";
230
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
230
+ import { frontendTools } from "@assistant-ui/ai-sdk";
231
231
  import { convertToModelMessages, streamText } from "ai";
232
232
 
233
233
  export const maxDuration = 30;
@@ -246,7 +246,7 @@ export async function POST(req: Request) {
246
246
 
247
247
  ```ts title="/app/api/chat/route.ts" tab="Groq"
248
248
  import { groq } from "@ai-sdk/groq";
249
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
249
+ import { frontendTools } from "@assistant-ui/ai-sdk";
250
250
  import { convertToModelMessages, streamText } from "ai";
251
251
 
252
252
  export const maxDuration = 30;
@@ -265,7 +265,7 @@ export async function POST(req: Request) {
265
265
 
266
266
  ```ts title="/app/api/chat/route.ts" tab="Fireworks"
267
267
  import { fireworks } from "@ai-sdk/fireworks";
268
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
268
+ import { frontendTools } from "@assistant-ui/ai-sdk";
269
269
  import { convertToModelMessages, streamText } from "ai";
270
270
 
271
271
  export const maxDuration = 30;
@@ -284,7 +284,7 @@ export async function POST(req: Request) {
284
284
 
285
285
  ```ts title="/app/api/chat/route.ts" tab="Cohere"
286
286
  import { cohere } from "@ai-sdk/cohere";
287
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
287
+ import { frontendTools } from "@assistant-ui/ai-sdk";
288
288
  import { convertToModelMessages, streamText } from "ai";
289
289
 
290
290
  export const maxDuration = 30;
@@ -303,7 +303,7 @@ export async function POST(req: Request) {
303
303
 
304
304
  ```ts title="/app/api/chat/route.ts" tab="Ollama"
305
305
  import { ollama } from "ollama-ai-provider-v2";
306
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
306
+ import { frontendTools } from "@assistant-ui/ai-sdk";
307
307
  import { convertToModelMessages, streamText } from "ai";
308
308
 
309
309
  export const maxDuration = 30;
@@ -322,7 +322,7 @@ export async function POST(req: Request) {
322
322
 
323
323
  ```ts title="/app/api/chat/route.ts" tab="Chrome AI"
324
324
  import { chromeai } from "chrome-ai";
325
- import { frontendTools } from "@assistant-ui/react-ai-sdk";
325
+ import { frontendTools } from "@assistant-ui/ai-sdk";
326
326
  import { convertToModelMessages, streamText } from "ai";
327
327
 
328
328
  export const maxDuration = 30;
@@ -408,7 +408,7 @@ If you aren't using Next.js, you can also deploy this endpoint to Cloudflare Wor
408
408
 
409
409
  ```tsx title="/app/page.tsx" tab="Thread"
410
410
  import { AssistantRuntimeProvider } from "@assistant-ui/react";
411
- import { useChatRuntime, AssistantChatTransport } from "@assistant-ui/react-ai-sdk";
411
+ import { useChatRuntime, AssistantChatTransport } from "@assistant-ui/ai-sdk";
412
412
  import { ThreadList } from "@/components/assistant-ui/thread-list";
413
413
  import { Thread } from "@/components/assistant-ui/thread";
414
414
 
@@ -434,7 +434,7 @@ export default function MyApp() {
434
434
  // run `npx shadcn@latest add @assistant-ui/assistant-modal`
435
435
 
436
436
  import { AssistantRuntimeProvider } from "@assistant-ui/react";
437
- import { useChatRuntime, AssistantChatTransport } from "@assistant-ui/react-ai-sdk";
437
+ import { useChatRuntime, AssistantChatTransport } from "@assistant-ui/ai-sdk";
438
438
  import { AssistantModal } from "@/components/assistant-ui/assistant-modal";
439
439
 
440
440
  export default function MyApp() {
@@ -467,8 +467,8 @@ export default function MyApp() {
467
467
  />
468
468
  <Card
469
469
  title="Generative UI"
470
- description="Create rich UI components for tool executions"
471
- href="/docs/tools/tool-ui"
470
+ description="Let the model compose UI from a component vocabulary you ship"
471
+ href="/docs/tools/generative-ui"
472
472
  />
473
473
  <Card
474
474
  title="Add Persistence"
@@ -14,6 +14,12 @@ import { SuggestionAdapter } from "@/generated/typeDocs";
14
14
 
15
15
  ## API Reference
16
16
 
17
+ ### createSuggestionAdapter
18
+
19
+ ```ts
20
+ const createSuggestionAdapter: (options: CreateSuggestionAdapterOptions) => SuggestionAdapter;
21
+ ```
22
+
17
23
  ### SuggestionAdapter
18
24
 
19
25
  <ParametersTable {...SuggestionAdapter} />
@@ -19,7 +19,7 @@ import { AssistantRuntimeProvider, AuiProvider } from "@/generated/typeDocs";
19
19
  {/* api-example:AssistantRuntimeProvider:start */}
20
20
  ```tsx {1, 8, 10}
21
21
  import { AssistantRuntimeProvider } from "@assistant-ui/react";
22
- import { useChatRuntime, AssistantChatTransport } from "@assistant-ui/react-ai-sdk";
22
+ import { useChatRuntime, AssistantChatTransport } from "@assistant-ui/ai-sdk";
23
23
 
24
24
  const MyApp = () => {
25
25
  const runtime = useChatRuntime({
@@ -23,7 +23,12 @@ const getExternalStoreMessages: <T>(input: { messages: readonly ThreadMessage[];
23
23
  ### unstable_convertExternalMessages
24
24
 
25
25
  ```ts
26
- const unstable_convertExternalMessages: <T extends WeakKey>(messages: T[], callback: useExternalMessageConverter.Callback<T>, isRunning: boolean, metadata: useExternalMessageConverter.Metadata) => ThreadMessage[];
26
+ const unstable_convertExternalMessages: <T extends WeakKey>(
27
+ messages: T[],
28
+ callback: useExternalMessageConverter.Callback<T>,
29
+ isRunning: boolean,
30
+ metadata: useExternalMessageConverter.Metadata,
31
+ ) => ThreadMessage[];
27
32
  ```
28
33
 
29
34
  ### unstable_createMessageConverter
@@ -63,7 +63,11 @@ The blocks and non-fatal warnings produced by Slack conversion.
63
63
 
64
64
  ### SlackConversionWarning
65
65
 
66
- A non-fatal downgrade reported during Slack conversion.
66
+ A non-fatal note reported during Slack conversion.
67
+
68
+ `clamped` removed content to fit a limit, `dropped` discarded a node or one
69
+ of its props and may leave a placeholder note behind, and `fallback` emitted
70
+ the node in a different form than requested.
67
71
 
68
72
  <ParametersTable {...SlackConversionWarning} />
69
73
 
@@ -50,14 +50,21 @@ The attachments and non-fatal warnings produced by [toTeamsAttachments](/docs/ap
50
50
 
51
51
  ### TeamsConversionWarning
52
52
 
53
- A non-fatal downgrade reported during Teams conversion.
53
+ A non-fatal note reported during Teams conversion.
54
+
55
+ `clamped` removed content to fit a limit, `dropped` discarded a node or one
56
+ of its props and may leave a placeholder note behind, and `fallback`
57
+ emitted the node in a different form than requested. `advisory` changed
58
+ nothing at all and notes content Teams may still render poorly or refuse,
59
+ such as a payload over the byte budget or a `Row` past the recommended
60
+ column count.
54
61
 
55
62
  <ParametersTable {...TeamsConversionWarning} />
56
63
 
57
64
  ### toAdaptiveCard
58
65
 
59
66
  Converts a generative-ui tree into a Microsoft Teams Adaptive Card and
60
- non-fatal downgrade warnings. Sizes, weights, and colors map to Adaptive
67
+ non-fatal conversion warnings. Sizes, weights, and colors map to Adaptive
61
68
  Card's semantic enums rather than raw values. An Input/Select/RadioGroup/
62
69
  Checkbox/DatePicker whose id would be the reserved RESERVED_INPUT_ID
63
70
  is renamed with a warning (see `decodeSubmitData`). Never throws: an
@@ -33,7 +33,7 @@ function QuoteBlock() {
33
33
  ```
34
34
 
35
35
  ```ts
36
- const useMessageQuote: () => QuoteInfo;
36
+ const useMessageQuote: () => QuoteInfo | undefined;
37
37
  ```
38
38
 
39
39
  ### useMessageTiming
@@ -51,7 +51,7 @@ function MessageStats() {
51
51
  ```
52
52
 
53
53
  ```ts
54
- const useMessageTiming: () => MessageTiming;
54
+ const useMessageTiming: () => MessageTiming | undefined;
55
55
  ```
56
56
 
57
57
  ### useRuntimeAdapters
@@ -1,9 +1,9 @@
1
1
  ---
2
- title: "@assistant-ui/react-ai-sdk"
3
- description: Vercel AI SDK runtime hooks, chat transports, and message conversion utilities for assistant-ui React applications.
2
+ title: "@assistant-ui/ai-sdk"
3
+ description: Vercel AI SDK runtime hooks, chat transports, and message conversion utilities for assistant-ui applications.
4
4
  ---
5
5
 
6
- import { reactAiSdk_AISDKToolkit, reactAiSdk_AssistantChatTransport, reactAiSdk_createResumableSessionStorage, reactAiSdk_getThreadMessageTokenUsage, reactAiSdk_injectQuoteContext, reactAiSdk_unstable_injectInteractableContext, reactAiSdk_useAISDKRuntime, reactAiSdk_useChatRuntime } from "@/generated/integrationTypeDocs";
6
+ import { aiSdk_AISDKChat, aiSdk_AISDKThreads, aiSdk_AISDKToolkit, aiSdk_AssistantChatTransport, aiSdk_createResumableSessionStorage, aiSdk_getThreadMessageTokenUsage, aiSdk_injectQuoteContext, aiSdk_unstable_injectInteractableContext, aiSdk_useAISDKRuntime, aiSdk_useChatRuntime } from "@/generated/integrationTypeDocs";
7
7
 
8
8
  {/* AUTO-GENERATED PAGE by scripts/generate-api-reference.mts */}
9
9
  {/* Do not edit manually. */}
@@ -14,19 +14,44 @@ import { reactAiSdk_AISDKToolkit, reactAiSdk_AssistantChatTransport, reactAiSdk_
14
14
 
15
15
  ## API Reference
16
16
 
17
+ ### AISDKChat
18
+
19
+ `AuiConfig` entry that runs the AI SDK chat as the `threads` scope. Hosts the
20
+ same orchestration as `useChatRuntime` inside the client's own resource tree,
21
+ so it works with any `AssistantClient` host, React or not. Single thread; the
22
+ multi-thread and assistant-cloud surface is [AISDKThreads](/docs/api-reference/integrations/ai-sdk#aisdkthreads). The chat
23
+ id is captured when the entry mounts, so a later `id` change in the options
24
+ has no effect.
25
+
26
+ <ParametersTable {...aiSdk_AISDKChat} />
27
+
28
+ ### AISDKThreads
29
+
30
+ `AuiConfig` entry that runs one AI SDK chat per thread. Hosts the same
31
+ per-thread orchestration as [AISDKChat](/docs/api-reference/integrations/ai-sdk#aisdkchat) inside the client's own
32
+ resource tree, so it works with any `AssistantClient` host, React or not.
33
+ Without `cloud`, threads live in memory for the client's lifetime and keep
34
+ their history across switches; each thread's chat id is its thread id.
35
+ With `cloud`, the list is a `RemoteThreadList` and the factory is keyed so
36
+ cloud history reloads on a switch. The store entry mounts only the visible
37
+ thread, so a switch cancels an in-flight run. Model context is
38
+ registered on the visible thread only.
39
+
40
+ <ParametersTable {...aiSdk_AISDKThreads} />
41
+
17
42
  ### AISDKToolkit
18
43
 
19
- <ParametersTable {...reactAiSdk_AISDKToolkit} />
44
+ <ParametersTable {...aiSdk_AISDKToolkit} />
20
45
 
21
46
  ### AssistantChatTransport
22
47
 
23
- <ParametersTable {...reactAiSdk_AssistantChatTransport} />
48
+ <ParametersTable {...aiSdk_AssistantChatTransport} />
24
49
 
25
50
  ### createResumableSessionStorage
26
51
 
27
52
  `sessionStorage`-backed storage for the pending resumable stream id. See the [Resumable Streams](/docs/guides/resumable-streams) guide for end-to-end wiring.
28
53
 
29
- <ParametersTable {...reactAiSdk_createResumableSessionStorage} />
54
+ <ParametersTable {...aiSdk_createResumableSessionStorage} />
30
55
 
31
56
  ### frontendTools
32
57
 
@@ -36,7 +61,7 @@ const frontendTools: (tools: FrontendTools) => ToolSet;
36
61
 
37
62
  ### getThreadMessageTokenUsage
38
63
 
39
- <ParametersTable {...reactAiSdk_getThreadMessageTokenUsage} />
64
+ <ParametersTable {...aiSdk_getThreadMessageTokenUsage} />
40
65
 
41
66
  ### injectQuoteContext
42
67
 
@@ -47,7 +72,7 @@ sees the quoted text that the user is referring to.
47
72
 
48
73
  ```ts
49
74
  import { convertToModelMessages, streamText } from "ai";
50
- import { injectQuoteContext } from "@assistant-ui/react-ai-sdk";
75
+ import { injectQuoteContext } from "@assistant-ui/ai-sdk";
51
76
 
52
77
  export async function POST(req: Request) {
53
78
  const { messages } = await req.json();
@@ -59,7 +84,7 @@ export async function POST(req: Request) {
59
84
  }
60
85
  ```
61
86
 
62
- <ParametersTable {...reactAiSdk_injectQuoteContext} />
87
+ <ParametersTable {...aiSdk_injectQuoteContext} />
63
88
 
64
89
  ### RESUMABLE_STREAM_ID_HEADER
65
90
 
@@ -73,7 +98,7 @@ const RESUMABLE_STREAM_ID_HEADER: "x-resumable-stream-id";
73
98
 
74
99
  Injects interactable state snapshots into messages as model-visible text.
75
100
 
76
- Mirrors [injectQuoteContext](/docs/api-reference/integrations/react-ai-sdk#injectquotecontext): reads the frozen snapshot stamped on a user
101
+ Mirrors [injectQuoteContext](/docs/api-reference/integrations/ai-sdk#injectquotecontext): reads the frozen snapshot stamped on a user
77
102
  message's `metadata.custom.interactables` (by the interactables scope at send
78
103
  time) and prepends a text part. Run this in your route handler before
79
104
  `convertToModelMessages`, which otherwise ignores `metadata.custom`.
@@ -87,7 +112,7 @@ only the fields that changed since the model's last known state.
87
112
 
88
113
  ```ts
89
114
  import { convertToModelMessages, streamText } from "ai";
90
- import { unstable_injectInteractableContext } from "@assistant-ui/react-ai-sdk";
115
+ import { unstable_injectInteractableContext } from "@assistant-ui/ai-sdk";
91
116
 
92
117
  export async function POST(req: Request) {
93
118
  const { messages } = await req.json();
@@ -99,7 +124,7 @@ export async function POST(req: Request) {
99
124
  }
100
125
  ```
101
126
 
102
- <ParametersTable {...reactAiSdk_unstable_injectInteractableContext} />
127
+ <ParametersTable {...aiSdk_unstable_injectInteractableContext} />
103
128
 
104
129
  ### useAISDKChat
105
130
 
@@ -109,7 +134,7 @@ runtime hook. `undefined` when the current thread is not backed by the AI
109
134
  SDK runtime.
110
135
 
111
136
  ```ts
112
- const useAISDKChat: <UI_MESSAGE extends UIMessage = UIMessage<unknown, UIDataTypes, UITools>>() => UseChatHelpers<UI_MESSAGE>;
137
+ const useAISDKChat: <UI_MESSAGE extends UIMessage = UIMessage<unknown, UIDataTypes, UITools>>() => UseChatHelpers<UI_MESSAGE> | undefined;
113
138
  ```
114
139
 
115
140
  ### useAISDKError
@@ -119,27 +144,27 @@ Read the last AI SDK chat error object from the runtime extras.
119
144
  the AI SDK runtime.
120
145
 
121
146
  ```ts
122
- const useAISDKError: () => Error;
147
+ const useAISDKError: () => Error | undefined;
123
148
  ```
124
149
 
125
150
  ### useAISDKRuntime
126
151
 
127
- <ParametersTable {...reactAiSdk_useAISDKRuntime} />
152
+ <ParametersTable {...aiSdk_useAISDKRuntime} />
128
153
 
129
154
  ### useChatRuntime
130
155
 
131
- <ParametersTable {...reactAiSdk_useChatRuntime} />
156
+ <ParametersTable {...aiSdk_useChatRuntime} />
132
157
 
133
158
  ### useThreadTokenUsage
134
159
 
135
160
  ```ts
136
- function useThreadTokenUsage(): ThreadTokenUsage;
161
+ function useThreadTokenUsage(): ThreadTokenUsage | undefined;
137
162
  ```
138
163
 
139
164
  ### generativeTools
140
165
 
141
166
  <Callout type="warn">
142
- <strong>Deprecated.</strong> Use [AISDKToolkit](/docs/api-reference/integrations/react-ai-sdk#aisdktoolkit) instead:
167
+ <strong>Deprecated.</strong> Use [AISDKToolkit](/docs/api-reference/integrations/ai-sdk#aisdktoolkit) instead:
143
168
  `new AISDKToolkit({ toolkit }).tools({ frontend })`. It is a strict superset
144
169
  (it also opens MCP server connections), so it replaces `generativeTools`
145
170
  everywhere. The `frontendTools` option is named `frontend` on `.tools()`, and