@ai-sdk/gateway 2.0.100 → 2.0.102
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 +12 -0
- package/dist/index.d.mts +23 -6
- package/dist/index.d.ts +23 -6
- package/dist/index.js +87 -61
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +84 -59
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -100,56 +100,78 @@ Run 'npx vercel link' to link your project, then 'vc env pull' to fetch the toke
|
|
|
100
100
|
}
|
|
101
101
|
};
|
|
102
102
|
|
|
103
|
-
// src/errors/gateway-
|
|
104
|
-
var name2 = "
|
|
103
|
+
// src/errors/gateway-forbidden-error.ts
|
|
104
|
+
var name2 = "GatewayForbiddenError";
|
|
105
105
|
var marker3 = `vercel.ai.gateway.error.${name2}`;
|
|
106
106
|
var symbol3 = Symbol.for(marker3);
|
|
107
107
|
var _a3, _b3;
|
|
108
|
-
var
|
|
108
|
+
var GatewayForbiddenError = class extends (_b3 = GatewayError, _a3 = symbol3, _b3) {
|
|
109
109
|
constructor({
|
|
110
|
-
message = "
|
|
111
|
-
statusCode =
|
|
110
|
+
message = "Forbidden",
|
|
111
|
+
statusCode = 403,
|
|
112
112
|
cause
|
|
113
113
|
} = {}) {
|
|
114
114
|
super({ message, statusCode, cause });
|
|
115
115
|
this[_a3] = true;
|
|
116
116
|
// used in isInstance
|
|
117
117
|
this.name = name2;
|
|
118
|
-
this.type = "
|
|
118
|
+
this.type = "forbidden";
|
|
119
119
|
}
|
|
120
120
|
static isInstance(error) {
|
|
121
121
|
return GatewayError.hasMarker(error) && symbol3 in error;
|
|
122
122
|
}
|
|
123
123
|
};
|
|
124
124
|
|
|
125
|
-
// src/errors/gateway-
|
|
126
|
-
var name3 = "
|
|
125
|
+
// src/errors/gateway-invalid-request-error.ts
|
|
126
|
+
var name3 = "GatewayInvalidRequestError";
|
|
127
127
|
var marker4 = `vercel.ai.gateway.error.${name3}`;
|
|
128
128
|
var symbol4 = Symbol.for(marker4);
|
|
129
129
|
var _a4, _b4;
|
|
130
|
-
var
|
|
130
|
+
var GatewayInvalidRequestError = class extends (_b4 = GatewayError, _a4 = symbol4, _b4) {
|
|
131
131
|
constructor({
|
|
132
|
-
message = "
|
|
133
|
-
statusCode =
|
|
132
|
+
message = "Invalid request",
|
|
133
|
+
statusCode = 400,
|
|
134
134
|
cause
|
|
135
135
|
} = {}) {
|
|
136
136
|
super({ message, statusCode, cause });
|
|
137
137
|
this[_a4] = true;
|
|
138
138
|
// used in isInstance
|
|
139
139
|
this.name = name3;
|
|
140
|
-
this.type = "
|
|
140
|
+
this.type = "invalid_request_error";
|
|
141
141
|
}
|
|
142
142
|
static isInstance(error) {
|
|
143
143
|
return GatewayError.hasMarker(error) && symbol4 in error;
|
|
144
144
|
}
|
|
145
145
|
};
|
|
146
146
|
|
|
147
|
+
// src/errors/gateway-rate-limit-error.ts
|
|
148
|
+
var name4 = "GatewayRateLimitError";
|
|
149
|
+
var marker5 = `vercel.ai.gateway.error.${name4}`;
|
|
150
|
+
var symbol5 = Symbol.for(marker5);
|
|
151
|
+
var _a5, _b5;
|
|
152
|
+
var GatewayRateLimitError = class extends (_b5 = GatewayError, _a5 = symbol5, _b5) {
|
|
153
|
+
constructor({
|
|
154
|
+
message = "Rate limit exceeded",
|
|
155
|
+
statusCode = 429,
|
|
156
|
+
cause
|
|
157
|
+
} = {}) {
|
|
158
|
+
super({ message, statusCode, cause });
|
|
159
|
+
this[_a5] = true;
|
|
160
|
+
// used in isInstance
|
|
161
|
+
this.name = name4;
|
|
162
|
+
this.type = "rate_limit_exceeded";
|
|
163
|
+
}
|
|
164
|
+
static isInstance(error) {
|
|
165
|
+
return GatewayError.hasMarker(error) && symbol5 in error;
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
|
|
147
169
|
// src/errors/gateway-model-not-found-error.ts
|
|
148
170
|
import { z } from "zod/v4";
|
|
149
171
|
import { lazyValidator, zodSchema } from "@ai-sdk/provider-utils";
|
|
150
|
-
var
|
|
151
|
-
var
|
|
152
|
-
var
|
|
172
|
+
var name5 = "GatewayModelNotFoundError";
|
|
173
|
+
var marker6 = `vercel.ai.gateway.error.${name5}`;
|
|
174
|
+
var symbol6 = Symbol.for(marker6);
|
|
153
175
|
var modelNotFoundParamSchema = lazyValidator(
|
|
154
176
|
() => zodSchema(
|
|
155
177
|
z.object({
|
|
@@ -157,8 +179,8 @@ var modelNotFoundParamSchema = lazyValidator(
|
|
|
157
179
|
})
|
|
158
180
|
)
|
|
159
181
|
);
|
|
160
|
-
var
|
|
161
|
-
var GatewayModelNotFoundError = class extends (
|
|
182
|
+
var _a6, _b6;
|
|
183
|
+
var GatewayModelNotFoundError = class extends (_b6 = GatewayError, _a6 = symbol6, _b6) {
|
|
162
184
|
constructor({
|
|
163
185
|
message = "Model not found",
|
|
164
186
|
statusCode = 404,
|
|
@@ -166,45 +188,45 @@ var GatewayModelNotFoundError = class extends (_b5 = GatewayError, _a5 = symbol5
|
|
|
166
188
|
cause
|
|
167
189
|
} = {}) {
|
|
168
190
|
super({ message, statusCode, cause });
|
|
169
|
-
this[
|
|
191
|
+
this[_a6] = true;
|
|
170
192
|
// used in isInstance
|
|
171
|
-
this.name =
|
|
193
|
+
this.name = name5;
|
|
172
194
|
this.type = "model_not_found";
|
|
173
195
|
this.modelId = modelId;
|
|
174
196
|
}
|
|
175
197
|
static isInstance(error) {
|
|
176
|
-
return GatewayError.hasMarker(error) &&
|
|
198
|
+
return GatewayError.hasMarker(error) && symbol6 in error;
|
|
177
199
|
}
|
|
178
200
|
};
|
|
179
201
|
|
|
180
202
|
// src/errors/gateway-internal-server-error.ts
|
|
181
|
-
var
|
|
182
|
-
var
|
|
183
|
-
var
|
|
184
|
-
var
|
|
185
|
-
var GatewayInternalServerError = class extends (
|
|
203
|
+
var name6 = "GatewayInternalServerError";
|
|
204
|
+
var marker7 = `vercel.ai.gateway.error.${name6}`;
|
|
205
|
+
var symbol7 = Symbol.for(marker7);
|
|
206
|
+
var _a7, _b7;
|
|
207
|
+
var GatewayInternalServerError = class extends (_b7 = GatewayError, _a7 = symbol7, _b7) {
|
|
186
208
|
constructor({
|
|
187
209
|
message = "Internal server error",
|
|
188
210
|
statusCode = 500,
|
|
189
211
|
cause
|
|
190
212
|
} = {}) {
|
|
191
213
|
super({ message, statusCode, cause });
|
|
192
|
-
this[
|
|
214
|
+
this[_a7] = true;
|
|
193
215
|
// used in isInstance
|
|
194
|
-
this.name =
|
|
216
|
+
this.name = name6;
|
|
195
217
|
this.type = "internal_server_error";
|
|
196
218
|
}
|
|
197
219
|
static isInstance(error) {
|
|
198
|
-
return GatewayError.hasMarker(error) &&
|
|
220
|
+
return GatewayError.hasMarker(error) && symbol7 in error;
|
|
199
221
|
}
|
|
200
222
|
};
|
|
201
223
|
|
|
202
224
|
// src/errors/gateway-response-error.ts
|
|
203
|
-
var
|
|
204
|
-
var
|
|
205
|
-
var
|
|
206
|
-
var
|
|
207
|
-
var GatewayResponseError = class extends (
|
|
225
|
+
var name7 = "GatewayResponseError";
|
|
226
|
+
var marker8 = `vercel.ai.gateway.error.${name7}`;
|
|
227
|
+
var symbol8 = Symbol.for(marker8);
|
|
228
|
+
var _a8, _b8;
|
|
229
|
+
var GatewayResponseError = class extends (_b8 = GatewayError, _a8 = symbol8, _b8) {
|
|
208
230
|
constructor({
|
|
209
231
|
message = "Invalid response from Gateway",
|
|
210
232
|
statusCode = 502,
|
|
@@ -213,15 +235,15 @@ var GatewayResponseError = class extends (_b7 = GatewayError, _a7 = symbol7, _b7
|
|
|
213
235
|
cause
|
|
214
236
|
} = {}) {
|
|
215
237
|
super({ message, statusCode, cause });
|
|
216
|
-
this[
|
|
238
|
+
this[_a8] = true;
|
|
217
239
|
// used in isInstance
|
|
218
|
-
this.name =
|
|
240
|
+
this.name = name7;
|
|
219
241
|
this.type = "response_error";
|
|
220
242
|
this.response = response;
|
|
221
243
|
this.validationError = validationError;
|
|
222
244
|
}
|
|
223
245
|
static isInstance(error) {
|
|
224
|
-
return GatewayError.hasMarker(error) &&
|
|
246
|
+
return GatewayError.hasMarker(error) && symbol8 in error;
|
|
225
247
|
}
|
|
226
248
|
};
|
|
227
249
|
|
|
@@ -280,6 +302,8 @@ async function createGatewayErrorFromResponse({
|
|
|
280
302
|
}
|
|
281
303
|
case "internal_server_error":
|
|
282
304
|
return new GatewayInternalServerError({ message, statusCode, cause });
|
|
305
|
+
case "forbidden":
|
|
306
|
+
return new GatewayForbiddenError({ message, statusCode, cause });
|
|
283
307
|
default:
|
|
284
308
|
return new GatewayInternalServerError({ message, statusCode, cause });
|
|
285
309
|
}
|
|
@@ -313,24 +337,24 @@ function extractApiCallResponse(error) {
|
|
|
313
337
|
}
|
|
314
338
|
|
|
315
339
|
// src/errors/gateway-timeout-error.ts
|
|
316
|
-
var
|
|
317
|
-
var
|
|
318
|
-
var
|
|
319
|
-
var
|
|
320
|
-
var GatewayTimeoutError = class _GatewayTimeoutError extends (
|
|
340
|
+
var name8 = "GatewayTimeoutError";
|
|
341
|
+
var marker9 = `vercel.ai.gateway.error.${name8}`;
|
|
342
|
+
var symbol9 = Symbol.for(marker9);
|
|
343
|
+
var _a9, _b9;
|
|
344
|
+
var GatewayTimeoutError = class _GatewayTimeoutError extends (_b9 = GatewayError, _a9 = symbol9, _b9) {
|
|
321
345
|
constructor({
|
|
322
346
|
message = "Request timed out",
|
|
323
347
|
statusCode = 408,
|
|
324
348
|
cause
|
|
325
349
|
} = {}) {
|
|
326
350
|
super({ message, statusCode, cause });
|
|
327
|
-
this[
|
|
351
|
+
this[_a9] = true;
|
|
328
352
|
// used in isInstance
|
|
329
|
-
this.name =
|
|
353
|
+
this.name = name8;
|
|
330
354
|
this.type = "timeout_error";
|
|
331
355
|
}
|
|
332
356
|
static isInstance(error) {
|
|
333
|
-
return GatewayError.hasMarker(error) &&
|
|
357
|
+
return GatewayError.hasMarker(error) && symbol9 in error;
|
|
334
358
|
}
|
|
335
359
|
/**
|
|
336
360
|
* Creates a helpful timeout error message with troubleshooting guidance
|
|
@@ -368,7 +392,7 @@ function isTimeoutError(error) {
|
|
|
368
392
|
return false;
|
|
369
393
|
}
|
|
370
394
|
async function asGatewayError(error, authMethod) {
|
|
371
|
-
var
|
|
395
|
+
var _a10;
|
|
372
396
|
if (GatewayError.isInstance(error)) {
|
|
373
397
|
return error;
|
|
374
398
|
}
|
|
@@ -387,7 +411,7 @@ async function asGatewayError(error, authMethod) {
|
|
|
387
411
|
}
|
|
388
412
|
return await createGatewayErrorFromResponse({
|
|
389
413
|
response: extractApiCallResponse(error),
|
|
390
|
-
statusCode: (
|
|
414
|
+
statusCode: (_a10 = error.statusCode) != null ? _a10 : 500,
|
|
391
415
|
defaultMessage: "Gateway request failed",
|
|
392
416
|
cause: error,
|
|
393
417
|
authMethod
|
|
@@ -915,7 +939,7 @@ var GatewayEmbeddingModel = class {
|
|
|
915
939
|
abortSignal,
|
|
916
940
|
providerOptions
|
|
917
941
|
}) {
|
|
918
|
-
var
|
|
942
|
+
var _a10;
|
|
919
943
|
const resolvedHeaders = await resolve5(this.config.headers());
|
|
920
944
|
try {
|
|
921
945
|
const {
|
|
@@ -946,7 +970,7 @@ var GatewayEmbeddingModel = class {
|
|
|
946
970
|
});
|
|
947
971
|
return {
|
|
948
972
|
embeddings: responseBody.embeddings,
|
|
949
|
-
usage: (
|
|
973
|
+
usage: (_a10 = responseBody.usage) != null ? _a10 : void 0,
|
|
950
974
|
providerMetadata: responseBody.providerMetadata,
|
|
951
975
|
response: { headers: responseHeaders, body: rawValue }
|
|
952
976
|
};
|
|
@@ -1004,7 +1028,7 @@ var GatewayImageModel = class {
|
|
|
1004
1028
|
headers,
|
|
1005
1029
|
abortSignal
|
|
1006
1030
|
}) {
|
|
1007
|
-
var
|
|
1031
|
+
var _a10, _b10, _c, _d;
|
|
1008
1032
|
const resolvedHeaders = await resolve6(this.config.headers());
|
|
1009
1033
|
try {
|
|
1010
1034
|
const {
|
|
@@ -1040,7 +1064,7 @@ var GatewayImageModel = class {
|
|
|
1040
1064
|
return {
|
|
1041
1065
|
images: responseBody.images,
|
|
1042
1066
|
// Always base64 strings from server
|
|
1043
|
-
warnings: (
|
|
1067
|
+
warnings: (_a10 = responseBody.warnings) != null ? _a10 : [],
|
|
1044
1068
|
providerMetadata: responseBody.providerMetadata,
|
|
1045
1069
|
response: {
|
|
1046
1070
|
timestamp: /* @__PURE__ */ new Date(),
|
|
@@ -1049,7 +1073,7 @@ var GatewayImageModel = class {
|
|
|
1049
1073
|
},
|
|
1050
1074
|
...responseBody.usage != null && {
|
|
1051
1075
|
usage: {
|
|
1052
|
-
inputTokens: (
|
|
1076
|
+
inputTokens: (_b10 = responseBody.usage.inputTokens) != null ? _b10 : void 0,
|
|
1053
1077
|
outputTokens: (_c = responseBody.usage.outputTokens) != null ? _c : void 0,
|
|
1054
1078
|
totalTokens: (_d = responseBody.usage.totalTokens) != null ? _d : void 0
|
|
1055
1079
|
}
|
|
@@ -1286,22 +1310,22 @@ var gatewayTools = {
|
|
|
1286
1310
|
import { getContext } from "@vercel/oidc";
|
|
1287
1311
|
import { getVercelOidcToken } from "@vercel/oidc";
|
|
1288
1312
|
async function getVercelRequestId() {
|
|
1289
|
-
var
|
|
1290
|
-
return (
|
|
1313
|
+
var _a10;
|
|
1314
|
+
return (_a10 = getContext().headers) == null ? void 0 : _a10["x-vercel-id"];
|
|
1291
1315
|
}
|
|
1292
1316
|
|
|
1293
1317
|
// src/version.ts
|
|
1294
|
-
var VERSION = true ? "2.0.
|
|
1318
|
+
var VERSION = true ? "2.0.102" : "0.0.0-test";
|
|
1295
1319
|
|
|
1296
1320
|
// src/gateway-provider.ts
|
|
1297
1321
|
var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";
|
|
1298
1322
|
function createGatewayProvider(options = {}) {
|
|
1299
|
-
var
|
|
1323
|
+
var _a10, _b10;
|
|
1300
1324
|
let pendingMetadata = null;
|
|
1301
1325
|
let metadataCache = null;
|
|
1302
|
-
const cacheRefreshMillis = (
|
|
1326
|
+
const cacheRefreshMillis = (_a10 = options.metadataCacheRefreshMillis) != null ? _a10 : 1e3 * 60 * 5;
|
|
1303
1327
|
let lastFetchTime = 0;
|
|
1304
|
-
const baseURL = (
|
|
1328
|
+
const baseURL = (_b10 = withoutTrailingSlash(options.baseURL)) != null ? _b10 : "https://ai-gateway.vercel.sh/v1/ai";
|
|
1305
1329
|
const getHeaders = async () => {
|
|
1306
1330
|
const auth = await getGatewayAuthToken(options);
|
|
1307
1331
|
if (auth) {
|
|
@@ -1359,8 +1383,8 @@ function createGatewayProvider(options = {}) {
|
|
|
1359
1383
|
});
|
|
1360
1384
|
};
|
|
1361
1385
|
const getAvailableModels = async () => {
|
|
1362
|
-
var
|
|
1363
|
-
const now = (_c = (
|
|
1386
|
+
var _a11, _b11, _c;
|
|
1387
|
+
const now = (_c = (_b11 = (_a11 = options._internal) == null ? void 0 : _a11.currentDate) == null ? void 0 : _b11.call(_a11).getTime()) != null ? _c : Date.now();
|
|
1364
1388
|
if (!pendingMetadata || now - lastFetchTime > cacheRefreshMillis) {
|
|
1365
1389
|
lastFetchTime = now;
|
|
1366
1390
|
pendingMetadata = new GatewayFetchMetadata({
|
|
@@ -1474,6 +1498,7 @@ async function getGatewayAuthToken(options) {
|
|
|
1474
1498
|
export {
|
|
1475
1499
|
GatewayAuthenticationError,
|
|
1476
1500
|
GatewayError,
|
|
1501
|
+
GatewayForbiddenError,
|
|
1477
1502
|
GatewayInternalServerError,
|
|
1478
1503
|
GatewayInvalidRequestError,
|
|
1479
1504
|
GatewayModelNotFoundError,
|