@ai-sdk/amazon-bedrock 4.0.175 → 4.0.177
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 +16 -0
- package/dist/anthropic/index.d.mts +3 -1
- package/dist/anthropic/index.d.ts +3 -1
- package/dist/anthropic/index.js +59 -24
- package/dist/anthropic/index.js.map +1 -1
- package/dist/anthropic/index.mjs +53 -16
- package/dist/anthropic/index.mjs.map +1 -1
- package/dist/index.d.mts +15 -4
- package/dist/index.d.ts +15 -4
- package/dist/index.js +112 -57
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +110 -53
- package/dist/index.mjs.map +1 -1
- package/dist/mantle/index.js +1 -1
- package/dist/mantle/index.mjs +1 -1
- package/docs/08-amazon-bedrock.mdx +43 -0
- package/package.json +3 -3
- package/src/anthropic/bedrock-anthropic-provider.ts +13 -7
- package/src/bedrock-anthropic-model-support.ts +19 -0
- package/src/bedrock-chat-language-model.ts +13 -7
- package/src/bedrock-chat-options.ts +10 -0
- package/src/bedrock-prepare-tools.ts +14 -2
- package/src/bedrock-provider.ts +44 -18
- package/src/index.ts +1 -0
- package/src/resolve-bedrock-base-url.ts +51 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @ai-sdk/amazon-bedrock
|
|
2
2
|
|
|
3
|
+
## 4.0.177
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- b252045: fix(amazon-bedrock): enable Anthropic features for application inference profile chat models
|
|
8
|
+
- Updated dependencies [90757ce]
|
|
9
|
+
- @ai-sdk/openai@3.0.113
|
|
10
|
+
|
|
11
|
+
## 4.0.176
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 6626af1: fix(amazon-bedrock): resolve non-standard partition and service-specific endpoints
|
|
16
|
+
- Updated dependencies [c11f450]
|
|
17
|
+
- @ai-sdk/anthropic@3.0.118
|
|
18
|
+
|
|
3
19
|
## 4.0.175
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -57,7 +57,9 @@ interface BedrockAnthropicProviderSettings {
|
|
|
57
57
|
*/
|
|
58
58
|
sessionToken?: string;
|
|
59
59
|
/**
|
|
60
|
-
* Base URL for the Bedrock API calls.
|
|
60
|
+
* Base URL for the Bedrock API calls. When omitted, the provider uses
|
|
61
|
+
* `AWS_ENDPOINT_URL_BEDROCK_RUNTIME`, then `AWS_ENDPOINT_URL`, before
|
|
62
|
+
* generating an endpoint from the AWS region.
|
|
61
63
|
*/
|
|
62
64
|
baseURL?: string;
|
|
63
65
|
/**
|
|
@@ -57,7 +57,9 @@ interface BedrockAnthropicProviderSettings {
|
|
|
57
57
|
*/
|
|
58
58
|
sessionToken?: string;
|
|
59
59
|
/**
|
|
60
|
-
* Base URL for the Bedrock API calls.
|
|
60
|
+
* Base URL for the Bedrock API calls. When omitted, the provider uses
|
|
61
|
+
* `AWS_ENDPOINT_URL_BEDROCK_RUNTIME`, then `AWS_ENDPOINT_URL`, before
|
|
62
|
+
* generating an endpoint from the AWS region.
|
|
61
63
|
*/
|
|
62
64
|
baseURL?: string;
|
|
63
65
|
/**
|
package/dist/anthropic/index.js
CHANGED
|
@@ -27,7 +27,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
27
27
|
|
|
28
28
|
// src/anthropic/bedrock-anthropic-provider.ts
|
|
29
29
|
var import_provider = require("@ai-sdk/provider");
|
|
30
|
-
var
|
|
30
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
31
31
|
var import_internal = require("@ai-sdk/anthropic/internal");
|
|
32
32
|
|
|
33
33
|
// src/bedrock-sigv4-fetch.ts
|
|
@@ -35,7 +35,7 @@ var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
|
35
35
|
var import_aws4fetch = require("aws4fetch");
|
|
36
36
|
|
|
37
37
|
// src/version.ts
|
|
38
|
-
var VERSION = true ? "4.0.
|
|
38
|
+
var VERSION = true ? "4.0.177" : "0.0.0-test";
|
|
39
39
|
|
|
40
40
|
// src/bedrock-sigv4-fetch.ts
|
|
41
41
|
function createSigV4FetchFunction(getCredentials, fetch, service = "bedrock") {
|
|
@@ -146,8 +146,43 @@ function matchesModel(modelId, models) {
|
|
|
146
146
|
return models.some((model) => modelId.includes(model));
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
// src/
|
|
149
|
+
// src/resolve-bedrock-base-url.ts
|
|
150
150
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
151
|
+
var AWS_PARTITION_DNS_SUFFIXES = [
|
|
152
|
+
{ regionPrefix: "cn-", dnsSuffix: "amazonaws.com.cn" },
|
|
153
|
+
{ regionPrefix: "us-iso-", dnsSuffix: "c2s.ic.gov" },
|
|
154
|
+
{ regionPrefix: "us-isob-", dnsSuffix: "sc2s.sgov.gov" },
|
|
155
|
+
{ regionPrefix: "eu-isoe-", dnsSuffix: "cloud.adc-e.uk" },
|
|
156
|
+
{ regionPrefix: "us-isof-", dnsSuffix: "csp.hci.ic.gov" },
|
|
157
|
+
{ regionPrefix: "eusc-", dnsSuffix: "amazonaws.eu" }
|
|
158
|
+
];
|
|
159
|
+
function resolveBedrockBaseURL({
|
|
160
|
+
baseURL,
|
|
161
|
+
getRegion,
|
|
162
|
+
service,
|
|
163
|
+
serviceEndpointUrlEnvironmentVariableName
|
|
164
|
+
}) {
|
|
165
|
+
var _a, _b, _c, _d, _e;
|
|
166
|
+
const resolvedBaseURL = (_a = baseURL != null ? baseURL : (0, import_provider_utils2.loadOptionalSetting)({
|
|
167
|
+
settingValue: void 0,
|
|
168
|
+
environmentVariableName: serviceEndpointUrlEnvironmentVariableName
|
|
169
|
+
})) != null ? _a : (0, import_provider_utils2.loadOptionalSetting)({
|
|
170
|
+
settingValue: void 0,
|
|
171
|
+
environmentVariableName: "AWS_ENDPOINT_URL"
|
|
172
|
+
});
|
|
173
|
+
if (resolvedBaseURL != null) {
|
|
174
|
+
return (_b = (0, import_provider_utils2.withoutTrailingSlash)(resolvedBaseURL)) != null ? _b : resolvedBaseURL;
|
|
175
|
+
}
|
|
176
|
+
const region = getRegion();
|
|
177
|
+
const dnsSuffix = (_d = (_c = AWS_PARTITION_DNS_SUFFIXES.find(
|
|
178
|
+
({ regionPrefix }) => region.startsWith(regionPrefix)
|
|
179
|
+
)) == null ? void 0 : _c.dnsSuffix) != null ? _d : "amazonaws.com";
|
|
180
|
+
const generatedBaseURL = `https://${service}.${region}.${dnsSuffix}`;
|
|
181
|
+
return (_e = (0, import_provider_utils2.withoutTrailingSlash)(generatedBaseURL)) != null ? _e : generatedBaseURL;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// src/anthropic/bedrock-anthropic-fetch.ts
|
|
185
|
+
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
151
186
|
var import_v4 = require("zod/v4");
|
|
152
187
|
|
|
153
188
|
// src/bedrock-event-stream-decoder.ts
|
|
@@ -207,7 +242,7 @@ function createBedrockAnthropicFetch(baseFetch) {
|
|
|
207
242
|
const response = await baseFetch(url, options);
|
|
208
243
|
if (!response.ok) {
|
|
209
244
|
const text = await response.text();
|
|
210
|
-
const parsed = await (0,
|
|
245
|
+
const parsed = await (0, import_provider_utils3.safeParseJSON)({ text, schema: bedrockErrorSchema });
|
|
211
246
|
const message = parsed.success && parsed.value.message ? parsed.value.message : text;
|
|
212
247
|
const anthropicError = JSON.stringify({
|
|
213
248
|
type: "error",
|
|
@@ -239,7 +274,7 @@ function transformBedrockEventStreamToSSE(body) {
|
|
|
239
274
|
return createBedrockEventStreamDecoder(body, async (event, controller) => {
|
|
240
275
|
if (event.messageType === "event") {
|
|
241
276
|
if (event.eventType === "chunk") {
|
|
242
|
-
const parsed = await (0,
|
|
277
|
+
const parsed = await (0, import_provider_utils3.safeParseJSON)({ text: event.data });
|
|
243
278
|
if (!parsed.success) {
|
|
244
279
|
controller.enqueue(textEncoder.encode(`data: ${event.data}
|
|
245
280
|
|
|
@@ -249,7 +284,7 @@ function transformBedrockEventStreamToSSE(body) {
|
|
|
249
284
|
const bytes = parsed.value.bytes;
|
|
250
285
|
if (bytes) {
|
|
251
286
|
const anthropicEvent = new TextDecoder().decode(
|
|
252
|
-
(0,
|
|
287
|
+
(0, import_provider_utils3.convertBase64ToUint8Array)(bytes)
|
|
253
288
|
);
|
|
254
289
|
controller.enqueue(textEncoder.encode(`data: ${anthropicEvent}
|
|
255
290
|
|
|
@@ -298,13 +333,13 @@ var BEDROCK_TOOL_BETA_MAP = {
|
|
|
298
333
|
tool_search_tool_bm25_20251119: "tool-search-tool-2025-10-19"
|
|
299
334
|
};
|
|
300
335
|
function createBedrockAnthropic(options = {}) {
|
|
301
|
-
const rawApiKey = (0,
|
|
336
|
+
const rawApiKey = (0, import_provider_utils4.loadOptionalSetting)({
|
|
302
337
|
settingValue: options.apiKey,
|
|
303
338
|
environmentVariableName: "AWS_BEARER_TOKEN_BEDROCK"
|
|
304
339
|
});
|
|
305
340
|
const apiKey = rawApiKey && rawApiKey.trim().length > 0 ? rawApiKey.trim() : void 0;
|
|
306
341
|
const baseFetchFunction = apiKey ? createApiKeyFetchFunction(apiKey, options.fetch) : createSigV4FetchFunction(async () => {
|
|
307
|
-
const region = (0,
|
|
342
|
+
const region = (0, import_provider_utils4.loadSetting)({
|
|
308
343
|
settingValue: options.region,
|
|
309
344
|
settingName: "region",
|
|
310
345
|
environmentVariableName: "AWS_REGION",
|
|
@@ -326,19 +361,19 @@ function createBedrockAnthropic(options = {}) {
|
|
|
326
361
|
try {
|
|
327
362
|
return {
|
|
328
363
|
region,
|
|
329
|
-
accessKeyId: (0,
|
|
364
|
+
accessKeyId: (0, import_provider_utils4.loadSetting)({
|
|
330
365
|
settingValue: options.accessKeyId,
|
|
331
366
|
settingName: "accessKeyId",
|
|
332
367
|
environmentVariableName: "AWS_ACCESS_KEY_ID",
|
|
333
368
|
description: "AWS access key ID"
|
|
334
369
|
}),
|
|
335
|
-
secretAccessKey: (0,
|
|
370
|
+
secretAccessKey: (0, import_provider_utils4.loadSetting)({
|
|
336
371
|
settingValue: options.secretAccessKey,
|
|
337
372
|
settingName: "secretAccessKey",
|
|
338
373
|
environmentVariableName: "AWS_SECRET_ACCESS_KEY",
|
|
339
374
|
description: "AWS secret access key"
|
|
340
375
|
}),
|
|
341
|
-
sessionToken: (0,
|
|
376
|
+
sessionToken: (0, import_provider_utils4.loadOptionalSetting)({
|
|
342
377
|
settingValue: options.sessionToken,
|
|
343
378
|
environmentVariableName: "AWS_SESSION_TOKEN"
|
|
344
379
|
})
|
|
@@ -365,21 +400,21 @@ Original error: ${errorMessage}`
|
|
|
365
400
|
}
|
|
366
401
|
}, options.fetch);
|
|
367
402
|
const fetchFunction = createBedrockAnthropicFetch(baseFetchFunction);
|
|
368
|
-
const getBaseURL = () => {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
};
|
|
403
|
+
const getBaseURL = () => resolveBedrockBaseURL({
|
|
404
|
+
baseURL: options.baseURL,
|
|
405
|
+
getRegion: () => (0, import_provider_utils4.loadSetting)({
|
|
406
|
+
settingValue: options.region,
|
|
407
|
+
settingName: "region",
|
|
408
|
+
environmentVariableName: "AWS_REGION",
|
|
409
|
+
description: "AWS region"
|
|
410
|
+
}),
|
|
411
|
+
service: "bedrock-runtime",
|
|
412
|
+
serviceEndpointUrlEnvironmentVariableName: "AWS_ENDPOINT_URL_BEDROCK_RUNTIME"
|
|
413
|
+
});
|
|
379
414
|
const getHeaders = async () => {
|
|
380
415
|
var _a;
|
|
381
|
-
const baseHeaders = (_a = await (0,
|
|
382
|
-
return (0,
|
|
416
|
+
const baseHeaders = (_a = await (0, import_provider_utils4.resolve)(options.headers)) != null ? _a : {};
|
|
417
|
+
return (0, import_provider_utils4.withUserAgentSuffix)(baseHeaders, `ai-sdk/amazon-bedrock/${VERSION}`);
|
|
383
418
|
};
|
|
384
419
|
const createChatModel = (modelId) => new import_internal.AnthropicMessagesLanguageModel(modelId, {
|
|
385
420
|
provider: "bedrock.anthropic.messages",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/anthropic/index.ts","../../src/anthropic/bedrock-anthropic-provider.ts","../../src/bedrock-sigv4-fetch.ts","../../src/version.ts","../../src/bedrock-anthropic-model-support.ts","../../src/anthropic/bedrock-anthropic-fetch.ts","../../src/bedrock-event-stream-decoder.ts"],"sourcesContent":["export {\n bedrockAnthropic,\n createBedrockAnthropic,\n} from './bedrock-anthropic-provider';\nexport type {\n BedrockAnthropicProvider,\n BedrockAnthropicProviderSettings,\n} from './bedrock-anthropic-provider';\nexport type { BedrockAnthropicModelId } from './bedrock-anthropic-options';\n","import {\n NoSuchModelError,\n type LanguageModelV3,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n loadOptionalSetting,\n loadSetting,\n resolve,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport {\n anthropicTools,\n AnthropicMessagesLanguageModel,\n} from '@ai-sdk/anthropic/internal';\nimport {\n createApiKeyFetchFunction,\n createSigV4FetchFunction,\n type BedrockCredentials,\n} from '../bedrock-sigv4-fetch';\nimport {\n supportsNativeStructuredOutput,\n supportsStrictTools,\n} from '../bedrock-anthropic-model-support';\nimport { createBedrockAnthropicFetch } from './bedrock-anthropic-fetch';\nimport type { BedrockAnthropicModelId } from './bedrock-anthropic-options';\nimport { VERSION } from '../version';\n\n// Bedrock requires newer tool versions than the default Anthropic SDK versions\nconst BEDROCK_TOOL_VERSION_MAP = {\n bash_20241022: 'bash_20250124',\n text_editor_20241022: 'text_editor_20250728',\n computer_20241022: 'computer_20250124',\n} as const;\n\n// Tool name mappings when upgrading versions (text_editor_20250728 requires different name)\nconst BEDROCK_TOOL_NAME_MAP: Record<string, string> = {\n text_editor_20250728: 'str_replace_based_edit_tool',\n};\n\n// Map tool types to required anthropic_beta values for Bedrock\nconst BEDROCK_TOOL_BETA_MAP: Record<string, string> = {\n bash_20250124: 'computer-use-2025-01-24',\n bash_20241022: 'computer-use-2024-10-22',\n text_editor_20250124: 'computer-use-2025-01-24',\n text_editor_20241022: 'computer-use-2024-10-22',\n text_editor_20250429: 'computer-use-2025-01-24',\n text_editor_20250728: 'computer-use-2025-01-24',\n computer_20250124: 'computer-use-2025-01-24',\n computer_20241022: 'computer-use-2024-10-22',\n tool_search_tool_regex_20251119: 'tool-search-tool-2025-10-19',\n // BM25 is not currently supported on Bedrock, but including the beta flag\n // so that Bedrock returns a more useful error message if it's used.\n tool_search_tool_bm25_20251119: 'tool-search-tool-2025-10-19',\n};\n\nexport interface BedrockAnthropicProvider extends ProviderV3 {\n /**\n * Creates a model for text generation.\n */\n (modelId: BedrockAnthropicModelId): LanguageModelV3;\n\n /**\n * Creates a model for text generation.\n */\n languageModel(modelId: BedrockAnthropicModelId): LanguageModelV3;\n\n /**\n * Anthropic-specific computer use tool.\n */\n tools: typeof anthropicTools;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface BedrockAnthropicProviderSettings {\n /**\n * The AWS region to use for the Bedrock provider. Defaults to the value of the\n * `AWS_REGION` environment variable.\n */\n region?: string;\n\n /**\n * API key for authenticating requests using Bearer token authentication.\n * When provided, this will be used instead of AWS SigV4 authentication.\n * Defaults to the value of the `AWS_BEARER_TOKEN_BEDROCK` environment variable.\n */\n apiKey?: string;\n\n /**\n * The AWS access key ID to use for the Bedrock provider. Defaults to the value of the\n * `AWS_ACCESS_KEY_ID` environment variable.\n */\n accessKeyId?: string;\n\n /**\n * The AWS secret access key to use for the Bedrock provider. Defaults to the value of the\n * `AWS_SECRET_ACCESS_KEY` environment variable.\n */\n secretAccessKey?: string;\n\n /**\n * The AWS session token to use for the Bedrock provider. Defaults to the value of the\n * `AWS_SESSION_TOKEN` environment variable.\n */\n sessionToken?: string;\n\n /**\n * Base URL for the Bedrock API calls.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Resolvable<Record<string, string | undefined>>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * The AWS credential provider to use for the Bedrock provider to get dynamic\n * credentials similar to the AWS SDK. Setting a provider here will cause its\n * credential values to be used instead of the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` settings.\n */\n credentialProvider?: () => PromiseLike<Omit<BedrockCredentials, 'region'>>;\n}\n\n/**\n * Create an Amazon Bedrock Anthropic provider instance.\n * This provider uses the native Anthropic API through Bedrock's InvokeModel endpoint,\n * bypassing the Converse API for better feature compatibility.\n */\nexport function createBedrockAnthropic(\n options: BedrockAnthropicProviderSettings = {},\n): BedrockAnthropicProvider {\n // Check for API key authentication first\n const rawApiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'AWS_BEARER_TOKEN_BEDROCK',\n });\n\n // Only use API key if it's a non-empty, non-whitespace string\n const apiKey =\n rawApiKey && rawApiKey.trim().length > 0 ? rawApiKey.trim() : undefined;\n\n // Use API key authentication if available, otherwise fall back to SigV4\n const baseFetchFunction = apiKey\n ? createApiKeyFetchFunction(apiKey, options.fetch)\n : createSigV4FetchFunction(async () => {\n const region = loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n });\n\n // If a credential provider is provided, use it to get the credentials.\n if (options.credentialProvider) {\n try {\n return {\n ...(await options.credentialProvider()),\n region,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n throw new Error(\n `AWS credential provider failed: ${errorMessage}. ` +\n 'Please ensure your credential provider returns valid AWS credentials ' +\n 'with accessKeyId and secretAccessKey properties.',\n );\n }\n }\n\n try {\n return {\n region,\n accessKeyId: loadSetting({\n settingValue: options.accessKeyId,\n settingName: 'accessKeyId',\n environmentVariableName: 'AWS_ACCESS_KEY_ID',\n description: 'AWS access key ID',\n }),\n secretAccessKey: loadSetting({\n settingValue: options.secretAccessKey,\n settingName: 'secretAccessKey',\n environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n description: 'AWS secret access key',\n }),\n sessionToken: loadOptionalSetting({\n settingValue: options.sessionToken,\n environmentVariableName: 'AWS_SESSION_TOKEN',\n }),\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (\n errorMessage.includes('AWS_ACCESS_KEY_ID') ||\n errorMessage.includes('accessKeyId')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires AWS credentials. Please provide either:\\n' +\n '1. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables\\n' +\n '2. Provide accessKeyId and secretAccessKey in options\\n' +\n '3. Use a credentialProvider function\\n' +\n '4. Use API key authentication with AWS_BEARER_TOKEN_BEDROCK or apiKey option\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n if (\n errorMessage.includes('AWS_SECRET_ACCESS_KEY') ||\n errorMessage.includes('secretAccessKey')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires both AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. ' +\n 'Please ensure both credentials are provided.\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n throw error;\n }\n }, options.fetch);\n\n // Wrap with Bedrock event stream to SSE transformer for streaming support\n const fetchFunction = createBedrockAnthropicFetch(baseFetchFunction);\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 getHeaders = async () => {\n const baseHeaders = (await resolve(options.headers)) ?? {};\n return withUserAgentSuffix(baseHeaders, `ai-sdk/amazon-bedrock/${VERSION}`);\n };\n\n const createChatModel = (modelId: BedrockAnthropicModelId) =>\n new AnthropicMessagesLanguageModel(modelId, {\n provider: 'bedrock.anthropic.messages',\n baseURL: getBaseURL(),\n headers: getHeaders,\n fetch: fetchFunction,\n\n buildRequestUrl: (baseURL, isStreaming) =>\n `${baseURL}/model/${encodeURIComponent(modelId)}/${\n isStreaming ? 'invoke-with-response-stream' : 'invoke'\n }`,\n\n transformRequestBody: (args, betas) => {\n const { model, stream, tool_choice, tools, ...rest } = args;\n\n const transformedToolChoice =\n tool_choice != null\n ? {\n type: tool_choice.type,\n ...(tool_choice.name != null ? { name: tool_choice.name } : {}),\n }\n : undefined;\n\n const requiredBetas = new Set<string>(betas);\n const transformedTools = tools?.map(\n (rawTool: Record<string, unknown>) => {\n // Bedrock rejects the per-tool eager_input_streaming field even when\n // the fine-grained-tool-streaming beta is declared, but the beta alone\n // enables the same behavior, so translate the field into the beta\n const { eager_input_streaming: eagerInputStreaming, ...tool } =\n rawTool;\n if (eagerInputStreaming === true) {\n requiredBetas.add('fine-grained-tool-streaming-2025-05-14');\n }\n\n const toolType = tool.type as string | undefined;\n\n if (toolType && toolType in BEDROCK_TOOL_VERSION_MAP) {\n const newType =\n BEDROCK_TOOL_VERSION_MAP[\n toolType as keyof typeof BEDROCK_TOOL_VERSION_MAP\n ];\n if (newType in BEDROCK_TOOL_BETA_MAP) {\n requiredBetas.add(BEDROCK_TOOL_BETA_MAP[newType]);\n }\n const newName =\n newType in BEDROCK_TOOL_NAME_MAP\n ? BEDROCK_TOOL_NAME_MAP[newType]\n : tool.name;\n return {\n ...tool,\n type: newType,\n name: newName,\n };\n }\n\n if (toolType && toolType in BEDROCK_TOOL_BETA_MAP) {\n requiredBetas.add(BEDROCK_TOOL_BETA_MAP[toolType]);\n }\n\n if (toolType && toolType in BEDROCK_TOOL_NAME_MAP) {\n return {\n ...tool,\n name: BEDROCK_TOOL_NAME_MAP[toolType],\n };\n }\n\n return tool;\n },\n );\n\n return {\n ...rest,\n ...(transformedTools != null ? { tools: transformedTools } : {}),\n ...(transformedToolChoice != null\n ? { tool_choice: transformedToolChoice }\n : {}),\n ...(requiredBetas.size > 0\n ? { anthropic_beta: Array.from(requiredBetas) }\n : {}),\n anthropic_version: 'bedrock-2023-05-31',\n };\n },\n\n // Bedrock Anthropic doesn't support URL sources, force download and base64 conversion\n supportedUrls: () => ({}),\n supportsNativeStructuredOutput: supportsNativeStructuredOutput(modelId),\n supportsStrictTools: supportsStrictTools(modelId),\n });\n\n const provider = function (modelId: BedrockAnthropicModelId) {\n if (new.target) {\n throw new Error(\n 'The Bedrock Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n provider.tools = anthropicTools;\n\n return provider;\n}\n\n/**\n * Default Bedrock Anthropic provider instance.\n */\nexport const bedrockAnthropic = createBedrockAnthropic();\n","import {\n combineHeaders,\n normalizeHeaders,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\nimport { VERSION } from './version';\n\nexport interface BedrockCredentials {\n region: string;\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n}\n\n/**\n * Creates a fetch function that applies AWS Signature Version 4 signing.\n *\n * @param getCredentials - Function that returns the AWS credentials to use when signing.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @param service - The AWS service name to use for SigV4 signing scope. Defaults to 'bedrock'.\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,\n service: string = 'bedrock',\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n // avoid caching globalThis.fetch in case it is patched by other libraries\n const effectiveFetch = fetch ?? globalThis.fetch;\n const request = input instanceof Request ? input : undefined;\n const originalHeaders = combineHeaders(\n normalizeHeaders(request?.headers),\n normalizeHeaders(init?.headers),\n );\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n let effectiveBody: BodyInit | undefined = init?.body ?? undefined;\n if (effectiveBody === undefined && request && request.body !== null) {\n try {\n effectiveBody = await request.clone().text();\n } catch {}\n }\n\n const effectiveMethod = init?.method ?? request?.method;\n\n if (effectiveMethod?.toUpperCase() !== 'POST' || !effectiveBody) {\n return effectiveFetch(input, {\n ...init,\n headers: headersWithUserAgent as HeadersInit,\n });\n }\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const body = prepareBodyString(effectiveBody);\n const credentials = await getCredentials();\n const signer = new AwsV4Signer({\n url,\n method: 'POST',\n headers: Object.entries(headersWithUserAgent),\n body,\n region: credentials.region,\n accessKeyId: credentials.accessKeyId,\n secretAccessKey: credentials.secretAccessKey,\n sessionToken: credentials.sessionToken,\n service,\n });\n\n const signingResult = await signer.sign();\n const signedHeaders = normalizeHeaders(signingResult.headers);\n\n // Use the combined headers directly as HeadersInit\n const combinedHeaders = combineHeaders(headersWithUserAgent, signedHeaders);\n\n return effectiveFetch(input, {\n ...init,\n body,\n headers: combinedHeaders as HeadersInit,\n });\n };\n}\n\nfunction prepareBodyString(body: BodyInit | undefined): string {\n if (typeof body === 'string') {\n return body;\n } else if (body instanceof Uint8Array) {\n return new TextDecoder().decode(body);\n } else if (body instanceof ArrayBuffer) {\n return new TextDecoder().decode(new Uint8Array(body));\n } else {\n return JSON.stringify(body);\n }\n}\n\n/**\n * Creates a fetch function that applies Bearer token authentication.\n *\n * @param apiKey - The API key to use for Bearer token authentication.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @returns A FetchFunction that adds Authorization header with Bearer token to requests.\n */\nexport function createApiKeyFetchFunction(\n apiKey: string,\n fetch?: FetchFunction,\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n // avoid caching globalThis.fetch in case it is patched by other libraries\n const effectiveFetch = fetch ?? globalThis.fetch;\n const originalHeaders = normalizeHeaders(init?.headers);\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n const finalHeaders = combineHeaders(headersWithUserAgent, {\n Authorization: `Bearer ${apiKey}`,\n });\n\n return effectiveFetch(input, {\n ...init,\n headers: finalHeaders as HeadersInit,\n });\n };\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","export function supportsStrictTools(modelId: string): boolean {\n return !matchesModel(modelId, MODELS_WITHOUT_STRICT_TOOL_SUPPORT);\n}\n\nexport function supportsNativeStructuredOutput(modelId: string): boolean {\n return !matchesModel(\n modelId,\n MODELS_WITHOUT_RELIABLE_NATIVE_STRUCTURED_OUTPUT,\n );\n}\n\n// Bedrock validates against its own copy of the Messages schema, which rejects\n// `output_config.format` and tool `strict` for the newest Claude models\nconst MODELS_WITHOUT_STRICT_TOOL_SUPPORT = [\n 'claude-opus-4-7',\n 'claude-opus-4-8',\n 'claude-opus-5',\n 'claude-fable-5',\n 'claude-sonnet-5',\n];\n\n// Native structured output is unreliable for additional models even though\n// their strict tool support remains available. Sonnet 4.6 can fail to adhere\n// to complex schemas, while Haiku 4.5 support varies between Bedrock accounts.\nconst MODELS_WITHOUT_RELIABLE_NATIVE_STRUCTURED_OUTPUT = [\n ...MODELS_WITHOUT_STRICT_TOOL_SUPPORT,\n 'claude-sonnet-4-6',\n 'claude-haiku-4-5',\n];\n\nfunction matchesModel(modelId: string, models: string[]): boolean {\n return models.some(model => modelId.includes(model));\n}\n","import {\n convertBase64ToUint8Array,\n safeParseJSON,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { createBedrockEventStreamDecoder } from '../bedrock-event-stream-decoder';\n\nconst bedrockErrorSchema = z.looseObject({\n message: z.string().optional(),\n});\n\nexport function createBedrockAnthropicFetch(\n baseFetch: FetchFunction,\n): FetchFunction {\n return async (url, options) => {\n const response = await baseFetch(url, options);\n\n // Transform Bedrock error responses into Anthropic error format\n // so that anthropicFailedResponseHandler can extract the message.\n if (!response.ok) {\n const text = await response.text();\n const parsed = await safeParseJSON({ text, schema: bedrockErrorSchema });\n\n const message =\n parsed.success && parsed.value.message ? parsed.value.message : text;\n\n const anthropicError = JSON.stringify({\n type: 'error',\n error: { type: 'error', message },\n });\n\n return new Response(anthropicError, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n\n const contentType = response.headers.get('content-type');\n if (\n contentType?.includes('application/vnd.amazon.eventstream') &&\n response.body != null\n ) {\n const transformedBody = transformBedrockEventStreamToSSE(response.body);\n\n return new Response(transformedBody, {\n status: response.status,\n statusText: response.statusText,\n headers: new Headers({\n ...Object.fromEntries(response.headers.entries()),\n 'content-type': 'text/event-stream',\n }),\n });\n }\n\n return response;\n };\n}\n\nfunction transformBedrockEventStreamToSSE(\n body: ReadableStream<Uint8Array>,\n): ReadableStream<Uint8Array> {\n const textEncoder = new TextEncoder();\n\n return createBedrockEventStreamDecoder(body, async (event, controller) => {\n if (event.messageType === 'event') {\n if (event.eventType === 'chunk') {\n const parsed = await safeParseJSON({ text: event.data });\n if (!parsed.success) {\n controller.enqueue(textEncoder.encode(`data: ${event.data}\\n\\n`));\n return;\n }\n const bytes = (parsed.value as { bytes?: string }).bytes;\n if (bytes) {\n const anthropicEvent = new TextDecoder().decode(\n convertBase64ToUint8Array(bytes),\n );\n controller.enqueue(textEncoder.encode(`data: ${anthropicEvent}\\n\\n`));\n } else {\n controller.enqueue(textEncoder.encode(`data: ${event.data}\\n\\n`));\n }\n } else if (event.eventType === 'messageStop') {\n controller.enqueue(textEncoder.encode('data: [DONE]\\n\\n'));\n }\n } else if (event.messageType === 'exception') {\n controller.enqueue(\n textEncoder.encode(\n `data: ${JSON.stringify({ type: 'error', error: event.data })}\\n\\n`,\n ),\n );\n }\n });\n}\n","import { EventStreamCodec } from '@smithy/eventstream-codec';\nimport { toUtf8, fromUtf8 } from '@smithy/util-utf8';\n\nexport interface DecodedEvent {\n messageType: string;\n eventType?: string;\n exceptionType?: string;\n data: string;\n}\n\nexport function createBedrockEventStreamDecoder<T>(\n body: ReadableStream<Uint8Array>,\n processEvent: (\n event: DecodedEvent,\n controller: TransformStreamDefaultController<T>,\n ) => void | Promise<void>,\n): ReadableStream<T> {\n const codec = new EventStreamCodec(toUtf8, fromUtf8);\n let buffer = new Uint8Array(0);\n const textDecoder = new TextDecoder();\n\n return body.pipeThrough(\n new TransformStream<Uint8Array, T>({\n async transform(chunk, controller) {\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n while (buffer.length >= 4) {\n const totalLength = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(0, false);\n\n if (buffer.length < totalLength) {\n break;\n }\n\n const subView = buffer.subarray(0, totalLength);\n const decoded = codec.decode(subView);\n\n buffer = buffer.slice(totalLength);\n\n const messageType = decoded.headers[':message-type']?.value as string;\n const eventType = decoded.headers[':event-type']?.value as\n | string\n | undefined;\n const exceptionType = decoded.headers[':exception-type']?.value as\n | string\n | undefined;\n const data = textDecoder.decode(decoded.body);\n\n await processEvent(\n { messageType, eventType, exceptionType, data },\n controller,\n );\n }\n },\n flush() {\n if (buffer.length > 0) {\n throw new Error(\n `Incomplete Amazon Bedrock event-stream frame: ${buffer.length} buffered bytes remain at end of stream.`,\n );\n }\n },\n }),\n );\n}\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils"]}
|
|
1
|
+
{"version":3,"sources":["../../src/anthropic/index.ts","../../src/anthropic/bedrock-anthropic-provider.ts","../../src/bedrock-sigv4-fetch.ts","../../src/version.ts","../../src/bedrock-anthropic-model-support.ts","../../src/resolve-bedrock-base-url.ts","../../src/anthropic/bedrock-anthropic-fetch.ts","../../src/bedrock-event-stream-decoder.ts"],"sourcesContent":["export {\n bedrockAnthropic,\n createBedrockAnthropic,\n} from './bedrock-anthropic-provider';\nexport type {\n BedrockAnthropicProvider,\n BedrockAnthropicProviderSettings,\n} from './bedrock-anthropic-provider';\nexport type { BedrockAnthropicModelId } from './bedrock-anthropic-options';\n","import {\n NoSuchModelError,\n type LanguageModelV3,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n loadOptionalSetting,\n loadSetting,\n resolve,\n withUserAgentSuffix,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport {\n anthropicTools,\n AnthropicMessagesLanguageModel,\n} from '@ai-sdk/anthropic/internal';\nimport {\n createApiKeyFetchFunction,\n createSigV4FetchFunction,\n type BedrockCredentials,\n} from '../bedrock-sigv4-fetch';\nimport {\n supportsNativeStructuredOutput,\n supportsStrictTools,\n} from '../bedrock-anthropic-model-support';\nimport { resolveBedrockBaseURL } from '../resolve-bedrock-base-url';\nimport { createBedrockAnthropicFetch } from './bedrock-anthropic-fetch';\nimport type { BedrockAnthropicModelId } from './bedrock-anthropic-options';\nimport { VERSION } from '../version';\n\n// Bedrock requires newer tool versions than the default Anthropic SDK versions\nconst BEDROCK_TOOL_VERSION_MAP = {\n bash_20241022: 'bash_20250124',\n text_editor_20241022: 'text_editor_20250728',\n computer_20241022: 'computer_20250124',\n} as const;\n\n// Tool name mappings when upgrading versions (text_editor_20250728 requires different name)\nconst BEDROCK_TOOL_NAME_MAP: Record<string, string> = {\n text_editor_20250728: 'str_replace_based_edit_tool',\n};\n\n// Map tool types to required anthropic_beta values for Bedrock\nconst BEDROCK_TOOL_BETA_MAP: Record<string, string> = {\n bash_20250124: 'computer-use-2025-01-24',\n bash_20241022: 'computer-use-2024-10-22',\n text_editor_20250124: 'computer-use-2025-01-24',\n text_editor_20241022: 'computer-use-2024-10-22',\n text_editor_20250429: 'computer-use-2025-01-24',\n text_editor_20250728: 'computer-use-2025-01-24',\n computer_20250124: 'computer-use-2025-01-24',\n computer_20241022: 'computer-use-2024-10-22',\n tool_search_tool_regex_20251119: 'tool-search-tool-2025-10-19',\n // BM25 is not currently supported on Bedrock, but including the beta flag\n // so that Bedrock returns a more useful error message if it's used.\n tool_search_tool_bm25_20251119: 'tool-search-tool-2025-10-19',\n};\n\nexport interface BedrockAnthropicProvider extends ProviderV3 {\n /**\n * Creates a model for text generation.\n */\n (modelId: BedrockAnthropicModelId): LanguageModelV3;\n\n /**\n * Creates a model for text generation.\n */\n languageModel(modelId: BedrockAnthropicModelId): LanguageModelV3;\n\n /**\n * Anthropic-specific computer use tool.\n */\n tools: typeof anthropicTools;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface BedrockAnthropicProviderSettings {\n /**\n * The AWS region to use for the Bedrock provider. Defaults to the value of the\n * `AWS_REGION` environment variable.\n */\n region?: string;\n\n /**\n * API key for authenticating requests using Bearer token authentication.\n * When provided, this will be used instead of AWS SigV4 authentication.\n * Defaults to the value of the `AWS_BEARER_TOKEN_BEDROCK` environment variable.\n */\n apiKey?: string;\n\n /**\n * The AWS access key ID to use for the Bedrock provider. Defaults to the value of the\n * `AWS_ACCESS_KEY_ID` environment variable.\n */\n accessKeyId?: string;\n\n /**\n * The AWS secret access key to use for the Bedrock provider. Defaults to the value of the\n * `AWS_SECRET_ACCESS_KEY` environment variable.\n */\n secretAccessKey?: string;\n\n /**\n * The AWS session token to use for the Bedrock provider. Defaults to the value of the\n * `AWS_SESSION_TOKEN` environment variable.\n */\n sessionToken?: string;\n\n /**\n * Base URL for the Bedrock API calls. When omitted, the provider uses\n * `AWS_ENDPOINT_URL_BEDROCK_RUNTIME`, then `AWS_ENDPOINT_URL`, before\n * generating an endpoint from the AWS region.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Resolvable<Record<string, string | undefined>>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * The AWS credential provider to use for the Bedrock provider to get dynamic\n * credentials similar to the AWS SDK. Setting a provider here will cause its\n * credential values to be used instead of the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` settings.\n */\n credentialProvider?: () => PromiseLike<Omit<BedrockCredentials, 'region'>>;\n}\n\n/**\n * Create an Amazon Bedrock Anthropic provider instance.\n * This provider uses the native Anthropic API through Bedrock's InvokeModel endpoint,\n * bypassing the Converse API for better feature compatibility.\n */\nexport function createBedrockAnthropic(\n options: BedrockAnthropicProviderSettings = {},\n): BedrockAnthropicProvider {\n // Check for API key authentication first\n const rawApiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'AWS_BEARER_TOKEN_BEDROCK',\n });\n\n // Only use API key if it's a non-empty, non-whitespace string\n const apiKey =\n rawApiKey && rawApiKey.trim().length > 0 ? rawApiKey.trim() : undefined;\n\n // Use API key authentication if available, otherwise fall back to SigV4\n const baseFetchFunction = apiKey\n ? createApiKeyFetchFunction(apiKey, options.fetch)\n : createSigV4FetchFunction(async () => {\n const region = loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n });\n\n // If a credential provider is provided, use it to get the credentials.\n if (options.credentialProvider) {\n try {\n return {\n ...(await options.credentialProvider()),\n region,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n throw new Error(\n `AWS credential provider failed: ${errorMessage}. ` +\n 'Please ensure your credential provider returns valid AWS credentials ' +\n 'with accessKeyId and secretAccessKey properties.',\n );\n }\n }\n\n try {\n return {\n region,\n accessKeyId: loadSetting({\n settingValue: options.accessKeyId,\n settingName: 'accessKeyId',\n environmentVariableName: 'AWS_ACCESS_KEY_ID',\n description: 'AWS access key ID',\n }),\n secretAccessKey: loadSetting({\n settingValue: options.secretAccessKey,\n settingName: 'secretAccessKey',\n environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n description: 'AWS secret access key',\n }),\n sessionToken: loadOptionalSetting({\n settingValue: options.sessionToken,\n environmentVariableName: 'AWS_SESSION_TOKEN',\n }),\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (\n errorMessage.includes('AWS_ACCESS_KEY_ID') ||\n errorMessage.includes('accessKeyId')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires AWS credentials. Please provide either:\\n' +\n '1. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables\\n' +\n '2. Provide accessKeyId and secretAccessKey in options\\n' +\n '3. Use a credentialProvider function\\n' +\n '4. Use API key authentication with AWS_BEARER_TOKEN_BEDROCK or apiKey option\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n if (\n errorMessage.includes('AWS_SECRET_ACCESS_KEY') ||\n errorMessage.includes('secretAccessKey')\n ) {\n throw new Error(\n 'AWS SigV4 authentication requires both AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. ' +\n 'Please ensure both credentials are provided.\\n' +\n `Original error: ${errorMessage}`,\n );\n }\n throw error;\n }\n }, options.fetch);\n\n // Wrap with Bedrock event stream to SSE transformer for streaming support\n const fetchFunction = createBedrockAnthropicFetch(baseFetchFunction);\n\n const getBaseURL = (): string =>\n resolveBedrockBaseURL({\n baseURL: options.baseURL,\n getRegion: () =>\n loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n }),\n service: 'bedrock-runtime',\n serviceEndpointUrlEnvironmentVariableName:\n 'AWS_ENDPOINT_URL_BEDROCK_RUNTIME',\n });\n\n const getHeaders = async () => {\n const baseHeaders = (await resolve(options.headers)) ?? {};\n return withUserAgentSuffix(baseHeaders, `ai-sdk/amazon-bedrock/${VERSION}`);\n };\n\n const createChatModel = (modelId: BedrockAnthropicModelId) =>\n new AnthropicMessagesLanguageModel(modelId, {\n provider: 'bedrock.anthropic.messages',\n baseURL: getBaseURL(),\n headers: getHeaders,\n fetch: fetchFunction,\n\n buildRequestUrl: (baseURL, isStreaming) =>\n `${baseURL}/model/${encodeURIComponent(modelId)}/${\n isStreaming ? 'invoke-with-response-stream' : 'invoke'\n }`,\n\n transformRequestBody: (args, betas) => {\n const { model, stream, tool_choice, tools, ...rest } = args;\n\n const transformedToolChoice =\n tool_choice != null\n ? {\n type: tool_choice.type,\n ...(tool_choice.name != null ? { name: tool_choice.name } : {}),\n }\n : undefined;\n\n const requiredBetas = new Set<string>(betas);\n const transformedTools = tools?.map(\n (rawTool: Record<string, unknown>) => {\n // Bedrock rejects the per-tool eager_input_streaming field even when\n // the fine-grained-tool-streaming beta is declared, but the beta alone\n // enables the same behavior, so translate the field into the beta\n const { eager_input_streaming: eagerInputStreaming, ...tool } =\n rawTool;\n if (eagerInputStreaming === true) {\n requiredBetas.add('fine-grained-tool-streaming-2025-05-14');\n }\n\n const toolType = tool.type as string | undefined;\n\n if (toolType && toolType in BEDROCK_TOOL_VERSION_MAP) {\n const newType =\n BEDROCK_TOOL_VERSION_MAP[\n toolType as keyof typeof BEDROCK_TOOL_VERSION_MAP\n ];\n if (newType in BEDROCK_TOOL_BETA_MAP) {\n requiredBetas.add(BEDROCK_TOOL_BETA_MAP[newType]);\n }\n const newName =\n newType in BEDROCK_TOOL_NAME_MAP\n ? BEDROCK_TOOL_NAME_MAP[newType]\n : tool.name;\n return {\n ...tool,\n type: newType,\n name: newName,\n };\n }\n\n if (toolType && toolType in BEDROCK_TOOL_BETA_MAP) {\n requiredBetas.add(BEDROCK_TOOL_BETA_MAP[toolType]);\n }\n\n if (toolType && toolType in BEDROCK_TOOL_NAME_MAP) {\n return {\n ...tool,\n name: BEDROCK_TOOL_NAME_MAP[toolType],\n };\n }\n\n return tool;\n },\n );\n\n return {\n ...rest,\n ...(transformedTools != null ? { tools: transformedTools } : {}),\n ...(transformedToolChoice != null\n ? { tool_choice: transformedToolChoice }\n : {}),\n ...(requiredBetas.size > 0\n ? { anthropic_beta: Array.from(requiredBetas) }\n : {}),\n anthropic_version: 'bedrock-2023-05-31',\n };\n },\n\n // Bedrock Anthropic doesn't support URL sources, force download and base64 conversion\n supportedUrls: () => ({}),\n supportsNativeStructuredOutput: supportsNativeStructuredOutput(modelId),\n supportsStrictTools: supportsStrictTools(modelId),\n });\n\n const provider = function (modelId: BedrockAnthropicModelId) {\n if (new.target) {\n throw new Error(\n 'The Bedrock Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n provider.tools = anthropicTools;\n\n return provider;\n}\n\n/**\n * Default Bedrock Anthropic provider instance.\n */\nexport const bedrockAnthropic = createBedrockAnthropic();\n","import {\n combineHeaders,\n normalizeHeaders,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\nimport { VERSION } from './version';\n\nexport interface BedrockCredentials {\n region: string;\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n}\n\n/**\n * Creates a fetch function that applies AWS Signature Version 4 signing.\n *\n * @param getCredentials - Function that returns the AWS credentials to use when signing.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @param service - The AWS service name to use for SigV4 signing scope. Defaults to 'bedrock'.\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,\n service: string = 'bedrock',\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n // avoid caching globalThis.fetch in case it is patched by other libraries\n const effectiveFetch = fetch ?? globalThis.fetch;\n const request = input instanceof Request ? input : undefined;\n const originalHeaders = combineHeaders(\n normalizeHeaders(request?.headers),\n normalizeHeaders(init?.headers),\n );\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n let effectiveBody: BodyInit | undefined = init?.body ?? undefined;\n if (effectiveBody === undefined && request && request.body !== null) {\n try {\n effectiveBody = await request.clone().text();\n } catch {}\n }\n\n const effectiveMethod = init?.method ?? request?.method;\n\n if (effectiveMethod?.toUpperCase() !== 'POST' || !effectiveBody) {\n return effectiveFetch(input, {\n ...init,\n headers: headersWithUserAgent as HeadersInit,\n });\n }\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const body = prepareBodyString(effectiveBody);\n const credentials = await getCredentials();\n const signer = new AwsV4Signer({\n url,\n method: 'POST',\n headers: Object.entries(headersWithUserAgent),\n body,\n region: credentials.region,\n accessKeyId: credentials.accessKeyId,\n secretAccessKey: credentials.secretAccessKey,\n sessionToken: credentials.sessionToken,\n service,\n });\n\n const signingResult = await signer.sign();\n const signedHeaders = normalizeHeaders(signingResult.headers);\n\n // Use the combined headers directly as HeadersInit\n const combinedHeaders = combineHeaders(headersWithUserAgent, signedHeaders);\n\n return effectiveFetch(input, {\n ...init,\n body,\n headers: combinedHeaders as HeadersInit,\n });\n };\n}\n\nfunction prepareBodyString(body: BodyInit | undefined): string {\n if (typeof body === 'string') {\n return body;\n } else if (body instanceof Uint8Array) {\n return new TextDecoder().decode(body);\n } else if (body instanceof ArrayBuffer) {\n return new TextDecoder().decode(new Uint8Array(body));\n } else {\n return JSON.stringify(body);\n }\n}\n\n/**\n * Creates a fetch function that applies Bearer token authentication.\n *\n * @param apiKey - The API key to use for Bearer token authentication.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @returns A FetchFunction that adds Authorization header with Bearer token to requests.\n */\nexport function createApiKeyFetchFunction(\n apiKey: string,\n fetch?: FetchFunction,\n): FetchFunction {\n return async (\n input: RequestInfo | URL,\n init?: RequestInit,\n ): Promise<Response> => {\n // avoid caching globalThis.fetch in case it is patched by other libraries\n const effectiveFetch = fetch ?? globalThis.fetch;\n const originalHeaders = normalizeHeaders(init?.headers);\n const headersWithUserAgent = withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/amazon-bedrock/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n );\n\n const finalHeaders = combineHeaders(headersWithUserAgent, {\n Authorization: `Bearer ${apiKey}`,\n });\n\n return effectiveFetch(input, {\n ...init,\n headers: finalHeaders as HeadersInit,\n });\n };\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import type { AmazonBedrockChatModelSettings } from './bedrock-chat-options';\n\nexport function isAnthropicModel({\n modelId,\n modelFamily,\n reasoningBudgetTokens,\n}: {\n modelId: string;\n modelFamily?: AmazonBedrockChatModelSettings['modelFamily'];\n reasoningBudgetTokens?: number;\n}): boolean {\n return (\n modelFamily === 'anthropic' ||\n modelId.includes('anthropic') ||\n (modelId.includes(':application-inference-profile/') &&\n reasoningBudgetTokens != null)\n );\n}\n\nexport function supportsStrictTools(modelId: string): boolean {\n return !matchesModel(modelId, MODELS_WITHOUT_STRICT_TOOL_SUPPORT);\n}\n\nexport function supportsNativeStructuredOutput(modelId: string): boolean {\n return !matchesModel(\n modelId,\n MODELS_WITHOUT_RELIABLE_NATIVE_STRUCTURED_OUTPUT,\n );\n}\n\n// Bedrock validates against its own copy of the Messages schema, which rejects\n// `output_config.format` and tool `strict` for the newest Claude models\nconst MODELS_WITHOUT_STRICT_TOOL_SUPPORT = [\n 'claude-opus-4-7',\n 'claude-opus-4-8',\n 'claude-opus-5',\n 'claude-fable-5',\n 'claude-sonnet-5',\n];\n\n// Native structured output is unreliable for additional models even though\n// their strict tool support remains available. Sonnet 4.6 can fail to adhere\n// to complex schemas, while Haiku 4.5 support varies between Bedrock accounts.\nconst MODELS_WITHOUT_RELIABLE_NATIVE_STRUCTURED_OUTPUT = [\n ...MODELS_WITHOUT_STRICT_TOOL_SUPPORT,\n 'claude-sonnet-4-6',\n 'claude-haiku-4-5',\n];\n\nfunction matchesModel(modelId: string, models: string[]): boolean {\n return models.some(model => modelId.includes(model));\n}\n","import {\n loadOptionalSetting,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\n\nconst AWS_PARTITION_DNS_SUFFIXES = [\n { regionPrefix: 'cn-', dnsSuffix: 'amazonaws.com.cn' },\n { regionPrefix: 'us-iso-', dnsSuffix: 'c2s.ic.gov' },\n { regionPrefix: 'us-isob-', dnsSuffix: 'sc2s.sgov.gov' },\n { regionPrefix: 'eu-isoe-', dnsSuffix: 'cloud.adc-e.uk' },\n { regionPrefix: 'us-isof-', dnsSuffix: 'csp.hci.ic.gov' },\n { regionPrefix: 'eusc-', dnsSuffix: 'amazonaws.eu' },\n] as const;\n\nexport function resolveBedrockBaseURL({\n baseURL,\n getRegion,\n service,\n serviceEndpointUrlEnvironmentVariableName,\n}: {\n baseURL: string | undefined;\n getRegion: () => string;\n service: 'bedrock-runtime' | 'bedrock-agent-runtime';\n serviceEndpointUrlEnvironmentVariableName:\n | 'AWS_ENDPOINT_URL_BEDROCK_RUNTIME'\n | 'AWS_ENDPOINT_URL_BEDROCK_AGENT_RUNTIME';\n}): string {\n const resolvedBaseURL =\n baseURL ??\n loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: serviceEndpointUrlEnvironmentVariableName,\n }) ??\n loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'AWS_ENDPOINT_URL',\n });\n\n if (resolvedBaseURL != null) {\n return withoutTrailingSlash(resolvedBaseURL) ?? resolvedBaseURL;\n }\n\n const region = getRegion();\n const dnsSuffix =\n AWS_PARTITION_DNS_SUFFIXES.find(({ regionPrefix }) =>\n region.startsWith(regionPrefix),\n )?.dnsSuffix ?? 'amazonaws.com';\n const generatedBaseURL = `https://${service}.${region}.${dnsSuffix}`;\n\n return withoutTrailingSlash(generatedBaseURL) ?? generatedBaseURL;\n}\n","import {\n convertBase64ToUint8Array,\n safeParseJSON,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { createBedrockEventStreamDecoder } from '../bedrock-event-stream-decoder';\n\nconst bedrockErrorSchema = z.looseObject({\n message: z.string().optional(),\n});\n\nexport function createBedrockAnthropicFetch(\n baseFetch: FetchFunction,\n): FetchFunction {\n return async (url, options) => {\n const response = await baseFetch(url, options);\n\n // Transform Bedrock error responses into Anthropic error format\n // so that anthropicFailedResponseHandler can extract the message.\n if (!response.ok) {\n const text = await response.text();\n const parsed = await safeParseJSON({ text, schema: bedrockErrorSchema });\n\n const message =\n parsed.success && parsed.value.message ? parsed.value.message : text;\n\n const anthropicError = JSON.stringify({\n type: 'error',\n error: { type: 'error', message },\n });\n\n return new Response(anthropicError, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n\n const contentType = response.headers.get('content-type');\n if (\n contentType?.includes('application/vnd.amazon.eventstream') &&\n response.body != null\n ) {\n const transformedBody = transformBedrockEventStreamToSSE(response.body);\n\n return new Response(transformedBody, {\n status: response.status,\n statusText: response.statusText,\n headers: new Headers({\n ...Object.fromEntries(response.headers.entries()),\n 'content-type': 'text/event-stream',\n }),\n });\n }\n\n return response;\n };\n}\n\nfunction transformBedrockEventStreamToSSE(\n body: ReadableStream<Uint8Array>,\n): ReadableStream<Uint8Array> {\n const textEncoder = new TextEncoder();\n\n return createBedrockEventStreamDecoder(body, async (event, controller) => {\n if (event.messageType === 'event') {\n if (event.eventType === 'chunk') {\n const parsed = await safeParseJSON({ text: event.data });\n if (!parsed.success) {\n controller.enqueue(textEncoder.encode(`data: ${event.data}\\n\\n`));\n return;\n }\n const bytes = (parsed.value as { bytes?: string }).bytes;\n if (bytes) {\n const anthropicEvent = new TextDecoder().decode(\n convertBase64ToUint8Array(bytes),\n );\n controller.enqueue(textEncoder.encode(`data: ${anthropicEvent}\\n\\n`));\n } else {\n controller.enqueue(textEncoder.encode(`data: ${event.data}\\n\\n`));\n }\n } else if (event.eventType === 'messageStop') {\n controller.enqueue(textEncoder.encode('data: [DONE]\\n\\n'));\n }\n } else if (event.messageType === 'exception') {\n controller.enqueue(\n textEncoder.encode(\n `data: ${JSON.stringify({ type: 'error', error: event.data })}\\n\\n`,\n ),\n );\n }\n });\n}\n","import { EventStreamCodec } from '@smithy/eventstream-codec';\nimport { toUtf8, fromUtf8 } from '@smithy/util-utf8';\n\nexport interface DecodedEvent {\n messageType: string;\n eventType?: string;\n exceptionType?: string;\n data: string;\n}\n\nexport function createBedrockEventStreamDecoder<T>(\n body: ReadableStream<Uint8Array>,\n processEvent: (\n event: DecodedEvent,\n controller: TransformStreamDefaultController<T>,\n ) => void | Promise<void>,\n): ReadableStream<T> {\n const codec = new EventStreamCodec(toUtf8, fromUtf8);\n let buffer = new Uint8Array(0);\n const textDecoder = new TextDecoder();\n\n return body.pipeThrough(\n new TransformStream<Uint8Array, T>({\n async transform(chunk, controller) {\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n while (buffer.length >= 4) {\n const totalLength = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(0, false);\n\n if (buffer.length < totalLength) {\n break;\n }\n\n const subView = buffer.subarray(0, totalLength);\n const decoded = codec.decode(subView);\n\n buffer = buffer.slice(totalLength);\n\n const messageType = decoded.headers[':message-type']?.value as string;\n const eventType = decoded.headers[':event-type']?.value as\n | string\n | undefined;\n const exceptionType = decoded.headers[':exception-type']?.value as\n | string\n | undefined;\n const data = textDecoder.decode(decoded.body);\n\n await processEvent(\n { messageType, eventType, exceptionType, data },\n controller,\n );\n }\n },\n flush() {\n if (buffer.length > 0) {\n throw new Error(\n `Incomplete Amazon Bedrock event-stream frame: ${buffer.length} buffered bytes remain at end of stream.`,\n );\n }\n },\n }),\n );\n}\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_provider_utils"]}
|
package/dist/anthropic/index.mjs
CHANGED
|
@@ -3,10 +3,9 @@ import {
|
|
|
3
3
|
NoSuchModelError
|
|
4
4
|
} from "@ai-sdk/provider";
|
|
5
5
|
import {
|
|
6
|
-
loadOptionalSetting,
|
|
6
|
+
loadOptionalSetting as loadOptionalSetting2,
|
|
7
7
|
loadSetting,
|
|
8
8
|
resolve,
|
|
9
|
-
withoutTrailingSlash,
|
|
10
9
|
withUserAgentSuffix as withUserAgentSuffix2
|
|
11
10
|
} from "@ai-sdk/provider-utils";
|
|
12
11
|
import {
|
|
@@ -24,7 +23,7 @@ import {
|
|
|
24
23
|
import { AwsV4Signer } from "aws4fetch";
|
|
25
24
|
|
|
26
25
|
// src/version.ts
|
|
27
|
-
var VERSION = true ? "4.0.
|
|
26
|
+
var VERSION = true ? "4.0.177" : "0.0.0-test";
|
|
28
27
|
|
|
29
28
|
// src/bedrock-sigv4-fetch.ts
|
|
30
29
|
function createSigV4FetchFunction(getCredentials, fetch, service = "bedrock") {
|
|
@@ -135,6 +134,44 @@ function matchesModel(modelId, models) {
|
|
|
135
134
|
return models.some((model) => modelId.includes(model));
|
|
136
135
|
}
|
|
137
136
|
|
|
137
|
+
// src/resolve-bedrock-base-url.ts
|
|
138
|
+
import {
|
|
139
|
+
loadOptionalSetting,
|
|
140
|
+
withoutTrailingSlash
|
|
141
|
+
} from "@ai-sdk/provider-utils";
|
|
142
|
+
var AWS_PARTITION_DNS_SUFFIXES = [
|
|
143
|
+
{ regionPrefix: "cn-", dnsSuffix: "amazonaws.com.cn" },
|
|
144
|
+
{ regionPrefix: "us-iso-", dnsSuffix: "c2s.ic.gov" },
|
|
145
|
+
{ regionPrefix: "us-isob-", dnsSuffix: "sc2s.sgov.gov" },
|
|
146
|
+
{ regionPrefix: "eu-isoe-", dnsSuffix: "cloud.adc-e.uk" },
|
|
147
|
+
{ regionPrefix: "us-isof-", dnsSuffix: "csp.hci.ic.gov" },
|
|
148
|
+
{ regionPrefix: "eusc-", dnsSuffix: "amazonaws.eu" }
|
|
149
|
+
];
|
|
150
|
+
function resolveBedrockBaseURL({
|
|
151
|
+
baseURL,
|
|
152
|
+
getRegion,
|
|
153
|
+
service,
|
|
154
|
+
serviceEndpointUrlEnvironmentVariableName
|
|
155
|
+
}) {
|
|
156
|
+
var _a, _b, _c, _d, _e;
|
|
157
|
+
const resolvedBaseURL = (_a = baseURL != null ? baseURL : loadOptionalSetting({
|
|
158
|
+
settingValue: void 0,
|
|
159
|
+
environmentVariableName: serviceEndpointUrlEnvironmentVariableName
|
|
160
|
+
})) != null ? _a : loadOptionalSetting({
|
|
161
|
+
settingValue: void 0,
|
|
162
|
+
environmentVariableName: "AWS_ENDPOINT_URL"
|
|
163
|
+
});
|
|
164
|
+
if (resolvedBaseURL != null) {
|
|
165
|
+
return (_b = withoutTrailingSlash(resolvedBaseURL)) != null ? _b : resolvedBaseURL;
|
|
166
|
+
}
|
|
167
|
+
const region = getRegion();
|
|
168
|
+
const dnsSuffix = (_d = (_c = AWS_PARTITION_DNS_SUFFIXES.find(
|
|
169
|
+
({ regionPrefix }) => region.startsWith(regionPrefix)
|
|
170
|
+
)) == null ? void 0 : _c.dnsSuffix) != null ? _d : "amazonaws.com";
|
|
171
|
+
const generatedBaseURL = `https://${service}.${region}.${dnsSuffix}`;
|
|
172
|
+
return (_e = withoutTrailingSlash(generatedBaseURL)) != null ? _e : generatedBaseURL;
|
|
173
|
+
}
|
|
174
|
+
|
|
138
175
|
// src/anthropic/bedrock-anthropic-fetch.ts
|
|
139
176
|
import {
|
|
140
177
|
convertBase64ToUint8Array,
|
|
@@ -290,7 +327,7 @@ var BEDROCK_TOOL_BETA_MAP = {
|
|
|
290
327
|
tool_search_tool_bm25_20251119: "tool-search-tool-2025-10-19"
|
|
291
328
|
};
|
|
292
329
|
function createBedrockAnthropic(options = {}) {
|
|
293
|
-
const rawApiKey =
|
|
330
|
+
const rawApiKey = loadOptionalSetting2({
|
|
294
331
|
settingValue: options.apiKey,
|
|
295
332
|
environmentVariableName: "AWS_BEARER_TOKEN_BEDROCK"
|
|
296
333
|
});
|
|
@@ -330,7 +367,7 @@ function createBedrockAnthropic(options = {}) {
|
|
|
330
367
|
environmentVariableName: "AWS_SECRET_ACCESS_KEY",
|
|
331
368
|
description: "AWS secret access key"
|
|
332
369
|
}),
|
|
333
|
-
sessionToken:
|
|
370
|
+
sessionToken: loadOptionalSetting2({
|
|
334
371
|
settingValue: options.sessionToken,
|
|
335
372
|
environmentVariableName: "AWS_SESSION_TOKEN"
|
|
336
373
|
})
|
|
@@ -357,17 +394,17 @@ Original error: ${errorMessage}`
|
|
|
357
394
|
}
|
|
358
395
|
}, options.fetch);
|
|
359
396
|
const fetchFunction = createBedrockAnthropicFetch(baseFetchFunction);
|
|
360
|
-
const getBaseURL = () => {
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
};
|
|
397
|
+
const getBaseURL = () => resolveBedrockBaseURL({
|
|
398
|
+
baseURL: options.baseURL,
|
|
399
|
+
getRegion: () => loadSetting({
|
|
400
|
+
settingValue: options.region,
|
|
401
|
+
settingName: "region",
|
|
402
|
+
environmentVariableName: "AWS_REGION",
|
|
403
|
+
description: "AWS region"
|
|
404
|
+
}),
|
|
405
|
+
service: "bedrock-runtime",
|
|
406
|
+
serviceEndpointUrlEnvironmentVariableName: "AWS_ENDPOINT_URL_BEDROCK_RUNTIME"
|
|
407
|
+
});
|
|
371
408
|
const getHeaders = async () => {
|
|
372
409
|
var _a;
|
|
373
410
|
const baseHeaders = (_a = await resolve(options.headers)) != null ? _a : {};
|