@ai-sdk/amazon-bedrock 5.0.119 → 5.0.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # @ai-sdk/amazon-bedrock
2
2
 
3
+ ## 5.0.121
4
+
5
+ ### Patch Changes
6
+
7
+ - 4ea04c6: Defer construction of provider validation schemas until first use to reduce package import time.
8
+ - Updated dependencies [b089ce8]
9
+ - Updated dependencies [39a776b]
10
+ - Updated dependencies [d39b41d]
11
+ - Updated dependencies [c787919]
12
+ - Updated dependencies [0257b47]
13
+ - Updated dependencies [bc1a2e9]
14
+ - @ai-sdk/provider-utils@5.0.65
15
+ - @ai-sdk/anthropic@4.0.85
16
+ - @ai-sdk/openai@4.0.99
17
+
18
+ ## 5.0.120
19
+
20
+ ### Patch Changes
21
+
22
+ - Updated dependencies [9d13c4d]
23
+ - Updated dependencies [0c2a9de]
24
+ - Updated dependencies [200c47f]
25
+ - Updated dependencies [8b728ec]
26
+ - Updated dependencies [3cb1dae]
27
+ - @ai-sdk/anthropic@4.0.84
28
+ - @ai-sdk/provider@4.0.31
29
+ - @ai-sdk/provider-utils@5.0.64
30
+ - @ai-sdk/openai@4.0.98
31
+
3
32
  ## 5.0.119
4
33
 
5
34
  ### Patch Changes
@@ -1,12 +1,12 @@
1
1
  import { InvalidArgumentError, NoSuchModelError } from "@ai-sdk/provider";
2
- import { combineHeaders, convertBase64ToUint8Array, getRuntimeEnvironmentUserAgent, isValidHostnamePart, loadOptionalSetting, loadSetting, normalizeHeaders, resolve, safeParseJSON, withUserAgentSuffix, withoutTrailingSlash } from "@ai-sdk/provider-utils";
2
+ import { combineHeaders, convertBase64ToUint8Array, getRuntimeEnvironmentUserAgent, isValidHostnamePart, lazySchema, loadOptionalSetting, loadSetting, normalizeHeaders, resolve, safeParseJSON, withUserAgentSuffix, withoutTrailingSlash, zodSchema } from "@ai-sdk/provider-utils";
3
3
  import { AnthropicLanguageModel, anthropicTools } from "@ai-sdk/anthropic/internal";
4
4
  import { AwsV4Signer } from "aws4fetch";
5
5
  import { z } from "zod/v4";
6
6
  import { EventStreamCodec } from "@smithy/eventstream-codec";
7
7
  import { fromUtf8, toUtf8 } from "@smithy/util-utf8";
8
8
  //#region src/version.ts
9
- const VERSION = "5.0.119";
9
+ const VERSION = "5.0.121";
10
10
  //#endregion
11
11
  //#region src/amazon-bedrock-sigv4-fetch.ts
12
12
  /**
@@ -210,7 +210,7 @@ function getAmazonBedrockStreamErrorMetadata(type) {
210
210
  }
211
211
  //#endregion
212
212
  //#region src/anthropic/amazon-bedrock-anthropic-fetch.ts
213
- const amazonBedrockErrorSchema = z.looseObject({ message: z.string().optional() });
213
+ const amazonBedrockErrorSchema = lazySchema(() => zodSchema(z.looseObject({ message: z.string().optional() })));
214
214
  function createAmazonBedrockAnthropicFetch(baseFetch) {
215
215
  return async (url, options) => {
216
216
  const response = await baseFetch(url, options);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/version.ts","../../src/amazon-bedrock-sigv4-fetch.ts","../../src/amazon-bedrock-anthropic-model-support.ts","../../src/resolve-amazon-bedrock-base-url.ts","../../src/amazon-bedrock-event-stream-decoder.ts","../../src/amazon-bedrock-stream-error.ts","../../src/anthropic/amazon-bedrock-anthropic-fetch.ts","../../src/anthropic/amazon-bedrock-anthropic-provider.ts"],"sourcesContent":["// 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 {\n combineHeaders,\n normalizeHeaders,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\nimport { VERSION } from './version';\n\nexport interface AmazonBedrockCredentials {\n region: string;\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n}\n\n/**\n * Creates a fetch function that applies AWS Signature Version 4 signing.\n *\n * @param getCredentials - Function that returns the AWS credentials to use when signing.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @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: () =>\n | AmazonBedrockCredentials\n | PromiseLike<AmazonBedrockCredentials>,\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).filter(([, value]) =>\n isAscii(value),\n ),\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\nfunction isAscii(value: string): boolean {\n return !/[\\u0080-\\uffff]/.test(value);\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","import type { AmazonBedrockChatModelSettings } from './amazon-bedrock-chat-language-model-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\n// Bedrock validates its own Messages schema. New Claude generations currently\n// reject native structured output and strict tools, so only known supported\n// Claude models receive those fields. Non-Claude models and opaque inference\n// profile IDs retain their existing behavior.\nexport function supportsStrictTools(modelId: string): boolean {\n return (\n !modelId.includes('claude-') ||\n LEGACY_CLAUDE_PATTERN.test(modelId) ||\n MODELS_WITH_STRICT_TOOL_SUPPORT.some(pattern => pattern.test(modelId))\n );\n}\n\nexport function supportsNativeStructuredOutput(modelId: string): boolean {\n return (\n supportsStrictTools(modelId) &&\n !/claude-(?:sonnet-4-6|haiku-4-5)(?=[-.:]|$)/.test(modelId)\n );\n}\n\nconst LEGACY_CLAUDE_PATTERN = /claude-(?:instant|v?2|3)(?=[-.:]|$)/;\n\nconst MODELS_WITH_STRICT_TOOL_SUPPORT = [\n // Original Claude 4 IDs include a release date instead of a minor version.\n /claude-(?:opus|sonnet)-4(?:-\\d{8})?(?:-v\\d+)?(?=[:.]|$)/,\n /claude-opus-4-(?:1|5|6)(?=[-.:]|$)/,\n /claude-sonnet-4-(?:5|6)(?=[-.:]|$)/,\n /claude-haiku-4-5(?=[-.:]|$)/,\n];\n","import { InvalidArgumentError } from '@ai-sdk/provider';\nimport {\n isValidHostnamePart,\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 resolveAmazonBedrockBaseURL({\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 if (!isValidHostnamePart(region)) {\n throw new InvalidArgumentError({\n argument: 'region',\n message:\n 'Invalid AWS region. Expected a single DNS label (letters, digits, and hyphens). Use `baseURL` for custom endpoints.',\n });\n }\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 { 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 createAmazonBedrockEventStreamDecoder<T>(\n body: ReadableStream<Uint8Array>,\n processEvent: (\n event: DecodedEvent,\n controller: TransformStreamDefaultController<T>,\n ) => void | Promise<void>,\n): ReadableStream<T> {\n const codec = new EventStreamCodec(toUtf8, fromUtf8);\n let buffer = new Uint8Array(0);\n const textDecoder = new TextDecoder();\n\n return body.pipeThrough(\n new TransformStream<Uint8Array, T>({\n async transform(chunk, controller) {\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n while (buffer.length >= 4) {\n const totalLength = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(0, false);\n\n if (buffer.length < totalLength) {\n break;\n }\n\n 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","export type AmazonBedrockStreamErrorType =\n | 'internalServerException'\n | 'modelStreamErrorException'\n | 'serviceUnavailableException'\n | 'throttlingException'\n | 'validationException';\n\nexport function getAmazonBedrockStreamErrorMetadata(type: string): {\n statusCode?: number;\n isRetryable?: boolean;\n} {\n switch (type) {\n case 'internalServerException':\n case 'InternalServerException':\n return { statusCode: 500, isRetryable: true };\n case 'modelStreamErrorException':\n case 'ModelStreamErrorException':\n return { statusCode: 424, isRetryable: true };\n case 'serviceUnavailableException':\n case 'ServiceUnavailableException':\n return { statusCode: 503, isRetryable: true };\n case 'throttlingException':\n case 'ThrottlingException':\n return { statusCode: 429, isRetryable: true };\n case 'validationException':\n case 'ValidationException':\n return { statusCode: 400, isRetryable: false };\n default:\n return {};\n }\n}\n","import {\n convertBase64ToUint8Array,\n safeParseJSON,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { createAmazonBedrockEventStreamDecoder } from '../amazon-bedrock-event-stream-decoder';\nimport { getAmazonBedrockStreamErrorMetadata } from '../amazon-bedrock-stream-error';\n\nconst amazonBedrockErrorSchema = z.looseObject({\n message: z.string().optional(),\n});\n\nexport function createAmazonBedrockAnthropicFetch(\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({\n text,\n schema: amazonBedrockErrorSchema,\n });\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 = transformAmazonBedrockEventStreamToSSE(\n response.body,\n );\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 transformAmazonBedrockEventStreamToSSE(\n body: ReadableStream<Uint8Array>,\n): ReadableStream<Uint8Array> {\n const textEncoder = new TextEncoder();\n\n return createAmazonBedrockEventStreamDecoder(\n body,\n 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(\n textEncoder.encode(`data: ${anthropicEvent}\\n\\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 const parsed = await safeParseJSON({ text: event.data });\n const data = parsed.success ? parsed.value : event.data;\n const message =\n typeof data === 'object' &&\n data != null &&\n typeof (data as Record<string, unknown>).message === 'string'\n ? (data as Record<string, unknown>).message\n : event.data;\n const type = event.eventType ?? event.exceptionType ?? 'error';\n const metadata = getAmazonBedrockStreamErrorMetadata(type);\n\n controller.enqueue(\n textEncoder.encode(\n `data: ${JSON.stringify({\n type: 'error',\n error: {\n type,\n message,\n ...metadata,\n data,\n },\n })}\\n\\n`,\n ),\n );\n }\n },\n );\n}\n","import {\n NoSuchModelError,\n type LanguageModelV4,\n type ProviderV4,\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 AnthropicLanguageModel,\n} from '@ai-sdk/anthropic/internal';\nimport {\n createApiKeyFetchFunction,\n createSigV4FetchFunction,\n type AmazonBedrockCredentials,\n} from '../amazon-bedrock-sigv4-fetch';\nimport {\n supportsNativeStructuredOutput,\n supportsStrictTools,\n} from '../amazon-bedrock-anthropic-model-support';\nimport { resolveAmazonBedrockBaseURL } from '../resolve-amazon-bedrock-base-url';\nimport { createAmazonBedrockAnthropicFetch } from './amazon-bedrock-anthropic-fetch';\nimport type { AmazonBedrockAnthropicModelId } from './amazon-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 AmazonBedrockAnthropicProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: AmazonBedrockAnthropicModelId): LanguageModelV4;\n\n /**\n * Creates a model for text generation.\n */\n languageModel(modelId: AmazonBedrockAnthropicModelId): LanguageModelV4;\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 AmazonBedrockAnthropicProviderSettings {\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<\n Omit<AmazonBedrockCredentials, 'region'>\n >;\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 createAmazonBedrockAnthropic(\n options: AmazonBedrockAnthropicProviderSettings = {},\n): AmazonBedrockAnthropicProvider {\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 = createAmazonBedrockAnthropicFetch(baseFetchFunction);\n\n const getBaseURL = (): string =>\n resolveAmazonBedrockBaseURL({\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: AmazonBedrockAnthropicModelId) =>\n new AnthropicLanguageModel(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 {\n model: _model,\n stream: _stream,\n tool_choice,\n thinking,\n tools,\n ...rest\n } = 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 // Bedrock names the thinking block binding field `mismatch_behavior`, while the\n // Anthropic Messages API names it `prefix_mismatch_behavior`\n // Some AWS regions (us-east-1) will automatically alias the field to `mismatch_behavior`,\n // but others (eu-central-1) fail.\n const transformedThinking =\n thinking?.block_binding != null\n ? {\n ...thinking,\n block_binding: {\n mismatch_behavior:\n thinking.block_binding.prefix_mismatch_behavior,\n },\n }\n : thinking;\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 ...(thinking != null ? { thinking: transformedThinking } : {}),\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: AmazonBedrockAnthropicModelId) {\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 = 'v4' 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 amazonBedrockAnthropic = createAmazonBedrockAnthropic();\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/version.ts","../../src/amazon-bedrock-sigv4-fetch.ts","../../src/amazon-bedrock-anthropic-model-support.ts","../../src/resolve-amazon-bedrock-base-url.ts","../../src/amazon-bedrock-event-stream-decoder.ts","../../src/amazon-bedrock-stream-error.ts","../../src/anthropic/amazon-bedrock-anthropic-fetch.ts","../../src/anthropic/amazon-bedrock-anthropic-provider.ts"],"sourcesContent":["// 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 {\n combineHeaders,\n normalizeHeaders,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\nimport { VERSION } from './version';\n\nexport interface AmazonBedrockCredentials {\n region: string;\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n}\n\n/**\n * Creates a fetch function that applies AWS Signature Version 4 signing.\n *\n * @param getCredentials - Function that returns the AWS credentials to use when signing.\n * @param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n * @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: () =>\n | AmazonBedrockCredentials\n | PromiseLike<AmazonBedrockCredentials>,\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).filter(([, value]) =>\n isAscii(value),\n ),\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\nfunction isAscii(value: string): boolean {\n return !/[\\u0080-\\uffff]/.test(value);\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","import type { AmazonBedrockChatModelSettings } from './amazon-bedrock-chat-language-model-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\n// Bedrock validates its own Messages schema. New Claude generations currently\n// reject native structured output and strict tools, so only known supported\n// Claude models receive those fields. Non-Claude models and opaque inference\n// profile IDs retain their existing behavior.\nexport function supportsStrictTools(modelId: string): boolean {\n return (\n !modelId.includes('claude-') ||\n LEGACY_CLAUDE_PATTERN.test(modelId) ||\n MODELS_WITH_STRICT_TOOL_SUPPORT.some(pattern => pattern.test(modelId))\n );\n}\n\nexport function supportsNativeStructuredOutput(modelId: string): boolean {\n return (\n supportsStrictTools(modelId) &&\n !/claude-(?:sonnet-4-6|haiku-4-5)(?=[-.:]|$)/.test(modelId)\n );\n}\n\nconst LEGACY_CLAUDE_PATTERN = /claude-(?:instant|v?2|3)(?=[-.:]|$)/;\n\nconst MODELS_WITH_STRICT_TOOL_SUPPORT = [\n // Original Claude 4 IDs include a release date instead of a minor version.\n /claude-(?:opus|sonnet)-4(?:-\\d{8})?(?:-v\\d+)?(?=[:.]|$)/,\n /claude-opus-4-(?:1|5|6)(?=[-.:]|$)/,\n /claude-sonnet-4-(?:5|6)(?=[-.:]|$)/,\n /claude-haiku-4-5(?=[-.:]|$)/,\n];\n","import { InvalidArgumentError } from '@ai-sdk/provider';\nimport {\n isValidHostnamePart,\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 resolveAmazonBedrockBaseURL({\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 if (!isValidHostnamePart(region)) {\n throw new InvalidArgumentError({\n argument: 'region',\n message:\n 'Invalid AWS region. Expected a single DNS label (letters, digits, and hyphens). Use `baseURL` for custom endpoints.',\n });\n }\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 { 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 createAmazonBedrockEventStreamDecoder<T>(\n body: ReadableStream<Uint8Array>,\n processEvent: (\n event: DecodedEvent,\n controller: TransformStreamDefaultController<T>,\n ) => void | Promise<void>,\n): ReadableStream<T> {\n const codec = new EventStreamCodec(toUtf8, fromUtf8);\n let buffer = new Uint8Array(0);\n const textDecoder = new TextDecoder();\n\n return body.pipeThrough(\n new TransformStream<Uint8Array, T>({\n async transform(chunk, controller) {\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\n newBuffer.set(buffer);\n newBuffer.set(chunk, buffer.length);\n buffer = newBuffer;\n\n while (buffer.length >= 4) {\n const totalLength = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(0, false);\n\n if (buffer.length < totalLength) {\n break;\n }\n\n 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","export type AmazonBedrockStreamErrorType =\n | 'internalServerException'\n | 'modelStreamErrorException'\n | 'serviceUnavailableException'\n | 'throttlingException'\n | 'validationException';\n\nexport function getAmazonBedrockStreamErrorMetadata(type: string): {\n statusCode?: number;\n isRetryable?: boolean;\n} {\n switch (type) {\n case 'internalServerException':\n case 'InternalServerException':\n return { statusCode: 500, isRetryable: true };\n case 'modelStreamErrorException':\n case 'ModelStreamErrorException':\n return { statusCode: 424, isRetryable: true };\n case 'serviceUnavailableException':\n case 'ServiceUnavailableException':\n return { statusCode: 503, isRetryable: true };\n case 'throttlingException':\n case 'ThrottlingException':\n return { statusCode: 429, isRetryable: true };\n case 'validationException':\n case 'ValidationException':\n return { statusCode: 400, isRetryable: false };\n default:\n return {};\n }\n}\n","import {\n lazySchema,\n zodSchema,\n convertBase64ToUint8Array,\n safeParseJSON,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { createAmazonBedrockEventStreamDecoder } from '../amazon-bedrock-event-stream-decoder';\nimport { getAmazonBedrockStreamErrorMetadata } from '../amazon-bedrock-stream-error';\n\nconst amazonBedrockErrorSchema = lazySchema(() =>\n zodSchema(\n z.looseObject({\n message: z.string().optional(),\n }),\n ),\n);\n\nexport function createAmazonBedrockAnthropicFetch(\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({\n text,\n schema: amazonBedrockErrorSchema,\n });\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 = transformAmazonBedrockEventStreamToSSE(\n response.body,\n );\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 transformAmazonBedrockEventStreamToSSE(\n body: ReadableStream<Uint8Array>,\n): ReadableStream<Uint8Array> {\n const textEncoder = new TextEncoder();\n\n return createAmazonBedrockEventStreamDecoder(\n body,\n 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(\n textEncoder.encode(`data: ${anthropicEvent}\\n\\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 const parsed = await safeParseJSON({ text: event.data });\n const data = parsed.success ? parsed.value : event.data;\n const message =\n typeof data === 'object' &&\n data != null &&\n typeof (data as Record<string, unknown>).message === 'string'\n ? (data as Record<string, unknown>).message\n : event.data;\n const type = event.eventType ?? event.exceptionType ?? 'error';\n const metadata = getAmazonBedrockStreamErrorMetadata(type);\n\n controller.enqueue(\n textEncoder.encode(\n `data: ${JSON.stringify({\n type: 'error',\n error: {\n type,\n message,\n ...metadata,\n data,\n },\n })}\\n\\n`,\n ),\n );\n }\n },\n );\n}\n","import {\n NoSuchModelError,\n type LanguageModelV4,\n type ProviderV4,\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 AnthropicLanguageModel,\n} from '@ai-sdk/anthropic/internal';\nimport {\n createApiKeyFetchFunction,\n createSigV4FetchFunction,\n type AmazonBedrockCredentials,\n} from '../amazon-bedrock-sigv4-fetch';\nimport {\n supportsNativeStructuredOutput,\n supportsStrictTools,\n} from '../amazon-bedrock-anthropic-model-support';\nimport { resolveAmazonBedrockBaseURL } from '../resolve-amazon-bedrock-base-url';\nimport { createAmazonBedrockAnthropicFetch } from './amazon-bedrock-anthropic-fetch';\nimport type { AmazonBedrockAnthropicModelId } from './amazon-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 AmazonBedrockAnthropicProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: AmazonBedrockAnthropicModelId): LanguageModelV4;\n\n /**\n * Creates a model for text generation.\n */\n languageModel(modelId: AmazonBedrockAnthropicModelId): LanguageModelV4;\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 AmazonBedrockAnthropicProviderSettings {\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<\n Omit<AmazonBedrockCredentials, 'region'>\n >;\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 createAmazonBedrockAnthropic(\n options: AmazonBedrockAnthropicProviderSettings = {},\n): AmazonBedrockAnthropicProvider {\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 = createAmazonBedrockAnthropicFetch(baseFetchFunction);\n\n const getBaseURL = (): string =>\n resolveAmazonBedrockBaseURL({\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: AmazonBedrockAnthropicModelId) =>\n new AnthropicLanguageModel(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 {\n model: _model,\n stream: _stream,\n tool_choice,\n thinking,\n tools,\n ...rest\n } = 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 // Bedrock names the thinking block binding field `mismatch_behavior`, while the\n // Anthropic Messages API names it `prefix_mismatch_behavior`\n // Some AWS regions (us-east-1) will automatically alias the field to `mismatch_behavior`,\n // but others (eu-central-1) fail.\n const transformedThinking =\n thinking?.block_binding != null\n ? {\n ...thinking,\n block_binding: {\n mismatch_behavior:\n thinking.block_binding.prefix_mismatch_behavior,\n },\n }\n : thinking;\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 ...(thinking != null ? { thinking: transformedThinking } : {}),\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: AmazonBedrockAnthropicModelId) {\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 = 'v4' 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 amazonBedrockAnthropic = createAmazonBedrockAnthropic();\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -14,35 +14,16 @@ type AmazonBedrockEmbeddingModelSettings = {
14
14
  */
15
15
  modelFamily?: 'titan' | 'cohere' | 'nova';
16
16
  };
17
- declare const amazonBedrockEmbeddingModelOptionsSchema: z.ZodObject<{
18
- dimensions: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<1024>, z.ZodLiteral<512>, z.ZodLiteral<256>]>>;
19
- normalize: z.ZodOptional<z.ZodBoolean>;
20
- embeddingDimension: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<256>, z.ZodLiteral<384>, z.ZodLiteral<1024>, z.ZodLiteral<3072>]>>;
21
- embeddingPurpose: z.ZodOptional<z.ZodEnum<{
22
- GENERIC_INDEX: "GENERIC_INDEX";
23
- TEXT_RETRIEVAL: "TEXT_RETRIEVAL";
24
- IMAGE_RETRIEVAL: "IMAGE_RETRIEVAL";
25
- VIDEO_RETRIEVAL: "VIDEO_RETRIEVAL";
26
- DOCUMENT_RETRIEVAL: "DOCUMENT_RETRIEVAL";
27
- AUDIO_RETRIEVAL: "AUDIO_RETRIEVAL";
28
- GENERIC_RETRIEVAL: "GENERIC_RETRIEVAL";
29
- CLASSIFICATION: "CLASSIFICATION";
30
- CLUSTERING: "CLUSTERING";
31
- }>>;
32
- inputType: z.ZodOptional<z.ZodEnum<{
33
- search_document: "search_document";
34
- search_query: "search_query";
35
- classification: "classification";
36
- clustering: "clustering";
37
- }>>;
38
- truncate: z.ZodOptional<z.ZodEnum<{
39
- NONE: "NONE";
40
- START: "START";
41
- END: "END";
42
- }>>;
43
- outputDimension: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<256>, z.ZodLiteral<512>, z.ZodLiteral<1024>, z.ZodLiteral<1536>]>>;
44
- }, z.core.$strip>;
45
- type AmazonBedrockEmbeddingModelOptions = z.infer<typeof amazonBedrockEmbeddingModelOptionsSchema>;
17
+ declare const amazonBedrockEmbeddingModelOptionsSchema: import("@ai-sdk/provider-utils").LazySchema<{
18
+ dimensions?: 1024 | 512 | 256 | undefined;
19
+ normalize?: boolean | undefined;
20
+ embeddingDimension?: 1024 | 256 | 384 | 3072 | undefined;
21
+ embeddingPurpose?: "GENERIC_INDEX" | "TEXT_RETRIEVAL" | "IMAGE_RETRIEVAL" | "VIDEO_RETRIEVAL" | "DOCUMENT_RETRIEVAL" | "AUDIO_RETRIEVAL" | "GENERIC_RETRIEVAL" | "CLASSIFICATION" | "CLUSTERING" | undefined;
22
+ inputType?: "search_document" | "search_query" | "classification" | "clustering" | undefined;
23
+ truncate?: "NONE" | "START" | "END" | undefined;
24
+ outputDimension?: 1024 | 512 | 256 | 1536 | undefined;
25
+ }>;
26
+ type AmazonBedrockEmbeddingModelOptions = InferSchema<typeof amazonBedrockEmbeddingModelOptionsSchema>;
46
27
  //#endregion
47
28
  //#region src/amazon-bedrock-image-model-options.d.ts
48
29
  declare const amazonBedrockImageModelOptionsSchema: import("@ai-sdk/provider-utils").LazySchema<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/amazon-bedrock-embedding-model-options.ts","../src/amazon-bedrock-image-model-options.ts","../src/amazon-bedrock-chat-language-model-options.ts","../src/amazon-bedrock-image-settings.ts","../src/amazon-bedrock-sigv4-fetch.ts","../src/reranking/amazon-bedrock-reranking-model-options.ts","../src/amazon-bedrock-provider.ts","../src/version.ts"],"mappings":";;;;;;KAEY;KAOA;;;;;;;EAOV;;cAGW,0CAAwC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEnD,EAAA,KAAA;KAEU,qCAAqC,EAAE,aAC1C;;;cC/EI,uEAAoC;;;;;;;;;;KAkCrC,iCAAiC,mBACpC;;;KCvCG;KA6FA;;;;;;;EAOV;;cAqDW,uCAAqC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDhD,EAAA,KAAA;KAEU,wCAAwC,EAAE,aAC7C;;;KCrNG;;;UCUK;EACf;EACA;EACA;EACA;;;;KCVU;KAKA;;;;EAIV;;;;EAKA,+BAA+B;;;;UCmBhB;;;;;EAKf;;;;;;;;;;;;;;;;;;;;;;;;EAyBA;;;;;EAMA;;;;;EAMA;;;;;;;EAQA;;;;EAKA;;;;EAKA,UAAU;;;;;EAMV,QAAQ;;;;;;;EAQR,2BAA2B,YACzB,KAAK;EAIP;;UAGe,8BAA8B;GAE3C,SAAS,0BACT,WAAW,iCACV;EAEH,cACE,SAAS,0BACT,WAAW,iCACV;;;;EAKH,UACE,SAAS,+BACT,WAAW,sCACV;;;;EAKH,eACE,SAAS,+BACT,WAAW,sCACV;;;;EAKH,cACE,SAAS,+BACT,WAAW,sCACV;;;;EAKH,mBACE,SAAS,+BACT,WAAW,sCACV;;;;EAKH,MAAM,SAAS,4BAA4B;;;;EAK3C,WAAW,SAAS,4BAA4B;;;;EAKhD,UAAU,SAAS,gCAAgC;;;;EAKnD,eAAe,SAAS,gCAAgC;;;;EAKxD,cAAc;;;;;wBAMA,oBACd,UAAS,gCACR;;;;qBA+MU,eAAa;;;qBC9Yb"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/amazon-bedrock-embedding-model-options.ts","../src/amazon-bedrock-image-model-options.ts","../src/amazon-bedrock-chat-language-model-options.ts","../src/amazon-bedrock-image-settings.ts","../src/amazon-bedrock-sigv4-fetch.ts","../src/reranking/amazon-bedrock-reranking-model-options.ts","../src/amazon-bedrock-provider.ts","../src/version.ts"],"mappings":";;;;;;KAOY;KAOA;;;;;;;EAOV;;cAGW,2EAAwC;;;;;;;;;KAqFzC,qCAAqC,mBACxC;;;cCvGI,uEAAoC;;;;;;;;;;KAkCrC,iCAAiC,mBACpC;;;KClCG;KA6FA;;;;;;;EAOV;;cAiEW,uCAAqC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDhD,EAAA,KAAA;KAEU,wCAAwC,EAAE,aAC7C;;;KCtOG;;;UCUK;EACf;EACA;EACA;EACA;;;;KCVU;KAKA;;;;EAIV;;;;EAKA,+BAA+B;;;;UCmBhB;;;;;EAKf;;;;;;;;;;;;;;;;;;;;;;;;EAyBA;;;;;EAMA;;;;;EAMA;;;;;;;EAQA;;;;EAKA;;;;EAKA,UAAU;;;;;EAMV,QAAQ;;;;;;;EAQR,2BAA2B,YACzB,KAAK;EAIP;;UAGe,8BAA8B;GAE3C,SAAS,0BACT,WAAW,iCACV;EAEH,cACE,SAAS,0BACT,WAAW,iCACV;;;;EAKH,UACE,SAAS,+BACT,WAAW,sCACV;;;;EAKH,eACE,SAAS,+BACT,WAAW,sCACV;;;;EAKH,cACE,SAAS,+BACT,WAAW,sCACV;;;;EAKH,mBACE,SAAS,+BACT,WAAW,sCACV;;;;EAKH,MAAM,SAAS,4BAA4B;;;;EAK3C,WAAW,SAAS,4BAA4B;;;;EAKhD,UAAU,SAAS,gCAAgC;;;;EAKnD,eAAe,SAAS,gCAAgC;;;;EAKxD,cAAc;;;;;wBAMA,oBACd,UAAS,gCACR;;;;qBA+MU,eAAa;;;qBC9Yb"}
package/dist/index.js CHANGED
@@ -62,7 +62,7 @@ const BEDROCK_VIDEO_MIME_TYPES = {
62
62
  * Bedrock file part provider options for document-specific features.
63
63
  * These options apply to individual file parts (documents).
64
64
  */
65
- const amazonBedrockFilePartProviderOptions = z.object({
65
+ const amazonBedrockFilePartProviderOptions = lazySchema(() => zodSchema(z.object({
66
66
  /**
67
67
  * Citation configuration for this document.
68
68
  * When enabled, this document will generate citations in the response.
@@ -71,24 +71,24 @@ citations: z.object({
71
71
  /**
72
72
  * Enable citations for this document
73
73
  */
74
- enabled: z.boolean() }).optional() });
74
+ enabled: z.boolean() }).optional() })));
75
75
  /**
76
76
  * Amazon Bedrock text part provider options for guardrail content.
77
77
  * These options apply to individual text parts.
78
78
  */
79
- const amazonBedrockTextPartProviderOptions = z.object({
79
+ const amazonBedrockTextPartProviderOptions = lazySchema(() => zodSchema(z.object({
80
80
  guardContent: z.boolean().optional(),
81
81
  guardContentQualifiers: z.array(z.enum([
82
82
  "grounding_source",
83
83
  "query",
84
84
  "guard_content"
85
85
  ])).optional()
86
- });
86
+ })));
87
87
  /**
88
88
  * Amazon Bedrock image part provider options for guardrail content.
89
89
  * These options apply to individual image parts.
90
90
  */
91
- const amazonBedrockImagePartProviderOptions = z.object({ guardContent: z.boolean().optional() });
91
+ const amazonBedrockImagePartProviderOptions = lazySchema(() => zodSchema(z.object({ guardContent: z.boolean().optional() })));
92
92
  const amazonBedrockLanguageModelChatOptions = z.object({
93
93
  /**
94
94
  * Determines how structured outputs are generated for Anthropic models.
@@ -173,10 +173,10 @@ const MODELS_WITH_STRICT_TOOL_SUPPORT = [
173
173
  ];
174
174
  //#endregion
175
175
  //#region src/amazon-bedrock-error.ts
176
- const AmazonBedrockErrorSchema = z.object({
176
+ const AmazonBedrockErrorSchema = lazySchema(() => zodSchema(z.object({
177
177
  message: z.string(),
178
178
  type: z.string().nullish()
179
- });
179
+ })));
180
180
  const amazonBedrockFailedResponseHandler = createJsonErrorResponseHandler({
181
181
  errorSchema: AmazonBedrockErrorSchema,
182
182
  errorToMessage: (error) => error.type == null ? error.message : `${error.type}: ${error.message}`
@@ -476,11 +476,11 @@ function convertAmazonBedrockUsage(usage) {
476
476
  }
477
477
  //#endregion
478
478
  //#region src/amazon-bedrock-reasoning-metadata.ts
479
- const amazonBedrockReasoningMetadataSchema = z.object({
479
+ const amazonBedrockReasoningMetadataSchema = lazySchema(() => zodSchema(z.object({
480
480
  signature: z.string().optional(),
481
481
  redactedData: z.string().optional(),
482
482
  redactedContent: z.string().optional()
483
- });
483
+ })));
484
484
  //#endregion
485
485
  //#region src/normalize-tool-call-id.ts
486
486
  /**
@@ -958,14 +958,14 @@ function mapAmazonBedrockFinishReason(finishReason, isJsonResponseFromTool) {
958
958
  }
959
959
  //#endregion
960
960
  //#region src/amazon-bedrock-chat-language-model.ts
961
- const anthropicProviderOptions = z.object({
961
+ const anthropicProviderOptions = lazySchema(() => zodSchema(z.object({
962
962
  disableParallelToolUse: z.boolean().optional(),
963
963
  structuredOutputMode: z.enum([
964
964
  "outputFormat",
965
965
  "jsonTool",
966
966
  "auto"
967
967
  ]).optional()
968
- });
968
+ })));
969
969
  function createAmazonBedrockStreamError({ type, error, data }) {
970
970
  const message = typeof error.message === "string" ? error.message : `Amazon Bedrock stream failed with ${type}`;
971
971
  return createProviderStreamError({
@@ -1790,16 +1790,16 @@ const AmazonBedrockToolUseSchema = z.object({
1790
1790
  name: z.string(),
1791
1791
  input: z.unknown().optional()
1792
1792
  });
1793
- const AmazonBedrockReasoningTextSchema = z.object({
1793
+ const AmazonBedrockReasoningTextSchema = () => z.object({
1794
1794
  signature: z.string().nullish(),
1795
1795
  text: z.string()
1796
1796
  });
1797
- const AmazonBedrockRedactedReasoningSchema = z.object({ data: z.string() });
1797
+ const AmazonBedrockRedactedReasoningSchema = () => z.object({ data: z.string() });
1798
1798
  const AmazonBedrockCacheDetailSchema = z.object({
1799
1799
  inputTokens: z.number(),
1800
1800
  ttl: z.string()
1801
1801
  }).catchall(z.json());
1802
- const AmazonBedrockResponseSchema = z.object({
1802
+ const AmazonBedrockResponseSchema = lazySchema(() => zodSchema(z.object({
1803
1803
  metrics: z.object({ latencyMs: z.number() }).nullish(),
1804
1804
  output: z.object({ message: z.object({
1805
1805
  content: z.array(z.object({
@@ -1807,8 +1807,8 @@ const AmazonBedrockResponseSchema = z.object({
1807
1807
  citationsContent: z.object({ content: z.array(z.object({ text: z.string().nullish() })).nullish() }).nullish(),
1808
1808
  toolUse: AmazonBedrockToolUseSchema.nullish(),
1809
1809
  reasoningContent: z.union([
1810
- z.object({ reasoningText: AmazonBedrockReasoningTextSchema }),
1811
- z.object({ redactedReasoning: AmazonBedrockRedactedReasoningSchema }),
1810
+ z.object({ reasoningText: AmazonBedrockReasoningTextSchema() }),
1811
+ z.object({ redactedReasoning: AmazonBedrockRedactedReasoningSchema() }),
1812
1812
  z.object({ redactedContent: z.string() })
1813
1813
  ]).nullish()
1814
1814
  })),
@@ -1827,7 +1827,7 @@ const AmazonBedrockResponseSchema = z.object({
1827
1827
  cacheWriteInputTokens: z.number().nullish(),
1828
1828
  cacheDetails: z.array(AmazonBedrockCacheDetailSchema).nullish()
1829
1829
  }).catchall(z.json())
1830
- });
1830
+ })));
1831
1831
  const AmazonBedrockStreamSchema = z.object({
1832
1832
  contentBlockDelta: z.object({
1833
1833
  contentBlockIndex: z.number(),
@@ -1950,7 +1950,7 @@ function resolveAmazonBedrockReasoningConfig({ reasoning, amazonBedrockOptions,
1950
1950
  }
1951
1951
  //#endregion
1952
1952
  //#region src/amazon-bedrock-embedding-model-options.ts
1953
- const amazonBedrockEmbeddingModelOptionsSchema = z.object({
1953
+ const amazonBedrockEmbeddingModelOptionsSchema = lazySchema(() => zodSchema(z.object({
1954
1954
  /**
1955
1955
  * The number of dimensions the resulting output embeddings should have (defaults to 1024).
1956
1956
  * Only supported in amazon.titan-embed-text-v2:0.
@@ -2021,7 +2021,7 @@ const amazonBedrockEmbeddingModelOptionsSchema = z.object({
2021
2021
  z.literal(1024),
2022
2022
  z.literal(1536)
2023
2023
  ]).optional()
2024
- });
2024
+ })));
2025
2025
  //#endregion
2026
2026
  //#region src/amazon-bedrock-embedding-model.ts
2027
2027
  var AmazonBedrockEmbeddingModel = class AmazonBedrockEmbeddingModel {
@@ -2123,7 +2123,7 @@ function isNovaEmbeddingModel(modelId) {
2123
2123
  function detectEmbeddingModelFamily(modelId) {
2124
2124
  return isNovaEmbeddingModel(modelId) ? "nova" : isCohereEmbeddingModel(modelId) ? "cohere" : "titan";
2125
2125
  }
2126
- const AmazonBedrockEmbeddingResponseSchema = z.union([
2126
+ const AmazonBedrockEmbeddingResponseSchema = lazySchema(() => zodSchema(z.union([
2127
2127
  z.object({
2128
2128
  embedding: z.array(z.number()),
2129
2129
  inputTextTokenCount: z.number()
@@ -2137,7 +2137,7 @@ const AmazonBedrockEmbeddingResponseSchema = z.union([
2137
2137
  }),
2138
2138
  z.object({ embeddings: z.array(z.array(z.number())) }),
2139
2139
  z.object({ embeddings: z.object({ float: z.array(z.array(z.number())) }) })
2140
- ]);
2140
+ ])));
2141
2141
  //#endregion
2142
2142
  //#region src/amazon-bedrock-image-settings.ts
2143
2143
  const modelMaxImagesPerCall = { "amazon.nova-canvas-v1:0": 5 };
@@ -2323,7 +2323,7 @@ function getBase64Data(file) {
2323
2323
  if (file.data instanceof Uint8Array) return convertUint8ArrayToBase64(file.data);
2324
2324
  return file.data;
2325
2325
  }
2326
- const amazonBedrockImageResponseSchema = z.object({
2326
+ const amazonBedrockImageResponseSchema = lazySchema(() => zodSchema(z.object({
2327
2327
  images: z.array(z.string()).optional(),
2328
2328
  id: z.string().optional(),
2329
2329
  status: z.string().optional(),
@@ -2331,10 +2331,10 @@ const amazonBedrockImageResponseSchema = z.object({
2331
2331
  progress: z.unknown().optional(),
2332
2332
  details: z.record(z.string(), z.unknown()).optional(),
2333
2333
  preview: z.unknown().optional()
2334
- });
2334
+ })));
2335
2335
  //#endregion
2336
2336
  //#region src/version.ts
2337
- const VERSION = "5.0.119";
2337
+ const VERSION = "5.0.121";
2338
2338
  //#endregion
2339
2339
  //#region src/amazon-bedrock-sigv4-fetch.ts
2340
2340
  /**