@ai-sdk/gateway 4.0.13 → 4.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +444 -427
- package/dist/index.js.map +1 -1
- package/docs/00-ai-gateway.mdx +1 -1
- package/package.json +5 -5
- package/src/errors/create-gateway-error.ts +12 -2
- package/src/errors/gateway-forbidden-error.ts +14 -0
- package/src/gateway-language-model-settings.ts +6 -0
package/docs/00-ai-gateway.mdx
CHANGED
|
@@ -506,7 +506,7 @@ import { generateText, tool } from 'ai';
|
|
|
506
506
|
import { z } from 'zod';
|
|
507
507
|
|
|
508
508
|
const { text } = await generateText({
|
|
509
|
-
model: 'xai/grok-4',
|
|
509
|
+
model: 'xai/grok-4.5',
|
|
510
510
|
prompt: 'What is the weather like in San Francisco?',
|
|
511
511
|
tools: {
|
|
512
512
|
getWeather: tool({
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/gateway",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "4.0.
|
|
4
|
+
"version": "4.0.15",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"sideEffects": false,
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@vercel/oidc": "3.2.0",
|
|
34
|
-
"@ai-sdk/provider": "4.0.
|
|
35
|
-
"@ai-sdk/provider-utils": "5.0.
|
|
34
|
+
"@ai-sdk/provider": "4.0.3",
|
|
35
|
+
"@ai-sdk/provider-utils": "5.0.7"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/node": "22.19.19",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"tsx": "4.19.2",
|
|
41
41
|
"typescript": "5.8.3",
|
|
42
42
|
"zod": "3.25.76",
|
|
43
|
-
"@ai-
|
|
44
|
-
"@
|
|
43
|
+
"@vercel/ai-tsconfig": "0.0.0",
|
|
44
|
+
"@ai-sdk/test-server": "2.0.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"zod": "^3.25.76 || ^4.1.8"
|
|
@@ -9,7 +9,10 @@ import {
|
|
|
9
9
|
} from './gateway-model-not-found-error';
|
|
10
10
|
import { GatewayInternalServerError } from './gateway-internal-server-error';
|
|
11
11
|
import { GatewayFailedDependencyError } from './gateway-failed-dependency-error';
|
|
12
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
GatewayForbiddenError,
|
|
14
|
+
forbiddenParamSchema,
|
|
15
|
+
} from './gateway-forbidden-error';
|
|
13
16
|
import { GatewayResponseError } from './gateway-response-error';
|
|
14
17
|
import {
|
|
15
18
|
lazySchema,
|
|
@@ -110,13 +113,20 @@ export async function createGatewayErrorFromResponse({
|
|
|
110
113
|
cause,
|
|
111
114
|
generationId,
|
|
112
115
|
});
|
|
113
|
-
case 'forbidden':
|
|
116
|
+
case 'forbidden': {
|
|
117
|
+
const ruleResult = await safeValidateTypes({
|
|
118
|
+
value: validatedResponse.error.param,
|
|
119
|
+
schema: forbiddenParamSchema,
|
|
120
|
+
});
|
|
121
|
+
|
|
114
122
|
return new GatewayForbiddenError({
|
|
115
123
|
message,
|
|
116
124
|
statusCode,
|
|
117
125
|
cause,
|
|
118
126
|
generationId,
|
|
127
|
+
ruleId: ruleResult.success ? ruleResult.value.ruleId : undefined,
|
|
119
128
|
});
|
|
129
|
+
}
|
|
120
130
|
default:
|
|
121
131
|
return new GatewayInternalServerError({
|
|
122
132
|
message,
|
|
@@ -1,9 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
1
2
|
import { GatewayError } from './gateway-error';
|
|
3
|
+
import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';
|
|
2
4
|
|
|
3
5
|
const name = 'GatewayForbiddenError';
|
|
4
6
|
const marker = `vercel.ai.gateway.error.${name}`;
|
|
5
7
|
const symbol = Symbol.for(marker);
|
|
6
8
|
|
|
9
|
+
export const forbiddenParamSchema = lazySchema(() =>
|
|
10
|
+
zodSchema(
|
|
11
|
+
z.object({
|
|
12
|
+
ruleId: z.string(),
|
|
13
|
+
}),
|
|
14
|
+
),
|
|
15
|
+
);
|
|
16
|
+
|
|
7
17
|
/**
|
|
8
18
|
* Forbidden - the request was rejected by policy (e.g. a routing rule),
|
|
9
19
|
* not an authentication failure.
|
|
@@ -13,19 +23,23 @@ export class GatewayForbiddenError extends GatewayError {
|
|
|
13
23
|
|
|
14
24
|
readonly name = name;
|
|
15
25
|
readonly type = 'forbidden';
|
|
26
|
+
readonly ruleId?: string;
|
|
16
27
|
|
|
17
28
|
constructor({
|
|
18
29
|
message = 'Forbidden',
|
|
19
30
|
statusCode = 403,
|
|
20
31
|
cause,
|
|
21
32
|
generationId,
|
|
33
|
+
ruleId,
|
|
22
34
|
}: {
|
|
23
35
|
message?: string;
|
|
24
36
|
statusCode?: number;
|
|
25
37
|
cause?: unknown;
|
|
26
38
|
generationId?: string;
|
|
39
|
+
ruleId?: string;
|
|
27
40
|
} = {}) {
|
|
28
41
|
super({ message, statusCode, cause, generationId });
|
|
42
|
+
this.ruleId = ruleId;
|
|
29
43
|
}
|
|
30
44
|
|
|
31
45
|
static isInstance(error: unknown): error is GatewayForbiddenError {
|
|
@@ -69,6 +69,7 @@ export type GatewayModelId =
|
|
|
69
69
|
| 'google/gemini-3.1-flash-lite-preview'
|
|
70
70
|
| 'google/gemini-3.1-pro-preview'
|
|
71
71
|
| 'google/gemini-3.5-flash'
|
|
72
|
+
| 'google/gemini-omni-flash-preview'
|
|
72
73
|
| 'google/gemma-4-26b-a4b-it'
|
|
73
74
|
| 'google/gemma-4-31b-it'
|
|
74
75
|
| 'inception/mercury-2'
|
|
@@ -156,6 +157,10 @@ export type GatewayModelId =
|
|
|
156
157
|
| 'openai/gpt-5.4-pro'
|
|
157
158
|
| 'openai/gpt-5.5'
|
|
158
159
|
| 'openai/gpt-5.5-pro'
|
|
160
|
+
| 'openai/gpt-5.6'
|
|
161
|
+
| 'openai/gpt-5.6-luna'
|
|
162
|
+
| 'openai/gpt-5.6-sol'
|
|
163
|
+
| 'openai/gpt-5.6-terra'
|
|
159
164
|
| 'openai/gpt-oss-120b'
|
|
160
165
|
| 'openai/gpt-oss-20b'
|
|
161
166
|
| 'openai/gpt-oss-safeguard-20b'
|
|
@@ -180,6 +185,7 @@ export type GatewayModelId =
|
|
|
180
185
|
| 'xai/grok-4.20-reasoning'
|
|
181
186
|
| 'xai/grok-4.20-reasoning-beta'
|
|
182
187
|
| 'xai/grok-4.3'
|
|
188
|
+
| 'xai/grok-4.5'
|
|
183
189
|
| 'xai/grok-build-0.1'
|
|
184
190
|
| 'xiaomi/mimo-v2-flash'
|
|
185
191
|
| 'xiaomi/mimo-v2-pro'
|