@assistant-ui/mcp-docs-server 0.2.2 → 0.3.0

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 (459) hide show
  1. package/README.md +16 -43
  2. package/dist/index.d.ts +2 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -91
  5. package/dist/index.js.map +1 -1
  6. package/dist/proxy.d.ts +9 -0
  7. package/dist/proxy.d.ts.map +1 -0
  8. package/dist/proxy.js +76 -0
  9. package/dist/proxy.js.map +1 -0
  10. package/package.json +9 -13
  11. package/src/index.ts +3 -115
  12. package/src/proxy.test.ts +250 -0
  13. package/src/proxy.ts +111 -0
  14. package/.docs/organized/code-examples/waterfall.md +0 -807
  15. package/.docs/organized/code-examples/with-a2a.md +0 -674
  16. package/.docs/organized/code-examples/with-ag-ui.md +0 -552
  17. package/.docs/organized/code-examples/with-ai-sdk-v7.md +0 -465
  18. package/.docs/organized/code-examples/with-artifacts.md +0 -814
  19. package/.docs/organized/code-examples/with-assistant-transport.md +0 -575
  20. package/.docs/organized/code-examples/with-browser-extension.md +0 -371
  21. package/.docs/organized/code-examples/with-chain-of-thought.md +0 -960
  22. package/.docs/organized/code-examples/with-cloud-standalone.md +0 -681
  23. package/.docs/organized/code-examples/with-cloud.md +0 -438
  24. package/.docs/organized/code-examples/with-custom-thread-list.md +0 -568
  25. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +0 -526
  26. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +0 -696
  27. package/.docs/organized/code-examples/with-eve.md +0 -404
  28. package/.docs/organized/code-examples/with-expo.md +0 -2063
  29. package/.docs/organized/code-examples/with-external-store.md +0 -420
  30. package/.docs/organized/code-examples/with-ffmpeg.md +0 -828
  31. package/.docs/organized/code-examples/with-generative-ui.md +0 -1812
  32. package/.docs/organized/code-examples/with-google-adk.md +0 -367
  33. package/.docs/organized/code-examples/with-heat-graph.md +0 -304
  34. package/.docs/organized/code-examples/with-image-generation.md +0 -462
  35. package/.docs/organized/code-examples/with-interactables.md +0 -732
  36. package/.docs/organized/code-examples/with-langchain.md +0 -445
  37. package/.docs/organized/code-examples/with-langgraph.md +0 -854
  38. package/.docs/organized/code-examples/with-livekit.md +0 -642
  39. package/.docs/organized/code-examples/with-mcp.md +0 -780
  40. package/.docs/organized/code-examples/with-nuxt.md +0 -2428
  41. package/.docs/organized/code-examples/with-opencode.md +0 -1974
  42. package/.docs/organized/code-examples/with-openui.md +0 -449
  43. package/.docs/organized/code-examples/with-pi.md +0 -2083
  44. package/.docs/organized/code-examples/with-react-hook-form.md +0 -724
  45. package/.docs/organized/code-examples/with-react-ink-web.md +0 -690
  46. package/.docs/organized/code-examples/with-react-ink.md +0 -472
  47. package/.docs/organized/code-examples/with-react-router.md +0 -935
  48. package/.docs/organized/code-examples/with-resumable-stream.md +0 -667
  49. package/.docs/organized/code-examples/with-store.md +0 -679
  50. package/.docs/organized/code-examples/with-svelte.md +0 -415
  51. package/.docs/organized/code-examples/with-sveltekit.md +0 -1061
  52. package/.docs/organized/code-examples/with-tanstack.md +0 -811
  53. package/.docs/organized/code-examples/with-tap-runtime.md +0 -812
  54. package/.docs/organized/code-examples/with-virtualized-thread.md +0 -680
  55. package/.docs/organized/code-examples/with-vue.md +0 -408
  56. package/.docs/raw/docs/(docs)/architecture.mdx +0 -146
  57. package/.docs/raw/docs/(docs)/base-ui.mdx +0 -39
  58. package/.docs/raw/docs/(docs)/cli.mdx +0 -542
  59. package/.docs/raw/docs/(docs)/devtools.mdx +0 -79
  60. package/.docs/raw/docs/(docs)/index.mdx +0 -21
  61. package/.docs/raw/docs/(docs)/installation.mdx +0 -483
  62. package/.docs/raw/docs/(docs)/llm.mdx +0 -211
  63. package/.docs/raw/docs/(docs)/rtl.mdx +0 -78
  64. package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +0 -36
  65. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +0 -20
  66. package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +0 -34
  67. package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +0 -44
  68. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +0 -59
  69. package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +0 -20
  70. package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +0 -20
  71. package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +0 -84
  72. package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +0 -22
  73. package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +0 -64
  74. package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +0 -22
  75. package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +0 -52
  76. package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +0 -49
  77. package/.docs/raw/docs/(reference)/api-reference/generative-ui/a2ui.mdx +0 -40
  78. package/.docs/raw/docs/(reference)/api-reference/generative-ui/actions.mdx +0 -56
  79. package/.docs/raw/docs/(reference)/api-reference/generative-ui/components.mdx +0 -86
  80. package/.docs/raw/docs/(reference)/api-reference/generative-ui/index.mdx +0 -39
  81. package/.docs/raw/docs/(reference)/api-reference/generative-ui/json-generative-ui.mdx +0 -42
  82. package/.docs/raw/docs/(reference)/api-reference/generative-ui/rendering.mdx +0 -84
  83. package/.docs/raw/docs/(reference)/api-reference/generative-ui/slack.mdx +0 -85
  84. package/.docs/raw/docs/(reference)/api-reference/generative-ui/spec.mdx +0 -45
  85. package/.docs/raw/docs/(reference)/api-reference/generative-ui/teams.mdx +0 -93
  86. package/.docs/raw/docs/(reference)/api-reference/generative-ui/tokens.mdx +0 -62
  87. package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +0 -129
  88. package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +0 -31
  89. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +0 -34
  90. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +0 -350
  91. package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +0 -28
  92. package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +0 -97
  93. package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +0 -24
  94. package/.docs/raw/docs/(reference)/api-reference/integrations/eve.mdx +0 -97
  95. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +0 -28
  96. package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +0 -200
  97. package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -37
  98. package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +0 -50
  99. package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +0 -22
  100. package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +0 -20
  101. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +0 -566
  102. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +0 -152
  103. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +0 -239
  104. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +0 -208
  105. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +0 -108
  106. package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +0 -99
  107. package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +0 -145
  108. package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +0 -82
  109. package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +0 -619
  110. package/.docs/raw/docs/(reference)/api-reference/primitives/composition.mdx +0 -22
  111. package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +0 -65
  112. package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +0 -73
  113. package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +0 -117
  114. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +0 -339
  115. package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +0 -77
  116. package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +0 -88
  117. package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +0 -81
  118. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +0 -129
  119. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +0 -138
  120. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +0 -122
  121. package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +0 -289
  122. package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +0 -20
  123. package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +0 -24
  124. package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +0 -32
  125. package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +0 -43
  126. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +0 -43
  127. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +0 -24
  128. package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +0 -20
  129. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +0 -24
  130. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +0 -24
  131. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +0 -36
  132. package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +0 -85
  133. package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +0 -45
  134. package/.docs/raw/docs/(reference)/api-reference/tools/interactables-legacy.mdx +0 -55
  135. package/.docs/raw/docs/(reference)/api-reference/tools/interactables.mdx +0 -151
  136. package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +0 -106
  137. package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +0 -62
  138. package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +0 -178
  139. package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +0 -48
  140. package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +0 -62
  141. package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +0 -22
  142. package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +0 -19
  143. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +0 -149
  144. package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +0 -22
  145. package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +0 -54
  146. package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +0 -36
  147. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +0 -527
  148. package/.docs/raw/docs/cloud/ai-sdk.mdx +0 -602
  149. package/.docs/raw/docs/cloud/authorization.mdx +0 -252
  150. package/.docs/raw/docs/cloud/index.mdx +0 -46
  151. package/.docs/raw/docs/cloud/langgraph.mdx +0 -554
  152. package/.docs/raw/docs/copilots/assistant-frame.mdx +0 -400
  153. package/.docs/raw/docs/copilots/make-assistant-visible.mdx +0 -82
  154. package/.docs/raw/docs/copilots/model-context.mdx +0 -156
  155. package/.docs/raw/docs/copilots/motivation.mdx +0 -202
  156. package/.docs/raw/docs/copilots/use-assistant-instructions.mdx +0 -64
  157. package/.docs/raw/docs/guides/attachments.mdx +0 -619
  158. package/.docs/raw/docs/guides/branching.mdx +0 -76
  159. package/.docs/raw/docs/guides/chain-of-thought.mdx +0 -164
  160. package/.docs/raw/docs/guides/chatgpt-subscription.mdx +0 -108
  161. package/.docs/raw/docs/guides/context-api.mdx +0 -619
  162. package/.docs/raw/docs/guides/dictation.mdx +0 -298
  163. package/.docs/raw/docs/guides/editing.mdx +0 -102
  164. package/.docs/raw/docs/guides/electron.mdx +0 -369
  165. package/.docs/raw/docs/guides/headless-composer-input.mdx +0 -113
  166. package/.docs/raw/docs/guides/image-generation.mdx +0 -74
  167. package/.docs/raw/docs/guides/index.mdx +0 -117
  168. package/.docs/raw/docs/guides/input-history.mdx +0 -55
  169. package/.docs/raw/docs/guides/latex.mdx +0 -158
  170. package/.docs/raw/docs/guides/mentions.mdx +0 -575
  171. package/.docs/raw/docs/guides/message-timing.mdx +0 -209
  172. package/.docs/raw/docs/guides/quoting.mdx +0 -169
  173. package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +0 -212
  174. package/.docs/raw/docs/guides/resumable-stream-stores.mdx +0 -152
  175. package/.docs/raw/docs/guides/resumable-streams.mdx +0 -292
  176. package/.docs/raw/docs/guides/slash-commands.mdx +0 -358
  177. package/.docs/raw/docs/guides/speech.mdx +0 -172
  178. package/.docs/raw/docs/guides/suggestions.mdx +0 -384
  179. package/.docs/raw/docs/guides/virtualization.mdx +0 -133
  180. package/.docs/raw/docs/guides/voice.mdx +0 -310
  181. package/.docs/raw/docs/ink/adapters.mdx +0 -99
  182. package/.docs/raw/docs/ink/custom-backend.mdx +0 -254
  183. package/.docs/raw/docs/ink/hooks.mdx +0 -469
  184. package/.docs/raw/docs/ink/index.mdx +0 -236
  185. package/.docs/raw/docs/ink/migration.mdx +0 -138
  186. package/.docs/raw/docs/ink/primitives.mdx +0 -1259
  187. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +0 -528
  188. package/.docs/raw/docs/integrations/auth/better-auth.mdx +0 -188
  189. package/.docs/raw/docs/integrations/auth/clerk.mdx +0 -166
  190. package/.docs/raw/docs/integrations/auth/next-auth.mdx +0 -191
  191. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +0 -88
  192. package/.docs/raw/docs/integrations/frameworks/cloudflare-agents/overview.mdx +0 -282
  193. package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +0 -188
  194. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +0 -57
  195. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +0 -201
  196. package/.docs/raw/docs/integrations/gateways/index.mdx +0 -162
  197. package/.docs/raw/docs/integrations/index.mdx +0 -178
  198. package/.docs/raw/docs/integrations/observability/helicone.mdx +0 -129
  199. package/.docs/raw/docs/integrations/observability/langfuse.mdx +0 -161
  200. package/.docs/raw/docs/integrations/observability/langsmith.mdx +0 -151
  201. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +0 -773
  202. package/.docs/raw/docs/migrations/deprecation-policy.mdx +0 -42
  203. package/.docs/raw/docs/migrations/index.mdx +0 -50
  204. package/.docs/raw/docs/migrations/react-compatibility.mdx +0 -74
  205. package/.docs/raw/docs/migrations/react-langgraph-v0-7.mdx +0 -328
  206. package/.docs/raw/docs/migrations/toolkit-tools.mdx +0 -236
  207. package/.docs/raw/docs/migrations/v0-11.mdx +0 -172
  208. package/.docs/raw/docs/migrations/v0-12.mdx +0 -302
  209. package/.docs/raw/docs/migrations/v0-14.mdx +0 -297
  210. package/.docs/raw/docs/migrations/v0-15.mdx +0 -270
  211. package/.docs/raw/docs/primitives/action-bar.mdx +0 -352
  212. package/.docs/raw/docs/primitives/assistant-modal.mdx +0 -216
  213. package/.docs/raw/docs/primitives/attachment.mdx +0 -217
  214. package/.docs/raw/docs/primitives/branch-picker.mdx +0 -222
  215. package/.docs/raw/docs/primitives/chain-of-thought.mdx +0 -315
  216. package/.docs/raw/docs/primitives/composer.mdx +0 -659
  217. package/.docs/raw/docs/primitives/error.mdx +0 -142
  218. package/.docs/raw/docs/primitives/index.mdx +0 -99
  219. package/.docs/raw/docs/primitives/message.mdx +0 -618
  220. package/.docs/raw/docs/primitives/selection-toolbar.mdx +0 -191
  221. package/.docs/raw/docs/primitives/suggestion.mdx +0 -254
  222. package/.docs/raw/docs/primitives/thread-list.mdx +0 -467
  223. package/.docs/raw/docs/primitives/thread.mdx +0 -509
  224. package/.docs/raw/docs/react-native/adapters.mdx +0 -94
  225. package/.docs/raw/docs/react-native/custom-backend.mdx +0 -207
  226. package/.docs/raw/docs/react-native/hooks.mdx +0 -339
  227. package/.docs/raw/docs/react-native/index.mdx +0 -289
  228. package/.docs/raw/docs/react-native/migration.mdx +0 -142
  229. package/.docs/raw/docs/react-native/primitives.mdx +0 -839
  230. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +0 -399
  231. package/.docs/raw/docs/runtimes/a2a/overview.mdx +0 -60
  232. package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +0 -216
  233. package/.docs/raw/docs/runtimes/ag-ui/agent-state.mdx +0 -124
  234. package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +0 -70
  235. package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +0 -243
  236. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +0 -255
  237. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +0 -61
  238. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +0 -122
  239. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +0 -135
  240. package/.docs/raw/docs/runtimes/ai-sdk/v6-legacy.mdx +0 -636
  241. package/.docs/raw/docs/runtimes/ai-sdk/v7.mdx +0 -716
  242. package/.docs/raw/docs/runtimes/claude-managed-agents.mdx +0 -118
  243. package/.docs/raw/docs/runtimes/concepts/adapters.mdx +0 -265
  244. package/.docs/raw/docs/runtimes/concepts/architecture.mdx +0 -167
  245. package/.docs/raw/docs/runtimes/concepts/stability.mdx +0 -68
  246. package/.docs/raw/docs/runtimes/concepts/threads.mdx +0 -513
  247. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +0 -763
  248. package/.docs/raw/docs/runtimes/custom/data-stream.mdx +0 -339
  249. package/.docs/raw/docs/runtimes/custom/external-store.mdx +0 -957
  250. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +0 -902
  251. package/.docs/raw/docs/runtimes/custom/overview.mdx +0 -71
  252. package/.docs/raw/docs/runtimes/eve/overview.mdx +0 -151
  253. package/.docs/raw/docs/runtimes/eve/quickstart.mdx +0 -192
  254. package/.docs/raw/docs/runtimes/google-adk/api.mdx +0 -256
  255. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +0 -784
  256. package/.docs/raw/docs/runtimes/google-adk/overview.mdx +0 -69
  257. package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +0 -229
  258. package/.docs/raw/docs/runtimes/langchain.mdx +0 -901
  259. package/.docs/raw/docs/runtimes/langgraph/agent-state.mdx +0 -181
  260. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +0 -305
  261. package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +0 -104
  262. package/.docs/raw/docs/runtimes/langgraph/overview.mdx +0 -84
  263. package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +0 -496
  264. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +0 -144
  265. package/.docs/raw/docs/runtimes/langgraph/threads.mdx +0 -113
  266. package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +0 -29
  267. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -93
  268. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +0 -347
  269. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +0 -393
  270. package/.docs/raw/docs/runtimes/opencode/hooks.mdx +0 -194
  271. package/.docs/raw/docs/runtimes/opencode/overview.mdx +0 -58
  272. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +0 -119
  273. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +0 -133
  274. package/.docs/raw/docs/tools/a2ui.mdx +0 -107
  275. package/.docs/raw/docs/tools/backend.mdx +0 -147
  276. package/.docs/raw/docs/tools/defining-tools.mdx +0 -574
  277. package/.docs/raw/docs/tools/dynamic-tools.mdx +0 -112
  278. package/.docs/raw/docs/tools/generative-ui-primitive.mdx +0 -180
  279. package/.docs/raw/docs/tools/generative-ui-slack.mdx +0 -167
  280. package/.docs/raw/docs/tools/generative-ui-teams.mdx +0 -160
  281. package/.docs/raw/docs/tools/generative-ui.mdx +0 -322
  282. package/.docs/raw/docs/tools/index.mdx +0 -72
  283. package/.docs/raw/docs/tools/interactables.mdx +0 -1084
  284. package/.docs/raw/docs/tools/mcp-apps.mdx +0 -346
  285. package/.docs/raw/docs/tools/mcp.mdx +0 -466
  286. package/.docs/raw/docs/tools/multi-agent.mdx +0 -237
  287. package/.docs/raw/docs/tools/openui.mdx +0 -175
  288. package/.docs/raw/docs/tools/tool-ui.mdx +0 -1008
  289. package/.docs/raw/docs/tools/user-managed-mcp.mdx +0 -428
  290. package/.docs/raw/docs/ui/accordion.mdx +0 -266
  291. package/.docs/raw/docs/ui/assistant-modal.mdx +0 -166
  292. package/.docs/raw/docs/ui/assistant-sidebar.mdx +0 -89
  293. package/.docs/raw/docs/ui/attachment.mdx +0 -259
  294. package/.docs/raw/docs/ui/badge.mdx +0 -150
  295. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +0 -212
  296. package/.docs/raw/docs/ui/context-display.mdx +0 -148
  297. package/.docs/raw/docs/ui/diff-viewer.mdx +0 -280
  298. package/.docs/raw/docs/ui/directive-text.mdx +0 -114
  299. package/.docs/raw/docs/ui/dot-matrix.mdx +0 -133
  300. package/.docs/raw/docs/ui/file.mdx +0 -159
  301. package/.docs/raw/docs/ui/follow-up-suggestions.mdx +0 -82
  302. package/.docs/raw/docs/ui/image.mdx +0 -102
  303. package/.docs/raw/docs/ui/markdown.mdx +0 -64
  304. package/.docs/raw/docs/ui/mcp-config.mdx +0 -107
  305. package/.docs/raw/docs/ui/mermaid.mdx +0 -92
  306. package/.docs/raw/docs/ui/message-timing.mdx +0 -93
  307. package/.docs/raw/docs/ui/model-selector.mdx +0 -455
  308. package/.docs/raw/docs/ui/number-roll.mdx +0 -154
  309. package/.docs/raw/docs/ui/part-grouping.mdx +0 -614
  310. package/.docs/raw/docs/ui/quote.mdx +0 -211
  311. package/.docs/raw/docs/ui/reasoning.mdx +0 -186
  312. package/.docs/raw/docs/ui/scrollbar.mdx +0 -77
  313. package/.docs/raw/docs/ui/select.mdx +0 -254
  314. package/.docs/raw/docs/ui/sources.mdx +0 -177
  315. package/.docs/raw/docs/ui/streamdown.mdx +0 -392
  316. package/.docs/raw/docs/ui/syntax-highlighting.mdx +0 -205
  317. package/.docs/raw/docs/ui/tabs.mdx +0 -271
  318. package/.docs/raw/docs/ui/thread-list.mdx +0 -372
  319. package/.docs/raw/docs/ui/thread.mdx +0 -512
  320. package/.docs/raw/docs/ui/tool-fallback.mdx +0 -127
  321. package/.docs/raw/docs/ui/tool-group.mdx +0 -240
  322. package/.docs/raw/docs/ui/voice.mdx +0 -173
  323. package/.docs/raw/docs/utilities/heat-graph.mdx +0 -237
  324. package/.docs/raw/docs/utilities/react-o11y.mdx +0 -362
  325. package/.docs/raw/docs/utilities/tw-shimmer.mdx +0 -212
  326. package/dist/constants.d.ts +0 -14
  327. package/dist/constants.d.ts.map +0 -1
  328. package/dist/constants.js +0 -19
  329. package/dist/constants.js.map +0 -1
  330. package/dist/prepare-docs/code-examples.d.ts +0 -5
  331. package/dist/prepare-docs/code-examples.d.ts.map +0 -1
  332. package/dist/prepare-docs/code-examples.js +0 -117
  333. package/dist/prepare-docs/code-examples.js.map +0 -1
  334. package/dist/prepare-docs/copy-raw.d.ts +0 -5
  335. package/dist/prepare-docs/copy-raw.d.ts.map +0 -1
  336. package/dist/prepare-docs/copy-raw.js +0 -49
  337. package/dist/prepare-docs/copy-raw.js.map +0 -1
  338. package/dist/prepare-docs/prepare.d.ts +0 -1
  339. package/dist/prepare-docs/prepare.js +0 -22
  340. package/dist/prepare-docs/prepare.js.map +0 -1
  341. package/dist/prompts/xulux-playground.d.ts +0 -12
  342. package/dist/prompts/xulux-playground.d.ts.map +0 -1
  343. package/dist/prompts/xulux-playground.js +0 -33
  344. package/dist/prompts/xulux-playground.js.map +0 -1
  345. package/dist/tools/docs.d.ts +0 -22
  346. package/dist/tools/docs.d.ts.map +0 -1
  347. package/dist/tools/docs.js +0 -177
  348. package/dist/tools/docs.js.map +0 -1
  349. package/dist/tools/examples.d.ts +0 -24
  350. package/dist/tools/examples.d.ts.map +0 -1
  351. package/dist/tools/examples.js +0 -87
  352. package/dist/tools/examples.js.map +0 -1
  353. package/dist/tools/resources.d.ts +0 -6
  354. package/dist/tools/resources.d.ts.map +0 -1
  355. package/dist/tools/resources.js +0 -75
  356. package/dist/tools/resources.js.map +0 -1
  357. package/dist/tools/search.d.ts +0 -24
  358. package/dist/tools/search.d.ts.map +0 -1
  359. package/dist/tools/search.js +0 -39
  360. package/dist/tools/search.js.map +0 -1
  361. package/dist/tools/tests/mcp-test-client.d.ts +0 -15
  362. package/dist/tools/tests/mcp-test-client.d.ts.map +0 -1
  363. package/dist/tools/tests/mcp-test-client.js +0 -68
  364. package/dist/tools/tests/mcp-test-client.js.map +0 -1
  365. package/dist/tools/tests/test-setup.d.ts +0 -7
  366. package/dist/tools/tests/test-setup.d.ts.map +0 -1
  367. package/dist/tools/tests/test-setup.js +0 -36
  368. package/dist/tools/tests/test-setup.js.map +0 -1
  369. package/dist/tools/xulux-templates.d.ts +0 -58
  370. package/dist/tools/xulux-templates.d.ts.map +0 -1
  371. package/dist/tools/xulux-templates.js +0 -84
  372. package/dist/tools/xulux-templates.js.map +0 -1
  373. package/dist/utils/cache.d.ts +0 -5
  374. package/dist/utils/cache.d.ts.map +0 -1
  375. package/dist/utils/cache.js +0 -18
  376. package/dist/utils/cache.js.map +0 -1
  377. package/dist/utils/logger.d.ts +0 -10
  378. package/dist/utils/logger.d.ts.map +0 -1
  379. package/dist/utils/logger.js +0 -20
  380. package/dist/utils/logger.js.map +0 -1
  381. package/dist/utils/mcp-format.d.ts +0 -11
  382. package/dist/utils/mcp-format.d.ts.map +0 -1
  383. package/dist/utils/mcp-format.js +0 -14
  384. package/dist/utils/mcp-format.js.map +0 -1
  385. package/dist/utils/mdx.d.ts +0 -12
  386. package/dist/utils/mdx.d.ts.map +0 -1
  387. package/dist/utils/mdx.js +0 -45
  388. package/dist/utils/mdx.js.map +0 -1
  389. package/dist/utils/paths.d.ts +0 -12
  390. package/dist/utils/paths.d.ts.map +0 -1
  391. package/dist/utils/paths.js +0 -93
  392. package/dist/utils/paths.js.map +0 -1
  393. package/dist/utils/search.d.ts +0 -10
  394. package/dist/utils/search.d.ts.map +0 -1
  395. package/dist/utils/search.js +0 -97
  396. package/dist/utils/search.js.map +0 -1
  397. package/dist/utils/security.d.ts +0 -5
  398. package/dist/utils/security.d.ts.map +0 -1
  399. package/dist/utils/security.js +0 -22
  400. package/dist/utils/security.js.map +0 -1
  401. package/dist/xulux/catalog-client.d.ts +0 -14
  402. package/dist/xulux/catalog-client.d.ts.map +0 -1
  403. package/dist/xulux/catalog-client.js +0 -67
  404. package/dist/xulux/catalog-client.js.map +0 -1
  405. package/dist/xulux/fallback-catalog.d.ts +0 -7
  406. package/dist/xulux/fallback-catalog.d.ts.map +0 -1
  407. package/dist/xulux/fallback-catalog.js +0 -47
  408. package/dist/xulux/fallback-catalog.js.map +0 -1
  409. package/dist/xulux/fetch-sandbox.d.ts +0 -5
  410. package/dist/xulux/fetch-sandbox.d.ts.map +0 -1
  411. package/dist/xulux/fetch-sandbox.js +0 -40
  412. package/dist/xulux/fetch-sandbox.js.map +0 -1
  413. package/dist/xulux/template-service.d.ts +0 -84
  414. package/dist/xulux/template-service.d.ts.map +0 -1
  415. package/dist/xulux/template-service.js +0 -223
  416. package/dist/xulux/template-service.js.map +0 -1
  417. package/dist/xulux/types.d.ts +0 -55
  418. package/dist/xulux/types.d.ts.map +0 -1
  419. package/dist/xulux/types.js +0 -6
  420. package/dist/xulux/types.js.map +0 -1
  421. package/src/constants.ts +0 -24
  422. package/src/prepare-docs/code-examples.ts +0 -158
  423. package/src/prepare-docs/copy-raw.ts +0 -50
  424. package/src/prepare-docs/prepare.ts +0 -24
  425. package/src/prompts/xulux-playground.ts +0 -36
  426. package/src/tools/docs.ts +0 -255
  427. package/src/tools/examples.ts +0 -114
  428. package/src/tools/resources.ts +0 -111
  429. package/src/tools/search.ts +0 -46
  430. package/src/tools/tests/completions.test.ts +0 -60
  431. package/src/tools/tests/directory-size-cap.test.ts +0 -50
  432. package/src/tools/tests/docs.test.ts +0 -144
  433. package/src/tools/tests/examples.test.ts +0 -94
  434. package/src/tools/tests/integration.test.ts +0 -45
  435. package/src/tools/tests/json-parsing.test.ts +0 -23
  436. package/src/tools/tests/listings-cache.test.ts +0 -19
  437. package/src/tools/tests/mcp-protocol.test.ts +0 -216
  438. package/src/tools/tests/mcp-test-client.ts +0 -111
  439. package/src/tools/tests/path-traversal.test.ts +0 -81
  440. package/src/tools/tests/resources.test.ts +0 -133
  441. package/src/tools/tests/search.test.ts +0 -37
  442. package/src/tools/tests/test-setup.ts +0 -50
  443. package/src/tools/tests/xulux-templates.test.ts +0 -262
  444. package/src/tools/xulux-templates.ts +0 -141
  445. package/src/utils/cache.ts +0 -20
  446. package/src/utils/logger.ts +0 -20
  447. package/src/utils/mcp-format.ts +0 -14
  448. package/src/utils/mdx.ts +0 -59
  449. package/src/utils/paths.ts +0 -139
  450. package/src/utils/search.ts +0 -131
  451. package/src/utils/security.ts +0 -52
  452. package/src/utils/tests/cache.test.ts +0 -51
  453. package/src/utils/tests/mcp-format.test.ts +0 -22
  454. package/src/utils/tests/security.test.ts +0 -119
  455. package/src/xulux/catalog-client.ts +0 -105
  456. package/src/xulux/fallback-catalog.ts +0 -63
  457. package/src/xulux/fetch-sandbox.ts +0 -56
  458. package/src/xulux/template-service.ts +0 -406
  459. package/src/xulux/types.ts +0 -60
@@ -1,392 +0,0 @@
1
- ---
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
- links:
5
- - label: Streamdown
6
- url: https://github.com/vercel/streamdown
7
- platforms: ["react"]
8
- ---
9
-
10
- import { PackageManagerTabs } from "@/components/docs/fumadocs/install/package-manager-tabs";
11
- import { StreamdownSample } from "@/components/docs/samples/streamdown";
12
-
13
- <StreamdownSample />
14
-
15
- <Callout type="info">
16
- `@assistant-ui/react-streamdown` is an **alternative** to `@assistant-ui/react-markdown`. Choose based on your needs:
17
- - **react-markdown**: Lightweight, bring-your-own syntax highlighter
18
- - **react-streamdown**: Feature-rich with built-in Shiki, KaTeX, Mermaid support
19
- </Callout>
20
-
21
- ## Installation
22
-
23
- <PackageManagerTabs packages={["@assistant-ui/react-streamdown", "streamdown"]} />
24
-
25
- For additional features, install the optional plugins:
26
-
27
- <PackageManagerTabs packages={["@streamdown/code", "@streamdown/math", "@streamdown/mermaid", "@streamdown/cjk"]} />
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
-
59
- ## Basic Usage
60
-
61
- ```tsx
62
- import { StreamdownTextPrimitive } from "@assistant-ui/react-streamdown";
63
-
64
- // Inside a MessagePrimitive.Parts component
65
- <MessagePrimitive.Parts>
66
- {({ part }) => part.type === "text" ? <StreamdownText {...part} /> : null}
67
- </MessagePrimitive.Parts>
68
-
69
- // Where StreamdownText is:
70
- const StreamdownText = () => <StreamdownTextPrimitive />;
71
- ```
72
-
73
- ## With Plugins (Recommended)
74
-
75
- ```tsx
76
- import { StreamdownTextPrimitive } from "@assistant-ui/react-streamdown";
77
- import { code } from "@streamdown/code";
78
- import { math } from "@streamdown/math";
79
- import { mermaid } from "@streamdown/mermaid";
80
- import "katex/dist/katex.min.css";
81
-
82
- const StreamdownText = () => (
83
- <StreamdownTextPrimitive
84
- plugins={{ code, math, mermaid }}
85
- shikiTheme={["github-light", "github-dark"]}
86
- />
87
- );
88
- ```
89
-
90
- When `@streamdown/code` is provided, the default theme is `["github-light", "github-dark"]` for light/dark mode support.
91
-
92
- ## Migration from react-markdown
93
-
94
- If you're migrating from `@assistant-ui/react-markdown`, your existing `SyntaxHighlighter` and `CodeHeader` components still work:
95
-
96
- ```tsx
97
- import { StreamdownTextPrimitive } from "@assistant-ui/react-streamdown";
98
-
99
- const StreamdownText = () => (
100
- <StreamdownTextPrimitive
101
- components={{
102
- SyntaxHighlighter: MySyntaxHighlighter,
103
- CodeHeader: MyCodeHeader,
104
- }}
105
- componentsByLanguage={{
106
- mermaid: { SyntaxHighlighter: MermaidRenderer }
107
- }}
108
- />
109
- );
110
- ```
111
-
112
- ## Props
113
-
114
- | Prop | Type | Default | Description |
115
- |------|------|---------|-------------|
116
- | `mode` | `"streaming" \| "static"` | `"streaming"` | Rendering mode |
117
- | `plugins` | `PluginConfig` | - | Streamdown plugins (code, math, mermaid, cjk) |
118
- | `shikiTheme` | `[string, string]` | `["github-light", "github-dark"]` | Light and dark theme for Shiki |
119
- | `components` | `object` | - | Custom components including `SyntaxHighlighter` and `CodeHeader` |
120
- | `componentsByLanguage` | `object` | - | Language-specific component overrides |
121
- | `preprocess` | `(text: string) => string` | - | Text preprocessing function |
122
- | `defer` | `boolean` | `false` | Defer markdown parsing to a lower priority via `useDeferredValue` so typing and scrolling stay responsive during streaming |
123
- | `smooth` | `boolean \| SmoothOptions` | `false` | Typewriter-style reveal via `useSmooth`; the caret and controls stay active until the reveal catches up. Prefer the native `animated` prop for entrance animations |
124
- | `controls` | `boolean \| object` | `true` | Enable/disable UI controls for code blocks and tables |
125
- | `caret` | `"block" \| "circle"` | - | Streaming caret style |
126
- | `mermaid` | `MermaidOptions` | - | Mermaid diagram configuration |
127
- | `linkSafety` | `LinkSafetyConfig` | - | Link safety confirmation dialog |
128
- | `remend` | `RemendConfig` | - | Incomplete markdown auto-completion |
129
- | `allowedTags` | `Record<string, string[]>` | - | HTML tags whitelist |
130
- | `containerProps` | `object` | - | Props for the container div |
131
- | `containerClassName` | `string` | - | Class name for the container |
132
- | `remarkRehypeOptions` | `object` | - | Options passed to remark-rehype |
133
- | `BlockComponent` | `ComponentType` | - | Custom component for rendering blocks |
134
- | `parseMarkdownIntoBlocksFn` | `(md: string) => string[]` | - | Custom block parsing function |
135
- | `parseIncompleteMarkdown` | `boolean` | `false` | Parse incomplete markdown as-is (skip remend) |
136
- | `security` | `SecurityConfig` | - | URL/image security restrictions |
137
-
138
- ## Plugin Configuration
139
-
140
- ### Code Highlighting
141
-
142
- ```tsx
143
- import { code } from "@streamdown/code";
144
-
145
- <StreamdownTextPrimitive
146
- plugins={{ code }}
147
- shikiTheme={["github-light", "github-dark"]}
148
- />
149
- ```
150
-
151
- ### Math (LaTeX)
152
-
153
- ```tsx
154
- import { math } from "@streamdown/math";
155
- import "katex/dist/katex.min.css";
156
-
157
- <StreamdownTextPrimitive plugins={{ math }} />
158
- ```
159
-
160
- ### Mermaid Diagrams
161
-
162
- ```tsx
163
- import { mermaid } from "@streamdown/mermaid";
164
-
165
- <StreamdownTextPrimitive plugins={{ mermaid }} />
166
- ```
167
-
168
- ### CJK Text Optimization
169
-
170
- ```tsx
171
- import { cjk } from "@streamdown/cjk";
172
-
173
- <StreamdownTextPrimitive plugins={{ cjk }} />
174
- ```
175
-
176
- ## Advanced Configuration
177
-
178
- ### Mermaid Options
179
-
180
- Customize Mermaid diagram rendering with configuration and error handling:
181
-
182
- ```tsx
183
- import { mermaid } from "@streamdown/mermaid";
184
-
185
- <StreamdownTextPrimitive
186
- plugins={{ mermaid }}
187
- mermaid={{
188
- config: { theme: "dark" },
189
- errorComponent: ({ error, chart, retry }) => (
190
- <div>
191
- <p>Failed to render diagram: {error}</p>
192
- <button onClick={retry}>Retry</button>
193
- </div>
194
- ),
195
- }}
196
- />
197
- ```
198
-
199
- ### Streaming Caret
200
-
201
- Display a caret indicator during streaming:
202
-
203
- ```tsx
204
- <StreamdownTextPrimitive caret="block" /> // ▋
205
- <StreamdownTextPrimitive caret="circle" /> // ●
206
- ```
207
-
208
- 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).
209
-
210
- ### Link Safety
211
-
212
- Show confirmation before opening external links:
213
-
214
- ```tsx
215
- <StreamdownTextPrimitive
216
- linkSafety={{
217
- enabled: true,
218
- onLinkCheck: (url) => url.startsWith("https://trusted.com"),
219
- }}
220
- />
221
- ```
222
-
223
- ### Incomplete Markdown Handling (Remend)
224
-
225
- Configure how incomplete markdown syntax is handled during streaming:
226
-
227
- ```tsx
228
- <StreamdownTextPrimitive
229
- remend={{
230
- links: true, // Complete incomplete links
231
- images: true, // Handle incomplete images
232
- linkMode: "protocol", // How to handle incomplete links: 'protocol' or 'text-only'
233
- bold: true, // Complete **text → **text**
234
- italic: true, // Complete *text → *text*
235
- boldItalic: true, // Complete ***text → ***text***
236
- inlineCode: true, // Complete `code → `code`
237
- strikethrough: true, // Complete ~~text → ~~text~~
238
- katex: true, // Complete $$equation → $$equation$$
239
- setextHeadings: true, // Handle incomplete setext headings
240
- handlers: [], // Custom handlers for incomplete markdown completion
241
- }}
242
- />
243
- ```
244
-
245
- ### Allowed HTML Tags
246
-
247
- Allow specific HTML tags in markdown content:
248
-
249
- ```tsx
250
- <StreamdownTextPrimitive
251
- allowedTags={{
252
- div: ["class", "id"],
253
- span: ["class", "style"],
254
- iframe: ["src", "width", "height"],
255
- }}
256
- />
257
- ```
258
-
259
- ### Security Configuration
260
-
261
- Restrict allowed URLs for links and images. This overrides streamdown's default allow-all policy:
262
-
263
- ```tsx
264
- <StreamdownTextPrimitive
265
- security={{
266
- // Only allow links to trusted domains
267
- allowedLinkPrefixes: ["https://example.com", "https://docs.example.com"],
268
- // Only allow images from your CDN
269
- allowedImagePrefixes: ["https://cdn.example.com"],
270
- // Restrict protocols
271
- allowedProtocols: ["https", "mailto"],
272
- // Disable base64 data images
273
- allowDataImages: false,
274
- // Default origin for relative URLs
275
- defaultOrigin: "https://example.com",
276
- // CSS class for blocked elements
277
- blockedLinkClass: "blocked-link",
278
- blockedImageClass: "blocked-image",
279
- }}
280
- />
281
- ```
282
-
283
- ## Detecting Inline vs Block Code
284
-
285
- When building custom code components, you can use `useIsStreamdownCodeBlock` to detect whether you're inside a code block or inline code:
286
-
287
- ```tsx
288
- import { useIsStreamdownCodeBlock } from "@assistant-ui/react-streamdown";
289
-
290
- function MyCodeComponent({ children, ...props }) {
291
- const isCodeBlock = useIsStreamdownCodeBlock();
292
-
293
- if (!isCodeBlock) {
294
- return <code className="inline-code" {...props}>{children}</code>;
295
- }
296
-
297
- return <pre><code {...props}>{children}</code></pre>;
298
- }
299
- ```
300
-
301
- You can also use `useStreamdownPreProps` to access the props passed to the parent `<pre>` element:
302
-
303
- ```tsx
304
- import { useStreamdownPreProps } from "@assistant-ui/react-streamdown";
305
-
306
- function MyCodeComponent({ children }) {
307
- const preProps = useStreamdownPreProps();
308
-
309
- if (!preProps) {
310
- // Inline code
311
- return <code>{children}</code>;
312
- }
313
-
314
- // Block code - preProps contains className, node, etc.
315
- return <code className={preProps.className}>{children}</code>;
316
- }
317
- ```
318
-
319
- ## Comparison with react-markdown
320
-
321
- | Feature | react-markdown | react-streamdown |
322
- |---------|---------------|------------------|
323
- | Bundle size | Smaller | Larger (with plugins) |
324
- | Syntax highlighting | Bring your own | Built-in Shiki |
325
- | Math rendering | Manual setup | Built-in KaTeX |
326
- | Mermaid diagrams | Manual setup | Built-in support |
327
- | CJK optimization | None | Built-in |
328
- | Streaming | `smooth` prop | `mode` + block-based |
329
-
330
- ## Re-exported Utilities
331
-
332
- The package re-exports useful utilities:
333
-
334
- ```tsx
335
- import {
336
- // Context for accessing streamdown state
337
- StreamdownContext,
338
- // Parse markdown into blocks (for custom implementations)
339
- parseMarkdownIntoBlocks,
340
- // Hooks for custom code components
341
- useIsStreamdownCodeBlock,
342
- useStreamdownPreProps,
343
- // Memo comparison utility for custom components
344
- memoCompareNodes,
345
- // Default Shiki theme: ["github-light", "github-dark"]
346
- DEFAULT_SHIKI_THEME,
347
- } from "@assistant-ui/react-streamdown";
348
- ```
349
-
350
- ### Available Types
351
-
352
- ```tsx
353
- import type {
354
- // Component props
355
- StreamdownTextPrimitiveProps,
356
- SyntaxHighlighterProps,
357
- CodeHeaderProps,
358
- ComponentsByLanguage,
359
- StreamdownTextComponents,
360
- StreamdownProps,
361
- // Plugin types
362
- PluginConfig,
363
- ResolvedPluginConfig,
364
- CodeHighlighterPlugin,
365
- DiagramPlugin,
366
- MathPlugin,
367
- CjkPlugin,
368
- HighlightOptions,
369
- // Shiki types
370
- BundledTheme,
371
- BundledLanguage,
372
- // Configuration types
373
- CaretStyle,
374
- ControlsConfig,
375
- MermaidOptions,
376
- MermaidErrorComponentProps,
377
- LinkSafetyConfig,
378
- LinkSafetyModalProps,
379
- RemendConfig,
380
- RemendHandler,
381
- AllowedTags,
382
- RemarkRehypeOptions,
383
- BlockProps,
384
- SecurityConfig,
385
- } from "@assistant-ui/react-streamdown";
386
- ```
387
-
388
- ## Related Components
389
-
390
- - [Markdown](/docs/ui/markdown) - Lightweight markdown with react-markdown
391
- - [Syntax Highlighting](/docs/ui/syntax-highlighting) - Add code highlighting to react-markdown
392
- - [Mermaid](/docs/ui/mermaid) - Render diagrams in react-markdown
@@ -1,205 +0,0 @@
1
- ---
2
- title: Syntax Highlighting
3
- description: Code block syntax highlighting with react-shiki or react-syntax-highlighter.
4
- platforms: ["react"]
5
- ---
6
-
7
- import { SyntaxHighlightingSample } from "@/components/docs/samples/syntax-highlighting";
8
-
9
- <Callout type="warn">Syntax highlighting is not enabled in markdown by default.</Callout>
10
-
11
- <SyntaxHighlightingSample />
12
-
13
- <Callout type="info">
14
- `assistant-ui` provides two options for syntax highlighting:
15
- - **react-shiki** (recommended for performance & dynamic language support)
16
- - **react-syntax-highlighter** (legacy - Prism or Highlight.js based)
17
- </Callout>
18
-
19
- ---
20
-
21
- ## react-shiki
22
-
23
- <Steps>
24
- <Step>
25
-
26
- #### Add `shiki-highlighter`
27
-
28
- <InstallCommand shadcn={["shiki-highlighter"]} />
29
-
30
- This adds a `/components/assistant-ui/shiki-highlighter.tsx` file to your project and
31
- installs the `react-shiki` dependency. The highlighter can be customized by editing
32
- the config in the `shiki-highlighter.tsx` file. While a message part is still streaming, the component renders the plain code without tokenization and highlights once the part settles, so streaming stays cheap.
33
-
34
- </Step>
35
- <Step>
36
-
37
- #### Add it to `defaultComponents` in `markdown-text.tsx`
38
-
39
- ```tsx title="/components/assistant-ui/markdown-text.tsx"
40
- import { SyntaxHighlighter } from "./shiki-highlighter";
41
-
42
- export const defaultComponents = memoizeMarkdownComponents({
43
- SyntaxHighlighter: SyntaxHighlighter, // [!code ++]
44
- h1: /* ... */,
45
- // ...other elements...
46
- });
47
- ```
48
-
49
- </Step>
50
- </Steps>
51
-
52
- ### Options
53
-
54
- See [react-shiki documentation](https://github.com/AVGVSTVS96/react-shiki#props) for all available options.
55
-
56
- Key options:
57
- - `theme` - Shiki theme or multi-theme object (`{ light, dark, ... }`)
58
- - `language` - Language for highlighting (default: `"text"`)
59
- - `defaultColor` - Default color mode (`string | false`, e.g. `light-dark()`)
60
- - `delay` - Delay between highlights, useful for streaming (default: `0`)
61
- - `customLanguages` - Custom languages to preload for dynamic support
62
- - `codeToHastOptions` - All other options accepted by Shiki's [`codeToHast`](https://github.com/shikijs/shiki/blob/main/packages/types/src/options.ts#L121)
63
-
64
- ### Dual/multi theme support
65
-
66
- To use multiple themes, pass a theme object:
67
-
68
- ```tsx title="/components/assistant-ui/shiki-highlighter.tsx"
69
- <ShikiHighlighter
70
- /* ... */
71
- theme={{
72
- light: "github-light",
73
- dark: "github-dark",
74
- }}
75
- defaultColor="light-dark()"
76
- /* ... */
77
- >
78
- ```
79
-
80
- > **Note:** The `shiki-highlighter` component sets `defaultColor="light-dark()"` automatically.
81
- > Only set this manually if using `ShikiHighlighter` directly.
82
-
83
- With `defaultColor="light-dark()"`, theme switching is automatic based on your site's `color-scheme`.
84
- No custom Shiki CSS overrides are required.
85
-
86
- Set `color-scheme` on your app root:
87
-
88
- System-based (follows OS/browser preference):
89
-
90
- ```css title="globals.css"
91
- :root {
92
- color-scheme: light dark;
93
- }
94
- ```
95
-
96
- Class-based theme switching:
97
-
98
- ```css title="globals.css"
99
- :root {
100
- color-scheme: light;
101
- }
102
- :root.dark {
103
- color-scheme: dark;
104
- }
105
- ```
106
-
107
- If you need broader support for older browsers, you can still use the manual CSS-variable switching approach from the Shiki dual-theme docs.
108
-
109
- For more information:
110
- - [react-shiki multi-theme/reactive themes](https://github.com/AVGVSTVS96/react-shiki)
111
- - [Shiki dual themes + `light-dark()`](https://shiki.style/guide/dual-themes)
112
-
113
- ### Bundle Optimization
114
-
115
- By default, `react-shiki` includes the full Shiki bundle, which contains all supported languages and themes.
116
-
117
- To reduce bundle size, you can use the web bundle by changing the import to `react-shiki/web`, to include a smaller bundle of web related languages:
118
-
119
- ```tsx title="/components/assistant-ui/shiki-highlighter.tsx"
120
- import ShikiHighlighter, { type ShikiHighlighterProps } from "react-shiki/web";
121
- ```
122
-
123
- #### Custom Bundles
124
-
125
- For strict bundle size control, `react-shiki` also supports custom bundles created using `createHighlighterCore` from `react-shiki/core` (re-exported from Shiki):
126
-
127
- ```tsx title="/components/assistant-ui/shiki-highlighter.tsx" {3-9}
128
- import { createHighlighterCore, createOnigurumaEngine } from "react-shiki/core"; // [!code ++]
129
-
130
- // Create the highlighter
131
- // Use dynamic imports to load languages and themes on client on demand
132
- const customHighlighter = await createHighlighterCore({
133
- themes: [import("@shikijs/themes/nord")],
134
- langs: [
135
- import("@shikijs/langs/javascript"),
136
- import("@shikijs/langs/typescript"),
137
- ],
138
- engine: createOnigurumaEngine(import("shiki/wasm")),
139
- });
140
-
141
- // Then pass it to the highlighter prop
142
- <SyntaxHighlighter
143
- {...props}
144
- language={language}
145
- theme={theme}
146
- highlighter={customHighlighter} // [!code ++]
147
- />;
148
- ```
149
-
150
- <Callout type="info">
151
- For more information, see [react-shiki - bundle options](https://github.com/avgvstvs96/react-shiki#bundle-options).
152
- </Callout>
153
-
154
- ---
155
-
156
- ## react-syntax-highlighter
157
-
158
- <Callout type="warn">
159
- This option may be removed in a future release. Consider using
160
- [react-shiki](#react-shiki) instead.
161
- </Callout>
162
-
163
- <Steps>
164
- <Step>
165
-
166
- #### Add `syntax-highlighter`
167
-
168
- <InstallCommand shadcn={["syntax-highlighter"]} />
169
-
170
- Adds a `/components/assistant-ui/syntax-highlighter.tsx` file to your project and installs the `react-syntax-highlighter` dependency.
171
-
172
- </Step>
173
- <Step>
174
-
175
- #### Add it to `defaultComponents` in `markdown-text.tsx`
176
-
177
- ```tsx title="/components/assistant-ui/markdown-text.tsx"
178
- import { SyntaxHighlighter } from "./syntax-highlighter";
179
-
180
- export const defaultComponents = memoizeMarkdownComponents({
181
- SyntaxHighlighter: SyntaxHighlighter, // [!code ++]
182
- h1: /* ... */,
183
- // ...other elements...
184
- });
185
- ```
186
-
187
- </Step>
188
- </Steps>
189
-
190
- ### Options
191
-
192
- Supports all options from [`react-syntax-highlighter`](https://github.com/react-syntax-highlighter/react-syntax-highlighter#props).
193
-
194
- ### Bundle Optimization
195
-
196
- By default, the syntax highlighter uses a light build that only includes languages you register. To include all languages:
197
-
198
- ```tsx title="/components/assistant-ui/syntax-highlighter.tsx"
199
- import { makePrismAsyncSyntaxHighlighter } from "@assistant-ui/react-syntax-highlighter/full";
200
- ```
201
-
202
- ## Related Components
203
-
204
- - [Markdown](/docs/ui/markdown) - Rich text rendering that uses syntax highlighting
205
- - [Mermaid](/docs/ui/mermaid) - Render diagrams instead of code blocks