feat: upgrade to AI SDK v6 beta and Zod v4 to fix tool schema errors

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<string, z.ZodTypeAny>`
- 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 <noreply@anthropic.com>
This commit is contained in:
Ajax Davis 2025-11-30 18:49:36 +10:00
parent fa6ba5b6cd
commit a92c2c250c
22 changed files with 172 additions and 106 deletions

View file

@ -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:*",

View file

@ -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<string, unknown>) => {
// 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)

View file

@ -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"
}
}

View file

@ -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"
}
}

View file

@ -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"

View file

@ -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"
}
}

View file

@ -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:*",

View file

@ -16,7 +16,7 @@
"clean": "rm -rf dist .turbo"
},
"dependencies": {
"zod": "^3.24.1"
"zod": "^4.1.13"
},
"devDependencies": {
"@tpmjs/tsconfig": "workspace:*",

View file

@ -1,6 +1,8 @@
import { z } from 'zod';
export function createEnv<T extends z.ZodRawShape>(schema: T): z.infer<z.ZodObject<T>> {
export function createEnv<T extends Record<string, z.ZodTypeAny>>(
schema: T
): z.infer<z.ZodObject<T>> {
const envSchema = z.object(schema);
const parsed = envSchema.safeParse(process.env);

View file

@ -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:*",

View file

@ -17,7 +17,7 @@
"type-check": "tsc --noEmit"
},
"dependencies": {
"zod": "^3.24.1"
"zod": "^4.1.13"
},
"devDependencies": {
"@tpmjs/tsconfig": "workspace:*",

View file

@ -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,

View file

@ -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:*",

View file

@ -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",

View file

@ -7,6 +7,7 @@
},
"files": ["vitest.config.ts"],
"dependencies": {
"vitest": "^2.1.8"
"vitest": "^2.1.8",
"zod": "^4.1.13"
}
}

View file

@ -104,5 +104,8 @@
"Format an article with SEO metadata"
]
}
},
"dependencies": {
"zod": "^4.1.13"
}
}

View file

@ -24,7 +24,7 @@
"clean": "rm -rf dist .turbo"
},
"dependencies": {
"zod": "^3.24.1"
"zod": "^4.1.13"
},
"devDependencies": {
"@tpmjs/tsconfig": "workspace:*",

View file

@ -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),
});

View file

@ -95,9 +95,7 @@ export type TpmjsAiAgent = z.infer<typeof TpmjsAiAgentSchema>;
*/
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'),

View file

@ -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",

View file

@ -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:*",

164
pnpm-lock.yaml generated
View file

@ -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: {}