@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,201 +0,0 @@
1
- ---
2
- title: Separate server integration
3
- description: Run Mastra as a standalone server with assistant-ui as a separate frontend.
4
- ---
5
-
6
- import { MastraIcon } from "@/components/icons/mastra";
7
- import { VercelIcon } from "@/components/icons/vercel";
8
-
9
- Run Mastra as its own service and have the assistant-ui frontend hit it over HTTP. The two halves can deploy, scale, and version independently. The tradeoff is one extra hop and CORS to configure.
10
-
11
- For the simpler in-process variant, see [full-stack](/docs/integrations/frameworks/mastra/full-stack) instead.
12
-
13
- ## Setup
14
-
15
- The setup has two halves. Steps 1 to 4 happen in the **Mastra server** project; steps 5 to 7 happen in a **separate assistant-ui frontend** project. You'll have two terminals open by the end: one for each dev server.
16
-
17
- <Steps>
18
-
19
- <Step>
20
-
21
- ### Create the Mastra server project
22
-
23
- In a directory separate from your frontend, scaffold a Mastra project:
24
-
25
- ```sh
26
- npx create-mastra@latest
27
- ```
28
-
29
- Follow the wizard's prompts. When it finishes, change into the new directory and add the AI SDK adapter:
30
-
31
- ```sh
32
- cd your-mastra-server
33
- ```
34
-
35
- <InstallCommand npm={["@mastra/ai-sdk@latest"]} />
36
-
37
- Set the model provider keys (`OPENAI_API_KEY`, etc.) in `.env.development`. The `create-mastra` wizard prompts for some keys, but verify all the providers you plan to call are present.
38
-
39
- </Step>
40
-
41
- <Step>
42
-
43
- ### Define an agent
44
-
45
- ```ts title="src/mastra/agents/chefAgent.ts"
46
- import { Agent } from "@mastra/core/agent";
47
-
48
- export const chefAgent = new Agent({
49
- name: "chef-agent",
50
- instructions:
51
- "You are Michel, a practical and experienced home chef. " +
52
- "You help people cook with whatever ingredients they have available.",
53
- model: "openai/gpt-5.6-luna",
54
- });
55
- ```
56
-
57
- </Step>
58
-
59
- <Step>
60
-
61
- ### Register the agent, chat route, and CORS
62
-
63
- Open the Mastra entry point. You will set three things in the same `Mastra` constructor: the agent, a chat route, and CORS for the frontend's origin.
64
-
65
- ```ts title="src/mastra/index.ts"
66
- import { Mastra } from "@mastra/core";
67
- import { chefAgent } from "./agents/chefAgent";
68
- import { chatRoute } from "@mastra/ai-sdk";
69
-
70
- export const mastra = new Mastra({
71
- agents: { chefAgent },
72
- server: {
73
- cors: {
74
- origin: process.env.FRONTEND_ORIGIN ?? "http://localhost:3000",
75
- credentials: true,
76
- },
77
- apiRoutes: [
78
- chatRoute({ path: "/chat/:agentId" }),
79
- ],
80
- },
81
- });
82
- ```
83
-
84
- A few things to note:
85
-
86
- - `:agentId` matches the **JavaScript key** in the `agents` object, not the agent's `name` field. So `chefAgent` is reachable at `/chat/chefAgent` (camelCase), not `/chat/chef-agent`.
87
- - Add more agents to the `agents` object and they all become callable through this single route.
88
- - `FRONTEND_ORIGIN` should be set to your deployed frontend's URL in production. Without CORS configured, the browser blocks the request and the chat silently fails.
89
-
90
- </Step>
91
-
92
- <Step>
93
-
94
- ### Run the Mastra server
95
-
96
- ```bash npm2yarn
97
- npm run dev
98
- ```
99
-
100
- The server starts on `http://localhost:4111` by default. Leave it running for the rest of the steps.
101
-
102
- </Step>
103
-
104
- <Step>
105
-
106
- ### Initialize the assistant-ui frontend
107
-
108
- In a **different directory** from the Mastra server, scaffold the frontend:
109
-
110
- ```sh title="New project"
111
- npx assistant-ui@latest create
112
- ```
113
-
114
- ```sh title="Existing project"
115
- npx assistant-ui@latest init
116
- ```
117
-
118
- This creates a default chat page and a local API route at `app/api/chat/route.ts`. You won't use the local route, since the agent runs on the separate Mastra server; delete it once the next step is wired.
119
-
120
- </Step>
121
-
122
- <Step>
123
-
124
- ### Point the runtime at the Mastra server
125
-
126
- Open the file containing `useChatRuntime` (typically `app/assistant.tsx`) and pass an explicit `api` URL:
127
-
128
- ```tsx title="app/assistant.tsx" {8}
129
- "use client";
130
-
131
- import { AssistantRuntimeProvider } from "@assistant-ui/react";
132
- import { AssistantChatTransport, useChatRuntime } from "@assistant-ui/react-ai-sdk";
133
- import { Thread } from "@/components/assistant-ui/thread";
134
-
135
- export const Assistant = () => {
136
- const runtime = useChatRuntime({
137
- transport: new AssistantChatTransport({
138
- api: process.env.NEXT_PUBLIC_MASTRA_URL!,
139
- }),
140
- });
141
-
142
- return (
143
- <AssistantRuntimeProvider runtime={runtime}>
144
- <Thread />
145
- </AssistantRuntimeProvider>
146
- );
147
- };
148
- ```
149
-
150
- Set the URL in your frontend's environment:
151
-
152
- ```sh title=".env.local"
153
- NEXT_PUBLIC_MASTRA_URL=http://localhost:4111/chat/chefAgent
154
- ```
155
-
156
- `NEXT_PUBLIC_*` makes the URL available in the browser. In production, point this at your deployed Mastra server. Mastra itself uses `.env.development` for its server keys; the two projects keep separate environment files.
157
-
158
- </Step>
159
-
160
- <Step>
161
-
162
- ### Run and verify
163
-
164
- Make sure the Mastra server (step 4) is still running in its own terminal, then start the frontend in a new terminal:
165
-
166
- ```bash npm2yarn
167
- npm run dev
168
- ```
169
-
170
- Open `http://localhost:3000`, send a message, and confirm:
171
-
172
- - The response streams in token by token.
173
- - The network tab shows the `POST` going to `http://localhost:4111/chat/chefAgent`, not the local `/api/chat`.
174
- - No CORS errors in the console; if you see `blocked by CORS policy`, revisit step 3.
175
-
176
- </Step>
177
-
178
- </Steps>
179
-
180
- ## Notes
181
-
182
- - **Auth between frontend and Mastra**: the example above is open. In production, gate the Mastra route with a header or cookie check and forward credentials from the frontend (`AssistantChatTransport` accepts `headers` and `credentials` options).
183
- - **Single agent vs router**: `chatRoute({ path: "/chat/:agentId" })` works for any agent registered on the `Mastra` instance. Switching agents from the frontend is a matter of pointing `NEXT_PUBLIC_MASTRA_URL` at a different agent ID.
184
- - **Advanced Mastra features** (memory, tools, workflows, evals) live in the agent definition. The frontend sees only the resulting stream. See the [Mastra docs](https://mastra.ai/docs).
185
-
186
- ## Related
187
-
188
- <Cards>
189
- <Card
190
- icon={<MastraIcon width={20} height={20} />}
191
- title="Full-stack integration"
192
- description="Run Mastra inside your Next.js API routes for a single deploy target."
193
- href="/docs/integrations/frameworks/mastra/full-stack"
194
- />
195
- <Card
196
- icon={<VercelIcon width={20} height={20} />}
197
- title="AI SDK runtime"
198
- description="The runtime that handles the client side of this integration."
199
- href="/docs/runtimes/ai-sdk/v7"
200
- />
201
- </Cards>
@@ -1,162 +0,0 @@
1
- ---
2
- title: LLM Gateway Integrations
3
- description: Route AI chat traffic through OpenAI-compatible LLM gateways (OpenRouter, LiteLLM, Portkey, etc.) for cost, fallback, and BYOK in assistant-ui apps.
4
- ---
5
-
6
- import { HeliconeIcon } from "@/components/icons/helicone";
7
- import { VercelIcon } from "@/components/icons/vercel";
8
-
9
- LLM gateways sit between your route handler and the upstream provider. They give you a single endpoint that fronts many providers, plus features like multi-provider fallback, prompt caching, and BYOK (bring-your-own-key) flows. Most are OpenAI API-compatible, so the integration is a `baseURL` swap on `createOpenAI` from `@ai-sdk/openai`.
10
-
11
- For pure observability (proxy that logs every call) see [Helicone](/docs/integrations/observability/helicone). The gateways here overlap in spirit but are positioned around routing rather than logging. For local personal projects there is also a keyless option in the same `baseURL`-swap shape: a local OAuth proxy billed to your ChatGPT subscription; see [ChatGPT Subscription](/docs/guides/chatgpt-subscription).
12
-
13
- ## Compare
14
-
15
- | Gateway | Base URL | Auth header | Distinguishing feature |
16
- | --- | --- | --- | --- |
17
- | [OpenRouter](#openrouter) | `https://openrouter.ai/api/v1` | `Authorization: Bearer <key>` | Catalog of 100+ models with `vendor/model` IDs |
18
- | [Portkey](#portkey) | `https://api.portkey.ai/v1` | `x-portkey-api-key` | Config-driven multi-provider fallback |
19
- | [LiteLLM Proxy](#litellm-proxy) | Self-hosted | `Authorization: Bearer <virtual key>` | OSS, self-host, virtual keys per tenant |
20
-
21
- If your need is only request logging, Helicone fits the same shape and is documented separately.
22
-
23
- ## Common pattern
24
-
25
- All three gateways below speak OpenAI's API. Wire them with `createOpenAI`:
26
-
27
- ```ts title="app/api/chat/route.ts"
28
- import { createOpenAI } from "@ai-sdk/openai";
29
- import { streamText, convertToModelMessages } from "ai";
30
- import type { UIMessage } from "ai";
31
-
32
- const openai = createOpenAI({
33
- baseURL: "<gateway base url>",
34
- headers: { /* gateway-specific auth */ },
35
- });
36
-
37
- export async function POST(req: Request) {
38
- const { messages }: { messages: UIMessage[] } = await req.json();
39
- const result = streamText({
40
- model: openai("<model id>"),
41
- messages: await convertToModelMessages(messages),
42
- });
43
- return result.toUIMessageStreamResponse();
44
- }
45
- ```
46
-
47
- The rest of this page is what to put in `baseURL`, `headers`, and `model(...)` for each gateway.
48
-
49
- ## OpenRouter
50
-
51
- [OpenRouter](https://openrouter.ai/) aggregates 100+ models behind one OpenAI-compatible endpoint. The model ID is `provider/model` (e.g., `anthropic/claude-sonnet-4.6`, `openai/gpt-5.6-luna`, `meta-llama/llama-3.3-70b-instruct`).
52
-
53
- ```sh title=".env.local"
54
- OPENROUTER_API_KEY=sk-or-...
55
- SITE_URL=https://your-app.example
56
- ```
57
-
58
- ```ts title="app/api/chat/route.ts"
59
- import { createOpenAI } from "@ai-sdk/openai";
60
- import { streamText, convertToModelMessages } from "ai";
61
- import type { UIMessage } from "ai";
62
-
63
- const openrouter = createOpenAI({
64
- baseURL: "https://openrouter.ai/api/v1",
65
- apiKey: process.env.OPENROUTER_API_KEY,
66
- headers: {
67
- "HTTP-Referer": process.env.SITE_URL ?? "http://localhost:3000",
68
- "X-Title": "My App",
69
- },
70
- });
71
-
72
- export async function POST(req: Request) {
73
- const { messages }: { messages: UIMessage[] } = await req.json();
74
- const result = streamText({
75
- model: openrouter("anthropic/claude-sonnet-4.6"),
76
- messages: await convertToModelMessages(messages),
77
- });
78
- return result.toUIMessageStreamResponse();
79
- }
80
- ```
81
-
82
- `HTTP-Referer` and `X-Title` are optional attribution headers; OpenRouter shows them in your usage dashboard.
83
-
84
- When to pick: you want a single bill across many models, or you let users pick the model from a long list, or you need to run open-weights models without managing the inference yourself.
85
-
86
- ## Portkey
87
-
88
- [Portkey](https://portkey.ai/) is a gateway plus observability with a config-driven router. The differentiating feature is the *config*: a server-defined object that describes routing rules (try Anthropic first, fall back to OpenAI, fall back to a local model), retries, and caching.
89
-
90
- ```sh title=".env.local"
91
- PORTKEY_API_KEY=...
92
- PORTKEY_VIRTUAL_KEY=...
93
- ```
94
-
95
- ```ts title="app/api/chat/route.ts"
96
- import { createOpenAI } from "@ai-sdk/openai";
97
-
98
- const portkey = createOpenAI({
99
- baseURL: "https://api.portkey.ai/v1",
100
- apiKey: "no-auth-here",
101
- headers: {
102
- "x-portkey-api-key": process.env.PORTKEY_API_KEY!,
103
- "x-portkey-virtual-key": process.env.PORTKEY_VIRTUAL_KEY!,
104
- },
105
- });
106
- ```
107
-
108
- Configs live in the Portkey dashboard; reference them with `x-portkey-config: <config-id>` in the headers when you want a specific routing strategy.
109
-
110
- When to pick: you need cross-provider fallback or prompt-cache hit rates that the AI SDK doesn't give you out of the box.
111
-
112
- ## LiteLLM Proxy
113
-
114
- [LiteLLM Proxy](https://docs.litellm.ai/docs/simple_proxy) is OSS and self-hostable. You run it, you configure provider keys server-side, and you hand virtual keys (per-tenant, per-user) to clients. It's the only viable path for BYOK SaaS or air-gapped deployments.
115
-
116
- Run the proxy first (Docker, k8s, or a single Node process). Then point the AI SDK at your instance:
117
-
118
- ```sh title=".env.local"
119
- LITELLM_BASE_URL=https://litellm.example.com
120
- LITELLM_VIRTUAL_KEY=sk-...
121
- ```
122
-
123
- ```ts title="app/api/chat/route.ts"
124
- import { createOpenAI } from "@ai-sdk/openai";
125
-
126
- const litellm = createOpenAI({
127
- baseURL: process.env.LITELLM_BASE_URL!,
128
- apiKey: process.env.LITELLM_VIRTUAL_KEY!,
129
- });
130
-
131
- const result = streamText({
132
- model: litellm("gpt-5.6-luna"),
133
- messages: await convertToModelMessages(messages),
134
- });
135
- ```
136
-
137
- Model IDs depend on how you configured the proxy. LiteLLM rewrites them to upstream providers based on your config.
138
-
139
- When to pick: self-host requirement, BYOK metering for end-users, or unified billing across providers managed by your platform team.
140
-
141
- ## Notes
142
-
143
- - **Server-side only.** A gateway key is a write capability against your billing account. Never set it in client code; the route handler is the right boundary.
144
- - **Streaming, tools, attachments.** All three gateways are transparent to the AI SDK; everything that works against OpenAI directly works through them.
145
- - **Combining with observability.** A gateway and an observability tool are not mutually exclusive. Helicone in front of OpenRouter is a common stack: OpenRouter does the routing, Helicone logs the calls.
146
-
147
- ## Related
148
-
149
- <Cards>
150
- <Card
151
- icon={<HeliconeIcon width={20} height={20} />}
152
- title="Helicone"
153
- description="The observability-first proxy. Same shape, different goal."
154
- href="/docs/integrations/observability/helicone"
155
- />
156
- <Card
157
- icon={<VercelIcon width={20} height={20} />}
158
- title="AI SDK runtime"
159
- description="The runtime that ferries gateway responses to the chat UI."
160
- href="/docs/runtimes/ai-sdk/v7"
161
- />
162
- </Cards>
@@ -1,178 +0,0 @@
1
- ---
2
- title: Integrations
3
- description: Adapters for Vercel AI SDK, LangChain, LangGraph, Mastra, plus auth, persistence, observability, and tool services — drop into a React chat UI built with assistant-ui.
4
- ---
5
-
6
- import { CloudflareIcon } from "@/components/icons/cloudflare";
7
- import { HeliconeIcon } from "@/components/icons/helicone";
8
- import { MastraIcon } from "@/components/icons/mastra";
9
- import { LangfuseIcon } from "@/components/icons/langfuse";
10
- import { LangChainIcon } from "@/components/icons/langchain";
11
- import { McpIcon } from "@/components/icons/mcp";
12
- import { VercelIcon } from "@/components/icons/vercel";
13
-
14
- Integrations are wiring guides for using third-party services with assistant-ui, plus canonical recipes for the adapter slots (persistence, attachments). They are distinct from [runtimes](/docs/runtimes/pick-a-runtime), which are the React adapter packages (`@assistant-ui/react-ai-sdk`, `@assistant-ui/react-langgraph`, etc.) that connect the UI to a backend. An integration assumes you already have a working runtime and adds something on top.
15
-
16
- ## Where integrations slot in
17
-
18
- ```mermaid
19
- flowchart LR
20
- client["client"] --> route["your API route"] --> provider["LLM provider"]
21
- route -->|"agent frameworks (e.g. Mastra)"| server["run on the server,<br/>then forward calls"]
22
- server -->|"observability proxies (e.g. Helicone, Langfuse)"| provider
23
- ```
24
-
25
- Integrations live on the server. **Agent frameworks** like Mastra take over the API route. **Gateways** swap the upstream provider URL. **Observability** logs or traces every call. **Auth** gates the route and scopes per-user data. **Persistence** and **attachments** are adapter recipes for storing chat data outside the default in-memory path.
26
-
27
- ## Frameworks
28
-
29
- Framework integrations that pair with assistant-ui at the API-route layer.
30
-
31
- <Cards>
32
- <Card
33
- icon={<VercelIcon width={20} height={20} />}
34
- title="Vercel AI SDK"
35
- description="The canonical first-party adapter. Full setup lives under runtimes; this entry is the architectural pointer."
36
- href="/docs/integrations/frameworks/ai-sdk"
37
- />
38
- <PlatformOnly platforms={["react"]}>
39
- <Card
40
- icon={<CloudflareIcon width={20} height={20} />}
41
- title="Cloudflare Agents"
42
- description="Stateful Durable Object agents. Wired through the AI SDK runtime with WebSocket streaming."
43
- href="/docs/integrations/frameworks/cloudflare-agents/overview"
44
- />
45
- <Card
46
- icon={<MastraIcon width={20} height={20} />}
47
- title="Mastra"
48
- description="TypeScript agent framework. Routed through the AI SDK runtime, full-stack or separate server."
49
- href="/docs/integrations/frameworks/mastra/overview"
50
- />
51
- </PlatformOnly>
52
- </Cards>
53
-
54
- ## Tools
55
-
56
- Tool catalogs and protocols have their own [Tools](/docs/tools) section.
57
-
58
- <Cards>
59
- <Card
60
- icon={<McpIcon width={20} height={20} />}
61
- title="Model Context Protocol (MCP)"
62
- description="Connect any MCP server as a tool catalog through the AI SDK MCP client."
63
- href="/docs/tools/mcp"
64
- />
65
- </Cards>
66
-
67
- ## Gateways
68
-
69
- OpenAI-compatible proxies that add catalog routing, fallback, BYOK, or self-hosting.
70
-
71
- <Cards>
72
- <Card
73
- title="LLM gateways"
74
- description="OpenRouter, Portkey, LiteLLM Proxy. Swap baseURL, route across providers."
75
- href="/docs/integrations/gateways"
76
- />
77
- </Cards>
78
-
79
- ## Observability
80
-
81
- Log, monitor, trace, and evaluate LLM calls. These pair with any runtime.
82
-
83
- <Cards>
84
- <Card
85
- icon={<HeliconeIcon width={20} height={20} />}
86
- title="Helicone"
87
- description="Observability proxy. Drop-in baseURL swap that logs cost, latency, and prompts."
88
- href="/docs/integrations/observability/helicone"
89
- />
90
- <Card
91
- icon={<LangfuseIcon width={20} height={20} />}
92
- title="Langfuse"
93
- description="OpenTelemetry-based tracing and evals. Open source, self-hostable."
94
- href="/docs/integrations/observability/langfuse"
95
- />
96
- <Card
97
- icon={<LangChainIcon width={20} height={20} className="text-[#7FC8FF]" />}
98
- title="LangSmith"
99
- description="LangChain ecosystem tracing via wrapAISDK. Datasets and evals included."
100
- href="/docs/integrations/observability/langsmith"
101
- />
102
- </Cards>
103
-
104
- <PlatformOnly platforms={["react"]}>
105
-
106
- ## Auth
107
-
108
- Gate the chat route and scope thread data to the signed-in user. These pages are the **non-cloud** path; pair with [custom thread persistence](/docs/integrations/persistence/custom-adapter) when you own the database.
109
-
110
- <Cards>
111
- <Card
112
- title="Clerk"
113
- description="Hosted auth with a Next.js middleware. auth() returns userId; Clerk Orgs map to multi-tenant chat."
114
- href="/docs/integrations/auth/clerk"
115
- />
116
- <Card
117
- title="better-auth"
118
- description="TypeScript-first, owns the user table and session. session.user.id is populated by default."
119
- href="/docs/integrations/auth/better-auth"
120
- />
121
- <Card
122
- title="Auth.js (next-auth)"
123
- description="The OSS Next.js standard. Requires jwt/session callbacks to populate session.user.id."
124
- href="/docs/integrations/auth/next-auth"
125
- />
126
- </Cards>
127
-
128
- For AssistantCloud users, [cloud authorization](/docs/cloud/authorization) handles the JWT exchange for Clerk, Auth0, Supabase, and Firebase without DB code.
129
-
130
- </PlatformOnly>
131
-
132
- ## Persistence
133
-
134
- Store threads and messages outside AssistantCloud.
135
-
136
- <Cards>
137
- <Card
138
- title="Custom thread persistence"
139
- description="Worked example: Postgres + Drizzle, RemoteThreadListAdapter, ThreadHistoryAdapter with withFormat."
140
- href="/docs/integrations/persistence/custom-adapter"
141
- />
142
- </Cards>
143
-
144
- ## Attachments
145
-
146
- Upload chat attachments to object storage instead of inlining as data URLs.
147
-
148
- <Cards>
149
- <Card
150
- title="Custom attachment uploads"
151
- description="Production AttachmentAdapter with presigned URLs. Tabs for S3/R2, Vercel Blob, Uploadthing."
152
- href="/docs/integrations/attachments/custom-adapter"
153
- />
154
- </Cards>
155
-
156
- ## Don't see your service?
157
-
158
- assistant-ui doesn't ship a guide for every tool, but most fit one of two patterns:
159
-
160
- - **Routes through your AI SDK handler** (agent frameworks, observability proxies, gateways): adapt the [Mastra full-stack](/docs/integrations/frameworks/mastra/full-stack) or [Helicone proxy](/docs/integrations/observability/helicone) pattern using the service's own SDK.
161
- - **Replaces the runtime entirely** (custom backends): see [custom backend](/docs/runtimes/custom/overview).
162
-
163
- If you build something useful, [open an issue](https://github.com/assistant-ui/assistant-ui/issues) or post in [Discord](https://discord.gg/S9dwgCNEFs); the docs are open to contributions.
164
-
165
- ## Related
166
-
167
- <Cards>
168
- <Card
169
- title="Pick a runtime"
170
- description="Choose the React adapter that matches your backend before adding integrations."
171
- href="/docs/runtimes/pick-a-runtime"
172
- />
173
- <Card
174
- title="Runtime concepts"
175
- description="Architecture, adapters, threads, and stability across all runtimes."
176
- href="/docs/runtimes/concepts/architecture"
177
- />
178
- </Cards>
@@ -1,129 +0,0 @@
1
- ---
2
- title: Helicone
3
- description: Log and monitor LLM calls by routing them through the Helicone proxy.
4
- ---
5
-
6
- import { VercelIcon } from "@/components/icons/vercel";
7
-
8
- [Helicone](https://www.helicone.ai/) is an LLM observability proxy. Point your provider client at Helicone's URL, add an auth header, and every request and response is recorded with cost, latency, and prompt-level diffs.
9
-
10
- Helicone is independent of which assistant-ui runtime you use. It slots in at the LLM-client layer (OpenAI SDK, AI SDK provider, or any HTTP-based provider client) on the server, not at the assistant-ui client runtime layer. So it pairs with any backend: AI SDK, LangGraph, Mastra, custom.
11
-
12
- ## How it works
13
-
14
- ```mermaid
15
- flowchart LR
16
- server["your server"] --> proxy["Helicone proxy<br/>(logs request, response, tokens, cost)"] --> provider["OpenAI / Anthropic / etc."]
17
- ```
18
-
19
- Calls pass through Helicone's edge before reaching the upstream provider. The proxy is transparent: response shape and streaming behavior are unchanged, you just gain a dashboard of every call.
20
-
21
- ## Setup
22
-
23
- <Steps>
24
- <Step>
25
-
26
- ### Get a Helicone API key
27
-
28
- Sign up at [helicone.ai](https://www.helicone.ai/) and copy the key from the dashboard. Add it to your environment alongside the provider key:
29
-
30
- ```sh title=".env.local"
31
- HELICONE_API_KEY=sk-helicone-...
32
- OPENAI_API_KEY=sk-...
33
- ```
34
-
35
- </Step>
36
- <Step>
37
-
38
- ### Point the provider client at the proxy
39
-
40
- Swap the provider's `baseURL` for Helicone's proxy URL and add the `Helicone-Auth` header.
41
-
42
- <Tabs items={["AI SDK", "OpenAI SDK"]}>
43
- <Tab value="AI SDK">
44
-
45
- ```ts title="app/api/chat/route.ts"
46
- import { createOpenAI } from "@ai-sdk/openai";
47
- import { streamText, convertToModelMessages } from "ai";
48
- import type { UIMessage } from "ai";
49
-
50
- const openai = createOpenAI({
51
- baseURL: "https://oai.helicone.ai/v1",
52
- headers: {
53
- "Helicone-Auth": `Bearer ${process.env.HELICONE_API_KEY}`,
54
- },
55
- });
56
-
57
- export async function POST(req: Request) {
58
- const { messages }: { messages: UIMessage[] } = await req.json();
59
- const result = streamText({
60
- model: openai("gpt-5.6-luna"),
61
- messages: await convertToModelMessages(messages),
62
- });
63
- return result.toUIMessageStreamResponse();
64
- }
65
- ```
66
-
67
- </Tab>
68
- <Tab value="OpenAI SDK">
69
-
70
- ```ts title="app/api/chat/route.ts"
71
- import OpenAI from "openai";
72
-
73
- const openai = new OpenAI({
74
- baseURL: "https://oai.helicone.ai/v1",
75
- defaultHeaders: {
76
- "Helicone-Auth": `Bearer ${process.env.HELICONE_API_KEY}`,
77
- },
78
- });
79
-
80
- export async function POST(req: Request) {
81
- const { messages } = await req.json();
82
- const stream = await openai.chat.completions.create({
83
- model: "gpt-5.6-luna",
84
- messages,
85
- stream: true,
86
- });
87
- return new Response(stream.toReadableStream());
88
- }
89
- ```
90
-
91
- If you're calling the OpenAI SDK directly, you'll also need to adapt the response into a stream `useChatRuntime` understands. The AI SDK tab above handles this for you.
92
-
93
- </Tab>
94
- </Tabs>
95
-
96
- </Step>
97
- <Step>
98
-
99
- ### Verify in the dashboard
100
-
101
- Send a message through your assistant. The call should appear in the Helicone dashboard within a few seconds, with token counts, latency, and the full prompt and completion text.
102
-
103
- If nothing appears, check the request in your network tab. The host should be `oai.helicone.ai`, not `api.openai.com`; the request should carry `Helicone-Auth` (added explicitly above) and `Authorization` (added automatically by the OpenAI client from `OPENAI_API_KEY`).
104
-
105
- </Step>
106
- </Steps>
107
-
108
- ## Notes
109
-
110
- - **Server-side only.** Never set the Helicone key in client code; the proxy receives your provider key and must run server-side.
111
- - **Other providers.** For Anthropic, Gemini, and others, swap the base URL: see Helicone's [provider docs](https://docs.helicone.ai/getting-started/integration-method/gateway).
112
- - **Custom metadata.** Add `Helicone-User-Id`, `Helicone-Property-*`, or session headers per request to filter and aggregate in the dashboard. The headers are in the [request headers reference](https://docs.helicone.ai/helicone-headers/header-directory).
113
- - **Streaming, tools, attachments** all keep working unchanged because Helicone wraps the underlying provider transparently.
114
-
115
- ## Related
116
-
117
- <Cards>
118
- <Card
119
- title="Pick a runtime"
120
- description="Choose a backend integration; Helicone pairs with any of them."
121
- href="/docs/runtimes/pick-a-runtime"
122
- />
123
- <Card
124
- icon={<VercelIcon width={20} height={20} />}
125
- title="AI SDK runtime"
126
- description="The most common pairing: AI SDK route handler proxied through Helicone."
127
- href="/docs/runtimes/ai-sdk/v7"
128
- />
129
- </Cards>