{"version":3,"sources":["../src/bedrock-provider.ts","../src/bedrock-chat-language-model.ts","../src/bedrock-api-types.ts","../src/bedrock-chat-options.ts","../src/bedrock-error.ts","../src/bedrock-event-stream-response-handler.ts","../src/bedrock-prepare-tools.ts","../src/convert-to-bedrock-chat-messages.ts","../src/map-bedrock-finish-reason.ts","../src/bedrock-embedding-model.ts","../src/bedrock-embedding-options.ts","../src/bedrock-image-model.ts","../src/bedrock-image-settings.ts","../src/headers-utils.ts","../src/bedrock-sigv4-fetch.ts"],"sourcesContent":["import {\n  EmbeddingModelV2,\n  ImageModelV2,\n  LanguageModelV2,\n  ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n  FetchFunction,\n  generateId,\n  loadOptionalSetting,\n  loadSetting,\n  withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { anthropicTools } from '@ai-sdk/anthropic/internal';\nimport { BedrockChatLanguageModel } from './bedrock-chat-language-model';\nimport { BedrockChatModelId } from './bedrock-chat-options';\nimport { BedrockEmbeddingModel } from './bedrock-embedding-model';\nimport { BedrockEmbeddingModelId } from './bedrock-embedding-options';\nimport { BedrockImageModel } from './bedrock-image-model';\nimport { BedrockImageModelId } from './bedrock-image-settings';\nimport {\n  BedrockCredentials,\n  createSigV4FetchFunction,\n  createApiKeyFetchFunction,\n} from './bedrock-sigv4-fetch';\n\nexport interface AmazonBedrockProviderSettings {\n  /**\nThe AWS region to use for the Bedrock provider. Defaults to the value of the\n`AWS_REGION` environment variable.\n   */\n  region?: string;\n\n  /**\nAPI key for authenticating requests using Bearer token authentication.\nWhen provided, this will be used instead of AWS SigV4 authentication.\nDefaults to the value of the `AWS_BEARER_TOKEN_BEDROCK` environment variable.\n\n@example\n```typescript\n// Using API key directly\nconst bedrock = createAmazonBedrock({\n  apiKey: 'your-api-key-here',\n  region: 'us-east-1'\n});\n\n// Using environment variable AWS_BEARER_TOKEN_BEDROCK\nconst bedrock = createAmazonBedrock({\n  region: 'us-east-1'\n});\n```\n\nNote: When `apiKey` is provided, it takes precedence over AWS SigV4 authentication.\nIf neither `apiKey` nor `AWS_BEARER_TOKEN_BEDROCK` environment variable is set,\nthe provider will fall back to AWS SigV4 authentication using AWS credentials.\n   */\n  apiKey?: string;\n\n  /**\nThe AWS access key ID to use for the Bedrock provider. Defaults to the value of the\n`AWS_ACCESS_KEY_ID` environment variable.\n   */\n  accessKeyId?: string;\n\n  /**\nThe AWS secret access key to use for the Bedrock provider. Defaults to the value of the\n`AWS_SECRET_ACCESS_KEY` environment variable.\n   */\n  secretAccessKey?: string;\n\n  /**\nThe AWS session token to use for the Bedrock provider. Defaults to the value of the\n`AWS_SESSION_TOKEN` environment variable.\n   */\n  sessionToken?: string;\n\n  /**\nBase URL for the Bedrock API calls.\n   */\n  baseURL?: string;\n\n  /**\nCustom headers to include in the requests.\n   */\n  headers?: Record<string, string>;\n\n  /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n  fetch?: FetchFunction;\n\n  /**\nThe AWS credential provider to use for the Bedrock provider to get dynamic\ncredentials similar to the AWS SDK. Setting a provider here will cause its\ncredential values to be used instead of the `accessKeyId`, `secretAccessKey`,\nand `sessionToken` settings.\n   */\n  credentialProvider?: () => PromiseLike<Omit<BedrockCredentials, 'region'>>;\n\n  // for testing\n  generateId?: () => string;\n}\n\nexport interface AmazonBedrockProvider extends ProviderV2 {\n  (modelId: BedrockChatModelId): LanguageModelV2;\n\n  languageModel(modelId: BedrockChatModelId): LanguageModelV2;\n\n  embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV2<string>;\n\n  /**\nCreates a model for image generation.\n   */\n  image(modelId: BedrockImageModelId): ImageModelV2;\n\n  /**\nCreates a model for image generation.\n   */\n  imageModel(modelId: BedrockImageModelId): ImageModelV2;\n\n  /**\nAnthropic-specific tools that can be used with Anthropic models on Bedrock.\n   */\n  tools: typeof anthropicTools;\n}\n\n/**\nCreate an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n  options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n  // Check for API key authentication first\n  const rawApiKey = loadOptionalSetting({\n    settingValue: options.apiKey,\n    environmentVariableName: 'AWS_BEARER_TOKEN_BEDROCK',\n  });\n\n  // FIX 1: Validate API key to ensure proper fallback to SigV4\n  // Only use API key if it's a non-empty, non-whitespace string\n  const apiKey =\n    rawApiKey && rawApiKey.trim().length > 0 ? rawApiKey.trim() : undefined;\n\n  // Use API key authentication if available, otherwise fall back to SigV4\n  const fetchFunction = apiKey\n    ? createApiKeyFetchFunction(apiKey, options.fetch)\n    : createSigV4FetchFunction(async () => {\n        const region = loadSetting({\n          settingValue: options.region,\n          settingName: 'region',\n          environmentVariableName: 'AWS_REGION',\n          description: 'AWS region',\n        });\n\n        // If a credential provider is provided, use it to get the credentials.\n        if (options.credentialProvider) {\n          try {\n            return {\n              ...(await options.credentialProvider()),\n              region,\n            };\n          } catch (error) {\n            // Error handling for credential provider failures\n            const errorMessage =\n              error instanceof Error ? error.message : String(error);\n            throw new Error(\n              `AWS credential provider failed: ${errorMessage}. ` +\n                'Please ensure your credential provider returns valid AWS credentials ' +\n                'with accessKeyId and secretAccessKey properties.',\n            );\n          }\n        }\n\n        // Enhanced error handling for SigV4 credential loading\n        try {\n          return {\n            region,\n            accessKeyId: loadSetting({\n              settingValue: options.accessKeyId,\n              settingName: 'accessKeyId',\n              environmentVariableName: 'AWS_ACCESS_KEY_ID',\n              description: 'AWS access key ID',\n            }),\n            secretAccessKey: loadSetting({\n              settingValue: options.secretAccessKey,\n              settingName: 'secretAccessKey',\n              environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n              description: 'AWS secret access key',\n            }),\n            sessionToken: loadOptionalSetting({\n              settingValue: options.sessionToken,\n              environmentVariableName: 'AWS_SESSION_TOKEN',\n            }),\n          };\n        } catch (error) {\n          // Provide helpful error message for missing AWS credentials\n          const errorMessage =\n            error instanceof Error ? error.message : String(error);\n          if (\n            errorMessage.includes('AWS_ACCESS_KEY_ID') ||\n            errorMessage.includes('accessKeyId')\n          ) {\n            throw new Error(\n              'AWS SigV4 authentication requires AWS credentials. Please provide either:\\n' +\n                '1. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables\\n' +\n                '2. Provide accessKeyId and secretAccessKey in options\\n' +\n                '3. Use a credentialProvider function\\n' +\n                '4. Use API key authentication with AWS_BEARER_TOKEN_BEDROCK or apiKey option\\n' +\n                `Original error: ${errorMessage}`,\n            );\n          }\n          if (\n            errorMessage.includes('AWS_SECRET_ACCESS_KEY') ||\n            errorMessage.includes('secretAccessKey')\n          ) {\n            throw new Error(\n              'AWS SigV4 authentication requires both AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. ' +\n                'Please ensure both credentials are provided.\\n' +\n                `Original error: ${errorMessage}`,\n            );\n          }\n          // Re-throw other errors as-is\n          throw error;\n        }\n      }, options.fetch);\n\n  const getBaseUrl = (): string =>\n    withoutTrailingSlash(\n      options.baseURL ??\n        `https://bedrock-runtime.${loadSetting({\n          settingValue: options.region,\n          settingName: 'region',\n          environmentVariableName: 'AWS_REGION',\n          description: 'AWS region',\n        })}.amazonaws.com`,\n    ) ?? `https://bedrock-runtime.us-east-1.amazonaws.com`;\n\n  const createChatModel = (modelId: BedrockChatModelId) =>\n    new BedrockChatLanguageModel(modelId, {\n      baseUrl: getBaseUrl,\n      headers: options.headers ?? {},\n      fetch: fetchFunction,\n      generateId,\n    });\n\n  const provider = function (modelId: BedrockChatModelId) {\n    if (new.target) {\n      throw new Error(\n        'The Amazon Bedrock model function cannot be called with the new keyword.',\n      );\n    }\n\n    return createChatModel(modelId);\n  };\n\n  const createEmbeddingModel = (modelId: BedrockEmbeddingModelId) =>\n    new BedrockEmbeddingModel(modelId, {\n      baseUrl: getBaseUrl,\n      headers: options.headers ?? {},\n      fetch: fetchFunction,\n    });\n\n  const createImageModel = (modelId: BedrockImageModelId) =>\n    new BedrockImageModel(modelId, {\n      baseUrl: getBaseUrl,\n      headers: options.headers ?? {},\n      fetch: fetchFunction,\n    });\n\n  provider.languageModel = createChatModel;\n  provider.embedding = createEmbeddingModel;\n  provider.textEmbedding = createEmbeddingModel;\n  provider.textEmbeddingModel = createEmbeddingModel;\n  provider.image = createImageModel;\n  provider.imageModel = createImageModel;\n  provider.tools = anthropicTools;\n\n  return provider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n  JSONObject,\n  LanguageModelV2,\n  LanguageModelV2CallWarning,\n  LanguageModelV2Content,\n  LanguageModelV2FinishReason,\n  LanguageModelV2Reasoning,\n  LanguageModelV2StreamPart,\n  LanguageModelV2Usage,\n  SharedV2ProviderMetadata,\n  LanguageModelV2FunctionTool,\n} from '@ai-sdk/provider';\nimport {\n  FetchFunction,\n  ParseResult,\n  Resolvable,\n  combineHeaders,\n  createJsonErrorResponseHandler,\n  createJsonResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n  resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n  BEDROCK_STOP_REASONS,\n  BedrockConverseInput,\n  BedrockStopReason,\n} from './bedrock-api-types';\nimport {\n  BedrockChatModelId,\n  bedrockProviderOptions,\n} from './bedrock-chat-options';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { createBedrockEventStreamResponseHandler } from './bedrock-event-stream-response-handler';\nimport { prepareTools } from './bedrock-prepare-tools';\nimport { convertToBedrockChatMessages } from './convert-to-bedrock-chat-messages';\nimport { mapBedrockFinishReason } from './map-bedrock-finish-reason';\n\ntype BedrockChatConfig = {\n  baseUrl: () => string;\n  headers: Resolvable<Record<string, string | undefined>>;\n  fetch?: FetchFunction;\n  generateId: () => string;\n};\n\nexport class BedrockChatLanguageModel implements LanguageModelV2 {\n  readonly specificationVersion = 'v2';\n  readonly provider = 'amazon-bedrock';\n\n  constructor(\n    readonly modelId: BedrockChatModelId,\n    private readonly config: BedrockChatConfig,\n  ) {}\n\n  private async getArgs({\n    prompt,\n    maxOutputTokens,\n    temperature,\n    topP,\n    topK,\n    frequencyPenalty,\n    presencePenalty,\n    stopSequences,\n    responseFormat,\n    seed,\n    tools,\n    toolChoice,\n    providerOptions,\n  }: Parameters<LanguageModelV2['doGenerate']>[0]): Promise<{\n    command: BedrockConverseInput;\n    warnings: LanguageModelV2CallWarning[];\n    usesJsonResponseTool: boolean;\n    betas: Set<string>;\n  }> {\n    // Parse provider options\n    const bedrockOptions =\n      (await parseProviderOptions({\n        provider: 'bedrock',\n        providerOptions,\n        schema: bedrockProviderOptions,\n      })) ?? {};\n\n    const warnings: LanguageModelV2CallWarning[] = [];\n\n    if (frequencyPenalty != null) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'frequencyPenalty',\n      });\n    }\n\n    if (presencePenalty != null) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'presencePenalty',\n      });\n    }\n\n    if (seed != null) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'seed',\n      });\n    }\n\n    if (\n      responseFormat != null &&\n      responseFormat.type !== 'text' &&\n      responseFormat.type !== 'json'\n    ) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'responseFormat',\n        details: 'Only text and json response formats are supported.',\n      });\n    }\n\n    if (tools != null && responseFormat?.type === 'json') {\n      if (tools.length > 0) {\n        warnings.push({\n          type: 'other',\n          message:\n            'JSON response format does not support tools. ' +\n            'The provided tools are ignored.',\n        });\n      }\n    }\n\n    const jsonResponseTool: LanguageModelV2FunctionTool | undefined =\n      responseFormat?.type === 'json' && responseFormat.schema != null\n        ? {\n            type: 'function',\n            name: 'json',\n            description: 'Respond with a JSON object.',\n            inputSchema: responseFormat.schema,\n          }\n        : undefined;\n\n    const { toolConfig, additionalTools, toolWarnings, betas } = prepareTools({\n      tools: jsonResponseTool ? [jsonResponseTool, ...(tools ?? [])] : tools,\n      toolChoice:\n        jsonResponseTool != null\n          ? { type: 'tool', toolName: jsonResponseTool.name }\n          : toolChoice,\n      modelId: this.modelId,\n    });\n\n    warnings.push(...toolWarnings);\n\n    if (additionalTools) {\n      bedrockOptions.additionalModelRequestFields = {\n        ...bedrockOptions.additionalModelRequestFields,\n        ...additionalTools,\n      };\n    }\n\n    const isThinking = bedrockOptions.reasoningConfig?.type === 'enabled';\n    const thinkingBudget = bedrockOptions.reasoningConfig?.budgetTokens;\n\n    const inferenceConfig = {\n      ...(maxOutputTokens != null && { maxOutputTokens }),\n      ...(temperature != null && { temperature }),\n      ...(topP != null && { topP }),\n      ...(topK != null && { topK }),\n      ...(stopSequences != null && { stopSequences }),\n    };\n\n    // Adjust maxOutputTokens if thinking is enabled\n    if (isThinking && thinkingBudget != null) {\n      if (inferenceConfig.maxOutputTokens != null) {\n        inferenceConfig.maxOutputTokens += thinkingBudget;\n      } else {\n        inferenceConfig.maxOutputTokens = thinkingBudget + 4096; // Default + thinking budget maxOutputTokens = 4096, TODO update default in v5\n      }\n      // Add them to additional model request fields\n      // Add thinking config to additionalModelRequestFields\n      bedrockOptions.additionalModelRequestFields = {\n        ...bedrockOptions.additionalModelRequestFields,\n        thinking: {\n          type: bedrockOptions.reasoningConfig?.type,\n          budget_tokens: thinkingBudget,\n        },\n      };\n    }\n\n    // Remove temperature if thinking is enabled\n    if (isThinking && inferenceConfig.temperature != null) {\n      delete inferenceConfig.temperature;\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'temperature',\n        details: 'temperature is not supported when thinking is enabled',\n      });\n    }\n\n    // Remove topP if thinking is enabled\n    if (isThinking && inferenceConfig.topP != null) {\n      delete inferenceConfig.topP;\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'topP',\n        details: 'topP is not supported when thinking is enabled',\n      });\n    }\n\n    if (isThinking && inferenceConfig.topK != null) {\n      delete inferenceConfig.topK;\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'topK',\n        details: 'topK is not supported when thinking is enabled',\n      });\n    }\n\n    // Filter tool content from prompt when no tools are available\n    const hasAnyTools = (toolConfig.tools?.length ?? 0) > 0 || additionalTools;\n    let filteredPrompt = prompt;\n\n    if (!hasAnyTools) {\n      const hasToolContent = prompt.some(\n        message =>\n          'content' in message &&\n          Array.isArray(message.content) &&\n          message.content.some(\n            part => part.type === 'tool-call' || part.type === 'tool-result',\n          ),\n      );\n\n      if (hasToolContent) {\n        filteredPrompt = prompt\n          .map(message =>\n            message.role === 'system'\n              ? message\n              : {\n                  ...message,\n                  content: message.content.filter(\n                    part =>\n                      part.type !== 'tool-call' && part.type !== 'tool-result',\n                  ),\n                },\n          )\n          .filter(\n            message => message.role === 'system' || message.content.length > 0,\n          ) as typeof prompt;\n\n        warnings.push({\n          type: 'unsupported-setting',\n          setting: 'toolContent',\n          details:\n            'Tool calls and results removed from conversation because Bedrock does not support tool content without active tools.',\n        });\n      }\n    }\n\n    const { system, messages } =\n      await convertToBedrockChatMessages(filteredPrompt);\n\n    // Filter out reasoningConfig from providerOptions.bedrock to prevent sending it to Bedrock API\n    const { reasoningConfig: _, ...filteredBedrockOptions } =\n      providerOptions?.bedrock || {};\n\n    return {\n      command: {\n        system,\n        messages,\n        additionalModelRequestFields:\n          bedrockOptions.additionalModelRequestFields,\n        ...(Object.keys(inferenceConfig).length > 0 && {\n          inferenceConfig,\n        }),\n        ...filteredBedrockOptions,\n        ...(toolConfig.tools !== undefined && toolConfig.tools.length > 0\n          ? { toolConfig }\n          : {}),\n      },\n      warnings,\n      usesJsonResponseTool: jsonResponseTool != null,\n      betas,\n    };\n  }\n\n  readonly supportedUrls: Record<string, RegExp[]> = {\n    // no supported urls for bedrock\n  };\n\n  private async getHeaders({\n    betas,\n    headers,\n  }: {\n    betas: Set<string>;\n    headers: Record<string, string | undefined> | undefined;\n  }) {\n    return combineHeaders(\n      await resolve(this.config.headers),\n      betas.size > 0 ? { 'anthropic-beta': Array.from(betas).join(',') } : {},\n      headers,\n    );\n  }\n\n  async doGenerate(\n    options: Parameters<LanguageModelV2['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n    const {\n      command: args,\n      warnings,\n      usesJsonResponseTool,\n      betas,\n    } = await this.getArgs(options);\n\n    const url = `${this.getUrl(this.modelId)}/converse`;\n    const { value: response, responseHeaders } = await postJsonToApi({\n      url,\n      headers: await this.getHeaders({ betas, headers: options.headers }),\n      body: args,\n      failedResponseHandler: createJsonErrorResponseHandler({\n        errorSchema: BedrockErrorSchema,\n        errorToMessage: error => `${error.message ?? 'Unknown error'}`,\n      }),\n      successfulResponseHandler: createJsonResponseHandler(\n        BedrockResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const content: Array<LanguageModelV2Content> = [];\n\n    // map response content to content array\n    for (const part of response.output.message.content) {\n      // text\n      if (part.text) {\n        // when a json response tool is used, the tool call is returned as text,\n        // so we ignore the text content:\n        if (!usesJsonResponseTool) {\n          content.push({ type: 'text', text: part.text });\n        }\n      }\n\n      // reasoning\n      if (part.reasoningContent) {\n        if ('reasoningText' in part.reasoningContent) {\n          const reasoning: LanguageModelV2Reasoning = {\n            type: 'reasoning',\n            text: part.reasoningContent.reasoningText.text,\n          };\n\n          if (part.reasoningContent.reasoningText.signature) {\n            reasoning.providerMetadata = {\n              bedrock: {\n                signature: part.reasoningContent.reasoningText.signature,\n              } satisfies BedrockReasoningMetadata,\n            };\n          }\n\n          content.push(reasoning);\n        } else if ('redactedReasoning' in part.reasoningContent) {\n          content.push({\n            type: 'reasoning',\n            text: '',\n            providerMetadata: {\n              bedrock: {\n                redactedData:\n                  part.reasoningContent.redactedReasoning.data ?? '',\n              } satisfies BedrockReasoningMetadata,\n            },\n          });\n        }\n      }\n\n      // tool calls\n      if (part.toolUse) {\n        content.push(\n          // when a json response tool is used, the tool call becomes the text:\n          usesJsonResponseTool\n            ? {\n                type: 'text',\n                text: JSON.stringify(part.toolUse.input),\n              }\n            : {\n                type: 'tool-call' as const,\n                toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\n                toolName:\n                  part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n                input: JSON.stringify(part.toolUse?.input ?? ''),\n              },\n        );\n      }\n    }\n\n    // provider metadata:\n    const providerMetadata =\n      response.trace || response.usage || usesJsonResponseTool\n        ? {\n            bedrock: {\n              ...(response.trace && typeof response.trace === 'object'\n                ? { trace: response.trace as JSONObject }\n                : {}),\n              ...(response.usage?.cacheWriteInputTokens != null && {\n                usage: {\n                  cacheWriteInputTokens: response.usage.cacheWriteInputTokens,\n                },\n              }),\n              ...(usesJsonResponseTool && { isJsonResponseFromTool: true }),\n            },\n          }\n        : undefined;\n\n    return {\n      content,\n      finishReason: mapBedrockFinishReason(\n        response.stopReason as BedrockStopReason,\n      ),\n      usage: {\n        inputTokens: response.usage?.inputTokens,\n        outputTokens: response.usage?.outputTokens,\n        totalTokens: response.usage?.inputTokens + response.usage?.outputTokens,\n        cachedInputTokens: response.usage?.cacheReadInputTokens ?? undefined,\n      },\n      response: {\n        // TODO add id, timestamp, etc\n        headers: responseHeaders,\n      },\n      warnings,\n      ...(providerMetadata && { providerMetadata }),\n    };\n  }\n\n  async doStream(\n    options: Parameters<LanguageModelV2['doStream']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n    const {\n      command: args,\n      warnings,\n      usesJsonResponseTool,\n      betas,\n    } = await this.getArgs(options);\n    const url = `${this.getUrl(this.modelId)}/converse-stream`;\n\n    const { value: response, responseHeaders } = await postJsonToApi({\n      url,\n      headers: await this.getHeaders({ betas, headers: options.headers }),\n      body: args,\n      failedResponseHandler: createJsonErrorResponseHandler({\n        errorSchema: BedrockErrorSchema,\n        errorToMessage: error => `${error.type}: ${error.message}`,\n      }),\n      successfulResponseHandler:\n        createBedrockEventStreamResponseHandler(BedrockStreamSchema),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    let finishReason: LanguageModelV2FinishReason = 'unknown';\n    const usage: LanguageModelV2Usage = {\n      inputTokens: undefined,\n      outputTokens: undefined,\n      totalTokens: undefined,\n    };\n    let providerMetadata: SharedV2ProviderMetadata | undefined = undefined;\n\n    const contentBlocks: Record<\n      number,\n      | {\n          type: 'tool-call';\n          toolCallId: string;\n          toolName: string;\n          jsonText: string;\n        }\n      | { type: 'text' | 'reasoning' }\n    > = {};\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<z.infer<typeof BedrockStreamSchema>>,\n          LanguageModelV2StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            function enqueueError(bedrockError: Record<string, any>) {\n              finishReason = 'error';\n              controller.enqueue({ type: 'error', error: bedrockError });\n            }\n\n            // Emit raw chunk if requested (before anything else)\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            // handle failed chunk parsing / validation:\n            if (!chunk.success) {\n              enqueueError(chunk.error);\n              return;\n            }\n\n            const value = chunk.value;\n\n            // handle errors:\n            if (value.internalServerException) {\n              enqueueError(value.internalServerException);\n              return;\n            }\n            if (value.modelStreamErrorException) {\n              enqueueError(value.modelStreamErrorException);\n              return;\n            }\n            if (value.throttlingException) {\n              enqueueError(value.throttlingException);\n              return;\n            }\n            if (value.validationException) {\n              enqueueError(value.validationException);\n              return;\n            }\n\n            if (value.messageStop) {\n              finishReason = mapBedrockFinishReason(\n                value.messageStop.stopReason as BedrockStopReason,\n              );\n            }\n\n            if (value.metadata) {\n              usage.inputTokens =\n                value.metadata.usage?.inputTokens ?? usage.inputTokens;\n              usage.outputTokens =\n                value.metadata.usage?.outputTokens ?? usage.outputTokens;\n              usage.totalTokens =\n                (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0);\n              usage.cachedInputTokens =\n                value.metadata.usage?.cacheReadInputTokens ??\n                usage.cachedInputTokens;\n\n              const cacheUsage =\n                value.metadata.usage?.cacheWriteInputTokens != null\n                  ? {\n                      usage: {\n                        cacheWriteInputTokens:\n                          value.metadata.usage.cacheWriteInputTokens,\n                      },\n                    }\n                  : undefined;\n\n              const trace = value.metadata.trace\n                ? {\n                    trace: value.metadata.trace as JSONObject,\n                  }\n                : undefined;\n\n              if (cacheUsage || trace || usesJsonResponseTool) {\n                providerMetadata = {\n                  bedrock: {\n                    ...cacheUsage,\n                    ...trace,\n                    ...(usesJsonResponseTool && {\n                      isJsonResponseFromTool: true,\n                    }),\n                  },\n                };\n              }\n            }\n\n            if (\n              value.contentBlockStart?.contentBlockIndex != null &&\n              !value.contentBlockStart?.start?.toolUse\n            ) {\n              const blockIndex = value.contentBlockStart.contentBlockIndex;\n              contentBlocks[blockIndex] = { type: 'text' };\n              controller.enqueue({\n                type: 'text-start',\n                id: String(blockIndex),\n              });\n            }\n\n            if (\n              value.contentBlockDelta?.delta &&\n              'text' in value.contentBlockDelta.delta &&\n              value.contentBlockDelta.delta.text\n            ) {\n              const blockIndex = value.contentBlockDelta.contentBlockIndex || 0;\n\n              if (contentBlocks[blockIndex] == null) {\n                contentBlocks[blockIndex] = { type: 'text' };\n\n                // when a json response tool is used, we don't emit text events\n                if (!usesJsonResponseTool) {\n                  controller.enqueue({\n                    type: 'text-start',\n                    id: String(blockIndex),\n                  });\n                }\n              }\n\n              // when a json response tool is used, we don't emit text events\n              if (!usesJsonResponseTool) {\n                controller.enqueue({\n                  type: 'text-delta',\n                  id: String(blockIndex),\n                  delta: value.contentBlockDelta.delta.text,\n                });\n              }\n            }\n\n            if (value.contentBlockStop?.contentBlockIndex != null) {\n              const blockIndex = value.contentBlockStop.contentBlockIndex;\n              const contentBlock = contentBlocks[blockIndex];\n\n              if (contentBlock != null) {\n                if (contentBlock.type === 'reasoning') {\n                  controller.enqueue({\n                    type: 'reasoning-end',\n                    id: String(blockIndex),\n                  });\n                } else if (contentBlock.type === 'text') {\n                  // when a json response tool is used, we don't emit text events\n                  if (!usesJsonResponseTool) {\n                    controller.enqueue({\n                      type: 'text-end',\n                      id: String(blockIndex),\n                    });\n                  }\n                } else if (contentBlock.type === 'tool-call') {\n                  if (usesJsonResponseTool) {\n                    // when a json response tool is used, emit the tool input as text\n                    controller.enqueue({\n                      type: 'text-start',\n                      id: String(blockIndex),\n                    });\n                    controller.enqueue({\n                      type: 'text-delta',\n                      id: String(blockIndex),\n                      delta: contentBlock.jsonText,\n                    });\n                    controller.enqueue({\n                      type: 'text-end',\n                      id: String(blockIndex),\n                    });\n                  } else {\n                    controller.enqueue({\n                      type: 'tool-input-end',\n                      id: contentBlock.toolCallId,\n                    });\n                    controller.enqueue({\n                      type: 'tool-call',\n                      toolCallId: contentBlock.toolCallId,\n                      toolName: contentBlock.toolName,\n                      input: contentBlock.jsonText,\n                    });\n                  }\n                }\n\n                delete contentBlocks[blockIndex];\n              }\n            }\n\n            if (\n              value.contentBlockDelta?.delta &&\n              'reasoningContent' in value.contentBlockDelta.delta &&\n              value.contentBlockDelta.delta.reasoningContent\n            ) {\n              const blockIndex = value.contentBlockDelta.contentBlockIndex || 0;\n              const reasoningContent =\n                value.contentBlockDelta.delta.reasoningContent;\n\n              if ('text' in reasoningContent && reasoningContent.text) {\n                if (contentBlocks[blockIndex] == null) {\n                  contentBlocks[blockIndex] = { type: 'reasoning' };\n                  controller.enqueue({\n                    type: 'reasoning-start',\n                    id: String(blockIndex),\n                  });\n                }\n\n                controller.enqueue({\n                  type: 'reasoning-delta',\n                  id: String(blockIndex),\n                  delta: reasoningContent.text,\n                });\n              } else if (\n                'signature' in reasoningContent &&\n                reasoningContent.signature\n              ) {\n                controller.enqueue({\n                  type: 'reasoning-delta',\n                  id: String(blockIndex),\n                  delta: '',\n                  providerMetadata: {\n                    bedrock: {\n                      signature: reasoningContent.signature,\n                    } satisfies BedrockReasoningMetadata,\n                  },\n                });\n              } else if ('data' in reasoningContent && reasoningContent.data) {\n                controller.enqueue({\n                  type: 'reasoning-delta',\n                  id: String(blockIndex),\n                  delta: '',\n                  providerMetadata: {\n                    bedrock: {\n                      redactedData: reasoningContent.data,\n                    } satisfies BedrockReasoningMetadata,\n                  },\n                });\n              }\n            }\n\n            const contentBlockStart = value.contentBlockStart;\n            if (contentBlockStart?.start?.toolUse != null) {\n              const toolUse = contentBlockStart.start.toolUse;\n              const blockIndex = contentBlockStart.contentBlockIndex!;\n              contentBlocks[blockIndex] = {\n                type: 'tool-call',\n                toolCallId: toolUse.toolUseId!,\n                toolName: toolUse.name!,\n                jsonText: '',\n              };\n\n              // when a json response tool is used, we don't emit tool events\n              if (!usesJsonResponseTool) {\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: toolUse.toolUseId!,\n                  toolName: toolUse.name!,\n                });\n              }\n            }\n\n            const contentBlockDelta = value.contentBlockDelta;\n            if (\n              contentBlockDelta?.delta &&\n              'toolUse' in contentBlockDelta.delta &&\n              contentBlockDelta.delta.toolUse\n            ) {\n              const blockIndex = contentBlockDelta.contentBlockIndex!;\n              const contentBlock = contentBlocks[blockIndex];\n\n              if (contentBlock?.type === 'tool-call') {\n                const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n                // when a json response tool is used, we don't emit tool events\n                if (!usesJsonResponseTool) {\n                  controller.enqueue({\n                    type: 'tool-input-delta',\n                    id: contentBlock.toolCallId,\n                    delta: delta,\n                  });\n                }\n\n                contentBlock.jsonText += delta;\n              }\n            }\n          },\n          flush(controller) {\n            controller.enqueue({\n              type: 'finish',\n              finishReason,\n              usage,\n              ...(providerMetadata && { providerMetadata }),\n            });\n          },\n        }),\n      ),\n      // TODO request?\n      response: { headers: responseHeaders },\n    };\n  }\n\n  private getUrl(modelId: string) {\n    const encodedModelId = encodeURIComponent(modelId);\n    return `${this.config.baseUrl()}/model/${encodedModelId}`;\n  }\n}\n\nconst BedrockStopReasonSchema = z.union([\n  z.enum(BEDROCK_STOP_REASONS),\n  z.string(),\n]);\n\nconst BedrockToolUseSchema = z.object({\n  toolUseId: z.string(),\n  name: z.string(),\n  input: z.unknown(),\n});\n\nconst BedrockReasoningTextSchema = z.object({\n  signature: z.string().nullish(),\n  text: z.string(),\n});\n\nconst BedrockRedactedReasoningSchema = z.object({\n  data: z.string(),\n});\n\n// limited version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst BedrockResponseSchema = z.object({\n  metrics: z\n    .object({\n      latencyMs: z.number(),\n    })\n    .nullish(),\n  output: z.object({\n    message: z.object({\n      content: z.array(\n        z.object({\n          text: z.string().nullish(),\n          toolUse: BedrockToolUseSchema.nullish(),\n          reasoningContent: z\n            .union([\n              z.object({\n                reasoningText: BedrockReasoningTextSchema,\n              }),\n              z.object({\n                redactedReasoning: BedrockRedactedReasoningSchema,\n              }),\n            ])\n            .nullish(),\n        }),\n      ),\n      role: z.string(),\n    }),\n  }),\n  stopReason: BedrockStopReasonSchema,\n  trace: z.unknown().nullish(),\n  usage: z.object({\n    inputTokens: z.number(),\n    outputTokens: z.number(),\n    totalTokens: z.number(),\n    cacheReadInputTokens: z.number().nullish(),\n    cacheWriteInputTokens: z.number().nullish(),\n  }),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst BedrockStreamSchema = z.object({\n  contentBlockDelta: z\n    .object({\n      contentBlockIndex: z.number(),\n      delta: z\n        .union([\n          z.object({ text: z.string() }),\n          z.object({ toolUse: z.object({ input: z.string() }) }),\n          z.object({\n            reasoningContent: z.object({ text: z.string() }),\n          }),\n          z.object({\n            reasoningContent: z.object({\n              signature: z.string(),\n            }),\n          }),\n          z.object({\n            reasoningContent: z.object({ data: z.string() }),\n          }),\n        ])\n        .nullish(),\n    })\n    .nullish(),\n  contentBlockStart: z\n    .object({\n      contentBlockIndex: z.number(),\n      start: z\n        .object({\n          toolUse: BedrockToolUseSchema.nullish(),\n        })\n        .nullish(),\n    })\n    .nullish(),\n  contentBlockStop: z\n    .object({\n      contentBlockIndex: z.number(),\n    })\n    .nullish(),\n  internalServerException: z.record(z.string(), z.unknown()).nullish(),\n  messageStop: z\n    .object({\n      additionalModelResponseFields: z\n        .record(z.string(), z.unknown())\n        .nullish(),\n      stopReason: BedrockStopReasonSchema,\n    })\n    .nullish(),\n  metadata: z\n    .object({\n      trace: z.unknown().nullish(),\n      usage: z\n        .object({\n          cacheReadInputTokens: z.number().nullish(),\n          cacheWriteInputTokens: z.number().nullish(),\n          inputTokens: z.number(),\n          outputTokens: z.number(),\n        })\n        .nullish(),\n    })\n    .nullish(),\n  modelStreamErrorException: z.record(z.string(), z.unknown()).nullish(),\n  throttlingException: z.record(z.string(), z.unknown()).nullish(),\n  validationException: z.record(z.string(), z.unknown()).nullish(),\n});\n\nexport const bedrockReasoningMetadataSchema = z.object({\n  signature: z.string().optional(),\n  redactedData: z.string().optional(),\n});\n\nexport type BedrockReasoningMetadata = z.infer<\n  typeof bedrockReasoningMetadataSchema\n>;\n","import { JSONObject } from '@ai-sdk/provider';\n\nexport interface BedrockConverseInput {\n  system?: BedrockSystemMessages;\n  messages: BedrockMessages;\n  toolConfig?: BedrockToolConfiguration;\n  inferenceConfig?: {\n    maxOutputTokens?: number;\n    temperature?: number;\n    topP?: number;\n    topK?: number;\n    stopSequences?: string[];\n  };\n  additionalModelRequestFields?: Record<string, unknown>;\n  guardrailConfig?:\n    | BedrockGuardrailConfiguration\n    | BedrockGuardrailStreamConfiguration\n    | undefined;\n}\n\nexport type BedrockSystemMessages = Array<BedrockSystemContentBlock>;\n\nexport type BedrockMessages = Array<\n  BedrockAssistantMessage | BedrockUserMessage\n>;\n\nexport interface BedrockAssistantMessage {\n  role: 'assistant';\n  content: Array<BedrockContentBlock>;\n}\n\nexport interface BedrockUserMessage {\n  role: 'user';\n  content: Array<BedrockContentBlock>;\n}\n\nexport const BEDROCK_CACHE_POINT = {\n  cachePoint: { type: 'default' },\n} as const;\n\nexport type BedrockCachePoint = { cachePoint: { type: 'default' } };\nexport type BedrockSystemContentBlock = { text: string } | BedrockCachePoint;\n\nexport interface BedrockGuardrailConfiguration {\n  guardrails?: Array<{\n    name: string;\n    description?: string;\n    parameters?: Record<string, unknown>;\n  }>;\n}\n\nexport type BedrockGuardrailStreamConfiguration = BedrockGuardrailConfiguration;\n\nexport interface BedrockToolInputSchema {\n  json: Record<string, unknown>;\n}\n\nexport interface BedrockTool {\n  toolSpec: {\n    name: string;\n    description?: string;\n    inputSchema: { json: JSONObject };\n  };\n}\n\nexport interface BedrockToolConfiguration {\n  tools?: Array<BedrockTool | BedrockCachePoint>;\n  toolChoice?:\n    | { tool: { name: string } }\n    | { auto: {} }\n    | { any: {} }\n    | undefined;\n}\n\nexport const BEDROCK_STOP_REASONS = [\n  'stop',\n  'stop_sequence',\n  'end_turn',\n  'length',\n  'max_tokens',\n  'content-filter',\n  'content_filtered',\n  'guardrail_intervened',\n  'tool-calls',\n  'tool_use',\n] as const;\n\nexport type BedrockStopReason = (typeof BEDROCK_STOP_REASONS)[number];\n\n/**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ImageBlock.html\n */\nexport const BEDROCK_IMAGE_MIME_TYPES = {\n  'image/jpeg': 'jpeg',\n  'image/png': 'png',\n  'image/gif': 'gif',\n  'image/webp': 'webp',\n} as const;\ntype BedrockImageFormats = typeof BEDROCK_IMAGE_MIME_TYPES;\nexport type BedrockImageFormat = BedrockImageFormats[keyof BedrockImageFormats];\nexport type BedrockImageMimeType = keyof BedrockImageFormats;\n\n/**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_DocumentBlock.html\n */\nexport const BEDROCK_DOCUMENT_MIME_TYPES = {\n  'application/pdf': 'pdf',\n  'text/csv': 'csv',\n  'application/msword': 'doc',\n  'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n    'docx',\n  'application/vnd.ms-excel': 'xls',\n  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',\n  'text/html': 'html',\n  'text/plain': 'txt',\n  'text/markdown': 'md',\n} as const;\ntype BedrockDocumentFormats = typeof BEDROCK_DOCUMENT_MIME_TYPES;\nexport type BedrockDocumentFormat =\n  BedrockDocumentFormats[keyof BedrockDocumentFormats];\nexport type BedrockDocumentMimeType = keyof BedrockDocumentFormats;\n\nexport interface BedrockDocumentBlock {\n  document: {\n    format: BedrockDocumentFormat;\n    name: string;\n    source: {\n      bytes: string;\n    };\n  };\n}\n\nexport interface BedrockGuardrailConverseContentBlock {\n  guardContent: unknown;\n}\n\nexport interface BedrockImageBlock {\n  image: {\n    format: BedrockImageFormat;\n    source: {\n      bytes: string;\n    };\n  };\n}\n\nexport interface BedrockToolResultBlock {\n  toolResult: {\n    toolUseId: string;\n    content: Array<BedrockTextBlock | BedrockImageBlock>;\n  };\n}\n\nexport interface BedrockToolUseBlock {\n  toolUse: {\n    toolUseId: string;\n    name: string;\n    input: Record<string, unknown>;\n  };\n}\n\nexport interface BedrockTextBlock {\n  text: string;\n}\n\nexport interface BedrockReasoningContentBlock {\n  reasoningContent: {\n    reasoningText: {\n      text: string;\n      signature?: string;\n    };\n  };\n}\n\nexport interface BedrockRedactedReasoningContentBlock {\n  reasoningContent: {\n    redactedReasoning: {\n      data: string;\n    };\n  };\n}\n\nexport type BedrockContentBlock =\n  | BedrockDocumentBlock\n  | BedrockGuardrailConverseContentBlock\n  | BedrockImageBlock\n  | BedrockTextBlock\n  | BedrockToolResultBlock\n  | BedrockToolUseBlock\n  | BedrockReasoningContentBlock\n  | BedrockRedactedReasoningContentBlock\n  | BedrockCachePoint;\n","import { z } from 'zod/v4';\n\n// https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html\nexport type BedrockChatModelId =\n  | 'amazon.titan-tg1-large'\n  | 'amazon.titan-text-express-v1'\n  | 'anthropic.claude-v2'\n  | 'anthropic.claude-v2:1'\n  | 'anthropic.claude-instant-v1'\n  | 'anthropic.claude-sonnet-4-20250514-v1:0'\n  | 'anthropic.claude-opus-4-20250514-v1:0'\n  | 'anthropic.claude-opus-4-1-20250805-v1:0'\n  | 'anthropic.claude-3-7-sonnet-20250219-v1:0'\n  | 'anthropic.claude-3-5-sonnet-20240620-v1:0'\n  | 'anthropic.claude-3-5-sonnet-20241022-v2:0'\n  | 'anthropic.claude-3-5-haiku-20241022-v1:0'\n  | 'anthropic.claude-3-sonnet-20240229-v1:0'\n  | 'anthropic.claude-3-haiku-20240307-v1:0'\n  | 'anthropic.claude-3-opus-20240229-v1:0'\n  | 'cohere.command-text-v14'\n  | 'cohere.command-light-text-v14'\n  | 'cohere.command-r-v1:0'\n  | 'cohere.command-r-plus-v1:0'\n  | 'meta.llama3-70b-instruct-v1:0'\n  | 'meta.llama3-8b-instruct-v1:0'\n  | 'meta.llama3-1-405b-instruct-v1:0'\n  | 'meta.llama3-1-70b-instruct-v1:0'\n  | 'meta.llama3-1-8b-instruct-v1:0'\n  | 'meta.llama3-2-11b-instruct-v1:0'\n  | 'meta.llama3-2-1b-instruct-v1:0'\n  | 'meta.llama3-2-3b-instruct-v1:0'\n  | 'meta.llama3-2-90b-instruct-v1:0'\n  | 'mistral.mistral-7b-instruct-v0:2'\n  | 'mistral.mixtral-8x7b-instruct-v0:1'\n  | 'mistral.mistral-large-2402-v1:0'\n  | 'mistral.mistral-small-2402-v1:0'\n  | 'openai.gpt-oss-120b-1:0'\n  | 'openai.gpt-oss-20b-1:0'\n  | 'amazon.titan-text-express-v1'\n  | 'amazon.titan-text-lite-v1'\n  | 'us.amazon.nova-premier-v1:0'\n  | 'us.amazon.nova-pro-v1:0'\n  | 'us.amazon.nova-micro-v1:0'\n  | 'us.amazon.nova-lite-v1:0'\n  | 'us.anthropic.claude-3-sonnet-20240229-v1:0'\n  | 'us.anthropic.claude-3-opus-20240229-v1:0'\n  | 'us.anthropic.claude-3-haiku-20240307-v1:0'\n  | 'us.anthropic.claude-3-5-sonnet-20240620-v1:0'\n  | 'us.anthropic.claude-3-5-haiku-20241022-v1:0'\n  | 'us.anthropic.claude-3-5-sonnet-20241022-v2:0'\n  | 'us.anthropic.claude-3-7-sonnet-20250219-v1:0'\n  | 'us.anthropic.claude-sonnet-4-20250514-v1:0'\n  | 'us.anthropic.claude-opus-4-20250514-v1:0'\n  | 'us.anthropic.claude-opus-4-1-20250805-v1:0'\n  | 'us.meta.llama3-2-11b-instruct-v1:0'\n  | 'us.meta.llama3-2-3b-instruct-v1:0'\n  | 'us.meta.llama3-2-90b-instruct-v1:0'\n  | 'us.meta.llama3-2-1b-instruct-v1:0'\n  | 'us.meta.llama3-1-8b-instruct-v1:0'\n  | 'us.meta.llama3-1-70b-instruct-v1:0'\n  | 'us.meta.llama3-3-70b-instruct-v1:0'\n  | 'us.deepseek.r1-v1:0'\n  | 'us.mistral.pixtral-large-2502-v1:0'\n  | 'us.meta.llama4-scout-17b-instruct-v1:0'\n  | 'us.meta.llama4-maverick-17b-instruct-v1:0'\n  | (string & {});\n\nexport const bedrockProviderOptions = z.object({\n  /**\n   * Additional inference parameters that the model supports,\n   * beyond the base set of inference parameters that Converse\n   * supports in the inferenceConfig field\n   */\n  additionalModelRequestFields: z.record(z.string(), z.any()).optional(),\n  reasoningConfig: z\n    .object({\n      type: z.union([z.literal('enabled'), z.literal('disabled')]).optional(),\n      budgetTokens: z.number().optional(),\n    })\n    .optional(),\n});\n\nexport type BedrockProviderOptions = z.infer<typeof bedrockProviderOptions>;\n","import { z } from 'zod/v4';\n\nexport const BedrockErrorSchema = z.object({\n  message: z.string(),\n  type: z.string().nullish(),\n});\n","import { EmptyResponseBodyError } from '@ai-sdk/provider';\nimport {\n  ParseResult,\n  safeParseJSON,\n  extractResponseHeaders,\n  ResponseHandler,\n  safeValidateTypes,\n} from '@ai-sdk/provider-utils';\nimport { EventStreamCodec } from '@smithy/eventstream-codec';\nimport { toUtf8, fromUtf8 } from '@smithy/util-utf8';\nimport { ZodType } from 'zod/v4';\n\n// https://docs.aws.amazon.com/lexv2/latest/dg/event-stream-encoding.html\nexport const createBedrockEventStreamResponseHandler =\n  <T>(\n    chunkSchema: ZodType<T, any>,\n  ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n  async ({ response }: { response: Response }) => {\n    const responseHeaders = extractResponseHeaders(response);\n\n    if (response.body == null) {\n      throw new EmptyResponseBodyError({});\n    }\n\n    const codec = new EventStreamCodec(toUtf8, fromUtf8);\n    let buffer = new Uint8Array(0);\n    const textDecoder = new TextDecoder();\n\n    return {\n      responseHeaders,\n      value: response.body.pipeThrough(\n        new TransformStream<Uint8Array, ParseResult<T>>({\n          async transform(chunk, controller) {\n            // Append new chunk to buffer.\n            const newBuffer = new Uint8Array(buffer.length + chunk.length);\n            newBuffer.set(buffer);\n            newBuffer.set(chunk, buffer.length);\n            buffer = newBuffer;\n\n            // Try to decode messages from buffer.\n            while (buffer.length >= 4) {\n              // The first 4 bytes are the total length (big-endian).\n              const totalLength = new DataView(\n                buffer.buffer,\n                buffer.byteOffset,\n                buffer.byteLength,\n              ).getUint32(0, false);\n\n              // If we don't have the full message yet, wait for more chunks.\n              if (buffer.length < totalLength) {\n                break;\n              }\n\n              try {\n                // Decode exactly the sub-slice for this event.\n                const subView = buffer.subarray(0, totalLength);\n                const decoded = codec.decode(subView);\n\n                // Slice the used bytes out of the buffer, removing this message.\n                buffer = buffer.slice(totalLength);\n\n                // Process the message.\n                if (decoded.headers[':message-type']?.value === 'event') {\n                  const data = textDecoder.decode(decoded.body);\n\n                  // Wrap the data in the `:event-type` field to match the expected schema.\n                  const parsedDataResult = await safeParseJSON({ text: data });\n                  if (!parsedDataResult.success) {\n                    controller.enqueue(parsedDataResult);\n                    break;\n                  }\n\n                  // The `p` field appears to be padding or some other non-functional field.\n                  delete (parsedDataResult.value as any).p;\n                  let wrappedData = {\n                    [decoded.headers[':event-type']?.value as string]:\n                      parsedDataResult.value,\n                  };\n\n                  // Re-validate with the expected schema.\n                  const validatedWrappedData = await safeValidateTypes<T>({\n                    value: wrappedData,\n                    schema: chunkSchema,\n                  });\n                  if (!validatedWrappedData.success) {\n                    controller.enqueue(validatedWrappedData);\n                  } else {\n                    controller.enqueue({\n                      success: true,\n                      value: validatedWrappedData.value,\n                      rawValue: wrappedData,\n                    });\n                  }\n                }\n              } catch (e) {\n                // If we can't decode a complete message, wait for more data\n                break;\n              }\n            }\n          },\n        }),\n      ),\n    };\n  };\n","import {\n  JSONObject,\n  LanguageModelV2CallOptions,\n  LanguageModelV2CallWarning,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { asSchema } from '@ai-sdk/provider-utils';\nimport {\n  anthropicTools,\n  prepareTools as prepareAnthropicTools,\n} from '@ai-sdk/anthropic/internal';\nimport { BedrockTool, BedrockToolConfiguration } from './bedrock-api-types';\n\nexport function prepareTools({\n  tools,\n  toolChoice,\n  modelId,\n}: {\n  tools: LanguageModelV2CallOptions['tools'];\n  toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n  modelId: string;\n}): {\n  toolConfig: BedrockToolConfiguration;\n  additionalTools: Record<string, unknown> | undefined;\n  betas: Set<string>;\n  toolWarnings: LanguageModelV2CallWarning[];\n} {\n  const toolWarnings: LanguageModelV2CallWarning[] = [];\n  const betas = new Set<string>();\n\n  if (tools == null || tools.length === 0) {\n    return {\n      toolConfig: {},\n      additionalTools: undefined,\n      betas,\n      toolWarnings,\n    };\n  }\n\n  // Filter out unsupported web_search tool and add a warning\n  const supportedTools = tools.filter(tool => {\n    if (\n      tool.type === 'provider-defined' &&\n      tool.id === 'anthropic.web_search_20250305'\n    ) {\n      toolWarnings.push({\n        type: 'unsupported-tool',\n        tool,\n        details:\n          'The web_search_20250305 tool is not supported on Amazon Bedrock.',\n      });\n      return false; // Exclude this tool\n    }\n    return true; // Include all other tools\n  });\n\n  if (supportedTools.length === 0) {\n    return {\n      toolConfig: {},\n      additionalTools: undefined,\n      betas,\n      toolWarnings,\n    };\n  }\n\n  const isAnthropicModel = modelId.includes('anthropic.');\n  const providerDefinedTools = supportedTools.filter(\n    t => t.type === 'provider-defined',\n  );\n  const functionTools = supportedTools.filter(t => t.type === 'function');\n\n  let additionalTools: Record<string, unknown> | undefined = undefined;\n  const bedrockTools: BedrockTool[] = [];\n\n  const usingAnthropicTools =\n    isAnthropicModel && providerDefinedTools.length > 0;\n\n  // Handle Anthropic provider-defined tools for Anthropic models on Bedrock\n  if (usingAnthropicTools) {\n    if (functionTools.length > 0) {\n      toolWarnings.push({\n        type: 'unsupported-setting',\n        setting: 'tools',\n        details:\n          'Mixed Anthropic provider-defined tools and standard function tools are not supported in a single call to Bedrock. Only Anthropic tools will be used.',\n      });\n    }\n\n    const {\n      toolChoice: preparedAnthropicToolChoice,\n      toolWarnings: anthropicToolWarnings,\n      betas: anthropicBetas,\n    } = prepareAnthropicTools({\n      tools: providerDefinedTools,\n      toolChoice,\n    });\n\n    toolWarnings.push(...anthropicToolWarnings);\n    anthropicBetas.forEach(beta => betas.add(beta));\n\n    // For Anthropic tools on Bedrock, only the 'tool_choice' goes into additional fields.\n    // The tool definitions themselves are sent in the standard 'toolConfig'.\n    if (preparedAnthropicToolChoice) {\n      additionalTools = {\n        tool_choice: preparedAnthropicToolChoice,\n      };\n    }\n\n    // Create a standard Bedrock tool representation for validation purposes\n    for (const tool of providerDefinedTools) {\n      const toolFactory = Object.values(anthropicTools).find(factory => {\n        const instance = (factory as (args: any) => any)({});\n        return instance.id === tool.id;\n      });\n\n      if (toolFactory != null) {\n        const fullToolDefinition = (toolFactory as (args: any) => any)({});\n        bedrockTools.push({\n          toolSpec: {\n            name: tool.name,\n            inputSchema: {\n              json: asSchema(fullToolDefinition.inputSchema)\n                .jsonSchema as JSONObject,\n            },\n          },\n        });\n      } else {\n        toolWarnings.push({ type: 'unsupported-tool', tool });\n      }\n    }\n  } else {\n    // Report unsupported provider-defined tools for non-anthropic models\n    for (const tool of providerDefinedTools) {\n      toolWarnings.push({ type: 'unsupported-tool', tool });\n    }\n  }\n\n  // Handle standard function tools for all models\n  for (const tool of functionTools) {\n    bedrockTools.push({\n      toolSpec: {\n        name: tool.name,\n        description: tool.description,\n        inputSchema: {\n          json: tool.inputSchema as JSONObject,\n        },\n      },\n    });\n  }\n\n  // Handle toolChoice for standard Bedrock tools, but NOT for Anthropic provider-defined tools\n  let bedrockToolChoice: BedrockToolConfiguration['toolChoice'] = undefined;\n  if (!usingAnthropicTools && bedrockTools.length > 0 && toolChoice) {\n    const type = toolChoice.type;\n    switch (type) {\n      case 'auto':\n        bedrockToolChoice = { auto: {} };\n        break;\n      case 'required':\n        bedrockToolChoice = { any: {} };\n        break;\n      case 'none':\n        bedrockTools.length = 0;\n        bedrockToolChoice = undefined;\n        break;\n      case 'tool':\n        bedrockToolChoice = { tool: { name: toolChoice.toolName } };\n        break;\n      default: {\n        const _exhaustiveCheck: never = type;\n        throw new UnsupportedFunctionalityError({\n          functionality: `tool choice type: ${_exhaustiveCheck}`,\n        });\n      }\n    }\n  }\n\n  const toolConfig: BedrockToolConfiguration =\n    bedrockTools.length > 0\n      ? { tools: bedrockTools, toolChoice: bedrockToolChoice }\n      : {};\n\n  return {\n    toolConfig,\n    additionalTools,\n    betas,\n    toolWarnings,\n  };\n}\n","import {\n  JSONObject,\n  LanguageModelV2Message,\n  LanguageModelV2Prompt,\n  SharedV2ProviderMetadata,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64, parseProviderOptions } from '@ai-sdk/provider-utils';\nimport {\n  BEDROCK_CACHE_POINT,\n  BEDROCK_DOCUMENT_MIME_TYPES,\n  BEDROCK_IMAGE_MIME_TYPES,\n  BedrockAssistantMessage,\n  BedrockCachePoint,\n  BedrockDocumentFormat,\n  BedrockDocumentMimeType,\n  BedrockImageFormat,\n  BedrockImageMimeType,\n  BedrockMessages,\n  BedrockSystemMessages,\n  BedrockUserMessage,\n} from './bedrock-api-types';\nimport { bedrockReasoningMetadataSchema } from './bedrock-chat-language-model';\n\nfunction getCachePoint(\n  providerMetadata: SharedV2ProviderMetadata | undefined,\n): BedrockCachePoint | undefined {\n  return providerMetadata?.bedrock?.cachePoint as BedrockCachePoint | undefined;\n}\n\nexport async function convertToBedrockChatMessages(\n  prompt: LanguageModelV2Prompt,\n): Promise<{\n  system: BedrockSystemMessages;\n  messages: BedrockMessages;\n}> {\n  const blocks = groupIntoBlocks(prompt);\n\n  let system: BedrockSystemMessages = [];\n  const messages: BedrockMessages = [];\n\n  let documentCounter = 0;\n  const generateDocumentName = () => `document-${++documentCounter}`;\n\n  for (let i = 0; i < blocks.length; i++) {\n    const block = blocks[i];\n    const isLastBlock = i === blocks.length - 1;\n    const type = block.type;\n\n    switch (type) {\n      case 'system': {\n        if (messages.length > 0) {\n          throw new UnsupportedFunctionalityError({\n            functionality:\n              'Multiple system messages that are separated by user/assistant messages',\n          });\n        }\n\n        for (const message of block.messages) {\n          system.push({ text: message.content });\n          if (getCachePoint(message.providerOptions)) {\n            system.push(BEDROCK_CACHE_POINT);\n          }\n        }\n        break;\n      }\n\n      case 'user': {\n        // combines all user and tool messages in this block into a single message:\n        const bedrockContent: BedrockUserMessage['content'] = [];\n\n        for (const message of block.messages) {\n          const { role, content, providerOptions } = message;\n          switch (role) {\n            case 'user': {\n              for (let j = 0; j < content.length; j++) {\n                const part = content[j];\n\n                switch (part.type) {\n                  case 'text': {\n                    bedrockContent.push({\n                      text: part.text,\n                    });\n                    break;\n                  }\n\n                  case 'file': {\n                    if (part.data instanceof URL) {\n                      // The AI SDK automatically downloads files for user file parts with URLs\n                      throw new UnsupportedFunctionalityError({\n                        functionality: 'File URL data',\n                      });\n                    }\n\n                    if (part.mediaType.startsWith('image/')) {\n                      bedrockContent.push({\n                        image: {\n                          format: getBedrockImageFormat(part.mediaType),\n                          source: { bytes: convertToBase64(part.data) },\n                        },\n                      });\n                    } else {\n                      if (!part.mediaType) {\n                        throw new UnsupportedFunctionalityError({\n                          functionality: 'file without mime type',\n                          message:\n                            'File mime type is required in user message part content',\n                        });\n                      }\n\n                      bedrockContent.push({\n                        document: {\n                          format: getBedrockDocumentFormat(part.mediaType),\n                          name: generateDocumentName(),\n                          source: { bytes: convertToBase64(part.data) },\n                        },\n                      });\n                    }\n\n                    break;\n                  }\n                }\n              }\n\n              break;\n            }\n            case 'tool': {\n              for (const part of content) {\n                let toolResultContent;\n\n                const output = part.output;\n                switch (output.type) {\n                  case 'content': {\n                    toolResultContent = output.value.map(contentPart => {\n                      switch (contentPart.type) {\n                        case 'text':\n                          return { text: contentPart.text };\n                        case 'media':\n                          if (!contentPart.mediaType.startsWith('image/')) {\n                            throw new UnsupportedFunctionalityError({\n                              functionality: `media type: ${contentPart.mediaType}`,\n                            });\n                          }\n\n                          const format = getBedrockImageFormat(\n                            contentPart.mediaType,\n                          );\n\n                          return {\n                            image: {\n                              format,\n                              source: { bytes: contentPart.data },\n                            },\n                          };\n                      }\n                    });\n                    break;\n                  }\n                  case 'text':\n                  case 'error-text':\n                    toolResultContent = [{ text: output.value }];\n                    break;\n                  case 'json':\n                  case 'error-json':\n                  default:\n                    toolResultContent = [\n                      { text: JSON.stringify(output.value) },\n                    ];\n                    break;\n                }\n\n                bedrockContent.push({\n                  toolResult: {\n                    toolUseId: part.toolCallId,\n                    content: toolResultContent,\n                  },\n                });\n              }\n\n              break;\n            }\n            default: {\n              const _exhaustiveCheck: never = role;\n              throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n            }\n          }\n\n          if (getCachePoint(providerOptions)) {\n            bedrockContent.push(BEDROCK_CACHE_POINT);\n          }\n        }\n\n        messages.push({ role: 'user', content: bedrockContent });\n\n        break;\n      }\n\n      case 'assistant': {\n        // combines multiple assistant messages in this block into a single message:\n        const bedrockContent: BedrockAssistantMessage['content'] = [];\n\n        for (let j = 0; j < block.messages.length; j++) {\n          const message = block.messages[j];\n          const isLastMessage = j === block.messages.length - 1;\n          const { content } = message;\n\n          for (let k = 0; k < content.length; k++) {\n            const part = content[k];\n            const isLastContentPart = k === content.length - 1;\n\n            switch (part.type) {\n              case 'text': {\n                bedrockContent.push({\n                  text:\n                    // trim the last text part if it's the last message in the block\n                    // because Bedrock does not allow trailing whitespace\n                    // in pre-filled assistant responses\n                    trimIfLast(\n                      isLastBlock,\n                      isLastMessage,\n                      isLastContentPart,\n                      part.text,\n                    ),\n                });\n                break;\n              }\n\n              case 'reasoning': {\n                const reasoningMetadata = await parseProviderOptions({\n                  provider: 'bedrock',\n                  providerOptions: part.providerOptions,\n                  schema: bedrockReasoningMetadataSchema,\n                });\n\n                if (reasoningMetadata != null) {\n                  if (reasoningMetadata.signature != null) {\n                    bedrockContent.push({\n                      reasoningContent: {\n                        reasoningText: {\n                          // trim the last text part if it's the last message in the block\n                          // because Bedrock does not allow trailing whitespace\n                          // in pre-filled assistant responses\n                          text: trimIfLast(\n                            isLastBlock,\n                            isLastMessage,\n                            isLastContentPart,\n                            part.text,\n                          ),\n                          signature: reasoningMetadata.signature,\n                        },\n                      },\n                    });\n                  } else if (reasoningMetadata.redactedData != null) {\n                    bedrockContent.push({\n                      reasoningContent: {\n                        redactedReasoning: {\n                          data: reasoningMetadata.redactedData,\n                        },\n                      },\n                    });\n                  }\n                }\n\n                break;\n              }\n\n              case 'tool-call': {\n                bedrockContent.push({\n                  toolUse: {\n                    toolUseId: part.toolCallId,\n                    name: part.toolName,\n                    input: part.input as JSONObject,\n                  },\n                });\n                break;\n              }\n            }\n          }\n          if (getCachePoint(message.providerOptions)) {\n            bedrockContent.push(BEDROCK_CACHE_POINT);\n          }\n        }\n\n        messages.push({ role: 'assistant', content: bedrockContent });\n\n        break;\n      }\n\n      default: {\n        const _exhaustiveCheck: never = type;\n        throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  return { system, messages };\n}\n\nfunction isBedrockImageFormat(format: string): format is BedrockImageFormat {\n  return Object.values(BEDROCK_IMAGE_MIME_TYPES).includes(\n    format as BedrockImageFormat,\n  );\n}\n\nfunction getBedrockImageFormat(mimeType?: string): BedrockImageFormat {\n  if (!mimeType) {\n    throw new UnsupportedFunctionalityError({\n      functionality: 'image without mime type',\n      message: 'Image mime type is required in user message part content',\n    });\n  }\n\n  const format = BEDROCK_IMAGE_MIME_TYPES[mimeType as BedrockImageMimeType];\n  if (!format) {\n    throw new UnsupportedFunctionalityError({\n      functionality: `image mime type: ${mimeType}`,\n      message: `Unsupported image mime type: ${mimeType}, expected one of: ${Object.keys(BEDROCK_IMAGE_MIME_TYPES).join(', ')}`,\n    });\n  }\n\n  return format;\n}\n\nfunction getBedrockDocumentFormat(mimeType: string): BedrockDocumentFormat {\n  const format =\n    BEDROCK_DOCUMENT_MIME_TYPES[mimeType as BedrockDocumentMimeType];\n  if (!format) {\n    throw new UnsupportedFunctionalityError({\n      functionality: `file mime type: ${mimeType}`,\n      message: `Unsupported file mime type: ${mimeType}, expected one of: ${Object.keys(BEDROCK_DOCUMENT_MIME_TYPES).join(', ')}`,\n    });\n  }\n  return format;\n}\n\nfunction trimIfLast(\n  isLastBlock: boolean,\n  isLastMessage: boolean,\n  isLastContentPart: boolean,\n  text: string,\n) {\n  return isLastBlock && isLastMessage && isLastContentPart ? text.trim() : text;\n}\n\ntype SystemBlock = {\n  type: 'system';\n  messages: Array<LanguageModelV2Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n  type: 'assistant';\n  messages: Array<LanguageModelV2Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n  type: 'user';\n  messages: Array<LanguageModelV2Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n  prompt: LanguageModelV2Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n  const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n  let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n    undefined;\n\n  for (const message of prompt) {\n    const { role } = message;\n    switch (role) {\n      case 'system': {\n        if (currentBlock?.type !== 'system') {\n          currentBlock = { type: 'system', messages: [] };\n          blocks.push(currentBlock);\n        }\n\n        currentBlock.messages.push(message);\n        break;\n      }\n      case 'assistant': {\n        if (currentBlock?.type !== 'assistant') {\n          currentBlock = { type: 'assistant', messages: [] };\n          blocks.push(currentBlock);\n        }\n\n        currentBlock.messages.push(message);\n        break;\n      }\n      case 'user': {\n        if (currentBlock?.type !== 'user') {\n          currentBlock = { type: 'user', messages: [] };\n          blocks.push(currentBlock);\n        }\n\n        currentBlock.messages.push(message);\n        break;\n      }\n      case 'tool': {\n        if (currentBlock?.type !== 'user') {\n          currentBlock = { type: 'user', messages: [] };\n          blocks.push(currentBlock);\n        }\n\n        currentBlock.messages.push(message);\n        break;\n      }\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  return blocks;\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\nimport { BedrockStopReason } from './bedrock-api-types';\n\nexport function mapBedrockFinishReason(\n  finishReason?: BedrockStopReason,\n): LanguageModelV2FinishReason {\n  switch (finishReason) {\n    case 'stop_sequence':\n    case 'end_turn':\n      return 'stop';\n    case 'max_tokens':\n      return 'length';\n    case 'content_filtered':\n    case 'guardrail_intervened':\n      return 'content-filter';\n    case 'tool_use':\n      return 'tool-calls';\n    default:\n      return 'unknown';\n  }\n}\n","import {\n  EmbeddingModelV2,\n  TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n  FetchFunction,\n  Resolvable,\n  combineHeaders,\n  createJsonErrorResponseHandler,\n  createJsonResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n  resolve,\n} from '@ai-sdk/provider-utils';\nimport {\n  BedrockEmbeddingModelId,\n  bedrockEmbeddingProviderOptions,\n} from './bedrock-embedding-options';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { z } from 'zod/v4';\n\ntype BedrockEmbeddingConfig = {\n  baseUrl: () => string;\n  headers: Resolvable<Record<string, string | undefined>>;\n  fetch?: FetchFunction;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>;\n\nexport class BedrockEmbeddingModel implements EmbeddingModelV2<string> {\n  readonly specificationVersion = 'v2';\n  readonly provider = 'amazon-bedrock';\n  readonly maxEmbeddingsPerCall = 1;\n  readonly supportsParallelCalls = true;\n\n  constructor(\n    readonly modelId: BedrockEmbeddingModelId,\n    private readonly config: BedrockEmbeddingConfig,\n  ) {}\n\n  private getUrl(modelId: string): string {\n    const encodedModelId = encodeURIComponent(modelId);\n    return `${this.config.baseUrl()}/model/${encodedModelId}/invoke`;\n  }\n\n  async doEmbed({\n    values,\n    headers,\n    abortSignal,\n    providerOptions,\n  }: Parameters<\n    EmbeddingModelV2<string>['doEmbed']\n  >[0]): Promise<DoEmbedResponse> {\n    if (values.length > this.maxEmbeddingsPerCall) {\n      throw new TooManyEmbeddingValuesForCallError({\n        provider: this.provider,\n        modelId: this.modelId,\n        maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n        values,\n      });\n    }\n\n    // Parse provider options\n    const bedrockOptions =\n      (await parseProviderOptions({\n        provider: 'bedrock',\n        providerOptions,\n        schema: bedrockEmbeddingProviderOptions,\n      })) ?? {};\n\n    // https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html\n    const args = {\n      inputText: values[0],\n      dimensions: bedrockOptions.dimensions,\n      normalize: bedrockOptions.normalize,\n    };\n    const url = this.getUrl(this.modelId);\n    const { value: response } = await postJsonToApi({\n      url,\n      headers: await resolve(\n        combineHeaders(await resolve(this.config.headers), headers),\n      ),\n      body: args,\n      failedResponseHandler: createJsonErrorResponseHandler({\n        errorSchema: BedrockErrorSchema,\n        errorToMessage: error => `${error.type}: ${error.message}`,\n      }),\n      successfulResponseHandler: createJsonResponseHandler(\n        BedrockEmbeddingResponseSchema,\n      ),\n      fetch: this.config.fetch,\n      abortSignal,\n    });\n\n    return {\n      embeddings: [response.embedding],\n      usage: { tokens: response.inputTextTokenCount },\n    };\n  }\n}\n\nconst BedrockEmbeddingResponseSchema = z.object({\n  embedding: z.array(z.number()),\n  inputTextTokenCount: z.number(),\n});\n","import { z } from 'zod/v4';\n\nexport type BedrockEmbeddingModelId =\n  | 'amazon.titan-embed-text-v1'\n  | 'amazon.titan-embed-text-v2:0'\n  | 'cohere.embed-english-v3'\n  | 'cohere.embed-multilingual-v3'\n  | (string & {});\n\nexport const bedrockEmbeddingProviderOptions = z.object({\n  /**\nThe number of dimensions the resulting output embeddings should have (defaults to 1024).\nOnly supported in amazon.titan-embed-text-v2:0.\n   */\n  dimensions: z\n    .union([z.literal(1024), z.literal(512), z.literal(256)])\n    .optional(),\n\n  /**\nFlag indicating whether or not to normalize the output embeddings. Defaults to true\nOnly supported in amazon.titan-embed-text-v2:0.\n */\n  normalize: z.boolean().optional(),\n});\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n  FetchFunction,\n  Resolvable,\n  combineHeaders,\n  createJsonErrorResponseHandler,\n  createJsonResponseHandler,\n  postJsonToApi,\n  resolve,\n} from '@ai-sdk/provider-utils';\nimport {\n  BedrockImageModelId,\n  modelMaxImagesPerCall,\n} from './bedrock-image-settings';\nimport { BedrockErrorSchema } from './bedrock-error';\nimport { z } from 'zod/v4';\n\ntype BedrockImageModelConfig = {\n  baseUrl: () => string;\n  headers: Resolvable<Record<string, string | undefined>>;\n  fetch?: FetchFunction;\n  _internal?: {\n    currentDate?: () => Date;\n  };\n};\n\nexport class BedrockImageModel implements ImageModelV2 {\n  readonly specificationVersion = 'v2';\n  readonly provider = 'amazon-bedrock';\n\n  get maxImagesPerCall(): number {\n    return modelMaxImagesPerCall[this.modelId] ?? 1;\n  }\n\n  private getUrl(modelId: string): string {\n    const encodedModelId = encodeURIComponent(modelId);\n    return `${this.config.baseUrl()}/model/${encodedModelId}/invoke`;\n  }\n\n  constructor(\n    readonly modelId: BedrockImageModelId,\n    private readonly config: BedrockImageModelConfig,\n  ) {}\n\n  async doGenerate({\n    prompt,\n    n,\n    size,\n    aspectRatio,\n    seed,\n    providerOptions,\n    headers,\n    abortSignal,\n  }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n    Awaited<ReturnType<ImageModelV2['doGenerate']>>\n  > {\n    const warnings: Array<ImageModelV2CallWarning> = [];\n    const [width, height] = size ? size.split('x').map(Number) : [];\n    const args = {\n      taskType: 'TEXT_IMAGE',\n      textToImageParams: {\n        text: prompt,\n        ...(providerOptions?.bedrock?.negativeText\n          ? {\n              negativeText: providerOptions.bedrock.negativeText,\n            }\n          : {}),\n        ...(providerOptions?.bedrock?.style\n          ? {\n              style: providerOptions.bedrock.style,\n            }\n          : {}),\n      },\n      imageGenerationConfig: {\n        ...(width ? { width } : {}),\n        ...(height ? { height } : {}),\n        ...(seed ? { seed } : {}),\n        ...(n ? { numberOfImages: n } : {}),\n        ...(providerOptions?.bedrock?.quality\n          ? { quality: providerOptions.bedrock.quality }\n          : {}),\n        ...(providerOptions?.bedrock?.cfgScale\n          ? { cfgScale: providerOptions.bedrock.cfgScale }\n          : {}),\n      },\n    };\n\n    if (aspectRatio != undefined) {\n      warnings.push({\n        type: 'unsupported-setting',\n        setting: 'aspectRatio',\n        details:\n          'This model does not support aspect ratio. Use `size` instead.',\n      });\n    }\n\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n    const { value: response, responseHeaders } = await postJsonToApi({\n      url: this.getUrl(this.modelId),\n      headers: await resolve(\n        combineHeaders(await resolve(this.config.headers), headers),\n      ),\n      body: args,\n      failedResponseHandler: createJsonErrorResponseHandler({\n        errorSchema: BedrockErrorSchema,\n        errorToMessage: error => `${error.type}: ${error.message}`,\n      }),\n      successfulResponseHandler: createJsonResponseHandler(\n        bedrockImageResponseSchema,\n      ),\n      abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      images: response.images,\n      warnings,\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n      },\n    };\n  }\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst bedrockImageResponseSchema = z.object({\n  images: z.array(z.string()),\n});\n","export type BedrockImageModelId = 'amazon.nova-canvas-v1:0' | (string & {});\n\n// https://docs.aws.amazon.com/nova/latest/userguide/image-gen-req-resp-structure.html\nexport const modelMaxImagesPerCall: Record<BedrockImageModelId, number> = {\n  'amazon.nova-canvas-v1:0': 5,\n};\n","/**\n * Extract headers from a `HeadersInit` object and convert them to a record of\n * lowercase keys and (preserving original case) values.\n * @param headers - The `HeadersInit` object to extract headers from.\n * @returns A record of lowercase keys and (preserving original case) values.\n */\nexport function extractHeaders(\n  headers: HeadersInit | undefined,\n): Record<string, string | undefined> {\n  let originalHeaders: Record<string, string | undefined> = {};\n  if (headers) {\n    if (headers instanceof Headers) {\n      originalHeaders = convertHeadersToRecord(headers);\n    } else if (Array.isArray(headers)) {\n      for (const [k, v] of headers) {\n        originalHeaders[k.toLowerCase()] = v;\n      }\n    } else {\n      originalHeaders = Object.fromEntries(\n        Object.entries(headers).map(([k, v]) => [k.toLowerCase(), v]),\n      ) as Record<string, string>;\n    }\n  }\n  return originalHeaders;\n}\n\n/**\n * Convert a Headers object to a record of lowercase keys and (preserving\n * original case) values.\n * @param headers - The Headers object to convert.\n * @returns A record of lowercase keys and values.\n */\nexport function convertHeadersToRecord(headers: Headers) {\n  return Object.fromEntries<string>([...headers]);\n}\n","import { convertHeadersToRecord, extractHeaders } from './headers-utils';\nimport {\n  FetchFunction,\n  combineHeaders,\n  removeUndefinedEntries,\n} from '@ai-sdk/provider-utils';\nimport { AwsV4Signer } from 'aws4fetch';\n\nexport interface BedrockCredentials {\n  region: string;\n  accessKeyId: string;\n  secretAccessKey: string;\n  sessionToken?: string;\n}\n\n/**\nCreates a fetch function that applies AWS Signature Version 4 signing.\n\n@param getCredentials - Function that returns the AWS credentials to use when signing.\n@param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n@returns A FetchFunction that signs requests before passing them to the underlying fetch.\n */\nexport function createSigV4FetchFunction(\n  getCredentials: () => BedrockCredentials | PromiseLike<BedrockCredentials>,\n  fetch: FetchFunction = globalThis.fetch,\n): FetchFunction {\n  return async (\n    input: RequestInfo | URL,\n    init?: RequestInit,\n  ): Promise<Response> => {\n    if (init?.method?.toUpperCase() !== 'POST' || !init?.body) {\n      return fetch(input, init);\n    }\n\n    const url =\n      typeof input === 'string'\n        ? input\n        : input instanceof URL\n          ? input.href\n          : input.url;\n\n    const originalHeaders = extractHeaders(init.headers);\n    const body = prepareBodyString(init.body);\n    const credentials = await getCredentials();\n    const signer = new AwsV4Signer({\n      url,\n      method: 'POST',\n      headers: Object.entries(removeUndefinedEntries(originalHeaders)),\n      body,\n      region: credentials.region,\n      accessKeyId: credentials.accessKeyId,\n      secretAccessKey: credentials.secretAccessKey,\n      sessionToken: credentials.sessionToken,\n      service: 'bedrock',\n    });\n\n    const signingResult = await signer.sign();\n    const signedHeaders = convertHeadersToRecord(signingResult.headers);\n    return fetch(input, {\n      ...init,\n      body,\n      headers: removeUndefinedEntries(\n        combineHeaders(originalHeaders, signedHeaders),\n      ),\n    });\n  };\n}\n\nfunction prepareBodyString(body: BodyInit | undefined): string {\n  if (typeof body === 'string') {\n    return body;\n  } else if (body instanceof Uint8Array) {\n    return new TextDecoder().decode(body);\n  } else if (body instanceof ArrayBuffer) {\n    return new TextDecoder().decode(new Uint8Array(body));\n  } else {\n    return JSON.stringify(body);\n  }\n}\n\n/**\nCreates a fetch function that applies Bearer token authentication.\n\n@param apiKey - The API key to use for Bearer token authentication.\n@param fetch - Optional original fetch implementation to wrap. Defaults to global fetch.\n@returns A FetchFunction that adds Authorization header with Bearer token to requests.\n */\nexport function createApiKeyFetchFunction(\n  apiKey: string,\n  fetch: FetchFunction = globalThis.fetch,\n): FetchFunction {\n  return async (\n    input: RequestInfo | URL,\n    init?: RequestInit,\n  ): Promise<Response> => {\n    const originalHeaders = extractHeaders(init?.headers);\n\n    return fetch(input, {\n      ...init,\n      headers: removeUndefinedEntries(\n        combineHeaders(originalHeaders, {\n          Authorization: `Bearer ${apiKey}`,\n        }),\n      ),\n    });\n  };\n}\n"],"mappings":"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","names":["anthropicTools","parseProviderOptions","z","z","UnsupportedFunctionalityError","UnsupportedFunctionalityError","UnsupportedFunctionalityError","parseProviderOptions","_a","z","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","z","z","parseProviderOptions","postJsonToApi","resolve","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","postJsonToApi","resolve","z","postJsonToApi","resolve","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","combineHeaders","anthropicTools"]}