@assistant-ui/mcp-docs-server 0.1.30 → 0.1.32

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 (341) hide show
  1. package/.docs/organized/code-examples/waterfall.md +8 -8
  2. package/.docs/organized/code-examples/with-a2a.md +10 -10
  3. package/.docs/organized/code-examples/with-ag-ui.md +12 -12
  4. package/.docs/organized/code-examples/with-ai-sdk-v6.md +14 -14
  5. package/.docs/organized/code-examples/with-artifacts.md +14 -14
  6. package/.docs/organized/code-examples/with-assistant-transport.md +11 -11
  7. package/.docs/organized/code-examples/with-browser-extension.md +345 -0
  8. package/.docs/organized/code-examples/with-chain-of-thought.md +129 -63
  9. package/.docs/organized/code-examples/with-cloud-standalone.md +13 -13
  10. package/.docs/organized/code-examples/with-cloud.md +13 -13
  11. package/.docs/organized/code-examples/with-custom-thread-list.md +65 -20
  12. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +18 -17
  13. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +18 -17
  14. package/.docs/organized/code-examples/with-expo.md +25 -25
  15. package/.docs/organized/code-examples/with-external-store.md +10 -10
  16. package/.docs/organized/code-examples/with-ffmpeg.md +14 -14
  17. package/.docs/organized/code-examples/with-generative-ui.md +211 -14
  18. package/.docs/organized/code-examples/with-google-adk.md +12 -12
  19. package/.docs/organized/code-examples/with-heat-graph.md +8 -8
  20. package/.docs/organized/code-examples/with-image-generation.md +454 -0
  21. package/.docs/organized/code-examples/with-interactables.md +14 -14
  22. package/.docs/organized/code-examples/with-langchain.md +12 -12
  23. package/.docs/organized/code-examples/with-langgraph.md +15 -12
  24. package/.docs/organized/code-examples/with-livekit.md +19 -18
  25. package/.docs/organized/code-examples/with-mcp.md +748 -0
  26. package/.docs/organized/code-examples/with-opencode.md +107 -62
  27. package/.docs/organized/code-examples/with-parent-id-grouping.md +12 -12
  28. package/.docs/organized/code-examples/with-react-hook-form.md +14 -14
  29. package/.docs/organized/code-examples/with-react-ink.md +4 -4
  30. package/.docs/organized/code-examples/with-react-router.md +16 -16
  31. package/.docs/organized/code-examples/with-resumable-stream.md +660 -0
  32. package/.docs/organized/code-examples/with-store.md +8 -8
  33. package/.docs/organized/code-examples/with-tanstack.md +14 -14
  34. package/.docs/organized/code-examples/with-tap-runtime.md +11 -10
  35. package/.docs/raw/docs/(docs)/cli.mdx +3 -1
  36. package/.docs/raw/docs/(docs)/copilots/assistant-frame.mdx +1 -0
  37. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +10 -3
  38. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +8 -3
  39. package/.docs/raw/docs/(docs)/copilots/make-assistant-visible.mdx +1 -0
  40. package/.docs/raw/docs/(docs)/copilots/model-context.mdx +1 -0
  41. package/.docs/raw/docs/(docs)/copilots/motivation.mdx +1 -0
  42. package/.docs/raw/docs/(docs)/copilots/use-assistant-instructions.mdx +1 -0
  43. package/.docs/raw/docs/(docs)/devtools.mdx +1 -0
  44. package/.docs/raw/docs/(docs)/index.mdx +3 -2
  45. package/.docs/raw/docs/(docs)/installation.mdx +2 -1
  46. package/.docs/raw/docs/(docs)/rtl.mdx +1 -0
  47. package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +36 -0
  48. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +20 -0
  49. package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +34 -0
  50. package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +44 -0
  51. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +55 -0
  52. package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +20 -0
  53. package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +20 -0
  54. package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +37 -8
  55. package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +22 -0
  56. package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +64 -0
  57. package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +22 -0
  58. package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +52 -0
  59. package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +36 -0
  60. package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +98 -0
  61. package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +31 -0
  62. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +33 -0
  63. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +640 -0
  64. package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +28 -0
  65. package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +94 -0
  66. package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +464 -0
  67. package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +24 -0
  68. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +22 -0
  69. package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +79 -0
  70. package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +52 -0
  71. package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +22 -0
  72. package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +20 -0
  73. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +125 -125
  74. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +78 -221
  75. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +127 -242
  76. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +46 -20
  77. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +66 -87
  78. package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +50 -58
  79. package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +80 -48
  80. package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +67 -0
  81. package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +323 -461
  82. package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +36 -43
  83. package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +70 -0
  84. package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +63 -245
  85. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +182 -554
  86. package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +65 -0
  87. package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +35 -22
  88. package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +57 -140
  89. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +70 -161
  90. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +84 -108
  91. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +82 -86
  92. package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +173 -314
  93. package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +9 -21
  94. package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +10 -21
  95. package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +15 -70
  96. package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +43 -0
  97. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +25 -28
  98. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +11 -63
  99. package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +20 -0
  100. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +11 -48
  101. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +10 -42
  102. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +18 -30
  103. package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +68 -0
  104. package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +39 -0
  105. package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +79 -0
  106. package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +42 -0
  107. package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +92 -0
  108. package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +48 -0
  109. package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +62 -0
  110. package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +22 -0
  111. package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +19 -0
  112. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +131 -0
  113. package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +22 -0
  114. package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +54 -0
  115. package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +36 -0
  116. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +230 -2
  117. package/.docs/raw/docs/cloud/ai-sdk.mdx +222 -4
  118. package/.docs/raw/docs/cloud/index.mdx +2 -2
  119. package/.docs/raw/docs/cloud/langgraph.mdx +274 -2
  120. package/.docs/raw/docs/{(docs)/guides → guides}/attachments.mdx +45 -40
  121. package/.docs/raw/docs/guides/branching.mdx +76 -0
  122. package/.docs/raw/docs/guides/chain-of-thought.mdx +166 -0
  123. package/.docs/raw/docs/{(docs)/guides → guides}/context-api.mdx +54 -26
  124. package/.docs/raw/docs/{(docs)/guides → guides}/dictation.mdx +3 -1
  125. package/.docs/raw/docs/guides/editing.mdx +102 -0
  126. package/.docs/raw/docs/guides/generative-ui.mdx +142 -0
  127. package/.docs/raw/docs/guides/image-generation.mdx +74 -0
  128. package/.docs/raw/docs/guides/index.mdx +103 -0
  129. package/.docs/raw/docs/{(docs)/guides → guides}/interactables.mdx +51 -2
  130. package/.docs/raw/docs/{(docs)/guides → guides}/latex.mdx +53 -10
  131. package/.docs/raw/docs/guides/mcp-apps.mdx +231 -0
  132. package/.docs/raw/docs/{(docs)/guides → guides}/mentions.mdx +63 -88
  133. package/.docs/raw/docs/{(docs)/guides → guides}/message-timing.mdx +45 -6
  134. package/.docs/raw/docs/{(docs)/guides → guides}/multi-agent.mdx +66 -6
  135. package/.docs/raw/docs/{(docs)/guides → guides}/quoting.mdx +11 -18
  136. package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +212 -0
  137. package/.docs/raw/docs/guides/resumable-stream-stores.mdx +152 -0
  138. package/.docs/raw/docs/guides/resumable-streams.mdx +210 -0
  139. package/.docs/raw/docs/{(docs)/guides → guides}/slash-commands.mdx +104 -38
  140. package/.docs/raw/docs/guides/speech.mdx +156 -0
  141. package/.docs/raw/docs/{(docs)/guides → guides}/suggestions.mdx +91 -69
  142. package/.docs/raw/docs/{(docs)/guides → guides}/tool-ui.mdx +110 -38
  143. package/.docs/raw/docs/{(docs)/guides → guides}/tools.mdx +197 -40
  144. package/.docs/raw/docs/{(docs)/guides → guides}/voice.mdx +41 -2
  145. package/.docs/raw/docs/ink/adapters.mdx +37 -1
  146. package/.docs/raw/docs/ink/custom-backend.mdx +59 -8
  147. package/.docs/raw/docs/ink/index.mdx +11 -14
  148. package/.docs/raw/docs/ink/migration.mdx +1 -3
  149. package/.docs/raw/docs/ink/primitives.mdx +386 -9
  150. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +520 -0
  151. package/.docs/raw/docs/integrations/auth/better-auth.mdx +191 -0
  152. package/.docs/raw/docs/integrations/auth/clerk.mdx +172 -0
  153. package/.docs/raw/docs/integrations/auth/next-auth.mdx +196 -0
  154. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +79 -0
  155. package/.docs/raw/docs/integrations/frameworks/cloudflare-agents/overview.mdx +282 -0
  156. package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +188 -0
  157. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +57 -0
  158. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +201 -0
  159. package/.docs/raw/docs/integrations/gateways/index.mdx +162 -0
  160. package/.docs/raw/docs/integrations/index.mdx +185 -0
  161. package/.docs/raw/docs/integrations/observability/helicone.mdx +130 -0
  162. package/.docs/raw/docs/integrations/observability/langfuse.mdx +163 -0
  163. package/.docs/raw/docs/integrations/observability/langsmith.mdx +150 -0
  164. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +712 -0
  165. package/.docs/raw/docs/integrations/tools/mcp.mdx +267 -0
  166. package/.docs/raw/docs/integrations/tools/react-mcp.mdx +337 -0
  167. package/.docs/raw/docs/migrations/v0-14.mdx +297 -0
  168. package/.docs/raw/docs/primitives/action-bar.mdx +1 -0
  169. package/.docs/raw/docs/primitives/assistant-modal.mdx +1 -0
  170. package/.docs/raw/docs/primitives/attachment.mdx +1 -0
  171. package/.docs/raw/docs/primitives/branch-picker.mdx +1 -0
  172. package/.docs/raw/docs/primitives/chain-of-thought.mdx +90 -85
  173. package/.docs/raw/docs/primitives/composer.mdx +55 -1
  174. package/.docs/raw/docs/primitives/error.mdx +1 -0
  175. package/.docs/raw/docs/primitives/index.mdx +4 -3
  176. package/.docs/raw/docs/primitives/message.mdx +68 -5
  177. package/.docs/raw/docs/primitives/selection-toolbar.mdx +1 -0
  178. package/.docs/raw/docs/primitives/suggestion.mdx +10 -0
  179. package/.docs/raw/docs/primitives/thread-list.mdx +39 -0
  180. package/.docs/raw/docs/primitives/thread.mdx +16 -13
  181. package/.docs/raw/docs/react-native/hooks.mdx +2 -2
  182. package/.docs/raw/docs/react-native/index.mdx +5 -7
  183. package/.docs/raw/docs/react-native/migration.mdx +1 -3
  184. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +396 -0
  185. package/.docs/raw/docs/runtimes/a2a/overview.mdx +60 -0
  186. package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +216 -0
  187. package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +70 -0
  188. package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +243 -0
  189. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +154 -0
  190. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +52 -0
  191. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +73 -128
  192. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +70 -64
  193. package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +337 -123
  194. package/.docs/raw/docs/runtimes/concepts/adapters.mdx +265 -0
  195. package/.docs/raw/docs/runtimes/concepts/architecture.mdx +125 -0
  196. package/.docs/raw/docs/runtimes/concepts/stability.mdx +67 -0
  197. package/.docs/raw/docs/runtimes/concepts/threads.mdx +428 -0
  198. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +703 -0
  199. package/.docs/raw/docs/runtimes/custom/data-stream.mdx +348 -0
  200. package/.docs/raw/docs/runtimes/custom/external-store.mdx +261 -1236
  201. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +746 -0
  202. package/.docs/raw/docs/runtimes/custom/overview.mdx +71 -0
  203. package/.docs/raw/docs/runtimes/google-adk/api.mdx +256 -0
  204. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +717 -0
  205. package/.docs/raw/docs/runtimes/google-adk/overview.mdx +69 -0
  206. package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +229 -0
  207. package/.docs/raw/docs/runtimes/langchain.mdx +533 -0
  208. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +305 -0
  209. package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +104 -0
  210. package/.docs/raw/docs/runtimes/langgraph/overview.mdx +84 -0
  211. package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +496 -0
  212. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +127 -0
  213. package/.docs/raw/docs/runtimes/langgraph/threads.mdx +113 -0
  214. package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +3 -3
  215. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -23
  216. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +1 -1
  217. package/.docs/raw/docs/runtimes/opencode/hooks.mdx +191 -0
  218. package/.docs/raw/docs/runtimes/opencode/overview.mdx +48 -0
  219. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +119 -0
  220. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +78 -203
  221. package/.docs/raw/docs/ui/accordion.mdx +1 -0
  222. package/.docs/raw/docs/ui/assistant-modal.mdx +1 -0
  223. package/.docs/raw/docs/ui/assistant-sidebar.mdx +1 -0
  224. package/.docs/raw/docs/ui/attachment.mdx +1 -0
  225. package/.docs/raw/docs/ui/badge.mdx +1 -0
  226. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +12 -1
  227. package/.docs/raw/docs/ui/context-display.mdx +1 -0
  228. package/.docs/raw/docs/ui/diff-viewer.mdx +1 -0
  229. package/.docs/raw/docs/ui/directive-text.mdx +1 -0
  230. package/.docs/raw/docs/ui/file.mdx +1 -0
  231. package/.docs/raw/docs/ui/image.mdx +1 -0
  232. package/.docs/raw/docs/ui/markdown.mdx +2 -14
  233. package/.docs/raw/docs/ui/mcp-config.mdx +102 -0
  234. package/.docs/raw/docs/ui/mermaid.mdx +1 -0
  235. package/.docs/raw/docs/ui/message-timing.mdx +3 -2
  236. package/.docs/raw/docs/ui/model-selector.mdx +9 -8
  237. package/.docs/raw/docs/ui/part-grouping.mdx +325 -313
  238. package/.docs/raw/docs/ui/quote.mdx +1 -0
  239. package/.docs/raw/docs/ui/reasoning.mdx +66 -33
  240. package/.docs/raw/docs/ui/scrollbar.mdx +1 -0
  241. package/.docs/raw/docs/ui/select.mdx +1 -0
  242. package/.docs/raw/docs/ui/sources.mdx +18 -0
  243. package/.docs/raw/docs/ui/streamdown.mdx +35 -2
  244. package/.docs/raw/docs/ui/syntax-highlighting.mdx +1 -0
  245. package/.docs/raw/docs/ui/tabs.mdx +1 -0
  246. package/.docs/raw/docs/ui/thread-list.mdx +19 -2
  247. package/.docs/raw/docs/ui/thread.mdx +58 -3
  248. package/.docs/raw/docs/ui/tool-fallback.mdx +1 -0
  249. package/.docs/raw/docs/ui/tool-group.mdx +39 -11
  250. package/.docs/raw/docs/ui/voice.mdx +1 -0
  251. package/.docs/raw/docs/utilities/heat-graph.mdx +1 -0
  252. package/.docs/raw/docs/utilities/react-o11y.mdx +278 -0
  253. package/.docs/raw/docs/utilities/tw-shimmer.mdx +1 -0
  254. package/README.md +14 -72
  255. package/dist/constants.d.ts +12 -9
  256. package/dist/constants.d.ts.map +1 -1
  257. package/dist/constants.js +13 -9
  258. package/dist/constants.js.map +1 -1
  259. package/dist/index.d.ts +7 -3
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +25 -24
  262. package/dist/index.js.map +1 -1
  263. package/dist/prepare-docs/code-examples.d.ts +4 -1
  264. package/dist/prepare-docs/code-examples.d.ts.map +1 -1
  265. package/dist/prepare-docs/code-examples.js +109 -121
  266. package/dist/prepare-docs/code-examples.js.map +1 -1
  267. package/dist/prepare-docs/copy-raw.d.ts +4 -1
  268. package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
  269. package/dist/prepare-docs/copy-raw.js +45 -42
  270. package/dist/prepare-docs/copy-raw.js.map +1 -1
  271. package/dist/prepare-docs/prepare.d.ts +1 -2
  272. package/dist/prepare-docs/prepare.js +17 -17
  273. package/dist/prepare-docs/prepare.js.map +1 -1
  274. package/dist/stdio.d.ts +1 -3
  275. package/dist/stdio.js +6 -3
  276. package/dist/stdio.js.map +1 -1
  277. package/dist/tools/docs.d.ts +20 -15
  278. package/dist/tools/docs.d.ts.map +1 -1
  279. package/dist/tools/docs.js +140 -161
  280. package/dist/tools/docs.js.map +1 -1
  281. package/dist/tools/examples.d.ts +20 -15
  282. package/dist/tools/examples.d.ts.map +1 -1
  283. package/dist/tools/examples.js +74 -86
  284. package/dist/tools/examples.js.map +1 -1
  285. package/dist/tools/tests/test-setup.d.ts +5 -2
  286. package/dist/tools/tests/test-setup.d.ts.map +1 -1
  287. package/dist/tools/tests/test-setup.js +21 -28
  288. package/dist/tools/tests/test-setup.js.map +1 -1
  289. package/dist/utils/logger.d.ts +8 -5
  290. package/dist/utils/logger.d.ts.map +1 -1
  291. package/dist/utils/logger.js +17 -17
  292. package/dist/utils/logger.js.map +1 -1
  293. package/dist/utils/mcp-format.d.ts +8 -5
  294. package/dist/utils/mcp-format.d.ts.map +1 -1
  295. package/dist/utils/mcp-format.js +9 -9
  296. package/dist/utils/mcp-format.js.map +1 -1
  297. package/dist/utils/mdx.d.ts +8 -6
  298. package/dist/utils/mdx.d.ts.map +1 -1
  299. package/dist/utils/mdx.js +22 -22
  300. package/dist/utils/mdx.js.map +1 -1
  301. package/dist/utils/paths.d.ts +9 -6
  302. package/dist/utils/paths.d.ts.map +1 -1
  303. package/dist/utils/paths.js +66 -76
  304. package/dist/utils/paths.js.map +1 -1
  305. package/dist/utils/security.d.ts +4 -1
  306. package/dist/utils/security.d.ts.map +1 -1
  307. package/dist/utils/security.js +19 -40
  308. package/dist/utils/security.js.map +1 -1
  309. package/package.json +6 -6
  310. package/src/tools/tests/path-traversal.test.ts +1 -1
  311. package/.docs/raw/docs/(docs)/guides/branching.mdx +0 -65
  312. package/.docs/raw/docs/(docs)/guides/chain-of-thought.mdx +0 -164
  313. package/.docs/raw/docs/(docs)/guides/editing.mdx +0 -66
  314. package/.docs/raw/docs/(docs)/guides/speech.mdx +0 -38
  315. package/.docs/raw/docs/(reference)/api-reference/context-providers/text-message-part-provider.mdx +0 -40
  316. package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -260
  317. package/.docs/raw/docs/(reference)/api-reference/integrations/react-hook-form.mdx +0 -103
  318. package/.docs/raw/docs/(reference)/api-reference/integrations/vercel-ai-sdk.mdx +0 -254
  319. package/.docs/raw/docs/(reference)/migrations/v0-14.mdx +0 -159
  320. package/.docs/raw/docs/runtimes/a2a/index.mdx +0 -298
  321. package/.docs/raw/docs/runtimes/assistant-transport.mdx +0 -1033
  322. package/.docs/raw/docs/runtimes/custom/custom-thread-list.mdx +0 -314
  323. package/.docs/raw/docs/runtimes/custom/local.mdx +0 -1464
  324. package/.docs/raw/docs/runtimes/data-stream.mdx +0 -422
  325. package/.docs/raw/docs/runtimes/google-adk/index.mdx +0 -686
  326. package/.docs/raw/docs/runtimes/helicone.mdx +0 -61
  327. package/.docs/raw/docs/runtimes/langchain/comparison.mdx +0 -60
  328. package/.docs/raw/docs/runtimes/langchain/index.mdx +0 -210
  329. package/.docs/raw/docs/runtimes/langgraph/index.mdx +0 -699
  330. package/.docs/raw/docs/runtimes/langgraph/tutorial/index.mdx +0 -12
  331. package/.docs/raw/docs/runtimes/langserve.mdx +0 -116
  332. package/.docs/raw/docs/runtimes/mastra/full-stack-integration.mdx +0 -218
  333. package/.docs/raw/docs/runtimes/mastra/overview.mdx +0 -18
  334. package/.docs/raw/docs/runtimes/mastra/separate-server-integration.mdx +0 -217
  335. package/dist/prepare-docs/prepare.d.ts.map +0 -1
  336. package/dist/stdio.d.ts.map +0 -1
  337. /package/.docs/raw/docs/{(reference)/migrations → migrations}/deprecation-policy.mdx +0 -0
  338. /package/.docs/raw/docs/{(reference) → migrations}/react-compatibility.mdx +0 -0
  339. /package/.docs/raw/docs/{(reference)/migrations → migrations}/react-langgraph-v0-7.mdx +0 -0
  340. /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-11.mdx +0 -0
  341. /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-12.mdx +0 -0
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Quote
3
3
  description: Let users select and quote text from messages with a floating toolbar, composer preview, and inline quote display.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { QuoteSample } from "@/components/docs/samples/quote";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Reasoning
3
3
  description: Collapsible UI for displaying AI reasoning and thinking messages.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { ReasoningSample, ReasoningGroupSample } from "@/components/docs/samples/reasoning";
@@ -23,26 +24,58 @@ This adds a `/components/assistant-ui/reasoning.tsx` file to your project.
23
24
 
24
25
  ### Use in your application
25
26
 
26
- Pass the `Reasoning` and `ReasoningGroup` components to `MessagePrimitive.Parts` via the `components` prop. Using them together is the recommended default — `ReasoningGroup` wraps consecutive reasoning parts in a collapsible container for a smooth out-of-the-box UI.
27
+ Previously, reasoning parts were rendered via `components.Reasoning` and grouped via `components.ReasoningGroup` on `MessagePrimitive.Parts`. Both are deprecated; `MessagePrimitive.GroupedParts` is the supported replacement, and the highlighted lines below show the new pieces.
28
+
29
+ Render reasoning parts through `MessagePrimitive.GroupedParts`. Group consecutive reasoning parts with `"group-reasoning"`, then compose `ReasoningRoot`, `ReasoningTrigger`, `ReasoningContent`, and `ReasoningText` around the grouped children.
30
+
31
+ While reasoning is streaming, `part.status.type === "running"`. Pass that to `defaultOpen` so the accordion auto-opens during streaming and lets the user collapse it once the model moves on.
27
32
 
28
33
  ```tsx title="/app/components/assistant-ui/thread.tsx"
29
34
  import { MessagePrimitive } from "@assistant-ui/react";
30
35
  import { MarkdownText } from "@/components/assistant-ui/markdown-text";
31
36
  import { ToolFallback } from "@/components/assistant-ui/tool-fallback";
32
- import { Reasoning, ReasoningGroup } from "@/components/assistant-ui/reasoning"; // [!code ++]
37
+ import {
38
+ Reasoning,
39
+ ReasoningContent,
40
+ ReasoningRoot,
41
+ ReasoningText,
42
+ ReasoningTrigger,
43
+ } from "@/components/assistant-ui/reasoning"; // [!code ++]
33
44
 
34
45
  const AssistantMessage: FC = () => {
35
46
  return (
36
47
  <MessagePrimitive.Root className="...">
37
48
  <div className="...">
38
- <MessagePrimitive.Parts
39
- components={{
40
- Text: MarkdownText,
41
- Reasoning, // [!code ++]
42
- ReasoningGroup, // [!code ++]
43
- tools: { Fallback: ToolFallback },
44
- }}
45
- />
49
+ <MessagePrimitive.GroupedParts // [!code ++]
50
+ groupBy={(part) => { // [!code ++]
51
+ if (part.type === "reasoning") return ["group-reasoning"]; // [!code ++]
52
+ return null; // [!code ++]
53
+ }} // [!code ++]
54
+ > // [!code ++]
55
+ {({ part, children }) => { // [!code ++]
56
+ switch (part.type) { // [!code ++]
57
+ case "group-reasoning": { // [!code ++]
58
+ const running = part.status.type === "running"; // [!code ++]
59
+ return ( // [!code ++]
60
+ <ReasoningRoot defaultOpen={running}> // [!code ++]
61
+ <ReasoningTrigger active={running} /> // [!code ++]
62
+ <ReasoningContent aria-busy={running}> // [!code ++]
63
+ <ReasoningText>{children}</ReasoningText> // [!code ++]
64
+ </ReasoningContent> // [!code ++]
65
+ </ReasoningRoot> // [!code ++]
66
+ ); // [!code ++]
67
+ } // [!code ++]
68
+ case "text": // [!code ++]
69
+ return <MarkdownText />; // [!code ++]
70
+ case "reasoning": // [!code ++]
71
+ return <Reasoning {...part} />; // [!code ++]
72
+ case "tool-call": // [!code ++]
73
+ return part.toolUI ?? <ToolFallback {...part} />; // [!code ++]
74
+ default: // [!code ++]
75
+ return null; // [!code ++]
76
+ } // [!code ++]
77
+ }} // [!code ++]
78
+ </MessagePrimitive.GroupedParts> // [!code ++]
46
79
  </div>
47
80
  <AssistantActionBar />
48
81
  <BranchPicker className="..." />
@@ -51,6 +84,8 @@ const AssistantMessage: FC = () => {
51
84
  };
52
85
  ```
53
86
 
87
+ `GroupedParts` calls your render function for both group nodes and leaf parts. The `case "group-reasoning"` branch renders the collapsible shell and must render `{children}`; that is where the individual reasoning parts get placed. The `case "reasoning"` branch renders each individual reasoning part inside that shell and must not render `children`. Removing either case breaks rendering.
88
+
54
89
  </Step>
55
90
  </Steps>
56
91
 
@@ -59,20 +94,20 @@ const AssistantMessage: FC = () => {
59
94
  The component consists of two parts:
60
95
 
61
96
  1. `Reasoning`: Renders individual reasoning message part content (with markdown support)
62
- 2. `ReasoningGroup`: Wraps consecutive reasoning parts in a collapsible container
97
+ 2. Composable group pieces (`ReasoningRoot`, `ReasoningTrigger`, `ReasoningContent`, `ReasoningText`): Wrap grouped reasoning children in a collapsible container
63
98
 
64
- Consecutive reasoning parts are automatically grouped together by `ReasoningGroup`. We recommend using both together as the default — you can drop `ReasoningGroup` or build your own layout with the composable API below if you need more flexibility.
99
+ Consecutive reasoning parts are grouped by `MessagePrimitive.GroupedParts`. Use the composable API below to control the grouped layout.
65
100
 
66
- > When using the composable API, `Reasoning.Text` is a plain container. Add `<MarkdownText />` for markdown rendering.
101
+ > When using the composable API, `ReasoningText` is a plain container. Add `<MarkdownText />` for markdown rendering.
67
102
 
68
103
  ## Variants
69
104
 
70
- Use the `variant` prop on `Reasoning.Root` to change the visual style:
105
+ Use the `variant` prop on `ReasoningRoot` to change the visual style:
71
106
 
72
107
  ```tsx
73
- <Reasoning.Root variant="outline">...</Reasoning.Root>
74
- <Reasoning.Root variant="ghost">...</Reasoning.Root>
75
- <Reasoning.Root variant="muted">...</Reasoning.Root>
108
+ <ReasoningRoot variant="outline">...</ReasoningRoot>
109
+ <ReasoningRoot variant="ghost">...</ReasoningRoot>
110
+ <ReasoningRoot variant="muted">...</ReasoningRoot>
76
111
  ```
77
112
 
78
113
  | Variant | Description |
@@ -81,9 +116,9 @@ Use the `variant` prop on `Reasoning.Root` to change the visual style:
81
116
  | `ghost` | No additional styling |
82
117
  | `muted` | Muted background |
83
118
 
84
- ## ReasoningGroup
119
+ ## Legacy ReasoningGroup
85
120
 
86
- `ReasoningGroup` wraps consecutive reasoning parts in a collapsible container. It auto-expands during streaming.
121
+ `ReasoningGroup` is kept for existing code that still uses the deprecated `components.ReasoningGroup` prop on `MessagePrimitive.Parts`. New code should use `MessagePrimitive.GroupedParts` and compose the root/trigger/content pieces directly.
87
122
 
88
123
  <ReasoningGroupSample />
89
124
 
@@ -123,15 +158,14 @@ All sub-components are exported for custom layouts:
123
158
 
124
159
  | Component | Description |
125
160
  | --------------------- | ------------------------------------------ |
126
- | `Reasoning.Root` | Collapsible container with scroll lock |
127
- | `Reasoning.Trigger` | Button with icon, label, and shimmer |
128
- | `Reasoning.Content` | Animated collapsible content wrapper |
129
- | `Reasoning.Text` | Text wrapper with slide/fade animation |
130
- | `Reasoning.Fade` | Gradient fade overlay at bottom |
161
+ | `ReasoningRoot` | Collapsible container with scroll lock |
162
+ | `ReasoningTrigger` | Button with icon, label, and shimmer |
163
+ | `ReasoningContent` | Animated collapsible content wrapper |
164
+ | `ReasoningText` | Text wrapper with slide/fade animation |
165
+ | `ReasoningFade` | Gradient fade overlay at bottom |
131
166
 
132
167
  ```tsx
133
168
  import {
134
- Reasoning,
135
169
  ReasoningRoot,
136
170
  ReasoningTrigger,
137
171
  ReasoningContent,
@@ -139,16 +173,15 @@ import {
139
173
  ReasoningFade,
140
174
  } from "@/components/assistant-ui/reasoning";
141
175
 
142
- // Compound component syntax
143
- <Reasoning.Root variant="muted">
144
- <Reasoning.Trigger active={isStreaming} />
145
- <Reasoning.Content>
146
- <Reasoning.Text>{children}</Reasoning.Text>
147
- </Reasoning.Content>
148
- </Reasoning.Root>
176
+ <ReasoningRoot variant="muted">
177
+ <ReasoningTrigger active={isStreaming} />
178
+ <ReasoningContent>
179
+ <ReasoningText>{children}</ReasoningText>
180
+ </ReasoningContent>
181
+ </ReasoningRoot>
149
182
  ```
150
183
 
151
184
  ## Related Components
152
185
 
153
186
  - [ToolGroup](/docs/ui/tool-group) - Similar grouping pattern for tool calls
154
- - [PartGrouping](/docs/ui/part-grouping) - Experimental API for grouping message parts
187
+ - [PartGrouping](/docs/ui/part-grouping) - Advanced grouping options for message parts
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Custom Scrollbar
3
3
  description: Replace the default scrollbar with a custom Radix UI scroll area.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { ScrollbarSample } from "@/components/docs/samples/scrollbar";
@@ -4,6 +4,7 @@ description: A dropdown select component with composable sub-components.
4
4
  links:
5
5
  - label: Radix UI Select
6
6
  url: https://www.radix-ui.com/primitives/docs/components/select
7
+ platforms: ["react"]
7
8
  ---
8
9
 
9
10
  import { PreviewCode } from "@/components/docs/preview-code.server";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Sources
3
3
  description: Display URL sources with favicon, title, and external link.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { SourcesSample } from "@/components/docs/samples/sources";
@@ -118,8 +119,25 @@ Displays the favicon for the given URL. Falls back to the domain initial inside
118
119
  | Prop | Type | Default | Description |
119
120
  |------|------|---------|-------------|
120
121
  | `url` | `string` | — | URL used to derive the favicon and fallback initial |
122
+ | `faviconUrl` | `(domain: string) => string` | DuckDuckGo's `ip3` endpoint | Override the favicon source — useful in environments where the default service is unreachable |
121
123
  | `className` | `string` | — | Additional CSS classes applied to the `<img>` or fallback `<span>` |
122
124
 
125
+ #### Customizing the favicon provider
126
+
127
+ The default `<Sources>` component renders `<SourceIcon>` without forwarding `faviconUrl`, so the prop only applies when you compose `Sources.Icon` directly:
128
+
129
+ ```tsx
130
+ <Sources.Root href={url}>
131
+ <Sources.Icon
132
+ url={url}
133
+ faviconUrl={(domain) => `https://my-favicon-proxy.example.com/${domain}.ico`}
134
+ />
135
+ <Sources.Title>{title}</Sources.Title>
136
+ </Sources.Root>
137
+ ```
138
+
139
+ To change the default for every source in your app, edit the `defaultFaviconUrl` constant at the top of your copied `sources.tsx` — that is the single source of truth used by `<Sources>`.
140
+
123
141
  ### `SourceTitle`
124
142
 
125
143
  Truncated title text rendered as a `<span>`.
@@ -1,9 +1,10 @@
1
1
  ---
2
- title: Streamdown
3
- description: Alternative markdown renderer with built-in syntax highlighting, math, and diagram support.
2
+ title: Streamdown Markdown Renderer
3
+ description: Stream markdown into a React chat UI with syntax highlighting, math, and Mermaid diagrams. Powered by Vercel Streamdown, integrated for assistant-ui.
4
4
  links:
5
5
  - label: Streamdown
6
6
  url: https://github.com/vercel/streamdown
7
+ platforms: ["react"]
7
8
  ---
8
9
 
9
10
  import { PackageManagerTabs } from "@/components/docs/fumadocs/install/package-manager-tabs";
@@ -25,6 +26,36 @@ For additional features, install the optional plugins:
25
26
 
26
27
  <PackageManagerTabs packages={["@streamdown/code", "@streamdown/math", "@streamdown/mermaid", "@streamdown/cjk"]} />
27
28
 
29
+ ## CSS setup
30
+
31
+ Streamdown's controls (code-block copy/download buttons, mermaid fullscreen overlay) and the streaming caret are written as Tailwind utility classes. Tailwind v4 does not scan `node_modules` by default, so add a `@source` directive for Streamdown (and one per installed plugin) to the same global stylesheet that imports Tailwind:
32
+
33
+ ```css
34
+ @import "tailwindcss";
35
+
36
+ @source "../node_modules/streamdown/dist/*.js";
37
+ @source "../node_modules/@streamdown/code/dist/*.js";
38
+ @source "../node_modules/@streamdown/math/dist/*.js";
39
+ @source "../node_modules/@streamdown/mermaid/dist/*.js";
40
+ @source "../node_modules/@streamdown/cjk/dist/*.js";
41
+ ```
42
+
43
+ Adjust the relative path to wherever your project's `node_modules` lives. In a pnpm or Turbo monorepo with hoisted dependencies, you typically need more `../` segments to reach the workspace root. Only include the plugin lines for packages you actually installed.
44
+
45
+ Without these directives, the copy/download/fullscreen buttons render with no padding or cursor styling (and look broken), and the `caret` indicator stays invisible.
46
+
47
+ <Callout type="info">
48
+ Streamdown's components assume the shadcn/ui design tokens (`--background`, `--muted-foreground`, `--border`, etc.). If you are not on shadcn/ui, copy the minimum variable set from the [Streamdown README](https://github.com/vercel/streamdown#css-custom-properties-design-tokens).
49
+ </Callout>
50
+
51
+ If you opt into the `animated` prop or use `createAnimatePlugin` for word-level fade-in, also import the keyframes once at your app entry:
52
+
53
+ ```ts
54
+ import "streamdown/styles.css";
55
+ ```
56
+
57
+ The bare `caret` prop does **not** require this import; only the word-level animation does.
58
+
28
59
  ## Basic Usage
29
60
 
30
61
  ```tsx
@@ -172,6 +203,8 @@ Display a caret indicator during streaming:
172
203
  <StreamdownTextPrimitive caret="circle" /> // ●
173
204
  ```
174
205
 
206
+ The caret is implemented as a Tailwind `::after` utility on the wrapper, so it only appears if your Tailwind setup includes the `@source` directive from [CSS setup](#css-setup).
207
+
175
208
  ### Link Safety
176
209
 
177
210
  Show confirmation before opening external links:
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Syntax Highlighting
3
3
  description: Code block syntax highlighting with react-shiki or react-syntax-highlighter.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { SyntaxHighlightingSample } from "@/components/docs/samples/syntax-highlighting";
@@ -4,6 +4,7 @@ description: A multi-variant tabs component for organizing content into switchab
4
4
  links:
5
5
  - label: Radix UI Tabs
6
6
  url: https://www.radix-ui.com/primitives/docs/components/tabs
7
+ platforms: ["react"]
7
8
  ---
8
9
 
9
10
  import { PreviewCode } from "@/components/docs/preview-code.server";
@@ -1,6 +1,7 @@
1
1
  ---
2
- title: ThreadList
3
- description: Switch between conversations. Supports sidebar or dropdown layouts.
2
+ title: Thread List Component
3
+ description: Sidebar or dropdown component for switching between AI chat conversations. Persistent thread state, search, and active selection — built for assistant-ui apps.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { ThreadListSample } from "@/components/docs/samples/threadlist";
@@ -171,6 +172,22 @@ A button to create a new thread.
171
172
  ]}
172
173
  />
173
174
 
175
+ ### ThreadListPrimitive.LoadMore
176
+
177
+ A button that appends the next page of threads. See the [LoadMore primitive reference](/docs/primitives/thread-list#loadmore) for usage and [Threads concepts](/docs/runtimes/concepts/threads#paginating-the-thread-list) for the adapter contract.
178
+
179
+ <ParametersTable
180
+ type="ThreadListPrimitiveLoadMoreProps"
181
+ parameters={[
182
+ {
183
+ name: "asChild",
184
+ type: "boolean",
185
+ default: "false",
186
+ description: "Merge props with child element instead of rendering a wrapper button.",
187
+ },
188
+ ]}
189
+ />
190
+
174
191
  ### ThreadListItemPrimitive.Root
175
192
 
176
193
  Container for a single thread item. Automatically sets `data-active` and `aria-current` when this is the current thread.
@@ -1,6 +1,7 @@
1
1
  ---
2
- title: Thread
3
- description: The main chat container with messages, composer, and auto-scroll.
2
+ title: Thread Component
3
+ description: Stream-ready React chat container with message list, composer, auto-scroll, and accessibility built in. Drop into any AI chat UI built with assistant-ui.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { ThreadSample } from "@/components/docs/samples/thread";
@@ -175,10 +176,64 @@ The scrollable area containing all messages. Automatically scrolls to the bottom
175
176
  {
176
177
  name: "autoScroll",
177
178
  type: "boolean",
178
- default: "true",
179
+ default: 'true (false when turnAnchor is "top")',
179
180
  description:
180
181
  "Whether to automatically scroll to the bottom when new messages are added while the viewport was previously scrolled to the bottom.",
181
182
  },
183
+ {
184
+ name: "turnAnchor",
185
+ type: '"top" | "bottom"',
186
+ default: '"bottom"',
187
+ description:
188
+ 'Controls scroll anchoring behavior for new messages. "top" anchors new user messages at the top of the viewport.',
189
+ },
190
+ {
191
+ name: "topAnchorMessageClamp",
192
+ type: '{ tallerThan?: string; visibleHeight?: string }',
193
+ default: '{ tallerThan: "10em", visibleHeight: "6em" }',
194
+ description:
195
+ 'Clamps tall user messages when turnAnchor is "top". Messages up to `tallerThan` stay fully visible; taller messages show only `visibleHeight` of their bottom edge above the assistant response.',
196
+ children: [
197
+ {
198
+ type: '{ tallerThan?: string; visibleHeight?: string }',
199
+ parameters: [
200
+ {
201
+ name: "tallerThan",
202
+ type: "string",
203
+ default: '"10em"',
204
+ description: "Clamp messages taller than this CSS length.",
205
+ },
206
+ {
207
+ name: "visibleHeight",
208
+ type: "string",
209
+ default: '"6em"',
210
+ description:
211
+ "Visible portion of a clamped message's bottom edge.",
212
+ },
213
+ ],
214
+ },
215
+ ],
216
+ },
217
+ {
218
+ name: "scrollToBottomOnRunStart",
219
+ type: "boolean",
220
+ default: "true",
221
+ description: "Whether to scroll to bottom when a new run starts.",
222
+ },
223
+ {
224
+ name: "scrollToBottomOnInitialize",
225
+ type: "boolean",
226
+ default: "true",
227
+ description:
228
+ "Whether to scroll to bottom when thread history is first loaded.",
229
+ },
230
+ {
231
+ name: "scrollToBottomOnThreadSwitch",
232
+ type: "boolean",
233
+ default: "true",
234
+ description:
235
+ "Whether to scroll to bottom when switching to a different thread.",
236
+ },
182
237
  {
183
238
  name: "className",
184
239
  type: "string",
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: ToolFallback
3
3
  description: Default UI component for tools without dedicated custom renderers.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import {
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: ToolGroup
3
3
  description: Wrapper for consecutive tool calls with collapsible and styled options.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import {
@@ -17,31 +18,56 @@ A wrapper component that groups consecutive tool calls together, displaying them
17
18
  <Steps>
18
19
  <Step>
19
20
 
20
- ### Add `tool-group`
21
+ ### Add `tool-group` and `tool-fallback`
21
22
 
22
- <InstallCommand shadcn={["tool-group"]} />
23
+ <InstallCommand shadcn={["tool-group", "tool-fallback"]} />
23
24
 
24
- This adds a `/components/assistant-ui/tool-group.tsx` file to your project, which you can adjust as needed.
25
+ This adds `/components/assistant-ui/tool-group.tsx` and `/components/assistant-ui/tool-fallback.tsx` files to your project, which you can adjust as needed.
25
26
 
26
27
  </Step>
27
28
  <Step>
28
29
 
29
30
  ### Use it in your application
30
31
 
31
- Pass the `ToolGroup` component to the `MessagePrimitive.Parts` component
32
+ Use `MessagePrimitive.GroupedParts` and return `"group-tool"` for tool-call parts. The group case wraps `children`; the tool-call leaf renders the resolved tool UI or your fallback.
32
33
 
33
- ```tsx title="/components/assistant-ui/thread.tsx" {1,8}
34
- import { ToolGroup } from "@/components/assistant-ui/tool-group";
34
+ ```tsx title="/components/assistant-ui/thread.tsx"
35
+ import { MessagePrimitive } from "@assistant-ui/react";
36
+ import { ToolFallback } from "@/components/assistant-ui/tool-fallback";
37
+ import {
38
+ ToolGroupContent,
39
+ ToolGroupRoot,
40
+ ToolGroupTrigger,
41
+ } from "@/components/assistant-ui/tool-group";
35
42
 
36
43
  const AssistantMessage = () => {
37
44
  return (
38
45
  <MessagePrimitive.Root>
39
- <MessagePrimitive.Parts>
40
- {({ part }) => {
41
- if (part.type === "tool-call") return <ToolGroup {...part} />;
46
+ <MessagePrimitive.GroupedParts
47
+ groupBy={(part) => {
48
+ if (part.type === "tool-call") return ["group-tool"];
42
49
  return null;
43
50
  }}
44
- </MessagePrimitive.Parts>
51
+ >
52
+ {({ part, children }) => {
53
+ switch (part.type) {
54
+ case "group-tool":
55
+ return (
56
+ <ToolGroupRoot>
57
+ <ToolGroupTrigger
58
+ count={part.indices.length}
59
+ active={part.status.type === "running"}
60
+ />
61
+ <ToolGroupContent>{children}</ToolGroupContent>
62
+ </ToolGroupRoot>
63
+ );
64
+ case "tool-call":
65
+ return part.toolUI ?? <ToolFallback {...part} />;
66
+ default:
67
+ return null;
68
+ }
69
+ }}
70
+ </MessagePrimitive.GroupedParts>
45
71
  </MessagePrimitive.Root>
46
72
  );
47
73
  };
@@ -181,7 +207,9 @@ import {
181
207
  ]}
182
208
  />
183
209
 
184
- ### ToolGroup (Default Export)
210
+ ### ToolGroup (Legacy Wrapper)
211
+
212
+ `ToolGroup` is kept for existing code that still uses the deprecated `components.ToolGroup` prop on `MessagePrimitive.Parts`. Prefer composing `ToolGroupRoot`, `ToolGroupTrigger`, and `ToolGroupContent` inside `MessagePrimitive.GroupedParts`.
185
213
 
186
214
  <ParametersTable
187
215
  type="ToolGroupProps"
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Voice
3
3
  description: Realtime voice session controls with connect, mute, and status indicator.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { VoiceSample, VoiceVariantsSample, VoiceStatesSample } from "@/components/docs/samples/voice";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: heat-graph
3
3
  description: Headless, composable activity heatmap components for React.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { HeatGraphDemo } from "@/app/heat-graph/heat-graph-demo";