@assistant-ui/mcp-docs-server 0.2.0 → 0.2.1

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 (126) hide show
  1. package/.docs/organized/code-examples/waterfall.md +12 -13
  2. package/.docs/organized/code-examples/with-a2a.md +16 -11
  3. package/.docs/organized/code-examples/with-ag-ui.md +14 -12
  4. package/.docs/organized/code-examples/with-ai-sdk-v7.md +13 -12
  5. package/.docs/organized/code-examples/with-artifacts.md +13 -12
  6. package/.docs/organized/code-examples/with-assistant-transport.md +19 -27
  7. package/.docs/organized/code-examples/with-browser-extension.md +17 -10
  8. package/.docs/organized/code-examples/with-chain-of-thought.md +16 -14
  9. package/.docs/organized/code-examples/with-cloud-standalone.md +9 -10
  10. package/.docs/organized/code-examples/with-cloud.md +18 -13
  11. package/.docs/organized/code-examples/with-custom-thread-list.md +13 -12
  12. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +13 -13
  13. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +17 -15
  14. package/.docs/organized/code-examples/with-eve.md +65 -11
  15. package/.docs/organized/code-examples/with-expo.md +20 -19
  16. package/.docs/organized/code-examples/with-external-store.md +16 -11
  17. package/.docs/organized/code-examples/with-ffmpeg.md +20 -14
  18. package/.docs/organized/code-examples/with-generative-ui.md +16 -17
  19. package/.docs/organized/code-examples/with-google-adk.md +17 -12
  20. package/.docs/organized/code-examples/with-heat-graph.md +6 -7
  21. package/.docs/organized/code-examples/with-image-generation.md +9 -10
  22. package/.docs/organized/code-examples/with-interactables.md +13 -12
  23. package/.docs/organized/code-examples/with-langchain.md +7 -8
  24. package/.docs/organized/code-examples/with-langgraph.md +17 -11
  25. package/.docs/organized/code-examples/with-livekit.md +12 -12
  26. package/.docs/organized/code-examples/with-mcp.md +13 -14
  27. package/.docs/organized/code-examples/with-nuxt.md +2492 -0
  28. package/.docs/organized/code-examples/with-opencode.md +23 -14
  29. package/.docs/organized/code-examples/with-pi.md +59 -57
  30. package/.docs/organized/code-examples/with-react-hook-form.md +14 -13
  31. package/.docs/organized/code-examples/with-react-ink-web.md +7 -8
  32. package/.docs/organized/code-examples/with-react-ink.md +5 -5
  33. package/.docs/organized/code-examples/with-react-router.md +15 -9
  34. package/.docs/organized/code-examples/with-resumable-stream.md +11 -12
  35. package/.docs/organized/code-examples/with-store.md +27 -16
  36. package/.docs/organized/code-examples/with-tanstack.md +18 -12
  37. package/.docs/organized/code-examples/with-tap-runtime.md +15 -15
  38. package/.docs/organized/code-examples/with-virtualized-thread.md +8 -9
  39. package/.docs/organized/code-examples/with-vue.md +408 -0
  40. package/.docs/raw/docs/(docs)/cli.mdx +1 -1
  41. package/.docs/raw/docs/(docs)/index.mdx +9 -76
  42. package/.docs/raw/docs/(docs)/installation.mdx +4 -18
  43. package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +24 -4
  44. package/.docs/raw/docs/(reference)/api-reference/integrations/eve.mdx +8 -0
  45. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +24 -1
  46. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +1 -1
  47. package/.docs/raw/docs/cloud/ai-sdk.mdx +2 -2
  48. package/.docs/raw/docs/copilots/model-context.mdx +4 -3
  49. package/.docs/raw/docs/copilots/motivation.mdx +4 -4
  50. package/.docs/raw/docs/guides/chain-of-thought.mdx +1 -1
  51. package/.docs/raw/docs/guides/electron.mdx +1 -1
  52. package/.docs/raw/docs/guides/resumable-streams.mdx +74 -3
  53. package/.docs/raw/docs/guides/suggestions.mdx +9 -9
  54. package/.docs/raw/docs/ink/hooks.mdx +9 -4
  55. package/.docs/raw/docs/ink/primitives.mdx +4 -3
  56. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +16 -0
  57. package/.docs/raw/docs/integrations/auth/better-auth.mdx +1 -1
  58. package/.docs/raw/docs/integrations/auth/clerk.mdx +1 -1
  59. package/.docs/raw/docs/integrations/auth/next-auth.mdx +1 -1
  60. package/.docs/raw/docs/integrations/frameworks/cloudflare-agents/overview.mdx +1 -1
  61. package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +2 -2
  62. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +1 -1
  63. package/.docs/raw/docs/integrations/gateways/index.mdx +2 -2
  64. package/.docs/raw/docs/integrations/observability/helicone.mdx +2 -2
  65. package/.docs/raw/docs/integrations/observability/langfuse.mdx +1 -1
  66. package/.docs/raw/docs/integrations/observability/langsmith.mdx +2 -2
  67. package/.docs/raw/docs/migrations/toolkit-tools.mdx +15 -13
  68. package/.docs/raw/docs/migrations/v0-15.mdx +84 -4
  69. package/.docs/raw/docs/primitives/attachment.mdx +2 -2
  70. package/.docs/raw/docs/primitives/composer.mdx +2 -2
  71. package/.docs/raw/docs/primitives/message.mdx +33 -1
  72. package/.docs/raw/docs/primitives/suggestion.mdx +1 -1
  73. package/.docs/raw/docs/react-native/hooks.mdx +14 -4
  74. package/.docs/raw/docs/react-native/index.mdx +1 -1
  75. package/.docs/raw/docs/react-native/primitives.mdx +2 -2
  76. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +1 -1
  77. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +1 -1
  78. package/.docs/raw/docs/runtimes/ai-sdk/v6-legacy.mdx +9 -10
  79. package/.docs/raw/docs/runtimes/ai-sdk/v7.mdx +9 -10
  80. package/.docs/raw/docs/runtimes/concepts/threads.mdx +40 -1
  81. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +18 -0
  82. package/.docs/raw/docs/runtimes/custom/external-store.mdx +30 -1
  83. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +36 -9
  84. package/.docs/raw/docs/runtimes/eve/overview.mdx +51 -0
  85. package/.docs/raw/docs/runtimes/eve/quickstart.mdx +51 -2
  86. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +9 -12
  87. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +1 -1
  88. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +7 -7
  89. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +4 -4
  90. package/.docs/raw/docs/runtimes/opencode/hooks.mdx +1 -0
  91. package/.docs/raw/docs/runtimes/opencode/overview.mdx +10 -0
  92. package/.docs/raw/docs/tools/backend.mdx +2 -2
  93. package/.docs/raw/docs/tools/defining-tools.mdx +9 -7
  94. package/.docs/raw/docs/tools/dynamic-tools.mdx +6 -4
  95. package/.docs/raw/docs/tools/interactables-legacy.mdx +24 -11
  96. package/.docs/raw/docs/tools/interactables.mdx +24 -13
  97. package/.docs/raw/docs/tools/mcp-apps.mdx +35 -6
  98. package/.docs/raw/docs/tools/mcp.mdx +9 -7
  99. package/.docs/raw/docs/tools/tool-ui.mdx +26 -22
  100. package/.docs/raw/docs/tools/user-managed-mcp.mdx +12 -7
  101. package/.docs/raw/docs/ui/file.mdx +6 -1
  102. package/.docs/raw/docs/ui/mcp-config.mdx +8 -3
  103. package/.docs/raw/docs/ui/model-selector.mdx +8 -8
  104. package/.docs/raw/docs/ui/part-grouping.mdx +1 -1
  105. package/.docs/raw/docs/ui/thread.mdx +24 -5
  106. package/.docs/raw/docs/utilities/react-o11y.mdx +7 -9
  107. package/dist/constants.js +2 -2
  108. package/dist/constants.js.map +1 -1
  109. package/dist/index.js.map +1 -1
  110. package/dist/prepare-docs/prepare.js.map +1 -1
  111. package/dist/tools/docs.js +4 -2
  112. package/dist/tools/docs.js.map +1 -1
  113. package/dist/tools/examples.js +2 -1
  114. package/dist/tools/examples.js.map +1 -1
  115. package/dist/tools/resources.js +2 -1
  116. package/dist/tools/resources.js.map +1 -1
  117. package/dist/tools/tests/test-setup.js +2 -1
  118. package/dist/tools/tests/test-setup.js.map +1 -1
  119. package/dist/tools/xulux-templates.js +4 -2
  120. package/dist/tools/xulux-templates.js.map +1 -1
  121. package/dist/utils/mdx.js +2 -1
  122. package/dist/utils/mdx.js.map +1 -1
  123. package/dist/xulux/catalog-client.js +1 -1
  124. package/dist/xulux/catalog-client.js.map +1 -1
  125. package/package.json +4 -4
  126. package/src/tools/tests/docs.test.ts +2 -2
@@ -188,7 +188,12 @@ export default function RootLayout({
188
188
  ```tsx
189
189
  "use client";
190
190
 
191
- import { AssistantRuntimeProvider, Tools, useAui } from "@assistant-ui/react";
191
+ import {
192
+ AssistantRuntimeProvider,
193
+ AuiConfig,
194
+ Tools,
195
+ useAui,
196
+ } from "@assistant-ui/react";
192
197
  import {
193
198
  SidebarInset,
194
199
  SidebarProvider,
@@ -211,6 +216,12 @@ import { ToolGroup } from "@/components/tools/tool-group";
211
216
  import toolkit from "@/components/tools/toolkit";
212
217
  import { useEffect } from "react";
213
218
 
219
+ const SetFallbackDataUI = () => {
220
+ const aui = useAui();
221
+ useEffect(() => aui.dataRenderers.setFallbackDataUI(OpenCodeDataPart), [aui]);
222
+ return null;
223
+ };
224
+
214
225
  const THREAD_COMPONENTS: ThreadComponents = {
215
226
  ToolFallback: FallbackTool,
216
227
  ToolGroup,
@@ -223,14 +234,13 @@ export default function Home() {
223
234
  process.env.NEXT_PUBLIC_OPENCODE_BASE_URL ?? "http://localhost:4096",
224
235
  });
225
236
 
226
- const aui = useAui({
237
+ const config = AuiConfig({
227
238
  tools: Tools({ toolkit }),
228
239
  });
229
240
 
230
- useEffect(() => aui.dataRenderers.setFallbackDataUI(OpenCodeDataPart), [aui]);
231
-
232
241
  return (
233
- <AssistantRuntimeProvider aui={aui} runtime={runtime}>
242
+ <AssistantRuntimeProvider config={config} runtime={runtime}>
243
+ <SetFallbackDataUI />
234
244
  <SidebarProvider>
235
245
  <div className="flex h-dvh w-full overflow-hidden pr-0.5">
236
246
  <ThreadListSidebar />
@@ -1889,11 +1899,11 @@ export default withAui(nextConfig);
1889
1899
  "@assistant-ui/react-markdown": "workspace:*",
1890
1900
  "@assistant-ui/react-opencode": "workspace:*",
1891
1901
  "@assistant-ui/ui": "workspace:*",
1892
- "@pierre/diffs": "^1.2.12",
1902
+ "@pierre/diffs": "^1.3.5",
1893
1903
  "class-variance-authority": "^0.7.1",
1894
1904
  "clsx": "^2.1.1",
1895
- "lucide-react": "^1.26.0",
1896
- "next": "^16.2.11",
1905
+ "lucide-react": "^1.29.0",
1906
+ "next": "^16.3.0",
1897
1907
  "react": "^19.2.8",
1898
1908
  "react-dom": "^19.2.8",
1899
1909
  "tailwind-merge": "^3.6.0",
@@ -1903,14 +1913,13 @@ export default withAui(nextConfig);
1903
1913
  "@assistant-ui/next": "workspace:*",
1904
1914
  "@assistant-ui/x-buildutils": "workspace:*",
1905
1915
  "@tailwindcss/postcss": "^4.3.3",
1906
- "@types/node": "^26.1.1",
1907
- "@types/react": "^19.2.17",
1908
- "@types/react-dom": "^19.2.3",
1909
- "postcss": "^8.5.23",
1916
+ "@types/node": "^26.1.2",
1917
+ "@types/react": "^19.2.18",
1918
+ "@types/react-dom": "^19.2.4",
1919
+ "postcss": "^8.5.26",
1910
1920
  "tailwindcss": "^4.3.3",
1911
1921
  "tw-animate-css": "^1.4.0",
1912
- "typescript": "npm:@typescript/typescript6@^6.0.2",
1913
- "typescript-7": "npm:typescript@^7.0.2"
1922
+ "typescript": "^7.0.2"
1914
1923
  }
1915
1924
  }
1916
1925
 
@@ -727,6 +727,7 @@ import { useModelSelectorEfforts } from "@/components/assistant-ui/model-selecto
727
727
  import {
728
728
  Tooltip,
729
729
  TooltipContent,
730
+ TooltipProvider,
730
731
  TooltipTrigger,
731
732
  } from "@/components/ui/radix/tooltip";
732
733
  import { cn } from "@/lib/utils";
@@ -764,54 +765,56 @@ export const ThinkingLevelSlider = ({
764
765
  return (
765
766
  <div className="flex items-center justify-between gap-3 border-t px-3 py-2">
766
767
  <span className="text-muted-foreground text-xs">{label}</span>
767
- <div
768
- role="radiogroup"
769
- aria-label={label}
770
- className="flex items-end"
771
- onKeyDown={(event) => {
772
- if (event.key === "ArrowRight" || event.key === "ArrowUp") {
773
- selectIndex(event, activeIndex + 1);
774
- } else if (event.key === "ArrowLeft" || event.key === "ArrowDown") {
775
- selectIndex(event, activeIndex - 1);
776
- } else if (event.key === "Home") {
777
- selectIndex(event, 0);
778
- } else if (event.key === "End") {
779
- selectIndex(event, lastIndex);
780
- }
781
- }}
782
- >
783
- {efforts.map((option, index) => {
784
- const isActive = index === activeIndex;
785
- return (
786
- <Tooltip key={option.id} disableHoverableContent>
787
- <TooltipTrigger asChild>
788
- <button
789
- type="button"
790
- role="radio"
791
- aria-checked={isActive}
792
- aria-label={option.name}
793
- tabIndex={index === Math.max(activeIndex, 0) ? 0 : -1}
794
- data-state={isActive ? "on" : "off"}
795
- onClick={() => setEffort(option.id)}
796
- className="group focus-visible:ring-ring/50 flex h-6 w-3.5 items-end justify-center rounded-sm outline-none focus-visible:ring-2"
797
- >
798
- <span
799
- className={cn(
800
- "rounded-full transition-all duration-150 ease-out",
801
- isActive
802
- ? "bg-primary h-4.5 w-0.5"
803
- : "bg-muted-foreground/40 group-hover:bg-foreground/70 h-2.5 w-0.5 group-hover:h-4 group-hover:w-[3px] group-focus-visible:h-4 group-focus-visible:w-[3px]",
804
- )}
805
- />
806
- </button>
807
- </TooltipTrigger>
808
- <TooltipContent side="top" sideOffset={2}>
809
- {option.name}
810
- </TooltipContent>
811
- </Tooltip>
812
- );
813
- })}
814
- </div>
768
+ <TooltipProvider>
769
+ <div
770
+ role="radiogroup"
771
+ aria-label={label}
772
+ className="flex items-end"
773
+ onKeyDown={(event) => {
774
+ if (event.key === "ArrowRight" || event.key === "ArrowUp") {
775
+ selectIndex(event, activeIndex + 1);
776
+ } else if (event.key === "ArrowLeft" || event.key === "ArrowDown") {
777
+ selectIndex(event, activeIndex - 1);
778
+ } else if (event.key === "Home") {
779
+ selectIndex(event, 0);
780
+ } else if (event.key === "End") {
781
+ selectIndex(event, lastIndex);
782
+ }
783
+ }}
784
+ >
785
+ {efforts.map((option, index) => {
786
+ const isActive = index === activeIndex;
787
+ return (
788
+ <Tooltip key={option.id} disableHoverableContent>
789
+ <TooltipTrigger asChild>
790
+ <button
791
+ type="button"
792
+ role="radio"
793
+ aria-checked={isActive}
794
+ aria-label={option.name}
795
+ tabIndex={index === Math.max(activeIndex, 0) ? 0 : -1}
796
+ data-state={isActive ? "on" : "off"}
797
+ onClick={() => setEffort(option.id)}
798
+ className="group focus-visible:ring-ring/50 flex h-6 w-3.5 items-end justify-center rounded-sm outline-none focus-visible:ring-2"
799
+ >
800
+ <span
801
+ className={cn(
802
+ "rounded-full transition-all duration-150 ease-out",
803
+ isActive
804
+ ? "bg-primary h-4.5 w-0.5"
805
+ : "bg-muted-foreground/40 group-hover:bg-foreground/70 h-2.5 w-0.5 group-hover:h-4 group-hover:w-[3px] group-focus-visible:h-4 group-focus-visible:w-[3px]",
806
+ )}
807
+ />
808
+ </button>
809
+ </TooltipTrigger>
810
+ <TooltipContent side="top" sideOffset={2}>
811
+ {option.name}
812
+ </TooltipContent>
813
+ </Tooltip>
814
+ );
815
+ })}
816
+ </div>
817
+ </TooltipProvider>
815
818
  <span className="text-foreground min-w-12 text-end text-xs">
816
819
  {efforts[activeIndex]?.name}
817
820
  </span>
@@ -1958,11 +1961,11 @@ export default withAui(nextConfig);
1958
1961
  "@assistant-ui/react-markdown": "workspace:*",
1959
1962
  "@assistant-ui/react-pi": "workspace:*",
1960
1963
  "@assistant-ui/ui": "workspace:*",
1961
- "@earendil-works/pi-coding-agent": "^0.82.0",
1964
+ "@earendil-works/pi-coding-agent": "^0.84.1",
1962
1965
  "class-variance-authority": "^0.7.1",
1963
1966
  "clsx": "^2.1.1",
1964
- "lucide-react": "^1.26.0",
1965
- "next": "^16.2.11",
1967
+ "lucide-react": "^1.29.0",
1968
+ "next": "^16.3.0",
1966
1969
  "radix-ui": "^1.6.7",
1967
1970
  "react": "^19.2.8",
1968
1971
  "react-dom": "^19.2.8",
@@ -1972,14 +1975,13 @@ export default withAui(nextConfig);
1972
1975
  "@assistant-ui/next": "workspace:*",
1973
1976
  "@assistant-ui/x-buildutils": "workspace:*",
1974
1977
  "@tailwindcss/postcss": "^4.3.3",
1975
- "@types/node": "^26.1.1",
1976
- "@types/react": "^19.2.17",
1977
- "@types/react-dom": "^19.2.3",
1978
- "postcss": "^8.5.23",
1978
+ "@types/node": "^26.1.2",
1979
+ "@types/react": "^19.2.18",
1980
+ "@types/react-dom": "^19.2.4",
1981
+ "postcss": "^8.5.26",
1979
1982
  "tailwindcss": "^4.3.3",
1980
1983
  "tw-animate-css": "^1.4.0",
1981
- "typescript": "npm:@typescript/typescript6@^6.0.2",
1982
- "typescript-7": "npm:typescript@^7.0.2"
1984
+ "typescript": "^7.0.2"
1983
1985
  }
1984
1986
  }
1985
1987
 
@@ -248,6 +248,7 @@ import {
248
248
  useAssistantInstructions,
249
249
  useAui,
250
250
  AuiProvider,
251
+ AuiConfig,
251
252
  Suggestions,
252
253
  } from "@assistant-ui/react";
253
254
 
@@ -292,7 +293,8 @@ export default function Home() {
292
293
  },
293
294
  });
294
295
 
295
- const aui = useAui({
296
+ const aui = useAui();
297
+ const config = AuiConfig({
296
298
  suggestions: Suggestions([
297
299
  {
298
300
  title: "Fill out the form",
@@ -309,7 +311,7 @@ export default function Home() {
309
311
  });
310
312
 
311
313
  return (
312
- <AuiProvider value={aui}>
314
+ <AuiProvider extends={aui} config={config}>
313
315
  <ResizablePanelGroup orientation="horizontal">
314
316
  <ResizablePanel defaultSize={60} minSize={40} style={panelStyle}>
315
317
  <div className="bg-muted/30 h-full overflow-y-auto">
@@ -615,34 +617,33 @@ export default withAui(nextConfig);
615
617
  "start": "next start"
616
618
  },
617
619
  "dependencies": {
618
- "@ai-sdk/openai": "^4.0.20",
620
+ "@ai-sdk/openai": "^4.0.34",
619
621
  "@assistant-ui/react": "workspace:*",
620
622
  "@assistant-ui/react-ai-sdk": "workspace:*",
621
623
  "@assistant-ui/react-hook-form": "workspace:*",
622
624
  "@assistant-ui/react-markdown": "workspace:*",
623
625
  "@assistant-ui/ui": "workspace:*",
624
- "ai": "^7.0.37",
626
+ "ai": "^7.0.56",
625
627
  "class-variance-authority": "^0.7.1",
626
628
  "clsx": "^2.1.1",
627
- "lucide-react": "^1.26.0",
628
- "next": "^16.2.11",
629
+ "lucide-react": "^1.29.0",
630
+ "next": "^16.3.0",
629
631
  "react": "^19.2.8",
630
632
  "react-dom": "^19.2.8",
631
- "react-hook-form": "^7.83.0",
633
+ "react-hook-form": "^7.84.0",
632
634
  "tailwind-merge": "^3.6.0"
633
635
  },
634
636
  "devDependencies": {
635
637
  "@assistant-ui/next": "workspace:*",
636
638
  "@assistant-ui/x-buildutils": "workspace:*",
637
639
  "@tailwindcss/postcss": "^4.3.3",
638
- "@types/node": "^26.1.1",
639
- "@types/react": "^19.2.17",
640
- "@types/react-dom": "^19.2.3",
641
- "postcss": "^8.5.23",
640
+ "@types/node": "^26.1.2",
641
+ "@types/react": "^19.2.18",
642
+ "@types/react-dom": "^19.2.4",
643
+ "postcss": "^8.5.26",
642
644
  "tailwindcss": "^4.3.3",
643
645
  "tw-animate-css": "^1.4.0",
644
- "typescript": "npm:@typescript/typescript6@^6.0.2",
645
- "typescript-7": "npm:typescript@^7.0.2"
646
+ "typescript": "^7.0.2"
646
647
  }
647
648
  }
648
649
 
@@ -554,22 +554,21 @@ export default config;
554
554
  "@assistant-ui/react-ai-sdk": "workspace:*",
555
555
  "@assistant-ui/react-ink": "workspace:*",
556
556
  "@assistant-ui/react-ink-markdown": "workspace:*",
557
- "@wterm/dom": "^0.3.0",
558
- "@wterm/react": "^0.3.0",
559
- "ai": "^7.0.37",
557
+ "@wterm/dom": "^0.3.2",
558
+ "@wterm/react": "^0.3.2",
559
+ "ai": "^7.0.56",
560
560
  "ink": "^7.1.1",
561
561
  "ink-web": "^0.2.0",
562
- "next": "^16.2.11",
562
+ "next": "^16.3.0",
563
563
  "react": "^19.2.8",
564
564
  "react-dom": "^19.2.8",
565
565
  "react-reconciler": "^0.33.0",
566
566
  "scheduler": "^0.27.0"
567
567
  },
568
568
  "devDependencies": {
569
- "@types/node": "^26.1.1",
570
- "@types/react": "^19.2.17",
571
- "typescript": "npm:@typescript/typescript6@^6.0.2",
572
- "typescript-7": "npm:typescript@^7.0.2"
569
+ "@types/node": "^26.1.2",
570
+ "@types/react": "^19.2.18",
571
+ "typescript": "^7.0.2"
573
572
  }
574
573
  }
575
574
 
@@ -20,9 +20,9 @@
20
20
  "react": "^19.2.8"
21
21
  },
22
22
  "devDependencies": {
23
- "@types/react": "^19.2.17",
23
+ "@types/react": "^19.2.18",
24
24
  "esbuild": "^0.28.1",
25
- "tsx": "^4.23.1",
25
+ "tsx": "^4.23.10",
26
26
  "typescript": "^7.0.2"
27
27
  }
28
28
  }
@@ -36,10 +36,10 @@ import { useMemo } from "react";
36
36
  import { Box, Text } from "ink";
37
37
  import {
38
38
  AssistantRuntimeProvider,
39
+ AuiConfig,
39
40
  useLocalRuntime,
40
41
  StatusBarPrimitive,
41
42
  Tools,
42
- useAui,
43
43
  } from "@assistant-ui/react-ink";
44
44
  import { Thread } from "./components/thread.js";
45
45
  import { createScriptedAdapter, MODEL_NAME } from "./scripted-adapter.js";
@@ -57,12 +57,12 @@ const StatusBar = () => (
57
57
  export const App = () => {
58
58
  const adapter = useMemo(() => createScriptedAdapter(), []);
59
59
  const runtime = useLocalRuntime(adapter);
60
- const aui = useAui({
60
+ const config = AuiConfig({
61
61
  tools: Tools({ toolkit }),
62
62
  });
63
63
 
64
64
  return (
65
- <AssistantRuntimeProvider aui={aui} runtime={runtime}>
65
+ <AssistantRuntimeProvider runtime={runtime} config={config}>
66
66
  <Box flexDirection="column" padding={1}>
67
67
  <Box>
68
68
  <Text bold color="cyan">
@@ -686,7 +686,12 @@ export async function action({ request }: Route.ActionArgs) {
686
686
 
687
687
  ```tsx
688
688
  import { Thread } from "@/components/assistant-ui/thread";
689
- import { useAui, AuiProvider, Suggestions } from "@assistant-ui/react";
689
+ import {
690
+ useAui,
691
+ AuiProvider,
692
+ AuiConfig,
693
+ Suggestions,
694
+ } from "@assistant-ui/react";
690
695
 
691
696
  export function meta() {
692
697
  return [
@@ -696,7 +701,8 @@ export function meta() {
696
701
  }
697
702
 
698
703
  function ThreadWithSuggestions() {
699
- const aui = useAui({
704
+ const aui = useAui();
705
+ const config = AuiConfig({
700
706
  suggestions: Suggestions([
701
707
  {
702
708
  title: "Hello!",
@@ -711,7 +717,7 @@ function ThreadWithSuggestions() {
711
717
  ]),
712
718
  });
713
719
  return (
714
- <AuiProvider value={aui}>
720
+ <AuiProvider extends={aui} config={config}>
715
721
  <Thread />
716
722
  </AuiProvider>
717
723
  );
@@ -779,8 +785,8 @@ export default function Home() {
779
785
  "clsx": "^2.1.1",
780
786
  "eventsource-parser": "^3.1.0",
781
787
  "isbot": "^5.2.1",
782
- "lucide-react": "^1.26.0",
783
- "openai": "^6.49.0",
788
+ "lucide-react": "^1.29.0",
789
+ "openai": "^7.4.0",
784
790
  "react": "^19.2.8",
785
791
  "react-dom": "^19.2.8",
786
792
  "react-router": "^8.3.0",
@@ -790,14 +796,14 @@ export default function Home() {
790
796
  "devDependencies": {
791
797
  "@react-router/dev": "^8.3.0",
792
798
  "@tailwindcss/vite": "^4.3.3",
793
- "@types/node": "^26.1.1",
794
- "@types/react": "^19.2.17",
795
- "@types/react-dom": "^19.2.3",
799
+ "@types/node": "^26.1.2",
800
+ "@types/react": "^19.2.18",
801
+ "@types/react-dom": "^19.2.4",
796
802
  "tailwindcss": "^4.3.3",
797
803
  "tw-animate-css": "^1.4.0",
798
804
  "typescript": "npm:@typescript/typescript6@^6.0.2",
799
805
  "typescript-7": "npm:typescript@^7.0.2",
800
- "vite": "^8.1.5",
806
+ "vite": "^8.2.1",
801
807
  "vite-tsconfig-paths": "^6.1.1"
802
808
  }
803
809
  }
@@ -514,23 +514,23 @@ export default withAui(nextConfig);
514
514
  "start": "next start"
515
515
  },
516
516
  "dependencies": {
517
- "@ai-sdk/openai": "^4.0.20",
518
- "@ai-sdk/react": "^4.0.40",
517
+ "@ai-sdk/openai": "^4.0.34",
518
+ "@ai-sdk/react": "^4.0.59",
519
519
  "@assistant-ui/react": "workspace:*",
520
520
  "@assistant-ui/react-ai-sdk": "workspace:*",
521
521
  "@assistant-ui/react-markdown": "workspace:*",
522
522
  "@assistant-ui/store": "workspace:*",
523
523
  "@assistant-ui/tap": "workspace:*",
524
524
  "@assistant-ui/ui": "workspace:*",
525
- "ai": "^7.0.37",
525
+ "ai": "^7.0.56",
526
526
  "assistant-stream": "workspace:*",
527
527
  "class-variance-authority": "^0.7.1",
528
528
  "clsx": "^2.1.1",
529
- "lucide-react": "^1.26.0",
530
- "next": "^16.2.11",
529
+ "lucide-react": "^1.29.0",
530
+ "next": "^16.3.0",
531
531
  "react": "^19.2.8",
532
532
  "react-dom": "^19.2.8",
533
- "redis": "^6.1.0",
533
+ "redis": "^6.2.0",
534
534
  "tailwind-merge": "^3.6.0",
535
535
  "zod": "^4.4.3"
536
536
  },
@@ -538,14 +538,13 @@ export default withAui(nextConfig);
538
538
  "@assistant-ui/next": "workspace:*",
539
539
  "@assistant-ui/x-buildutils": "workspace:*",
540
540
  "@tailwindcss/postcss": "^4.3.3",
541
- "@types/node": "^26.1.1",
542
- "@types/react": "^19.2.17",
543
- "@types/react-dom": "^19.2.3",
544
- "postcss": "^8.5.23",
541
+ "@types/node": "^26.1.2",
542
+ "@types/react": "^19.2.18",
543
+ "@types/react-dom": "^19.2.4",
544
+ "postcss": "^8.5.26",
545
545
  "tailwindcss": "^4.3.3",
546
546
  "tw-animate-css": "^1.4.0",
547
- "typescript": "npm:@typescript/typescript6@^6.0.2",
548
- "typescript-7": "npm:typescript@^7.0.2"
547
+ "typescript": "^7.0.2"
549
548
  }
550
549
  }
551
550
 
@@ -108,6 +108,7 @@ import { useState } from "react";
108
108
  import {
109
109
  useAui,
110
110
  AuiProvider,
111
+ AuiConfig,
111
112
  useAuiState,
112
113
  useAuiEvent,
113
114
  } from "@assistant-ui/store";
@@ -256,13 +257,13 @@ const EventLog = () => {
256
257
  * Note: The fooList scope is also registered in foo-scope.ts as a default,
257
258
  * but we're explicitly passing it here for clarity in the example.
258
259
  */
259
- export const ExampleApp = () => {
260
- const aui = useAui({
261
- fooList: FooListResource({ initialValues: true }),
262
- });
260
+ const config = AuiConfig({
261
+ fooList: FooListResource({ initialValues: true }),
262
+ });
263
263
 
264
+ export const ExampleApp = () => {
264
265
  return (
265
- <AuiProvider value={aui}>
266
+ <AuiProvider config={config}>
266
267
  <div className="space-y-6">
267
268
  <div className="rounded-lg border border-gray-200 bg-white p-4 shadow-sm dark:border-gray-700 dark:bg-gray-800">
268
269
  <div className="flex items-center justify-between">
@@ -345,6 +346,7 @@ import {
345
346
  useAui,
346
347
  useAuiState,
347
348
  AuiProvider,
349
+ AuiConfig,
348
350
  useClientList,
349
351
  Derived,
350
352
  useAssistantEmit,
@@ -425,7 +427,8 @@ const FooProvider = ({
425
427
  index: number;
426
428
  children: ReactNode;
427
429
  }) => {
428
- const aui = useAui({
430
+ const aui = useAui();
431
+ const config = AuiConfig({
429
432
  foo: Derived({
430
433
  source: "fooList",
431
434
  query: { index },
@@ -433,7 +436,11 @@ const FooProvider = ({
433
436
  }),
434
437
  });
435
438
 
436
- return <AuiProvider value={aui}>{children}</AuiProvider>;
439
+ return (
440
+ <AuiProvider extends={aui} config={config}>
441
+ {children}
442
+ </AuiProvider>
443
+ );
437
444
  };
438
445
 
439
446
  export const FooList = ({
@@ -494,7 +501,7 @@ export default withAui(nextConfig);
494
501
  "dependencies": {
495
502
  "@assistant-ui/store": "workspace:*",
496
503
  "@assistant-ui/tap": "workspace:*",
497
- "next": "^16.2.11",
504
+ "next": "^16.3.0",
498
505
  "react": "^19.2.8",
499
506
  "react-dom": "^19.2.8"
500
507
  },
@@ -502,14 +509,13 @@ export default withAui(nextConfig);
502
509
  "@assistant-ui/next": "workspace:*",
503
510
  "@assistant-ui/x-buildutils": "workspace:*",
504
511
  "@tailwindcss/postcss": "^4.3.3",
505
- "@types/node": "^26.1.1",
506
- "@types/react": "^19.2.17",
507
- "@types/react-dom": "^19.2.3",
508
- "postcss": "^8.5.23",
512
+ "@types/node": "^26.1.2",
513
+ "@types/react": "^19.2.18",
514
+ "@types/react-dom": "^19.2.4",
515
+ "postcss": "^8.5.26",
509
516
  "tailwindcss": "^4.3.3",
510
517
  "tw-animate-css": "^1.4.0",
511
- "typescript": "npm:@typescript/typescript6@^6.0.2",
512
- "typescript-7": "npm:typescript@^7.0.2"
518
+ "typescript": "^7.0.2"
513
519
  }
514
520
  }
515
521
 
@@ -615,14 +621,19 @@ const FooListResource = resource(
615
621
 
616
622
  ```typescript
617
623
  const FooProvider = ({ index, children }) => {
618
- const aui = useAui({
624
+ const aui = useAui();
625
+ const config = AuiConfig({
619
626
  foo: Derived({
620
627
  source: "fooList",
621
628
  query: { index },
622
629
  get: (aui) => aui.fooList().foo({ index }),
623
630
  }),
624
631
  });
625
- return <AuiProvider value={aui}>{children}</AuiProvider>;
632
+ return (
633
+ <AuiProvider extends={aui} config={config}>
634
+ {children}
635
+ </AuiProvider>
636
+ );
626
637
  };
627
638
  ```
628
639
 
@@ -65,13 +65,13 @@
65
65
  "@assistant-ui/react": "workspace:*",
66
66
  "@assistant-ui/react-markdown": "workspace:*",
67
67
  "@tailwindcss/vite": "^4.3.3",
68
- "@tanstack/react-router": "^1.170.18",
69
- "@tanstack/react-start": "^1.168.32",
68
+ "@tanstack/react-router": "^1.170.21",
69
+ "@tanstack/react-start": "^1.168.38",
70
70
  "class-variance-authority": "^0.7.1",
71
71
  "clsx": "^2.1.1",
72
- "lucide-react": "^1.26.0",
72
+ "lucide-react": "^1.29.0",
73
73
  "nitro": "^3.0.260311-beta",
74
- "openai": "^6.49.0",
74
+ "openai": "^7.4.0",
75
75
  "react": "^19.2.8",
76
76
  "react-dom": "^19.2.8",
77
77
  "remark-gfm": "^4.0.1",
@@ -81,12 +81,12 @@
81
81
  },
82
82
  "devDependencies": {
83
83
  "@assistant-ui/x-buildutils": "workspace:*",
84
- "@types/node": "^26.1.1",
85
- "@types/react": "^19.2.17",
86
- "@types/react-dom": "^19.2.3",
87
- "@vitejs/plugin-react": "^6.0.4",
84
+ "@types/node": "^26.1.2",
85
+ "@types/react": "^19.2.18",
86
+ "@types/react-dom": "^19.2.4",
87
+ "@vitejs/plugin-react": "^6.0.5",
88
88
  "typescript": "^7.0.2",
89
- "vite": "^8.1.5"
89
+ "vite": "^8.2.1"
90
90
  }
91
91
  }
92
92
 
@@ -321,13 +321,19 @@ function RootDocument({ children }: { children: React.ReactNode }) {
321
321
  ```tsx
322
322
  import { createFileRoute } from "@tanstack/react-router";
323
323
  import { Thread } from "@/components/assistant-ui/thread";
324
- import { useAui, AuiProvider, Suggestions } from "@assistant-ui/react";
324
+ import {
325
+ useAui,
326
+ AuiProvider,
327
+ AuiConfig,
328
+ Suggestions,
329
+ } from "@assistant-ui/react";
325
330
  import { MyRuntimeProvider } from "@/components/MyRuntimeProvider";
326
331
 
327
332
  export const Route = createFileRoute("/")({ component: App });
328
333
 
329
334
  function ThreadWithSuggestions() {
330
- const aui = useAui({
335
+ const aui = useAui();
336
+ const config = AuiConfig({
331
337
  suggestions: Suggestions([
332
338
  {
333
339
  title: "Hello!",
@@ -342,7 +348,7 @@ function ThreadWithSuggestions() {
342
348
  ]),
343
349
  });
344
350
  return (
345
- <AuiProvider value={aui}>
351
+ <AuiProvider extends={aui} config={config}>
346
352
  <Thread />
347
353
  </AuiProvider>
348
354
  );