@ai-sdk/amazon-bedrock 3.0.0-canary.16 → 3.0.0-canary.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @ai-sdk/amazon-bedrock
2
2
 
3
+ ## 3.0.0-canary.18
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [40acf9b]
8
+ - @ai-sdk/provider-utils@3.0.0-canary.18
9
+
10
+ ## 3.0.0-canary.17
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [ea7a7c9]
15
+ - @ai-sdk/provider-utils@3.0.0-canary.17
16
+
3
17
  ## 3.0.0-canary.16
4
18
 
5
19
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -38,13 +38,6 @@ type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;
38
38
  type BedrockEmbeddingModelId = 'amazon.titan-embed-text-v1' | 'amazon.titan-embed-text-v2:0' | 'cohere.embed-english-v3' | 'cohere.embed-multilingual-v3' | (string & {});
39
39
 
40
40
  type BedrockImageModelId = 'amazon.nova-canvas-v1:0' | (string & {});
41
- interface BedrockImageSettings {
42
- /**
43
- * Override the maximum number of images per call (default is dependent on the
44
- * model, or 1 for an unknown model).
45
- */
46
- maxImagesPerCall?: number;
47
- }
48
41
 
49
42
  interface BedrockCredentials {
50
43
  region: string;
@@ -100,8 +93,15 @@ interface AmazonBedrockProvider extends ProviderV2 {
100
93
  (modelId: BedrockChatModelId): LanguageModelV2;
101
94
  languageModel(modelId: BedrockChatModelId): LanguageModelV2;
102
95
  embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV2<string>;
103
- image(modelId: BedrockImageModelId, settings?: BedrockImageSettings): ImageModelV2;
104
- imageModel(modelId: BedrockImageModelId, settings?: BedrockImageSettings): ImageModelV2;
96
+ /**
97
+ Creates a model for image generation.
98
+ @deprecated Use `imageModel` instead.
99
+ */
100
+ image(modelId: BedrockImageModelId): ImageModelV2;
101
+ /**
102
+ Creates a model for image generation.
103
+ */
104
+ imageModel(modelId: BedrockImageModelId): ImageModelV2;
105
105
  }
106
106
  /**
107
107
  Create an Amazon Bedrock provider instance.
package/dist/index.d.ts CHANGED
@@ -38,13 +38,6 @@ type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;
38
38
  type BedrockEmbeddingModelId = 'amazon.titan-embed-text-v1' | 'amazon.titan-embed-text-v2:0' | 'cohere.embed-english-v3' | 'cohere.embed-multilingual-v3' | (string & {});
39
39
 
40
40
  type BedrockImageModelId = 'amazon.nova-canvas-v1:0' | (string & {});
41
- interface BedrockImageSettings {
42
- /**
43
- * Override the maximum number of images per call (default is dependent on the
44
- * model, or 1 for an unknown model).
45
- */
46
- maxImagesPerCall?: number;
47
- }
48
41
 
49
42
  interface BedrockCredentials {
50
43
  region: string;
@@ -100,8 +93,15 @@ interface AmazonBedrockProvider extends ProviderV2 {
100
93
  (modelId: BedrockChatModelId): LanguageModelV2;
101
94
  languageModel(modelId: BedrockChatModelId): LanguageModelV2;
102
95
  embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV2<string>;
103
- image(modelId: BedrockImageModelId, settings?: BedrockImageSettings): ImageModelV2;
104
- imageModel(modelId: BedrockImageModelId, settings?: BedrockImageSettings): ImageModelV2;
96
+ /**
97
+ Creates a model for image generation.
98
+ @deprecated Use `imageModel` instead.
99
+ */
100
+ image(modelId: BedrockImageModelId): ImageModelV2;
101
+ /**
102
+ Creates a model for image generation.
103
+ */
104
+ imageModel(modelId: BedrockImageModelId): ImageModelV2;
105
105
  }
106
106
  /**
107
107
  Create an Amazon Bedrock provider instance.
package/dist/index.js CHANGED
@@ -1092,16 +1092,15 @@ var modelMaxImagesPerCall = {
1092
1092
  // src/bedrock-image-model.ts
1093
1093
  var import_zod6 = require("zod");
1094
1094
  var BedrockImageModel = class {
1095
- constructor(modelId, settings, config) {
1095
+ constructor(modelId, config) {
1096
1096
  this.modelId = modelId;
1097
- this.settings = settings;
1098
1097
  this.config = config;
1099
1098
  this.specificationVersion = "v2";
1100
1099
  this.provider = "amazon-bedrock";
1101
1100
  }
1102
1101
  get maxImagesPerCall() {
1103
- var _a, _b;
1104
- return (_b = (_a = this.settings.maxImagesPerCall) != null ? _a : modelMaxImagesPerCall[this.modelId]) != null ? _b : 1;
1102
+ var _a;
1103
+ return (_a = modelMaxImagesPerCall[this.modelId]) != null ? _a : 1;
1105
1104
  }
1106
1105
  getUrl(modelId) {
1107
1106
  const encodedModelId = encodeURIComponent(modelId);
@@ -1320,9 +1319,9 @@ function createAmazonBedrock(options = {}) {
1320
1319
  fetch: sigv4Fetch
1321
1320
  });
1322
1321
  };
1323
- const createImageModel = (modelId, settings = {}) => {
1322
+ const createImageModel = (modelId) => {
1324
1323
  var _a;
1325
- return new BedrockImageModel(modelId, settings, {
1324
+ return new BedrockImageModel(modelId, {
1326
1325
  baseUrl: getBaseUrl,
1327
1326
  headers: (_a = options.headers) != null ? _a : {},
1328
1327
  fetch: sigv4Fetch
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../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/headers-utils.ts","../src/bedrock-sigv4-fetch.ts"],"sourcesContent":["export { bedrock, createAmazonBedrock } from './bedrock-provider';\nexport type {\n AmazonBedrockProvider,\n AmazonBedrockProviderSettings,\n} from './bedrock-provider';\nexport type { BedrockProviderOptions } from './bedrock-chat-options';\n","import {\n EmbeddingModelV2,\n ImageModelV2,\n LanguageModelV2,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadOptionalSetting,\n loadSetting,\n withoutTrailingSlash,\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 {\n BedrockImageModelId,\n BedrockImageSettings,\n} from './bedrock-image-settings';\nimport {\n BedrockCredentials,\n createSigV4FetchFunction,\n} from './bedrock-sigv4-fetch';\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 /**\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 ProviderV2 {\n (modelId: BedrockChatModelId): LanguageModelV2;\n\n languageModel(modelId: BedrockChatModelId): LanguageModelV2;\n\n embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV2<string>;\n\n image(\n modelId: BedrockImageModelId,\n settings?: BedrockImageSettings,\n ): ImageModelV2;\n\n imageModel(\n modelId: BedrockImageModelId,\n settings?: BedrockImageSettings,\n ): ImageModelV2;\n}\n\n/**\nCreate an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n const sigv4Fetch = createSigV4FetchFunction(async () => {\n const region = loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n });\n // If a credential provider is provided, use it to get the credentials.\n if (options.credentialProvider) {\n return {\n ...(await options.credentialProvider()),\n region,\n };\n }\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 }, options.fetch);\n\n const getBaseUrl = (): 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 createChatModel = (modelId: BedrockChatModelId) =>\n new BedrockChatLanguageModel(modelId, {\n baseUrl: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\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: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\n });\n\n const createImageModel = (\n modelId: BedrockImageModelId,\n settings: BedrockImageSettings = {},\n ) =>\n new BedrockImageModel(modelId, settings, {\n baseUrl: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\n });\n\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n JSONObject,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Reasoning,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\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';\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 LanguageModelV2 {\n readonly specificationVersion = 'v2';\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<LanguageModelV2['doGenerate']>[0]): Promise<{\n command: BedrockConverseInput;\n warnings: LanguageModelV2CallWarning[];\n }> {\n // Parse provider options\n const bedrockOptions =\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockProviderOptions,\n })) ?? {};\n\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { system, messages } = await convertToBedrockChatMessages(prompt);\n\n const isThinking = bedrockOptions.reasoningConfig?.type === 'enabled';\n const thinkingBudget = bedrockOptions.reasoningConfig?.budgetTokens;\n\n const inferenceConfig = {\n ...(maxOutputTokens != null && { maxOutputTokens }),\n ...(temperature != null && { temperature }),\n ...(topP != null && { topP }),\n ...(stopSequences != null && { stopSequences }),\n };\n\n // Adjust maxOutputTokens if thinking is enabled\n if (isThinking && thinkingBudget != null) {\n if (inferenceConfig.maxOutputTokens != null) {\n inferenceConfig.maxOutputTokens += thinkingBudget;\n } else {\n inferenceConfig.maxOutputTokens = thinkingBudget + 4096; // Default + thinking budget maxOutputTokens = 4096, TODO update default in v5\n }\n // Add them to additional model request fields\n // Add reasoning config to additionalModelRequestFields\n bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n reasoningConfig: {\n type: bedrockOptions.reasoningConfig?.type,\n budget_tokens: thinkingBudget,\n },\n };\n }\n\n // Remove temperature if thinking is enabled\n if (isThinking && inferenceConfig.temperature != null) {\n delete inferenceConfig.temperature;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported when thinking is enabled',\n });\n }\n\n // Remove topP if thinking is enabled\n if (isThinking && inferenceConfig.topP != null) {\n delete inferenceConfig.topP;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported when thinking is enabled',\n });\n }\n\n const { toolConfig, toolWarnings } = prepareTools({ tools, toolChoice });\n return {\n command: {\n system,\n messages,\n additionalModelRequestFields:\n bedrockOptions.additionalModelRequestFields,\n ...(Object.keys(inferenceConfig).length > 0 && {\n inferenceConfig,\n }),\n ...providerOptions?.bedrock,\n ...(toolConfig.tools?.length ? { toolConfig } : {}),\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // no supported urls for bedrock\n };\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { command: args, warnings } = await this.getArgs(options);\n\n const url = `${this.getUrl(this.modelId)}/converse`;\n const { value: response, responseHeaders } = await postJsonToApi({\n url,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\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<LanguageModelV2Content> = [];\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: LanguageModelV2Reasoning = {\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 content.push({\n type: 'tool-call' as const,\n toolCallType: 'function',\n toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\n toolName: part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n args: JSON.stringify(part.toolUse?.input ?? ''),\n });\n }\n }\n\n // provider metadata:\n const providerMetadata =\n response.trace || response.usage\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 },\n }\n : undefined;\n\n return {\n content,\n finishReason: mapBedrockFinishReason(\n response.stopReason as BedrockStopReason,\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<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { command: args, warnings } = 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: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\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: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let providerMetadata: SharedV2ProviderMetadata | undefined = undefined;\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof BedrockStreamSchema>>,\n LanguageModelV2StreamPart\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 // 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 );\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.contentBlockDelta?.delta &&\n 'text' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.text\n ) {\n controller.enqueue({\n type: 'text',\n text: value.contentBlockDelta.delta.text,\n });\n }\n\n if (\n value.contentBlockDelta?.delta &&\n 'reasoningContent' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.reasoningContent\n ) {\n const reasoningContent =\n value.contentBlockDelta.delta.reasoningContent;\n if ('text' in reasoningContent && reasoningContent.text) {\n controller.enqueue({\n type: 'reasoning',\n text: reasoningContent.text,\n });\n } else if (\n 'signature' in reasoningContent &&\n reasoningContent.signature\n ) {\n controller.enqueue({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n bedrock: {\n signature: reasoningContent.signature,\n } satisfies BedrockReasoningMetadata,\n },\n });\n controller.enqueue({ type: 'reasoning-part-finish' });\n } else if ('data' in reasoningContent && reasoningContent.data) {\n controller.enqueue({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n bedrock: {\n redactedData: reasoningContent.data,\n } satisfies BedrockReasoningMetadata,\n },\n });\n controller.enqueue({ type: 'reasoning-part-finish' });\n }\n }\n\n const contentBlockStart = value.contentBlockStart;\n if (contentBlockStart?.start?.toolUse != null) {\n const toolUse = contentBlockStart.start.toolUse;\n toolCallContentBlocks[contentBlockStart.contentBlockIndex!] = {\n toolCallId: toolUse.toolUseId!,\n toolName: toolUse.name!,\n jsonText: '',\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 contentBlock =\n toolCallContentBlocks[contentBlockDelta.contentBlockIndex!];\n const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: delta,\n });\n\n contentBlock.jsonText += delta;\n }\n\n const contentBlockStop = value.contentBlockStop;\n if (contentBlockStop != null) {\n const index = contentBlockStop.contentBlockIndex!;\n const contentBlock = toolCallContentBlocks[index];\n\n // when finishing a tool call block, send the full tool call:\n if (contentBlock != null) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[index];\n }\n }\n },\n flush(controller) {\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.unknown()).nullish(),\n messageStop: z\n .object({\n additionalModelResponseFields: z.record(z.unknown()).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.unknown()).nullish(),\n throttlingException: z.record(z.unknown()).nullish(),\n validationException: z.record(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 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\nexport type BedrockImageFormat = 'jpeg' | 'png' | 'gif';\nexport type BedrockDocumentFormat = 'pdf' | 'txt' | 'md';\n\nexport interface BedrockDocumentBlock {\n document: {\n format: BedrockDocumentFormat;\n name: string;\n source: {\n bytes: string;\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';\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-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 | 'amazon.titan-text-express-v1'\n | 'amazon.titan-text-lite-v1'\n | (string & {});\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.any()).optional(),\n reasoningConfig: z\n .object({\n type: z.union([z.literal('enabled'), z.literal('disabled')]).optional(),\n budgetTokens: z.number().optional(),\n })\n .optional(),\n});\n\nexport type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;\n","import { z } from 'zod';\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 { ZodSchema } from 'zod';\n\n// https://docs.aws.amazon.com/lexv2/latest/dg/event-stream-encoding.html\nexport const createBedrockEventStreamResponseHandler =\n <T>(\n chunkSchema: ZodSchema<T>,\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({\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 LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { BedrockTool, BedrockToolConfiguration } from './bedrock-api-types';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n toolConfig: BedrockToolConfiguration; // note: do not rename, name required by Bedrock\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n if (tools == null) {\n return {\n toolConfig: { tools: undefined, toolChoice: undefined },\n toolWarnings: [],\n };\n }\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n const bedrockTools: BedrockTool[] = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n bedrockTools.push({\n toolSpec: {\n name: tool.name,\n description: tool.description,\n inputSchema: {\n json: tool.parameters as JSONObject,\n },\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return {\n toolConfig: { tools: bedrockTools, toolChoice: undefined },\n toolWarnings,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return {\n toolConfig: { tools: bedrockTools, toolChoice: { auto: {} } },\n toolWarnings,\n };\n case 'required':\n return {\n toolConfig: { tools: bedrockTools, toolChoice: { any: {} } },\n toolWarnings,\n };\n case 'none':\n // Bedrock does not support 'none' tool choice, so we remove the tools:\n return {\n toolConfig: { tools: undefined, toolChoice: undefined },\n toolWarnings,\n };\n case 'tool':\n return {\n toolConfig: {\n tools: bedrockTools,\n toolChoice: { tool: { name: toolChoice.toolName } },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n JSONObject,\n LanguageModelV2Message,\n LanguageModelV2Prompt,\n SharedV2ProviderMetadata,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n createIdGenerator,\n parseProviderOptions,\n} from '@ai-sdk/provider-utils';\nimport {\n BEDROCK_CACHE_POINT,\n BedrockAssistantMessage,\n BedrockCachePoint,\n BedrockDocumentFormat,\n BedrockImageFormat,\n BedrockMessages,\n BedrockSystemMessages,\n BedrockUserMessage,\n} from './bedrock-api-types';\nimport { bedrockReasoningMetadataSchema } from './bedrock-chat-language-model';\n\nconst generateFileId = createIdGenerator({ prefix: 'file', size: 16 });\n\nfunction getCachePoint(\n providerMetadata: SharedV2ProviderMetadata | undefined,\n): BedrockCachePoint | undefined {\n return providerMetadata?.bedrock?.cachePoint as BedrockCachePoint | undefined;\n}\n\nexport async function convertToBedrockChatMessages(\n prompt: LanguageModelV2Prompt,\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 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 const bedrockImageFormat =\n part.mediaType === 'image/*'\n ? undefined\n : part.mediaType?.split('/')?.[1];\n\n bedrockContent.push({\n image: {\n format: bedrockImageFormat as BedrockImageFormat,\n source: { bytes: convertToBase64(part.data) },\n },\n });\n } else {\n bedrockContent.push({\n document: {\n format: part.mediaType?.split(\n '/',\n )?.[1] as BedrockDocumentFormat,\n name: generateFileId(),\n source: { bytes: convertToBase64(part.data) },\n },\n });\n }\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (let i = 0; i < content.length; i++) {\n const part = content[i];\n const toolResultContent =\n part.content != undefined\n ? part.content.map(part => {\n switch (part.type) {\n case 'text':\n return {\n text: part.text,\n };\n case 'image':\n if (!part.mediaType) {\n throw new Error(\n 'Image mime type is required in tool result part content',\n );\n }\n const format = part.mediaType.split('/')[1];\n if (!isBedrockImageFormat(format)) {\n throw new Error(\n `Unsupported image format: ${format}`,\n );\n }\n return {\n image: {\n format,\n source: {\n bytes: part.data,\n },\n },\n };\n }\n })\n : [{ text: JSON.stringify(part.result) }];\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 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.args 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 ['jpeg', 'png', 'gif'].includes(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<LanguageModelV2Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV2Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV2Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV2Prompt,\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 { LanguageModelV2FinishReason } from '@ai-sdk/provider';\nimport { BedrockStopReason } from './bedrock-api-types';\n\nexport function mapBedrockFinishReason(\n finishReason?: BedrockStopReason,\n): LanguageModelV2FinishReason {\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 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import {\n EmbeddingModelV2,\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';\n\ntype BedrockEmbeddingConfig = {\n baseUrl: () => string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>;\n\nexport class BedrockEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\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<\n EmbeddingModelV2<string>['doEmbed']\n >[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 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';\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 { ImageModelV2, ImageModelV2CallWarning } 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 BedrockImageSettings,\n modelMaxImagesPerCall,\n} from './bedrock-image-settings';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { z } from 'zod';\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 ImageModelV2 {\n readonly specificationVersion = 'v2';\n readonly provider = 'amazon-bedrock';\n\n get maxImagesPerCall(): number {\n return (\n this.settings.maxImagesPerCall ?? modelMaxImagesPerCall[this.modelId] ?? 1\n );\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 settings: BedrockImageSettings,\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<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\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 },\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-setting',\n setting: '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\nexport interface BedrockImageSettings {\n /**\n * Override the maximum number of images per call (default is dependent on the\n * model, or 1 for an unknown model).\n */\n maxImagesPerCall?: number;\n}\n","/**\n * Extract headers from a `HeadersInit` object and convert them to a record of\n * lowercase keys and (preserving original case) values.\n * @param headers - The `HeadersInit` object to extract headers from.\n * @returns A record of lowercase keys and (preserving original case) values.\n */\nexport function extractHeaders(\n headers: HeadersInit | undefined,\n): Record<string, string | undefined> {\n let originalHeaders: Record<string, string | undefined> = {};\n if (headers) {\n if (headers instanceof Headers) {\n originalHeaders = convertHeadersToRecord(headers);\n } else if (Array.isArray(headers)) {\n for (const [k, v] of headers) {\n originalHeaders[k.toLowerCase()] = v;\n }\n } else {\n originalHeaders = Object.fromEntries(\n Object.entries(headers).map(([k, v]) => [k.toLowerCase(), v]),\n ) as Record<string, string>;\n }\n }\n return originalHeaders;\n}\n\n/**\n * Convert a Headers object to a record of lowercase keys and (preserving\n * original case) values.\n * @param headers - The Headers object to convert.\n * @returns A record of lowercase keys and values.\n */\nexport function convertHeadersToRecord(\n headers: Headers,\n): Record<string, string> {\n const record: Record<string, string> = {};\n headers.forEach((value, key) => {\n record[key.toLowerCase()] = value;\n });\n return record;\n}\n","import { convertHeadersToRecord, extractHeaders } from './headers-utils';\nimport {\n FetchFunction,\n combineHeaders,\n removeUndefinedEntries,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\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 if (init?.method?.toUpperCase() !== 'POST' || !init?.body) {\n return fetch(input, init);\n }\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const originalHeaders = extractHeaders(init.headers);\n const body = prepareBodyString(init.body);\n const credentials = await getCredentials();\n const signer = new AwsV4Signer({\n url,\n method: 'POST',\n headers: Object.entries(removeUndefinedEntries(originalHeaders)),\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 = convertHeadersToRecord(signingResult.headers);\n return fetch(input, {\n ...init,\n body,\n headers: removeUndefinedEntries(\n combineHeaders(originalHeaders, signedHeaders),\n ),\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"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_zod","import_zod","import_provider","import_provider","import_provider_utils","i","part","_a","import_provider","import_provider_utils","import_zod","import_zod","import_provider_utils","import_zod","import_provider_utils"]}
1
+ {"version":3,"sources":["../src/index.ts","../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/headers-utils.ts","../src/bedrock-sigv4-fetch.ts"],"sourcesContent":["export { bedrock, createAmazonBedrock } from './bedrock-provider';\nexport type {\n AmazonBedrockProvider,\n AmazonBedrockProviderSettings,\n} from './bedrock-provider';\nexport type { BedrockProviderOptions } from './bedrock-chat-options';\n","import {\n EmbeddingModelV2,\n ImageModelV2,\n LanguageModelV2,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadOptionalSetting,\n loadSetting,\n withoutTrailingSlash,\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 createSigV4FetchFunction,\n} from './bedrock-sigv4-fetch';\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 /**\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 ProviderV2 {\n (modelId: BedrockChatModelId): LanguageModelV2;\n\n languageModel(modelId: BedrockChatModelId): LanguageModelV2;\n\n embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV2<string>;\n\n /**\nCreates a model for image generation.\n@deprecated Use `imageModel` instead.\n */\n image(modelId: BedrockImageModelId): ImageModelV2;\n\n /**\nCreates a model for image generation.\n */\n imageModel(modelId: BedrockImageModelId): ImageModelV2;\n}\n\n/**\nCreate an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n const sigv4Fetch = createSigV4FetchFunction(async () => {\n const region = loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n });\n // If a credential provider is provided, use it to get the credentials.\n if (options.credentialProvider) {\n return {\n ...(await options.credentialProvider()),\n region,\n };\n }\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 }, options.fetch);\n\n const getBaseUrl = (): 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 createChatModel = (modelId: BedrockChatModelId) =>\n new BedrockChatLanguageModel(modelId, {\n baseUrl: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\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: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\n });\n\n const createImageModel = (modelId: BedrockImageModelId) =>\n new BedrockImageModel(modelId, {\n baseUrl: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\n });\n\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n JSONObject,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Reasoning,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\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';\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 LanguageModelV2 {\n readonly specificationVersion = 'v2';\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<LanguageModelV2['doGenerate']>[0]): Promise<{\n command: BedrockConverseInput;\n warnings: LanguageModelV2CallWarning[];\n }> {\n // Parse provider options\n const bedrockOptions =\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockProviderOptions,\n })) ?? {};\n\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { system, messages } = await convertToBedrockChatMessages(prompt);\n\n const isThinking = bedrockOptions.reasoningConfig?.type === 'enabled';\n const thinkingBudget = bedrockOptions.reasoningConfig?.budgetTokens;\n\n const inferenceConfig = {\n ...(maxOutputTokens != null && { maxOutputTokens }),\n ...(temperature != null && { temperature }),\n ...(topP != null && { topP }),\n ...(stopSequences != null && { stopSequences }),\n };\n\n // Adjust maxOutputTokens if thinking is enabled\n if (isThinking && thinkingBudget != null) {\n if (inferenceConfig.maxOutputTokens != null) {\n inferenceConfig.maxOutputTokens += thinkingBudget;\n } else {\n inferenceConfig.maxOutputTokens = thinkingBudget + 4096; // Default + thinking budget maxOutputTokens = 4096, TODO update default in v5\n }\n // Add them to additional model request fields\n // Add reasoning config to additionalModelRequestFields\n bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n reasoningConfig: {\n type: bedrockOptions.reasoningConfig?.type,\n budget_tokens: thinkingBudget,\n },\n };\n }\n\n // Remove temperature if thinking is enabled\n if (isThinking && inferenceConfig.temperature != null) {\n delete inferenceConfig.temperature;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported when thinking is enabled',\n });\n }\n\n // Remove topP if thinking is enabled\n if (isThinking && inferenceConfig.topP != null) {\n delete inferenceConfig.topP;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported when thinking is enabled',\n });\n }\n\n const { toolConfig, toolWarnings } = prepareTools({ tools, toolChoice });\n return {\n command: {\n system,\n messages,\n additionalModelRequestFields:\n bedrockOptions.additionalModelRequestFields,\n ...(Object.keys(inferenceConfig).length > 0 && {\n inferenceConfig,\n }),\n ...providerOptions?.bedrock,\n ...(toolConfig.tools?.length ? { toolConfig } : {}),\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // no supported urls for bedrock\n };\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { command: args, warnings } = await this.getArgs(options);\n\n const url = `${this.getUrl(this.modelId)}/converse`;\n const { value: response, responseHeaders } = await postJsonToApi({\n url,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\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<LanguageModelV2Content> = [];\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: LanguageModelV2Reasoning = {\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 content.push({\n type: 'tool-call' as const,\n toolCallType: 'function',\n toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\n toolName: part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n args: JSON.stringify(part.toolUse?.input ?? ''),\n });\n }\n }\n\n // provider metadata:\n const providerMetadata =\n response.trace || response.usage\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 },\n }\n : undefined;\n\n return {\n content,\n finishReason: mapBedrockFinishReason(\n response.stopReason as BedrockStopReason,\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<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { command: args, warnings } = 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: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\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: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let providerMetadata: SharedV2ProviderMetadata | undefined = undefined;\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof BedrockStreamSchema>>,\n LanguageModelV2StreamPart\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 // 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 );\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.contentBlockDelta?.delta &&\n 'text' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.text\n ) {\n controller.enqueue({\n type: 'text',\n text: value.contentBlockDelta.delta.text,\n });\n }\n\n if (\n value.contentBlockDelta?.delta &&\n 'reasoningContent' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.reasoningContent\n ) {\n const reasoningContent =\n value.contentBlockDelta.delta.reasoningContent;\n if ('text' in reasoningContent && reasoningContent.text) {\n controller.enqueue({\n type: 'reasoning',\n text: reasoningContent.text,\n });\n } else if (\n 'signature' in reasoningContent &&\n reasoningContent.signature\n ) {\n controller.enqueue({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n bedrock: {\n signature: reasoningContent.signature,\n } satisfies BedrockReasoningMetadata,\n },\n });\n controller.enqueue({ type: 'reasoning-part-finish' });\n } else if ('data' in reasoningContent && reasoningContent.data) {\n controller.enqueue({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n bedrock: {\n redactedData: reasoningContent.data,\n } satisfies BedrockReasoningMetadata,\n },\n });\n controller.enqueue({ type: 'reasoning-part-finish' });\n }\n }\n\n const contentBlockStart = value.contentBlockStart;\n if (contentBlockStart?.start?.toolUse != null) {\n const toolUse = contentBlockStart.start.toolUse;\n toolCallContentBlocks[contentBlockStart.contentBlockIndex!] = {\n toolCallId: toolUse.toolUseId!,\n toolName: toolUse.name!,\n jsonText: '',\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 contentBlock =\n toolCallContentBlocks[contentBlockDelta.contentBlockIndex!];\n const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: delta,\n });\n\n contentBlock.jsonText += delta;\n }\n\n const contentBlockStop = value.contentBlockStop;\n if (contentBlockStop != null) {\n const index = contentBlockStop.contentBlockIndex!;\n const contentBlock = toolCallContentBlocks[index];\n\n // when finishing a tool call block, send the full tool call:\n if (contentBlock != null) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[index];\n }\n }\n },\n flush(controller) {\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.unknown()).nullish(),\n messageStop: z\n .object({\n additionalModelResponseFields: z.record(z.unknown()).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.unknown()).nullish(),\n throttlingException: z.record(z.unknown()).nullish(),\n validationException: z.record(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 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\nexport type BedrockImageFormat = 'jpeg' | 'png' | 'gif';\nexport type BedrockDocumentFormat = 'pdf' | 'txt' | 'md';\n\nexport interface BedrockDocumentBlock {\n document: {\n format: BedrockDocumentFormat;\n name: string;\n source: {\n bytes: string;\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';\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-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 | 'amazon.titan-text-express-v1'\n | 'amazon.titan-text-lite-v1'\n | (string & {});\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.any()).optional(),\n reasoningConfig: z\n .object({\n type: z.union([z.literal('enabled'), z.literal('disabled')]).optional(),\n budgetTokens: z.number().optional(),\n })\n .optional(),\n});\n\nexport type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;\n","import { z } from 'zod';\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 { ZodSchema } from 'zod';\n\n// https://docs.aws.amazon.com/lexv2/latest/dg/event-stream-encoding.html\nexport const createBedrockEventStreamResponseHandler =\n <T>(\n chunkSchema: ZodSchema<T>,\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({\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 LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { BedrockTool, BedrockToolConfiguration } from './bedrock-api-types';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n toolConfig: BedrockToolConfiguration; // note: do not rename, name required by Bedrock\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n if (tools == null) {\n return {\n toolConfig: { tools: undefined, toolChoice: undefined },\n toolWarnings: [],\n };\n }\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n const bedrockTools: BedrockTool[] = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n bedrockTools.push({\n toolSpec: {\n name: tool.name,\n description: tool.description,\n inputSchema: {\n json: tool.parameters as JSONObject,\n },\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return {\n toolConfig: { tools: bedrockTools, toolChoice: undefined },\n toolWarnings,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return {\n toolConfig: { tools: bedrockTools, toolChoice: { auto: {} } },\n toolWarnings,\n };\n case 'required':\n return {\n toolConfig: { tools: bedrockTools, toolChoice: { any: {} } },\n toolWarnings,\n };\n case 'none':\n // Bedrock does not support 'none' tool choice, so we remove the tools:\n return {\n toolConfig: { tools: undefined, toolChoice: undefined },\n toolWarnings,\n };\n case 'tool':\n return {\n toolConfig: {\n tools: bedrockTools,\n toolChoice: { tool: { name: toolChoice.toolName } },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n JSONObject,\n LanguageModelV2Message,\n LanguageModelV2Prompt,\n SharedV2ProviderMetadata,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n createIdGenerator,\n parseProviderOptions,\n} from '@ai-sdk/provider-utils';\nimport {\n BEDROCK_CACHE_POINT,\n BedrockAssistantMessage,\n BedrockCachePoint,\n BedrockDocumentFormat,\n BedrockImageFormat,\n BedrockMessages,\n BedrockSystemMessages,\n BedrockUserMessage,\n} from './bedrock-api-types';\nimport { bedrockReasoningMetadataSchema } from './bedrock-chat-language-model';\n\nconst generateFileId = createIdGenerator({ prefix: 'file', size: 16 });\n\nfunction getCachePoint(\n providerMetadata: SharedV2ProviderMetadata | undefined,\n): BedrockCachePoint | undefined {\n return providerMetadata?.bedrock?.cachePoint as BedrockCachePoint | undefined;\n}\n\nexport async function convertToBedrockChatMessages(\n prompt: LanguageModelV2Prompt,\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 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 const bedrockImageFormat =\n part.mediaType === 'image/*'\n ? undefined\n : part.mediaType?.split('/')?.[1];\n\n bedrockContent.push({\n image: {\n format: bedrockImageFormat as BedrockImageFormat,\n source: { bytes: convertToBase64(part.data) },\n },\n });\n } else {\n bedrockContent.push({\n document: {\n format: part.mediaType?.split(\n '/',\n )?.[1] as BedrockDocumentFormat,\n name: generateFileId(),\n source: { bytes: convertToBase64(part.data) },\n },\n });\n }\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (let i = 0; i < content.length; i++) {\n const part = content[i];\n const toolResultContent =\n part.content != undefined\n ? part.content.map(part => {\n switch (part.type) {\n case 'text':\n return {\n text: part.text,\n };\n case 'image':\n if (!part.mediaType) {\n throw new Error(\n 'Image mime type is required in tool result part content',\n );\n }\n const format = part.mediaType.split('/')[1];\n if (!isBedrockImageFormat(format)) {\n throw new Error(\n `Unsupported image format: ${format}`,\n );\n }\n return {\n image: {\n format,\n source: {\n bytes: part.data,\n },\n },\n };\n }\n })\n : [{ text: JSON.stringify(part.result) }];\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 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.args 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 ['jpeg', 'png', 'gif'].includes(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<LanguageModelV2Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV2Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV2Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV2Prompt,\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 { LanguageModelV2FinishReason } from '@ai-sdk/provider';\nimport { BedrockStopReason } from './bedrock-api-types';\n\nexport function mapBedrockFinishReason(\n finishReason?: BedrockStopReason,\n): LanguageModelV2FinishReason {\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 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import {\n EmbeddingModelV2,\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';\n\ntype BedrockEmbeddingConfig = {\n baseUrl: () => string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>;\n\nexport class BedrockEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\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<\n EmbeddingModelV2<string>['doEmbed']\n >[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 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';\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 { ImageModelV2, ImageModelV2CallWarning } 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';\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 ImageModelV2 {\n readonly specificationVersion = 'v2';\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<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\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 },\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-setting',\n setting: '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","/**\n * Extract headers from a `HeadersInit` object and convert them to a record of\n * lowercase keys and (preserving original case) values.\n * @param headers - The `HeadersInit` object to extract headers from.\n * @returns A record of lowercase keys and (preserving original case) values.\n */\nexport function extractHeaders(\n headers: HeadersInit | undefined,\n): Record<string, string | undefined> {\n let originalHeaders: Record<string, string | undefined> = {};\n if (headers) {\n if (headers instanceof Headers) {\n originalHeaders = convertHeadersToRecord(headers);\n } else if (Array.isArray(headers)) {\n for (const [k, v] of headers) {\n originalHeaders[k.toLowerCase()] = v;\n }\n } else {\n originalHeaders = Object.fromEntries(\n Object.entries(headers).map(([k, v]) => [k.toLowerCase(), v]),\n ) as Record<string, string>;\n }\n }\n return originalHeaders;\n}\n\n/**\n * Convert a Headers object to a record of lowercase keys and (preserving\n * original case) values.\n * @param headers - The Headers object to convert.\n * @returns A record of lowercase keys and values.\n */\nexport function convertHeadersToRecord(\n headers: Headers,\n): Record<string, string> {\n const record: Record<string, string> = {};\n headers.forEach((value, key) => {\n record[key.toLowerCase()] = value;\n });\n return record;\n}\n","import { convertHeadersToRecord, extractHeaders } from './headers-utils';\nimport {\n FetchFunction,\n combineHeaders,\n removeUndefinedEntries,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\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 if (init?.method?.toUpperCase() !== 'POST' || !init?.body) {\n return fetch(input, init);\n }\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const originalHeaders = extractHeaders(init.headers);\n const body = prepareBodyString(init.body);\n const credentials = await getCredentials();\n const signer = new AwsV4Signer({\n url,\n method: 'POST',\n headers: Object.entries(removeUndefinedEntries(originalHeaders)),\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 = convertHeadersToRecord(signingResult.headers);\n return fetch(input, {\n ...init,\n body,\n headers: removeUndefinedEntries(\n combineHeaders(originalHeaders, signedHeaders),\n ),\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"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_zod","import_zod","import_provider","import_provider","import_provider_utils","i","part","_a","import_provider","import_provider_utils","import_zod","import_zod","import_provider_utils","import_zod","import_provider_utils"]}
package/dist/index.mjs CHANGED
@@ -1104,16 +1104,15 @@ var modelMaxImagesPerCall = {
1104
1104
  // src/bedrock-image-model.ts
1105
1105
  import { z as z6 } from "zod";
1106
1106
  var BedrockImageModel = class {
1107
- constructor(modelId, settings, config) {
1107
+ constructor(modelId, config) {
1108
1108
  this.modelId = modelId;
1109
- this.settings = settings;
1110
1109
  this.config = config;
1111
1110
  this.specificationVersion = "v2";
1112
1111
  this.provider = "amazon-bedrock";
1113
1112
  }
1114
1113
  get maxImagesPerCall() {
1115
- var _a, _b;
1116
- return (_b = (_a = this.settings.maxImagesPerCall) != null ? _a : modelMaxImagesPerCall[this.modelId]) != null ? _b : 1;
1114
+ var _a;
1115
+ return (_a = modelMaxImagesPerCall[this.modelId]) != null ? _a : 1;
1117
1116
  }
1118
1117
  getUrl(modelId) {
1119
1118
  const encodedModelId = encodeURIComponent(modelId);
@@ -1335,9 +1334,9 @@ function createAmazonBedrock(options = {}) {
1335
1334
  fetch: sigv4Fetch
1336
1335
  });
1337
1336
  };
1338
- const createImageModel = (modelId, settings = {}) => {
1337
+ const createImageModel = (modelId) => {
1339
1338
  var _a;
1340
- return new BedrockImageModel(modelId, settings, {
1339
+ return new BedrockImageModel(modelId, {
1341
1340
  baseUrl: getBaseUrl,
1342
1341
  headers: (_a = options.headers) != null ? _a : {},
1343
1342
  fetch: sigv4Fetch
@@ -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/headers-utils.ts","../src/bedrock-sigv4-fetch.ts"],"sourcesContent":["import {\n EmbeddingModelV2,\n ImageModelV2,\n LanguageModelV2,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadOptionalSetting,\n loadSetting,\n withoutTrailingSlash,\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 {\n BedrockImageModelId,\n BedrockImageSettings,\n} from './bedrock-image-settings';\nimport {\n BedrockCredentials,\n createSigV4FetchFunction,\n} from './bedrock-sigv4-fetch';\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 /**\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 ProviderV2 {\n (modelId: BedrockChatModelId): LanguageModelV2;\n\n languageModel(modelId: BedrockChatModelId): LanguageModelV2;\n\n embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV2<string>;\n\n image(\n modelId: BedrockImageModelId,\n settings?: BedrockImageSettings,\n ): ImageModelV2;\n\n imageModel(\n modelId: BedrockImageModelId,\n settings?: BedrockImageSettings,\n ): ImageModelV2;\n}\n\n/**\nCreate an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n const sigv4Fetch = createSigV4FetchFunction(async () => {\n const region = loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n });\n // If a credential provider is provided, use it to get the credentials.\n if (options.credentialProvider) {\n return {\n ...(await options.credentialProvider()),\n region,\n };\n }\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 }, options.fetch);\n\n const getBaseUrl = (): 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 createChatModel = (modelId: BedrockChatModelId) =>\n new BedrockChatLanguageModel(modelId, {\n baseUrl: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\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: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\n });\n\n const createImageModel = (\n modelId: BedrockImageModelId,\n settings: BedrockImageSettings = {},\n ) =>\n new BedrockImageModel(modelId, settings, {\n baseUrl: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\n });\n\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n JSONObject,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Reasoning,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\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';\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 LanguageModelV2 {\n readonly specificationVersion = 'v2';\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<LanguageModelV2['doGenerate']>[0]): Promise<{\n command: BedrockConverseInput;\n warnings: LanguageModelV2CallWarning[];\n }> {\n // Parse provider options\n const bedrockOptions =\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockProviderOptions,\n })) ?? {};\n\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { system, messages } = await convertToBedrockChatMessages(prompt);\n\n const isThinking = bedrockOptions.reasoningConfig?.type === 'enabled';\n const thinkingBudget = bedrockOptions.reasoningConfig?.budgetTokens;\n\n const inferenceConfig = {\n ...(maxOutputTokens != null && { maxOutputTokens }),\n ...(temperature != null && { temperature }),\n ...(topP != null && { topP }),\n ...(stopSequences != null && { stopSequences }),\n };\n\n // Adjust maxOutputTokens if thinking is enabled\n if (isThinking && thinkingBudget != null) {\n if (inferenceConfig.maxOutputTokens != null) {\n inferenceConfig.maxOutputTokens += thinkingBudget;\n } else {\n inferenceConfig.maxOutputTokens = thinkingBudget + 4096; // Default + thinking budget maxOutputTokens = 4096, TODO update default in v5\n }\n // Add them to additional model request fields\n // Add reasoning config to additionalModelRequestFields\n bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n reasoningConfig: {\n type: bedrockOptions.reasoningConfig?.type,\n budget_tokens: thinkingBudget,\n },\n };\n }\n\n // Remove temperature if thinking is enabled\n if (isThinking && inferenceConfig.temperature != null) {\n delete inferenceConfig.temperature;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported when thinking is enabled',\n });\n }\n\n // Remove topP if thinking is enabled\n if (isThinking && inferenceConfig.topP != null) {\n delete inferenceConfig.topP;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported when thinking is enabled',\n });\n }\n\n const { toolConfig, toolWarnings } = prepareTools({ tools, toolChoice });\n return {\n command: {\n system,\n messages,\n additionalModelRequestFields:\n bedrockOptions.additionalModelRequestFields,\n ...(Object.keys(inferenceConfig).length > 0 && {\n inferenceConfig,\n }),\n ...providerOptions?.bedrock,\n ...(toolConfig.tools?.length ? { toolConfig } : {}),\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // no supported urls for bedrock\n };\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { command: args, warnings } = await this.getArgs(options);\n\n const url = `${this.getUrl(this.modelId)}/converse`;\n const { value: response, responseHeaders } = await postJsonToApi({\n url,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\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<LanguageModelV2Content> = [];\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: LanguageModelV2Reasoning = {\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 content.push({\n type: 'tool-call' as const,\n toolCallType: 'function',\n toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\n toolName: part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n args: JSON.stringify(part.toolUse?.input ?? ''),\n });\n }\n }\n\n // provider metadata:\n const providerMetadata =\n response.trace || response.usage\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 },\n }\n : undefined;\n\n return {\n content,\n finishReason: mapBedrockFinishReason(\n response.stopReason as BedrockStopReason,\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<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { command: args, warnings } = 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: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\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: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let providerMetadata: SharedV2ProviderMetadata | undefined = undefined;\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof BedrockStreamSchema>>,\n LanguageModelV2StreamPart\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 // 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 );\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.contentBlockDelta?.delta &&\n 'text' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.text\n ) {\n controller.enqueue({\n type: 'text',\n text: value.contentBlockDelta.delta.text,\n });\n }\n\n if (\n value.contentBlockDelta?.delta &&\n 'reasoningContent' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.reasoningContent\n ) {\n const reasoningContent =\n value.contentBlockDelta.delta.reasoningContent;\n if ('text' in reasoningContent && reasoningContent.text) {\n controller.enqueue({\n type: 'reasoning',\n text: reasoningContent.text,\n });\n } else if (\n 'signature' in reasoningContent &&\n reasoningContent.signature\n ) {\n controller.enqueue({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n bedrock: {\n signature: reasoningContent.signature,\n } satisfies BedrockReasoningMetadata,\n },\n });\n controller.enqueue({ type: 'reasoning-part-finish' });\n } else if ('data' in reasoningContent && reasoningContent.data) {\n controller.enqueue({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n bedrock: {\n redactedData: reasoningContent.data,\n } satisfies BedrockReasoningMetadata,\n },\n });\n controller.enqueue({ type: 'reasoning-part-finish' });\n }\n }\n\n const contentBlockStart = value.contentBlockStart;\n if (contentBlockStart?.start?.toolUse != null) {\n const toolUse = contentBlockStart.start.toolUse;\n toolCallContentBlocks[contentBlockStart.contentBlockIndex!] = {\n toolCallId: toolUse.toolUseId!,\n toolName: toolUse.name!,\n jsonText: '',\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 contentBlock =\n toolCallContentBlocks[contentBlockDelta.contentBlockIndex!];\n const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: delta,\n });\n\n contentBlock.jsonText += delta;\n }\n\n const contentBlockStop = value.contentBlockStop;\n if (contentBlockStop != null) {\n const index = contentBlockStop.contentBlockIndex!;\n const contentBlock = toolCallContentBlocks[index];\n\n // when finishing a tool call block, send the full tool call:\n if (contentBlock != null) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[index];\n }\n }\n },\n flush(controller) {\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.unknown()).nullish(),\n messageStop: z\n .object({\n additionalModelResponseFields: z.record(z.unknown()).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.unknown()).nullish(),\n throttlingException: z.record(z.unknown()).nullish(),\n validationException: z.record(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 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\nexport type BedrockImageFormat = 'jpeg' | 'png' | 'gif';\nexport type BedrockDocumentFormat = 'pdf' | 'txt' | 'md';\n\nexport interface BedrockDocumentBlock {\n document: {\n format: BedrockDocumentFormat;\n name: string;\n source: {\n bytes: string;\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';\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-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 | 'amazon.titan-text-express-v1'\n | 'amazon.titan-text-lite-v1'\n | (string & {});\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.any()).optional(),\n reasoningConfig: z\n .object({\n type: z.union([z.literal('enabled'), z.literal('disabled')]).optional(),\n budgetTokens: z.number().optional(),\n })\n .optional(),\n});\n\nexport type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;\n","import { z } from 'zod';\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 { ZodSchema } from 'zod';\n\n// https://docs.aws.amazon.com/lexv2/latest/dg/event-stream-encoding.html\nexport const createBedrockEventStreamResponseHandler =\n <T>(\n chunkSchema: ZodSchema<T>,\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({\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 LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { BedrockTool, BedrockToolConfiguration } from './bedrock-api-types';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n toolConfig: BedrockToolConfiguration; // note: do not rename, name required by Bedrock\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n if (tools == null) {\n return {\n toolConfig: { tools: undefined, toolChoice: undefined },\n toolWarnings: [],\n };\n }\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n const bedrockTools: BedrockTool[] = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n bedrockTools.push({\n toolSpec: {\n name: tool.name,\n description: tool.description,\n inputSchema: {\n json: tool.parameters as JSONObject,\n },\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return {\n toolConfig: { tools: bedrockTools, toolChoice: undefined },\n toolWarnings,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return {\n toolConfig: { tools: bedrockTools, toolChoice: { auto: {} } },\n toolWarnings,\n };\n case 'required':\n return {\n toolConfig: { tools: bedrockTools, toolChoice: { any: {} } },\n toolWarnings,\n };\n case 'none':\n // Bedrock does not support 'none' tool choice, so we remove the tools:\n return {\n toolConfig: { tools: undefined, toolChoice: undefined },\n toolWarnings,\n };\n case 'tool':\n return {\n toolConfig: {\n tools: bedrockTools,\n toolChoice: { tool: { name: toolChoice.toolName } },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n JSONObject,\n LanguageModelV2Message,\n LanguageModelV2Prompt,\n SharedV2ProviderMetadata,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n createIdGenerator,\n parseProviderOptions,\n} from '@ai-sdk/provider-utils';\nimport {\n BEDROCK_CACHE_POINT,\n BedrockAssistantMessage,\n BedrockCachePoint,\n BedrockDocumentFormat,\n BedrockImageFormat,\n BedrockMessages,\n BedrockSystemMessages,\n BedrockUserMessage,\n} from './bedrock-api-types';\nimport { bedrockReasoningMetadataSchema } from './bedrock-chat-language-model';\n\nconst generateFileId = createIdGenerator({ prefix: 'file', size: 16 });\n\nfunction getCachePoint(\n providerMetadata: SharedV2ProviderMetadata | undefined,\n): BedrockCachePoint | undefined {\n return providerMetadata?.bedrock?.cachePoint as BedrockCachePoint | undefined;\n}\n\nexport async function convertToBedrockChatMessages(\n prompt: LanguageModelV2Prompt,\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 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 const bedrockImageFormat =\n part.mediaType === 'image/*'\n ? undefined\n : part.mediaType?.split('/')?.[1];\n\n bedrockContent.push({\n image: {\n format: bedrockImageFormat as BedrockImageFormat,\n source: { bytes: convertToBase64(part.data) },\n },\n });\n } else {\n bedrockContent.push({\n document: {\n format: part.mediaType?.split(\n '/',\n )?.[1] as BedrockDocumentFormat,\n name: generateFileId(),\n source: { bytes: convertToBase64(part.data) },\n },\n });\n }\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (let i = 0; i < content.length; i++) {\n const part = content[i];\n const toolResultContent =\n part.content != undefined\n ? part.content.map(part => {\n switch (part.type) {\n case 'text':\n return {\n text: part.text,\n };\n case 'image':\n if (!part.mediaType) {\n throw new Error(\n 'Image mime type is required in tool result part content',\n );\n }\n const format = part.mediaType.split('/')[1];\n if (!isBedrockImageFormat(format)) {\n throw new Error(\n `Unsupported image format: ${format}`,\n );\n }\n return {\n image: {\n format,\n source: {\n bytes: part.data,\n },\n },\n };\n }\n })\n : [{ text: JSON.stringify(part.result) }];\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 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.args 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 ['jpeg', 'png', 'gif'].includes(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<LanguageModelV2Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV2Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV2Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV2Prompt,\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 { LanguageModelV2FinishReason } from '@ai-sdk/provider';\nimport { BedrockStopReason } from './bedrock-api-types';\n\nexport function mapBedrockFinishReason(\n finishReason?: BedrockStopReason,\n): LanguageModelV2FinishReason {\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 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import {\n EmbeddingModelV2,\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';\n\ntype BedrockEmbeddingConfig = {\n baseUrl: () => string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>;\n\nexport class BedrockEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\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<\n EmbeddingModelV2<string>['doEmbed']\n >[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 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';\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 { ImageModelV2, ImageModelV2CallWarning } 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 BedrockImageSettings,\n modelMaxImagesPerCall,\n} from './bedrock-image-settings';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { z } from 'zod';\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 ImageModelV2 {\n readonly specificationVersion = 'v2';\n readonly provider = 'amazon-bedrock';\n\n get maxImagesPerCall(): number {\n return (\n this.settings.maxImagesPerCall ?? modelMaxImagesPerCall[this.modelId] ?? 1\n );\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 settings: BedrockImageSettings,\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<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\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 },\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-setting',\n setting: '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\nexport interface BedrockImageSettings {\n /**\n * Override the maximum number of images per call (default is dependent on the\n * model, or 1 for an unknown model).\n */\n maxImagesPerCall?: number;\n}\n","/**\n * Extract headers from a `HeadersInit` object and convert them to a record of\n * lowercase keys and (preserving original case) values.\n * @param headers - The `HeadersInit` object to extract headers from.\n * @returns A record of lowercase keys and (preserving original case) values.\n */\nexport function extractHeaders(\n headers: HeadersInit | undefined,\n): Record<string, string | undefined> {\n let originalHeaders: Record<string, string | undefined> = {};\n if (headers) {\n if (headers instanceof Headers) {\n originalHeaders = convertHeadersToRecord(headers);\n } else if (Array.isArray(headers)) {\n for (const [k, v] of headers) {\n originalHeaders[k.toLowerCase()] = v;\n }\n } else {\n originalHeaders = Object.fromEntries(\n Object.entries(headers).map(([k, v]) => [k.toLowerCase(), v]),\n ) as Record<string, string>;\n }\n }\n return originalHeaders;\n}\n\n/**\n * Convert a Headers object to a record of lowercase keys and (preserving\n * original case) values.\n * @param headers - The Headers object to convert.\n * @returns A record of lowercase keys and values.\n */\nexport function convertHeadersToRecord(\n headers: Headers,\n): Record<string, string> {\n const record: Record<string, string> = {};\n headers.forEach((value, key) => {\n record[key.toLowerCase()] = value;\n });\n return record;\n}\n","import { convertHeadersToRecord, extractHeaders } from './headers-utils';\nimport {\n FetchFunction,\n combineHeaders,\n removeUndefinedEntries,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\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 if (init?.method?.toUpperCase() !== 'POST' || !init?.body) {\n return fetch(input, init);\n }\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const originalHeaders = extractHeaders(init.headers);\n const body = prepareBodyString(init.body);\n const credentials = await getCredentials();\n const signer = new AwsV4Signer({\n url,\n method: 'POST',\n headers: Object.entries(removeUndefinedEntries(originalHeaders)),\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 = convertHeadersToRecord(signingResult.headers);\n return fetch(input, {\n ...init,\n body,\n headers: removeUndefinedEntries(\n combineHeaders(originalHeaders, signedHeaders),\n ),\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"],"mappings":"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","names":["parseProviderOptions","z","z","UnsupportedFunctionalityError","UnsupportedFunctionalityError","i","part","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"]}
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/headers-utils.ts","../src/bedrock-sigv4-fetch.ts"],"sourcesContent":["import {\n EmbeddingModelV2,\n ImageModelV2,\n LanguageModelV2,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadOptionalSetting,\n loadSetting,\n withoutTrailingSlash,\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 createSigV4FetchFunction,\n} from './bedrock-sigv4-fetch';\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 /**\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 ProviderV2 {\n (modelId: BedrockChatModelId): LanguageModelV2;\n\n languageModel(modelId: BedrockChatModelId): LanguageModelV2;\n\n embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV2<string>;\n\n /**\nCreates a model for image generation.\n@deprecated Use `imageModel` instead.\n */\n image(modelId: BedrockImageModelId): ImageModelV2;\n\n /**\nCreates a model for image generation.\n */\n imageModel(modelId: BedrockImageModelId): ImageModelV2;\n}\n\n/**\nCreate an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n const sigv4Fetch = createSigV4FetchFunction(async () => {\n const region = loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n });\n // If a credential provider is provided, use it to get the credentials.\n if (options.credentialProvider) {\n return {\n ...(await options.credentialProvider()),\n region,\n };\n }\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 }, options.fetch);\n\n const getBaseUrl = (): 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 createChatModel = (modelId: BedrockChatModelId) =>\n new BedrockChatLanguageModel(modelId, {\n baseUrl: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\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: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\n });\n\n const createImageModel = (modelId: BedrockImageModelId) =>\n new BedrockImageModel(modelId, {\n baseUrl: getBaseUrl,\n headers: options.headers ?? {},\n fetch: sigv4Fetch,\n });\n\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n JSONObject,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Reasoning,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\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';\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 LanguageModelV2 {\n readonly specificationVersion = 'v2';\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<LanguageModelV2['doGenerate']>[0]): Promise<{\n command: BedrockConverseInput;\n warnings: LanguageModelV2CallWarning[];\n }> {\n // Parse provider options\n const bedrockOptions =\n (await parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockProviderOptions,\n })) ?? {};\n\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { system, messages } = await convertToBedrockChatMessages(prompt);\n\n const isThinking = bedrockOptions.reasoningConfig?.type === 'enabled';\n const thinkingBudget = bedrockOptions.reasoningConfig?.budgetTokens;\n\n const inferenceConfig = {\n ...(maxOutputTokens != null && { maxOutputTokens }),\n ...(temperature != null && { temperature }),\n ...(topP != null && { topP }),\n ...(stopSequences != null && { stopSequences }),\n };\n\n // Adjust maxOutputTokens if thinking is enabled\n if (isThinking && thinkingBudget != null) {\n if (inferenceConfig.maxOutputTokens != null) {\n inferenceConfig.maxOutputTokens += thinkingBudget;\n } else {\n inferenceConfig.maxOutputTokens = thinkingBudget + 4096; // Default + thinking budget maxOutputTokens = 4096, TODO update default in v5\n }\n // Add them to additional model request fields\n // Add reasoning config to additionalModelRequestFields\n bedrockOptions.additionalModelRequestFields = {\n ...bedrockOptions.additionalModelRequestFields,\n reasoningConfig: {\n type: bedrockOptions.reasoningConfig?.type,\n budget_tokens: thinkingBudget,\n },\n };\n }\n\n // Remove temperature if thinking is enabled\n if (isThinking && inferenceConfig.temperature != null) {\n delete inferenceConfig.temperature;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported when thinking is enabled',\n });\n }\n\n // Remove topP if thinking is enabled\n if (isThinking && inferenceConfig.topP != null) {\n delete inferenceConfig.topP;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported when thinking is enabled',\n });\n }\n\n const { toolConfig, toolWarnings } = prepareTools({ tools, toolChoice });\n return {\n command: {\n system,\n messages,\n additionalModelRequestFields:\n bedrockOptions.additionalModelRequestFields,\n ...(Object.keys(inferenceConfig).length > 0 && {\n inferenceConfig,\n }),\n ...providerOptions?.bedrock,\n ...(toolConfig.tools?.length ? { toolConfig } : {}),\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // no supported urls for bedrock\n };\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { command: args, warnings } = await this.getArgs(options);\n\n const url = `${this.getUrl(this.modelId)}/converse`;\n const { value: response, responseHeaders } = await postJsonToApi({\n url,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\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<LanguageModelV2Content> = [];\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: LanguageModelV2Reasoning = {\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 content.push({\n type: 'tool-call' as const,\n toolCallType: 'function',\n toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\n toolName: part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n args: JSON.stringify(part.toolUse?.input ?? ''),\n });\n }\n }\n\n // provider metadata:\n const providerMetadata =\n response.trace || response.usage\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 },\n }\n : undefined;\n\n return {\n content,\n finishReason: mapBedrockFinishReason(\n response.stopReason as BedrockStopReason,\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<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { command: args, warnings } = 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: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\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: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let providerMetadata: SharedV2ProviderMetadata | undefined = undefined;\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof BedrockStreamSchema>>,\n LanguageModelV2StreamPart\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 // 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 );\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.contentBlockDelta?.delta &&\n 'text' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.text\n ) {\n controller.enqueue({\n type: 'text',\n text: value.contentBlockDelta.delta.text,\n });\n }\n\n if (\n value.contentBlockDelta?.delta &&\n 'reasoningContent' in value.contentBlockDelta.delta &&\n value.contentBlockDelta.delta.reasoningContent\n ) {\n const reasoningContent =\n value.contentBlockDelta.delta.reasoningContent;\n if ('text' in reasoningContent && reasoningContent.text) {\n controller.enqueue({\n type: 'reasoning',\n text: reasoningContent.text,\n });\n } else if (\n 'signature' in reasoningContent &&\n reasoningContent.signature\n ) {\n controller.enqueue({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n bedrock: {\n signature: reasoningContent.signature,\n } satisfies BedrockReasoningMetadata,\n },\n });\n controller.enqueue({ type: 'reasoning-part-finish' });\n } else if ('data' in reasoningContent && reasoningContent.data) {\n controller.enqueue({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n bedrock: {\n redactedData: reasoningContent.data,\n } satisfies BedrockReasoningMetadata,\n },\n });\n controller.enqueue({ type: 'reasoning-part-finish' });\n }\n }\n\n const contentBlockStart = value.contentBlockStart;\n if (contentBlockStart?.start?.toolUse != null) {\n const toolUse = contentBlockStart.start.toolUse;\n toolCallContentBlocks[contentBlockStart.contentBlockIndex!] = {\n toolCallId: toolUse.toolUseId!,\n toolName: toolUse.name!,\n jsonText: '',\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 contentBlock =\n toolCallContentBlocks[contentBlockDelta.contentBlockIndex!];\n const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: delta,\n });\n\n contentBlock.jsonText += delta;\n }\n\n const contentBlockStop = value.contentBlockStop;\n if (contentBlockStop != null) {\n const index = contentBlockStop.contentBlockIndex!;\n const contentBlock = toolCallContentBlocks[index];\n\n // when finishing a tool call block, send the full tool call:\n if (contentBlock != null) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[index];\n }\n }\n },\n flush(controller) {\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.unknown()).nullish(),\n messageStop: z\n .object({\n additionalModelResponseFields: z.record(z.unknown()).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.unknown()).nullish(),\n throttlingException: z.record(z.unknown()).nullish(),\n validationException: z.record(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 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\nexport type BedrockImageFormat = 'jpeg' | 'png' | 'gif';\nexport type BedrockDocumentFormat = 'pdf' | 'txt' | 'md';\n\nexport interface BedrockDocumentBlock {\n document: {\n format: BedrockDocumentFormat;\n name: string;\n source: {\n bytes: string;\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';\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-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 | 'amazon.titan-text-express-v1'\n | 'amazon.titan-text-lite-v1'\n | (string & {});\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.any()).optional(),\n reasoningConfig: z\n .object({\n type: z.union([z.literal('enabled'), z.literal('disabled')]).optional(),\n budgetTokens: z.number().optional(),\n })\n .optional(),\n});\n\nexport type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;\n","import { z } from 'zod';\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 { ZodSchema } from 'zod';\n\n// https://docs.aws.amazon.com/lexv2/latest/dg/event-stream-encoding.html\nexport const createBedrockEventStreamResponseHandler =\n <T>(\n chunkSchema: ZodSchema<T>,\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({\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 LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { BedrockTool, BedrockToolConfiguration } from './bedrock-api-types';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n toolConfig: BedrockToolConfiguration; // note: do not rename, name required by Bedrock\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n if (tools == null) {\n return {\n toolConfig: { tools: undefined, toolChoice: undefined },\n toolWarnings: [],\n };\n }\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n const bedrockTools: BedrockTool[] = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n bedrockTools.push({\n toolSpec: {\n name: tool.name,\n description: tool.description,\n inputSchema: {\n json: tool.parameters as JSONObject,\n },\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return {\n toolConfig: { tools: bedrockTools, toolChoice: undefined },\n toolWarnings,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return {\n toolConfig: { tools: bedrockTools, toolChoice: { auto: {} } },\n toolWarnings,\n };\n case 'required':\n return {\n toolConfig: { tools: bedrockTools, toolChoice: { any: {} } },\n toolWarnings,\n };\n case 'none':\n // Bedrock does not support 'none' tool choice, so we remove the tools:\n return {\n toolConfig: { tools: undefined, toolChoice: undefined },\n toolWarnings,\n };\n case 'tool':\n return {\n toolConfig: {\n tools: bedrockTools,\n toolChoice: { tool: { name: toolChoice.toolName } },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n JSONObject,\n LanguageModelV2Message,\n LanguageModelV2Prompt,\n SharedV2ProviderMetadata,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n createIdGenerator,\n parseProviderOptions,\n} from '@ai-sdk/provider-utils';\nimport {\n BEDROCK_CACHE_POINT,\n BedrockAssistantMessage,\n BedrockCachePoint,\n BedrockDocumentFormat,\n BedrockImageFormat,\n BedrockMessages,\n BedrockSystemMessages,\n BedrockUserMessage,\n} from './bedrock-api-types';\nimport { bedrockReasoningMetadataSchema } from './bedrock-chat-language-model';\n\nconst generateFileId = createIdGenerator({ prefix: 'file', size: 16 });\n\nfunction getCachePoint(\n providerMetadata: SharedV2ProviderMetadata | undefined,\n): BedrockCachePoint | undefined {\n return providerMetadata?.bedrock?.cachePoint as BedrockCachePoint | undefined;\n}\n\nexport async function convertToBedrockChatMessages(\n prompt: LanguageModelV2Prompt,\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 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 const bedrockImageFormat =\n part.mediaType === 'image/*'\n ? undefined\n : part.mediaType?.split('/')?.[1];\n\n bedrockContent.push({\n image: {\n format: bedrockImageFormat as BedrockImageFormat,\n source: { bytes: convertToBase64(part.data) },\n },\n });\n } else {\n bedrockContent.push({\n document: {\n format: part.mediaType?.split(\n '/',\n )?.[1] as BedrockDocumentFormat,\n name: generateFileId(),\n source: { bytes: convertToBase64(part.data) },\n },\n });\n }\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (let i = 0; i < content.length; i++) {\n const part = content[i];\n const toolResultContent =\n part.content != undefined\n ? part.content.map(part => {\n switch (part.type) {\n case 'text':\n return {\n text: part.text,\n };\n case 'image':\n if (!part.mediaType) {\n throw new Error(\n 'Image mime type is required in tool result part content',\n );\n }\n const format = part.mediaType.split('/')[1];\n if (!isBedrockImageFormat(format)) {\n throw new Error(\n `Unsupported image format: ${format}`,\n );\n }\n return {\n image: {\n format,\n source: {\n bytes: part.data,\n },\n },\n };\n }\n })\n : [{ text: JSON.stringify(part.result) }];\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 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.args 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 ['jpeg', 'png', 'gif'].includes(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<LanguageModelV2Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV2Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV2Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV2Prompt,\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 { LanguageModelV2FinishReason } from '@ai-sdk/provider';\nimport { BedrockStopReason } from './bedrock-api-types';\n\nexport function mapBedrockFinishReason(\n finishReason?: BedrockStopReason,\n): LanguageModelV2FinishReason {\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 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import {\n EmbeddingModelV2,\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';\n\ntype BedrockEmbeddingConfig = {\n baseUrl: () => string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>;\n\nexport class BedrockEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\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<\n EmbeddingModelV2<string>['doEmbed']\n >[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 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';\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 { ImageModelV2, ImageModelV2CallWarning } 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';\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 ImageModelV2 {\n readonly specificationVersion = 'v2';\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<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\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 },\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-setting',\n setting: '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","/**\n * Extract headers from a `HeadersInit` object and convert them to a record of\n * lowercase keys and (preserving original case) values.\n * @param headers - The `HeadersInit` object to extract headers from.\n * @returns A record of lowercase keys and (preserving original case) values.\n */\nexport function extractHeaders(\n headers: HeadersInit | undefined,\n): Record<string, string | undefined> {\n let originalHeaders: Record<string, string | undefined> = {};\n if (headers) {\n if (headers instanceof Headers) {\n originalHeaders = convertHeadersToRecord(headers);\n } else if (Array.isArray(headers)) {\n for (const [k, v] of headers) {\n originalHeaders[k.toLowerCase()] = v;\n }\n } else {\n originalHeaders = Object.fromEntries(\n Object.entries(headers).map(([k, v]) => [k.toLowerCase(), v]),\n ) as Record<string, string>;\n }\n }\n return originalHeaders;\n}\n\n/**\n * Convert a Headers object to a record of lowercase keys and (preserving\n * original case) values.\n * @param headers - The Headers object to convert.\n * @returns A record of lowercase keys and values.\n */\nexport function convertHeadersToRecord(\n headers: Headers,\n): Record<string, string> {\n const record: Record<string, string> = {};\n headers.forEach((value, key) => {\n record[key.toLowerCase()] = value;\n });\n return record;\n}\n","import { convertHeadersToRecord, extractHeaders } from './headers-utils';\nimport {\n FetchFunction,\n combineHeaders,\n removeUndefinedEntries,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\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 if (init?.method?.toUpperCase() !== 'POST' || !init?.body) {\n return fetch(input, init);\n }\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const originalHeaders = extractHeaders(init.headers);\n const body = prepareBodyString(init.body);\n const credentials = await getCredentials();\n const signer = new AwsV4Signer({\n url,\n method: 'POST',\n headers: Object.entries(removeUndefinedEntries(originalHeaders)),\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 = convertHeadersToRecord(signingResult.headers);\n return fetch(input, {\n ...init,\n body,\n headers: removeUndefinedEntries(\n combineHeaders(originalHeaders, signedHeaders),\n ),\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"],"mappings":"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","names":["parseProviderOptions","z","z","UnsupportedFunctionalityError","UnsupportedFunctionalityError","i","part","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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/amazon-bedrock",
3
- "version": "3.0.0-canary.16",
3
+ "version": "3.0.0-canary.18",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -23,7 +23,7 @@
23
23
  "@smithy/util-utf8": "^4.0.0",
24
24
  "aws4fetch": "^1.0.20",
25
25
  "@ai-sdk/provider": "2.0.0-canary.14",
26
- "@ai-sdk/provider-utils": "3.0.0-canary.16"
26
+ "@ai-sdk/provider-utils": "3.0.0-canary.18"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/node": "20.17.24",