@ai-sdk/gateway 2.0.22 → 3.0.0
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 +689 -98
- package/dist/index.d.mts +18 -13
- package/dist/index.d.ts +18 -13
- package/dist/index.js +19 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -20
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -5
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/gateway-provider.ts","../src/errors/as-gateway-error.ts","../src/errors/create-gateway-error.ts","../src/errors/gateway-error.ts","../src/errors/gateway-authentication-error.ts","../src/errors/gateway-invalid-request-error.ts","../src/errors/gateway-rate-limit-error.ts","../src/errors/gateway-model-not-found-error.ts","../src/errors/gateway-internal-server-error.ts","../src/errors/gateway-response-error.ts","../src/errors/extract-api-call-response.ts","../src/errors/parse-auth-method.ts","../src/gateway-fetch-metadata.ts","../src/gateway-language-model.ts","../src/gateway-embedding-model.ts","../src/gateway-image-model.ts","../src/vercel-environment.ts","../src/version.ts"],"sourcesContent":["export type { GatewayModelId } from './gateway-language-model-settings';\nexport type {\n GatewayLanguageModelEntry,\n GatewayLanguageModelSpecification,\n} from './gateway-model-entry';\nexport type { GatewayCreditsResponse } from './gateway-fetch-metadata';\nexport type { GatewayLanguageModelEntry as GatewayModelEntry } from './gateway-model-entry';\nexport {\n createGatewayProvider,\n createGatewayProvider as createGateway,\n gateway,\n} from './gateway-provider';\nexport type {\n GatewayProvider,\n GatewayProviderSettings,\n} from './gateway-provider';\nexport type { GatewayProviderOptions } from './gateway-provider-options';\nexport {\n GatewayError,\n GatewayAuthenticationError,\n GatewayInvalidRequestError,\n GatewayRateLimitError,\n GatewayModelNotFoundError,\n GatewayInternalServerError,\n GatewayResponseError,\n} from './errors';\nexport type { GatewayErrorResponse } from './errors';\n","import {\n loadOptionalSetting,\n withoutTrailingSlash,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { asGatewayError, GatewayAuthenticationError } from './errors';\nimport {\n GATEWAY_AUTH_METHOD_HEADER,\n parseAuthMethod,\n} from './errors/parse-auth-method';\nimport {\n GatewayFetchMetadata,\n type GatewayFetchMetadataResponse,\n type GatewayCreditsResponse,\n} from './gateway-fetch-metadata';\nimport { GatewayLanguageModel } from './gateway-language-model';\nimport { GatewayEmbeddingModel } from './gateway-embedding-model';\nimport { GatewayImageModel } from './gateway-image-model';\nimport type { GatewayEmbeddingModelId } from './gateway-embedding-model-settings';\nimport type { GatewayImageModelId } from './gateway-image-model-settings';\nimport { getVercelOidcToken, getVercelRequestId } from './vercel-environment';\nimport type { GatewayModelId } from './gateway-language-model-settings';\nimport type {\n LanguageModelV2,\n EmbeddingModelV2,\n ImageModelV2,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport { withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { VERSION } from './version';\n\nexport interface GatewayProvider extends ProviderV2 {\n (modelId: GatewayModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: GatewayModelId): LanguageModelV2;\n\n /**\nReturns available providers and models for use with the remote provider.\n */\n getAvailableModels(): Promise<GatewayFetchMetadataResponse>;\n\n /**\nReturns credit information for the authenticated user.\n */\n getCredits(): Promise<GatewayCreditsResponse>;\n\n /**\nCreates a model for generating text embeddings.\n*/\n textEmbeddingModel(\n modelId: GatewayEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n\n /**\nCreates a model for generating images.\n*/\n imageModel(modelId: GatewayImageModelId): ImageModelV2;\n}\n\nexport interface GatewayProviderSettings {\n /**\nThe base URL prefix for API calls. Defaults to `https://ai-gateway.vercel.sh/v1/ai`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being sent using the `Authorization` header.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\nHow frequently to refresh the metadata cache in milliseconds.\n */\n metadataCacheRefreshMillis?: number;\n\n /**\n * @internal For testing purposes only\n */\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nconst AI_GATEWAY_PROTOCOL_VERSION = '0.0.1';\n\n/**\nCreate a remote provider instance.\n */\nexport function createGatewayProvider(\n options: GatewayProviderSettings = {},\n): GatewayProvider {\n let pendingMetadata: Promise<GatewayFetchMetadataResponse> | null = null;\n let metadataCache: GatewayFetchMetadataResponse | null = null;\n const cacheRefreshMillis =\n options.metadataCacheRefreshMillis ?? 1000 * 60 * 5;\n let lastFetchTime = 0;\n\n const baseURL =\n withoutTrailingSlash(options.baseURL) ??\n 'https://ai-gateway.vercel.sh/v1/ai';\n\n const getHeaders = async () => {\n const auth = await getGatewayAuthToken(options);\n if (auth) {\n return withUserAgentSuffix(\n {\n Authorization: `Bearer ${auth.token}`,\n 'ai-gateway-protocol-version': AI_GATEWAY_PROTOCOL_VERSION,\n [GATEWAY_AUTH_METHOD_HEADER]: auth.authMethod,\n ...options.headers,\n },\n `ai-sdk/gateway/${VERSION}`,\n );\n }\n\n throw GatewayAuthenticationError.createContextualError({\n apiKeyProvided: false,\n oidcTokenProvided: false,\n statusCode: 401,\n });\n };\n\n const createO11yHeaders = () => {\n const deploymentId = loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'VERCEL_DEPLOYMENT_ID',\n });\n const environment = loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'VERCEL_ENV',\n });\n const region = loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'VERCEL_REGION',\n });\n\n return async () => {\n const requestId = await getVercelRequestId();\n return {\n ...(deploymentId && { 'ai-o11y-deployment-id': deploymentId }),\n ...(environment && { 'ai-o11y-environment': environment }),\n ...(region && { 'ai-o11y-region': region }),\n ...(requestId && { 'ai-o11y-request-id': requestId }),\n };\n };\n };\n\n const createLanguageModel = (modelId: GatewayModelId) => {\n return new GatewayLanguageModel(modelId, {\n provider: 'gateway',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders(),\n });\n };\n\n const getAvailableModels = async () => {\n const now = options._internal?.currentDate?.().getTime() ?? Date.now();\n if (!pendingMetadata || now - lastFetchTime > cacheRefreshMillis) {\n lastFetchTime = now;\n\n pendingMetadata = new GatewayFetchMetadata({\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n })\n .getAvailableModels()\n .then(metadata => {\n metadataCache = metadata;\n return metadata;\n })\n .catch(async (error: unknown) => {\n throw await asGatewayError(\n error,\n await parseAuthMethod(await getHeaders()),\n );\n });\n }\n\n return metadataCache ? Promise.resolve(metadataCache) : pendingMetadata;\n };\n\n const getCredits = async () => {\n return new GatewayFetchMetadata({\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n })\n .getCredits()\n .catch(async (error: unknown) => {\n throw await asGatewayError(\n error,\n await parseAuthMethod(await getHeaders()),\n );\n });\n };\n\n const provider = function (modelId: GatewayModelId) {\n if (new.target) {\n throw new Error(\n 'The Gateway Provider model function cannot be called with the new keyword.',\n );\n }\n\n return createLanguageModel(modelId);\n };\n\n provider.getAvailableModels = getAvailableModels;\n provider.getCredits = getCredits;\n provider.imageModel = (modelId: GatewayImageModelId) => {\n return new GatewayImageModel(modelId, {\n provider: 'gateway',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders(),\n });\n };\n provider.languageModel = createLanguageModel;\n provider.textEmbeddingModel = (modelId: GatewayEmbeddingModelId) => {\n return new GatewayEmbeddingModel(modelId, {\n provider: 'gateway',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders(),\n });\n };\n\n return provider;\n}\n\nexport const gateway = createGatewayProvider();\n\nexport async function getGatewayAuthToken(\n options: GatewayProviderSettings,\n): Promise<{\n token: string;\n authMethod: 'api-key' | 'oidc';\n} | null> {\n const apiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'AI_GATEWAY_API_KEY',\n });\n\n if (apiKey) {\n return {\n token: apiKey,\n authMethod: 'api-key',\n };\n }\n\n try {\n const oidcToken = await getVercelOidcToken();\n return {\n token: oidcToken,\n authMethod: 'oidc',\n };\n } catch {\n return null;\n }\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractApiCallResponse, GatewayError } from '.';\nimport { createGatewayErrorFromResponse } from './create-gateway-error';\n\nexport function asGatewayError(\n error: unknown,\n authMethod?: 'api-key' | 'oidc',\n) {\n if (GatewayError.isInstance(error)) {\n return error;\n }\n\n if (APICallError.isInstance(error)) {\n return createGatewayErrorFromResponse({\n response: extractApiCallResponse(error),\n statusCode: error.statusCode ?? 500,\n defaultMessage: 'Gateway request failed',\n cause: error,\n authMethod,\n });\n }\n\n return createGatewayErrorFromResponse({\n response: {},\n statusCode: 500,\n defaultMessage:\n error instanceof Error\n ? `Gateway request failed: ${error.message}`\n : 'Unknown Gateway error',\n cause: error,\n authMethod,\n });\n}\n","import { z } from 'zod/v4';\nimport type { GatewayError } from './gateway-error';\nimport { GatewayAuthenticationError } from './gateway-authentication-error';\nimport { GatewayInvalidRequestError } from './gateway-invalid-request-error';\nimport { GatewayRateLimitError } from './gateway-rate-limit-error';\nimport {\n GatewayModelNotFoundError,\n modelNotFoundParamSchema,\n} from './gateway-model-not-found-error';\nimport { GatewayInternalServerError } from './gateway-internal-server-error';\nimport { GatewayResponseError } from './gateway-response-error';\nimport {\n InferValidator,\n lazyValidator,\n safeValidateTypes,\n validateTypes,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\nexport async function createGatewayErrorFromResponse({\n response,\n statusCode,\n defaultMessage = 'Gateway request failed',\n cause,\n authMethod,\n}: {\n response: unknown;\n statusCode: number;\n defaultMessage?: string;\n cause?: unknown;\n authMethod?: 'api-key' | 'oidc';\n}): Promise<GatewayError> {\n const parseResult = await safeValidateTypes({\n value: response,\n schema: gatewayErrorResponseSchema,\n });\n\n if (!parseResult.success) {\n return new GatewayResponseError({\n message: `Invalid error response format: ${defaultMessage}`,\n statusCode,\n response,\n validationError: parseResult.error,\n cause,\n });\n }\n\n const validatedResponse: GatewayErrorResponse = parseResult.value;\n const errorType = validatedResponse.error.type;\n const message = validatedResponse.error.message;\n\n switch (errorType) {\n case 'authentication_error':\n return GatewayAuthenticationError.createContextualError({\n apiKeyProvided: authMethod === 'api-key',\n oidcTokenProvided: authMethod === 'oidc',\n statusCode,\n cause,\n });\n case 'invalid_request_error':\n return new GatewayInvalidRequestError({ message, statusCode, cause });\n case 'rate_limit_exceeded':\n return new GatewayRateLimitError({ message, statusCode, cause });\n case 'model_not_found': {\n const modelResult = await safeValidateTypes({\n value: validatedResponse.error.param,\n schema: modelNotFoundParamSchema,\n });\n\n return new GatewayModelNotFoundError({\n message,\n statusCode,\n modelId: modelResult.success ? modelResult.value.modelId : undefined,\n cause,\n });\n }\n case 'internal_server_error':\n return new GatewayInternalServerError({ message, statusCode, cause });\n default:\n return new GatewayInternalServerError({ message, statusCode, cause });\n }\n}\n\nconst gatewayErrorResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.unknown().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n }),\n ),\n);\n\nexport type GatewayErrorResponse = InferValidator<\n typeof gatewayErrorResponseSchema\n>;\n","const marker = 'vercel.ai.gateway.error';\nconst symbol = Symbol.for(marker);\n\nexport abstract class GatewayError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n abstract readonly name: string;\n abstract readonly type: string;\n readonly statusCode: number;\n readonly cause?: unknown;\n\n constructor({\n message,\n statusCode = 500,\n cause,\n }: {\n message: string;\n statusCode?: number;\n cause?: unknown;\n }) {\n super(message);\n this.statusCode = statusCode;\n this.cause = cause;\n }\n\n /**\n * Checks if the given error is a Gateway Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is a Gateway Error, false otherwise.\n */\n static isInstance(error: unknown): error is GatewayError {\n return GatewayError.hasMarker(error);\n }\n\n static hasMarker(error: unknown): error is GatewayError {\n return (\n typeof error === 'object' &&\n error !== null &&\n symbol in error &&\n (error as any)[symbol] === true\n );\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayAuthenticationError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Authentication failed - invalid API key or OIDC token\n */\nexport class GatewayAuthenticationError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'authentication_error';\n\n constructor({\n message = 'Authentication failed',\n statusCode = 401,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayAuthenticationError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n\n /**\n * Creates a contextual error message when authentication fails\n */\n static createContextualError({\n apiKeyProvided,\n oidcTokenProvided,\n message = 'Authentication failed',\n statusCode = 401,\n cause,\n }: {\n apiKeyProvided: boolean;\n oidcTokenProvided: boolean;\n message?: string;\n statusCode?: number;\n cause?: unknown;\n }): GatewayAuthenticationError {\n let contextualMessage: string;\n\n if (apiKeyProvided) {\n contextualMessage = `AI Gateway authentication failed: Invalid API key.\n\nCreate a new API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys\n\nProvide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable.`;\n } else if (oidcTokenProvided) {\n contextualMessage = `AI Gateway authentication failed: Invalid OIDC token.\n\nRun 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.\n\nAlternatively, use an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys`;\n } else {\n contextualMessage = `AI Gateway authentication failed: No authentication provided.\n\nOption 1 - API key:\nCreate an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys\nProvide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable.\n\nOption 2 - OIDC token:\nRun 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.`;\n }\n\n return new GatewayAuthenticationError({\n message: contextualMessage,\n statusCode,\n cause,\n });\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayInvalidRequestError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Invalid request - missing headers, malformed data, etc.\n */\nexport class GatewayInvalidRequestError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'invalid_request_error';\n\n constructor({\n message = 'Invalid request',\n statusCode = 400,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayInvalidRequestError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayRateLimitError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Rate limit exceeded.\n */\nexport class GatewayRateLimitError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'rate_limit_exceeded';\n\n constructor({\n message = 'Rate limit exceeded',\n statusCode = 429,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayRateLimitError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { z } from 'zod/v4';\nimport { GatewayError } from './gateway-error';\nimport { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\n\nconst name = 'GatewayModelNotFoundError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport const modelNotFoundParamSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n modelId: z.string(),\n }),\n ),\n);\n\n/**\n * Model not found or not available\n */\nexport class GatewayModelNotFoundError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'model_not_found';\n readonly modelId?: string;\n\n constructor({\n message = 'Model not found',\n statusCode = 404,\n modelId,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n modelId?: string;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n this.modelId = modelId;\n }\n\n static isInstance(error: unknown): error is GatewayModelNotFoundError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayInternalServerError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Internal server error from the Gateway\n */\nexport class GatewayInternalServerError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'internal_server_error';\n\n constructor({\n message = 'Internal server error',\n statusCode = 500,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayInternalServerError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { GatewayError } from './gateway-error';\n\nconst name = 'GatewayResponseError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Gateway response parsing error\n */\nexport class GatewayResponseError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'response_error';\n readonly response?: unknown;\n readonly validationError?: TypeValidationError;\n\n constructor({\n message = 'Invalid response from Gateway',\n statusCode = 502,\n response,\n validationError,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n response?: unknown;\n validationError?: TypeValidationError;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n this.response = response;\n this.validationError = validationError;\n }\n\n static isInstance(error: unknown): error is GatewayResponseError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import type { APICallError } from '@ai-sdk/provider';\n\nexport function extractApiCallResponse(error: APICallError): unknown {\n if (error.data !== undefined) {\n return error.data;\n }\n if (error.responseBody != null) {\n try {\n return JSON.parse(error.responseBody);\n } catch {\n return error.responseBody;\n }\n }\n return {};\n}\n","import { z } from 'zod/v4';\nimport {\n lazyValidator,\n safeValidateTypes,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\nexport const GATEWAY_AUTH_METHOD_HEADER = 'ai-gateway-auth-method' as const;\n\nexport async function parseAuthMethod(\n headers: Record<string, string | undefined>,\n) {\n const result = await safeValidateTypes({\n value: headers[GATEWAY_AUTH_METHOD_HEADER],\n schema: gatewayAuthMethodSchema,\n });\n\n return result.success ? result.value : undefined;\n}\n\nconst gatewayAuthMethodSchema = lazyValidator(() =>\n zodSchema(z.union([z.literal('api-key'), z.literal('oidc')])),\n);\n","import {\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n lazyValidator,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { asGatewayError } from './errors';\nimport type { GatewayConfig } from './gateway-config';\nimport type { GatewayLanguageModelEntry } from './gateway-model-entry';\n\ntype GatewayFetchMetadataConfig = GatewayConfig;\n\nexport interface GatewayFetchMetadataResponse {\n models: GatewayLanguageModelEntry[];\n}\n\nexport interface GatewayCreditsResponse {\n /** The remaining gateway credit balance available for API usage */\n balance: string;\n /** The total amount of gateway credits that have been consumed */\n totalUsed: string;\n}\n\nexport class GatewayFetchMetadata {\n constructor(private readonly config: GatewayFetchMetadataConfig) {}\n\n async getAvailableModels(): Promise<GatewayFetchMetadataResponse> {\n try {\n const { value } = await getFromApi({\n url: `${this.config.baseURL}/config`,\n headers: await resolve(this.config.headers()),\n successfulResponseHandler: createJsonResponseHandler(\n gatewayAvailableModelsResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n fetch: this.config.fetch,\n });\n\n return value;\n } catch (error) {\n throw await asGatewayError(error);\n }\n }\n\n async getCredits(): Promise<GatewayCreditsResponse> {\n try {\n const baseUrl = new URL(this.config.baseURL);\n\n const { value } = await getFromApi({\n url: `${baseUrl.origin}/v1/credits`,\n headers: await resolve(this.config.headers()),\n successfulResponseHandler: createJsonResponseHandler(\n gatewayCreditsResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n fetch: this.config.fetch,\n });\n\n return value;\n } catch (error) {\n throw await asGatewayError(error);\n }\n }\n}\n\nconst gatewayAvailableModelsResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n models: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().nullish(),\n pricing: z\n .object({\n input: z.string(),\n output: z.string(),\n input_cache_read: z.string().nullish(),\n input_cache_write: z.string().nullish(),\n })\n .transform(\n ({ input, output, input_cache_read, input_cache_write }) => ({\n input,\n output,\n ...(input_cache_read\n ? { cachedInputTokens: input_cache_read }\n : {}),\n ...(input_cache_write\n ? { cacheCreationInputTokens: input_cache_write }\n : {}),\n }),\n )\n .nullish(),\n specification: z.object({\n specificationVersion: z.literal('v2'),\n provider: z.string(),\n modelId: z.string(),\n }),\n modelType: z.enum(['language', 'embedding', 'image']).nullish(),\n }),\n ),\n }),\n ),\n);\n\nconst gatewayCreditsResponseSchema = lazyValidator(() =>\n zodSchema(\n z\n .object({\n balance: z.string(),\n total_used: z.string(),\n })\n .transform(({ balance, total_used }) => ({\n balance,\n totalUsed: total_used,\n })),\n ),\n);\n","import type {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2FilePart,\n LanguageModelV2StreamPart,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n type ParseResult,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { GatewayConfig } from './gateway-config';\nimport type { GatewayModelId } from './gateway-language-model-settings';\nimport { asGatewayError } from './errors';\nimport { parseAuthMethod } from './errors/parse-auth-method';\n\ntype GatewayChatConfig = GatewayConfig & {\n provider: string;\n o11yHeaders: Resolvable<Record<string, string>>;\n};\n\nexport class GatewayLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n readonly supportedUrls = { '*/*': [/.*/] };\n\n constructor(\n readonly modelId: GatewayModelId,\n private readonly config: GatewayChatConfig,\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs(options: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const { abortSignal: _abortSignal, ...optionsWithoutSignal } = options;\n\n return {\n args: this.maybeEncodeFileParts(optionsWithoutSignal),\n warnings: [],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n const { abortSignal } = options;\n\n const resolvedHeaders = await resolve(this.config.headers());\n\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n options.headers,\n this.getModelConfigHeaders(this.modelId, false),\n await resolve(this.config.o11yHeaders),\n ),\n body: args,\n successfulResponseHandler: createJsonResponseHandler(z.any()),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n ...responseBody,\n request: { body: args },\n response: { headers: responseHeaders, body: rawResponse },\n warnings,\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n const { abortSignal } = options;\n\n const resolvedHeaders = await resolve(this.config.headers());\n\n try {\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n options.headers,\n this.getModelConfigHeaders(this.modelId, true),\n await resolve(this.config.o11yHeaders),\n ),\n body: args,\n successfulResponseHandler: createEventSourceResponseHandler(z.any()),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<LanguageModelV2StreamPart>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n if (warnings.length > 0) {\n controller.enqueue({ type: 'stream-start', warnings });\n }\n },\n transform(chunk, controller) {\n if (chunk.success) {\n const streamPart = chunk.value;\n\n // Handle raw chunks: if this is a raw chunk from the gateway API,\n // only emit it if includeRawChunks is true\n if (streamPart.type === 'raw' && !options.includeRawChunks) {\n return; // Skip raw chunks if not requested\n }\n\n if (\n streamPart.type === 'response-metadata' &&\n streamPart.timestamp &&\n typeof streamPart.timestamp === 'string'\n ) {\n streamPart.timestamp = new Date(streamPart.timestamp);\n }\n\n controller.enqueue(streamPart);\n } else {\n controller.error(\n (chunk as { success: false; error: unknown }).error,\n );\n }\n },\n }),\n ),\n request: { body: args },\n response: { headers: responseHeaders },\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n private isFilePart(part: unknown) {\n return (\n part && typeof part === 'object' && 'type' in part && part.type === 'file'\n );\n }\n\n /**\n * Encodes file parts in the prompt to base64. Mutates the passed options\n * instance directly to avoid copying the file data.\n * @param options - The options to encode.\n * @returns The options with the file parts encoded.\n */\n private maybeEncodeFileParts(options: LanguageModelV2CallOptions) {\n for (const message of options.prompt) {\n for (const part of message.content) {\n if (this.isFilePart(part)) {\n const filePart = part as LanguageModelV2FilePart;\n // If the file part is a URL it will get cleanly converted to a string.\n // If it's a binary file attachment we convert it to a data url.\n // In either case, server-side we should only ever see URLs as strings.\n if (filePart.data instanceof Uint8Array) {\n const buffer = Uint8Array.from(filePart.data);\n const base64Data = Buffer.from(buffer).toString('base64');\n filePart.data = new URL(\n `data:${filePart.mediaType || 'application/octet-stream'};base64,${base64Data}`,\n );\n }\n }\n }\n }\n return options;\n }\n\n private getUrl() {\n return `${this.config.baseURL}/language-model`;\n }\n\n private getModelConfigHeaders(modelId: string, streaming: boolean) {\n return {\n 'ai-language-model-specification-version': '2',\n 'ai-language-model-id': modelId,\n 'ai-language-model-streaming': String(streaming),\n };\n }\n}\n","import type {\n EmbeddingModelV2,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n lazyValidator,\n postJsonToApi,\n resolve,\n zodSchema,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { asGatewayError } from './errors';\nimport { parseAuthMethod } from './errors/parse-auth-method';\nimport type { GatewayConfig } from './gateway-config';\n\nexport class GatewayEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n constructor(\n readonly modelId: string,\n private readonly config: GatewayConfig & {\n provider: string;\n o11yHeaders: Resolvable<Record<string, string>>;\n },\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n const resolvedHeaders = await resolve(this.config.headers());\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue,\n } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n headers ?? {},\n this.getModelConfigHeaders(),\n await resolve(this.config.o11yHeaders),\n ),\n body: {\n input: values.length === 1 ? values[0] : values,\n ...(providerOptions ? { providerOptions } : {}),\n },\n successfulResponseHandler: createJsonResponseHandler(\n gatewayEmbeddingResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: responseBody.embeddings,\n usage: responseBody.usage ?? undefined,\n providerMetadata:\n responseBody.providerMetadata as unknown as SharedV2ProviderMetadata,\n response: { headers: responseHeaders, body: rawValue },\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n private getUrl() {\n return `${this.config.baseURL}/embedding-model`;\n }\n\n private getModelConfigHeaders() {\n return {\n 'ai-embedding-model-specification-version': '2',\n 'ai-model-id': this.modelId,\n };\n }\n}\n\nconst gatewayEmbeddingResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n embeddings: z.array(z.array(z.number())),\n usage: z.object({ tokens: z.number() }).nullish(),\n providerMetadata: z\n .record(z.string(), z.record(z.string(), z.unknown()))\n .optional(),\n }),\n ),\n);\n","import type {\n ImageModelV2,\n ImageModelV2CallWarning,\n ImageModelV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n postJsonToApi,\n resolve,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { GatewayConfig } from './gateway-config';\nimport { asGatewayError } from './errors';\nimport { parseAuthMethod } from './errors/parse-auth-method';\n\nexport class GatewayImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n // Set a very large number to prevent client-side splitting of requests\n readonly maxImagesPerCall = Number.MAX_SAFE_INTEGER;\n\n constructor(\n readonly modelId: string,\n private readonly config: GatewayConfig & {\n provider: string;\n o11yHeaders: Resolvable<Record<string, string>>;\n },\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const resolvedHeaders = await resolve(this.config.headers());\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue,\n } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n headers ?? {},\n this.getModelConfigHeaders(),\n await resolve(this.config.o11yHeaders),\n ),\n body: {\n prompt,\n n,\n ...(size && { size }),\n ...(aspectRatio && { aspectRatio }),\n ...(seed && { seed }),\n ...(providerOptions && { providerOptions }),\n },\n successfulResponseHandler: createJsonResponseHandler(\n gatewayImageResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n images: responseBody.images, // Always base64 strings from server\n warnings: responseBody.warnings ?? [],\n providerMetadata:\n responseBody.providerMetadata as ImageModelV2ProviderMetadata,\n response: {\n timestamp: new Date(),\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n } catch (error) {\n throw asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n private getUrl() {\n return `${this.config.baseURL}/image-model`;\n }\n\n private getModelConfigHeaders() {\n return {\n 'ai-image-model-specification-version': '2',\n 'ai-model-id': this.modelId,\n };\n }\n}\n\nconst providerMetadataEntrySchema = z\n .object({\n images: z.array(z.unknown()).optional(),\n })\n .catchall(z.unknown());\n\nconst gatewayImageResponseSchema = z.object({\n images: z.array(z.string()), // Always base64 strings over the wire\n warnings: z\n .array(\n z.object({\n type: z.literal('other'),\n message: z.string(),\n }),\n )\n .optional(),\n providerMetadata: z\n .record(z.string(), providerMetadataEntrySchema)\n .optional(),\n});\n","import { getContext } from '@vercel/oidc';\nexport { getVercelOidcToken } from '@vercel/oidc';\n\nexport async function getVercelRequestId(): Promise<string | undefined> {\n return getContext().headers?.['x-vercel-id'];\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider_utils","import_v4","marker","symbol","_a","_b","name","marker","symbol","_a","_b","name","marker","symbol","_a","_b","name","marker","symbol","_a","_b","name","marker","symbol","_a","_b","name","marker","symbol","_a","_b","import_provider_utils","_a","import_v4","import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","_a","import_provider_utils","import_v4","_a","import_oidc","_a","import_provider_utils","_a","_b"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/gateway-provider.ts","../src/errors/as-gateway-error.ts","../src/errors/create-gateway-error.ts","../src/errors/gateway-error.ts","../src/errors/gateway-authentication-error.ts","../src/errors/gateway-invalid-request-error.ts","../src/errors/gateway-rate-limit-error.ts","../src/errors/gateway-model-not-found-error.ts","../src/errors/gateway-internal-server-error.ts","../src/errors/gateway-response-error.ts","../src/errors/extract-api-call-response.ts","../src/errors/parse-auth-method.ts","../src/gateway-fetch-metadata.ts","../src/gateway-language-model.ts","../src/gateway-embedding-model.ts","../src/gateway-image-model.ts","../src/vercel-environment.ts","../src/version.ts"],"sourcesContent":["export type { GatewayModelId } from './gateway-language-model-settings';\nexport type {\n GatewayLanguageModelEntry,\n GatewayLanguageModelSpecification,\n} from './gateway-model-entry';\nexport type { GatewayCreditsResponse } from './gateway-fetch-metadata';\nexport type { GatewayLanguageModelEntry as GatewayModelEntry } from './gateway-model-entry';\nexport {\n createGatewayProvider,\n createGatewayProvider as createGateway,\n gateway,\n} from './gateway-provider';\nexport type {\n GatewayProvider,\n GatewayProviderSettings,\n} from './gateway-provider';\nexport type { GatewayProviderOptions } from './gateway-provider-options';\nexport {\n GatewayError,\n GatewayAuthenticationError,\n GatewayInvalidRequestError,\n GatewayRateLimitError,\n GatewayModelNotFoundError,\n GatewayInternalServerError,\n GatewayResponseError,\n} from './errors';\nexport type { GatewayErrorResponse } from './errors';\n","import {\n loadOptionalSetting,\n withoutTrailingSlash,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { asGatewayError, GatewayAuthenticationError } from './errors';\nimport {\n GATEWAY_AUTH_METHOD_HEADER,\n parseAuthMethod,\n} from './errors/parse-auth-method';\nimport {\n GatewayFetchMetadata,\n type GatewayFetchMetadataResponse,\n type GatewayCreditsResponse,\n} from './gateway-fetch-metadata';\nimport { GatewayLanguageModel } from './gateway-language-model';\nimport { GatewayEmbeddingModel } from './gateway-embedding-model';\nimport { GatewayImageModel } from './gateway-image-model';\nimport type { GatewayEmbeddingModelId } from './gateway-embedding-model-settings';\nimport type { GatewayImageModelId } from './gateway-image-model-settings';\nimport { getVercelOidcToken, getVercelRequestId } from './vercel-environment';\nimport type { GatewayModelId } from './gateway-language-model-settings';\nimport type {\n LanguageModelV3,\n EmbeddingModelV3,\n ImageModelV3,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport { withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { VERSION } from './version';\n\nexport interface GatewayProvider extends ProviderV3 {\n (modelId: GatewayModelId): LanguageModelV3;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: GatewayModelId): LanguageModelV3;\n\n /**\nReturns available providers and models for use with the remote provider.\n */\n getAvailableModels(): Promise<GatewayFetchMetadataResponse>;\n\n /**\nReturns credit information for the authenticated user.\n */\n getCredits(): Promise<GatewayCreditsResponse>;\n\n /**\nCreates a model for generating text embeddings.\n*/\n embeddingModel(modelId: GatewayEmbeddingModelId): EmbeddingModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: GatewayEmbeddingModelId): EmbeddingModelV3;\n\n /**\nCreates a model for generating images.\n*/\n imageModel(modelId: GatewayImageModelId): ImageModelV3;\n}\n\nexport interface GatewayProviderSettings {\n /**\nThe base URL prefix for API calls. Defaults to `https://ai-gateway.vercel.sh/v1/ai`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being sent using the `Authorization` header.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\nHow frequently to refresh the metadata cache in milliseconds.\n */\n metadataCacheRefreshMillis?: number;\n\n /**\n * @internal For testing purposes only\n */\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nconst AI_GATEWAY_PROTOCOL_VERSION = '0.0.1';\n\n/**\nCreate a remote provider instance.\n */\nexport function createGatewayProvider(\n options: GatewayProviderSettings = {},\n): GatewayProvider {\n let pendingMetadata: Promise<GatewayFetchMetadataResponse> | null = null;\n let metadataCache: GatewayFetchMetadataResponse | null = null;\n const cacheRefreshMillis =\n options.metadataCacheRefreshMillis ?? 1000 * 60 * 5;\n let lastFetchTime = 0;\n\n const baseURL =\n withoutTrailingSlash(options.baseURL) ??\n 'https://ai-gateway.vercel.sh/v3/ai';\n\n const getHeaders = async () => {\n const auth = await getGatewayAuthToken(options);\n if (auth) {\n return withUserAgentSuffix(\n {\n Authorization: `Bearer ${auth.token}`,\n 'ai-gateway-protocol-version': AI_GATEWAY_PROTOCOL_VERSION,\n [GATEWAY_AUTH_METHOD_HEADER]: auth.authMethod,\n ...options.headers,\n },\n `ai-sdk/gateway/${VERSION}`,\n );\n }\n\n throw GatewayAuthenticationError.createContextualError({\n apiKeyProvided: false,\n oidcTokenProvided: false,\n statusCode: 401,\n });\n };\n\n const createO11yHeaders = () => {\n const deploymentId = loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'VERCEL_DEPLOYMENT_ID',\n });\n const environment = loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'VERCEL_ENV',\n });\n const region = loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'VERCEL_REGION',\n });\n\n return async () => {\n const requestId = await getVercelRequestId();\n return {\n ...(deploymentId && { 'ai-o11y-deployment-id': deploymentId }),\n ...(environment && { 'ai-o11y-environment': environment }),\n ...(region && { 'ai-o11y-region': region }),\n ...(requestId && { 'ai-o11y-request-id': requestId }),\n };\n };\n };\n\n const createLanguageModel = (modelId: GatewayModelId) => {\n return new GatewayLanguageModel(modelId, {\n provider: 'gateway',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders(),\n });\n };\n\n const getAvailableModels = async () => {\n const now = options._internal?.currentDate?.().getTime() ?? Date.now();\n if (!pendingMetadata || now - lastFetchTime > cacheRefreshMillis) {\n lastFetchTime = now;\n\n pendingMetadata = new GatewayFetchMetadata({\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n })\n .getAvailableModels()\n .then(metadata => {\n metadataCache = metadata;\n return metadata;\n })\n .catch(async (error: unknown) => {\n throw await asGatewayError(\n error,\n await parseAuthMethod(await getHeaders()),\n );\n });\n }\n\n return metadataCache ? Promise.resolve(metadataCache) : pendingMetadata;\n };\n\n const getCredits = async () => {\n return new GatewayFetchMetadata({\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n })\n .getCredits()\n .catch(async (error: unknown) => {\n throw await asGatewayError(\n error,\n await parseAuthMethod(await getHeaders()),\n );\n });\n };\n\n const provider = function (modelId: GatewayModelId) {\n if (new.target) {\n throw new Error(\n 'The Gateway Provider model function cannot be called with the new keyword.',\n );\n }\n\n return createLanguageModel(modelId);\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.getAvailableModels = getAvailableModels;\n provider.getCredits = getCredits;\n provider.imageModel = (modelId: GatewayImageModelId) => {\n return new GatewayImageModel(modelId, {\n provider: 'gateway',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders(),\n });\n };\n provider.languageModel = createLanguageModel;\n const createEmbeddingModel = (modelId: GatewayEmbeddingModelId) => {\n return new GatewayEmbeddingModel(modelId, {\n provider: 'gateway',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders(),\n });\n };\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n\n return provider;\n}\n\nexport const gateway = createGatewayProvider();\n\nexport async function getGatewayAuthToken(\n options: GatewayProviderSettings,\n): Promise<{\n token: string;\n authMethod: 'api-key' | 'oidc';\n} | null> {\n const apiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'AI_GATEWAY_API_KEY',\n });\n\n if (apiKey) {\n return {\n token: apiKey,\n authMethod: 'api-key',\n };\n }\n\n try {\n const oidcToken = await getVercelOidcToken();\n return {\n token: oidcToken,\n authMethod: 'oidc',\n };\n } catch {\n return null;\n }\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractApiCallResponse, GatewayError } from '.';\nimport { createGatewayErrorFromResponse } from './create-gateway-error';\n\nexport function asGatewayError(\n error: unknown,\n authMethod?: 'api-key' | 'oidc',\n) {\n if (GatewayError.isInstance(error)) {\n return error;\n }\n\n if (APICallError.isInstance(error)) {\n return createGatewayErrorFromResponse({\n response: extractApiCallResponse(error),\n statusCode: error.statusCode ?? 500,\n defaultMessage: 'Gateway request failed',\n cause: error,\n authMethod,\n });\n }\n\n return createGatewayErrorFromResponse({\n response: {},\n statusCode: 500,\n defaultMessage:\n error instanceof Error\n ? `Gateway request failed: ${error.message}`\n : 'Unknown Gateway error',\n cause: error,\n authMethod,\n });\n}\n","import { z } from 'zod/v4';\nimport type { GatewayError } from './gateway-error';\nimport { GatewayAuthenticationError } from './gateway-authentication-error';\nimport { GatewayInvalidRequestError } from './gateway-invalid-request-error';\nimport { GatewayRateLimitError } from './gateway-rate-limit-error';\nimport {\n GatewayModelNotFoundError,\n modelNotFoundParamSchema,\n} from './gateway-model-not-found-error';\nimport { GatewayInternalServerError } from './gateway-internal-server-error';\nimport { GatewayResponseError } from './gateway-response-error';\nimport {\n InferSchema,\n lazySchema,\n safeValidateTypes,\n validateTypes,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\nexport async function createGatewayErrorFromResponse({\n response,\n statusCode,\n defaultMessage = 'Gateway request failed',\n cause,\n authMethod,\n}: {\n response: unknown;\n statusCode: number;\n defaultMessage?: string;\n cause?: unknown;\n authMethod?: 'api-key' | 'oidc';\n}): Promise<GatewayError> {\n const parseResult = await safeValidateTypes({\n value: response,\n schema: gatewayErrorResponseSchema,\n });\n\n if (!parseResult.success) {\n return new GatewayResponseError({\n message: `Invalid error response format: ${defaultMessage}`,\n statusCode,\n response,\n validationError: parseResult.error,\n cause,\n });\n }\n\n const validatedResponse: GatewayErrorResponse = parseResult.value;\n const errorType = validatedResponse.error.type;\n const message = validatedResponse.error.message;\n\n switch (errorType) {\n case 'authentication_error':\n return GatewayAuthenticationError.createContextualError({\n apiKeyProvided: authMethod === 'api-key',\n oidcTokenProvided: authMethod === 'oidc',\n statusCode,\n cause,\n });\n case 'invalid_request_error':\n return new GatewayInvalidRequestError({ message, statusCode, cause });\n case 'rate_limit_exceeded':\n return new GatewayRateLimitError({ message, statusCode, cause });\n case 'model_not_found': {\n const modelResult = await safeValidateTypes({\n value: validatedResponse.error.param,\n schema: modelNotFoundParamSchema,\n });\n\n return new GatewayModelNotFoundError({\n message,\n statusCode,\n modelId: modelResult.success ? modelResult.value.modelId : undefined,\n cause,\n });\n }\n case 'internal_server_error':\n return new GatewayInternalServerError({ message, statusCode, cause });\n default:\n return new GatewayInternalServerError({ message, statusCode, cause });\n }\n}\n\nconst gatewayErrorResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.unknown().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n }),\n ),\n);\n\nexport type GatewayErrorResponse = InferSchema<\n typeof gatewayErrorResponseSchema\n>;\n","const marker = 'vercel.ai.gateway.error';\nconst symbol = Symbol.for(marker);\n\nexport abstract class GatewayError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n abstract readonly name: string;\n abstract readonly type: string;\n readonly statusCode: number;\n readonly cause?: unknown;\n\n constructor({\n message,\n statusCode = 500,\n cause,\n }: {\n message: string;\n statusCode?: number;\n cause?: unknown;\n }) {\n super(message);\n this.statusCode = statusCode;\n this.cause = cause;\n }\n\n /**\n * Checks if the given error is a Gateway Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is a Gateway Error, false otherwise.\n */\n static isInstance(error: unknown): error is GatewayError {\n return GatewayError.hasMarker(error);\n }\n\n static hasMarker(error: unknown): error is GatewayError {\n return (\n typeof error === 'object' &&\n error !== null &&\n symbol in error &&\n (error as any)[symbol] === true\n );\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayAuthenticationError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Authentication failed - invalid API key or OIDC token\n */\nexport class GatewayAuthenticationError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'authentication_error';\n\n constructor({\n message = 'Authentication failed',\n statusCode = 401,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayAuthenticationError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n\n /**\n * Creates a contextual error message when authentication fails\n */\n static createContextualError({\n apiKeyProvided,\n oidcTokenProvided,\n message = 'Authentication failed',\n statusCode = 401,\n cause,\n }: {\n apiKeyProvided: boolean;\n oidcTokenProvided: boolean;\n message?: string;\n statusCode?: number;\n cause?: unknown;\n }): GatewayAuthenticationError {\n let contextualMessage: string;\n\n if (apiKeyProvided) {\n contextualMessage = `AI Gateway authentication failed: Invalid API key.\n\nCreate a new API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys\n\nProvide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable.`;\n } else if (oidcTokenProvided) {\n contextualMessage = `AI Gateway authentication failed: Invalid OIDC token.\n\nRun 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.\n\nAlternatively, use an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys`;\n } else {\n contextualMessage = `AI Gateway authentication failed: No authentication provided.\n\nOption 1 - API key:\nCreate an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys\nProvide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable.\n\nOption 2 - OIDC token:\nRun 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.`;\n }\n\n return new GatewayAuthenticationError({\n message: contextualMessage,\n statusCode,\n cause,\n });\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayInvalidRequestError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Invalid request - missing headers, malformed data, etc.\n */\nexport class GatewayInvalidRequestError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'invalid_request_error';\n\n constructor({\n message = 'Invalid request',\n statusCode = 400,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayInvalidRequestError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayRateLimitError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Rate limit exceeded.\n */\nexport class GatewayRateLimitError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'rate_limit_exceeded';\n\n constructor({\n message = 'Rate limit exceeded',\n statusCode = 429,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayRateLimitError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { z } from 'zod/v4';\nimport { GatewayError } from './gateway-error';\nimport { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\n\nconst name = 'GatewayModelNotFoundError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport const modelNotFoundParamSchema = lazySchema(() =>\n zodSchema(\n z.object({\n modelId: z.string(),\n }),\n ),\n);\n\n/**\n * Model not found or not available\n */\nexport class GatewayModelNotFoundError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'model_not_found';\n readonly modelId?: string;\n\n constructor({\n message = 'Model not found',\n statusCode = 404,\n modelId,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n modelId?: string;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n this.modelId = modelId;\n }\n\n static isInstance(error: unknown): error is GatewayModelNotFoundError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayInternalServerError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Internal server error from the Gateway\n */\nexport class GatewayInternalServerError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'internal_server_error';\n\n constructor({\n message = 'Internal server error',\n statusCode = 500,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayInternalServerError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { GatewayError } from './gateway-error';\n\nconst name = 'GatewayResponseError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Gateway response parsing error\n */\nexport class GatewayResponseError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'response_error';\n readonly response?: unknown;\n readonly validationError?: TypeValidationError;\n\n constructor({\n message = 'Invalid response from Gateway',\n statusCode = 502,\n response,\n validationError,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n response?: unknown;\n validationError?: TypeValidationError;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n this.response = response;\n this.validationError = validationError;\n }\n\n static isInstance(error: unknown): error is GatewayResponseError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import type { APICallError } from '@ai-sdk/provider';\n\nexport function extractApiCallResponse(error: APICallError): unknown {\n if (error.data !== undefined) {\n return error.data;\n }\n if (error.responseBody != null) {\n try {\n return JSON.parse(error.responseBody);\n } catch {\n return error.responseBody;\n }\n }\n return {};\n}\n","import { z } from 'zod/v4';\nimport {\n lazySchema,\n safeValidateTypes,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\nexport const GATEWAY_AUTH_METHOD_HEADER = 'ai-gateway-auth-method' as const;\n\nexport async function parseAuthMethod(\n headers: Record<string, string | undefined>,\n) {\n const result = await safeValidateTypes({\n value: headers[GATEWAY_AUTH_METHOD_HEADER],\n schema: gatewayAuthMethodSchema,\n });\n\n return result.success ? result.value : undefined;\n}\n\nconst gatewayAuthMethodSchema = lazySchema(() =>\n zodSchema(z.union([z.literal('api-key'), z.literal('oidc')])),\n);\n","import {\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n lazySchema,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { asGatewayError } from './errors';\nimport type { GatewayConfig } from './gateway-config';\nimport type { GatewayLanguageModelEntry } from './gateway-model-entry';\n\ntype GatewayFetchMetadataConfig = GatewayConfig;\n\nexport interface GatewayFetchMetadataResponse {\n models: GatewayLanguageModelEntry[];\n}\n\nexport interface GatewayCreditsResponse {\n /** The remaining gateway credit balance available for API usage */\n balance: string;\n /** The total amount of gateway credits that have been consumed */\n totalUsed: string;\n}\n\nexport class GatewayFetchMetadata {\n constructor(private readonly config: GatewayFetchMetadataConfig) {}\n\n async getAvailableModels(): Promise<GatewayFetchMetadataResponse> {\n try {\n const { value } = await getFromApi({\n url: `${this.config.baseURL}/config`,\n headers: await resolve(this.config.headers()),\n successfulResponseHandler: createJsonResponseHandler(\n gatewayAvailableModelsResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n fetch: this.config.fetch,\n });\n\n return value;\n } catch (error) {\n throw await asGatewayError(error);\n }\n }\n\n async getCredits(): Promise<GatewayCreditsResponse> {\n try {\n const baseUrl = new URL(this.config.baseURL);\n\n const { value } = await getFromApi({\n url: `${baseUrl.origin}/v1/credits`,\n headers: await resolve(this.config.headers()),\n successfulResponseHandler: createJsonResponseHandler(\n gatewayCreditsResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n fetch: this.config.fetch,\n });\n\n return value;\n } catch (error) {\n throw await asGatewayError(error);\n }\n }\n}\n\nconst gatewayAvailableModelsResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n models: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().nullish(),\n pricing: z\n .object({\n input: z.string(),\n output: z.string(),\n input_cache_read: z.string().nullish(),\n input_cache_write: z.string().nullish(),\n })\n .transform(\n ({ input, output, input_cache_read, input_cache_write }) => ({\n input,\n output,\n ...(input_cache_read\n ? { cachedInputTokens: input_cache_read }\n : {}),\n ...(input_cache_write\n ? { cacheCreationInputTokens: input_cache_write }\n : {}),\n }),\n )\n .nullish(),\n specification: z.object({\n specificationVersion: z.literal('v3'),\n provider: z.string(),\n modelId: z.string(),\n }),\n modelType: z.enum(['language', 'embedding', 'image']).nullish(),\n }),\n ),\n }),\n ),\n);\n\nconst gatewayCreditsResponseSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n balance: z.string(),\n total_used: z.string(),\n })\n .transform(({ balance, total_used }) => ({\n balance,\n totalUsed: total_used,\n })),\n ),\n);\n","import type {\n LanguageModelV3,\n LanguageModelV3CallOptions,\n SharedV3Warning,\n LanguageModelV3FilePart,\n LanguageModelV3StreamPart,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamResult,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n type ParseResult,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { GatewayConfig } from './gateway-config';\nimport type { GatewayModelId } from './gateway-language-model-settings';\nimport { asGatewayError } from './errors';\nimport { parseAuthMethod } from './errors/parse-auth-method';\n\ntype GatewayChatConfig = GatewayConfig & {\n provider: string;\n o11yHeaders: Resolvable<Record<string, string>>;\n};\n\nexport class GatewayLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n readonly supportedUrls = { '*/*': [/.*/] };\n\n constructor(\n readonly modelId: GatewayModelId,\n private readonly config: GatewayChatConfig,\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs(options: LanguageModelV3CallOptions) {\n const { abortSignal: _abortSignal, ...optionsWithoutSignal } = options;\n\n return {\n args: this.maybeEncodeFileParts(optionsWithoutSignal),\n warnings: [],\n };\n }\n\n async doGenerate(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\n const { args, warnings } = await this.getArgs(options);\n const { abortSignal } = options;\n\n const resolvedHeaders = await resolve(this.config.headers());\n\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n options.headers,\n this.getModelConfigHeaders(this.modelId, false),\n await resolve(this.config.o11yHeaders),\n ),\n body: args,\n successfulResponseHandler: createJsonResponseHandler(z.any()),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n ...responseBody,\n request: { body: args },\n response: { headers: responseHeaders, body: rawResponse },\n warnings,\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n async doStream(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\n const { args, warnings } = await this.getArgs(options);\n const { abortSignal } = options;\n\n const resolvedHeaders = await resolve(this.config.headers());\n\n try {\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n options.headers,\n this.getModelConfigHeaders(this.modelId, true),\n await resolve(this.config.o11yHeaders),\n ),\n body: args,\n successfulResponseHandler: createEventSourceResponseHandler(z.any()),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<LanguageModelV3StreamPart>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n if (warnings.length > 0) {\n controller.enqueue({ type: 'stream-start', warnings });\n }\n },\n transform(chunk, controller) {\n if (chunk.success) {\n const streamPart = chunk.value;\n\n // Handle raw chunks: if this is a raw chunk from the gateway API,\n // only emit it if includeRawChunks is true\n if (streamPart.type === 'raw' && !options.includeRawChunks) {\n return; // Skip raw chunks if not requested\n }\n\n if (\n streamPart.type === 'response-metadata' &&\n streamPart.timestamp &&\n typeof streamPart.timestamp === 'string'\n ) {\n streamPart.timestamp = new Date(streamPart.timestamp);\n }\n\n controller.enqueue(streamPart);\n } else {\n controller.error(\n (chunk as { success: false; error: unknown }).error,\n );\n }\n },\n }),\n ),\n request: { body: args },\n response: { headers: responseHeaders },\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n private isFilePart(part: unknown) {\n return (\n part && typeof part === 'object' && 'type' in part && part.type === 'file'\n );\n }\n\n /**\n * Encodes file parts in the prompt to base64. Mutates the passed options\n * instance directly to avoid copying the file data.\n * @param options - The options to encode.\n * @returns The options with the file parts encoded.\n */\n private maybeEncodeFileParts(options: LanguageModelV3CallOptions) {\n for (const message of options.prompt) {\n for (const part of message.content) {\n if (this.isFilePart(part)) {\n const filePart = part as LanguageModelV3FilePart;\n // If the file part is a URL it will get cleanly converted to a string.\n // If it's a binary file attachment we convert it to a data url.\n // In either case, server-side we should only ever see URLs as strings.\n if (filePart.data instanceof Uint8Array) {\n const buffer = Uint8Array.from(filePart.data);\n const base64Data = Buffer.from(buffer).toString('base64');\n filePart.data = new URL(\n `data:${filePart.mediaType || 'application/octet-stream'};base64,${base64Data}`,\n );\n }\n }\n }\n }\n return options;\n }\n\n private getUrl() {\n return `${this.config.baseURL}/language-model`;\n }\n\n private getModelConfigHeaders(modelId: string, streaming: boolean) {\n return {\n 'ai-language-model-specification-version': '2',\n 'ai-language-model-id': modelId,\n 'ai-language-model-streaming': String(streaming),\n };\n }\n}\n","import type {\n EmbeddingModelV3,\n SharedV3ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n lazySchema,\n postJsonToApi,\n resolve,\n zodSchema,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { asGatewayError } from './errors';\nimport { parseAuthMethod } from './errors/parse-auth-method';\nimport type { GatewayConfig } from './gateway-config';\n\nexport class GatewayEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n constructor(\n readonly modelId: string,\n private readonly config: GatewayConfig & {\n provider: string;\n o11yHeaders: Resolvable<Record<string, string>>;\n },\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n > {\n const resolvedHeaders = await resolve(this.config.headers());\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue,\n } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n headers ?? {},\n this.getModelConfigHeaders(),\n await resolve(this.config.o11yHeaders),\n ),\n body: {\n values,\n ...(providerOptions ? { providerOptions } : {}),\n },\n successfulResponseHandler: createJsonResponseHandler(\n gatewayEmbeddingResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: responseBody.embeddings,\n usage: responseBody.usage ?? undefined,\n providerMetadata:\n responseBody.providerMetadata as unknown as SharedV3ProviderMetadata,\n response: { headers: responseHeaders, body: rawValue },\n warnings: [],\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n private getUrl() {\n return `${this.config.baseURL}/embedding-model`;\n }\n\n private getModelConfigHeaders() {\n return {\n 'ai-embedding-model-specification-version': '2',\n 'ai-model-id': this.modelId,\n };\n }\n}\n\nconst gatewayEmbeddingResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n embeddings: z.array(z.array(z.number())),\n usage: z.object({ tokens: z.number() }).nullish(),\n providerMetadata: z\n .record(z.string(), z.record(z.string(), z.unknown()))\n .optional(),\n }),\n ),\n);\n","import type {\n ImageModelV3,\n ImageModelV3ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n postJsonToApi,\n resolve,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { GatewayConfig } from './gateway-config';\nimport { asGatewayError } from './errors';\nimport { parseAuthMethod } from './errors/parse-auth-method';\n\nexport class GatewayImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3' as const;\n // Set a very large number to prevent client-side splitting of requests\n readonly maxImagesPerCall = Number.MAX_SAFE_INTEGER;\n\n constructor(\n readonly modelId: string,\n private readonly config: GatewayConfig & {\n provider: string;\n o11yHeaders: Resolvable<Record<string, string>>;\n },\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const resolvedHeaders = await resolve(this.config.headers());\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue,\n } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n headers ?? {},\n this.getModelConfigHeaders(),\n await resolve(this.config.o11yHeaders),\n ),\n body: {\n prompt,\n n,\n ...(size && { size }),\n ...(aspectRatio && { aspectRatio }),\n ...(seed && { seed }),\n ...(providerOptions && { providerOptions }),\n },\n successfulResponseHandler: createJsonResponseHandler(\n gatewayImageResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n images: responseBody.images, // Always base64 strings from server\n warnings: responseBody.warnings ?? [],\n providerMetadata:\n responseBody.providerMetadata as ImageModelV3ProviderMetadata,\n response: {\n timestamp: new Date(),\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n } catch (error) {\n throw asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n private getUrl() {\n return `${this.config.baseURL}/image-model`;\n }\n\n private getModelConfigHeaders() {\n return {\n 'ai-image-model-specification-version': '2',\n 'ai-model-id': this.modelId,\n };\n }\n}\n\nconst providerMetadataEntrySchema = z\n .object({\n images: z.array(z.unknown()).optional(),\n })\n .catchall(z.unknown());\n\nconst gatewayImageResponseSchema = z.object({\n images: z.array(z.string()), // Always base64 strings over the wire\n warnings: z\n .array(\n z.object({\n type: z.literal('other'),\n message: z.string(),\n }),\n )\n .optional(),\n providerMetadata: z\n .record(z.string(), providerMetadataEntrySchema)\n .optional(),\n});\n","import { getContext } from '@vercel/oidc';\nexport { getVercelOidcToken } from '@vercel/oidc';\n\nexport async function getVercelRequestId(): Promise<string | undefined> {\n return getContext().headers?.['x-vercel-id'];\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider_utils","import_v4","marker","symbol","_a","_b","name","marker","symbol","_a","_b","name","marker","symbol","_a","_b","name","marker","symbol","_a","_b","name","marker","symbol","_a","_b","name","marker","symbol","_a","_b","import_provider_utils","_a","import_v4","import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","_a","import_provider_utils","import_v4","_a","import_oidc","_a","import_provider_utils","_a","_b"]}
|
package/dist/index.mjs
CHANGED
|
@@ -145,11 +145,11 @@ var GatewayRateLimitError = class extends (_b4 = GatewayError, _a4 = symbol4, _b
|
|
|
145
145
|
|
|
146
146
|
// src/errors/gateway-model-not-found-error.ts
|
|
147
147
|
import { z } from "zod/v4";
|
|
148
|
-
import {
|
|
148
|
+
import { lazySchema, zodSchema } from "@ai-sdk/provider-utils";
|
|
149
149
|
var name4 = "GatewayModelNotFoundError";
|
|
150
150
|
var marker5 = `vercel.ai.gateway.error.${name4}`;
|
|
151
151
|
var symbol5 = Symbol.for(marker5);
|
|
152
|
-
var modelNotFoundParamSchema =
|
|
152
|
+
var modelNotFoundParamSchema = lazySchema(
|
|
153
153
|
() => zodSchema(
|
|
154
154
|
z.object({
|
|
155
155
|
modelId: z.string()
|
|
@@ -226,7 +226,7 @@ var GatewayResponseError = class extends (_b7 = GatewayError, _a7 = symbol7, _b7
|
|
|
226
226
|
|
|
227
227
|
// src/errors/create-gateway-error.ts
|
|
228
228
|
import {
|
|
229
|
-
|
|
229
|
+
lazySchema as lazySchema2,
|
|
230
230
|
safeValidateTypes,
|
|
231
231
|
zodSchema as zodSchema2
|
|
232
232
|
} from "@ai-sdk/provider-utils";
|
|
@@ -283,7 +283,7 @@ async function createGatewayErrorFromResponse({
|
|
|
283
283
|
return new GatewayInternalServerError({ message, statusCode, cause });
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
|
-
var gatewayErrorResponseSchema =
|
|
286
|
+
var gatewayErrorResponseSchema = lazySchema2(
|
|
287
287
|
() => zodSchema2(
|
|
288
288
|
z2.object({
|
|
289
289
|
error: z2.object({
|
|
@@ -338,7 +338,7 @@ function extractApiCallResponse(error) {
|
|
|
338
338
|
// src/errors/parse-auth-method.ts
|
|
339
339
|
import { z as z3 } from "zod/v4";
|
|
340
340
|
import {
|
|
341
|
-
|
|
341
|
+
lazySchema as lazySchema3,
|
|
342
342
|
safeValidateTypes as safeValidateTypes2,
|
|
343
343
|
zodSchema as zodSchema3
|
|
344
344
|
} from "@ai-sdk/provider-utils";
|
|
@@ -350,7 +350,7 @@ async function parseAuthMethod(headers) {
|
|
|
350
350
|
});
|
|
351
351
|
return result.success ? result.value : void 0;
|
|
352
352
|
}
|
|
353
|
-
var gatewayAuthMethodSchema =
|
|
353
|
+
var gatewayAuthMethodSchema = lazySchema3(
|
|
354
354
|
() => zodSchema3(z3.union([z3.literal("api-key"), z3.literal("oidc")]))
|
|
355
355
|
);
|
|
356
356
|
|
|
@@ -359,7 +359,7 @@ import {
|
|
|
359
359
|
createJsonErrorResponseHandler,
|
|
360
360
|
createJsonResponseHandler,
|
|
361
361
|
getFromApi,
|
|
362
|
-
|
|
362
|
+
lazySchema as lazySchema4,
|
|
363
363
|
resolve,
|
|
364
364
|
zodSchema as zodSchema4
|
|
365
365
|
} from "@ai-sdk/provider-utils";
|
|
@@ -408,7 +408,7 @@ var GatewayFetchMetadata = class {
|
|
|
408
408
|
}
|
|
409
409
|
}
|
|
410
410
|
};
|
|
411
|
-
var gatewayAvailableModelsResponseSchema =
|
|
411
|
+
var gatewayAvailableModelsResponseSchema = lazySchema4(
|
|
412
412
|
() => zodSchema4(
|
|
413
413
|
z4.object({
|
|
414
414
|
models: z4.array(
|
|
@@ -430,7 +430,7 @@ var gatewayAvailableModelsResponseSchema = lazyValidator4(
|
|
|
430
430
|
})
|
|
431
431
|
).nullish(),
|
|
432
432
|
specification: z4.object({
|
|
433
|
-
specificationVersion: z4.literal("
|
|
433
|
+
specificationVersion: z4.literal("v3"),
|
|
434
434
|
provider: z4.string(),
|
|
435
435
|
modelId: z4.string()
|
|
436
436
|
}),
|
|
@@ -440,7 +440,7 @@ var gatewayAvailableModelsResponseSchema = lazyValidator4(
|
|
|
440
440
|
})
|
|
441
441
|
)
|
|
442
442
|
);
|
|
443
|
-
var gatewayCreditsResponseSchema =
|
|
443
|
+
var gatewayCreditsResponseSchema = lazySchema4(
|
|
444
444
|
() => zodSchema4(
|
|
445
445
|
z4.object({
|
|
446
446
|
balance: z4.string(),
|
|
@@ -466,7 +466,7 @@ var GatewayLanguageModel = class {
|
|
|
466
466
|
constructor(modelId, config) {
|
|
467
467
|
this.modelId = modelId;
|
|
468
468
|
this.config = config;
|
|
469
|
-
this.specificationVersion = "
|
|
469
|
+
this.specificationVersion = "v3";
|
|
470
470
|
this.supportedUrls = { "*/*": [/.*/] };
|
|
471
471
|
}
|
|
472
472
|
get provider() {
|
|
@@ -613,7 +613,7 @@ import {
|
|
|
613
613
|
combineHeaders as combineHeaders2,
|
|
614
614
|
createJsonErrorResponseHandler as createJsonErrorResponseHandler3,
|
|
615
615
|
createJsonResponseHandler as createJsonResponseHandler3,
|
|
616
|
-
|
|
616
|
+
lazySchema as lazySchema5,
|
|
617
617
|
postJsonToApi as postJsonToApi2,
|
|
618
618
|
resolve as resolve3,
|
|
619
619
|
zodSchema as zodSchema5
|
|
@@ -623,7 +623,7 @@ var GatewayEmbeddingModel = class {
|
|
|
623
623
|
constructor(modelId, config) {
|
|
624
624
|
this.modelId = modelId;
|
|
625
625
|
this.config = config;
|
|
626
|
-
this.specificationVersion = "
|
|
626
|
+
this.specificationVersion = "v3";
|
|
627
627
|
this.maxEmbeddingsPerCall = 2048;
|
|
628
628
|
this.supportsParallelCalls = true;
|
|
629
629
|
}
|
|
@@ -652,7 +652,7 @@ var GatewayEmbeddingModel = class {
|
|
|
652
652
|
await resolve3(this.config.o11yHeaders)
|
|
653
653
|
),
|
|
654
654
|
body: {
|
|
655
|
-
|
|
655
|
+
values,
|
|
656
656
|
...providerOptions ? { providerOptions } : {}
|
|
657
657
|
},
|
|
658
658
|
successfulResponseHandler: createJsonResponseHandler3(
|
|
@@ -669,7 +669,8 @@ var GatewayEmbeddingModel = class {
|
|
|
669
669
|
embeddings: responseBody.embeddings,
|
|
670
670
|
usage: (_a8 = responseBody.usage) != null ? _a8 : void 0,
|
|
671
671
|
providerMetadata: responseBody.providerMetadata,
|
|
672
|
-
response: { headers: responseHeaders, body: rawValue }
|
|
672
|
+
response: { headers: responseHeaders, body: rawValue },
|
|
673
|
+
warnings: []
|
|
673
674
|
};
|
|
674
675
|
} catch (error) {
|
|
675
676
|
throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));
|
|
@@ -685,7 +686,7 @@ var GatewayEmbeddingModel = class {
|
|
|
685
686
|
};
|
|
686
687
|
}
|
|
687
688
|
};
|
|
688
|
-
var gatewayEmbeddingResponseSchema =
|
|
689
|
+
var gatewayEmbeddingResponseSchema = lazySchema5(
|
|
689
690
|
() => zodSchema5(
|
|
690
691
|
z6.object({
|
|
691
692
|
embeddings: z6.array(z6.array(z6.number())),
|
|
@@ -708,7 +709,7 @@ var GatewayImageModel = class {
|
|
|
708
709
|
constructor(modelId, config) {
|
|
709
710
|
this.modelId = modelId;
|
|
710
711
|
this.config = config;
|
|
711
|
-
this.specificationVersion = "
|
|
712
|
+
this.specificationVersion = "v3";
|
|
712
713
|
// Set a very large number to prevent client-side splitting of requests
|
|
713
714
|
this.maxImagesPerCall = Number.MAX_SAFE_INTEGER;
|
|
714
715
|
}
|
|
@@ -810,7 +811,7 @@ async function getVercelRequestId() {
|
|
|
810
811
|
import { withUserAgentSuffix } from "@ai-sdk/provider-utils";
|
|
811
812
|
|
|
812
813
|
// src/version.ts
|
|
813
|
-
var VERSION = true ? "
|
|
814
|
+
var VERSION = true ? "3.0.0" : "0.0.0-test";
|
|
814
815
|
|
|
815
816
|
// src/gateway-provider.ts
|
|
816
817
|
var AI_GATEWAY_PROTOCOL_VERSION = "0.0.1";
|
|
@@ -820,7 +821,7 @@ function createGatewayProvider(options = {}) {
|
|
|
820
821
|
let metadataCache = null;
|
|
821
822
|
const cacheRefreshMillis = (_a8 = options.metadataCacheRefreshMillis) != null ? _a8 : 1e3 * 60 * 5;
|
|
822
823
|
let lastFetchTime = 0;
|
|
823
|
-
const baseURL = (_b8 = withoutTrailingSlash(options.baseURL)) != null ? _b8 : "https://ai-gateway.vercel.sh/
|
|
824
|
+
const baseURL = (_b8 = withoutTrailingSlash(options.baseURL)) != null ? _b8 : "https://ai-gateway.vercel.sh/v3/ai";
|
|
824
825
|
const getHeaders = async () => {
|
|
825
826
|
const auth = await getGatewayAuthToken(options);
|
|
826
827
|
if (auth) {
|
|
@@ -913,6 +914,7 @@ function createGatewayProvider(options = {}) {
|
|
|
913
914
|
}
|
|
914
915
|
return createLanguageModel(modelId);
|
|
915
916
|
};
|
|
917
|
+
provider.specificationVersion = "v3";
|
|
916
918
|
provider.getAvailableModels = getAvailableModels;
|
|
917
919
|
provider.getCredits = getCredits;
|
|
918
920
|
provider.imageModel = (modelId) => {
|
|
@@ -925,7 +927,7 @@ function createGatewayProvider(options = {}) {
|
|
|
925
927
|
});
|
|
926
928
|
};
|
|
927
929
|
provider.languageModel = createLanguageModel;
|
|
928
|
-
|
|
930
|
+
const createEmbeddingModel = (modelId) => {
|
|
929
931
|
return new GatewayEmbeddingModel(modelId, {
|
|
930
932
|
provider: "gateway",
|
|
931
933
|
baseURL,
|
|
@@ -934,6 +936,8 @@ function createGatewayProvider(options = {}) {
|
|
|
934
936
|
o11yHeaders: createO11yHeaders()
|
|
935
937
|
});
|
|
936
938
|
};
|
|
939
|
+
provider.embeddingModel = createEmbeddingModel;
|
|
940
|
+
provider.textEmbeddingModel = createEmbeddingModel;
|
|
937
941
|
return provider;
|
|
938
942
|
}
|
|
939
943
|
var gateway = createGatewayProvider();
|