@assistant-ui/mcp-docs-server 0.1.16 → 0.1.18

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 (95) hide show
  1. package/.docs/organized/code-examples/with-ag-ui.md +149 -155
  2. package/.docs/organized/code-examples/with-ai-sdk-v5.md +98 -103
  3. package/.docs/organized/code-examples/with-assistant-transport.md +134 -222
  4. package/.docs/organized/code-examples/with-cloud.md +127 -134
  5. package/.docs/organized/code-examples/with-custom-thread-list.md +28 -48
  6. package/.docs/organized/code-examples/with-external-store.md +149 -154
  7. package/.docs/organized/code-examples/with-ffmpeg.md +132 -142
  8. package/.docs/organized/code-examples/with-langgraph.md +234 -228
  9. package/.docs/organized/code-examples/with-parent-id-grouping.md +149 -154
  10. package/.docs/organized/code-examples/with-react-hook-form.md +149 -155
  11. package/.docs/organized/code-examples/{store-example.md → with-store.md} +181 -157
  12. package/.docs/organized/code-examples/with-tanstack.md +31 -45
  13. package/.docs/raw/docs/runtimes/custom/custom-thread-list.mdx +36 -0
  14. package/.docs/raw/docs/runtimes/custom/local.mdx +31 -8
  15. package/.docs/raw/docs/ui/Scrollbar.mdx +0 -6
  16. package/dist/constants.d.ts +10 -0
  17. package/dist/constants.d.ts.map +1 -0
  18. package/dist/constants.js +14 -0
  19. package/dist/constants.js.map +1 -0
  20. package/dist/index.d.ts +4 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +33 -1
  23. package/dist/index.js.map +1 -0
  24. package/dist/prepare-docs/code-examples.d.ts +2 -0
  25. package/dist/prepare-docs/code-examples.d.ts.map +1 -0
  26. package/dist/prepare-docs/code-examples.js +129 -0
  27. package/dist/prepare-docs/code-examples.js.map +1 -0
  28. package/dist/prepare-docs/copy-raw.d.ts +2 -0
  29. package/dist/prepare-docs/copy-raw.d.ts.map +1 -0
  30. package/dist/prepare-docs/copy-raw.js +50 -0
  31. package/dist/prepare-docs/copy-raw.js.map +1 -0
  32. package/dist/prepare-docs/prepare.d.ts +2 -0
  33. package/dist/prepare-docs/prepare.d.ts.map +1 -0
  34. package/dist/prepare-docs/prepare.js +18 -195
  35. package/dist/prepare-docs/prepare.js.map +1 -0
  36. package/dist/stdio.d.ts +3 -0
  37. package/dist/stdio.d.ts.map +1 -0
  38. package/dist/stdio.js +4 -5
  39. package/dist/stdio.js.map +1 -0
  40. package/dist/tools/docs.d.ts +23 -0
  41. package/dist/tools/docs.d.ts.map +1 -0
  42. package/dist/tools/docs.js +168 -0
  43. package/dist/tools/docs.js.map +1 -0
  44. package/dist/tools/examples.d.ts +23 -0
  45. package/dist/tools/examples.d.ts.map +1 -0
  46. package/dist/tools/examples.js +95 -0
  47. package/dist/tools/examples.js.map +1 -0
  48. package/dist/tools/tests/test-setup.d.ts +4 -0
  49. package/dist/tools/tests/test-setup.d.ts.map +1 -0
  50. package/dist/tools/tests/test-setup.js +36 -0
  51. package/dist/tools/tests/test-setup.js.map +1 -0
  52. package/dist/utils/logger.d.ts +7 -0
  53. package/dist/utils/logger.d.ts.map +1 -0
  54. package/dist/utils/logger.js +20 -0
  55. package/dist/utils/logger.js.map +1 -0
  56. package/dist/utils/mcp-format.d.ts +7 -0
  57. package/dist/utils/mcp-format.d.ts.map +1 -0
  58. package/dist/utils/mcp-format.js +11 -0
  59. package/dist/utils/mcp-format.js.map +1 -0
  60. package/dist/utils/mdx.d.ts +9 -0
  61. package/dist/utils/mdx.d.ts.map +1 -0
  62. package/dist/utils/mdx.js +27 -0
  63. package/dist/utils/mdx.js.map +1 -0
  64. package/dist/utils/paths.d.ts +8 -0
  65. package/dist/utils/paths.d.ts.map +1 -0
  66. package/dist/utils/paths.js +84 -0
  67. package/dist/utils/paths.js.map +1 -0
  68. package/dist/utils/security.d.ts +2 -0
  69. package/dist/utils/security.d.ts.map +1 -0
  70. package/dist/utils/security.js +43 -0
  71. package/dist/utils/security.js.map +1 -0
  72. package/package.json +37 -19
  73. package/src/constants.ts +22 -0
  74. package/src/index.ts +51 -0
  75. package/src/prepare-docs/code-examples.ts +158 -0
  76. package/src/prepare-docs/copy-raw.ts +55 -0
  77. package/src/prepare-docs/prepare.ts +24 -0
  78. package/src/stdio.ts +7 -0
  79. package/src/tools/docs.ts +207 -0
  80. package/src/tools/examples.ts +107 -0
  81. package/src/tools/tests/docs.test.ts +122 -0
  82. package/src/tools/tests/examples.test.ts +94 -0
  83. package/src/tools/tests/integration.test.ts +46 -0
  84. package/src/tools/tests/json-parsing.test.ts +23 -0
  85. package/src/tools/tests/mcp-protocol.test.ts +133 -0
  86. package/src/tools/tests/path-traversal.test.ts +81 -0
  87. package/src/tools/tests/test-setup.ts +40 -0
  88. package/src/utils/logger.ts +20 -0
  89. package/src/utils/mcp-format.ts +12 -0
  90. package/src/utils/mdx.ts +39 -0
  91. package/src/utils/paths.ts +114 -0
  92. package/src/utils/security.ts +52 -0
  93. package/src/utils/tests/security.test.ts +119 -0
  94. package/dist/chunk-M2RKUM66.js +0 -38
  95. package/dist/chunk-NVNFQ5ZO.js +0 -423
@@ -9,43 +9,41 @@
9
9
  @custom-variant dark (&:is(.dark *));
10
10
 
11
11
  @theme inline {
12
- --color-background: var(--background);
13
- --color-foreground: var(--foreground);
14
- --font-sans: var(--font-geist-sans);
15
- --font-mono: var(--font-geist-mono);
16
- --color-sidebar-ring: var(--sidebar-ring);
17
- --color-sidebar-border: var(--sidebar-border);
18
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
19
- --color-sidebar-accent: var(--sidebar-accent);
20
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
21
- --color-sidebar-primary: var(--sidebar-primary);
22
- --color-sidebar-foreground: var(--sidebar-foreground);
23
- --color-sidebar: var(--sidebar);
24
- --color-chart-5: var(--chart-5);
25
- --color-chart-4: var(--chart-4);
26
- --color-chart-3: var(--chart-3);
27
- --color-chart-2: var(--chart-2);
28
- --color-chart-1: var(--chart-1);
29
- --color-ring: var(--ring);
30
- --color-input: var(--input);
31
- --color-border: var(--border);
32
- --color-destructive: var(--destructive);
33
- --color-accent-foreground: var(--accent-foreground);
34
- --color-accent: var(--accent);
35
- --color-muted-foreground: var(--muted-foreground);
36
- --color-muted: var(--muted);
37
- --color-secondary-foreground: var(--secondary-foreground);
38
- --color-secondary: var(--secondary);
39
- --color-primary-foreground: var(--primary-foreground);
40
- --color-primary: var(--primary);
41
- --color-popover-foreground: var(--popover-foreground);
42
- --color-popover: var(--popover);
43
- --color-card-foreground: var(--card-foreground);
44
- --color-card: var(--card);
45
12
  --radius-sm: calc(var(--radius) - 4px);
46
13
  --radius-md: calc(var(--radius) - 2px);
47
14
  --radius-lg: var(--radius);
48
15
  --radius-xl: calc(var(--radius) + 4px);
16
+ --color-background: var(--background);
17
+ --color-foreground: var(--foreground);
18
+ --color-card: var(--card);
19
+ --color-card-foreground: var(--card-foreground);
20
+ --color-popover: var(--popover);
21
+ --color-popover-foreground: var(--popover-foreground);
22
+ --color-primary: var(--primary);
23
+ --color-primary-foreground: var(--primary-foreground);
24
+ --color-secondary: var(--secondary);
25
+ --color-secondary-foreground: var(--secondary-foreground);
26
+ --color-muted: var(--muted);
27
+ --color-muted-foreground: var(--muted-foreground);
28
+ --color-accent: var(--accent);
29
+ --color-accent-foreground: var(--accent-foreground);
30
+ --color-destructive: var(--destructive);
31
+ --color-border: var(--border);
32
+ --color-input: var(--input);
33
+ --color-ring: var(--ring);
34
+ --color-chart-1: var(--chart-1);
35
+ --color-chart-2: var(--chart-2);
36
+ --color-chart-3: var(--chart-3);
37
+ --color-chart-4: var(--chart-4);
38
+ --color-chart-5: var(--chart-5);
39
+ --color-sidebar: var(--sidebar);
40
+ --color-sidebar-foreground: var(--sidebar-foreground);
41
+ --color-sidebar-primary: var(--sidebar-primary);
42
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
43
+ --color-sidebar-accent: var(--sidebar-accent);
44
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
45
+ --color-sidebar-border: var(--sidebar-border);
46
+ --color-sidebar-ring: var(--sidebar-ring);
49
47
  }
50
48
 
51
49
  :root {
@@ -838,7 +836,7 @@ const ThreadScrollToBottom: FC = () => {
838
836
  <TooltipIconButton
839
837
  tooltip="Scroll to bottom"
840
838
  variant="outline"
841
- className="aui-thread-scroll-to-bottom -top-12 absolute z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent"
839
+ className="aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent"
842
840
  >
843
841
  <ArrowDownIcon />
844
842
  </TooltipIconButton>
@@ -1002,7 +1000,7 @@ const AssistantActionBar: FC = () => {
1002
1000
  hideWhenRunning
1003
1001
  autohide="not-last"
1004
1002
  autohideFloat="single-branch"
1005
- className="aui-assistant-action-bar-root -ml-1 col-start-3 row-start-2 flex gap-1 text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm"
1003
+ className="aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex gap-1 text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm"
1006
1004
  >
1007
1005
  <ActionBarPrimitive.Copy asChild>
1008
1006
  <TooltipIconButton tooltip="Copy">
@@ -1040,12 +1038,12 @@ const UserMessage: FC = () => {
1040
1038
  <div className="aui-user-message-content wrap-break-word rounded-2xl bg-muted px-4 py-2.5 text-foreground">
1041
1039
  <MessagePrimitive.Parts />
1042
1040
  </div>
1043
- <div className="aui-user-action-bar-wrapper -translate-x-full -translate-y-1/2 absolute top-1/2 left-0 pr-2">
1041
+ <div className="aui-user-action-bar-wrapper absolute top-1/2 left-0 -translate-x-full -translate-y-1/2 pr-2">
1044
1042
  <UserActionBar />
1045
1043
  </div>
1046
1044
  </div>
1047
1045
 
1048
- <BranchPicker className="aui-user-branch-picker -mr-1 col-span-full col-start-1 row-start-3 justify-end" />
1046
+ <BranchPicker className="aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end" />
1049
1047
  </MessagePrimitive.Root>
1050
1048
  );
1051
1049
  };
@@ -1097,7 +1095,7 @@ const BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({
1097
1095
  <BranchPickerPrimitive.Root
1098
1096
  hideWhenSingleBranch
1099
1097
  className={cn(
1100
- "aui-branch-picker-root -ml-2 mr-2 inline-flex items-center text-muted-foreground text-xs",
1098
+ "aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-muted-foreground text-xs",
1101
1099
  className,
1102
1100
  )}
1103
1101
  {...rest}
@@ -1278,47 +1276,50 @@ import * as AvatarPrimitive from "@radix-ui/react-avatar";
1278
1276
 
1279
1277
  import { cn } from "@/lib/utils";
1280
1278
 
1281
- const Avatar = React.forwardRef<
1282
- React.ElementRef<typeof AvatarPrimitive.Root>,
1283
- React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>
1284
- >(({ className, ...props }, ref) => (
1285
- <AvatarPrimitive.Root
1286
- ref={ref}
1287
- className={cn(
1288
- "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
1289
- className,
1290
- )}
1291
- {...props}
1292
- />
1293
- ));
1294
- Avatar.displayName = AvatarPrimitive.Root.displayName;
1295
-
1296
- const AvatarImage = React.forwardRef<
1297
- React.ElementRef<typeof AvatarPrimitive.Image>,
1298
- React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>
1299
- >(({ className, ...props }, ref) => (
1300
- <AvatarPrimitive.Image
1301
- ref={ref}
1302
- className={cn("aspect-square h-full w-full", className)}
1303
- {...props}
1304
- />
1305
- ));
1306
- AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1307
-
1308
- const AvatarFallback = React.forwardRef<
1309
- React.ElementRef<typeof AvatarPrimitive.Fallback>,
1310
- React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>
1311
- >(({ className, ...props }, ref) => (
1312
- <AvatarPrimitive.Fallback
1313
- ref={ref}
1314
- className={cn(
1315
- "flex h-full w-full items-center justify-center rounded-full bg-muted",
1316
- className,
1317
- )}
1318
- {...props}
1319
- />
1320
- ));
1321
- AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1279
+ function Avatar({
1280
+ className,
1281
+ ...props
1282
+ }: React.ComponentProps<typeof AvatarPrimitive.Root>) {
1283
+ return (
1284
+ <AvatarPrimitive.Root
1285
+ data-slot="avatar"
1286
+ className={cn(
1287
+ "relative flex size-8 shrink-0 overflow-hidden rounded-full",
1288
+ className,
1289
+ )}
1290
+ {...props}
1291
+ />
1292
+ );
1293
+ }
1294
+
1295
+ function AvatarImage({
1296
+ className,
1297
+ ...props
1298
+ }: React.ComponentProps<typeof AvatarPrimitive.Image>) {
1299
+ return (
1300
+ <AvatarPrimitive.Image
1301
+ data-slot="avatar-image"
1302
+ className={cn("aspect-square size-full", className)}
1303
+ {...props}
1304
+ />
1305
+ );
1306
+ }
1307
+
1308
+ function AvatarFallback({
1309
+ className,
1310
+ ...props
1311
+ }: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {
1312
+ return (
1313
+ <AvatarPrimitive.Fallback
1314
+ data-slot="avatar-fallback"
1315
+ className={cn(
1316
+ "flex size-full items-center justify-center rounded-full bg-muted",
1317
+ className,
1318
+ )}
1319
+ {...props}
1320
+ />
1321
+ );
1322
+ }
1322
1323
 
1323
1324
  export { Avatar, AvatarImage, AvatarFallback };
1324
1325
 
@@ -1327,8 +1328,6 @@ export { Avatar, AvatarImage, AvatarFallback };
1327
1328
  ## components/ui/button.tsx
1328
1329
 
1329
1330
  ```tsx
1330
- "use client";
1331
-
1332
1331
  import * as React from "react";
1333
1332
  import { Slot } from "@radix-ui/react-slot";
1334
1333
  import { cva, type VariantProps } from "class-variance-authority";
@@ -1336,26 +1335,28 @@ import { cva, type VariantProps } from "class-variance-authority";
1336
1335
  import { cn } from "@/lib/utils";
1337
1336
 
1338
1337
  const buttonVariants = cva(
1339
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1338
+ "inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm outline-none transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1340
1339
  {
1341
1340
  variants: {
1342
1341
  variant: {
1343
- default:
1344
- "bg-primary text-primary-foreground shadow hover:bg-primary/90",
1342
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
1345
1343
  destructive:
1346
- "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
1344
+ "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
1347
1345
  outline:
1348
- "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
1346
+ "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
1349
1347
  secondary:
1350
- "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
1351
- ghost: "hover:bg-accent hover:text-accent-foreground",
1348
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80",
1349
+ ghost:
1350
+ "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
1352
1351
  link: "text-primary underline-offset-4 hover:underline",
1353
1352
  },
1354
1353
  size: {
1355
- default: "h-9 px-4 py-2",
1356
- sm: "h-8 rounded-md px-3 text-xs",
1357
- lg: "h-10 rounded-md px-8",
1358
- icon: "h-9 w-9",
1354
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
1355
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
1356
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
1357
+ icon: "size-9",
1358
+ "icon-sm": "size-8",
1359
+ "icon-lg": "size-10",
1359
1360
  },
1360
1361
  },
1361
1362
  defaultVariants: {
@@ -1365,25 +1366,28 @@ const buttonVariants = cva(
1365
1366
  },
1366
1367
  );
1367
1368
 
1368
- export interface ButtonProps
1369
- extends React.ButtonHTMLAttributes<HTMLButtonElement>,
1370
- VariantProps<typeof buttonVariants> {
1371
- asChild?: boolean;
1372
- }
1369
+ function Button({
1370
+ className,
1371
+ variant = "default",
1372
+ size = "default",
1373
+ asChild = false,
1374
+ ...props
1375
+ }: React.ComponentProps<"button"> &
1376
+ VariantProps<typeof buttonVariants> & {
1377
+ asChild?: boolean;
1378
+ }) {
1379
+ const Comp = asChild ? Slot : "button";
1373
1380
 
1374
- const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
1375
- ({ className, variant, size, asChild = false, ...props }, ref) => {
1376
- const Comp = asChild ? Slot : "button";
1377
- return (
1378
- <Comp
1379
- className={cn(buttonVariants({ variant, size, className }))}
1380
- ref={ref}
1381
- {...props}
1382
- />
1383
- );
1384
- },
1385
- );
1386
- Button.displayName = "Button";
1381
+ return (
1382
+ <Comp
1383
+ data-slot="button"
1384
+ data-variant={variant}
1385
+ data-size={size}
1386
+ className={cn(buttonVariants({ variant, size, className }))}
1387
+ {...props}
1388
+ />
1389
+ );
1390
+ }
1387
1391
 
1388
1392
  export { Button, buttonVariants };
1389
1393
 
@@ -1432,7 +1436,7 @@ function DialogOverlay({
1432
1436
  <DialogPrimitive.Overlay
1433
1437
  data-slot="dialog-overlay"
1434
1438
  className={cn(
1435
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80 data-[state=closed]:animate-out data-[state=open]:animate-in",
1439
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=open]:animate-in",
1436
1440
  className,
1437
1441
  )}
1438
1442
  {...props}
@@ -1443,24 +1447,32 @@ function DialogOverlay({
1443
1447
  function DialogContent({
1444
1448
  className,
1445
1449
  children,
1450
+ showCloseButton = true,
1446
1451
  ...props
1447
- }: React.ComponentProps<typeof DialogPrimitive.Content>) {
1452
+ }: React.ComponentProps<typeof DialogPrimitive.Content> & {
1453
+ showCloseButton?: boolean;
1454
+ }) {
1448
1455
  return (
1449
1456
  <DialogPortal data-slot="dialog-portal">
1450
1457
  <DialogOverlay />
1451
1458
  <DialogPrimitive.Content
1452
1459
  data-slot="dialog-content"
1453
1460
  className={cn(
1454
- "data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[state=closed]:animate-out data-[state=open]:animate-in sm:max-w-lg",
1461
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg outline-none duration-200 data-[state=closed]:animate-out data-[state=open]:animate-in sm:max-w-lg",
1455
1462
  className,
1456
1463
  )}
1457
1464
  {...props}
1458
1465
  >
1459
1466
  {children}
1460
- <DialogPrimitive.Close className="absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0">
1461
- <XIcon />
1462
- <span className="sr-only">Close</span>
1463
- </DialogPrimitive.Close>
1467
+ {showCloseButton && (
1468
+ <DialogPrimitive.Close
1469
+ data-slot="dialog-close"
1470
+ className="absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0"
1471
+ >
1472
+ <XIcon />
1473
+ <span className="sr-only">Close</span>
1474
+ </DialogPrimitive.Close>
1475
+ )}
1464
1476
  </DialogPrimitive.Content>
1465
1477
  </DialogPortal>
1466
1478
  );
@@ -1581,13 +1593,13 @@ function TooltipContent({
1581
1593
  data-slot="tooltip-content"
1582
1594
  sideOffset={sideOffset}
1583
1595
  className={cn(
1584
- "fade-in-0 zoom-in-95 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-[--radix-tooltip-content-transform-origin] animate-in text-balance rounded-md bg-primary px-3 py-1.5 text-primary-foreground text-xs data-[state=closed]:animate-out",
1596
+ "fade-in-0 zoom-in-95 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in text-balance rounded-md bg-foreground px-3 py-1.5 text-background text-xs data-[state=closed]:animate-out",
1585
1597
  className,
1586
1598
  )}
1587
1599
  {...props}
1588
1600
  >
1589
1601
  {children}
1590
- <TooltipPrimitive.Arrow className="z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-primary fill-primary" />
1602
+ <TooltipPrimitive.Arrow className="z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground" />
1591
1603
  </TooltipPrimitive.Content>
1592
1604
  </TooltipPrimitive.Portal>
1593
1605
  );
@@ -1627,15 +1639,15 @@ export default nextConfig;
1627
1639
  ```json
1628
1640
  {
1629
1641
  "name": "with-ag-ui",
1630
- "version": "0.1.0",
1642
+ "version": "0.0.0",
1631
1643
  "private": true,
1644
+ "type": "module",
1632
1645
  "scripts": {
1633
- "dev": "next dev --turbo",
1646
+ "dev": "next dev",
1634
1647
  "build": "next build",
1635
1648
  "start": "next start"
1636
1649
  },
1637
1650
  "dependencies": {
1638
- "@ai-sdk/openai": "^2.0.77",
1639
1651
  "@assistant-ui/react": "workspace:*",
1640
1652
  "@assistant-ui/react-markdown": "workspace:*",
1641
1653
  "@assistant-ui/react-ag-ui": "workspace:*",
@@ -1646,23 +1658,24 @@ export default nextConfig;
1646
1658
  "@radix-ui/react-tooltip": "^1.2.8",
1647
1659
  "class-variance-authority": "^0.7.1",
1648
1660
  "clsx": "^2.1.1",
1649
- "lucide-react": "^0.556.0",
1650
- "next": "16.0.7",
1651
- "react": "19.2.1",
1652
- "react-dom": "19.2.1",
1661
+ "lucide-react": "^0.562.0",
1662
+ "next": "16.1.0",
1663
+ "react": "19.2.3",
1664
+ "react-dom": "19.2.3",
1653
1665
  "remark-gfm": "^4.0.1",
1654
1666
  "tailwind-merge": "^3.4.0",
1655
- "tw-animate-css": "^1.4.0",
1656
1667
  "zustand": "^5.0.9"
1657
1668
  },
1658
1669
  "devDependencies": {
1659
1670
  "@assistant-ui/x-buildutils": "workspace:*",
1660
- "@types/node": "^24",
1661
- "@types/react": "^19",
1662
- "@types/react-dom": "^19",
1663
- "postcss": "^8",
1664
- "tailwindcss": "^4.1.17",
1665
- "typescript": "^5"
1671
+ "@tailwindcss/postcss": "^4.1.18",
1672
+ "@types/node": "^25.0.3",
1673
+ "@types/react": "^19.2.7",
1674
+ "@types/react-dom": "^19.2.3",
1675
+ "postcss": "^8.5.6",
1676
+ "tailwindcss": "^4.1.18",
1677
+ "tw-animate-css": "^1.4.0",
1678
+ "typescript": "^5.9.3"
1666
1679
  }
1667
1680
  }
1668
1681
 
@@ -1672,30 +1685,11 @@ export default nextConfig;
1672
1685
 
1673
1686
  ```json
1674
1687
  {
1675
- "extends": "@assistant-ui/x-buildutils/ts/base",
1688
+ "extends": "@assistant-ui/x-buildutils/ts/next",
1676
1689
  "compilerOptions": {
1677
- "target": "ES6",
1678
- "module": "ESNext",
1679
- "incremental": true,
1680
- "plugins": [
1681
- {
1682
- "name": "next"
1683
- }
1684
- ],
1685
- "allowJs": true,
1686
- "strictNullChecks": true,
1687
- "jsx": "preserve",
1688
- "paths": {
1689
- "@/*": ["./*"],
1690
- "@assistant-ui/react-ag-ui": ["../../packages/react-ag-ui/src"],
1691
- "@assistant-ui/*": ["../../packages/*/src"],
1692
- "@assistant-ui/react/*": ["../../packages/react/src/*"],
1693
- "@assistant-ui/tap/*": ["../../packages/tap/src/*"],
1694
- "assistant-stream": ["../../packages/assistant-stream/src"],
1695
- "assistant-stream/*": ["../../packages/assistant-stream/src/*"]
1696
- }
1690
+ "paths": { "@/*": ["./*"] }
1697
1691
  },
1698
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
1692
+ "include": ["**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
1699
1693
  "exclude": ["node_modules"]
1700
1694
  }
1701
1695