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