@ai-sdk/gateway 4.0.0-beta.5 → 4.0.0-beta.50
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 +325 -4
- package/dist/index.d.ts +145 -22
- package/dist/index.js +720 -320
- package/dist/index.js.map +1 -1
- package/docs/00-ai-gateway.mdx +311 -44
- package/package.json +8 -10
- package/src/errors/create-gateway-error.ts +0 -1
- package/src/errors/gateway-authentication-error.ts +0 -1
- package/src/gateway-config.ts +1 -1
- package/src/gateway-embedding-model-settings.ts +1 -0
- package/src/gateway-embedding-model.ts +38 -14
- package/src/gateway-fetch-metadata.ts +7 -3
- package/src/gateway-generation-info.ts +149 -0
- package/src/gateway-image-model-settings.ts +9 -0
- package/src/gateway-image-model.ts +41 -21
- package/src/gateway-language-model-settings.ts +21 -10
- package/src/gateway-language-model.ts +49 -23
- package/src/gateway-model-entry.ts +2 -2
- package/src/gateway-provider-options.ts +35 -8
- package/src/gateway-provider.ts +99 -17
- package/src/gateway-reranking-model-settings.ts +1 -0
- package/src/gateway-reranking-model.ts +119 -0
- package/src/gateway-spend-report.ts +193 -0
- package/src/gateway-video-model.ts +22 -17
- package/src/index.ts +13 -3
- package/dist/index.d.mts +0 -602
- package/dist/index.mjs +0 -1539
- package/dist/index.mjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,46 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name8 in all)
|
|
8
|
-
__defProp(target, name8, { get: all[name8], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/index.ts
|
|
21
|
-
var src_exports = {};
|
|
22
|
-
__export(src_exports, {
|
|
23
|
-
GatewayAuthenticationError: () => GatewayAuthenticationError,
|
|
24
|
-
GatewayError: () => GatewayError,
|
|
25
|
-
GatewayInternalServerError: () => GatewayInternalServerError,
|
|
26
|
-
GatewayInvalidRequestError: () => GatewayInvalidRequestError,
|
|
27
|
-
GatewayModelNotFoundError: () => GatewayModelNotFoundError,
|
|
28
|
-
GatewayRateLimitError: () => GatewayRateLimitError,
|
|
29
|
-
GatewayResponseError: () => GatewayResponseError,
|
|
30
|
-
createGateway: () => createGatewayProvider,
|
|
31
|
-
createGatewayProvider: () => createGatewayProvider,
|
|
32
|
-
gateway: () => gateway
|
|
33
|
-
});
|
|
34
|
-
module.exports = __toCommonJS(src_exports);
|
|
35
|
-
|
|
36
1
|
// src/gateway-provider.ts
|
|
37
|
-
|
|
2
|
+
import {
|
|
3
|
+
loadOptionalSetting,
|
|
4
|
+
withoutTrailingSlash
|
|
5
|
+
} from "@ai-sdk/provider-utils";
|
|
38
6
|
|
|
39
7
|
// src/errors/as-gateway-error.ts
|
|
40
|
-
|
|
8
|
+
import { APICallError } from "@ai-sdk/provider";
|
|
41
9
|
|
|
42
10
|
// src/errors/create-gateway-error.ts
|
|
43
|
-
|
|
11
|
+
import { z as z2 } from "zod/v4";
|
|
44
12
|
|
|
45
13
|
// src/errors/gateway-error.ts
|
|
46
14
|
var marker = "vercel.ai.gateway.error";
|
|
@@ -99,7 +67,6 @@ var GatewayAuthenticationError = class _GatewayAuthenticationError extends (_b2
|
|
|
99
67
|
static createContextualError({
|
|
100
68
|
apiKeyProvided,
|
|
101
69
|
oidcTokenProvided,
|
|
102
|
-
message = "Authentication failed",
|
|
103
70
|
statusCode = 401,
|
|
104
71
|
cause,
|
|
105
72
|
generationId
|
|
@@ -183,15 +150,15 @@ var GatewayRateLimitError = class extends (_b4 = GatewayError, _a4 = symbol4, _b
|
|
|
183
150
|
};
|
|
184
151
|
|
|
185
152
|
// src/errors/gateway-model-not-found-error.ts
|
|
186
|
-
|
|
187
|
-
|
|
153
|
+
import { z } from "zod/v4";
|
|
154
|
+
import { lazySchema, zodSchema } from "@ai-sdk/provider-utils";
|
|
188
155
|
var name4 = "GatewayModelNotFoundError";
|
|
189
156
|
var marker5 = `vercel.ai.gateway.error.${name4}`;
|
|
190
157
|
var symbol5 = Symbol.for(marker5);
|
|
191
|
-
var modelNotFoundParamSchema =
|
|
192
|
-
() =>
|
|
193
|
-
|
|
194
|
-
modelId:
|
|
158
|
+
var modelNotFoundParamSchema = lazySchema(
|
|
159
|
+
() => zodSchema(
|
|
160
|
+
z.object({
|
|
161
|
+
modelId: z.string()
|
|
195
162
|
})
|
|
196
163
|
)
|
|
197
164
|
);
|
|
@@ -267,7 +234,11 @@ var GatewayResponseError = class extends (_b7 = GatewayError, _a7 = symbol7, _b7
|
|
|
267
234
|
};
|
|
268
235
|
|
|
269
236
|
// src/errors/create-gateway-error.ts
|
|
270
|
-
|
|
237
|
+
import {
|
|
238
|
+
lazySchema as lazySchema2,
|
|
239
|
+
safeValidateTypes,
|
|
240
|
+
zodSchema as zodSchema2
|
|
241
|
+
} from "@ai-sdk/provider-utils";
|
|
271
242
|
async function createGatewayErrorFromResponse({
|
|
272
243
|
response,
|
|
273
244
|
statusCode,
|
|
@@ -276,7 +247,7 @@ async function createGatewayErrorFromResponse({
|
|
|
276
247
|
authMethod
|
|
277
248
|
}) {
|
|
278
249
|
var _a9;
|
|
279
|
-
const parseResult = await
|
|
250
|
+
const parseResult = await safeValidateTypes({
|
|
280
251
|
value: response,
|
|
281
252
|
schema: gatewayErrorResponseSchema
|
|
282
253
|
});
|
|
@@ -319,7 +290,7 @@ async function createGatewayErrorFromResponse({
|
|
|
319
290
|
generationId
|
|
320
291
|
});
|
|
321
292
|
case "model_not_found": {
|
|
322
|
-
const modelResult = await
|
|
293
|
+
const modelResult = await safeValidateTypes({
|
|
323
294
|
value: validatedResponse.error.param,
|
|
324
295
|
schema: modelNotFoundParamSchema
|
|
325
296
|
});
|
|
@@ -347,16 +318,16 @@ async function createGatewayErrorFromResponse({
|
|
|
347
318
|
});
|
|
348
319
|
}
|
|
349
320
|
}
|
|
350
|
-
var gatewayErrorResponseSchema = (
|
|
351
|
-
() => (
|
|
352
|
-
|
|
353
|
-
error:
|
|
354
|
-
message:
|
|
355
|
-
type:
|
|
356
|
-
param:
|
|
357
|
-
code:
|
|
321
|
+
var gatewayErrorResponseSchema = lazySchema2(
|
|
322
|
+
() => zodSchema2(
|
|
323
|
+
z2.object({
|
|
324
|
+
error: z2.object({
|
|
325
|
+
message: z2.string(),
|
|
326
|
+
type: z2.string().nullish(),
|
|
327
|
+
param: z2.unknown().nullish(),
|
|
328
|
+
code: z2.union([z2.string(), z2.number()]).nullish()
|
|
358
329
|
}),
|
|
359
|
-
generationId:
|
|
330
|
+
generationId: z2.string().nullish()
|
|
360
331
|
})
|
|
361
332
|
)
|
|
362
333
|
);
|
|
@@ -430,7 +401,7 @@ async function asGatewayError(error, authMethod) {
|
|
|
430
401
|
cause: error
|
|
431
402
|
});
|
|
432
403
|
}
|
|
433
|
-
if (
|
|
404
|
+
if (APICallError.isInstance(error)) {
|
|
434
405
|
if (error.cause && isTimeoutError(error.cause)) {
|
|
435
406
|
return GatewayTimeoutError.createTimeoutError({
|
|
436
407
|
originalMessage: error.message,
|
|
@@ -470,37 +441,48 @@ function extractApiCallResponse(error) {
|
|
|
470
441
|
}
|
|
471
442
|
|
|
472
443
|
// src/errors/parse-auth-method.ts
|
|
473
|
-
|
|
474
|
-
|
|
444
|
+
import { z as z3 } from "zod/v4";
|
|
445
|
+
import {
|
|
446
|
+
lazySchema as lazySchema3,
|
|
447
|
+
safeValidateTypes as safeValidateTypes2,
|
|
448
|
+
zodSchema as zodSchema3
|
|
449
|
+
} from "@ai-sdk/provider-utils";
|
|
475
450
|
var GATEWAY_AUTH_METHOD_HEADER = "ai-gateway-auth-method";
|
|
476
451
|
async function parseAuthMethod(headers) {
|
|
477
|
-
const result = await (
|
|
452
|
+
const result = await safeValidateTypes2({
|
|
478
453
|
value: headers[GATEWAY_AUTH_METHOD_HEADER],
|
|
479
454
|
schema: gatewayAuthMethodSchema
|
|
480
455
|
});
|
|
481
456
|
return result.success ? result.value : void 0;
|
|
482
457
|
}
|
|
483
|
-
var gatewayAuthMethodSchema = (
|
|
484
|
-
() => (
|
|
458
|
+
var gatewayAuthMethodSchema = lazySchema3(
|
|
459
|
+
() => zodSchema3(z3.union([z3.literal("api-key"), z3.literal("oidc")]))
|
|
485
460
|
);
|
|
486
461
|
|
|
487
462
|
// src/gateway-fetch-metadata.ts
|
|
488
|
-
|
|
489
|
-
|
|
463
|
+
import {
|
|
464
|
+
createJsonErrorResponseHandler,
|
|
465
|
+
createJsonResponseHandler,
|
|
466
|
+
getFromApi,
|
|
467
|
+
lazySchema as lazySchema4,
|
|
468
|
+
resolve,
|
|
469
|
+
zodSchema as zodSchema4
|
|
470
|
+
} from "@ai-sdk/provider-utils";
|
|
471
|
+
import { z as z4 } from "zod/v4";
|
|
490
472
|
var GatewayFetchMetadata = class {
|
|
491
473
|
constructor(config) {
|
|
492
474
|
this.config = config;
|
|
493
475
|
}
|
|
494
476
|
async getAvailableModels() {
|
|
495
477
|
try {
|
|
496
|
-
const { value } = await
|
|
478
|
+
const { value } = await getFromApi({
|
|
497
479
|
url: `${this.config.baseURL}/config`,
|
|
498
|
-
headers: await
|
|
499
|
-
successfulResponseHandler:
|
|
480
|
+
headers: this.config.headers ? await resolve(this.config.headers) : void 0,
|
|
481
|
+
successfulResponseHandler: createJsonResponseHandler(
|
|
500
482
|
gatewayAvailableModelsResponseSchema
|
|
501
483
|
),
|
|
502
|
-
failedResponseHandler:
|
|
503
|
-
errorSchema:
|
|
484
|
+
failedResponseHandler: createJsonErrorResponseHandler({
|
|
485
|
+
errorSchema: z4.any(),
|
|
504
486
|
errorToMessage: (data) => data
|
|
505
487
|
}),
|
|
506
488
|
fetch: this.config.fetch
|
|
@@ -513,14 +495,14 @@ var GatewayFetchMetadata = class {
|
|
|
513
495
|
async getCredits() {
|
|
514
496
|
try {
|
|
515
497
|
const baseUrl = new URL(this.config.baseURL);
|
|
516
|
-
const { value } = await
|
|
498
|
+
const { value } = await getFromApi({
|
|
517
499
|
url: `${baseUrl.origin}/v1/credits`,
|
|
518
|
-
headers: await
|
|
519
|
-
successfulResponseHandler:
|
|
500
|
+
headers: this.config.headers ? await resolve(this.config.headers) : void 0,
|
|
501
|
+
successfulResponseHandler: createJsonResponseHandler(
|
|
520
502
|
gatewayCreditsResponseSchema
|
|
521
503
|
),
|
|
522
|
-
failedResponseHandler:
|
|
523
|
-
errorSchema:
|
|
504
|
+
failedResponseHandler: createJsonErrorResponseHandler({
|
|
505
|
+
errorSchema: z4.any(),
|
|
524
506
|
errorToMessage: (data) => data
|
|
525
507
|
}),
|
|
526
508
|
fetch: this.config.fetch
|
|
@@ -531,19 +513,19 @@ var GatewayFetchMetadata = class {
|
|
|
531
513
|
}
|
|
532
514
|
}
|
|
533
515
|
};
|
|
534
|
-
var gatewayAvailableModelsResponseSchema = (
|
|
535
|
-
() => (
|
|
536
|
-
|
|
537
|
-
models:
|
|
538
|
-
|
|
539
|
-
id:
|
|
540
|
-
name:
|
|
541
|
-
description:
|
|
542
|
-
pricing:
|
|
543
|
-
input:
|
|
544
|
-
output:
|
|
545
|
-
input_cache_read:
|
|
546
|
-
input_cache_write:
|
|
516
|
+
var gatewayAvailableModelsResponseSchema = lazySchema4(
|
|
517
|
+
() => zodSchema4(
|
|
518
|
+
z4.object({
|
|
519
|
+
models: z4.array(
|
|
520
|
+
z4.object({
|
|
521
|
+
id: z4.string(),
|
|
522
|
+
name: z4.string(),
|
|
523
|
+
description: z4.string().nullish(),
|
|
524
|
+
pricing: z4.object({
|
|
525
|
+
input: z4.string(),
|
|
526
|
+
output: z4.string(),
|
|
527
|
+
input_cache_read: z4.string().nullish(),
|
|
528
|
+
input_cache_write: z4.string().nullish()
|
|
547
529
|
}).transform(
|
|
548
530
|
({ input, output, input_cache_read, input_cache_write }) => ({
|
|
549
531
|
input,
|
|
@@ -552,22 +534,22 @@ var gatewayAvailableModelsResponseSchema = (0, import_provider_utils4.lazySchema
|
|
|
552
534
|
...input_cache_write ? { cacheCreationInputTokens: input_cache_write } : {}
|
|
553
535
|
})
|
|
554
536
|
).nullish(),
|
|
555
|
-
specification:
|
|
556
|
-
specificationVersion:
|
|
557
|
-
provider:
|
|
558
|
-
modelId:
|
|
537
|
+
specification: z4.object({
|
|
538
|
+
specificationVersion: z4.literal("v4"),
|
|
539
|
+
provider: z4.string(),
|
|
540
|
+
modelId: z4.string()
|
|
559
541
|
}),
|
|
560
|
-
modelType:
|
|
542
|
+
modelType: z4.enum(["embedding", "image", "language", "video"]).nullish()
|
|
561
543
|
})
|
|
562
544
|
)
|
|
563
545
|
})
|
|
564
546
|
)
|
|
565
547
|
);
|
|
566
|
-
var gatewayCreditsResponseSchema = (
|
|
567
|
-
() => (
|
|
568
|
-
|
|
569
|
-
balance:
|
|
570
|
-
total_used:
|
|
548
|
+
var gatewayCreditsResponseSchema = lazySchema4(
|
|
549
|
+
() => zodSchema4(
|
|
550
|
+
z4.object({
|
|
551
|
+
balance: z4.string(),
|
|
552
|
+
total_used: z4.string()
|
|
571
553
|
}).transform(({ balance, total_used }) => ({
|
|
572
554
|
balance,
|
|
573
555
|
totalUsed: total_used
|
|
@@ -575,16 +557,238 @@ var gatewayCreditsResponseSchema = (0, import_provider_utils4.lazySchema)(
|
|
|
575
557
|
)
|
|
576
558
|
);
|
|
577
559
|
|
|
560
|
+
// src/gateway-spend-report.ts
|
|
561
|
+
import {
|
|
562
|
+
createJsonErrorResponseHandler as createJsonErrorResponseHandler2,
|
|
563
|
+
createJsonResponseHandler as createJsonResponseHandler2,
|
|
564
|
+
getFromApi as getFromApi2,
|
|
565
|
+
lazySchema as lazySchema5,
|
|
566
|
+
resolve as resolve2,
|
|
567
|
+
zodSchema as zodSchema5
|
|
568
|
+
} from "@ai-sdk/provider-utils";
|
|
569
|
+
import { z as z5 } from "zod/v4";
|
|
570
|
+
var GatewaySpendReport = class {
|
|
571
|
+
constructor(config) {
|
|
572
|
+
this.config = config;
|
|
573
|
+
}
|
|
574
|
+
async getSpendReport(params) {
|
|
575
|
+
try {
|
|
576
|
+
const baseUrl = new URL(this.config.baseURL);
|
|
577
|
+
const searchParams = new URLSearchParams();
|
|
578
|
+
searchParams.set("start_date", params.startDate);
|
|
579
|
+
searchParams.set("end_date", params.endDate);
|
|
580
|
+
if (params.groupBy) {
|
|
581
|
+
searchParams.set("group_by", params.groupBy);
|
|
582
|
+
}
|
|
583
|
+
if (params.datePart) {
|
|
584
|
+
searchParams.set("date_part", params.datePart);
|
|
585
|
+
}
|
|
586
|
+
if (params.userId) {
|
|
587
|
+
searchParams.set("user_id", params.userId);
|
|
588
|
+
}
|
|
589
|
+
if (params.model) {
|
|
590
|
+
searchParams.set("model", params.model);
|
|
591
|
+
}
|
|
592
|
+
if (params.provider) {
|
|
593
|
+
searchParams.set("provider", params.provider);
|
|
594
|
+
}
|
|
595
|
+
if (params.credentialType) {
|
|
596
|
+
searchParams.set("credential_type", params.credentialType);
|
|
597
|
+
}
|
|
598
|
+
if (params.tags && params.tags.length > 0) {
|
|
599
|
+
searchParams.set("tags", params.tags.join(","));
|
|
600
|
+
}
|
|
601
|
+
const { value } = await getFromApi2({
|
|
602
|
+
url: `${baseUrl.origin}/v1/report?${searchParams.toString()}`,
|
|
603
|
+
headers: this.config.headers ? await resolve2(this.config.headers) : void 0,
|
|
604
|
+
successfulResponseHandler: createJsonResponseHandler2(
|
|
605
|
+
gatewaySpendReportResponseSchema
|
|
606
|
+
),
|
|
607
|
+
failedResponseHandler: createJsonErrorResponseHandler2({
|
|
608
|
+
errorSchema: z5.any(),
|
|
609
|
+
errorToMessage: (data) => data
|
|
610
|
+
}),
|
|
611
|
+
fetch: this.config.fetch
|
|
612
|
+
});
|
|
613
|
+
return value;
|
|
614
|
+
} catch (error) {
|
|
615
|
+
throw await asGatewayError(error);
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
};
|
|
619
|
+
var gatewaySpendReportResponseSchema = lazySchema5(
|
|
620
|
+
() => zodSchema5(
|
|
621
|
+
z5.object({
|
|
622
|
+
results: z5.array(
|
|
623
|
+
z5.object({
|
|
624
|
+
day: z5.string().optional(),
|
|
625
|
+
hour: z5.string().optional(),
|
|
626
|
+
user: z5.string().optional(),
|
|
627
|
+
model: z5.string().optional(),
|
|
628
|
+
tag: z5.string().optional(),
|
|
629
|
+
provider: z5.string().optional(),
|
|
630
|
+
credential_type: z5.enum(["byok", "system"]).optional(),
|
|
631
|
+
total_cost: z5.number(),
|
|
632
|
+
market_cost: z5.number().optional(),
|
|
633
|
+
input_tokens: z5.number().optional(),
|
|
634
|
+
output_tokens: z5.number().optional(),
|
|
635
|
+
cached_input_tokens: z5.number().optional(),
|
|
636
|
+
cache_creation_input_tokens: z5.number().optional(),
|
|
637
|
+
reasoning_tokens: z5.number().optional(),
|
|
638
|
+
request_count: z5.number().optional()
|
|
639
|
+
}).transform(
|
|
640
|
+
({
|
|
641
|
+
credential_type,
|
|
642
|
+
total_cost,
|
|
643
|
+
market_cost,
|
|
644
|
+
input_tokens,
|
|
645
|
+
output_tokens,
|
|
646
|
+
cached_input_tokens,
|
|
647
|
+
cache_creation_input_tokens,
|
|
648
|
+
reasoning_tokens,
|
|
649
|
+
request_count,
|
|
650
|
+
...rest
|
|
651
|
+
}) => ({
|
|
652
|
+
...rest,
|
|
653
|
+
...credential_type !== void 0 ? { credentialType: credential_type } : {},
|
|
654
|
+
totalCost: total_cost,
|
|
655
|
+
...market_cost !== void 0 ? { marketCost: market_cost } : {},
|
|
656
|
+
...input_tokens !== void 0 ? { inputTokens: input_tokens } : {},
|
|
657
|
+
...output_tokens !== void 0 ? { outputTokens: output_tokens } : {},
|
|
658
|
+
...cached_input_tokens !== void 0 ? { cachedInputTokens: cached_input_tokens } : {},
|
|
659
|
+
...cache_creation_input_tokens !== void 0 ? { cacheCreationInputTokens: cache_creation_input_tokens } : {},
|
|
660
|
+
...reasoning_tokens !== void 0 ? { reasoningTokens: reasoning_tokens } : {},
|
|
661
|
+
...request_count !== void 0 ? { requestCount: request_count } : {}
|
|
662
|
+
})
|
|
663
|
+
)
|
|
664
|
+
)
|
|
665
|
+
})
|
|
666
|
+
)
|
|
667
|
+
);
|
|
668
|
+
|
|
669
|
+
// src/gateway-generation-info.ts
|
|
670
|
+
import {
|
|
671
|
+
createJsonErrorResponseHandler as createJsonErrorResponseHandler3,
|
|
672
|
+
createJsonResponseHandler as createJsonResponseHandler3,
|
|
673
|
+
getFromApi as getFromApi3,
|
|
674
|
+
lazySchema as lazySchema6,
|
|
675
|
+
resolve as resolve3,
|
|
676
|
+
zodSchema as zodSchema6
|
|
677
|
+
} from "@ai-sdk/provider-utils";
|
|
678
|
+
import { z as z6 } from "zod/v4";
|
|
679
|
+
var GatewayGenerationInfoFetcher = class {
|
|
680
|
+
constructor(config) {
|
|
681
|
+
this.config = config;
|
|
682
|
+
}
|
|
683
|
+
async getGenerationInfo(params) {
|
|
684
|
+
try {
|
|
685
|
+
const baseUrl = new URL(this.config.baseURL);
|
|
686
|
+
const { value } = await getFromApi3({
|
|
687
|
+
url: `${baseUrl.origin}/v1/generation?id=${encodeURIComponent(params.id)}`,
|
|
688
|
+
headers: this.config.headers ? await resolve3(this.config.headers) : void 0,
|
|
689
|
+
successfulResponseHandler: createJsonResponseHandler3(
|
|
690
|
+
gatewayGenerationInfoResponseSchema
|
|
691
|
+
),
|
|
692
|
+
failedResponseHandler: createJsonErrorResponseHandler3({
|
|
693
|
+
errorSchema: z6.any(),
|
|
694
|
+
errorToMessage: (data) => data
|
|
695
|
+
}),
|
|
696
|
+
fetch: this.config.fetch
|
|
697
|
+
});
|
|
698
|
+
return value;
|
|
699
|
+
} catch (error) {
|
|
700
|
+
throw await asGatewayError(error);
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
};
|
|
704
|
+
var gatewayGenerationInfoResponseSchema = lazySchema6(
|
|
705
|
+
() => zodSchema6(
|
|
706
|
+
z6.object({
|
|
707
|
+
data: z6.object({
|
|
708
|
+
id: z6.string(),
|
|
709
|
+
total_cost: z6.number(),
|
|
710
|
+
upstream_inference_cost: z6.number(),
|
|
711
|
+
usage: z6.number(),
|
|
712
|
+
created_at: z6.string(),
|
|
713
|
+
model: z6.string(),
|
|
714
|
+
is_byok: z6.boolean(),
|
|
715
|
+
provider_name: z6.string(),
|
|
716
|
+
streamed: z6.boolean(),
|
|
717
|
+
finish_reason: z6.string(),
|
|
718
|
+
latency: z6.number(),
|
|
719
|
+
generation_time: z6.number(),
|
|
720
|
+
native_tokens_prompt: z6.number(),
|
|
721
|
+
native_tokens_completion: z6.number(),
|
|
722
|
+
native_tokens_reasoning: z6.number(),
|
|
723
|
+
native_tokens_cached: z6.number(),
|
|
724
|
+
native_tokens_cache_creation: z6.number(),
|
|
725
|
+
billable_web_search_calls: z6.number()
|
|
726
|
+
}).transform(
|
|
727
|
+
({
|
|
728
|
+
total_cost,
|
|
729
|
+
upstream_inference_cost,
|
|
730
|
+
created_at,
|
|
731
|
+
is_byok,
|
|
732
|
+
provider_name,
|
|
733
|
+
finish_reason,
|
|
734
|
+
generation_time,
|
|
735
|
+
native_tokens_prompt,
|
|
736
|
+
native_tokens_completion,
|
|
737
|
+
native_tokens_reasoning,
|
|
738
|
+
native_tokens_cached,
|
|
739
|
+
native_tokens_cache_creation,
|
|
740
|
+
billable_web_search_calls,
|
|
741
|
+
...rest
|
|
742
|
+
}) => ({
|
|
743
|
+
...rest,
|
|
744
|
+
totalCost: total_cost,
|
|
745
|
+
upstreamInferenceCost: upstream_inference_cost,
|
|
746
|
+
createdAt: created_at,
|
|
747
|
+
isByok: is_byok,
|
|
748
|
+
providerName: provider_name,
|
|
749
|
+
finishReason: finish_reason,
|
|
750
|
+
generationTime: generation_time,
|
|
751
|
+
promptTokens: native_tokens_prompt,
|
|
752
|
+
completionTokens: native_tokens_completion,
|
|
753
|
+
reasoningTokens: native_tokens_reasoning,
|
|
754
|
+
cachedTokens: native_tokens_cached,
|
|
755
|
+
cacheCreationTokens: native_tokens_cache_creation,
|
|
756
|
+
billableWebSearchCalls: billable_web_search_calls
|
|
757
|
+
})
|
|
758
|
+
)
|
|
759
|
+
}).transform(({ data }) => data)
|
|
760
|
+
)
|
|
761
|
+
);
|
|
762
|
+
|
|
578
763
|
// src/gateway-language-model.ts
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
764
|
+
import {
|
|
765
|
+
combineHeaders,
|
|
766
|
+
createEventSourceResponseHandler,
|
|
767
|
+
createJsonErrorResponseHandler as createJsonErrorResponseHandler4,
|
|
768
|
+
createJsonResponseHandler as createJsonResponseHandler4,
|
|
769
|
+
postJsonToApi,
|
|
770
|
+
resolve as resolve4,
|
|
771
|
+
serializeModelOptions,
|
|
772
|
+
WORKFLOW_SERIALIZE,
|
|
773
|
+
WORKFLOW_DESERIALIZE
|
|
774
|
+
} from "@ai-sdk/provider-utils";
|
|
775
|
+
import { z as z7 } from "zod/v4";
|
|
776
|
+
var GatewayLanguageModel = class _GatewayLanguageModel {
|
|
582
777
|
constructor(modelId, config) {
|
|
583
778
|
this.modelId = modelId;
|
|
584
779
|
this.config = config;
|
|
585
|
-
this.specificationVersion = "
|
|
780
|
+
this.specificationVersion = "v4";
|
|
586
781
|
this.supportedUrls = { "*/*": [/.*/] };
|
|
587
782
|
}
|
|
783
|
+
static [WORKFLOW_SERIALIZE](model) {
|
|
784
|
+
return serializeModelOptions({
|
|
785
|
+
modelId: model.modelId,
|
|
786
|
+
config: model.config
|
|
787
|
+
});
|
|
788
|
+
}
|
|
789
|
+
static [WORKFLOW_DESERIALIZE](options) {
|
|
790
|
+
return new _GatewayLanguageModel(options.modelId, options.config);
|
|
791
|
+
}
|
|
588
792
|
get provider() {
|
|
589
793
|
return this.config.provider;
|
|
590
794
|
}
|
|
@@ -598,24 +802,24 @@ var GatewayLanguageModel = class {
|
|
|
598
802
|
async doGenerate(options) {
|
|
599
803
|
const { args, warnings } = await this.getArgs(options);
|
|
600
804
|
const { abortSignal } = options;
|
|
601
|
-
const resolvedHeaders = await (
|
|
805
|
+
const resolvedHeaders = this.config.headers ? await resolve4(this.config.headers) : void 0;
|
|
602
806
|
try {
|
|
603
807
|
const {
|
|
604
808
|
responseHeaders,
|
|
605
809
|
value: responseBody,
|
|
606
810
|
rawValue: rawResponse
|
|
607
|
-
} = await
|
|
811
|
+
} = await postJsonToApi({
|
|
608
812
|
url: this.getUrl(),
|
|
609
|
-
headers:
|
|
813
|
+
headers: combineHeaders(
|
|
610
814
|
resolvedHeaders,
|
|
611
815
|
options.headers,
|
|
612
816
|
this.getModelConfigHeaders(this.modelId, false),
|
|
613
|
-
await (
|
|
817
|
+
await resolve4(this.config.o11yHeaders)
|
|
614
818
|
),
|
|
615
819
|
body: args,
|
|
616
|
-
successfulResponseHandler: (
|
|
617
|
-
failedResponseHandler: (
|
|
618
|
-
errorSchema:
|
|
820
|
+
successfulResponseHandler: createJsonResponseHandler4(z7.any()),
|
|
821
|
+
failedResponseHandler: createJsonErrorResponseHandler4({
|
|
822
|
+
errorSchema: z7.any(),
|
|
619
823
|
errorToMessage: (data) => data
|
|
620
824
|
}),
|
|
621
825
|
...abortSignal && { abortSignal },
|
|
@@ -628,26 +832,29 @@ var GatewayLanguageModel = class {
|
|
|
628
832
|
warnings
|
|
629
833
|
};
|
|
630
834
|
} catch (error) {
|
|
631
|
-
throw await asGatewayError(
|
|
835
|
+
throw await asGatewayError(
|
|
836
|
+
error,
|
|
837
|
+
await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
|
|
838
|
+
);
|
|
632
839
|
}
|
|
633
840
|
}
|
|
634
841
|
async doStream(options) {
|
|
635
842
|
const { args, warnings } = await this.getArgs(options);
|
|
636
843
|
const { abortSignal } = options;
|
|
637
|
-
const resolvedHeaders = await (
|
|
844
|
+
const resolvedHeaders = this.config.headers ? await resolve4(this.config.headers) : void 0;
|
|
638
845
|
try {
|
|
639
|
-
const { value: response, responseHeaders } = await
|
|
846
|
+
const { value: response, responseHeaders } = await postJsonToApi({
|
|
640
847
|
url: this.getUrl(),
|
|
641
|
-
headers:
|
|
848
|
+
headers: combineHeaders(
|
|
642
849
|
resolvedHeaders,
|
|
643
850
|
options.headers,
|
|
644
851
|
this.getModelConfigHeaders(this.modelId, true),
|
|
645
|
-
await (
|
|
852
|
+
await resolve4(this.config.o11yHeaders)
|
|
646
853
|
),
|
|
647
854
|
body: args,
|
|
648
|
-
successfulResponseHandler:
|
|
649
|
-
failedResponseHandler: (
|
|
650
|
-
errorSchema:
|
|
855
|
+
successfulResponseHandler: createEventSourceResponseHandler(z7.any()),
|
|
856
|
+
failedResponseHandler: createJsonErrorResponseHandler4({
|
|
857
|
+
errorSchema: z7.any(),
|
|
651
858
|
errorToMessage: (data) => data
|
|
652
859
|
}),
|
|
653
860
|
...abortSignal && { abortSignal },
|
|
@@ -683,7 +890,10 @@ var GatewayLanguageModel = class {
|
|
|
683
890
|
response: { headers: responseHeaders }
|
|
684
891
|
};
|
|
685
892
|
} catch (error) {
|
|
686
|
-
throw await asGatewayError(
|
|
893
|
+
throw await asGatewayError(
|
|
894
|
+
error,
|
|
895
|
+
await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
|
|
896
|
+
);
|
|
687
897
|
}
|
|
688
898
|
}
|
|
689
899
|
isFilePart(part) {
|
|
@@ -717,7 +927,7 @@ var GatewayLanguageModel = class {
|
|
|
717
927
|
}
|
|
718
928
|
getModelConfigHeaders(modelId, streaming) {
|
|
719
929
|
return {
|
|
720
|
-
"ai-language-model-specification-version": "
|
|
930
|
+
"ai-language-model-specification-version": "4",
|
|
721
931
|
"ai-language-model-id": modelId,
|
|
722
932
|
"ai-language-model-streaming": String(streaming)
|
|
723
933
|
};
|
|
@@ -725,16 +935,36 @@ var GatewayLanguageModel = class {
|
|
|
725
935
|
};
|
|
726
936
|
|
|
727
937
|
// src/gateway-embedding-model.ts
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
938
|
+
import {
|
|
939
|
+
combineHeaders as combineHeaders2,
|
|
940
|
+
createJsonErrorResponseHandler as createJsonErrorResponseHandler5,
|
|
941
|
+
createJsonResponseHandler as createJsonResponseHandler5,
|
|
942
|
+
lazySchema as lazySchema7,
|
|
943
|
+
postJsonToApi as postJsonToApi2,
|
|
944
|
+
resolve as resolve5,
|
|
945
|
+
serializeModelOptions as serializeModelOptions2,
|
|
946
|
+
WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE2,
|
|
947
|
+
WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE2,
|
|
948
|
+
zodSchema as zodSchema7
|
|
949
|
+
} from "@ai-sdk/provider-utils";
|
|
950
|
+
import { z as z8 } from "zod/v4";
|
|
951
|
+
var GatewayEmbeddingModel = class _GatewayEmbeddingModel {
|
|
731
952
|
constructor(modelId, config) {
|
|
732
953
|
this.modelId = modelId;
|
|
733
954
|
this.config = config;
|
|
734
|
-
this.specificationVersion = "
|
|
955
|
+
this.specificationVersion = "v4";
|
|
735
956
|
this.maxEmbeddingsPerCall = 2048;
|
|
736
957
|
this.supportsParallelCalls = true;
|
|
737
958
|
}
|
|
959
|
+
static [WORKFLOW_SERIALIZE2](model) {
|
|
960
|
+
return serializeModelOptions2({
|
|
961
|
+
modelId: model.modelId,
|
|
962
|
+
config: model.config
|
|
963
|
+
});
|
|
964
|
+
}
|
|
965
|
+
static [WORKFLOW_DESERIALIZE2](options) {
|
|
966
|
+
return new _GatewayEmbeddingModel(options.modelId, options.config);
|
|
967
|
+
}
|
|
738
968
|
get provider() {
|
|
739
969
|
return this.config.provider;
|
|
740
970
|
}
|
|
@@ -745,29 +975,29 @@ var GatewayEmbeddingModel = class {
|
|
|
745
975
|
providerOptions
|
|
746
976
|
}) {
|
|
747
977
|
var _a9;
|
|
748
|
-
const resolvedHeaders = await (
|
|
978
|
+
const resolvedHeaders = this.config.headers ? await resolve5(this.config.headers) : void 0;
|
|
749
979
|
try {
|
|
750
980
|
const {
|
|
751
981
|
responseHeaders,
|
|
752
982
|
value: responseBody,
|
|
753
983
|
rawValue
|
|
754
|
-
} = await (
|
|
984
|
+
} = await postJsonToApi2({
|
|
755
985
|
url: this.getUrl(),
|
|
756
|
-
headers: (
|
|
986
|
+
headers: combineHeaders2(
|
|
757
987
|
resolvedHeaders,
|
|
758
988
|
headers != null ? headers : {},
|
|
759
989
|
this.getModelConfigHeaders(),
|
|
760
|
-
await (
|
|
990
|
+
await resolve5(this.config.o11yHeaders)
|
|
761
991
|
),
|
|
762
992
|
body: {
|
|
763
993
|
values,
|
|
764
994
|
...providerOptions ? { providerOptions } : {}
|
|
765
995
|
},
|
|
766
|
-
successfulResponseHandler: (
|
|
996
|
+
successfulResponseHandler: createJsonResponseHandler5(
|
|
767
997
|
gatewayEmbeddingResponseSchema
|
|
768
998
|
),
|
|
769
|
-
failedResponseHandler: (
|
|
770
|
-
errorSchema:
|
|
999
|
+
failedResponseHandler: createJsonErrorResponseHandler5({
|
|
1000
|
+
errorSchema: z8.any(),
|
|
771
1001
|
errorToMessage: (data) => data
|
|
772
1002
|
}),
|
|
773
1003
|
...abortSignal && { abortSignal },
|
|
@@ -781,7 +1011,10 @@ var GatewayEmbeddingModel = class {
|
|
|
781
1011
|
warnings: []
|
|
782
1012
|
};
|
|
783
1013
|
} catch (error) {
|
|
784
|
-
throw await asGatewayError(
|
|
1014
|
+
throw await asGatewayError(
|
|
1015
|
+
error,
|
|
1016
|
+
await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
|
|
1017
|
+
);
|
|
785
1018
|
}
|
|
786
1019
|
}
|
|
787
1020
|
getUrl() {
|
|
@@ -789,32 +1022,51 @@ var GatewayEmbeddingModel = class {
|
|
|
789
1022
|
}
|
|
790
1023
|
getModelConfigHeaders() {
|
|
791
1024
|
return {
|
|
792
|
-
"ai-embedding-model-specification-version": "
|
|
1025
|
+
"ai-embedding-model-specification-version": "4",
|
|
793
1026
|
"ai-model-id": this.modelId
|
|
794
1027
|
};
|
|
795
1028
|
}
|
|
796
1029
|
};
|
|
797
|
-
var gatewayEmbeddingResponseSchema = (
|
|
798
|
-
() => (
|
|
799
|
-
|
|
800
|
-
embeddings:
|
|
801
|
-
usage:
|
|
802
|
-
providerMetadata:
|
|
1030
|
+
var gatewayEmbeddingResponseSchema = lazySchema7(
|
|
1031
|
+
() => zodSchema7(
|
|
1032
|
+
z8.object({
|
|
1033
|
+
embeddings: z8.array(z8.array(z8.number())),
|
|
1034
|
+
usage: z8.object({ tokens: z8.number() }).nullish(),
|
|
1035
|
+
providerMetadata: z8.record(z8.string(), z8.record(z8.string(), z8.unknown())).optional()
|
|
803
1036
|
})
|
|
804
1037
|
)
|
|
805
1038
|
);
|
|
806
1039
|
|
|
807
1040
|
// src/gateway-image-model.ts
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
1041
|
+
import {
|
|
1042
|
+
combineHeaders as combineHeaders3,
|
|
1043
|
+
convertUint8ArrayToBase64,
|
|
1044
|
+
createJsonResponseHandler as createJsonResponseHandler6,
|
|
1045
|
+
createJsonErrorResponseHandler as createJsonErrorResponseHandler6,
|
|
1046
|
+
postJsonToApi as postJsonToApi3,
|
|
1047
|
+
resolve as resolve6,
|
|
1048
|
+
serializeModelOptions as serializeModelOptions3,
|
|
1049
|
+
WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE3,
|
|
1050
|
+
WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE3
|
|
1051
|
+
} from "@ai-sdk/provider-utils";
|
|
1052
|
+
import { z as z9 } from "zod/v4";
|
|
1053
|
+
var GatewayImageModel = class _GatewayImageModel {
|
|
811
1054
|
constructor(modelId, config) {
|
|
812
1055
|
this.modelId = modelId;
|
|
813
1056
|
this.config = config;
|
|
814
|
-
this.specificationVersion = "
|
|
1057
|
+
this.specificationVersion = "v4";
|
|
815
1058
|
// Set a very large number to prevent client-side splitting of requests
|
|
816
1059
|
this.maxImagesPerCall = Number.MAX_SAFE_INTEGER;
|
|
817
1060
|
}
|
|
1061
|
+
static [WORKFLOW_SERIALIZE3](model) {
|
|
1062
|
+
return serializeModelOptions3({
|
|
1063
|
+
modelId: model.modelId,
|
|
1064
|
+
config: model.config
|
|
1065
|
+
});
|
|
1066
|
+
}
|
|
1067
|
+
static [WORKFLOW_DESERIALIZE3](options) {
|
|
1068
|
+
return new _GatewayImageModel(options.modelId, options.config);
|
|
1069
|
+
}
|
|
818
1070
|
get provider() {
|
|
819
1071
|
return this.config.provider;
|
|
820
1072
|
}
|
|
@@ -831,19 +1083,15 @@ var GatewayImageModel = class {
|
|
|
831
1083
|
abortSignal
|
|
832
1084
|
}) {
|
|
833
1085
|
var _a9, _b9, _c, _d;
|
|
834
|
-
const resolvedHeaders = await (
|
|
1086
|
+
const resolvedHeaders = this.config.headers ? await resolve6(this.config.headers) : void 0;
|
|
835
1087
|
try {
|
|
836
|
-
const {
|
|
837
|
-
responseHeaders,
|
|
838
|
-
value: responseBody,
|
|
839
|
-
rawValue
|
|
840
|
-
} = await (0, import_provider_utils7.postJsonToApi)({
|
|
1088
|
+
const { responseHeaders, value: responseBody } = await postJsonToApi3({
|
|
841
1089
|
url: this.getUrl(),
|
|
842
|
-
headers: (
|
|
1090
|
+
headers: combineHeaders3(
|
|
843
1091
|
resolvedHeaders,
|
|
844
1092
|
headers != null ? headers : {},
|
|
845
1093
|
this.getModelConfigHeaders(),
|
|
846
|
-
await (
|
|
1094
|
+
await resolve6(this.config.o11yHeaders)
|
|
847
1095
|
),
|
|
848
1096
|
body: {
|
|
849
1097
|
prompt,
|
|
@@ -857,11 +1105,11 @@ var GatewayImageModel = class {
|
|
|
857
1105
|
},
|
|
858
1106
|
...mask && { mask: maybeEncodeImageFile(mask) }
|
|
859
1107
|
},
|
|
860
|
-
successfulResponseHandler: (
|
|
1108
|
+
successfulResponseHandler: createJsonResponseHandler6(
|
|
861
1109
|
gatewayImageResponseSchema
|
|
862
1110
|
),
|
|
863
|
-
failedResponseHandler: (
|
|
864
|
-
errorSchema:
|
|
1111
|
+
failedResponseHandler: createJsonErrorResponseHandler6({
|
|
1112
|
+
errorSchema: z9.any(),
|
|
865
1113
|
errorToMessage: (data) => data
|
|
866
1114
|
}),
|
|
867
1115
|
...abortSignal && { abortSignal },
|
|
@@ -886,7 +1134,10 @@ var GatewayImageModel = class {
|
|
|
886
1134
|
}
|
|
887
1135
|
};
|
|
888
1136
|
} catch (error) {
|
|
889
|
-
throw await asGatewayError(
|
|
1137
|
+
throw await asGatewayError(
|
|
1138
|
+
error,
|
|
1139
|
+
await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
|
|
1140
|
+
);
|
|
890
1141
|
}
|
|
891
1142
|
}
|
|
892
1143
|
getUrl() {
|
|
@@ -894,7 +1145,7 @@ var GatewayImageModel = class {
|
|
|
894
1145
|
}
|
|
895
1146
|
getModelConfigHeaders() {
|
|
896
1147
|
return {
|
|
897
|
-
"ai-image-model-specification-version": "
|
|
1148
|
+
"ai-image-model-specification-version": "4",
|
|
898
1149
|
"ai-model-id": this.modelId
|
|
899
1150
|
};
|
|
900
1151
|
}
|
|
@@ -903,52 +1154,59 @@ function maybeEncodeImageFile(file) {
|
|
|
903
1154
|
if (file.type === "file" && file.data instanceof Uint8Array) {
|
|
904
1155
|
return {
|
|
905
1156
|
...file,
|
|
906
|
-
data:
|
|
1157
|
+
data: convertUint8ArrayToBase64(file.data)
|
|
907
1158
|
};
|
|
908
1159
|
}
|
|
909
1160
|
return file;
|
|
910
1161
|
}
|
|
911
|
-
var providerMetadataEntrySchema =
|
|
912
|
-
images:
|
|
913
|
-
}).catchall(
|
|
914
|
-
var gatewayImageWarningSchema =
|
|
915
|
-
|
|
916
|
-
type:
|
|
917
|
-
feature:
|
|
918
|
-
details:
|
|
1162
|
+
var providerMetadataEntrySchema = z9.object({
|
|
1163
|
+
images: z9.array(z9.unknown()).optional()
|
|
1164
|
+
}).catchall(z9.unknown());
|
|
1165
|
+
var gatewayImageWarningSchema = z9.discriminatedUnion("type", [
|
|
1166
|
+
z9.object({
|
|
1167
|
+
type: z9.literal("unsupported"),
|
|
1168
|
+
feature: z9.string(),
|
|
1169
|
+
details: z9.string().optional()
|
|
919
1170
|
}),
|
|
920
|
-
|
|
921
|
-
type:
|
|
922
|
-
feature:
|
|
923
|
-
details:
|
|
1171
|
+
z9.object({
|
|
1172
|
+
type: z9.literal("compatibility"),
|
|
1173
|
+
feature: z9.string(),
|
|
1174
|
+
details: z9.string().optional()
|
|
924
1175
|
}),
|
|
925
|
-
|
|
926
|
-
type:
|
|
927
|
-
message:
|
|
1176
|
+
z9.object({
|
|
1177
|
+
type: z9.literal("other"),
|
|
1178
|
+
message: z9.string()
|
|
928
1179
|
})
|
|
929
1180
|
]);
|
|
930
|
-
var gatewayImageUsageSchema =
|
|
931
|
-
inputTokens:
|
|
932
|
-
outputTokens:
|
|
933
|
-
totalTokens:
|
|
1181
|
+
var gatewayImageUsageSchema = z9.object({
|
|
1182
|
+
inputTokens: z9.number().nullish(),
|
|
1183
|
+
outputTokens: z9.number().nullish(),
|
|
1184
|
+
totalTokens: z9.number().nullish()
|
|
934
1185
|
});
|
|
935
|
-
var gatewayImageResponseSchema =
|
|
936
|
-
images:
|
|
1186
|
+
var gatewayImageResponseSchema = z9.object({
|
|
1187
|
+
images: z9.array(z9.string()),
|
|
937
1188
|
// Always base64 strings over the wire
|
|
938
|
-
warnings:
|
|
939
|
-
providerMetadata:
|
|
1189
|
+
warnings: z9.array(gatewayImageWarningSchema).optional(),
|
|
1190
|
+
providerMetadata: z9.record(z9.string(), providerMetadataEntrySchema).optional(),
|
|
940
1191
|
usage: gatewayImageUsageSchema.optional()
|
|
941
1192
|
});
|
|
942
1193
|
|
|
943
1194
|
// src/gateway-video-model.ts
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
1195
|
+
import { APICallError as APICallError2 } from "@ai-sdk/provider";
|
|
1196
|
+
import {
|
|
1197
|
+
combineHeaders as combineHeaders4,
|
|
1198
|
+
convertUint8ArrayToBase64 as convertUint8ArrayToBase642,
|
|
1199
|
+
createJsonErrorResponseHandler as createJsonErrorResponseHandler7,
|
|
1200
|
+
parseJsonEventStream,
|
|
1201
|
+
postJsonToApi as postJsonToApi4,
|
|
1202
|
+
resolve as resolve7
|
|
1203
|
+
} from "@ai-sdk/provider-utils";
|
|
1204
|
+
import { z as z10 } from "zod/v4";
|
|
947
1205
|
var GatewayVideoModel = class {
|
|
948
1206
|
constructor(modelId, config) {
|
|
949
1207
|
this.modelId = modelId;
|
|
950
1208
|
this.config = config;
|
|
951
|
-
this.specificationVersion = "
|
|
1209
|
+
this.specificationVersion = "v4";
|
|
952
1210
|
// Set a very large number to prevent client-side splitting of requests
|
|
953
1211
|
this.maxVideosPerCall = Number.MAX_SAFE_INTEGER;
|
|
954
1212
|
}
|
|
@@ -969,15 +1227,15 @@ var GatewayVideoModel = class {
|
|
|
969
1227
|
abortSignal
|
|
970
1228
|
}) {
|
|
971
1229
|
var _a9;
|
|
972
|
-
const resolvedHeaders = await (
|
|
1230
|
+
const resolvedHeaders = this.config.headers ? await resolve7(this.config.headers) : void 0;
|
|
973
1231
|
try {
|
|
974
|
-
const { responseHeaders, value: responseBody } = await (
|
|
1232
|
+
const { responseHeaders, value: responseBody } = await postJsonToApi4({
|
|
975
1233
|
url: this.getUrl(),
|
|
976
|
-
headers: (
|
|
1234
|
+
headers: combineHeaders4(
|
|
977
1235
|
resolvedHeaders,
|
|
978
1236
|
headers != null ? headers : {},
|
|
979
1237
|
this.getModelConfigHeaders(),
|
|
980
|
-
await (
|
|
1238
|
+
await resolve7(this.config.o11yHeaders),
|
|
981
1239
|
{ accept: "text/event-stream" }
|
|
982
1240
|
),
|
|
983
1241
|
body: {
|
|
@@ -997,14 +1255,14 @@ var GatewayVideoModel = class {
|
|
|
997
1255
|
requestBodyValues
|
|
998
1256
|
}) => {
|
|
999
1257
|
if (response.body == null) {
|
|
1000
|
-
throw new
|
|
1258
|
+
throw new APICallError2({
|
|
1001
1259
|
message: "SSE response body is empty",
|
|
1002
1260
|
url,
|
|
1003
1261
|
requestBodyValues,
|
|
1004
1262
|
statusCode: response.status
|
|
1005
1263
|
});
|
|
1006
1264
|
}
|
|
1007
|
-
const eventStream =
|
|
1265
|
+
const eventStream = parseJsonEventStream({
|
|
1008
1266
|
stream: response.body,
|
|
1009
1267
|
schema: gatewayVideoEventSchema
|
|
1010
1268
|
});
|
|
@@ -1012,7 +1270,7 @@ var GatewayVideoModel = class {
|
|
|
1012
1270
|
const { done, value: parseResult } = await reader.read();
|
|
1013
1271
|
reader.releaseLock();
|
|
1014
1272
|
if (done || !parseResult) {
|
|
1015
|
-
throw new
|
|
1273
|
+
throw new APICallError2({
|
|
1016
1274
|
message: "SSE stream ended without a data event",
|
|
1017
1275
|
url,
|
|
1018
1276
|
requestBodyValues,
|
|
@@ -1020,7 +1278,7 @@ var GatewayVideoModel = class {
|
|
|
1020
1278
|
});
|
|
1021
1279
|
}
|
|
1022
1280
|
if (!parseResult.success) {
|
|
1023
|
-
throw new
|
|
1281
|
+
throw new APICallError2({
|
|
1024
1282
|
message: "Failed to parse video SSE event",
|
|
1025
1283
|
cause: parseResult.error,
|
|
1026
1284
|
url,
|
|
@@ -1030,7 +1288,7 @@ var GatewayVideoModel = class {
|
|
|
1030
1288
|
}
|
|
1031
1289
|
const event = parseResult.value;
|
|
1032
1290
|
if (event.type === "error") {
|
|
1033
|
-
throw new
|
|
1291
|
+
throw new APICallError2({
|
|
1034
1292
|
message: event.message,
|
|
1035
1293
|
statusCode: event.statusCode,
|
|
1036
1294
|
url,
|
|
@@ -1055,8 +1313,8 @@ var GatewayVideoModel = class {
|
|
|
1055
1313
|
responseHeaders: Object.fromEntries([...response.headers])
|
|
1056
1314
|
};
|
|
1057
1315
|
},
|
|
1058
|
-
failedResponseHandler: (
|
|
1059
|
-
errorSchema:
|
|
1316
|
+
failedResponseHandler: createJsonErrorResponseHandler7({
|
|
1317
|
+
errorSchema: z10.any(),
|
|
1060
1318
|
errorToMessage: (data) => data
|
|
1061
1319
|
}),
|
|
1062
1320
|
...abortSignal && { abortSignal },
|
|
@@ -1073,7 +1331,10 @@ var GatewayVideoModel = class {
|
|
|
1073
1331
|
}
|
|
1074
1332
|
};
|
|
1075
1333
|
} catch (error) {
|
|
1076
|
-
throw await asGatewayError(
|
|
1334
|
+
throw await asGatewayError(
|
|
1335
|
+
error,
|
|
1336
|
+
await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
|
|
1337
|
+
);
|
|
1077
1338
|
}
|
|
1078
1339
|
}
|
|
1079
1340
|
getUrl() {
|
|
@@ -1081,7 +1342,7 @@ var GatewayVideoModel = class {
|
|
|
1081
1342
|
}
|
|
1082
1343
|
getModelConfigHeaders() {
|
|
1083
1344
|
return {
|
|
1084
|
-
"ai-video-model-specification-version": "
|
|
1345
|
+
"ai-video-model-specification-version": "4",
|
|
1085
1346
|
"ai-model-id": this.modelId
|
|
1086
1347
|
};
|
|
1087
1348
|
}
|
|
@@ -1090,116 +1351,215 @@ function maybeEncodeVideoFile(file) {
|
|
|
1090
1351
|
if (file.type === "file" && file.data instanceof Uint8Array) {
|
|
1091
1352
|
return {
|
|
1092
1353
|
...file,
|
|
1093
|
-
data: (
|
|
1354
|
+
data: convertUint8ArrayToBase642(file.data)
|
|
1094
1355
|
};
|
|
1095
1356
|
}
|
|
1096
1357
|
return file;
|
|
1097
1358
|
}
|
|
1098
|
-
var providerMetadataEntrySchema2 =
|
|
1099
|
-
videos:
|
|
1100
|
-
}).catchall(
|
|
1101
|
-
var gatewayVideoDataSchema =
|
|
1102
|
-
|
|
1103
|
-
type:
|
|
1104
|
-
url:
|
|
1105
|
-
mediaType:
|
|
1359
|
+
var providerMetadataEntrySchema2 = z10.object({
|
|
1360
|
+
videos: z10.array(z10.unknown()).optional()
|
|
1361
|
+
}).catchall(z10.unknown());
|
|
1362
|
+
var gatewayVideoDataSchema = z10.union([
|
|
1363
|
+
z10.object({
|
|
1364
|
+
type: z10.literal("url"),
|
|
1365
|
+
url: z10.string(),
|
|
1366
|
+
mediaType: z10.string()
|
|
1106
1367
|
}),
|
|
1107
|
-
|
|
1108
|
-
type:
|
|
1109
|
-
data:
|
|
1110
|
-
mediaType:
|
|
1368
|
+
z10.object({
|
|
1369
|
+
type: z10.literal("base64"),
|
|
1370
|
+
data: z10.string(),
|
|
1371
|
+
mediaType: z10.string()
|
|
1111
1372
|
})
|
|
1112
1373
|
]);
|
|
1113
|
-
var gatewayVideoWarningSchema =
|
|
1114
|
-
|
|
1115
|
-
type:
|
|
1116
|
-
feature:
|
|
1117
|
-
details:
|
|
1374
|
+
var gatewayVideoWarningSchema = z10.discriminatedUnion("type", [
|
|
1375
|
+
z10.object({
|
|
1376
|
+
type: z10.literal("unsupported"),
|
|
1377
|
+
feature: z10.string(),
|
|
1378
|
+
details: z10.string().optional()
|
|
1118
1379
|
}),
|
|
1119
|
-
|
|
1120
|
-
type:
|
|
1121
|
-
feature:
|
|
1122
|
-
details:
|
|
1380
|
+
z10.object({
|
|
1381
|
+
type: z10.literal("compatibility"),
|
|
1382
|
+
feature: z10.string(),
|
|
1383
|
+
details: z10.string().optional()
|
|
1123
1384
|
}),
|
|
1124
|
-
|
|
1125
|
-
type:
|
|
1126
|
-
message:
|
|
1385
|
+
z10.object({
|
|
1386
|
+
type: z10.literal("other"),
|
|
1387
|
+
message: z10.string()
|
|
1127
1388
|
})
|
|
1128
1389
|
]);
|
|
1129
|
-
var gatewayVideoEventSchema =
|
|
1130
|
-
|
|
1131
|
-
type:
|
|
1132
|
-
videos:
|
|
1133
|
-
warnings:
|
|
1134
|
-
providerMetadata:
|
|
1390
|
+
var gatewayVideoEventSchema = z10.discriminatedUnion("type", [
|
|
1391
|
+
z10.object({
|
|
1392
|
+
type: z10.literal("result"),
|
|
1393
|
+
videos: z10.array(gatewayVideoDataSchema),
|
|
1394
|
+
warnings: z10.array(gatewayVideoWarningSchema).optional(),
|
|
1395
|
+
providerMetadata: z10.record(z10.string(), providerMetadataEntrySchema2).optional()
|
|
1135
1396
|
}),
|
|
1136
|
-
|
|
1137
|
-
type:
|
|
1138
|
-
message:
|
|
1139
|
-
errorType:
|
|
1140
|
-
statusCode:
|
|
1141
|
-
param:
|
|
1397
|
+
z10.object({
|
|
1398
|
+
type: z10.literal("error"),
|
|
1399
|
+
message: z10.string(),
|
|
1400
|
+
errorType: z10.string(),
|
|
1401
|
+
statusCode: z10.number(),
|
|
1402
|
+
param: z10.unknown().nullable()
|
|
1142
1403
|
})
|
|
1143
1404
|
]);
|
|
1144
1405
|
|
|
1406
|
+
// src/gateway-reranking-model.ts
|
|
1407
|
+
import {
|
|
1408
|
+
combineHeaders as combineHeaders5,
|
|
1409
|
+
createJsonErrorResponseHandler as createJsonErrorResponseHandler8,
|
|
1410
|
+
createJsonResponseHandler as createJsonResponseHandler7,
|
|
1411
|
+
lazySchema as lazySchema8,
|
|
1412
|
+
postJsonToApi as postJsonToApi5,
|
|
1413
|
+
resolve as resolve8,
|
|
1414
|
+
zodSchema as zodSchema8
|
|
1415
|
+
} from "@ai-sdk/provider-utils";
|
|
1416
|
+
import { z as z11 } from "zod/v4";
|
|
1417
|
+
var GatewayRerankingModel = class {
|
|
1418
|
+
constructor(modelId, config) {
|
|
1419
|
+
this.modelId = modelId;
|
|
1420
|
+
this.config = config;
|
|
1421
|
+
this.specificationVersion = "v4";
|
|
1422
|
+
}
|
|
1423
|
+
get provider() {
|
|
1424
|
+
return this.config.provider;
|
|
1425
|
+
}
|
|
1426
|
+
async doRerank({
|
|
1427
|
+
documents,
|
|
1428
|
+
query,
|
|
1429
|
+
topN,
|
|
1430
|
+
headers,
|
|
1431
|
+
abortSignal,
|
|
1432
|
+
providerOptions
|
|
1433
|
+
}) {
|
|
1434
|
+
const resolvedHeaders = this.config.headers ? await resolve8(this.config.headers) : void 0;
|
|
1435
|
+
try {
|
|
1436
|
+
const {
|
|
1437
|
+
responseHeaders,
|
|
1438
|
+
value: responseBody,
|
|
1439
|
+
rawValue
|
|
1440
|
+
} = await postJsonToApi5({
|
|
1441
|
+
url: this.getUrl(),
|
|
1442
|
+
headers: combineHeaders5(
|
|
1443
|
+
resolvedHeaders,
|
|
1444
|
+
headers != null ? headers : {},
|
|
1445
|
+
this.getModelConfigHeaders(),
|
|
1446
|
+
await resolve8(this.config.o11yHeaders)
|
|
1447
|
+
),
|
|
1448
|
+
body: {
|
|
1449
|
+
documents,
|
|
1450
|
+
query,
|
|
1451
|
+
...topN != null ? { topN } : {},
|
|
1452
|
+
...providerOptions ? { providerOptions } : {}
|
|
1453
|
+
},
|
|
1454
|
+
successfulResponseHandler: createJsonResponseHandler7(
|
|
1455
|
+
gatewayRerankingResponseSchema
|
|
1456
|
+
),
|
|
1457
|
+
failedResponseHandler: createJsonErrorResponseHandler8({
|
|
1458
|
+
errorSchema: z11.any(),
|
|
1459
|
+
errorToMessage: (data) => data
|
|
1460
|
+
}),
|
|
1461
|
+
...abortSignal && { abortSignal },
|
|
1462
|
+
fetch: this.config.fetch
|
|
1463
|
+
});
|
|
1464
|
+
return {
|
|
1465
|
+
ranking: responseBody.ranking,
|
|
1466
|
+
providerMetadata: responseBody.providerMetadata,
|
|
1467
|
+
response: { headers: responseHeaders, body: rawValue },
|
|
1468
|
+
warnings: []
|
|
1469
|
+
};
|
|
1470
|
+
} catch (error) {
|
|
1471
|
+
throw await asGatewayError(
|
|
1472
|
+
error,
|
|
1473
|
+
await parseAuthMethod(resolvedHeaders != null ? resolvedHeaders : {})
|
|
1474
|
+
);
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
getUrl() {
|
|
1478
|
+
return `${this.config.baseURL}/reranking-model`;
|
|
1479
|
+
}
|
|
1480
|
+
getModelConfigHeaders() {
|
|
1481
|
+
return {
|
|
1482
|
+
"ai-reranking-model-specification-version": "4",
|
|
1483
|
+
"ai-model-id": this.modelId
|
|
1484
|
+
};
|
|
1485
|
+
}
|
|
1486
|
+
};
|
|
1487
|
+
var gatewayRerankingResponseSchema = lazySchema8(
|
|
1488
|
+
() => zodSchema8(
|
|
1489
|
+
z11.object({
|
|
1490
|
+
ranking: z11.array(
|
|
1491
|
+
z11.object({
|
|
1492
|
+
index: z11.number(),
|
|
1493
|
+
relevanceScore: z11.number()
|
|
1494
|
+
})
|
|
1495
|
+
),
|
|
1496
|
+
providerMetadata: z11.record(z11.string(), z11.record(z11.string(), z11.unknown())).optional()
|
|
1497
|
+
})
|
|
1498
|
+
)
|
|
1499
|
+
);
|
|
1500
|
+
|
|
1145
1501
|
// src/tool/parallel-search.ts
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1502
|
+
import {
|
|
1503
|
+
createProviderToolFactoryWithOutputSchema,
|
|
1504
|
+
lazySchema as lazySchema9,
|
|
1505
|
+
zodSchema as zodSchema9
|
|
1506
|
+
} from "@ai-sdk/provider-utils";
|
|
1507
|
+
import { z as z12 } from "zod";
|
|
1508
|
+
var parallelSearchInputSchema = lazySchema9(
|
|
1509
|
+
() => zodSchema9(
|
|
1510
|
+
z12.object({
|
|
1511
|
+
objective: z12.string().describe(
|
|
1152
1512
|
"Natural-language description of the web research goal, including source or freshness guidance and broader context from the task. Maximum 5000 characters."
|
|
1153
1513
|
),
|
|
1154
|
-
search_queries:
|
|
1514
|
+
search_queries: z12.array(z12.string()).optional().describe(
|
|
1155
1515
|
"Optional search queries to supplement the objective. Maximum 200 characters per query."
|
|
1156
1516
|
),
|
|
1157
|
-
mode:
|
|
1517
|
+
mode: z12.enum(["one-shot", "agentic"]).optional().describe(
|
|
1158
1518
|
'Mode preset: "one-shot" for comprehensive results with longer excerpts (default), "agentic" for concise, token-efficient results for multi-step workflows.'
|
|
1159
1519
|
),
|
|
1160
|
-
max_results:
|
|
1520
|
+
max_results: z12.number().optional().describe(
|
|
1161
1521
|
"Maximum number of results to return (1-20). Defaults to 10 if not specified."
|
|
1162
1522
|
),
|
|
1163
|
-
source_policy:
|
|
1164
|
-
include_domains:
|
|
1165
|
-
exclude_domains:
|
|
1166
|
-
after_date:
|
|
1523
|
+
source_policy: z12.object({
|
|
1524
|
+
include_domains: z12.array(z12.string()).optional().describe("List of domains to include in search results."),
|
|
1525
|
+
exclude_domains: z12.array(z12.string()).optional().describe("List of domains to exclude from search results."),
|
|
1526
|
+
after_date: z12.string().optional().describe(
|
|
1167
1527
|
"Only include results published after this date (ISO 8601 format)."
|
|
1168
1528
|
)
|
|
1169
1529
|
}).optional().describe(
|
|
1170
1530
|
"Source policy for controlling which domains to include/exclude and freshness."
|
|
1171
1531
|
),
|
|
1172
|
-
excerpts:
|
|
1173
|
-
max_chars_per_result:
|
|
1174
|
-
max_chars_total:
|
|
1532
|
+
excerpts: z12.object({
|
|
1533
|
+
max_chars_per_result: z12.number().optional().describe("Maximum characters per result."),
|
|
1534
|
+
max_chars_total: z12.number().optional().describe("Maximum total characters across all results.")
|
|
1175
1535
|
}).optional().describe("Excerpt configuration for controlling result length."),
|
|
1176
|
-
fetch_policy:
|
|
1177
|
-
max_age_seconds:
|
|
1536
|
+
fetch_policy: z12.object({
|
|
1537
|
+
max_age_seconds: z12.number().optional().describe(
|
|
1178
1538
|
"Maximum age in seconds for cached content. Set to 0 to always fetch fresh content."
|
|
1179
1539
|
)
|
|
1180
1540
|
}).optional().describe("Fetch policy for controlling content freshness.")
|
|
1181
1541
|
})
|
|
1182
1542
|
)
|
|
1183
1543
|
);
|
|
1184
|
-
var parallelSearchOutputSchema = (
|
|
1185
|
-
() => (
|
|
1186
|
-
|
|
1544
|
+
var parallelSearchOutputSchema = lazySchema9(
|
|
1545
|
+
() => zodSchema9(
|
|
1546
|
+
z12.union([
|
|
1187
1547
|
// Success response
|
|
1188
|
-
|
|
1189
|
-
searchId:
|
|
1190
|
-
results:
|
|
1191
|
-
|
|
1192
|
-
url:
|
|
1193
|
-
title:
|
|
1194
|
-
excerpt:
|
|
1195
|
-
publishDate:
|
|
1196
|
-
relevanceScore:
|
|
1548
|
+
z12.object({
|
|
1549
|
+
searchId: z12.string(),
|
|
1550
|
+
results: z12.array(
|
|
1551
|
+
z12.object({
|
|
1552
|
+
url: z12.string(),
|
|
1553
|
+
title: z12.string(),
|
|
1554
|
+
excerpt: z12.string(),
|
|
1555
|
+
publishDate: z12.string().nullable().optional(),
|
|
1556
|
+
relevanceScore: z12.number().optional()
|
|
1197
1557
|
})
|
|
1198
1558
|
)
|
|
1199
1559
|
}),
|
|
1200
1560
|
// Error response
|
|
1201
|
-
|
|
1202
|
-
error:
|
|
1561
|
+
z12.object({
|
|
1562
|
+
error: z12.enum([
|
|
1203
1563
|
"api_error",
|
|
1204
1564
|
"rate_limit",
|
|
1205
1565
|
"timeout",
|
|
@@ -1207,13 +1567,13 @@ var parallelSearchOutputSchema = (0, import_provider_utils9.lazySchema)(
|
|
|
1207
1567
|
"configuration_error",
|
|
1208
1568
|
"unknown"
|
|
1209
1569
|
]),
|
|
1210
|
-
statusCode:
|
|
1211
|
-
message:
|
|
1570
|
+
statusCode: z12.number().optional(),
|
|
1571
|
+
message: z12.string()
|
|
1212
1572
|
})
|
|
1213
1573
|
])
|
|
1214
1574
|
)
|
|
1215
1575
|
);
|
|
1216
|
-
var parallelSearchToolFactory =
|
|
1576
|
+
var parallelSearchToolFactory = createProviderToolFactoryWithOutputSchema({
|
|
1217
1577
|
id: "gateway.parallel_search",
|
|
1218
1578
|
inputSchema: parallelSearchInputSchema,
|
|
1219
1579
|
outputSchema: parallelSearchOutputSchema
|
|
@@ -1221,82 +1581,86 @@ var parallelSearchToolFactory = (0, import_provider_utils9.createProviderToolFac
|
|
|
1221
1581
|
var parallelSearch = (config = {}) => parallelSearchToolFactory(config);
|
|
1222
1582
|
|
|
1223
1583
|
// src/tool/perplexity-search.ts
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1584
|
+
import {
|
|
1585
|
+
createProviderToolFactoryWithOutputSchema as createProviderToolFactoryWithOutputSchema2,
|
|
1586
|
+
lazySchema as lazySchema10,
|
|
1587
|
+
zodSchema as zodSchema10
|
|
1588
|
+
} from "@ai-sdk/provider-utils";
|
|
1589
|
+
import { z as z13 } from "zod";
|
|
1590
|
+
var perplexitySearchInputSchema = lazySchema10(
|
|
1591
|
+
() => zodSchema10(
|
|
1592
|
+
z13.object({
|
|
1593
|
+
query: z13.union([z13.string(), z13.array(z13.string())]).describe(
|
|
1230
1594
|
"Search query (string) or multiple queries (array of up to 5 strings). Multi-query searches return combined results from all queries."
|
|
1231
1595
|
),
|
|
1232
|
-
max_results:
|
|
1596
|
+
max_results: z13.number().optional().describe(
|
|
1233
1597
|
"Maximum number of search results to return (1-20, default: 10)"
|
|
1234
1598
|
),
|
|
1235
|
-
max_tokens_per_page:
|
|
1599
|
+
max_tokens_per_page: z13.number().optional().describe(
|
|
1236
1600
|
"Maximum number of tokens to extract per search result page (256-2048, default: 2048)"
|
|
1237
1601
|
),
|
|
1238
|
-
max_tokens:
|
|
1602
|
+
max_tokens: z13.number().optional().describe(
|
|
1239
1603
|
"Maximum total tokens across all search results (default: 25000, max: 1000000)"
|
|
1240
1604
|
),
|
|
1241
|
-
country:
|
|
1605
|
+
country: z13.string().optional().describe(
|
|
1242
1606
|
"Two-letter ISO 3166-1 alpha-2 country code for regional search results (e.g., 'US', 'GB', 'FR')"
|
|
1243
1607
|
),
|
|
1244
|
-
search_domain_filter:
|
|
1608
|
+
search_domain_filter: z13.array(z13.string()).optional().describe(
|
|
1245
1609
|
"List of domains to include or exclude from search results (max 20). To include: ['nature.com', 'science.org']. To exclude: ['-example.com', '-spam.net']"
|
|
1246
1610
|
),
|
|
1247
|
-
search_language_filter:
|
|
1611
|
+
search_language_filter: z13.array(z13.string()).optional().describe(
|
|
1248
1612
|
"List of ISO 639-1 language codes to filter results (max 10, lowercase). Examples: ['en', 'fr', 'de']"
|
|
1249
1613
|
),
|
|
1250
|
-
search_after_date:
|
|
1614
|
+
search_after_date: z13.string().optional().describe(
|
|
1251
1615
|
"Include only results published after this date. Format: 'MM/DD/YYYY' (e.g., '3/1/2025'). Cannot be used with search_recency_filter."
|
|
1252
1616
|
),
|
|
1253
|
-
search_before_date:
|
|
1617
|
+
search_before_date: z13.string().optional().describe(
|
|
1254
1618
|
"Include only results published before this date. Format: 'MM/DD/YYYY' (e.g., '3/15/2025'). Cannot be used with search_recency_filter."
|
|
1255
1619
|
),
|
|
1256
|
-
last_updated_after_filter:
|
|
1620
|
+
last_updated_after_filter: z13.string().optional().describe(
|
|
1257
1621
|
"Include only results last updated after this date. Format: 'MM/DD/YYYY' (e.g., '3/1/2025'). Cannot be used with search_recency_filter."
|
|
1258
1622
|
),
|
|
1259
|
-
last_updated_before_filter:
|
|
1623
|
+
last_updated_before_filter: z13.string().optional().describe(
|
|
1260
1624
|
"Include only results last updated before this date. Format: 'MM/DD/YYYY' (e.g., '3/15/2025'). Cannot be used with search_recency_filter."
|
|
1261
1625
|
),
|
|
1262
|
-
search_recency_filter:
|
|
1626
|
+
search_recency_filter: z13.enum(["day", "week", "month", "year"]).optional().describe(
|
|
1263
1627
|
"Filter results by relative time period. Cannot be used with search_after_date or search_before_date."
|
|
1264
1628
|
)
|
|
1265
1629
|
})
|
|
1266
1630
|
)
|
|
1267
1631
|
);
|
|
1268
|
-
var perplexitySearchOutputSchema = (
|
|
1269
|
-
() => (
|
|
1270
|
-
|
|
1632
|
+
var perplexitySearchOutputSchema = lazySchema10(
|
|
1633
|
+
() => zodSchema10(
|
|
1634
|
+
z13.union([
|
|
1271
1635
|
// Success response
|
|
1272
|
-
|
|
1273
|
-
results:
|
|
1274
|
-
|
|
1275
|
-
title:
|
|
1276
|
-
url:
|
|
1277
|
-
snippet:
|
|
1278
|
-
date:
|
|
1279
|
-
lastUpdated:
|
|
1636
|
+
z13.object({
|
|
1637
|
+
results: z13.array(
|
|
1638
|
+
z13.object({
|
|
1639
|
+
title: z13.string(),
|
|
1640
|
+
url: z13.string(),
|
|
1641
|
+
snippet: z13.string(),
|
|
1642
|
+
date: z13.string().optional(),
|
|
1643
|
+
lastUpdated: z13.string().optional()
|
|
1280
1644
|
})
|
|
1281
1645
|
),
|
|
1282
|
-
id:
|
|
1646
|
+
id: z13.string()
|
|
1283
1647
|
}),
|
|
1284
1648
|
// Error response
|
|
1285
|
-
|
|
1286
|
-
error:
|
|
1649
|
+
z13.object({
|
|
1650
|
+
error: z13.enum([
|
|
1287
1651
|
"api_error",
|
|
1288
1652
|
"rate_limit",
|
|
1289
1653
|
"timeout",
|
|
1290
1654
|
"invalid_input",
|
|
1291
1655
|
"unknown"
|
|
1292
1656
|
]),
|
|
1293
|
-
statusCode:
|
|
1294
|
-
message:
|
|
1657
|
+
statusCode: z13.number().optional(),
|
|
1658
|
+
message: z13.string()
|
|
1295
1659
|
})
|
|
1296
1660
|
])
|
|
1297
1661
|
)
|
|
1298
1662
|
);
|
|
1299
|
-
var perplexitySearchToolFactory = (
|
|
1663
|
+
var perplexitySearchToolFactory = createProviderToolFactoryWithOutputSchema2({
|
|
1300
1664
|
id: "gateway.perplexity_search",
|
|
1301
1665
|
inputSchema: perplexitySearchInputSchema,
|
|
1302
1666
|
outputSchema: perplexitySearchOutputSchema
|
|
@@ -1325,18 +1689,18 @@ var gatewayTools = {
|
|
|
1325
1689
|
};
|
|
1326
1690
|
|
|
1327
1691
|
// src/vercel-environment.ts
|
|
1328
|
-
|
|
1329
|
-
|
|
1692
|
+
import { getContext } from "@vercel/oidc";
|
|
1693
|
+
import { getVercelOidcToken } from "@vercel/oidc";
|
|
1330
1694
|
async function getVercelRequestId() {
|
|
1331
1695
|
var _a9;
|
|
1332
|
-
return (_a9 =
|
|
1696
|
+
return (_a9 = getContext().headers) == null ? void 0 : _a9["x-vercel-id"];
|
|
1333
1697
|
}
|
|
1334
1698
|
|
|
1335
1699
|
// src/gateway-provider.ts
|
|
1336
|
-
|
|
1700
|
+
import { withUserAgentSuffix } from "@ai-sdk/provider-utils";
|
|
1337
1701
|
|
|
1338
1702
|
// src/version.ts
|
|
1339
|
-
var VERSION = true ? "4.0.0-beta.
|
|
1703
|
+
var VERSION = true ? "4.0.0-beta.50" : "0.0.0-test";
|
|
1340
1704
|
|
|
1341
1705
|
// src/gateway-provider.ts
|
|
1342
1706
|
var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";
|
|
@@ -1346,11 +1710,11 @@ function createGatewayProvider(options = {}) {
|
|
|
1346
1710
|
let metadataCache = null;
|
|
1347
1711
|
const cacheRefreshMillis = (_a9 = options.metadataCacheRefreshMillis) != null ? _a9 : 1e3 * 60 * 5;
|
|
1348
1712
|
let lastFetchTime = 0;
|
|
1349
|
-
const baseURL = (_b9 =
|
|
1713
|
+
const baseURL = (_b9 = withoutTrailingSlash(options.baseURL)) != null ? _b9 : "https://ai-gateway.vercel.sh/v3/ai";
|
|
1350
1714
|
const getHeaders = async () => {
|
|
1351
1715
|
try {
|
|
1352
1716
|
const auth = await getGatewayAuthToken(options);
|
|
1353
|
-
return
|
|
1717
|
+
return withUserAgentSuffix(
|
|
1354
1718
|
{
|
|
1355
1719
|
Authorization: `Bearer ${auth.token}`,
|
|
1356
1720
|
"ai-gateway-protocol-version": AI_GATEWAY_PROTOCOL_VERSION,
|
|
@@ -1369,19 +1733,19 @@ function createGatewayProvider(options = {}) {
|
|
|
1369
1733
|
}
|
|
1370
1734
|
};
|
|
1371
1735
|
const createO11yHeaders = () => {
|
|
1372
|
-
const deploymentId =
|
|
1736
|
+
const deploymentId = loadOptionalSetting({
|
|
1373
1737
|
settingValue: void 0,
|
|
1374
1738
|
environmentVariableName: "VERCEL_DEPLOYMENT_ID"
|
|
1375
1739
|
});
|
|
1376
|
-
const environment =
|
|
1740
|
+
const environment = loadOptionalSetting({
|
|
1377
1741
|
settingValue: void 0,
|
|
1378
1742
|
environmentVariableName: "VERCEL_ENV"
|
|
1379
1743
|
});
|
|
1380
|
-
const region =
|
|
1744
|
+
const region = loadOptionalSetting({
|
|
1381
1745
|
settingValue: void 0,
|
|
1382
1746
|
environmentVariableName: "VERCEL_REGION"
|
|
1383
1747
|
});
|
|
1384
|
-
const projectId =
|
|
1748
|
+
const projectId = loadOptionalSetting({
|
|
1385
1749
|
settingValue: void 0,
|
|
1386
1750
|
environmentVariableName: "VERCEL_PROJECT_ID"
|
|
1387
1751
|
});
|
|
@@ -1438,6 +1802,30 @@ function createGatewayProvider(options = {}) {
|
|
|
1438
1802
|
);
|
|
1439
1803
|
});
|
|
1440
1804
|
};
|
|
1805
|
+
const getSpendReport = async (params) => {
|
|
1806
|
+
return new GatewaySpendReport({
|
|
1807
|
+
baseURL,
|
|
1808
|
+
headers: getHeaders,
|
|
1809
|
+
fetch: options.fetch
|
|
1810
|
+
}).getSpendReport(params).catch(async (error) => {
|
|
1811
|
+
throw await asGatewayError(
|
|
1812
|
+
error,
|
|
1813
|
+
await parseAuthMethod(await getHeaders())
|
|
1814
|
+
);
|
|
1815
|
+
});
|
|
1816
|
+
};
|
|
1817
|
+
const getGenerationInfo = async (params) => {
|
|
1818
|
+
return new GatewayGenerationInfoFetcher({
|
|
1819
|
+
baseURL,
|
|
1820
|
+
headers: getHeaders,
|
|
1821
|
+
fetch: options.fetch
|
|
1822
|
+
}).getGenerationInfo(params).catch(async (error) => {
|
|
1823
|
+
throw await asGatewayError(
|
|
1824
|
+
error,
|
|
1825
|
+
await parseAuthMethod(await getHeaders())
|
|
1826
|
+
);
|
|
1827
|
+
});
|
|
1828
|
+
};
|
|
1441
1829
|
const provider = function(modelId) {
|
|
1442
1830
|
if (new.target) {
|
|
1443
1831
|
throw new Error(
|
|
@@ -1446,9 +1834,11 @@ function createGatewayProvider(options = {}) {
|
|
|
1446
1834
|
}
|
|
1447
1835
|
return createLanguageModel(modelId);
|
|
1448
1836
|
};
|
|
1449
|
-
provider.specificationVersion = "
|
|
1837
|
+
provider.specificationVersion = "v4";
|
|
1450
1838
|
provider.getAvailableModels = getAvailableModels;
|
|
1451
1839
|
provider.getCredits = getCredits;
|
|
1840
|
+
provider.getSpendReport = getSpendReport;
|
|
1841
|
+
provider.getGenerationInfo = getGenerationInfo;
|
|
1452
1842
|
provider.imageModel = (modelId) => {
|
|
1453
1843
|
return new GatewayImageModel(modelId, {
|
|
1454
1844
|
provider: "gateway",
|
|
@@ -1479,6 +1869,17 @@ function createGatewayProvider(options = {}) {
|
|
|
1479
1869
|
o11yHeaders: createO11yHeaders()
|
|
1480
1870
|
});
|
|
1481
1871
|
};
|
|
1872
|
+
const createRerankingModel = (modelId) => {
|
|
1873
|
+
return new GatewayRerankingModel(modelId, {
|
|
1874
|
+
provider: "gateway",
|
|
1875
|
+
baseURL,
|
|
1876
|
+
headers: getHeaders,
|
|
1877
|
+
fetch: options.fetch,
|
|
1878
|
+
o11yHeaders: createO11yHeaders()
|
|
1879
|
+
});
|
|
1880
|
+
};
|
|
1881
|
+
provider.rerankingModel = createRerankingModel;
|
|
1882
|
+
provider.reranking = createRerankingModel;
|
|
1482
1883
|
provider.chat = provider.languageModel;
|
|
1483
1884
|
provider.embedding = provider.embeddingModel;
|
|
1484
1885
|
provider.image = provider.imageModel;
|
|
@@ -1488,7 +1889,7 @@ function createGatewayProvider(options = {}) {
|
|
|
1488
1889
|
}
|
|
1489
1890
|
var gateway = createGatewayProvider();
|
|
1490
1891
|
async function getGatewayAuthToken(options) {
|
|
1491
|
-
const apiKey =
|
|
1892
|
+
const apiKey = loadOptionalSetting({
|
|
1492
1893
|
settingValue: options.apiKey,
|
|
1493
1894
|
environmentVariableName: "AI_GATEWAY_API_KEY"
|
|
1494
1895
|
});
|
|
@@ -1498,14 +1899,13 @@ async function getGatewayAuthToken(options) {
|
|
|
1498
1899
|
authMethod: "api-key"
|
|
1499
1900
|
};
|
|
1500
1901
|
}
|
|
1501
|
-
const oidcToken = await
|
|
1902
|
+
const oidcToken = await getVercelOidcToken();
|
|
1502
1903
|
return {
|
|
1503
1904
|
token: oidcToken,
|
|
1504
1905
|
authMethod: "oidc"
|
|
1505
1906
|
};
|
|
1506
1907
|
}
|
|
1507
|
-
|
|
1508
|
-
0 && (module.exports = {
|
|
1908
|
+
export {
|
|
1509
1909
|
GatewayAuthenticationError,
|
|
1510
1910
|
GatewayError,
|
|
1511
1911
|
GatewayInternalServerError,
|
|
@@ -1513,8 +1913,8 @@ async function getGatewayAuthToken(options) {
|
|
|
1513
1913
|
GatewayModelNotFoundError,
|
|
1514
1914
|
GatewayRateLimitError,
|
|
1515
1915
|
GatewayResponseError,
|
|
1516
|
-
createGateway,
|
|
1916
|
+
createGatewayProvider as createGateway,
|
|
1517
1917
|
createGatewayProvider,
|
|
1518
1918
|
gateway
|
|
1519
|
-
}
|
|
1919
|
+
};
|
|
1520
1920
|
//# sourceMappingURL=index.js.map
|