@assistant-ui/mcp-docs-server 0.1.23 → 0.1.24

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 (25) hide show
  1. package/.docs/organized/code-examples/waterfall.md +2 -2
  2. package/.docs/organized/code-examples/with-ag-ui.md +4 -4
  3. package/.docs/organized/code-examples/with-ai-sdk-v6.md +5 -5
  4. package/.docs/organized/code-examples/with-artifacts.md +5 -5
  5. package/.docs/organized/code-examples/with-assistant-transport.md +3 -3
  6. package/.docs/organized/code-examples/with-chain-of-thought.md +5 -5
  7. package/.docs/organized/code-examples/with-cloud-standalone.md +5 -6
  8. package/.docs/organized/code-examples/with-cloud.md +5 -5
  9. package/.docs/organized/code-examples/with-custom-thread-list.md +5 -5
  10. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +7 -7
  11. package/.docs/organized/code-examples/with-expo.md +18 -37
  12. package/.docs/organized/code-examples/with-external-store.md +3 -4
  13. package/.docs/organized/code-examples/with-ffmpeg.md +5 -5
  14. package/.docs/organized/code-examples/with-langgraph.md +4 -4
  15. package/.docs/organized/code-examples/with-parent-id-grouping.md +4 -4
  16. package/.docs/organized/code-examples/with-react-hook-form.md +6 -9
  17. package/.docs/organized/code-examples/with-react-router.md +7 -8
  18. package/.docs/organized/code-examples/with-store.md +2 -2
  19. package/.docs/organized/code-examples/with-tanstack.md +4 -4
  20. package/.docs/organized/code-examples/with-tap-runtime.md +3 -3
  21. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +5 -1
  22. package/.docs/raw/docs/cloud/ai-sdk.mdx +5 -1
  23. package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +53 -0
  24. package/.docs/raw/docs/ui/context-display.mdx +147 -0
  25. package/package.json +2 -2
@@ -774,10 +774,10 @@ export default nextConfig;
774
774
  "devDependencies": {
775
775
  "@assistant-ui/x-buildutils": "workspace:*",
776
776
  "@tailwindcss/postcss": "^4.2.1",
777
- "@types/node": "^25.3.0",
777
+ "@types/node": "^25.3.3",
778
778
  "@types/react": "^19.2.14",
779
779
  "@types/react-dom": "^19.2.3",
780
- "postcss": "^8.5.6",
780
+ "postcss": "^8.5.8",
781
781
  "tailwindcss": "^4.2.1",
782
782
  "typescript": "^5.9.3"
783
783
  }
@@ -414,14 +414,14 @@ export default nextConfig;
414
414
  "start": "next start"
415
415
  },
416
416
  "dependencies": {
417
- "@ag-ui/client": "^0.0.45",
417
+ "@ag-ui/client": "^0.0.47",
418
418
  "@assistant-ui/react": "workspace:*",
419
419
  "@assistant-ui/react-ag-ui": "workspace:*",
420
420
  "@assistant-ui/react-markdown": "workspace:*",
421
421
  "@assistant-ui/ui": "workspace:*",
422
422
  "class-variance-authority": "^0.7.1",
423
423
  "clsx": "^2.1.1",
424
- "lucide-react": "^0.575.0",
424
+ "lucide-react": "^0.576.0",
425
425
  "next": "^16.1.6",
426
426
  "react": "^19.2.4",
427
427
  "react-dom": "^19.2.4",
@@ -430,10 +430,10 @@ export default nextConfig;
430
430
  "devDependencies": {
431
431
  "@assistant-ui/x-buildutils": "workspace:*",
432
432
  "@tailwindcss/postcss": "^4.2.1",
433
- "@types/node": "^25.3.0",
433
+ "@types/node": "^25.3.3",
434
434
  "@types/react": "^19.2.14",
435
435
  "@types/react-dom": "^19.2.3",
436
- "postcss": "^8.5.6",
436
+ "postcss": "^8.5.8",
437
437
  "tailwindcss": "^4.2.1",
438
438
  "tw-animate-css": "^1.4.0",
439
439
  "typescript": "^5.9.3"
@@ -303,15 +303,15 @@ export default nextConfig;
303
303
  "start": "next start"
304
304
  },
305
305
  "dependencies": {
306
- "@ai-sdk/openai": "^3.0.33",
306
+ "@ai-sdk/openai": "^3.0.39",
307
307
  "@assistant-ui/react": "workspace:*",
308
308
  "@assistant-ui/react-ai-sdk": "workspace:*",
309
309
  "@assistant-ui/react-markdown": "workspace:*",
310
310
  "@assistant-ui/ui": "workspace:*",
311
- "ai": "^6.0.98",
311
+ "ai": "^6.0.111",
312
312
  "class-variance-authority": "^0.7.1",
313
313
  "clsx": "^2.1.1",
314
- "lucide-react": "^0.575.0",
314
+ "lucide-react": "^0.576.0",
315
315
  "next": "^16.1.6",
316
316
  "react": "^19.2.4",
317
317
  "react-dom": "^19.2.4",
@@ -321,10 +321,10 @@ export default nextConfig;
321
321
  "devDependencies": {
322
322
  "@assistant-ui/x-buildutils": "workspace:*",
323
323
  "@tailwindcss/postcss": "^4.2.1",
324
- "@types/node": "^25.3.0",
324
+ "@types/node": "^25.3.3",
325
325
  "@types/react": "^19.2.14",
326
326
  "@types/react-dom": "^19.2.3",
327
- "postcss": "^8.5.6",
327
+ "postcss": "^8.5.8",
328
328
  "tailwindcss": "^4.2.1",
329
329
  "tw-animate-css": "^1.4.0",
330
330
  "typescript": "^5.9.3"
@@ -413,15 +413,15 @@ export default nextConfig;
413
413
  "start": "next start"
414
414
  },
415
415
  "dependencies": {
416
- "@ai-sdk/openai": "^3.0.33",
416
+ "@ai-sdk/openai": "^3.0.39",
417
417
  "@assistant-ui/react": "workspace:*",
418
418
  "@assistant-ui/react-ai-sdk": "workspace:*",
419
419
  "@assistant-ui/react-markdown": "workspace:*",
420
420
  "@assistant-ui/ui": "workspace:*",
421
- "ai": "^6.0.98",
421
+ "ai": "^6.0.111",
422
422
  "class-variance-authority": "^0.7.1",
423
423
  "clsx": "^2.1.1",
424
- "lucide-react": "^0.575.0",
424
+ "lucide-react": "^0.576.0",
425
425
  "next": "^16.1.6",
426
426
  "react": "^19.2.4",
427
427
  "react-dom": "^19.2.4",
@@ -431,10 +431,10 @@ export default nextConfig;
431
431
  "devDependencies": {
432
432
  "@assistant-ui/x-buildutils": "workspace:*",
433
433
  "@tailwindcss/postcss": "^4.2.1",
434
- "@types/node": "^25.3.0",
434
+ "@types/node": "^25.3.3",
435
435
  "@types/react": "^19.2.14",
436
436
  "@types/react-dom": "^19.2.3",
437
- "postcss": "^8.5.6",
437
+ "postcss": "^8.5.8",
438
438
  "tailwindcss": "^4.2.1",
439
439
  "tw-animate-css": "^1.4.0",
440
440
  "typescript": "^5.9.3"
@@ -423,7 +423,7 @@ export default nextConfig;
423
423
  "@assistant-ui/ui": "workspace:*",
424
424
  "class-variance-authority": "^0.7.1",
425
425
  "clsx": "^2.1.1",
426
- "lucide-react": "^0.575.0",
426
+ "lucide-react": "^0.576.0",
427
427
  "next": "^16.1.6",
428
428
  "react": "^19.2.4",
429
429
  "react-dom": "^19.2.4",
@@ -433,10 +433,10 @@ export default nextConfig;
433
433
  "devDependencies": {
434
434
  "@assistant-ui/x-buildutils": "workspace:*",
435
435
  "@tailwindcss/postcss": "^4.2.1",
436
- "@types/node": "^25.3.0",
436
+ "@types/node": "^25.3.3",
437
437
  "@types/react": "^19.2.14",
438
438
  "@types/react-dom": "^19.2.3",
439
- "postcss": "^8.5.6",
439
+ "postcss": "^8.5.8",
440
440
  "tailwindcss": "^4.2.1",
441
441
  "tw-animate-css": "^1.4.0",
442
442
  "typescript": "^5.9.3"
@@ -549,15 +549,15 @@ export default nextConfig;
549
549
  "start": "next start"
550
550
  },
551
551
  "dependencies": {
552
- "@ai-sdk/openai": "^3.0.33",
552
+ "@ai-sdk/openai": "^3.0.39",
553
553
  "@assistant-ui/react": "workspace:*",
554
554
  "@assistant-ui/react-ai-sdk": "workspace:*",
555
555
  "@assistant-ui/react-markdown": "workspace:*",
556
556
  "@assistant-ui/ui": "workspace:*",
557
- "ai": "^6.0.98",
557
+ "ai": "^6.0.111",
558
558
  "class-variance-authority": "^0.7.1",
559
559
  "clsx": "^2.1.1",
560
- "lucide-react": "^0.575.0",
560
+ "lucide-react": "^0.576.0",
561
561
  "next": "^16.1.6",
562
562
  "react": "^19.2.4",
563
563
  "react-dom": "^19.2.4",
@@ -567,10 +567,10 @@ export default nextConfig;
567
567
  "devDependencies": {
568
568
  "@assistant-ui/x-buildutils": "workspace:*",
569
569
  "@tailwindcss/postcss": "^4.2.1",
570
- "@types/node": "^25.3.0",
570
+ "@types/node": "^25.3.3",
571
571
  "@types/react": "^19.2.14",
572
572
  "@types/react-dom": "^19.2.3",
573
- "postcss": "^8.5.6",
573
+ "postcss": "^8.5.8",
574
574
  "tailwindcss": "^4.2.1",
575
575
  "tw-animate-css": "^1.4.0",
576
576
  "typescript": "^5.9.3"
@@ -561,14 +561,13 @@ export default nextConfig;
561
561
  "start": "next start"
562
562
  },
563
563
  "dependencies": {
564
- "@ai-sdk/openai": "^3.0.33",
565
- "@ai-sdk/react": "^3.0.100",
566
- "ai": "^6.0.98",
564
+ "@ai-sdk/openai": "^3.0.39",
567
565
  "@assistant-ui/cloud-ai-sdk": "workspace:*",
566
+ "ai": "^6.0.111",
568
567
  "assistant-cloud": "workspace:*",
569
568
  "class-variance-authority": "^0.7.1",
570
569
  "clsx": "^2.1.1",
571
- "lucide-react": "^0.575.0",
570
+ "lucide-react": "^0.576.0",
572
571
  "next": "^16.1.6",
573
572
  "react": "^19.2.4",
574
573
  "react-dom": "^19.2.4",
@@ -577,10 +576,10 @@ export default nextConfig;
577
576
  "devDependencies": {
578
577
  "@assistant-ui/x-buildutils": "workspace:*",
579
578
  "@tailwindcss/postcss": "^4.2.1",
580
- "@types/node": "^25.3.0",
579
+ "@types/node": "^25.3.3",
581
580
  "@types/react": "^19.2.14",
582
581
  "@types/react-dom": "^19.2.3",
583
- "postcss": "^8.5.6",
582
+ "postcss": "^8.5.8",
584
583
  "tailwindcss": "^4.2.1",
585
584
  "tw-animate-css": "^1.4.0",
586
585
  "typescript": "^5.9.3"
@@ -327,15 +327,15 @@ export default nextConfig;
327
327
  "start": "next start"
328
328
  },
329
329
  "dependencies": {
330
- "@ai-sdk/openai": "^3.0.33",
330
+ "@ai-sdk/openai": "^3.0.39",
331
331
  "@assistant-ui/react": "workspace:*",
332
332
  "@assistant-ui/react-ai-sdk": "workspace:*",
333
333
  "@assistant-ui/react-markdown": "workspace:*",
334
334
  "@assistant-ui/ui": "workspace:*",
335
- "ai": "^6.0.98",
335
+ "ai": "^6.0.111",
336
336
  "class-variance-authority": "^0.7.1",
337
337
  "clsx": "^2.1.1",
338
- "lucide-react": "^0.575.0",
338
+ "lucide-react": "^0.576.0",
339
339
  "next": "^16.1.6",
340
340
  "react": "^19.2.4",
341
341
  "react-dom": "^19.2.4",
@@ -344,10 +344,10 @@ export default nextConfig;
344
344
  "devDependencies": {
345
345
  "@assistant-ui/x-buildutils": "workspace:*",
346
346
  "@tailwindcss/postcss": "^4.2.1",
347
- "@types/node": "^25.3.0",
347
+ "@types/node": "^25.3.3",
348
348
  "@types/react": "^19.2.14",
349
349
  "@types/react-dom": "^19.2.3",
350
- "postcss": "^8.5.6",
350
+ "postcss": "^8.5.8",
351
351
  "tailwindcss": "^4.2.1",
352
352
  "tw-animate-css": "^1.4.0",
353
353
  "typescript": "^5.9.3"
@@ -414,16 +414,16 @@ export default nextConfig;
414
414
  "start": "next start"
415
415
  },
416
416
  "dependencies": {
417
- "@ai-sdk/openai": "^3.0.33",
417
+ "@ai-sdk/openai": "^3.0.39",
418
418
  "@assistant-ui/react": "workspace:*",
419
419
  "@assistant-ui/react-ai-sdk": "workspace:*",
420
420
  "@assistant-ui/react-markdown": "workspace:*",
421
421
  "@assistant-ui/ui": "workspace:*",
422
- "ai": "^6.0.98",
422
+ "ai": "^6.0.111",
423
423
  "assistant-stream": "workspace:*",
424
424
  "class-variance-authority": "^0.7.1",
425
425
  "clsx": "^2.1.1",
426
- "lucide-react": "^0.575.0",
426
+ "lucide-react": "^0.576.0",
427
427
  "next": "^16.1.6",
428
428
  "react": "^19.2.4",
429
429
  "react-dom": "^19.2.4",
@@ -433,10 +433,10 @@ export default nextConfig;
433
433
  "devDependencies": {
434
434
  "@assistant-ui/x-buildutils": "workspace:*",
435
435
  "@tailwindcss/postcss": "^4.2.1",
436
- "@types/node": "^25.3.0",
436
+ "@types/node": "^25.3.3",
437
437
  "@types/react": "^19.2.14",
438
438
  "@types/react-dom": "^19.2.3",
439
- "postcss": "^8.5.6",
439
+ "postcss": "^8.5.8",
440
440
  "tailwindcss": "^4.2.1",
441
441
  "tw-animate-css": "^1.4.0",
442
442
  "typescript": "^5.9.3"
@@ -562,21 +562,21 @@ export default nextConfig;
562
562
  "version": "0.0.0",
563
563
  "type": "module",
564
564
  "dependencies": {
565
- "@ai-sdk/openai": "^3.0.33",
566
- "@ai-sdk/react": "^3.0.100",
565
+ "@ai-sdk/openai": "^3.0.39",
566
+ "@ai-sdk/react": "^3.0.113",
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
571
  "@elevenlabs/client": "^0.15.0",
572
572
  "@tailwindcss/postcss": "^4.2.1",
573
- "ai": "^6.0.98",
573
+ "ai": "^6.0.111",
574
574
  "class-variance-authority": "^0.7.1",
575
575
  "clsx": "^2.1.1",
576
- "lucide-react": "^0.575.0",
577
- "motion": "^12.34.3",
576
+ "lucide-react": "^0.576.0",
577
+ "motion": "^12.34.5",
578
578
  "next": "^16.1.6",
579
- "postcss": "^8.5.6",
579
+ "postcss": "^8.5.8",
580
580
  "react": "^19.2.4",
581
581
  "react-dom": "^19.2.4",
582
582
  "tailwind-merge": "^3.5.0",
@@ -585,7 +585,7 @@ export default nextConfig;
585
585
  },
586
586
  "devDependencies": {
587
587
  "@assistant-ui/x-buildutils": "workspace:*",
588
- "@types/node": "^25.3.0",
588
+ "@types/node": "^25.3.3",
589
589
  "@types/react": "^19.2.14",
590
590
  "@types/react-dom": "^19.2.3",
591
591
  "tw-animate-css": "^1.4.0",
@@ -1748,22 +1748,6 @@ export const Fonts = Platform.select({
1748
1748
 
1749
1749
  ```
1750
1750
 
1751
- ## eslint.config.js
1752
-
1753
- ```javascript
1754
- // https://docs.expo.dev/guides/using-eslint/
1755
- const { defineConfig } = require("eslint/config");
1756
- const expoConfig = require("eslint-config-expo/flat");
1757
-
1758
- module.exports = defineConfig([
1759
- expoConfig,
1760
- {
1761
- ignores: ["dist/*"],
1762
- },
1763
- ]);
1764
-
1765
- ```
1766
-
1767
1751
  ## hooks/use-app-runtime.ts
1768
1752
 
1769
1753
  ```typescript
@@ -1919,37 +1903,34 @@ module.exports = config;
1919
1903
  "start": "expo start",
1920
1904
  "android": "expo run:android",
1921
1905
  "ios": "expo run:ios",
1922
- "web": "expo start --web",
1923
- "lint": "expo lint"
1906
+ "web": "expo start --web"
1924
1907
  },
1925
1908
  "dependencies": {
1926
1909
  "@assistant-ui/react-native": "workspace:*",
1927
1910
  "@expo/vector-icons": "^15.1.1",
1928
- "@react-navigation/drawer": "^7.8.1",
1911
+ "@react-navigation/drawer": "^7.7.2",
1929
1912
  "@react-navigation/native": "^7.1.28",
1930
- "expo": "~54.0.33",
1931
- "expo-constants": "~18.0.13",
1932
- "expo-font": "~14.0.11",
1933
- "expo-image-picker": "~17.0.10",
1934
- "expo-linking": "~8.0.11",
1935
- "expo-router": "~6.0.23",
1936
- "expo-splash-screen": "~31.0.13",
1937
- "expo-status-bar": "~3.0.9",
1938
- "expo-system-ui": "~6.0.9",
1939
- "react": "19.2.4",
1940
- "react-dom": "19.2.4",
1941
- "react-native": "0.84.0",
1913
+ "expo": "~55.0.4",
1914
+ "expo-constants": "~55.0.7",
1915
+ "expo-font": "~55.0.4",
1916
+ "expo-image-picker": "~55.0.10",
1917
+ "expo-linking": "~55.0.7",
1918
+ "expo-router": "~55.0.3",
1919
+ "expo-splash-screen": "~55.0.10",
1920
+ "expo-status-bar": "~55.0.4",
1921
+ "expo-system-ui": "~55.0.9",
1922
+ "react": "19.2.0",
1923
+ "react-dom": "19.2.0",
1924
+ "react-native": "0.83.2",
1942
1925
  "react-native-gesture-handler": "~2.30.0",
1943
- "react-native-reanimated": "~4.2.2",
1944
- "react-native-safe-area-context": "~5.7.0",
1945
- "react-native-screens": "~4.24.0",
1926
+ "react-native-reanimated": "~4.2.1",
1927
+ "react-native-safe-area-context": "~5.6.2",
1928
+ "react-native-screens": "~4.23.0",
1946
1929
  "react-native-web": "~0.21.2",
1947
- "react-native-worklets": "0.7.4"
1930
+ "react-native-worklets": "0.7.2"
1948
1931
  },
1949
1932
  "devDependencies": {
1950
1933
  "@types/react": "~19.2.14",
1951
- "eslint": "^10.0.2",
1952
- "eslint-config-expo": "~10.0.0",
1953
1934
  "typescript": "~5.9.3"
1954
1935
  },
1955
1936
  "private": true
@@ -314,13 +314,12 @@ export default nextConfig;
314
314
  "start": "next start"
315
315
  },
316
316
  "dependencies": {
317
- "@ai-sdk/openai": "^3.0.33",
318
317
  "@assistant-ui/react": "workspace:*",
319
318
  "@assistant-ui/react-markdown": "workspace:*",
320
319
  "@assistant-ui/ui": "workspace:*",
321
320
  "class-variance-authority": "^0.7.1",
322
321
  "clsx": "^2.1.1",
323
- "lucide-react": "^0.575.0",
322
+ "lucide-react": "^0.576.0",
324
323
  "next": "^16.1.6",
325
324
  "react": "^19.2.4",
326
325
  "react-dom": "^19.2.4",
@@ -329,10 +328,10 @@ export default nextConfig;
329
328
  "devDependencies": {
330
329
  "@assistant-ui/x-buildutils": "workspace:*",
331
330
  "@tailwindcss/postcss": "^4.2.1",
332
- "@types/node": "^25.3.0",
331
+ "@types/node": "^25.3.3",
333
332
  "@types/react": "^19.2.14",
334
333
  "@types/react-dom": "^19.2.3",
335
- "postcss": "^8.5.6",
334
+ "postcss": "^8.5.8",
336
335
  "tailwindcss": "^4.2.1",
337
336
  "tw-animate-css": "^1.4.0",
338
337
  "typescript": "^5.9.3"
@@ -523,17 +523,17 @@ export default nextConfig;
523
523
  "start": "next start"
524
524
  },
525
525
  "dependencies": {
526
- "@ai-sdk/openai": "^3.0.33",
526
+ "@ai-sdk/openai": "^3.0.39",
527
527
  "@assistant-ui/react": "workspace:*",
528
528
  "@assistant-ui/react-ai-sdk": "workspace:*",
529
529
  "@assistant-ui/react-markdown": "workspace:*",
530
530
  "@assistant-ui/ui": "workspace:*",
531
531
  "@ffmpeg/ffmpeg": "^0.12.15",
532
532
  "@ffmpeg/util": "^0.12.2",
533
- "ai": "^6.0.98",
533
+ "ai": "^6.0.111",
534
534
  "class-variance-authority": "^0.7.1",
535
535
  "clsx": "^2.1.1",
536
- "lucide-react": "^0.575.0",
536
+ "lucide-react": "^0.576.0",
537
537
  "next": "^16.1.6",
538
538
  "react": "^19.2.4",
539
539
  "react-dom": "^19.2.4",
@@ -543,10 +543,10 @@ export default nextConfig;
543
543
  "devDependencies": {
544
544
  "@assistant-ui/x-buildutils": "workspace:*",
545
545
  "@tailwindcss/postcss": "^4.2.1",
546
- "@types/node": "^25.3.0",
546
+ "@types/node": "^25.3.3",
547
547
  "@types/react": "^19.2.14",
548
548
  "@types/react-dom": "^19.2.3",
549
- "postcss": "^8.5.6",
549
+ "postcss": "^8.5.8",
550
550
  "tailwindcss": "^4.2.1",
551
551
  "tw-animate-css": "^1.4.0",
552
552
  "typescript": "^5.9.3"
@@ -869,10 +869,10 @@ export default nextConfig;
869
869
  "@assistant-ui/react-langgraph": "workspace:*",
870
870
  "@assistant-ui/react-markdown": "workspace:*",
871
871
  "@assistant-ui/ui": "workspace:*",
872
- "@langchain/langgraph-sdk": "^1.6.4",
872
+ "@langchain/langgraph-sdk": "^1.6.5",
873
873
  "class-variance-authority": "^0.7.1",
874
874
  "clsx": "^2.1.1",
875
- "lucide-react": "^0.575.0",
875
+ "lucide-react": "^0.576.0",
876
876
  "next": "^16.1.6",
877
877
  "react": "^19.2.4",
878
878
  "react-dom": "^19.2.4",
@@ -881,10 +881,10 @@ export default nextConfig;
881
881
  "devDependencies": {
882
882
  "@assistant-ui/x-buildutils": "workspace:*",
883
883
  "@tailwindcss/postcss": "^4.2.1",
884
- "@types/node": "^25.3.0",
884
+ "@types/node": "^25.3.3",
885
885
  "@types/react": "^19.2.14",
886
886
  "@types/react-dom": "^19.2.3",
887
- "postcss": "^8.5.6",
887
+ "postcss": "^8.5.8",
888
888
  "tailwindcss": "^4.2.1",
889
889
  "tw-animate-css": "^1.4.0",
890
890
  "typescript": "^5.9.3"
@@ -474,13 +474,13 @@ export default nextConfig;
474
474
  "start": "next start"
475
475
  },
476
476
  "dependencies": {
477
- "@ai-sdk/openai": "^3.0.33",
477
+ "@ai-sdk/openai": "^3.0.39",
478
478
  "@assistant-ui/react": "workspace:*",
479
479
  "@assistant-ui/react-markdown": "workspace:*",
480
480
  "@assistant-ui/ui": "workspace:*",
481
481
  "class-variance-authority": "^0.7.1",
482
482
  "clsx": "^2.1.1",
483
- "lucide-react": "^0.575.0",
483
+ "lucide-react": "^0.576.0",
484
484
  "next": "^16.1.6",
485
485
  "react": "^19.2.4",
486
486
  "react-dom": "^19.2.4",
@@ -489,10 +489,10 @@ export default nextConfig;
489
489
  "devDependencies": {
490
490
  "@assistant-ui/x-buildutils": "workspace:*",
491
491
  "@tailwindcss/postcss": "^4.2.1",
492
- "@types/node": "^25.3.0",
492
+ "@types/node": "^25.3.3",
493
493
  "@types/react": "^19.2.14",
494
494
  "@types/react-dom": "^19.2.3",
495
- "postcss": "^8.5.6",
495
+ "postcss": "^8.5.8",
496
496
  "tailwindcss": "^4.2.1",
497
497
  "tw-animate-css": "^1.4.0",
498
498
  "typescript": "^5.9.3"
@@ -537,32 +537,29 @@ export default nextConfig;
537
537
  "start": "next start"
538
538
  },
539
539
  "dependencies": {
540
- "@ai-sdk/openai": "^3.0.33",
540
+ "@ai-sdk/openai": "^3.0.39",
541
541
  "@assistant-ui/react": "workspace:*",
542
542
  "@assistant-ui/react-ai-sdk": "workspace:*",
543
543
  "@assistant-ui/react-hook-form": "workspace:*",
544
544
  "@assistant-ui/react-markdown": "workspace:*",
545
545
  "@assistant-ui/ui": "workspace:*",
546
- "@hookform/resolvers": "^5.2.2",
547
- "ai": "^6.0.98",
546
+ "ai": "^6.0.111",
548
547
  "class-variance-authority": "^0.7.1",
549
548
  "clsx": "^2.1.1",
550
- "lucide-react": "^0.575.0",
549
+ "lucide-react": "^0.576.0",
551
550
  "next": "^16.1.6",
552
551
  "react": "^19.2.4",
553
552
  "react-dom": "^19.2.4",
554
553
  "react-hook-form": "^7.71.2",
555
- "react-resizable-panels": "^4.6.5",
556
- "tailwind-merge": "^3.5.0",
557
- "zod": "^4.3.6"
554
+ "tailwind-merge": "^3.5.0"
558
555
  },
559
556
  "devDependencies": {
560
557
  "@assistant-ui/x-buildutils": "workspace:*",
561
558
  "@tailwindcss/postcss": "^4.2.1",
562
- "@types/node": "^25.3.0",
559
+ "@types/node": "^25.3.3",
563
560
  "@types/react": "^19.2.14",
564
561
  "@types/react-dom": "^19.2.3",
565
- "postcss": "^8.5.6",
562
+ "postcss": "^8.5.8",
566
563
  "tailwindcss": "^4.2.1",
567
564
  "tw-animate-css": "^1.4.0",
568
565
  "typescript": "^5.9.3"
@@ -772,25 +772,24 @@ export default function Home() {
772
772
  "dependencies": {
773
773
  "@assistant-ui/react": "workspace:*",
774
774
  "@assistant-ui/react-markdown": "workspace:*",
775
- "@react-router/node": "7.13.1",
776
- "@react-router/serve": "7.13.1",
775
+ "@react-router/node": "^7.13.1",
776
+ "@react-router/serve": "^7.13.1",
777
777
  "class-variance-authority": "^0.7.1",
778
778
  "clsx": "^2.1.1",
779
779
  "eventsource-parser": "^3.0.6",
780
780
  "isbot": "^5.1.35",
781
- "lucide-react": "^0.575.0",
781
+ "lucide-react": "^0.576.0",
782
782
  "openai": "^6.25.0",
783
783
  "react": "^19.2.4",
784
784
  "react-dom": "^19.2.4",
785
- "react-router": "7.13.1",
785
+ "react-router": "^7.13.1",
786
786
  "remark-gfm": "^4.0.1",
787
- "tailwind-merge": "^3.5.0",
788
- "zustand": "^5.0.11"
787
+ "tailwind-merge": "^3.5.0"
789
788
  },
790
789
  "devDependencies": {
791
- "@react-router/dev": "7.13.1",
790
+ "@react-router/dev": "^7.13.1",
792
791
  "@tailwindcss/vite": "^4.2.1",
793
- "@types/node": "^25.3.0",
792
+ "@types/node": "^25.3.3",
794
793
  "@types/react": "^19.2.14",
795
794
  "@types/react-dom": "^19.2.3",
796
795
  "tailwindcss": "^4.2.1",
@@ -484,10 +484,10 @@ export default nextConfig;
484
484
  "devDependencies": {
485
485
  "@assistant-ui/x-buildutils": "workspace:*",
486
486
  "@tailwindcss/postcss": "^4.2.1",
487
- "@types/node": "^25.3.0",
487
+ "@types/node": "^25.3.3",
488
488
  "@types/react": "^19.2.14",
489
489
  "@types/react-dom": "^19.2.3",
490
- "postcss": "^8.5.6",
490
+ "postcss": "^8.5.8",
491
491
  "tailwindcss": "^4.2.1",
492
492
  "tw-animate-css": "^1.4.0",
493
493
  "typescript": "^5.9.3"
@@ -65,11 +65,11 @@
65
65
  "@assistant-ui/react": "workspace:*",
66
66
  "@assistant-ui/react-markdown": "workspace:*",
67
67
  "@tailwindcss/vite": "^4.2.1",
68
- "@tanstack/react-router": "^1.162.9",
69
- "@tanstack/react-start": "^1.162.9",
68
+ "@tanstack/react-router": "^1.163.3",
69
+ "@tanstack/react-start": "^1.166.1",
70
70
  "class-variance-authority": "^0.7.1",
71
71
  "clsx": "^2.1.1",
72
- "lucide-react": "^0.575.0",
72
+ "lucide-react": "^0.576.0",
73
73
  "nitro": "^3.0.1-alpha.2",
74
74
  "openai": "^6.25.0",
75
75
  "react": "^19.2.4",
@@ -81,7 +81,7 @@
81
81
  },
82
82
  "devDependencies": {
83
83
  "@assistant-ui/x-buildutils": "workspace:*",
84
- "@types/node": "^25.3.0",
84
+ "@types/node": "^25.3.3",
85
85
  "@types/react": "^19.2.14",
86
86
  "@types/react-dom": "^19.2.3",
87
87
  "@vitejs/plugin-react": "^5.1.4",
@@ -595,7 +595,7 @@ export default nextConfig;
595
595
  "@assistant-ui/ui": "workspace:*",
596
596
  "class-variance-authority": "^0.7.1",
597
597
  "clsx": "^2.1.1",
598
- "lucide-react": "^0.575.0",
598
+ "lucide-react": "^0.576.0",
599
599
  "next": "^16.1.6",
600
600
  "react": "^19.2.4",
601
601
  "react-dom": "^19.2.4",
@@ -604,10 +604,10 @@ export default nextConfig;
604
604
  "devDependencies": {
605
605
  "@assistant-ui/x-buildutils": "workspace:*",
606
606
  "@tailwindcss/postcss": "^4.2.1",
607
- "@types/node": "^25.3.0",
607
+ "@types/node": "^25.3.3",
608
608
  "@types/react": "^19.2.14",
609
609
  "@types/react-dom": "^19.2.3",
610
- "postcss": "^8.5.6",
610
+ "postcss": "^8.5.8",
611
611
  "tailwindcss": "^4.2.1",
612
612
  "tw-animate-css": "^1.4.0",
613
613
  "typescript": "^5.9.3"
@@ -143,10 +143,14 @@ export async function POST(req: Request) {
143
143
 
144
144
  return result.toUIMessageStreamResponse({
145
145
  messageMetadata: ({ part }) => {
146
+ if (part.type === "finish") {
147
+ return {
148
+ usage: part.totalUsage,
149
+ };
150
+ }
146
151
  if (part.type === "finish-step") {
147
152
  return {
148
153
  modelId: part.response.modelId,
149
- usage: part.usage,
150
154
  };
151
155
  }
152
156
  return undefined;
@@ -227,10 +227,14 @@ export async function POST(req: Request) {
227
227
 
228
228
  return result.toUIMessageStreamResponse({
229
229
  messageMetadata: ({ part }) => {
230
+ if (part.type === "finish") {
231
+ return {
232
+ usage: part.totalUsage,
233
+ };
234
+ }
230
235
  if (part.type === "finish-step") {
231
236
  return {
232
237
  modelId: part.response.modelId,
233
- usage: part.usage,
234
238
  };
235
239
  }
236
240
  return undefined;
@@ -101,6 +101,59 @@ export default function Home() {
101
101
  </Step>
102
102
  </Steps>
103
103
 
104
+ ## Tracking Token Usage
105
+
106
+ assistant-ui exports a `useThreadTokenUsage` hook to access thread-level token usage on the client.
107
+ <Steps>
108
+ <Step>
109
+ Use `messageMetadata` in your Next.js route to attach `usage` from `finish` and `modelId` from `finish-step`.
110
+ ```tsx
111
+ import { streamText, convertToModelMessages } from "ai";
112
+ import { frontendTools } from "@assistant-ui/react-ai-sdk";
113
+ export async function POST(req: Request) {
114
+ const { messages, tools, modelName } = await req.json();
115
+ const result = streamText({
116
+ model: getModel(modelName),
117
+ messages: await convertToModelMessages(messages),
118
+ tools: frontendTools(tools),
119
+ });
120
+ return result.toUIMessageStreamResponse({
121
+ messageMetadata: ({ part }) => {
122
+ if (part.type === "finish") {
123
+ return {
124
+ usage: part.totalUsage,
125
+ };
126
+ }
127
+ if (part.type === "finish-step") {
128
+ return {
129
+ modelId: part.response.modelId,
130
+ };
131
+ }
132
+ return undefined;
133
+ },
134
+ });
135
+ }
136
+ ```
137
+ </Step>
138
+ <Step>
139
+ Use `useThreadTokenUsage` to render token usage on the client.
140
+
141
+ ```tsx
142
+ "use client";
143
+
144
+ import { useThreadTokenUsage } from "@assistant-ui/react-ai-sdk";
145
+
146
+ export function TokenCounter() {
147
+ const usage = useThreadTokenUsage();
148
+
149
+ if (!usage) return null;
150
+
151
+ return <div>{usage.totalTokens} total tokens</div>;
152
+ }
153
+ ```
154
+ </Step>
155
+ </Steps>
156
+
104
157
  ## Key Changes from v5
105
158
 
106
159
  | Feature | v5 | v6 |
@@ -0,0 +1,147 @@
1
+ ---
2
+ title: Context Display
3
+ description: Visualize token usage relative to a model's context window — ring, bar, or text — with a detailed hover popover.
4
+ ---
5
+
6
+ import { ContextDisplaySample } from "@/components/docs/samples/context-display";
7
+
8
+ <ContextDisplaySample />
9
+
10
+ <Callout type="info">
11
+ This component requires server-side setup to [forward token usage metadata](#forward-token-usage-from-your-route-handler). Without it, ContextDisplay will show 0 usage and no breakdown data.
12
+ </Callout>
13
+
14
+ ## Getting Started
15
+
16
+ <Steps>
17
+ <Step>
18
+
19
+ ### Add `context-display`
20
+
21
+ <InstallCommand shadcn={["context-display"]} />
22
+
23
+ This adds a `/components/assistant-ui/context-display.tsx` file to your project.
24
+
25
+ </Step>
26
+ <Step>
27
+
28
+ ### Forward token usage from your route handler
29
+
30
+ Use `messageMetadata` in your Next.js route to attach `usage` from `finish` and `modelId` from `finish-step`:
31
+
32
+ ```tsx title="app/api/chat/route.ts"
33
+ import { streamText, convertToModelMessages } from "ai";
34
+
35
+ export async function POST(req: Request) {
36
+ const { messages, modelName } = await req.json();
37
+ const result = streamText({
38
+ model: getModel(modelName),
39
+ messages: await convertToModelMessages(messages),
40
+ });
41
+ return result.toUIMessageStreamResponse({
42
+ messageMetadata: ({ part }) => {
43
+ if (part.type === "finish") {
44
+ return {
45
+ usage: part.totalUsage,
46
+ };
47
+ }
48
+ if (part.type === "finish-step") {
49
+ return {
50
+ modelId: part.response.modelId,
51
+ };
52
+ }
53
+ return undefined;
54
+ },
55
+ });
56
+ }
57
+ ```
58
+
59
+ </Step>
60
+ <Step>
61
+
62
+ ### Use in your application
63
+
64
+ Pick a variant and place it in your thread footer, composer, or sidebar. Pass `modelContextWindow` with your model's token limit.
65
+
66
+ ```tsx title="/components/assistant-ui/thread.tsx" {1,8}
67
+ import { ContextDisplay } from "@/components/assistant-ui/context-display";
68
+
69
+ const ThreadFooter: FC = () => {
70
+ return (
71
+ <div className="flex items-center justify-end px-3 py-1.5">
72
+ <ContextDisplay.Bar modelContextWindow={128000} />
73
+ </div>
74
+ );
75
+ };
76
+ ```
77
+
78
+ </Step>
79
+ </Steps>
80
+
81
+ ## Variants
82
+
83
+ Three preset variants are available, each wrapping the shared tooltip popover:
84
+
85
+ ```tsx
86
+ // SVG donut ring (default, compact)
87
+ <ContextDisplay.Ring modelContextWindow={128000} />
88
+
89
+ // Horizontal progress bar with label
90
+ <ContextDisplay.Bar modelContextWindow={128000} />
91
+
92
+ // Minimal monospace text
93
+ <ContextDisplay.Text modelContextWindow={128000} />
94
+ ```
95
+
96
+ All presets accept `className` for styling overrides and `side` to control tooltip placement (`"top"`, `"bottom"`, `"left"`, `"right"`).
97
+
98
+ ## Composable API
99
+
100
+ For custom visualizations, use the building blocks directly:
101
+
102
+ ```tsx
103
+ import { ContextDisplay } from "@/components/assistant-ui/context-display";
104
+
105
+ <ContextDisplay.Root modelContextWindow={128000}>
106
+ <ContextDisplay.Trigger aria-label="Context usage">
107
+ <MyCustomGauge />
108
+ </ContextDisplay.Trigger>
109
+ <ContextDisplay.Content side="top" />
110
+ </ContextDisplay.Root>
111
+ ```
112
+
113
+ | Component | Description |
114
+ |-----------|-------------|
115
+ | `Root` | Uses provided `usage` when supplied, otherwise fetches token usage internally; provides shared context and wraps children in a tooltip |
116
+ | `Trigger` | Button that opens the tooltip on hover |
117
+ | `Content` | Tooltip popover with the token breakdown (Usage %, Input, Cached, Output, Reasoning, Total) |
118
+
119
+ ## API Reference
120
+
121
+ ### Preset Props
122
+
123
+ All preset variants (`Ring`, `Bar`, `Text`) share the same props:
124
+
125
+ | Prop | Type | Default | Description |
126
+ |------|------|---------|-------------|
127
+ | `modelContextWindow` | `number` | — | Maximum token limit of the current model (required) |
128
+ | `className` | `string` | — | Additional class names on the trigger button |
129
+ | `side` | `"top" \| "bottom" \| "left" \| "right"` | `"top"` | Tooltip placement |
130
+ | `usage` | `ThreadTokenUsage` | — | Optional externally-provided usage data (skips internal usage fetch when provided) |
131
+
132
+ ### Color Thresholds
133
+
134
+ Ring and Bar share the same severity colors:
135
+
136
+ | Level | Threshold | Ring | Bar |
137
+ |-------|-----------|------|-----|
138
+ | Low | `< 65%` | `stroke-emerald-500` | `bg-emerald-500` |
139
+ | Warning | `65% – 85%` | `stroke-amber-500` | `bg-amber-500` |
140
+ | Critical | `> 85%` | `stroke-red-500` | `bg-red-500` |
141
+
142
+ Text displays numeric values only — no severity color.
143
+
144
+ ## Related
145
+
146
+ - [Message Timing](/docs/ui/message-timing) — Streaming performance stats (TTFT, tok/s)
147
+ - [Thread](/docs/ui/thread) — The thread component where ContextDisplay is typically placed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/mcp-docs-server",
3
- "version": "0.1.23",
3
+ "version": "0.1.24",
4
4
  "description": "MCP server for assistant-ui documentation and examples",
5
5
  "keywords": [
6
6
  "mcp",
@@ -38,7 +38,7 @@
38
38
  "zod": "^4.3.6"
39
39
  },
40
40
  "devDependencies": {
41
- "@types/node": "^25.3.0",
41
+ "@types/node": "^25.3.3",
42
42
  "tsx": "^4.21.0",
43
43
  "vitest": "^4.0.18",
44
44
  "@assistant-ui/x-buildutils": "0.0.1"