@ai-sdk/amazon-bedrock 3.0.0-canary.8 → 3.0.0-canary.9
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 +10 -0
- package/dist/index.d.mts +1 -13
- package/dist/index.d.ts +1 -13
- package/dist/index.js +41 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +42 -15
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @ai-sdk/amazon-bedrock
|
|
2
2
|
|
|
3
|
+
## 3.0.0-canary.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 92c0b4b: chore(providers/bedrock): update embedding model to use providerOptions
|
|
8
|
+
- Updated dependencies [95857aa]
|
|
9
|
+
- Updated dependencies [7ea4132]
|
|
10
|
+
- @ai-sdk/provider@2.0.0-canary.8
|
|
11
|
+
- @ai-sdk/provider-utils@3.0.0-canary.9
|
|
12
|
+
|
|
3
13
|
## 3.0.0-canary.8
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -36,18 +36,6 @@ declare const bedrockProviderOptions: z.ZodObject<{
|
|
|
36
36
|
type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;
|
|
37
37
|
|
|
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
|
-
interface BedrockEmbeddingSettings {
|
|
40
|
-
/**
|
|
41
|
-
The number of dimensions the resulting output embeddings should have (defaults to 1024).
|
|
42
|
-
Only supported in amazon.titan-embed-text-v2:0.
|
|
43
|
-
*/
|
|
44
|
-
dimensions?: 1024 | 512 | 256;
|
|
45
|
-
/**
|
|
46
|
-
Flag indicating whether or not to normalize the output embeddings. Defaults to true
|
|
47
|
-
Only supported in amazon.titan-embed-text-v2:0.
|
|
48
|
-
*/
|
|
49
|
-
normalize?: boolean;
|
|
50
|
-
}
|
|
51
39
|
|
|
52
40
|
type BedrockImageModelId = 'amazon.nova-canvas-v1:0' | (string & {});
|
|
53
41
|
interface BedrockImageSettings {
|
|
@@ -111,7 +99,7 @@ interface AmazonBedrockProviderSettings {
|
|
|
111
99
|
interface AmazonBedrockProvider extends ProviderV2 {
|
|
112
100
|
(modelId: BedrockChatModelId): LanguageModelV2;
|
|
113
101
|
languageModel(modelId: BedrockChatModelId): LanguageModelV2;
|
|
114
|
-
embedding(modelId: BedrockEmbeddingModelId
|
|
102
|
+
embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV2<string>;
|
|
115
103
|
image(modelId: BedrockImageModelId, settings?: BedrockImageSettings): ImageModelV1;
|
|
116
104
|
imageModel(modelId: BedrockImageModelId, settings?: BedrockImageSettings): ImageModelV1;
|
|
117
105
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -36,18 +36,6 @@ declare const bedrockProviderOptions: z.ZodObject<{
|
|
|
36
36
|
type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;
|
|
37
37
|
|
|
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
|
-
interface BedrockEmbeddingSettings {
|
|
40
|
-
/**
|
|
41
|
-
The number of dimensions the resulting output embeddings should have (defaults to 1024).
|
|
42
|
-
Only supported in amazon.titan-embed-text-v2:0.
|
|
43
|
-
*/
|
|
44
|
-
dimensions?: 1024 | 512 | 256;
|
|
45
|
-
/**
|
|
46
|
-
Flag indicating whether or not to normalize the output embeddings. Defaults to true
|
|
47
|
-
Only supported in amazon.titan-embed-text-v2:0.
|
|
48
|
-
*/
|
|
49
|
-
normalize?: boolean;
|
|
50
|
-
}
|
|
51
39
|
|
|
52
40
|
type BedrockImageModelId = 'amazon.nova-canvas-v1:0' | (string & {});
|
|
53
41
|
interface BedrockImageSettings {
|
|
@@ -111,7 +99,7 @@ interface AmazonBedrockProviderSettings {
|
|
|
111
99
|
interface AmazonBedrockProvider extends ProviderV2 {
|
|
112
100
|
(modelId: BedrockChatModelId): LanguageModelV2;
|
|
113
101
|
languageModel(modelId: BedrockChatModelId): LanguageModelV2;
|
|
114
|
-
embedding(modelId: BedrockEmbeddingModelId
|
|
102
|
+
embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV2<string>;
|
|
115
103
|
image(modelId: BedrockImageModelId, settings?: BedrockImageSettings): ImageModelV1;
|
|
116
104
|
imageModel(modelId: BedrockImageModelId, settings?: BedrockImageSettings): ImageModelV1;
|
|
117
105
|
}
|
package/dist/index.js
CHANGED
|
@@ -502,8 +502,6 @@ var BedrockChatLanguageModel = class {
|
|
|
502
502
|
this.config = config;
|
|
503
503
|
this.specificationVersion = "v2";
|
|
504
504
|
this.provider = "amazon-bedrock";
|
|
505
|
-
this.defaultObjectGenerationMode = "tool";
|
|
506
|
-
this.supportsImageUrls = false;
|
|
507
505
|
}
|
|
508
506
|
getArgs({
|
|
509
507
|
prompt,
|
|
@@ -612,6 +610,11 @@ var BedrockChatLanguageModel = class {
|
|
|
612
610
|
warnings: [...warnings, ...toolWarnings]
|
|
613
611
|
};
|
|
614
612
|
}
|
|
613
|
+
async getSupportedUrls() {
|
|
614
|
+
return {
|
|
615
|
+
// no supported urls for bedrock
|
|
616
|
+
};
|
|
617
|
+
}
|
|
615
618
|
async doGenerate(options) {
|
|
616
619
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
|
|
617
620
|
const { command: args, warnings } = this.getArgs(options);
|
|
@@ -968,11 +971,27 @@ var BedrockStreamSchema = import_zod3.z.object({
|
|
|
968
971
|
|
|
969
972
|
// src/bedrock-embedding-model.ts
|
|
970
973
|
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
974
|
+
|
|
975
|
+
// src/bedrock-embedding-options.ts
|
|
971
976
|
var import_zod4 = require("zod");
|
|
977
|
+
var bedrockEmbeddingProviderOptions = import_zod4.z.object({
|
|
978
|
+
/**
|
|
979
|
+
The number of dimensions the resulting output embeddings should have (defaults to 1024).
|
|
980
|
+
Only supported in amazon.titan-embed-text-v2:0.
|
|
981
|
+
*/
|
|
982
|
+
dimensions: import_zod4.z.union([import_zod4.z.literal(1024), import_zod4.z.literal(512), import_zod4.z.literal(256)]).optional(),
|
|
983
|
+
/**
|
|
984
|
+
Flag indicating whether or not to normalize the output embeddings. Defaults to true
|
|
985
|
+
Only supported in amazon.titan-embed-text-v2:0.
|
|
986
|
+
*/
|
|
987
|
+
normalize: import_zod4.z.boolean().optional()
|
|
988
|
+
});
|
|
989
|
+
|
|
990
|
+
// src/bedrock-embedding-model.ts
|
|
991
|
+
var import_zod5 = require("zod");
|
|
972
992
|
var BedrockEmbeddingModel = class {
|
|
973
|
-
constructor(modelId,
|
|
993
|
+
constructor(modelId, config) {
|
|
974
994
|
this.modelId = modelId;
|
|
975
|
-
this.settings = settings;
|
|
976
995
|
this.config = config;
|
|
977
996
|
this.specificationVersion = "v2";
|
|
978
997
|
this.provider = "amazon-bedrock";
|
|
@@ -986,13 +1005,20 @@ var BedrockEmbeddingModel = class {
|
|
|
986
1005
|
async doEmbed({
|
|
987
1006
|
values,
|
|
988
1007
|
headers,
|
|
989
|
-
abortSignal
|
|
1008
|
+
abortSignal,
|
|
1009
|
+
providerOptions
|
|
990
1010
|
}) {
|
|
1011
|
+
var _a;
|
|
1012
|
+
const bedrockOptions = (_a = (0, import_provider_utils4.parseProviderOptions)({
|
|
1013
|
+
provider: "bedrock",
|
|
1014
|
+
providerOptions,
|
|
1015
|
+
schema: bedrockEmbeddingProviderOptions
|
|
1016
|
+
})) != null ? _a : {};
|
|
991
1017
|
const embedSingleText = async (inputText) => {
|
|
992
1018
|
const args = {
|
|
993
1019
|
inputText,
|
|
994
|
-
dimensions:
|
|
995
|
-
normalize:
|
|
1020
|
+
dimensions: bedrockOptions.dimensions,
|
|
1021
|
+
normalize: bedrockOptions.normalize
|
|
996
1022
|
};
|
|
997
1023
|
const url = this.getUrl(this.modelId);
|
|
998
1024
|
const { value: response } = await (0, import_provider_utils4.postJsonToApi)({
|
|
@@ -1027,9 +1053,9 @@ var BedrockEmbeddingModel = class {
|
|
|
1027
1053
|
);
|
|
1028
1054
|
}
|
|
1029
1055
|
};
|
|
1030
|
-
var BedrockEmbeddingResponseSchema =
|
|
1031
|
-
embedding:
|
|
1032
|
-
inputTextTokenCount:
|
|
1056
|
+
var BedrockEmbeddingResponseSchema = import_zod5.z.object({
|
|
1057
|
+
embedding: import_zod5.z.array(import_zod5.z.number()),
|
|
1058
|
+
inputTextTokenCount: import_zod5.z.number()
|
|
1033
1059
|
});
|
|
1034
1060
|
|
|
1035
1061
|
// src/bedrock-image-model.ts
|
|
@@ -1041,7 +1067,7 @@ var modelMaxImagesPerCall = {
|
|
|
1041
1067
|
};
|
|
1042
1068
|
|
|
1043
1069
|
// src/bedrock-image-model.ts
|
|
1044
|
-
var
|
|
1070
|
+
var import_zod6 = require("zod");
|
|
1045
1071
|
var BedrockImageModel = class {
|
|
1046
1072
|
constructor(modelId, settings, config) {
|
|
1047
1073
|
this.modelId = modelId;
|
|
@@ -1123,8 +1149,8 @@ var BedrockImageModel = class {
|
|
|
1123
1149
|
};
|
|
1124
1150
|
}
|
|
1125
1151
|
};
|
|
1126
|
-
var bedrockImageResponseSchema =
|
|
1127
|
-
images:
|
|
1152
|
+
var bedrockImageResponseSchema = import_zod6.z.object({
|
|
1153
|
+
images: import_zod6.z.array(import_zod6.z.string())
|
|
1128
1154
|
});
|
|
1129
1155
|
|
|
1130
1156
|
// src/headers-utils.ts
|
|
@@ -1263,9 +1289,9 @@ function createAmazonBedrock(options = {}) {
|
|
|
1263
1289
|
}
|
|
1264
1290
|
return createChatModel(modelId);
|
|
1265
1291
|
};
|
|
1266
|
-
const createEmbeddingModel = (modelId
|
|
1292
|
+
const createEmbeddingModel = (modelId) => {
|
|
1267
1293
|
var _a;
|
|
1268
|
-
return new BedrockEmbeddingModel(modelId,
|
|
1294
|
+
return new BedrockEmbeddingModel(modelId, {
|
|
1269
1295
|
baseUrl: getBaseUrl,
|
|
1270
1296
|
headers: (_a = options.headers) != null ? _a : {},
|
|
1271
1297
|
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-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 ImageModelV1,\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 {\n BedrockEmbeddingModelId,\n BedrockEmbeddingSettings,\n} from './bedrock-embedding-settings';\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(\n modelId: BedrockEmbeddingModelId,\n settings?: BedrockEmbeddingSettings,\n ): EmbeddingModelV2<string>;\n\n image(\n modelId: BedrockImageModelId,\n settings?: BedrockImageSettings,\n ): ImageModelV1;\n\n imageModel(\n modelId: BedrockImageModelId,\n settings?: BedrockImageSettings,\n ): ImageModelV1;\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 = (\n modelId: BedrockEmbeddingModelId,\n settings: BedrockEmbeddingSettings = {},\n ) =>\n new BedrockEmbeddingModel(modelId, settings, {\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 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 readonly defaultObjectGenerationMode = 'tool';\n readonly supportsImageUrls = false;\n\n constructor(\n readonly modelId: BedrockChatModelId,\n private readonly config: BedrockChatConfig,\n ) {}\n\n private 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]): {\n command: BedrockConverseInput;\n warnings: LanguageModelV2CallWarning[];\n } {\n // Parse provider options\n const bedrockOptions =\n 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 } = 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 async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { command: args, warnings } = 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 content.push({\n type: 'reasoning',\n reasoningType: 'text',\n text: part.reasoningContent.reasoningText.text,\n });\n if (part.reasoningContent.reasoningText.signature) {\n content.push({\n type: 'reasoning',\n reasoningType: 'signature',\n signature: part.reasoningContent.reasoningText.signature,\n });\n }\n } else if ('redactedReasoning' in part.reasoningContent) {\n content.push({\n type: 'reasoning',\n reasoningType: 'redacted',\n data: part.reasoningContent.redactedReasoning.data ?? '',\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 && {\n usage: {\n cacheReadInputTokens:\n response.usage?.cacheReadInputTokens ?? Number.NaN,\n cacheWriteInputTokens:\n response.usage?.cacheWriteInputTokens ?? Number.NaN,\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 },\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 } = 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 };\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\n const cacheUsage =\n value.metadata.usage?.cacheReadInputTokens != null ||\n value.metadata.usage?.cacheWriteInputTokens != null\n ? {\n usage: {\n cacheReadInputTokens:\n value.metadata.usage?.cacheReadInputTokens ??\n Number.NaN,\n cacheWriteInputTokens:\n value.metadata.usage?.cacheWriteInputTokens ??\n Number.NaN,\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 reasoningType: 'text',\n text: reasoningContent.text,\n });\n } else if (\n 'signature' in reasoningContent &&\n reasoningContent.signature\n ) {\n controller.enqueue({\n type: 'reasoning',\n reasoningType: 'signature',\n signature: reasoningContent.signature,\n });\n } else if ('data' in reasoningContent && reasoningContent.data) {\n controller.enqueue({\n type: 'reasoning',\n reasoningType: 'redacted',\n data: reasoningContent.data,\n });\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","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')]).nullish(),\n budgetTokens: z.number().nullish(),\n })\n .nullish(),\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 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 = 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 = 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 { convertToBase64, createIdGenerator } 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';\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 function convertToBedrockChatMessages(prompt: LanguageModelV2Prompt): {\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 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: part.signature,\n },\n },\n });\n break;\n }\n\n case 'redacted-reasoning': {\n bedrockContent.push({\n reasoningContent: {\n redactedReasoning: {\n data: part.data,\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 { EmbeddingModelV2, EmbeddingModelV2Embedding } 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 BedrockEmbeddingModelId,\n BedrockEmbeddingSettings,\n} from './bedrock-embedding-settings';\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 = undefined;\n readonly supportsParallelCalls = true;\n\n constructor(\n readonly modelId: BedrockEmbeddingModelId,\n private readonly settings: BedrockEmbeddingSettings,\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 }: Parameters<\n EmbeddingModelV2<string>['doEmbed']\n >[0]): Promise<DoEmbedResponse> {\n const embedSingleText = async (inputText: string) => {\n // https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html\n const args = {\n inputText,\n dimensions: this.settings.dimensions,\n normalize: this.settings.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 embedding: response.embedding,\n inputTextTokenCount: response.inputTextTokenCount,\n };\n };\n\n const responses = await Promise.all(values.map(embedSingleText));\n return responses.reduce<{\n embeddings: EmbeddingModelV2Embedding[];\n usage: { tokens: number };\n }>(\n (accumulated, response) => {\n accumulated.embeddings.push(response.embedding);\n accumulated.usage.tokens += response.inputTextTokenCount;\n return accumulated;\n },\n { embeddings: [], usage: { tokens: 0 } },\n );\n }\n}\n\nconst BedrockEmbeddingResponseSchema = z.object({\n embedding: z.array(z.number()),\n inputTextTokenCount: z.number(),\n});\n","import { ImageModelV1, ImageModelV1CallWarning } 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 ImageModelV1 {\n readonly specificationVersion = 'v1';\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<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\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_utils","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 ImageModelV1,\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 ): ImageModelV1;\n\n imageModel(\n modelId: BedrockImageModelId,\n settings?: BedrockImageSettings,\n ): ImageModelV1;\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 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 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]): {\n command: BedrockConverseInput;\n warnings: LanguageModelV2CallWarning[];\n } {\n // Parse provider options\n const bedrockOptions =\n 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 } = 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 async getSupportedUrls(): Promise<Record<string, RegExp[]>> {\n return {\n // no supported urls for bedrock\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { command: args, warnings } = 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 content.push({\n type: 'reasoning',\n reasoningType: 'text',\n text: part.reasoningContent.reasoningText.text,\n });\n if (part.reasoningContent.reasoningText.signature) {\n content.push({\n type: 'reasoning',\n reasoningType: 'signature',\n signature: part.reasoningContent.reasoningText.signature,\n });\n }\n } else if ('redactedReasoning' in part.reasoningContent) {\n content.push({\n type: 'reasoning',\n reasoningType: 'redacted',\n data: part.reasoningContent.redactedReasoning.data ?? '',\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 && {\n usage: {\n cacheReadInputTokens:\n response.usage?.cacheReadInputTokens ?? Number.NaN,\n cacheWriteInputTokens:\n response.usage?.cacheWriteInputTokens ?? Number.NaN,\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 },\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 } = 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 };\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\n const cacheUsage =\n value.metadata.usage?.cacheReadInputTokens != null ||\n value.metadata.usage?.cacheWriteInputTokens != null\n ? {\n usage: {\n cacheReadInputTokens:\n value.metadata.usage?.cacheReadInputTokens ??\n Number.NaN,\n cacheWriteInputTokens:\n value.metadata.usage?.cacheWriteInputTokens ??\n Number.NaN,\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 reasoningType: 'text',\n text: reasoningContent.text,\n });\n } else if (\n 'signature' in reasoningContent &&\n reasoningContent.signature\n ) {\n controller.enqueue({\n type: 'reasoning',\n reasoningType: 'signature',\n signature: reasoningContent.signature,\n });\n } else if ('data' in reasoningContent && reasoningContent.data) {\n controller.enqueue({\n type: 'reasoning',\n reasoningType: 'redacted',\n data: reasoningContent.data,\n });\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","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')]).nullish(),\n budgetTokens: z.number().nullish(),\n })\n .nullish(),\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 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 = 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 = 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 { convertToBase64, createIdGenerator } 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';\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 function convertToBedrockChatMessages(prompt: LanguageModelV2Prompt): {\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 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: part.signature,\n },\n },\n });\n break;\n }\n\n case 'redacted-reasoning': {\n bedrockContent.push({\n reasoningContent: {\n redactedReasoning: {\n data: part.data,\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 { EmbeddingModelV2, EmbeddingModelV2Embedding } 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 = undefined;\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 // Parse provider options\n const bedrockOptions =\n parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockEmbeddingProviderOptions,\n }) ?? {};\n\n const embedSingleText = async (inputText: string) => {\n // https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html\n const args = {\n inputText,\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 embedding: response.embedding,\n inputTextTokenCount: response.inputTextTokenCount,\n };\n };\n\n const responses = await Promise.all(values.map(embedSingleText));\n return responses.reduce<{\n embeddings: EmbeddingModelV2Embedding[];\n usage: { tokens: number };\n }>(\n (accumulated, response) => {\n accumulated.embeddings.push(response.embedding);\n accumulated.usage.tokens += response.inputTextTokenCount;\n return accumulated;\n },\n { embeddings: [], usage: { tokens: 0 } },\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 { ImageModelV1, ImageModelV1CallWarning } 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 ImageModelV1 {\n readonly specificationVersion = 'v1';\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<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\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_utils","import_zod","import_zod","import_provider_utils","import_zod","import_provider_utils"]}
|
package/dist/index.mjs
CHANGED
|
@@ -495,8 +495,6 @@ var BedrockChatLanguageModel = class {
|
|
|
495
495
|
this.config = config;
|
|
496
496
|
this.specificationVersion = "v2";
|
|
497
497
|
this.provider = "amazon-bedrock";
|
|
498
|
-
this.defaultObjectGenerationMode = "tool";
|
|
499
|
-
this.supportsImageUrls = false;
|
|
500
498
|
}
|
|
501
499
|
getArgs({
|
|
502
500
|
prompt,
|
|
@@ -605,6 +603,11 @@ var BedrockChatLanguageModel = class {
|
|
|
605
603
|
warnings: [...warnings, ...toolWarnings]
|
|
606
604
|
};
|
|
607
605
|
}
|
|
606
|
+
async getSupportedUrls() {
|
|
607
|
+
return {
|
|
608
|
+
// no supported urls for bedrock
|
|
609
|
+
};
|
|
610
|
+
}
|
|
608
611
|
async doGenerate(options) {
|
|
609
612
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
|
|
610
613
|
const { command: args, warnings } = this.getArgs(options);
|
|
@@ -964,14 +967,31 @@ import {
|
|
|
964
967
|
combineHeaders as combineHeaders2,
|
|
965
968
|
createJsonErrorResponseHandler as createJsonErrorResponseHandler2,
|
|
966
969
|
createJsonResponseHandler as createJsonResponseHandler2,
|
|
970
|
+
parseProviderOptions as parseProviderOptions2,
|
|
967
971
|
postJsonToApi as postJsonToApi2,
|
|
968
972
|
resolve as resolve2
|
|
969
973
|
} from "@ai-sdk/provider-utils";
|
|
974
|
+
|
|
975
|
+
// src/bedrock-embedding-options.ts
|
|
970
976
|
import { z as z4 } from "zod";
|
|
977
|
+
var bedrockEmbeddingProviderOptions = z4.object({
|
|
978
|
+
/**
|
|
979
|
+
The number of dimensions the resulting output embeddings should have (defaults to 1024).
|
|
980
|
+
Only supported in amazon.titan-embed-text-v2:0.
|
|
981
|
+
*/
|
|
982
|
+
dimensions: z4.union([z4.literal(1024), z4.literal(512), z4.literal(256)]).optional(),
|
|
983
|
+
/**
|
|
984
|
+
Flag indicating whether or not to normalize the output embeddings. Defaults to true
|
|
985
|
+
Only supported in amazon.titan-embed-text-v2:0.
|
|
986
|
+
*/
|
|
987
|
+
normalize: z4.boolean().optional()
|
|
988
|
+
});
|
|
989
|
+
|
|
990
|
+
// src/bedrock-embedding-model.ts
|
|
991
|
+
import { z as z5 } from "zod";
|
|
971
992
|
var BedrockEmbeddingModel = class {
|
|
972
|
-
constructor(modelId,
|
|
993
|
+
constructor(modelId, config) {
|
|
973
994
|
this.modelId = modelId;
|
|
974
|
-
this.settings = settings;
|
|
975
995
|
this.config = config;
|
|
976
996
|
this.specificationVersion = "v2";
|
|
977
997
|
this.provider = "amazon-bedrock";
|
|
@@ -985,13 +1005,20 @@ var BedrockEmbeddingModel = class {
|
|
|
985
1005
|
async doEmbed({
|
|
986
1006
|
values,
|
|
987
1007
|
headers,
|
|
988
|
-
abortSignal
|
|
1008
|
+
abortSignal,
|
|
1009
|
+
providerOptions
|
|
989
1010
|
}) {
|
|
1011
|
+
var _a;
|
|
1012
|
+
const bedrockOptions = (_a = parseProviderOptions2({
|
|
1013
|
+
provider: "bedrock",
|
|
1014
|
+
providerOptions,
|
|
1015
|
+
schema: bedrockEmbeddingProviderOptions
|
|
1016
|
+
})) != null ? _a : {};
|
|
990
1017
|
const embedSingleText = async (inputText) => {
|
|
991
1018
|
const args = {
|
|
992
1019
|
inputText,
|
|
993
|
-
dimensions:
|
|
994
|
-
normalize:
|
|
1020
|
+
dimensions: bedrockOptions.dimensions,
|
|
1021
|
+
normalize: bedrockOptions.normalize
|
|
995
1022
|
};
|
|
996
1023
|
const url = this.getUrl(this.modelId);
|
|
997
1024
|
const { value: response } = await postJsonToApi2({
|
|
@@ -1026,9 +1053,9 @@ var BedrockEmbeddingModel = class {
|
|
|
1026
1053
|
);
|
|
1027
1054
|
}
|
|
1028
1055
|
};
|
|
1029
|
-
var BedrockEmbeddingResponseSchema =
|
|
1030
|
-
embedding:
|
|
1031
|
-
inputTextTokenCount:
|
|
1056
|
+
var BedrockEmbeddingResponseSchema = z5.object({
|
|
1057
|
+
embedding: z5.array(z5.number()),
|
|
1058
|
+
inputTextTokenCount: z5.number()
|
|
1032
1059
|
});
|
|
1033
1060
|
|
|
1034
1061
|
// src/bedrock-image-model.ts
|
|
@@ -1046,7 +1073,7 @@ var modelMaxImagesPerCall = {
|
|
|
1046
1073
|
};
|
|
1047
1074
|
|
|
1048
1075
|
// src/bedrock-image-model.ts
|
|
1049
|
-
import { z as
|
|
1076
|
+
import { z as z6 } from "zod";
|
|
1050
1077
|
var BedrockImageModel = class {
|
|
1051
1078
|
constructor(modelId, settings, config) {
|
|
1052
1079
|
this.modelId = modelId;
|
|
@@ -1128,8 +1155,8 @@ var BedrockImageModel = class {
|
|
|
1128
1155
|
};
|
|
1129
1156
|
}
|
|
1130
1157
|
};
|
|
1131
|
-
var bedrockImageResponseSchema =
|
|
1132
|
-
images:
|
|
1158
|
+
var bedrockImageResponseSchema = z6.object({
|
|
1159
|
+
images: z6.array(z6.string())
|
|
1133
1160
|
});
|
|
1134
1161
|
|
|
1135
1162
|
// src/headers-utils.ts
|
|
@@ -1271,9 +1298,9 @@ function createAmazonBedrock(options = {}) {
|
|
|
1271
1298
|
}
|
|
1272
1299
|
return createChatModel(modelId);
|
|
1273
1300
|
};
|
|
1274
|
-
const createEmbeddingModel = (modelId
|
|
1301
|
+
const createEmbeddingModel = (modelId) => {
|
|
1275
1302
|
var _a;
|
|
1276
|
-
return new BedrockEmbeddingModel(modelId,
|
|
1303
|
+
return new BedrockEmbeddingModel(modelId, {
|
|
1277
1304
|
baseUrl: getBaseUrl,
|
|
1278
1305
|
headers: (_a = options.headers) != null ? _a : {},
|
|
1279
1306
|
fetch: sigv4Fetch
|
package/dist/index.mjs.map
CHANGED
|
@@ -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-image-model.ts","../src/bedrock-image-settings.ts","../src/headers-utils.ts","../src/bedrock-sigv4-fetch.ts"],"sourcesContent":["import {\n EmbeddingModelV2,\n ImageModelV1,\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 {\n BedrockEmbeddingModelId,\n BedrockEmbeddingSettings,\n} from './bedrock-embedding-settings';\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(\n modelId: BedrockEmbeddingModelId,\n settings?: BedrockEmbeddingSettings,\n ): EmbeddingModelV2<string>;\n\n image(\n modelId: BedrockImageModelId,\n settings?: BedrockImageSettings,\n ): ImageModelV1;\n\n imageModel(\n modelId: BedrockImageModelId,\n settings?: BedrockImageSettings,\n ): ImageModelV1;\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 = (\n modelId: BedrockEmbeddingModelId,\n settings: BedrockEmbeddingSettings = {},\n ) =>\n new BedrockEmbeddingModel(modelId, settings, {\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 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 readonly defaultObjectGenerationMode = 'tool';\n readonly supportsImageUrls = false;\n\n constructor(\n readonly modelId: BedrockChatModelId,\n private readonly config: BedrockChatConfig,\n ) {}\n\n private 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]): {\n command: BedrockConverseInput;\n warnings: LanguageModelV2CallWarning[];\n } {\n // Parse provider options\n const bedrockOptions =\n 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 } = 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 async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { command: args, warnings } = 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 content.push({\n type: 'reasoning',\n reasoningType: 'text',\n text: part.reasoningContent.reasoningText.text,\n });\n if (part.reasoningContent.reasoningText.signature) {\n content.push({\n type: 'reasoning',\n reasoningType: 'signature',\n signature: part.reasoningContent.reasoningText.signature,\n });\n }\n } else if ('redactedReasoning' in part.reasoningContent) {\n content.push({\n type: 'reasoning',\n reasoningType: 'redacted',\n data: part.reasoningContent.redactedReasoning.data ?? '',\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 && {\n usage: {\n cacheReadInputTokens:\n response.usage?.cacheReadInputTokens ?? Number.NaN,\n cacheWriteInputTokens:\n response.usage?.cacheWriteInputTokens ?? Number.NaN,\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 },\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 } = 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 };\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\n const cacheUsage =\n value.metadata.usage?.cacheReadInputTokens != null ||\n value.metadata.usage?.cacheWriteInputTokens != null\n ? {\n usage: {\n cacheReadInputTokens:\n value.metadata.usage?.cacheReadInputTokens ??\n Number.NaN,\n cacheWriteInputTokens:\n value.metadata.usage?.cacheWriteInputTokens ??\n Number.NaN,\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 reasoningType: 'text',\n text: reasoningContent.text,\n });\n } else if (\n 'signature' in reasoningContent &&\n reasoningContent.signature\n ) {\n controller.enqueue({\n type: 'reasoning',\n reasoningType: 'signature',\n signature: reasoningContent.signature,\n });\n } else if ('data' in reasoningContent && reasoningContent.data) {\n controller.enqueue({\n type: 'reasoning',\n reasoningType: 'redacted',\n data: reasoningContent.data,\n });\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","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')]).nullish(),\n budgetTokens: z.number().nullish(),\n })\n .nullish(),\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 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 = 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 = 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 { convertToBase64, createIdGenerator } 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';\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 function convertToBedrockChatMessages(prompt: LanguageModelV2Prompt): {\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 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: part.signature,\n },\n },\n });\n break;\n }\n\n case 'redacted-reasoning': {\n bedrockContent.push({\n reasoningContent: {\n redactedReasoning: {\n data: part.data,\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 { EmbeddingModelV2, EmbeddingModelV2Embedding } 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 BedrockEmbeddingModelId,\n BedrockEmbeddingSettings,\n} from './bedrock-embedding-settings';\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 = undefined;\n readonly supportsParallelCalls = true;\n\n constructor(\n readonly modelId: BedrockEmbeddingModelId,\n private readonly settings: BedrockEmbeddingSettings,\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 }: Parameters<\n EmbeddingModelV2<string>['doEmbed']\n >[0]): Promise<DoEmbedResponse> {\n const embedSingleText = async (inputText: string) => {\n // https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html\n const args = {\n inputText,\n dimensions: this.settings.dimensions,\n normalize: this.settings.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 embedding: response.embedding,\n inputTextTokenCount: response.inputTextTokenCount,\n };\n };\n\n const responses = await Promise.all(values.map(embedSingleText));\n return responses.reduce<{\n embeddings: EmbeddingModelV2Embedding[];\n usage: { tokens: number };\n }>(\n (accumulated, response) => {\n accumulated.embeddings.push(response.embedding);\n accumulated.usage.tokens += response.inputTextTokenCount;\n return accumulated;\n },\n { embeddings: [], usage: { tokens: 0 } },\n );\n }\n}\n\nconst BedrockEmbeddingResponseSchema = z.object({\n embedding: z.array(z.number()),\n inputTextTokenCount: z.number(),\n});\n","import { ImageModelV1, ImageModelV1CallWarning } 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 ImageModelV1 {\n readonly specificationVersion = 'v1';\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<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\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":["z","z","UnsupportedFunctionalityError","UnsupportedFunctionalityError","i","part","_a","z","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","postJsonToApi","resolve","z","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 ImageModelV1,\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 ): ImageModelV1;\n\n imageModel(\n modelId: BedrockImageModelId,\n settings?: BedrockImageSettings,\n ): ImageModelV1;\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 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 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]): {\n command: BedrockConverseInput;\n warnings: LanguageModelV2CallWarning[];\n } {\n // Parse provider options\n const bedrockOptions =\n 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 } = 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 async getSupportedUrls(): Promise<Record<string, RegExp[]>> {\n return {\n // no supported urls for bedrock\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { command: args, warnings } = 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 content.push({\n type: 'reasoning',\n reasoningType: 'text',\n text: part.reasoningContent.reasoningText.text,\n });\n if (part.reasoningContent.reasoningText.signature) {\n content.push({\n type: 'reasoning',\n reasoningType: 'signature',\n signature: part.reasoningContent.reasoningText.signature,\n });\n }\n } else if ('redactedReasoning' in part.reasoningContent) {\n content.push({\n type: 'reasoning',\n reasoningType: 'redacted',\n data: part.reasoningContent.redactedReasoning.data ?? '',\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 && {\n usage: {\n cacheReadInputTokens:\n response.usage?.cacheReadInputTokens ?? Number.NaN,\n cacheWriteInputTokens:\n response.usage?.cacheWriteInputTokens ?? Number.NaN,\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 },\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 } = 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 };\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\n const cacheUsage =\n value.metadata.usage?.cacheReadInputTokens != null ||\n value.metadata.usage?.cacheWriteInputTokens != null\n ? {\n usage: {\n cacheReadInputTokens:\n value.metadata.usage?.cacheReadInputTokens ??\n Number.NaN,\n cacheWriteInputTokens:\n value.metadata.usage?.cacheWriteInputTokens ??\n Number.NaN,\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 reasoningType: 'text',\n text: reasoningContent.text,\n });\n } else if (\n 'signature' in reasoningContent &&\n reasoningContent.signature\n ) {\n controller.enqueue({\n type: 'reasoning',\n reasoningType: 'signature',\n signature: reasoningContent.signature,\n });\n } else if ('data' in reasoningContent && reasoningContent.data) {\n controller.enqueue({\n type: 'reasoning',\n reasoningType: 'redacted',\n data: reasoningContent.data,\n });\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","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')]).nullish(),\n budgetTokens: z.number().nullish(),\n })\n .nullish(),\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 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 = 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 = 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 { convertToBase64, createIdGenerator } 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';\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 function convertToBedrockChatMessages(prompt: LanguageModelV2Prompt): {\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 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: part.signature,\n },\n },\n });\n break;\n }\n\n case 'redacted-reasoning': {\n bedrockContent.push({\n reasoningContent: {\n redactedReasoning: {\n data: part.data,\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 { EmbeddingModelV2, EmbeddingModelV2Embedding } 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 = undefined;\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 // Parse provider options\n const bedrockOptions =\n parseProviderOptions({\n provider: 'bedrock',\n providerOptions,\n schema: bedrockEmbeddingProviderOptions,\n }) ?? {};\n\n const embedSingleText = async (inputText: string) => {\n // https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html\n const args = {\n inputText,\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 embedding: response.embedding,\n inputTextTokenCount: response.inputTextTokenCount,\n };\n };\n\n const responses = await Promise.all(values.map(embedSingleText));\n return responses.reduce<{\n embeddings: EmbeddingModelV2Embedding[];\n usage: { tokens: number };\n }>(\n (accumulated, response) => {\n accumulated.embeddings.push(response.embedding);\n accumulated.usage.tokens += response.inputTextTokenCount;\n return accumulated;\n },\n { embeddings: [], usage: { tokens: 0 } },\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 { ImageModelV1, ImageModelV1CallWarning } 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 ImageModelV1 {\n readonly specificationVersion = 'v1';\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<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\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":["z","z","UnsupportedFunctionalityError","UnsupportedFunctionalityError","i","part","_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.
|
|
3
|
+
"version": "3.0.0-canary.9",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@ai-sdk/provider": "2.0.0-canary.7",
|
|
23
|
-
"@ai-sdk/provider-utils": "3.0.0-canary.8",
|
|
24
22
|
"@smithy/eventstream-codec": "^4.0.1",
|
|
25
23
|
"@smithy/util-utf8": "^4.0.0",
|
|
26
|
-
"aws4fetch": "^1.0.20"
|
|
24
|
+
"aws4fetch": "^1.0.20",
|
|
25
|
+
"@ai-sdk/provider": "2.0.0-canary.8",
|
|
26
|
+
"@ai-sdk/provider-utils": "3.0.0-canary.9"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "20.17.24",
|
|
@@ -60,6 +60,8 @@
|
|
|
60
60
|
"type-check": "tsc --build",
|
|
61
61
|
"prettier-check": "prettier --check \"./**/*.ts*\"",
|
|
62
62
|
"test": "pnpm test:node && pnpm test:edge",
|
|
63
|
+
"test:update": "pnpm test:node -u",
|
|
64
|
+
"test:watch": "vitest --config vitest.node.config.js",
|
|
63
65
|
"test:edge": "vitest --config vitest.edge.config.js --run",
|
|
64
66
|
"test:node": "vitest --config vitest.node.config.js --run"
|
|
65
67
|
}
|