From 78c72b85f32260061ae1a0fa83b6a3bbf8d11ce5 Mon Sep 17 00:00:00 2001 From: Ajax Davis Date: Sun, 30 Nov 2025 18:49:36 +1000 Subject: [PATCH] feat: upgrade to AI SDK v6 beta and Zod v4 to fix tool schema errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OpenAI was rejecting tool definitions with error "schema must be a JSON Schema of 'type: "object"'". This was caused by AI SDK v5 not properly converting Zod schemas to JSON Schema format. **Changes:** - Upgrade AI SDK from v5.0.104 to v6.0.0-beta.124 - Upgrade @ai-sdk/openai from v2.0.74 to v3.0.0-beta.22 - Upgrade Zod from v3.25.76 to v4.1.13 across all packages **AI SDK v6 breaking changes:** - Tool definition API: `parameters` renamed to `inputSchema` - Removed `aiTool()` wrapper - use plain object with description, inputSchema, execute - Streaming API: Use `textStream` async iterator instead of onChunk callback - Zod schemas now properly converted to JSON Schema for OpenAI **Zod v4 breaking changes:** - `z.record()` now requires two arguments: `z.record(keySchema, valueSchema)` - `z.enum()` params changed: `errorMap` removed, use `message` instead - Type system improvements require explicit type parameters - Fixed type errors in @tpmjs/env, @tpmjs/npm-client, @tpmjs/types **Files changed:** - apps/web/src/lib/ai-agent/tool-executor-agent.ts - Updated tool definition to use `inputSchema` instead of `parameters` - Removed `aiTool()` wrapper - Fixed streaming to use `textStream` iterator - packages/env/src/index.ts - Updated type constraint from `z.ZodRawShape` to `Record` - packages/npm-client/src/package.ts - Fixed `z.record()` calls to include both key and value schemas - Added type assertions for record indexing - packages/types/src/tpmjs.ts - Changed `errorMap` to `message` in z.enum() calls **Testing:** - ✅ Type-check passes - ✅ Production build succeeds - ✅ All routes compile correctly This fixes the tool execution error where OpenAI rejected tool schemas with invalid format. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- apps/web/package.json | 6 +- .../src/lib/ai-agent/tool-executor-agent.ts | 38 ++-- packages/config/eslint/package.json | 3 +- packages/config/package.json | 5 +- packages/config/tailwind/package.json | 3 +- packages/config/tsconfig/package.json | 5 +- packages/db/package.json | 3 +- packages/env/package.json | 2 +- packages/env/src/index.ts | 4 +- packages/mocks/package.json | 3 +- packages/npm-client/package.json | 2 +- packages/npm-client/src/package.ts | 14 +- packages/package-executor/package.json | 3 +- packages/storybook/package.json | 3 +- packages/test/package.json | 3 +- packages/tools/createBlogPost/package.json | 3 + packages/types/package.json | 2 +- packages/types/src/tool.ts | 2 +- packages/types/src/tpmjs.ts | 4 +- packages/ui/package.json | 3 +- packages/utils/package.json | 3 +- pnpm-lock.yaml | 164 ++++++++++++------ 22 files changed, 172 insertions(+), 106 deletions(-) diff --git a/apps/web/package.json b/apps/web/package.json index 3fc22ee..656c6aa 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -11,7 +11,7 @@ "clean": "rm -rf .next .turbo" }, "dependencies": { - "@ai-sdk/openai": "^2.0.74", + "@ai-sdk/openai": "3.0.0-beta.74", "@tpmjs/db": "workspace:*", "@tpmjs/env": "workspace:*", "@tpmjs/npm-client": "workspace:*", @@ -20,7 +20,7 @@ "@tpmjs/ui": "workspace:*", "@tpmjs/utils": "workspace:*", "@types/react-syntax-highlighter": "^15.5.13", - "ai": "^5.0.104", + "ai": "6.0.0-beta.124", "next": "^16.0.4", "next-themes": "^0.4.6", "openai": "^6.9.1", @@ -31,7 +31,7 @@ "rehype-raw": "^7.0.0", "rehype-sanitize": "^6.0.0", "remark-gfm": "^4.0.1", - "zod": "^3.25.76" + "zod": "^4.0.0" }, "devDependencies": { "@tpmjs/eslint-config": "workspace:*", diff --git a/apps/web/src/lib/ai-agent/tool-executor-agent.ts b/apps/web/src/lib/ai-agent/tool-executor-agent.ts index 6190390..fc8864b 100644 --- a/apps/web/src/lib/ai-agent/tool-executor-agent.ts +++ b/apps/web/src/lib/ai-agent/tool-executor-agent.ts @@ -1,12 +1,12 @@ /** * AI Agent service for executing TPMJS tools - * Converts TPMJS metadata to Zod schemas and executes with AI SDK + * Converts TPMJS metadata to Zod schemas and executes with AI SDK v6 */ import { openai } from '@ai-sdk/openai'; import type { Tool } from '@tpmjs/db'; import { executePackage } from '@tpmjs/package-executor'; -import { type CoreMessage, tool as aiTool, streamText } from 'ai'; +import { type CoreMessage, streamText } from 'ai'; import { z } from 'zod'; /** @@ -89,7 +89,7 @@ export function tpmjsParamsToZodSchema(parameters: TPMJSParameter[]): z.ZodObjec } /** - * Create AI SDK tool definition from TPMJS Tool + * Create AI SDK v6 tool definition from TPMJS Tool */ export function createToolDefinition(tool: Tool) { const parameters = Array.isArray(tool.parameters) @@ -100,7 +100,7 @@ export function createToolDefinition(tool: Tool) { console.log('[createToolDefinition] Parameters array:', JSON.stringify(parameters)); console.log('[createToolDefinition] Parameters length:', parameters.length); - // Ensure we have a valid schema - if no parameters, use an empty object with explicit additionalProperties + // Ensure we have a valid schema - if no parameters, use an empty object const schema = parameters.length > 0 ? tpmjsParamsToZodSchema(parameters) @@ -110,9 +110,10 @@ export function createToolDefinition(tool: Tool) { console.log('[createToolDefinition] Schema type:', typeof schema); console.log('[createToolDefinition] Schema constructor:', schema.constructor.name); - const toolDef = aiTool({ + // AI SDK v6 beta tool definition - uses inputSchema instead of parameters + return { description: tool.description, - parameters: schema, + inputSchema: schema, // Changed from 'parameters' to 'inputSchema' in v6 execute: async (params: Record) => { // Execute the actual npm package in a sandbox const result = await executePackage( @@ -128,12 +129,7 @@ export function createToolDefinition(tool: Tool) { return result.output; }, - // biome-ignore lint/suspicious/noExplicitAny: AI SDK v5 type compatibility workaround - } as any); - - console.log('[createToolDefinition] Tool definition created:', JSON.stringify(toolDef, null, 2)); - - return toolDef; + }; } /** @@ -223,22 +219,16 @@ export async function executeToolWithAgent( model: openai('gpt-4-turbo'), messages, tools: toolsConfig, - // biome-ignore lint/suspicious/noExplicitAny: AI SDK v5 chunk type compatibility - onChunk: ({ chunk }: { chunk: any }) => { - if (chunk.type === 'text-delta') { - const text = chunk.text || ''; - fullOutput += text; - onChunk?.(text); - } - }, onFinish: () => { agentSteps++; }, - // biome-ignore lint/suspicious/noExplicitAny: AI SDK v5 streaming configuration workaround - } as any); + }); - // Wait for completion - await result.text; + // Stream and collect text + for await (const chunk of result.textStream) { + fullOutput += chunk; + onChunk?.(chunk); + } // Calculate final token breakdown const parameters = Array.isArray(tool.parameters) diff --git a/packages/config/eslint/package.json b/packages/config/eslint/package.json index 35e2d4d..c814aa6 100644 --- a/packages/config/eslint/package.json +++ b/packages/config/eslint/package.json @@ -12,6 +12,7 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.3", "eslint-plugin-react-hooks": "^5.1.0", - "typescript-eslint": "^8.19.1" + "typescript-eslint": "^8.19.1", + "zod": "^4.1.13" } } diff --git a/packages/config/package.json b/packages/config/package.json index 4a38b4d..38be89b 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -2,5 +2,8 @@ "name": "@tpmjs/config", "version": "0.0.0", "private": true, - "files": ["biome.json", "eslint", "tailwind", "tsconfig"] + "files": ["biome.json", "eslint", "tailwind", "tsconfig"], + "dependencies": { + "zod": "^4.1.13" + } } diff --git a/packages/config/tailwind/package.json b/packages/config/tailwind/package.json index 5a86024..5084b15 100644 --- a/packages/config/tailwind/package.json +++ b/packages/config/tailwind/package.json @@ -5,7 +5,8 @@ "main": "./base.ts", "files": ["base.ts"], "dependencies": { - "tailwindcss": "^3.4.17" + "tailwindcss": "^3.4.17", + "zod": "^4.1.13" }, "devDependencies": { "typescript": "^5.9.3" diff --git a/packages/config/tsconfig/package.json b/packages/config/tsconfig/package.json index 2e3c20e..6d4dced 100644 --- a/packages/config/tsconfig/package.json +++ b/packages/config/tsconfig/package.json @@ -2,5 +2,8 @@ "name": "@tpmjs/tsconfig", "version": "0.0.0", "private": true, - "files": ["base.json", "nextjs.json", "react-library.json"] + "files": ["base.json", "nextjs.json", "react-library.json"], + "dependencies": { + "zod": "^4.1.13" + } } diff --git a/packages/db/package.json b/packages/db/package.json index b6ef922..d82428c 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -15,7 +15,8 @@ "type-check": "tsc --noEmit" }, "dependencies": { - "@prisma/client": "^6.2.0" + "@prisma/client": "^6.2.0", + "zod": "^4.1.13" }, "devDependencies": { "@tpmjs/tsconfig": "workspace:*", diff --git a/packages/env/package.json b/packages/env/package.json index ed29ba4..0bbbd9d 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -16,7 +16,7 @@ "clean": "rm -rf dist .turbo" }, "dependencies": { - "zod": "^3.24.1" + "zod": "^4.1.13" }, "devDependencies": { "@tpmjs/tsconfig": "workspace:*", diff --git a/packages/env/src/index.ts b/packages/env/src/index.ts index ffa86f5..8267357 100644 --- a/packages/env/src/index.ts +++ b/packages/env/src/index.ts @@ -1,6 +1,8 @@ import { z } from 'zod'; -export function createEnv(schema: T): z.infer> { +export function createEnv>( + schema: T +): z.infer> { const envSchema = z.object(schema); const parsed = envSchema.safeParse(process.env); diff --git a/packages/mocks/package.json b/packages/mocks/package.json index fe76237..305e642 100644 --- a/packages/mocks/package.json +++ b/packages/mocks/package.json @@ -21,7 +21,8 @@ "clean": "rm -rf dist .turbo" }, "dependencies": { - "msw": "^2.7.0" + "msw": "^2.7.0", + "zod": "^4.1.13" }, "devDependencies": { "@tpmjs/tsconfig": "workspace:*", diff --git a/packages/npm-client/package.json b/packages/npm-client/package.json index 61e95aa..6604b34 100644 --- a/packages/npm-client/package.json +++ b/packages/npm-client/package.json @@ -17,7 +17,7 @@ "type-check": "tsc --noEmit" }, "dependencies": { - "zod": "^3.24.1" + "zod": "^4.1.13" }, "devDependencies": { "@tpmjs/tsconfig": "workspace:*", diff --git a/packages/npm-client/src/package.ts b/packages/npm-client/src/package.ts index 90761c2..051c123 100644 --- a/packages/npm-client/src/package.ts +++ b/packages/npm-client/src/package.ts @@ -62,9 +62,9 @@ const PackageVersionSchema = z.object({ */ const PackageMetadataSchema = z.object({ name: z.string(), - 'dist-tags': z.record(z.string()), - versions: z.record(PackageVersionSchema), - time: z.record(z.string()), + 'dist-tags': z.record(z.string(), z.string()), + versions: z.record(z.string(), PackageVersionSchema), + time: z.record(z.string(), z.string()), maintainers: z .array( z.object({ @@ -146,13 +146,13 @@ export async function fetchLatestPackageVersion( return null; } - const version = metadata.versions[latestTag]; + const version = metadata.versions[latestTag as string]; if (!version) { return null; } // Add publishedAt from metadata.time - const publishedAt = metadata.time?.[latestTag]; + const publishedAt = metadata.time?.[latestTag as string]; return { ...version, @@ -185,13 +185,13 @@ export async function fetchLatestPackageWithMetadata( return null; } - const version = metadata.versions[latestTag]; + const version = metadata.versions[latestTag as string]; if (!version) { return null; } // Add publishedAt from metadata.time - const publishedAt = metadata.time?.[latestTag]; + const publishedAt = metadata.time?.[latestTag as string]; return { ...version, diff --git a/packages/package-executor/package.json b/packages/package-executor/package.json index 47ebbce..9c41adf 100644 --- a/packages/package-executor/package.json +++ b/packages/package-executor/package.json @@ -10,7 +10,8 @@ "type-check": "tsc --noEmit" }, "dependencies": { - "semver": "^7.6.0" + "semver": "^7.6.0", + "zod": "^4.1.13" }, "devDependencies": { "@tpmjs/tsconfig": "workspace:*", diff --git a/packages/storybook/package.json b/packages/storybook/package.json index b98db15..f926952 100644 --- a/packages/storybook/package.json +++ b/packages/storybook/package.json @@ -11,7 +11,8 @@ "dependencies": { "@tpmjs/ui": "workspace:*", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "zod": "^4.1.13" }, "devDependencies": { "@storybook/addon-essentials": "^8.5.0", diff --git a/packages/test/package.json b/packages/test/package.json index a07166c..d7d7ad1 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -7,6 +7,7 @@ }, "files": ["vitest.config.ts"], "dependencies": { - "vitest": "^2.1.8" + "vitest": "^2.1.8", + "zod": "^4.1.13" } } diff --git a/packages/tools/createBlogPost/package.json b/packages/tools/createBlogPost/package.json index 7fc3fb7..4cd8764 100644 --- a/packages/tools/createBlogPost/package.json +++ b/packages/tools/createBlogPost/package.json @@ -104,5 +104,8 @@ "Format an article with SEO metadata" ] } + }, + "dependencies": { + "zod": "^4.1.13" } } diff --git a/packages/types/package.json b/packages/types/package.json index d26643e..4cfd4ce 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -24,7 +24,7 @@ "clean": "rm -rf dist .turbo" }, "dependencies": { - "zod": "^3.24.1" + "zod": "^4.1.13" }, "devDependencies": { "@tpmjs/tsconfig": "workspace:*", diff --git a/packages/types/src/tool.ts b/packages/types/src/tool.ts index 5470107..143af63 100644 --- a/packages/types/src/tool.ts +++ b/packages/types/src/tool.ts @@ -3,7 +3,7 @@ import { z } from 'zod'; export const ToolParameterSchema = z.object({ name: z.string(), description: z.string(), - schema: z.record(z.unknown()), + schema: z.record(z.string(), z.unknown()), required: z.boolean().default(false), }); diff --git a/packages/types/src/tpmjs.ts b/packages/types/src/tpmjs.ts index 5bb4f2b..6540161 100644 --- a/packages/types/src/tpmjs.ts +++ b/packages/types/src/tpmjs.ts @@ -95,9 +95,7 @@ export type TpmjsAiAgent = z.infer; */ export const TpmjsMinimalSchema = z.object({ category: z.enum(TPMJS_CATEGORIES, { - errorMap: () => ({ - message: `Category must be one of: ${TPMJS_CATEGORIES.join(', ')}`, - }), + message: `Category must be one of: ${TPMJS_CATEGORIES.join(', ')}`, }), description: z.string().min(20, 'Description must be at least 20 characters').max(500), example: z.string().min(10, 'Example must be at least 10 characters'), diff --git a/packages/ui/package.json b/packages/ui/package.json index abec288..34069fb 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -151,7 +151,8 @@ "react-dom": "^18.0.0 || ^19.0.0" }, "dependencies": { - "@tpmjs/utils": "workspace:*" + "@tpmjs/utils": "workspace:*", + "zod": "^4.1.13" }, "devDependencies": { "@testing-library/jest-dom": "^6.9.1", diff --git a/packages/utils/package.json b/packages/utils/package.json index da0ddc2..6cfdc8e 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -23,7 +23,8 @@ }, "dependencies": { "clsx": "^2.1.1", - "tailwind-merge": "^2.6.0" + "tailwind-merge": "^2.6.0", + "zod": "^4.1.13" }, "devDependencies": { "@tpmjs/test": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0e13d1..97787a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: apps/web: dependencies: '@ai-sdk/openai': - specifier: ^2.0.74 - version: 2.0.74(zod@3.25.76) + specifier: 3.0.0-beta.74 + version: 3.0.0-beta.74(effect@3.18.4)(zod@4.1.13) '@tpmjs/db': specifier: workspace:* version: link:../../packages/db @@ -69,8 +69,8 @@ importers: specifier: ^15.5.13 version: 15.5.13 ai: - specifier: ^5.0.104 - version: 5.0.104(zod@3.25.76) + specifier: 6.0.0-beta.124 + version: 6.0.0-beta.124(effect@3.18.4)(zod@4.1.13) next: specifier: ^16.0.4 version: 16.0.4(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) @@ -79,7 +79,7 @@ importers: version: 0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) openai: specifier: ^6.9.1 - version: 6.9.1(ws@8.18.3)(zod@3.25.76) + version: 6.9.1(ws@8.18.3)(zod@4.1.13) react: specifier: ^19.0.0 version: 19.2.0 @@ -102,8 +102,8 @@ importers: specifier: ^4.0.1 version: 4.0.1 zod: - specifier: ^3.25.76 - version: 3.25.76 + specifier: ^4.0.0 + version: 4.1.13 devDependencies: '@tpmjs/eslint-config': specifier: workspace:* @@ -142,7 +142,11 @@ importers: specifier: ^5.9.3 version: 5.9.3 - packages/config: {} + packages/config: + dependencies: + zod: + specifier: ^4.1.13 + version: 4.1.13 packages/config/eslint: dependencies: @@ -167,24 +171,37 @@ importers: typescript-eslint: specifier: ^8.19.1 version: 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + zod: + specifier: ^4.1.13 + version: 4.1.13 packages/config/tailwind: dependencies: tailwindcss: specifier: ^3.4.17 version: 3.4.18(tsx@4.20.6) + zod: + specifier: ^4.1.13 + version: 4.1.13 devDependencies: typescript: specifier: ^5.9.3 version: 5.9.3 - packages/config/tsconfig: {} + packages/config/tsconfig: + dependencies: + zod: + specifier: ^4.1.13 + version: 4.1.13 packages/db: dependencies: '@prisma/client': specifier: ^6.2.0 version: 6.19.0(prisma@6.19.0(typescript@5.9.3))(typescript@5.9.3) + zod: + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@tpmjs/tsconfig': specifier: workspace:* @@ -205,8 +222,8 @@ importers: packages/env: dependencies: zod: - specifier: ^3.24.1 - version: 3.25.76 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@tpmjs/tsconfig': specifier: workspace:* @@ -226,6 +243,9 @@ importers: msw: specifier: ^2.7.0 version: 2.12.3(@types/node@22.19.1)(typescript@5.9.3) + zod: + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@tpmjs/tsconfig': specifier: workspace:* @@ -240,8 +260,8 @@ importers: packages/npm-client: dependencies: zod: - specifier: ^3.24.1 - version: 3.25.76 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@tpmjs/tsconfig': specifier: workspace:* @@ -258,6 +278,9 @@ importers: semver: specifier: ^7.6.0 version: 7.7.3 + zod: + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@tpmjs/tsconfig': specifier: workspace:* @@ -283,6 +306,9 @@ importers: react-dom: specifier: ^19.0.0 version: 19.2.0(react@19.2.0) + zod: + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@storybook/addon-essentials': specifier: ^8.5.0 @@ -335,8 +361,15 @@ importers: vitest: specifier: ^2.1.8 version: 2.1.9(@types/node@22.19.1)(happy-dom@15.11.7)(msw@2.12.3(@types/node@22.19.1)(typescript@5.9.3)) + zod: + specifier: ^4.1.13 + version: 4.1.13 packages/tools/createBlogPost: + dependencies: + zod: + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@tpmjs/tsconfig': specifier: workspace:* @@ -351,8 +384,8 @@ importers: packages/types: dependencies: zod: - specifier: ^3.24.1 - version: 3.25.76 + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@tpmjs/tsconfig': specifier: workspace:* @@ -369,6 +402,9 @@ importers: '@tpmjs/utils': specifier: workspace:* version: link:../utils + zod: + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@testing-library/jest-dom': specifier: ^6.9.1 @@ -427,6 +463,9 @@ importers: tailwind-merge: specifier: ^2.6.0 version: 2.6.0 + zod: + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@tpmjs/test': specifier: workspace:* @@ -449,26 +488,36 @@ packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - '@ai-sdk/gateway@2.0.17': - resolution: {integrity: sha512-oVAG6q72KsjKlrYdLhWjRO7rcqAR8CjokAbYuyVZoCO4Uh2PH/VzZoxZav71w2ipwlXhHCNaInGYWNs889MMDA==} + '@ai-sdk/gateway@2.0.0-beta.68': + resolution: {integrity: sha512-eYv3hBfu/M+0XmxE1RoH4X7uhYplNbSDvRClzirKzTY+ZM5yQwP86L3DqLR7Y9/vH7yrQaSIwsBT3OMmcBnGaw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai@2.0.74': - resolution: {integrity: sha512-vvsL7rGoBEyQIePs630p31ebLeF+xxwLOrRKeIArHko8w7Wh9Kj3wL4Ns+PCzrEpAij31OKKDcxLQ1dSIg/qMw==} + '@ai-sdk/openai@3.0.0-beta.74': + resolution: {integrity: sha512-0AofFL0odf7dUjmpiKVBxemXWK7L5YTmqD+9sY3V/0yzxtWuP8effQVOTz3rXO7kSF8OabDxW4WUHGwAOBiIJA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@3.0.18': - resolution: {integrity: sha512-ypv1xXMsgGcNKUP+hglKqtdDuMg68nWHucPPAhIENrbFAI+xCHiqPVN8Zllxyv1TNZwGWUghPxJXU+Mqps0YRQ==} + '@ai-sdk/provider-utils@4.0.0-beta.40': + resolution: {integrity: sha512-5345iQxWV1coKbs85vkrThsEmiFcIkgqMZUKFrVDM7E4FRqgsnWtn4394/RnShOKRun5K7TWIYCLz3GfRGy/Ig==} engines: {node: '>=18'} peerDependencies: + '@valibot/to-json-schema': ^1.3.0 + arktype: ^2.1.22 + effect: ^3.18.4 zod: ^3.25.76 || ^4.1.8 + peerDependenciesMeta: + '@valibot/to-json-schema': + optional: true + arktype: + optional: true + effect: + optional: true - '@ai-sdk/provider@2.0.0': - resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} + '@ai-sdk/provider@3.0.0-beta.22': + resolution: {integrity: sha512-Ss0tgCZwzccS6MREhjAI28lkAV5PfJnoBFbv8mas74Cs5OseFKqxg3dEd1lRL8mf4Qapu1xpBLkV4/ldSShSdA==} engines: {node: '>=18'} '@alloc/quick-lru@5.2.0': @@ -2268,8 +2317,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - ai@5.0.104: - resolution: {integrity: sha512-MZOkL9++nY5PfkpWKBR3Rv+Oygxpb9S16ctv8h91GvrSif7UnNEdPMVZe3bUyMd2djxf0AtBk/csBixP0WwWZQ==} + ai@6.0.0-beta.124: + resolution: {integrity: sha512-Apl4uNZLzc4sAUtu4W77DpM9o+bJJB46A/ayVLDck3MBv+rw4/qGBY9H6/gY9Xpc/CeVogyyEr1DxBMv47olCw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -5094,9 +5143,6 @@ packages: peerDependencies: zod: ^3.25.0 || ^4.0.0 - zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.13: resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} @@ -5107,27 +5153,37 @@ snapshots: '@adobe/css-tools@4.4.4': {} - '@ai-sdk/gateway@2.0.17(zod@3.25.76)': + '@ai-sdk/gateway@2.0.0-beta.68(effect@3.18.4)(zod@4.1.13)': dependencies: - '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.18(zod@3.25.76) + '@ai-sdk/provider': 3.0.0-beta.22 + '@ai-sdk/provider-utils': 4.0.0-beta.40(effect@3.18.4)(zod@4.1.13) '@vercel/oidc': 3.0.5 - zod: 3.25.76 + zod: 4.1.13 + transitivePeerDependencies: + - '@valibot/to-json-schema' + - arktype + - effect - '@ai-sdk/openai@2.0.74(zod@3.25.76)': + '@ai-sdk/openai@3.0.0-beta.74(effect@3.18.4)(zod@4.1.13)': dependencies: - '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.18(zod@3.25.76) - zod: 3.25.76 + '@ai-sdk/provider': 3.0.0-beta.22 + '@ai-sdk/provider-utils': 4.0.0-beta.40(effect@3.18.4)(zod@4.1.13) + zod: 4.1.13 + transitivePeerDependencies: + - '@valibot/to-json-schema' + - arktype + - effect - '@ai-sdk/provider-utils@3.0.18(zod@3.25.76)': + '@ai-sdk/provider-utils@4.0.0-beta.40(effect@3.18.4)(zod@4.1.13)': dependencies: - '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider': 3.0.0-beta.22 '@standard-schema/spec': 1.0.0 eventsource-parser: 3.0.6 - zod: 3.25.76 + zod: 4.1.13 + optionalDependencies: + effect: 3.18.4 - '@ai-sdk/provider@2.0.0': + '@ai-sdk/provider@3.0.0-beta.22': dependencies: json-schema: 0.4.0 @@ -6816,13 +6872,17 @@ snapshots: acorn@8.15.0: {} - ai@5.0.104(zod@3.25.76): + ai@6.0.0-beta.124(effect@3.18.4)(zod@4.1.13): dependencies: - '@ai-sdk/gateway': 2.0.17(zod@3.25.76) - '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.18(zod@3.25.76) + '@ai-sdk/gateway': 2.0.0-beta.68(effect@3.18.4)(zod@4.1.13) + '@ai-sdk/provider': 3.0.0-beta.22 + '@ai-sdk/provider-utils': 4.0.0-beta.40(effect@3.18.4)(zod@4.1.13) '@opentelemetry/api': 1.9.0 - zod: 3.25.76 + zod: 4.1.13 + transitivePeerDependencies: + - '@valibot/to-json-schema' + - arktype + - effect ajv@6.12.6: dependencies: @@ -7670,8 +7730,8 @@ snapshots: '@babel/parser': 7.28.5 eslint: 9.39.1(jiti@1.21.7) hermes-parser: 0.25.1 - zod: 3.25.76 - zod-validation-error: 4.0.2(zod@3.25.76) + zod: 4.1.13 + zod-validation-error: 4.0.2(zod@4.1.13) transitivePeerDependencies: - supports-color @@ -9104,10 +9164,10 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - openai@6.9.1(ws@8.18.3)(zod@3.25.76): + openai@6.9.1(ws@8.18.3)(zod@4.1.13): optionalDependencies: ws: 8.18.3 - zod: 3.25.76 + zod: 4.1.13 optionator@0.9.4: dependencies: @@ -10429,11 +10489,9 @@ snapshots: yoctocolors-cjs@2.1.3: {} - zod-validation-error@4.0.2(zod@3.25.76): + zod-validation-error@4.0.2(zod@4.1.13): dependencies: - zod: 3.25.76 - - zod@3.25.76: {} + zod: 4.1.13 zod@4.1.13: {}