@assistant-ui/mcp-docs-server 0.1.31 → 0.1.33

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 (281) hide show
  1. package/.docs/organized/code-examples/waterfall.md +23 -25
  2. package/.docs/organized/code-examples/with-a2a.md +28 -28
  3. package/.docs/organized/code-examples/with-ag-ui.md +35 -30
  4. package/.docs/organized/code-examples/with-ai-sdk-v6.md +16 -14
  5. package/.docs/organized/code-examples/with-artifacts.md +44 -38
  6. package/.docs/organized/code-examples/with-assistant-transport.md +68 -56
  7. package/.docs/organized/code-examples/with-browser-extension.md +357 -0
  8. package/.docs/organized/code-examples/with-chain-of-thought.md +425 -90
  9. package/.docs/organized/code-examples/with-cloud-standalone.md +30 -29
  10. package/.docs/organized/code-examples/with-cloud.md +16 -14
  11. package/.docs/organized/code-examples/with-custom-thread-list.md +19 -17
  12. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +29 -26
  13. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +20 -18
  14. package/.docs/organized/code-examples/with-expo.md +37 -31
  15. package/.docs/organized/code-examples/with-external-store.md +13 -11
  16. package/.docs/organized/code-examples/with-ffmpeg.md +327 -290
  17. package/.docs/organized/code-examples/with-generative-ui.md +1195 -194
  18. package/.docs/organized/code-examples/with-google-adk.md +13 -11
  19. package/.docs/organized/code-examples/with-heat-graph.md +16 -14
  20. package/.docs/organized/code-examples/with-image-generation.md +456 -0
  21. package/.docs/organized/code-examples/with-interactables.md +322 -244
  22. package/.docs/organized/code-examples/with-langchain.md +18 -16
  23. package/.docs/organized/code-examples/with-langgraph.md +95 -88
  24. package/.docs/organized/code-examples/with-livekit.md +30 -27
  25. package/.docs/organized/code-examples/with-mcp.md +754 -0
  26. package/.docs/organized/code-examples/with-opencode.md +70 -70
  27. package/.docs/organized/code-examples/with-react-hook-form.md +24 -22
  28. package/.docs/organized/code-examples/with-react-ink.md +4 -4
  29. package/.docs/organized/code-examples/with-react-router.md +20 -18
  30. package/.docs/organized/code-examples/with-resumable-stream.md +661 -0
  31. package/.docs/organized/code-examples/with-store.md +22 -20
  32. package/.docs/organized/code-examples/with-tanstack.md +18 -19
  33. package/.docs/organized/code-examples/with-tap-runtime.md +31 -28
  34. package/.docs/raw/docs/(docs)/architecture.mdx +43 -2
  35. package/.docs/raw/docs/(docs)/cli.mdx +2 -2
  36. package/.docs/raw/docs/(docs)/copilots/model-context.mdx +34 -26
  37. package/.docs/raw/docs/(docs)/copilots/motivation.mdx +32 -26
  38. package/.docs/raw/docs/(docs)/index.mdx +2 -2
  39. package/.docs/raw/docs/(docs)/installation.mdx +2 -2
  40. package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +26 -24
  41. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +20 -0
  42. package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +20 -12
  43. package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +44 -0
  44. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +41 -16
  45. package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +12 -23
  46. package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +20 -0
  47. package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +37 -8
  48. package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +11 -9
  49. package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +64 -0
  50. package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +22 -0
  51. package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +52 -0
  52. package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +46 -0
  53. package/.docs/raw/docs/(reference)/api-reference/generative-ui/index.mdx +18 -0
  54. package/.docs/raw/docs/(reference)/api-reference/generative-ui/rendering.mdx +33 -0
  55. package/.docs/raw/docs/(reference)/api-reference/generative-ui/spec.mdx +45 -0
  56. package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +98 -0
  57. package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +18 -13
  58. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +31 -52
  59. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +640 -0
  60. package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +15 -28
  61. package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +64 -18
  62. package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +434 -0
  63. package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +24 -0
  64. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +11 -12
  65. package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +109 -0
  66. package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +58 -0
  67. package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +22 -0
  68. package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +20 -0
  69. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +109 -132
  70. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +78 -221
  71. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +127 -242
  72. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +39 -20
  73. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +66 -87
  74. package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +50 -58
  75. package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +80 -48
  76. package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +67 -0
  77. package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +323 -461
  78. package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +36 -43
  79. package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +29 -24
  80. package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +63 -245
  81. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +202 -588
  82. package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +65 -0
  83. package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +35 -22
  84. package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +57 -140
  85. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +70 -161
  86. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +84 -108
  87. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +77 -96
  88. package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +173 -349
  89. package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +9 -21
  90. package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +10 -21
  91. package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +15 -70
  92. package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +18 -13
  93. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +25 -28
  94. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +11 -63
  95. package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +20 -0
  96. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +11 -48
  97. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +10 -47
  98. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +18 -30
  99. package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +85 -0
  100. package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +39 -0
  101. package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +127 -0
  102. package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +42 -0
  103. package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +91 -0
  104. package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +48 -0
  105. package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +62 -0
  106. package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +22 -0
  107. package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +19 -0
  108. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +143 -0
  109. package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +22 -0
  110. package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +54 -0
  111. package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +36 -0
  112. package/.docs/raw/docs/cloud/ai-sdk.mdx +1 -3
  113. package/.docs/raw/docs/cloud/index.mdx +2 -2
  114. package/.docs/raw/docs/guides/attachments.mdx +4 -4
  115. package/.docs/raw/docs/guides/branching.mdx +1 -1
  116. package/.docs/raw/docs/guides/chain-of-thought.mdx +12 -14
  117. package/.docs/raw/docs/guides/context-api.mdx +6 -5
  118. package/.docs/raw/docs/guides/dictation.mdx +2 -2
  119. package/.docs/raw/docs/guides/editing.mdx +1 -1
  120. package/.docs/raw/docs/guides/image-generation.mdx +74 -0
  121. package/.docs/raw/docs/guides/index.mdx +5 -14
  122. package/.docs/raw/docs/guides/latex.mdx +2 -2
  123. package/.docs/raw/docs/guides/mentions.mdx +6 -6
  124. package/.docs/raw/docs/guides/message-timing.mdx +38 -5
  125. package/.docs/raw/docs/guides/quoting.mdx +1 -1
  126. package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +212 -0
  127. package/.docs/raw/docs/guides/resumable-stream-stores.mdx +152 -0
  128. package/.docs/raw/docs/guides/resumable-streams.mdx +210 -0
  129. package/.docs/raw/docs/guides/slash-commands.mdx +2 -2
  130. package/.docs/raw/docs/guides/speech.mdx +2 -2
  131. package/.docs/raw/docs/guides/suggestions.mdx +89 -5
  132. package/.docs/raw/docs/guides/voice.mdx +2 -2
  133. package/.docs/raw/docs/ink/adapters.mdx +37 -1
  134. package/.docs/raw/docs/ink/custom-backend.mdx +59 -8
  135. package/.docs/raw/docs/ink/hooks.mdx +98 -85
  136. package/.docs/raw/docs/ink/index.mdx +10 -11
  137. package/.docs/raw/docs/ink/migration.mdx +1 -1
  138. package/.docs/raw/docs/ink/primitives.mdx +350 -9
  139. package/.docs/raw/docs/integrations/auth/better-auth.mdx +1 -1
  140. package/.docs/raw/docs/integrations/auth/clerk.mdx +1 -1
  141. package/.docs/raw/docs/integrations/auth/next-auth.mdx +1 -1
  142. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +3 -3
  143. package/.docs/raw/docs/integrations/frameworks/cloudflare-agents/overview.mdx +282 -0
  144. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +2 -2
  145. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +1 -1
  146. package/.docs/raw/docs/integrations/gateways/index.mdx +9 -4
  147. package/.docs/raw/docs/integrations/index.mdx +17 -5
  148. package/.docs/raw/docs/integrations/observability/langfuse.mdx +8 -1
  149. package/.docs/raw/docs/integrations/observability/langsmith.mdx +8 -4
  150. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +17 -2
  151. package/.docs/raw/docs/migrations/toolkit-tools.mdx +226 -0
  152. package/.docs/raw/docs/primitives/chain-of-thought.mdx +10 -16
  153. package/.docs/raw/docs/primitives/composer.mdx +53 -0
  154. package/.docs/raw/docs/primitives/index.mdx +2 -2
  155. package/.docs/raw/docs/primitives/message.mdx +9 -10
  156. package/.docs/raw/docs/primitives/suggestion.mdx +9 -0
  157. package/.docs/raw/docs/react-native/hooks.mdx +57 -82
  158. package/.docs/raw/docs/react-native/index.mdx +4 -4
  159. package/.docs/raw/docs/react-native/migration.mdx +1 -1
  160. package/.docs/raw/docs/react-native/primitives.mdx +2 -2
  161. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +7 -4
  162. package/.docs/raw/docs/runtimes/a2a/overview.mdx +2 -2
  163. package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +2 -2
  164. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +32 -1
  165. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +2 -2
  166. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +7 -2
  167. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +1 -1
  168. package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +129 -1
  169. package/.docs/raw/docs/runtimes/concepts/threads.mdx +7 -1
  170. package/.docs/raw/docs/runtimes/custom/data-stream.mdx +27 -2
  171. package/.docs/raw/docs/runtimes/custom/external-store.mdx +9 -1
  172. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +18 -7
  173. package/.docs/raw/docs/runtimes/custom/overview.mdx +2 -2
  174. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +108 -38
  175. package/.docs/raw/docs/runtimes/google-adk/overview.mdx +2 -2
  176. package/.docs/raw/docs/runtimes/langchain.mdx +2 -2
  177. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +2 -2
  178. package/.docs/raw/docs/runtimes/langgraph/overview.mdx +2 -2
  179. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +1 -1
  180. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +64 -50
  181. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +98 -86
  182. package/.docs/raw/docs/runtimes/opencode/overview.mdx +2 -2
  183. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +1 -1
  184. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +12 -5
  185. package/.docs/raw/docs/tools/backend.mdx +136 -0
  186. package/.docs/raw/docs/tools/defining-tools.mdx +413 -0
  187. package/.docs/raw/docs/tools/dynamic-tools.mdx +110 -0
  188. package/.docs/raw/docs/tools/generative-ui.mdx +214 -0
  189. package/.docs/raw/docs/tools/index.mdx +76 -0
  190. package/.docs/raw/docs/{guides → tools}/interactables.mdx +3 -3
  191. package/.docs/raw/docs/tools/mcp-apps.mdx +231 -0
  192. package/.docs/raw/docs/{integrations/tools → tools}/mcp.mdx +77 -50
  193. package/.docs/raw/docs/{guides → tools}/multi-agent.mdx +19 -21
  194. package/.docs/raw/docs/tools/tool-ui.mdx +967 -0
  195. package/.docs/raw/docs/tools/user-managed-mcp.mdx +337 -0
  196. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +11 -1
  197. package/.docs/raw/docs/ui/directive-text.mdx +3 -3
  198. package/.docs/raw/docs/ui/mcp-config.mdx +102 -0
  199. package/.docs/raw/docs/ui/model-selector.mdx +8 -8
  200. package/.docs/raw/docs/ui/part-grouping.mdx +84 -50
  201. package/.docs/raw/docs/ui/reasoning.mdx +4 -5
  202. package/.docs/raw/docs/ui/sources.mdx +17 -0
  203. package/.docs/raw/docs/ui/streamdown.mdx +34 -2
  204. package/.docs/raw/docs/ui/thread-list.mdx +2 -2
  205. package/.docs/raw/docs/ui/thread.mdx +2 -2
  206. package/.docs/raw/docs/ui/tool-group.mdx +5 -6
  207. package/.docs/raw/docs/utilities/heat-graph.mdx +1 -1
  208. package/README.md +14 -72
  209. package/dist/constants.d.ts +12 -9
  210. package/dist/constants.d.ts.map +1 -1
  211. package/dist/constants.js +13 -9
  212. package/dist/constants.js.map +1 -1
  213. package/dist/index.d.ts +7 -3
  214. package/dist/index.d.ts.map +1 -1
  215. package/dist/index.js +25 -24
  216. package/dist/index.js.map +1 -1
  217. package/dist/prepare-docs/code-examples.d.ts +4 -1
  218. package/dist/prepare-docs/code-examples.d.ts.map +1 -1
  219. package/dist/prepare-docs/code-examples.js +109 -121
  220. package/dist/prepare-docs/code-examples.js.map +1 -1
  221. package/dist/prepare-docs/copy-raw.d.ts +4 -1
  222. package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
  223. package/dist/prepare-docs/copy-raw.js +45 -42
  224. package/dist/prepare-docs/copy-raw.js.map +1 -1
  225. package/dist/prepare-docs/prepare.d.ts +1 -2
  226. package/dist/prepare-docs/prepare.js +17 -17
  227. package/dist/prepare-docs/prepare.js.map +1 -1
  228. package/dist/stdio.d.ts +1 -3
  229. package/dist/stdio.js +6 -3
  230. package/dist/stdio.js.map +1 -1
  231. package/dist/tools/docs.d.ts +20 -15
  232. package/dist/tools/docs.d.ts.map +1 -1
  233. package/dist/tools/docs.js +140 -161
  234. package/dist/tools/docs.js.map +1 -1
  235. package/dist/tools/examples.d.ts +20 -15
  236. package/dist/tools/examples.d.ts.map +1 -1
  237. package/dist/tools/examples.js +74 -86
  238. package/dist/tools/examples.js.map +1 -1
  239. package/dist/tools/tests/test-setup.d.ts +5 -2
  240. package/dist/tools/tests/test-setup.d.ts.map +1 -1
  241. package/dist/tools/tests/test-setup.js +21 -28
  242. package/dist/tools/tests/test-setup.js.map +1 -1
  243. package/dist/utils/logger.d.ts +8 -5
  244. package/dist/utils/logger.d.ts.map +1 -1
  245. package/dist/utils/logger.js +17 -17
  246. package/dist/utils/logger.js.map +1 -1
  247. package/dist/utils/mcp-format.d.ts +8 -5
  248. package/dist/utils/mcp-format.d.ts.map +1 -1
  249. package/dist/utils/mcp-format.js +9 -9
  250. package/dist/utils/mcp-format.js.map +1 -1
  251. package/dist/utils/mdx.d.ts +8 -6
  252. package/dist/utils/mdx.d.ts.map +1 -1
  253. package/dist/utils/mdx.js +22 -22
  254. package/dist/utils/mdx.js.map +1 -1
  255. package/dist/utils/paths.d.ts +9 -6
  256. package/dist/utils/paths.d.ts.map +1 -1
  257. package/dist/utils/paths.js +66 -76
  258. package/dist/utils/paths.js.map +1 -1
  259. package/dist/utils/security.d.ts +4 -1
  260. package/dist/utils/security.d.ts.map +1 -1
  261. package/dist/utils/security.js +19 -40
  262. package/dist/utils/security.js.map +1 -1
  263. package/package.json +5 -5
  264. package/.docs/organized/code-examples/with-parent-id-grouping.md +0 -596
  265. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +0 -151
  266. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +0 -230
  267. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback-speech.mdx +0 -41
  268. package/.docs/raw/docs/(reference)/api-reference/context-providers/text-message-part-provider.mdx +0 -40
  269. package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -260
  270. package/.docs/raw/docs/(reference)/api-reference/integrations/react-hook-form.mdx +0 -103
  271. package/.docs/raw/docs/(reference)/api-reference/integrations/vercel-ai-sdk.mdx +0 -254
  272. package/.docs/raw/docs/guides/tool-ui.mdx +0 -858
  273. package/.docs/raw/docs/guides/tools.mdx +0 -675
  274. package/dist/prepare-docs/prepare.d.ts.map +0 -1
  275. package/dist/stdio.d.ts.map +0 -1
  276. /package/.docs/raw/docs/{(reference)/migrations → migrations}/deprecation-policy.mdx +0 -0
  277. /package/.docs/raw/docs/{(reference) → migrations}/react-compatibility.mdx +0 -0
  278. /package/.docs/raw/docs/{(reference)/migrations → migrations}/react-langgraph-v0-7.mdx +0 -0
  279. /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-11.mdx +0 -0
  280. /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-12.mdx +0 -0
  281. /package/.docs/raw/docs/{(reference)/migrations → migrations}/v0-14.mdx +0 -0
@@ -88,13 +88,13 @@ import { WaterfallPage } from "@/lib/waterfall-page";
88
88
 
89
89
  export default function Home() {
90
90
  return (
91
- <div className="min-h-screen bg-background p-8">
91
+ <div className="bg-background min-h-screen p-8">
92
92
  <div className="mx-auto max-w-6xl">
93
93
  <div className="mb-8">
94
- <h1 className="mb-2 font-bold text-4xl text-foreground">
94
+ <h1 className="text-foreground mb-2 text-4xl font-bold">
95
95
  Waterfall Timeline
96
96
  </h1>
97
- <p className="text-lg text-muted-foreground">
97
+ <p className="text-muted-foreground text-lg">
98
98
  Span visualization powered by @assistant-ui/react-o11y
99
99
  </p>
100
100
  </div>
@@ -411,14 +411,14 @@ export function WaterfallRow() {
411
411
  <SpanPrimitive.Indent
412
412
  baseIndent={8}
413
413
  indentPerLevel={12}
414
- className="sticky left-0 z-10 flex shrink-0 items-center gap-1 overflow-hidden border-border border-r bg-background px-2 group-hover:bg-accent/50"
414
+ className="border-border bg-background group-hover:bg-accent/50 sticky left-0 z-10 flex shrink-0 items-center gap-1 overflow-hidden border-r px-2"
415
415
  style={{ width: LABEL_WIDTH, height: barHeight }}
416
416
  >
417
417
  <AuiIf condition={(s) => s.span.hasChildren}>
418
- <SpanPrimitive.CollapseToggle className="flex shrink-0 items-center justify-center rounded p-0.5 text-muted-foreground hover:text-foreground">
418
+ <SpanPrimitive.CollapseToggle className="text-muted-foreground hover:text-foreground flex shrink-0 items-center justify-center rounded p-0.5">
419
419
  <svg
420
420
  aria-hidden="true"
421
- className="size-3.5 transition-transform data-[collapsed=true]:[-rotate-90]"
421
+ className="data-[collapsed=true]:[-rotate-90] size-3.5 transition-transform"
422
422
  viewBox="0 0 16 16"
423
423
  fill="currentColor"
424
424
  >
@@ -430,7 +430,7 @@ export function WaterfallRow() {
430
430
  <span className="w-4.5 shrink-0" />
431
431
  </AuiIf>
432
432
  <SpanPrimitive.StatusIndicator className="size-1.5 shrink-0 rounded-full bg-current" />
433
- <SpanPrimitive.TypeBadge className="shrink-0 rounded border border-border px-1 text-[10px] text-muted-foreground" />
433
+ <SpanPrimitive.TypeBadge className="border-border text-muted-foreground shrink-0 rounded border px-1 text-[10px]" />
434
434
  <SpanPrimitive.Name className="truncate text-sm" />
435
435
  </SpanPrimitive.Indent>
436
436
 
@@ -569,7 +569,6 @@ export function WaterfallTimeline() {
569
569
  ) as SpanState["timeRange"];
570
570
 
571
571
  // Measure outer container width — re-attach when scroll container mounts
572
- // biome-ignore lint/correctness/useExhaustiveDependencies: hasSpans triggers re-attach when scroll container mounts
573
572
  useEffect(() => {
574
573
  const el = outerRef.current;
575
574
  if (!el) return;
@@ -588,7 +587,6 @@ export function WaterfallTimeline() {
588
587
  }, [hasSpans]);
589
588
 
590
589
  // Cmd + scroll wheel zoom — re-attach when scroll container mounts
591
- // biome-ignore lint/correctness/useExhaustiveDependencies: hasSpans triggers re-attach when scroll container mounts
592
590
  useEffect(() => {
593
591
  const el = scrollRef.current;
594
592
  if (!el) return;
@@ -653,14 +651,14 @@ export function WaterfallTimeline() {
653
651
 
654
652
  if (!hasSpans) {
655
653
  return (
656
- <div className="rounded-lg border border-border py-12 text-center text-muted-foreground text-sm">
654
+ <div className="border-border text-muted-foreground rounded-lg border py-12 text-center text-sm">
657
655
  No spans recorded.
658
656
  </div>
659
657
  );
660
658
  }
661
659
 
662
660
  return (
663
- <div ref={outerRef} className="rounded-lg border border-border">
661
+ <div ref={outerRef} className="border-border rounded-lg border">
664
662
  <div
665
663
  ref={scrollRef}
666
664
  className="overflow-auto"
@@ -668,11 +666,11 @@ export function WaterfallTimeline() {
668
666
  >
669
667
  {/* Time axis */}
670
668
  <div
671
- className="sticky top-0 z-20 flex border-border border-b bg-background"
669
+ className="border-border bg-background sticky top-0 z-20 flex border-b"
672
670
  style={{ width: contentWidth }}
673
671
  >
674
672
  <div
675
- className="sticky left-0 z-30 shrink-0 border-border border-r bg-background px-2 py-1.5 text-muted-foreground text-xs"
673
+ className="border-border bg-background text-muted-foreground sticky left-0 z-30 shrink-0 border-r px-2 py-1.5 text-xs"
676
674
  style={{ width: LABEL_WIDTH }}
677
675
  >
678
676
  Span
@@ -684,8 +682,6 @@ export function WaterfallTimeline() {
684
682
 
685
683
  {/* Span rows */}
686
684
  <WaterfallLayoutContext.Provider value={layoutValue}>
687
- {/* biome-ignore lint/a11y/useKeyWithClickEvents: event delegation on span rows */}
688
- {/* biome-ignore lint/a11y/noStaticElementInteractions: event delegation on span rows */}
689
685
  <div
690
686
  style={{ width: contentWidth }}
691
687
  onClick={(e) => {
@@ -704,7 +700,7 @@ export function WaterfallTimeline() {
704
700
  </div>
705
701
 
706
702
  {/* Legend */}
707
- <div className="flex items-center gap-4 border-border border-t px-3 py-2 text-muted-foreground text-xs">
703
+ <div className="border-border text-muted-foreground flex items-center gap-4 border-t px-3 py-2 text-xs">
708
704
  <div className="flex items-center gap-1.5">
709
705
  <span
710
706
  className="size-2.5 rounded-sm"
@@ -750,13 +746,14 @@ export function WaterfallTimeline() {
750
746
  ## next.config.ts
751
747
 
752
748
  ```typescript
749
+ import { withAui } from "@assistant-ui/next";
753
750
  import type { NextConfig } from "next";
754
751
 
755
752
  const nextConfig: NextConfig = {
756
753
  /* config options here */
757
754
  };
758
755
 
759
- export default nextConfig;
756
+ export default withAui(nextConfig);
760
757
 
761
758
  ```
762
759
 
@@ -777,18 +774,19 @@ export default nextConfig;
777
774
  "@assistant-ui/react-o11y": "workspace:*",
778
775
  "@assistant-ui/store": "workspace:*",
779
776
  "@assistant-ui/tap": "workspace:*",
780
- "next": "^16.2.4",
781
- "react": "^19.2.5",
782
- "react-dom": "^19.2.5"
777
+ "next": "^16.2.6",
778
+ "react": "^19.2.6",
779
+ "react-dom": "^19.2.6"
783
780
  },
784
781
  "devDependencies": {
782
+ "@assistant-ui/next": "workspace:*",
785
783
  "@assistant-ui/x-buildutils": "workspace:*",
786
- "@tailwindcss/postcss": "^4.2.4",
787
- "@types/node": "^25.6.0",
788
- "@types/react": "^19.2.14",
784
+ "@tailwindcss/postcss": "^4.3.0",
785
+ "@types/node": "^25.9.1",
786
+ "@types/react": "^19.2.15",
789
787
  "@types/react-dom": "^19.2.3",
790
- "postcss": "^8.5.14",
791
- "tailwindcss": "^4.2.4",
788
+ "postcss": "^8.5.15",
789
+ "tailwindcss": "^4.3.0",
792
790
  "typescript": "^6.0.3"
793
791
  }
794
792
  }
@@ -257,7 +257,7 @@ function StateBadge({ state }: { state: A2ATaskState }) {
257
257
 
258
258
  return (
259
259
  <span
260
- className={`inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 font-medium text-xs ${config.color} ${config.bg}`}
260
+ className={`inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium ${config.color} ${config.bg}`}
261
261
  >
262
262
  {isActive ? (
263
263
  <span className="relative flex size-1.5">
@@ -286,7 +286,7 @@ function TaskStatusBar() {
286
286
  <StateBadge state={state} />
287
287
  <span className="text-muted-foreground">Task {task.id.slice(0, 8)}</span>
288
288
  {errorText && (
289
- <span className="ml-auto text-red-600 text-xs">{errorText}</span>
289
+ <span className="ml-auto text-xs text-red-600">{errorText}</span>
290
290
  )}
291
291
  </div>
292
292
  );
@@ -295,18 +295,18 @@ function TaskStatusBar() {
295
295
  function ArtifactPartView({ part }: { part: A2APart }) {
296
296
  if (part.text !== undefined) {
297
297
  return (
298
- <pre className="overflow-x-auto whitespace-pre-wrap rounded border bg-background p-2 font-mono text-xs">
298
+ <pre className="bg-background overflow-x-auto rounded border p-2 font-mono text-xs whitespace-pre-wrap">
299
299
  {part.text}
300
300
  </pre>
301
301
  );
302
302
  }
303
303
  if (part.data !== undefined) {
304
304
  return (
305
- <div className="rounded border bg-background p-2">
306
- <div className="mb-1 font-medium text-muted-foreground text-xs">
305
+ <div className="bg-background rounded border p-2">
306
+ <div className="text-muted-foreground mb-1 text-xs font-medium">
307
307
  Data
308
308
  </div>
309
- <pre className="overflow-x-auto whitespace-pre-wrap font-mono text-xs">
309
+ <pre className="overflow-x-auto font-mono text-xs whitespace-pre-wrap">
310
310
  {JSON.stringify(part.data, null, 2)}
311
311
  </pre>
312
312
  </div>
@@ -316,7 +316,6 @@ function ArtifactPartView({ part }: { part: A2APart }) {
316
316
  const isImage = part.mediaType?.startsWith("image/");
317
317
  if (isImage) {
318
318
  return (
319
- // biome-ignore lint/performance/noImgElement: example component
320
319
  <img
321
320
  src={part.url}
322
321
  alt={part.filename ?? "image"}
@@ -329,7 +328,7 @@ function ArtifactPartView({ part }: { part: A2APart }) {
329
328
  href={part.url}
330
329
  target="_blank"
331
330
  rel="noopener noreferrer"
332
- className="inline-flex items-center gap-2 rounded border bg-background p-2 text-sm hover:bg-muted"
331
+ className="bg-background hover:bg-muted inline-flex items-center gap-2 rounded border p-2 text-sm"
333
332
  >
334
333
  <span>📄</span>
335
334
  <span>{part.filename ?? "Download"}</span>
@@ -345,7 +344,6 @@ function ArtifactPartView({ part }: { part: A2APart }) {
345
344
  const isImage = part.mediaType?.startsWith("image/");
346
345
  if (isImage) {
347
346
  return (
348
- // biome-ignore lint/performance/noImgElement: example component
349
347
  <img
350
348
  src={`data:${part.mediaType};base64,${part.raw}`}
351
349
  alt={part.filename ?? "image"}
@@ -358,7 +356,7 @@ function ArtifactPartView({ part }: { part: A2APart }) {
358
356
  <a
359
357
  href={dataUri}
360
358
  download={part.filename ?? "download"}
361
- className="inline-flex items-center gap-2 rounded border bg-background p-2 text-sm hover:bg-muted"
359
+ className="bg-background hover:bg-muted inline-flex items-center gap-2 rounded border p-2 text-sm"
362
360
  >
363
361
  <span>📎</span>
364
362
  <span>{part.filename ?? "File"}</span>
@@ -380,17 +378,17 @@ function ArtifactPanel() {
380
378
 
381
379
  return (
382
380
  <div className="max-h-80 overflow-y-auto border-t px-4 py-3">
383
- <h3 className="mb-2 font-medium text-muted-foreground text-xs">
381
+ <h3 className="text-muted-foreground mb-2 text-xs font-medium">
384
382
  Artifacts ({artifacts.length})
385
383
  </h3>
386
384
  <div className="space-y-2">
387
385
  {artifacts.map((artifact) => (
388
386
  <div
389
387
  key={artifact.artifactId}
390
- className="overflow-hidden rounded-md border bg-muted/30"
388
+ className="bg-muted/30 overflow-hidden rounded-md border"
391
389
  >
392
- <div className="flex items-center gap-2 border-b bg-muted/50 px-3 py-1.5">
393
- <span className="font-medium text-xs">
390
+ <div className="bg-muted/50 flex items-center gap-2 border-b px-3 py-1.5">
391
+ <span className="text-xs font-medium">
394
392
  {artifact.name ?? artifact.artifactId}
395
393
  </span>
396
394
  {artifact.description && (
@@ -417,16 +415,16 @@ function AgentCardBanner() {
417
415
  if (!card) return null;
418
416
 
419
417
  return (
420
- <div className="flex items-center gap-3 border-b bg-muted/30 px-4 py-2">
418
+ <div className="bg-muted/30 flex items-center gap-3 border-b px-4 py-2">
421
419
  <div className="flex-1">
422
- <div className="font-medium text-sm">{card.name}</div>
420
+ <div className="text-sm font-medium">{card.name}</div>
423
421
  <div className="text-muted-foreground text-xs">{card.description}</div>
424
422
  </div>
425
423
  <div className="flex flex-wrap gap-1">
426
424
  {card.skills.map((skill) => (
427
425
  <span
428
426
  key={skill.id}
429
- className="rounded-md bg-muted px-2 py-0.5 text-xs"
427
+ className="bg-muted rounded-md px-2 py-0.5 text-xs"
430
428
  title={skill.description}
431
429
  >
432
430
  {skill.name}
@@ -526,13 +524,14 @@ export default function Home() {
526
524
  ## next.config.ts
527
525
 
528
526
  ```typescript
527
+ import { withAui } from "@assistant-ui/next";
529
528
  import type { NextConfig } from "next";
530
529
 
531
530
  const nextConfig: NextConfig = {
532
531
  /* config options here */
533
532
  };
534
533
 
535
- export default nextConfig;
534
+ export default withAui(nextConfig);
536
535
 
537
536
  ```
538
537
 
@@ -556,20 +555,21 @@ export default nextConfig;
556
555
  "@assistant-ui/ui": "workspace:*",
557
556
  "class-variance-authority": "^0.7.1",
558
557
  "clsx": "^2.1.1",
559
- "lucide-react": "^1.14.0",
560
- "next": "^16.2.4",
561
- "react": "^19.2.5",
562
- "react-dom": "^19.2.5",
563
- "tailwind-merge": "^3.5.0"
558
+ "lucide-react": "^1.17.0",
559
+ "next": "^16.2.6",
560
+ "react": "^19.2.6",
561
+ "react-dom": "^19.2.6",
562
+ "tailwind-merge": "^3.6.0"
564
563
  },
565
564
  "devDependencies": {
565
+ "@assistant-ui/next": "workspace:*",
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.14",
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
  }
@@ -263,17 +263,17 @@ export function MyRuntimeProvider({
263
263
  "use client";
264
264
 
265
265
  import {
266
- useAssistantTool,
267
266
  useAui,
268
267
  AuiProvider,
269
268
  Suggestions,
269
+ Tools,
270
+ type Toolkit,
270
271
  } from "@assistant-ui/react";
271
272
  import { Thread } from "@/components/assistant-ui/thread";
272
273
  import { PlusIcon } from "lucide-react";
273
274
 
274
- function BrowserAlertTool() {
275
- useAssistantTool<{ message: string }, { status: string }>({
276
- toolName: "browser_alert",
275
+ const toolkit = {
276
+ browser_alert: {
277
277
  description: "Display a native browser alert dialog to the user.",
278
278
  parameters: {
279
279
  type: "object",
@@ -291,24 +291,22 @@ function BrowserAlertTool() {
291
291
  },
292
292
  render: ({ args, result }) => (
293
293
  <div className="mt-3 w-full max-w-(--thread-max-width) rounded-lg border px-4 py-3 text-sm">
294
- <p className="font-semibold text-muted-foreground">browser_alert</p>
294
+ <p className="text-muted-foreground font-semibold">browser_alert</p>
295
295
  <p className="mt-1">
296
296
  Requested alert with message:
297
- <span className="ml-1 font-mono text-foreground">
297
+ <span className="text-foreground ml-1 font-mono">
298
298
  {JSON.stringify(args.message)}
299
299
  </span>
300
300
  </p>
301
301
  {result?.status === "shown" && (
302
- <p className="mt-2 text-foreground/70 text-xs">
302
+ <p className="text-foreground/70 mt-2 text-xs">
303
303
  Alert displayed in this tab.
304
304
  </p>
305
305
  )}
306
306
  </div>
307
307
  ),
308
- });
309
-
310
- return null;
311
- }
308
+ },
309
+ } satisfies Toolkit;
312
310
 
313
311
  function NewThreadButton() {
314
312
  const aui = useAui();
@@ -317,7 +315,7 @@ function NewThreadButton() {
317
315
  <button
318
316
  type="button"
319
317
  onClick={() => aui.threads().switchToNewThread()}
320
- className="absolute top-4 right-4 z-10 flex items-center gap-2 rounded-lg border bg-background px-3 py-2 font-medium text-sm shadow-sm transition-colors hover:bg-accent"
318
+ className="bg-background hover:bg-accent absolute top-4 right-4 z-10 flex items-center gap-2 rounded-lg border px-3 py-2 text-sm font-medium shadow-sm transition-colors"
321
319
  >
322
320
  <PlusIcon className="size-4" />
323
321
  New Thread
@@ -348,12 +346,17 @@ function ThreadWithSuggestions() {
348
346
  }
349
347
 
350
348
  export default function Home() {
349
+ const aui = useAui({
350
+ tools: Tools({ toolkit }),
351
+ });
352
+
351
353
  return (
352
- <main className="relative h-dvh">
353
- <NewThreadButton />
354
- <ThreadWithSuggestions />
355
- <BrowserAlertTool />
356
- </main>
354
+ <AuiProvider value={aui}>
355
+ <main className="relative h-dvh">
356
+ <NewThreadButton />
357
+ <ThreadWithSuggestions />
358
+ </main>
359
+ </AuiProvider>
357
360
  );
358
361
  }
359
362
 
@@ -392,13 +395,14 @@ export default function Home() {
392
395
  ## next.config.ts
393
396
 
394
397
  ```typescript
398
+ import { withAui } from "@assistant-ui/next";
395
399
  import type { NextConfig } from "next";
396
400
 
397
401
  const nextConfig: NextConfig = {
398
402
  /* config options here */
399
403
  };
400
404
 
401
- export default nextConfig;
405
+ export default withAui(nextConfig);
402
406
 
403
407
  ```
404
408
 
@@ -416,27 +420,28 @@ export default nextConfig;
416
420
  "start": "next start"
417
421
  },
418
422
  "dependencies": {
419
- "@ag-ui/client": "^0.0.53",
423
+ "@ag-ui/client": "^0.0.54",
420
424
  "@assistant-ui/react": "workspace:*",
421
425
  "@assistant-ui/react-ag-ui": "workspace:*",
422
426
  "@assistant-ui/react-markdown": "workspace:*",
423
427
  "@assistant-ui/ui": "workspace:*",
424
428
  "class-variance-authority": "^0.7.1",
425
429
  "clsx": "^2.1.1",
426
- "lucide-react": "^1.14.0",
427
- "next": "^16.2.4",
428
- "react": "^19.2.5",
429
- "react-dom": "^19.2.5",
430
- "tailwind-merge": "^3.5.0"
430
+ "lucide-react": "^1.17.0",
431
+ "next": "^16.2.6",
432
+ "react": "^19.2.6",
433
+ "react-dom": "^19.2.6",
434
+ "tailwind-merge": "^3.6.0"
431
435
  },
432
436
  "devDependencies": {
437
+ "@assistant-ui/next": "workspace:*",
433
438
  "@assistant-ui/x-buildutils": "workspace:*",
434
- "@tailwindcss/postcss": "^4.2.4",
435
- "@types/node": "^25.6.0",
436
- "@types/react": "^19.2.14",
439
+ "@tailwindcss/postcss": "^4.3.0",
440
+ "@types/node": "^25.9.1",
441
+ "@types/react": "^19.2.15",
437
442
  "@types/react-dom": "^19.2.3",
438
- "postcss": "^8.5.14",
439
- "tailwindcss": "^4.2.4",
443
+ "postcss": "^8.5.15",
444
+ "tailwindcss": "^4.3.0",
440
445
  "tw-animate-css": "^1.4.0",
441
446
  "typescript": "^6.0.3"
442
447
  }
@@ -502,7 +507,7 @@ pnpm dev
502
507
  The included `server/agent.py` provides:
503
508
 
504
509
  - **Echo mode** (default): Echoes back user messages for testing
505
- - **OpenAI mode**: Uses GPT-4o-mini when `OPENAI_API_KEY` is set
510
+ - **OpenAI mode**: Uses GPT-5.4 Nano when `OPENAI_API_KEY` is set
506
511
 
507
512
  ### Endpoints
508
513
 
@@ -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),
@@ -292,12 +292,13 @@ export default function Home() {
292
292
  ## next.config.js
293
293
 
294
294
  ```javascript
295
+ import { withAui } from "@assistant-ui/next";
295
296
  /** @type {import('next').NextConfig} */
296
297
  const nextConfig = {
297
298
  transpilePackages: ["@assistant-ui/react", "@assistant-ui/react-ai-sdk"],
298
299
  };
299
300
 
300
- export default nextConfig;
301
+ export default withAui(nextConfig);
301
302
 
302
303
  ```
303
304
 
@@ -315,29 +316,30 @@ export default nextConfig;
315
316
  "start": "next start"
316
317
  },
317
318
  "dependencies": {
318
- "@ai-sdk/openai": "^3.0.61",
319
+ "@ai-sdk/openai": "^3.0.67",
319
320
  "@assistant-ui/react": "workspace:*",
320
321
  "@assistant-ui/react-ai-sdk": "workspace:*",
321
322
  "@assistant-ui/react-markdown": "workspace:*",
322
323
  "@assistant-ui/ui": "workspace:*",
323
- "ai": "^6.0.175",
324
+ "ai": "^6.0.193",
324
325
  "class-variance-authority": "^0.7.1",
325
326
  "clsx": "^2.1.1",
326
- "lucide-react": "^1.14.0",
327
- "next": "^16.2.4",
328
- "react": "^19.2.5",
329
- "react-dom": "^19.2.5",
330
- "tailwind-merge": "^3.5.0",
327
+ "lucide-react": "^1.17.0",
328
+ "next": "^16.2.6",
329
+ "react": "^19.2.6",
330
+ "react-dom": "^19.2.6",
331
+ "tailwind-merge": "^3.6.0",
331
332
  "zod": "^4.4.3"
332
333
  },
333
334
  "devDependencies": {
335
+ "@assistant-ui/next": "workspace:*",
334
336
  "@assistant-ui/x-buildutils": "workspace:*",
335
- "@tailwindcss/postcss": "^4.2.4",
336
- "@types/node": "^25.6.0",
337
- "@types/react": "^19.2.14",
337
+ "@tailwindcss/postcss": "^4.3.0",
338
+ "@types/node": "^25.9.1",
339
+ "@types/react": "^19.2.15",
338
340
  "@types/react-dom": "^19.2.3",
339
- "postcss": "^8.5.14",
340
- "tailwindcss": "^4.2.4",
341
+ "postcss": "^8.5.15",
342
+ "tailwindcss": "^4.3.0",
341
343
  "tw-animate-css": "^1.4.0",
342
344
  "typescript": "^6.0.3"
343
345
  }