@assistant-ui/mcp-docs-server 0.1.32 → 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 (112) hide show
  1. package/.docs/organized/code-examples/waterfall.md +15 -17
  2. package/.docs/organized/code-examples/with-a2a.md +19 -19
  3. package/.docs/organized/code-examples/with-ag-ui.md +25 -20
  4. package/.docs/organized/code-examples/with-ai-sdk-v6.md +6 -4
  5. package/.docs/organized/code-examples/with-artifacts.md +34 -28
  6. package/.docs/organized/code-examples/with-assistant-transport.md +59 -47
  7. package/.docs/organized/code-examples/with-browser-extension.md +17 -5
  8. package/.docs/organized/code-examples/with-chain-of-thought.md +376 -78
  9. package/.docs/organized/code-examples/with-cloud-standalone.md +20 -19
  10. package/.docs/organized/code-examples/with-cloud.md +6 -4
  11. package/.docs/organized/code-examples/with-custom-thread-list.md +9 -7
  12. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +18 -16
  13. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +9 -8
  14. package/.docs/organized/code-examples/with-expo.md +23 -17
  15. package/.docs/organized/code-examples/with-external-store.md +4 -2
  16. package/.docs/organized/code-examples/with-ffmpeg.md +317 -280
  17. package/.docs/organized/code-examples/with-generative-ui.md +1018 -214
  18. package/.docs/organized/code-examples/with-google-adk.md +4 -2
  19. package/.docs/organized/code-examples/with-heat-graph.md +8 -6
  20. package/.docs/organized/code-examples/with-image-generation.md +19 -17
  21. package/.docs/organized/code-examples/with-interactables.md +312 -234
  22. package/.docs/organized/code-examples/with-langchain.md +9 -7
  23. package/.docs/organized/code-examples/with-langgraph.md +82 -78
  24. package/.docs/organized/code-examples/with-livekit.md +19 -17
  25. package/.docs/organized/code-examples/with-mcp.md +13 -7
  26. package/.docs/organized/code-examples/with-opencode.md +61 -61
  27. package/.docs/organized/code-examples/with-react-hook-form.md +14 -12
  28. package/.docs/organized/code-examples/with-react-ink.md +2 -2
  29. package/.docs/organized/code-examples/with-react-router.md +11 -9
  30. package/.docs/organized/code-examples/with-resumable-stream.md +10 -9
  31. package/.docs/organized/code-examples/with-store.md +14 -12
  32. package/.docs/organized/code-examples/with-tanstack.md +8 -9
  33. package/.docs/organized/code-examples/with-tap-runtime.md +21 -19
  34. package/.docs/raw/docs/(docs)/architecture.mdx +43 -2
  35. package/.docs/raw/docs/(docs)/cli.mdx +1 -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)/installation.mdx +1 -1
  39. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +5 -1
  40. package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +14 -14
  41. package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +11 -1
  42. package/.docs/raw/docs/(reference)/api-reference/generative-ui/index.mdx +18 -0
  43. package/.docs/raw/docs/(reference)/api-reference/generative-ui/rendering.mdx +33 -0
  44. package/.docs/raw/docs/(reference)/api-reference/generative-ui/spec.mdx +45 -0
  45. package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +41 -41
  46. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +19 -1
  47. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +122 -122
  48. package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +32 -2
  49. package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +6 -0
  50. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +4 -6
  51. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +30 -0
  52. package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +20 -3
  53. package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +8 -8
  54. package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +52 -4
  55. package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +6 -7
  56. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +58 -46
  57. package/.docs/raw/docs/cloud/ai-sdk.mdx +0 -2
  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/hooks.mdx +98 -85
  65. package/.docs/raw/docs/ink/migration.mdx +1 -1
  66. package/.docs/raw/docs/ink/primitives.mdx +2 -2
  67. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +1 -1
  68. package/.docs/raw/docs/integrations/index.mdx +2 -2
  69. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +17 -2
  70. package/.docs/raw/docs/migrations/toolkit-tools.mdx +226 -0
  71. package/.docs/raw/docs/primitives/chain-of-thought.mdx +10 -16
  72. package/.docs/raw/docs/primitives/message.mdx +9 -10
  73. package/.docs/raw/docs/react-native/hooks.mdx +57 -82
  74. package/.docs/raw/docs/react-native/migration.mdx +1 -1
  75. package/.docs/raw/docs/react-native/primitives.mdx +2 -2
  76. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +3 -0
  77. package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +122 -1
  78. package/.docs/raw/docs/runtimes/concepts/threads.mdx +7 -1
  79. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +18 -7
  80. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +108 -38
  81. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +2 -2
  82. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +1 -1
  83. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +64 -50
  84. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +98 -86
  85. package/.docs/raw/docs/tools/backend.mdx +136 -0
  86. package/.docs/raw/docs/tools/defining-tools.mdx +413 -0
  87. package/.docs/raw/docs/tools/dynamic-tools.mdx +110 -0
  88. package/.docs/raw/docs/tools/generative-ui.mdx +214 -0
  89. package/.docs/raw/docs/tools/index.mdx +76 -0
  90. package/.docs/raw/docs/{guides → tools}/interactables.mdx +1 -1
  91. package/.docs/raw/docs/{integrations/tools → tools}/mcp.mdx +77 -50
  92. package/.docs/raw/docs/{guides → tools}/multi-agent.mdx +17 -19
  93. package/.docs/raw/docs/tools/tool-ui.mdx +967 -0
  94. package/.docs/raw/docs/{integrations/tools/react-mcp.mdx → tools/user-managed-mcp.mdx} +3 -3
  95. package/.docs/raw/docs/ui/directive-text.mdx +3 -3
  96. package/.docs/raw/docs/ui/mcp-config.mdx +4 -4
  97. package/.docs/raw/docs/ui/part-grouping.mdx +84 -50
  98. package/.docs/raw/docs/ui/reasoning.mdx +4 -5
  99. package/.docs/raw/docs/ui/tool-group.mdx +5 -6
  100. package/.docs/raw/docs/utilities/heat-graph.mdx +1 -1
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/prepare-docs/code-examples.d.ts.map +1 -1
  103. package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
  104. package/dist/utils/paths.d.ts.map +1 -1
  105. package/package.json +3 -3
  106. package/.docs/organized/code-examples/with-parent-id-grouping.md +0 -596
  107. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +0 -151
  108. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +0 -230
  109. package/.docs/raw/docs/guides/generative-ui.mdx +0 -142
  110. package/.docs/raw/docs/guides/tool-ui.mdx +0 -858
  111. package/.docs/raw/docs/guides/tools.mdx +0 -736
  112. /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,18 +568,19 @@ 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.67",
572
572
  "@assistant-ui/cloud-ai-sdk": "workspace:*",
573
- "ai": "^6.0.188",
573
+ "ai": "^6.0.193",
574
574
  "class-variance-authority": "^0.7.1",
575
575
  "clsx": "^2.1.1",
576
- "lucide-react": "^1.16.0",
576
+ "lucide-react": "^1.17.0",
577
577
  "next": "^16.2.6",
578
578
  "react": "^19.2.6",
579
579
  "react-dom": "^19.2.6",
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
586
  "@types/node": "^25.9.1",
@@ -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,21 +328,22 @@ 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.67",
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.193",
336
337
  "class-variance-authority": "^0.7.1",
337
338
  "clsx": "^2.1.1",
338
- "lucide-react": "^1.16.0",
339
+ "lucide-react": "^1.17.0",
339
340
  "next": "^16.2.6",
340
341
  "react": "^19.2.6",
341
342
  "react-dom": "^19.2.6",
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
349
  "@types/node": "^25.9.1",
@@ -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,16 +460,16 @@ 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.67",
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.193",
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
+ "lucide-react": "^1.17.0",
472
473
  "next": "^16.2.6",
473
474
  "react": "^19.2.6",
474
475
  "react-dom": "^19.2.6",
@@ -476,6 +477,7 @@ export default nextConfig;
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
483
  "@types/node": "^25.9.1",
@@ -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,19 +439,19 @@ 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.67",
443
+ "@ai-sdk/react": "^3.0.195",
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.193",
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",
453
+ "lucide-react": "^1.17.0",
454
+ "motion": "^12.40.0",
454
455
  "next": "^16.2.6",
455
456
  "postcss": "^8.5.15",
456
457
  "react": "^19.2.6",
@@ -460,6 +461,7 @@ export default nextConfig;
460
461
  "zod": "^4.4.3"
461
462
  },
462
463
  "devDependencies": {
464
+ "@assistant-ui/next": "workspace:*",
463
465
  "@assistant-ui/x-buildutils": "workspace:*",
464
466
  "@types/node": "^25.9.1",
465
467
  "@types/react": "^19.2.15",
@@ -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,19 +562,19 @@ 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.67",
566
+ "@ai-sdk/react": "^3.0.195",
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.193",
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",
576
+ "lucide-react": "^1.17.0",
577
+ "motion": "^12.40.0",
578
578
  "next": "^16.2.6",
579
579
  "postcss": "^8.5.15",
580
580
  "react": "^19.2.6",
@@ -584,6 +584,7 @@ export default nextConfig;
584
584
  "zod": "^4.4.3"
585
585
  },
586
586
  "devDependencies": {
587
+ "@assistant-ui/next": "workspace:*",
587
588
  "@assistant-ui/x-buildutils": "workspace:*",
588
589
  "@types/node": "^25.9.1",
589
590
  "@types/react": "^19.2.15",
@@ -219,6 +219,7 @@ import {
219
219
  Platform,
220
220
  StyleSheet,
221
221
  useColorScheme,
222
+ type TextStyle,
222
223
  } from "react-native";
223
224
  import { Ionicons } from "@expo/vector-icons";
224
225
  import * as ImagePicker from "expo-image-picker";
@@ -402,11 +403,11 @@ const styles = StyleSheet.create({
402
403
  maxHeight: 120,
403
404
  alignSelf: "center",
404
405
  paddingVertical: 0,
405
- ...Platform.select({
406
+ ...(Platform.select({
406
407
  web: { paddingHorizontal: 4, outlineStyle: "none" },
407
408
  default: {},
408
- }),
409
- },
409
+ }) as object),
410
+ } as TextStyle,
410
411
  button: {
411
412
  width: 30,
412
413
  height: 30,
@@ -418,6 +419,7 @@ const styles = StyleSheet.create({
418
419
  stopButton: {
419
420
  backgroundColor: "#ff453a",
420
421
  },
422
+ sendButton: {},
421
423
  stopIcon: {
422
424
  width: 12,
423
425
  height: 12,
@@ -1466,7 +1468,7 @@ import { FlatList, View, StyleSheet, useColorScheme } from "react-native";
1466
1468
  import { useSafeAreaInsets } from "react-native-safe-area-context";
1467
1469
  import { useAui, useAuiState } from "@assistant-ui/react-native";
1468
1470
  import { ThreadListItem } from "./ThreadListItem";
1469
- import type { DrawerContentComponentProps } from "@react-navigation/drawer";
1471
+ import type { DrawerContentComponentProps } from "expo-router/build/react-navigation/drawer/types";
1470
1472
 
1471
1473
  export function ThreadListDrawer({ navigation }: DrawerContentComponentProps) {
1472
1474
  const aui = useAui();
@@ -1684,12 +1686,12 @@ export function IconSymbol({
1684
1686
  // Fallback for using MaterialIcons on Android and web.
1685
1687
 
1686
1688
  import MaterialIcons from "@expo/vector-icons/MaterialIcons";
1687
- import type { SymbolWeight, SymbolViewProps } from "expo-symbols";
1689
+ import type { SymbolWeight, SFSymbol } from "expo-symbols";
1688
1690
  import type { ComponentProps } from "react";
1689
1691
  import type { OpaqueColorValue, StyleProp, TextStyle } from "react-native";
1690
1692
 
1691
1693
  type IconMapping = Record<
1692
- SymbolViewProps["name"],
1694
+ SFSymbol,
1693
1695
  ComponentProps<typeof MaterialIcons>["name"]
1694
1696
  >;
1695
1697
  type IconSymbolName = keyof typeof MAPPING;
@@ -1869,7 +1871,8 @@ export function useThemeColor(
1869
1871
  props: { light?: string; dark?: string },
1870
1872
  colorName: keyof typeof Colors.light & keyof typeof Colors.dark,
1871
1873
  ) {
1872
- const theme = useColorScheme() ?? "light";
1874
+ const scheme = useColorScheme();
1875
+ const theme: "light" | "dark" = scheme === "dark" ? "dark" : "light";
1873
1876
  const colorFromProps = props[theme];
1874
1877
 
1875
1878
  if (colorFromProps) {
@@ -1944,30 +1947,31 @@ module.exports = config;
1944
1947
  "export:web": "expo export --platform web && node scripts/flatten-assets.mjs"
1945
1948
  },
1946
1949
  "dependencies": {
1947
- "@ai-sdk/openai": "^3.0.64",
1948
- "@ai-sdk/react": "^3.0.190",
1950
+ "@ai-sdk/openai": "^3.0.67",
1951
+ "@ai-sdk/react": "^3.0.195",
1949
1952
  "@assistant-ui/react-ai-sdk": "workspace:*",
1950
1953
  "@assistant-ui/react-native": "workspace:*",
1951
1954
  "@expo/vector-icons": "^15.1.1",
1952
1955
  "@react-navigation/drawer": "7.9.4",
1953
1956
  "@react-navigation/native": "7.1.33",
1954
- "ai": "^6.0.188",
1955
- "expo": "~56.0.4",
1956
- "expo-constants": "~56.0.15",
1957
+ "ai": "^6.0.193",
1958
+ "expo": "~56.0.8",
1959
+ "expo-constants": "~56.0.16",
1957
1960
  "expo-font": "~56.0.5",
1958
- "expo-image-picker": "~56.0.13",
1959
- "expo-linking": "~56.0.11",
1960
- "expo-router": "~56.2.6",
1961
+ "expo-image-picker": "~56.0.15",
1962
+ "expo-linking": "~56.0.13",
1963
+ "expo-router": "~56.2.8",
1961
1964
  "expo-server": "~56.0.4",
1962
1965
  "expo-splash-screen": "~56.0.10",
1963
1966
  "expo-status-bar": "~56.0.4",
1967
+ "expo-symbols": "^56.0.5",
1964
1968
  "expo-system-ui": "~56.0.5",
1965
1969
  "react": "19.2.3",
1966
1970
  "react-dom": "19.2.3",
1967
1971
  "react-native": "0.85.3",
1968
- "react-native-gesture-handler": "~2.31.2",
1972
+ "react-native-gesture-handler": "~3.0.0",
1969
1973
  "react-native-reanimated": "4.3.1",
1970
- "react-native-safe-area-context": "~5.7.0",
1974
+ "react-native-safe-area-context": "~5.8.0",
1971
1975
  "react-native-screens": "4.25.2",
1972
1976
  "react-native-web": "~0.21.2",
1973
1977
  "react-native-worklets": "0.8.3",
@@ -2058,6 +2062,8 @@ Join our community of developers creating universal apps.
2058
2062
 
2059
2063
  ```json
2060
2064
  {
2065
+ "$schema": "https://openapi.vercel.sh/vercel.json",
2066
+ "ignoreCommand": "bash ../../scripts/vercel-ignore-changeset-release.sh",
2061
2067
  "buildCommand": "cd ../.. && pnpm turbo build --filter=@assistant-ui/react-native --filter=@assistant-ui/react-ai-sdk && cd examples/with-expo && pnpm run export:web",
2062
2068
  "outputDirectory": "dist",
2063
2069
  "framework": null
@@ -290,13 +290,14 @@ export default function Home() {
290
290
  ## next.config.ts
291
291
 
292
292
  ```typescript
293
+ import { withAui } from "@assistant-ui/next";
293
294
  import type { NextConfig } from "next";
294
295
 
295
296
  const nextConfig: NextConfig = {
296
297
  /* config options here */
297
298
  };
298
299
 
299
- export default nextConfig;
300
+ export default withAui(nextConfig);
300
301
 
301
302
  ```
302
303
 
@@ -319,13 +320,14 @@ export default nextConfig;
319
320
  "@assistant-ui/ui": "workspace:*",
320
321
  "class-variance-authority": "^0.7.1",
321
322
  "clsx": "^2.1.1",
322
- "lucide-react": "^1.16.0",
323
+ "lucide-react": "^1.17.0",
323
324
  "next": "^16.2.6",
324
325
  "react": "^19.2.6",
325
326
  "react-dom": "^19.2.6",
326
327
  "tailwind-merge": "^3.6.0"
327
328
  },
328
329
  "devDependencies": {
330
+ "@assistant-ui/next": "workspace:*",
329
331
  "@assistant-ui/x-buildutils": "workspace:*",
330
332
  "@tailwindcss/postcss": "^4.3.0",
331
333
  "@types/node": "^25.9.1",