@lantos1618/better-ui 0.6.1 → 0.7.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.
package/README.md CHANGED
@@ -3,9 +3,13 @@
3
3
  > Define once. Render in UI. Serve over MCP. Type-safe AI tools with views.
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@lantos1618/better-ui.svg)](https://www.npmjs.com/package/@lantos1618/better-ui)
6
+ [![npm downloads](https://img.shields.io/npm/dm/@lantos1618/better-ui.svg)](https://www.npmjs.com/package/@lantos1618/better-ui)
7
+ [![CI](https://github.com/lantos1618/better-ui/actions/workflows/test.yml/badge.svg)](https://github.com/lantos1618/better-ui/actions/workflows/test.yml)
6
8
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
9
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue)](https://www.typescriptlang.org/)
8
10
 
11
+ **[Guide](./GUIDE.md)** · **[API Reference](./docs/)** · **[Examples](./examples/)**
12
+
9
13
  ## The Problem
10
14
 
11
15
  Every AI framework lets you define tools. None of them let the tool own its own UI. You end up with tool definitions in one place, rendering logic scattered somewhere else, and no way to expose those same tools to external AI clients.
@@ -568,10 +572,27 @@ examples/
568
572
  ```bash
569
573
  npm install
570
574
  npm run build # Build library
571
- npm test # Run tests (226 tests)
575
+ npm test # Run 228 tests across 11 suites
572
576
  npm run type-check # TypeScript check
573
577
  ```
574
578
 
579
+ ## Deploy the Demo
580
+
581
+ The `examples/nextjs-demo/` is a full-featured chat app ready to deploy:
582
+
583
+ ```bash
584
+ cd examples/nextjs-demo
585
+ npm install
586
+ # Set OPENAI_API_KEY in .env.local
587
+ npm run dev
588
+ ```
589
+
590
+ To deploy on Vercel, set the **Root Directory** to `examples/nextjs-demo` in your project settings.
591
+
592
+ ## Contributing
593
+
594
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
595
+
575
596
  ## License
576
597
 
577
598
  MIT
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React from 'react';
3
3
  import { UIMessage, ChatStatus } from 'ai';
4
- import { T as Tool } from './tool-Ca2x-VNK.js';
4
+ import { T as Tool } from './tool-yZTixiN2.js';
5
5
  import { P as PersistenceAdapter, T as Thread$1 } from './types-CAOfGUPH.js';
6
6
 
7
7
  interface ToolStateEntry {
@@ -184,4 +184,4 @@ interface ThemeProviderProps {
184
184
  */
185
185
  declare function ThemeProvider({ theme, variables, className, children, }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
186
186
 
187
- export { type ChatProviderProps as C, type MessageProps as M, type ToolPartInfo as T, type ThreadProps as a, type ComposerProps as b, type ToolResultProps as c, type ChatProps as d, type ThemeProviderProps as e, type ToolStateStore as f, type ToolStateEntry as g, ChatProvider as h, Thread as i, Message as j, Composer as k, ToolResult as l, Chat as m, createToolStateStore as n, useToolState as o, ThemeProvider as p, useChatContext as u };
187
+ export { type ChatProps as C, type MessageProps as M, type ThemeProviderProps as T, type ChatProviderProps as a, type ComposerProps as b, type ThreadProps as c, type ToolPartInfo as d, type ToolResultProps as e, type ToolStateStore as f, type ToolStateEntry as g, Chat as h, ChatProvider as i, Composer as j, Message as k, ThemeProvider as l, Thread as m, ToolResult as n, createToolStateStore as o, useToolState as p, useChatContext as u };
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React from 'react';
3
3
  import { UIMessage, ChatStatus } from 'ai';
4
- import { T as Tool } from './tool-Ca2x-VNK.mjs';
4
+ import { T as Tool } from './tool-yZTixiN2.mjs';
5
5
  import { P as PersistenceAdapter, T as Thread$1 } from './types-CAOfGUPH.mjs';
6
6
 
7
7
  interface ToolStateEntry {
@@ -184,4 +184,4 @@ interface ThemeProviderProps {
184
184
  */
185
185
  declare function ThemeProvider({ theme, variables, className, children, }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
186
186
 
187
- export { type ChatProviderProps as C, type MessageProps as M, type ToolPartInfo as T, type ThreadProps as a, type ComposerProps as b, type ToolResultProps as c, type ChatProps as d, type ThemeProviderProps as e, type ToolStateStore as f, type ToolStateEntry as g, ChatProvider as h, Thread as i, Message as j, Composer as k, ToolResult as l, Chat as m, createToolStateStore as n, useToolState as o, ThemeProvider as p, useChatContext as u };
187
+ export { type ChatProps as C, type MessageProps as M, type ThemeProviderProps as T, type ChatProviderProps as a, type ComposerProps as b, type ThreadProps as c, type ToolPartInfo as d, type ToolResultProps as e, type ToolStateStore as f, type ToolStateEntry as g, Chat as h, ChatProvider as i, Composer as j, Message as k, ThemeProvider as l, Thread as m, ToolResult as n, createToolStateStore as o, useToolState as p, useChatContext as u };
@@ -1,4 +1,4 @@
1
- import { T as Tool, c as ToolContext } from '../tool-Ca2x-VNK.mjs';
1
+ import { T as Tool, g as ToolContext } from '../tool-yZTixiN2.mjs';
2
2
  import 'zod';
3
3
  import 'react';
4
4
 
@@ -1,4 +1,4 @@
1
- import { T as Tool, c as ToolContext } from '../tool-Ca2x-VNK.js';
1
+ import { T as Tool, g as ToolContext } from '../tool-yZTixiN2.js';
2
2
  import 'zod';
3
3
  import 'react';
4
4
 
@@ -1,7 +1,7 @@
1
- import { f as ToolStateStore, g as ToolStateEntry } from '../ThemeProvider-BYeqWMsn.mjs';
2
- export { m as Chat, d as ChatProps, h as ChatProvider, C as ChatProviderProps, k as Composer, b as ComposerProps, j as Message, M as MessageProps, p as ThemeProvider, e as ThemeProviderProps, i as Thread, a as ThreadProps, T as ToolPartInfo, l as ToolResult, c as ToolResultProps, n as createToolStateStore, u as useChatContext, o as useToolState } from '../ThemeProvider-BYeqWMsn.mjs';
1
+ import { f as ToolStateStore, g as ToolStateEntry } from '../ThemeProvider-Dx3STQtp.mjs';
2
+ export { h as Chat, C as ChatProps, i as ChatProvider, a as ChatProviderProps, j as Composer, b as ComposerProps, k as Message, M as MessageProps, l as ThemeProvider, T as ThemeProviderProps, m as Thread, c as ThreadProps, d as ToolPartInfo, n as ToolResult, e as ToolResultProps, o as createToolStateStore, u as useChatContext, p as useToolState } from '../ThemeProvider-Dx3STQtp.mjs';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import { T as Tool } from '../tool-Ca2x-VNK.mjs';
4
+ import { T as Tool } from '../tool-yZTixiN2.mjs';
5
5
  import React from 'react';
6
6
  import 'ai';
7
7
  import '../types-CAOfGUPH.mjs';
@@ -1,7 +1,7 @@
1
- import { f as ToolStateStore, g as ToolStateEntry } from '../ThemeProvider-BaVZaDBO.js';
2
- export { m as Chat, d as ChatProps, h as ChatProvider, C as ChatProviderProps, k as Composer, b as ComposerProps, j as Message, M as MessageProps, p as ThemeProvider, e as ThemeProviderProps, i as Thread, a as ThreadProps, T as ToolPartInfo, l as ToolResult, c as ToolResultProps, n as createToolStateStore, u as useChatContext, o as useToolState } from '../ThemeProvider-BaVZaDBO.js';
1
+ import { f as ToolStateStore, g as ToolStateEntry } from '../ThemeProvider-BESbs5p6.js';
2
+ export { h as Chat, C as ChatProps, i as ChatProvider, a as ChatProviderProps, j as Composer, b as ComposerProps, k as Message, M as MessageProps, l as ThemeProvider, T as ThemeProviderProps, m as Thread, c as ThreadProps, d as ToolPartInfo, n as ToolResult, e as ToolResultProps, o as createToolStateStore, u as useChatContext, p as useToolState } from '../ThemeProvider-BESbs5p6.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import { T as Tool } from '../tool-Ca2x-VNK.js';
4
+ import { T as Tool } from '../tool-yZTixiN2.js';
5
5
  import React from 'react';
6
6
  import 'ai';
7
7
  import '../types-CAOfGUPH.js';
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
- export { g as CacheConfig, h as ClientFetchConfig, C as ClientHandler, S as ServerHandler, d as StreamCallback, e as StreamHandler, T as Tool, a as ToolBuilder, b as ToolConfig, c as ToolContext, V as ViewComponent, f as ViewState, t as tool } from './tool-Ca2x-VNK.mjs';
1
+ export { C as CacheConfig, a as ClientFetchConfig, b as ClientHandler, S as ServerHandler, c as StreamCallback, d as StreamHandler, T as Tool, e as ToolBuilder, f as ToolConfig, g as ToolContext, V as ViewComponent, h as ViewState, t as tool } from './tool-yZTixiN2.mjs';
2
2
  import { LanguageModelV2 } from '@ai-sdk/provider';
3
- export { d as ChatProps, C as ChatProviderProps, b as ComposerProps, M as MessageProps, e as ThemeProviderProps, a as ThreadProps, T as ToolPartInfo, c as ToolResultProps } from './ThemeProvider-BYeqWMsn.mjs';
3
+ export { C as ChatProps, a as ChatProviderProps, b as ComposerProps, M as MessageProps, T as ThemeProviderProps, c as ThreadProps, d as ToolPartInfo, e as ToolResultProps } from './ThemeProvider-Dx3STQtp.mjs';
4
4
  import 'zod';
5
5
  import 'react';
6
6
  import 'react/jsx-runtime';
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { g as CacheConfig, h as ClientFetchConfig, C as ClientHandler, S as ServerHandler, d as StreamCallback, e as StreamHandler, T as Tool, a as ToolBuilder, b as ToolConfig, c as ToolContext, V as ViewComponent, f as ViewState, t as tool } from './tool-Ca2x-VNK.js';
1
+ export { C as CacheConfig, a as ClientFetchConfig, b as ClientHandler, S as ServerHandler, c as StreamCallback, d as StreamHandler, T as Tool, e as ToolBuilder, f as ToolConfig, g as ToolContext, V as ViewComponent, h as ViewState, t as tool } from './tool-yZTixiN2.js';
2
2
  import { LanguageModelV2 } from '@ai-sdk/provider';
3
- export { d as ChatProps, C as ChatProviderProps, b as ComposerProps, M as MessageProps, e as ThemeProviderProps, a as ThreadProps, T as ToolPartInfo, c as ToolResultProps } from './ThemeProvider-BaVZaDBO.js';
3
+ export { C as ChatProps, a as ChatProviderProps, b as ComposerProps, M as MessageProps, T as ThemeProviderProps, c as ThreadProps, d as ToolPartInfo, e as ToolResultProps } from './ThemeProvider-BESbs5p6.js';
4
4
  import 'zod';
5
5
  import 'react';
6
6
  import 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- import { T as Tool, c as ToolContext } from '../tool-Ca2x-VNK.mjs';
1
+ import { T as Tool, g as ToolContext } from '../tool-yZTixiN2.mjs';
2
2
  import { z } from 'zod';
3
3
  import 'react';
4
4
 
@@ -152,6 +152,8 @@ interface JsonSchema {
152
152
  additionalProperties?: boolean | JsonSchema;
153
153
  [key: string]: unknown;
154
154
  }
155
- declare function zodToJsonSchema(schema: z.ZodType): JsonSchema;
155
+ declare function zodToJsonSchema(schema: z.ZodType | {
156
+ [key: string]: any;
157
+ }): JsonSchema;
156
158
 
157
159
  export { MCPServer, type MCPServerConfig, createMCPServer, zodToJsonSchema };
@@ -1,4 +1,4 @@
1
- import { T as Tool, c as ToolContext } from '../tool-Ca2x-VNK.js';
1
+ import { T as Tool, g as ToolContext } from '../tool-yZTixiN2.js';
2
2
  import { z } from 'zod';
3
3
  import 'react';
4
4
 
@@ -152,6 +152,8 @@ interface JsonSchema {
152
152
  additionalProperties?: boolean | JsonSchema;
153
153
  [key: string]: unknown;
154
154
  }
155
- declare function zodToJsonSchema(schema: z.ZodType): JsonSchema;
155
+ declare function zodToJsonSchema(schema: z.ZodType | {
156
+ [key: string]: any;
157
+ }): JsonSchema;
156
158
 
157
159
  export { MCPServer, type MCPServerConfig, createMCPServer, zodToJsonSchema };
@@ -1,4 +1,4 @@
1
- import { T as Tool, c as ToolContext } from '../tool-Ca2x-VNK.mjs';
1
+ import { g as ToolContext, T as Tool } from '../tool-yZTixiN2.mjs';
2
2
  import 'zod';
3
3
  import 'react';
4
4
 
@@ -1,4 +1,4 @@
1
- import { T as Tool, c as ToolContext } from '../tool-Ca2x-VNK.js';
1
+ import { g as ToolContext, T as Tool } from '../tool-yZTixiN2.js';
2
2
  import 'zod';
3
3
  import 'react';
4
4
 
@@ -8,6 +8,16 @@ import React, { ReactElement } from 'react';
8
8
  * with Better UI's unique view integration.
9
9
  */
10
10
 
11
+ /**
12
+ * Schema type that works with both Zod 3 and Zod 4.
13
+ * Zod 4 removed internal properties (_parse, _type, etc.) from ZodType,
14
+ * so we use a structural type instead of z.ZodType directly.
15
+ */
16
+ type ZodSchema<T = any> = z.ZodType<T> | {
17
+ parse: (data: unknown) => T;
18
+ safeParse: (data: unknown) => any;
19
+ [key: string]: any;
20
+ };
11
21
  /** Behavioral hints for tools */
12
22
  interface ToolHints {
13
23
  /** Tool performs destructive/irreversible actions (auto-implies requiresConfirmation) */
@@ -63,8 +73,8 @@ interface ClientFetchConfig {
63
73
  interface ToolConfig<TInput, TOutput> {
64
74
  name: string;
65
75
  description?: string;
66
- input: z.ZodType<TInput>;
67
- output?: z.ZodType<TOutput>;
76
+ input: ZodSchema<TInput>;
77
+ output?: ZodSchema<TOutput>;
68
78
  tags?: string[];
69
79
  cache?: CacheConfig<TInput>;
70
80
  /** Configure auto-fetch behavior for client-side execution */
@@ -99,8 +109,8 @@ type ViewComponent<TOutput, TInput = unknown> = (data: TOutput, state?: ViewStat
99
109
  declare class Tool<TInput = any, TOutput = any> {
100
110
  readonly name: string;
101
111
  readonly description?: string;
102
- readonly inputSchema: z.ZodType<TInput>;
103
- readonly outputSchema?: z.ZodType<TOutput>;
112
+ readonly inputSchema: ZodSchema<TInput>;
113
+ readonly outputSchema?: ZodSchema<TOutput>;
104
114
  readonly tags: string[];
105
115
  readonly cacheConfig?: CacheConfig<TInput>;
106
116
  readonly clientFetchConfig?: ClientFetchConfig;
@@ -233,11 +243,11 @@ declare class Tool<TInput = any, TOutput = any> {
233
243
  */
234
244
  toAITool(): {
235
245
  description: string;
236
- inputSchema: z.ZodType<TInput, z.ZodTypeDef, TInput>;
246
+ inputSchema: ZodSchema<TInput>;
237
247
  execute?: undefined;
238
248
  } | {
239
249
  description: string;
240
- inputSchema: z.ZodType<TInput, z.ZodTypeDef, TInput>;
250
+ inputSchema: ZodSchema<TInput>;
241
251
  execute: (input: TInput) => Promise<TOutput>;
242
252
  };
243
253
  }
@@ -294,11 +304,11 @@ declare class ToolBuilder<TInput = any, TOutput = any> {
294
304
  * 2. The return type correctly reflects the new generic parameter
295
305
  * 3. TypeScript doesn't support "this type mutation" in fluent builders
296
306
  */
297
- input<T>(schema: z.ZodType<T>): ToolBuilder<T, TOutput>;
307
+ input<T>(schema: ZodSchema<T>): ToolBuilder<T, TOutput>;
298
308
  /**
299
309
  * Define output schema - enables type inference for results
300
310
  */
301
- output<O>(schema: z.ZodType<O>): ToolBuilder<TInput, O>;
311
+ output<O>(schema: ZodSchema<O>): ToolBuilder<TInput, O>;
302
312
  tags(...tags: string[]): this;
303
313
  cache(config: CacheConfig<TInput>): this;
304
314
  /** Configure auto-fetch endpoint for client-side execution */
@@ -349,13 +359,13 @@ declare class ToolBuilder<TInput = any, TOutput = any> {
349
359
  };
350
360
  toAITool(): {
351
361
  description: string;
352
- inputSchema: z.ZodType<TInput, z.ZodTypeDef, TInput>;
362
+ inputSchema: ZodSchema<TInput>;
353
363
  execute?: undefined;
354
364
  } | {
355
365
  description: string;
356
- inputSchema: z.ZodType<TInput, z.ZodTypeDef, TInput>;
366
+ inputSchema: ZodSchema<TInput>;
357
367
  execute: (input: TInput) => Promise<TOutput>;
358
368
  };
359
369
  }
360
370
 
361
- export { type ClientHandler as C, type ServerHandler as S, Tool as T, type ViewComponent as V, ToolBuilder as a, type ToolConfig as b, type ToolContext as c, type StreamCallback as d, type StreamHandler as e, type ViewState as f, type CacheConfig as g, type ClientFetchConfig as h, tool as t };
371
+ export { type CacheConfig as C, type ServerHandler as S, Tool as T, type ViewComponent as V, type ClientFetchConfig as a, type ClientHandler as b, type StreamCallback as c, type StreamHandler as d, ToolBuilder as e, type ToolConfig as f, type ToolContext as g, type ViewState as h, tool as t };
@@ -8,6 +8,16 @@ import React, { ReactElement } from 'react';
8
8
  * with Better UI's unique view integration.
9
9
  */
10
10
 
11
+ /**
12
+ * Schema type that works with both Zod 3 and Zod 4.
13
+ * Zod 4 removed internal properties (_parse, _type, etc.) from ZodType,
14
+ * so we use a structural type instead of z.ZodType directly.
15
+ */
16
+ type ZodSchema<T = any> = z.ZodType<T> | {
17
+ parse: (data: unknown) => T;
18
+ safeParse: (data: unknown) => any;
19
+ [key: string]: any;
20
+ };
11
21
  /** Behavioral hints for tools */
12
22
  interface ToolHints {
13
23
  /** Tool performs destructive/irreversible actions (auto-implies requiresConfirmation) */
@@ -63,8 +73,8 @@ interface ClientFetchConfig {
63
73
  interface ToolConfig<TInput, TOutput> {
64
74
  name: string;
65
75
  description?: string;
66
- input: z.ZodType<TInput>;
67
- output?: z.ZodType<TOutput>;
76
+ input: ZodSchema<TInput>;
77
+ output?: ZodSchema<TOutput>;
68
78
  tags?: string[];
69
79
  cache?: CacheConfig<TInput>;
70
80
  /** Configure auto-fetch behavior for client-side execution */
@@ -99,8 +109,8 @@ type ViewComponent<TOutput, TInput = unknown> = (data: TOutput, state?: ViewStat
99
109
  declare class Tool<TInput = any, TOutput = any> {
100
110
  readonly name: string;
101
111
  readonly description?: string;
102
- readonly inputSchema: z.ZodType<TInput>;
103
- readonly outputSchema?: z.ZodType<TOutput>;
112
+ readonly inputSchema: ZodSchema<TInput>;
113
+ readonly outputSchema?: ZodSchema<TOutput>;
104
114
  readonly tags: string[];
105
115
  readonly cacheConfig?: CacheConfig<TInput>;
106
116
  readonly clientFetchConfig?: ClientFetchConfig;
@@ -233,11 +243,11 @@ declare class Tool<TInput = any, TOutput = any> {
233
243
  */
234
244
  toAITool(): {
235
245
  description: string;
236
- inputSchema: z.ZodType<TInput, z.ZodTypeDef, TInput>;
246
+ inputSchema: ZodSchema<TInput>;
237
247
  execute?: undefined;
238
248
  } | {
239
249
  description: string;
240
- inputSchema: z.ZodType<TInput, z.ZodTypeDef, TInput>;
250
+ inputSchema: ZodSchema<TInput>;
241
251
  execute: (input: TInput) => Promise<TOutput>;
242
252
  };
243
253
  }
@@ -294,11 +304,11 @@ declare class ToolBuilder<TInput = any, TOutput = any> {
294
304
  * 2. The return type correctly reflects the new generic parameter
295
305
  * 3. TypeScript doesn't support "this type mutation" in fluent builders
296
306
  */
297
- input<T>(schema: z.ZodType<T>): ToolBuilder<T, TOutput>;
307
+ input<T>(schema: ZodSchema<T>): ToolBuilder<T, TOutput>;
298
308
  /**
299
309
  * Define output schema - enables type inference for results
300
310
  */
301
- output<O>(schema: z.ZodType<O>): ToolBuilder<TInput, O>;
311
+ output<O>(schema: ZodSchema<O>): ToolBuilder<TInput, O>;
302
312
  tags(...tags: string[]): this;
303
313
  cache(config: CacheConfig<TInput>): this;
304
314
  /** Configure auto-fetch endpoint for client-side execution */
@@ -349,13 +359,13 @@ declare class ToolBuilder<TInput = any, TOutput = any> {
349
359
  };
350
360
  toAITool(): {
351
361
  description: string;
352
- inputSchema: z.ZodType<TInput, z.ZodTypeDef, TInput>;
362
+ inputSchema: ZodSchema<TInput>;
353
363
  execute?: undefined;
354
364
  } | {
355
365
  description: string;
356
- inputSchema: z.ZodType<TInput, z.ZodTypeDef, TInput>;
366
+ inputSchema: ZodSchema<TInput>;
357
367
  execute: (input: TInput) => Promise<TOutput>;
358
368
  };
359
369
  }
360
370
 
361
- export { type ClientHandler as C, type ServerHandler as S, Tool as T, type ViewComponent as V, ToolBuilder as a, type ToolConfig as b, type ToolContext as c, type StreamCallback as d, type StreamHandler as e, type ViewState as f, type CacheConfig as g, type ClientFetchConfig as h, tool as t };
371
+ export { type CacheConfig as C, type ServerHandler as S, Tool as T, type ViewComponent as V, type ClientFetchConfig as a, type ClientHandler as b, type StreamCallback as c, type StreamHandler as d, ToolBuilder as e, type ToolConfig as f, type ToolContext as g, type ViewState as h, tool as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lantos1618/better-ui",
3
- "version": "0.6.1",
3
+ "version": "0.7.1",
4
4
  "description": "A minimal, type-safe AI-first UI framework for building tools",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -75,18 +75,18 @@
75
75
  "prepublishOnly": "npm run build:lib"
76
76
  },
77
77
  "dependencies": {
78
- "@ai-sdk/openai": "^2.0.77",
79
- "@ai-sdk/react": "^2.0.107",
80
- "ai": "^5.0.107",
78
+ "@ai-sdk/openai": "^3.0.49",
79
+ "@ai-sdk/react": "^3.0.145",
80
+ "ai": "^6.0.143",
81
81
  "react-markdown": "^10.1.0",
82
82
  "remark-gfm": "^4.0.1",
83
- "shiki": "^3.22.0",
84
- "zod": "^3.24.0"
83
+ "shiki": "^4.0.2",
84
+ "zod": "^3.25.76 || ^4.0.0"
85
85
  },
86
86
  "peerDependencies": {
87
- "@ai-sdk/anthropic": "^2.0.0",
88
- "@ai-sdk/google": "^2.0.0",
89
- "jose": "^5.0.0",
87
+ "@ai-sdk/anthropic": "^3.0.0",
88
+ "@ai-sdk/google": "^3.0.0",
89
+ "jose": "^6.0.0",
90
90
  "react": "^19.0.0",
91
91
  "react-dom": "^19.0.0"
92
92
  },
@@ -110,18 +110,18 @@
110
110
  "devDependencies": {
111
111
  "@jest/globals": "^29.7.0",
112
112
  "@testing-library/jest-dom": "^6.9.1",
113
- "@testing-library/react": "^16.3.0",
113
+ "@testing-library/react": "^16.3.2",
114
114
  "@types/jest": "^30.0.0",
115
- "@types/node": "^20",
116
- "@types/react": "^19",
117
- "@types/react-dom": "^19",
115
+ "@types/node": "^20.19.37",
116
+ "@types/react": "^19.2.14",
117
+ "@types/react-dom": "^19.2.3",
118
118
  "jest": "^29.7.0",
119
- "jest-environment-jsdom": "^30.2.0",
120
- "jose": "^6.1.3",
121
- "react": "^19.2.1",
122
- "react-dom": "^19.2.1",
123
- "ts-jest": "^29.4.1",
119
+ "jest-environment-jsdom": "^30.3.0",
120
+ "jose": "^6.2.2",
121
+ "react": "^19.2.4",
122
+ "react-dom": "^19.2.4",
123
+ "ts-jest": "^29.4.9",
124
124
  "tsup": "^8.5.1",
125
- "typescript": "^5"
125
+ "typescript": "^5.9.3"
126
126
  }
127
127
  }