hotfix(ai-sdk/openai): patch @ai-sdk/openai to support gpt-image-2 (#14488)

### What this PR does

Before this PR:

Calling the newly-released `gpt-image-2` model (shipped 2026-04-21) via
OpenAI image generation fails with `400 Unknown parameter:
'response_format'`. `@ai-sdk/openai@3.0.49` (our current AI SDK v6 line
dep) unconditionally sends `response_format: 'b64_json'` for any model
not in its `defaultResponseFormatPrefixes` allow-list, and `gpt-image-2`
is not in that list.

After this PR:

`@ai-sdk/openai@3.0.49` is patched to add `gpt-image-2` to both
`modelMaxImagesPerCall` and `defaultResponseFormatPrefixes` in all four
compiled dist entry points (`dist/index.{js,mjs}`,
`dist/internal/index.{js,mjs}`). This mirrors vercel/ai#14680, which was
backported to `release-v6.0` via vercel/ai#14682 on 2026-04-21 but has
not yet been published to npm. The patch is registered in
`pnpm.patchedDependencies` alongside the existing AI SDK patches.

Fixes #14485

### Why we need it and why it was done in this way

The upstream fix (vercel/ai#14680 / #14682) is already merged into the
`release-v6.0` branch, so a patch is a stable, low-risk equivalent of
the forthcoming `@ai-sdk/openai@3.0.54+`. Once that version ships on
npm, this patch can be dropped and replaced with a dependency bump.

The following tradeoffs were made:

- Patching compiled `dist/` files instead of source: matches the
repository's existing convention (see
`patches/@ai-sdk__google@3.0.55.patch`,
`patches/@ai-sdk__openai-compatible@2.0.37.patch`) and avoids rebuilding
the package.
- Not touching `.d.ts` type declarations: the upstream
`OpenAIImageModelId` union already accepts `(string & {})`, so runtime
behavior is the only thing that needs correcting.

The following alternatives were considered:

- Waiting for the npm release of `@ai-sdk/openai@3.0.54` — rejected
because users are actively hitting the bug today.
- Using a pnpm `overrides` entry pointing at the `release-v6.0` git
branch — rejected because it pulls an unversioned moving target and
conflicts with the locked semver range.
- Stripping `response_format` in an `aiCore` plugin — rejected because
the fix belongs at the provider layer and a plugin would permanently
mask similar issues for other models.

Links to places where the discussion took place: vercel/ai#14680,
vercel/ai#14682

### Breaking changes

None.

### Special notes for your reviewer

- The patch adds `gpt-image-2` at the expected positions in each of the
four dist files; diff is small and mechanical. Verified locally:
`node_modules/@ai-sdk/openai/dist/index.js:1753,1761` now contain
`gpt-image-2` after `pnpm install`.
- UI model picker changes are intentionally out of scope. Users select
`gpt-image-2` by model ID today; once upstream publishes, a follow-up
can refresh `src/renderer/src/config/models/default.ts` and friends.

### Checklist

- [x] PR: The PR description is expressive enough and will help future
contributors
- [x] Code: [Write code that humans can
understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans)
and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle)
- [x] Refactor: You have [left the code cleaner than you found it (Boy
Scout
Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html)
- [x] Upgrade: Impact of this change on upgrade flows was considered and
addressed if required
- [ ] Documentation: A [user-guide update](https://docs.cherry-ai.com)
was considered and is present (link) or not required. Check this only
when the PR introduces or changes a user-facing feature or behavior.
- [x] Self-review: I have reviewed my own code (e.g., via
[`/gh-pr-review`](/.claude/skills/gh-pr-review/SKILL.md), `gh pr diff`,
or GitHub UI) before requesting review from others

### Release note

```release-note
fix(ai-sdk/openai): patch @ai-sdk/openai to support OpenAI's gpt-image-2 model, resolving "Unknown parameter: 'response_format'" errors.
```

---------

Signed-off-by: suyao <sy20010504@gmail.com>
This commit is contained in:
SuYao
2026-04-22 23:29:50 +08:00
committed by GitHub
parent 5cc1b9c410
commit c0b3c880e3
11 changed files with 430 additions and 214 deletions

View File

@@ -0,0 +1,11 @@
---
'@cherrystudio/ai-core': patch
'@cherrystudio/ai-sdk-provider': patch
---
Support OpenAI `gpt-image-2`:
- Bump `@ai-sdk/openai` peer/dependency range to `^3.0.53` and refresh all other first-party `@ai-sdk/*` packages to their current `latest` (anthropic `^3.0.71`, azure `^3.0.54`, amazon-bedrock `^4.0.96`, cerebras `^2.0.45`, cohere `^3.0.30`, gateway `^3.0.104`, google `^3.0.64`, google-vertex `^4.0.112`, groq `^3.0.35`, huggingface `^1.0.43`, mistral `^3.0.30`, perplexity `^3.0.29`, togetherai `^2.0.45`, xai `^3.0.83`). Re-port `@ai-sdk/google` patch (`getModelPath`) to 3.0.64; keep `@ai-sdk/openai-compatible` on its currently-patched version. Narrow `getAnthropicReasoningParams` return so the new `xhigh` effort from `@ai-sdk/anthropic@3.0.71` does not leak into `AgentSessionContext.effort`.
- Pin `@ai-sdk/provider-utils` to `4.0.23` via `pnpm.overrides` so the rest of the `@ai-sdk/*` tree resolves a single provider-utils, avoiding a TS2742 portability error in `coreExtensions`' declaration emit.
- Patch `@ai-sdk/openai@3.0.53` to add `gpt-image-2` to `modelMaxImagesPerCall` and `defaultResponseFormatPrefixes`, mirroring vercel/ai#14680 / #14682 (backport to `release-v6.0`). Without the patch the provider sends `response_format: 'b64_json'` to `gpt-image-2`, which OpenAI rejects with `400 Unknown parameter: 'response_format'`. Drop the patch once `@ai-sdk/openai@3.0.54+` publishes.
- Widen `ToolFactoryPatch.tools` from `ToolSet` to `Record<string, any>`. The tightened `Tool<INPUT, OUTPUT>` generics in `@ai-sdk/openai@3.0.53` (e.g. `webSearch` / `webSearchPreview`) no longer collapse to the `ToolSet` union. Runtime is a shallow copy into `params.tools`, so the shape is equivalent.

View File

@@ -113,25 +113,25 @@
"@agentic/exa": "^7.3.3",
"@agentic/searxng": "^7.3.3",
"@agentic/tavily": "^7.3.3",
"@ai-sdk/amazon-bedrock": "^4.0.87",
"@ai-sdk/anthropic": "^3.0.58",
"@ai-sdk/azure": "^3.0.50",
"@ai-sdk/cerebras": "^2.0.39",
"@ai-sdk/cohere": "^3.0.25",
"@ai-sdk/gateway": "^3.0.85",
"@ai-sdk/google": "^3.0.55",
"@ai-sdk/google-vertex": "^4.0.98",
"@ai-sdk/groq": "^3.0.32",
"@ai-sdk/huggingface": "^1.0.37",
"@ai-sdk/mistral": "^3.0.24",
"@ai-sdk/openai": "^3.0.49",
"@ai-sdk/amazon-bedrock": "^4.0.96",
"@ai-sdk/anthropic": "^3.0.71",
"@ai-sdk/azure": "^3.0.54",
"@ai-sdk/cerebras": "^2.0.45",
"@ai-sdk/cohere": "^3.0.30",
"@ai-sdk/gateway": "^3.0.104",
"@ai-sdk/google": "^3.0.64",
"@ai-sdk/google-vertex": "^4.0.112",
"@ai-sdk/groq": "^3.0.35",
"@ai-sdk/huggingface": "^1.0.43",
"@ai-sdk/mistral": "^3.0.30",
"@ai-sdk/openai": "^3.0.53",
"@ai-sdk/openai-compatible": "^2.0.37",
"@ai-sdk/perplexity": "^3.0.23",
"@ai-sdk/perplexity": "^3.0.29",
"@ai-sdk/provider": "^3.0.8",
"@ai-sdk/provider-utils": "^4.0.19",
"@ai-sdk/provider-utils": "^4.0.23",
"@ai-sdk/test-server": "^1.0.3",
"@ai-sdk/togetherai": "^2.0.39",
"@ai-sdk/xai": "^3.0.75",
"@ai-sdk/togetherai": "^2.0.45",
"@ai-sdk/xai": "^3.0.83",
"@ant-design/cssinjs": "1.23.0",
"@ant-design/icons": "5.6.1",
"@ant-design/v5-patch-for-react-19": "^1.0.3",
@@ -478,7 +478,8 @@
"@img/sharp-linux-x64": "0.34.5",
"@img/sharp-win32-x64": "0.34.5",
"@langchain/core": "1.0.2",
"@napi-rs/canvas": "0.1.97"
"@napi-rs/canvas": "0.1.97",
"@ai-sdk/provider-utils": "4.0.23"
},
"patchedDependencies": {
"@napi-rs/system-ocr@1.0.2": "patches/@napi-rs-system-ocr-npm-1.0.2-59e7a78e8b.patch",
@@ -496,7 +497,8 @@
"@openrouter/ai-sdk-provider": "patches/@openrouter__ai-sdk-provider.patch",
"@opeoginni/github-copilot-openai-compatible@1.0.0": "patches/@opeoginni__github-copilot-openai-compatible@1.0.0.patch",
"@ai-sdk/openai-compatible@2.0.37": "patches/@ai-sdk__openai-compatible@2.0.37.patch",
"@ai-sdk/google@3.0.55": "patches/@ai-sdk__google@3.0.55.patch"
"@ai-sdk/openai@3.0.53": "patches/@ai-sdk__openai@3.0.53.patch",
"@ai-sdk/google@3.0.64": "patches/@ai-sdk__google@3.0.64.patch"
},
"onlyBuiltDependencies": [
"@j178/prek",

View File

@@ -28,14 +28,14 @@
"prepublishOnly": "pnpm build"
},
"peerDependencies": {
"@ai-sdk/anthropic": "^3.0.58",
"@ai-sdk/google": "^3.0.55",
"@ai-sdk/openai": "^3.0.49",
"@ai-sdk/anthropic": "^3.0.71",
"@ai-sdk/google": "^3.0.64",
"@ai-sdk/openai": "^3.0.53",
"@ai-sdk/openai-compatible": "^2.0.37"
},
"dependencies": {
"@ai-sdk/provider": "^3.0.8",
"@ai-sdk/provider-utils": "^4.0.19"
"@ai-sdk/provider-utils": "^4.0.23"
},
"devDependencies": {
"tsdown": "^0.20.3",

View File

@@ -31,20 +31,20 @@
},
"homepage": "https://github.com/CherryHQ/cherry-studio#readme",
"peerDependencies": {
"@ai-sdk/google": "^3.0.55",
"@ai-sdk/openai": "^3.0.49",
"@ai-sdk/google": "^3.0.64",
"@ai-sdk/openai": "^3.0.53",
"ai": "^6.0.116"
},
"dependencies": {
"@cherrystudio/ai-sdk-provider": "workspace:*",
"@ai-sdk/anthropic": "^3.0.58",
"@ai-sdk/azure": "^3.0.50",
"@ai-sdk/deepseek": "^2.0.24",
"@ai-sdk/anthropic": "^3.0.71",
"@ai-sdk/azure": "^3.0.54",
"@ai-sdk/deepseek": "^2.0.29",
"@ai-sdk/openai-compatible": "^2.0.37",
"@openrouter/ai-sdk-provider": "^2.3.3",
"@ai-sdk/provider": "^3.0.8",
"@ai-sdk/provider-utils": "^4.0.19",
"@ai-sdk/xai": "^3.0.75",
"@ai-sdk/provider-utils": "^4.0.23",
"@ai-sdk/xai": "^3.0.83",
"@cherrystudio/ai-sdk-provider": "workspace:*",
"@openrouter/ai-sdk-provider": "^2.3.3",
"lru-cache": "^11.2.4",
"zod": "^4.1.5"
},

View File

@@ -184,6 +184,7 @@ export class ExtensionRegistry {
}
}
// oxlint-disable-next-line typescript/no-unnecessary-type-assertion
return Array.from(ids) as RegisteredProviderId[]
}

View File

@@ -1,5 +1,4 @@
import type { ProviderV3 } from '@ai-sdk/provider'
import type { ToolSet } from 'ai'
/**
* 跨 provider 的工具能力标识
@@ -9,9 +8,16 @@ import type { ToolSet } from 'ai'
*/
export type ToolCapability = 'webSearch' | 'fileSearch' | 'codeExecution' | 'urlContext'
/** 工具工厂返回的 patch描述要合并到 params 的修改 */
/**
* 工具工厂返回的 patch描述要合并到 params 的修改
*
* `tools` 使用 `Record<string, any>` 而不是 `ToolSet`provider SDK如 `@ai-sdk/openai@3.0.53+`
* 的 `webSearch` / `webSearchPreview`)返回的 `Tool<INPUT, OUTPUT>` 在最新泛型下不再能收敛到
* `ToolSet` 的 `Tool<any,any>|Tool<any,never>|Tool<never,any>|Tool<never,never>` 交集,
* 导致 `satisfies ProviderExtensionConfig<...>` 失败。运行时只是浅拷贝进 `params.tools`,形状一致。
*/
export interface ToolFactoryPatch {
tools?: ToolSet
tools?: Record<string, any>
providerOptions?: Record<string, any>
}

View File

@@ -1,52 +1,52 @@
diff --git a/dist/index.js b/dist/index.js
index a3ff6e37d6dcac474833e05f678bb315de354ac3..a47ee95dbf6ba0bc786546a3c607dea7b8b2eb48 100644
index d257090..e9cd53e 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -698,7 +698,7 @@
@@ -698,7 +698,7 @@ function convertToGoogleGenerativeAIMessages(prompt, options) {
// src/get-model-path.ts
function getModelPath(modelId) {
- return modelId.includes("/") ? modelId : `models/${modelId}`;
+ return modelId.includes("models/") ? modelId : `models/${modelId}`;
}
// src/google-generative-ai-options.ts
diff --git a/dist/index.mjs b/dist/index.mjs
index b658b194a4d8957509420908478b7ee0cbb9ee1f..0623050b93859f61a3597f4d0b2ea82fcbef6336 100644
index b5f41bc..c75255d 100644
--- a/dist/index.mjs
+++ b/dist/index.mjs
@@ -704,7 +704,7 @@
@@ -704,7 +704,7 @@ function convertToGoogleGenerativeAIMessages(prompt, options) {
// src/get-model-path.ts
function getModelPath(modelId) {
- return modelId.includes("/") ? modelId : `models/${modelId}`;
+ return modelId.includes("models/") ? modelId : `models/${modelId}`;
}
// src/google-generative-ai-options.ts
diff --git a/dist/internal/index.js b/dist/internal/index.js
index 1234567890abcdef..abcdef1234567890 100644
index bfc039b..e239776 100644
--- a/dist/internal/index.js
+++ b/dist/internal/index.js
@@ -487,7 +487,7 @@
@@ -487,7 +487,7 @@ function convertToGoogleGenerativeAIMessages(prompt, options) {
// src/get-model-path.ts
function getModelPath(modelId) {
- return modelId.includes("/") ? modelId : `models/${modelId}`;
+ return modelId.includes("models/") ? modelId : `models/${modelId}`;
}
// src/google-error.ts
diff --git a/dist/internal/index.mjs b/dist/internal/index.mjs
index abcdef1234567890..1234567890abcdef 100644
index ba71d04..8596000 100644
--- a/dist/internal/index.mjs
+++ b/dist/internal/index.mjs
@@ -470,7 +470,7 @@
@@ -470,7 +470,7 @@ function convertToGoogleGenerativeAIMessages(prompt, options) {
// src/get-model-path.ts
function getModelPath(modelId) {
- return modelId.includes("/") ? modelId : `models/${modelId}`;
+ return modelId.includes("models/") ? modelId : `models/${modelId}`;
}
// src/google-error.ts

View File

@@ -0,0 +1,84 @@
diff --git a/dist/index.js b/dist/index.js
index 1c78d6f..a81c976 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1753,13 +1753,15 @@ var modelMaxImagesPerCall = {
"gpt-image-1": 10,
"gpt-image-1-mini": 10,
"gpt-image-1.5": 10,
+ "gpt-image-2": 10,
"chatgpt-image-latest": 10
};
var defaultResponseFormatPrefixes = [
"chatgpt-image-",
"gpt-image-1-mini",
"gpt-image-1.5",
- "gpt-image-1"
+ "gpt-image-1",
+ "gpt-image-2"
];
function hasDefaultResponseFormat(modelId) {
return defaultResponseFormatPrefixes.some(
diff --git a/dist/index.mjs b/dist/index.mjs
index 3dee885..441a6af 100644
--- a/dist/index.mjs
+++ b/dist/index.mjs
@@ -1768,13 +1768,15 @@ var modelMaxImagesPerCall = {
"gpt-image-1": 10,
"gpt-image-1-mini": 10,
"gpt-image-1.5": 10,
+ "gpt-image-2": 10,
"chatgpt-image-latest": 10
};
var defaultResponseFormatPrefixes = [
"chatgpt-image-",
"gpt-image-1-mini",
"gpt-image-1.5",
- "gpt-image-1"
+ "gpt-image-1",
+ "gpt-image-2"
];
function hasDefaultResponseFormat(modelId) {
return defaultResponseFormatPrefixes.some(
diff --git a/dist/internal/index.js b/dist/internal/index.js
index 27527ce..b359aa3 100644
--- a/dist/internal/index.js
+++ b/dist/internal/index.js
@@ -1780,13 +1780,15 @@ var modelMaxImagesPerCall = {
"gpt-image-1": 10,
"gpt-image-1-mini": 10,
"gpt-image-1.5": 10,
+ "gpt-image-2": 10,
"chatgpt-image-latest": 10
};
var defaultResponseFormatPrefixes = [
"chatgpt-image-",
"gpt-image-1-mini",
"gpt-image-1.5",
- "gpt-image-1"
+ "gpt-image-1",
+ "gpt-image-2"
];
function hasDefaultResponseFormat(modelId) {
return defaultResponseFormatPrefixes.some(
diff --git a/dist/internal/index.mjs b/dist/internal/index.mjs
index db50bed..04b9e17 100644
--- a/dist/internal/index.mjs
+++ b/dist/internal/index.mjs
@@ -1760,13 +1760,15 @@ var modelMaxImagesPerCall = {
"gpt-image-1": 10,
"gpt-image-1-mini": 10,
"gpt-image-1.5": 10,
+ "gpt-image-2": 10,
"chatgpt-image-latest": 10
};
var defaultResponseFormatPrefixes = [
"chatgpt-image-",
"gpt-image-1-mini",
"gpt-image-1.5",
- "gpt-image-1"
+ "gpt-image-1",
+ "gpt-image-2"
];
function hasDefaultResponseFormat(modelId) {
return defaultResponseFormatPrefixes.some(

437
pnpm-lock.yaml generated
View File

@@ -31,14 +31,18 @@ overrides:
'@img/sharp-win32-x64': 0.34.5
'@langchain/core': 1.0.2
'@napi-rs/canvas': 0.1.97
'@ai-sdk/provider-utils': 4.0.23
patchedDependencies:
'@ai-sdk/google@3.0.55':
hash: 61e2f6fa9463b661654e527cf1a22d80f0852479b3c870fb8f1d5a4f9decb959
path: patches/@ai-sdk__google@3.0.55.patch
'@ai-sdk/google@3.0.64':
hash: 3dbdd2fbbe5a44bc23a04b1195329dd8d78043447e925342ad5ed53c8c3b96ec
path: patches/@ai-sdk__google@3.0.64.patch
'@ai-sdk/openai-compatible@2.0.37':
hash: d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a
path: patches/@ai-sdk__openai-compatible@2.0.37.patch
'@ai-sdk/openai@3.0.53':
hash: 83a4d486601eff47ad8b5e22024878be2ced05b5b86e09884199a3f47fd53530
path: patches/@ai-sdk__openai@3.0.53.patch
'@langchain/core@1.0.2':
hash: 8dc787a82cebafe8b23c8826f25f29aca64fc8b43a0a1878e0010782e4da96ed
path: patches/@langchain-core-npm-1.0.2-183ef83fe4.patch
@@ -169,62 +173,62 @@ importers:
specifier: ^7.3.3
version: 7.6.9(zod@4.3.4)
'@ai-sdk/amazon-bedrock':
specifier: ^4.0.87
version: 4.0.87(zod@4.3.4)
specifier: ^4.0.96
version: 4.0.96(zod@4.3.4)
'@ai-sdk/anthropic':
specifier: ^3.0.58
version: 3.0.64(zod@4.3.4)
specifier: ^3.0.71
version: 3.0.71(zod@4.3.4)
'@ai-sdk/azure':
specifier: ^3.0.50
version: 3.0.50(zod@4.3.4)
specifier: ^3.0.54
version: 3.0.54(zod@4.3.4)
'@ai-sdk/cerebras':
specifier: ^2.0.39
version: 2.0.41(zod@4.3.4)
specifier: ^2.0.45
version: 2.0.45(zod@4.3.4)
'@ai-sdk/cohere':
specifier: ^3.0.25
version: 3.0.27(zod@4.3.4)
specifier: ^3.0.30
version: 3.0.30(zod@4.3.4)
'@ai-sdk/gateway':
specifier: ^3.0.85
version: 3.0.85(zod@4.3.4)
specifier: ^3.0.104
version: 3.0.104(zod@4.3.4)
'@ai-sdk/google':
specifier: ^3.0.55
version: 3.0.55(patch_hash=61e2f6fa9463b661654e527cf1a22d80f0852479b3c870fb8f1d5a4f9decb959)(zod@4.3.4)
specifier: ^3.0.64
version: 3.0.64(patch_hash=3dbdd2fbbe5a44bc23a04b1195329dd8d78043447e925342ad5ed53c8c3b96ec)(zod@4.3.4)
'@ai-sdk/google-vertex':
specifier: ^4.0.98
version: 4.0.98(zod@4.3.4)
specifier: ^4.0.112
version: 4.0.112(zod@4.3.4)
'@ai-sdk/groq':
specifier: ^3.0.32
version: 3.0.32(zod@4.3.4)
specifier: ^3.0.35
version: 3.0.35(zod@4.3.4)
'@ai-sdk/huggingface':
specifier: ^1.0.37
version: 1.0.39(zod@4.3.4)
specifier: ^1.0.43
version: 1.0.43(zod@4.3.4)
'@ai-sdk/mistral':
specifier: ^3.0.24
version: 3.0.27(zod@4.3.4)
specifier: ^3.0.30
version: 3.0.30(zod@4.3.4)
'@ai-sdk/openai':
specifier: ^3.0.49
version: 3.0.49(zod@4.3.4)
specifier: ^3.0.53
version: 3.0.53(patch_hash=83a4d486601eff47ad8b5e22024878be2ced05b5b86e09884199a3f47fd53530)(zod@4.3.4)
'@ai-sdk/openai-compatible':
specifier: ^2.0.37
version: 2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.4)
'@ai-sdk/perplexity':
specifier: ^3.0.23
version: 3.0.26(zod@4.3.4)
specifier: ^3.0.29
version: 3.0.29(zod@4.3.4)
'@ai-sdk/provider':
specifier: ^3.0.8
version: 3.0.8
'@ai-sdk/provider-utils':
specifier: ^4.0.19
version: 4.0.21(zod@4.3.4)
specifier: 4.0.23
version: 4.0.23(zod@4.3.4)
'@ai-sdk/test-server':
specifier: ^1.0.3
version: 1.0.3(@types/node@24.10.4)(typescript@5.8.3)
'@ai-sdk/togetherai':
specifier: ^2.0.39
version: 2.0.41(zod@4.3.4)
specifier: ^2.0.45
version: 2.0.45(zod@4.3.4)
'@ai-sdk/xai':
specifier: ^3.0.75
version: 3.0.75(zod@4.3.4)
specifier: ^3.0.83
version: 3.0.83(zod@4.3.4)
'@ant-design/cssinjs':
specifier: 1.23.0
version: 1.23.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -1286,14 +1290,14 @@ importers:
packages/ai-sdk-provider:
dependencies:
'@ai-sdk/anthropic':
specifier: ^3.0.58
version: 3.0.64(zod@4.3.6)
specifier: ^3.0.71
version: 3.0.71(zod@4.3.6)
'@ai-sdk/google':
specifier: ^3.0.55
version: 3.0.55(patch_hash=61e2f6fa9463b661654e527cf1a22d80f0852479b3c870fb8f1d5a4f9decb959)(zod@4.3.6)
specifier: ^3.0.64
version: 3.0.64(patch_hash=3dbdd2fbbe5a44bc23a04b1195329dd8d78043447e925342ad5ed53c8c3b96ec)(zod@4.3.6)
'@ai-sdk/openai':
specifier: ^3.0.49
version: 3.0.49(zod@4.3.6)
specifier: ^3.0.53
version: 3.0.53(patch_hash=83a4d486601eff47ad8b5e22024878be2ced05b5b86e09884199a3f47fd53530)(zod@4.3.6)
'@ai-sdk/openai-compatible':
specifier: ^2.0.37
version: 2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.6)
@@ -1301,8 +1305,8 @@ importers:
specifier: ^3.0.8
version: 3.0.8
'@ai-sdk/provider-utils':
specifier: ^4.0.19
version: 4.0.21(zod@4.3.6)
specifier: 4.0.23
version: 4.0.23(zod@4.3.6)
devDependencies:
tsdown:
specifier: ^0.20.3
@@ -1317,20 +1321,20 @@ importers:
packages/aiCore:
dependencies:
'@ai-sdk/anthropic':
specifier: ^3.0.58
version: 3.0.64(zod@4.3.4)
specifier: ^3.0.71
version: 3.0.71(zod@4.3.4)
'@ai-sdk/azure':
specifier: ^3.0.50
version: 3.0.50(zod@4.3.4)
specifier: ^3.0.54
version: 3.0.54(zod@4.3.4)
'@ai-sdk/deepseek':
specifier: ^2.0.24
version: 2.0.26(zod@4.3.4)
specifier: ^2.0.29
version: 2.0.29(zod@4.3.4)
'@ai-sdk/google':
specifier: ^3.0.55
version: 3.0.55(patch_hash=61e2f6fa9463b661654e527cf1a22d80f0852479b3c870fb8f1d5a4f9decb959)(zod@4.3.4)
specifier: ^3.0.64
version: 3.0.64(patch_hash=3dbdd2fbbe5a44bc23a04b1195329dd8d78043447e925342ad5ed53c8c3b96ec)(zod@4.3.4)
'@ai-sdk/openai':
specifier: ^3.0.49
version: 3.0.49(zod@4.3.4)
specifier: ^3.0.53
version: 3.0.53(patch_hash=83a4d486601eff47ad8b5e22024878be2ced05b5b86e09884199a3f47fd53530)(zod@4.3.4)
'@ai-sdk/openai-compatible':
specifier: ^2.0.37
version: 2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.4)
@@ -1338,11 +1342,11 @@ importers:
specifier: ^3.0.8
version: 3.0.8
'@ai-sdk/provider-utils':
specifier: ^4.0.19
version: 4.0.21(zod@4.3.4)
specifier: 4.0.23
version: 4.0.23(zod@4.3.4)
'@ai-sdk/xai':
specifier: ^3.0.75
version: 3.0.75(zod@4.3.4)
specifier: ^3.0.83
version: 3.0.83(zod@4.3.4)
'@cherrystudio/ai-sdk-provider':
specifier: workspace:*
version: link:../ai-sdk-provider
@@ -1430,38 +1434,44 @@ packages:
peerDependencies:
zod: ^3.25.67
'@ai-sdk/amazon-bedrock@4.0.87':
resolution: {integrity: sha512-Deo3zkkTTk4rzxTAL2UQOKB1RT9X/H1k/1S0Zt4IXqxzz+PGcMsO57IwcQmUOreYy9ZwN6AVmdzTYnMlQ1wk1w==}
'@ai-sdk/amazon-bedrock@4.0.96':
resolution: {integrity: sha512-Mc4Ias2jRMD1jOB6xWtKNPdhECeuCZyIlbr9EAGfBnyBt++sS13ziZh9qv9TdyMCAZJ7xoQcpbchoRJcKwPdpA==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/anthropic@3.0.64':
resolution: {integrity: sha512-rwLi/Rsuj2pYniQXIrvClHvXDzgM4UQHHnvHTWEF14efnlKclG/1ghpNC+adsRujAbCTr6gRsSbDE2vEqriV7g==}
'@ai-sdk/anthropic@3.0.71':
resolution: {integrity: sha512-bUWOzrzR0gJKJO/PLGMR4uH2dqEgqGhrsCV+sSpk4KtOEnUQlfjZI/F7BFlqSvVpFbjdgYRRLysAeEZpJ6S1lg==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/azure@3.0.50':
resolution: {integrity: sha512-rw1YoADyXIKv3P/fRkK4hq9+u9XvnN6KZxXFnUQsVsxXk+TUIoIZ66FTrz1l+p7hzY+go0EmxmSMa/P/NXXT9A==}
'@ai-sdk/azure@3.0.54':
resolution: {integrity: sha512-lnW7V+Kl3OKKvNXHaZSf/D35vo4bchfMm7WzxILZMPJ5N7W6i1oDeSXVurSKlR685Kvpi8ZA76LBJKSbzff3yw==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/cerebras@2.0.41':
resolution: {integrity: sha512-kDMEpjaRdRXIUi1EH8WHwLRahyDTYv9SAJnP6VCCeq8X+tVqZbMLCqqxSG5dRknrI65ucjvzQt+FiDKTAa7AHg==}
'@ai-sdk/cerebras@2.0.45':
resolution: {integrity: sha512-GGDGTS9d073lamFVa3VGCPaGubWqIB6WlfKPv23PBd+/yQmBVC0f0vdZfyJs2xPpzdirSQWeE6PsXplMmkcLeA==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/cohere@3.0.27':
resolution: {integrity: sha512-OqcCq2PiFY1dbK/0Ck45KuvE8jfdxRuuAE9Y5w46dAk6U+9vPOeg1CDcmR+ncqmrYrhRl3nmyDttyDahyjCzAw==}
'@ai-sdk/cohere@3.0.30':
resolution: {integrity: sha512-j3fe/6lUUkHPD/51OgMXN9UD7p1QSQEAlroIinmb3MhJ1s+O0MnqdRa30IM7dRHafNp0FQ9X4YpobY85iMknUQ==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/deepseek@2.0.26':
resolution: {integrity: sha512-62bi03K+Uc6fBiS3sIrkHnJI+gOKENO95ldSIv5NkX+yjG449dU5gxhyoZR/eILZ83vwYHcQP+kX5UnhbWT87g==}
'@ai-sdk/deepseek@2.0.29':
resolution: {integrity: sha512-cn4+xV0menm/4JKEDElnVGiUilHvi6AD4ZK/sY7DXP/Wb7Yb3Vr86NyYM6mGBE/Shk3mWHoHbzggVnF5x0uMEA==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/gateway@3.0.104':
resolution: {integrity: sha512-ZKX5n74io8VIRlhIMSLWVlvT3sXC8Z7cZ9GHuWBWZDVi96+62AIsWuLGvMfcBA1STYuSoDrp6rIziZmvrTq0TA==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
@@ -1472,32 +1482,32 @@ packages:
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/google-vertex@4.0.98':
resolution: {integrity: sha512-SOKKEC0Qer5TPWF4xPk+GPL2Sz5WhX8PzBKczE+Tz3W4MQbK7BpWaEG/uBgdRrb6ikB640+6nX0jtLDuC9kG+Q==}
'@ai-sdk/google-vertex@4.0.112':
resolution: {integrity: sha512-cSfHCkM+9ZrFtQWIN1WlV93JPD+isGSdFxKj7u1L9m2aLVZajlXdcE41GL9hMt7ld7bZYE4NnZ+4VLxBAHE+Eg==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/google@3.0.55':
resolution: {integrity: sha512-lIID7kDdeqzSR/eg+LrEFJGoe/mIwuW4eBdjS84Bi0cIY4cmGwSsvwYILSdiad0197Ha+DUbCxOUuSOnORUx7g==}
'@ai-sdk/google@3.0.64':
resolution: {integrity: sha512-CbR82EgGPNrj/6q0HtclwuCqe0/pDShyv3nWDP/A9DroujzWXnLMlUJVrgPOsg4b40zQCwwVs2XSKCxvt/4QaA==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/groq@3.0.32':
resolution: {integrity: sha512-cKa+viBUgkY0GVWDAMYYOaRS+r9PNJvstfLujqi8YQSlpknQsE+J9TeG8b8bjkAnMnCpUd8s/ZEJHMuKzp+rYQ==}
'@ai-sdk/groq@3.0.35':
resolution: {integrity: sha512-LXoPwSKaqXst9LyLN2J7gK8n7RldQLbP2zsnBYxXcOsXKrtceksqtbsmGXujvab2TM9FisquAw/ZG2hTbD5vnQ==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/huggingface@1.0.39':
resolution: {integrity: sha512-QRhQfR2OEjPD7tHYAuOVVBoS6nYM/zayEF9/dP2Ow0UqsuZPCT7QcZ/cG9bBUnE0x5ol28a3h1hQIzfIUs+k3A==}
'@ai-sdk/huggingface@1.0.43':
resolution: {integrity: sha512-bEHZNmQNabbs7zYjRa7e0Hz1RFiVwm/hjfZ2YFwTFsxC0WmPSSvjyG5SqRM8DApbSC2EtGP5K/zO2IKEXZrYyQ==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4
'@ai-sdk/mistral@3.0.27':
resolution: {integrity: sha512-ZXe7nZQgliDdjz5ufH5RKpHWxbN72AzmzzKGbF/z+0K9GN5tUCnftrQRvTRFHA5jAzTapcm2BEevmGLVbMkW+A==}
'@ai-sdk/mistral@3.0.30':
resolution: {integrity: sha512-+j4IXRSk9E661cFSafmIr+XHOzwjFagawwzMOlSqwL6U4Sq4PCFLDF+oHbX5NUqNjUL7FD1zi/9lBIfa41pUvw==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
@@ -1508,20 +1518,26 @@ packages:
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/openai@3.0.49':
resolution: {integrity: sha512-U2f0pCyNn/jQH3wjgxr8o9VvCkuDFTtXbIhbFFtgXqCzMbed6rBnvzQcAMEK0/Pa44byL9zfcvCOFOflvkRA8w==}
'@ai-sdk/openai-compatible@2.0.41':
resolution: {integrity: sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/perplexity@3.0.26':
resolution: {integrity: sha512-dXzrVsLR5f6tr+U04jq4AXoRroGFBTvODnLgss0SWbzNjGGQg3XqtQ9j7rCLo6o8qbYGuAHvqUrIpUCuiscuFg==}
'@ai-sdk/openai@3.0.53':
resolution: {integrity: sha512-Wld+Rbc05KaUn08uBt06eEuwcgalcIFtIl32Yp+GxuZXUQwOb6YeAuq+C6da4ch6BurFoqEaLemJVwjBb7x+PQ==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/provider-utils@4.0.21':
resolution: {integrity: sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw==}
'@ai-sdk/perplexity@3.0.29':
resolution: {integrity: sha512-9UfV7ywpnxNLPI/hdheFPHXDdLG9vLqNoPSdRTPV+nPAX117zMtBmqD5KSvmXTjeF7IXpObUZ9bWzwMR/ewL1g==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/provider-utils@4.0.23':
resolution: {integrity: sha512-z8GlDaCmRSDlqkMF2f4/RFgWxdarvIbyuk+m6WXT1LYgsnGiXRJGTD2Z1+SDl3LqtFuRtGX1aghYvQLoHL/9pg==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
@@ -1534,14 +1550,14 @@ packages:
resolution: {integrity: sha512-Qw/phEW2IBKzfHIVdySuYijoqAvVJKuwupCrDbl1ofPJ4jsaH/+f+6EysRwui8LNlo/tbFgH0P39gvRFLKHleQ==}
engines: {node: '>=18'}
'@ai-sdk/togetherai@2.0.41':
resolution: {integrity: sha512-k3p9e3k0/gpDDyTtvafsK4HYR4D/aUQW/kzCwWo1+CzdBU84i4L14gWISC/mv6tgSicMXHcEUd521fPufQwNlg==}
'@ai-sdk/togetherai@2.0.45':
resolution: {integrity: sha512-+20Gruk4fF6FZxjMX7QT8PtFNNadBvBz2xgNDEf+O8uMpyi2FP11DOE9W2AShio/lh82Gjd8b7wxSC+RfxXnPg==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/xai@3.0.75':
resolution: {integrity: sha512-V8UKK4fNpI9cnrtsZBvUp9O9J6Y9fTKBRoSLyEaNGPirACewixmLDbXsSgAeownPVWiWpK34bFysd+XouI5Ywg==}
'@ai-sdk/xai@3.0.83':
resolution: {integrity: sha512-SuQz68BZGeuZjrSUJAzku97IlhdiNJJBsvG/Tvm3K2tuxkBS7TJq0fH4/AzAM7w2H2jxVUgboP7kRR6IfpRxcg==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
@@ -1752,6 +1768,10 @@ packages:
resolution: {integrity: sha512-tma6D8/xHZHJEUqmr6ksZjZ0onyIUqKDQLyp50ttZJmS0IwFYzxBgp5CxFvpYAnah52V3UtgrqGA6E83gtT7NQ==}
engines: {node: '>=20.0.0'}
'@aws-sdk/types@3.973.8':
resolution: {integrity: sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==}
engines: {node: '>=20.0.0'}
'@aws-sdk/util-arn-parser@3.972.2':
resolution: {integrity: sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==}
engines: {node: '>=20.0.0'}
@@ -4603,8 +4623,8 @@ packages:
resolution: {integrity: sha512-3bsMLJJLTZGZqVGGeBVFfLzuRulVsGTj12BzRKODTHqUABpIr0jMN1vN3+u6r2OfyhAQ2pXaMZWX/swBK5I6PQ==}
engines: {node: '>=18.0.0'}
'@smithy/eventstream-codec@4.2.10':
resolution: {integrity: sha512-A4ynrsFFfSXUHicfTcRehytppFBcY3HQxEGYiyGktPIOye3Ot7fxpiy4VR42WmtGI4Wfo6OXt/c1Ky1nUFxYYQ==}
'@smithy/eventstream-codec@4.2.14':
resolution: {integrity: sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==}
engines: {node: '>=18.0.0'}
'@smithy/eventstream-serde-browser@4.2.10':
@@ -4651,6 +4671,10 @@ packages:
resolution: {integrity: sha512-Yfu664Qbf1B4IYIsYgKoABt010daZjkaCRvdU/sPnZG6TtHOB0md0RjNdLGzxe5UIdn9js4ftPICzmkRa9RJ4Q==}
engines: {node: '>=18.0.0'}
'@smithy/is-array-buffer@4.2.2':
resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==}
engines: {node: '>=18.0.0'}
'@smithy/md5-js@4.2.10':
resolution: {integrity: sha512-Op+Dh6dPLWTjWITChFayDllIaCXRofOed8ecpggTC5fkh8yXes0vAEX7gRUfjGK+TlyxoCAA05gHbZW/zB9JwQ==}
engines: {node: '>=18.0.0'}
@@ -4743,6 +4767,10 @@ packages:
resolution: {integrity: sha512-/swhmt1qTiVkaejlmMPPDgZhEaWb/HWMGRBheaxwuVkusp/z+ErJyQxO6kaXumOciZSWlmq6Z5mNylCd33X7Ig==}
engines: {node: '>=18.0.0'}
'@smithy/util-buffer-from@4.2.2':
resolution: {integrity: sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==}
engines: {node: '>=18.0.0'}
'@smithy/util-config-provider@4.2.1':
resolution: {integrity: sha512-462id/00U8JWFw6qBuTSWfN5TxOHvDu4WliI97qOIOnuC/g+NDAknTU8eoGXEPlLkRVgWEr03jJBLV4o2FL8+A==}
engines: {node: '>=18.0.0'}
@@ -4763,6 +4791,10 @@ packages:
resolution: {integrity: sha512-c1hHtkgAWmE35/50gmdKajgGAKV3ePJ7t6UtEmpfCWJmQE9BQAQPz0URUVI89eSkcDqCtzqllxzG28IQoZPvwA==}
engines: {node: '>=18.0.0'}
'@smithy/util-hex-encoding@4.2.2':
resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==}
engines: {node: '>=18.0.0'}
'@smithy/util-middleware@4.2.10':
resolution: {integrity: sha512-LxaQIWLp4y0r72eA8mwPNQ9va4h5KeLM0I3M/HV9klmFaY2kN766wf5vsTzmaOpNNb7GgXAd9a25P3h8T49PSA==}
engines: {node: '>=18.0.0'}
@@ -4787,6 +4819,10 @@ packages:
resolution: {integrity: sha512-DSIwNaWtmzrNQHv8g7DBGR9mulSit65KSj5ymGEIAknmIN8IpbZefEep10LaMG/P/xquwbmJ1h9ectz8z6mV6g==}
engines: {node: '>=18.0.0'}
'@smithy/util-utf8@4.2.2':
resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==}
engines: {node: '>=18.0.0'}
'@smithy/util-waiter@4.2.10':
resolution: {integrity: sha512-4eTWph/Lkg1wZEDAyObwme0kmhEb7J/JjibY2znJdrYRgKbKqB7YoEhhJVJ4R1g/SYih4zuwX7LpJaM8RsnTVg==}
engines: {node: '>=18.0.0'}
@@ -5854,6 +5890,10 @@ packages:
resolution: {integrity: sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w==}
engines: {node: '>= 20'}
'@vercel/oidc@3.2.0':
resolution: {integrity: sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==}
engines: {node: '>= 20'}
'@vimeo/player@2.29.0':
resolution: {integrity: sha512-9JjvjeqUndb9otCCFd0/+2ESsLk7VkDE6sxOBy9iy2ukezuQbplVRi+g9g59yAurKofbmTi/KcKxBGO/22zWRw==}
@@ -6213,8 +6253,8 @@ packages:
axios@1.15.0:
resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==}
axios@1.15.1:
resolution: {integrity: sha512-WOG+Jj8ZOvR0a3rAn+Tuf1UQJRxw5venr6DgdbJzngJE3qG7X0kL83CZGpdHMxEm+ZK3seAbvFsw4FfOfP9vxg==}
axios@1.15.2:
resolution: {integrity: sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A==}
b4a@1.7.3:
resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==}
@@ -7812,6 +7852,10 @@ packages:
resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==}
engines: {node: '>=18.0.0'}
eventsource-parser@3.0.8:
resolution: {integrity: sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==}
engines: {node: '>=18.0.0'}
eventsource@3.0.7:
resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==}
engines: {node: '>=18.0.0'}
@@ -8162,6 +8206,10 @@ packages:
resolution: {integrity: sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==}
engines: {node: '>=18'}
gaxios@7.1.4:
resolution: {integrity: sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==}
engines: {node: '>=18'}
gcp-metadata@6.1.1:
resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==}
engines: {node: '>=14'}
@@ -8276,6 +8324,10 @@ packages:
resolution: {integrity: sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==}
engines: {node: '>=18'}
google-auth-library@10.6.2:
resolution: {integrity: sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==}
engines: {node: '>=18'}
google-auth-library@9.15.1:
resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==}
engines: {node: '>=14'}
@@ -12873,146 +12925,159 @@ snapshots:
transitivePeerDependencies:
- babel-plugin-macros
'@ai-sdk/amazon-bedrock@4.0.87(zod@4.3.4)':
'@ai-sdk/amazon-bedrock@4.0.96(zod@4.3.4)':
dependencies:
'@ai-sdk/anthropic': 3.0.64(zod@4.3.4)
'@ai-sdk/anthropic': 3.0.71(zod@4.3.4)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@smithy/eventstream-codec': 4.2.10
'@smithy/util-utf8': 4.2.1
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
'@smithy/eventstream-codec': 4.2.14
'@smithy/util-utf8': 4.2.2
aws4fetch: 1.0.20
zod: 4.3.4
'@ai-sdk/anthropic@3.0.64(zod@4.3.4)':
'@ai-sdk/anthropic@3.0.71(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/anthropic@3.0.64(zod@4.3.6)':
'@ai-sdk/anthropic@3.0.71(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.6)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.6)
zod: 4.3.6
'@ai-sdk/azure@3.0.50(zod@4.3.4)':
'@ai-sdk/azure@3.0.54(zod@4.3.4)':
dependencies:
'@ai-sdk/openai': 3.0.49(zod@4.3.4)
'@ai-sdk/openai': 3.0.53(patch_hash=83a4d486601eff47ad8b5e22024878be2ced05b5b86e09884199a3f47fd53530)(zod@4.3.4)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/cerebras@2.0.41(zod@4.3.4)':
'@ai-sdk/cerebras@2.0.45(zod@4.3.4)':
dependencies:
'@ai-sdk/openai-compatible': 2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.4)
'@ai-sdk/openai-compatible': 2.0.41(zod@4.3.4)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/cohere@3.0.27(zod@4.3.4)':
'@ai-sdk/cohere@3.0.30(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/deepseek@2.0.26(zod@4.3.4)':
'@ai-sdk/deepseek@2.0.29(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/gateway@3.0.104(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
'@vercel/oidc': 3.2.0
zod: 4.3.4
'@ai-sdk/gateway@3.0.85(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
'@vercel/oidc': 3.1.0
zod: 4.3.4
'@ai-sdk/google-vertex@4.0.98(zod@4.3.4)':
'@ai-sdk/google-vertex@4.0.112(zod@4.3.4)':
dependencies:
'@ai-sdk/anthropic': 3.0.64(zod@4.3.4)
'@ai-sdk/google': 3.0.55(patch_hash=61e2f6fa9463b661654e527cf1a22d80f0852479b3c870fb8f1d5a4f9decb959)(zod@4.3.4)
'@ai-sdk/openai-compatible': 2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.4)
'@ai-sdk/anthropic': 3.0.71(zod@4.3.4)
'@ai-sdk/google': 3.0.64(patch_hash=3dbdd2fbbe5a44bc23a04b1195329dd8d78043447e925342ad5ed53c8c3b96ec)(zod@4.3.4)
'@ai-sdk/openai-compatible': 2.0.41(zod@4.3.4)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
google-auth-library: 10.5.0
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
google-auth-library: 10.6.2
zod: 4.3.4
transitivePeerDependencies:
- supports-color
'@ai-sdk/google@3.0.55(patch_hash=61e2f6fa9463b661654e527cf1a22d80f0852479b3c870fb8f1d5a4f9decb959)(zod@4.3.4)':
'@ai-sdk/google@3.0.64(patch_hash=3dbdd2fbbe5a44bc23a04b1195329dd8d78043447e925342ad5ed53c8c3b96ec)(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/google@3.0.55(patch_hash=61e2f6fa9463b661654e527cf1a22d80f0852479b3c870fb8f1d5a4f9decb959)(zod@4.3.6)':
'@ai-sdk/google@3.0.64(patch_hash=3dbdd2fbbe5a44bc23a04b1195329dd8d78043447e925342ad5ed53c8c3b96ec)(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.6)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.6)
zod: 4.3.6
'@ai-sdk/groq@3.0.32(zod@4.3.4)':
'@ai-sdk/groq@3.0.35(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/huggingface@1.0.39(zod@4.3.4)':
'@ai-sdk/huggingface@1.0.43(zod@4.3.4)':
dependencies:
'@ai-sdk/openai-compatible': 2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.4)
'@ai-sdk/openai-compatible': 2.0.41(zod@4.3.4)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/mistral@3.0.27(zod@4.3.4)':
'@ai-sdk/mistral@3.0.30(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/openai-compatible@2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/openai-compatible@2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.6)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.6)
zod: 4.3.6
'@ai-sdk/openai@3.0.49(zod@4.3.4)':
'@ai-sdk/openai-compatible@2.0.41(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/openai@3.0.49(zod@4.3.6)':
'@ai-sdk/openai@3.0.53(patch_hash=83a4d486601eff47ad8b5e22024878be2ced05b5b86e09884199a3f47fd53530)(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.6)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/openai@3.0.53(patch_hash=83a4d486601eff47ad8b5e22024878be2ced05b5b86e09884199a3f47fd53530)(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.6)
zod: 4.3.6
'@ai-sdk/perplexity@3.0.26(zod@4.3.4)':
'@ai-sdk/perplexity@3.0.29(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/provider-utils@4.0.21(zod@4.3.4)':
'@ai-sdk/provider-utils@4.0.23(zod@4.3.4)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@standard-schema/spec': 1.1.0
eventsource-parser: 3.0.6
eventsource-parser: 3.0.8
zod: 4.3.4
'@ai-sdk/provider-utils@4.0.21(zod@4.3.6)':
'@ai-sdk/provider-utils@4.0.23(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 3.0.8
'@standard-schema/spec': 1.1.0
eventsource-parser: 3.0.6
eventsource-parser: 3.0.8
zod: 4.3.6
'@ai-sdk/provider@3.0.8':
@@ -13026,18 +13091,18 @@ snapshots:
- '@types/node'
- typescript
'@ai-sdk/togetherai@2.0.41(zod@4.3.4)':
'@ai-sdk/togetherai@2.0.45(zod@4.3.4)':
dependencies:
'@ai-sdk/openai-compatible': 2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.4)
'@ai-sdk/openai-compatible': 2.0.41(zod@4.3.4)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/xai@3.0.75(zod@4.3.4)':
'@ai-sdk/xai@3.0.83(zod@4.3.4)':
dependencies:
'@ai-sdk/openai-compatible': 2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.4)
'@ai-sdk/openai-compatible': 2.0.41(zod@4.3.4)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
zod: 4.3.4
'@ampproject/remapping@2.3.0':
@@ -13175,7 +13240,7 @@ snapshots:
'@aws-crypto/crc32@5.2.0':
dependencies:
'@aws-crypto/util': 5.2.0
'@aws-sdk/types': 3.973.3
'@aws-sdk/types': 3.973.8
tslib: 2.8.1
'@aws-crypto/crc32c@5.2.0':
@@ -13575,6 +13640,11 @@ snapshots:
'@smithy/types': 4.7.1
tslib: 2.8.1
'@aws-sdk/types@3.973.8':
dependencies:
'@smithy/types': 4.7.1
tslib: 2.8.1
'@aws-sdk/util-arn-parser@3.972.2':
dependencies:
tslib: 2.8.1
@@ -14665,7 +14735,7 @@ snapshots:
node-gyp: 11.5.0
ora: 5.4.1
read-binary-file-arch: 1.0.6
semver: 7.7.2
semver: 7.7.1
tar: 6.2.1
yargs: 17.7.2
transitivePeerDependencies:
@@ -15903,7 +15973,7 @@ snapshots:
dependencies:
'@ai-sdk/openai-compatible': 2.0.37(patch_hash=d24ef2c45b84eab205e51894a90c5c36e93e6e0b17f56533aa37145129539a1a)(zod@4.3.4)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
transitivePeerDependencies:
- zod
@@ -16603,11 +16673,11 @@ snapshots:
'@smithy/url-parser': 4.2.10
tslib: 2.8.1
'@smithy/eventstream-codec@4.2.10':
'@smithy/eventstream-codec@4.2.14':
dependencies:
'@aws-crypto/crc32': 5.2.0
'@smithy/types': 4.7.1
'@smithy/util-hex-encoding': 4.2.1
'@smithy/util-hex-encoding': 4.2.2
tslib: 2.8.1
'@smithy/eventstream-serde-browser@4.2.10':
@@ -16629,7 +16699,7 @@ snapshots:
'@smithy/eventstream-serde-universal@4.2.10':
dependencies:
'@smithy/eventstream-codec': 4.2.10
'@smithy/eventstream-codec': 4.2.14
'@smithy/types': 4.7.1
tslib: 2.8.1
@@ -16674,6 +16744,10 @@ snapshots:
dependencies:
tslib: 2.8.1
'@smithy/is-array-buffer@4.2.2':
dependencies:
tslib: 2.8.1
'@smithy/md5-js@4.2.10':
dependencies:
'@smithy/types': 4.7.1
@@ -16820,6 +16894,11 @@ snapshots:
'@smithy/is-array-buffer': 4.2.1
tslib: 2.8.1
'@smithy/util-buffer-from@4.2.2':
dependencies:
'@smithy/is-array-buffer': 4.2.2
tslib: 2.8.1
'@smithy/util-config-provider@4.2.1':
dependencies:
tslib: 2.8.1
@@ -16851,6 +16930,10 @@ snapshots:
dependencies:
tslib: 2.8.1
'@smithy/util-hex-encoding@4.2.2':
dependencies:
tslib: 2.8.1
'@smithy/util-middleware@4.2.10':
dependencies:
'@smithy/types': 4.7.1
@@ -16887,6 +16970,11 @@ snapshots:
'@smithy/util-buffer-from': 4.2.1
tslib: 2.8.1
'@smithy/util-utf8@4.2.2':
dependencies:
'@smithy/util-buffer-from': 4.2.2
tslib: 2.8.1
'@smithy/util-waiter@4.2.10':
dependencies:
'@smithy/abort-controller': 4.2.10
@@ -18337,6 +18425,8 @@ snapshots:
'@vercel/oidc@3.1.0': {}
'@vercel/oidc@3.2.0': {}
'@vimeo/player@2.29.0':
dependencies:
native-promise-only: 0.8.1
@@ -18532,7 +18622,7 @@ snapshots:
dependencies:
'@ai-sdk/gateway': 3.0.85(zod@4.3.4)
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
'@opentelemetry/api': 1.9.0
zod: 4.3.4
@@ -18866,7 +18956,7 @@ snapshots:
transitivePeerDependencies:
- debug
axios@1.15.1(debug@4.4.3):
axios@1.15.2(debug@4.4.3):
dependencies:
follow-redirects: 1.16.0(debug@4.4.3)
form-data: 4.0.5
@@ -20639,6 +20729,8 @@ snapshots:
eventsource-parser@3.0.6: {}
eventsource-parser@3.0.8: {}
eventsource@3.0.7:
dependencies:
eventsource-parser: 3.0.6
@@ -21080,6 +21172,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
gaxios@7.1.4:
dependencies:
extend: 3.0.2
https-proxy-agent: 7.0.6
node-fetch: 3.3.2
transitivePeerDependencies:
- supports-color
gcp-metadata@6.1.1(encoding@0.1.13):
dependencies:
gaxios: 6.7.1(encoding@0.1.13)
@@ -21091,7 +21191,7 @@ snapshots:
gcp-metadata@8.1.2:
dependencies:
gaxios: 7.1.3
gaxios: 7.1.4
google-logging-utils: 1.1.3
json-bigint: 1.0.0
transitivePeerDependencies:
@@ -21247,6 +21347,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
google-auth-library@10.6.2:
dependencies:
base64-js: 1.5.1
ecdsa-sig-formatter: 1.0.11
gaxios: 7.1.4
gcp-metadata: 8.1.2
google-logging-utils: 1.1.3
jws: 4.0.1
transitivePeerDependencies:
- supports-color
google-auth-library@9.15.1(encoding@0.1.13):
dependencies:
base64-js: 1.5.1
@@ -21615,7 +21726,7 @@ snapshots:
'@types/debug': 4.1.13
'@types/node': 18.19.130
'@types/tough-cookie': 4.0.5
axios: 1.15.1(debug@4.4.3)
axios: 1.15.2(debug@4.4.3)
camelcase: 6.3.0
debug: 4.4.3
dotenv: 16.6.1
@@ -21625,7 +21736,7 @@ snapshots:
isstream: 0.1.2
jsonwebtoken: 9.0.3
mime-types: 2.1.35
retry-axios: 2.6.0(axios@1.15.1(debug@4.4.3))
retry-axios: 2.6.0(axios@1.15.2(debug@4.4.3))
tough-cookie: 4.1.4
transitivePeerDependencies:
- supports-color
@@ -23352,7 +23463,7 @@ snapshots:
ollama-ai-provider-v2@3.3.1(patch_hash=8aceca32b8ea722ca9955177622f35735676b9c573fa7347f7d9b28e6210d3bb)(ai@6.0.143(zod@4.3.4))(zod@4.3.4):
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
ai: 6.0.143(zod@4.3.4)
zod: 4.3.4
@@ -24848,9 +24959,9 @@ snapshots:
onetime: 5.1.2
signal-exit: 3.0.7
retry-axios@2.6.0(axios@1.15.1(debug@4.4.3)):
retry-axios@2.6.0(axios@1.15.2(debug@4.4.3)):
dependencies:
axios: 1.15.1(debug@4.4.3)
axios: 1.15.2(debug@4.4.3)
retry@0.12.0: {}
@@ -26269,7 +26380,7 @@ snapshots:
voyage-ai-provider@3.0.0(zod@4.3.4):
dependencies:
'@ai-sdk/provider': 3.0.8
'@ai-sdk/provider-utils': 4.0.21(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.23(zod@4.3.4)
optionalDependencies:
zod: 4.3.4

View File

@@ -75,6 +75,7 @@ function buildAppProviderIds(): ProviderIdsMap {
if (config.variants) {
config.variants.forEach((variant) => {
// 变体自反映射:'azure-responses' -> 'azure-responses'
// oxlint-disable-next-line typescript/no-unnecessary-type-assertion
const variantId = `${name}-${variant.suffix}` as KnownAppProviderId
;(map as Record<string, KnownAppProviderId>)[variantId] = variantId
})

View File

@@ -670,7 +670,7 @@ function getFallbackBudgetTokens(reasoningEffort: string | undefined): number {
export function getAnthropicReasoningParams(
assistant: Assistant,
model: Model
): Pick<AnthropicProviderOptions, 'thinking' | 'effort'> {
): { thinking?: AnthropicProviderOptions['thinking']; effort?: Exclude<AnthropicProviderOptions['effort'], 'xhigh'> } {
if (!isReasoningModel(model)) {
return {}
}