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

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.
@@ -118,14 +118,16 @@ import { FooList, FooListResource } from "./store/foo-store";
118
118
  */
119
119
  const Foo = () => {
120
120
  const aui = useAssistantClient();
121
- const fooState = useAssistantState(({ foo }) => {
122
- console.log("selector called with state", foo);
123
- return foo;
121
+ const fooId = useAssistantState(({ foo }) => foo.id);
122
+ const fooBar = useAssistantState(({ foo }) => foo.bar);
123
+
124
+ // Each foo logs its own events - only receives events from THIS foo instance
125
+ useAssistantEvent("foo.updated", (payload) => {
126
+ console.log(`[${fooId}] Updated to: ${payload.newValue}`);
124
127
  });
125
128
 
126
129
  const handleUpdate = () => {
127
130
  aui.foo().updateBar(`Updated at ${new Date().toLocaleTimeString()}`);
128
- console.log("Foo state", aui.foo().getState(), fooState);
129
131
  };
130
132
 
131
133
  return (
@@ -136,14 +138,14 @@ const Foo = () => {
136
138
  ID:
137
139
  </span>
138
140
  <span className="font-mono text-gray-900 text-sm dark:text-white">
139
- {fooState.id}
141
+ {fooId}
140
142
  </span>
141
143
  </div>
142
144
  <div className="flex items-center gap-2">
143
145
  <span className="font-semibold text-gray-500 text-sm dark:text-gray-400">
144
146
  Value:
145
147
  </span>
146
- <span className="text-gray-900 dark:text-white">{fooState.bar}</span>
148
+ <span className="text-gray-900 dark:text-white">{fooBar}</span>
147
149
  </div>
148
150
  <div className="mt-2 flex gap-2">
149
151
  <button
@@ -252,12 +254,12 @@ const EventLog = () => {
252
254
  * but we're explicitly passing it here for clarity in the example.
253
255
  */
254
256
  export const ExampleApp = () => {
255
- const rootClient = useAssistantClient({
256
- fooList: FooListResource(),
257
+ const aui = useAssistantClient({
258
+ fooList: FooListResource({ initialValues: true }),
257
259
  });
258
260
 
259
261
  return (
260
- <AssistantProvider client={rootClient}>
262
+ <AssistantProvider client={aui}>
261
263
  <div className="space-y-6">
262
264
  <div className="rounded-lg border border-gray-200 bg-white p-4 shadow-sm dark:border-gray-700 dark:bg-gray-800">
263
265
  <div className="flex items-center justify-between">
@@ -284,47 +286,48 @@ export const ExampleApp = () => {
284
286
  ## lib/store/foo-scope.ts
285
287
 
286
288
  ```typescript
287
- import { registerAssistantScope } from "@assistant-ui/store";
289
+ type FooState = { id: string; bar: string };
290
+ type FooMethods = {
291
+ getState: () => FooState;
292
+ updateBar: (newBar: string) => void;
293
+ remove: () => void;
294
+ };
295
+ type FooMeta = {
296
+ source: "fooList";
297
+ query: { index: number } | { key: string };
298
+ };
299
+ type FooEvents = {
300
+ "foo.updated": { id: string; newValue: string };
301
+ "foo.removed": { id: string };
302
+ };
303
+
304
+ type FooListState = { foos: FooState[] };
305
+ type FooListMethods = {
306
+ getState: () => FooListState;
307
+ foo: (lookup: FooMeta["query"]) => FooMethods;
308
+ addFoo: () => void;
309
+ };
310
+ type FooListEvents = {
311
+ "fooList.added": { id: string };
312
+ };
288
313
 
289
314
  declare module "@assistant-ui/store" {
290
- interface AssistantScopeRegistry {
315
+ interface ClientRegistry {
291
316
  foo: {
292
- value: {
293
- getState: () => { id: string; bar: string };
294
- updateBar: (newBar: string) => void;
295
- remove: () => void;
296
- };
297
- meta: { source: "fooList"; query: { index: number } | { id: string } };
298
- events: {
299
- "foo.updated": { id: string; newValue: string };
300
- "foo.removed": { id: string };
301
- };
317
+ state: FooState;
318
+ methods: FooMethods;
319
+ meta: FooMeta;
320
+ events: FooEvents;
302
321
  };
303
322
  fooList: {
304
- value: {
305
- getState: () => { foos: Array<{ id: string; bar: string }> };
306
- foo: (
307
- lookup: { index: number } | { id: string },
308
- ) => AssistantScopeRegistry["foo"]["value"];
309
- addFoo: (id?: string) => void;
310
- };
311
- meta: { source: "root"; query: Record<string, never> };
312
- events: {
313
- "fooList.added": { id: string };
314
- };
323
+ state: FooListState;
324
+ methods: FooListMethods;
325
+ events: FooListEvents;
315
326
  };
316
327
  }
317
328
  }
318
329
 
319
- registerAssistantScope({
320
- name: "fooList",
321
- defaultInitialize: { error: "FooList is not configured" },
322
- });
323
-
324
- registerAssistantScope({
325
- name: "foo",
326
- defaultInitialize: { error: "Foo is not configured" },
327
- });
330
+ export default {};
328
331
 
329
332
  ```
330
333
 
@@ -333,92 +336,88 @@ registerAssistantScope({
333
336
  ```tsx
334
337
  "use client";
335
338
 
336
- // Import scope types first to ensure module augmentation is available
337
339
  import "./foo-scope";
338
340
 
339
341
  import React from "react";
340
- import { resource, tapState } from "@assistant-ui/tap";
342
+ import { resource, tapMemo, tapState } from "@assistant-ui/tap";
341
343
  import {
342
344
  useAssistantClient,
343
345
  AssistantProvider,
344
- tapApi,
345
- tapStoreList,
346
- DerivedScope,
346
+ tapClientList,
347
+ Derived,
347
348
  useAssistantState,
348
- tapStoreContext,
349
+ tapAssistantEmit,
350
+ type ClientOutput,
349
351
  } from "@assistant-ui/store";
350
352
 
353
+ type FooData = { id: string; bar: string };
354
+
351
355
  export const FooItemResource = resource(
352
356
  ({
353
- initialValue: { id, initialBar },
357
+ getInitialData,
354
358
  remove,
355
- }: {
356
- initialValue: { id: string; initialBar: string };
357
- remove: () => void;
358
- }) => {
359
- const { events } = tapStoreContext();
360
-
361
- const [state, setState] = tapState<{ id: string; bar: string }>({
362
- id,
363
- bar: initialBar,
364
- });
359
+ }: tapClientList.ResourceProps<FooData>): ClientOutput<"foo"> => {
360
+ const emit = tapAssistantEmit();
361
+
362
+ const [state, setState] = tapState<FooData>(getInitialData);
365
363
 
366
364
  const updateBar = (newBar: string) => {
367
365
  setState({ ...state, bar: newBar });
368
- events.emit("foo.updated", { id, newValue: newBar });
366
+ emit("foo.updated", { id: state.id, newValue: newBar });
369
367
  };
370
368
 
371
369
  const handleRemove = () => {
372
- events.emit("foo.removed", { id });
370
+ emit("foo.removed", { id: state.id });
373
371
  remove();
374
372
  };
375
373
 
376
- return tapApi(
377
- {
374
+ return {
375
+ state,
376
+ methods: {
378
377
  getState: () => state,
379
378
  updateBar,
380
379
  remove: handleRemove,
381
380
  },
382
- { key: id },
383
- );
381
+ };
384
382
  },
385
383
  );
386
384
 
387
- /**
388
- * FooList resource implementation
389
- * Manages a list of foos using tapStoreList
390
- */
391
385
  let counter = 3;
392
- export const FooListResource = resource(() => {
393
- const { events } = tapStoreContext();
394
- const idGenerator = () => `foo-${++counter}`;
395
-
396
- const foos = tapStoreList({
397
- initialValues: [
398
- { id: "foo-1", initialBar: "First Foo" },
399
- { id: "foo-2", initialBar: "Second Foo" },
400
- { id: "foo-3", initialBar: "Third Foo" },
401
- ],
402
- resource: FooItemResource,
403
- idGenerator,
404
- });
386
+ export const FooListResource = resource(
387
+ ({ initialValues }: { initialValues: boolean }): ClientOutput<"fooList"> => {
388
+ const emit = tapAssistantEmit();
389
+
390
+ const foos = tapClientList({
391
+ initialValues: initialValues
392
+ ? [
393
+ { id: "foo-1", bar: "First Foo" },
394
+ { id: "foo-2", bar: "Second Foo" },
395
+ { id: "foo-3", bar: "Third Foo" },
396
+ ]
397
+ : [],
398
+ getKey: (foo) => foo.id,
399
+ resource: FooItemResource,
400
+ });
405
401
 
406
- const addFoo = (id?: string) => {
407
- const newId = id ?? idGenerator();
408
- foos.add(newId);
409
- events.emit("fooList.added", { id: newId });
410
- };
402
+ const addFoo = () => {
403
+ const id = `foo-${++counter}`;
404
+ foos.add({ id: id, bar: `New Foo` });
405
+ emit("fooList.added", { id: id });
406
+ };
411
407
 
412
- return tapApi({
413
- getState: () => ({ foos: foos.state }),
414
- foo: foos.api,
415
- addFoo,
416
- });
417
- });
408
+ const state = tapMemo(() => ({ foos: foos.state }), [foos.state]);
409
+
410
+ return {
411
+ state,
412
+ methods: {
413
+ getState: () => state,
414
+ foo: foos.get,
415
+ addFoo,
416
+ },
417
+ };
418
+ },
419
+ );
418
420
 
419
- /**
420
- * FooProvider - Provides foo scope for a specific index
421
- */
422
421
  export const FooProvider = ({
423
422
  index,
424
423
  children,
@@ -426,11 +425,10 @@ export const FooProvider = ({
426
425
  index: number;
427
426
  children: React.ReactNode;
428
427
  }) => {
429
- // Create a derived client with the foo scope at the specified index
430
428
  const aui = useAssistantClient({
431
- foo: DerivedScope({
429
+ foo: Derived({
432
430
  source: "fooList",
433
- query: { index },
431
+ query: { index: index },
434
432
  get: (aui) => aui.fooList().foo({ index }),
435
433
  }),
436
434
  });
@@ -438,10 +436,6 @@ export const FooProvider = ({
438
436
  return <AssistantProvider client={aui}>{children}</AssistantProvider>;
439
437
  };
440
438
 
441
- /**
442
- * FooList component - minimal mapping component
443
- * Maps over the list and renders each item in a FooProvider
444
- */
445
439
  export const FooList = ({
446
440
  components,
447
441
  }: {
@@ -490,14 +484,14 @@ export default nextConfig;
490
484
  "dependencies": {
491
485
  "@assistant-ui/store": "workspace:*",
492
486
  "@assistant-ui/tap": "workspace:*",
493
- "next": "16.0.7",
494
- "react": "19.2.1",
495
- "react-dom": "19.2.1"
487
+ "next": "16.0.10",
488
+ "react": "19.2.3",
489
+ "react-dom": "19.2.3"
496
490
  },
497
491
  "devDependencies": {
498
492
  "@assistant-ui/x-buildutils": "workspace:*",
499
493
  "@tailwindcss/postcss": "^4",
500
- "@types/node": "^24",
494
+ "@types/node": "^25",
501
495
  "@types/react": "19.2.7",
502
496
  "@types/react-dom": "19.2.3",
503
497
  "tailwindcss": "^4",
@@ -516,9 +510,10 @@ This is a Next.js application demonstrating the `@assistant-ui/store` package.
516
510
 
517
511
  ## Features Demonstrated
518
512
 
519
- - **Scope Definition**: Module augmentation for type-safe scopes
520
- - **tapApi**: Wrapping API objects for stability and reactivity
521
- - **tapLookupResources**: Managing lists with index and ID lookup
513
+ - **Client Registry**: Module augmentation for type-safe client definitions
514
+ - **tapClientList**: Managing lists with index and key lookup
515
+ - **tapAssistantEmit**: Emitting and subscribing to scoped events
516
+ - **Derived**: Creating derived client scopes from parent resources
522
517
  - **Provider Pattern**: Scoped access to list items via FooProvider
523
518
  - **Component Composition**: Render props pattern with components prop
524
519
 
@@ -537,33 +532,42 @@ Open [http://localhost:3000](http://localhost:3000) to see the example.
537
532
 
538
533
  ## Project Structure
539
534
 
540
- - `lib/store/foo-store.tsx` - Clean store implementation with:
541
- - Scope definitions (foo, fooList) via module augmentation
535
+ - `lib/store/foo-scope.ts` - Type definitions via module augmentation:
536
+ - Client registry definitions (foo, fooList)
537
+ - State, methods, meta, and events types
538
+ - `lib/store/foo-store.tsx` - Store implementation with:
542
539
  - Resource implementations (FooItemResource, FooListResource)
543
540
  - Provider component (FooProvider)
544
- - Minimal FooList mapping component
541
+ - FooList mapping component
545
542
  - `lib/example-app.tsx` - Example app with styled components:
546
- - Styled Foo component
543
+ - Foo component with update/delete actions
544
+ - EventLog component demonstrating event subscriptions
547
545
  - ExampleApp with layout and styling
548
546
  - `app/page.tsx` - Main page that renders the ExampleApp
549
547
 
550
548
  ## Key Concepts
551
549
 
552
- ### Scope Definition
550
+ ### Client Registry
553
551
 
554
552
  ```typescript
555
553
  declare module "@assistant-ui/store" {
556
- namespace AssistantStore {
557
- interface Scopes {
558
- foo: {
559
- value: {
560
- getState: () => { id: string; bar: string };
561
- updateBar: (newBar: string) => void;
562
- };
554
+ interface ClientRegistry {
555
+ foo: {
556
+ state: { id: string; bar: string };
557
+ methods: {
558
+ getState: () => FooState;
559
+ updateBar: (newBar: string) => void;
560
+ remove: () => void;
561
+ };
562
+ meta: {
563
563
  source: "fooList";
564
- query: { index: number } | { id: string };
564
+ query: { index: number } | { key: string };
565
565
  };
566
- }
566
+ events: {
567
+ "foo.updated": { id: string; newValue: string };
568
+ "foo.removed": { id: string };
569
+ };
570
+ };
567
571
  }
568
572
  }
569
573
  ```
@@ -571,33 +575,57 @@ declare module "@assistant-ui/store" {
571
575
  ### Resource Implementation
572
576
 
573
577
  ```typescript
574
- const FooListResource = resource(() => {
575
- const items = [
576
- /* ... */
577
- ];
578
- const foos = tapLookupResources(
579
- items.map((item) => FooItemResource(item, { key: item.id })),
580
- );
578
+ const FooListResource = resource(
579
+ ({ initialValues }): ClientOutput<"fooList"> => {
580
+ const emit = tapAssistantEmit();
581
+
582
+ const foos = tapClientList({
583
+ initialValues: initialValues ? [/* ... */] : [],
584
+ getKey: (foo) => foo.id,
585
+ resource: FooItemResource,
586
+ });
581
587
 
582
- return tapApi({
583
- getState: () => ({ foos: foos.state }),
584
- foo: foos.api,
585
- });
586
- });
588
+ return {
589
+ state: { foos: foos.state },
590
+ methods: {
591
+ getState: () => state,
592
+ foo: foos.get,
593
+ addFoo: () => { /* ... */ },
594
+ },
595
+ };
596
+ },
597
+ );
587
598
  ```
588
599
 
589
- ### Provider Pattern
600
+ ### Provider Pattern with Derived
590
601
 
591
602
  ```typescript
592
603
  const FooProvider = ({ index, children }) => {
593
- const parentAui = useAssistantClient();
594
604
  const aui = useAssistantClient({
595
- foo: resource(() => parentAui.fooList().foo({ index }))(),
605
+ foo: Derived({
606
+ source: "fooList",
607
+ query: { index },
608
+ get: (aui) => aui.fooList().foo({ index }),
609
+ }),
596
610
  });
597
- return <AssistantClientProvider client={aui}>{children}</AssistantClientProvider>;
611
+ return <AssistantProvider client={aui}>{children}</AssistantProvider>;
598
612
  };
599
613
  ```
600
614
 
615
+ ### Event Subscriptions
616
+
617
+ ```typescript
618
+ // Subscribe to specific events within a scope
619
+ useAssistantEvent("foo.updated", (payload) => {
620
+ console.log(`Updated to: ${payload.newValue}`);
621
+ });
622
+
623
+ // Subscribe to all events using wildcard
624
+ useAssistantEvent("*", (data) => {
625
+ console.log(data.event, data.payload);
626
+ });
627
+ ```
628
+
601
629
  ## Learn More
602
630
 
603
631
  - [@assistant-ui/store Documentation](../store/README.md)
@@ -1635,7 +1635,7 @@ export default nextConfig;
1635
1635
  "start": "next start"
1636
1636
  },
1637
1637
  "dependencies": {
1638
- "@ai-sdk/openai": "^2.0.77",
1638
+ "@ai-sdk/openai": "^2.0.84",
1639
1639
  "@assistant-ui/react": "workspace:*",
1640
1640
  "@assistant-ui/react-markdown": "workspace:*",
1641
1641
  "@assistant-ui/react-ag-ui": "workspace:*",
@@ -1646,10 +1646,10 @@ export default nextConfig;
1646
1646
  "@radix-ui/react-tooltip": "^1.2.8",
1647
1647
  "class-variance-authority": "^0.7.1",
1648
1648
  "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",
1649
+ "lucide-react": "^0.560.0",
1650
+ "next": "16.0.10",
1651
+ "react": "19.2.3",
1652
+ "react-dom": "19.2.3",
1653
1653
  "remark-gfm": "^4.0.1",
1654
1654
  "tailwind-merge": "^3.4.0",
1655
1655
  "tw-animate-css": "^1.4.0",
@@ -1657,11 +1657,11 @@ export default nextConfig;
1657
1657
  },
1658
1658
  "devDependencies": {
1659
1659
  "@assistant-ui/x-buildutils": "workspace:*",
1660
- "@types/node": "^24",
1660
+ "@types/node": "^25",
1661
1661
  "@types/react": "^19",
1662
1662
  "@types/react-dom": "^19",
1663
1663
  "postcss": "^8",
1664
- "tailwindcss": "^4.1.17",
1664
+ "tailwindcss": "^4.1.18",
1665
1665
  "typescript": "^5"
1666
1666
  }
1667
1667
  }
@@ -1586,8 +1586,8 @@ export default nextConfig;
1586
1586
  "version": "0.0.0",
1587
1587
  "type": "module",
1588
1588
  "dependencies": {
1589
- "@ai-sdk/openai": "^2.0.77",
1590
- "@ai-sdk/react": "^2.0.107",
1589
+ "@ai-sdk/openai": "^2.0.84",
1590
+ "@ai-sdk/react": "^2.0.114",
1591
1591
  "@assistant-ui/react": "workspace:^",
1592
1592
  "@assistant-ui/react-ai-sdk": "workspace:*",
1593
1593
  "@assistant-ui/react-markdown": "workspace:^",
@@ -1595,24 +1595,24 @@ export default nextConfig;
1595
1595
  "@radix-ui/react-dialog": "^1.1.15",
1596
1596
  "@radix-ui/react-slot": "^1.2.4",
1597
1597
  "@radix-ui/react-tooltip": "^1.2.8",
1598
- "@tailwindcss/postcss": "^4.1.17",
1599
- "ai": "^5.0.107",
1598
+ "@tailwindcss/postcss": "^4.1.18",
1599
+ "ai": "^5.0.112",
1600
1600
  "class-variance-authority": "^0.7.1",
1601
1601
  "clsx": "^2.1.1",
1602
- "lucide-react": "^0.556.0",
1603
- "next": "16.0.7",
1602
+ "lucide-react": "^0.560.0",
1603
+ "next": "16.0.10",
1604
1604
  "postcss": "^8.5.6",
1605
- "react": "19.2.1",
1606
- "react-dom": "19.2.1",
1605
+ "react": "19.2.3",
1606
+ "react-dom": "19.2.3",
1607
1607
  "remark-gfm": "^4.0.1",
1608
1608
  "tailwind-merge": "^3.4.0",
1609
- "tailwindcss": "^4.1.17",
1609
+ "tailwindcss": "^4.1.18",
1610
1610
  "zod": "^4.1.13",
1611
1611
  "zustand": "^5.0.9"
1612
1612
  },
1613
1613
  "devDependencies": {
1614
1614
  "@assistant-ui/x-buildutils": "workspace:*",
1615
- "@types/node": "^24.10.1",
1615
+ "@types/node": "^25.0.0",
1616
1616
  "@types/react": "^19.2.7",
1617
1617
  "@types/react-dom": "^19.2.3",
1618
1618
  "tw-animate-css": "^1.4.0",
@@ -1717,25 +1717,25 @@ export default nextConfig;
1717
1717
  "@radix-ui/react-dialog": "^1.1.15",
1718
1718
  "@radix-ui/react-slot": "^1.2.4",
1719
1719
  "@radix-ui/react-tooltip": "^1.2.8",
1720
- "@tailwindcss/postcss": "^4.1.17",
1721
- "assistant-stream": "^0.2.44",
1720
+ "@tailwindcss/postcss": "^4.1.18",
1721
+ "assistant-stream": "^0.2.45",
1722
1722
  "class-variance-authority": "^0.7.1",
1723
1723
  "clsx": "^2.1.1",
1724
- "lucide-react": "^0.556.0",
1725
- "next": "16.0.7",
1724
+ "lucide-react": "^0.560.0",
1725
+ "next": "16.0.10",
1726
1726
  "postcss": "^8.5.6",
1727
- "react": "19.2.1",
1728
- "react-dom": "19.2.1",
1727
+ "react": "19.2.3",
1728
+ "react-dom": "19.2.3",
1729
1729
  "remark-gfm": "^4.0.1",
1730
1730
  "tailwind-merge": "^3.4.0",
1731
- "tailwindcss": "^4.1.17",
1731
+ "tailwindcss": "^4.1.18",
1732
1732
  "tailwindcss-animate": "^1.0.7",
1733
1733
  "zod": "^4.1.13",
1734
1734
  "zustand": "^5.0.9"
1735
1735
  },
1736
1736
  "devDependencies": {
1737
1737
  "@assistant-ui/x-buildutils": "workspace:*",
1738
- "@types/node": "^24.10.1",
1738
+ "@types/node": "^25.0.0",
1739
1739
  "@types/react": "^19.2.7",
1740
1740
  "@types/react-dom": "^19.2.3",
1741
1741
  "tw-animate-css": "^1.4.0",
@@ -1726,7 +1726,7 @@ export default nextConfig;
1726
1726
  "start": "next start"
1727
1727
  },
1728
1728
  "dependencies": {
1729
- "@ai-sdk/openai": "^2.0.77",
1729
+ "@ai-sdk/openai": "^2.0.84",
1730
1730
  "@assistant-ui/react": "workspace:*",
1731
1731
  "@assistant-ui/react-ai-sdk": "workspace:*",
1732
1732
  "@assistant-ui/react-markdown": "workspace:*",
@@ -1734,15 +1734,15 @@ export default nextConfig;
1734
1734
  "@radix-ui/react-dialog": "^1.1.15",
1735
1735
  "@radix-ui/react-slot": "^1.2.4",
1736
1736
  "@radix-ui/react-tooltip": "^1.2.8",
1737
- "ai": "^5.0.107",
1737
+ "ai": "^5.0.112",
1738
1738
  "class-variance-authority": "^0.7.1",
1739
1739
  "clsx": "^2.1.1",
1740
1740
  "jsonwebtoken": "^9.0.3",
1741
- "lucide-react": "^0.556.0",
1741
+ "lucide-react": "^0.560.0",
1742
1742
  "nanoid": "5.1.6",
1743
- "next": "16.0.7",
1744
- "react": "19.2.1",
1745
- "react-dom": "19.2.1",
1743
+ "next": "16.0.10",
1744
+ "react": "19.2.3",
1745
+ "react-dom": "19.2.3",
1746
1746
  "remark-gfm": "^4.0.1",
1747
1747
  "tailwind-merge": "^3.4.0",
1748
1748
  "tw-animate-css": "^1.4.0",
@@ -1751,11 +1751,11 @@ export default nextConfig;
1751
1751
  "devDependencies": {
1752
1752
  "@assistant-ui/x-buildutils": "workspace:*",
1753
1753
  "@types/jsonwebtoken": "^9.0.10",
1754
- "@types/node": "^24",
1754
+ "@types/node": "^25",
1755
1755
  "@types/react": "^19",
1756
1756
  "@types/react-dom": "^19",
1757
1757
  "postcss": "^8",
1758
- "tailwindcss": "^4.1.17",
1758
+ "tailwindcss": "^4.1.18",
1759
1759
  "typescript": "^5"
1760
1760
  }
1761
1761
  }
@@ -1778,8 +1778,8 @@ export default nextConfig;
1778
1778
  "version": "0.0.0",
1779
1779
  "type": "module",
1780
1780
  "dependencies": {
1781
- "@ai-sdk/openai": "^2.0.77",
1782
- "@ai-sdk/react": "^2.0.107",
1781
+ "@ai-sdk/openai": "^2.0.84",
1782
+ "@ai-sdk/react": "^2.0.114",
1783
1783
  "@assistant-ui/react": "workspace:^",
1784
1784
  "@assistant-ui/react-ai-sdk": "workspace:*",
1785
1785
  "@assistant-ui/react-markdown": "workspace:^",
@@ -1787,25 +1787,25 @@ export default nextConfig;
1787
1787
  "@radix-ui/react-dialog": "^1.1.15",
1788
1788
  "@radix-ui/react-slot": "^1.2.4",
1789
1789
  "@radix-ui/react-tooltip": "^1.2.8",
1790
- "@tailwindcss/postcss": "^4.1.17",
1791
- "ai": "^5.0.107",
1790
+ "@tailwindcss/postcss": "^4.1.18",
1791
+ "ai": "^5.0.112",
1792
1792
  "assistant-stream": "workspace:*",
1793
1793
  "class-variance-authority": "^0.7.1",
1794
1794
  "clsx": "^2.1.1",
1795
- "lucide-react": "^0.556.0",
1796
- "next": "16.0.7",
1795
+ "lucide-react": "^0.560.0",
1796
+ "next": "16.0.10",
1797
1797
  "postcss": "^8.5.6",
1798
- "react": "19.2.1",
1799
- "react-dom": "19.2.1",
1798
+ "react": "19.2.3",
1799
+ "react-dom": "19.2.3",
1800
1800
  "remark-gfm": "^4.0.1",
1801
1801
  "tailwind-merge": "^3.4.0",
1802
- "tailwindcss": "^4.1.17",
1802
+ "tailwindcss": "^4.1.18",
1803
1803
  "zod": "^4.1.13",
1804
1804
  "zustand": "^5.0.9"
1805
1805
  },
1806
1806
  "devDependencies": {
1807
1807
  "@assistant-ui/x-buildutils": "workspace:*",
1808
- "@types/node": "^24.10.1",
1808
+ "@types/node": "^25.0.0",
1809
1809
  "@types/react": "^19.2.7",
1810
1810
  "@types/react-dom": "^19.2.3",
1811
1811
  "tw-animate-css": "^1.4.0",
@@ -1608,7 +1608,7 @@ export default nextConfig;
1608
1608
  "start": "next start"
1609
1609
  },
1610
1610
  "dependencies": {
1611
- "@ai-sdk/openai": "^2.0.77",
1611
+ "@ai-sdk/openai": "^2.0.84",
1612
1612
  "@assistant-ui/react": "workspace:*",
1613
1613
  "@assistant-ui/react-markdown": "workspace:*",
1614
1614
  "@radix-ui/react-avatar": "^1.1.11",
@@ -1617,10 +1617,10 @@ export default nextConfig;
1617
1617
  "@radix-ui/react-tooltip": "^1.2.8",
1618
1618
  "class-variance-authority": "^0.7.1",
1619
1619
  "clsx": "^2.1.1",
1620
- "lucide-react": "^0.556.0",
1621
- "next": "16.0.7",
1622
- "react": "19.2.1",
1623
- "react-dom": "19.2.1",
1620
+ "lucide-react": "^0.560.0",
1621
+ "next": "16.0.10",
1622
+ "react": "19.2.3",
1623
+ "react-dom": "19.2.3",
1624
1624
  "remark-gfm": "^4.0.1",
1625
1625
  "tailwind-merge": "^3.4.0",
1626
1626
  "tw-animate-css": "^1.4.0",
@@ -1628,11 +1628,11 @@ export default nextConfig;
1628
1628
  },
1629
1629
  "devDependencies": {
1630
1630
  "@assistant-ui/x-buildutils": "workspace:*",
1631
- "@types/node": "^24",
1631
+ "@types/node": "^25",
1632
1632
  "@types/react": "^19",
1633
1633
  "@types/react-dom": "^19",
1634
1634
  "postcss": "^8",
1635
- "tailwindcss": "^4.1.17",
1635
+ "tailwindcss": "^4.1.18",
1636
1636
  "typescript": "^5"
1637
1637
  }
1638
1638
  }
@@ -1820,7 +1820,7 @@ export default nextConfig;
1820
1820
  "start": "next start"
1821
1821
  },
1822
1822
  "dependencies": {
1823
- "@ai-sdk/openai": "^2.0.77",
1823
+ "@ai-sdk/openai": "^2.0.84",
1824
1824
  "@assistant-ui/react": "workspace:*",
1825
1825
  "@assistant-ui/react-ai-sdk": "workspace:*",
1826
1826
  "@assistant-ui/react-hook-form": "workspace:*",
@@ -1836,13 +1836,13 @@ export default nextConfig;
1836
1836
  "@radix-ui/react-tabs": "^1.1.13",
1837
1837
  "@radix-ui/react-tooltip": "^1.2.8",
1838
1838
  "@react-hook/media-query": "^1.1.1",
1839
- "ai": "^5.0.107",
1839
+ "ai": "^5.0.112",
1840
1840
  "class-variance-authority": "^0.7.1",
1841
1841
  "clsx": "^2.1.1",
1842
- "lucide-react": "^0.556.0",
1843
- "next": "16.0.7",
1844
- "react": "19.2.1",
1845
- "react-dom": "19.2.1",
1842
+ "lucide-react": "^0.560.0",
1843
+ "next": "16.0.10",
1844
+ "react": "19.2.3",
1845
+ "react-dom": "19.2.3",
1846
1846
  "react-hook-form": "^7.68.0",
1847
1847
  "react-resizable-panels": "^3.0.6",
1848
1848
  "remark-gfm": "^4.0.1",
@@ -1853,11 +1853,11 @@ export default nextConfig;
1853
1853
  },
1854
1854
  "devDependencies": {
1855
1855
  "@assistant-ui/x-buildutils": "workspace:*",
1856
- "@types/node": "^24",
1856
+ "@types/node": "^25",
1857
1857
  "@types/react": "^19",
1858
1858
  "@types/react-dom": "^19",
1859
1859
  "postcss": "^8",
1860
- "tailwindcss": "^4.1.17",
1860
+ "tailwindcss": "^4.1.18",
1861
1861
  "typescript": "^5.9.3"
1862
1862
  }
1863
1863
  }
@@ -2308,11 +2308,11 @@ export default nextConfig;
2308
2308
  "clsx": "^2.1.1",
2309
2309
  "js-cookie": "^3.0.5",
2310
2310
  "jsonwebtoken": "^9.0.3",
2311
- "lucide-react": "^0.556.0",
2311
+ "lucide-react": "^0.560.0",
2312
2312
  "nanoid": "5.1.6",
2313
- "next": "16.0.7",
2314
- "react": "19.2.1",
2315
- "react-dom": "19.2.1",
2313
+ "next": "16.0.10",
2314
+ "react": "19.2.3",
2315
+ "react-dom": "19.2.3",
2316
2316
  "remark-gfm": "^4.0.1",
2317
2317
  "tailwind-merge": "^3.4.0",
2318
2318
  "tw-animate-css": "^1.4.0",
@@ -2322,11 +2322,11 @@ export default nextConfig;
2322
2322
  "@assistant-ui/x-buildutils": "workspace:*",
2323
2323
  "@types/js-cookie": "^3.0.6",
2324
2324
  "@types/jsonwebtoken": "^9.0.10",
2325
- "@types/node": "^24",
2325
+ "@types/node": "^25",
2326
2326
  "@types/react": "^19",
2327
2327
  "@types/react-dom": "^19",
2328
2328
  "postcss": "^8",
2329
- "tailwindcss": "^4.1.17",
2329
+ "tailwindcss": "^4.1.18",
2330
2330
  "typescript": "^5.9.3"
2331
2331
  }
2332
2332
  }
@@ -1768,7 +1768,7 @@ export default nextConfig;
1768
1768
  "start": "next start"
1769
1769
  },
1770
1770
  "dependencies": {
1771
- "@ai-sdk/openai": "^2.0.77",
1771
+ "@ai-sdk/openai": "^2.0.84",
1772
1772
  "@assistant-ui/react": "workspace:*",
1773
1773
  "@assistant-ui/react-markdown": "workspace:*",
1774
1774
  "@radix-ui/react-avatar": "^1.1.11",
@@ -1777,10 +1777,10 @@ export default nextConfig;
1777
1777
  "@radix-ui/react-tooltip": "^1.2.8",
1778
1778
  "class-variance-authority": "^0.7.1",
1779
1779
  "clsx": "^2.1.1",
1780
- "lucide-react": "^0.556.0",
1781
- "next": "16.0.7",
1782
- "react": "19.2.1",
1783
- "react-dom": "19.2.1",
1780
+ "lucide-react": "^0.560.0",
1781
+ "next": "16.0.10",
1782
+ "react": "19.2.3",
1783
+ "react-dom": "19.2.3",
1784
1784
  "remark-gfm": "^4.0.1",
1785
1785
  "tailwind-merge": "^3.4.0",
1786
1786
  "tw-animate-css": "^1.4.0",
@@ -1788,11 +1788,11 @@ export default nextConfig;
1788
1788
  },
1789
1789
  "devDependencies": {
1790
1790
  "@assistant-ui/x-buildutils": "workspace:*",
1791
- "@types/node": "^24",
1791
+ "@types/node": "^25",
1792
1792
  "@types/react": "^19",
1793
1793
  "@types/react-dom": "^19",
1794
1794
  "postcss": "^8",
1795
- "tailwindcss": "^4.1.17",
1795
+ "tailwindcss": "^4.1.18",
1796
1796
  "typescript": "^5"
1797
1797
  }
1798
1798
  }
@@ -2218,7 +2218,7 @@ export default nextConfig;
2218
2218
  "start": "next start"
2219
2219
  },
2220
2220
  "dependencies": {
2221
- "@ai-sdk/openai": "^2.0.77",
2221
+ "@ai-sdk/openai": "^2.0.84",
2222
2222
  "@assistant-ui/react": "workspace:*",
2223
2223
  "@assistant-ui/react-ai-sdk": "workspace:*",
2224
2224
  "@assistant-ui/react-hook-form": "workspace:*",
@@ -2232,13 +2232,13 @@ export default nextConfig;
2232
2232
  "@radix-ui/react-tabs": "^1.1.13",
2233
2233
  "@radix-ui/react-tooltip": "^1.2.8",
2234
2234
  "@react-hook/media-query": "^1.1.1",
2235
- "ai": "^5.0.107",
2235
+ "ai": "^5.0.112",
2236
2236
  "class-variance-authority": "^0.7.1",
2237
2237
  "clsx": "^2.1.1",
2238
- "lucide-react": "^0.556.0",
2239
- "next": "16.0.7",
2240
- "react": "19.2.1",
2241
- "react-dom": "19.2.1",
2238
+ "lucide-react": "^0.560.0",
2239
+ "next": "16.0.10",
2240
+ "react": "19.2.3",
2241
+ "react-dom": "19.2.3",
2242
2242
  "react-hook-form": "^7.68.0",
2243
2243
  "react-resizable-panels": "^3.0.6",
2244
2244
  "remark-gfm": "^4.0.1",
@@ -2249,11 +2249,11 @@ export default nextConfig;
2249
2249
  },
2250
2250
  "devDependencies": {
2251
2251
  "@assistant-ui/x-buildutils": "workspace:*",
2252
- "@types/node": "^24",
2252
+ "@types/node": "^25",
2253
2253
  "@types/react": "^19",
2254
2254
  "@types/react-dom": "^19",
2255
2255
  "postcss": "^8",
2256
- "tailwindcss": "^4.1.17",
2256
+ "tailwindcss": "^4.1.18",
2257
2257
  "typescript": "^5.9.3"
2258
2258
  }
2259
2259
  }
@@ -35,29 +35,29 @@
35
35
  "@assistant-ui/react-markdown": "workspace:*",
36
36
  "@radix-ui/react-slot": "^1.2.4",
37
37
  "@radix-ui/react-tooltip": "^1.2.8",
38
- "@tailwindcss/vite": "^4.1.17",
39
- "@tanstack/react-router": "^1.139.14",
40
- "@tanstack/react-start": "^1.139.14",
41
- "@tanstack/router-plugin": "^1.139.14",
38
+ "@tailwindcss/vite": "^4.1.18",
39
+ "@tanstack/react-router": "^1.141.1",
40
+ "@tanstack/react-start": "^1.141.1",
41
+ "@tanstack/router-plugin": "^1.141.1",
42
42
  "class-variance-authority": "^0.7.1",
43
43
  "clsx": "^2.1.1",
44
- "lucide-react": "^0.555.0",
44
+ "lucide-react": "^0.560.0",
45
45
  "nitro": "latest",
46
46
  "openai": "^6.10.0",
47
- "react": "^19.2.1",
48
- "react-dom": "^19.2.1",
47
+ "react": "^19.2.3",
48
+ "react-dom": "^19.2.3",
49
49
  "remark-gfm": "^4.0.1",
50
50
  "tailwind-merge": "^3.4.0",
51
- "tailwindcss": "^4.1.17",
51
+ "tailwindcss": "^4.1.18",
52
52
  "vite-tsconfig-paths": "^5.1.4"
53
53
  },
54
54
  "devDependencies": {
55
- "@types/node": "^22.19.1",
55
+ "@types/node": "^25.0.0",
56
56
  "@types/react": "^19.2.7",
57
57
  "@types/react-dom": "^19.2.3",
58
- "@vitejs/plugin-react": "^5.1.1",
58
+ "@vitejs/plugin-react": "^5.1.2",
59
59
  "typescript": "^5.9.3",
60
- "vite": "^7.2.6"
60
+ "vite": "^7.2.7"
61
61
  }
62
62
  }
63
63
 
@@ -1558,7 +1558,11 @@ import { nitro } from "nitro/vite";
1558
1558
 
1559
1559
  const config = defineConfig({
1560
1560
  plugins: [
1561
- nitro(),
1561
+ nitro({
1562
+ output: {
1563
+ dir: "dist",
1564
+ },
1565
+ }),
1562
1566
  viteTsConfigPaths({
1563
1567
  projects: ["./tsconfig.json"],
1564
1568
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/mcp-docs-server",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "description": "MCP server for assistant-ui documentation and examples",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,7 +14,7 @@
14
14
  "cross-env": "^10.1.0"
15
15
  },
16
16
  "devDependencies": {
17
- "@types/node": "^24.10.1",
17
+ "@types/node": "^25.0.0",
18
18
  "tsup": "^8.5.1",
19
19
  "tsx": "^4.21.0",
20
20
  "typescript": "^5.9.3",