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

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 (134) hide show
  1. package/.docs/organized/code-examples/waterfall.md +20 -22
  2. package/.docs/organized/code-examples/with-a2a.md +24 -24
  3. package/.docs/organized/code-examples/with-ag-ui.md +30 -25
  4. package/.docs/organized/code-examples/with-ai-sdk-v6.md +11 -9
  5. package/.docs/organized/code-examples/with-artifacts.md +49 -37
  6. package/.docs/organized/code-examples/with-assistant-transport.md +63 -51
  7. package/.docs/organized/code-examples/with-browser-extension.md +22 -10
  8. package/.docs/organized/code-examples/with-chain-of-thought.md +406 -87
  9. package/.docs/organized/code-examples/with-cloud-standalone.md +25 -24
  10. package/.docs/organized/code-examples/with-cloud.md +11 -9
  11. package/.docs/organized/code-examples/with-custom-thread-list.md +14 -12
  12. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +23 -21
  13. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +14 -13
  14. package/.docs/organized/code-examples/with-expo.md +44 -29
  15. package/.docs/organized/code-examples/with-external-store.md +9 -7
  16. package/.docs/organized/code-examples/with-ffmpeg.md +322 -285
  17. package/.docs/organized/code-examples/with-generative-ui.md +1066 -256
  18. package/.docs/organized/code-examples/with-google-adk.md +10 -8
  19. package/.docs/organized/code-examples/with-heat-graph.md +13 -11
  20. package/.docs/organized/code-examples/with-image-generation.md +19 -17
  21. package/.docs/organized/code-examples/with-interactables.md +317 -239
  22. package/.docs/organized/code-examples/with-langchain.md +14 -12
  23. package/.docs/organized/code-examples/with-langgraph.md +91 -83
  24. package/.docs/organized/code-examples/with-livekit.md +24 -22
  25. package/.docs/organized/code-examples/with-mcp.md +18 -12
  26. package/.docs/organized/code-examples/with-opencode.md +66 -66
  27. package/.docs/organized/code-examples/with-react-hook-form.md +19 -17
  28. package/.docs/organized/code-examples/with-react-ink.md +297 -102
  29. package/.docs/organized/code-examples/with-react-router.md +17 -15
  30. package/.docs/organized/code-examples/with-resumable-stream.md +15 -14
  31. package/.docs/organized/code-examples/with-store.md +78 -76
  32. package/.docs/organized/code-examples/with-tanstack.md +13 -14
  33. package/.docs/organized/code-examples/with-tap-runtime.md +26 -24
  34. package/.docs/raw/docs/(docs)/architecture.mdx +94 -42
  35. package/.docs/raw/docs/(docs)/cli.mdx +1 -2
  36. package/.docs/raw/docs/(docs)/installation.mdx +1 -1
  37. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +5 -1
  38. package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +15 -15
  39. package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +14 -1
  40. package/.docs/raw/docs/(reference)/api-reference/generative-ui/index.mdx +18 -0
  41. package/.docs/raw/docs/(reference)/api-reference/generative-ui/rendering.mdx +33 -0
  42. package/.docs/raw/docs/(reference)/api-reference/generative-ui/spec.mdx +45 -0
  43. package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +41 -41
  44. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +19 -1
  45. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +122 -122
  46. package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +43 -2
  47. package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +6 -0
  48. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +4 -6
  49. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +30 -0
  50. package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +20 -3
  51. package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +8 -8
  52. package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +52 -4
  53. package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +100 -10
  54. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +7 -59
  55. package/.docs/raw/docs/cloud/ai-sdk.mdx +0 -2
  56. package/.docs/raw/docs/{(docs)/copilots → copilots}/model-context.mdx +34 -26
  57. package/.docs/raw/docs/{(docs)/copilots → copilots}/motivation.mdx +32 -26
  58. package/.docs/raw/docs/guides/chain-of-thought.mdx +7 -9
  59. package/.docs/raw/docs/guides/context-api.mdx +2 -1
  60. package/.docs/raw/docs/guides/index.mdx +3 -12
  61. package/.docs/raw/docs/guides/mentions.mdx +4 -4
  62. package/.docs/raw/docs/guides/slash-commands.mdx +1 -1
  63. package/.docs/raw/docs/guides/suggestions.mdx +1 -1
  64. package/.docs/raw/docs/ink/adapters.mdx +23 -1
  65. package/.docs/raw/docs/ink/hooks.mdx +101 -85
  66. package/.docs/raw/docs/ink/migration.mdx +1 -1
  67. package/.docs/raw/docs/ink/primitives.mdx +2 -2
  68. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +1 -1
  69. package/.docs/raw/docs/integrations/index.mdx +2 -2
  70. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +17 -2
  71. package/.docs/raw/docs/migrations/toolkit-tools.mdx +232 -0
  72. package/.docs/raw/docs/primitives/chain-of-thought.mdx +10 -16
  73. package/.docs/raw/docs/primitives/message.mdx +9 -10
  74. package/.docs/raw/docs/react-native/hooks.mdx +62 -79
  75. package/.docs/raw/docs/react-native/migration.mdx +1 -1
  76. package/.docs/raw/docs/react-native/primitives.mdx +2 -2
  77. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +3 -0
  78. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +41 -0
  79. package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +122 -1
  80. package/.docs/raw/docs/runtimes/concepts/architecture.mdx +46 -4
  81. package/.docs/raw/docs/runtimes/concepts/threads.mdx +7 -1
  82. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +54 -12
  83. package/.docs/raw/docs/runtimes/custom/external-store.mdx +62 -4
  84. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +30 -7
  85. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +108 -38
  86. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +2 -2
  87. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +14 -1
  88. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +64 -50
  89. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +98 -86
  90. package/.docs/raw/docs/tools/backend.mdx +144 -0
  91. package/.docs/raw/docs/tools/defining-tools.mdx +538 -0
  92. package/.docs/raw/docs/tools/dynamic-tools.mdx +110 -0
  93. package/.docs/raw/docs/tools/generative-ui.mdx +214 -0
  94. package/.docs/raw/docs/tools/index.mdx +71 -0
  95. package/.docs/raw/docs/{guides → tools}/interactables.mdx +1 -1
  96. package/.docs/raw/docs/{integrations/tools → tools}/mcp.mdx +145 -50
  97. package/.docs/raw/docs/{guides → tools}/multi-agent.mdx +15 -17
  98. package/.docs/raw/docs/tools/tool-ui.mdx +967 -0
  99. package/.docs/raw/docs/{integrations/tools/react-mcp.mdx → tools/user-managed-mcp.mdx} +7 -7
  100. package/.docs/raw/docs/ui/directive-text.mdx +3 -3
  101. package/.docs/raw/docs/ui/mcp-config.mdx +4 -4
  102. package/.docs/raw/docs/ui/mermaid.mdx +16 -9
  103. package/.docs/raw/docs/ui/part-grouping.mdx +84 -50
  104. package/.docs/raw/docs/ui/reasoning.mdx +4 -5
  105. package/.docs/raw/docs/ui/tool-fallback.mdx +16 -0
  106. package/.docs/raw/docs/ui/tool-group.mdx +5 -6
  107. package/.docs/raw/docs/utilities/heat-graph.mdx +1 -1
  108. package/.docs/raw/docs/utilities/react-o11y.mdx +2 -2
  109. package/dist/constants.js.map +1 -1
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js.map +1 -1
  112. package/dist/prepare-docs/code-examples.d.ts.map +1 -1
  113. package/dist/prepare-docs/code-examples.js.map +1 -1
  114. package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
  115. package/dist/prepare-docs/copy-raw.js.map +1 -1
  116. package/dist/prepare-docs/prepare.js.map +1 -1
  117. package/dist/stdio.js.map +1 -1
  118. package/dist/tools/docs.js.map +1 -1
  119. package/dist/tools/examples.js.map +1 -1
  120. package/dist/tools/tests/test-setup.js.map +1 -1
  121. package/dist/utils/mdx.js.map +1 -1
  122. package/dist/utils/paths.d.ts.map +1 -1
  123. package/dist/utils/paths.js.map +1 -1
  124. package/package.json +5 -5
  125. package/.docs/organized/code-examples/with-parent-id-grouping.md +0 -596
  126. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +0 -151
  127. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +0 -230
  128. package/.docs/raw/docs/guides/generative-ui.mdx +0 -142
  129. package/.docs/raw/docs/guides/tool-ui.mdx +0 -858
  130. package/.docs/raw/docs/guides/tools.mdx +0 -736
  131. /package/.docs/raw/docs/{(docs)/copilots → copilots}/assistant-frame.mdx +0 -0
  132. /package/.docs/raw/docs/{(docs)/copilots → copilots}/make-assistant-visible.mdx +0 -0
  133. /package/.docs/raw/docs/{(docs)/copilots → copilots}/use-assistant-instructions.mdx +0 -0
  134. /package/.docs/raw/docs/{guides → tools}/mcp-apps.mdx +0 -0
@@ -307,22 +307,21 @@ export function Composer({
307
307
 
308
308
  return (
309
309
  <form onSubmit={handleSubmit} className="p-4 pt-2">
310
- <div className="flex items-end gap-2 rounded-2xl border bg-background px-3 py-2 shadow-sm">
310
+ <div className="bg-background flex items-end gap-2 rounded-2xl border px-3 py-2 shadow-sm">
311
311
  <textarea
312
312
  value={value}
313
313
  onChange={(e) => onChange(e.target.value)}
314
314
  onKeyDown={handleKeyDown}
315
315
  placeholder="Send a message..."
316
- className="max-h-32 min-h-8 flex-1 resize-none bg-transparent py-1 text-sm leading-normal outline-none placeholder:text-muted-foreground"
316
+ className="placeholder:text-muted-foreground max-h-32 min-h-8 flex-1 resize-none bg-transparent py-1 text-sm leading-normal outline-none"
317
317
  rows={1}
318
- // biome-ignore lint/a11y/noAutofocus: chat input should autofocus
319
318
  autoFocus
320
319
  />
321
320
  {isRunning ? (
322
321
  <button
323
322
  type="button"
324
323
  onClick={onCancel}
325
- className="flex size-8 shrink-0 items-center justify-center rounded-full bg-destructive text-destructive-foreground transition-colors hover:bg-destructive/90"
324
+ className="bg-destructive text-destructive-foreground hover:bg-destructive/90 flex size-8 shrink-0 items-center justify-center rounded-full transition-colors"
326
325
  aria-label="Stop generating"
327
326
  >
328
327
  <Square className="size-3 fill-current" />
@@ -368,7 +367,7 @@ export function Message({ message }: MessageProps) {
368
367
  <div className={cn("flex", isUser ? "justify-end" : "justify-start")}>
369
368
  <div
370
369
  className={cn(
371
- "max-w-[80%] whitespace-pre-wrap break-words rounded-2xl px-4 py-2.5 text-sm",
370
+ "max-w-[80%] rounded-2xl px-4 py-2.5 text-sm break-words whitespace-pre-wrap",
372
371
  isUser
373
372
  ? "bg-primary text-primary-foreground"
374
373
  : "bg-muted text-foreground",
@@ -404,8 +403,8 @@ type ThreadProps = {
404
403
  function ThreadWelcome() {
405
404
  return (
406
405
  <div className="flex flex-1 flex-col items-center justify-center text-center">
407
- <h2 className="font-semibold text-lg">How can I help you today?</h2>
408
- <p className="mt-1 text-muted-foreground text-sm">
406
+ <h2 className="text-lg font-semibold">How can I help you today?</h2>
407
+ <p className="text-muted-foreground mt-1 text-sm">
409
408
  Send a message to start a conversation.
410
409
  </p>
411
410
  </div>
@@ -415,9 +414,9 @@ function ThreadWelcome() {
415
414
  function LoadingIndicator() {
416
415
  return (
417
416
  <div className="flex items-center gap-1.5 py-2">
418
- <span className="size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:-0.3s]" />
419
- <span className="size-1.5 animate-bounce rounded-full bg-muted-foreground/60 [animation-delay:-0.15s]" />
420
- <span className="size-1.5 animate-bounce rounded-full bg-muted-foreground/60" />
417
+ <span className="bg-muted-foreground/60 size-1.5 animate-bounce rounded-full [animation-delay:-0.3s]" />
418
+ <span className="bg-muted-foreground/60 size-1.5 animate-bounce rounded-full [animation-delay:-0.15s]" />
419
+ <span className="bg-muted-foreground/60 size-1.5 animate-bounce rounded-full" />
421
420
  </div>
422
421
  );
423
422
  }
@@ -469,12 +468,12 @@ export function ThreadList({
469
468
  isLoading,
470
469
  }: ThreadListProps) {
471
470
  return (
472
- <div className="flex h-full w-64 shrink-0 flex-col border-r bg-sidebar">
471
+ <div className="bg-sidebar flex h-full w-64 shrink-0 flex-col border-r">
473
472
  <div className="p-3">
474
473
  <button
475
474
  type="button"
476
475
  onClick={() => onSelect(null)}
477
- className="flex w-full items-center justify-center gap-2 rounded-lg border border-sidebar-border bg-sidebar px-4 py-2 font-medium text-sidebar-foreground text-sm transition-colors hover:bg-sidebar-accent"
476
+ className="border-sidebar-border bg-sidebar text-sidebar-foreground hover:bg-sidebar-accent flex w-full items-center justify-center gap-2 rounded-lg border px-4 py-2 text-sm font-medium transition-colors"
478
477
  >
479
478
  <Plus className="size-4" />
480
479
  New Chat
@@ -483,11 +482,11 @@ export function ThreadList({
483
482
 
484
483
  <div className="flex-1 overflow-y-auto px-2 pb-2">
485
484
  {isLoading && threads.length === 0 ? (
486
- <div className="flex items-center justify-center py-8 text-muted-foreground text-sm">
485
+ <div className="text-muted-foreground flex items-center justify-center py-8 text-sm">
487
486
  Loading...
488
487
  </div>
489
488
  ) : threads.length === 0 ? (
490
- <div className="flex flex-col items-center justify-center gap-2 py-8 text-center text-muted-foreground text-sm">
489
+ <div className="text-muted-foreground flex flex-col items-center justify-center gap-2 py-8 text-center text-sm">
491
490
  <MessageSquare className="size-6 opacity-40" />
492
491
  <p>No conversations yet</p>
493
492
  </div>
@@ -517,7 +516,7 @@ export function ThreadList({
517
516
  className="shrink-0 opacity-0 transition-opacity group-hover:opacity-100"
518
517
  aria-label="Delete thread"
519
518
  >
520
- <Trash2 className="size-3.5 text-muted-foreground hover:text-destructive" />
519
+ <Trash2 className="text-muted-foreground hover:text-destructive size-3.5" />
521
520
  </button>
522
521
  </button>
523
522
  ))}
@@ -545,12 +544,13 @@ export function cn(...inputs: ClassValue[]) {
545
544
  ## next.config.js
546
545
 
547
546
  ```javascript
547
+ import { withAui } from "@assistant-ui/next";
548
548
  /** @type {import('next').NextConfig} */
549
549
  const nextConfig = {
550
550
  transpilePackages: ["assistant-cloud"],
551
551
  };
552
552
 
553
- export default nextConfig;
553
+ export default withAui(nextConfig);
554
554
 
555
555
  ```
556
556
 
@@ -568,22 +568,23 @@ export default nextConfig;
568
568
  "start": "next start"
569
569
  },
570
570
  "dependencies": {
571
- "@ai-sdk/openai": "^3.0.64",
571
+ "@ai-sdk/openai": "^3.0.68",
572
572
  "@assistant-ui/cloud-ai-sdk": "workspace:*",
573
- "ai": "^6.0.188",
573
+ "ai": "^6.0.197",
574
574
  "class-variance-authority": "^0.7.1",
575
575
  "clsx": "^2.1.1",
576
- "lucide-react": "^1.16.0",
577
- "next": "^16.2.6",
578
- "react": "^19.2.6",
579
- "react-dom": "^19.2.6",
576
+ "lucide-react": "^1.17.0",
577
+ "next": "^16.2.7",
578
+ "react": "^19.2.7",
579
+ "react-dom": "^19.2.7",
580
580
  "tailwind-merge": "^3.6.0"
581
581
  },
582
582
  "devDependencies": {
583
+ "@assistant-ui/next": "workspace:*",
583
584
  "@assistant-ui/x-buildutils": "workspace:*",
584
585
  "@tailwindcss/postcss": "^4.3.0",
585
- "@types/node": "^25.9.1",
586
- "@types/react": "^19.2.15",
586
+ "@types/node": "^25.9.2",
587
+ "@types/react": "^19.2.17",
587
588
  "@types/react-dom": "^19.2.3",
588
589
  "postcss": "^8.5.15",
589
590
  "tailwindcss": "^4.3.0",
@@ -303,13 +303,14 @@ export default function Home() {
303
303
  ## next.config.ts
304
304
 
305
305
  ```typescript
306
+ import { withAui } from "@assistant-ui/next";
306
307
  import type { NextConfig } from "next";
307
308
 
308
309
  const nextConfig: NextConfig = {
309
310
  /* config options here */
310
311
  };
311
312
 
312
- export default nextConfig;
313
+ export default withAui(nextConfig);
313
314
 
314
315
  ```
315
316
 
@@ -327,25 +328,26 @@ export default nextConfig;
327
328
  "start": "next start"
328
329
  },
329
330
  "dependencies": {
330
- "@ai-sdk/openai": "^3.0.64",
331
+ "@ai-sdk/openai": "^3.0.68",
331
332
  "@assistant-ui/react": "workspace:*",
332
333
  "@assistant-ui/react-ai-sdk": "workspace:*",
333
334
  "@assistant-ui/react-markdown": "workspace:*",
334
335
  "@assistant-ui/ui": "workspace:*",
335
- "ai": "^6.0.188",
336
+ "ai": "^6.0.197",
336
337
  "class-variance-authority": "^0.7.1",
337
338
  "clsx": "^2.1.1",
338
- "lucide-react": "^1.16.0",
339
- "next": "^16.2.6",
340
- "react": "^19.2.6",
341
- "react-dom": "^19.2.6",
339
+ "lucide-react": "^1.17.0",
340
+ "next": "^16.2.7",
341
+ "react": "^19.2.7",
342
+ "react-dom": "^19.2.7",
342
343
  "tailwind-merge": "^3.6.0"
343
344
  },
344
345
  "devDependencies": {
346
+ "@assistant-ui/next": "workspace:*",
345
347
  "@assistant-ui/x-buildutils": "workspace:*",
346
348
  "@tailwindcss/postcss": "^4.3.0",
347
- "@types/node": "^25.9.1",
348
- "@types/react": "^19.2.15",
349
+ "@types/node": "^25.9.2",
350
+ "@types/react": "^19.2.17",
349
351
  "@types/react-dom": "^19.2.3",
350
352
  "postcss": "^8.5.15",
351
353
  "tailwindcss": "^4.3.0",
@@ -352,19 +352,19 @@ import {
352
352
  function ThreadList() {
353
353
  return (
354
354
  <ThreadListPrimitive.Root className="flex flex-col gap-1 overflow-y-auto">
355
- <ThreadListPrimitive.New className="flex h-9 items-center gap-2 rounded-lg border px-3 text-sm hover:bg-muted">
355
+ <ThreadListPrimitive.New className="hover:bg-muted flex h-9 items-center gap-2 rounded-lg border px-3 text-sm">
356
356
  New Thread
357
357
  </ThreadListPrimitive.New>
358
358
  <ThreadListPrimitive.Items>
359
359
  {() => (
360
- <ThreadListItemPrimitive.Root className="flex h-9 items-center rounded-lg hover:bg-muted data-active:bg-muted">
360
+ <ThreadListItemPrimitive.Root className="hover:bg-muted data-active:bg-muted flex h-9 items-center rounded-lg">
361
361
  <ThreadListItemPrimitive.Trigger className="flex-1 truncate px-3 text-start text-sm">
362
362
  <ThreadListItemPrimitive.Title fallback="New Chat" />
363
363
  </ThreadListItemPrimitive.Trigger>
364
364
  </ThreadListItemPrimitive.Root>
365
365
  )}
366
366
  </ThreadListPrimitive.Items>
367
- <ThreadListPrimitive.LoadMore className="mt-1 h-9 rounded-lg border px-3 text-sm hover:bg-muted disabled:opacity-50">
367
+ <ThreadListPrimitive.LoadMore className="hover:bg-muted mt-1 h-9 rounded-lg border px-3 text-sm disabled:opacity-50">
368
368
  Load more
369
369
  </ThreadListPrimitive.LoadMore>
370
370
  </ThreadListPrimitive.Root>
@@ -437,11 +437,12 @@ export default function Home() {
437
437
  ## next.config.ts
438
438
 
439
439
  ```typescript
440
+ import { withAui } from "@assistant-ui/next";
440
441
  import type { NextConfig } from "next";
441
442
 
442
443
  const nextConfig: NextConfig = {};
443
444
 
444
- export default nextConfig;
445
+ export default withAui(nextConfig);
445
446
 
446
447
  ```
447
448
 
@@ -459,27 +460,28 @@ export default nextConfig;
459
460
  "start": "next start"
460
461
  },
461
462
  "dependencies": {
462
- "@ai-sdk/openai": "^3.0.64",
463
+ "@ai-sdk/openai": "^3.0.68",
463
464
  "@assistant-ui/react": "workspace:*",
464
465
  "@assistant-ui/react-ai-sdk": "workspace:*",
465
466
  "@assistant-ui/react-markdown": "workspace:*",
466
467
  "@assistant-ui/ui": "workspace:*",
467
- "ai": "^6.0.188",
468
+ "ai": "^6.0.197",
468
469
  "assistant-stream": "workspace:*",
469
470
  "class-variance-authority": "^0.7.1",
470
471
  "clsx": "^2.1.1",
471
- "lucide-react": "^1.16.0",
472
- "next": "^16.2.6",
473
- "react": "^19.2.6",
474
- "react-dom": "^19.2.6",
472
+ "lucide-react": "^1.17.0",
473
+ "next": "^16.2.7",
474
+ "react": "^19.2.7",
475
+ "react-dom": "^19.2.7",
475
476
  "tailwind-merge": "^3.6.0",
476
477
  "zod": "^4.4.3"
477
478
  },
478
479
  "devDependencies": {
480
+ "@assistant-ui/next": "workspace:*",
479
481
  "@assistant-ui/x-buildutils": "workspace:*",
480
482
  "@tailwindcss/postcss": "^4.3.0",
481
- "@types/node": "^25.9.1",
482
- "@types/react": "^19.2.15",
483
+ "@types/node": "^25.9.2",
484
+ "@types/react": "^19.2.17",
483
485
  "@types/react-dom": "^19.2.3",
484
486
  "postcss": "^8.5.15",
485
487
  "tailwindcss": "^4.3.0",
@@ -177,7 +177,7 @@ import type { FC } from "react";
177
177
  export const VoiceThread: FC = () => {
178
178
  return (
179
179
  <ThreadPrimitive.Root
180
- className="aui-root aui-thread-root flex h-full flex-col bg-background"
180
+ className="aui-root aui-thread-root bg-background flex h-full flex-col"
181
181
  style={{ ["--thread-max-width" as string]: "44rem" }}
182
182
  >
183
183
  <ThreadPrimitive.Viewport className="aui-thread-viewport relative flex flex-1 flex-col overflow-y-scroll scroll-smooth px-4 pt-4">
@@ -189,7 +189,7 @@ export const VoiceThread: FC = () => {
189
189
  {() => <ThreadMessage />}
190
190
  </ThreadPrimitive.Messages>
191
191
 
192
- <ThreadPrimitive.ViewportFooter className="sticky bottom-0 mx-auto mt-auto flex w-full max-w-(--thread-max-width) flex-col items-center bg-background pt-4 pb-6">
192
+ <ThreadPrimitive.ViewportFooter className="bg-background sticky bottom-0 mx-auto mt-auto flex w-full max-w-(--thread-max-width) flex-col items-center pt-4 pb-6">
193
193
  <ThreadScrollToBottom />
194
194
  <VoiceControlCenter />
195
195
  </ThreadPrimitive.ViewportFooter>
@@ -201,7 +201,7 @@ export const VoiceThread: FC = () => {
201
201
  const VoiceWelcome: FC = () => {
202
202
  return (
203
203
  <div className="aui-thread-welcome-root mx-auto my-auto flex w-full max-w-(--thread-max-width) grow flex-col items-center justify-center gap-2">
204
- <p className="fade-in slide-in-from-bottom-1 animate-in fill-mode-both font-semibold text-2xl duration-200">
204
+ <p className="fade-in slide-in-from-bottom-1 animate-in fill-mode-both text-2xl font-semibold duration-200">
205
205
  Voice Conversation
206
206
  </p>
207
207
  <p className="fade-in slide-in-from-bottom-1 animate-in fill-mode-both text-muted-foreground delay-75 duration-200">
@@ -217,7 +217,7 @@ const ThreadScrollToBottom: FC = () => {
217
217
  <TooltipIconButton
218
218
  tooltip="Scroll to bottom"
219
219
  variant="outline"
220
- className="absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:border-border dark:bg-background dark:hover:bg-accent"
220
+ className="dark:border-border dark:bg-background dark:hover:bg-accent absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible"
221
221
  >
222
222
  <ArrowDownIcon />
223
223
  </TooltipIconButton>
@@ -268,7 +268,7 @@ const VoiceWaveform: FC = () => {
268
268
  return (
269
269
  <span
270
270
  key={i}
271
- className="aui-voice-waveform-bar h-full w-[3px] origin-center rounded-full bg-foreground/50 transition-transform duration-100"
271
+ className="aui-voice-waveform-bar bg-foreground/50 h-full w-[3px] origin-center rounded-full transition-transform duration-100"
272
272
  style={{ transform: `scaleY(${scale})` }}
273
273
  />
274
274
  );
@@ -286,10 +286,10 @@ const ThreadMessage: FC = () => {
286
286
  const AssistantMessage: FC = () => {
287
287
  return (
288
288
  <MessagePrimitive.Root
289
- className="aui-assistant-message-root fade-in slide-in-from-bottom-1 relative mx-auto w-full max-w-(--thread-max-width) animate-in py-3 duration-150"
289
+ className="aui-assistant-message-root fade-in slide-in-from-bottom-1 animate-in relative mx-auto w-full max-w-(--thread-max-width) py-3 duration-150"
290
290
  data-role="assistant"
291
291
  >
292
- <div className="aui-assistant-message-content wrap-break-word px-2 text-foreground leading-relaxed">
292
+ <div className="aui-assistant-message-content text-foreground px-2 leading-relaxed wrap-break-word">
293
293
  <MessagePrimitive.Parts>
294
294
  {({ part }) => {
295
295
  if (part.type === "text") return <MarkdownText />;
@@ -304,10 +304,10 @@ const AssistantMessage: FC = () => {
304
304
  const UserMessage: FC = () => {
305
305
  return (
306
306
  <MessagePrimitive.Root
307
- className="aui-user-message-root fade-in slide-in-from-bottom-1 mx-auto flex w-full max-w-(--thread-max-width) animate-in justify-end px-2 py-3 duration-150"
307
+ className="aui-user-message-root fade-in slide-in-from-bottom-1 animate-in mx-auto flex w-full max-w-(--thread-max-width) justify-end px-2 py-3 duration-150"
308
308
  data-role="user"
309
309
  >
310
- <div className="aui-user-message-content wrap-break-word rounded-2xl bg-muted px-4 py-2.5 text-foreground">
310
+ <div className="aui-user-message-content bg-muted text-foreground rounded-2xl px-4 py-2.5 wrap-break-word">
311
311
  <MessagePrimitive.Parts />
312
312
  </div>
313
313
  </MessagePrimitive.Root>
@@ -420,12 +420,13 @@ export class ElevenLabsVoiceAdapter implements RealtimeVoiceAdapter {
420
420
  ## next.config.js
421
421
 
422
422
  ```javascript
423
+ import { withAui } from "@assistant-ui/next";
423
424
  /** @type {import('next').NextConfig} */
424
425
  const nextConfig = {
425
426
  transpilePackages: ["@assistant-ui/react", "@assistant-ui/react-ai-sdk"],
426
427
  };
427
428
 
428
- export default nextConfig;
429
+ export default withAui(nextConfig);
429
430
 
430
431
  ```
431
432
 
@@ -438,31 +439,32 @@ export default nextConfig;
438
439
  "version": "0.0.0",
439
440
  "type": "module",
440
441
  "dependencies": {
441
- "@ai-sdk/openai": "^3.0.64",
442
- "@ai-sdk/react": "^3.0.190",
442
+ "@ai-sdk/openai": "^3.0.68",
443
+ "@ai-sdk/react": "^3.0.199",
443
444
  "@assistant-ui/react": "workspace:^",
444
445
  "@assistant-ui/react-ai-sdk": "workspace:*",
445
446
  "@assistant-ui/react-markdown": "workspace:^",
446
447
  "@assistant-ui/ui": "workspace:*",
447
- "@elevenlabs/client": "^1.8.0",
448
+ "@elevenlabs/client": "^1.9.0",
448
449
  "@tailwindcss/postcss": "^4.3.0",
449
- "ai": "^6.0.188",
450
+ "ai": "^6.0.197",
450
451
  "class-variance-authority": "^0.7.1",
451
452
  "clsx": "^2.1.1",
452
- "lucide-react": "^1.16.0",
453
- "motion": "^12.39.0",
454
- "next": "^16.2.6",
453
+ "lucide-react": "^1.17.0",
454
+ "motion": "^12.40.0",
455
+ "next": "^16.2.7",
455
456
  "postcss": "^8.5.15",
456
- "react": "^19.2.6",
457
- "react-dom": "^19.2.6",
457
+ "react": "^19.2.7",
458
+ "react-dom": "^19.2.7",
458
459
  "tailwind-merge": "^3.6.0",
459
460
  "tailwindcss": "^4.3.0",
460
461
  "zod": "^4.4.3"
461
462
  },
462
463
  "devDependencies": {
464
+ "@assistant-ui/next": "workspace:*",
463
465
  "@assistant-ui/x-buildutils": "workspace:*",
464
- "@types/node": "^25.9.1",
465
- "@types/react": "^19.2.15",
466
+ "@types/node": "^25.9.2",
467
+ "@types/react": "^19.2.17",
466
468
  "@types/react-dom": "^19.2.3",
467
469
  "tw-animate-css": "^1.4.0",
468
470
  "typescript": "^6.0.3"
@@ -199,7 +199,6 @@ export async function POST() {
199
199
  }
200
200
  }
201
201
 
202
-
203
202
  ```
204
203
 
205
204
  ## app/layout.tsx
@@ -544,12 +543,13 @@ export class ElevenLabsScribeAdapter implements DictationAdapter {
544
543
  ## next.config.js
545
544
 
546
545
  ```javascript
546
+ import { withAui } from "@assistant-ui/next";
547
547
  /** @type {import('next').NextConfig} */
548
548
  const nextConfig = {
549
549
  transpilePackages: ["@assistant-ui/react", "@assistant-ui/react-ai-sdk"],
550
550
  };
551
551
 
552
- export default nextConfig;
552
+ export default withAui(nextConfig);
553
553
 
554
554
  ```
555
555
 
@@ -562,31 +562,32 @@ export default nextConfig;
562
562
  "version": "0.0.0",
563
563
  "type": "module",
564
564
  "dependencies": {
565
- "@ai-sdk/openai": "^3.0.64",
566
- "@ai-sdk/react": "^3.0.190",
565
+ "@ai-sdk/openai": "^3.0.68",
566
+ "@ai-sdk/react": "^3.0.199",
567
567
  "@assistant-ui/react": "workspace:^",
568
568
  "@assistant-ui/react-ai-sdk": "workspace:*",
569
569
  "@assistant-ui/react-markdown": "workspace:^",
570
570
  "@assistant-ui/ui": "workspace:*",
571
- "@elevenlabs/client": "^1.8.0",
571
+ "@elevenlabs/client": "^1.9.0",
572
572
  "@tailwindcss/postcss": "^4.3.0",
573
- "ai": "^6.0.188",
573
+ "ai": "^6.0.197",
574
574
  "class-variance-authority": "^0.7.1",
575
575
  "clsx": "^2.1.1",
576
- "lucide-react": "^1.16.0",
577
- "motion": "^12.39.0",
578
- "next": "^16.2.6",
576
+ "lucide-react": "^1.17.0",
577
+ "motion": "^12.40.0",
578
+ "next": "^16.2.7",
579
579
  "postcss": "^8.5.15",
580
- "react": "^19.2.6",
581
- "react-dom": "^19.2.6",
580
+ "react": "^19.2.7",
581
+ "react-dom": "^19.2.7",
582
582
  "tailwind-merge": "^3.6.0",
583
583
  "tailwindcss": "^4.3.0",
584
584
  "zod": "^4.4.3"
585
585
  },
586
586
  "devDependencies": {
587
+ "@assistant-ui/next": "workspace:*",
587
588
  "@assistant-ui/x-buildutils": "workspace:*",
588
- "@types/node": "^25.9.1",
589
- "@types/react": "^19.2.15",
589
+ "@types/node": "^25.9.2",
590
+ "@types/react": "^19.2.17",
590
591
  "@types/react-dom": "^19.2.3",
591
592
  "tw-animate-css": "^1.4.0",
592
593
  "typescript": "^6.0.3"