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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/.docs/organized/code-examples/waterfall.md +8 -8
  2. package/.docs/organized/code-examples/with-a2a.md +10 -10
  3. package/.docs/organized/code-examples/with-ag-ui.md +12 -12
  4. package/.docs/organized/code-examples/with-ai-sdk-v6.md +14 -14
  5. package/.docs/organized/code-examples/with-artifacts.md +14 -14
  6. package/.docs/organized/code-examples/with-assistant-transport.md +11 -11
  7. package/.docs/organized/code-examples/with-browser-extension.md +345 -0
  8. package/.docs/organized/code-examples/with-chain-of-thought.md +129 -63
  9. package/.docs/organized/code-examples/with-cloud-standalone.md +13 -13
  10. package/.docs/organized/code-examples/with-cloud.md +13 -13
  11. package/.docs/organized/code-examples/with-custom-thread-list.md +65 -20
  12. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +18 -17
  13. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +18 -17
  14. package/.docs/organized/code-examples/with-expo.md +25 -25
  15. package/.docs/organized/code-examples/with-external-store.md +10 -10
  16. package/.docs/organized/code-examples/with-ffmpeg.md +14 -14
  17. package/.docs/organized/code-examples/with-generative-ui.md +211 -14
  18. package/.docs/organized/code-examples/with-google-adk.md +12 -12
  19. package/.docs/organized/code-examples/with-heat-graph.md +8 -8
  20. package/.docs/organized/code-examples/with-image-generation.md +454 -0
  21. package/.docs/organized/code-examples/with-interactables.md +14 -14
  22. package/.docs/organized/code-examples/with-langchain.md +12 -12
  23. package/.docs/organized/code-examples/with-langgraph.md +15 -12
  24. package/.docs/organized/code-examples/with-livekit.md +19 -18
  25. package/.docs/organized/code-examples/with-mcp.md +748 -0
  26. package/.docs/organized/code-examples/with-opencode.md +107 -62
  27. package/.docs/organized/code-examples/with-parent-id-grouping.md +12 -12
  28. package/.docs/organized/code-examples/with-react-hook-form.md +14 -14
  29. package/.docs/organized/code-examples/with-react-ink.md +4 -4
  30. package/.docs/organized/code-examples/with-react-router.md +16 -16
  31. package/.docs/organized/code-examples/with-resumable-stream.md +660 -0
  32. package/.docs/organized/code-examples/with-store.md +8 -8
  33. package/.docs/organized/code-examples/with-tanstack.md +14 -14
  34. package/.docs/organized/code-examples/with-tap-runtime.md +11 -10
  35. package/.docs/raw/docs/(docs)/cli.mdx +3 -1
  36. package/.docs/raw/docs/(docs)/copilots/assistant-frame.mdx +1 -0
  37. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +10 -3
  38. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +8 -3
  39. package/.docs/raw/docs/(docs)/copilots/make-assistant-visible.mdx +1 -0
  40. package/.docs/raw/docs/(docs)/copilots/model-context.mdx +1 -0
  41. package/.docs/raw/docs/(docs)/copilots/motivation.mdx +1 -0
  42. package/.docs/raw/docs/(docs)/copilots/use-assistant-instructions.mdx +1 -0
  43. package/.docs/raw/docs/(docs)/devtools.mdx +1 -0
  44. package/.docs/raw/docs/(docs)/index.mdx +3 -2
  45. package/.docs/raw/docs/(docs)/installation.mdx +2 -1
  46. package/.docs/raw/docs/(docs)/rtl.mdx +1 -0
  47. package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +36 -0
  48. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +20 -0
  49. package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +34 -0
  50. package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +44 -0
  51. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +55 -0
  52. package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +20 -0
  53. package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +20 -0
  54. package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +37 -8
  55. package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +22 -0
  56. package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +64 -0
  57. package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +22 -0
  58. package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +52 -0
  59. package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +36 -0
  60. package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +98 -0
  61. package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +31 -0
  62. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +33 -0
  63. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +640 -0
  64. package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +28 -0
  65. package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +94 -0
  66. package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +464 -0
  67. package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +24 -0
  68. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +22 -0
  69. package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +79 -0
  70. package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +52 -0
  71. package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +22 -0
  72. package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +20 -0
  73. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +125 -125
  74. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +78 -221
  75. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +127 -242
  76. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +46 -20
  77. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +66 -87
  78. package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +50 -58
  79. package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +80 -48
  80. package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +67 -0
  81. package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +323 -461
  82. package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +36 -43
  83. package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +70 -0
  84. package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +63 -245
  85. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +182 -554
  86. package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +65 -0
  87. package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +35 -22
  88. package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +57 -140
  89. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +70 -161
  90. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +84 -108
  91. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +82 -86
  92. package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +173 -314
  93. package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +9 -21
  94. package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +10 -21
  95. package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +15 -70
  96. package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +43 -0
  97. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +25 -28
  98. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +11 -63
  99. package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +20 -0
  100. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +11 -48
  101. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +10 -42
  102. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +18 -30
  103. package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +68 -0
  104. package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +39 -0
  105. package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +79 -0
  106. package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +42 -0
  107. package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +92 -0
  108. package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +48 -0
  109. package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +62 -0
  110. package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +22 -0
  111. package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +19 -0
  112. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +131 -0
  113. package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +22 -0
  114. package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +54 -0
  115. package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +36 -0
  116. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +230 -2
  117. package/.docs/raw/docs/cloud/ai-sdk.mdx +222 -4
  118. package/.docs/raw/docs/cloud/index.mdx +2 -2
  119. package/.docs/raw/docs/cloud/langgraph.mdx +274 -2
  120. package/.docs/raw/docs/{(docs)/guides → guides}/attachments.mdx +45 -40
  121. package/.docs/raw/docs/guides/branching.mdx +76 -0
  122. package/.docs/raw/docs/guides/chain-of-thought.mdx +166 -0
  123. package/.docs/raw/docs/{(docs)/guides → guides}/context-api.mdx +54 -26
  124. package/.docs/raw/docs/{(docs)/guides → guides}/dictation.mdx +3 -1
  125. package/.docs/raw/docs/guides/editing.mdx +102 -0
  126. package/.docs/raw/docs/guides/generative-ui.mdx +142 -0
  127. package/.docs/raw/docs/guides/image-generation.mdx +74 -0
  128. package/.docs/raw/docs/guides/index.mdx +103 -0
  129. package/.docs/raw/docs/{(docs)/guides → guides}/interactables.mdx +51 -2
  130. package/.docs/raw/docs/{(docs)/guides → guides}/latex.mdx +53 -10
  131. package/.docs/raw/docs/guides/mcp-apps.mdx +231 -0
  132. package/.docs/raw/docs/{(docs)/guides → guides}/mentions.mdx +63 -88
  133. package/.docs/raw/docs/{(docs)/guides → guides}/message-timing.mdx +45 -6
  134. package/.docs/raw/docs/{(docs)/guides → guides}/multi-agent.mdx +66 -6
  135. package/.docs/raw/docs/{(docs)/guides → guides}/quoting.mdx +11 -18
  136. package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +212 -0
  137. package/.docs/raw/docs/guides/resumable-stream-stores.mdx +152 -0
  138. package/.docs/raw/docs/guides/resumable-streams.mdx +210 -0
  139. package/.docs/raw/docs/{(docs)/guides → guides}/slash-commands.mdx +104 -38
  140. package/.docs/raw/docs/guides/speech.mdx +156 -0
  141. package/.docs/raw/docs/{(docs)/guides → guides}/suggestions.mdx +91 -69
  142. package/.docs/raw/docs/{(docs)/guides → guides}/tool-ui.mdx +110 -38
  143. package/.docs/raw/docs/{(docs)/guides → guides}/tools.mdx +197 -40
  144. package/.docs/raw/docs/{(docs)/guides → guides}/voice.mdx +41 -2
  145. package/.docs/raw/docs/ink/adapters.mdx +37 -1
  146. package/.docs/raw/docs/ink/custom-backend.mdx +59 -8
  147. package/.docs/raw/docs/ink/index.mdx +11 -14
  148. package/.docs/raw/docs/ink/migration.mdx +1 -3
  149. package/.docs/raw/docs/ink/primitives.mdx +386 -9
  150. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +520 -0
  151. package/.docs/raw/docs/integrations/auth/better-auth.mdx +191 -0
  152. package/.docs/raw/docs/integrations/auth/clerk.mdx +172 -0
  153. package/.docs/raw/docs/integrations/auth/next-auth.mdx +196 -0
  154. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +79 -0
  155. package/.docs/raw/docs/integrations/frameworks/cloudflare-agents/overview.mdx +282 -0
  156. package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +188 -0
  157. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +57 -0
  158. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +201 -0
  159. package/.docs/raw/docs/integrations/gateways/index.mdx +162 -0
  160. package/.docs/raw/docs/integrations/index.mdx +185 -0
  161. package/.docs/raw/docs/integrations/observability/helicone.mdx +130 -0
  162. package/.docs/raw/docs/integrations/observability/langfuse.mdx +163 -0
  163. package/.docs/raw/docs/integrations/observability/langsmith.mdx +150 -0
  164. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +712 -0
  165. package/.docs/raw/docs/integrations/tools/mcp.mdx +267 -0
  166. package/.docs/raw/docs/integrations/tools/react-mcp.mdx +337 -0
  167. package/.docs/raw/docs/migrations/v0-14.mdx +297 -0
  168. package/.docs/raw/docs/primitives/action-bar.mdx +1 -0
  169. package/.docs/raw/docs/primitives/assistant-modal.mdx +1 -0
  170. package/.docs/raw/docs/primitives/attachment.mdx +1 -0
  171. package/.docs/raw/docs/primitives/branch-picker.mdx +1 -0
  172. package/.docs/raw/docs/primitives/chain-of-thought.mdx +90 -85
  173. package/.docs/raw/docs/primitives/composer.mdx +55 -1
  174. package/.docs/raw/docs/primitives/error.mdx +1 -0
  175. package/.docs/raw/docs/primitives/index.mdx +4 -3
  176. package/.docs/raw/docs/primitives/message.mdx +68 -5
  177. package/.docs/raw/docs/primitives/selection-toolbar.mdx +1 -0
  178. package/.docs/raw/docs/primitives/suggestion.mdx +10 -0
  179. package/.docs/raw/docs/primitives/thread-list.mdx +39 -0
  180. package/.docs/raw/docs/primitives/thread.mdx +16 -13
  181. package/.docs/raw/docs/react-native/hooks.mdx +2 -2
  182. package/.docs/raw/docs/react-native/index.mdx +5 -7
  183. package/.docs/raw/docs/react-native/migration.mdx +1 -3
  184. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +396 -0
  185. package/.docs/raw/docs/runtimes/a2a/overview.mdx +60 -0
  186. package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +216 -0
  187. package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +70 -0
  188. package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +243 -0
  189. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +154 -0
  190. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +52 -0
  191. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +73 -128
  192. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +70 -64
  193. package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +337 -123
  194. package/.docs/raw/docs/runtimes/concepts/adapters.mdx +265 -0
  195. package/.docs/raw/docs/runtimes/concepts/architecture.mdx +125 -0
  196. package/.docs/raw/docs/runtimes/concepts/stability.mdx +67 -0
  197. package/.docs/raw/docs/runtimes/concepts/threads.mdx +428 -0
  198. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +703 -0
  199. package/.docs/raw/docs/runtimes/custom/data-stream.mdx +348 -0
  200. package/.docs/raw/docs/runtimes/custom/external-store.mdx +261 -1236
  201. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +746 -0
  202. package/.docs/raw/docs/runtimes/custom/overview.mdx +71 -0
  203. package/.docs/raw/docs/runtimes/google-adk/api.mdx +256 -0
  204. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +717 -0
  205. package/.docs/raw/docs/runtimes/google-adk/overview.mdx +69 -0
  206. package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +229 -0
  207. package/.docs/raw/docs/runtimes/langchain.mdx +533 -0
  208. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +305 -0
  209. package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +104 -0
  210. package/.docs/raw/docs/runtimes/langgraph/overview.mdx +84 -0
  211. package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +496 -0
  212. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +127 -0
  213. package/.docs/raw/docs/runtimes/langgraph/threads.mdx +113 -0
  214. package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +3 -3
  215. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -23
  216. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +1 -1
  217. package/.docs/raw/docs/runtimes/opencode/hooks.mdx +191 -0
  218. package/.docs/raw/docs/runtimes/opencode/overview.mdx +48 -0
  219. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +119 -0
  220. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +78 -203
  221. package/.docs/raw/docs/ui/accordion.mdx +1 -0
  222. package/.docs/raw/docs/ui/assistant-modal.mdx +1 -0
  223. package/.docs/raw/docs/ui/assistant-sidebar.mdx +1 -0
  224. package/.docs/raw/docs/ui/attachment.mdx +1 -0
  225. package/.docs/raw/docs/ui/badge.mdx +1 -0
  226. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +12 -1
  227. package/.docs/raw/docs/ui/context-display.mdx +1 -0
  228. package/.docs/raw/docs/ui/diff-viewer.mdx +1 -0
  229. package/.docs/raw/docs/ui/directive-text.mdx +1 -0
  230. package/.docs/raw/docs/ui/file.mdx +1 -0
  231. package/.docs/raw/docs/ui/image.mdx +1 -0
  232. package/.docs/raw/docs/ui/markdown.mdx +2 -14
  233. package/.docs/raw/docs/ui/mcp-config.mdx +102 -0
  234. package/.docs/raw/docs/ui/mermaid.mdx +1 -0
  235. package/.docs/raw/docs/ui/message-timing.mdx +3 -2
  236. package/.docs/raw/docs/ui/model-selector.mdx +9 -8
  237. package/.docs/raw/docs/ui/part-grouping.mdx +325 -313
  238. package/.docs/raw/docs/ui/quote.mdx +1 -0
  239. package/.docs/raw/docs/ui/reasoning.mdx +66 -33
  240. package/.docs/raw/docs/ui/scrollbar.mdx +1 -0
  241. package/.docs/raw/docs/ui/select.mdx +1 -0
  242. package/.docs/raw/docs/ui/sources.mdx +18 -0
  243. package/.docs/raw/docs/ui/streamdown.mdx +35 -2
  244. package/.docs/raw/docs/ui/syntax-highlighting.mdx +1 -0
  245. package/.docs/raw/docs/ui/tabs.mdx +1 -0
  246. package/.docs/raw/docs/ui/thread-list.mdx +19 -2
  247. package/.docs/raw/docs/ui/thread.mdx +58 -3
  248. package/.docs/raw/docs/ui/tool-fallback.mdx +1 -0
  249. package/.docs/raw/docs/ui/tool-group.mdx +39 -11
  250. package/.docs/raw/docs/ui/voice.mdx +1 -0
  251. package/.docs/raw/docs/utilities/heat-graph.mdx +1 -0
  252. package/.docs/raw/docs/utilities/react-o11y.mdx +278 -0
  253. package/.docs/raw/docs/utilities/tw-shimmer.mdx +1 -0
  254. package/README.md +14 -72
  255. package/dist/constants.d.ts +12 -9
  256. package/dist/constants.d.ts.map +1 -1
  257. package/dist/constants.js +13 -9
  258. package/dist/constants.js.map +1 -1
  259. package/dist/index.d.ts +7 -3
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +25 -24
  262. package/dist/index.js.map +1 -1
  263. package/dist/prepare-docs/code-examples.d.ts +4 -1
  264. package/dist/prepare-docs/code-examples.d.ts.map +1 -1
  265. package/dist/prepare-docs/code-examples.js +109 -121
  266. package/dist/prepare-docs/code-examples.js.map +1 -1
  267. package/dist/prepare-docs/copy-raw.d.ts +4 -1
  268. package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
  269. package/dist/prepare-docs/copy-raw.js +45 -42
  270. package/dist/prepare-docs/copy-raw.js.map +1 -1
  271. package/dist/prepare-docs/prepare.d.ts +1 -2
  272. package/dist/prepare-docs/prepare.js +17 -17
  273. package/dist/prepare-docs/prepare.js.map +1 -1
  274. package/dist/stdio.d.ts +1 -3
  275. package/dist/stdio.js +6 -3
  276. package/dist/stdio.js.map +1 -1
  277. package/dist/tools/docs.d.ts +20 -15
  278. package/dist/tools/docs.d.ts.map +1 -1
  279. package/dist/tools/docs.js +140 -161
  280. package/dist/tools/docs.js.map +1 -1
  281. package/dist/tools/examples.d.ts +20 -15
  282. package/dist/tools/examples.d.ts.map +1 -1
  283. package/dist/tools/examples.js +74 -86
  284. package/dist/tools/examples.js.map +1 -1
  285. package/dist/tools/tests/test-setup.d.ts +5 -2
  286. package/dist/tools/tests/test-setup.d.ts.map +1 -1
  287. package/dist/tools/tests/test-setup.js +21 -28
  288. package/dist/tools/tests/test-setup.js.map +1 -1
  289. package/dist/utils/logger.d.ts +8 -5
  290. package/dist/utils/logger.d.ts.map +1 -1
  291. package/dist/utils/logger.js +17 -17
  292. package/dist/utils/logger.js.map +1 -1
  293. package/dist/utils/mcp-format.d.ts +8 -5
  294. package/dist/utils/mcp-format.d.ts.map +1 -1
  295. package/dist/utils/mcp-format.js +9 -9
  296. package/dist/utils/mcp-format.js.map +1 -1
  297. package/dist/utils/mdx.d.ts +8 -6
  298. package/dist/utils/mdx.d.ts.map +1 -1
  299. package/dist/utils/mdx.js +22 -22
  300. package/dist/utils/mdx.js.map +1 -1
  301. package/dist/utils/paths.d.ts +9 -6
  302. package/dist/utils/paths.d.ts.map +1 -1
  303. package/dist/utils/paths.js +66 -76
  304. package/dist/utils/paths.js.map +1 -1
  305. package/dist/utils/security.d.ts +4 -1
  306. package/dist/utils/security.d.ts.map +1 -1
  307. package/dist/utils/security.js +19 -40
  308. package/dist/utils/security.js.map +1 -1
  309. package/package.json +6 -6
  310. package/src/tools/tests/path-traversal.test.ts +1 -1
  311. package/.docs/raw/docs/(docs)/guides/branching.mdx +0 -65
  312. package/.docs/raw/docs/(docs)/guides/chain-of-thought.mdx +0 -164
  313. package/.docs/raw/docs/(docs)/guides/editing.mdx +0 -66
  314. package/.docs/raw/docs/(docs)/guides/speech.mdx +0 -38
  315. package/.docs/raw/docs/(reference)/api-reference/context-providers/text-message-part-provider.mdx +0 -40
  316. package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -260
  317. package/.docs/raw/docs/(reference)/api-reference/integrations/react-hook-form.mdx +0 -103
  318. package/.docs/raw/docs/(reference)/api-reference/integrations/vercel-ai-sdk.mdx +0 -254
  319. package/.docs/raw/docs/(reference)/migrations/v0-14.mdx +0 -159
  320. package/.docs/raw/docs/runtimes/a2a/index.mdx +0 -298
  321. package/.docs/raw/docs/runtimes/assistant-transport.mdx +0 -1033
  322. package/.docs/raw/docs/runtimes/custom/custom-thread-list.mdx +0 -314
  323. package/.docs/raw/docs/runtimes/custom/local.mdx +0 -1464
  324. package/.docs/raw/docs/runtimes/data-stream.mdx +0 -422
  325. package/.docs/raw/docs/runtimes/google-adk/index.mdx +0 -686
  326. package/.docs/raw/docs/runtimes/helicone.mdx +0 -61
  327. package/.docs/raw/docs/runtimes/langchain/comparison.mdx +0 -60
  328. package/.docs/raw/docs/runtimes/langchain/index.mdx +0 -210
  329. package/.docs/raw/docs/runtimes/langgraph/index.mdx +0 -699
  330. package/.docs/raw/docs/runtimes/langgraph/tutorial/index.mdx +0 -12
  331. package/.docs/raw/docs/runtimes/langserve.mdx +0 -116
  332. package/.docs/raw/docs/runtimes/mastra/full-stack-integration.mdx +0 -218
  333. package/.docs/raw/docs/runtimes/mastra/overview.mdx +0 -18
  334. package/.docs/raw/docs/runtimes/mastra/separate-server-integration.mdx +0 -217
  335. package/dist/prepare-docs/prepare.d.ts.map +0 -1
  336. package/dist/stdio.d.ts.map +0 -1
  337. /package/.docs/raw/docs/{(reference)/migrations → migrations}/deprecation-policy.mdx +0 -0
  338. /package/.docs/raw/docs/{(reference) → migrations}/react-compatibility.mdx +0 -0
  339. /package/.docs/raw/docs/{(reference)/migrations → migrations}/react-langgraph-v0-7.mdx +0 -0
  340. /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-11.mdx +0 -0
  341. /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-12.mdx +0 -0
@@ -777,18 +777,18 @@ export default nextConfig;
777
777
  "@assistant-ui/react-o11y": "workspace:*",
778
778
  "@assistant-ui/store": "workspace:*",
779
779
  "@assistant-ui/tap": "workspace:*",
780
- "next": "^16.2.4",
781
- "react": "^19.2.5",
782
- "react-dom": "^19.2.5"
780
+ "next": "^16.2.6",
781
+ "react": "^19.2.6",
782
+ "react-dom": "^19.2.6"
783
783
  },
784
784
  "devDependencies": {
785
785
  "@assistant-ui/x-buildutils": "workspace:*",
786
- "@tailwindcss/postcss": "^4.2.4",
787
- "@types/node": "^25.6.0",
788
- "@types/react": "^19.2.14",
786
+ "@tailwindcss/postcss": "^4.3.0",
787
+ "@types/node": "^25.9.1",
788
+ "@types/react": "^19.2.15",
789
789
  "@types/react-dom": "^19.2.3",
790
- "postcss": "^8.5.10",
791
- "tailwindcss": "^4.2.4",
790
+ "postcss": "^8.5.15",
791
+ "tailwindcss": "^4.3.0",
792
792
  "typescript": "^6.0.3"
793
793
  }
794
794
  }
@@ -556,20 +556,20 @@ export default nextConfig;
556
556
  "@assistant-ui/ui": "workspace:*",
557
557
  "class-variance-authority": "^0.7.1",
558
558
  "clsx": "^2.1.1",
559
- "lucide-react": "^1.8.0",
560
- "next": "^16.2.4",
561
- "react": "^19.2.5",
562
- "react-dom": "^19.2.5",
563
- "tailwind-merge": "^3.5.0"
559
+ "lucide-react": "^1.16.0",
560
+ "next": "^16.2.6",
561
+ "react": "^19.2.6",
562
+ "react-dom": "^19.2.6",
563
+ "tailwind-merge": "^3.6.0"
564
564
  },
565
565
  "devDependencies": {
566
566
  "@assistant-ui/x-buildutils": "workspace:*",
567
- "@tailwindcss/postcss": "^4.2.4",
568
- "@types/node": "^25.6.0",
569
- "@types/react": "^19.2.14",
567
+ "@tailwindcss/postcss": "^4.3.0",
568
+ "@types/node": "^25.9.1",
569
+ "@types/react": "^19.2.15",
570
570
  "@types/react-dom": "^19.2.3",
571
- "postcss": "^8.5.10",
572
- "tailwindcss": "^4.2.4",
571
+ "postcss": "^8.5.15",
572
+ "tailwindcss": "^4.3.0",
573
573
  "tw-animate-css": "^1.4.0",
574
574
  "typescript": "^6.0.3"
575
575
  }
@@ -416,27 +416,27 @@ export default nextConfig;
416
416
  "start": "next start"
417
417
  },
418
418
  "dependencies": {
419
- "@ag-ui/client": "^0.0.52",
419
+ "@ag-ui/client": "^0.0.53",
420
420
  "@assistant-ui/react": "workspace:*",
421
421
  "@assistant-ui/react-ag-ui": "workspace:*",
422
422
  "@assistant-ui/react-markdown": "workspace:*",
423
423
  "@assistant-ui/ui": "workspace:*",
424
424
  "class-variance-authority": "^0.7.1",
425
425
  "clsx": "^2.1.1",
426
- "lucide-react": "^1.8.0",
427
- "next": "^16.2.4",
428
- "react": "^19.2.5",
429
- "react-dom": "^19.2.5",
430
- "tailwind-merge": "^3.5.0"
426
+ "lucide-react": "^1.16.0",
427
+ "next": "^16.2.6",
428
+ "react": "^19.2.6",
429
+ "react-dom": "^19.2.6",
430
+ "tailwind-merge": "^3.6.0"
431
431
  },
432
432
  "devDependencies": {
433
433
  "@assistant-ui/x-buildutils": "workspace:*",
434
- "@tailwindcss/postcss": "^4.2.4",
435
- "@types/node": "^25.6.0",
436
- "@types/react": "^19.2.14",
434
+ "@tailwindcss/postcss": "^4.3.0",
435
+ "@types/node": "^25.9.1",
436
+ "@types/react": "^19.2.15",
437
437
  "@types/react-dom": "^19.2.3",
438
- "postcss": "^8.5.10",
439
- "tailwindcss": "^4.2.4",
438
+ "postcss": "^8.5.15",
439
+ "tailwindcss": "^4.3.0",
440
440
  "tw-animate-css": "^1.4.0",
441
441
  "typescript": "^6.0.3"
442
442
  }
@@ -502,7 +502,7 @@ pnpm dev
502
502
  The included `server/agent.py` provides:
503
503
 
504
504
  - **Echo mode** (default): Echoes back user messages for testing
505
- - **OpenAI mode**: Uses GPT-4o-mini when `OPENAI_API_KEY` is set
505
+ - **OpenAI mode**: Uses GPT-5.4 Nano when `OPENAI_API_KEY` is set
506
506
 
507
507
  ### Endpoints
508
508
 
@@ -31,7 +31,7 @@ export async function POST(req: Request) {
31
31
  } = await req.json();
32
32
 
33
33
  const result = streamText({
34
- model: openai("gpt-4o"),
34
+ model: openai("gpt-5.4-nano"),
35
35
  messages: await convertToModelMessages(messages),
36
36
  ...(system ? { system } : {}),
37
37
  stopWhen: stepCountIs(10),
@@ -315,29 +315,29 @@ export default nextConfig;
315
315
  "start": "next start"
316
316
  },
317
317
  "dependencies": {
318
- "@ai-sdk/openai": "^3.0.53",
318
+ "@ai-sdk/openai": "^3.0.64",
319
319
  "@assistant-ui/react": "workspace:*",
320
320
  "@assistant-ui/react-ai-sdk": "workspace:*",
321
321
  "@assistant-ui/react-markdown": "workspace:*",
322
322
  "@assistant-ui/ui": "workspace:*",
323
- "ai": "^6.0.168",
323
+ "ai": "^6.0.188",
324
324
  "class-variance-authority": "^0.7.1",
325
325
  "clsx": "^2.1.1",
326
- "lucide-react": "^1.8.0",
327
- "next": "^16.2.4",
328
- "react": "^19.2.5",
329
- "react-dom": "^19.2.5",
330
- "tailwind-merge": "^3.5.0",
331
- "zod": "^4.3.6"
326
+ "lucide-react": "^1.16.0",
327
+ "next": "^16.2.6",
328
+ "react": "^19.2.6",
329
+ "react-dom": "^19.2.6",
330
+ "tailwind-merge": "^3.6.0",
331
+ "zod": "^4.4.3"
332
332
  },
333
333
  "devDependencies": {
334
334
  "@assistant-ui/x-buildutils": "workspace:*",
335
- "@tailwindcss/postcss": "^4.2.4",
336
- "@types/node": "^25.6.0",
337
- "@types/react": "^19.2.14",
335
+ "@tailwindcss/postcss": "^4.3.0",
336
+ "@types/node": "^25.9.1",
337
+ "@types/react": "^19.2.15",
338
338
  "@types/react-dom": "^19.2.3",
339
- "postcss": "^8.5.10",
340
- "tailwindcss": "^4.2.4",
339
+ "postcss": "^8.5.15",
340
+ "tailwindcss": "^4.3.0",
341
341
  "tw-animate-css": "^1.4.0",
342
342
  "typescript": "^6.0.3"
343
343
  }
@@ -20,7 +20,7 @@ export async function POST(req: Request) {
20
20
  const { messages }: { messages: UIMessage[] } = await req.json();
21
21
 
22
22
  const result = streamText({
23
- model: openai("gpt-4o"),
23
+ model: openai("gpt-5.4-nano"),
24
24
  system:
25
25
  "You are a helpful assistant that can generate HTML code. When the user asks you to create any visual content, UI, or webpage, use the render_html tool to render it in the browser. Always use the render_html tool for HTML output rather than showing code in a code block.",
26
26
  messages: await convertToModelMessages(messages),
@@ -415,29 +415,29 @@ export default nextConfig;
415
415
  "start": "next start"
416
416
  },
417
417
  "dependencies": {
418
- "@ai-sdk/openai": "^3.0.53",
418
+ "@ai-sdk/openai": "^3.0.64",
419
419
  "@assistant-ui/react": "workspace:*",
420
420
  "@assistant-ui/react-ai-sdk": "workspace:*",
421
421
  "@assistant-ui/react-markdown": "workspace:*",
422
422
  "@assistant-ui/ui": "workspace:*",
423
- "ai": "^6.0.168",
423
+ "ai": "^6.0.188",
424
424
  "class-variance-authority": "^0.7.1",
425
425
  "clsx": "^2.1.1",
426
- "lucide-react": "^1.8.0",
427
- "next": "^16.2.4",
428
- "react": "^19.2.5",
429
- "react-dom": "^19.2.5",
430
- "tailwind-merge": "^3.5.0",
431
- "zod": "^4.3.6"
426
+ "lucide-react": "^1.16.0",
427
+ "next": "^16.2.6",
428
+ "react": "^19.2.6",
429
+ "react-dom": "^19.2.6",
430
+ "tailwind-merge": "^3.6.0",
431
+ "zod": "^4.4.3"
432
432
  },
433
433
  "devDependencies": {
434
434
  "@assistant-ui/x-buildutils": "workspace:*",
435
- "@tailwindcss/postcss": "^4.2.4",
436
- "@types/node": "^25.6.0",
437
- "@types/react": "^19.2.14",
435
+ "@tailwindcss/postcss": "^4.3.0",
436
+ "@types/node": "^25.9.1",
437
+ "@types/react": "^19.2.15",
438
438
  "@types/react-dom": "^19.2.3",
439
- "postcss": "^8.5.10",
440
- "tailwindcss": "^4.2.4",
439
+ "postcss": "^8.5.15",
440
+ "tailwindcss": "^4.3.0",
441
441
  "tw-animate-css": "^1.4.0",
442
442
  "typescript": "^6.0.3"
443
443
  }
@@ -422,21 +422,21 @@ export default nextConfig;
422
422
  "@assistant-ui/ui": "workspace:*",
423
423
  "class-variance-authority": "^0.7.1",
424
424
  "clsx": "^2.1.1",
425
- "lucide-react": "^1.8.0",
426
- "next": "^16.2.4",
427
- "react": "^19.2.5",
428
- "react-dom": "^19.2.5",
429
- "tailwind-merge": "^3.5.0",
430
- "zod": "^4.3.6"
425
+ "lucide-react": "^1.16.0",
426
+ "next": "^16.2.6",
427
+ "react": "^19.2.6",
428
+ "react-dom": "^19.2.6",
429
+ "tailwind-merge": "^3.6.0",
430
+ "zod": "^4.4.3"
431
431
  },
432
432
  "devDependencies": {
433
433
  "@assistant-ui/x-buildutils": "workspace:*",
434
- "@tailwindcss/postcss": "^4.2.4",
435
- "@types/node": "^25.6.0",
436
- "@types/react": "^19.2.14",
434
+ "@tailwindcss/postcss": "^4.3.0",
435
+ "@types/node": "^25.9.1",
436
+ "@types/react": "^19.2.15",
437
437
  "@types/react-dom": "^19.2.3",
438
- "postcss": "^8.5.10",
439
- "tailwindcss": "^4.2.4",
438
+ "postcss": "^8.5.15",
439
+ "tailwindcss": "^4.3.0",
440
440
  "tw-animate-css": "^1.4.0",
441
441
  "typescript": "^6.0.3"
442
442
  }
@@ -0,0 +1,345 @@
1
+ # Example: with-browser-extension
2
+
3
+ ## app.css
4
+
5
+ ```css
6
+ @import "tailwindcss";
7
+ @import "tw-animate-css";
8
+
9
+ @source "../../packages/ui/src";
10
+ @source ".";
11
+
12
+ @custom-variant dark (&:is(.dark *));
13
+
14
+ @theme inline {
15
+ --radius-sm: calc(var(--radius) - 4px);
16
+ --radius-md: calc(var(--radius) - 2px);
17
+ --radius-lg: var(--radius);
18
+ --radius-xl: calc(var(--radius) + 4px);
19
+ --color-background: var(--background);
20
+ --color-foreground: var(--foreground);
21
+ --color-card: var(--card);
22
+ --color-card-foreground: var(--card-foreground);
23
+ --color-popover: var(--popover);
24
+ --color-popover-foreground: var(--popover-foreground);
25
+ --color-primary: var(--primary);
26
+ --color-primary-foreground: var(--primary-foreground);
27
+ --color-secondary: var(--secondary);
28
+ --color-secondary-foreground: var(--secondary-foreground);
29
+ --color-muted: var(--muted);
30
+ --color-muted-foreground: var(--muted-foreground);
31
+ --color-accent: var(--accent);
32
+ --color-accent-foreground: var(--accent-foreground);
33
+ --color-destructive: var(--destructive);
34
+ --color-border: var(--border);
35
+ --color-input: var(--input);
36
+ --color-ring: var(--ring);
37
+ }
38
+
39
+ :root {
40
+ --radius: 0.625rem;
41
+ --background: oklch(1 0 0);
42
+ --foreground: oklch(0.141 0.005 285.823);
43
+ --card: oklch(1 0 0);
44
+ --card-foreground: oklch(0.141 0.005 285.823);
45
+ --popover: oklch(1 0 0);
46
+ --popover-foreground: oklch(0.141 0.005 285.823);
47
+ --primary: oklch(0.21 0.006 285.885);
48
+ --primary-foreground: oklch(0.985 0 0);
49
+ --secondary: oklch(0.967 0.001 286.375);
50
+ --secondary-foreground: oklch(0.21 0.006 285.885);
51
+ --muted: oklch(0.967 0.001 286.375);
52
+ --muted-foreground: oklch(0.552 0.016 285.938);
53
+ --accent: oklch(0.967 0.001 286.375);
54
+ --accent-foreground: oklch(0.21 0.006 285.885);
55
+ --destructive: oklch(0.577 0.245 27.325);
56
+ --border: oklch(0.92 0.004 286.32);
57
+ --input: oklch(0.92 0.004 286.32);
58
+ --ring: oklch(0.705 0.015 286.067);
59
+ }
60
+
61
+ @layer base {
62
+ * {
63
+ @apply border-border outline-ring/50;
64
+ }
65
+ body {
66
+ @apply bg-background text-foreground;
67
+ }
68
+ }
69
+
70
+ ```
71
+
72
+ ## background.ts
73
+
74
+ ```typescript
75
+ chrome.action.onClicked.addListener((tab) => {
76
+ if (tab.id == null) return;
77
+ chrome.sidePanel.open({ tabId: tab.id });
78
+ });
79
+
80
+ ```
81
+
82
+ ## manifest.json
83
+
84
+ ```json
85
+ {
86
+ "manifest_version": 3,
87
+ "name": "assistant-ui Browser Extension Example",
88
+ "version": "0.1.0",
89
+ "description": "Example Chrome extension with assistant-ui chat in a side panel",
90
+ "permissions": ["sidePanel"],
91
+ "action": {
92
+ "default_title": "Open assistant-ui Chat"
93
+ },
94
+ "background": {
95
+ "service_worker": "background.js"
96
+ },
97
+ "side_panel": {
98
+ "default_path": "sidepanel.html"
99
+ },
100
+ "icons": {
101
+ "16": "icon16.png",
102
+ "32": "icon32.png",
103
+ "48": "icon48.png",
104
+ "128": "icon128.png"
105
+ }
106
+ }
107
+
108
+ ```
109
+
110
+ ## mock-store.ts
111
+
112
+ ```typescript
113
+ import { useCallback, useRef, useState } from "react";
114
+ import type { ThreadMessageLike, AppendMessage } from "@assistant-ui/react";
115
+
116
+ const INITIAL_MESSAGES: ThreadMessageLike[] = [];
117
+
118
+ const CANNED_RESPONSE = `Great question! Here's what I think:
119
+
120
+ This is a **mock response** from the external store runtime. In a real extension, you'd connect this to an AI backend like:
121
+
122
+ - [assistant-ui Cloud](https://www.assistant-ui.com)
123
+ - OpenAI via AI SDK
124
+ - Any custom API
125
+
126
+ The UI you're seeing is built with \`@assistant-ui/react\` -- the same components work in Next.js, Vite, React Native, and now browser extensions.`;
127
+
128
+ export function useMockStore() {
129
+ const [messages, setMessages] =
130
+ useState<readonly ThreadMessageLike[]>(INITIAL_MESSAGES);
131
+ const [isRunning, setIsRunning] = useState(false);
132
+ // Tracks the in-flight stream so a second `onNew` cancels the first and the
133
+ // late-arriving loop no longer mutates state once a newer one starts.
134
+ const activeRunRef = useRef<{ cancelled: boolean } | null>(null);
135
+
136
+ const onNew = useCallback(async (message: AppendMessage) => {
137
+ if (message.content.length !== 1 || message.content[0]?.type !== "text")
138
+ return;
139
+
140
+ if (activeRunRef.current) activeRunRef.current.cancelled = true;
141
+ const run = { cancelled: false };
142
+ activeRunRef.current = run;
143
+
144
+ const userMessage: ThreadMessageLike = {
145
+ role: "user",
146
+ content: [{ type: "text", text: message.content[0].text }],
147
+ };
148
+
149
+ setMessages((prev) => [...prev, userMessage]);
150
+ setIsRunning(true);
151
+
152
+ const words = CANNED_RESPONSE.split(" ");
153
+ let partial = "";
154
+ for (let i = 0; i < words.length; i++) {
155
+ await new Promise((resolve) => setTimeout(resolve, 30));
156
+ if (run.cancelled) return;
157
+ partial = partial ? `${partial} ${words[i]}` : (words[i] ?? "");
158
+ setMessages((prev) => {
159
+ const withoutLast =
160
+ prev.at(-1)?.role === "assistant" ? prev.slice(0, -1) : prev;
161
+ return [
162
+ ...withoutLast,
163
+ { role: "assistant", content: [{ type: "text", text: partial }] },
164
+ ];
165
+ });
166
+ }
167
+
168
+ if (activeRunRef.current === run) {
169
+ activeRunRef.current = null;
170
+ setIsRunning(false);
171
+ }
172
+ }, []);
173
+
174
+ return { messages, setMessages, isRunning, onNew };
175
+ }
176
+
177
+ ```
178
+
179
+ ## MyThread.tsx
180
+
181
+ ```tsx
182
+ import { Thread } from "@assistant-ui/ui/components/assistant-ui/thread.tsx";
183
+ import { useAui, AuiProvider, Suggestions } from "@assistant-ui/react";
184
+
185
+ const suggestions = Suggestions([
186
+ {
187
+ title: "What can you do?",
188
+ label: "Learn about my capabilities",
189
+ prompt: "What can you help me with?",
190
+ },
191
+ {
192
+ title: "How does this demo work?",
193
+ label: "Peek under the hood",
194
+ prompt: "How does this browser extension example work?",
195
+ },
196
+ ]);
197
+
198
+ export function MyThread() {
199
+ const aui = useAui({ suggestions });
200
+ return (
201
+ <AuiProvider value={aui}>
202
+ <Thread />
203
+ </AuiProvider>
204
+ );
205
+ }
206
+
207
+ ```
208
+
209
+ ## package.json
210
+
211
+ ```json
212
+ {
213
+ "name": "with-browser-extension",
214
+ "version": "0.0.0",
215
+ "private": true,
216
+ "type": "module",
217
+ "scripts": {
218
+ "build": "tsx scripts/build.mts",
219
+ "dev": "tsx scripts/build.mts --watch"
220
+ },
221
+ "dependencies": {
222
+ "@assistant-ui/react": "workspace:*",
223
+ "@assistant-ui/ui": "workspace:*",
224
+ "class-variance-authority": "^0.7.1",
225
+ "clsx": "^2.1.1",
226
+ "lucide-react": "^1.16.0",
227
+ "react": "^19.2.6",
228
+ "react-dom": "^19.2.6",
229
+ "tailwind-merge": "^3.6.0"
230
+ },
231
+ "devDependencies": {
232
+ "@tailwindcss/postcss": "^4.3.0",
233
+ "@types/chrome": "^0.1.42",
234
+ "@types/node": "^25.9.1",
235
+ "@types/react": "^19.2.15",
236
+ "@types/react-dom": "^19.2.3",
237
+ "esbuild": "^0.28.0",
238
+ "postcss": "^8.5.15",
239
+ "tailwindcss": "^4.3.0",
240
+ "tsx": "^4.22.3",
241
+ "tw-animate-css": "^1.4.0",
242
+ "typescript": "5.9.3"
243
+ }
244
+ }
245
+
246
+ ```
247
+
248
+ ## README.md
249
+
250
+ ```markdown
251
+ # with-browser-extension
252
+
253
+ A Chrome extension that hosts an assistant-ui chat interface in a browser side panel.
254
+
255
+ Uses `useExternalStoreRuntime` with mock messages to demonstrate the UI without a backend. Swap in your own runtime (Cloud, AI SDK, etc.) for real AI responses.
256
+
257
+ ## Getting Started
258
+
259
+ 1. Install dependencies from the monorepo root:
260
+
261
+ ```bash
262
+ pnpm install
263
+ ```
264
+
265
+ 2. Build the extension:
266
+
267
+ ```bash
268
+ cd examples/with-browser-extension
269
+ pnpm build
270
+ ```
271
+
272
+ 3. Load into Chrome:
273
+
274
+ - Open `chrome://extensions`
275
+ - Enable **Developer mode** (top right)
276
+ - Click **Load unpacked**
277
+ - Select the `dist/` folder
278
+
279
+ 4. Click the extension icon in the toolbar. The side panel opens with the chat UI.
280
+
281
+ ## Development
282
+
283
+ ```bash
284
+ pnpm dev
285
+ ```
286
+
287
+ This watches for TypeScript and CSS changes. After each rebuild, reload the extension in `chrome://extensions` (click the refresh icon on the extension card).
288
+
289
+ ## Connecting a Real Backend
290
+
291
+ Replace `useMockStore()` in `sidepanel.tsx` with a real runtime. Since the extension runs client-side, you'll need to point to an external API endpoint rather than a local route handler.
292
+
293
+ ```
294
+
295
+ ## sidepanel.tsx
296
+
297
+ ```tsx
298
+ import { createRoot } from "react-dom/client";
299
+ import {
300
+ AssistantRuntimeProvider,
301
+ useExternalStoreRuntime,
302
+ } from "@assistant-ui/react";
303
+ import { MyThread } from "./MyThread";
304
+ import { useMockStore } from "./mock-store";
305
+
306
+ function App() {
307
+ const runtime = useExternalStoreRuntime(useMockStore());
308
+
309
+ return (
310
+ <AssistantRuntimeProvider runtime={runtime}>
311
+ <main className="h-dvh">
312
+ <MyThread />
313
+ </main>
314
+ </AssistantRuntimeProvider>
315
+ );
316
+ }
317
+
318
+ const root = document.getElementById("root");
319
+ if (root) {
320
+ createRoot(root).render(<App />);
321
+ }
322
+
323
+ ```
324
+
325
+ ## tsconfig.json
326
+
327
+ ```json
328
+ {
329
+ "compilerOptions": {
330
+ "target": "ES2020",
331
+ "module": "ESNext",
332
+ "moduleResolution": "bundler",
333
+ "jsx": "react-jsx",
334
+ "strict": true,
335
+ "esModuleInterop": true,
336
+ "skipLibCheck": true,
337
+ "noEmit": true,
338
+ "allowImportingTsExtensions": true,
339
+ "types": ["chrome", "node"]
340
+ },
341
+ "include": ["*.ts", "*.tsx", "scripts/*.mts"]
342
+ }
343
+
344
+ ```
345
+