diff --git a/package.json b/package.json index ad9a8ad3f9..048ec616ad 100644 --- a/package.json +++ b/package.json @@ -433,7 +433,8 @@ "@img/sharp-linux-x64": "0.34.3", "@img/sharp-win32-x64": "0.34.3", "@langchain/core": "1.0.2", - "@ai-sdk/openai-compatible@1.0.27": "1.0.28" + "@ai-sdk/openai-compatible@1.0.27": "1.0.28", + "@ai-sdk/openai-compatible@1.0.30": "1.0.28" }, "patchedDependencies": { "@napi-rs/system-ocr@1.0.2": "patches/@napi-rs-system-ocr-npm-1.0.2-59e7a78e8b.patch", @@ -453,8 +454,9 @@ "file-stream-rotator@0.6.1": "patches/file-stream-rotator-npm-0.6.1-eab45fb13d.patch", "libsql@0.4.7": "patches/libsql-npm-0.4.7-444e260fb1.patch", "pdf-parse@1.1.1": "patches/pdf-parse-npm-1.1.1-04a6109b2a.patch", - "@ai-sdk/openai-compatible@1.0.28": "patches/@ai-sdk-openai-compatible-npm-1.0.28-5705188855.patch", - "@anthropic-ai/claude-agent-sdk@0.1.76": "patches/@anthropic-ai__claude-agent-sdk@0.1.76.patch" + "@ai-sdk/openai-compatible@1.0.28": "patches/@ai-sdk__openai-compatible@1.0.28.patch", + "@anthropic-ai/claude-agent-sdk@0.1.76": "patches/@anthropic-ai__claude-agent-sdk@0.1.76.patch", + "@openrouter/ai-sdk-provider": "patches/@openrouter__ai-sdk-provider.patch" }, "onlyBuiltDependencies": [ "@kangfenmao/keyv-storage", diff --git a/patches/@ai-sdk-openai-compatible-npm-1.0.28-5705188855.patch b/patches/@ai-sdk__openai-compatible@1.0.28.patch similarity index 80% rename from patches/@ai-sdk-openai-compatible-npm-1.0.28-5705188855.patch rename to patches/@ai-sdk__openai-compatible@1.0.28.patch index 3178ffee5e..e72b46458f 100644 --- a/patches/@ai-sdk-openai-compatible-npm-1.0.28-5705188855.patch +++ b/patches/@ai-sdk__openai-compatible@1.0.28.patch @@ -9,9 +9,9 @@ index 48e2f6263c6ee4c75d7e5c28733e64f6ebe92200..00d0729c4a3cbf9a48e8e1e962c7e2b2 + sendReasoning: z.ZodOptional; }, z.core.$strip>; type OpenAICompatibleProviderOptions = z.infer; - + diff --git a/dist/index.js b/dist/index.js -index da237bb35b7fa8e24b37cd861ee73dfc51cdfc72..b3060fbaf010e30b64df55302807828e5bfe0f9a 100644 +index da237bb35b7fa8e24b37cd861ee73dfc51cdfc72..88349c614a69a268a2e4f3b157cb5e328ca1d347 100644 --- a/dist/index.js +++ b/dist/index.js @@ -41,7 +41,7 @@ function getOpenAIMetadata(message) { @@ -52,17 +52,38 @@ index da237bb35b7fa8e24b37cd861ee73dfc51cdfc72..b3060fbaf010e30b64df55302807828e tool_calls: toolCalls.length > 0 ? toolCalls : void 0, ...metadata }); -@@ -200,7 +208,8 @@ var openaiCompatibleProviderOptions = import_v4.z.object({ +@@ -200,7 +208,9 @@ var openaiCompatibleProviderOptions = import_v4.z.object({ /** * Controls the verbosity of the generated text. Defaults to `medium`. */ - textVerbosity: import_v4.z.string().optional() + textVerbosity: import_v4.z.string().optional(), -+ sendReasoning: import_v4.z.boolean().optional() ++ sendReasoning: import_v4.z.boolean().optional(), ++ strictJsonSchema: z.boolean().optional() }); - + // src/openai-compatible-error.ts -@@ -378,7 +387,7 @@ var OpenAICompatibleChatLanguageModel = class { +@@ -225,7 +235,8 @@ var defaultOpenAICompatibleErrorStructure = { + var import_provider2 = require("@ai-sdk/provider"); + function prepareTools({ + tools, +- toolChoice ++ toolChoice, ++ strictJsonSchema + }) { + tools = (tools == null ? void 0 : tools.length) ? tools : void 0; + const toolWarnings = []; +@@ -242,7 +253,8 @@ function prepareTools({ + function: { + name: tool.name, + description: tool.description, +- parameters: tool.inputSchema ++ parameters: tool.inputSchema, ++ strict: strictJsonSchema + } + }); + } +@@ -378,7 +390,7 @@ var OpenAICompatibleChatLanguageModel = class { reasoning_effort: compatibleOptions.reasoningEffort, verbosity: compatibleOptions.textVerbosity, // messages: @@ -71,7 +92,7 @@ index da237bb35b7fa8e24b37cd861ee73dfc51cdfc72..b3060fbaf010e30b64df55302807828e // tools: tools: openaiTools, tool_choice: openaiToolChoice -@@ -421,6 +430,17 @@ var OpenAICompatibleChatLanguageModel = class { +@@ -421,6 +433,17 @@ var OpenAICompatibleChatLanguageModel = class { text: reasoning }); } @@ -89,7 +110,7 @@ index da237bb35b7fa8e24b37cd861ee73dfc51cdfc72..b3060fbaf010e30b64df55302807828e if (choice.message.tool_calls != null) { for (const toolCall of choice.message.tool_calls) { content.push({ -@@ -598,6 +618,17 @@ var OpenAICompatibleChatLanguageModel = class { +@@ -598,6 +621,17 @@ var OpenAICompatibleChatLanguageModel = class { delta: delta.content }); } @@ -107,7 +128,7 @@ index da237bb35b7fa8e24b37cd861ee73dfc51cdfc72..b3060fbaf010e30b64df55302807828e if (delta.tool_calls != null) { for (const toolCallDelta of delta.tool_calls) { const index = toolCallDelta.index; -@@ -765,6 +796,14 @@ var OpenAICompatibleChatResponseSchema = import_v43.z.object({ +@@ -765,6 +799,14 @@ var OpenAICompatibleChatResponseSchema = import_v43.z.object({ arguments: import_v43.z.string() }) }) @@ -122,7 +143,7 @@ index da237bb35b7fa8e24b37cd861ee73dfc51cdfc72..b3060fbaf010e30b64df55302807828e ).nullish() }), finish_reason: import_v43.z.string().nullish() -@@ -795,6 +834,14 @@ var createOpenAICompatibleChatChunkSchema = (errorSchema) => import_v43.z.union( +@@ -795,6 +837,14 @@ var createOpenAICompatibleChatChunkSchema = (errorSchema) => import_v43.z.union( arguments: import_v43.z.string().nullish() }) }) @@ -138,7 +159,7 @@ index da237bb35b7fa8e24b37cd861ee73dfc51cdfc72..b3060fbaf010e30b64df55302807828e }).nullish(), finish_reason: import_v43.z.string().nullish() diff --git a/dist/index.mjs b/dist/index.mjs -index a809a7aa0e148bfd43e01dd7b018568b151c8ad5..565b605eeacd9830b2b0e817e58ad0c5700264de 100644 +index a809a7aa0e148bfd43e01dd7b018568b151c8ad5..fca65c04000ce4c01fb90e93326ac179c2378055 100644 --- a/dist/index.mjs +++ b/dist/index.mjs @@ -23,7 +23,7 @@ function getOpenAIMetadata(message) { @@ -179,17 +200,38 @@ index a809a7aa0e148bfd43e01dd7b018568b151c8ad5..565b605eeacd9830b2b0e817e58ad0c5 tool_calls: toolCalls.length > 0 ? toolCalls : void 0, ...metadata }); -@@ -182,7 +190,8 @@ var openaiCompatibleProviderOptions = z.object({ +@@ -182,7 +190,9 @@ var openaiCompatibleProviderOptions = z.object({ /** * Controls the verbosity of the generated text. Defaults to `medium`. */ - textVerbosity: z.string().optional() + textVerbosity: z.string().optional(), -+ sendReasoning: z.boolean().optional() ++ sendReasoning: z.boolean().optional(), ++ strictJsonSchema: z.boolean().optional() }); - + // src/openai-compatible-error.ts -@@ -362,7 +371,7 @@ var OpenAICompatibleChatLanguageModel = class { +@@ -209,7 +219,8 @@ import { + } from "@ai-sdk/provider"; + function prepareTools({ + tools, +- toolChoice ++ toolChoice, ++ strictJsonSchema + }) { + tools = (tools == null ? void 0 : tools.length) ? tools : void 0; + const toolWarnings = []; +@@ -226,7 +237,8 @@ function prepareTools({ + function: { + name: tool.name, + description: tool.description, +- parameters: tool.inputSchema ++ parameters: tool.inputSchema, ++ strict: strictJsonSchema + } + }); + } +@@ -362,7 +374,7 @@ var OpenAICompatibleChatLanguageModel = class { reasoning_effort: compatibleOptions.reasoningEffort, verbosity: compatibleOptions.textVerbosity, // messages: @@ -198,7 +240,7 @@ index a809a7aa0e148bfd43e01dd7b018568b151c8ad5..565b605eeacd9830b2b0e817e58ad0c5 // tools: tools: openaiTools, tool_choice: openaiToolChoice -@@ -405,6 +414,17 @@ var OpenAICompatibleChatLanguageModel = class { +@@ -405,6 +417,17 @@ var OpenAICompatibleChatLanguageModel = class { text: reasoning }); } @@ -216,7 +258,7 @@ index a809a7aa0e148bfd43e01dd7b018568b151c8ad5..565b605eeacd9830b2b0e817e58ad0c5 if (choice.message.tool_calls != null) { for (const toolCall of choice.message.tool_calls) { content.push({ -@@ -582,6 +602,17 @@ var OpenAICompatibleChatLanguageModel = class { +@@ -582,6 +605,17 @@ var OpenAICompatibleChatLanguageModel = class { delta: delta.content }); } @@ -234,7 +276,7 @@ index a809a7aa0e148bfd43e01dd7b018568b151c8ad5..565b605eeacd9830b2b0e817e58ad0c5 if (delta.tool_calls != null) { for (const toolCallDelta of delta.tool_calls) { const index = toolCallDelta.index; -@@ -749,6 +780,14 @@ var OpenAICompatibleChatResponseSchema = z3.object({ +@@ -749,6 +783,14 @@ var OpenAICompatibleChatResponseSchema = z3.object({ arguments: z3.string() }) }) @@ -249,7 +291,7 @@ index a809a7aa0e148bfd43e01dd7b018568b151c8ad5..565b605eeacd9830b2b0e817e58ad0c5 ).nullish() }), finish_reason: z3.string().nullish() -@@ -779,6 +818,14 @@ var createOpenAICompatibleChatChunkSchema = (errorSchema) => z3.union([ +@@ -779,6 +821,14 @@ var createOpenAICompatibleChatChunkSchema = (errorSchema) => z3.union([ arguments: z3.string().nullish() }) }) diff --git a/patches/@openrouter__ai-sdk-provider.patch b/patches/@openrouter__ai-sdk-provider.patch new file mode 100644 index 0000000000..6549d3f5d2 --- /dev/null +++ b/patches/@openrouter__ai-sdk-provider.patch @@ -0,0 +1,140 @@ +diff --git a/dist/index.js b/dist/index.js +index f33510a50d11a2cb92a90ea70cc0ac84c89f29b9..db0af7e2cc05c47baeb29c0a3974a155316fbd05 100644 +--- a/dist/index.js ++++ b/dist/index.js +@@ -1050,7 +1050,8 @@ var OpenRouterProviderMetadataSchema = import_v43.z.object({ + var OpenRouterProviderOptionsSchema = import_v43.z.object({ + openrouter: import_v43.z.object({ + reasoning_details: import_v43.z.array(ReasoningDetailUnionSchema).optional(), +- annotations: import_v43.z.array(FileAnnotationSchema).optional() ++ annotations: import_v43.z.array(FileAnnotationSchema).optional(), ++ strictJsonSchema: import_v43.z.boolean().optional() + }).optional() + }).optional(); + +@@ -1658,7 +1659,8 @@ var OpenRouterChatLanguageModel = class { + responseFormat, + topK, + tools, +- toolChoice ++ toolChoice, ++ providerOptions + }) { + var _a15; + const baseArgs = __spreadValues(__spreadValues({ +@@ -1712,7 +1714,8 @@ var OpenRouterChatLanguageModel = class { + function: { + name: tool.name, + description: tool.description, +- parameters: tool.inputSchema ++ parameters: tool.inputSchema, ++ strict: providerOptions?.openrouter?.strictJsonSchema + } + })); + return __spreadProps(__spreadValues({}, baseArgs), { +@@ -1725,7 +1728,7 @@ var OpenRouterChatLanguageModel = class { + async doGenerate(options) { + var _a15, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w; + const providerOptions = options.providerOptions || {}; +- const openrouterOptions = providerOptions.openrouter || {}; ++ const { strictJsonSchema: _strictJsonSchema, ...openrouterOptions } = providerOptions.openrouter || {}; + const args = __spreadValues(__spreadValues({}, this.getArgs(options)), openrouterOptions); + const { value: responseValue, responseHeaders } = await postJsonToApi({ + url: this.config.url({ +@@ -1931,7 +1934,7 @@ var OpenRouterChatLanguageModel = class { + async doStream(options) { + var _a15; + const providerOptions = options.providerOptions || {}; +- const openrouterOptions = providerOptions.openrouter || {}; ++ const { strictJsonSchema: _strictJsonSchema, ...openrouterOptions } = providerOptions.openrouter || {}; + const args = __spreadValues(__spreadValues({}, this.getArgs(options)), openrouterOptions); + const { value: response, responseHeaders } = await postJsonToApi({ + url: this.config.url({ +@@ -2564,7 +2567,7 @@ var OpenRouterCompletionLanguageModel = class { + async doGenerate(options) { + var _a15, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o; + const providerOptions = options.providerOptions || {}; +- const openrouterOptions = providerOptions.openrouter || {}; ++ const { strictJsonSchema: _strictJsonSchema, ...openrouterOptions } = providerOptions.openrouter || {}; + const args = __spreadValues(__spreadValues({}, this.getArgs(options)), openrouterOptions); + const { value: response, responseHeaders } = await postJsonToApi({ + url: this.config.url({ +@@ -2623,7 +2626,7 @@ var OpenRouterCompletionLanguageModel = class { + } + async doStream(options) { + const providerOptions = options.providerOptions || {}; +- const openrouterOptions = providerOptions.openrouter || {}; ++ const { strictJsonSchema: _strictJsonSchema, ...openrouterOptions } = providerOptions.openrouter || {}; + const args = __spreadValues(__spreadValues({}, this.getArgs(options)), openrouterOptions); + const { value: response, responseHeaders } = await postJsonToApi({ + url: this.config.url({ +diff --git a/dist/index.mjs b/dist/index.mjs +index 8a688331b88b4af738ee4ca8062b5f24124d3d81..a2aa299a44352addc26f8891d839ea31a2150ee2 100644 +--- a/dist/index.mjs ++++ b/dist/index.mjs +@@ -1015,7 +1015,8 @@ var OpenRouterProviderMetadataSchema = z3.object({ + var OpenRouterProviderOptionsSchema = z3.object({ + openrouter: z3.object({ + reasoning_details: z3.array(ReasoningDetailUnionSchema).optional(), +- annotations: z3.array(FileAnnotationSchema).optional() ++ annotations: z3.array(FileAnnotationSchema).optional(), ++ strictJsonSchema: z3.boolean().optional() + }).optional() + }).optional(); + +@@ -1623,7 +1624,8 @@ var OpenRouterChatLanguageModel = class { + responseFormat, + topK, + tools, +- toolChoice ++ toolChoice, ++ providerOptions + }) { + var _a15; + const baseArgs = __spreadValues(__spreadValues({ +@@ -1677,7 +1679,8 @@ var OpenRouterChatLanguageModel = class { + function: { + name: tool.name, + description: tool.description, +- parameters: tool.inputSchema ++ parameters: tool.inputSchema, ++ strict: providerOptions?.openrouter?.strictJsonSchema + } + })); + return __spreadProps(__spreadValues({}, baseArgs), { +@@ -1690,7 +1693,7 @@ var OpenRouterChatLanguageModel = class { + async doGenerate(options) { + var _a15, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w; + const providerOptions = options.providerOptions || {}; +- const openrouterOptions = providerOptions.openrouter || {}; ++ const { strictJsonSchema: _strictJsonSchema, ...openrouterOptions } = providerOptions.openrouter || {}; + const args = __spreadValues(__spreadValues({}, this.getArgs(options)), openrouterOptions); + const { value: responseValue, responseHeaders } = await postJsonToApi({ + url: this.config.url({ +@@ -1896,7 +1899,7 @@ var OpenRouterChatLanguageModel = class { + async doStream(options) { + var _a15; + const providerOptions = options.providerOptions || {}; +- const openrouterOptions = providerOptions.openrouter || {}; ++ const { strictJsonSchema: _strictJsonSchema, ...openrouterOptions } = providerOptions.openrouter || {}; + const args = __spreadValues(__spreadValues({}, this.getArgs(options)), openrouterOptions); + const { value: response, responseHeaders } = await postJsonToApi({ + url: this.config.url({ +@@ -2529,7 +2532,7 @@ var OpenRouterCompletionLanguageModel = class { + async doGenerate(options) { + var _a15, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o; + const providerOptions = options.providerOptions || {}; +- const openrouterOptions = providerOptions.openrouter || {}; ++ const { strictJsonSchema: _strictJsonSchema, ...openrouterOptions } = providerOptions.openrouter || {}; + const args = __spreadValues(__spreadValues({}, this.getArgs(options)), openrouterOptions); + const { value: response, responseHeaders } = await postJsonToApi({ + url: this.config.url({ +@@ -2588,7 +2591,7 @@ var OpenRouterCompletionLanguageModel = class { + } + async doStream(options) { + const providerOptions = options.providerOptions || {}; +- const openrouterOptions = providerOptions.openrouter || {}; ++ const { strictJsonSchema: _strictJsonSchema, ...openrouterOptions } = providerOptions.openrouter || {}; + const args = __spreadValues(__spreadValues({}, this.getArgs(options)), openrouterOptions); + const { value: response, responseHeaders } = await postJsonToApi({ + url: this.config.url({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99e0945c1a..494ff324e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,14 +23,15 @@ overrides: '@img/sharp-win32-x64': 0.34.3 '@langchain/core': 1.0.2 '@ai-sdk/openai-compatible@1.0.27': 1.0.28 + '@ai-sdk/openai-compatible@1.0.30': 1.0.28 patchedDependencies: '@ai-sdk/google@2.0.49': hash: 279e9d43f675e4b979b32b78954dd37acc3026aa36ae2dd7701b5bad2f061522 path: patches/@ai-sdk-google-npm-2.0.49-84720f41bd.patch '@ai-sdk/openai-compatible@1.0.28': - hash: 66f6605ef3f852d8f2b638a1d64b138eb8b2ad34ca6f331a0496c1d1379379c1 - path: patches/@ai-sdk-openai-compatible-npm-1.0.28-5705188855.patch + hash: 5ea49b4f07636a8e4630097e67e2787779ba7e933bd0459f81b1803cb125edda + path: patches/@ai-sdk__openai-compatible@1.0.28.patch '@ai-sdk/openai@2.0.85': hash: f2077f4759520d1de69b164dfd8adca1a9ace9de667e35cb0e55e812ce2ac13b path: patches/@ai-sdk-openai-npm-2.0.85-27483d1d6a.patch @@ -52,6 +53,9 @@ patchedDependencies: '@napi-rs/system-ocr@1.0.2': hash: aa1a73e445ee644774745b620589bb99d85bee6c95cc2a91fe9137e580da5bde path: patches/@napi-rs-system-ocr-npm-1.0.2-59e7a78e8b.patch + '@openrouter/ai-sdk-provider': + hash: 508e8e662b8547de93410cb7c3b1336077f34c6bf79c520ef5273962ea777c52 + path: patches/@openrouter__ai-sdk-provider.patch '@tiptap/extension-drag-handle@3.2.0': hash: 8432665d4553fb9ba8ff2a126a9181c3ccfee06ae57688aa14f65aa560e52fce path: patches/@tiptap-extension-drag-handle-npm-3.2.0-5a9ebff7c9.patch @@ -357,7 +361,7 @@ importers: version: 2.3.0(encoding@0.1.13) '@openrouter/ai-sdk-provider': specifier: ^1.2.8 - version: 1.5.4(ai@5.0.117(zod@4.3.4))(zod@4.3.4) + version: 1.5.4(patch_hash=508e8e662b8547de93410cb7c3b1336077f34c6bf79c520ef5273962ea777c52)(ai@5.0.117(zod@4.3.4))(zod@4.3.4) '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 @@ -1195,7 +1199,7 @@ importers: version: 2.0.85(patch_hash=f2077f4759520d1de69b164dfd8adca1a9ace9de667e35cb0e55e812ce2ac13b)(zod@4.3.5) '@ai-sdk/openai-compatible': specifier: 1.0.28 - version: 1.0.28(patch_hash=66f6605ef3f852d8f2b638a1d64b138eb8b2ad34ca6f331a0496c1d1379379c1)(zod@4.3.5) + version: 1.0.28(patch_hash=5ea49b4f07636a8e4630097e67e2787779ba7e933bd0459f81b1803cb125edda)(zod@4.3.5) '@ai-sdk/provider': specifier: ^2.0.0 version: 2.0.1 @@ -1235,7 +1239,7 @@ importers: version: 2.0.85(patch_hash=f2077f4759520d1de69b164dfd8adca1a9ace9de667e35cb0e55e812ce2ac13b)(zod@4.3.4) '@ai-sdk/openai-compatible': specifier: 1.0.28 - version: 1.0.28(patch_hash=66f6605ef3f852d8f2b638a1d64b138eb8b2ad34ca6f331a0496c1d1379379c1)(zod@4.3.4) + version: 1.0.28(patch_hash=5ea49b4f07636a8e4630097e67e2787779ba7e933bd0459f81b1803cb125edda)(zod@4.3.4) '@ai-sdk/provider': specifier: ^2.0.0 version: 2.0.1 @@ -1398,12 +1402,6 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai-compatible@1.0.30': - resolution: {integrity: sha512-thubwhRtv9uicAxSWwNpinM7hiL/0CkhL/ymPaHuKvI494J7HIzn8KQZQ2ymRz284WTIZnI7VMyyejxW4RMM6w==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai@2.0.85': resolution: {integrity: sha512-3pzr7qVhsOXwjPAfmvFNZz3sRWCuyMOc3GgLHe7sWY0t8J4hA5mwQ4LISTKYI3iIr8IXzAQn9MUrC8Hiji9RpA==} engines: {node: '>=18'} @@ -12320,7 +12318,7 @@ snapshots: '@ai-sdk/cerebras@1.0.34(zod@4.3.4)': dependencies: - '@ai-sdk/openai-compatible': 1.0.30(zod@4.3.4) + '@ai-sdk/openai-compatible': 1.0.28(patch_hash=5ea49b4f07636a8e4630097e67e2787779ba7e933bd0459f81b1803cb125edda)(zod@4.3.4) '@ai-sdk/provider': 2.0.1 '@ai-sdk/provider-utils': 3.0.20(zod@4.3.4) zod: 4.3.4 @@ -12376,7 +12374,7 @@ snapshots: '@ai-sdk/huggingface@0.0.10(zod@4.3.4)': dependencies: - '@ai-sdk/openai-compatible': 1.0.28(patch_hash=66f6605ef3f852d8f2b638a1d64b138eb8b2ad34ca6f331a0496c1d1379379c1)(zod@4.3.4) + '@ai-sdk/openai-compatible': 1.0.28(patch_hash=5ea49b4f07636a8e4630097e67e2787779ba7e933bd0459f81b1803cb125edda)(zod@4.3.4) '@ai-sdk/provider': 2.0.0 '@ai-sdk/provider-utils': 3.0.17(zod@4.3.4) zod: 4.3.4 @@ -12387,24 +12385,18 @@ snapshots: '@ai-sdk/provider-utils': 3.0.20(zod@4.3.4) zod: 4.3.4 - '@ai-sdk/openai-compatible@1.0.28(patch_hash=66f6605ef3f852d8f2b638a1d64b138eb8b2ad34ca6f331a0496c1d1379379c1)(zod@4.3.4)': + '@ai-sdk/openai-compatible@1.0.28(patch_hash=5ea49b4f07636a8e4630097e67e2787779ba7e933bd0459f81b1803cb125edda)(zod@4.3.4)': dependencies: '@ai-sdk/provider': 2.0.0 '@ai-sdk/provider-utils': 3.0.18(zod@4.3.4) zod: 4.3.4 - '@ai-sdk/openai-compatible@1.0.28(patch_hash=66f6605ef3f852d8f2b638a1d64b138eb8b2ad34ca6f331a0496c1d1379379c1)(zod@4.3.5)': + '@ai-sdk/openai-compatible@1.0.28(patch_hash=5ea49b4f07636a8e4630097e67e2787779ba7e933bd0459f81b1803cb125edda)(zod@4.3.5)': dependencies: '@ai-sdk/provider': 2.0.0 '@ai-sdk/provider-utils': 3.0.18(zod@4.3.5) zod: 4.3.5 - '@ai-sdk/openai-compatible@1.0.30(zod@4.3.4)': - dependencies: - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.20(zod@4.3.4) - zod: 4.3.4 - '@ai-sdk/openai@2.0.85(patch_hash=f2077f4759520d1de69b164dfd8adca1a9ace9de667e35cb0e55e812ce2ac13b)(zod@4.3.4)': dependencies: '@ai-sdk/provider': 2.0.0 @@ -12499,14 +12491,14 @@ snapshots: '@ai-sdk/xai@2.0.36(zod@4.3.4)': dependencies: - '@ai-sdk/openai-compatible': 1.0.28(patch_hash=66f6605ef3f852d8f2b638a1d64b138eb8b2ad34ca6f331a0496c1d1379379c1)(zod@4.3.4) + '@ai-sdk/openai-compatible': 1.0.28(patch_hash=5ea49b4f07636a8e4630097e67e2787779ba7e933bd0459f81b1803cb125edda)(zod@4.3.4) '@ai-sdk/provider': 2.0.0 '@ai-sdk/provider-utils': 3.0.17(zod@4.3.4) zod: 4.3.4 '@ai-sdk/xai@2.0.43(zod@4.3.4)': dependencies: - '@ai-sdk/openai-compatible': 1.0.30(zod@4.3.4) + '@ai-sdk/openai-compatible': 1.0.28(patch_hash=5ea49b4f07636a8e4630097e67e2787779ba7e933bd0459f81b1803cb125edda)(zod@4.3.4) '@ai-sdk/provider': 2.0.1 '@ai-sdk/provider-utils': 3.0.20(zod@4.3.4) zod: 4.3.4 @@ -15159,7 +15151,7 @@ snapshots: '@open-draft/until@2.1.0': {} - '@openrouter/ai-sdk-provider@1.5.4(ai@5.0.117(zod@4.3.4))(zod@4.3.4)': + '@openrouter/ai-sdk-provider@1.5.4(patch_hash=508e8e662b8547de93410cb7c3b1336077f34c6bf79c520ef5273962ea777c52)(ai@5.0.117(zod@4.3.4))(zod@4.3.4)': dependencies: '@openrouter/sdk': 0.1.27 ai: 5.0.117(zod@4.3.4) @@ -15276,7 +15268,7 @@ snapshots: '@opeoginni/github-copilot-openai-compatible@0.1.22(zod@4.3.4)': dependencies: '@ai-sdk/openai': 2.0.85(patch_hash=f2077f4759520d1de69b164dfd8adca1a9ace9de667e35cb0e55e812ce2ac13b)(zod@4.3.4) - '@ai-sdk/openai-compatible': 1.0.28(patch_hash=66f6605ef3f852d8f2b638a1d64b138eb8b2ad34ca6f331a0496c1d1379379c1)(zod@4.3.4) + '@ai-sdk/openai-compatible': 1.0.28(patch_hash=5ea49b4f07636a8e4630097e67e2787779ba7e933bd0459f81b1803cb125edda)(zod@4.3.4) '@ai-sdk/provider': 2.1.0-beta.5 '@ai-sdk/provider-utils': 3.0.20(zod@4.3.4) transitivePeerDependencies: diff --git a/src/renderer/src/aiCore/utils/options.ts b/src/renderer/src/aiCore/utils/options.ts index 1a16ea05da..b6bd63e4e7 100644 --- a/src/renderer/src/aiCore/utils/options.ts +++ b/src/renderer/src/aiCore/utils/options.ts @@ -653,6 +653,10 @@ function buildGenericProviderOptions( } } + if (isOpenAIModel(model)) { + providerOptions.strictJsonSchema = false + } + return { [providerId]: providerOptions }