@ai-sdk/gateway 3.0.39 → 3.0.40
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 +6 -0
- package/dist/index.js +93 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +91 -22
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/errors/as-gateway-error.ts +44 -3
- package/src/errors/gateway-timeout-error.ts +59 -0
- package/src/errors/index.ts +1 -0
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -4,8 +4,8 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
6
|
var __export = (target, all) => {
|
|
7
|
-
for (var
|
|
8
|
-
__defProp(target,
|
|
7
|
+
for (var name8 in all)
|
|
8
|
+
__defProp(target, name8, { get: all[name8], enumerable: true });
|
|
9
9
|
};
|
|
10
10
|
var __copyProps = (to, from, except, desc) => {
|
|
11
11
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
@@ -275,7 +275,7 @@ async function createGatewayErrorFromResponse({
|
|
|
275
275
|
cause,
|
|
276
276
|
authMethod
|
|
277
277
|
}) {
|
|
278
|
-
var
|
|
278
|
+
var _a9;
|
|
279
279
|
const parseResult = await (0, import_provider_utils2.safeValidateTypes)({
|
|
280
280
|
value: response,
|
|
281
281
|
schema: gatewayErrorResponseSchema
|
|
@@ -294,7 +294,7 @@ async function createGatewayErrorFromResponse({
|
|
|
294
294
|
const validatedResponse = parseResult.value;
|
|
295
295
|
const errorType = validatedResponse.error.type;
|
|
296
296
|
const message = validatedResponse.error.message;
|
|
297
|
-
const generationId = (
|
|
297
|
+
const generationId = (_a9 = validatedResponse.generationId) != null ? _a9 : void 0;
|
|
298
298
|
switch (errorType) {
|
|
299
299
|
case "authentication_error":
|
|
300
300
|
return GatewayAuthenticationError.createContextualError({
|
|
@@ -361,22 +361,91 @@ var gatewayErrorResponseSchema = (0, import_provider_utils2.lazySchema)(
|
|
|
361
361
|
)
|
|
362
362
|
);
|
|
363
363
|
|
|
364
|
+
// src/errors/gateway-timeout-error.ts
|
|
365
|
+
var name7 = "GatewayTimeoutError";
|
|
366
|
+
var marker8 = `vercel.ai.gateway.error.${name7}`;
|
|
367
|
+
var symbol8 = Symbol.for(marker8);
|
|
368
|
+
var _a8, _b8;
|
|
369
|
+
var GatewayTimeoutError = class _GatewayTimeoutError extends (_b8 = GatewayError, _a8 = symbol8, _b8) {
|
|
370
|
+
constructor({
|
|
371
|
+
message = "Request timed out",
|
|
372
|
+
statusCode = 408,
|
|
373
|
+
cause,
|
|
374
|
+
generationId
|
|
375
|
+
} = {}) {
|
|
376
|
+
super({ message, statusCode, cause, generationId });
|
|
377
|
+
this[_a8] = true;
|
|
378
|
+
// used in isInstance
|
|
379
|
+
this.name = name7;
|
|
380
|
+
this.type = "timeout_error";
|
|
381
|
+
}
|
|
382
|
+
static isInstance(error) {
|
|
383
|
+
return GatewayError.hasMarker(error) && symbol8 in error;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Creates a helpful timeout error message with troubleshooting guidance
|
|
387
|
+
*/
|
|
388
|
+
static createTimeoutError({
|
|
389
|
+
originalMessage,
|
|
390
|
+
statusCode = 408,
|
|
391
|
+
cause,
|
|
392
|
+
generationId
|
|
393
|
+
}) {
|
|
394
|
+
const message = `Gateway request timed out: ${originalMessage}
|
|
395
|
+
|
|
396
|
+
This is a client-side timeout. To resolve this, increase your timeout configuration: https://vercel.com/docs/ai-gateway/capabilities/video-generation#extending-timeouts-for-node.js`;
|
|
397
|
+
return new _GatewayTimeoutError({
|
|
398
|
+
message,
|
|
399
|
+
statusCode,
|
|
400
|
+
cause,
|
|
401
|
+
generationId
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
};
|
|
405
|
+
|
|
364
406
|
// src/errors/as-gateway-error.ts
|
|
365
|
-
function
|
|
366
|
-
|
|
407
|
+
function isTimeoutError(error) {
|
|
408
|
+
if (!(error instanceof Error)) {
|
|
409
|
+
return false;
|
|
410
|
+
}
|
|
411
|
+
const errorCode = error.code;
|
|
412
|
+
if (typeof errorCode === "string") {
|
|
413
|
+
const undiciTimeoutCodes = [
|
|
414
|
+
"UND_ERR_HEADERS_TIMEOUT",
|
|
415
|
+
"UND_ERR_BODY_TIMEOUT",
|
|
416
|
+
"UND_ERR_CONNECT_TIMEOUT"
|
|
417
|
+
];
|
|
418
|
+
return undiciTimeoutCodes.includes(errorCode);
|
|
419
|
+
}
|
|
420
|
+
return false;
|
|
421
|
+
}
|
|
422
|
+
async function asGatewayError(error, authMethod) {
|
|
423
|
+
var _a9;
|
|
367
424
|
if (GatewayError.isInstance(error)) {
|
|
368
425
|
return error;
|
|
369
426
|
}
|
|
427
|
+
if (isTimeoutError(error)) {
|
|
428
|
+
return GatewayTimeoutError.createTimeoutError({
|
|
429
|
+
originalMessage: error instanceof Error ? error.message : "Unknown error",
|
|
430
|
+
cause: error
|
|
431
|
+
});
|
|
432
|
+
}
|
|
370
433
|
if (import_provider.APICallError.isInstance(error)) {
|
|
371
|
-
|
|
434
|
+
if (error.cause && isTimeoutError(error.cause)) {
|
|
435
|
+
return GatewayTimeoutError.createTimeoutError({
|
|
436
|
+
originalMessage: error.message,
|
|
437
|
+
cause: error
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
return await createGatewayErrorFromResponse({
|
|
372
441
|
response: extractApiCallResponse(error),
|
|
373
|
-
statusCode: (
|
|
442
|
+
statusCode: (_a9 = error.statusCode) != null ? _a9 : 500,
|
|
374
443
|
defaultMessage: "Gateway request failed",
|
|
375
444
|
cause: error,
|
|
376
445
|
authMethod
|
|
377
446
|
});
|
|
378
447
|
}
|
|
379
|
-
return createGatewayErrorFromResponse({
|
|
448
|
+
return await createGatewayErrorFromResponse({
|
|
380
449
|
response: {},
|
|
381
450
|
statusCode: 500,
|
|
382
451
|
defaultMessage: error instanceof Error ? `Gateway request failed: ${error.message}` : "Unknown Gateway error",
|
|
@@ -675,7 +744,7 @@ var GatewayEmbeddingModel = class {
|
|
|
675
744
|
abortSignal,
|
|
676
745
|
providerOptions
|
|
677
746
|
}) {
|
|
678
|
-
var
|
|
747
|
+
var _a9;
|
|
679
748
|
const resolvedHeaders = await (0, import_provider_utils6.resolve)(this.config.headers());
|
|
680
749
|
try {
|
|
681
750
|
const {
|
|
@@ -706,7 +775,7 @@ var GatewayEmbeddingModel = class {
|
|
|
706
775
|
});
|
|
707
776
|
return {
|
|
708
777
|
embeddings: responseBody.embeddings,
|
|
709
|
-
usage: (
|
|
778
|
+
usage: (_a9 = responseBody.usage) != null ? _a9 : void 0,
|
|
710
779
|
providerMetadata: responseBody.providerMetadata,
|
|
711
780
|
response: { headers: responseHeaders, body: rawValue },
|
|
712
781
|
warnings: []
|
|
@@ -761,7 +830,7 @@ var GatewayImageModel = class {
|
|
|
761
830
|
headers,
|
|
762
831
|
abortSignal
|
|
763
832
|
}) {
|
|
764
|
-
var
|
|
833
|
+
var _a9, _b9, _c, _d;
|
|
765
834
|
const resolvedHeaders = await (0, import_provider_utils7.resolve)(this.config.headers());
|
|
766
835
|
try {
|
|
767
836
|
const {
|
|
@@ -801,7 +870,7 @@ var GatewayImageModel = class {
|
|
|
801
870
|
return {
|
|
802
871
|
images: responseBody.images,
|
|
803
872
|
// Always base64 strings from server
|
|
804
|
-
warnings: (
|
|
873
|
+
warnings: (_a9 = responseBody.warnings) != null ? _a9 : [],
|
|
805
874
|
providerMetadata: responseBody.providerMetadata,
|
|
806
875
|
response: {
|
|
807
876
|
timestamp: /* @__PURE__ */ new Date(),
|
|
@@ -810,7 +879,7 @@ var GatewayImageModel = class {
|
|
|
810
879
|
},
|
|
811
880
|
...responseBody.usage != null && {
|
|
812
881
|
usage: {
|
|
813
|
-
inputTokens: (
|
|
882
|
+
inputTokens: (_b9 = responseBody.usage.inputTokens) != null ? _b9 : void 0,
|
|
814
883
|
outputTokens: (_c = responseBody.usage.outputTokens) != null ? _c : void 0,
|
|
815
884
|
totalTokens: (_d = responseBody.usage.totalTokens) != null ? _d : void 0
|
|
816
885
|
}
|
|
@@ -898,7 +967,7 @@ var GatewayVideoModel = class {
|
|
|
898
967
|
headers,
|
|
899
968
|
abortSignal
|
|
900
969
|
}) {
|
|
901
|
-
var
|
|
970
|
+
var _a9;
|
|
902
971
|
const resolvedHeaders = await (0, import_provider_utils8.resolve)(this.config.headers());
|
|
903
972
|
try {
|
|
904
973
|
const {
|
|
@@ -936,7 +1005,7 @@ var GatewayVideoModel = class {
|
|
|
936
1005
|
});
|
|
937
1006
|
return {
|
|
938
1007
|
videos: responseBody.videos,
|
|
939
|
-
warnings: (
|
|
1008
|
+
warnings: (_a9 = responseBody.warnings) != null ? _a9 : [],
|
|
940
1009
|
providerMetadata: responseBody.providerMetadata,
|
|
941
1010
|
response: {
|
|
942
1011
|
timestamp: /* @__PURE__ */ new Date(),
|
|
@@ -1179,25 +1248,25 @@ var gatewayTools = {
|
|
|
1179
1248
|
var import_oidc = require("@vercel/oidc");
|
|
1180
1249
|
var import_oidc2 = require("@vercel/oidc");
|
|
1181
1250
|
async function getVercelRequestId() {
|
|
1182
|
-
var
|
|
1183
|
-
return (
|
|
1251
|
+
var _a9;
|
|
1252
|
+
return (_a9 = (0, import_oidc.getContext)().headers) == null ? void 0 : _a9["x-vercel-id"];
|
|
1184
1253
|
}
|
|
1185
1254
|
|
|
1186
1255
|
// src/gateway-provider.ts
|
|
1187
1256
|
var import_provider_utils12 = require("@ai-sdk/provider-utils");
|
|
1188
1257
|
|
|
1189
1258
|
// src/version.ts
|
|
1190
|
-
var VERSION = true ? "3.0.
|
|
1259
|
+
var VERSION = true ? "3.0.40" : "0.0.0-test";
|
|
1191
1260
|
|
|
1192
1261
|
// src/gateway-provider.ts
|
|
1193
1262
|
var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";
|
|
1194
1263
|
function createGatewayProvider(options = {}) {
|
|
1195
|
-
var
|
|
1264
|
+
var _a9, _b9;
|
|
1196
1265
|
let pendingMetadata = null;
|
|
1197
1266
|
let metadataCache = null;
|
|
1198
|
-
const cacheRefreshMillis = (
|
|
1267
|
+
const cacheRefreshMillis = (_a9 = options.metadataCacheRefreshMillis) != null ? _a9 : 1e3 * 60 * 5;
|
|
1199
1268
|
let lastFetchTime = 0;
|
|
1200
|
-
const baseURL = (
|
|
1269
|
+
const baseURL = (_b9 = (0, import_provider_utils11.withoutTrailingSlash)(options.baseURL)) != null ? _b9 : "https://ai-gateway.vercel.sh/v3/ai";
|
|
1201
1270
|
const getHeaders = async () => {
|
|
1202
1271
|
try {
|
|
1203
1272
|
const auth = await getGatewayAuthToken(options);
|
|
@@ -1252,8 +1321,8 @@ function createGatewayProvider(options = {}) {
|
|
|
1252
1321
|
});
|
|
1253
1322
|
};
|
|
1254
1323
|
const getAvailableModels = async () => {
|
|
1255
|
-
var
|
|
1256
|
-
const now = (_c = (
|
|
1324
|
+
var _a10, _b10, _c;
|
|
1325
|
+
const now = (_c = (_b10 = (_a10 = options._internal) == null ? void 0 : _a10.currentDate) == null ? void 0 : _b10.call(_a10).getTime()) != null ? _c : Date.now();
|
|
1257
1326
|
if (!pendingMetadata || now - lastFetchTime > cacheRefreshMillis) {
|
|
1258
1327
|
lastFetchTime = now;
|
|
1259
1328
|
pendingMetadata = new GatewayFetchMetadata({
|