@ai-sdk/gateway 3.0.130 → 3.0.132

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/dist/index.mjs CHANGED
@@ -237,12 +237,35 @@ var GatewayFailedDependencyError = class extends (_b7 = GatewayError, _a7 = symb
237
237
  }
238
238
  };
239
239
 
240
- // src/errors/gateway-response-error.ts
241
- var name7 = "GatewayResponseError";
240
+ // src/errors/gateway-forbidden-error.ts
241
+ var name7 = "GatewayForbiddenError";
242
242
  var marker8 = `vercel.ai.gateway.error.${name7}`;
243
243
  var symbol8 = Symbol.for(marker8);
244
244
  var _a8, _b8;
245
- var GatewayResponseError = class extends (_b8 = GatewayError, _a8 = symbol8, _b8) {
245
+ var GatewayForbiddenError = class extends (_b8 = GatewayError, _a8 = symbol8, _b8) {
246
+ constructor({
247
+ message = "Forbidden",
248
+ statusCode = 403,
249
+ cause,
250
+ generationId
251
+ } = {}) {
252
+ super({ message, statusCode, cause, generationId });
253
+ this[_a8] = true;
254
+ // used in isInstance
255
+ this.name = name7;
256
+ this.type = "forbidden";
257
+ }
258
+ static isInstance(error) {
259
+ return GatewayError.hasMarker(error) && symbol8 in error;
260
+ }
261
+ };
262
+
263
+ // src/errors/gateway-response-error.ts
264
+ var name8 = "GatewayResponseError";
265
+ var marker9 = `vercel.ai.gateway.error.${name8}`;
266
+ var symbol9 = Symbol.for(marker9);
267
+ var _a9, _b9;
268
+ var GatewayResponseError = class extends (_b9 = GatewayError, _a9 = symbol9, _b9) {
246
269
  constructor({
247
270
  message = "Invalid response from Gateway",
248
271
  statusCode = 502,
@@ -252,15 +275,15 @@ var GatewayResponseError = class extends (_b8 = GatewayError, _a8 = symbol8, _b8
252
275
  generationId
253
276
  } = {}) {
254
277
  super({ message, statusCode, cause, generationId });
255
- this[_a8] = true;
278
+ this[_a9] = true;
256
279
  // used in isInstance
257
- this.name = name7;
280
+ this.name = name8;
258
281
  this.type = "response_error";
259
282
  this.response = response;
260
283
  this.validationError = validationError;
261
284
  }
262
285
  static isInstance(error) {
263
- return GatewayError.hasMarker(error) && symbol8 in error;
286
+ return GatewayError.hasMarker(error) && symbol9 in error;
264
287
  }
265
288
  };
266
289
 
@@ -277,7 +300,7 @@ async function createGatewayErrorFromResponse({
277
300
  cause,
278
301
  authMethod
279
302
  }) {
280
- var _a10;
303
+ var _a11;
281
304
  const parseResult = await safeValidateTypes({
282
305
  value: response,
283
306
  schema: gatewayErrorResponseSchema
@@ -296,7 +319,7 @@ async function createGatewayErrorFromResponse({
296
319
  const validatedResponse = parseResult.value;
297
320
  const errorType = validatedResponse.error.type;
298
321
  const message = validatedResponse.error.message;
299
- const generationId = (_a10 = validatedResponse.generationId) != null ? _a10 : void 0;
322
+ const generationId = (_a11 = validatedResponse.generationId) != null ? _a11 : void 0;
300
323
  switch (errorType) {
301
324
  case "authentication_error":
302
325
  return GatewayAuthenticationError.createContextualError({
@@ -347,6 +370,13 @@ async function createGatewayErrorFromResponse({
347
370
  cause,
348
371
  generationId
349
372
  });
373
+ case "forbidden":
374
+ return new GatewayForbiddenError({
375
+ message,
376
+ statusCode,
377
+ cause,
378
+ generationId
379
+ });
350
380
  default:
351
381
  return new GatewayInternalServerError({
352
382
  message,
@@ -386,11 +416,11 @@ function extractApiCallResponse(error) {
386
416
  }
387
417
 
388
418
  // src/errors/gateway-timeout-error.ts
389
- var name8 = "GatewayTimeoutError";
390
- var marker9 = `vercel.ai.gateway.error.${name8}`;
391
- var symbol9 = Symbol.for(marker9);
392
- var _a9, _b9;
393
- var GatewayTimeoutError = class _GatewayTimeoutError extends (_b9 = GatewayError, _a9 = symbol9, _b9) {
419
+ var name9 = "GatewayTimeoutError";
420
+ var marker10 = `vercel.ai.gateway.error.${name9}`;
421
+ var symbol10 = Symbol.for(marker10);
422
+ var _a10, _b10;
423
+ var GatewayTimeoutError = class _GatewayTimeoutError extends (_b10 = GatewayError, _a10 = symbol10, _b10) {
394
424
  constructor({
395
425
  message = "Request timed out",
396
426
  statusCode = 408,
@@ -398,13 +428,13 @@ var GatewayTimeoutError = class _GatewayTimeoutError extends (_b9 = GatewayError
398
428
  generationId
399
429
  } = {}) {
400
430
  super({ message, statusCode, cause, generationId });
401
- this[_a9] = true;
431
+ this[_a10] = true;
402
432
  // used in isInstance
403
- this.name = name8;
433
+ this.name = name9;
404
434
  this.type = "timeout_error";
405
435
  }
406
436
  static isInstance(error) {
407
- return GatewayError.hasMarker(error) && symbol9 in error;
437
+ return GatewayError.hasMarker(error) && symbol10 in error;
408
438
  }
409
439
  /**
410
440
  * Creates a helpful timeout error message with troubleshooting guidance
@@ -444,7 +474,7 @@ function isTimeoutError(error) {
444
474
  return false;
445
475
  }
446
476
  async function asGatewayError(error, authMethod) {
447
- var _a10;
477
+ var _a11;
448
478
  if (GatewayError.isInstance(error)) {
449
479
  return error;
450
480
  }
@@ -463,7 +493,7 @@ async function asGatewayError(error, authMethod) {
463
493
  }
464
494
  return await createGatewayErrorFromResponse({
465
495
  response: extractApiCallResponse(error),
466
- statusCode: (_a10 = error.statusCode) != null ? _a10 : 500,
496
+ statusCode: (_a11 = error.statusCode) != null ? _a11 : 500,
467
497
  defaultMessage: "Gateway request failed",
468
498
  cause: error,
469
499
  authMethod
@@ -997,7 +1027,7 @@ var GatewayEmbeddingModel = class {
997
1027
  abortSignal,
998
1028
  providerOptions
999
1029
  }) {
1000
- var _a10;
1030
+ var _a11, _b11;
1001
1031
  const resolvedHeaders = await resolve5(this.config.headers());
1002
1032
  try {
1003
1033
  const {
@@ -1028,10 +1058,10 @@ var GatewayEmbeddingModel = class {
1028
1058
  });
1029
1059
  return {
1030
1060
  embeddings: responseBody.embeddings,
1031
- usage: (_a10 = responseBody.usage) != null ? _a10 : void 0,
1061
+ usage: (_a11 = responseBody.usage) != null ? _a11 : void 0,
1032
1062
  providerMetadata: responseBody.providerMetadata,
1033
1063
  response: { headers: responseHeaders, body: rawValue },
1034
- warnings: []
1064
+ warnings: (_b11 = responseBody.warnings) != null ? _b11 : []
1035
1065
  };
1036
1066
  } catch (error) {
1037
1067
  throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));
@@ -1047,11 +1077,28 @@ var GatewayEmbeddingModel = class {
1047
1077
  };
1048
1078
  }
1049
1079
  };
1080
+ var gatewayEmbeddingWarningSchema = z8.discriminatedUnion("type", [
1081
+ z8.object({
1082
+ type: z8.literal("unsupported"),
1083
+ feature: z8.string(),
1084
+ details: z8.string().optional()
1085
+ }),
1086
+ z8.object({
1087
+ type: z8.literal("compatibility"),
1088
+ feature: z8.string(),
1089
+ details: z8.string().optional()
1090
+ }),
1091
+ z8.object({
1092
+ type: z8.literal("other"),
1093
+ message: z8.string()
1094
+ })
1095
+ ]);
1050
1096
  var gatewayEmbeddingResponseSchema = lazySchema7(
1051
1097
  () => zodSchema7(
1052
1098
  z8.object({
1053
1099
  embeddings: z8.array(z8.array(z8.number())),
1054
1100
  usage: z8.object({ tokens: z8.number() }).nullish(),
1101
+ warnings: z8.array(gatewayEmbeddingWarningSchema).optional(),
1055
1102
  providerMetadata: z8.record(z8.string(), z8.record(z8.string(), z8.unknown())).optional()
1056
1103
  })
1057
1104
  )
@@ -1090,7 +1137,7 @@ var GatewayImageModel = class {
1090
1137
  headers,
1091
1138
  abortSignal
1092
1139
  }) {
1093
- var _a10, _b10, _c, _d;
1140
+ var _a11, _b11, _c, _d;
1094
1141
  const resolvedHeaders = await resolve6(this.config.headers());
1095
1142
  try {
1096
1143
  const {
@@ -1130,7 +1177,7 @@ var GatewayImageModel = class {
1130
1177
  return {
1131
1178
  images: responseBody.images,
1132
1179
  // Always base64 strings from server
1133
- warnings: (_a10 = responseBody.warnings) != null ? _a10 : [],
1180
+ warnings: (_a11 = responseBody.warnings) != null ? _a11 : [],
1134
1181
  providerMetadata: responseBody.providerMetadata,
1135
1182
  response: {
1136
1183
  timestamp: /* @__PURE__ */ new Date(),
@@ -1139,7 +1186,7 @@ var GatewayImageModel = class {
1139
1186
  },
1140
1187
  ...responseBody.usage != null && {
1141
1188
  usage: {
1142
- inputTokens: (_b10 = responseBody.usage.inputTokens) != null ? _b10 : void 0,
1189
+ inputTokens: (_b11 = responseBody.usage.inputTokens) != null ? _b11 : void 0,
1143
1190
  outputTokens: (_c = responseBody.usage.outputTokens) != null ? _c : void 0,
1144
1191
  totalTokens: (_d = responseBody.usage.totalTokens) != null ? _d : void 0
1145
1192
  }
@@ -1237,7 +1284,7 @@ var GatewayVideoModel = class {
1237
1284
  headers,
1238
1285
  abortSignal
1239
1286
  }) {
1240
- var _a10;
1287
+ var _a11;
1241
1288
  const resolvedHeaders = await resolve7(this.config.headers());
1242
1289
  try {
1243
1290
  const { responseHeaders, value: responseBody } = await postJsonToApi4({
@@ -1333,7 +1380,7 @@ var GatewayVideoModel = class {
1333
1380
  });
1334
1381
  return {
1335
1382
  videos: responseBody.videos,
1336
- warnings: (_a10 = responseBody.warnings) != null ? _a10 : [],
1383
+ warnings: (_a11 = responseBody.warnings) != null ? _a11 : [],
1337
1384
  providerMetadata: responseBody.providerMetadata,
1338
1385
  response: {
1339
1386
  timestamp: /* @__PURE__ */ new Date(),
@@ -1439,6 +1486,7 @@ var GatewayRerankingModel = class {
1439
1486
  abortSignal,
1440
1487
  providerOptions
1441
1488
  }) {
1489
+ var _a11;
1442
1490
  const resolvedHeaders = await resolve8(this.config.headers());
1443
1491
  try {
1444
1492
  const {
@@ -1473,7 +1521,7 @@ var GatewayRerankingModel = class {
1473
1521
  ranking: responseBody.ranking,
1474
1522
  providerMetadata: responseBody.providerMetadata,
1475
1523
  response: { headers: responseHeaders, body: rawValue },
1476
- warnings: []
1524
+ warnings: (_a11 = responseBody.warnings) != null ? _a11 : []
1477
1525
  };
1478
1526
  } catch (error) {
1479
1527
  throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));
@@ -1489,6 +1537,22 @@ var GatewayRerankingModel = class {
1489
1537
  };
1490
1538
  }
1491
1539
  };
1540
+ var gatewayRerankingWarningSchema = z11.discriminatedUnion("type", [
1541
+ z11.object({
1542
+ type: z11.literal("unsupported"),
1543
+ feature: z11.string(),
1544
+ details: z11.string().optional()
1545
+ }),
1546
+ z11.object({
1547
+ type: z11.literal("compatibility"),
1548
+ feature: z11.string(),
1549
+ details: z11.string().optional()
1550
+ }),
1551
+ z11.object({
1552
+ type: z11.literal("other"),
1553
+ message: z11.string()
1554
+ })
1555
+ ]);
1492
1556
  var gatewayRerankingResponseSchema = lazySchema8(
1493
1557
  () => zodSchema8(
1494
1558
  z11.object({
@@ -1498,6 +1562,7 @@ var gatewayRerankingResponseSchema = lazySchema8(
1498
1562
  relevanceScore: z11.number()
1499
1563
  })
1500
1564
  ),
1565
+ warnings: z11.array(gatewayRerankingWarningSchema).optional(),
1501
1566
  providerMetadata: z11.record(z11.string(), z11.record(z11.string(), z11.unknown())).optional()
1502
1567
  })
1503
1568
  )
@@ -1697,22 +1762,22 @@ var gatewayTools = {
1697
1762
  import { getContext } from "@vercel/oidc";
1698
1763
  import { getVercelOidcToken } from "@vercel/oidc";
1699
1764
  async function getVercelRequestId() {
1700
- var _a10;
1701
- return (_a10 = getContext().headers) == null ? void 0 : _a10["x-vercel-id"];
1765
+ var _a11;
1766
+ return (_a11 = getContext().headers) == null ? void 0 : _a11["x-vercel-id"];
1702
1767
  }
1703
1768
 
1704
1769
  // src/version.ts
1705
- var VERSION = true ? "3.0.130" : "0.0.0-test";
1770
+ var VERSION = true ? "3.0.132" : "0.0.0-test";
1706
1771
 
1707
1772
  // src/gateway-provider.ts
1708
1773
  var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";
1709
1774
  function createGatewayProvider(options = {}) {
1710
- var _a10, _b10;
1775
+ var _a11, _b11;
1711
1776
  let pendingMetadata = null;
1712
1777
  let metadataCache = null;
1713
- const cacheRefreshMillis = (_a10 = options.metadataCacheRefreshMillis) != null ? _a10 : 1e3 * 60 * 5;
1778
+ const cacheRefreshMillis = (_a11 = options.metadataCacheRefreshMillis) != null ? _a11 : 1e3 * 60 * 5;
1714
1779
  let lastFetchTime = 0;
1715
- const baseURL = (_b10 = withoutTrailingSlash(options.baseURL)) != null ? _b10 : "https://ai-gateway.vercel.sh/v3/ai";
1780
+ const baseURL = (_b11 = withoutTrailingSlash(options.baseURL)) != null ? _b11 : "https://ai-gateway.vercel.sh/v3/ai";
1716
1781
  const getHeaders = async () => {
1717
1782
  try {
1718
1783
  const auth = await getGatewayAuthToken(options);
@@ -1772,8 +1837,8 @@ function createGatewayProvider(options = {}) {
1772
1837
  });
1773
1838
  };
1774
1839
  const getAvailableModels = async () => {
1775
- var _a11, _b11, _c;
1776
- const now = (_c = (_b11 = (_a11 = options._internal) == null ? void 0 : _a11.currentDate) == null ? void 0 : _b11.call(_a11).getTime()) != null ? _c : Date.now();
1840
+ var _a12, _b12, _c;
1841
+ const now = (_c = (_b12 = (_a12 = options._internal) == null ? void 0 : _a12.currentDate) == null ? void 0 : _b12.call(_a12).getTime()) != null ? _c : Date.now();
1777
1842
  if (!pendingMetadata || now - lastFetchTime > cacheRefreshMillis) {
1778
1843
  lastFetchTime = now;
1779
1844
  pendingMetadata = new GatewayFetchMetadata({
@@ -1911,6 +1976,7 @@ export {
1911
1976
  GatewayAuthenticationError,
1912
1977
  GatewayError,
1913
1978
  GatewayFailedDependencyError,
1979
+ GatewayForbiddenError,
1914
1980
  GatewayInternalServerError,
1915
1981
  GatewayInvalidRequestError,
1916
1982
  GatewayModelNotFoundError,