@ai-sdk/amazon-bedrock 5.0.0-beta.46 → 5.0.0-beta.47

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/amazon-bedrock-provider.ts","../src/amazon-bedrock-chat-language-model.ts","../src/amazon-bedrock-api-types.ts","../src/amazon-bedrock-chat-language-model-options.ts","../src/amazon-bedrock-error.ts","../src/amazon-bedrock-event-stream-response-handler.ts","../src/amazon-bedrock-event-stream-decoder.ts","../src/amazon-bedrock-prepare-tools.ts","../src/convert-amazon-bedrock-usage.ts","../src/convert-to-amazon-bedrock-chat-messages.ts","../src/amazon-bedrock-reasoning-metadata.ts","../src/normalize-tool-call-id.ts","../src/map-amazon-bedrock-finish-reason.ts","../src/amazon-bedrock-embedding-model.ts","../src/amazon-bedrock-embedding-model-options.ts","../src/amazon-bedrock-image-model.ts","../src/amazon-bedrock-image-settings.ts","../src/amazon-bedrock-sigv4-fetch.ts","../src/version.ts","../src/reranking/amazon-bedrock-reranking-model.ts","../src/reranking/amazon-bedrock-reranking-api.ts","../src/reranking/amazon-bedrock-reranking-model-options.ts"],"sourcesContent":["import { anthropicTools } from '@ai-sdk/anthropic/internal';\nimport type {\n EmbeddingModelV4,\n ImageModelV4,\n LanguageModelV4,\n ProviderV4,\n RerankingModelV4,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadOptionalSetting,\n loadSetting,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AmazonBedrockChatLanguageModel } from './amazon-bedrock-chat-language-model';\nimport type { AmazonBedrockChatModelId } from './amazon-bedrock-chat-language-model-options';\nimport { AmazonBedrockEmbeddingModel } from './amazon-bedrock-embedding-model';\nimport type { AmazonBedrockEmbeddingModelId } from './amazon-bedrock-embedding-model-options';\nimport { AmazonBedrockImageModel } from './amazon-bedrock-image-model';\nimport type { AmazonBedrockImageModelId } from './amazon-bedrock-image-settings';\nimport {\n createApiKeyFetchFunction,\n createSigV4FetchFunction,\n type AmazonBedrockCredentials,\n} from './amazon-bedrock-sigv4-fetch';\nimport { AmazonBedrockRerankingModel } from './reranking/amazon-bedrock-reranking-model';\nimport type { AmazonBedrockRerankingModelId } from './reranking/amazon-bedrock-reranking-model-options';\nimport { VERSION } from './version';\n\nexport interface AmazonBedrockProviderSettings {\n /**\n * The AWS region to use for the Bedrock provider. Defaults to the value of the\n * `AWS_REGION` environment variable.\n */\n region?: string;\n\n /**\n * API key for authenticating requests using Bearer token authentication.\n * When provided, this will be used instead of AWS SigV4 authentication.\n * Defaults to the value of the `AWS_BEARER_TOKEN_BEDROCK` environment variable.\n *\n * @example\n * ```typescript\n * // Using API key directly\n * const bedrock = createAmazonBedrock({\n * apiKey: 'your-api-key-here',\n * region: 'us-east-1'\n * });\n *\n * // Using environment variable AWS_BEARER_TOKEN_BEDROCK\n * const bedrock = createAmazonBedrock({\n * region: 'us-east-1'\n * });\n * ```\n *\n * Note: When `apiKey` is provided, it takes precedence over AWS SigV4 authentication.\n * If neither `apiKey` nor `AWS_BEARER_TOKEN_BEDROCK` environment variable is set,\n * the provider will fall back to AWS SigV4 authentication using AWS credentials.\n */\n apiKey?: string;\n\n /**\n * The AWS access key ID to use for the Bedrock provider. Defaults to the value of the\n * `AWS_ACCESS_KEY_ID` environment variable.\n */\n accessKeyId?: string;\n\n /**\n * The AWS secret access key to use for the Bedrock provider. Defaults to the value of the\n * `AWS_SECRET_ACCESS_KEY` environment variable.\n */\n secretAccessKey?: string;\n\n /**\n * The AWS session token to use for the Bedrock provider. When `accessKeyId` and\n * `secretAccessKey` are both passed explicitly as options, only this field is used\n * If either access key field is omitted and resolved from the environment, the\n * session token also falls back to `AWS_SESSION_TOKEN` when not set here.\n */\n sessionToken?: string;\n\n /**\n * Base URL for the Bedrock API calls.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * The AWS credential provider to use for the Bedrock provider to get dynamic\n * credentials similar to the AWS SDK. Setting a provider here will cause its\n * credential values to be used instead of the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` settings.\n */\n credentialProvider?: () => PromiseLike<\n Omit<AmazonBedrockCredentials, 'region'>\n >;\n\n // for testing\n generateId?: () => string;\n}\n\nexport interface AmazonBedrockProvider extends ProviderV4 {\n (modelId: AmazonBedrockChatModelId): LanguageModelV4;\n\n languageModel(modelId: AmazonBedrockChatModelId): LanguageModelV4;\n\n /**\n * Creates a model for text embeddings.\n */\n embedding(modelId: AmazonBedrockEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * Creates a model for text embeddings.\n */\n embeddingModel(modelId: AmazonBedrockEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embedding` instead.\n */\n textEmbedding(modelId: AmazonBedrockEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: AmazonBedrockEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: AmazonBedrockImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: AmazonBedrockImageModelId): ImageModelV4;\n\n /**\n * Creates a model for reranking documents.\n */\n reranking(modelId: AmazonBedrockRerankingModelId): RerankingModelV4;\n\n /**\n * Creates a model for reranking documents.\n */\n rerankingModel(modelId: AmazonBedrockRerankingModelId): RerankingModelV4;\n\n /**\n * Anthropic-specific tools that can be used with Anthropic models on Bedrock.\n */\n tools: typeof anthropicTools;\n}\n\n/**\n * Create an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n // Check for API key authentication first\n const rawApiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'AWS_BEARER_TOKEN_BEDROCK',\n });\n\n // FIX 1: Validate API key to ensure proper fallback to SigV4\n // Only use API key if it's a non-empty, non-whitespace string\n const apiKey =\n rawApiKey && rawApiKey.trim().length > 0 ? rawApiKey.trim() : undefined;\n\n // Use API key authentication if available, otherwise fall back to SigV4\n const fetchFunction = apiKey\n ? createApiKeyFetchFunction(apiKey, options.fetch)\n : createSigV4FetchFunction(async () => {\n const region = loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n });\n\n // If a credential provider is provided, use it to get the credentials.\n if (options.credentialProvider) {\n try {\n return {\n ...(await options.credentialProvider()),\n region,\n };\n } catch (error) {\n // Error handling for credential provider failures\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n throw new Error(\n `AWS credential provider failed: ${errorMessage}. ` +\n 'Please ensure your credential provider returns valid AWS credentials ' +\n 'with accessKeyId and secretAccessKey properties.',\n );\n }\n }\n\n // Enhanced error handling for SigV4 credential loading\n try {\n return {\n region,\n accessKeyId: loadSetting({\n settingValue: options.accessKeyId,\n settingName: 'accessKeyId',\n environmentVariableName: 'AWS_ACCESS_KEY_ID',\n description: 'AWS access key ID',\n }),\n secretAccessKey: loadSetting({\n settingValue: options.secretAccessKey,\n settingName: 'secretAccessKey',\n environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n description: 'AWS secret access key',\n }),\n sessionToken:\n options.accessKeyId != null && options.secretAccessKey != null\n ? options.sessionToken\n : loadOptionalSetting({\n settingValue: options.sessionToken,\n environmentVariableName: 'AWS_SESSION_TOKEN',\n }),\n };\n } catch (error) {\n // Provide helpful error message for missing AWS credentials\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (\n errorMessage.includes('AWS_ACCESS_KEY_ID') ||\n errorMessage.includes('accessKeyId')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires AWS credentials. Please provide either:\\n' +\n '1. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables\\n' +\n '2. Provide accessKeyId and secretAccessKey in options\\n' +\n '3. Use a credentialProvider function\\n' +\n '4. Use API key authentication with AWS_BEARER_TOKEN_BEDROCK or apiKey option\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n if (\n errorMessage.includes('AWS_SECRET_ACCESS_KEY') ||\n errorMessage.includes('secretAccessKey')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires both AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. ' +\n 'Please ensure both credentials are provided.\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n // Re-throw other errors as-is\n throw error;\n }\n }, options.fetch);\n\n const getHeaders = () => {\n const baseHeaders = options.headers ?? {};\n return withUserAgentSuffix(baseHeaders, `ai-sdk/amazon-bedrock/${VERSION}`);\n };\n\n const getAmazonBedrockRuntimeBaseUrl = (): string =>\n withoutTrailingSlash(\n options.baseURL ??\n `https://bedrock-runtime.${loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n })}.amazonaws.com`,\n ) ?? `https://bedrock-runtime.us-east-1.amazonaws.com`;\n\n const getAmazonBedrockAgentRuntimeBaseUrl = (): string =>\n withoutTrailingSlash(\n options.baseURL ??\n `https://bedrock-agent-runtime.${loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n })}.amazonaws.com`,\n ) ?? `https://bedrock-agent-runtime.us-west-2.amazonaws.com`;\n\n const createChatModel = (modelId: AmazonBedrockChatModelId) =>\n new AmazonBedrockChatLanguageModel(modelId, {\n baseUrl: getAmazonBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n generateId,\n });\n\n const provider = function (modelId: AmazonBedrockChatModelId) {\n if (new.target) {\n throw new Error(\n 'The Amazon Bedrock model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n const createEmbeddingModel = (modelId: AmazonBedrockEmbeddingModelId) =>\n new AmazonBedrockEmbeddingModel(modelId, {\n baseUrl: getAmazonBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n });\n\n const createImageModel = (modelId: AmazonBedrockImageModelId) =>\n new AmazonBedrockImageModel(modelId, {\n baseUrl: getAmazonBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n });\n\n const createRerankingModel = (modelId: AmazonBedrockRerankingModelId) =>\n new AmazonBedrockRerankingModel(modelId, {\n baseUrl: getAmazonBedrockAgentRuntimeBaseUrl,\n region: loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n }),\n headers: getHeaders,\n fetch: fetchFunction,\n });\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n provider.tools = anthropicTools;\n\n return provider;\n}\n\n/**\n * Default Amazon Bedrock provider instance.\n */\nexport const amazonBedrock = createAmazonBedrock();\n","import type {\n JSONObject,\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4FunctionTool,\n LanguageModelV4GenerateResult,\n LanguageModelV4Reasoning,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4ProviderMetadata,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n isCustomReasoning,\n mapReasoningToProviderBudget,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type ParseResult,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { getModelCapabilities } from '@ai-sdk/anthropic/internal';\nimport { z } from 'zod/v4';\nimport {\n BEDROCK_STOP_REASONS,\n type AmazonBedrockConverseInput,\n type AmazonBedrockStopReason,\n} from './amazon-bedrock-api-types';\nimport {\n amazonBedrockLanguageModelChatOptions,\n type AmazonBedrockLanguageModelChatOptions,\n type AmazonBedrockChatModelId,\n} from './amazon-bedrock-chat-language-model-options';\nimport { AmazonBedrockErrorSchema } from './amazon-bedrock-error';\nimport { createAmazonBedrockEventStreamResponseHandler } from './amazon-bedrock-event-stream-response-handler';\nimport { prepareTools } from './amazon-bedrock-prepare-tools';\nimport {\n convertAmazonBedrockUsage,\n type AmazonBedrockUsage,\n} from './convert-amazon-bedrock-usage';\nimport { convertToAmazonBedrockChatMessages } from './convert-to-amazon-bedrock-chat-messages';\nimport { mapAmazonBedrockFinishReason } from './map-amazon-bedrock-finish-reason';\nimport { isMistralModel, normalizeToolCallId } from './normalize-tool-call-id';\nimport type { AmazonBedrockReasoningMetadata } from './amazon-bedrock-reasoning-metadata';\n\ntype AmazonBedrockChatConfig = {\n baseUrl: () => string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n generateId: () => string;\n};\n\nexport class AmazonBedrockChatLanguageModel implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider = 'amazon-bedrock';\n\n static [WORKFLOW_SERIALIZE](model: AmazonBedrockChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: AmazonBedrockChatConfig;\n }) {\n return new AmazonBedrockChatLanguageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: AmazonBedrockChatModelId,\n private readonly config: AmazonBedrockChatConfig,\n ) {}\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n reasoning,\n providerOptions,\n }: LanguageModelV4CallOptions): Promise<{\n command: AmazonBedrockConverseInput;\n warnings: SharedV4Warning[];\n usesJsonResponseTool: boolean;\n betas: Set<string>;\n }> {\n // Parse provider options. Prefer `amazonBedrock`; fall back to legacy\n // `bedrock` key for backward compatibility.\n let amazonBedrockOptions =\n (await parseProviderOptions({\n provider: 'amazonBedrock',\n providerOptions,\n schema: amazonBedrockLanguageModelChatOptions,\n })) ??\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: amazonBedrockLanguageModelChatOptions,\n })) ??\n {};\n\n const warnings: SharedV4Warning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n });\n }\n\n if (temperature != null && temperature > 1) {\n warnings.push({\n type: 'unsupported',\n feature: 'temperature',\n details: `${temperature} exceeds bedrock maximum of 1.0. clamped to 1.0`,\n });\n temperature = 1;\n } else if (temperature != null && temperature < 0) {\n warnings.push({\n type: 'unsupported',\n feature: 'temperature',\n details: `${temperature} is below bedrock minimum of 0. clamped to 0`,\n });\n temperature = 0;\n }\n\n if (\n responseFormat != null &&\n responseFormat.type !== 'text' &&\n responseFormat.type !== 'json'\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'responseFormat',\n details: 'Only text and json response formats are supported.',\n });\n }\n\n const isAnthropicModel = this.modelId.includes('anthropic');\n const isOpenAIModel = this.modelId.startsWith('openai.');\n\n amazonBedrockOptions = resolveAmazonBedrockReasoningConfig({\n reasoning,\n amazonBedrockOptions,\n warnings,\n isAnthropicModel,\n modelId: this.modelId,\n });\n\n const isThinkingEnabled =\n amazonBedrockOptions.reasoningConfig?.type === 'enabled' ||\n amazonBedrockOptions.reasoningConfig?.type === 'adaptive';\n\n const { supportsStructuredOutput: modelSupportsStructuredOutput } =\n getModelCapabilities(this.modelId);\n\n const useNativeStructuredOutput =\n isAnthropicModel &&\n (modelSupportsStructuredOutput || isThinkingEnabled) &&\n responseFormat?.type === 'json' &&\n responseFormat.schema != null;\n\n const jsonResponseTool: LanguageModelV4FunctionTool | undefined =\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n !useNativeStructuredOutput\n ? {\n type: 'function',\n name: 'json',\n description: 'Respond with a JSON object.',\n inputSchema: responseFormat.schema,\n }\n : undefined;\n\n const { toolConfig, additionalTools, toolWarnings, betas } =\n await prepareTools({\n tools: jsonResponseTool ? [...(tools ?? []), jsonResponseTool] : tools,\n toolChoice:\n jsonResponseTool != null ? { type: 'required' } : toolChoice,\n modelId: this.modelId,\n });\n\n warnings.push(...toolWarnings);\n\n if (additionalTools) {\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n ...additionalTools,\n };\n }\n\n if (betas.size > 0 || amazonBedrockOptions.anthropicBeta) {\n const existingBetas = amazonBedrockOptions.anthropicBeta ?? [];\n const mergedBetas =\n betas.size > 0\n ? [...existingBetas, ...Array.from(betas)]\n : existingBetas;\n\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n anthropic_beta: mergedBetas,\n };\n }\n\n const thinkingType = amazonBedrockOptions.reasoningConfig?.type;\n const thinkingBudget =\n thinkingType === 'enabled'\n ? amazonBedrockOptions.reasoningConfig?.budgetTokens\n : undefined;\n const thinkingDisplay =\n thinkingType === 'adaptive'\n ? amazonBedrockOptions.reasoningConfig?.display\n : undefined;\n const isAnthropicThinkingEnabled = isAnthropicModel && isThinkingEnabled;\n\n const inferenceConfig = {\n ...(maxOutputTokens != null && { maxTokens: maxOutputTokens }),\n ...(temperature != null && { temperature }),\n ...(topP != null && { topP }),\n ...(topK != null && { topK }),\n ...(stopSequences != null && { stopSequences }),\n };\n\n if (isAnthropicThinkingEnabled) {\n if (thinkingBudget != null) {\n if (inferenceConfig.maxTokens != null) {\n inferenceConfig.maxTokens += thinkingBudget;\n } else {\n inferenceConfig.maxTokens = thinkingBudget + 4096; // Default + thinking budget maxTokens = 4096, TODO update default in v5\n }\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n thinking: {\n type: 'enabled',\n budget_tokens: thinkingBudget,\n },\n };\n } else if (thinkingType === 'adaptive') {\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n thinking: {\n type: 'adaptive',\n ...(thinkingDisplay != null && { display: thinkingDisplay }),\n },\n };\n }\n } else if (!isAnthropicModel) {\n if (amazonBedrockOptions.reasoningConfig?.budgetTokens != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'budgetTokens',\n details:\n 'budgetTokens applies only to Anthropic models on Bedrock and will be ignored for this model.',\n });\n }\n if (thinkingType === 'adaptive') {\n warnings.push({\n type: 'unsupported',\n feature: 'adaptive thinking',\n details:\n 'adaptive thinking type applies only to Anthropic models on Bedrock.',\n });\n }\n }\n\n const maxReasoningEffort =\n amazonBedrockOptions.reasoningConfig?.maxReasoningEffort;\n\n if (maxReasoningEffort != null) {\n if (isAnthropicModel) {\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n output_config: {\n ...amazonBedrockOptions.additionalModelRequestFields?.output_config,\n effort: maxReasoningEffort,\n },\n };\n } else if (isOpenAIModel) {\n // OpenAI models on Bedrock expect `reasoning_effort` as a flat value\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n reasoning_effort: maxReasoningEffort,\n };\n } else {\n // other models (such as Nova 2) use reasoningConfig format\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n reasoningConfig: {\n ...(thinkingType != null &&\n thinkingType !== 'adaptive' && { type: thinkingType }),\n ...(thinkingBudget != null && { budgetTokens: thinkingBudget }),\n maxReasoningEffort,\n },\n };\n }\n }\n\n if (useNativeStructuredOutput) {\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n output_config: {\n ...amazonBedrockOptions.additionalModelRequestFields?.output_config,\n format: {\n type: 'json_schema',\n schema: responseFormat!.schema,\n },\n },\n };\n }\n\n if (isAnthropicThinkingEnabled && inferenceConfig.temperature != null) {\n delete inferenceConfig.temperature;\n warnings.push({\n type: 'unsupported',\n feature: 'temperature',\n details: 'temperature is not supported when thinking is enabled',\n });\n }\n\n if (isAnthropicThinkingEnabled && inferenceConfig.topP != null) {\n delete inferenceConfig.topP;\n warnings.push({\n type: 'unsupported',\n feature: 'topP',\n details: 'topP is not supported when thinking is enabled',\n });\n }\n\n if (isAnthropicThinkingEnabled && inferenceConfig.topK != null) {\n delete inferenceConfig.topK;\n warnings.push({\n type: 'unsupported',\n feature: 'topK',\n details: 'topK is not supported when thinking is enabled',\n });\n }\n\n // Filter tool content from prompt when no tools are available\n const hasAnyTools = (toolConfig.tools?.length ?? 0) > 0 || additionalTools;\n let filteredPrompt = prompt;\n\n if (!hasAnyTools) {\n const hasToolContent = prompt.some(\n message =>\n 'content' in message &&\n Array.isArray(message.content) &&\n message.content.some(\n part => part.type === 'tool-call' || part.type === 'tool-result',\n ),\n );\n\n if (hasToolContent) {\n filteredPrompt = prompt\n .map(message =>\n message.role === 'system'\n ? message\n : {\n ...message,\n content: message.content.filter(\n part =>\n part.type !== 'tool-call' && part.type !== 'tool-result',\n ),\n },\n )\n .filter(\n message => message.role === 'system' || message.content.length > 0,\n ) as typeof prompt;\n\n warnings.push({\n type: 'unsupported',\n feature: 'toolContent',\n details:\n 'Tool calls and results removed from conversation because Bedrock does not support tool content without active tools.',\n });\n }\n }\n\n const isMistral = isMistralModel(this.modelId);\n const { system, messages } = await convertToAmazonBedrockChatMessages(\n filteredPrompt,\n isMistral,\n );\n\n // Filter out reasoningConfig from amazonBedrock provider options to prevent sending it to Bedrock API\n const {\n reasoningConfig: _,\n additionalModelRequestFields: __,\n serviceTier: ___,\n ...filteredAmazonBedrockOptions\n } = providerOptions?.amazonBedrock ?? providerOptions?.bedrock ?? {};\n\n const additionalModelResponseFieldPaths = isAnthropicModel\n ? ['/delta/stop_sequence']\n : undefined;\n\n return {\n command: {\n system,\n messages,\n additionalModelRequestFields:\n amazonBedrockOptions.additionalModelRequestFields,\n ...(additionalModelResponseFieldPaths && {\n additionalModelResponseFieldPaths,\n }),\n ...(Object.keys(inferenceConfig).length > 0 && {\n inferenceConfig,\n }),\n ...(amazonBedrockOptions.serviceTier != null && {\n serviceTier: {\n type: amazonBedrockOptions.serviceTier,\n },\n }),\n ...filteredAmazonBedrockOptions,\n ...(toolConfig.tools !== undefined && toolConfig.tools.length > 0\n ? { toolConfig }\n : {}),\n },\n warnings,\n usesJsonResponseTool: jsonResponseTool != null,\n betas,\n };\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // no supported urls for bedrock\n };\n\n private async getHeaders({\n headers,\n }: {\n headers: Record<string, string | undefined> | undefined;\n }) {\n return combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n headers,\n );\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const {\n command: args,\n warnings,\n usesJsonResponseTool,\n } = await this.getArgs(options);\n\n const url = `${this.getUrl(this.modelId)}/converse`;\n const { value: response, responseHeaders } = await postJsonToApi({\n url,\n headers: await this.getHeaders({ headers: options.headers }),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: AmazonBedrockErrorSchema,\n errorToMessage: error => `${error.message ?? 'Unknown error'}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n AmazonBedrockResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV4Content> = [];\n let isJsonResponseFromTool = false;\n\n // map response content to content array\n for (const part of response.output.message.content) {\n // text\n if (part.text != null) {\n content.push({ type: 'text', text: part.text });\n }\n\n // reasoning\n if (part.reasoningContent) {\n if ('reasoningText' in part.reasoningContent) {\n const reasoning: LanguageModelV4Reasoning = {\n type: 'reasoning',\n text: part.reasoningContent.reasoningText.text,\n };\n\n if (part.reasoningContent.reasoningText.signature) {\n const reasoningPayload: AmazonBedrockReasoningMetadata = {\n signature: part.reasoningContent.reasoningText.signature,\n };\n reasoning.providerMetadata = {\n amazonBedrock: reasoningPayload,\n bedrock: reasoningPayload,\n };\n }\n\n content.push(reasoning);\n } else if ('redactedReasoning' in part.reasoningContent) {\n const redactedPayload: AmazonBedrockReasoningMetadata = {\n redactedData: part.reasoningContent.redactedReasoning.data ?? '',\n };\n content.push({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n amazonBedrock: redactedPayload,\n bedrock: redactedPayload,\n },\n });\n }\n }\n\n // tool calls\n if (part.toolUse) {\n const isJsonResponseTool =\n usesJsonResponseTool && part.toolUse.name === 'json';\n\n if (isJsonResponseTool) {\n isJsonResponseFromTool = true;\n // when a json response tool is used, the tool call becomes the text:\n content.push({\n type: 'text',\n text: JSON.stringify(part.toolUse.input),\n });\n } else {\n const isMistral = isMistralModel(this.modelId);\n const rawToolCallId =\n part.toolUse?.toolUseId ?? this.config.generateId();\n content.push({\n type: 'tool-call' as const,\n toolCallId: normalizeToolCallId(rawToolCallId, isMistral),\n toolName: part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n input: JSON.stringify(part.toolUse?.input ?? {}),\n });\n }\n }\n }\n\n // provider metadata:\n const stopSequence =\n response.additionalModelResponseFields?.delta?.stop_sequence ?? null;\n\n const providerMetadataPayload =\n response.trace ||\n response.usage ||\n response.performanceConfig ||\n response.serviceTier ||\n isJsonResponseFromTool ||\n stopSequence\n ? {\n ...(response.trace && typeof response.trace === 'object'\n ? { trace: response.trace as JSONObject }\n : {}),\n ...(response.performanceConfig && {\n performanceConfig: response.performanceConfig,\n }),\n ...(response.serviceTier && {\n serviceTier: response.serviceTier,\n }),\n ...((response.usage?.cacheWriteInputTokens != null ||\n response.usage?.cacheDetails != null) && {\n usage: {\n ...(response.usage.cacheWriteInputTokens != null && {\n cacheWriteInputTokens: response.usage.cacheWriteInputTokens,\n }),\n ...(response.usage.cacheDetails != null && {\n cacheDetails: response.usage.cacheDetails,\n }),\n },\n }),\n ...(isJsonResponseFromTool && { isJsonResponseFromTool: true }),\n stopSequence,\n }\n : undefined;\n\n const providerMetadata = providerMetadataPayload\n ? {\n amazonBedrock: providerMetadataPayload,\n bedrock: providerMetadataPayload,\n }\n : undefined;\n\n return {\n content,\n finishReason: {\n unified: mapAmazonBedrockFinishReason(\n response.stopReason as AmazonBedrockStopReason,\n isJsonResponseFromTool,\n ),\n raw: response.stopReason ?? undefined,\n },\n usage: convertAmazonBedrockUsage(response.usage),\n response: {\n id: responseHeaders?.['x-amzn-requestid'] ?? undefined,\n timestamp:\n responseHeaders?.['date'] != null\n ? new Date(responseHeaders['date'])\n : undefined,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n warnings,\n ...(providerMetadata && { providerMetadata }),\n };\n }\n\n async doStream(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const {\n command: args,\n warnings,\n usesJsonResponseTool,\n } = await this.getArgs(options);\n const modelId = this.modelId;\n const isMistral = isMistralModel(modelId);\n const url = `${this.getUrl(modelId)}/converse-stream`;\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url,\n headers: await this.getHeaders({ headers: options.headers }),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: AmazonBedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createAmazonBedrockEventStreamResponseHandler(\n AmazonBedrockStreamSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let usage: AmazonBedrockUsage | undefined = undefined;\n let providerMetadata: SharedV4ProviderMetadata | undefined = undefined;\n let isJsonResponseFromTool = false;\n let stopSequence: string | null = null;\n\n const contentBlocks: Record<\n number,\n | {\n type: 'tool-call';\n toolCallId: string;\n toolName: string;\n jsonText: string;\n isJsonResponseTool?: boolean;\n }\n | { type: 'text' | 'reasoning' }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof AmazonBedrockStreamSchema>>,\n LanguageModelV4StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n controller.enqueue({\n type: 'response-metadata',\n id: responseHeaders?.['x-amzn-requestid'] ?? undefined,\n timestamp:\n responseHeaders?.['date'] != null\n ? new Date(responseHeaders['date'])\n : undefined,\n modelId,\n });\n },\n\n transform(chunk, controller) {\n function enqueueError(amazonBedrockError: Record<string, any>) {\n finishReason = { unified: 'error', raw: undefined };\n controller.enqueue({ type: 'error', error: amazonBedrockError });\n }\n\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n enqueueError(chunk.error);\n return;\n }\n\n const value = chunk.value;\n\n // handle errors:\n if (value.internalServerException) {\n enqueueError(value.internalServerException);\n return;\n }\n if (value.modelStreamErrorException) {\n enqueueError(value.modelStreamErrorException);\n return;\n }\n if (value.throttlingException) {\n enqueueError(value.throttlingException);\n return;\n }\n if (value.validationException) {\n enqueueError(value.validationException);\n return;\n }\n\n if (value.messageStop) {\n finishReason = {\n unified: mapAmazonBedrockFinishReason(\n value.messageStop.stopReason as AmazonBedrockStopReason,\n isJsonResponseFromTool,\n ),\n raw: value.messageStop.stopReason ?? undefined,\n };\n stopSequence =\n value.messageStop.additionalModelResponseFields?.delta\n ?.stop_sequence ?? null;\n }\n\n if (value.metadata) {\n if (value.metadata.usage) {\n usage = value.metadata.usage;\n }\n\n const cacheUsage =\n value.metadata.usage?.cacheWriteInputTokens != null ||\n value.metadata.usage?.cacheDetails != null\n ? {\n usage: {\n ...(value.metadata.usage?.cacheWriteInputTokens !=\n null && {\n cacheWriteInputTokens:\n value.metadata.usage.cacheWriteInputTokens,\n }),\n ...(value.metadata.usage?.cacheDetails != null && {\n cacheDetails: value.metadata.usage.cacheDetails,\n }),\n },\n }\n : undefined;\n\n const trace = value.metadata.trace\n ? {\n trace: value.metadata.trace as JSONObject,\n }\n : undefined;\n\n if (\n cacheUsage ||\n trace ||\n value.metadata.performanceConfig ||\n value.metadata.serviceTier\n ) {\n const metadataPayload = {\n ...cacheUsage,\n ...trace,\n ...(value.metadata.performanceConfig && {\n performanceConfig: value.metadata.performanceConfig,\n }),\n ...(value.metadata.serviceTier && {\n serviceTier: value.metadata.serviceTier,\n }),\n };\n providerMetadata = {\n amazonBedrock: metadataPayload,\n bedrock: metadataPayload,\n };\n }\n }\n\n if (\n value.contentBlockStart?.contentBlockIndex != null &&\n !value.contentBlockStart?.start?.toolUse\n ) {\n const blockIndex = value.contentBlockStart.contentBlockIndex;\n contentBlocks[blockIndex] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: String(blockIndex),\n });\n }\n\n if (\n value.contentBlockDelta?.delta &&\n 'text' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.text\n ) {\n const blockIndex = value.contentBlockDelta.contentBlockIndex || 0;\n\n if (contentBlocks[blockIndex] == null) {\n contentBlocks[blockIndex] = { type: 'text' };\n\n controller.enqueue({\n type: 'text-start',\n id: String(blockIndex),\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: String(blockIndex),\n delta: value.contentBlockDelta.delta.text,\n });\n }\n\n if (value.contentBlockStop?.contentBlockIndex != null) {\n const blockIndex = value.contentBlockStop.contentBlockIndex;\n const contentBlock = contentBlocks[blockIndex];\n\n if (contentBlock != null) {\n if (contentBlock.type === 'reasoning') {\n controller.enqueue({\n type: 'reasoning-end',\n id: String(blockIndex),\n });\n } else if (contentBlock.type === 'text') {\n controller.enqueue({\n type: 'text-end',\n id: String(blockIndex),\n });\n } else if (contentBlock.type === 'tool-call') {\n if (contentBlock.isJsonResponseTool) {\n isJsonResponseFromTool = true;\n // when this specific tool is the json response tool, emit the tool input as text\n controller.enqueue({\n type: 'text-start',\n id: String(blockIndex),\n });\n controller.enqueue({\n type: 'text-delta',\n id: String(blockIndex),\n delta: contentBlock.jsonText,\n });\n controller.enqueue({\n type: 'text-end',\n id: String(blockIndex),\n });\n } else {\n controller.enqueue({\n type: 'tool-input-end',\n id: contentBlock.toolCallId,\n });\n controller.enqueue({\n type: 'tool-call',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n input:\n contentBlock.jsonText === ''\n ? '{}'\n : contentBlock.jsonText,\n });\n }\n }\n\n delete contentBlocks[blockIndex];\n }\n }\n\n if (\n value.contentBlockDelta?.delta &&\n 'reasoningContent' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.reasoningContent\n ) {\n const blockIndex = value.contentBlockDelta.contentBlockIndex || 0;\n const reasoningContent =\n value.contentBlockDelta.delta.reasoningContent;\n\n if ('text' in reasoningContent && reasoningContent.text) {\n if (contentBlocks[blockIndex] == null) {\n contentBlocks[blockIndex] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: String(blockIndex),\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: String(blockIndex),\n delta: reasoningContent.text,\n });\n } else if (\n 'signature' in reasoningContent &&\n reasoningContent.signature\n ) {\n if (contentBlocks[blockIndex] == null) {\n contentBlocks[blockIndex] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: String(blockIndex),\n });\n }\n {\n const signaturePayload: AmazonBedrockReasoningMetadata = {\n signature: reasoningContent.signature,\n };\n controller.enqueue({\n type: 'reasoning-delta',\n id: String(blockIndex),\n delta: '',\n providerMetadata: {\n amazonBedrock: signaturePayload,\n bedrock: signaturePayload,\n },\n });\n }\n } else if ('data' in reasoningContent && reasoningContent.data) {\n if (contentBlocks[blockIndex] == null) {\n contentBlocks[blockIndex] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: String(blockIndex),\n });\n }\n {\n const redactedPayload: AmazonBedrockReasoningMetadata = {\n redactedData: reasoningContent.data,\n };\n controller.enqueue({\n type: 'reasoning-delta',\n id: String(blockIndex),\n delta: '',\n providerMetadata: {\n amazonBedrock: redactedPayload,\n bedrock: redactedPayload,\n },\n });\n }\n }\n }\n\n const contentBlockStart = value.contentBlockStart;\n if (contentBlockStart?.start?.toolUse != null) {\n const toolUse = contentBlockStart.start.toolUse;\n const blockIndex = contentBlockStart.contentBlockIndex!;\n const isJsonResponseTool =\n usesJsonResponseTool && toolUse.name === 'json';\n\n const normalizedToolCallId = normalizeToolCallId(\n toolUse.toolUseId!,\n isMistral,\n );\n contentBlocks[blockIndex] = {\n type: 'tool-call',\n toolCallId: normalizedToolCallId,\n toolName: toolUse.name!,\n jsonText: '',\n isJsonResponseTool,\n };\n\n // when this specific tool is the json response tool, we don't emit tool events\n if (!isJsonResponseTool) {\n controller.enqueue({\n type: 'tool-input-start',\n id: normalizedToolCallId,\n toolName: toolUse.name!,\n });\n }\n }\n\n const contentBlockDelta = value.contentBlockDelta;\n if (\n contentBlockDelta?.delta &&\n 'toolUse' in contentBlockDelta.delta &&\n contentBlockDelta.delta.toolUse\n ) {\n const blockIndex = contentBlockDelta.contentBlockIndex!;\n const contentBlock = contentBlocks[blockIndex];\n\n if (contentBlock?.type === 'tool-call') {\n const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n // when this specific tool is the json response tool, we don't emit tool events\n if (!contentBlock.isJsonResponseTool) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: contentBlock.toolCallId,\n delta: delta,\n });\n }\n\n contentBlock.jsonText += delta;\n }\n }\n },\n flush(controller) {\n // Update provider metadata with isJsonResponseFromTool and stopSequence if needed\n if (isJsonResponseFromTool || stopSequence != null) {\n const updatePayload = {\n ...(providerMetadata?.amazonBedrock ??\n providerMetadata?.bedrock),\n ...(isJsonResponseFromTool && {\n isJsonResponseFromTool: true,\n }),\n stopSequence,\n };\n providerMetadata = {\n ...providerMetadata,\n amazonBedrock: updatePayload,\n bedrock: updatePayload,\n };\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertAmazonBedrockUsage(usage),\n ...(providerMetadata && { providerMetadata }),\n });\n },\n }),\n ),\n // TODO request?\n response: { headers: responseHeaders },\n };\n }\n\n private getUrl(modelId: string) {\n const encodedModelId = encodeURIComponent(modelId);\n return `${this.config.baseUrl()}/model/${encodedModelId}`;\n }\n}\n\nconst AmazonBedrockStopReasonSchema = z.union([\n z.enum(BEDROCK_STOP_REASONS),\n z.string(),\n]);\n\nconst AmazonBedrockAdditionalModelResponseFieldsSchema = z\n .object({\n delta: z\n .object({\n stop_sequence: z.string().nullish(),\n })\n .nullish(),\n })\n .catchall(z.unknown());\n\nconst AmazonBedrockToolUseSchema = z.object({\n toolUseId: z.string(),\n name: z.string(),\n input: z.unknown(),\n});\n\nconst AmazonBedrockReasoningTextSchema = z.object({\n signature: z.string().nullish(),\n text: z.string(),\n});\n\nconst AmazonBedrockRedactedReasoningSchema = z.object({\n data: z.string(),\n});\n\n// limited version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst AmazonBedrockResponseSchema = z.object({\n metrics: z\n .object({\n latencyMs: z.number(),\n })\n .nullish(),\n output: z.object({\n message: z.object({\n content: z.array(\n z.object({\n text: z.string().nullish(),\n toolUse: AmazonBedrockToolUseSchema.nullish(),\n reasoningContent: z\n .union([\n z.object({\n reasoningText: AmazonBedrockReasoningTextSchema,\n }),\n z.object({\n redactedReasoning: AmazonBedrockRedactedReasoningSchema,\n }),\n ])\n .nullish(),\n }),\n ),\n role: z.string(),\n }),\n }),\n stopReason: AmazonBedrockStopReasonSchema,\n additionalModelResponseFields:\n AmazonBedrockAdditionalModelResponseFieldsSchema.nullish(),\n trace: z.unknown().nullish(),\n performanceConfig: z.object({ latency: z.string() }).nullish(),\n serviceTier: z.object({ type: z.string() }).nullish(),\n usage: z.object({\n inputTokens: z.number(),\n outputTokens: z.number(),\n totalTokens: z.number(),\n cacheReadInputTokens: z.number().nullish(),\n cacheWriteInputTokens: z.number().nullish(),\n cacheDetails: z\n .array(z.object({ inputTokens: z.number(), ttl: z.string() }))\n .nullish(),\n }),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst AmazonBedrockStreamSchema = z.object({\n contentBlockDelta: z\n .object({\n contentBlockIndex: z.number(),\n delta: z\n .union([\n z.object({ text: z.string() }),\n z.object({ toolUse: z.object({ input: z.string() }) }),\n z.object({\n reasoningContent: z.object({ text: z.string() }),\n }),\n z.object({\n reasoningContent: z.object({\n signature: z.string(),\n }),\n }),\n z.object({\n reasoningContent: z.object({ data: z.string() }),\n }),\n ])\n .nullish(),\n })\n .nullish(),\n contentBlockStart: z\n .object({\n contentBlockIndex: z.number(),\n start: z\n .object({\n toolUse: AmazonBedrockToolUseSchema.nullish(),\n })\n .nullish(),\n })\n .nullish(),\n contentBlockStop: z\n .object({\n contentBlockIndex: z.number(),\n })\n .nullish(),\n internalServerException: z.record(z.string(), z.unknown()).nullish(),\n messageStop: z\n .object({\n additionalModelResponseFields:\n AmazonBedrockAdditionalModelResponseFieldsSchema.nullish(),\n stopReason: AmazonBedrockStopReasonSchema,\n })\n .nullish(),\n metadata: z\n .object({\n trace: z.unknown().nullish(),\n performanceConfig: z.object({ latency: z.string() }).nullish(),\n serviceTier: z.object({ type: z.string() }).nullish(),\n usage: z\n .object({\n cacheReadInputTokens: z.number().nullish(),\n cacheWriteInputTokens: z.number().nullish(),\n cacheDetails: z\n .array(z.object({ inputTokens: z.number(), ttl: z.string() }))\n .nullish(),\n inputTokens: z.number(),\n outputTokens: z.number(),\n })\n .nullish(),\n })\n .nullish(),\n modelStreamErrorException: z.record(z.string(), z.unknown()).nullish(),\n throttlingException: z.record(z.string(), z.unknown()).nullish(),\n validationException: z.record(z.string(), z.unknown()).nullish(),\n});\n\nexport {\n amazonBedrockReasoningMetadataSchema,\n type AmazonBedrockReasoningMetadata,\n} from './amazon-bedrock-reasoning-metadata';\n\nconst amazonBedrockReasoningEffortMap: Partial<\n Record<string, 'low' | 'medium' | 'high' | 'max'>\n> = {\n minimal: 'low',\n low: 'low',\n medium: 'medium',\n high: 'high',\n xhigh: 'max',\n};\n\nfunction resolveAmazonBedrockReasoningConfig({\n reasoning,\n amazonBedrockOptions,\n warnings,\n isAnthropicModel,\n modelId,\n}: {\n reasoning: LanguageModelV4CallOptions['reasoning'];\n amazonBedrockOptions: AmazonBedrockLanguageModelChatOptions;\n warnings: SharedV4Warning[];\n isAnthropicModel: boolean;\n modelId: string;\n}): AmazonBedrockLanguageModelChatOptions {\n if (!isCustomReasoning(reasoning)) {\n return amazonBedrockOptions;\n }\n\n const result = { ...amazonBedrockOptions };\n\n if (isAnthropicModel) {\n const capabilities = getModelCapabilities(modelId);\n\n if (reasoning === 'none') {\n result.reasoningConfig = { type: 'disabled' };\n } else if (capabilities.supportsAdaptiveThinking) {\n const effort = mapReasoningToProviderEffort({\n reasoning,\n effortMap: amazonBedrockReasoningEffortMap,\n warnings,\n });\n result.reasoningConfig = {\n type: 'adaptive',\n maxReasoningEffort: effort,\n ...amazonBedrockOptions.reasoningConfig,\n };\n } else {\n const budgetTokens = mapReasoningToProviderBudget({\n reasoning,\n maxOutputTokens: capabilities.maxOutputTokens,\n maxReasoningBudget: capabilities.maxOutputTokens,\n warnings,\n });\n if (budgetTokens != null) {\n result.reasoningConfig = {\n type: 'enabled',\n budgetTokens,\n ...amazonBedrockOptions.reasoningConfig,\n };\n }\n }\n } else if (reasoning !== 'none') {\n const effort = mapReasoningToProviderEffort({\n reasoning,\n effortMap: amazonBedrockReasoningEffortMap,\n warnings,\n });\n result.reasoningConfig = {\n maxReasoningEffort: effort,\n ...amazonBedrockOptions.reasoningConfig,\n };\n }\n\n /*\n * Mirror anthropic-messages-language-model.ts: when the merged type ends up\n * 'disabled' (user override combined with a non-none reasoning), strip\n * derived effort/budget so downstream does not emit output_config.effort\n * alongside disabled thinking.\n */\n if (result.reasoningConfig?.type === 'disabled') {\n delete result.reasoningConfig.maxReasoningEffort;\n delete result.reasoningConfig.budgetTokens;\n }\n\n return result;\n}\n","import type { JSONObject } from '@ai-sdk/provider';\n\nexport interface AmazonBedrockConverseInput {\n system?: AmazonBedrockSystemMessages;\n messages: AmazonBedrockMessages;\n toolConfig?: AmazonBedrockToolConfiguration;\n inferenceConfig?: {\n maxOutputTokens?: number;\n temperature?: number;\n topP?: number;\n topK?: number;\n stopSequences?: string[];\n };\n additionalModelRequestFields?: Record<string, unknown>;\n additionalModelResponseFieldPaths?: string[];\n serviceTier?: {\n type: string;\n };\n guardrailConfig?:\n | AmazonBedrockGuardrailConfiguration\n | AmazonBedrockGuardrailStreamConfiguration\n | undefined;\n}\n\nexport type AmazonBedrockSystemMessages =\n Array<AmazonBedrockSystemContentBlock>;\n\nexport type AmazonBedrockMessages = Array<\n AmazonBedrockAssistantMessage | AmazonBedrockUserMessage\n>;\n\nexport interface AmazonBedrockAssistantMessage {\n role: 'assistant';\n content: Array<AmazonBedrockContentBlock>;\n}\n\nexport interface AmazonBedrockUserMessage {\n role: 'user';\n content: Array<AmazonBedrockContentBlock>;\n}\n\n/**\n * Cache TTL options for Bedrock prompt caching.\n * @see https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html\n *\n * - '5m': 5-minute TTL (default, supported by all models)\n * - '1h': 1-hour TTL (supported by Claude Opus 4.5, Claude Haiku 4.5, Claude Sonnet 4.5)\n */\nexport type AmazonBedrockCacheTTL = '5m' | '1h';\n\nexport type AmazonBedrockCachePoint = {\n cachePoint: { type: 'default'; ttl?: AmazonBedrockCacheTTL };\n};\n\n/**\n * Creates a cache point with an optional TTL.\n * @param ttl - Cache TTL ('5m' or '1h'). If not provided, uses the default 5-minute TTL.\n */\nexport function createAmazonBedrockCachePoint(\n ttl?: AmazonBedrockCacheTTL,\n): AmazonBedrockCachePoint {\n return {\n cachePoint: { type: 'default', ttl },\n };\n}\n\nexport type AmazonBedrockSystemContentBlock =\n | { text: string }\n | AmazonBedrockCachePoint;\n\nexport interface AmazonBedrockGuardrailConfiguration {\n guardrails?: Array<{\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n }>;\n}\n\nexport type AmazonBedrockGuardrailStreamConfiguration =\n AmazonBedrockGuardrailConfiguration;\n\nexport interface AmazonBedrockToolInputSchema {\n json: Record<string, unknown>;\n}\n\nexport interface AmazonBedrockTool {\n toolSpec: {\n name: string;\n description?: string;\n strict?: boolean;\n inputSchema: { json: JSONObject };\n };\n}\n\nexport interface AmazonBedrockToolConfiguration {\n tools?: Array<AmazonBedrockTool | AmazonBedrockCachePoint>;\n toolChoice?:\n | { tool: { name: string } }\n | { auto: {} }\n | { any: {} }\n | undefined;\n}\n\nexport const BEDROCK_STOP_REASONS = [\n 'stop',\n 'stop_sequence',\n 'end_turn',\n 'length',\n 'max_tokens',\n 'content-filter',\n 'content_filtered',\n 'guardrail_intervened',\n 'tool-calls',\n 'tool_use',\n] as const;\n\nexport type AmazonBedrockStopReason = (typeof BEDROCK_STOP_REASONS)[number];\n\n/**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ImageBlock.html\n */\nexport const BEDROCK_IMAGE_MIME_TYPES = {\n 'image/jpeg': 'jpeg',\n 'image/png': 'png',\n 'image/gif': 'gif',\n 'image/webp': 'webp',\n} as const;\ntype AmazonBedrockImageFormats = typeof BEDROCK_IMAGE_MIME_TYPES;\nexport type AmazonBedrockImageFormat =\n AmazonBedrockImageFormats[keyof AmazonBedrockImageFormats];\nexport type AmazonBedrockImageMimeType = keyof AmazonBedrockImageFormats;\n\n/**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_DocumentBlock.html\n */\nexport const BEDROCK_DOCUMENT_MIME_TYPES = {\n 'application/pdf': 'pdf',\n 'text/csv': 'csv',\n 'application/msword': 'doc',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n 'docx',\n 'application/vnd.ms-excel': 'xls',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',\n 'text/html': 'html',\n 'text/plain': 'txt',\n 'text/markdown': 'md',\n} as const;\ntype AmazonBedrockDocumentFormats = typeof BEDROCK_DOCUMENT_MIME_TYPES;\nexport type AmazonBedrockDocumentFormat =\n AmazonBedrockDocumentFormats[keyof AmazonBedrockDocumentFormats];\nexport type AmazonBedrockDocumentMimeType = keyof AmazonBedrockDocumentFormats;\n\nexport interface AmazonBedrockDocumentBlock {\n document: {\n format: AmazonBedrockDocumentFormat;\n name: string;\n source: {\n bytes: string;\n };\n citations?: {\n enabled: boolean;\n };\n };\n}\n\nexport interface AmazonBedrockGuardrailConverseContentBlock {\n guardContent: unknown;\n}\n\nexport interface AmazonBedrockImageBlock {\n image: {\n format: AmazonBedrockImageFormat;\n source: {\n bytes: string;\n };\n };\n}\n\nexport interface AmazonBedrockToolResultBlock {\n toolResult: {\n toolUseId: string;\n content: Array<AmazonBedrockTextBlock | AmazonBedrockImageBlock>;\n };\n}\n\nexport interface AmazonBedrockToolUseBlock {\n toolUse: {\n toolUseId: string;\n name: string;\n input: Record<string, unknown>;\n };\n}\n\nexport interface AmazonBedrockTextBlock {\n text: string;\n}\n\nexport interface AmazonBedrockReasoningContentBlock {\n reasoningContent: {\n reasoningText: {\n text: string;\n signature?: string;\n };\n };\n}\n\nexport interface AmazonBedrockRedactedReasoningContentBlock {\n reasoningContent: {\n redactedReasoning: {\n data: string;\n };\n };\n}\n\nexport type AmazonBedrockContentBlock =\n | AmazonBedrockDocumentBlock\n | AmazonBedrockGuardrailConverseContentBlock\n | AmazonBedrockImageBlock\n | AmazonBedrockTextBlock\n | AmazonBedrockToolResultBlock\n | AmazonBedrockToolUseBlock\n | AmazonBedrockReasoningContentBlock\n | AmazonBedrockRedactedReasoningContentBlock\n | AmazonBedrockCachePoint;\n","import { z } from 'zod/v4';\n\n// https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html\nexport type AmazonBedrockChatModelId =\n | 'amazon.titan-tg1-large'\n | 'amazon.titan-text-express-v1'\n | 'anthropic.claude-v2'\n | 'anthropic.claude-v2:1'\n | 'anthropic.claude-instant-v1'\n | 'anthropic.claude-opus-4-7'\n | 'anthropic.claude-opus-4-6-v1'\n | 'anthropic.claude-sonnet-4-6-v1'\n | 'anthropic.claude-opus-4-5-20251101-v1:0'\n | 'anthropic.claude-haiku-4-5-20251001-v1:0'\n | 'anthropic.claude-sonnet-4-5-20250929-v1:0'\n | 'anthropic.claude-sonnet-4-20250514-v1:0'\n | 'anthropic.claude-opus-4-20250514-v1:0'\n | 'anthropic.claude-opus-4-1-20250805-v1:0'\n | 'anthropic.claude-3-7-sonnet-20250219-v1:0'\n | 'anthropic.claude-3-5-sonnet-20240620-v1:0'\n | 'anthropic.claude-3-5-sonnet-20241022-v2:0'\n | 'anthropic.claude-3-5-haiku-20241022-v1:0'\n | 'anthropic.claude-3-sonnet-20240229-v1:0'\n | 'anthropic.claude-3-haiku-20240307-v1:0'\n | 'anthropic.claude-3-opus-20240229-v1:0'\n | 'cohere.command-text-v14'\n | 'cohere.command-light-text-v14'\n | 'cohere.command-r-v1:0'\n | 'cohere.command-r-plus-v1:0'\n | 'meta.llama3-70b-instruct-v1:0'\n | 'meta.llama3-8b-instruct-v1:0'\n | 'meta.llama3-1-405b-instruct-v1:0'\n | 'meta.llama3-1-70b-instruct-v1:0'\n | 'meta.llama3-1-8b-instruct-v1:0'\n | 'meta.llama3-2-11b-instruct-v1:0'\n | 'meta.llama3-2-1b-instruct-v1:0'\n | 'meta.llama3-2-3b-instruct-v1:0'\n | 'meta.llama3-2-90b-instruct-v1:0'\n | 'mistral.mistral-7b-instruct-v0:2'\n | 'mistral.mixtral-8x7b-instruct-v0:1'\n | 'mistral.mistral-large-2402-v1:0'\n | 'mistral.mistral-small-2402-v1:0'\n | 'openai.gpt-oss-120b-1:0'\n | 'openai.gpt-oss-20b-1:0'\n | 'amazon.titan-text-express-v1'\n | 'amazon.titan-text-lite-v1'\n | 'us.amazon.nova-premier-v1:0'\n | 'us.amazon.nova-pro-v1:0'\n | 'us.amazon.nova-micro-v1:0'\n | 'us.amazon.nova-lite-v1:0'\n | 'us.anthropic.claude-3-sonnet-20240229-v1:0'\n | 'us.anthropic.claude-3-opus-20240229-v1:0'\n | 'us.anthropic.claude-3-haiku-20240307-v1:0'\n | 'us.anthropic.claude-3-5-sonnet-20240620-v1:0'\n | 'us.anthropic.claude-3-5-haiku-20241022-v1:0'\n | 'us.anthropic.claude-3-5-sonnet-20241022-v2:0'\n | 'us.anthropic.claude-3-7-sonnet-20250219-v1:0'\n | 'us.anthropic.claude-opus-4-7'\n | 'us.anthropic.claude-opus-4-6-v1'\n | 'us.anthropic.claude-sonnet-4-6-v1'\n | 'us.anthropic.claude-opus-4-5-20251101-v1:0'\n | 'us.anthropic.claude-sonnet-4-5-20250929-v1:0'\n | 'us.anthropic.claude-sonnet-4-20250514-v1:0'\n | 'us.anthropic.claude-opus-4-20250514-v1:0'\n | 'us.anthropic.claude-opus-4-1-20250805-v1:0'\n | 'us.anthropic.claude-haiku-4-5-20251001-v1:0'\n | 'us.meta.llama3-2-11b-instruct-v1:0'\n | 'us.meta.llama3-2-3b-instruct-v1:0'\n | 'us.meta.llama3-2-90b-instruct-v1:0'\n | 'us.meta.llama3-2-1b-instruct-v1:0'\n | 'us.meta.llama3-1-8b-instruct-v1:0'\n | 'us.meta.llama3-1-70b-instruct-v1:0'\n | 'us.meta.llama3-3-70b-instruct-v1:0'\n | 'us.deepseek.r1-v1:0'\n | 'us.mistral.pixtral-large-2502-v1:0'\n | 'us.meta.llama4-scout-17b-instruct-v1:0'\n | 'us.meta.llama4-maverick-17b-instruct-v1:0'\n | (string & {});\n\n/**\n * Bedrock file part provider options for document-specific features.\n * These options apply to individual file parts (documents).\n */\nexport const amazonBedrockFilePartProviderOptions = z.object({\n /**\n * Citation configuration for this document.\n * When enabled, this document will generate citations in the response.\n */\n citations: z\n .object({\n /**\n * Enable citations for this document\n */\n enabled: z.boolean(),\n })\n .optional(),\n});\n\nexport type AmazonBedrockFilePartProviderOptions = z.infer<\n typeof amazonBedrockFilePartProviderOptions\n>;\n\nexport const amazonBedrockLanguageModelChatOptions = z.object({\n /**\n * Additional inference parameters that the model supports,\n * beyond the base set of inference parameters that Converse\n * supports in the inferenceConfig field\n */\n additionalModelRequestFields: z.record(z.string(), z.any()).optional(),\n reasoningConfig: z\n .object({\n type: z\n .union([\n z.literal('enabled'),\n z.literal('disabled'),\n z.literal('adaptive'),\n ])\n .optional(),\n budgetTokens: z.number().optional(),\n maxReasoningEffort: z\n .enum(['low', 'medium', 'high', 'xhigh', 'max'])\n .optional(),\n display: z.enum(['omitted', 'summarized']).optional(),\n })\n .optional(),\n /**\n * Anthropic beta features to enable\n */\n anthropicBeta: z.array(z.string()).optional(),\n /**\n * Service tier for the request.\n * @see https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html\n *\n * - 'reserved': Uses provisioned throughput capacity\n * - 'priority': Prioritizes low-latency inference when capacity is available\n * - 'default': Standard on-demand tier\n * - 'flex': Lower-cost tier for flexible latency workloads\n */\n serviceTier: z.enum(['reserved', 'priority', 'default', 'flex']).optional(),\n});\n\nexport type AmazonBedrockLanguageModelChatOptions = z.infer<\n typeof amazonBedrockLanguageModelChatOptions\n>;\n","import { z } from 'zod/v4';\n\nexport const AmazonBedrockErrorSchema = z.object({\n message: z.string(),\n type: z.string().nullish(),\n});\n","import { EmptyResponseBodyError } from '@ai-sdk/provider';\nimport {\n safeParseJSON,\n extractResponseHeaders,\n safeValidateTypes,\n type ParseResult,\n type ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport type { ZodType } from 'zod/v4';\nimport { createAmazonBedrockEventStreamDecoder } from './amazon-bedrock-event-stream-decoder';\n\nexport const createAmazonBedrockEventStreamResponseHandler =\n <T>(\n chunkSchema: ZodType<T, any>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n return {\n responseHeaders,\n value: createAmazonBedrockEventStreamDecoder<ParseResult<T>>(\n response.body,\n async (event, controller) => {\n if (event.messageType === 'event') {\n const parsedDataResult = await safeParseJSON({ text: event.data });\n if (!parsedDataResult.success) {\n controller.enqueue(parsedDataResult);\n return;\n }\n\n delete (parsedDataResult.value as any).p;\n const wrappedData = {\n [event.eventType]: parsedDataResult.value,\n };\n\n const validatedWrappedData = await safeValidateTypes<T>({\n value: wrappedData,\n schema: chunkSchema,\n });\n if (!validatedWrappedData.success) {\n controller.enqueue(validatedWrappedData);\n } else {\n controller.enqueue({\n success: true,\n value: validatedWrappedData.value,\n rawValue: wrappedData,\n });\n }\n }\n },\n ),\n };\n };\n","import { EventStreamCodec } from '@smithy/eventstream-codec';\nimport { toUtf8, fromUtf8 } from '@smithy/util-utf8';\n\nexport interface DecodedEvent {\n messageType: string;\n eventType: string;\n data: string;\n}\n\nexport function createAmazonBedrockEventStreamDecoder<T>(\n body: ReadableStream<Uint8Array>,\n processEvent: (\n event: DecodedEvent,\n controller: TransformStreamDefaultController<T>,\n ) => void | Promise<void>,\n): ReadableStream<T> {\n const codec = new EventStreamCodec(toUtf8, fromUtf8);\n let buffer = new Uint8Array(0);\n const textDecoder = new TextDecoder();\n\n return body.pipeThrough(\n new TransformStream<Uint8Array, T>({\n async transform(chunk, controller) {\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n while (buffer.length >= 4) {\n const totalLength = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(0, false);\n\n if (buffer.length < totalLength) {\n break;\n }\n\n try {\n const subView = buffer.subarray(0, totalLength);\n const decoded = codec.decode(subView);\n\n buffer = buffer.slice(totalLength);\n\n const messageType = decoded.headers[':message-type']\n ?.value as string;\n const eventType = decoded.headers[':event-type']?.value as string;\n const data = textDecoder.decode(decoded.body);\n\n await processEvent({ messageType, eventType, data }, controller);\n } catch {\n break;\n }\n }\n },\n }),\n );\n}\n","import {\n UnsupportedFunctionalityError,\n type JSONObject,\n type LanguageModelV4CallOptions,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport { asSchema } from '@ai-sdk/provider-utils';\nimport {\n anthropicTools,\n prepareTools as prepareAnthropicTools,\n} from '@ai-sdk/anthropic/internal';\nimport type {\n AmazonBedrockTool,\n AmazonBedrockToolConfiguration,\n} from './amazon-bedrock-api-types';\n\nexport async function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n modelId: string;\n}): Promise<{\n toolConfig: AmazonBedrockToolConfiguration;\n additionalTools: Record<string, unknown> | undefined;\n betas: Set<string>;\n toolWarnings: SharedV4Warning[];\n}> {\n const toolWarnings: SharedV4Warning[] = [];\n const betas = new Set<string>();\n\n if (tools == null || tools.length === 0) {\n return {\n toolConfig: {},\n additionalTools: undefined,\n betas,\n toolWarnings,\n };\n }\n\n // Filter out unsupported web_search tool and add a warning\n const supportedTools = tools.filter(tool => {\n if (\n tool.type === 'provider' &&\n tool.id === 'anthropic.web_search_20250305'\n ) {\n toolWarnings.push({\n type: 'unsupported',\n feature: 'web_search_20250305 tool',\n details:\n 'The web_search_20250305 tool is not supported on Amazon Bedrock.',\n });\n return false; // Exclude this tool\n }\n return true; // Include all other tools\n });\n\n if (supportedTools.length === 0) {\n return {\n toolConfig: {},\n additionalTools: undefined,\n betas,\n toolWarnings,\n };\n }\n\n const isAnthropicModel = modelId.includes('anthropic.');\n const ProviderTools = supportedTools.filter(t => t.type === 'provider');\n const functionTools = supportedTools.filter(t => t.type === 'function');\n\n let additionalTools: Record<string, unknown> | undefined = undefined;\n const amazonBedrockTools: AmazonBedrockTool[] = [];\n\n const usingAnthropicTools = isAnthropicModel && ProviderTools.length > 0;\n\n // Handle Anthropic provider-defined tools for Anthropic models on Bedrock\n if (usingAnthropicTools) {\n const {\n toolChoice: preparedAnthropicToolChoice,\n toolWarnings: anthropicToolWarnings,\n betas: anthropicBetas,\n } = await prepareAnthropicTools({\n tools: ProviderTools,\n toolChoice,\n supportsStructuredOutput: false,\n supportsStrictTools: false,\n });\n\n toolWarnings.push(...anthropicToolWarnings);\n anthropicBetas.forEach(beta => betas.add(beta));\n\n // For Anthropic tools on Bedrock, only the 'tool_choice' goes into additional fields.\n // The tool definitions themselves are sent in the standard 'toolConfig'.\n if (preparedAnthropicToolChoice) {\n additionalTools = {\n tool_choice: preparedAnthropicToolChoice,\n };\n }\n\n // Create a standard Bedrock tool representation for validation purposes\n for (const tool of ProviderTools) {\n const toolFactory = Object.values(anthropicTools).find(factory => {\n const instance = (factory as (args: any) => any)({});\n return instance.id === tool.id;\n });\n\n if (toolFactory != null) {\n const fullToolDefinition = (toolFactory as (args: any) => any)({});\n amazonBedrockTools.push({\n toolSpec: {\n name: tool.name,\n inputSchema: {\n json: (await asSchema(fullToolDefinition.inputSchema)\n .jsonSchema) as JSONObject,\n },\n },\n });\n } else {\n toolWarnings.push({ type: 'unsupported', feature: 'tool ${tool.id}' });\n }\n }\n } else {\n // Report unsupported provider-defined tools for non-anthropic models\n for (const tool of ProviderTools) {\n toolWarnings.push({ type: 'unsupported', feature: `tool ${tool.id}` });\n }\n }\n\n const filteredFunctionTools =\n toolChoice?.type === 'tool'\n ? functionTools.filter(t => t.name === toolChoice.toolName)\n : functionTools;\n\n for (const tool of filteredFunctionTools) {\n amazonBedrockTools.push({\n toolSpec: {\n name: tool.name,\n ...(tool.description?.trim() !== ''\n ? { description: tool.description }\n : {}),\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n inputSchema: {\n json: tool.inputSchema as JSONObject,\n },\n },\n });\n }\n\n // Handle toolChoice for standard Bedrock tools, but NOT for Anthropic provider-defined tools\n let amazonBedrockToolChoice: AmazonBedrockToolConfiguration['toolChoice'] =\n undefined;\n if (!usingAnthropicTools && amazonBedrockTools.length > 0 && toolChoice) {\n const type = toolChoice.type;\n switch (type) {\n case 'auto':\n amazonBedrockToolChoice = { auto: {} };\n break;\n case 'required':\n amazonBedrockToolChoice = { any: {} };\n break;\n case 'none':\n amazonBedrockTools.length = 0;\n amazonBedrockToolChoice = undefined;\n break;\n case 'tool':\n amazonBedrockToolChoice = { tool: { name: toolChoice.toolName } };\n break;\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n }\n\n const toolConfig: AmazonBedrockToolConfiguration =\n amazonBedrockTools.length > 0\n ? { tools: amazonBedrockTools, toolChoice: amazonBedrockToolChoice }\n : {};\n\n return {\n toolConfig,\n additionalTools,\n betas,\n toolWarnings,\n };\n}\n","import type { LanguageModelV4Usage } from '@ai-sdk/provider';\n\nexport type AmazonBedrockUsage = {\n inputTokens: number;\n outputTokens: number;\n totalTokens?: number;\n cacheReadInputTokens?: number | null;\n cacheWriteInputTokens?: number | null;\n};\n\nexport function convertAmazonBedrockUsage(\n usage: AmazonBedrockUsage | undefined | null,\n): LanguageModelV4Usage {\n if (usage == null) {\n return {\n inputTokens: {\n total: undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: undefined,\n text: undefined,\n reasoning: undefined,\n },\n raw: undefined,\n };\n }\n\n const inputTokens = usage.inputTokens;\n const outputTokens = usage.outputTokens;\n const cacheReadTokens = usage.cacheReadInputTokens ?? 0;\n const cacheWriteTokens = usage.cacheWriteInputTokens ?? 0;\n\n return {\n inputTokens: {\n total: inputTokens + cacheReadTokens + cacheWriteTokens,\n noCache: inputTokens,\n cacheRead: cacheReadTokens,\n cacheWrite: cacheWriteTokens,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n reasoning: undefined,\n },\n raw: usage,\n };\n}\n","import {\n UnsupportedFunctionalityError,\n type JSONObject,\n type LanguageModelV4Message,\n type LanguageModelV4Prompt,\n type SharedV4ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n getTopLevelMediaType,\n isFullMediaType,\n parseProviderOptions,\n resolveFullMediaType,\n stripFileExtension,\n} from '@ai-sdk/provider-utils';\nimport {\n BEDROCK_DOCUMENT_MIME_TYPES,\n BEDROCK_IMAGE_MIME_TYPES,\n type AmazonBedrockAssistantMessage,\n type AmazonBedrockCachePoint,\n type AmazonBedrockDocumentFormat,\n type AmazonBedrockDocumentMimeType,\n type AmazonBedrockImageFormat,\n type AmazonBedrockImageMimeType,\n type AmazonBedrockMessages,\n type AmazonBedrockSystemMessages,\n type AmazonBedrockUserMessage,\n} from './amazon-bedrock-api-types';\nimport { amazonBedrockFilePartProviderOptions } from './amazon-bedrock-chat-language-model-options';\nimport { amazonBedrockReasoningMetadataSchema } from './amazon-bedrock-reasoning-metadata';\nimport { normalizeToolCallId } from './normalize-tool-call-id';\n\nfunction getCachePoint(\n providerMetadata: SharedV4ProviderMetadata | undefined,\n): AmazonBedrockCachePoint | undefined {\n const cachePointConfig = (providerMetadata?.amazonBedrock?.cachePoint ??\n providerMetadata?.bedrock?.cachePoint) as\n | AmazonBedrockCachePoint['cachePoint']\n | undefined;\n\n if (!cachePointConfig) {\n return undefined;\n }\n\n return { cachePoint: cachePointConfig };\n}\n\nasync function shouldEnableCitations(\n providerMetadata: SharedV4ProviderMetadata | undefined,\n): Promise<boolean> {\n const amazonBedrockOptions =\n (await parseProviderOptions({\n provider: 'amazonBedrock',\n providerOptions: providerMetadata,\n schema: amazonBedrockFilePartProviderOptions,\n })) ??\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions: providerMetadata,\n schema: amazonBedrockFilePartProviderOptions,\n }));\n\n return amazonBedrockOptions?.citations?.enabled ?? false;\n}\n\nexport async function convertToAmazonBedrockChatMessages(\n prompt: LanguageModelV4Prompt,\n isMistral: boolean = false,\n): Promise<{\n system: AmazonBedrockSystemMessages;\n messages: AmazonBedrockMessages;\n}> {\n const blocks = groupIntoBlocks(prompt);\n\n let system: AmazonBedrockSystemMessages = [];\n const messages: AmazonBedrockMessages = [];\n\n let documentCounter = 0;\n const generateDocumentName = () => `document-${++documentCounter}`;\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const isLastBlock = i === blocks.length - 1;\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (messages.length > 0) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n for (const message of block.messages) {\n system.push({ text: message.content });\n const cachePoint = getCachePoint(message.providerOptions);\n if (cachePoint) {\n system.push(cachePoint);\n }\n }\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const amazonBedrockContent: AmazonBedrockUserMessage['content'] = [];\n\n for (const message of block.messages) {\n const { role, content, providerOptions } = message;\n switch (role) {\n case 'user': {\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n switch (part.type) {\n case 'text': {\n amazonBedrockContent.push({\n text: part.text,\n });\n break;\n }\n\n case 'file': {\n switch (part.data.type) {\n case 'reference': {\n throw new UnsupportedFunctionalityError({\n functionality: 'file parts with provider references',\n });\n }\n case 'url': {\n throw new UnsupportedFunctionalityError({\n functionality: 'File URL data',\n });\n }\n case 'text': {\n const textMediaType = isFullMediaType(part.mediaType)\n ? part.mediaType\n : 'text/plain';\n const enableCitations = await shouldEnableCitations(\n part.providerOptions,\n );\n\n amazonBedrockContent.push({\n document: {\n format:\n getAmazonBedrockDocumentFormat(textMediaType),\n name: part.filename\n ? stripFileExtension(part.filename)\n : generateDocumentName(),\n source: {\n bytes: convertToBase64(\n new TextEncoder().encode(part.data.text),\n ),\n },\n ...(enableCitations && {\n citations: { enabled: true },\n }),\n },\n });\n break;\n }\n case 'data': {\n const fullMediaType = resolveFullMediaType({ part });\n\n if (getTopLevelMediaType(fullMediaType) === 'image') {\n amazonBedrockContent.push({\n image: {\n format:\n getAmazonBedrockImageFormat(fullMediaType),\n source: {\n bytes: convertToBase64(part.data.data),\n },\n },\n });\n } else {\n const enableCitations = await shouldEnableCitations(\n part.providerOptions,\n );\n\n amazonBedrockContent.push({\n document: {\n format:\n getAmazonBedrockDocumentFormat(fullMediaType),\n name: part.filename\n ? stripFileExtension(part.filename)\n : generateDocumentName(),\n source: {\n bytes: convertToBase64(part.data.data),\n },\n ...(enableCitations && {\n citations: { enabled: true },\n }),\n },\n });\n }\n break;\n }\n }\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\n if (part.type === 'tool-approval-response') {\n continue;\n }\n let toolResultContent;\n\n const output = part.output;\n switch (output.type) {\n case 'content': {\n toolResultContent = output.value.map(contentPart => {\n switch (contentPart.type) {\n case 'text':\n return { text: contentPart.text };\n case 'file-data':\n if (!contentPart.mediaType.startsWith('image/')) {\n throw new UnsupportedFunctionalityError({\n functionality: `media type: ${contentPart.mediaType}`,\n });\n }\n\n const format = getAmazonBedrockImageFormat(\n contentPart.mediaType,\n );\n\n return {\n image: {\n format,\n source: { bytes: contentPart.data },\n },\n };\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `unsupported tool content part type: ${contentPart.type}`,\n });\n }\n }\n });\n break;\n }\n case 'text':\n case 'error-text':\n toolResultContent = [{ text: output.value }];\n break;\n case 'execution-denied':\n toolResultContent = [\n { text: output.reason ?? 'Tool call execution denied.' },\n ];\n break;\n case 'json':\n case 'error-json':\n default:\n toolResultContent = [\n { text: JSON.stringify(output.value) },\n ];\n break;\n }\n\n amazonBedrockContent.push({\n toolResult: {\n toolUseId: normalizeToolCallId(part.toolCallId, isMistral),\n content: toolResultContent,\n },\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n\n const cachePoint = getCachePoint(providerOptions);\n if (cachePoint) {\n amazonBedrockContent.push(cachePoint);\n }\n }\n\n messages.push({ role: 'user', content: amazonBedrockContent });\n\n break;\n }\n\n case 'assistant': {\n // combines multiple assistant messages in this block into a single message:\n const amazonBedrockContent: AmazonBedrockAssistantMessage['content'] =\n [];\n\n for (let j = 0; j < block.messages.length; j++) {\n const message = block.messages[j];\n const isLastMessage = j === block.messages.length - 1;\n const { content } = message;\n const hasReasoningBlocks = content.some(\n part => part.type === 'reasoning',\n );\n\n for (let k = 0; k < content.length; k++) {\n const part = content[k];\n const isLastContentPart = k === content.length - 1;\n\n switch (part.type) {\n case 'text': {\n // Skip empty text blocks unless reasoning blocks are present\n if (!part.text.trim() && !hasReasoningBlocks) {\n break;\n }\n\n amazonBedrockContent.push({\n text:\n // trim the last text part if it's the last message in the block\n // because Bedrock does not allow trailing whitespace\n // in pre-filled assistant responses\n trimIfLast(\n isLastBlock,\n isLastMessage,\n isLastContentPart,\n part.text,\n ),\n });\n break;\n }\n\n case 'reasoning': {\n const reasoningMetadata =\n (await parseProviderOptions({\n provider: 'amazonBedrock',\n providerOptions: part.providerOptions,\n schema: amazonBedrockReasoningMetadataSchema,\n })) ??\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions: part.providerOptions,\n schema: amazonBedrockReasoningMetadataSchema,\n }));\n\n if (reasoningMetadata?.signature != null) {\n // do not trim reasoning text when a signature is present:\n // the signature validates the exact original bytes\n amazonBedrockContent.push({\n reasoningContent: {\n reasoningText: {\n text: part.text,\n signature: reasoningMetadata.signature,\n },\n },\n });\n } else if (reasoningMetadata?.redactedData != null) {\n amazonBedrockContent.push({\n reasoningContent: {\n redactedReasoning: {\n data: reasoningMetadata.redactedData,\n },\n },\n });\n } else {\n // trim the last text part if it's the last message in the block\n // because Bedrock does not allow trailing whitespace\n // in pre-filled assistant responses\n amazonBedrockContent.push({\n reasoningContent: {\n reasoningText: {\n text: trimIfLast(\n isLastBlock,\n isLastMessage,\n isLastContentPart,\n part.text,\n ),\n },\n },\n });\n }\n\n break;\n }\n\n case 'tool-call': {\n amazonBedrockContent.push({\n toolUse: {\n toolUseId: normalizeToolCallId(part.toolCallId, isMistral),\n name: part.toolName,\n input: part.input as JSONObject,\n },\n });\n break;\n }\n }\n }\n const cachePoint = getCachePoint(message.providerOptions);\n if (cachePoint) {\n amazonBedrockContent.push(cachePoint);\n }\n }\n\n messages.push({ role: 'assistant', content: amazonBedrockContent });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { system, messages };\n}\n\nfunction getAmazonBedrockImageFormat(\n mimeType: string,\n): AmazonBedrockImageFormat {\n const format =\n BEDROCK_IMAGE_MIME_TYPES[mimeType as AmazonBedrockImageMimeType];\n if (!format) {\n throw new UnsupportedFunctionalityError({\n functionality: `image mime type: ${mimeType}`,\n message: `Unsupported image mime type: ${mimeType}, expected one of: ${Object.keys(BEDROCK_IMAGE_MIME_TYPES).join(', ')}`,\n });\n }\n\n return format;\n}\n\nfunction getAmazonBedrockDocumentFormat(\n mimeType: string,\n): AmazonBedrockDocumentFormat {\n const format =\n BEDROCK_DOCUMENT_MIME_TYPES[mimeType as AmazonBedrockDocumentMimeType];\n if (!format) {\n throw new UnsupportedFunctionalityError({\n functionality: `file mime type: ${mimeType}`,\n message: `Unsupported file mime type: ${mimeType}, expected one of: ${Object.keys(BEDROCK_DOCUMENT_MIME_TYPES).join(', ')}`,\n });\n }\n return format;\n}\n\nfunction trimIfLast(\n isLastBlock: boolean,\n isLastMessage: boolean,\n isLastContentPart: boolean,\n text: string,\n) {\n return isLastBlock && isLastMessage && isLastContentPart ? text.trim() : text;\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV4Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV4Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV4Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV4Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const message of prompt) {\n const { role } = message;\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { z } from 'zod/v4';\n\nexport const amazonBedrockReasoningMetadataSchema = z.object({\n signature: z.string().optional(),\n redactedData: z.string().optional(),\n});\n\nexport type AmazonBedrockReasoningMetadata = z.infer<\n typeof amazonBedrockReasoningMetadataSchema\n>;\n","/**\n * Checks if the given model ID is a Mistral model.\n * Mistral models on Bedrock are prefixed with 'mistral.' or region-prefixed like 'us.mistral.'.\n */\nexport function isMistralModel(modelId: string): boolean {\n return modelId.includes('mistral.');\n}\n\n/**\n * Normalizes a tool call ID for Mistral models.\n *\n * Mistral models require tool call IDs to match the regex `^[a-zA-Z0-9]{9}$`:\n * - Exactly 9 characters\n * - Alphanumeric only (no underscores, hyphens, or other characters)\n *\n * Bedrock generates tool call IDs in formats like `tooluse_bpe71yCfRu2b5i-nKGDr5g`,\n * which are incompatible with Mistral's requirements.\n *\n * This function extracts the first 9 alphanumeric characters from the ID.\n *\n * @param toolCallId - The original tool call ID from Bedrock\n * @param isMistral - Whether the model is a Mistral model\n * @returns The normalized tool call ID (9 alphanumeric chars) if Mistral, otherwise the original ID\n */\nexport function normalizeToolCallId(\n toolCallId: string,\n isMistral: boolean,\n): string {\n if (!isMistral) {\n return toolCallId;\n }\n\n // Extract only alphanumeric characters and take first 9\n const alphanumericChars = toolCallId.replace(/[^a-zA-Z0-9]/g, '');\n return alphanumericChars.slice(0, 9);\n}\n","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\nimport type { AmazonBedrockStopReason } from './amazon-bedrock-api-types';\n\nexport function mapAmazonBedrockFinishReason(\n finishReason: AmazonBedrockStopReason,\n isJsonResponseFromTool?: boolean,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop_sequence':\n case 'end_turn':\n return 'stop';\n case 'max_tokens':\n return 'length';\n case 'content_filtered':\n case 'guardrail_intervened':\n return 'content-filter';\n case 'tool_use':\n return isJsonResponseFromTool ? 'stop' : 'tool-calls';\n default:\n return 'other';\n }\n}\n","import {\n TooManyEmbeddingValuesForCallError,\n type EmbeddingModelV4,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport {\n amazonBedrockEmbeddingModelOptionsSchema,\n type AmazonBedrockEmbeddingModelId,\n} from './amazon-bedrock-embedding-model-options';\nimport { AmazonBedrockErrorSchema } from './amazon-bedrock-error';\nimport { z } from 'zod/v4';\n\ntype AmazonBedrockEmbeddingConfig = {\n baseUrl: () => string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>;\n\nexport class AmazonBedrockEmbeddingModel implements EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider = 'amazon-bedrock';\n readonly maxEmbeddingsPerCall = 1;\n readonly supportsParallelCalls = true;\n\n static [WORKFLOW_SERIALIZE](model: AmazonBedrockEmbeddingModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: AmazonBedrockEmbeddingConfig;\n }) {\n return new AmazonBedrockEmbeddingModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: AmazonBedrockEmbeddingModelId,\n private readonly config: AmazonBedrockEmbeddingConfig,\n ) {}\n\n private getUrl(modelId: string): string {\n const encodedModelId = encodeURIComponent(modelId);\n return `${this.config.baseUrl()}/model/${encodedModelId}/invoke`;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<DoEmbedResponse> {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n // Parse provider options. Prefer `amazonBedrock`; fall back to legacy\n // `bedrock` key for backward compatibility.\n const amazonBedrockOptions =\n (await parseProviderOptions({\n provider: 'amazonBedrock',\n providerOptions,\n schema: amazonBedrockEmbeddingModelOptionsSchema,\n })) ??\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: amazonBedrockEmbeddingModelOptionsSchema,\n })) ??\n {};\n\n // https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html\n //\n // Note: Different embedding model families expect different request/response\n // payloads (e.g. Titan vs Cohere vs Nova). We keep the public interface stable and\n // adapt here based on the modelId.\n const isNovaModel =\n this.modelId.startsWith('amazon.nova-') && this.modelId.includes('embed');\n const isCohereModel = this.modelId.startsWith('cohere.embed-');\n\n const args = isNovaModel\n ? {\n taskType: 'SINGLE_EMBEDDING',\n singleEmbeddingParams: {\n embeddingPurpose:\n amazonBedrockOptions.embeddingPurpose ?? 'GENERIC_INDEX',\n embeddingDimension: amazonBedrockOptions.embeddingDimension ?? 1024,\n text: {\n truncationMode: amazonBedrockOptions.truncate ?? 'END',\n value: values[0],\n },\n },\n }\n : isCohereModel\n ? {\n // Cohere embedding models on Bedrock require `input_type`.\n // Without it, the service attempts other schema branches and rejects the request.\n input_type: amazonBedrockOptions.inputType ?? 'search_query',\n texts: [values[0]],\n truncate: amazonBedrockOptions.truncate,\n output_dimension: amazonBedrockOptions.outputDimension,\n }\n : {\n inputText: values[0],\n dimensions: amazonBedrockOptions.dimensions,\n normalize: amazonBedrockOptions.normalize,\n };\n\n const url = this.getUrl(this.modelId);\n const { value: response } = await postJsonToApi({\n url,\n headers: await resolve(\n combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n headers,\n ),\n ),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: AmazonBedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n AmazonBedrockEmbeddingResponseSchema,\n ),\n fetch: this.config.fetch,\n abortSignal,\n });\n\n // Extract embedding based on response format\n let embedding: number[];\n if ('embedding' in response) {\n // Titan response\n embedding = response.embedding;\n } else if (Array.isArray(response.embeddings)) {\n const firstEmbedding = response.embeddings[0];\n if (\n typeof firstEmbedding === 'object' &&\n firstEmbedding !== null &&\n 'embeddingType' in firstEmbedding\n ) {\n // Nova response\n embedding = firstEmbedding.embedding;\n } else {\n // Cohere v3 response\n embedding = firstEmbedding as number[];\n }\n } else {\n // Cohere v4 response\n embedding = response.embeddings.float[0];\n }\n\n // Extract token count based on response format\n const tokens =\n 'inputTextTokenCount' in response\n ? response.inputTextTokenCount // Titan response\n : 'inputTokenCount' in response\n ? (response.inputTokenCount ?? 0) // Nova response\n : NaN; // Cohere doesn't return token count\n\n return {\n embeddings: [embedding],\n usage: { tokens },\n warnings: [],\n };\n }\n}\n\nconst AmazonBedrockEmbeddingResponseSchema = z.union([\n // Titan-style response\n z.object({\n embedding: z.array(z.number()),\n inputTextTokenCount: z.number(),\n }),\n // Nova-style response\n z.object({\n embeddings: z.array(\n z.object({\n embeddingType: z.string(),\n embedding: z.array(z.number()),\n }),\n ),\n inputTokenCount: z.number().optional(),\n }),\n // Cohere v3-style response\n z.object({\n embeddings: z.array(z.array(z.number())),\n }),\n // Cohere v4-style response\n z.object({\n embeddings: z.object({\n float: z.array(z.array(z.number())),\n }),\n }),\n]);\n","import { z } from 'zod/v4';\n\nexport type AmazonBedrockEmbeddingModelId =\n | 'amazon.titan-embed-text-v1'\n | 'amazon.titan-embed-text-v2:0'\n | 'cohere.embed-english-v3'\n | 'cohere.embed-multilingual-v3'\n | (string & {});\n\nexport const amazonBedrockEmbeddingModelOptionsSchema = z.object({\n /**\n * The number of dimensions the resulting output embeddings should have (defaults to 1024).\n * Only supported in amazon.titan-embed-text-v2:0.\n */\n dimensions: z\n .union([z.literal(1024), z.literal(512), z.literal(256)])\n .optional(),\n\n /**\n * Flag indicating whether or not to normalize the output embeddings. Defaults to true.\n * Only supported in amazon.titan-embed-text-v2:0.\n */\n normalize: z.boolean().optional(),\n\n /**\n * The number of dimensions for Nova embedding models (defaults to 1024).\n * Supported values: 256, 384, 1024, 3072.\n * Only supported in amazon.nova-* embedding models.\n */\n embeddingDimension: z\n .union([z.literal(256), z.literal(384), z.literal(1024), z.literal(3072)])\n .optional(),\n\n /**\n * The purpose of the embedding. Defaults to 'GENERIC_INDEX'.\n * Only supported in amazon.nova-* embedding models.\n */\n embeddingPurpose: z\n .enum([\n 'GENERIC_INDEX',\n 'TEXT_RETRIEVAL',\n 'IMAGE_RETRIEVAL',\n 'VIDEO_RETRIEVAL',\n 'DOCUMENT_RETRIEVAL',\n 'AUDIO_RETRIEVAL',\n 'GENERIC_RETRIEVAL',\n 'CLASSIFICATION',\n 'CLUSTERING',\n ])\n .optional(),\n\n /**\n * Input type for Cohere embedding models on Bedrock.\n * Common values: `search_document`, `search_query`, `classification`, `clustering`.\n * If not set, the provider defaults to `search_query`.\n */\n inputType: z\n .enum(['search_document', 'search_query', 'classification', 'clustering'])\n .optional(),\n\n /**\n * Truncation behavior when input exceeds the model's context length.\n * Supported in Cohere and Nova embedding models. Defaults to 'END' for Nova models.\n */\n truncate: z.enum(['NONE', 'START', 'END']).optional(),\n\n /**\n * The number of dimensions the resulting output embeddings should have (defaults to 1536).\n * Only supported in cohere.embed-v4:0 and newer Cohere embedding models.\n */\n outputDimension: z\n .union([z.literal(256), z.literal(512), z.literal(1024), z.literal(1536)])\n .optional(),\n});\n\nexport type AmazonBedrockEmbeddingModelOptions = z.infer<\n typeof amazonBedrockEmbeddingModelOptionsSchema\n>;\n","import type {\n ImageModelV4,\n ImageModelV4File,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertUint8ArrayToBase64,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport {\n modelMaxImagesPerCall,\n type AmazonBedrockImageModelId,\n} from './amazon-bedrock-image-settings';\nimport { AmazonBedrockErrorSchema } from './amazon-bedrock-error';\nimport { z } from 'zod/v4';\n\ntype AmazonBedrockImageModelConfig = {\n baseUrl: () => string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n};\n\nexport class AmazonBedrockImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider = 'amazon-bedrock';\n\n static [WORKFLOW_SERIALIZE](model: AmazonBedrockImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: AmazonBedrockImageModelConfig;\n }) {\n return new AmazonBedrockImageModel(options.modelId, options.config);\n }\n\n get maxImagesPerCall(): number {\n return modelMaxImagesPerCall[this.modelId] ?? 1;\n }\n\n private getUrl(modelId: string): string {\n const encodedModelId = encodeURIComponent(modelId);\n return `${this.config.baseUrl()}/model/${encodedModelId}/invoke`;\n }\n\n constructor(\n readonly modelId: AmazonBedrockImageModelId,\n private readonly config: AmazonBedrockImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n const [width, height] = size ? size.split('x').map(Number) : [];\n\n const hasFiles = files != null && files.length > 0;\n\n // Prefer the new `amazonBedrock` providerOptions key; fall back to the\n // legacy `bedrock` key for backward compatibility.\n const amazonBedrockOptions = (providerOptions?.amazonBedrock ??\n providerOptions?.bedrock) as Record<string, any> | undefined;\n\n // Build image generation config (common to most modes)\n const imageGenerationConfig = {\n ...(width ? { width } : {}),\n ...(height ? { height } : {}),\n ...(seed ? { seed } : {}),\n ...(n ? { numberOfImages: n } : {}),\n ...(amazonBedrockOptions?.quality\n ? { quality: amazonBedrockOptions.quality }\n : {}),\n ...(amazonBedrockOptions?.cfgScale\n ? { cfgScale: amazonBedrockOptions.cfgScale }\n : {}),\n };\n\n let args: Record<string, unknown>;\n\n if (hasFiles) {\n // Check if mask is actually provided (has valid data, not just an empty object)\n const hasMask = mask?.type != null;\n const hasMaskPrompt = amazonBedrockOptions?.maskPrompt != null;\n\n // Determine task type from provider options, or infer from mask presence\n const taskType =\n amazonBedrockOptions?.taskType ??\n (hasMask || hasMaskPrompt ? 'INPAINTING' : 'IMAGE_VARIATION');\n\n const sourceImageBase64 = getBase64Data(files[0]);\n\n switch (taskType) {\n case 'INPAINTING': {\n const inPaintingParams: Record<string, unknown> = {\n image: sourceImageBase64,\n ...(prompt ? { text: prompt } : {}),\n ...(amazonBedrockOptions?.negativeText\n ? { negativeText: amazonBedrockOptions.negativeText }\n : {}),\n };\n\n // Handle mask - can be either a maskImage or maskPrompt\n if (hasMask) {\n inPaintingParams.maskImage = getBase64Data(mask);\n } else if (hasMaskPrompt) {\n inPaintingParams.maskPrompt = amazonBedrockOptions.maskPrompt;\n }\n\n args = {\n taskType: 'INPAINTING',\n inPaintingParams,\n imageGenerationConfig,\n };\n break;\n }\n\n case 'OUTPAINTING': {\n const outPaintingParams: Record<string, unknown> = {\n image: sourceImageBase64,\n ...(prompt ? { text: prompt } : {}),\n ...(amazonBedrockOptions?.negativeText\n ? { negativeText: amazonBedrockOptions.negativeText }\n : {}),\n ...(amazonBedrockOptions?.outPaintingMode\n ? { outPaintingMode: amazonBedrockOptions.outPaintingMode }\n : {}),\n };\n\n // Outpainting requires a maskImage (white pixels = area to change)\n if (hasMask) {\n outPaintingParams.maskImage = getBase64Data(mask);\n } else if (hasMaskPrompt) {\n outPaintingParams.maskPrompt = amazonBedrockOptions.maskPrompt;\n }\n\n args = {\n taskType: 'OUTPAINTING',\n outPaintingParams,\n imageGenerationConfig,\n };\n break;\n }\n\n case 'BACKGROUND_REMOVAL': {\n // Background removal only needs the image, no other params\n args = {\n taskType: 'BACKGROUND_REMOVAL',\n backgroundRemovalParams: {\n image: sourceImageBase64,\n },\n };\n break;\n }\n\n case 'IMAGE_VARIATION': {\n // Image variation can use multiple images\n const images = files.map(file => getBase64Data(file));\n\n const imageVariationParams: Record<string, unknown> = {\n images,\n ...(prompt ? { text: prompt } : {}),\n ...(amazonBedrockOptions?.negativeText\n ? { negativeText: amazonBedrockOptions.negativeText }\n : {}),\n ...(amazonBedrockOptions?.similarityStrength != null\n ? {\n similarityStrength: amazonBedrockOptions.similarityStrength,\n }\n : {}),\n };\n\n args = {\n taskType: 'IMAGE_VARIATION',\n imageVariationParams,\n imageGenerationConfig,\n };\n break;\n }\n\n default:\n throw new Error(`Unsupported task type: ${taskType}`);\n }\n } else {\n // Standard image generation mode\n args = {\n taskType: 'TEXT_IMAGE',\n textToImageParams: {\n text: prompt,\n ...(amazonBedrockOptions?.negativeText\n ? {\n negativeText: amazonBedrockOptions.negativeText,\n }\n : {}),\n ...(amazonBedrockOptions?.style\n ? {\n style: amazonBedrockOptions.style,\n }\n : {}),\n },\n imageGenerationConfig,\n };\n }\n\n if (aspectRatio != undefined) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details:\n 'This model does not support aspect ratio. Use `size` instead.',\n });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.getUrl(this.modelId),\n headers: await resolve(\n combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n headers,\n ),\n ),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: AmazonBedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n amazonBedrockImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // Handle moderated/blocked requests\n if (response.status === 'Request Moderated') {\n const moderationReasons = response.details?.['Moderation Reasons'];\n const reasons = Array.isArray(moderationReasons)\n ? moderationReasons\n : ['Unknown'];\n throw new Error(\n `Amazon Bedrock request was moderated: ${reasons.join(', ')}`,\n );\n }\n\n // Check if images are present\n if (!response.images || response.images.length === 0) {\n throw new Error(\n 'Amazon Bedrock returned no images. ' +\n (response.status ? `Status: ${response.status}` : ''),\n );\n }\n\n return {\n images: response.images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nfunction getBase64Data(file: ImageModelV4File): string {\n if (file.type === 'url') {\n throw new Error(\n 'URL-based images are not supported for Amazon Bedrock image editing. ' +\n 'Please provide the image data directly.',\n );\n }\n\n if (file.data instanceof Uint8Array) {\n return convertUint8ArrayToBase64(file.data);\n }\n\n // Already base64 string\n return file.data;\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst amazonBedrockImageResponseSchema = z.object({\n // Normal successful response\n images: z.array(z.string()).optional(),\n\n // Moderation response fields\n id: z.string().optional(),\n status: z.string().optional(),\n result: z.unknown().optional(),\n progress: z.unknown().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n preview: z.unknown().optional(),\n});\n","export type AmazonBedrockImageModelId =\n | 'amazon.nova-canvas-v1:0'\n | (string & {});\n\n// https://docs.aws.amazon.com/nova/latest/userguide/image-gen-req-resp-structure.html\nexport const modelMaxImagesPerCall: Record<AmazonBedrockImageModelId, number> =\n {\n 'amazon.nova-canvas-v1:0': 5,\n };\n","import {\n combineHeaders,\n normalizeHeaders,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\nimport { VERSION } from './version';\n\nexport interface AmazonBedrockCredentials {\n region: string;\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n}\n\n/**\n * Creates a fetch function that applies AWS Signature Version 4 signing.\n *\n * @param getCredentials - Function that returns the AWS credentials to use when signing.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @returns A FetchFunction that signs requests before passing them to the underlying fetch.\n */\nexport function createSigV4FetchFunction(\n getCredentials: () =>\n | AmazonBedrockCredentials\n | PromiseLike<AmazonBedrockCredentials>,\n fetch: FetchFunction = globalThis.fetch,\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n const request = input instanceof Request ? input : undefined;\n const originalHeaders = combineHeaders(\n normalizeHeaders(request?.headers),\n normalizeHeaders(init?.headers),\n );\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n let effectiveBody: BodyInit | undefined = init?.body ?? undefined;\n if (effectiveBody === undefined && request && request.body !== null) {\n try {\n effectiveBody = await request.clone().text();\n } catch {}\n }\n\n const effectiveMethod = init?.method ?? request?.method;\n\n if (effectiveMethod?.toUpperCase() !== 'POST' || !effectiveBody) {\n return fetch(input, {\n ...init,\n headers: headersWithUserAgent as HeadersInit,\n });\n }\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const body = prepareBodyString(effectiveBody);\n const credentials = await getCredentials();\n const signer = new AwsV4Signer({\n url,\n method: 'POST',\n headers: Object.entries(headersWithUserAgent),\n body,\n region: credentials.region,\n accessKeyId: credentials.accessKeyId,\n secretAccessKey: credentials.secretAccessKey,\n sessionToken: credentials.sessionToken,\n service: 'bedrock',\n });\n\n const signingResult = await signer.sign();\n const signedHeaders = normalizeHeaders(signingResult.headers);\n\n // Use the combined headers directly as HeadersInit\n const combinedHeaders = combineHeaders(headersWithUserAgent, signedHeaders);\n\n return fetch(input, {\n ...init,\n body,\n headers: combinedHeaders as HeadersInit,\n });\n };\n}\n\nfunction prepareBodyString(body: BodyInit | undefined): string {\n if (typeof body === 'string') {\n return body;\n } else if (body instanceof Uint8Array) {\n return new TextDecoder().decode(body);\n } else if (body instanceof ArrayBuffer) {\n return new TextDecoder().decode(new Uint8Array(body));\n } else {\n return JSON.stringify(body);\n }\n}\n\n/**\n * Creates a fetch function that applies Bearer token authentication.\n *\n * @param apiKey - The API key to use for Bearer token authentication.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @returns A FetchFunction that adds Authorization header with Bearer token to requests.\n */\nexport function createApiKeyFetchFunction(\n apiKey: string,\n fetch: FetchFunction = globalThis.fetch,\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n const originalHeaders = normalizeHeaders(init?.headers);\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n const finalHeaders = combineHeaders(headersWithUserAgent, {\n Authorization: `Bearer ${apiKey}`,\n });\n\n return fetch(input, {\n ...init,\n headers: finalHeaders as HeadersInit,\n });\n };\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","import type { RerankingModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { AmazonBedrockErrorSchema } from '../amazon-bedrock-error';\nimport {\n amazonBedrockRerankingResponseSchema,\n type AmazonBedrockRerankingInput,\n} from './amazon-bedrock-reranking-api';\nimport {\n amazonBedrockRerankingModelOptionsSchema,\n type AmazonBedrockRerankingModelId,\n} from './amazon-bedrock-reranking-model-options';\ntype AmazonBedrockRerankingConfig = {\n baseUrl: () => string;\n region: string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoRerankResponse = Awaited<ReturnType<RerankingModelV4['doRerank']>>;\n\nexport class AmazonBedrockRerankingModel implements RerankingModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider = 'amazon-bedrock';\n\n constructor(\n readonly modelId: AmazonBedrockRerankingModelId,\n private readonly config: AmazonBedrockRerankingConfig,\n ) {}\n\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV4['doRerank']>[0]): Promise<DoRerankResponse> {\n // Prefer `amazonBedrock`; fall back to legacy `bedrock` for backward\n // compatibility.\n const amazonBedrockOptions =\n (await parseProviderOptions({\n provider: 'amazonBedrock',\n providerOptions,\n schema: amazonBedrockRerankingModelOptionsSchema,\n })) ??\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: amazonBedrockRerankingModelOptionsSchema,\n }));\n\n const {\n value: response,\n responseHeaders,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseUrl()}/rerank`,\n headers: await resolve(\n combineHeaders(await resolve(this.config.headers), headers),\n ),\n body: {\n nextToken: amazonBedrockOptions?.nextToken,\n queries: [\n {\n textQuery: { text: query },\n type: 'TEXT',\n },\n ],\n rerankingConfiguration: {\n amazonBedrockRerankingConfiguration: {\n modelConfiguration: {\n modelArn: `arn:aws:bedrock:${this.config.region}::foundation-model/${this.modelId}`,\n additionalModelRequestFields:\n amazonBedrockOptions?.additionalModelRequestFields,\n },\n numberOfResults: topN,\n },\n type: 'BEDROCK_RERANKING_MODEL',\n },\n sources: documents.values.map(value => ({\n type: 'INLINE' as const,\n inlineDocumentSource:\n documents.type === 'text'\n ? {\n type: 'TEXT' as const,\n textDocument: { text: value as string },\n }\n : {\n type: 'JSON' as const,\n jsonDocument: value,\n },\n })),\n } satisfies AmazonBedrockRerankingInput,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: AmazonBedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n amazonBedrockRerankingResponseSchema,\n ),\n fetch: this.config.fetch,\n abortSignal,\n });\n\n return {\n ranking: response.results,\n response: {\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Rerank.html\nexport type AmazonBedrockRerankingInput = {\n nextToken?: string;\n queries: [{ type: 'TEXT'; textQuery: { text: string } }];\n rerankingConfiguration: {\n type: 'BEDROCK_RERANKING_MODEL';\n amazonBedrockRerankingConfiguration: {\n modelConfiguration: {\n modelArn: string;\n additionalModelRequestFields?: Record<string, unknown>;\n };\n numberOfResults?: number;\n };\n };\n sources: {\n type: 'INLINE';\n inlineDocumentSource:\n | {\n type: 'TEXT';\n textDocument: { text: string };\n }\n | {\n type: 'JSON';\n jsonDocument: unknown;\n };\n }[];\n};\n\nexport const amazonBedrockRerankingResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n results: z.array(\n z.object({\n index: z.number(),\n relevanceScore: z.number(),\n }),\n ),\n nextToken: z.string().optional(),\n }),\n ),\n);\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://docs.aws.amazon.com/bedrock/latest/userguide/rerank-supported.html\nexport type AmazonBedrockRerankingModelId =\n | 'amazon.rerank-v1:0'\n | 'cohere.rerank-v3-5:0'\n | (string & {});\n\nexport type AmazonBedrockRerankingModelOptions = {\n /**\n * If the total number of results was greater than could fit in a response, a token is returned in the nextToken field. You can enter that token in this field to return the next batch of results.\n */\n nextToken?: string;\n\n /**\n * Additional model request fields to pass to the model.\n */\n additionalModelRequestFields?: Record<string, unknown>;\n};\n\nexport const amazonBedrockRerankingModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n /**\n * If the total number of results was greater than could fit in a response, a token is returned in the nextToken field. You can enter that token in this field to return the next batch of results.\n */\n nextToken: z.string().optional(),\n\n /**\n * Additional model request fields to pass to the model.\n */\n additionalModelRequestFields: z.record(z.string(), z.any()).optional(),\n }),\n ),\n);\n"],"mappings":"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","names":["anthropicTools","withUserAgentSuffix","parseProviderOptions","z","z","UnsupportedFunctionalityError","z","UnsupportedFunctionalityError","parseProviderOptions","_a","z","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","z","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","resolve","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","postJsonToApi","resolve","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","postJsonToApi","resolve","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","combineHeaders","combineHeaders","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","z","lazySchema","zodSchema","z","parseProviderOptions","postJsonToApi","resolve","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","withUserAgentSuffix","anthropicTools"]}
1
+ {"version":3,"sources":["../src/amazon-bedrock-provider.ts","../src/amazon-bedrock-chat-language-model.ts","../src/amazon-bedrock-api-types.ts","../src/amazon-bedrock-chat-language-model-options.ts","../src/amazon-bedrock-error.ts","../src/amazon-bedrock-event-stream-response-handler.ts","../src/amazon-bedrock-event-stream-decoder.ts","../src/amazon-bedrock-prepare-tools.ts","../src/convert-amazon-bedrock-usage.ts","../src/convert-to-amazon-bedrock-chat-messages.ts","../src/amazon-bedrock-reasoning-metadata.ts","../src/normalize-tool-call-id.ts","../src/map-amazon-bedrock-finish-reason.ts","../src/amazon-bedrock-embedding-model.ts","../src/amazon-bedrock-embedding-model-options.ts","../src/amazon-bedrock-image-model.ts","../src/amazon-bedrock-image-settings.ts","../src/amazon-bedrock-sigv4-fetch.ts","../src/version.ts","../src/reranking/amazon-bedrock-reranking-model.ts","../src/reranking/amazon-bedrock-reranking-api.ts","../src/reranking/amazon-bedrock-reranking-model-options.ts"],"sourcesContent":["import { anthropicTools } from '@ai-sdk/anthropic/internal';\nimport type {\n EmbeddingModelV4,\n ImageModelV4,\n LanguageModelV4,\n ProviderV4,\n RerankingModelV4,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadOptionalSetting,\n loadSetting,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AmazonBedrockChatLanguageModel } from './amazon-bedrock-chat-language-model';\nimport type { AmazonBedrockChatModelId } from './amazon-bedrock-chat-language-model-options';\nimport { AmazonBedrockEmbeddingModel } from './amazon-bedrock-embedding-model';\nimport type { AmazonBedrockEmbeddingModelId } from './amazon-bedrock-embedding-model-options';\nimport { AmazonBedrockImageModel } from './amazon-bedrock-image-model';\nimport type { AmazonBedrockImageModelId } from './amazon-bedrock-image-settings';\nimport {\n createApiKeyFetchFunction,\n createSigV4FetchFunction,\n type AmazonBedrockCredentials,\n} from './amazon-bedrock-sigv4-fetch';\nimport { AmazonBedrockRerankingModel } from './reranking/amazon-bedrock-reranking-model';\nimport type { AmazonBedrockRerankingModelId } from './reranking/amazon-bedrock-reranking-model-options';\nimport { VERSION } from './version';\n\nexport interface AmazonBedrockProviderSettings {\n /**\n * The AWS region to use for the Bedrock provider. Defaults to the value of the\n * `AWS_REGION` environment variable.\n */\n region?: string;\n\n /**\n * API key for authenticating requests using Bearer token authentication.\n * When provided, this will be used instead of AWS SigV4 authentication.\n * Defaults to the value of the `AWS_BEARER_TOKEN_BEDROCK` environment variable.\n *\n * @example\n * ```typescript\n * // Using API key directly\n * const bedrock = createAmazonBedrock({\n * apiKey: 'your-api-key-here',\n * region: 'us-east-1'\n * });\n *\n * // Using environment variable AWS_BEARER_TOKEN_BEDROCK\n * const bedrock = createAmazonBedrock({\n * region: 'us-east-1'\n * });\n * ```\n *\n * Note: When `apiKey` is provided, it takes precedence over AWS SigV4 authentication.\n * If neither `apiKey` nor `AWS_BEARER_TOKEN_BEDROCK` environment variable is set,\n * the provider will fall back to AWS SigV4 authentication using AWS credentials.\n */\n apiKey?: string;\n\n /**\n * The AWS access key ID to use for the Bedrock provider. Defaults to the value of the\n * `AWS_ACCESS_KEY_ID` environment variable.\n */\n accessKeyId?: string;\n\n /**\n * The AWS secret access key to use for the Bedrock provider. Defaults to the value of the\n * `AWS_SECRET_ACCESS_KEY` environment variable.\n */\n secretAccessKey?: string;\n\n /**\n * The AWS session token to use for the Bedrock provider. When `accessKeyId` and\n * `secretAccessKey` are both passed explicitly as options, only this field is used\n * If either access key field is omitted and resolved from the environment, the\n * session token also falls back to `AWS_SESSION_TOKEN` when not set here.\n */\n sessionToken?: string;\n\n /**\n * Base URL for the Bedrock API calls.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * The AWS credential provider to use for the Bedrock provider to get dynamic\n * credentials similar to the AWS SDK. Setting a provider here will cause its\n * credential values to be used instead of the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` settings.\n */\n credentialProvider?: () => PromiseLike<\n Omit<AmazonBedrockCredentials, 'region'>\n >;\n\n // for testing\n generateId?: () => string;\n}\n\nexport interface AmazonBedrockProvider extends ProviderV4 {\n (modelId: AmazonBedrockChatModelId): LanguageModelV4;\n\n languageModel(modelId: AmazonBedrockChatModelId): LanguageModelV4;\n\n /**\n * Creates a model for text embeddings.\n */\n embedding(modelId: AmazonBedrockEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * Creates a model for text embeddings.\n */\n embeddingModel(modelId: AmazonBedrockEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embedding` instead.\n */\n textEmbedding(modelId: AmazonBedrockEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: AmazonBedrockEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: AmazonBedrockImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: AmazonBedrockImageModelId): ImageModelV4;\n\n /**\n * Creates a model for reranking documents.\n */\n reranking(modelId: AmazonBedrockRerankingModelId): RerankingModelV4;\n\n /**\n * Creates a model for reranking documents.\n */\n rerankingModel(modelId: AmazonBedrockRerankingModelId): RerankingModelV4;\n\n /**\n * Anthropic-specific tools that can be used with Anthropic models on Bedrock.\n */\n tools: typeof anthropicTools;\n}\n\n/**\n * Create an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n // Check for API key authentication first\n const rawApiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'AWS_BEARER_TOKEN_BEDROCK',\n });\n\n // FIX 1: Validate API key to ensure proper fallback to SigV4\n // Only use API key if it's a non-empty, non-whitespace string\n const apiKey =\n rawApiKey && rawApiKey.trim().length > 0 ? rawApiKey.trim() : undefined;\n\n // Use API key authentication if available, otherwise fall back to SigV4\n const fetchFunction = apiKey\n ? createApiKeyFetchFunction(apiKey, options.fetch)\n : createSigV4FetchFunction(async () => {\n const region = loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n });\n\n // If a credential provider is provided, use it to get the credentials.\n if (options.credentialProvider) {\n try {\n return {\n ...(await options.credentialProvider()),\n region,\n };\n } catch (error) {\n // Error handling for credential provider failures\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n throw new Error(\n `AWS credential provider failed: ${errorMessage}. ` +\n 'Please ensure your credential provider returns valid AWS credentials ' +\n 'with accessKeyId and secretAccessKey properties.',\n );\n }\n }\n\n // Enhanced error handling for SigV4 credential loading\n try {\n return {\n region,\n accessKeyId: loadSetting({\n settingValue: options.accessKeyId,\n settingName: 'accessKeyId',\n environmentVariableName: 'AWS_ACCESS_KEY_ID',\n description: 'AWS access key ID',\n }),\n secretAccessKey: loadSetting({\n settingValue: options.secretAccessKey,\n settingName: 'secretAccessKey',\n environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n description: 'AWS secret access key',\n }),\n sessionToken:\n options.accessKeyId != null && options.secretAccessKey != null\n ? options.sessionToken\n : loadOptionalSetting({\n settingValue: options.sessionToken,\n environmentVariableName: 'AWS_SESSION_TOKEN',\n }),\n };\n } catch (error) {\n // Provide helpful error message for missing AWS credentials\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (\n errorMessage.includes('AWS_ACCESS_KEY_ID') ||\n errorMessage.includes('accessKeyId')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires AWS credentials. Please provide either:\\n' +\n '1. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables\\n' +\n '2. Provide accessKeyId and secretAccessKey in options\\n' +\n '3. Use a credentialProvider function\\n' +\n '4. Use API key authentication with AWS_BEARER_TOKEN_BEDROCK or apiKey option\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n if (\n errorMessage.includes('AWS_SECRET_ACCESS_KEY') ||\n errorMessage.includes('secretAccessKey')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires both AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. ' +\n 'Please ensure both credentials are provided.\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n // Re-throw other errors as-is\n throw error;\n }\n }, options.fetch);\n\n const getHeaders = () => {\n const baseHeaders = options.headers ?? {};\n return withUserAgentSuffix(baseHeaders, `ai-sdk/amazon-bedrock/${VERSION}`);\n };\n\n const getAmazonBedrockRuntimeBaseUrl = (): string =>\n withoutTrailingSlash(\n options.baseURL ??\n `https://bedrock-runtime.${loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n })}.amazonaws.com`,\n ) ?? `https://bedrock-runtime.us-east-1.amazonaws.com`;\n\n const getAmazonBedrockAgentRuntimeBaseUrl = (): string =>\n withoutTrailingSlash(\n options.baseURL ??\n `https://bedrock-agent-runtime.${loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n })}.amazonaws.com`,\n ) ?? `https://bedrock-agent-runtime.us-west-2.amazonaws.com`;\n\n const createChatModel = (modelId: AmazonBedrockChatModelId) =>\n new AmazonBedrockChatLanguageModel(modelId, {\n baseUrl: getAmazonBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n generateId,\n });\n\n const provider = function (modelId: AmazonBedrockChatModelId) {\n if (new.target) {\n throw new Error(\n 'The Amazon Bedrock model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n const createEmbeddingModel = (modelId: AmazonBedrockEmbeddingModelId) =>\n new AmazonBedrockEmbeddingModel(modelId, {\n baseUrl: getAmazonBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n });\n\n const createImageModel = (modelId: AmazonBedrockImageModelId) =>\n new AmazonBedrockImageModel(modelId, {\n baseUrl: getAmazonBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n });\n\n const createRerankingModel = (modelId: AmazonBedrockRerankingModelId) =>\n new AmazonBedrockRerankingModel(modelId, {\n baseUrl: getAmazonBedrockAgentRuntimeBaseUrl,\n region: loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n }),\n headers: getHeaders,\n fetch: fetchFunction,\n });\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n provider.tools = anthropicTools;\n\n return provider;\n}\n\n/**\n * Default Amazon Bedrock provider instance.\n */\nexport const amazonBedrock = createAmazonBedrock();\n","import type {\n JSONObject,\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4Content,\n LanguageModelV4FinishReason,\n LanguageModelV4FunctionTool,\n LanguageModelV4GenerateResult,\n LanguageModelV4Reasoning,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4ProviderMetadata,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n isCustomReasoning,\n mapReasoningToProviderBudget,\n mapReasoningToProviderEffort,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type ParseResult,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { getModelCapabilities } from '@ai-sdk/anthropic/internal';\nimport { z } from 'zod/v4';\nimport {\n BEDROCK_STOP_REASONS,\n type AmazonBedrockConverseInput,\n type AmazonBedrockStopReason,\n} from './amazon-bedrock-api-types';\nimport {\n amazonBedrockLanguageModelChatOptions,\n type AmazonBedrockLanguageModelChatOptions,\n type AmazonBedrockChatModelId,\n} from './amazon-bedrock-chat-language-model-options';\nimport { AmazonBedrockErrorSchema } from './amazon-bedrock-error';\nimport { createAmazonBedrockEventStreamResponseHandler } from './amazon-bedrock-event-stream-response-handler';\nimport { prepareTools } from './amazon-bedrock-prepare-tools';\nimport {\n convertAmazonBedrockUsage,\n type AmazonBedrockUsage,\n} from './convert-amazon-bedrock-usage';\nimport { convertToAmazonBedrockChatMessages } from './convert-to-amazon-bedrock-chat-messages';\nimport { mapAmazonBedrockFinishReason } from './map-amazon-bedrock-finish-reason';\nimport { isMistralModel, normalizeToolCallId } from './normalize-tool-call-id';\nimport type { AmazonBedrockReasoningMetadata } from './amazon-bedrock-reasoning-metadata';\n\ntype AmazonBedrockChatConfig = {\n baseUrl: () => string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n generateId: () => string;\n};\n\nexport class AmazonBedrockChatLanguageModel implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider = 'amazon-bedrock';\n\n static [WORKFLOW_SERIALIZE](model: AmazonBedrockChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: AmazonBedrockChatConfig;\n }) {\n return new AmazonBedrockChatLanguageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: AmazonBedrockChatModelId,\n private readonly config: AmazonBedrockChatConfig,\n ) {}\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n reasoning,\n providerOptions,\n }: LanguageModelV4CallOptions): Promise<{\n command: AmazonBedrockConverseInput;\n warnings: SharedV4Warning[];\n usesJsonResponseTool: boolean;\n betas: Set<string>;\n }> {\n // Parse provider options. Prefer `amazonBedrock`; fall back to legacy\n // `bedrock` key for backward compatibility.\n let amazonBedrockOptions =\n (await parseProviderOptions({\n provider: 'amazonBedrock',\n providerOptions,\n schema: amazonBedrockLanguageModelChatOptions,\n })) ??\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: amazonBedrockLanguageModelChatOptions,\n })) ??\n {};\n\n const warnings: SharedV4Warning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n });\n }\n\n if (temperature != null && temperature > 1) {\n warnings.push({\n type: 'unsupported',\n feature: 'temperature',\n details: `${temperature} exceeds bedrock maximum of 1.0. clamped to 1.0`,\n });\n temperature = 1;\n } else if (temperature != null && temperature < 0) {\n warnings.push({\n type: 'unsupported',\n feature: 'temperature',\n details: `${temperature} is below bedrock minimum of 0. clamped to 0`,\n });\n temperature = 0;\n }\n\n if (\n responseFormat != null &&\n responseFormat.type !== 'text' &&\n responseFormat.type !== 'json'\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'responseFormat',\n details: 'Only text and json response formats are supported.',\n });\n }\n\n const isAnthropicModel = this.modelId.includes('anthropic');\n const isOpenAIModel = this.modelId.startsWith('openai.');\n\n amazonBedrockOptions = resolveAmazonBedrockReasoningConfig({\n reasoning,\n amazonBedrockOptions,\n warnings,\n isAnthropicModel,\n modelId: this.modelId,\n });\n\n const isThinkingEnabled =\n amazonBedrockOptions.reasoningConfig?.type === 'enabled' ||\n amazonBedrockOptions.reasoningConfig?.type === 'adaptive';\n\n const { supportsStructuredOutput: modelSupportsStructuredOutput } =\n getModelCapabilities(this.modelId);\n\n const useNativeStructuredOutput =\n isAnthropicModel &&\n (modelSupportsStructuredOutput || isThinkingEnabled) &&\n responseFormat?.type === 'json' &&\n responseFormat.schema != null;\n\n const jsonResponseTool: LanguageModelV4FunctionTool | undefined =\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n !useNativeStructuredOutput\n ? {\n type: 'function',\n name: 'json',\n description: 'Respond with a JSON object.',\n inputSchema: responseFormat.schema,\n }\n : undefined;\n\n const { toolConfig, additionalTools, toolWarnings, betas } =\n await prepareTools({\n tools: jsonResponseTool ? [...(tools ?? []), jsonResponseTool] : tools,\n toolChoice:\n jsonResponseTool != null ? { type: 'required' } : toolChoice,\n modelId: this.modelId,\n });\n\n warnings.push(...toolWarnings);\n\n if (additionalTools) {\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n ...additionalTools,\n };\n }\n\n if (betas.size > 0 || amazonBedrockOptions.anthropicBeta) {\n const existingBetas = amazonBedrockOptions.anthropicBeta ?? [];\n const mergedBetas =\n betas.size > 0\n ? [...existingBetas, ...Array.from(betas)]\n : existingBetas;\n\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n anthropic_beta: mergedBetas,\n };\n }\n\n const thinkingType = amazonBedrockOptions.reasoningConfig?.type;\n const thinkingBudget =\n thinkingType === 'enabled'\n ? amazonBedrockOptions.reasoningConfig?.budgetTokens\n : undefined;\n const thinkingDisplay =\n thinkingType === 'adaptive'\n ? amazonBedrockOptions.reasoningConfig?.display\n : undefined;\n const isAnthropicThinkingEnabled = isAnthropicModel && isThinkingEnabled;\n\n const inferenceConfig = {\n ...(maxOutputTokens != null && { maxTokens: maxOutputTokens }),\n ...(temperature != null && { temperature }),\n ...(topP != null && { topP }),\n ...(topK != null && { topK }),\n ...(stopSequences != null && { stopSequences }),\n };\n\n if (isAnthropicThinkingEnabled) {\n if (thinkingBudget != null) {\n if (inferenceConfig.maxTokens != null) {\n inferenceConfig.maxTokens += thinkingBudget;\n } else {\n inferenceConfig.maxTokens = thinkingBudget + 4096; // Default + thinking budget maxTokens = 4096, TODO update default in v5\n }\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n thinking: {\n type: 'enabled',\n budget_tokens: thinkingBudget,\n },\n };\n } else if (thinkingType === 'adaptive') {\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n thinking: {\n type: 'adaptive',\n ...(thinkingDisplay != null && { display: thinkingDisplay }),\n },\n };\n }\n } else if (!isAnthropicModel) {\n if (amazonBedrockOptions.reasoningConfig?.budgetTokens != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'budgetTokens',\n details:\n 'budgetTokens applies only to Anthropic models on Bedrock and will be ignored for this model.',\n });\n }\n if (thinkingType === 'adaptive') {\n warnings.push({\n type: 'unsupported',\n feature: 'adaptive thinking',\n details:\n 'adaptive thinking type applies only to Anthropic models on Bedrock.',\n });\n }\n }\n\n const maxReasoningEffort =\n amazonBedrockOptions.reasoningConfig?.maxReasoningEffort;\n\n if (maxReasoningEffort != null) {\n if (isAnthropicModel) {\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n output_config: {\n ...amazonBedrockOptions.additionalModelRequestFields?.output_config,\n effort: maxReasoningEffort,\n },\n };\n } else if (isOpenAIModel) {\n // OpenAI models on Bedrock expect `reasoning_effort` as a flat value\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n reasoning_effort: maxReasoningEffort,\n };\n } else {\n // other models (such as Nova 2) use reasoningConfig format\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n reasoningConfig: {\n ...(thinkingType != null &&\n thinkingType !== 'adaptive' && { type: thinkingType }),\n ...(thinkingBudget != null && { budgetTokens: thinkingBudget }),\n maxReasoningEffort,\n },\n };\n }\n }\n\n if (useNativeStructuredOutput) {\n amazonBedrockOptions.additionalModelRequestFields = {\n ...amazonBedrockOptions.additionalModelRequestFields,\n output_config: {\n ...amazonBedrockOptions.additionalModelRequestFields?.output_config,\n format: {\n type: 'json_schema',\n schema: responseFormat!.schema,\n },\n },\n };\n }\n\n if (isAnthropicThinkingEnabled && inferenceConfig.temperature != null) {\n delete inferenceConfig.temperature;\n warnings.push({\n type: 'unsupported',\n feature: 'temperature',\n details: 'temperature is not supported when thinking is enabled',\n });\n }\n\n if (isAnthropicThinkingEnabled && inferenceConfig.topP != null) {\n delete inferenceConfig.topP;\n warnings.push({\n type: 'unsupported',\n feature: 'topP',\n details: 'topP is not supported when thinking is enabled',\n });\n }\n\n if (isAnthropicThinkingEnabled && inferenceConfig.topK != null) {\n delete inferenceConfig.topK;\n warnings.push({\n type: 'unsupported',\n feature: 'topK',\n details: 'topK is not supported when thinking is enabled',\n });\n }\n\n // Filter tool content from prompt when no tools are available\n const hasAnyTools = (toolConfig.tools?.length ?? 0) > 0 || additionalTools;\n let filteredPrompt = prompt;\n\n if (!hasAnyTools) {\n const hasToolContent = prompt.some(\n message =>\n 'content' in message &&\n Array.isArray(message.content) &&\n message.content.some(\n part => part.type === 'tool-call' || part.type === 'tool-result',\n ),\n );\n\n if (hasToolContent) {\n filteredPrompt = prompt\n .map(message =>\n message.role === 'system'\n ? message\n : {\n ...message,\n content: message.content.filter(\n part =>\n part.type !== 'tool-call' && part.type !== 'tool-result',\n ),\n },\n )\n .filter(\n message => message.role === 'system' || message.content.length > 0,\n ) as typeof prompt;\n\n warnings.push({\n type: 'unsupported',\n feature: 'toolContent',\n details:\n 'Tool calls and results removed from conversation because Bedrock does not support tool content without active tools.',\n });\n }\n }\n\n const isMistral = isMistralModel(this.modelId);\n const { system, messages } = await convertToAmazonBedrockChatMessages(\n filteredPrompt,\n isMistral,\n );\n\n // Filter out reasoningConfig from amazonBedrock provider options to prevent sending it to Bedrock API\n const {\n reasoningConfig: _,\n additionalModelRequestFields: __,\n serviceTier: ___,\n ...filteredAmazonBedrockOptions\n } = providerOptions?.amazonBedrock ?? providerOptions?.bedrock ?? {};\n\n const additionalModelResponseFieldPaths = isAnthropicModel\n ? ['/delta/stop_sequence']\n : undefined;\n\n return {\n command: {\n system,\n messages,\n additionalModelRequestFields:\n amazonBedrockOptions.additionalModelRequestFields,\n ...(additionalModelResponseFieldPaths && {\n additionalModelResponseFieldPaths,\n }),\n ...(Object.keys(inferenceConfig).length > 0 && {\n inferenceConfig,\n }),\n ...(amazonBedrockOptions.serviceTier != null && {\n serviceTier: {\n type: amazonBedrockOptions.serviceTier,\n },\n }),\n ...filteredAmazonBedrockOptions,\n ...(toolConfig.tools !== undefined && toolConfig.tools.length > 0\n ? { toolConfig }\n : {}),\n },\n warnings,\n usesJsonResponseTool: jsonResponseTool != null,\n betas,\n };\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // no supported urls for bedrock\n };\n\n private async getHeaders({\n headers,\n }: {\n headers: Record<string, string | undefined> | undefined;\n }) {\n return combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n headers,\n );\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const {\n command: args,\n warnings,\n usesJsonResponseTool,\n } = await this.getArgs(options);\n\n const url = `${this.getUrl(this.modelId)}/converse`;\n const { value: response, responseHeaders } = await postJsonToApi({\n url,\n headers: await this.getHeaders({ headers: options.headers }),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: AmazonBedrockErrorSchema,\n errorToMessage: error => `${error.message ?? 'Unknown error'}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n AmazonBedrockResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV4Content> = [];\n let isJsonResponseFromTool = false;\n\n // map response content to content array\n for (const part of response.output.message.content) {\n // text\n if (part.text != null) {\n content.push({ type: 'text', text: part.text });\n }\n\n // reasoning\n if (part.reasoningContent) {\n if ('reasoningText' in part.reasoningContent) {\n const reasoning: LanguageModelV4Reasoning = {\n type: 'reasoning',\n text: part.reasoningContent.reasoningText.text,\n };\n\n if (part.reasoningContent.reasoningText.signature) {\n const reasoningPayload: AmazonBedrockReasoningMetadata = {\n signature: part.reasoningContent.reasoningText.signature,\n };\n reasoning.providerMetadata = {\n amazonBedrock: reasoningPayload,\n bedrock: reasoningPayload,\n };\n }\n\n content.push(reasoning);\n } else if ('redactedReasoning' in part.reasoningContent) {\n const redactedPayload: AmazonBedrockReasoningMetadata = {\n redactedData: part.reasoningContent.redactedReasoning.data ?? '',\n };\n content.push({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n amazonBedrock: redactedPayload,\n bedrock: redactedPayload,\n },\n });\n }\n }\n\n // tool calls\n if (part.toolUse) {\n const isJsonResponseTool =\n usesJsonResponseTool && part.toolUse.name === 'json';\n\n if (isJsonResponseTool) {\n isJsonResponseFromTool = true;\n // when a json response tool is used, the tool call becomes the text:\n content.push({\n type: 'text',\n text: JSON.stringify(part.toolUse.input),\n });\n } else {\n const isMistral = isMistralModel(this.modelId);\n const rawToolCallId =\n part.toolUse?.toolUseId ?? this.config.generateId();\n content.push({\n type: 'tool-call' as const,\n toolCallId: normalizeToolCallId(rawToolCallId, isMistral),\n toolName: part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n input: JSON.stringify(part.toolUse?.input ?? {}),\n });\n }\n }\n }\n\n // provider metadata:\n const stopSequence =\n response.additionalModelResponseFields?.delta?.stop_sequence ?? null;\n\n const providerMetadataPayload =\n response.trace ||\n response.usage ||\n response.performanceConfig ||\n response.serviceTier ||\n isJsonResponseFromTool ||\n stopSequence\n ? {\n ...(response.trace && typeof response.trace === 'object'\n ? { trace: response.trace as JSONObject }\n : {}),\n ...(response.performanceConfig && {\n performanceConfig: response.performanceConfig,\n }),\n ...(response.serviceTier && {\n serviceTier: response.serviceTier,\n }),\n ...((response.usage?.cacheWriteInputTokens != null ||\n response.usage?.cacheDetails != null) && {\n usage: {\n ...(response.usage.cacheWriteInputTokens != null && {\n cacheWriteInputTokens: response.usage.cacheWriteInputTokens,\n }),\n ...(response.usage.cacheDetails != null && {\n cacheDetails: response.usage.cacheDetails,\n }),\n },\n }),\n ...(isJsonResponseFromTool && { isJsonResponseFromTool: true }),\n stopSequence,\n }\n : undefined;\n\n const providerMetadata = providerMetadataPayload\n ? {\n amazonBedrock: providerMetadataPayload,\n bedrock: providerMetadataPayload,\n }\n : undefined;\n\n return {\n content,\n finishReason: {\n unified: mapAmazonBedrockFinishReason(\n response.stopReason as AmazonBedrockStopReason,\n isJsonResponseFromTool,\n ),\n raw: response.stopReason ?? undefined,\n },\n usage: convertAmazonBedrockUsage(response.usage),\n response: {\n id: responseHeaders?.['x-amzn-requestid'] ?? undefined,\n timestamp:\n responseHeaders?.['date'] != null\n ? new Date(responseHeaders['date'])\n : undefined,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n warnings,\n ...(providerMetadata && { providerMetadata }),\n };\n }\n\n async doStream(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const {\n command: args,\n warnings,\n usesJsonResponseTool,\n } = await this.getArgs(options);\n const modelId = this.modelId;\n const isMistral = isMistralModel(modelId);\n const url = `${this.getUrl(modelId)}/converse-stream`;\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url,\n headers: await this.getHeaders({ headers: options.headers }),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: AmazonBedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createAmazonBedrockEventStreamResponseHandler(\n AmazonBedrockStreamSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV4FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let usage: AmazonBedrockUsage | undefined = undefined;\n let providerMetadata: SharedV4ProviderMetadata | undefined = undefined;\n let isJsonResponseFromTool = false;\n let stopSequence: string | null = null;\n\n const contentBlocks: Record<\n number,\n | {\n type: 'tool-call';\n toolCallId: string;\n toolName: string;\n jsonText: string;\n isJsonResponseTool?: boolean;\n }\n | { type: 'text' | 'reasoning' }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof AmazonBedrockStreamSchema>>,\n LanguageModelV4StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n controller.enqueue({\n type: 'response-metadata',\n id: responseHeaders?.['x-amzn-requestid'] ?? undefined,\n timestamp:\n responseHeaders?.['date'] != null\n ? new Date(responseHeaders['date'])\n : undefined,\n modelId,\n });\n },\n\n transform(chunk, controller) {\n function enqueueError(amazonBedrockError: Record<string, any>) {\n finishReason = { unified: 'error', raw: undefined };\n controller.enqueue({ type: 'error', error: amazonBedrockError });\n }\n\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n enqueueError(chunk.error);\n return;\n }\n\n const value = chunk.value;\n\n // handle errors:\n if (value.internalServerException) {\n enqueueError(value.internalServerException);\n return;\n }\n if (value.modelStreamErrorException) {\n enqueueError(value.modelStreamErrorException);\n return;\n }\n if (value.throttlingException) {\n enqueueError(value.throttlingException);\n return;\n }\n if (value.validationException) {\n enqueueError(value.validationException);\n return;\n }\n\n if (value.messageStop) {\n finishReason = {\n unified: mapAmazonBedrockFinishReason(\n value.messageStop.stopReason as AmazonBedrockStopReason,\n isJsonResponseFromTool,\n ),\n raw: value.messageStop.stopReason ?? undefined,\n };\n stopSequence =\n value.messageStop.additionalModelResponseFields?.delta\n ?.stop_sequence ?? null;\n }\n\n if (value.metadata) {\n if (value.metadata.usage) {\n usage = value.metadata.usage;\n }\n\n const cacheUsage =\n value.metadata.usage?.cacheWriteInputTokens != null ||\n value.metadata.usage?.cacheDetails != null\n ? {\n usage: {\n ...(value.metadata.usage?.cacheWriteInputTokens !=\n null && {\n cacheWriteInputTokens:\n value.metadata.usage.cacheWriteInputTokens,\n }),\n ...(value.metadata.usage?.cacheDetails != null && {\n cacheDetails: value.metadata.usage.cacheDetails,\n }),\n },\n }\n : undefined;\n\n const trace = value.metadata.trace\n ? {\n trace: value.metadata.trace as JSONObject,\n }\n : undefined;\n\n if (\n cacheUsage ||\n trace ||\n value.metadata.performanceConfig ||\n value.metadata.serviceTier\n ) {\n const metadataPayload = {\n ...cacheUsage,\n ...trace,\n ...(value.metadata.performanceConfig && {\n performanceConfig: value.metadata.performanceConfig,\n }),\n ...(value.metadata.serviceTier && {\n serviceTier: value.metadata.serviceTier,\n }),\n };\n providerMetadata = {\n amazonBedrock: metadataPayload,\n bedrock: metadataPayload,\n };\n }\n }\n\n if (\n value.contentBlockStart?.contentBlockIndex != null &&\n !value.contentBlockStart?.start?.toolUse\n ) {\n const blockIndex = value.contentBlockStart.contentBlockIndex;\n contentBlocks[blockIndex] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: String(blockIndex),\n });\n }\n\n if (\n value.contentBlockDelta?.delta &&\n 'text' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.text\n ) {\n const blockIndex = value.contentBlockDelta.contentBlockIndex || 0;\n\n if (contentBlocks[blockIndex] == null) {\n contentBlocks[blockIndex] = { type: 'text' };\n\n controller.enqueue({\n type: 'text-start',\n id: String(blockIndex),\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: String(blockIndex),\n delta: value.contentBlockDelta.delta.text,\n });\n }\n\n if (value.contentBlockStop?.contentBlockIndex != null) {\n const blockIndex = value.contentBlockStop.contentBlockIndex;\n const contentBlock = contentBlocks[blockIndex];\n\n if (contentBlock != null) {\n if (contentBlock.type === 'reasoning') {\n controller.enqueue({\n type: 'reasoning-end',\n id: String(blockIndex),\n });\n } else if (contentBlock.type === 'text') {\n controller.enqueue({\n type: 'text-end',\n id: String(blockIndex),\n });\n } else if (contentBlock.type === 'tool-call') {\n if (contentBlock.isJsonResponseTool) {\n isJsonResponseFromTool = true;\n // when this specific tool is the json response tool, emit the tool input as text\n controller.enqueue({\n type: 'text-start',\n id: String(blockIndex),\n });\n controller.enqueue({\n type: 'text-delta',\n id: String(blockIndex),\n delta: contentBlock.jsonText,\n });\n controller.enqueue({\n type: 'text-end',\n id: String(blockIndex),\n });\n } else {\n controller.enqueue({\n type: 'tool-input-end',\n id: contentBlock.toolCallId,\n });\n controller.enqueue({\n type: 'tool-call',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n input:\n contentBlock.jsonText === ''\n ? '{}'\n : contentBlock.jsonText,\n });\n }\n }\n\n delete contentBlocks[blockIndex];\n }\n }\n\n if (\n value.contentBlockDelta?.delta &&\n 'reasoningContent' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.reasoningContent\n ) {\n const blockIndex = value.contentBlockDelta.contentBlockIndex || 0;\n const reasoningContent =\n value.contentBlockDelta.delta.reasoningContent;\n\n if ('text' in reasoningContent && reasoningContent.text) {\n if (contentBlocks[blockIndex] == null) {\n contentBlocks[blockIndex] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: String(blockIndex),\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: String(blockIndex),\n delta: reasoningContent.text,\n });\n } else if (\n 'signature' in reasoningContent &&\n reasoningContent.signature\n ) {\n if (contentBlocks[blockIndex] == null) {\n contentBlocks[blockIndex] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: String(blockIndex),\n });\n }\n {\n const signaturePayload: AmazonBedrockReasoningMetadata = {\n signature: reasoningContent.signature,\n };\n controller.enqueue({\n type: 'reasoning-delta',\n id: String(blockIndex),\n delta: '',\n providerMetadata: {\n amazonBedrock: signaturePayload,\n bedrock: signaturePayload,\n },\n });\n }\n } else if ('data' in reasoningContent && reasoningContent.data) {\n if (contentBlocks[blockIndex] == null) {\n contentBlocks[blockIndex] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: String(blockIndex),\n });\n }\n {\n const redactedPayload: AmazonBedrockReasoningMetadata = {\n redactedData: reasoningContent.data,\n };\n controller.enqueue({\n type: 'reasoning-delta',\n id: String(blockIndex),\n delta: '',\n providerMetadata: {\n amazonBedrock: redactedPayload,\n bedrock: redactedPayload,\n },\n });\n }\n }\n }\n\n const contentBlockStart = value.contentBlockStart;\n if (contentBlockStart?.start?.toolUse != null) {\n const toolUse = contentBlockStart.start.toolUse;\n const blockIndex = contentBlockStart.contentBlockIndex!;\n const isJsonResponseTool =\n usesJsonResponseTool && toolUse.name === 'json';\n\n const normalizedToolCallId = normalizeToolCallId(\n toolUse.toolUseId!,\n isMistral,\n );\n contentBlocks[blockIndex] = {\n type: 'tool-call',\n toolCallId: normalizedToolCallId,\n toolName: toolUse.name!,\n jsonText: '',\n isJsonResponseTool,\n };\n\n // when this specific tool is the json response tool, we don't emit tool events\n if (!isJsonResponseTool) {\n controller.enqueue({\n type: 'tool-input-start',\n id: normalizedToolCallId,\n toolName: toolUse.name!,\n });\n }\n }\n\n const contentBlockDelta = value.contentBlockDelta;\n if (\n contentBlockDelta?.delta &&\n 'toolUse' in contentBlockDelta.delta &&\n contentBlockDelta.delta.toolUse\n ) {\n const blockIndex = contentBlockDelta.contentBlockIndex!;\n const contentBlock = contentBlocks[blockIndex];\n\n if (contentBlock?.type === 'tool-call') {\n const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n // when this specific tool is the json response tool, we don't emit tool events\n if (!contentBlock.isJsonResponseTool) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: contentBlock.toolCallId,\n delta: delta,\n });\n }\n\n contentBlock.jsonText += delta;\n }\n }\n },\n flush(controller) {\n // Update provider metadata with isJsonResponseFromTool and stopSequence if needed\n if (isJsonResponseFromTool || stopSequence != null) {\n const updatePayload = {\n ...(providerMetadata?.amazonBedrock ??\n providerMetadata?.bedrock),\n ...(isJsonResponseFromTool && {\n isJsonResponseFromTool: true,\n }),\n stopSequence,\n };\n providerMetadata = {\n ...providerMetadata,\n amazonBedrock: updatePayload,\n bedrock: updatePayload,\n };\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertAmazonBedrockUsage(usage),\n ...(providerMetadata && { providerMetadata }),\n });\n },\n }),\n ),\n // TODO request?\n response: { headers: responseHeaders },\n };\n }\n\n private getUrl(modelId: string) {\n const encodedModelId = encodeURIComponent(modelId);\n return `${this.config.baseUrl()}/model/${encodedModelId}`;\n }\n}\n\nconst AmazonBedrockStopReasonSchema = z.union([\n z.enum(BEDROCK_STOP_REASONS),\n z.string(),\n]);\n\nconst AmazonBedrockAdditionalModelResponseFieldsSchema = z\n .object({\n delta: z\n .object({\n stop_sequence: z.string().nullish(),\n })\n .nullish(),\n })\n .catchall(z.unknown());\n\nconst AmazonBedrockToolUseSchema = z.object({\n toolUseId: z.string(),\n name: z.string(),\n input: z.unknown(),\n});\n\nconst AmazonBedrockReasoningTextSchema = z.object({\n signature: z.string().nullish(),\n text: z.string(),\n});\n\nconst AmazonBedrockRedactedReasoningSchema = z.object({\n data: z.string(),\n});\n\n// limited version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst AmazonBedrockResponseSchema = z.object({\n metrics: z\n .object({\n latencyMs: z.number(),\n })\n .nullish(),\n output: z.object({\n message: z.object({\n content: z.array(\n z.object({\n text: z.string().nullish(),\n toolUse: AmazonBedrockToolUseSchema.nullish(),\n reasoningContent: z\n .union([\n z.object({\n reasoningText: AmazonBedrockReasoningTextSchema,\n }),\n z.object({\n redactedReasoning: AmazonBedrockRedactedReasoningSchema,\n }),\n ])\n .nullish(),\n }),\n ),\n role: z.string(),\n }),\n }),\n stopReason: AmazonBedrockStopReasonSchema,\n additionalModelResponseFields:\n AmazonBedrockAdditionalModelResponseFieldsSchema.nullish(),\n trace: z.unknown().nullish(),\n performanceConfig: z.object({ latency: z.string() }).nullish(),\n serviceTier: z.object({ type: z.string() }).nullish(),\n usage: z.object({\n inputTokens: z.number(),\n outputTokens: z.number(),\n totalTokens: z.number(),\n cacheReadInputTokens: z.number().nullish(),\n cacheWriteInputTokens: z.number().nullish(),\n cacheDetails: z\n .array(z.object({ inputTokens: z.number(), ttl: z.string() }))\n .nullish(),\n }),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst AmazonBedrockStreamSchema = z.object({\n contentBlockDelta: z\n .object({\n contentBlockIndex: z.number(),\n delta: z\n .union([\n z.object({ text: z.string() }),\n z.object({ toolUse: z.object({ input: z.string() }) }),\n z.object({\n reasoningContent: z.object({ text: z.string() }),\n }),\n z.object({\n reasoningContent: z.object({\n signature: z.string(),\n }),\n }),\n z.object({\n reasoningContent: z.object({ data: z.string() }),\n }),\n ])\n .nullish(),\n })\n .nullish(),\n contentBlockStart: z\n .object({\n contentBlockIndex: z.number(),\n start: z\n .object({\n toolUse: AmazonBedrockToolUseSchema.nullish(),\n })\n .nullish(),\n })\n .nullish(),\n contentBlockStop: z\n .object({\n contentBlockIndex: z.number(),\n })\n .nullish(),\n internalServerException: z.record(z.string(), z.unknown()).nullish(),\n messageStop: z\n .object({\n additionalModelResponseFields:\n AmazonBedrockAdditionalModelResponseFieldsSchema.nullish(),\n stopReason: AmazonBedrockStopReasonSchema,\n })\n .nullish(),\n metadata: z\n .object({\n trace: z.unknown().nullish(),\n performanceConfig: z.object({ latency: z.string() }).nullish(),\n serviceTier: z.object({ type: z.string() }).nullish(),\n usage: z\n .object({\n cacheReadInputTokens: z.number().nullish(),\n cacheWriteInputTokens: z.number().nullish(),\n cacheDetails: z\n .array(z.object({ inputTokens: z.number(), ttl: z.string() }))\n .nullish(),\n inputTokens: z.number(),\n outputTokens: z.number(),\n })\n .nullish(),\n })\n .nullish(),\n modelStreamErrorException: z.record(z.string(), z.unknown()).nullish(),\n throttlingException: z.record(z.string(), z.unknown()).nullish(),\n validationException: z.record(z.string(), z.unknown()).nullish(),\n});\n\nexport {\n amazonBedrockReasoningMetadataSchema,\n type AmazonBedrockReasoningMetadata,\n} from './amazon-bedrock-reasoning-metadata';\n\nconst amazonBedrockReasoningEffortMap: Partial<\n Record<string, 'low' | 'medium' | 'high' | 'max'>\n> = {\n minimal: 'low',\n low: 'low',\n medium: 'medium',\n high: 'high',\n xhigh: 'max',\n};\n\nfunction resolveAmazonBedrockReasoningConfig({\n reasoning,\n amazonBedrockOptions,\n warnings,\n isAnthropicModel,\n modelId,\n}: {\n reasoning: LanguageModelV4CallOptions['reasoning'];\n amazonBedrockOptions: AmazonBedrockLanguageModelChatOptions;\n warnings: SharedV4Warning[];\n isAnthropicModel: boolean;\n modelId: string;\n}): AmazonBedrockLanguageModelChatOptions {\n if (!isCustomReasoning(reasoning)) {\n return amazonBedrockOptions;\n }\n\n const result = { ...amazonBedrockOptions };\n\n if (isAnthropicModel) {\n const capabilities = getModelCapabilities(modelId);\n\n if (reasoning === 'none') {\n result.reasoningConfig = { type: 'disabled' };\n } else if (capabilities.supportsAdaptiveThinking) {\n const effort = mapReasoningToProviderEffort({\n reasoning,\n effortMap: amazonBedrockReasoningEffortMap,\n warnings,\n });\n result.reasoningConfig = {\n type: 'adaptive',\n maxReasoningEffort: effort,\n ...amazonBedrockOptions.reasoningConfig,\n };\n } else {\n const budgetTokens = mapReasoningToProviderBudget({\n reasoning,\n maxOutputTokens: capabilities.maxOutputTokens,\n maxReasoningBudget: capabilities.maxOutputTokens,\n warnings,\n });\n if (budgetTokens != null) {\n result.reasoningConfig = {\n type: 'enabled',\n budgetTokens,\n ...amazonBedrockOptions.reasoningConfig,\n };\n }\n }\n } else if (reasoning !== 'none') {\n const effort = mapReasoningToProviderEffort({\n reasoning,\n effortMap: amazonBedrockReasoningEffortMap,\n warnings,\n });\n result.reasoningConfig = {\n maxReasoningEffort: effort,\n ...amazonBedrockOptions.reasoningConfig,\n };\n }\n\n /*\n * Mirror anthropic-messages-language-model.ts: when the merged type ends up\n * 'disabled' (user override combined with a non-none reasoning), strip\n * derived effort/budget so downstream does not emit output_config.effort\n * alongside disabled thinking.\n */\n if (result.reasoningConfig?.type === 'disabled') {\n delete result.reasoningConfig.maxReasoningEffort;\n delete result.reasoningConfig.budgetTokens;\n }\n\n return result;\n}\n","import type { JSONObject } from '@ai-sdk/provider';\n\nexport interface AmazonBedrockConverseInput {\n system?: AmazonBedrockSystemMessages;\n messages: AmazonBedrockMessages;\n toolConfig?: AmazonBedrockToolConfiguration;\n inferenceConfig?: {\n maxOutputTokens?: number;\n temperature?: number;\n topP?: number;\n topK?: number;\n stopSequences?: string[];\n };\n additionalModelRequestFields?: Record<string, unknown>;\n additionalModelResponseFieldPaths?: string[];\n serviceTier?: {\n type: string;\n };\n guardrailConfig?:\n | AmazonBedrockGuardrailConfiguration\n | AmazonBedrockGuardrailStreamConfiguration\n | undefined;\n}\n\nexport type AmazonBedrockSystemMessages =\n Array<AmazonBedrockSystemContentBlock>;\n\nexport type AmazonBedrockMessages = Array<\n AmazonBedrockAssistantMessage | AmazonBedrockUserMessage\n>;\n\nexport interface AmazonBedrockAssistantMessage {\n role: 'assistant';\n content: Array<AmazonBedrockContentBlock>;\n}\n\nexport interface AmazonBedrockUserMessage {\n role: 'user';\n content: Array<AmazonBedrockContentBlock>;\n}\n\n/**\n * Cache TTL options for Bedrock prompt caching.\n * @see https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html\n *\n * - '5m': 5-minute TTL (default, supported by all models)\n * - '1h': 1-hour TTL (supported by Claude Opus 4.5, Claude Haiku 4.5, Claude Sonnet 4.5)\n */\nexport type AmazonBedrockCacheTTL = '5m' | '1h';\n\nexport type AmazonBedrockCachePoint = {\n cachePoint: { type: 'default'; ttl?: AmazonBedrockCacheTTL };\n};\n\n/**\n * Creates a cache point with an optional TTL.\n * @param ttl - Cache TTL ('5m' or '1h'). If not provided, uses the default 5-minute TTL.\n */\nexport function createAmazonBedrockCachePoint(\n ttl?: AmazonBedrockCacheTTL,\n): AmazonBedrockCachePoint {\n return {\n cachePoint: { type: 'default', ttl },\n };\n}\n\nexport type AmazonBedrockSystemContentBlock =\n | { text: string }\n | AmazonBedrockCachePoint;\n\nexport interface AmazonBedrockGuardrailConfiguration {\n guardrails?: Array<{\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n }>;\n}\n\nexport type AmazonBedrockGuardrailStreamConfiguration =\n AmazonBedrockGuardrailConfiguration;\n\nexport interface AmazonBedrockToolInputSchema {\n json: Record<string, unknown>;\n}\n\nexport interface AmazonBedrockTool {\n toolSpec: {\n name: string;\n description?: string;\n strict?: boolean;\n inputSchema: { json: JSONObject };\n };\n}\n\nexport interface AmazonBedrockToolConfiguration {\n tools?: Array<AmazonBedrockTool | AmazonBedrockCachePoint>;\n toolChoice?:\n | { tool: { name: string } }\n | { auto: {} }\n | { any: {} }\n | undefined;\n}\n\nexport const BEDROCK_STOP_REASONS = [\n 'stop',\n 'stop_sequence',\n 'end_turn',\n 'length',\n 'max_tokens',\n 'content-filter',\n 'content_filtered',\n 'guardrail_intervened',\n 'tool-calls',\n 'tool_use',\n] as const;\n\nexport type AmazonBedrockStopReason = (typeof BEDROCK_STOP_REASONS)[number];\n\n/**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ImageBlock.html\n */\nexport const BEDROCK_IMAGE_MIME_TYPES = {\n 'image/jpeg': 'jpeg',\n 'image/png': 'png',\n 'image/gif': 'gif',\n 'image/webp': 'webp',\n} as const;\ntype AmazonBedrockImageFormats = typeof BEDROCK_IMAGE_MIME_TYPES;\nexport type AmazonBedrockImageFormat =\n AmazonBedrockImageFormats[keyof AmazonBedrockImageFormats];\nexport type AmazonBedrockImageMimeType = keyof AmazonBedrockImageFormats;\n\n/**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_DocumentBlock.html\n */\nexport const BEDROCK_DOCUMENT_MIME_TYPES = {\n 'application/pdf': 'pdf',\n 'text/csv': 'csv',\n 'application/msword': 'doc',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n 'docx',\n 'application/vnd.ms-excel': 'xls',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',\n 'text/html': 'html',\n 'text/plain': 'txt',\n 'text/markdown': 'md',\n} as const;\ntype AmazonBedrockDocumentFormats = typeof BEDROCK_DOCUMENT_MIME_TYPES;\nexport type AmazonBedrockDocumentFormat =\n AmazonBedrockDocumentFormats[keyof AmazonBedrockDocumentFormats];\nexport type AmazonBedrockDocumentMimeType = keyof AmazonBedrockDocumentFormats;\n\nexport interface AmazonBedrockDocumentBlock {\n document: {\n format: AmazonBedrockDocumentFormat;\n name: string;\n source: {\n bytes: string;\n };\n citations?: {\n enabled: boolean;\n };\n };\n}\n\nexport interface AmazonBedrockGuardrailConverseContentBlock {\n guardContent: unknown;\n}\n\nexport interface AmazonBedrockImageBlock {\n image: {\n format: AmazonBedrockImageFormat;\n source: {\n bytes: string;\n };\n };\n}\n\nexport interface AmazonBedrockToolResultBlock {\n toolResult: {\n toolUseId: string;\n content: Array<AmazonBedrockTextBlock | AmazonBedrockImageBlock>;\n };\n}\n\nexport interface AmazonBedrockToolUseBlock {\n toolUse: {\n toolUseId: string;\n name: string;\n input: Record<string, unknown>;\n };\n}\n\nexport interface AmazonBedrockTextBlock {\n text: string;\n}\n\nexport interface AmazonBedrockReasoningContentBlock {\n reasoningContent: {\n reasoningText: {\n text: string;\n signature?: string;\n };\n };\n}\n\nexport interface AmazonBedrockRedactedReasoningContentBlock {\n reasoningContent: {\n redactedReasoning: {\n data: string;\n };\n };\n}\n\nexport type AmazonBedrockContentBlock =\n | AmazonBedrockDocumentBlock\n | AmazonBedrockGuardrailConverseContentBlock\n | AmazonBedrockImageBlock\n | AmazonBedrockTextBlock\n | AmazonBedrockToolResultBlock\n | AmazonBedrockToolUseBlock\n | AmazonBedrockReasoningContentBlock\n | AmazonBedrockRedactedReasoningContentBlock\n | AmazonBedrockCachePoint;\n","import { z } from 'zod/v4';\n\n// https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html\nexport type AmazonBedrockChatModelId =\n | 'amazon.titan-tg1-large'\n | 'amazon.titan-text-express-v1'\n | 'anthropic.claude-v2'\n | 'anthropic.claude-v2:1'\n | 'anthropic.claude-instant-v1'\n | 'anthropic.claude-opus-4-7'\n | 'anthropic.claude-opus-4-6-v1'\n | 'anthropic.claude-sonnet-4-6-v1'\n | 'anthropic.claude-opus-4-5-20251101-v1:0'\n | 'anthropic.claude-haiku-4-5-20251001-v1:0'\n | 'anthropic.claude-sonnet-4-5-20250929-v1:0'\n | 'anthropic.claude-sonnet-4-20250514-v1:0'\n | 'anthropic.claude-opus-4-20250514-v1:0'\n | 'anthropic.claude-opus-4-1-20250805-v1:0'\n | 'anthropic.claude-3-7-sonnet-20250219-v1:0'\n | 'anthropic.claude-3-5-sonnet-20240620-v1:0'\n | 'anthropic.claude-3-5-sonnet-20241022-v2:0'\n | 'anthropic.claude-3-5-haiku-20241022-v1:0'\n | 'anthropic.claude-3-sonnet-20240229-v1:0'\n | 'anthropic.claude-3-haiku-20240307-v1:0'\n | 'anthropic.claude-3-opus-20240229-v1:0'\n | 'cohere.command-text-v14'\n | 'cohere.command-light-text-v14'\n | 'cohere.command-r-v1:0'\n | 'cohere.command-r-plus-v1:0'\n | 'meta.llama3-70b-instruct-v1:0'\n | 'meta.llama3-8b-instruct-v1:0'\n | 'meta.llama3-1-405b-instruct-v1:0'\n | 'meta.llama3-1-70b-instruct-v1:0'\n | 'meta.llama3-1-8b-instruct-v1:0'\n | 'meta.llama3-2-11b-instruct-v1:0'\n | 'meta.llama3-2-1b-instruct-v1:0'\n | 'meta.llama3-2-3b-instruct-v1:0'\n | 'meta.llama3-2-90b-instruct-v1:0'\n | 'mistral.mistral-7b-instruct-v0:2'\n | 'mistral.mixtral-8x7b-instruct-v0:1'\n | 'mistral.mistral-large-2402-v1:0'\n | 'mistral.mistral-small-2402-v1:0'\n | 'openai.gpt-oss-120b-1:0'\n | 'openai.gpt-oss-20b-1:0'\n | 'amazon.titan-text-express-v1'\n | 'amazon.titan-text-lite-v1'\n | 'us.amazon.nova-premier-v1:0'\n | 'us.amazon.nova-pro-v1:0'\n | 'us.amazon.nova-micro-v1:0'\n | 'us.amazon.nova-lite-v1:0'\n | 'us.anthropic.claude-3-sonnet-20240229-v1:0'\n | 'us.anthropic.claude-3-opus-20240229-v1:0'\n | 'us.anthropic.claude-3-haiku-20240307-v1:0'\n | 'us.anthropic.claude-3-5-sonnet-20240620-v1:0'\n | 'us.anthropic.claude-3-5-haiku-20241022-v1:0'\n | 'us.anthropic.claude-3-5-sonnet-20241022-v2:0'\n | 'us.anthropic.claude-3-7-sonnet-20250219-v1:0'\n | 'us.anthropic.claude-opus-4-7'\n | 'us.anthropic.claude-opus-4-6-v1'\n | 'us.anthropic.claude-sonnet-4-6-v1'\n | 'us.anthropic.claude-opus-4-5-20251101-v1:0'\n | 'us.anthropic.claude-sonnet-4-5-20250929-v1:0'\n | 'us.anthropic.claude-sonnet-4-20250514-v1:0'\n | 'us.anthropic.claude-opus-4-20250514-v1:0'\n | 'us.anthropic.claude-opus-4-1-20250805-v1:0'\n | 'us.anthropic.claude-haiku-4-5-20251001-v1:0'\n | 'us.meta.llama3-2-11b-instruct-v1:0'\n | 'us.meta.llama3-2-3b-instruct-v1:0'\n | 'us.meta.llama3-2-90b-instruct-v1:0'\n | 'us.meta.llama3-2-1b-instruct-v1:0'\n | 'us.meta.llama3-1-8b-instruct-v1:0'\n | 'us.meta.llama3-1-70b-instruct-v1:0'\n | 'us.meta.llama3-3-70b-instruct-v1:0'\n | 'us.deepseek.r1-v1:0'\n | 'us.mistral.pixtral-large-2502-v1:0'\n | 'us.meta.llama4-scout-17b-instruct-v1:0'\n | 'us.meta.llama4-maverick-17b-instruct-v1:0'\n | (string & {});\n\n/**\n * Bedrock file part provider options for document-specific features.\n * These options apply to individual file parts (documents).\n */\nexport const amazonBedrockFilePartProviderOptions = z.object({\n /**\n * Citation configuration for this document.\n * When enabled, this document will generate citations in the response.\n */\n citations: z\n .object({\n /**\n * Enable citations for this document\n */\n enabled: z.boolean(),\n })\n .optional(),\n});\n\nexport type AmazonBedrockFilePartProviderOptions = z.infer<\n typeof amazonBedrockFilePartProviderOptions\n>;\n\nexport const amazonBedrockLanguageModelChatOptions = z.object({\n /**\n * Additional inference parameters that the model supports,\n * beyond the base set of inference parameters that Converse\n * supports in the inferenceConfig field\n */\n additionalModelRequestFields: z.record(z.string(), z.any()).optional(),\n reasoningConfig: z\n .object({\n type: z\n .union([\n z.literal('enabled'),\n z.literal('disabled'),\n z.literal('adaptive'),\n ])\n .optional(),\n budgetTokens: z.number().optional(),\n maxReasoningEffort: z\n .enum(['low', 'medium', 'high', 'xhigh', 'max'])\n .optional(),\n display: z.enum(['omitted', 'summarized']).optional(),\n })\n .optional(),\n /**\n * Anthropic beta features to enable\n */\n anthropicBeta: z.array(z.string()).optional(),\n /**\n * Service tier for the request.\n * @see https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html\n *\n * - 'reserved': Uses provisioned throughput capacity\n * - 'priority': Prioritizes low-latency inference when capacity is available\n * - 'default': Standard on-demand tier\n * - 'flex': Lower-cost tier for flexible latency workloads\n */\n serviceTier: z.enum(['reserved', 'priority', 'default', 'flex']).optional(),\n});\n\nexport type AmazonBedrockLanguageModelChatOptions = z.infer<\n typeof amazonBedrockLanguageModelChatOptions\n>;\n","import { z } from 'zod/v4';\n\nexport const AmazonBedrockErrorSchema = z.object({\n message: z.string(),\n type: z.string().nullish(),\n});\n","import { EmptyResponseBodyError } from '@ai-sdk/provider';\nimport {\n safeParseJSON,\n extractResponseHeaders,\n safeValidateTypes,\n type ParseResult,\n type ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport type { ZodType } from 'zod/v4';\nimport { createAmazonBedrockEventStreamDecoder } from './amazon-bedrock-event-stream-decoder';\n\nexport const createAmazonBedrockEventStreamResponseHandler =\n <T>(\n chunkSchema: ZodType<T, any>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n return {\n responseHeaders,\n value: createAmazonBedrockEventStreamDecoder<ParseResult<T>>(\n response.body,\n async (event, controller) => {\n if (event.messageType === 'event') {\n const parsedDataResult = await safeParseJSON({ text: event.data });\n if (!parsedDataResult.success) {\n controller.enqueue(parsedDataResult);\n return;\n }\n\n delete (parsedDataResult.value as any).p;\n const wrappedData = {\n [event.eventType]: parsedDataResult.value,\n };\n\n const validatedWrappedData = await safeValidateTypes<T>({\n value: wrappedData,\n schema: chunkSchema,\n });\n if (!validatedWrappedData.success) {\n controller.enqueue(validatedWrappedData);\n } else {\n controller.enqueue({\n success: true,\n value: validatedWrappedData.value,\n rawValue: wrappedData,\n });\n }\n }\n },\n ),\n };\n };\n","import { EventStreamCodec } from '@smithy/eventstream-codec';\nimport { toUtf8, fromUtf8 } from '@smithy/util-utf8';\n\nexport interface DecodedEvent {\n messageType: string;\n eventType: string;\n data: string;\n}\n\nexport function createAmazonBedrockEventStreamDecoder<T>(\n body: ReadableStream<Uint8Array>,\n processEvent: (\n event: DecodedEvent,\n controller: TransformStreamDefaultController<T>,\n ) => void | Promise<void>,\n): ReadableStream<T> {\n const codec = new EventStreamCodec(toUtf8, fromUtf8);\n let buffer = new Uint8Array(0);\n const textDecoder = new TextDecoder();\n\n return body.pipeThrough(\n new TransformStream<Uint8Array, T>({\n async transform(chunk, controller) {\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n while (buffer.length >= 4) {\n const totalLength = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(0, false);\n\n if (buffer.length < totalLength) {\n break;\n }\n\n try {\n const subView = buffer.subarray(0, totalLength);\n const decoded = codec.decode(subView);\n\n buffer = buffer.slice(totalLength);\n\n const messageType = decoded.headers[':message-type']\n ?.value as string;\n const eventType = decoded.headers[':event-type']?.value as string;\n const data = textDecoder.decode(decoded.body);\n\n await processEvent({ messageType, eventType, data }, controller);\n } catch {\n break;\n }\n }\n },\n }),\n );\n}\n","import {\n UnsupportedFunctionalityError,\n type JSONObject,\n type LanguageModelV4CallOptions,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport { asSchema } from '@ai-sdk/provider-utils';\nimport {\n anthropicTools,\n prepareTools as prepareAnthropicTools,\n} from '@ai-sdk/anthropic/internal';\nimport type {\n AmazonBedrockTool,\n AmazonBedrockToolConfiguration,\n} from './amazon-bedrock-api-types';\n\nexport async function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV4CallOptions['tools'];\n toolChoice?: LanguageModelV4CallOptions['toolChoice'];\n modelId: string;\n}): Promise<{\n toolConfig: AmazonBedrockToolConfiguration;\n additionalTools: Record<string, unknown> | undefined;\n betas: Set<string>;\n toolWarnings: SharedV4Warning[];\n}> {\n const toolWarnings: SharedV4Warning[] = [];\n const betas = new Set<string>();\n\n if (tools == null || tools.length === 0) {\n return {\n toolConfig: {},\n additionalTools: undefined,\n betas,\n toolWarnings,\n };\n }\n\n // Filter out unsupported web_search tool and add a warning\n const supportedTools = tools.filter(tool => {\n if (\n tool.type === 'provider' &&\n tool.id === 'anthropic.web_search_20250305'\n ) {\n toolWarnings.push({\n type: 'unsupported',\n feature: 'web_search_20250305 tool',\n details:\n 'The web_search_20250305 tool is not supported on Amazon Bedrock.',\n });\n return false; // Exclude this tool\n }\n return true; // Include all other tools\n });\n\n if (supportedTools.length === 0) {\n return {\n toolConfig: {},\n additionalTools: undefined,\n betas,\n toolWarnings,\n };\n }\n\n const isAnthropicModel = modelId.includes('anthropic.');\n const ProviderTools = supportedTools.filter(t => t.type === 'provider');\n const functionTools = supportedTools.filter(t => t.type === 'function');\n\n let additionalTools: Record<string, unknown> | undefined = undefined;\n const amazonBedrockTools: AmazonBedrockTool[] = [];\n\n const usingAnthropicTools = isAnthropicModel && ProviderTools.length > 0;\n\n // Handle Anthropic provider-defined tools for Anthropic models on Bedrock\n if (usingAnthropicTools) {\n const {\n toolChoice: preparedAnthropicToolChoice,\n toolWarnings: anthropicToolWarnings,\n betas: anthropicBetas,\n } = await prepareAnthropicTools({\n tools: ProviderTools,\n toolChoice,\n supportsStructuredOutput: false,\n supportsStrictTools: false,\n });\n\n toolWarnings.push(...anthropicToolWarnings);\n anthropicBetas.forEach(beta => betas.add(beta));\n\n // For Anthropic tools on Bedrock, only the 'tool_choice' goes into additional fields.\n // The tool definitions themselves are sent in the standard 'toolConfig'.\n if (preparedAnthropicToolChoice) {\n additionalTools = {\n tool_choice: preparedAnthropicToolChoice,\n };\n }\n\n // Create a standard Bedrock tool representation for validation purposes\n for (const tool of ProviderTools) {\n const toolFactory = Object.values(anthropicTools).find(factory => {\n const instance = (factory as (args: any) => any)({});\n return instance.id === tool.id;\n });\n\n if (toolFactory != null) {\n const fullToolDefinition = (toolFactory as (args: any) => any)({});\n amazonBedrockTools.push({\n toolSpec: {\n name: tool.name,\n inputSchema: {\n json: (await asSchema(fullToolDefinition.inputSchema)\n .jsonSchema) as JSONObject,\n },\n },\n });\n } else {\n toolWarnings.push({ type: 'unsupported', feature: 'tool ${tool.id}' });\n }\n }\n } else {\n // Report unsupported provider-defined tools for non-anthropic models\n for (const tool of ProviderTools) {\n toolWarnings.push({ type: 'unsupported', feature: `tool ${tool.id}` });\n }\n }\n\n const filteredFunctionTools =\n toolChoice?.type === 'tool'\n ? functionTools.filter(t => t.name === toolChoice.toolName)\n : functionTools;\n\n for (const tool of filteredFunctionTools) {\n amazonBedrockTools.push({\n toolSpec: {\n name: tool.name,\n ...(tool.description?.trim() !== ''\n ? { description: tool.description }\n : {}),\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n inputSchema: {\n json: tool.inputSchema as JSONObject,\n },\n },\n });\n }\n\n // Handle toolChoice for standard Bedrock tools, but NOT for Anthropic provider-defined tools\n let amazonBedrockToolChoice: AmazonBedrockToolConfiguration['toolChoice'] =\n undefined;\n if (!usingAnthropicTools && amazonBedrockTools.length > 0 && toolChoice) {\n const type = toolChoice.type;\n switch (type) {\n case 'auto':\n amazonBedrockToolChoice = { auto: {} };\n break;\n case 'required':\n amazonBedrockToolChoice = { any: {} };\n break;\n case 'none':\n amazonBedrockTools.length = 0;\n amazonBedrockToolChoice = undefined;\n break;\n case 'tool':\n amazonBedrockToolChoice = { tool: { name: toolChoice.toolName } };\n break;\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n }\n\n const toolConfig: AmazonBedrockToolConfiguration =\n amazonBedrockTools.length > 0\n ? { tools: amazonBedrockTools, toolChoice: amazonBedrockToolChoice }\n : {};\n\n return {\n toolConfig,\n additionalTools,\n betas,\n toolWarnings,\n };\n}\n","import type { LanguageModelV4Usage } from '@ai-sdk/provider';\n\nexport type AmazonBedrockUsage = {\n inputTokens: number;\n outputTokens: number;\n totalTokens?: number;\n cacheReadInputTokens?: number | null;\n cacheWriteInputTokens?: number | null;\n};\n\nexport function convertAmazonBedrockUsage(\n usage: AmazonBedrockUsage | undefined | null,\n): LanguageModelV4Usage {\n if (usage == null) {\n return {\n inputTokens: {\n total: undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: undefined,\n text: undefined,\n reasoning: undefined,\n },\n raw: undefined,\n };\n }\n\n const inputTokens = usage.inputTokens;\n const outputTokens = usage.outputTokens;\n const cacheReadTokens = usage.cacheReadInputTokens ?? 0;\n const cacheWriteTokens = usage.cacheWriteInputTokens ?? 0;\n\n return {\n inputTokens: {\n total: inputTokens + cacheReadTokens + cacheWriteTokens,\n noCache: inputTokens,\n cacheRead: cacheReadTokens,\n cacheWrite: cacheWriteTokens,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n reasoning: undefined,\n },\n raw: usage,\n };\n}\n","import {\n UnsupportedFunctionalityError,\n type JSONObject,\n type LanguageModelV4Message,\n type LanguageModelV4Prompt,\n type SharedV4ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n getTopLevelMediaType,\n isFullMediaType,\n parseProviderOptions,\n resolveFullMediaType,\n stripFileExtension,\n} from '@ai-sdk/provider-utils';\nimport {\n BEDROCK_DOCUMENT_MIME_TYPES,\n BEDROCK_IMAGE_MIME_TYPES,\n type AmazonBedrockAssistantMessage,\n type AmazonBedrockCachePoint,\n type AmazonBedrockDocumentFormat,\n type AmazonBedrockDocumentMimeType,\n type AmazonBedrockImageFormat,\n type AmazonBedrockImageMimeType,\n type AmazonBedrockMessages,\n type AmazonBedrockSystemMessages,\n type AmazonBedrockUserMessage,\n} from './amazon-bedrock-api-types';\nimport { amazonBedrockFilePartProviderOptions } from './amazon-bedrock-chat-language-model-options';\nimport { amazonBedrockReasoningMetadataSchema } from './amazon-bedrock-reasoning-metadata';\nimport { normalizeToolCallId } from './normalize-tool-call-id';\n\nfunction getCachePoint(\n providerMetadata: SharedV4ProviderMetadata | undefined,\n): AmazonBedrockCachePoint | undefined {\n const cachePointConfig = (providerMetadata?.amazonBedrock?.cachePoint ??\n providerMetadata?.bedrock?.cachePoint) as\n | AmazonBedrockCachePoint['cachePoint']\n | undefined;\n\n if (!cachePointConfig) {\n return undefined;\n }\n\n return { cachePoint: cachePointConfig };\n}\n\nasync function shouldEnableCitations(\n providerMetadata: SharedV4ProviderMetadata | undefined,\n): Promise<boolean> {\n const amazonBedrockOptions =\n (await parseProviderOptions({\n provider: 'amazonBedrock',\n providerOptions: providerMetadata,\n schema: amazonBedrockFilePartProviderOptions,\n })) ??\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions: providerMetadata,\n schema: amazonBedrockFilePartProviderOptions,\n }));\n\n return amazonBedrockOptions?.citations?.enabled ?? false;\n}\n\nexport async function convertToAmazonBedrockChatMessages(\n prompt: LanguageModelV4Prompt,\n isMistral: boolean = false,\n): Promise<{\n system: AmazonBedrockSystemMessages;\n messages: AmazonBedrockMessages;\n}> {\n const blocks = groupIntoBlocks(prompt);\n\n let system: AmazonBedrockSystemMessages = [];\n const messages: AmazonBedrockMessages = [];\n\n let documentCounter = 0;\n const generateDocumentName = () => `document-${++documentCounter}`;\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const isLastBlock = i === blocks.length - 1;\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (messages.length > 0) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n for (const message of block.messages) {\n system.push({ text: message.content });\n const cachePoint = getCachePoint(message.providerOptions);\n if (cachePoint) {\n system.push(cachePoint);\n }\n }\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const amazonBedrockContent: AmazonBedrockUserMessage['content'] = [];\n\n for (const message of block.messages) {\n const { role, content, providerOptions } = message;\n switch (role) {\n case 'user': {\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n switch (part.type) {\n case 'text': {\n amazonBedrockContent.push({\n text: part.text,\n });\n break;\n }\n\n case 'file': {\n switch (part.data.type) {\n case 'reference': {\n throw new UnsupportedFunctionalityError({\n functionality: 'file parts with provider references',\n });\n }\n case 'url': {\n throw new UnsupportedFunctionalityError({\n functionality: 'File URL data',\n });\n }\n case 'text': {\n const textMediaType = isFullMediaType(part.mediaType)\n ? part.mediaType\n : 'text/plain';\n const enableCitations = await shouldEnableCitations(\n part.providerOptions,\n );\n\n amazonBedrockContent.push({\n document: {\n format:\n getAmazonBedrockDocumentFormat(textMediaType),\n name: part.filename\n ? stripFileExtension(part.filename)\n : generateDocumentName(),\n source: {\n bytes: convertToBase64(\n new TextEncoder().encode(part.data.text),\n ),\n },\n ...(enableCitations && {\n citations: { enabled: true },\n }),\n },\n });\n break;\n }\n case 'data': {\n const fullMediaType = resolveFullMediaType({ part });\n\n if (getTopLevelMediaType(fullMediaType) === 'image') {\n amazonBedrockContent.push({\n image: {\n format:\n getAmazonBedrockImageFormat(fullMediaType),\n source: {\n bytes: convertToBase64(part.data.data),\n },\n },\n });\n } else {\n const enableCitations = await shouldEnableCitations(\n part.providerOptions,\n );\n\n amazonBedrockContent.push({\n document: {\n format:\n getAmazonBedrockDocumentFormat(fullMediaType),\n name: part.filename\n ? stripFileExtension(part.filename)\n : generateDocumentName(),\n source: {\n bytes: convertToBase64(part.data.data),\n },\n ...(enableCitations && {\n citations: { enabled: true },\n }),\n },\n });\n }\n break;\n }\n }\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\n if (part.type === 'tool-approval-response') {\n continue;\n }\n let toolResultContent;\n\n const output = part.output;\n switch (output.type) {\n case 'content': {\n toolResultContent = output.value.map(contentPart => {\n switch (contentPart.type) {\n case 'text':\n return { text: contentPart.text };\n case 'file-data':\n if (!contentPart.mediaType.startsWith('image/')) {\n throw new UnsupportedFunctionalityError({\n functionality: `media type: ${contentPart.mediaType}`,\n });\n }\n\n const format = getAmazonBedrockImageFormat(\n contentPart.mediaType,\n );\n\n return {\n image: {\n format,\n source: { bytes: contentPart.data },\n },\n };\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `unsupported tool content part type: ${contentPart.type}`,\n });\n }\n }\n });\n break;\n }\n case 'text':\n case 'error-text':\n toolResultContent = [{ text: output.value }];\n break;\n case 'execution-denied':\n toolResultContent = [\n { text: output.reason ?? 'Tool call execution denied.' },\n ];\n break;\n case 'json':\n case 'error-json':\n default:\n toolResultContent = [\n { text: JSON.stringify(output.value) },\n ];\n break;\n }\n\n amazonBedrockContent.push({\n toolResult: {\n toolUseId: normalizeToolCallId(part.toolCallId, isMistral),\n content: toolResultContent,\n },\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n\n const cachePoint = getCachePoint(providerOptions);\n if (cachePoint) {\n amazonBedrockContent.push(cachePoint);\n }\n }\n\n messages.push({ role: 'user', content: amazonBedrockContent });\n\n break;\n }\n\n case 'assistant': {\n // combines multiple assistant messages in this block into a single message:\n const amazonBedrockContent: AmazonBedrockAssistantMessage['content'] =\n [];\n\n for (let j = 0; j < block.messages.length; j++) {\n const message = block.messages[j];\n const isLastMessage = j === block.messages.length - 1;\n const { content } = message;\n const hasReasoningBlocks = content.some(\n part => part.type === 'reasoning',\n );\n\n for (let k = 0; k < content.length; k++) {\n const part = content[k];\n const isLastContentPart = k === content.length - 1;\n\n switch (part.type) {\n case 'text': {\n // Skip empty text blocks unless reasoning blocks are present\n if (!part.text.trim() && !hasReasoningBlocks) {\n break;\n }\n\n amazonBedrockContent.push({\n text:\n // trim the last text part if it's the last message in the block\n // because Bedrock does not allow trailing whitespace\n // in pre-filled assistant responses\n trimIfLast(\n isLastBlock,\n isLastMessage,\n isLastContentPart,\n part.text,\n ),\n });\n break;\n }\n\n case 'reasoning': {\n const reasoningMetadata =\n (await parseProviderOptions({\n provider: 'amazonBedrock',\n providerOptions: part.providerOptions,\n schema: amazonBedrockReasoningMetadataSchema,\n })) ??\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions: part.providerOptions,\n schema: amazonBedrockReasoningMetadataSchema,\n }));\n\n if (reasoningMetadata?.signature != null) {\n // do not trim reasoning text when a signature is present:\n // the signature validates the exact original bytes\n amazonBedrockContent.push({\n reasoningContent: {\n reasoningText: {\n text: part.text,\n signature: reasoningMetadata.signature,\n },\n },\n });\n } else if (reasoningMetadata?.redactedData != null) {\n amazonBedrockContent.push({\n reasoningContent: {\n redactedReasoning: {\n data: reasoningMetadata.redactedData,\n },\n },\n });\n } else if (\n part.providerOptions == null ||\n Object.keys(part.providerOptions).every(\n k => k === 'bedrock' || k === 'amazonBedrock',\n )\n ) {\n // No foreign-provider metadata — preserve text. This covers\n // the prefill case where the caller hand-crafts a reasoning\n // block without a signature. Forwarding reasoning that was\n // signed by a different provider (e.g. anthropic) would\n // cause Bedrock to reject with\n // `thinking.signature: Field required`, so we drop those.\n // trim the last text part if it's the last message in the\n // block because Bedrock does not allow trailing whitespace\n // in pre-filled assistant responses\n amazonBedrockContent.push({\n reasoningContent: {\n reasoningText: {\n text: trimIfLast(\n isLastBlock,\n isLastMessage,\n isLastContentPart,\n part.text,\n ),\n },\n },\n });\n }\n\n break;\n }\n\n case 'tool-call': {\n amazonBedrockContent.push({\n toolUse: {\n toolUseId: normalizeToolCallId(part.toolCallId, isMistral),\n name: part.toolName,\n input: part.input as JSONObject,\n },\n });\n break;\n }\n }\n }\n const cachePoint = getCachePoint(message.providerOptions);\n if (cachePoint) {\n amazonBedrockContent.push(cachePoint);\n }\n }\n\n messages.push({ role: 'assistant', content: amazonBedrockContent });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { system, messages };\n}\n\nfunction getAmazonBedrockImageFormat(\n mimeType: string,\n): AmazonBedrockImageFormat {\n const format =\n BEDROCK_IMAGE_MIME_TYPES[mimeType as AmazonBedrockImageMimeType];\n if (!format) {\n throw new UnsupportedFunctionalityError({\n functionality: `image mime type: ${mimeType}`,\n message: `Unsupported image mime type: ${mimeType}, expected one of: ${Object.keys(BEDROCK_IMAGE_MIME_TYPES).join(', ')}`,\n });\n }\n\n return format;\n}\n\nfunction getAmazonBedrockDocumentFormat(\n mimeType: string,\n): AmazonBedrockDocumentFormat {\n const format =\n BEDROCK_DOCUMENT_MIME_TYPES[mimeType as AmazonBedrockDocumentMimeType];\n if (!format) {\n throw new UnsupportedFunctionalityError({\n functionality: `file mime type: ${mimeType}`,\n message: `Unsupported file mime type: ${mimeType}, expected one of: ${Object.keys(BEDROCK_DOCUMENT_MIME_TYPES).join(', ')}`,\n });\n }\n return format;\n}\n\nfunction trimIfLast(\n isLastBlock: boolean,\n isLastMessage: boolean,\n isLastContentPart: boolean,\n text: string,\n) {\n return isLastBlock && isLastMessage && isLastContentPart ? text.trim() : text;\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV4Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV4Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV4Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV4Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const message of prompt) {\n const { role } = message;\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { z } from 'zod/v4';\n\nexport const amazonBedrockReasoningMetadataSchema = z.object({\n signature: z.string().optional(),\n redactedData: z.string().optional(),\n});\n\nexport type AmazonBedrockReasoningMetadata = z.infer<\n typeof amazonBedrockReasoningMetadataSchema\n>;\n","/**\n * Checks if the given model ID is a Mistral model.\n * Mistral models on Bedrock are prefixed with 'mistral.' or region-prefixed like 'us.mistral.'.\n */\nexport function isMistralModel(modelId: string): boolean {\n return modelId.includes('mistral.');\n}\n\n/**\n * Normalizes a tool call ID for Mistral models.\n *\n * Mistral models require tool call IDs to match the regex `^[a-zA-Z0-9]{9}$`:\n * - Exactly 9 characters\n * - Alphanumeric only (no underscores, hyphens, or other characters)\n *\n * Bedrock generates tool call IDs in formats like `tooluse_bpe71yCfRu2b5i-nKGDr5g`,\n * which are incompatible with Mistral's requirements.\n *\n * This function extracts the first 9 alphanumeric characters from the ID.\n *\n * @param toolCallId - The original tool call ID from Bedrock\n * @param isMistral - Whether the model is a Mistral model\n * @returns The normalized tool call ID (9 alphanumeric chars) if Mistral, otherwise the original ID\n */\nexport function normalizeToolCallId(\n toolCallId: string,\n isMistral: boolean,\n): string {\n if (!isMistral) {\n return toolCallId;\n }\n\n // Extract only alphanumeric characters and take first 9\n const alphanumericChars = toolCallId.replace(/[^a-zA-Z0-9]/g, '');\n return alphanumericChars.slice(0, 9);\n}\n","import type { LanguageModelV4FinishReason } from '@ai-sdk/provider';\nimport type { AmazonBedrockStopReason } from './amazon-bedrock-api-types';\n\nexport function mapAmazonBedrockFinishReason(\n finishReason: AmazonBedrockStopReason,\n isJsonResponseFromTool?: boolean,\n): LanguageModelV4FinishReason['unified'] {\n switch (finishReason) {\n case 'stop_sequence':\n case 'end_turn':\n return 'stop';\n case 'max_tokens':\n return 'length';\n case 'content_filtered':\n case 'guardrail_intervened':\n return 'content-filter';\n case 'tool_use':\n return isJsonResponseFromTool ? 'stop' : 'tool-calls';\n default:\n return 'other';\n }\n}\n","import {\n TooManyEmbeddingValuesForCallError,\n type EmbeddingModelV4,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport {\n amazonBedrockEmbeddingModelOptionsSchema,\n type AmazonBedrockEmbeddingModelId,\n} from './amazon-bedrock-embedding-model-options';\nimport { AmazonBedrockErrorSchema } from './amazon-bedrock-error';\nimport { z } from 'zod/v4';\n\ntype AmazonBedrockEmbeddingConfig = {\n baseUrl: () => string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>;\n\nexport class AmazonBedrockEmbeddingModel implements EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider = 'amazon-bedrock';\n readonly maxEmbeddingsPerCall = 1;\n readonly supportsParallelCalls = true;\n\n static [WORKFLOW_SERIALIZE](model: AmazonBedrockEmbeddingModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: AmazonBedrockEmbeddingConfig;\n }) {\n return new AmazonBedrockEmbeddingModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: AmazonBedrockEmbeddingModelId,\n private readonly config: AmazonBedrockEmbeddingConfig,\n ) {}\n\n private getUrl(modelId: string): string {\n const encodedModelId = encodeURIComponent(modelId);\n return `${this.config.baseUrl()}/model/${encodedModelId}/invoke`;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<DoEmbedResponse> {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n // Parse provider options. Prefer `amazonBedrock`; fall back to legacy\n // `bedrock` key for backward compatibility.\n const amazonBedrockOptions =\n (await parseProviderOptions({\n provider: 'amazonBedrock',\n providerOptions,\n schema: amazonBedrockEmbeddingModelOptionsSchema,\n })) ??\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: amazonBedrockEmbeddingModelOptionsSchema,\n })) ??\n {};\n\n // https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html\n //\n // Note: Different embedding model families expect different request/response\n // payloads (e.g. Titan vs Cohere vs Nova). We keep the public interface stable and\n // adapt here based on the modelId.\n const isNovaModel =\n this.modelId.startsWith('amazon.nova-') && this.modelId.includes('embed');\n const isCohereModel = this.modelId.startsWith('cohere.embed-');\n\n const args = isNovaModel\n ? {\n taskType: 'SINGLE_EMBEDDING',\n singleEmbeddingParams: {\n embeddingPurpose:\n amazonBedrockOptions.embeddingPurpose ?? 'GENERIC_INDEX',\n embeddingDimension: amazonBedrockOptions.embeddingDimension ?? 1024,\n text: {\n truncationMode: amazonBedrockOptions.truncate ?? 'END',\n value: values[0],\n },\n },\n }\n : isCohereModel\n ? {\n // Cohere embedding models on Bedrock require `input_type`.\n // Without it, the service attempts other schema branches and rejects the request.\n input_type: amazonBedrockOptions.inputType ?? 'search_query',\n texts: [values[0]],\n truncate: amazonBedrockOptions.truncate,\n output_dimension: amazonBedrockOptions.outputDimension,\n }\n : {\n inputText: values[0],\n dimensions: amazonBedrockOptions.dimensions,\n normalize: amazonBedrockOptions.normalize,\n };\n\n const url = this.getUrl(this.modelId);\n const { value: response } = await postJsonToApi({\n url,\n headers: await resolve(\n combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n headers,\n ),\n ),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: AmazonBedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n AmazonBedrockEmbeddingResponseSchema,\n ),\n fetch: this.config.fetch,\n abortSignal,\n });\n\n // Extract embedding based on response format\n let embedding: number[];\n if ('embedding' in response) {\n // Titan response\n embedding = response.embedding;\n } else if (Array.isArray(response.embeddings)) {\n const firstEmbedding = response.embeddings[0];\n if (\n typeof firstEmbedding === 'object' &&\n firstEmbedding !== null &&\n 'embeddingType' in firstEmbedding\n ) {\n // Nova response\n embedding = firstEmbedding.embedding;\n } else {\n // Cohere v3 response\n embedding = firstEmbedding as number[];\n }\n } else {\n // Cohere v4 response\n embedding = response.embeddings.float[0];\n }\n\n // Extract token count based on response format\n const tokens =\n 'inputTextTokenCount' in response\n ? response.inputTextTokenCount // Titan response\n : 'inputTokenCount' in response\n ? (response.inputTokenCount ?? 0) // Nova response\n : NaN; // Cohere doesn't return token count\n\n return {\n embeddings: [embedding],\n usage: { tokens },\n warnings: [],\n };\n }\n}\n\nconst AmazonBedrockEmbeddingResponseSchema = z.union([\n // Titan-style response\n z.object({\n embedding: z.array(z.number()),\n inputTextTokenCount: z.number(),\n }),\n // Nova-style response\n z.object({\n embeddings: z.array(\n z.object({\n embeddingType: z.string(),\n embedding: z.array(z.number()),\n }),\n ),\n inputTokenCount: z.number().optional(),\n }),\n // Cohere v3-style response\n z.object({\n embeddings: z.array(z.array(z.number())),\n }),\n // Cohere v4-style response\n z.object({\n embeddings: z.object({\n float: z.array(z.array(z.number())),\n }),\n }),\n]);\n","import { z } from 'zod/v4';\n\nexport type AmazonBedrockEmbeddingModelId =\n | 'amazon.titan-embed-text-v1'\n | 'amazon.titan-embed-text-v2:0'\n | 'cohere.embed-english-v3'\n | 'cohere.embed-multilingual-v3'\n | (string & {});\n\nexport const amazonBedrockEmbeddingModelOptionsSchema = z.object({\n /**\n * The number of dimensions the resulting output embeddings should have (defaults to 1024).\n * Only supported in amazon.titan-embed-text-v2:0.\n */\n dimensions: z\n .union([z.literal(1024), z.literal(512), z.literal(256)])\n .optional(),\n\n /**\n * Flag indicating whether or not to normalize the output embeddings. Defaults to true.\n * Only supported in amazon.titan-embed-text-v2:0.\n */\n normalize: z.boolean().optional(),\n\n /**\n * The number of dimensions for Nova embedding models (defaults to 1024).\n * Supported values: 256, 384, 1024, 3072.\n * Only supported in amazon.nova-* embedding models.\n */\n embeddingDimension: z\n .union([z.literal(256), z.literal(384), z.literal(1024), z.literal(3072)])\n .optional(),\n\n /**\n * The purpose of the embedding. Defaults to 'GENERIC_INDEX'.\n * Only supported in amazon.nova-* embedding models.\n */\n embeddingPurpose: z\n .enum([\n 'GENERIC_INDEX',\n 'TEXT_RETRIEVAL',\n 'IMAGE_RETRIEVAL',\n 'VIDEO_RETRIEVAL',\n 'DOCUMENT_RETRIEVAL',\n 'AUDIO_RETRIEVAL',\n 'GENERIC_RETRIEVAL',\n 'CLASSIFICATION',\n 'CLUSTERING',\n ])\n .optional(),\n\n /**\n * Input type for Cohere embedding models on Bedrock.\n * Common values: `search_document`, `search_query`, `classification`, `clustering`.\n * If not set, the provider defaults to `search_query`.\n */\n inputType: z\n .enum(['search_document', 'search_query', 'classification', 'clustering'])\n .optional(),\n\n /**\n * Truncation behavior when input exceeds the model's context length.\n * Supported in Cohere and Nova embedding models. Defaults to 'END' for Nova models.\n */\n truncate: z.enum(['NONE', 'START', 'END']).optional(),\n\n /**\n * The number of dimensions the resulting output embeddings should have (defaults to 1536).\n * Only supported in cohere.embed-v4:0 and newer Cohere embedding models.\n */\n outputDimension: z\n .union([z.literal(256), z.literal(512), z.literal(1024), z.literal(1536)])\n .optional(),\n});\n\nexport type AmazonBedrockEmbeddingModelOptions = z.infer<\n typeof amazonBedrockEmbeddingModelOptionsSchema\n>;\n","import type {\n ImageModelV4,\n ImageModelV4File,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertUint8ArrayToBase64,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport {\n modelMaxImagesPerCall,\n type AmazonBedrockImageModelId,\n} from './amazon-bedrock-image-settings';\nimport { AmazonBedrockErrorSchema } from './amazon-bedrock-error';\nimport { z } from 'zod/v4';\n\ntype AmazonBedrockImageModelConfig = {\n baseUrl: () => string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n};\n\nexport class AmazonBedrockImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider = 'amazon-bedrock';\n\n static [WORKFLOW_SERIALIZE](model: AmazonBedrockImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: AmazonBedrockImageModelConfig;\n }) {\n return new AmazonBedrockImageModel(options.modelId, options.config);\n }\n\n get maxImagesPerCall(): number {\n return modelMaxImagesPerCall[this.modelId] ?? 1;\n }\n\n private getUrl(modelId: string): string {\n const encodedModelId = encodeURIComponent(modelId);\n return `${this.config.baseUrl()}/model/${encodedModelId}/invoke`;\n }\n\n constructor(\n readonly modelId: AmazonBedrockImageModelId,\n private readonly config: AmazonBedrockImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n const [width, height] = size ? size.split('x').map(Number) : [];\n\n const hasFiles = files != null && files.length > 0;\n\n // Prefer the new `amazonBedrock` providerOptions key; fall back to the\n // legacy `bedrock` key for backward compatibility.\n const amazonBedrockOptions = (providerOptions?.amazonBedrock ??\n providerOptions?.bedrock) as Record<string, any> | undefined;\n\n // Build image generation config (common to most modes)\n const imageGenerationConfig = {\n ...(width ? { width } : {}),\n ...(height ? { height } : {}),\n ...(seed ? { seed } : {}),\n ...(n ? { numberOfImages: n } : {}),\n ...(amazonBedrockOptions?.quality\n ? { quality: amazonBedrockOptions.quality }\n : {}),\n ...(amazonBedrockOptions?.cfgScale\n ? { cfgScale: amazonBedrockOptions.cfgScale }\n : {}),\n };\n\n let args: Record<string, unknown>;\n\n if (hasFiles) {\n // Check if mask is actually provided (has valid data, not just an empty object)\n const hasMask = mask?.type != null;\n const hasMaskPrompt = amazonBedrockOptions?.maskPrompt != null;\n\n // Determine task type from provider options, or infer from mask presence\n const taskType =\n amazonBedrockOptions?.taskType ??\n (hasMask || hasMaskPrompt ? 'INPAINTING' : 'IMAGE_VARIATION');\n\n const sourceImageBase64 = getBase64Data(files[0]);\n\n switch (taskType) {\n case 'INPAINTING': {\n const inPaintingParams: Record<string, unknown> = {\n image: sourceImageBase64,\n ...(prompt ? { text: prompt } : {}),\n ...(amazonBedrockOptions?.negativeText\n ? { negativeText: amazonBedrockOptions.negativeText }\n : {}),\n };\n\n // Handle mask - can be either a maskImage or maskPrompt\n if (hasMask) {\n inPaintingParams.maskImage = getBase64Data(mask);\n } else if (hasMaskPrompt) {\n inPaintingParams.maskPrompt = amazonBedrockOptions.maskPrompt;\n }\n\n args = {\n taskType: 'INPAINTING',\n inPaintingParams,\n imageGenerationConfig,\n };\n break;\n }\n\n case 'OUTPAINTING': {\n const outPaintingParams: Record<string, unknown> = {\n image: sourceImageBase64,\n ...(prompt ? { text: prompt } : {}),\n ...(amazonBedrockOptions?.negativeText\n ? { negativeText: amazonBedrockOptions.negativeText }\n : {}),\n ...(amazonBedrockOptions?.outPaintingMode\n ? { outPaintingMode: amazonBedrockOptions.outPaintingMode }\n : {}),\n };\n\n // Outpainting requires a maskImage (white pixels = area to change)\n if (hasMask) {\n outPaintingParams.maskImage = getBase64Data(mask);\n } else if (hasMaskPrompt) {\n outPaintingParams.maskPrompt = amazonBedrockOptions.maskPrompt;\n }\n\n args = {\n taskType: 'OUTPAINTING',\n outPaintingParams,\n imageGenerationConfig,\n };\n break;\n }\n\n case 'BACKGROUND_REMOVAL': {\n // Background removal only needs the image, no other params\n args = {\n taskType: 'BACKGROUND_REMOVAL',\n backgroundRemovalParams: {\n image: sourceImageBase64,\n },\n };\n break;\n }\n\n case 'IMAGE_VARIATION': {\n // Image variation can use multiple images\n const images = files.map(file => getBase64Data(file));\n\n const imageVariationParams: Record<string, unknown> = {\n images,\n ...(prompt ? { text: prompt } : {}),\n ...(amazonBedrockOptions?.negativeText\n ? { negativeText: amazonBedrockOptions.negativeText }\n : {}),\n ...(amazonBedrockOptions?.similarityStrength != null\n ? {\n similarityStrength: amazonBedrockOptions.similarityStrength,\n }\n : {}),\n };\n\n args = {\n taskType: 'IMAGE_VARIATION',\n imageVariationParams,\n imageGenerationConfig,\n };\n break;\n }\n\n default:\n throw new Error(`Unsupported task type: ${taskType}`);\n }\n } else {\n // Standard image generation mode\n args = {\n taskType: 'TEXT_IMAGE',\n textToImageParams: {\n text: prompt,\n ...(amazonBedrockOptions?.negativeText\n ? {\n negativeText: amazonBedrockOptions.negativeText,\n }\n : {}),\n ...(amazonBedrockOptions?.style\n ? {\n style: amazonBedrockOptions.style,\n }\n : {}),\n },\n imageGenerationConfig,\n };\n }\n\n if (aspectRatio != undefined) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details:\n 'This model does not support aspect ratio. Use `size` instead.',\n });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.getUrl(this.modelId),\n headers: await resolve(\n combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n headers,\n ),\n ),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: AmazonBedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n amazonBedrockImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // Handle moderated/blocked requests\n if (response.status === 'Request Moderated') {\n const moderationReasons = response.details?.['Moderation Reasons'];\n const reasons = Array.isArray(moderationReasons)\n ? moderationReasons\n : ['Unknown'];\n throw new Error(\n `Amazon Bedrock request was moderated: ${reasons.join(', ')}`,\n );\n }\n\n // Check if images are present\n if (!response.images || response.images.length === 0) {\n throw new Error(\n 'Amazon Bedrock returned no images. ' +\n (response.status ? `Status: ${response.status}` : ''),\n );\n }\n\n return {\n images: response.images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nfunction getBase64Data(file: ImageModelV4File): string {\n if (file.type === 'url') {\n throw new Error(\n 'URL-based images are not supported for Amazon Bedrock image editing. ' +\n 'Please provide the image data directly.',\n );\n }\n\n if (file.data instanceof Uint8Array) {\n return convertUint8ArrayToBase64(file.data);\n }\n\n // Already base64 string\n return file.data;\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst amazonBedrockImageResponseSchema = z.object({\n // Normal successful response\n images: z.array(z.string()).optional(),\n\n // Moderation response fields\n id: z.string().optional(),\n status: z.string().optional(),\n result: z.unknown().optional(),\n progress: z.unknown().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n preview: z.unknown().optional(),\n});\n","export type AmazonBedrockImageModelId =\n | 'amazon.nova-canvas-v1:0'\n | (string & {});\n\n// https://docs.aws.amazon.com/nova/latest/userguide/image-gen-req-resp-structure.html\nexport const modelMaxImagesPerCall: Record<AmazonBedrockImageModelId, number> =\n {\n 'amazon.nova-canvas-v1:0': 5,\n };\n","import {\n combineHeaders,\n normalizeHeaders,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\nimport { VERSION } from './version';\n\nexport interface AmazonBedrockCredentials {\n region: string;\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n}\n\n/**\n * Creates a fetch function that applies AWS Signature Version 4 signing.\n *\n * @param getCredentials - Function that returns the AWS credentials to use when signing.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @returns A FetchFunction that signs requests before passing them to the underlying fetch.\n */\nexport function createSigV4FetchFunction(\n getCredentials: () =>\n | AmazonBedrockCredentials\n | PromiseLike<AmazonBedrockCredentials>,\n fetch?: FetchFunction,\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n // avoid caching globalThis.fetch in case it is patched by other libraries\n const effectiveFetch = fetch ?? globalThis.fetch;\n const request = input instanceof Request ? input : undefined;\n const originalHeaders = combineHeaders(\n normalizeHeaders(request?.headers),\n normalizeHeaders(init?.headers),\n );\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n let effectiveBody: BodyInit | undefined = init?.body ?? undefined;\n if (effectiveBody === undefined && request && request.body !== null) {\n try {\n effectiveBody = await request.clone().text();\n } catch {}\n }\n\n const effectiveMethod = init?.method ?? request?.method;\n\n if (effectiveMethod?.toUpperCase() !== 'POST' || !effectiveBody) {\n return effectiveFetch(input, {\n ...init,\n headers: headersWithUserAgent as HeadersInit,\n });\n }\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const body = prepareBodyString(effectiveBody);\n const credentials = await getCredentials();\n const signer = new AwsV4Signer({\n url,\n method: 'POST',\n headers: Object.entries(headersWithUserAgent),\n body,\n region: credentials.region,\n accessKeyId: credentials.accessKeyId,\n secretAccessKey: credentials.secretAccessKey,\n sessionToken: credentials.sessionToken,\n service: 'bedrock',\n });\n\n const signingResult = await signer.sign();\n const signedHeaders = normalizeHeaders(signingResult.headers);\n\n // Use the combined headers directly as HeadersInit\n const combinedHeaders = combineHeaders(headersWithUserAgent, signedHeaders);\n\n return effectiveFetch(input, {\n ...init,\n body,\n headers: combinedHeaders as HeadersInit,\n });\n };\n}\n\nfunction prepareBodyString(body: BodyInit | undefined): string {\n if (typeof body === 'string') {\n return body;\n } else if (body instanceof Uint8Array) {\n return new TextDecoder().decode(body);\n } else if (body instanceof ArrayBuffer) {\n return new TextDecoder().decode(new Uint8Array(body));\n } else {\n return JSON.stringify(body);\n }\n}\n\n/**\n * Creates a fetch function that applies Bearer token authentication.\n *\n * @param apiKey - The API key to use for Bearer token authentication.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @returns A FetchFunction that adds Authorization header with Bearer token to requests.\n */\nexport function createApiKeyFetchFunction(\n apiKey: string,\n fetch?: FetchFunction,\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n // avoid caching globalThis.fetch in case it is patched by other libraries\n const effectiveFetch = fetch ?? globalThis.fetch;\n const originalHeaders = normalizeHeaders(init?.headers);\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n const finalHeaders = combineHeaders(headersWithUserAgent, {\n Authorization: `Bearer ${apiKey}`,\n });\n\n return effectiveFetch(input, {\n ...init,\n headers: finalHeaders as HeadersInit,\n });\n };\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","import type { RerankingModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { AmazonBedrockErrorSchema } from '../amazon-bedrock-error';\nimport {\n amazonBedrockRerankingResponseSchema,\n type AmazonBedrockRerankingInput,\n} from './amazon-bedrock-reranking-api';\nimport {\n amazonBedrockRerankingModelOptionsSchema,\n type AmazonBedrockRerankingModelId,\n} from './amazon-bedrock-reranking-model-options';\ntype AmazonBedrockRerankingConfig = {\n baseUrl: () => string;\n region: string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoRerankResponse = Awaited<ReturnType<RerankingModelV4['doRerank']>>;\n\nexport class AmazonBedrockRerankingModel implements RerankingModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider = 'amazon-bedrock';\n\n constructor(\n readonly modelId: AmazonBedrockRerankingModelId,\n private readonly config: AmazonBedrockRerankingConfig,\n ) {}\n\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV4['doRerank']>[0]): Promise<DoRerankResponse> {\n // Prefer `amazonBedrock`; fall back to legacy `bedrock` for backward\n // compatibility.\n const amazonBedrockOptions =\n (await parseProviderOptions({\n provider: 'amazonBedrock',\n providerOptions,\n schema: amazonBedrockRerankingModelOptionsSchema,\n })) ??\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: amazonBedrockRerankingModelOptionsSchema,\n }));\n\n const {\n value: response,\n responseHeaders,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseUrl()}/rerank`,\n headers: await resolve(\n combineHeaders(await resolve(this.config.headers), headers),\n ),\n body: {\n nextToken: amazonBedrockOptions?.nextToken,\n queries: [\n {\n textQuery: { text: query },\n type: 'TEXT',\n },\n ],\n rerankingConfiguration: {\n amazonBedrockRerankingConfiguration: {\n modelConfiguration: {\n modelArn: `arn:aws:bedrock:${this.config.region}::foundation-model/${this.modelId}`,\n additionalModelRequestFields:\n amazonBedrockOptions?.additionalModelRequestFields,\n },\n numberOfResults: topN,\n },\n type: 'BEDROCK_RERANKING_MODEL',\n },\n sources: documents.values.map(value => ({\n type: 'INLINE' as const,\n inlineDocumentSource:\n documents.type === 'text'\n ? {\n type: 'TEXT' as const,\n textDocument: { text: value as string },\n }\n : {\n type: 'JSON' as const,\n jsonDocument: value,\n },\n })),\n } satisfies AmazonBedrockRerankingInput,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: AmazonBedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n amazonBedrockRerankingResponseSchema,\n ),\n fetch: this.config.fetch,\n abortSignal,\n });\n\n return {\n ranking: response.results,\n response: {\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Rerank.html\nexport type AmazonBedrockRerankingInput = {\n nextToken?: string;\n queries: [{ type: 'TEXT'; textQuery: { text: string } }];\n rerankingConfiguration: {\n type: 'BEDROCK_RERANKING_MODEL';\n amazonBedrockRerankingConfiguration: {\n modelConfiguration: {\n modelArn: string;\n additionalModelRequestFields?: Record<string, unknown>;\n };\n numberOfResults?: number;\n };\n };\n sources: {\n type: 'INLINE';\n inlineDocumentSource:\n | {\n type: 'TEXT';\n textDocument: { text: string };\n }\n | {\n type: 'JSON';\n jsonDocument: unknown;\n };\n }[];\n};\n\nexport const amazonBedrockRerankingResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n results: z.array(\n z.object({\n index: z.number(),\n relevanceScore: z.number(),\n }),\n ),\n nextToken: z.string().optional(),\n }),\n ),\n);\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://docs.aws.amazon.com/bedrock/latest/userguide/rerank-supported.html\nexport type AmazonBedrockRerankingModelId =\n | 'amazon.rerank-v1:0'\n | 'cohere.rerank-v3-5:0'\n | (string & {});\n\nexport type AmazonBedrockRerankingModelOptions = {\n /**\n * If the total number of results was greater than could fit in a response, a token is returned in the nextToken field. You can enter that token in this field to return the next batch of results.\n */\n nextToken?: string;\n\n /**\n * Additional model request fields to pass to the model.\n */\n additionalModelRequestFields?: Record<string, unknown>;\n};\n\nexport const amazonBedrockRerankingModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n /**\n * If the total number of results was greater than could fit in a response, a token is returned in the nextToken field. You can enter that token in this field to return the next batch of results.\n */\n nextToken: z.string().optional(),\n\n /**\n * Additional model request fields to pass to the model.\n */\n additionalModelRequestFields: z.record(z.string(), z.any()).optional(),\n }),\n ),\n);\n"],"mappings":"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","names":["anthropicTools","withUserAgentSuffix","parseProviderOptions","z","z","UnsupportedFunctionalityError","z","UnsupportedFunctionalityError","k","parseProviderOptions","_a","z","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","z","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","resolve","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","postJsonToApi","resolve","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","postJsonToApi","resolve","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","combineHeaders","combineHeaders","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","z","lazySchema","zodSchema","z","parseProviderOptions","postJsonToApi","resolve","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","withUserAgentSuffix","anthropicTools"]}