@ai-sdk/gateway 0.0.0-64aae7dd-20260114144918 → 0.0.0-98261322-20260122142521
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 +49 -4
- package/dist/index.d.mts +20 -10
- package/dist/index.d.ts +20 -10
- package/dist/index.js +62 -25
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +62 -25
- package/dist/index.mjs.map +1 -1
- package/docs/00-ai-gateway.mdx +625 -0
- package/package.json +12 -5
- package/src/errors/as-gateway-error.ts +33 -0
- package/src/errors/create-gateway-error.test.ts +590 -0
- package/src/errors/create-gateway-error.ts +132 -0
- package/src/errors/extract-api-call-response.test.ts +270 -0
- package/src/errors/extract-api-call-response.ts +15 -0
- package/src/errors/gateway-authentication-error.ts +84 -0
- package/src/errors/gateway-error-types.test.ts +278 -0
- package/src/errors/gateway-error.ts +47 -0
- package/src/errors/gateway-internal-server-error.ts +33 -0
- package/src/errors/gateway-invalid-request-error.ts +33 -0
- package/src/errors/gateway-model-not-found-error.ts +47 -0
- package/src/errors/gateway-rate-limit-error.ts +33 -0
- package/src/errors/gateway-response-error.ts +42 -0
- package/src/errors/index.ts +16 -0
- package/src/errors/parse-auth-method.test.ts +136 -0
- package/src/errors/parse-auth-method.ts +23 -0
- package/src/gateway-config.ts +7 -0
- package/src/gateway-embedding-model-settings.ts +22 -0
- package/src/gateway-embedding-model.test.ts +213 -0
- package/src/gateway-embedding-model.ts +109 -0
- package/src/gateway-fetch-metadata.test.ts +774 -0
- package/src/gateway-fetch-metadata.ts +127 -0
- package/src/gateway-image-model-settings.ts +12 -0
- package/src/gateway-image-model.test.ts +823 -0
- package/src/gateway-image-model.ts +145 -0
- package/src/gateway-language-model-settings.ts +159 -0
- package/src/gateway-language-model.test.ts +1485 -0
- package/src/gateway-language-model.ts +212 -0
- package/src/gateway-model-entry.ts +58 -0
- package/src/gateway-provider-options.ts +66 -0
- package/src/gateway-provider.test.ts +1210 -0
- package/src/gateway-provider.ts +284 -0
- package/src/gateway-tools.ts +15 -0
- package/src/index.ts +27 -0
- package/src/tool/perplexity-search.ts +294 -0
- package/src/vercel-environment.test.ts +65 -0
- package/src/vercel-environment.ts +6 -0
- package/src/version.ts +6 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createJsonErrorResponseHandler,
|
|
3
|
+
createJsonResponseHandler,
|
|
4
|
+
getFromApi,
|
|
5
|
+
lazySchema,
|
|
6
|
+
resolve,
|
|
7
|
+
zodSchema,
|
|
8
|
+
} from '@ai-sdk/provider-utils';
|
|
9
|
+
import { z } from 'zod/v4';
|
|
10
|
+
import { asGatewayError } from './errors';
|
|
11
|
+
import type { GatewayConfig } from './gateway-config';
|
|
12
|
+
import type { GatewayLanguageModelEntry } from './gateway-model-entry';
|
|
13
|
+
|
|
14
|
+
type GatewayFetchMetadataConfig = GatewayConfig;
|
|
15
|
+
|
|
16
|
+
export interface GatewayFetchMetadataResponse {
|
|
17
|
+
models: GatewayLanguageModelEntry[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface GatewayCreditsResponse {
|
|
21
|
+
/** The remaining gateway credit balance available for API usage */
|
|
22
|
+
balance: string;
|
|
23
|
+
/** The total amount of gateway credits that have been consumed */
|
|
24
|
+
totalUsed: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export class GatewayFetchMetadata {
|
|
28
|
+
constructor(private readonly config: GatewayFetchMetadataConfig) {}
|
|
29
|
+
|
|
30
|
+
async getAvailableModels(): Promise<GatewayFetchMetadataResponse> {
|
|
31
|
+
try {
|
|
32
|
+
const { value } = await getFromApi({
|
|
33
|
+
url: `${this.config.baseURL}/config`,
|
|
34
|
+
headers: await resolve(this.config.headers()),
|
|
35
|
+
successfulResponseHandler: createJsonResponseHandler(
|
|
36
|
+
gatewayAvailableModelsResponseSchema,
|
|
37
|
+
),
|
|
38
|
+
failedResponseHandler: createJsonErrorResponseHandler({
|
|
39
|
+
errorSchema: z.any(),
|
|
40
|
+
errorToMessage: data => data,
|
|
41
|
+
}),
|
|
42
|
+
fetch: this.config.fetch,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
return value;
|
|
46
|
+
} catch (error) {
|
|
47
|
+
throw await asGatewayError(error);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async getCredits(): Promise<GatewayCreditsResponse> {
|
|
52
|
+
try {
|
|
53
|
+
const baseUrl = new URL(this.config.baseURL);
|
|
54
|
+
|
|
55
|
+
const { value } = await getFromApi({
|
|
56
|
+
url: `${baseUrl.origin}/v1/credits`,
|
|
57
|
+
headers: await resolve(this.config.headers()),
|
|
58
|
+
successfulResponseHandler: createJsonResponseHandler(
|
|
59
|
+
gatewayCreditsResponseSchema,
|
|
60
|
+
),
|
|
61
|
+
failedResponseHandler: createJsonErrorResponseHandler({
|
|
62
|
+
errorSchema: z.any(),
|
|
63
|
+
errorToMessage: data => data,
|
|
64
|
+
}),
|
|
65
|
+
fetch: this.config.fetch,
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
return value;
|
|
69
|
+
} catch (error) {
|
|
70
|
+
throw await asGatewayError(error);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const gatewayAvailableModelsResponseSchema = lazySchema(() =>
|
|
76
|
+
zodSchema(
|
|
77
|
+
z.object({
|
|
78
|
+
models: z.array(
|
|
79
|
+
z.object({
|
|
80
|
+
id: z.string(),
|
|
81
|
+
name: z.string(),
|
|
82
|
+
description: z.string().nullish(),
|
|
83
|
+
pricing: z
|
|
84
|
+
.object({
|
|
85
|
+
input: z.string(),
|
|
86
|
+
output: z.string(),
|
|
87
|
+
input_cache_read: z.string().nullish(),
|
|
88
|
+
input_cache_write: z.string().nullish(),
|
|
89
|
+
})
|
|
90
|
+
.transform(
|
|
91
|
+
({ input, output, input_cache_read, input_cache_write }) => ({
|
|
92
|
+
input,
|
|
93
|
+
output,
|
|
94
|
+
...(input_cache_read
|
|
95
|
+
? { cachedInputTokens: input_cache_read }
|
|
96
|
+
: {}),
|
|
97
|
+
...(input_cache_write
|
|
98
|
+
? { cacheCreationInputTokens: input_cache_write }
|
|
99
|
+
: {}),
|
|
100
|
+
}),
|
|
101
|
+
)
|
|
102
|
+
.nullish(),
|
|
103
|
+
specification: z.object({
|
|
104
|
+
specificationVersion: z.literal('v3'),
|
|
105
|
+
provider: z.string(),
|
|
106
|
+
modelId: z.string(),
|
|
107
|
+
}),
|
|
108
|
+
modelType: z.enum(['language', 'embedding', 'image']).nullish(),
|
|
109
|
+
}),
|
|
110
|
+
),
|
|
111
|
+
}),
|
|
112
|
+
),
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
const gatewayCreditsResponseSchema = lazySchema(() =>
|
|
116
|
+
zodSchema(
|
|
117
|
+
z
|
|
118
|
+
.object({
|
|
119
|
+
balance: z.string(),
|
|
120
|
+
total_used: z.string(),
|
|
121
|
+
})
|
|
122
|
+
.transform(({ balance, total_used }) => ({
|
|
123
|
+
balance,
|
|
124
|
+
totalUsed: total_used,
|
|
125
|
+
})),
|
|
126
|
+
),
|
|
127
|
+
);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type GatewayImageModelId =
|
|
2
|
+
| 'bfl/flux-kontext-max'
|
|
3
|
+
| 'bfl/flux-kontext-pro'
|
|
4
|
+
| 'bfl/flux-pro-1.0-fill'
|
|
5
|
+
| 'bfl/flux-pro-1.1'
|
|
6
|
+
| 'bfl/flux-pro-1.1-ultra'
|
|
7
|
+
| 'google/imagen-4.0-fast-generate-001'
|
|
8
|
+
| 'google/imagen-4.0-generate-001'
|
|
9
|
+
| 'google/imagen-4.0-ultra-generate-001'
|
|
10
|
+
| 'recraft/recraft-v2'
|
|
11
|
+
| 'recraft/recraft-v3'
|
|
12
|
+
| (string & {});
|