@ai-sdk/amazon-bedrock 4.0.0-beta.87 → 4.0.0-beta.89

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bedrock-provider.ts","../src/bedrock-chat-language-model.ts","../src/bedrock-api-types.ts","../src/bedrock-chat-options.ts","../src/bedrock-error.ts","../src/bedrock-event-stream-response-handler.ts","../src/bedrock-prepare-tools.ts","../src/convert-to-bedrock-chat-messages.ts","../src/map-bedrock-finish-reason.ts","../src/bedrock-embedding-model.ts","../src/bedrock-embedding-options.ts","../src/bedrock-image-model.ts","../src/bedrock-image-settings.ts","../src/bedrock-sigv4-fetch.ts","../src/version.ts","../src/reranking/bedrock-reranking-model.ts","../src/reranking/bedrock-reranking-api.ts","../src/reranking/bedrock-reranking-options.ts"],"sourcesContent":["import { anthropicTools } from '@ai-sdk/anthropic/internal';\nimport {\n EmbeddingModelV3,\n ImageModelV3,\n LanguageModelV3,\n ProviderV3,\n RerankingModelV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadOptionalSetting,\n loadSetting,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { BedrockChatLanguageModel } from './bedrock-chat-language-model';\nimport { BedrockChatModelId } from './bedrock-chat-options';\nimport { BedrockEmbeddingModel } from './bedrock-embedding-model';\nimport { BedrockEmbeddingModelId } from './bedrock-embedding-options';\nimport { BedrockImageModel } from './bedrock-image-model';\nimport { BedrockImageModelId } from './bedrock-image-settings';\nimport {\n BedrockCredentials,\n createApiKeyFetchFunction,\n createSigV4FetchFunction,\n} from './bedrock-sigv4-fetch';\nimport { BedrockRerankingModel } from './reranking/bedrock-reranking-model';\nimport { BedrockRerankingModelId } from './reranking/bedrock-reranking-options';\nimport { VERSION } from './version';\n\nexport interface AmazonBedrockProviderSettings {\n /**\nThe 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 /**\nAPI key for authenticating requests using Bearer token authentication.\nWhen provided, this will be used instead of AWS SigV4 authentication.\nDefaults to the value of the `AWS_BEARER_TOKEN_BEDROCK` environment variable.\n\n@example\n```typescript\n// Using API key directly\nconst bedrock = createAmazonBedrock({\n apiKey: 'your-api-key-here',\n region: 'us-east-1'\n});\n\n// Using environment variable AWS_BEARER_TOKEN_BEDROCK\nconst bedrock = createAmazonBedrock({\n region: 'us-east-1'\n});\n```\n\nNote: When `apiKey` is provided, it takes precedence over AWS SigV4 authentication.\nIf neither `apiKey` nor `AWS_BEARER_TOKEN_BEDROCK` environment variable is set,\nthe provider will fall back to AWS SigV4 authentication using AWS credentials.\n */\n apiKey?: string;\n\n /**\nThe 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 /**\nThe 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 /**\nThe AWS session token to use for the Bedrock provider. Defaults to the value of the\n`AWS_SESSION_TOKEN` environment variable.\n */\n sessionToken?: string;\n\n /**\nBase URL for the Bedrock API calls.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n\n /**\nThe AWS credential provider to use for the Bedrock provider to get dynamic\ncredentials similar to the AWS SDK. Setting a provider here will cause its\ncredential values to be used instead of the `accessKeyId`, `secretAccessKey`,\nand `sessionToken` settings.\n */\n credentialProvider?: () => PromiseLike<Omit<BedrockCredentials, 'region'>>;\n\n // for testing\n generateId?: () => string;\n}\n\nexport interface AmazonBedrockProvider extends ProviderV3 {\n (modelId: BedrockChatModelId): LanguageModelV3;\n\n languageModel(modelId: BedrockChatModelId): LanguageModelV3;\n\n embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;\n\n embeddingModel(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;\n\n /**\nCreates a model for image generation.\n */\n image(modelId: BedrockImageModelId): ImageModelV3;\n\n /**\nCreates a model for image generation.\n */\n imageModel(modelId: BedrockImageModelId): ImageModelV3;\n\n /**\n * Creates a model for reranking documents.\n */\n reranking(modelId: BedrockRerankingModelId): RerankingModelV3;\n\n /**\n * Creates a model for reranking documents.\n */\n rerankingModel(modelId: BedrockRerankingModelId): RerankingModelV3;\n\n /**\nAnthropic-specific tools that can be used with Anthropic models on Bedrock.\n */\n tools: typeof anthropicTools;\n}\n\n/**\nCreate 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: 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 getBedrockRuntimeBaseUrl = (): 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 getBedrockAgentRuntimeBaseUrl = (): 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: BedrockChatModelId) =>\n new BedrockChatLanguageModel(modelId, {\n baseUrl: getBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n generateId,\n });\n\n const provider = function (modelId: BedrockChatModelId) {\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: BedrockEmbeddingModelId) =>\n new BedrockEmbeddingModel(modelId, {\n baseUrl: getBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n });\n\n const createImageModel = (modelId: BedrockImageModelId) =>\n new BedrockImageModel(modelId, {\n baseUrl: getBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n });\n\n const createRerankingModel = (modelId: BedrockRerankingModelId) =>\n new BedrockRerankingModel(modelId, {\n baseUrl: getBedrockAgentRuntimeBaseUrl,\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 = 'v3' as const;\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = 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/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n JSONObject,\n LanguageModelV3,\n SharedV3Warning,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3Reasoning,\n LanguageModelV3StreamPart,\n LanguageModelV3Usage,\n SharedV3ProviderMetadata,\n LanguageModelV3FunctionTool,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n Resolvable,\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n BEDROCK_STOP_REASONS,\n BedrockConverseInput,\n BedrockStopReason,\n} from './bedrock-api-types';\nimport {\n BedrockChatModelId,\n bedrockProviderOptions,\n} from './bedrock-chat-options';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { createBedrockEventStreamResponseHandler } from './bedrock-event-stream-response-handler';\nimport { prepareTools } from './bedrock-prepare-tools';\nimport { convertToBedrockChatMessages } from './convert-to-bedrock-chat-messages';\nimport { mapBedrockFinishReason } from './map-bedrock-finish-reason';\n\ntype BedrockChatConfig = {\n baseUrl: () => string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n generateId: () => string;\n};\n\nexport class BedrockChatLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'amazon-bedrock';\n\n constructor(\n readonly modelId: BedrockChatModelId,\n private readonly config: BedrockChatConfig,\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 providerOptions,\n }: Parameters<LanguageModelV3['doGenerate']>[0]): Promise<{\n command: BedrockConverseInput;\n warnings: SharedV3Warning[];\n usesJsonResponseTool: boolean;\n betas: Set<string>;\n }> {\n // Parse provider options\n const bedrockOptions =\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockProviderOptions,\n })) ?? {};\n\n const warnings: SharedV3Warning[] = [];\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 jsonResponseTool: LanguageModelV3FunctionTool | undefined =\n responseFormat?.type === 'json' && responseFormat.schema != null\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 bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n ...additionalTools,\n };\n }\n\n if (betas.size > 0 || bedrockOptions.anthropicBeta) {\n const existingBetas = bedrockOptions.anthropicBeta ?? [];\n const mergedBetas =\n betas.size > 0\n ? [...existingBetas, ...Array.from(betas)]\n : existingBetas;\n\n bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n anthropic_beta: mergedBetas,\n };\n }\n\n const isAnthropicModel = this.modelId.includes('anthropic');\n const isThinkingRequested =\n bedrockOptions.reasoningConfig?.type === 'enabled';\n const thinkingBudget = bedrockOptions.reasoningConfig?.budgetTokens;\n const isAnthropicThinkingEnabled = isAnthropicModel && isThinkingRequested;\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 && 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 // Add them to additional model request fields\n // Add thinking config to additionalModelRequestFields\n bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n thinking: {\n type: bedrockOptions.reasoningConfig?.type,\n budget_tokens: thinkingBudget,\n },\n };\n } else if (!isAnthropicModel && thinkingBudget != 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\n const maxReasoningEffort =\n bedrockOptions.reasoningConfig?.maxReasoningEffort;\n if (maxReasoningEffort != null && !isAnthropicModel) {\n bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n reasoningConfig: {\n ...(bedrockOptions.reasoningConfig?.type != null && {\n type: bedrockOptions.reasoningConfig.type,\n }),\n maxReasoningEffort,\n },\n };\n } else if (maxReasoningEffort != null && isAnthropicModel) {\n warnings.push({\n type: 'unsupported',\n feature: 'maxReasoningEffort',\n details:\n 'maxReasoningEffort applies only to Amazon Nova models on Bedrock and will be ignored for this model.',\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 { system, messages } =\n await convertToBedrockChatMessages(filteredPrompt);\n\n // Filter out reasoningConfig from providerOptions.bedrock to prevent sending it to Bedrock API\n const {\n reasoningConfig: _,\n additionalModelRequestFields: __,\n ...filteredBedrockOptions\n } = providerOptions?.bedrock || {};\n\n return {\n command: {\n system,\n messages,\n additionalModelRequestFields:\n bedrockOptions.additionalModelRequestFields,\n ...(Object.keys(inferenceConfig).length > 0 && {\n inferenceConfig,\n }),\n ...filteredBedrockOptions,\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(await resolve(this.config.headers), headers);\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doGenerate']>>> {\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: BedrockErrorSchema,\n errorToMessage: error => `${error.message ?? 'Unknown error'}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n BedrockResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV3Content> = [];\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) {\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: LanguageModelV3Reasoning = {\n type: 'reasoning',\n text: part.reasoningContent.reasoningText.text,\n };\n\n if (part.reasoningContent.reasoningText.signature) {\n reasoning.providerMetadata = {\n bedrock: {\n signature: part.reasoningContent.reasoningText.signature,\n } satisfies BedrockReasoningMetadata,\n };\n }\n\n content.push(reasoning);\n } else if ('redactedReasoning' in part.reasoningContent) {\n content.push({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n bedrock: {\n redactedData:\n part.reasoningContent.redactedReasoning.data ?? '',\n } satisfies BedrockReasoningMetadata,\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 content.push({\n type: 'tool-call' as const,\n toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\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 providerMetadata =\n response.trace || response.usage || isJsonResponseFromTool\n ? {\n bedrock: {\n ...(response.trace && typeof response.trace === 'object'\n ? { trace: response.trace as JSONObject }\n : {}),\n ...(response.usage?.cacheWriteInputTokens != null && {\n usage: {\n cacheWriteInputTokens: response.usage.cacheWriteInputTokens,\n },\n }),\n ...(isJsonResponseFromTool && { isJsonResponseFromTool: true }),\n },\n }\n : undefined;\n\n return {\n content,\n finishReason: mapBedrockFinishReason(\n response.stopReason as BedrockStopReason,\n isJsonResponseFromTool,\n ),\n usage: {\n inputTokens: response.usage?.inputTokens,\n outputTokens: response.usage?.outputTokens,\n totalTokens: response.usage?.inputTokens + response.usage?.outputTokens,\n cachedInputTokens: response.usage?.cacheReadInputTokens ?? undefined,\n },\n response: {\n // TODO add id, timestamp, etc\n headers: responseHeaders,\n },\n warnings,\n ...(providerMetadata && { providerMetadata }),\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV3['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doStream']>>> {\n const {\n command: args,\n warnings,\n usesJsonResponseTool,\n } = await this.getArgs(options);\n const url = `${this.getUrl(this.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: BedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler:\n createBedrockEventStreamResponseHandler(BedrockStreamSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = 'unknown';\n const usage: LanguageModelV3Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let providerMetadata: SharedV3ProviderMetadata | undefined = undefined;\n let isJsonResponseFromTool = false;\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 BedrockStreamSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n function enqueueError(bedrockError: Record<string, any>) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: bedrockError });\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 = mapBedrockFinishReason(\n value.messageStop.stopReason as BedrockStopReason,\n isJsonResponseFromTool,\n );\n }\n\n if (value.metadata) {\n usage.inputTokens =\n value.metadata.usage?.inputTokens ?? usage.inputTokens;\n usage.outputTokens =\n value.metadata.usage?.outputTokens ?? usage.outputTokens;\n usage.totalTokens =\n (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0);\n usage.cachedInputTokens =\n value.metadata.usage?.cacheReadInputTokens ??\n usage.cachedInputTokens;\n\n const cacheUsage =\n value.metadata.usage?.cacheWriteInputTokens != null\n ? {\n usage: {\n cacheWriteInputTokens:\n value.metadata.usage.cacheWriteInputTokens,\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 (cacheUsage || trace) {\n providerMetadata = {\n bedrock: {\n ...cacheUsage,\n ...trace,\n },\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 controller.enqueue({\n type: 'reasoning-delta',\n id: String(blockIndex),\n delta: '',\n providerMetadata: {\n bedrock: {\n signature: reasoningContent.signature,\n } satisfies BedrockReasoningMetadata,\n },\n });\n } else if ('data' in reasoningContent && reasoningContent.data) {\n controller.enqueue({\n type: 'reasoning-delta',\n id: String(blockIndex),\n delta: '',\n providerMetadata: {\n bedrock: {\n redactedData: reasoningContent.data,\n } satisfies BedrockReasoningMetadata,\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 contentBlocks[blockIndex] = {\n type: 'tool-call',\n toolCallId: toolUse.toolUseId!,\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: toolUse.toolUseId!,\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 if needed\n if (isJsonResponseFromTool) {\n if (providerMetadata) {\n providerMetadata.bedrock = {\n ...providerMetadata.bedrock,\n isJsonResponseFromTool: true,\n };\n } else {\n providerMetadata = {\n bedrock: {\n isJsonResponseFromTool: true,\n },\n };\n }\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n 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 BedrockStopReasonSchema = z.union([\n z.enum(BEDROCK_STOP_REASONS),\n z.string(),\n]);\n\nconst BedrockToolUseSchema = z.object({\n toolUseId: z.string(),\n name: z.string(),\n input: z.unknown(),\n});\n\nconst BedrockReasoningTextSchema = z.object({\n signature: z.string().nullish(),\n text: z.string(),\n});\n\nconst BedrockRedactedReasoningSchema = 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 BedrockResponseSchema = 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: BedrockToolUseSchema.nullish(),\n reasoningContent: z\n .union([\n z.object({\n reasoningText: BedrockReasoningTextSchema,\n }),\n z.object({\n redactedReasoning: BedrockRedactedReasoningSchema,\n }),\n ])\n .nullish(),\n }),\n ),\n role: z.string(),\n }),\n }),\n stopReason: BedrockStopReasonSchema,\n trace: z.unknown().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 }),\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 BedrockStreamSchema = 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: BedrockToolUseSchema.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: z\n .record(z.string(), z.unknown())\n .nullish(),\n stopReason: BedrockStopReasonSchema,\n })\n .nullish(),\n metadata: z\n .object({\n trace: z.unknown().nullish(),\n usage: z\n .object({\n cacheReadInputTokens: z.number().nullish(),\n cacheWriteInputTokens: z.number().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 const bedrockReasoningMetadataSchema = z.object({\n signature: z.string().optional(),\n redactedData: z.string().optional(),\n});\n\nexport type BedrockReasoningMetadata = z.infer<\n typeof bedrockReasoningMetadataSchema\n>;\n","import { JSONObject } from '@ai-sdk/provider';\n\nexport interface BedrockConverseInput {\n system?: BedrockSystemMessages;\n messages: BedrockMessages;\n toolConfig?: BedrockToolConfiguration;\n inferenceConfig?: {\n maxOutputTokens?: number;\n temperature?: number;\n topP?: number;\n topK?: number;\n stopSequences?: string[];\n };\n additionalModelRequestFields?: Record<string, unknown>;\n guardrailConfig?:\n | BedrockGuardrailConfiguration\n | BedrockGuardrailStreamConfiguration\n | undefined;\n}\n\nexport type BedrockSystemMessages = Array<BedrockSystemContentBlock>;\n\nexport type BedrockMessages = Array<\n BedrockAssistantMessage | BedrockUserMessage\n>;\n\nexport interface BedrockAssistantMessage {\n role: 'assistant';\n content: Array<BedrockContentBlock>;\n}\n\nexport interface BedrockUserMessage {\n role: 'user';\n content: Array<BedrockContentBlock>;\n}\n\nexport const BEDROCK_CACHE_POINT = {\n cachePoint: { type: 'default' },\n} as const;\n\nexport type BedrockCachePoint = { cachePoint: { type: 'default' } };\nexport type BedrockSystemContentBlock = { text: string } | BedrockCachePoint;\n\nexport interface BedrockGuardrailConfiguration {\n guardrails?: Array<{\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n }>;\n}\n\nexport type BedrockGuardrailStreamConfiguration = BedrockGuardrailConfiguration;\n\nexport interface BedrockToolInputSchema {\n json: Record<string, unknown>;\n}\n\nexport interface BedrockTool {\n toolSpec: {\n name: string;\n description?: string;\n inputSchema: { json: JSONObject };\n };\n}\n\nexport interface BedrockToolConfiguration {\n tools?: Array<BedrockTool | BedrockCachePoint>;\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 BedrockStopReason = (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 BedrockImageFormats = typeof BEDROCK_IMAGE_MIME_TYPES;\nexport type BedrockImageFormat = BedrockImageFormats[keyof BedrockImageFormats];\nexport type BedrockImageMimeType = keyof BedrockImageFormats;\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 BedrockDocumentFormats = typeof BEDROCK_DOCUMENT_MIME_TYPES;\nexport type BedrockDocumentFormat =\n BedrockDocumentFormats[keyof BedrockDocumentFormats];\nexport type BedrockDocumentMimeType = keyof BedrockDocumentFormats;\n\nexport interface BedrockDocumentBlock {\n document: {\n format: BedrockDocumentFormat;\n name: string;\n source: {\n bytes: string;\n };\n citations?: {\n enabled: boolean;\n };\n };\n}\n\nexport interface BedrockGuardrailConverseContentBlock {\n guardContent: unknown;\n}\n\nexport interface BedrockImageBlock {\n image: {\n format: BedrockImageFormat;\n source: {\n bytes: string;\n };\n };\n}\n\nexport interface BedrockToolResultBlock {\n toolResult: {\n toolUseId: string;\n content: Array<BedrockTextBlock | BedrockImageBlock>;\n };\n}\n\nexport interface BedrockToolUseBlock {\n toolUse: {\n toolUseId: string;\n name: string;\n input: Record<string, unknown>;\n };\n}\n\nexport interface BedrockTextBlock {\n text: string;\n}\n\nexport interface BedrockReasoningContentBlock {\n reasoningContent: {\n reasoningText: {\n text: string;\n signature?: string;\n };\n };\n}\n\nexport interface BedrockRedactedReasoningContentBlock {\n reasoningContent: {\n redactedReasoning: {\n data: string;\n };\n };\n}\n\nexport type BedrockContentBlock =\n | BedrockDocumentBlock\n | BedrockGuardrailConverseContentBlock\n | BedrockImageBlock\n | BedrockTextBlock\n | BedrockToolResultBlock\n | BedrockToolUseBlock\n | BedrockReasoningContentBlock\n | BedrockRedactedReasoningContentBlock\n | BedrockCachePoint;\n","import { z } from 'zod/v4';\n\n// https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html\nexport type BedrockChatModelId =\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-haiku-4-5-20251001-v1:0'\n | 'anthropic.claude-sonnet-4-20250514-v1:0'\n | 'anthropic.claude-sonnet-4-5-20250929-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-sonnet-4-20250514-v1:0'\n | 'us.anthropic.claude-sonnet-4-5-20250929-v1:0'\n | 'us.anthropic.claude-opus-4-20250514-v1:0'\n | 'us.anthropic.claude-opus-4-1-20250805-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 bedrockFilePartProviderOptions = 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 BedrockFilePartProviderOptions = z.infer<\n typeof bedrockFilePartProviderOptions\n>;\n\nexport const bedrockProviderOptions = 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.union([z.literal('enabled'), z.literal('disabled')]).optional(),\n budgetTokens: z.number().optional(),\n maxReasoningEffort: z.enum(['low', 'medium', 'high']).optional(),\n })\n .optional(),\n /**\n * Anthropic beta features to enable\n */\n anthropicBeta: z.array(z.string()).optional(),\n});\n\nexport type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;\n","import { z } from 'zod/v4';\n\nexport const BedrockErrorSchema = z.object({\n message: z.string(),\n type: z.string().nullish(),\n});\n","import { EmptyResponseBodyError } from '@ai-sdk/provider';\nimport {\n ParseResult,\n safeParseJSON,\n extractResponseHeaders,\n ResponseHandler,\n safeValidateTypes,\n} from '@ai-sdk/provider-utils';\nimport { EventStreamCodec } from '@smithy/eventstream-codec';\nimport { toUtf8, fromUtf8 } from '@smithy/util-utf8';\nimport { ZodType } from 'zod/v4';\n\n// https://docs.aws.amazon.com/lexv2/latest/dg/event-stream-encoding.html\nexport const createBedrockEventStreamResponseHandler =\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 const codec = new EventStreamCodec(toUtf8, fromUtf8);\n let buffer = new Uint8Array(0);\n const textDecoder = new TextDecoder();\n\n return {\n responseHeaders,\n value: response.body.pipeThrough(\n new TransformStream<Uint8Array, ParseResult<T>>({\n async transform(chunk, controller) {\n // Append new chunk to buffer.\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n // Try to decode messages from buffer.\n while (buffer.length >= 4) {\n // The first 4 bytes are the total length (big-endian).\n const totalLength = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(0, false);\n\n // If we don't have the full message yet, wait for more chunks.\n if (buffer.length < totalLength) {\n break;\n }\n\n try {\n // Decode exactly the sub-slice for this event.\n const subView = buffer.subarray(0, totalLength);\n const decoded = codec.decode(subView);\n\n // Slice the used bytes out of the buffer, removing this message.\n buffer = buffer.slice(totalLength);\n\n // Process the message.\n if (decoded.headers[':message-type']?.value === 'event') {\n const data = textDecoder.decode(decoded.body);\n\n // Wrap the data in the `:event-type` field to match the expected schema.\n const parsedDataResult = await safeParseJSON({ text: data });\n if (!parsedDataResult.success) {\n controller.enqueue(parsedDataResult);\n break;\n }\n\n // The `p` field appears to be padding or some other non-functional field.\n delete (parsedDataResult.value as any).p;\n let wrappedData = {\n [decoded.headers[':event-type']?.value as string]:\n parsedDataResult.value,\n };\n\n // Re-validate with the expected schema.\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 } catch (e) {\n // If we can't decode a complete message, wait for more data\n break;\n }\n }\n },\n }),\n ),\n };\n };\n","import {\n JSONObject,\n LanguageModelV3CallOptions,\n SharedV3Warning,\n UnsupportedFunctionalityError,\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 { BedrockTool, BedrockToolConfiguration } from './bedrock-api-types';\n\nexport async function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n modelId: string;\n}): Promise<{\n toolConfig: BedrockToolConfiguration;\n additionalTools: Record<string, unknown> | undefined;\n betas: Set<string>;\n toolWarnings: SharedV3Warning[];\n}> {\n const toolWarnings: SharedV3Warning[] = [];\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 bedrockTools: BedrockTool[] = [];\n\n const usingAnthropicTools = isAnthropicModel && ProviderTools.length > 0;\n\n // Handle Anthropic provider-defined tools for Anthropic models on Bedrock\n if (usingAnthropicTools) {\n if (functionTools.length > 0) {\n toolWarnings.push({\n type: 'unsupported',\n feature:\n 'mixing Anthropic provider-defined tools and standard function tools',\n details:\n 'Mixed Anthropic provider-defined tools and standard function tools are not supported in a single call to Bedrock. Only Anthropic tools will be used.',\n });\n }\n\n const {\n toolChoice: preparedAnthropicToolChoice,\n toolWarnings: anthropicToolWarnings,\n betas: anthropicBetas,\n } = await prepareAnthropicTools({\n tools: ProviderTools,\n toolChoice,\n supportsStructuredOutput: 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 bedrockTools.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 // Handle standard function tools for all models\n for (const tool of functionTools) {\n bedrockTools.push({\n toolSpec: {\n name: tool.name,\n ...(tool.description?.trim() !== ''\n ? { description: tool.description }\n : {}),\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 bedrockToolChoice: BedrockToolConfiguration['toolChoice'] = undefined;\n if (!usingAnthropicTools && bedrockTools.length > 0 && toolChoice) {\n const type = toolChoice.type;\n switch (type) {\n case 'auto':\n bedrockToolChoice = { auto: {} };\n break;\n case 'required':\n bedrockToolChoice = { any: {} };\n break;\n case 'none':\n bedrockTools.length = 0;\n bedrockToolChoice = undefined;\n break;\n case 'tool':\n bedrockToolChoice = { 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: BedrockToolConfiguration =\n bedrockTools.length > 0\n ? { tools: bedrockTools, toolChoice: bedrockToolChoice }\n : {};\n\n return {\n toolConfig,\n additionalTools,\n betas,\n toolWarnings,\n };\n}\n","import {\n JSONObject,\n LanguageModelV3Message,\n LanguageModelV3Prompt,\n SharedV3ProviderMetadata,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64, parseProviderOptions } from '@ai-sdk/provider-utils';\nimport {\n BEDROCK_CACHE_POINT,\n BEDROCK_DOCUMENT_MIME_TYPES,\n BEDROCK_IMAGE_MIME_TYPES,\n BedrockAssistantMessage,\n BedrockCachePoint,\n BedrockDocumentFormat,\n BedrockDocumentMimeType,\n BedrockImageFormat,\n BedrockImageMimeType,\n BedrockMessages,\n BedrockSystemMessages,\n BedrockUserMessage,\n} from './bedrock-api-types';\nimport { bedrockReasoningMetadataSchema } from './bedrock-chat-language-model';\nimport { bedrockFilePartProviderOptions } from './bedrock-chat-options';\n\nfunction getCachePoint(\n providerMetadata: SharedV3ProviderMetadata | undefined,\n): BedrockCachePoint | undefined {\n return providerMetadata?.bedrock?.cachePoint as BedrockCachePoint | undefined;\n}\n\nasync function shouldEnableCitations(\n providerMetadata: SharedV3ProviderMetadata | undefined,\n): Promise<boolean> {\n const bedrockOptions = await parseProviderOptions({\n provider: 'bedrock',\n providerOptions: providerMetadata,\n schema: bedrockFilePartProviderOptions,\n });\n\n return bedrockOptions?.citations?.enabled ?? false;\n}\n\nexport async function convertToBedrockChatMessages(\n prompt: LanguageModelV3Prompt,\n): Promise<{\n system: BedrockSystemMessages;\n messages: BedrockMessages;\n}> {\n const blocks = groupIntoBlocks(prompt);\n\n let system: BedrockSystemMessages = [];\n const messages: BedrockMessages = [];\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 if (getCachePoint(message.providerOptions)) {\n system.push(BEDROCK_CACHE_POINT);\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 bedrockContent: BedrockUserMessage['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 bedrockContent.push({\n text: part.text,\n });\n break;\n }\n\n case 'file': {\n if (part.data instanceof URL) {\n // The AI SDK automatically downloads files for user file parts with URLs\n throw new UnsupportedFunctionalityError({\n functionality: 'File URL data',\n });\n }\n\n if (part.mediaType.startsWith('image/')) {\n bedrockContent.push({\n image: {\n format: getBedrockImageFormat(part.mediaType),\n source: { bytes: convertToBase64(part.data) },\n },\n });\n } else {\n if (!part.mediaType) {\n throw new UnsupportedFunctionalityError({\n functionality: 'file without mime type',\n message:\n 'File mime type is required in user message part content',\n });\n }\n\n const enableCitations = await shouldEnableCitations(\n part.providerOptions,\n );\n\n bedrockContent.push({\n document: {\n format: getBedrockDocumentFormat(part.mediaType),\n name: part.filename ?? generateDocumentName(),\n source: { bytes: convertToBase64(part.data) },\n ...(enableCitations && {\n citations: { enabled: true },\n }),\n },\n });\n }\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\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 'image-data':\n if (!contentPart.mediaType.startsWith('image/')) {\n throw new UnsupportedFunctionalityError({\n functionality: `media type: ${contentPart.mediaType}`,\n });\n }\n\n const format = getBedrockImageFormat(\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 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 bedrockContent.push({\n toolResult: {\n toolUseId: part.toolCallId,\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 if (getCachePoint(providerOptions)) {\n bedrockContent.push(BEDROCK_CACHE_POINT);\n }\n }\n\n messages.push({ role: 'user', content: bedrockContent });\n\n break;\n }\n\n case 'assistant': {\n // combines multiple assistant messages in this block into a single message:\n const bedrockContent: BedrockAssistantMessage['content'] = [];\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\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\n if (!part.text.trim()) {\n break;\n }\n\n bedrockContent.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 = await parseProviderOptions({\n provider: 'bedrock',\n providerOptions: part.providerOptions,\n schema: bedrockReasoningMetadataSchema,\n });\n\n if (reasoningMetadata != null) {\n if (reasoningMetadata.signature != null) {\n bedrockContent.push({\n reasoningContent: {\n reasoningText: {\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 text: trimIfLast(\n isLastBlock,\n isLastMessage,\n isLastContentPart,\n part.text,\n ),\n signature: reasoningMetadata.signature,\n },\n },\n });\n } else if (reasoningMetadata.redactedData != null) {\n bedrockContent.push({\n reasoningContent: {\n redactedReasoning: {\n data: reasoningMetadata.redactedData,\n },\n },\n });\n }\n }\n\n break;\n }\n\n case 'tool-call': {\n bedrockContent.push({\n toolUse: {\n toolUseId: part.toolCallId,\n name: part.toolName,\n input: part.input as JSONObject,\n },\n });\n break;\n }\n }\n }\n if (getCachePoint(message.providerOptions)) {\n bedrockContent.push(BEDROCK_CACHE_POINT);\n }\n }\n\n messages.push({ role: 'assistant', content: bedrockContent });\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 isBedrockImageFormat(format: string): format is BedrockImageFormat {\n return Object.values(BEDROCK_IMAGE_MIME_TYPES).includes(\n format as BedrockImageFormat,\n );\n}\n\nfunction getBedrockImageFormat(mimeType?: string): BedrockImageFormat {\n if (!mimeType) {\n throw new UnsupportedFunctionalityError({\n functionality: 'image without mime type',\n message: 'Image mime type is required in user message part content',\n });\n }\n\n const format = BEDROCK_IMAGE_MIME_TYPES[mimeType as BedrockImageMimeType];\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 getBedrockDocumentFormat(mimeType: string): BedrockDocumentFormat {\n const format =\n BEDROCK_DOCUMENT_MIME_TYPES[mimeType as BedrockDocumentMimeType];\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<LanguageModelV3Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV3Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV3Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV3Prompt,\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 { LanguageModelV3FinishReason } from '@ai-sdk/provider';\nimport { BedrockStopReason } from './bedrock-api-types';\n\nexport function mapBedrockFinishReason(\n finishReason: BedrockStopReason,\n isJsonResponseFromTool?: boolean,\n): LanguageModelV3FinishReason {\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 'unknown';\n }\n}\n","import {\n EmbeddingModelV3,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n Resolvable,\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport {\n BedrockEmbeddingModelId,\n bedrockEmbeddingProviderOptions,\n} from './bedrock-embedding-options';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { z } from 'zod/v4';\n\ntype BedrockEmbeddingConfig = {\n baseUrl: () => string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>;\n\nexport class BedrockEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'amazon-bedrock';\n readonly maxEmbeddingsPerCall = 1;\n readonly supportsParallelCalls = true;\n\n constructor(\n readonly modelId: BedrockEmbeddingModelId,\n private readonly config: BedrockEmbeddingConfig,\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<EmbeddingModelV3['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\n const bedrockOptions =\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockEmbeddingProviderOptions,\n })) ?? {};\n\n // https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html\n const args = {\n inputText: values[0],\n dimensions: bedrockOptions.dimensions,\n normalize: bedrockOptions.normalize,\n };\n const url = this.getUrl(this.modelId);\n const { value: response } = await postJsonToApi({\n url,\n headers: await resolve(\n combineHeaders(await resolve(this.config.headers), headers),\n ),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: BedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n BedrockEmbeddingResponseSchema,\n ),\n fetch: this.config.fetch,\n abortSignal,\n });\n\n return {\n warnings: [],\n embeddings: [response.embedding],\n usage: { tokens: response.inputTextTokenCount },\n };\n }\n}\n\nconst BedrockEmbeddingResponseSchema = z.object({\n embedding: z.array(z.number()),\n inputTextTokenCount: z.number(),\n});\n","import { z } from 'zod/v4';\n\nexport type BedrockEmbeddingModelId =\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 bedrockEmbeddingProviderOptions = z.object({\n /**\nThe number of dimensions the resulting output embeddings should have (defaults to 1024).\nOnly 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 /**\nFlag indicating whether or not to normalize the output embeddings. Defaults to true\nOnly supported in amazon.titan-embed-text-v2:0.\n */\n normalize: z.boolean().optional(),\n});\n","import { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n FetchFunction,\n Resolvable,\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport {\n BedrockImageModelId,\n modelMaxImagesPerCall,\n} from './bedrock-image-settings';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { z } from 'zod/v4';\n\ntype BedrockImageModelConfig = {\n baseUrl: () => string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n};\n\nexport class BedrockImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'amazon-bedrock';\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: BedrockImageModelId,\n private readonly config: BedrockImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n const [width, height] = size ? size.split('x').map(Number) : [];\n const args = {\n taskType: 'TEXT_IMAGE',\n textToImageParams: {\n text: prompt,\n ...(providerOptions?.bedrock?.negativeText\n ? {\n negativeText: providerOptions.bedrock.negativeText,\n }\n : {}),\n ...(providerOptions?.bedrock?.style\n ? {\n style: providerOptions.bedrock.style,\n }\n : {}),\n },\n imageGenerationConfig: {\n ...(width ? { width } : {}),\n ...(height ? { height } : {}),\n ...(seed ? { seed } : {}),\n ...(n ? { numberOfImages: n } : {}),\n ...(providerOptions?.bedrock?.quality\n ? { quality: providerOptions.bedrock.quality }\n : {}),\n ...(providerOptions?.bedrock?.cfgScale\n ? { cfgScale: providerOptions.bedrock.cfgScale }\n : {}),\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(await resolve(this.config.headers), headers),\n ),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: BedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n bedrockImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\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\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 bedrockImageResponseSchema = z.object({\n images: z.array(z.string()),\n});\n","export type BedrockImageModelId = 'amazon.nova-canvas-v1:0' | (string & {});\n\n// https://docs.aws.amazon.com/nova/latest/userguide/image-gen-req-resp-structure.html\nexport const modelMaxImagesPerCall: Record<BedrockImageModelId, number> = {\n 'amazon.nova-canvas-v1:0': 5,\n};\n","import {\n FetchFunction,\n combineHeaders,\n normalizeHeaders,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\nimport { VERSION } from './version';\n\nexport interface BedrockCredentials {\n region: string;\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n}\n\n/**\nCreates 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: () => BedrockCredentials | PromiseLike<BedrockCredentials>,\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/**\nCreates 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 { RerankingModelV3 } from '@ai-sdk/provider';\nimport {\n FetchFunction,\n Resolvable,\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { BedrockErrorSchema } from '../bedrock-error';\nimport {\n BedrockRerankingInput,\n bedrockRerankingResponseSchema,\n} from './bedrock-reranking-api';\nimport {\n BedrockRerankingModelId,\n bedrockRerankingOptionsSchema,\n} from './bedrock-reranking-options';\n\ntype BedrockRerankingConfig = {\n baseUrl: () => string;\n region: string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoRerankResponse = Awaited<ReturnType<RerankingModelV3['doRerank']>>;\n\nexport class BedrockRerankingModel implements RerankingModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'amazon-bedrock';\n\n constructor(\n readonly modelId: BedrockRerankingModelId,\n private readonly config: BedrockRerankingConfig,\n ) {}\n\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV3['doRerank']>[0]): Promise<DoRerankResponse> {\n const bedrockOptions = await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockRerankingOptionsSchema,\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: bedrockOptions?.nextToken,\n queries: [\n {\n textQuery: { text: query },\n type: 'TEXT',\n },\n ],\n rerankingConfiguration: {\n bedrockRerankingConfiguration: {\n modelConfiguration: {\n modelArn: `arn:aws:bedrock:${this.config.region}::foundation-model/${this.modelId}`,\n additionalModelRequestFields:\n bedrockOptions?.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 BedrockRerankingInput,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: BedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n bedrockRerankingResponseSchema,\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 BedrockRerankingInput = {\n nextToken?: string;\n queries: [{ type: 'TEXT'; textQuery: { text: string } }];\n rerankingConfiguration: {\n type: 'BEDROCK_RERANKING_MODEL';\n bedrockRerankingConfiguration: {\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 bedrockRerankingResponseSchema = 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 BedrockRerankingModelId =\n | 'amazon.rerank-v1:0'\n | 'cohere.rerank-v3-5:0'\n | (string & {});\n\nexport type BedrockRerankingOptions = {\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 bedrockRerankingOptionsSchema = 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","UnsupportedFunctionalityError","UnsupportedFunctionalityError","parseProviderOptions","_a","z","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","z","z","parseProviderOptions","postJsonToApi","resolve","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","postJsonToApi","resolve","z","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/bedrock-provider.ts","../src/bedrock-chat-language-model.ts","../src/bedrock-api-types.ts","../src/bedrock-chat-options.ts","../src/bedrock-error.ts","../src/convert-bedrock-usage.ts","../src/bedrock-event-stream-response-handler.ts","../src/bedrock-prepare-tools.ts","../src/convert-to-bedrock-chat-messages.ts","../src/map-bedrock-finish-reason.ts","../src/bedrock-embedding-model.ts","../src/bedrock-embedding-options.ts","../src/bedrock-image-model.ts","../src/bedrock-image-settings.ts","../src/bedrock-sigv4-fetch.ts","../src/version.ts","../src/reranking/bedrock-reranking-model.ts","../src/reranking/bedrock-reranking-api.ts","../src/reranking/bedrock-reranking-options.ts"],"sourcesContent":["import { anthropicTools } from '@ai-sdk/anthropic/internal';\nimport {\n EmbeddingModelV3,\n ImageModelV3,\n LanguageModelV3,\n ProviderV3,\n RerankingModelV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadOptionalSetting,\n loadSetting,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { BedrockChatLanguageModel } from './bedrock-chat-language-model';\nimport { BedrockChatModelId } from './bedrock-chat-options';\nimport { BedrockEmbeddingModel } from './bedrock-embedding-model';\nimport { BedrockEmbeddingModelId } from './bedrock-embedding-options';\nimport { BedrockImageModel } from './bedrock-image-model';\nimport { BedrockImageModelId } from './bedrock-image-settings';\nimport {\n BedrockCredentials,\n createApiKeyFetchFunction,\n createSigV4FetchFunction,\n} from './bedrock-sigv4-fetch';\nimport { BedrockRerankingModel } from './reranking/bedrock-reranking-model';\nimport { BedrockRerankingModelId } from './reranking/bedrock-reranking-options';\nimport { VERSION } from './version';\n\nexport interface AmazonBedrockProviderSettings {\n /**\nThe 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 /**\nAPI key for authenticating requests using Bearer token authentication.\nWhen provided, this will be used instead of AWS SigV4 authentication.\nDefaults to the value of the `AWS_BEARER_TOKEN_BEDROCK` environment variable.\n\n@example\n```typescript\n// Using API key directly\nconst bedrock = createAmazonBedrock({\n apiKey: 'your-api-key-here',\n region: 'us-east-1'\n});\n\n// Using environment variable AWS_BEARER_TOKEN_BEDROCK\nconst bedrock = createAmazonBedrock({\n region: 'us-east-1'\n});\n```\n\nNote: When `apiKey` is provided, it takes precedence over AWS SigV4 authentication.\nIf neither `apiKey` nor `AWS_BEARER_TOKEN_BEDROCK` environment variable is set,\nthe provider will fall back to AWS SigV4 authentication using AWS credentials.\n */\n apiKey?: string;\n\n /**\nThe 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 /**\nThe 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 /**\nThe AWS session token to use for the Bedrock provider. Defaults to the value of the\n`AWS_SESSION_TOKEN` environment variable.\n */\n sessionToken?: string;\n\n /**\nBase URL for the Bedrock API calls.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n\n /**\nThe AWS credential provider to use for the Bedrock provider to get dynamic\ncredentials similar to the AWS SDK. Setting a provider here will cause its\ncredential values to be used instead of the `accessKeyId`, `secretAccessKey`,\nand `sessionToken` settings.\n */\n credentialProvider?: () => PromiseLike<Omit<BedrockCredentials, 'region'>>;\n\n // for testing\n generateId?: () => string;\n}\n\nexport interface AmazonBedrockProvider extends ProviderV3 {\n (modelId: BedrockChatModelId): LanguageModelV3;\n\n languageModel(modelId: BedrockChatModelId): LanguageModelV3;\n\n embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;\n\n embeddingModel(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;\n\n /**\nCreates a model for image generation.\n */\n image(modelId: BedrockImageModelId): ImageModelV3;\n\n /**\nCreates a model for image generation.\n */\n imageModel(modelId: BedrockImageModelId): ImageModelV3;\n\n /**\n * Creates a model for reranking documents.\n */\n reranking(modelId: BedrockRerankingModelId): RerankingModelV3;\n\n /**\n * Creates a model for reranking documents.\n */\n rerankingModel(modelId: BedrockRerankingModelId): RerankingModelV3;\n\n /**\nAnthropic-specific tools that can be used with Anthropic models on Bedrock.\n */\n tools: typeof anthropicTools;\n}\n\n/**\nCreate 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: 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 getBedrockRuntimeBaseUrl = (): 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 getBedrockAgentRuntimeBaseUrl = (): 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: BedrockChatModelId) =>\n new BedrockChatLanguageModel(modelId, {\n baseUrl: getBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n generateId,\n });\n\n const provider = function (modelId: BedrockChatModelId) {\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: BedrockEmbeddingModelId) =>\n new BedrockEmbeddingModel(modelId, {\n baseUrl: getBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n });\n\n const createImageModel = (modelId: BedrockImageModelId) =>\n new BedrockImageModel(modelId, {\n baseUrl: getBedrockRuntimeBaseUrl,\n headers: getHeaders,\n fetch: fetchFunction,\n });\n\n const createRerankingModel = (modelId: BedrockRerankingModelId) =>\n new BedrockRerankingModel(modelId, {\n baseUrl: getBedrockAgentRuntimeBaseUrl,\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 = 'v3' as const;\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = 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/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n JSONObject,\n LanguageModelV3,\n SharedV3Warning,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3Reasoning,\n LanguageModelV3StreamPart,\n SharedV3ProviderMetadata,\n LanguageModelV3FunctionTool,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n Resolvable,\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n BEDROCK_STOP_REASONS,\n BedrockConverseInput,\n BedrockStopReason,\n} from './bedrock-api-types';\nimport {\n BedrockChatModelId,\n bedrockProviderOptions,\n} from './bedrock-chat-options';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { BedrockUsage, convertBedrockUsage } from './convert-bedrock-usage';\nimport { createBedrockEventStreamResponseHandler } from './bedrock-event-stream-response-handler';\nimport { prepareTools } from './bedrock-prepare-tools';\nimport { convertToBedrockChatMessages } from './convert-to-bedrock-chat-messages';\nimport { mapBedrockFinishReason } from './map-bedrock-finish-reason';\n\ntype BedrockChatConfig = {\n baseUrl: () => string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n generateId: () => string;\n};\n\nexport class BedrockChatLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'amazon-bedrock';\n\n constructor(\n readonly modelId: BedrockChatModelId,\n private readonly config: BedrockChatConfig,\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 providerOptions,\n }: Parameters<LanguageModelV3['doGenerate']>[0]): Promise<{\n command: BedrockConverseInput;\n warnings: SharedV3Warning[];\n usesJsonResponseTool: boolean;\n betas: Set<string>;\n }> {\n // Parse provider options\n const bedrockOptions =\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockProviderOptions,\n })) ?? {};\n\n const warnings: SharedV3Warning[] = [];\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 jsonResponseTool: LanguageModelV3FunctionTool | undefined =\n responseFormat?.type === 'json' && responseFormat.schema != null\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 bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n ...additionalTools,\n };\n }\n\n if (betas.size > 0 || bedrockOptions.anthropicBeta) {\n const existingBetas = bedrockOptions.anthropicBeta ?? [];\n const mergedBetas =\n betas.size > 0\n ? [...existingBetas, ...Array.from(betas)]\n : existingBetas;\n\n bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n anthropic_beta: mergedBetas,\n };\n }\n\n const isAnthropicModel = this.modelId.includes('anthropic');\n const isThinkingRequested =\n bedrockOptions.reasoningConfig?.type === 'enabled';\n const thinkingBudget = bedrockOptions.reasoningConfig?.budgetTokens;\n const isAnthropicThinkingEnabled = isAnthropicModel && isThinkingRequested;\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 && 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 // Add them to additional model request fields\n // Add thinking config to additionalModelRequestFields\n bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n thinking: {\n type: bedrockOptions.reasoningConfig?.type,\n budget_tokens: thinkingBudget,\n },\n };\n } else if (!isAnthropicModel && thinkingBudget != 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\n const maxReasoningEffort =\n bedrockOptions.reasoningConfig?.maxReasoningEffort;\n if (maxReasoningEffort != null && !isAnthropicModel) {\n bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n reasoningConfig: {\n ...(bedrockOptions.reasoningConfig?.type != null && {\n type: bedrockOptions.reasoningConfig.type,\n }),\n maxReasoningEffort,\n },\n };\n } else if (maxReasoningEffort != null && isAnthropicModel) {\n warnings.push({\n type: 'unsupported',\n feature: 'maxReasoningEffort',\n details:\n 'maxReasoningEffort applies only to Amazon Nova models on Bedrock and will be ignored for this model.',\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 { system, messages } =\n await convertToBedrockChatMessages(filteredPrompt);\n\n // Filter out reasoningConfig from providerOptions.bedrock to prevent sending it to Bedrock API\n const {\n reasoningConfig: _,\n additionalModelRequestFields: __,\n ...filteredBedrockOptions\n } = providerOptions?.bedrock || {};\n\n return {\n command: {\n system,\n messages,\n additionalModelRequestFields:\n bedrockOptions.additionalModelRequestFields,\n ...(Object.keys(inferenceConfig).length > 0 && {\n inferenceConfig,\n }),\n ...filteredBedrockOptions,\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(await resolve(this.config.headers), headers);\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doGenerate']>>> {\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: BedrockErrorSchema,\n errorToMessage: error => `${error.message ?? 'Unknown error'}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n BedrockResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV3Content> = [];\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) {\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: LanguageModelV3Reasoning = {\n type: 'reasoning',\n text: part.reasoningContent.reasoningText.text,\n };\n\n if (part.reasoningContent.reasoningText.signature) {\n reasoning.providerMetadata = {\n bedrock: {\n signature: part.reasoningContent.reasoningText.signature,\n } satisfies BedrockReasoningMetadata,\n };\n }\n\n content.push(reasoning);\n } else if ('redactedReasoning' in part.reasoningContent) {\n content.push({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n bedrock: {\n redactedData:\n part.reasoningContent.redactedReasoning.data ?? '',\n } satisfies BedrockReasoningMetadata,\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 content.push({\n type: 'tool-call' as const,\n toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\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 providerMetadata =\n response.trace || response.usage || isJsonResponseFromTool\n ? {\n bedrock: {\n ...(response.trace && typeof response.trace === 'object'\n ? { trace: response.trace as JSONObject }\n : {}),\n ...(response.usage?.cacheWriteInputTokens != null && {\n usage: {\n cacheWriteInputTokens: response.usage.cacheWriteInputTokens,\n },\n }),\n ...(isJsonResponseFromTool && { isJsonResponseFromTool: true }),\n },\n }\n : undefined;\n\n return {\n content,\n finishReason: mapBedrockFinishReason(\n response.stopReason as BedrockStopReason,\n isJsonResponseFromTool,\n ),\n usage: convertBedrockUsage(response.usage),\n response: {\n // TODO add id, timestamp, etc\n headers: responseHeaders,\n },\n warnings,\n ...(providerMetadata && { providerMetadata }),\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV3['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV3['doStream']>>> {\n const {\n command: args,\n warnings,\n usesJsonResponseTool,\n } = await this.getArgs(options);\n const url = `${this.getUrl(this.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: BedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler:\n createBedrockEventStreamResponseHandler(BedrockStreamSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = 'unknown';\n let usage: BedrockUsage | undefined = undefined;\n let providerMetadata: SharedV3ProviderMetadata | undefined = undefined;\n let isJsonResponseFromTool = false;\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 BedrockStreamSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n function enqueueError(bedrockError: Record<string, any>) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: bedrockError });\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 = mapBedrockFinishReason(\n value.messageStop.stopReason as BedrockStopReason,\n isJsonResponseFromTool,\n );\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 ? {\n usage: {\n cacheWriteInputTokens:\n value.metadata.usage.cacheWriteInputTokens,\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 (cacheUsage || trace) {\n providerMetadata = {\n bedrock: {\n ...cacheUsage,\n ...trace,\n },\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 controller.enqueue({\n type: 'reasoning-delta',\n id: String(blockIndex),\n delta: '',\n providerMetadata: {\n bedrock: {\n signature: reasoningContent.signature,\n } satisfies BedrockReasoningMetadata,\n },\n });\n } else if ('data' in reasoningContent && reasoningContent.data) {\n controller.enqueue({\n type: 'reasoning-delta',\n id: String(blockIndex),\n delta: '',\n providerMetadata: {\n bedrock: {\n redactedData: reasoningContent.data,\n } satisfies BedrockReasoningMetadata,\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 contentBlocks[blockIndex] = {\n type: 'tool-call',\n toolCallId: toolUse.toolUseId!,\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: toolUse.toolUseId!,\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 if needed\n if (isJsonResponseFromTool) {\n if (providerMetadata) {\n providerMetadata.bedrock = {\n ...providerMetadata.bedrock,\n isJsonResponseFromTool: true,\n };\n } else {\n providerMetadata = {\n bedrock: {\n isJsonResponseFromTool: true,\n },\n };\n }\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertBedrockUsage(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 BedrockStopReasonSchema = z.union([\n z.enum(BEDROCK_STOP_REASONS),\n z.string(),\n]);\n\nconst BedrockToolUseSchema = z.object({\n toolUseId: z.string(),\n name: z.string(),\n input: z.unknown(),\n});\n\nconst BedrockReasoningTextSchema = z.object({\n signature: z.string().nullish(),\n text: z.string(),\n});\n\nconst BedrockRedactedReasoningSchema = 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 BedrockResponseSchema = 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: BedrockToolUseSchema.nullish(),\n reasoningContent: z\n .union([\n z.object({\n reasoningText: BedrockReasoningTextSchema,\n }),\n z.object({\n redactedReasoning: BedrockRedactedReasoningSchema,\n }),\n ])\n .nullish(),\n }),\n ),\n role: z.string(),\n }),\n }),\n stopReason: BedrockStopReasonSchema,\n trace: z.unknown().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 }),\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 BedrockStreamSchema = 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: BedrockToolUseSchema.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: z\n .record(z.string(), z.unknown())\n .nullish(),\n stopReason: BedrockStopReasonSchema,\n })\n .nullish(),\n metadata: z\n .object({\n trace: z.unknown().nullish(),\n usage: z\n .object({\n cacheReadInputTokens: z.number().nullish(),\n cacheWriteInputTokens: z.number().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 const bedrockReasoningMetadataSchema = z.object({\n signature: z.string().optional(),\n redactedData: z.string().optional(),\n});\n\nexport type BedrockReasoningMetadata = z.infer<\n typeof bedrockReasoningMetadataSchema\n>;\n","import { JSONObject } from '@ai-sdk/provider';\n\nexport interface BedrockConverseInput {\n system?: BedrockSystemMessages;\n messages: BedrockMessages;\n toolConfig?: BedrockToolConfiguration;\n inferenceConfig?: {\n maxOutputTokens?: number;\n temperature?: number;\n topP?: number;\n topK?: number;\n stopSequences?: string[];\n };\n additionalModelRequestFields?: Record<string, unknown>;\n guardrailConfig?:\n | BedrockGuardrailConfiguration\n | BedrockGuardrailStreamConfiguration\n | undefined;\n}\n\nexport type BedrockSystemMessages = Array<BedrockSystemContentBlock>;\n\nexport type BedrockMessages = Array<\n BedrockAssistantMessage | BedrockUserMessage\n>;\n\nexport interface BedrockAssistantMessage {\n role: 'assistant';\n content: Array<BedrockContentBlock>;\n}\n\nexport interface BedrockUserMessage {\n role: 'user';\n content: Array<BedrockContentBlock>;\n}\n\nexport const BEDROCK_CACHE_POINT = {\n cachePoint: { type: 'default' },\n} as const;\n\nexport type BedrockCachePoint = { cachePoint: { type: 'default' } };\nexport type BedrockSystemContentBlock = { text: string } | BedrockCachePoint;\n\nexport interface BedrockGuardrailConfiguration {\n guardrails?: Array<{\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n }>;\n}\n\nexport type BedrockGuardrailStreamConfiguration = BedrockGuardrailConfiguration;\n\nexport interface BedrockToolInputSchema {\n json: Record<string, unknown>;\n}\n\nexport interface BedrockTool {\n toolSpec: {\n name: string;\n description?: string;\n inputSchema: { json: JSONObject };\n };\n}\n\nexport interface BedrockToolConfiguration {\n tools?: Array<BedrockTool | BedrockCachePoint>;\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 BedrockStopReason = (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 BedrockImageFormats = typeof BEDROCK_IMAGE_MIME_TYPES;\nexport type BedrockImageFormat = BedrockImageFormats[keyof BedrockImageFormats];\nexport type BedrockImageMimeType = keyof BedrockImageFormats;\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 BedrockDocumentFormats = typeof BEDROCK_DOCUMENT_MIME_TYPES;\nexport type BedrockDocumentFormat =\n BedrockDocumentFormats[keyof BedrockDocumentFormats];\nexport type BedrockDocumentMimeType = keyof BedrockDocumentFormats;\n\nexport interface BedrockDocumentBlock {\n document: {\n format: BedrockDocumentFormat;\n name: string;\n source: {\n bytes: string;\n };\n citations?: {\n enabled: boolean;\n };\n };\n}\n\nexport interface BedrockGuardrailConverseContentBlock {\n guardContent: unknown;\n}\n\nexport interface BedrockImageBlock {\n image: {\n format: BedrockImageFormat;\n source: {\n bytes: string;\n };\n };\n}\n\nexport interface BedrockToolResultBlock {\n toolResult: {\n toolUseId: string;\n content: Array<BedrockTextBlock | BedrockImageBlock>;\n };\n}\n\nexport interface BedrockToolUseBlock {\n toolUse: {\n toolUseId: string;\n name: string;\n input: Record<string, unknown>;\n };\n}\n\nexport interface BedrockTextBlock {\n text: string;\n}\n\nexport interface BedrockReasoningContentBlock {\n reasoningContent: {\n reasoningText: {\n text: string;\n signature?: string;\n };\n };\n}\n\nexport interface BedrockRedactedReasoningContentBlock {\n reasoningContent: {\n redactedReasoning: {\n data: string;\n };\n };\n}\n\nexport type BedrockContentBlock =\n | BedrockDocumentBlock\n | BedrockGuardrailConverseContentBlock\n | BedrockImageBlock\n | BedrockTextBlock\n | BedrockToolResultBlock\n | BedrockToolUseBlock\n | BedrockReasoningContentBlock\n | BedrockRedactedReasoningContentBlock\n | BedrockCachePoint;\n","import { z } from 'zod/v4';\n\n// https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html\nexport type BedrockChatModelId =\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-haiku-4-5-20251001-v1:0'\n | 'anthropic.claude-sonnet-4-20250514-v1:0'\n | 'anthropic.claude-sonnet-4-5-20250929-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-sonnet-4-20250514-v1:0'\n | 'us.anthropic.claude-sonnet-4-5-20250929-v1:0'\n | 'us.anthropic.claude-opus-4-20250514-v1:0'\n | 'us.anthropic.claude-opus-4-1-20250805-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 bedrockFilePartProviderOptions = 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 BedrockFilePartProviderOptions = z.infer<\n typeof bedrockFilePartProviderOptions\n>;\n\nexport const bedrockProviderOptions = 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.union([z.literal('enabled'), z.literal('disabled')]).optional(),\n budgetTokens: z.number().optional(),\n maxReasoningEffort: z.enum(['low', 'medium', 'high']).optional(),\n })\n .optional(),\n /**\n * Anthropic beta features to enable\n */\n anthropicBeta: z.array(z.string()).optional(),\n});\n\nexport type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;\n","import { z } from 'zod/v4';\n\nexport const BedrockErrorSchema = z.object({\n message: z.string(),\n type: z.string().nullish(),\n});\n","import { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type BedrockUsage = {\n inputTokens: number;\n outputTokens: number;\n totalTokens?: number;\n cacheReadInputTokens?: number | null;\n cacheWriteInputTokens?: number | null;\n};\n\nexport function convertBedrockUsage(\n usage: BedrockUsage | undefined | null,\n): LanguageModelV3Usage {\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,\n noCache: inputTokens - cacheReadTokens,\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 { EmptyResponseBodyError } from '@ai-sdk/provider';\nimport {\n ParseResult,\n safeParseJSON,\n extractResponseHeaders,\n ResponseHandler,\n safeValidateTypes,\n} from '@ai-sdk/provider-utils';\nimport { EventStreamCodec } from '@smithy/eventstream-codec';\nimport { toUtf8, fromUtf8 } from '@smithy/util-utf8';\nimport { ZodType } from 'zod/v4';\n\n// https://docs.aws.amazon.com/lexv2/latest/dg/event-stream-encoding.html\nexport const createBedrockEventStreamResponseHandler =\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 const codec = new EventStreamCodec(toUtf8, fromUtf8);\n let buffer = new Uint8Array(0);\n const textDecoder = new TextDecoder();\n\n return {\n responseHeaders,\n value: response.body.pipeThrough(\n new TransformStream<Uint8Array, ParseResult<T>>({\n async transform(chunk, controller) {\n // Append new chunk to buffer.\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n // Try to decode messages from buffer.\n while (buffer.length >= 4) {\n // The first 4 bytes are the total length (big-endian).\n const totalLength = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(0, false);\n\n // If we don't have the full message yet, wait for more chunks.\n if (buffer.length < totalLength) {\n break;\n }\n\n try {\n // Decode exactly the sub-slice for this event.\n const subView = buffer.subarray(0, totalLength);\n const decoded = codec.decode(subView);\n\n // Slice the used bytes out of the buffer, removing this message.\n buffer = buffer.slice(totalLength);\n\n // Process the message.\n if (decoded.headers[':message-type']?.value === 'event') {\n const data = textDecoder.decode(decoded.body);\n\n // Wrap the data in the `:event-type` field to match the expected schema.\n const parsedDataResult = await safeParseJSON({ text: data });\n if (!parsedDataResult.success) {\n controller.enqueue(parsedDataResult);\n break;\n }\n\n // The `p` field appears to be padding or some other non-functional field.\n delete (parsedDataResult.value as any).p;\n let wrappedData = {\n [decoded.headers[':event-type']?.value as string]:\n parsedDataResult.value,\n };\n\n // Re-validate with the expected schema.\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 } catch (e) {\n // If we can't decode a complete message, wait for more data\n break;\n }\n }\n },\n }),\n ),\n };\n };\n","import {\n JSONObject,\n LanguageModelV3CallOptions,\n SharedV3Warning,\n UnsupportedFunctionalityError,\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 { BedrockTool, BedrockToolConfiguration } from './bedrock-api-types';\n\nexport async function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n modelId: string;\n}): Promise<{\n toolConfig: BedrockToolConfiguration;\n additionalTools: Record<string, unknown> | undefined;\n betas: Set<string>;\n toolWarnings: SharedV3Warning[];\n}> {\n const toolWarnings: SharedV3Warning[] = [];\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 bedrockTools: BedrockTool[] = [];\n\n const usingAnthropicTools = isAnthropicModel && ProviderTools.length > 0;\n\n // Handle Anthropic provider-defined tools for Anthropic models on Bedrock\n if (usingAnthropicTools) {\n if (functionTools.length > 0) {\n toolWarnings.push({\n type: 'unsupported',\n feature:\n 'mixing Anthropic provider-defined tools and standard function tools',\n details:\n 'Mixed Anthropic provider-defined tools and standard function tools are not supported in a single call to Bedrock. Only Anthropic tools will be used.',\n });\n }\n\n const {\n toolChoice: preparedAnthropicToolChoice,\n toolWarnings: anthropicToolWarnings,\n betas: anthropicBetas,\n } = await prepareAnthropicTools({\n tools: ProviderTools,\n toolChoice,\n supportsStructuredOutput: 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 bedrockTools.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 // Handle standard function tools for all models\n for (const tool of functionTools) {\n bedrockTools.push({\n toolSpec: {\n name: tool.name,\n ...(tool.description?.trim() !== ''\n ? { description: tool.description }\n : {}),\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 bedrockToolChoice: BedrockToolConfiguration['toolChoice'] = undefined;\n if (!usingAnthropicTools && bedrockTools.length > 0 && toolChoice) {\n const type = toolChoice.type;\n switch (type) {\n case 'auto':\n bedrockToolChoice = { auto: {} };\n break;\n case 'required':\n bedrockToolChoice = { any: {} };\n break;\n case 'none':\n bedrockTools.length = 0;\n bedrockToolChoice = undefined;\n break;\n case 'tool':\n bedrockToolChoice = { 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: BedrockToolConfiguration =\n bedrockTools.length > 0\n ? { tools: bedrockTools, toolChoice: bedrockToolChoice }\n : {};\n\n return {\n toolConfig,\n additionalTools,\n betas,\n toolWarnings,\n };\n}\n","import {\n JSONObject,\n LanguageModelV3Message,\n LanguageModelV3Prompt,\n SharedV3ProviderMetadata,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64, parseProviderOptions } from '@ai-sdk/provider-utils';\nimport {\n BEDROCK_CACHE_POINT,\n BEDROCK_DOCUMENT_MIME_TYPES,\n BEDROCK_IMAGE_MIME_TYPES,\n BedrockAssistantMessage,\n BedrockCachePoint,\n BedrockDocumentFormat,\n BedrockDocumentMimeType,\n BedrockImageFormat,\n BedrockImageMimeType,\n BedrockMessages,\n BedrockSystemMessages,\n BedrockUserMessage,\n} from './bedrock-api-types';\nimport { bedrockReasoningMetadataSchema } from './bedrock-chat-language-model';\nimport { bedrockFilePartProviderOptions } from './bedrock-chat-options';\n\nfunction getCachePoint(\n providerMetadata: SharedV3ProviderMetadata | undefined,\n): BedrockCachePoint | undefined {\n return providerMetadata?.bedrock?.cachePoint as BedrockCachePoint | undefined;\n}\n\nasync function shouldEnableCitations(\n providerMetadata: SharedV3ProviderMetadata | undefined,\n): Promise<boolean> {\n const bedrockOptions = await parseProviderOptions({\n provider: 'bedrock',\n providerOptions: providerMetadata,\n schema: bedrockFilePartProviderOptions,\n });\n\n return bedrockOptions?.citations?.enabled ?? false;\n}\n\nexport async function convertToBedrockChatMessages(\n prompt: LanguageModelV3Prompt,\n): Promise<{\n system: BedrockSystemMessages;\n messages: BedrockMessages;\n}> {\n const blocks = groupIntoBlocks(prompt);\n\n let system: BedrockSystemMessages = [];\n const messages: BedrockMessages = [];\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 if (getCachePoint(message.providerOptions)) {\n system.push(BEDROCK_CACHE_POINT);\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 bedrockContent: BedrockUserMessage['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 bedrockContent.push({\n text: part.text,\n });\n break;\n }\n\n case 'file': {\n if (part.data instanceof URL) {\n // The AI SDK automatically downloads files for user file parts with URLs\n throw new UnsupportedFunctionalityError({\n functionality: 'File URL data',\n });\n }\n\n if (part.mediaType.startsWith('image/')) {\n bedrockContent.push({\n image: {\n format: getBedrockImageFormat(part.mediaType),\n source: { bytes: convertToBase64(part.data) },\n },\n });\n } else {\n if (!part.mediaType) {\n throw new UnsupportedFunctionalityError({\n functionality: 'file without mime type',\n message:\n 'File mime type is required in user message part content',\n });\n }\n\n const enableCitations = await shouldEnableCitations(\n part.providerOptions,\n );\n\n bedrockContent.push({\n document: {\n format: getBedrockDocumentFormat(part.mediaType),\n name: part.filename ?? generateDocumentName(),\n source: { bytes: convertToBase64(part.data) },\n ...(enableCitations && {\n citations: { enabled: true },\n }),\n },\n });\n }\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (const part of content) {\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 'image-data':\n if (!contentPart.mediaType.startsWith('image/')) {\n throw new UnsupportedFunctionalityError({\n functionality: `media type: ${contentPart.mediaType}`,\n });\n }\n\n const format = getBedrockImageFormat(\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 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 bedrockContent.push({\n toolResult: {\n toolUseId: part.toolCallId,\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 if (getCachePoint(providerOptions)) {\n bedrockContent.push(BEDROCK_CACHE_POINT);\n }\n }\n\n messages.push({ role: 'user', content: bedrockContent });\n\n break;\n }\n\n case 'assistant': {\n // combines multiple assistant messages in this block into a single message:\n const bedrockContent: BedrockAssistantMessage['content'] = [];\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\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\n if (!part.text.trim()) {\n break;\n }\n\n bedrockContent.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 = await parseProviderOptions({\n provider: 'bedrock',\n providerOptions: part.providerOptions,\n schema: bedrockReasoningMetadataSchema,\n });\n\n if (reasoningMetadata != null) {\n if (reasoningMetadata.signature != null) {\n bedrockContent.push({\n reasoningContent: {\n reasoningText: {\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 text: trimIfLast(\n isLastBlock,\n isLastMessage,\n isLastContentPart,\n part.text,\n ),\n signature: reasoningMetadata.signature,\n },\n },\n });\n } else if (reasoningMetadata.redactedData != null) {\n bedrockContent.push({\n reasoningContent: {\n redactedReasoning: {\n data: reasoningMetadata.redactedData,\n },\n },\n });\n }\n }\n\n break;\n }\n\n case 'tool-call': {\n bedrockContent.push({\n toolUse: {\n toolUseId: part.toolCallId,\n name: part.toolName,\n input: part.input as JSONObject,\n },\n });\n break;\n }\n }\n }\n if (getCachePoint(message.providerOptions)) {\n bedrockContent.push(BEDROCK_CACHE_POINT);\n }\n }\n\n messages.push({ role: 'assistant', content: bedrockContent });\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 isBedrockImageFormat(format: string): format is BedrockImageFormat {\n return Object.values(BEDROCK_IMAGE_MIME_TYPES).includes(\n format as BedrockImageFormat,\n );\n}\n\nfunction getBedrockImageFormat(mimeType?: string): BedrockImageFormat {\n if (!mimeType) {\n throw new UnsupportedFunctionalityError({\n functionality: 'image without mime type',\n message: 'Image mime type is required in user message part content',\n });\n }\n\n const format = BEDROCK_IMAGE_MIME_TYPES[mimeType as BedrockImageMimeType];\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 getBedrockDocumentFormat(mimeType: string): BedrockDocumentFormat {\n const format =\n BEDROCK_DOCUMENT_MIME_TYPES[mimeType as BedrockDocumentMimeType];\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<LanguageModelV3Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV3Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV3Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV3Prompt,\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 { LanguageModelV3FinishReason } from '@ai-sdk/provider';\nimport { BedrockStopReason } from './bedrock-api-types';\n\nexport function mapBedrockFinishReason(\n finishReason: BedrockStopReason,\n isJsonResponseFromTool?: boolean,\n): LanguageModelV3FinishReason {\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 'unknown';\n }\n}\n","import {\n EmbeddingModelV3,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n Resolvable,\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport {\n BedrockEmbeddingModelId,\n bedrockEmbeddingProviderOptions,\n} from './bedrock-embedding-options';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { z } from 'zod/v4';\n\ntype BedrockEmbeddingConfig = {\n baseUrl: () => string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>;\n\nexport class BedrockEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'amazon-bedrock';\n readonly maxEmbeddingsPerCall = 1;\n readonly supportsParallelCalls = true;\n\n constructor(\n readonly modelId: BedrockEmbeddingModelId,\n private readonly config: BedrockEmbeddingConfig,\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<EmbeddingModelV3['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\n const bedrockOptions =\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockEmbeddingProviderOptions,\n })) ?? {};\n\n // https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html\n const args = {\n inputText: values[0],\n dimensions: bedrockOptions.dimensions,\n normalize: bedrockOptions.normalize,\n };\n const url = this.getUrl(this.modelId);\n const { value: response } = await postJsonToApi({\n url,\n headers: await resolve(\n combineHeaders(await resolve(this.config.headers), headers),\n ),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: BedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n BedrockEmbeddingResponseSchema,\n ),\n fetch: this.config.fetch,\n abortSignal,\n });\n\n return {\n warnings: [],\n embeddings: [response.embedding],\n usage: { tokens: response.inputTextTokenCount },\n };\n }\n}\n\nconst BedrockEmbeddingResponseSchema = z.object({\n embedding: z.array(z.number()),\n inputTextTokenCount: z.number(),\n});\n","import { z } from 'zod/v4';\n\nexport type BedrockEmbeddingModelId =\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 bedrockEmbeddingProviderOptions = z.object({\n /**\nThe number of dimensions the resulting output embeddings should have (defaults to 1024).\nOnly 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 /**\nFlag indicating whether or not to normalize the output embeddings. Defaults to true\nOnly supported in amazon.titan-embed-text-v2:0.\n */\n normalize: z.boolean().optional(),\n});\n","import { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n FetchFunction,\n Resolvable,\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport {\n BedrockImageModelId,\n modelMaxImagesPerCall,\n} from './bedrock-image-settings';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { z } from 'zod/v4';\n\ntype BedrockImageModelConfig = {\n baseUrl: () => string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n};\n\nexport class BedrockImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'amazon-bedrock';\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: BedrockImageModelId,\n private readonly config: BedrockImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n const [width, height] = size ? size.split('x').map(Number) : [];\n const args = {\n taskType: 'TEXT_IMAGE',\n textToImageParams: {\n text: prompt,\n ...(providerOptions?.bedrock?.negativeText\n ? {\n negativeText: providerOptions.bedrock.negativeText,\n }\n : {}),\n ...(providerOptions?.bedrock?.style\n ? {\n style: providerOptions.bedrock.style,\n }\n : {}),\n },\n imageGenerationConfig: {\n ...(width ? { width } : {}),\n ...(height ? { height } : {}),\n ...(seed ? { seed } : {}),\n ...(n ? { numberOfImages: n } : {}),\n ...(providerOptions?.bedrock?.quality\n ? { quality: providerOptions.bedrock.quality }\n : {}),\n ...(providerOptions?.bedrock?.cfgScale\n ? { cfgScale: providerOptions.bedrock.cfgScale }\n : {}),\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(await resolve(this.config.headers), headers),\n ),\n body: args,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: BedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n bedrockImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\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\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 bedrockImageResponseSchema = z.object({\n images: z.array(z.string()),\n});\n","export type BedrockImageModelId = 'amazon.nova-canvas-v1:0' | (string & {});\n\n// https://docs.aws.amazon.com/nova/latest/userguide/image-gen-req-resp-structure.html\nexport const modelMaxImagesPerCall: Record<BedrockImageModelId, number> = {\n 'amazon.nova-canvas-v1:0': 5,\n};\n","import {\n FetchFunction,\n combineHeaders,\n normalizeHeaders,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\nimport { VERSION } from './version';\n\nexport interface BedrockCredentials {\n region: string;\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n}\n\n/**\nCreates 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: () => BedrockCredentials | PromiseLike<BedrockCredentials>,\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/**\nCreates 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 { RerankingModelV3 } from '@ai-sdk/provider';\nimport {\n FetchFunction,\n Resolvable,\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { BedrockErrorSchema } from '../bedrock-error';\nimport {\n BedrockRerankingInput,\n bedrockRerankingResponseSchema,\n} from './bedrock-reranking-api';\nimport {\n BedrockRerankingModelId,\n bedrockRerankingOptionsSchema,\n} from './bedrock-reranking-options';\n\ntype BedrockRerankingConfig = {\n baseUrl: () => string;\n region: string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoRerankResponse = Awaited<ReturnType<RerankingModelV3['doRerank']>>;\n\nexport class BedrockRerankingModel implements RerankingModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'amazon-bedrock';\n\n constructor(\n readonly modelId: BedrockRerankingModelId,\n private readonly config: BedrockRerankingConfig,\n ) {}\n\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV3['doRerank']>[0]): Promise<DoRerankResponse> {\n const bedrockOptions = await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockRerankingOptionsSchema,\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: bedrockOptions?.nextToken,\n queries: [\n {\n textQuery: { text: query },\n type: 'TEXT',\n },\n ],\n rerankingConfiguration: {\n bedrockRerankingConfiguration: {\n modelConfiguration: {\n modelArn: `arn:aws:bedrock:${this.config.region}::foundation-model/${this.modelId}`,\n additionalModelRequestFields:\n bedrockOptions?.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 BedrockRerankingInput,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: BedrockErrorSchema,\n errorToMessage: error => `${error.type}: ${error.message}`,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n bedrockRerankingResponseSchema,\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 BedrockRerankingInput = {\n nextToken?: string;\n queries: [{ type: 'TEXT'; textQuery: { text: string } }];\n rerankingConfiguration: {\n type: 'BEDROCK_RERANKING_MODEL';\n bedrockRerankingConfiguration: {\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 bedrockRerankingResponseSchema = 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 BedrockRerankingModelId =\n | 'amazon.rerank-v1:0'\n | 'cohere.rerank-v3-5:0'\n | (string & {});\n\nexport type BedrockRerankingOptions = {\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 bedrockRerankingOptionsSchema = 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","UnsupportedFunctionalityError","UnsupportedFunctionalityError","parseProviderOptions","_a","z","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","z","z","parseProviderOptions","postJsonToApi","resolve","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","postJsonToApi","resolve","z","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"]}