@ai-sdk/gateway 0.0.0-70e0935a-20260114150030 → 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.
Files changed (47) hide show
  1. package/CHANGELOG.md +49 -4
  2. package/dist/index.d.mts +20 -10
  3. package/dist/index.d.ts +20 -10
  4. package/dist/index.js +62 -25
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +62 -25
  7. package/dist/index.mjs.map +1 -1
  8. package/docs/00-ai-gateway.mdx +625 -0
  9. package/package.json +12 -5
  10. package/src/errors/as-gateway-error.ts +33 -0
  11. package/src/errors/create-gateway-error.test.ts +590 -0
  12. package/src/errors/create-gateway-error.ts +132 -0
  13. package/src/errors/extract-api-call-response.test.ts +270 -0
  14. package/src/errors/extract-api-call-response.ts +15 -0
  15. package/src/errors/gateway-authentication-error.ts +84 -0
  16. package/src/errors/gateway-error-types.test.ts +278 -0
  17. package/src/errors/gateway-error.ts +47 -0
  18. package/src/errors/gateway-internal-server-error.ts +33 -0
  19. package/src/errors/gateway-invalid-request-error.ts +33 -0
  20. package/src/errors/gateway-model-not-found-error.ts +47 -0
  21. package/src/errors/gateway-rate-limit-error.ts +33 -0
  22. package/src/errors/gateway-response-error.ts +42 -0
  23. package/src/errors/index.ts +16 -0
  24. package/src/errors/parse-auth-method.test.ts +136 -0
  25. package/src/errors/parse-auth-method.ts +23 -0
  26. package/src/gateway-config.ts +7 -0
  27. package/src/gateway-embedding-model-settings.ts +22 -0
  28. package/src/gateway-embedding-model.test.ts +213 -0
  29. package/src/gateway-embedding-model.ts +109 -0
  30. package/src/gateway-fetch-metadata.test.ts +774 -0
  31. package/src/gateway-fetch-metadata.ts +127 -0
  32. package/src/gateway-image-model-settings.ts +12 -0
  33. package/src/gateway-image-model.test.ts +823 -0
  34. package/src/gateway-image-model.ts +145 -0
  35. package/src/gateway-language-model-settings.ts +159 -0
  36. package/src/gateway-language-model.test.ts +1485 -0
  37. package/src/gateway-language-model.ts +212 -0
  38. package/src/gateway-model-entry.ts +58 -0
  39. package/src/gateway-provider-options.ts +66 -0
  40. package/src/gateway-provider.test.ts +1210 -0
  41. package/src/gateway-provider.ts +284 -0
  42. package/src/gateway-tools.ts +15 -0
  43. package/src/index.ts +27 -0
  44. package/src/tool/perplexity-search.ts +294 -0
  45. package/src/vercel-environment.test.ts +65 -0
  46. package/src/vercel-environment.ts +6 -0
  47. 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 & {});