@caupulican/pi-ai 0.94.0 → 0.95.0

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.
@@ -530,6 +530,7 @@ function sanitizeBedrockDocument(value) {
530
530
  return value;
531
531
  }
532
532
  const BEDROCK_ROOT_SCHEMA_COMBINATORS = ["anyOf", "oneOf", "allOf"];
533
+ const BEDROCK_TOOL_PROPERTY_NAME_PATTERN = /^[a-zA-Z0-9_.-]{1,64}$/;
533
534
  const BEDROCK_OBJECT_SCHEMA_KEYS = new Set([
534
535
  "additionalProperties",
535
536
  "dependentRequired",
@@ -541,10 +542,32 @@ const BEDROCK_OBJECT_SCHEMA_KEYS = new Set([
541
542
  "required",
542
543
  "unevaluatedProperties",
543
544
  ]);
544
- const BEDROCK_FLATTENABLE_BRANCH_KEYS = new Set(["properties", "required", "type"]);
545
545
  function isSchemaRecord(value) {
546
546
  return typeof value === "object" && value !== null && !Array.isArray(value);
547
547
  }
548
+ function cloneBedrockSchemaValue(value, seen = new WeakMap()) {
549
+ if (Array.isArray(value)) {
550
+ const existing = seen.get(value);
551
+ if (existing !== undefined)
552
+ return existing;
553
+ const clone = [];
554
+ seen.set(value, clone);
555
+ for (const entry of value)
556
+ clone.push(cloneBedrockSchemaValue(entry, seen));
557
+ return clone;
558
+ }
559
+ if (!isSchemaRecord(value))
560
+ return value;
561
+ const existing = seen.get(value);
562
+ if (existing !== undefined)
563
+ return existing;
564
+ const clone = {};
565
+ seen.set(value, clone);
566
+ for (const [key, entry] of Object.entries(value)) {
567
+ clone[key] = cloneBedrockSchemaValue(entry, seen);
568
+ }
569
+ return clone;
570
+ }
548
571
  function resolveBedrockLocalSchemaRef(root, reference) {
549
572
  const match = reference.match(/^#\/(\$defs|definitions)\/(.+)$/);
550
573
  if (!match)
@@ -558,110 +581,151 @@ function resolveBedrockLocalSchemaRef(root, reference) {
558
581
  }
559
582
  return current;
560
583
  }
561
- function isObjectShapedBedrockSchema(schema, root, visitedRefs = new Set()) {
562
- if (schema.type === "object")
563
- return true;
564
- if (schema.type !== undefined)
565
- return false;
584
+ function bedrockSchemaRequired(schema) {
585
+ return Array.isArray(schema.required)
586
+ ? schema.required.filter((key) => typeof key === "string" && BEDROCK_TOOL_PROPERTY_NAME_PATTERN.test(key))
587
+ : [];
588
+ }
589
+ function bedrockSchemaProperties(schema) {
590
+ if (!isSchemaRecord(schema.properties))
591
+ return {};
592
+ return Object.fromEntries(Object.entries(schema.properties).filter(([key, value]) => BEDROCK_TOOL_PROPERTY_NAME_PATTERN.test(key) && isSchemaRecord(value)));
593
+ }
594
+ function mergeMissingBedrockSchemaProperties(target, source) {
595
+ for (const [key, value] of Object.entries(source)) {
596
+ if (!(key in target))
597
+ target[key] = value;
598
+ }
599
+ }
600
+ function intersectBedrockRequiredSets(projections) {
601
+ const common = new Set(projections[0]?.required ?? []);
602
+ for (const projection of projections.slice(1)) {
603
+ for (const key of common)
604
+ if (!projection.required.has(key))
605
+ common.delete(key);
606
+ }
607
+ return common;
608
+ }
609
+ function projectBedrockObjectSchema(schema, root, visitedRefs = new Set()) {
610
+ if (schema.type !== undefined && schema.type !== "object")
611
+ return undefined;
612
+ let objectShapeProven = schema.type === "object" || [...BEDROCK_OBJECT_SCHEMA_KEYS].some((key) => key in schema);
613
+ const properties = bedrockSchemaProperties(schema);
614
+ const required = new Set(bedrockSchemaRequired(schema));
566
615
  if (typeof schema.$ref === "string") {
567
616
  if (visitedRefs.has(schema.$ref))
568
- return false;
617
+ return undefined;
569
618
  const target = resolveBedrockLocalSchemaRef(root, schema.$ref);
570
619
  if (!isSchemaRecord(target))
571
- return false;
620
+ return undefined;
572
621
  const nextVisitedRefs = new Set(visitedRefs);
573
622
  nextVisitedRefs.add(schema.$ref);
574
- return isObjectShapedBedrockSchema(target, root, nextVisitedRefs);
623
+ const targetProjection = projectBedrockObjectSchema(target, root, nextVisitedRefs);
624
+ if (!targetProjection)
625
+ return undefined;
626
+ objectShapeProven = true;
627
+ mergeMissingBedrockSchemaProperties(properties, targetProjection.properties);
628
+ for (const key of targetProjection.required)
629
+ required.add(key);
575
630
  }
576
- if ([...BEDROCK_OBJECT_SCHEMA_KEYS].some((key) => key in schema))
577
- return true;
578
631
  for (const combinator of BEDROCK_ROOT_SCHEMA_COMBINATORS) {
579
632
  const branches = schema[combinator];
580
- if (Array.isArray(branches) && branches.length > 0) {
581
- return branches.every((branch) => isSchemaRecord(branch) && isObjectShapedBedrockSchema(branch, root, visitedRefs));
633
+ if (branches === undefined)
634
+ continue;
635
+ if (!Array.isArray(branches) || branches.length === 0)
636
+ return undefined;
637
+ const branchProjections = [];
638
+ for (const branch of branches) {
639
+ if (!isSchemaRecord(branch))
640
+ return undefined;
641
+ const projection = projectBedrockObjectSchema(branch, root, visitedRefs);
642
+ if (!projection)
643
+ return undefined;
644
+ branchProjections.push(projection);
645
+ }
646
+ objectShapeProven = true;
647
+ for (const projection of branchProjections) {
648
+ mergeMissingBedrockSchemaProperties(properties, projection.properties);
582
649
  }
650
+ const combinatorRequired = combinator === "allOf"
651
+ ? new Set(branchProjections.flatMap((projection) => [...projection.required]))
652
+ : intersectBedrockRequiredSets(branchProjections);
653
+ for (const key of combinatorRequired)
654
+ required.add(key);
583
655
  }
584
- return false;
656
+ return objectShapeProven ? { properties, required } : undefined;
585
657
  }
586
658
  /**
587
- * Bedrock Converse requires every tool inputSchema.json root to have type "object". TypeBox
588
- * unions used by tools such as write/edit are represented as top-level anyOf object branches,
589
- * which is valid JSON Schema but rejected by Bedrock before the model is invoked. Flatten only
590
- * unions whose every branch is an object; execution still validates against the authoritative
591
- * union schema after the provider response, so this projection cannot broaden the execution
592
- * contract.
659
+ * Bedrock requires an object root and Anthropic models on Bedrock reject root oneOf/anyOf/allOf
660
+ * tool schemas. TypeBox unions used by tools such as write/edit therefore need a provider-only
661
+ * object projection. The authoritative tool schema still validates every returned call after the
662
+ * provider response, so broadening this wire description cannot broaden execution authority.
593
663
  */
594
664
  function normalizeBedrockToolInputSchema(schema) {
595
- if (!isSchemaRecord(schema) || schema.type === "object")
596
- return schema;
665
+ const detachedSchema = cloneBedrockSchemaValue(schema);
666
+ if (!isSchemaRecord(detachedSchema))
667
+ return { schema: detachedSchema };
597
668
  // Never let a root combinator override an explicit non-object root type.
598
- if (schema.type !== undefined)
599
- return schema;
600
- const combinator = BEDROCK_ROOT_SCHEMA_COMBINATORS.find((key) => key in schema);
601
- if (!combinator) {
602
- return isObjectShapedBedrockSchema(schema, schema) ? { ...schema, type: "object" } : schema;
603
- }
604
- if (!Array.isArray(schema[combinator]) || schema[combinator].length === 0)
605
- return schema;
606
- const branches = schema[combinator].filter(isSchemaRecord);
607
- if (branches.length !== schema[combinator].length)
608
- return schema;
609
- if (!branches.every((branch) => isObjectShapedBedrockSchema(branch, schema))) {
610
- return schema;
611
- }
612
- // Preserve references, empty object branches, and branch constraints that cannot be safely
613
- // represented by the flattened property projection. The added root type is sufficient for
614
- // Bedrock's wire validator while retaining the authoritative schema semantics.
615
- if (branches.some((branch) => typeof branch.$ref === "string" ||
616
- Object.keys(branch).some((key) => !BEDROCK_FLATTENABLE_BRANCH_KEYS.has(key)))) {
617
- return { ...schema, type: "object" };
618
- }
619
- const properties = isSchemaRecord(schema.properties) ? { ...schema.properties } : {};
620
- const serializedProperties = new Map();
621
- for (const [key, value] of Object.entries(properties)) {
622
- serializedProperties.set(key, JSON.stringify(value) ?? "<undefined>");
623
- }
624
- for (const branch of branches) {
625
- if (!isSchemaRecord(branch.properties))
626
- continue;
627
- for (const [key, value] of Object.entries(branch.properties)) {
628
- const serialized = JSON.stringify(value) ?? "<undefined>";
629
- const previous = serializedProperties.get(key);
630
- if (previous !== undefined && previous !== serialized) {
631
- // Flattening would silently discard one branch's constraint. Keep the union intact and
632
- // add only the object root required by Bedrock.
633
- return { ...schema, type: "object" };
669
+ if (detachedSchema.type !== undefined && detachedSchema.type !== "object")
670
+ return { schema: detachedSchema };
671
+ const combinators = BEDROCK_ROOT_SCHEMA_COMBINATORS.filter((key) => key in detachedSchema);
672
+ // Collapsing multiple independent compositions into one object would describe neither schema.
673
+ if (combinators.length > 1)
674
+ return { schema: detachedSchema };
675
+ if (combinators.length === 0) {
676
+ if (!projectBedrockObjectSchema(detachedSchema, detachedSchema))
677
+ return { schema: detachedSchema };
678
+ const normalized = { ...detachedSchema, type: "object" };
679
+ if ("properties" in detachedSchema) {
680
+ normalized.properties = bedrockSchemaProperties(detachedSchema);
681
+ if ("required" in detachedSchema) {
682
+ normalized.required = bedrockSchemaRequired(detachedSchema).filter((key) => Object.hasOwn(normalized.properties, key));
634
683
  }
635
- serializedProperties.set(key, serialized);
636
- properties[key] = value;
637
684
  }
685
+ return { schema: normalized };
638
686
  }
639
- if (Object.keys(properties).length === 0)
640
- return { ...schema, type: "object" };
641
- const normalized = { ...schema, type: "object", properties };
642
- delete normalized[combinator];
643
- const requiredSets = branches.map((branch) => new Set(Array.isArray(branch.required)
644
- ? branch.required.filter((key) => typeof key === "string")
645
- : []));
646
- const rootRequired = Array.isArray(schema.required)
647
- ? schema.required.filter((key) => typeof key === "string")
648
- : [];
649
- if (combinator === "allOf") {
650
- normalized.required = [...new Set([...rootRequired, ...requiredSets.flatMap((required) => [...required])])];
651
- }
652
- else {
653
- const commonRequired = requiredSets[0] ?? new Set();
654
- for (const required of requiredSets.slice(1)) {
655
- for (const key of commonRequired)
656
- if (!required.has(key))
657
- commonRequired.delete(key);
658
- }
659
- normalized.required = [...new Set([...rootRequired, ...commonRequired])];
660
- }
661
- return normalized;
687
+ const projection = projectBedrockObjectSchema(detachedSchema, detachedSchema);
688
+ if (!projection)
689
+ return { schema: detachedSchema };
690
+ const required = [...projection.required].filter((key) => Object.hasOwn(projection.properties, key));
691
+ const normalized = {
692
+ ...detachedSchema,
693
+ type: "object",
694
+ properties: projection.properties,
695
+ required,
696
+ };
697
+ for (const combinator of BEDROCK_ROOT_SCHEMA_COMBINATORS)
698
+ delete normalized[combinator];
699
+ return {
700
+ schema: normalized,
701
+ constraintDescription: describeBedrockRootSchemaConstraint(detachedSchema, combinators),
702
+ };
662
703
  }
663
704
  function isBedrockToolInputSchema(value) {
664
- return isSchemaRecord(value) && value.type === "object";
705
+ return (isSchemaRecord(value) &&
706
+ value.type === "object" &&
707
+ BEDROCK_ROOT_SCHEMA_COMBINATORS.every((combinator) => !(combinator in value)));
708
+ }
709
+ function describeBedrockRootSchemaConstraint(root, combinators) {
710
+ const preferred = combinators.includes("oneOf") ? "oneOf" : combinators.includes("anyOf") ? "anyOf" : "allOf";
711
+ if (preferred === "allOf") {
712
+ return "Input constraint: all listed parameters apply together (flattened from a JSON Schema allOf).";
713
+ }
714
+ const branches = root[preferred];
715
+ const groups = Array.isArray(branches)
716
+ ? branches.flatMap((branch) => {
717
+ if (!isSchemaRecord(branch))
718
+ return [];
719
+ const projection = projectBedrockObjectSchema(branch, root);
720
+ if (!projection)
721
+ return [];
722
+ const names = projection.required.size > 0 ? [...projection.required] : Object.keys(projection.properties);
723
+ return names.length > 0 ? [`(${names.join(", ")})`] : [];
724
+ })
725
+ : [];
726
+ const choice = preferred === "oneOf" ? "exactly one" : "at least one";
727
+ const alternatives = groups.length > 0 ? `: ${groups.join(" or ")}` : "";
728
+ return `Input constraint: provide parameters for ${choice} of the documented alternatives${alternatives}.`;
665
729
  }
666
730
  function isExplicitBedrockToolChoice(toolChoice) {
667
731
  return typeof toolChoice === "object" && toolChoice !== null && toolChoice.type === "tool";
@@ -859,15 +923,17 @@ function convertToolConfig(tools, toolChoice, toolNameMap) {
859
923
  return undefined;
860
924
  const bedrockTools = [];
861
925
  for (const tool of tools) {
862
- const inputSchema = normalizeBedrockToolInputSchema(tool.parameters);
863
- if (!isBedrockToolInputSchema(inputSchema)) {
926
+ const normalizedInput = normalizeBedrockToolInputSchema(tool.parameters);
927
+ if (!isBedrockToolInputSchema(normalizedInput.schema)) {
864
928
  throw new Error(`Bedrock tool "${tool.name}" requires an object input schema`);
865
929
  }
866
930
  bedrockTools.push({
867
931
  toolSpec: {
868
932
  name: toolNameMap.toProviderName(tool.name),
869
- description: tool.description,
870
- inputSchema: { json: inputSchema },
933
+ description: normalizedInput.constraintDescription
934
+ ? `${normalizedInput.constraintDescription}\n\n${tool.description}`
935
+ : tool.description,
936
+ inputSchema: { json: normalizedInput.schema },
871
937
  },
872
938
  });
873
939
  }
@@ -1 +1 @@
1
- {"version":3,"file":"amazon-bedrock.js","sourceRoot":"","sources":["../../src/providers/amazon-bedrock.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tBedrockRuntimeClient,\n\ttype BedrockRuntimeClientConfig,\n\tBedrockRuntimeServiceException,\n\tStopReason as BedrockStopReason,\n\ttype Tool as BedrockTool,\n\tCachePointType,\n\tCacheTTL,\n\ttype ContentBlock,\n\ttype ContentBlockDeltaEvent,\n\ttype ContentBlockStartEvent,\n\ttype ContentBlockStopEvent,\n\tConversationRole,\n\tConverseStreamCommand,\n\ttype ConverseStreamMetadataEvent,\n\tImageFormat,\n\ttype Message,\n\ttype SystemContentBlock,\n\ttype ToolChoice,\n\ttype ToolConfiguration,\n\ttype ToolResultContentBlock,\n\tToolResultStatus,\n} from \"@aws-sdk/client-bedrock-runtime\";\nimport { NodeHttpHandler } from \"@smithy/node-http-handler\";\nimport type { BuildMiddleware, DocumentType, MetadataBearer } from \"@smithy/types\";\nimport { calculateCost } from \"../models.ts\";\nimport type {\n\tAssistantMessage,\n\tCacheRetention,\n\tContext,\n\tImageContent,\n\tModel,\n\tSimpleStreamOptions,\n\tStopReason,\n\tStreamFunction,\n\tStreamOptions,\n\tTextContent,\n\tThinkingBudgets,\n\tThinkingContent,\n\tThinkingLevel,\n\tTool,\n\tToolCall,\n\tToolResultMessage,\n} from \"../types.ts\";\nimport { normalizeProviderError } from \"../utils/error-body.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { parseStreamingJson } from \"../utils/json-parse.ts\";\nimport { createHttpProxyAgentsForTarget } from \"../utils/node-http-proxy.ts\";\nimport { sanitizeSurrogates } from \"../utils/sanitize-unicode.ts\";\nimport { createToolNameMap, type ToolNameMap } from \"../utils/tool-names.ts\";\nimport { getRecoverableBedrockSsoError } from \"./bedrock-sso.ts\";\nimport {\n\tapplyProviderPayloadHook,\n\tcommitSuccessfulAssistantParse,\n\tcreateAssistantMessage,\n\tmapStandardThinkingEffort,\n\tresolveCacheRetention,\n\tterminateAssistantStreamWithError,\n} from \"./provider-runtime.ts\";\nimport { adjustMaxTokensForThinking, buildBaseOptions, clampReasoning } from \"./simple-options.ts\";\nimport { transformMessages } from \"./transform-messages.ts\";\n\nexport type BedrockThinkingDisplay = \"summarized\" | \"omitted\";\n\nexport interface BedrockOptions extends StreamOptions {\n\tregion?: string;\n\tprofile?: string;\n\ttoolChoice?: \"auto\" | \"any\" | \"none\" | { type: \"tool\"; name: string };\n\t/* See https://docs.aws.amazon.com/bedrock/latest/userguide/inference-reasoning.html for supported models. */\n\treasoning?: ThinkingLevel;\n\t/* Custom token budgets per thinking level. Overrides default budgets. */\n\tthinkingBudgets?: ThinkingBudgets;\n\t/* Only supported by Claude 4.x models, see https://docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-extended-thinking.html#claude-messages-extended-thinking-tool-use-interleaved */\n\tinterleavedThinking?: boolean;\n\t/**\n\t * Controls how Claude's thinking content is returned in responses.\n\t * - \"summarized\": Thinking blocks contain summarized thinking text (default here).\n\t * - \"omitted\": Thinking content is redacted but the signature still travels back\n\t * for multi-turn continuity, reducing time-to-first-text-token.\n\t *\n\t * Note: Anthropic's API default for Claude Opus 4.8 and Mythos Preview is\n\t * \"omitted\". We default to \"summarized\" here to keep behavior consistent with\n\t * older Claude 4 models. Only applies to Claude models on Bedrock.\n\t */\n\tthinkingDisplay?: BedrockThinkingDisplay;\n\t/** Key-value pairs attached to the inference request for cost allocation tagging.\n\t * Keys: max 64 chars, no `aws:` prefix. Values: max 256 chars. Max 50 pairs.\n\t * Tags appear in AWS Cost Explorer split cost allocation data.\n\t * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStream.html */\n\trequestMetadata?: Record<string, string>;\n\t/** Bearer token for Bedrock API key authentication.\n\t * When set, bypasses SigV4 signing and sends Authorization: Bearer <token> instead.\n\t * Requires `bedrock:CallWithBearerToken` IAM permission on the token's identity.\n\t * Set via AWS_BEARER_TOKEN_BEDROCK env var or pass directly.\n\t * @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html */\n\tbearerToken?: string;\n}\n\ntype Block = (TextContent | ThinkingContent | ToolCall) & { index?: number; partialJson?: string };\n\nconst EMPTY_TEXT_PLACEHOLDER = \"<empty>\";\n\nexport const streamBedrock: StreamFunction<\"bedrock-converse-stream\", BedrockOptions> = (\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcontext: Context,\n\toptions: BedrockOptions = {},\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\t(async () => {\n\t\tconst toolNameMap = createToolNameMap(context.tools ?? []);\n\t\tconst output = createAssistantMessage(model);\n\n\t\tconst blocks = output.content as Block[];\n\n\t\tconst config: BedrockRuntimeClientConfig = {\n\t\t\tprofile: options.profile?.trim() || undefined,\n\t\t};\n\t\tconst configuredRegion = getConfiguredBedrockRegion(options);\n\t\tconst configuredProfile = getConfiguredBedrockProfile(options);\n\t\tconst recoveryProfile = configuredProfile ?? \"default\";\n\t\tconst hasConfiguredProfile = configuredProfile !== undefined;\n\t\tconst endpointRegion = getStandardBedrockEndpointRegion(model.baseUrl);\n\t\tconst useExplicitEndpoint = shouldUseExplicitBedrockEndpoint(\n\t\t\tmodel.baseUrl,\n\t\t\tconfiguredRegion,\n\t\t\thasConfiguredProfile,\n\t\t);\n\n\t\t// Only pin standard AWS Bedrock runtime endpoints when no region/profile is configured.\n\t\t// This preserves custom endpoints (VPC/proxy) from #3402 without forcing built-in\n\t\t// catalog defaults such as us-east-1 to override AWS_REGION/AWS_PROFILE.\n\t\tif (useExplicitEndpoint) {\n\t\t\tconfig.endpoint = model.baseUrl;\n\t\t}\n\n\t\t// Resolve bearer token for Bedrock API key auth.\n\t\tconst bearerToken = options.bearerToken || process.env.AWS_BEARER_TOKEN_BEDROCK || undefined;\n\t\tconst useBearerToken = bearerToken !== undefined && process.env.AWS_BEDROCK_SKIP_AUTH !== \"1\";\n\n\t\t// in Node.js/Bun environment only\n\t\tif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n\t\t\t// Region resolution: explicit option > env vars > SDK default chain.\n\t\t\t// When AWS_PROFILE is set, we leave region undefined so the SDK can\n\t\t\t// resolve it from AWS profile config. Otherwise fall back to us-east-1.\n\t\t\tif (configuredRegion) {\n\t\t\t\tconfig.region = configuredRegion;\n\t\t\t} else if (endpointRegion && useExplicitEndpoint) {\n\t\t\t\tconfig.region = endpointRegion;\n\t\t\t} else if (!hasConfiguredProfile) {\n\t\t\t\tconfig.region = \"us-east-1\";\n\t\t\t}\n\n\t\t\t// Support proxies that don't need authentication\n\t\t\tif (process.env.AWS_BEDROCK_SKIP_AUTH === \"1\") {\n\t\t\t\tconfig.credentials = {\n\t\t\t\t\taccessKeyId: \"dummy-access-key\",\n\t\t\t\t\tsecretAccessKey: \"dummy-secret-key\",\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst proxyAgents = createHttpProxyAgentsForTarget(model.baseUrl);\n\t\t\tif (proxyAgents) {\n\t\t\t\t// Bedrock runtime uses NodeHttp2Handler by default since v3.798.0, which is based\n\t\t\t\t// on `http2` module and has no support for http agent.\n\t\t\t\t// Use NodeHttpHandler to support HTTP(S) proxy agents.\n\t\t\t\tconfig.requestHandler = new NodeHttpHandler(proxyAgents);\n\t\t\t} else if (process.env.AWS_BEDROCK_FORCE_HTTP1 === \"1\") {\n\t\t\t\t// Some custom endpoints require HTTP/1.1 instead of HTTP/2\n\t\t\t\tconfig.requestHandler = new NodeHttpHandler();\n\t\t\t}\n\t\t} else {\n\t\t\t// Non-Node environment (browser): fall back to us-east-1 since\n\t\t\t// there's no config file resolution available.\n\t\t\tconfig.region =\n\t\t\t\tconfiguredRegion || (endpointRegion && useExplicitEndpoint ? endpointRegion : undefined) || \"us-east-1\";\n\t\t}\n\n\t\tif (useBearerToken) {\n\t\t\tconfig.token = { token: bearerToken };\n\t\t\tconfig.authSchemePreference = [\"httpBearerAuth\"];\n\t\t}\n\n\t\ttry {\n\t\t\tconst cacheRetention = resolveCacheRetention(options.cacheRetention);\n\t\t\tconst inferenceMaxTokens = options.maxTokens ?? (isAnthropicClaudeModel(model) ? model.maxTokens : undefined);\n\t\t\tconst commandInput = await applyProviderPayloadHook(\n\t\t\t\t{\n\t\t\t\t\tmodelId: model.id,\n\t\t\t\t\tmessages: convertMessages(context, model, cacheRetention, toolNameMap),\n\t\t\t\t\tsystem: buildSystemPrompt(context.systemPrompt, model, cacheRetention),\n\t\t\t\t\tinferenceConfig: {\n\t\t\t\t\t\t...(inferenceMaxTokens !== undefined && { maxTokens: inferenceMaxTokens }),\n\t\t\t\t\t\t...(options.temperature !== undefined && { temperature: options.temperature }),\n\t\t\t\t\t},\n\t\t\t\t\ttoolConfig: convertToolConfig(context.tools, options.toolChoice, toolNameMap),\n\t\t\t\t\tadditionalModelRequestFields: buildAdditionalModelRequestFields(model, options),\n\t\t\t\t\t...(options.requestMetadata !== undefined && { requestMetadata: options.requestMetadata }),\n\t\t\t\t},\n\t\t\t\tmodel,\n\t\t\t\toptions.onPayload,\n\t\t\t);\n\t\t\tlet ssoRecoveryAttempted = false;\n\t\t\twhile (true) {\n\t\t\t\tlet receivedResponse = false;\n\t\t\t\ttry {\n\t\t\t\t\tconst client = new BedrockRuntimeClient(config);\n\t\t\t\t\tif (options.headers && Object.keys(options.headers).length > 0) {\n\t\t\t\t\t\taddCustomHeadersMiddleware(client, options.headers);\n\t\t\t\t\t}\n\t\t\t\t\tconst command = new ConverseStreamCommand(commandInput);\n\t\t\t\t\tconst response = await client.send(command, { abortSignal: options.signal });\n\t\t\t\t\treceivedResponse = true;\n\t\t\t\t\tif (response.$metadata.httpStatusCode !== undefined) {\n\t\t\t\t\t\tconst responseHeaders: Record<string, string> = {};\n\t\t\t\t\t\tif (response.$metadata.requestId) {\n\t\t\t\t\t\t\tresponseHeaders[\"x-amzn-requestid\"] = response.$metadata.requestId;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait options?.onResponse?.(\n\t\t\t\t\t\t\t{ status: response.$metadata.httpStatusCode, headers: responseHeaders },\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!response.stream) {\n\t\t\t\t\t\tthrow new Error(\"Bedrock returned a response without a stream\");\n\t\t\t\t\t}\n\t\t\t\t\tfor await (const item of response.stream) {\n\t\t\t\t\t\tif (item.messageStart) {\n\t\t\t\t\t\t\tif (item.messageStart.role !== ConversationRole.ASSISTANT) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Unexpected assistant message start but got user message start instead\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstream.push({ type: \"start\", partial: output });\n\t\t\t\t\t\t} else if (item.contentBlockStart) {\n\t\t\t\t\t\t\thandleContentBlockStart(item.contentBlockStart, blocks, output, stream, toolNameMap);\n\t\t\t\t\t\t} else if (item.contentBlockDelta) {\n\t\t\t\t\t\t\thandleContentBlockDelta(item.contentBlockDelta, blocks, output, stream);\n\t\t\t\t\t\t} else if (item.contentBlockStop) {\n\t\t\t\t\t\t\thandleContentBlockStop(item.contentBlockStop, blocks, output, stream);\n\t\t\t\t\t\t} else if (item.messageStop) {\n\t\t\t\t\t\t\tconst mapped = mapStopReason(item.messageStop.stopReason);\n\t\t\t\t\t\t\toutput.stopReason = mapped.stopReason;\n\t\t\t\t\t\t\tif (mapped.errorMessage) output.errorMessage = mapped.errorMessage;\n\t\t\t\t\t\t\tif (output.stopReason !== \"error\" && output.stopReason !== \"aborted\") {\n\t\t\t\t\t\t\t\tcommitSuccessfulAssistantParse(output);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (item.metadata) {\n\t\t\t\t\t\t\thandleMetadata(item.metadata, model, output);\n\t\t\t\t\t\t} else if (item.internalServerException) {\n\t\t\t\t\t\t\tthrow item.internalServerException;\n\t\t\t\t\t\t} else if (item.modelStreamErrorException) {\n\t\t\t\t\t\t\tthrow item.modelStreamErrorException;\n\t\t\t\t\t\t} else if (item.validationException) {\n\t\t\t\t\t\t\tthrow item.validationException;\n\t\t\t\t\t\t} else if (item.throttlingException) {\n\t\t\t\t\t\t\tthrow item.throttlingException;\n\t\t\t\t\t\t} else if (item.serviceUnavailableException) {\n\t\t\t\t\t\t\tthrow item.serviceUnavailableException;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (output.stopReason === \"error\" || output.stopReason === \"aborted\") {\n\t\t\t\t\t\tthrow new Error(output.errorMessage || \"An unknown error occurred\");\n\t\t\t\t\t}\n\n\t\t\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\t\t\tstream.end();\n\t\t\t\t\tbreak;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst ssoError = getRecoverableBedrockSsoError(error);\n\t\t\t\t\tif (\n\t\t\t\t\t\t!ssoRecoveryAttempted &&\n\t\t\t\t\t\t!receivedResponse &&\n\t\t\t\t\t\t!options.signal?.aborted &&\n\t\t\t\t\t\toptions.interactionMode !== \"background\" &&\n\t\t\t\t\t\toptions.onInteractiveAuthRecovery &&\n\t\t\t\t\t\tssoError &&\n\t\t\t\t\t\t!useBearerToken &&\n\t\t\t\t\t\tprocess.env.AWS_BEDROCK_SKIP_AUTH !== \"1\" &&\n\t\t\t\t\t\t(await options.onInteractiveAuthRecovery({\n\t\t\t\t\t\t\tmethod: \"aws-sso\",\n\t\t\t\t\t\t\tproviderId: model.provider,\n\t\t\t\t\t\t\tprofile: recoveryProfile,\n\t\t\t\t\t\t\t...(ssoError.name ? { errorName: ssoError.name } : {}),\n\t\t\t\t\t\t\terrorMessage: ssoError.message,\n\t\t\t\t\t\t\t...(options.signal ? { signal: options.signal } : {}),\n\t\t\t\t\t\t}))\n\t\t\t\t\t) {\n\t\t\t\t\t\tssoRecoveryAttempted = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tterminateAssistantStreamWithError(stream, output, options.signal, error, {\n\t\t\t\tformatError: formatBedrockError,\n\t\t\t\tscratchFields: [\"index\", \"partialJson\"],\n\t\t\t});\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\n/**\n * Human-readable prefixes for Bedrock SDK exception names.\n * The downstream retry logic in agent-session matches patterns like\n * `server.?error` and `service.?unavailable`, so we preserve the legacy\n * prefix format rather than using the raw SDK exception name.\n */\nconst BEDROCK_ERROR_PREFIXES: Record<string, string> = {\n\tInternalServerException: \"Internal server error\",\n\tModelStreamErrorException: \"Model stream error\",\n\tValidationException: \"Validation error\",\n\tThrottlingException: \"Throttling error\",\n\tServiceUnavailableException: \"Service unavailable\",\n};\n\n/**\n * Format a Bedrock error with a human-readable prefix.\n * AWS SDK exceptions (both from `client.send()` and from stream event items)\n * extend BedrockRuntimeServiceException. We map the `.name` to a stable\n * human-readable prefix so downstream consumers (retry logic, context-overflow\n * detection) can distinguish error categories via simple string matching.\n */\nfunction formatBedrockError(error: unknown): string {\n\tconst norm = normalizeProviderError(error);\n\tconst core =\n\t\t!norm.messageCarriesBody && norm.status !== undefined && norm.body !== undefined\n\t\t\t? `${norm.status}: ${norm.body}`\n\t\t\t: norm.message;\n\tif (error instanceof BedrockRuntimeServiceException) {\n\t\tconst prefix = BEDROCK_ERROR_PREFIXES[error.name] ?? error.name;\n\t\treturn `${prefix}: ${core}`;\n\t}\n\treturn core;\n}\n\n/**\n * Header keys that must never be overwritten by caller-supplied headers.\n * `host` and `x-amz-*` participate in the SigV4 canonical request; `authorization`\n * is owned by SigV4 or the bearer-token path (config.token + authSchemePreference).\n * Compared case-insensitively (caller key is lower-cased before lookup).\n */\nconst RESERVED_HEADER_EXACT = new Set([\"authorization\", \"host\"]);\n\nfunction isReservedHeader(key: string): boolean {\n\tconst lower = key.toLowerCase();\n\treturn lower.startsWith(\"x-amz-\") || RESERVED_HEADER_EXACT.has(lower);\n}\n\n/**\n * Attach caller-supplied headers to the outgoing Bedrock request via a Smithy\n * `build`-step middleware. The `build` step runs after request serialisation but\n * before SigV4 signing, so injected headers are covered by the signature. Reserved\n * SigV4 / auth headers (`x-amz-*`, `authorization`, `host`) are silently skipped;\n * all other caller headers override any existing same-named header on the request.\n */\nfunction addCustomHeadersMiddleware(client: BedrockRuntimeClient, headers: Record<string, string>): void {\n\tconst middleware: BuildMiddleware<object, MetadataBearer> = (next) => async (args) => {\n\t\tconst request = args.request;\n\t\tif (request && typeof request === \"object\" && \"headers\" in request) {\n\t\t\tconst requestHeaders = (request as { headers: Record<string, string> }).headers;\n\t\t\tfor (const [key, value] of Object.entries(headers)) {\n\t\t\t\tif (!isReservedHeader(key)) {\n\t\t\t\t\trequestHeaders[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn next(args);\n\t};\n\tclient.middlewareStack.add(middleware, { step: \"build\", name: \"pi-ai-custom-headers\", priority: \"low\" });\n}\n\nexport const streamSimpleBedrock: StreamFunction<\"bedrock-converse-stream\", SimpleStreamOptions> = (\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tconst base = buildBaseOptions(model, options, undefined);\n\tif (!options?.reasoning || options.reasoning === \"off\") {\n\t\treturn streamBedrock(model, context, { ...base, reasoning: undefined } satisfies BedrockOptions);\n\t}\n\n\tif (isAnthropicClaudeModel(model)) {\n\t\tif (supportsAdaptiveThinking(model.id, model.name)) {\n\t\t\treturn streamBedrock(model, context, {\n\t\t\t\t...base,\n\t\t\t\treasoning: options.reasoning,\n\t\t\t\tthinkingBudgets: options.thinkingBudgets,\n\t\t\t} satisfies BedrockOptions);\n\t\t}\n\n\t\t// Undefined means the caller did not request an output cap; let the helper use the model cap.\n\t\t// Do not coerce to 0 here, or the thinking budget would become the entire maxTokens value.\n\t\tconst adjusted = adjustMaxTokensForThinking(\n\t\t\tbase.maxTokens,\n\t\t\tmodel.maxTokens,\n\t\t\toptions.reasoning,\n\t\t\toptions.thinkingBudgets,\n\t\t);\n\n\t\treturn streamBedrock(model, context, {\n\t\t\t...base,\n\t\t\tmaxTokens: adjusted.maxTokens,\n\t\t\treasoning: options.reasoning,\n\t\t\tthinkingBudgets: {\n\t\t\t\t...(options.thinkingBudgets || {}),\n\t\t\t\t[clampReasoning(options.reasoning)!]: adjusted.thinkingBudget,\n\t\t\t},\n\t\t} satisfies BedrockOptions);\n\t}\n\n\treturn streamBedrock(model, context, {\n\t\t...base,\n\t\treasoning: options.reasoning,\n\t\tthinkingBudgets: options.thinkingBudgets,\n\t} satisfies BedrockOptions);\n};\n\nfunction handleContentBlockStart(\n\tevent: ContentBlockStartEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n\ttoolNameMap: ToolNameMap,\n): void {\n\tconst index = event.contentBlockIndex!;\n\tconst start = event.start;\n\n\tif (start?.toolUse) {\n\t\tconst block: Block = {\n\t\t\ttype: \"toolCall\",\n\t\t\tid: start.toolUse.toolUseId || \"\",\n\t\t\tname: toolNameMap.toOriginalName(start.toolUse.name || \"\"),\n\t\t\targuments: {},\n\t\t\tpartialJson: \"\",\n\t\t\tindex,\n\t\t};\n\t\toutput.content.push(block);\n\t\tstream.push({ type: \"toolcall_start\", contentIndex: blocks.length - 1, partial: output });\n\t}\n}\n\nfunction handleContentBlockDelta(\n\tevent: ContentBlockDeltaEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n): void {\n\tconst contentBlockIndex = event.contentBlockIndex!;\n\tconst delta = event.delta;\n\tlet index = blocks.findIndex((b) => b.index === contentBlockIndex);\n\tlet block = blocks[index];\n\n\tif (delta?.text !== undefined) {\n\t\t// If no text block exists yet, create one, as `handleContentBlockStart` is not sent for text blocks\n\t\tif (!block) {\n\t\t\tconst newBlock: Block = { type: \"text\", text: \"\", index: contentBlockIndex };\n\t\t\toutput.content.push(newBlock);\n\t\t\tindex = blocks.length - 1;\n\t\t\tblock = blocks[index];\n\t\t\tstream.push({ type: \"text_start\", contentIndex: index, partial: output });\n\t\t}\n\t\tif (block.type === \"text\") {\n\t\t\tblock.text += delta.text;\n\t\t\tstream.push({ type: \"text_delta\", contentIndex: index, delta: delta.text, partial: output });\n\t\t}\n\t} else if (delta?.toolUse && block?.type === \"toolCall\") {\n\t\tblock.partialJson = (block.partialJson || \"\") + (delta.toolUse.input || \"\");\n\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\tstream.push({ type: \"toolcall_delta\", contentIndex: index, delta: delta.toolUse.input || \"\", partial: output });\n\t} else if (delta?.reasoningContent) {\n\t\tlet thinkingBlock = block;\n\t\tlet thinkingIndex = index;\n\n\t\tif (!thinkingBlock) {\n\t\t\tconst newBlock: Block = { type: \"thinking\", thinking: \"\", thinkingSignature: \"\", index: contentBlockIndex };\n\t\t\toutput.content.push(newBlock);\n\t\t\tthinkingIndex = blocks.length - 1;\n\t\t\tthinkingBlock = blocks[thinkingIndex];\n\t\t\tstream.push({ type: \"thinking_start\", contentIndex: thinkingIndex, partial: output });\n\t\t}\n\n\t\tif (thinkingBlock?.type === \"thinking\") {\n\t\t\tif (delta.reasoningContent.text) {\n\t\t\t\tthinkingBlock.thinking += delta.reasoningContent.text;\n\t\t\t\tstream.push({\n\t\t\t\t\ttype: \"thinking_delta\",\n\t\t\t\t\tcontentIndex: thinkingIndex,\n\t\t\t\t\tdelta: delta.reasoningContent.text,\n\t\t\t\t\tpartial: output,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (delta.reasoningContent.redactedContent) {\n\t\t\t\tthinkingBlock.redacted = true;\n\t\t\t\tthinkingBlock.thinkingSignature = appendBase64Bytes(\n\t\t\t\t\tthinkingBlock.thinkingSignature,\n\t\t\t\t\tdelta.reasoningContent.redactedContent,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (delta.reasoningContent.signature) {\n\t\t\t\tthinkingBlock.thinkingSignature =\n\t\t\t\t\t(thinkingBlock.thinkingSignature || \"\") + delta.reasoningContent.signature;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction handleMetadata(\n\tevent: ConverseStreamMetadataEvent,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\toutput: AssistantMessage,\n): void {\n\tif (event.usage) {\n\t\toutput.usage.input = event.usage.inputTokens || 0;\n\t\toutput.usage.output = event.usage.outputTokens || 0;\n\t\toutput.usage.cacheRead = event.usage.cacheReadInputTokens || 0;\n\t\toutput.usage.cacheWrite = event.usage.cacheWriteInputTokens || 0;\n\t\toutput.usage.totalTokens = event.usage.totalTokens || output.usage.input + output.usage.output;\n\t\tcalculateCost(model, output.usage);\n\t}\n}\n\nfunction handleContentBlockStop(\n\tevent: ContentBlockStopEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n): void {\n\tconst index = blocks.findIndex((b) => b.index === event.contentBlockIndex);\n\tconst block = blocks[index];\n\tif (!block) return;\n\tdelete (block as Block).index;\n\n\tswitch (block.type) {\n\t\tcase \"text\":\n\t\t\tstream.push({ type: \"text_end\", contentIndex: index, content: block.text, partial: output });\n\t\t\tbreak;\n\t\tcase \"thinking\":\n\t\t\tstream.push({ type: \"thinking_end\", contentIndex: index, content: block.thinking, partial: output });\n\t\t\tbreak;\n\t\tcase \"toolCall\":\n\t\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\t\t// Finalize in-place and strip the scratch buffer so replay only\n\t\t\t// carries parsed arguments.\n\t\t\tdelete (block as Block).partialJson;\n\t\t\tstream.push({ type: \"toolcall_end\", contentIndex: index, toolCall: block, partial: output });\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Check if the model supports adaptive thinking (Opus 4.6+, Sonnet 4.6).\n * Checks both model ID and model name to support application inference profiles\n * whose ARNs don't contain the model name.\n */\nfunction getModelMatchCandidates(modelId: string, modelName?: string): string[] {\n\tconst values = modelName ? [modelId, modelName] : [modelId];\n\treturn values.flatMap((value) => {\n\t\tconst lower = value.toLowerCase();\n\t\treturn [lower, lower.replace(/[\\s_.:]+/g, \"-\")];\n\t});\n}\n\nfunction supportsAdaptiveThinking(modelId: string, modelName?: string): boolean {\n\tconst candidates = getModelMatchCandidates(modelId, modelName);\n\treturn candidates.some(\n\t\t(s) =>\n\t\t\ts.includes(\"opus-4-6\") ||\n\t\t\ts.includes(\"opus-4-7\") ||\n\t\t\ts.includes(\"opus-4-8\") ||\n\t\t\ts.includes(\"opus-5\") ||\n\t\t\ts.includes(\"sonnet-4-6\") ||\n\t\t\ts.includes(\"sonnet-5\") ||\n\t\t\ts.includes(\"fable-5\"),\n\t);\n}\n\nfunction supportsNativeXhighEffort(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst candidates = getModelMatchCandidates(model.id, model.name);\n\treturn candidates.some(\n\t\t(s) =>\n\t\t\ts.includes(\"opus-4-7\") ||\n\t\t\ts.includes(\"opus-4-8\") ||\n\t\t\ts.includes(\"opus-5\") ||\n\t\t\ts.includes(\"sonnet-5\") ||\n\t\t\ts.includes(\"fable-5\"),\n\t);\n}\n\nfunction mapThinkingLevelToEffort(\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tlevel: SimpleStreamOptions[\"reasoning\"],\n): \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\" {\n\tif (level === \"xhigh\" && supportsNativeXhighEffort(model)) return \"xhigh\";\n\treturn mapStandardThinkingEffort(model, level) as \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\n}\n\n/**\n * Check if the model is an Anthropic Claude model on Bedrock.\n * Checks both model ID and model name to support application inference profiles\n * whose ARNs don't contain the model name.\n */\nfunction isAnthropicClaudeModel(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst id = model.id.toLowerCase();\n\tconst name = model.name?.toLowerCase() ?? \"\";\n\treturn (\n\t\tid.includes(\"anthropic.claude\") ||\n\t\tid.includes(\"anthropic/claude\") ||\n\t\tname.includes(\"anthropic.claude\") ||\n\t\tname.includes(\"anthropic/claude\") ||\n\t\tname.includes(\"claude\")\n\t);\n}\n\n/**\n * Check if the model supports prompt caching.\n * Supported: Claude 3.5 Haiku, Claude 3.7 Sonnet, Claude 4.x models\n *\n * For base models and system-defined inference profiles the model ID / ARN\n * contains the model name, so we can decide locally.\n *\n * For application inference profiles (whose ARNs don't contain the model name),\n * also checks model.name which is user-controlled via models.json or registerProvider.\n * As a last resort, set AWS_BEDROCK_FORCE_CACHE=1 to enable cache points.\n * Amazon Nova models have automatic caching and don't need explicit cache points.\n */\nfunction supportsPromptCaching(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst candidates = getModelMatchCandidates(model.id, model.name);\n\n\tconst hasClaudeRef = candidates.some((s) => s.includes(\"claude\"));\n\tif (!hasClaudeRef) {\n\t\t// Application inference profiles don't contain the model name in the ARN.\n\t\t// Allow users to force cache points via environment variable.\n\t\tif (typeof process !== \"undefined\" && process.env.AWS_BEDROCK_FORCE_CACHE === \"1\") return true;\n\t\treturn false;\n\t}\n\t// Claude 5 models (fable-5, opus-5, sonnet-5)\n\tif (candidates.some((s) => s.includes(\"fable-5\") || s.includes(\"opus-5\") || s.includes(\"sonnet-5\"))) return true;\n\t// Claude 4.x models (opus-4, sonnet-4, haiku-4)\n\tif (candidates.some((s) => s.includes(\"-4-\"))) return true;\n\t// Claude 3.7 Sonnet\n\tif (candidates.some((s) => s.includes(\"claude-3-7-sonnet\"))) return true;\n\t// Claude 3.5 Haiku\n\tif (candidates.some((s) => s.includes(\"claude-3-5-haiku\"))) return true;\n\treturn false;\n}\n\n/**\n * Check if the model supports thinking signatures in reasoningContent.\n * Only Anthropic Claude models support the signature field.\n * Other models (OpenAI, Qwen, Minimax, Moonshot, etc.) reject it with:\n * \"This model doesn't support the reasoningContent.reasoningText.signature field\"\n *\n * Checks both model ID and model name to support application inference profiles.\n */\nfunction supportsThinkingSignature(model: Model<\"bedrock-converse-stream\">): boolean {\n\treturn isAnthropicClaudeModel(model);\n}\n\nfunction buildSystemPrompt(\n\tsystemPrompt: string | undefined,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcacheRetention: CacheRetention,\n): SystemContentBlock[] | undefined {\n\tif (!systemPrompt) return undefined;\n\n\tconst blocks: SystemContentBlock[] = [{ text: sanitizeSurrogates(systemPrompt) }];\n\n\t// Add cache point for supported Claude models when caching is enabled\n\tif (cacheRetention !== \"none\" && supportsPromptCaching(model)) {\n\t\tblocks.push({\n\t\t\tcachePoint: { type: CachePointType.DEFAULT, ...(cacheRetention === \"long\" ? { ttl: CacheTTL.ONE_HOUR } : {}) },\n\t\t});\n\t}\n\n\treturn blocks;\n}\n\nfunction normalizeToolCallId(id: string): string {\n\tconst sanitized = id.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n\treturn sanitized.length > 64 ? sanitized.slice(0, 64) : sanitized;\n}\n\nfunction createNonBlankTextBlock(text: string): ContentBlock.TextMember | undefined {\n\tconst sanitized = sanitizeSurrogates(text);\n\treturn sanitized.trim().length === 0 ? undefined : { text: sanitized };\n}\n\nfunction createRequiredTextBlock(text: string): ContentBlock.TextMember {\n\treturn createNonBlankTextBlock(text) ?? { text: EMPTY_TEXT_PLACEHOLDER };\n}\n\nfunction sanitizeBedrockDocument(value: DocumentType): DocumentType {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(sanitizeBedrockDocument);\n\t}\n\tif (value !== null && typeof value === \"object\") {\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(value)\n\t\t\t\t.filter(([key]) => key.length > 0)\n\t\t\t\t.map(([key, nestedValue]) => [key, sanitizeBedrockDocument(nestedValue)]),\n\t\t);\n\t}\n\treturn value;\n}\n\nconst BEDROCK_ROOT_SCHEMA_COMBINATORS = [\"anyOf\", \"oneOf\", \"allOf\"] as const;\nconst BEDROCK_OBJECT_SCHEMA_KEYS = new Set([\n\t\"additionalProperties\",\n\t\"dependentRequired\",\n\t\"maxProperties\",\n\t\"minProperties\",\n\t\"patternProperties\",\n\t\"properties\",\n\t\"propertyNames\",\n\t\"required\",\n\t\"unevaluatedProperties\",\n]);\nconst BEDROCK_FLATTENABLE_BRANCH_KEYS = new Set([\"properties\", \"required\", \"type\"]);\n\nfunction isSchemaRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction resolveBedrockLocalSchemaRef(root: Record<string, unknown>, reference: string): unknown {\n\tconst match = reference.match(/^#\\/(\\$defs|definitions)\\/(.+)$/);\n\tif (!match) return undefined;\n\tlet current: unknown = root[match[1]];\n\tfor (const rawPart of match[2].split(\"/\")) {\n\t\tif (!isSchemaRecord(current)) return undefined;\n\t\tconst part = rawPart.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n\t\tcurrent = current[part];\n\t}\n\treturn current;\n}\n\nfunction isObjectShapedBedrockSchema(\n\tschema: Record<string, unknown>,\n\troot: Record<string, unknown>,\n\tvisitedRefs = new Set<string>(),\n): boolean {\n\tif (schema.type === \"object\") return true;\n\tif (schema.type !== undefined) return false;\n\tif (typeof schema.$ref === \"string\") {\n\t\tif (visitedRefs.has(schema.$ref)) return false;\n\t\tconst target = resolveBedrockLocalSchemaRef(root, schema.$ref);\n\t\tif (!isSchemaRecord(target)) return false;\n\t\tconst nextVisitedRefs = new Set(visitedRefs);\n\t\tnextVisitedRefs.add(schema.$ref);\n\t\treturn isObjectShapedBedrockSchema(target, root, nextVisitedRefs);\n\t}\n\tif ([...BEDROCK_OBJECT_SCHEMA_KEYS].some((key) => key in schema)) return true;\n\tfor (const combinator of BEDROCK_ROOT_SCHEMA_COMBINATORS) {\n\t\tconst branches = schema[combinator];\n\t\tif (Array.isArray(branches) && branches.length > 0) {\n\t\t\treturn branches.every(\n\t\t\t\t(branch) => isSchemaRecord(branch) && isObjectShapedBedrockSchema(branch, root, visitedRefs),\n\t\t\t);\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Bedrock Converse requires every tool inputSchema.json root to have type \"object\". TypeBox\n * unions used by tools such as write/edit are represented as top-level anyOf object branches,\n * which is valid JSON Schema but rejected by Bedrock before the model is invoked. Flatten only\n * unions whose every branch is an object; execution still validates against the authoritative\n * union schema after the provider response, so this projection cannot broaden the execution\n * contract.\n */\nfunction normalizeBedrockToolInputSchema(schema: unknown): unknown {\n\tif (!isSchemaRecord(schema) || schema.type === \"object\") return schema;\n\t// Never let a root combinator override an explicit non-object root type.\n\tif (schema.type !== undefined) return schema;\n\n\tconst combinator = BEDROCK_ROOT_SCHEMA_COMBINATORS.find((key) => key in schema);\n\tif (!combinator) {\n\t\treturn isObjectShapedBedrockSchema(schema, schema) ? { ...schema, type: \"object\" } : schema;\n\t}\n\tif (!Array.isArray(schema[combinator]) || schema[combinator].length === 0) return schema;\n\n\tconst branches = schema[combinator].filter(isSchemaRecord);\n\tif (branches.length !== schema[combinator].length) return schema;\n\tif (!branches.every((branch) => isObjectShapedBedrockSchema(branch, schema))) {\n\t\treturn schema;\n\t}\n\t// Preserve references, empty object branches, and branch constraints that cannot be safely\n\t// represented by the flattened property projection. The added root type is sufficient for\n\t// Bedrock's wire validator while retaining the authoritative schema semantics.\n\tif (\n\t\tbranches.some(\n\t\t\t(branch) =>\n\t\t\t\ttypeof branch.$ref === \"string\" ||\n\t\t\t\tObject.keys(branch).some((key) => !BEDROCK_FLATTENABLE_BRANCH_KEYS.has(key)),\n\t\t)\n\t) {\n\t\treturn { ...schema, type: \"object\" };\n\t}\n\n\tconst properties: Record<string, unknown> = isSchemaRecord(schema.properties) ? { ...schema.properties } : {};\n\tconst serializedProperties = new Map<string, string>();\n\tfor (const [key, value] of Object.entries(properties)) {\n\t\tserializedProperties.set(key, JSON.stringify(value) ?? \"<undefined>\");\n\t}\n\tfor (const branch of branches) {\n\t\tif (!isSchemaRecord(branch.properties)) continue;\n\t\tfor (const [key, value] of Object.entries(branch.properties)) {\n\t\t\tconst serialized = JSON.stringify(value) ?? \"<undefined>\";\n\t\t\tconst previous = serializedProperties.get(key);\n\t\t\tif (previous !== undefined && previous !== serialized) {\n\t\t\t\t// Flattening would silently discard one branch's constraint. Keep the union intact and\n\t\t\t\t// add only the object root required by Bedrock.\n\t\t\t\treturn { ...schema, type: \"object\" };\n\t\t\t}\n\t\t\tserializedProperties.set(key, serialized);\n\t\t\tproperties[key] = value;\n\t\t}\n\t}\n\tif (Object.keys(properties).length === 0) return { ...schema, type: \"object\" };\n\n\tconst normalized: Record<string, unknown> = { ...schema, type: \"object\", properties };\n\tdelete normalized[combinator];\n\n\tconst requiredSets = branches.map(\n\t\t(branch) =>\n\t\t\tnew Set(\n\t\t\t\tArray.isArray(branch.required)\n\t\t\t\t\t? branch.required.filter((key): key is string => typeof key === \"string\")\n\t\t\t\t\t: [],\n\t\t\t),\n\t);\n\tconst rootRequired = Array.isArray(schema.required)\n\t\t? schema.required.filter((key): key is string => typeof key === \"string\")\n\t\t: [];\n\tif (combinator === \"allOf\") {\n\t\tnormalized.required = [...new Set([...rootRequired, ...requiredSets.flatMap((required) => [...required])])];\n\t} else {\n\t\tconst commonRequired = requiredSets[0] ?? new Set<string>();\n\t\tfor (const required of requiredSets.slice(1)) {\n\t\t\tfor (const key of commonRequired) if (!required.has(key)) commonRequired.delete(key);\n\t\t}\n\t\tnormalized.required = [...new Set([...rootRequired, ...commonRequired])];\n\t}\n\n\treturn normalized;\n}\n\nfunction isBedrockToolInputSchema(value: unknown): value is Record<string, unknown> {\n\treturn isSchemaRecord(value) && value.type === \"object\";\n}\n\nfunction isExplicitBedrockToolChoice(\n\ttoolChoice: BedrockOptions[\"toolChoice\"],\n): toolChoice is { type: \"tool\"; name: string } {\n\treturn typeof toolChoice === \"object\" && toolChoice !== null && toolChoice.type === \"tool\";\n}\n\nfunction convertToolResultContent(content: (TextContent | ImageContent)[]): ToolResultContentBlock[] {\n\tconst result: ToolResultContentBlock[] = [];\n\tfor (const c of content) {\n\t\tif (c.type === \"image\") {\n\t\t\tresult.push({ image: createImageBlock(c.mimeType, c.data) });\n\t\t} else {\n\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\tif (textBlock) result.push(textBlock);\n\t\t}\n\t}\n\tif (result.length === 0) result.push({ text: EMPTY_TEXT_PLACEHOLDER });\n\treturn result;\n}\n\nfunction convertMessages(\n\tcontext: Context,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcacheRetention: CacheRetention,\n\ttoolNameMap: ToolNameMap,\n): Message[] {\n\tconst result: Message[] = [];\n\tconst transformedMessages = transformMessages(context.messages, model, normalizeToolCallId);\n\n\tfor (let i = 0; i < transformedMessages.length; i++) {\n\t\tconst m = transformedMessages[i];\n\n\t\tswitch (m.role) {\n\t\t\tcase \"user\": {\n\t\t\t\tconst content: ContentBlock[] = [];\n\t\t\t\tif (typeof m.content === \"string\") {\n\t\t\t\t\tcontent.push(createRequiredTextBlock(m.content));\n\t\t\t\t} else {\n\t\t\t\t\tfor (const c of m.content) {\n\t\t\t\t\t\tswitch (c.type) {\n\t\t\t\t\t\t\tcase \"text\": {\n\t\t\t\t\t\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\t\t\t\t\t\tif (textBlock) content.push(textBlock);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"image\":\n\t\t\t\t\t\t\t\tcontent.push({ image: createImageBlock(c.mimeType, c.data) });\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (content.length === 0) content.push({ text: EMPTY_TEXT_PLACEHOLDER });\n\t\t\t\t}\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.USER,\n\t\t\t\t\tcontent,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"assistant\": {\n\t\t\t\t// Skip assistant messages with empty content (e.g., from aborted requests)\n\t\t\t\t// Bedrock rejects messages with empty content arrays\n\t\t\t\tif (m.content.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst contentBlocks: ContentBlock[] = [];\n\t\t\t\tfor (const c of m.content) {\n\t\t\t\t\tswitch (c.type) {\n\t\t\t\t\t\tcase \"text\": {\n\t\t\t\t\t\t\t// Skip empty text blocks\n\t\t\t\t\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\t\t\t\t\tif (!textBlock) continue;\n\t\t\t\t\t\t\tcontentBlocks.push(textBlock);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"toolCall\":\n\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\ttoolUse: {\n\t\t\t\t\t\t\t\t\ttoolUseId: c.id,\n\t\t\t\t\t\t\t\t\tname: toolNameMap.toProviderName(c.name),\n\t\t\t\t\t\t\t\t\tinput: sanitizeBedrockDocument(c.arguments),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"thinking\": {\n\t\t\t\t\t\t\tif (c.redacted) {\n\t\t\t\t\t\t\t\tif (c.thinkingSignature?.trim()) {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\t\t\treasoningContent: {\n\t\t\t\t\t\t\t\t\t\t\tredactedContent: base64ToBytes(c.thinkingSignature),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Skip empty thinking blocks\n\t\t\t\t\t\t\tconst thinking = sanitizeSurrogates(c.thinking);\n\t\t\t\t\t\t\tif (thinking.trim().length === 0) continue;\n\t\t\t\t\t\t\t// Only Anthropic models support the signature field in reasoningText.\n\t\t\t\t\t\t\t// For other models, we omit the signature to avoid errors like:\n\t\t\t\t\t\t\t// \"This model doesn't support the reasoningContent.reasoningText.signature field\"\n\t\t\t\t\t\t\tif (supportsThinkingSignature(model)) {\n\t\t\t\t\t\t\t\t// Signatures arrive after thinking deltas. If a partial or externally\n\t\t\t\t\t\t\t\t// persisted message lacks a signature, Bedrock rejects the replayed\n\t\t\t\t\t\t\t\t// reasoning block. Fall back to plain text, matching Anthropic.\n\t\t\t\t\t\t\t\tif (!c.thinkingSignature || c.thinkingSignature.trim().length === 0) {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({ text: thinking });\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\t\t\treasoningContent: {\n\t\t\t\t\t\t\t\t\t\t\treasoningText: {\n\t\t\t\t\t\t\t\t\t\t\t\ttext: thinking,\n\t\t\t\t\t\t\t\t\t\t\t\tsignature: c.thinkingSignature,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\t\treasoningContent: {\n\t\t\t\t\t\t\t\t\t\treasoningText: { text: thinking },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Skip if all content blocks were filtered out\n\t\t\t\tif (contentBlocks.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.ASSISTANT,\n\t\t\t\t\tcontent: contentBlocks,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"toolResult\": {\n\t\t\t\t// Collect all consecutive toolResult messages into a single user message\n\t\t\t\t// Bedrock requires all tool results to be in one message\n\t\t\t\tconst toolResults: ContentBlock.ToolResultMember[] = [];\n\n\t\t\t\t// Add current tool result with all content blocks combined\n\t\t\t\ttoolResults.push({\n\t\t\t\t\ttoolResult: {\n\t\t\t\t\t\ttoolUseId: m.toolCallId,\n\t\t\t\t\t\tcontent: convertToolResultContent(m.content),\n\t\t\t\t\t\tstatus: m.isError ? ToolResultStatus.ERROR : ToolResultStatus.SUCCESS,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\t// Look ahead for consecutive toolResult messages\n\t\t\t\tlet j = i + 1;\n\t\t\t\twhile (j < transformedMessages.length && transformedMessages[j].role === \"toolResult\") {\n\t\t\t\t\tconst nextMsg = transformedMessages[j] as ToolResultMessage;\n\t\t\t\t\ttoolResults.push({\n\t\t\t\t\t\ttoolResult: {\n\t\t\t\t\t\t\ttoolUseId: nextMsg.toolCallId,\n\t\t\t\t\t\t\tcontent: convertToolResultContent(nextMsg.content),\n\t\t\t\t\t\t\tstatus: nextMsg.isError ? ToolResultStatus.ERROR : ToolResultStatus.SUCCESS,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tj++;\n\t\t\t\t}\n\n\t\t\t\t// Skip the messages we've already processed\n\t\t\t\ti = j - 1;\n\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.USER,\n\t\t\t\t\tcontent: toolResults,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t}\n\n\t// Add cache point to the last user message for supported Claude models when caching is enabled\n\tif (cacheRetention !== \"none\" && supportsPromptCaching(model) && result.length > 0) {\n\t\tconst lastMessage = result[result.length - 1];\n\t\tif (lastMessage.role === ConversationRole.USER && lastMessage.content) {\n\t\t\t(lastMessage.content as ContentBlock[]).push({\n\t\t\t\tcachePoint: {\n\t\t\t\t\ttype: CachePointType.DEFAULT,\n\t\t\t\t\t...(cacheRetention === \"long\" ? { ttl: CacheTTL.ONE_HOUR } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction convertToolConfig(\n\ttools: Tool[] | undefined,\n\ttoolChoice: BedrockOptions[\"toolChoice\"],\n\ttoolNameMap: ToolNameMap,\n): ToolConfiguration | undefined {\n\tif (!tools?.length || toolChoice === \"none\") return undefined;\n\n\tconst bedrockTools: BedrockTool[] = [];\n\tfor (const tool of tools) {\n\t\tconst inputSchema = normalizeBedrockToolInputSchema(tool.parameters);\n\t\tif (!isBedrockToolInputSchema(inputSchema)) {\n\t\t\tthrow new Error(`Bedrock tool \"${tool.name}\" requires an object input schema`);\n\t\t}\n\t\tbedrockTools.push({\n\t\t\ttoolSpec: {\n\t\t\t\tname: toolNameMap.toProviderName(tool.name),\n\t\t\t\tdescription: tool.description,\n\t\t\t\tinputSchema: { json: inputSchema as DocumentType },\n\t\t\t},\n\t\t});\n\t}\n\tlet bedrockToolChoice: ToolChoice | undefined;\n\tswitch (toolChoice) {\n\t\tcase \"auto\":\n\t\t\tbedrockToolChoice = { auto: {} };\n\t\t\tbreak;\n\t\tcase \"any\":\n\t\t\tbedrockToolChoice = { any: {} };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (isExplicitBedrockToolChoice(toolChoice)) {\n\t\t\t\tconst name = toolNameMap.toProviderName(toolChoice.name);\n\t\t\t\tif (!bedrockTools.some((tool) => tool.toolSpec?.name === name)) {\n\t\t\t\t\tthrow new Error(`Bedrock tool \"${toolChoice.name}\" is not available in this request`);\n\t\t\t\t}\n\t\t\t\tbedrockToolChoice = { tool: { name } };\n\t\t\t}\n\t}\n\n\treturn { tools: bedrockTools, toolChoice: bedrockToolChoice };\n}\n\nfunction mapStopReason(reason: string | undefined): { stopReason: StopReason; errorMessage?: string } {\n\tswitch (reason) {\n\t\tcase BedrockStopReason.END_TURN:\n\t\tcase BedrockStopReason.STOP_SEQUENCE:\n\t\t\treturn { stopReason: \"stop\" };\n\t\tcase BedrockStopReason.MAX_TOKENS:\n\t\tcase BedrockStopReason.MODEL_CONTEXT_WINDOW_EXCEEDED:\n\t\t\treturn { stopReason: \"length\" };\n\t\tcase BedrockStopReason.TOOL_USE:\n\t\t\treturn { stopReason: \"toolUse\" };\n\t\tdefault:\n\t\t\treturn reason ? { stopReason: \"error\", errorMessage: reason } : { stopReason: \"error\" };\n\t}\n}\n\nfunction getConfiguredBedrockRegion(options: BedrockOptions): string | undefined {\n\tif (typeof process === \"undefined\") {\n\t\treturn options.region;\n\t}\n\n\treturn options.region || process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || undefined;\n}\n\nfunction getConfiguredBedrockProfile(options: BedrockOptions): string | undefined {\n\tif (typeof process === \"undefined\") {\n\t\treturn options.profile?.trim() || undefined;\n\t}\n\n\treturn options.profile?.trim() || process.env.AWS_PROFILE?.trim() || undefined;\n}\n\nfunction getStandardBedrockEndpointRegion(baseUrl: string | undefined): string | undefined {\n\tif (!baseUrl) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst { hostname } = new URL(baseUrl);\n\t\tconst match = hostname.toLowerCase().match(/^bedrock-runtime(?:-fips)?\\.([a-z0-9-]+)\\.amazonaws\\.com(?:\\.cn)?$/);\n\t\treturn match?.[1];\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction shouldUseExplicitBedrockEndpoint(\n\tbaseUrl: string,\n\tconfiguredRegion: string | undefined,\n\thasConfiguredProfile: boolean,\n): boolean {\n\tconst endpointRegion = getStandardBedrockEndpointRegion(baseUrl);\n\tif (!endpointRegion) {\n\t\treturn true;\n\t}\n\n\treturn !configuredRegion && !hasConfiguredProfile;\n}\n\nfunction isGovCloudBedrockTarget(model: Model<\"bedrock-converse-stream\">, options: BedrockOptions): boolean {\n\tconst region = getConfiguredBedrockRegion(options);\n\tif (region?.toLowerCase().startsWith(\"us-gov-\")) {\n\t\treturn true;\n\t}\n\n\tconst modelId = model.id.toLowerCase();\n\treturn modelId.startsWith(\"us-gov.\") || modelId.startsWith(\"arn:aws-us-gov:\");\n}\n\nfunction buildAdditionalModelRequestFields(\n\tmodel: Model<\"bedrock-converse-stream\">,\n\toptions: BedrockOptions,\n): Record<string, DocumentType> | undefined {\n\tif (!options.reasoning || !model.reasoning) {\n\t\treturn undefined;\n\t}\n\n\tif (isAnthropicClaudeModel(model)) {\n\t\t// GovCloud Bedrock currently rejects the Claude thinking.display field.\n\t\t// Omit it there until the GovCloud Converse schema catches up.\n\t\tconst display = isGovCloudBedrockTarget(model, options) ? undefined : (options.thinkingDisplay ?? \"summarized\");\n\t\tconst result: Record<string, DocumentType> = supportsAdaptiveThinking(model.id, model.name)\n\t\t\t? {\n\t\t\t\t\tthinking: { type: \"adaptive\", ...(display !== undefined ? { display } : {}) },\n\t\t\t\t\toutput_config: { effort: mapThinkingLevelToEffort(model, options.reasoning) },\n\t\t\t\t}\n\t\t\t: (() => {\n\t\t\t\t\tconst defaultBudgets: Record<ThinkingLevel, number> = {\n\t\t\t\t\t\tminimal: 1024,\n\t\t\t\t\t\tlow: 2048,\n\t\t\t\t\t\tmedium: 8192,\n\t\t\t\t\t\thigh: 16384,\n\t\t\t\t\t\txhigh: 16384, // Claude doesn't support xhigh, clamp to high\n\t\t\t\t\t\tmax: 16384, // Claude doesn't support max, clamp to high\n\t\t\t\t\t\tultra: 16384, // Ultra maps to Claude's strongest supported non-adaptive wire effort\n\t\t\t\t\t};\n\n\t\t\t\t\t// Custom budgets override defaults (extended levels are not in ThinkingBudgets, use high).\n\t\t\t\t\tconst level =\n\t\t\t\t\t\toptions.reasoning === \"xhigh\" || options.reasoning === \"max\" || options.reasoning === \"ultra\"\n\t\t\t\t\t\t\t? \"high\"\n\t\t\t\t\t\t\t: options.reasoning;\n\t\t\t\t\tconst budget = options.thinkingBudgets?.[level] ?? defaultBudgets[options.reasoning];\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tthinking: {\n\t\t\t\t\t\t\ttype: \"enabled\",\n\t\t\t\t\t\t\tbudget_tokens: budget,\n\t\t\t\t\t\t\t...(display !== undefined ? { display } : {}),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t})();\n\n\t\tif (!supportsAdaptiveThinking(model.id, model.name) && (options.interleavedThinking ?? true)) {\n\t\t\tresult.anthropic_beta = [\"interleaved-thinking-2025-05-14\"];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\treturn undefined;\n}\n\nfunction bytesToBase64(bytes: Uint8Array): string {\n\tlet binary = \"\";\n\tfor (const byte of bytes) {\n\t\tbinary += String.fromCharCode(byte);\n\t}\n\treturn btoa(binary);\n}\n\nfunction base64ToBytes(data: string): Uint8Array {\n\tconst binaryString = atob(data);\n\tconst bytes = new Uint8Array(binaryString.length);\n\tfor (let i = 0; i < binaryString.length; i++) {\n\t\tbytes[i] = binaryString.charCodeAt(i);\n\t}\n\treturn bytes;\n}\n\nfunction appendBase64Bytes(existingBase64: string | undefined, bytes: Uint8Array): string {\n\tif (!existingBase64) return bytesToBase64(bytes);\n\n\tconst existing = base64ToBytes(existingBase64);\n\tconst merged = new Uint8Array(existing.length + bytes.length);\n\tmerged.set(existing);\n\tmerged.set(bytes, existing.length);\n\treturn bytesToBase64(merged);\n}\n\nfunction createImageBlock(mimeType: string, data: string) {\n\tlet format: ImageFormat;\n\tswitch (mimeType) {\n\t\tcase \"image/jpeg\":\n\t\tcase \"image/jpg\":\n\t\t\tformat = ImageFormat.JPEG;\n\t\t\tbreak;\n\t\tcase \"image/png\":\n\t\t\tformat = ImageFormat.PNG;\n\t\t\tbreak;\n\t\tcase \"image/gif\":\n\t\t\tformat = ImageFormat.GIF;\n\t\t\tbreak;\n\t\tcase \"image/webp\":\n\t\t\tformat = ImageFormat.WEBP;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown image type: ${mimeType}`);\n\t}\n\n\treturn { source: { bytes: base64ToBytes(data) }, format };\n}\n"]}
1
+ {"version":3,"file":"amazon-bedrock.js","sourceRoot":"","sources":["../../src/providers/amazon-bedrock.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tBedrockRuntimeClient,\n\ttype BedrockRuntimeClientConfig,\n\tBedrockRuntimeServiceException,\n\tStopReason as BedrockStopReason,\n\ttype Tool as BedrockTool,\n\tCachePointType,\n\tCacheTTL,\n\ttype ContentBlock,\n\ttype ContentBlockDeltaEvent,\n\ttype ContentBlockStartEvent,\n\ttype ContentBlockStopEvent,\n\tConversationRole,\n\tConverseStreamCommand,\n\ttype ConverseStreamMetadataEvent,\n\tImageFormat,\n\ttype Message,\n\ttype SystemContentBlock,\n\ttype ToolChoice,\n\ttype ToolConfiguration,\n\ttype ToolResultContentBlock,\n\tToolResultStatus,\n} from \"@aws-sdk/client-bedrock-runtime\";\nimport { NodeHttpHandler } from \"@smithy/node-http-handler\";\nimport type { BuildMiddleware, DocumentType, MetadataBearer } from \"@smithy/types\";\nimport { calculateCost } from \"../models.ts\";\nimport type {\n\tAssistantMessage,\n\tCacheRetention,\n\tContext,\n\tImageContent,\n\tModel,\n\tSimpleStreamOptions,\n\tStopReason,\n\tStreamFunction,\n\tStreamOptions,\n\tTextContent,\n\tThinkingBudgets,\n\tThinkingContent,\n\tThinkingLevel,\n\tTool,\n\tToolCall,\n\tToolResultMessage,\n} from \"../types.ts\";\nimport { normalizeProviderError } from \"../utils/error-body.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { parseStreamingJson } from \"../utils/json-parse.ts\";\nimport { createHttpProxyAgentsForTarget } from \"../utils/node-http-proxy.ts\";\nimport { sanitizeSurrogates } from \"../utils/sanitize-unicode.ts\";\nimport { createToolNameMap, type ToolNameMap } from \"../utils/tool-names.ts\";\nimport { getRecoverableBedrockSsoError } from \"./bedrock-sso.ts\";\nimport {\n\tapplyProviderPayloadHook,\n\tcommitSuccessfulAssistantParse,\n\tcreateAssistantMessage,\n\tmapStandardThinkingEffort,\n\tresolveCacheRetention,\n\tterminateAssistantStreamWithError,\n} from \"./provider-runtime.ts\";\nimport { adjustMaxTokensForThinking, buildBaseOptions, clampReasoning } from \"./simple-options.ts\";\nimport { transformMessages } from \"./transform-messages.ts\";\n\nexport type BedrockThinkingDisplay = \"summarized\" | \"omitted\";\n\nexport interface BedrockOptions extends StreamOptions {\n\tregion?: string;\n\tprofile?: string;\n\ttoolChoice?: \"auto\" | \"any\" | \"none\" | { type: \"tool\"; name: string };\n\t/* See https://docs.aws.amazon.com/bedrock/latest/userguide/inference-reasoning.html for supported models. */\n\treasoning?: ThinkingLevel;\n\t/* Custom token budgets per thinking level. Overrides default budgets. */\n\tthinkingBudgets?: ThinkingBudgets;\n\t/* Only supported by Claude 4.x models, see https://docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-extended-thinking.html#claude-messages-extended-thinking-tool-use-interleaved */\n\tinterleavedThinking?: boolean;\n\t/**\n\t * Controls how Claude's thinking content is returned in responses.\n\t * - \"summarized\": Thinking blocks contain summarized thinking text (default here).\n\t * - \"omitted\": Thinking content is redacted but the signature still travels back\n\t * for multi-turn continuity, reducing time-to-first-text-token.\n\t *\n\t * Note: Anthropic's API default for Claude Opus 4.8 and Mythos Preview is\n\t * \"omitted\". We default to \"summarized\" here to keep behavior consistent with\n\t * older Claude 4 models. Only applies to Claude models on Bedrock.\n\t */\n\tthinkingDisplay?: BedrockThinkingDisplay;\n\t/** Key-value pairs attached to the inference request for cost allocation tagging.\n\t * Keys: max 64 chars, no `aws:` prefix. Values: max 256 chars. Max 50 pairs.\n\t * Tags appear in AWS Cost Explorer split cost allocation data.\n\t * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStream.html */\n\trequestMetadata?: Record<string, string>;\n\t/** Bearer token for Bedrock API key authentication.\n\t * When set, bypasses SigV4 signing and sends Authorization: Bearer <token> instead.\n\t * Requires `bedrock:CallWithBearerToken` IAM permission on the token's identity.\n\t * Set via AWS_BEARER_TOKEN_BEDROCK env var or pass directly.\n\t * @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html */\n\tbearerToken?: string;\n}\n\ntype Block = (TextContent | ThinkingContent | ToolCall) & { index?: number; partialJson?: string };\n\nconst EMPTY_TEXT_PLACEHOLDER = \"<empty>\";\n\nexport const streamBedrock: StreamFunction<\"bedrock-converse-stream\", BedrockOptions> = (\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcontext: Context,\n\toptions: BedrockOptions = {},\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\t(async () => {\n\t\tconst toolNameMap = createToolNameMap(context.tools ?? []);\n\t\tconst output = createAssistantMessage(model);\n\n\t\tconst blocks = output.content as Block[];\n\n\t\tconst config: BedrockRuntimeClientConfig = {\n\t\t\tprofile: options.profile?.trim() || undefined,\n\t\t};\n\t\tconst configuredRegion = getConfiguredBedrockRegion(options);\n\t\tconst configuredProfile = getConfiguredBedrockProfile(options);\n\t\tconst recoveryProfile = configuredProfile ?? \"default\";\n\t\tconst hasConfiguredProfile = configuredProfile !== undefined;\n\t\tconst endpointRegion = getStandardBedrockEndpointRegion(model.baseUrl);\n\t\tconst useExplicitEndpoint = shouldUseExplicitBedrockEndpoint(\n\t\t\tmodel.baseUrl,\n\t\t\tconfiguredRegion,\n\t\t\thasConfiguredProfile,\n\t\t);\n\n\t\t// Only pin standard AWS Bedrock runtime endpoints when no region/profile is configured.\n\t\t// This preserves custom endpoints (VPC/proxy) from #3402 without forcing built-in\n\t\t// catalog defaults such as us-east-1 to override AWS_REGION/AWS_PROFILE.\n\t\tif (useExplicitEndpoint) {\n\t\t\tconfig.endpoint = model.baseUrl;\n\t\t}\n\n\t\t// Resolve bearer token for Bedrock API key auth.\n\t\tconst bearerToken = options.bearerToken || process.env.AWS_BEARER_TOKEN_BEDROCK || undefined;\n\t\tconst useBearerToken = bearerToken !== undefined && process.env.AWS_BEDROCK_SKIP_AUTH !== \"1\";\n\n\t\t// in Node.js/Bun environment only\n\t\tif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n\t\t\t// Region resolution: explicit option > env vars > SDK default chain.\n\t\t\t// When AWS_PROFILE is set, we leave region undefined so the SDK can\n\t\t\t// resolve it from AWS profile config. Otherwise fall back to us-east-1.\n\t\t\tif (configuredRegion) {\n\t\t\t\tconfig.region = configuredRegion;\n\t\t\t} else if (endpointRegion && useExplicitEndpoint) {\n\t\t\t\tconfig.region = endpointRegion;\n\t\t\t} else if (!hasConfiguredProfile) {\n\t\t\t\tconfig.region = \"us-east-1\";\n\t\t\t}\n\n\t\t\t// Support proxies that don't need authentication\n\t\t\tif (process.env.AWS_BEDROCK_SKIP_AUTH === \"1\") {\n\t\t\t\tconfig.credentials = {\n\t\t\t\t\taccessKeyId: \"dummy-access-key\",\n\t\t\t\t\tsecretAccessKey: \"dummy-secret-key\",\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst proxyAgents = createHttpProxyAgentsForTarget(model.baseUrl);\n\t\t\tif (proxyAgents) {\n\t\t\t\t// Bedrock runtime uses NodeHttp2Handler by default since v3.798.0, which is based\n\t\t\t\t// on `http2` module and has no support for http agent.\n\t\t\t\t// Use NodeHttpHandler to support HTTP(S) proxy agents.\n\t\t\t\tconfig.requestHandler = new NodeHttpHandler(proxyAgents);\n\t\t\t} else if (process.env.AWS_BEDROCK_FORCE_HTTP1 === \"1\") {\n\t\t\t\t// Some custom endpoints require HTTP/1.1 instead of HTTP/2\n\t\t\t\tconfig.requestHandler = new NodeHttpHandler();\n\t\t\t}\n\t\t} else {\n\t\t\t// Non-Node environment (browser): fall back to us-east-1 since\n\t\t\t// there's no config file resolution available.\n\t\t\tconfig.region =\n\t\t\t\tconfiguredRegion || (endpointRegion && useExplicitEndpoint ? endpointRegion : undefined) || \"us-east-1\";\n\t\t}\n\n\t\tif (useBearerToken) {\n\t\t\tconfig.token = { token: bearerToken };\n\t\t\tconfig.authSchemePreference = [\"httpBearerAuth\"];\n\t\t}\n\n\t\ttry {\n\t\t\tconst cacheRetention = resolveCacheRetention(options.cacheRetention);\n\t\t\tconst inferenceMaxTokens = options.maxTokens ?? (isAnthropicClaudeModel(model) ? model.maxTokens : undefined);\n\t\t\tconst commandInput = await applyProviderPayloadHook(\n\t\t\t\t{\n\t\t\t\t\tmodelId: model.id,\n\t\t\t\t\tmessages: convertMessages(context, model, cacheRetention, toolNameMap),\n\t\t\t\t\tsystem: buildSystemPrompt(context.systemPrompt, model, cacheRetention),\n\t\t\t\t\tinferenceConfig: {\n\t\t\t\t\t\t...(inferenceMaxTokens !== undefined && { maxTokens: inferenceMaxTokens }),\n\t\t\t\t\t\t...(options.temperature !== undefined && { temperature: options.temperature }),\n\t\t\t\t\t},\n\t\t\t\t\ttoolConfig: convertToolConfig(context.tools, options.toolChoice, toolNameMap),\n\t\t\t\t\tadditionalModelRequestFields: buildAdditionalModelRequestFields(model, options),\n\t\t\t\t\t...(options.requestMetadata !== undefined && { requestMetadata: options.requestMetadata }),\n\t\t\t\t},\n\t\t\t\tmodel,\n\t\t\t\toptions.onPayload,\n\t\t\t);\n\t\t\tlet ssoRecoveryAttempted = false;\n\t\t\twhile (true) {\n\t\t\t\tlet receivedResponse = false;\n\t\t\t\ttry {\n\t\t\t\t\tconst client = new BedrockRuntimeClient(config);\n\t\t\t\t\tif (options.headers && Object.keys(options.headers).length > 0) {\n\t\t\t\t\t\taddCustomHeadersMiddleware(client, options.headers);\n\t\t\t\t\t}\n\t\t\t\t\tconst command = new ConverseStreamCommand(commandInput);\n\t\t\t\t\tconst response = await client.send(command, { abortSignal: options.signal });\n\t\t\t\t\treceivedResponse = true;\n\t\t\t\t\tif (response.$metadata.httpStatusCode !== undefined) {\n\t\t\t\t\t\tconst responseHeaders: Record<string, string> = {};\n\t\t\t\t\t\tif (response.$metadata.requestId) {\n\t\t\t\t\t\t\tresponseHeaders[\"x-amzn-requestid\"] = response.$metadata.requestId;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait options?.onResponse?.(\n\t\t\t\t\t\t\t{ status: response.$metadata.httpStatusCode, headers: responseHeaders },\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!response.stream) {\n\t\t\t\t\t\tthrow new Error(\"Bedrock returned a response without a stream\");\n\t\t\t\t\t}\n\t\t\t\t\tfor await (const item of response.stream) {\n\t\t\t\t\t\tif (item.messageStart) {\n\t\t\t\t\t\t\tif (item.messageStart.role !== ConversationRole.ASSISTANT) {\n\t\t\t\t\t\t\t\tthrow new Error(\"Unexpected assistant message start but got user message start instead\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstream.push({ type: \"start\", partial: output });\n\t\t\t\t\t\t} else if (item.contentBlockStart) {\n\t\t\t\t\t\t\thandleContentBlockStart(item.contentBlockStart, blocks, output, stream, toolNameMap);\n\t\t\t\t\t\t} else if (item.contentBlockDelta) {\n\t\t\t\t\t\t\thandleContentBlockDelta(item.contentBlockDelta, blocks, output, stream);\n\t\t\t\t\t\t} else if (item.contentBlockStop) {\n\t\t\t\t\t\t\thandleContentBlockStop(item.contentBlockStop, blocks, output, stream);\n\t\t\t\t\t\t} else if (item.messageStop) {\n\t\t\t\t\t\t\tconst mapped = mapStopReason(item.messageStop.stopReason);\n\t\t\t\t\t\t\toutput.stopReason = mapped.stopReason;\n\t\t\t\t\t\t\tif (mapped.errorMessage) output.errorMessage = mapped.errorMessage;\n\t\t\t\t\t\t\tif (output.stopReason !== \"error\" && output.stopReason !== \"aborted\") {\n\t\t\t\t\t\t\t\tcommitSuccessfulAssistantParse(output);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (item.metadata) {\n\t\t\t\t\t\t\thandleMetadata(item.metadata, model, output);\n\t\t\t\t\t\t} else if (item.internalServerException) {\n\t\t\t\t\t\t\tthrow item.internalServerException;\n\t\t\t\t\t\t} else if (item.modelStreamErrorException) {\n\t\t\t\t\t\t\tthrow item.modelStreamErrorException;\n\t\t\t\t\t\t} else if (item.validationException) {\n\t\t\t\t\t\t\tthrow item.validationException;\n\t\t\t\t\t\t} else if (item.throttlingException) {\n\t\t\t\t\t\t\tthrow item.throttlingException;\n\t\t\t\t\t\t} else if (item.serviceUnavailableException) {\n\t\t\t\t\t\t\tthrow item.serviceUnavailableException;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (output.stopReason === \"error\" || output.stopReason === \"aborted\") {\n\t\t\t\t\t\tthrow new Error(output.errorMessage || \"An unknown error occurred\");\n\t\t\t\t\t}\n\n\t\t\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\t\t\tstream.end();\n\t\t\t\t\tbreak;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst ssoError = getRecoverableBedrockSsoError(error);\n\t\t\t\t\tif (\n\t\t\t\t\t\t!ssoRecoveryAttempted &&\n\t\t\t\t\t\t!receivedResponse &&\n\t\t\t\t\t\t!options.signal?.aborted &&\n\t\t\t\t\t\toptions.interactionMode !== \"background\" &&\n\t\t\t\t\t\toptions.onInteractiveAuthRecovery &&\n\t\t\t\t\t\tssoError &&\n\t\t\t\t\t\t!useBearerToken &&\n\t\t\t\t\t\tprocess.env.AWS_BEDROCK_SKIP_AUTH !== \"1\" &&\n\t\t\t\t\t\t(await options.onInteractiveAuthRecovery({\n\t\t\t\t\t\t\tmethod: \"aws-sso\",\n\t\t\t\t\t\t\tproviderId: model.provider,\n\t\t\t\t\t\t\tprofile: recoveryProfile,\n\t\t\t\t\t\t\t...(ssoError.name ? { errorName: ssoError.name } : {}),\n\t\t\t\t\t\t\terrorMessage: ssoError.message,\n\t\t\t\t\t\t\t...(options.signal ? { signal: options.signal } : {}),\n\t\t\t\t\t\t}))\n\t\t\t\t\t) {\n\t\t\t\t\t\tssoRecoveryAttempted = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tterminateAssistantStreamWithError(stream, output, options.signal, error, {\n\t\t\t\tformatError: formatBedrockError,\n\t\t\t\tscratchFields: [\"index\", \"partialJson\"],\n\t\t\t});\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\n/**\n * Human-readable prefixes for Bedrock SDK exception names.\n * The downstream retry logic in agent-session matches patterns like\n * `server.?error` and `service.?unavailable`, so we preserve the legacy\n * prefix format rather than using the raw SDK exception name.\n */\nconst BEDROCK_ERROR_PREFIXES: Record<string, string> = {\n\tInternalServerException: \"Internal server error\",\n\tModelStreamErrorException: \"Model stream error\",\n\tValidationException: \"Validation error\",\n\tThrottlingException: \"Throttling error\",\n\tServiceUnavailableException: \"Service unavailable\",\n};\n\n/**\n * Format a Bedrock error with a human-readable prefix.\n * AWS SDK exceptions (both from `client.send()` and from stream event items)\n * extend BedrockRuntimeServiceException. We map the `.name` to a stable\n * human-readable prefix so downstream consumers (retry logic, context-overflow\n * detection) can distinguish error categories via simple string matching.\n */\nfunction formatBedrockError(error: unknown): string {\n\tconst norm = normalizeProviderError(error);\n\tconst core =\n\t\t!norm.messageCarriesBody && norm.status !== undefined && norm.body !== undefined\n\t\t\t? `${norm.status}: ${norm.body}`\n\t\t\t: norm.message;\n\tif (error instanceof BedrockRuntimeServiceException) {\n\t\tconst prefix = BEDROCK_ERROR_PREFIXES[error.name] ?? error.name;\n\t\treturn `${prefix}: ${core}`;\n\t}\n\treturn core;\n}\n\n/**\n * Header keys that must never be overwritten by caller-supplied headers.\n * `host` and `x-amz-*` participate in the SigV4 canonical request; `authorization`\n * is owned by SigV4 or the bearer-token path (config.token + authSchemePreference).\n * Compared case-insensitively (caller key is lower-cased before lookup).\n */\nconst RESERVED_HEADER_EXACT = new Set([\"authorization\", \"host\"]);\n\nfunction isReservedHeader(key: string): boolean {\n\tconst lower = key.toLowerCase();\n\treturn lower.startsWith(\"x-amz-\") || RESERVED_HEADER_EXACT.has(lower);\n}\n\n/**\n * Attach caller-supplied headers to the outgoing Bedrock request via a Smithy\n * `build`-step middleware. The `build` step runs after request serialisation but\n * before SigV4 signing, so injected headers are covered by the signature. Reserved\n * SigV4 / auth headers (`x-amz-*`, `authorization`, `host`) are silently skipped;\n * all other caller headers override any existing same-named header on the request.\n */\nfunction addCustomHeadersMiddleware(client: BedrockRuntimeClient, headers: Record<string, string>): void {\n\tconst middleware: BuildMiddleware<object, MetadataBearer> = (next) => async (args) => {\n\t\tconst request = args.request;\n\t\tif (request && typeof request === \"object\" && \"headers\" in request) {\n\t\t\tconst requestHeaders = (request as { headers: Record<string, string> }).headers;\n\t\t\tfor (const [key, value] of Object.entries(headers)) {\n\t\t\t\tif (!isReservedHeader(key)) {\n\t\t\t\t\trequestHeaders[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn next(args);\n\t};\n\tclient.middlewareStack.add(middleware, { step: \"build\", name: \"pi-ai-custom-headers\", priority: \"low\" });\n}\n\nexport const streamSimpleBedrock: StreamFunction<\"bedrock-converse-stream\", SimpleStreamOptions> = (\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tconst base = buildBaseOptions(model, options, undefined);\n\tif (!options?.reasoning || options.reasoning === \"off\") {\n\t\treturn streamBedrock(model, context, { ...base, reasoning: undefined } satisfies BedrockOptions);\n\t}\n\n\tif (isAnthropicClaudeModel(model)) {\n\t\tif (supportsAdaptiveThinking(model.id, model.name)) {\n\t\t\treturn streamBedrock(model, context, {\n\t\t\t\t...base,\n\t\t\t\treasoning: options.reasoning,\n\t\t\t\tthinkingBudgets: options.thinkingBudgets,\n\t\t\t} satisfies BedrockOptions);\n\t\t}\n\n\t\t// Undefined means the caller did not request an output cap; let the helper use the model cap.\n\t\t// Do not coerce to 0 here, or the thinking budget would become the entire maxTokens value.\n\t\tconst adjusted = adjustMaxTokensForThinking(\n\t\t\tbase.maxTokens,\n\t\t\tmodel.maxTokens,\n\t\t\toptions.reasoning,\n\t\t\toptions.thinkingBudgets,\n\t\t);\n\n\t\treturn streamBedrock(model, context, {\n\t\t\t...base,\n\t\t\tmaxTokens: adjusted.maxTokens,\n\t\t\treasoning: options.reasoning,\n\t\t\tthinkingBudgets: {\n\t\t\t\t...(options.thinkingBudgets || {}),\n\t\t\t\t[clampReasoning(options.reasoning)!]: adjusted.thinkingBudget,\n\t\t\t},\n\t\t} satisfies BedrockOptions);\n\t}\n\n\treturn streamBedrock(model, context, {\n\t\t...base,\n\t\treasoning: options.reasoning,\n\t\tthinkingBudgets: options.thinkingBudgets,\n\t} satisfies BedrockOptions);\n};\n\nfunction handleContentBlockStart(\n\tevent: ContentBlockStartEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n\ttoolNameMap: ToolNameMap,\n): void {\n\tconst index = event.contentBlockIndex!;\n\tconst start = event.start;\n\n\tif (start?.toolUse) {\n\t\tconst block: Block = {\n\t\t\ttype: \"toolCall\",\n\t\t\tid: start.toolUse.toolUseId || \"\",\n\t\t\tname: toolNameMap.toOriginalName(start.toolUse.name || \"\"),\n\t\t\targuments: {},\n\t\t\tpartialJson: \"\",\n\t\t\tindex,\n\t\t};\n\t\toutput.content.push(block);\n\t\tstream.push({ type: \"toolcall_start\", contentIndex: blocks.length - 1, partial: output });\n\t}\n}\n\nfunction handleContentBlockDelta(\n\tevent: ContentBlockDeltaEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n): void {\n\tconst contentBlockIndex = event.contentBlockIndex!;\n\tconst delta = event.delta;\n\tlet index = blocks.findIndex((b) => b.index === contentBlockIndex);\n\tlet block = blocks[index];\n\n\tif (delta?.text !== undefined) {\n\t\t// If no text block exists yet, create one, as `handleContentBlockStart` is not sent for text blocks\n\t\tif (!block) {\n\t\t\tconst newBlock: Block = { type: \"text\", text: \"\", index: contentBlockIndex };\n\t\t\toutput.content.push(newBlock);\n\t\t\tindex = blocks.length - 1;\n\t\t\tblock = blocks[index];\n\t\t\tstream.push({ type: \"text_start\", contentIndex: index, partial: output });\n\t\t}\n\t\tif (block.type === \"text\") {\n\t\t\tblock.text += delta.text;\n\t\t\tstream.push({ type: \"text_delta\", contentIndex: index, delta: delta.text, partial: output });\n\t\t}\n\t} else if (delta?.toolUse && block?.type === \"toolCall\") {\n\t\tblock.partialJson = (block.partialJson || \"\") + (delta.toolUse.input || \"\");\n\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\tstream.push({ type: \"toolcall_delta\", contentIndex: index, delta: delta.toolUse.input || \"\", partial: output });\n\t} else if (delta?.reasoningContent) {\n\t\tlet thinkingBlock = block;\n\t\tlet thinkingIndex = index;\n\n\t\tif (!thinkingBlock) {\n\t\t\tconst newBlock: Block = { type: \"thinking\", thinking: \"\", thinkingSignature: \"\", index: contentBlockIndex };\n\t\t\toutput.content.push(newBlock);\n\t\t\tthinkingIndex = blocks.length - 1;\n\t\t\tthinkingBlock = blocks[thinkingIndex];\n\t\t\tstream.push({ type: \"thinking_start\", contentIndex: thinkingIndex, partial: output });\n\t\t}\n\n\t\tif (thinkingBlock?.type === \"thinking\") {\n\t\t\tif (delta.reasoningContent.text) {\n\t\t\t\tthinkingBlock.thinking += delta.reasoningContent.text;\n\t\t\t\tstream.push({\n\t\t\t\t\ttype: \"thinking_delta\",\n\t\t\t\t\tcontentIndex: thinkingIndex,\n\t\t\t\t\tdelta: delta.reasoningContent.text,\n\t\t\t\t\tpartial: output,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (delta.reasoningContent.redactedContent) {\n\t\t\t\tthinkingBlock.redacted = true;\n\t\t\t\tthinkingBlock.thinkingSignature = appendBase64Bytes(\n\t\t\t\t\tthinkingBlock.thinkingSignature,\n\t\t\t\t\tdelta.reasoningContent.redactedContent,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (delta.reasoningContent.signature) {\n\t\t\t\tthinkingBlock.thinkingSignature =\n\t\t\t\t\t(thinkingBlock.thinkingSignature || \"\") + delta.reasoningContent.signature;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction handleMetadata(\n\tevent: ConverseStreamMetadataEvent,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\toutput: AssistantMessage,\n): void {\n\tif (event.usage) {\n\t\toutput.usage.input = event.usage.inputTokens || 0;\n\t\toutput.usage.output = event.usage.outputTokens || 0;\n\t\toutput.usage.cacheRead = event.usage.cacheReadInputTokens || 0;\n\t\toutput.usage.cacheWrite = event.usage.cacheWriteInputTokens || 0;\n\t\toutput.usage.totalTokens = event.usage.totalTokens || output.usage.input + output.usage.output;\n\t\tcalculateCost(model, output.usage);\n\t}\n}\n\nfunction handleContentBlockStop(\n\tevent: ContentBlockStopEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n): void {\n\tconst index = blocks.findIndex((b) => b.index === event.contentBlockIndex);\n\tconst block = blocks[index];\n\tif (!block) return;\n\tdelete (block as Block).index;\n\n\tswitch (block.type) {\n\t\tcase \"text\":\n\t\t\tstream.push({ type: \"text_end\", contentIndex: index, content: block.text, partial: output });\n\t\t\tbreak;\n\t\tcase \"thinking\":\n\t\t\tstream.push({ type: \"thinking_end\", contentIndex: index, content: block.thinking, partial: output });\n\t\t\tbreak;\n\t\tcase \"toolCall\":\n\t\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\t\t// Finalize in-place and strip the scratch buffer so replay only\n\t\t\t// carries parsed arguments.\n\t\t\tdelete (block as Block).partialJson;\n\t\t\tstream.push({ type: \"toolcall_end\", contentIndex: index, toolCall: block, partial: output });\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Check if the model supports adaptive thinking (Opus 4.6+, Sonnet 4.6).\n * Checks both model ID and model name to support application inference profiles\n * whose ARNs don't contain the model name.\n */\nfunction getModelMatchCandidates(modelId: string, modelName?: string): string[] {\n\tconst values = modelName ? [modelId, modelName] : [modelId];\n\treturn values.flatMap((value) => {\n\t\tconst lower = value.toLowerCase();\n\t\treturn [lower, lower.replace(/[\\s_.:]+/g, \"-\")];\n\t});\n}\n\nfunction supportsAdaptiveThinking(modelId: string, modelName?: string): boolean {\n\tconst candidates = getModelMatchCandidates(modelId, modelName);\n\treturn candidates.some(\n\t\t(s) =>\n\t\t\ts.includes(\"opus-4-6\") ||\n\t\t\ts.includes(\"opus-4-7\") ||\n\t\t\ts.includes(\"opus-4-8\") ||\n\t\t\ts.includes(\"opus-5\") ||\n\t\t\ts.includes(\"sonnet-4-6\") ||\n\t\t\ts.includes(\"sonnet-5\") ||\n\t\t\ts.includes(\"fable-5\"),\n\t);\n}\n\nfunction supportsNativeXhighEffort(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst candidates = getModelMatchCandidates(model.id, model.name);\n\treturn candidates.some(\n\t\t(s) =>\n\t\t\ts.includes(\"opus-4-7\") ||\n\t\t\ts.includes(\"opus-4-8\") ||\n\t\t\ts.includes(\"opus-5\") ||\n\t\t\ts.includes(\"sonnet-5\") ||\n\t\t\ts.includes(\"fable-5\"),\n\t);\n}\n\nfunction mapThinkingLevelToEffort(\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tlevel: SimpleStreamOptions[\"reasoning\"],\n): \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\" {\n\tif (level === \"xhigh\" && supportsNativeXhighEffort(model)) return \"xhigh\";\n\treturn mapStandardThinkingEffort(model, level) as \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\n}\n\n/**\n * Check if the model is an Anthropic Claude model on Bedrock.\n * Checks both model ID and model name to support application inference profiles\n * whose ARNs don't contain the model name.\n */\nfunction isAnthropicClaudeModel(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst id = model.id.toLowerCase();\n\tconst name = model.name?.toLowerCase() ?? \"\";\n\treturn (\n\t\tid.includes(\"anthropic.claude\") ||\n\t\tid.includes(\"anthropic/claude\") ||\n\t\tname.includes(\"anthropic.claude\") ||\n\t\tname.includes(\"anthropic/claude\") ||\n\t\tname.includes(\"claude\")\n\t);\n}\n\n/**\n * Check if the model supports prompt caching.\n * Supported: Claude 3.5 Haiku, Claude 3.7 Sonnet, Claude 4.x models\n *\n * For base models and system-defined inference profiles the model ID / ARN\n * contains the model name, so we can decide locally.\n *\n * For application inference profiles (whose ARNs don't contain the model name),\n * also checks model.name which is user-controlled via models.json or registerProvider.\n * As a last resort, set AWS_BEDROCK_FORCE_CACHE=1 to enable cache points.\n * Amazon Nova models have automatic caching and don't need explicit cache points.\n */\nfunction supportsPromptCaching(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst candidates = getModelMatchCandidates(model.id, model.name);\n\n\tconst hasClaudeRef = candidates.some((s) => s.includes(\"claude\"));\n\tif (!hasClaudeRef) {\n\t\t// Application inference profiles don't contain the model name in the ARN.\n\t\t// Allow users to force cache points via environment variable.\n\t\tif (typeof process !== \"undefined\" && process.env.AWS_BEDROCK_FORCE_CACHE === \"1\") return true;\n\t\treturn false;\n\t}\n\t// Claude 5 models (fable-5, opus-5, sonnet-5)\n\tif (candidates.some((s) => s.includes(\"fable-5\") || s.includes(\"opus-5\") || s.includes(\"sonnet-5\"))) return true;\n\t// Claude 4.x models (opus-4, sonnet-4, haiku-4)\n\tif (candidates.some((s) => s.includes(\"-4-\"))) return true;\n\t// Claude 3.7 Sonnet\n\tif (candidates.some((s) => s.includes(\"claude-3-7-sonnet\"))) return true;\n\t// Claude 3.5 Haiku\n\tif (candidates.some((s) => s.includes(\"claude-3-5-haiku\"))) return true;\n\treturn false;\n}\n\n/**\n * Check if the model supports thinking signatures in reasoningContent.\n * Only Anthropic Claude models support the signature field.\n * Other models (OpenAI, Qwen, Minimax, Moonshot, etc.) reject it with:\n * \"This model doesn't support the reasoningContent.reasoningText.signature field\"\n *\n * Checks both model ID and model name to support application inference profiles.\n */\nfunction supportsThinkingSignature(model: Model<\"bedrock-converse-stream\">): boolean {\n\treturn isAnthropicClaudeModel(model);\n}\n\nfunction buildSystemPrompt(\n\tsystemPrompt: string | undefined,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcacheRetention: CacheRetention,\n): SystemContentBlock[] | undefined {\n\tif (!systemPrompt) return undefined;\n\n\tconst blocks: SystemContentBlock[] = [{ text: sanitizeSurrogates(systemPrompt) }];\n\n\t// Add cache point for supported Claude models when caching is enabled\n\tif (cacheRetention !== \"none\" && supportsPromptCaching(model)) {\n\t\tblocks.push({\n\t\t\tcachePoint: { type: CachePointType.DEFAULT, ...(cacheRetention === \"long\" ? { ttl: CacheTTL.ONE_HOUR } : {}) },\n\t\t});\n\t}\n\n\treturn blocks;\n}\n\nfunction normalizeToolCallId(id: string): string {\n\tconst sanitized = id.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n\treturn sanitized.length > 64 ? sanitized.slice(0, 64) : sanitized;\n}\n\nfunction createNonBlankTextBlock(text: string): ContentBlock.TextMember | undefined {\n\tconst sanitized = sanitizeSurrogates(text);\n\treturn sanitized.trim().length === 0 ? undefined : { text: sanitized };\n}\n\nfunction createRequiredTextBlock(text: string): ContentBlock.TextMember {\n\treturn createNonBlankTextBlock(text) ?? { text: EMPTY_TEXT_PLACEHOLDER };\n}\n\nfunction sanitizeBedrockDocument(value: DocumentType): DocumentType {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(sanitizeBedrockDocument);\n\t}\n\tif (value !== null && typeof value === \"object\") {\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(value)\n\t\t\t\t.filter(([key]) => key.length > 0)\n\t\t\t\t.map(([key, nestedValue]) => [key, sanitizeBedrockDocument(nestedValue)]),\n\t\t);\n\t}\n\treturn value;\n}\n\nconst BEDROCK_ROOT_SCHEMA_COMBINATORS = [\"anyOf\", \"oneOf\", \"allOf\"] as const;\nconst BEDROCK_TOOL_PROPERTY_NAME_PATTERN = /^[a-zA-Z0-9_.-]{1,64}$/;\nconst BEDROCK_OBJECT_SCHEMA_KEYS = new Set([\n\t\"additionalProperties\",\n\t\"dependentRequired\",\n\t\"maxProperties\",\n\t\"minProperties\",\n\t\"patternProperties\",\n\t\"properties\",\n\t\"propertyNames\",\n\t\"required\",\n\t\"unevaluatedProperties\",\n]);\n\ninterface BedrockObjectSchemaProjection {\n\tproperties: Record<string, unknown>;\n\trequired: Set<string>;\n}\n\ninterface NormalizedBedrockToolInputSchema {\n\tschema: unknown;\n\tconstraintDescription?: string;\n}\n\nfunction isSchemaRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction cloneBedrockSchemaValue(value: unknown, seen = new WeakMap<object, unknown>()): unknown {\n\tif (Array.isArray(value)) {\n\t\tconst existing = seen.get(value);\n\t\tif (existing !== undefined) return existing;\n\t\tconst clone: unknown[] = [];\n\t\tseen.set(value, clone);\n\t\tfor (const entry of value) clone.push(cloneBedrockSchemaValue(entry, seen));\n\t\treturn clone;\n\t}\n\tif (!isSchemaRecord(value)) return value;\n\n\tconst existing = seen.get(value);\n\tif (existing !== undefined) return existing;\n\tconst clone: Record<string, unknown> = {};\n\tseen.set(value, clone);\n\tfor (const [key, entry] of Object.entries(value)) {\n\t\tclone[key] = cloneBedrockSchemaValue(entry, seen);\n\t}\n\treturn clone;\n}\n\nfunction resolveBedrockLocalSchemaRef(root: Record<string, unknown>, reference: string): unknown {\n\tconst match = reference.match(/^#\\/(\\$defs|definitions)\\/(.+)$/);\n\tif (!match) return undefined;\n\tlet current: unknown = root[match[1]];\n\tfor (const rawPart of match[2].split(\"/\")) {\n\t\tif (!isSchemaRecord(current)) return undefined;\n\t\tconst part = rawPart.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n\t\tcurrent = current[part];\n\t}\n\treturn current;\n}\n\nfunction bedrockSchemaRequired(schema: Record<string, unknown>): string[] {\n\treturn Array.isArray(schema.required)\n\t\t? schema.required.filter(\n\t\t\t\t(key): key is string => typeof key === \"string\" && BEDROCK_TOOL_PROPERTY_NAME_PATTERN.test(key),\n\t\t\t)\n\t\t: [];\n}\n\nfunction bedrockSchemaProperties(schema: Record<string, unknown>): Record<string, unknown> {\n\tif (!isSchemaRecord(schema.properties)) return {};\n\treturn Object.fromEntries(\n\t\tObject.entries(schema.properties).filter(\n\t\t\t([key, value]) => BEDROCK_TOOL_PROPERTY_NAME_PATTERN.test(key) && isSchemaRecord(value),\n\t\t),\n\t);\n}\n\nfunction mergeMissingBedrockSchemaProperties(target: Record<string, unknown>, source: Record<string, unknown>): void {\n\tfor (const [key, value] of Object.entries(source)) {\n\t\tif (!(key in target)) target[key] = value;\n\t}\n}\n\nfunction intersectBedrockRequiredSets(projections: readonly BedrockObjectSchemaProjection[]): Set<string> {\n\tconst common = new Set(projections[0]?.required ?? []);\n\tfor (const projection of projections.slice(1)) {\n\t\tfor (const key of common) if (!projection.required.has(key)) common.delete(key);\n\t}\n\treturn common;\n}\n\nfunction projectBedrockObjectSchema(\n\tschema: Record<string, unknown>,\n\troot: Record<string, unknown>,\n\tvisitedRefs = new Set<string>(),\n): BedrockObjectSchemaProjection | undefined {\n\tif (schema.type !== undefined && schema.type !== \"object\") return undefined;\n\n\tlet objectShapeProven = schema.type === \"object\" || [...BEDROCK_OBJECT_SCHEMA_KEYS].some((key) => key in schema);\n\tconst properties = bedrockSchemaProperties(schema);\n\tconst required = new Set(bedrockSchemaRequired(schema));\n\n\tif (typeof schema.$ref === \"string\") {\n\t\tif (visitedRefs.has(schema.$ref)) return undefined;\n\t\tconst target = resolveBedrockLocalSchemaRef(root, schema.$ref);\n\t\tif (!isSchemaRecord(target)) return undefined;\n\t\tconst nextVisitedRefs = new Set(visitedRefs);\n\t\tnextVisitedRefs.add(schema.$ref);\n\t\tconst targetProjection = projectBedrockObjectSchema(target, root, nextVisitedRefs);\n\t\tif (!targetProjection) return undefined;\n\t\tobjectShapeProven = true;\n\t\tmergeMissingBedrockSchemaProperties(properties, targetProjection.properties);\n\t\tfor (const key of targetProjection.required) required.add(key);\n\t}\n\n\tfor (const combinator of BEDROCK_ROOT_SCHEMA_COMBINATORS) {\n\t\tconst branches = schema[combinator];\n\t\tif (branches === undefined) continue;\n\t\tif (!Array.isArray(branches) || branches.length === 0) return undefined;\n\t\tconst branchProjections: BedrockObjectSchemaProjection[] = [];\n\t\tfor (const branch of branches) {\n\t\t\tif (!isSchemaRecord(branch)) return undefined;\n\t\t\tconst projection = projectBedrockObjectSchema(branch, root, visitedRefs);\n\t\t\tif (!projection) return undefined;\n\t\t\tbranchProjections.push(projection);\n\t\t}\n\t\tobjectShapeProven = true;\n\t\tfor (const projection of branchProjections) {\n\t\t\tmergeMissingBedrockSchemaProperties(properties, projection.properties);\n\t\t}\n\t\tconst combinatorRequired =\n\t\t\tcombinator === \"allOf\"\n\t\t\t\t? new Set(branchProjections.flatMap((projection) => [...projection.required]))\n\t\t\t\t: intersectBedrockRequiredSets(branchProjections);\n\t\tfor (const key of combinatorRequired) required.add(key);\n\t}\n\n\treturn objectShapeProven ? { properties, required } : undefined;\n}\n\n/**\n * Bedrock requires an object root and Anthropic models on Bedrock reject root oneOf/anyOf/allOf\n * tool schemas. TypeBox unions used by tools such as write/edit therefore need a provider-only\n * object projection. The authoritative tool schema still validates every returned call after the\n * provider response, so broadening this wire description cannot broaden execution authority.\n */\nfunction normalizeBedrockToolInputSchema(schema: unknown): NormalizedBedrockToolInputSchema {\n\tconst detachedSchema = cloneBedrockSchemaValue(schema);\n\tif (!isSchemaRecord(detachedSchema)) return { schema: detachedSchema };\n\t// Never let a root combinator override an explicit non-object root type.\n\tif (detachedSchema.type !== undefined && detachedSchema.type !== \"object\") return { schema: detachedSchema };\n\n\tconst combinators = BEDROCK_ROOT_SCHEMA_COMBINATORS.filter((key) => key in detachedSchema);\n\t// Collapsing multiple independent compositions into one object would describe neither schema.\n\tif (combinators.length > 1) return { schema: detachedSchema };\n\tif (combinators.length === 0) {\n\t\tif (!projectBedrockObjectSchema(detachedSchema, detachedSchema)) return { schema: detachedSchema };\n\t\tconst normalized: Record<string, unknown> = { ...detachedSchema, type: \"object\" };\n\t\tif (\"properties\" in detachedSchema) {\n\t\t\tnormalized.properties = bedrockSchemaProperties(detachedSchema);\n\t\t\tif (\"required\" in detachedSchema) {\n\t\t\t\tnormalized.required = bedrockSchemaRequired(detachedSchema).filter((key) =>\n\t\t\t\t\tObject.hasOwn(normalized.properties as Record<string, unknown>, key),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn { schema: normalized };\n\t}\n\n\tconst projection = projectBedrockObjectSchema(detachedSchema, detachedSchema);\n\tif (!projection) return { schema: detachedSchema };\n\tconst required = [...projection.required].filter((key) => Object.hasOwn(projection.properties, key));\n\tconst normalized: Record<string, unknown> = {\n\t\t...detachedSchema,\n\t\ttype: \"object\",\n\t\tproperties: projection.properties,\n\t\trequired,\n\t};\n\tfor (const combinator of BEDROCK_ROOT_SCHEMA_COMBINATORS) delete normalized[combinator];\n\n\treturn {\n\t\tschema: normalized,\n\t\tconstraintDescription: describeBedrockRootSchemaConstraint(detachedSchema, combinators),\n\t};\n}\n\nfunction isBedrockToolInputSchema(value: unknown): value is Record<string, unknown> {\n\treturn (\n\t\tisSchemaRecord(value) &&\n\t\tvalue.type === \"object\" &&\n\t\tBEDROCK_ROOT_SCHEMA_COMBINATORS.every((combinator) => !(combinator in value))\n\t);\n}\n\nfunction describeBedrockRootSchemaConstraint(\n\troot: Record<string, unknown>,\n\tcombinators: readonly (typeof BEDROCK_ROOT_SCHEMA_COMBINATORS)[number][],\n): string {\n\tconst preferred = combinators.includes(\"oneOf\") ? \"oneOf\" : combinators.includes(\"anyOf\") ? \"anyOf\" : \"allOf\";\n\tif (preferred === \"allOf\") {\n\t\treturn \"Input constraint: all listed parameters apply together (flattened from a JSON Schema allOf).\";\n\t}\n\n\tconst branches = root[preferred];\n\tconst groups = Array.isArray(branches)\n\t\t? branches.flatMap((branch) => {\n\t\t\t\tif (!isSchemaRecord(branch)) return [];\n\t\t\t\tconst projection = projectBedrockObjectSchema(branch, root);\n\t\t\t\tif (!projection) return [];\n\t\t\t\tconst names = projection.required.size > 0 ? [...projection.required] : Object.keys(projection.properties);\n\t\t\t\treturn names.length > 0 ? [`(${names.join(\", \")})`] : [];\n\t\t\t})\n\t\t: [];\n\tconst choice = preferred === \"oneOf\" ? \"exactly one\" : \"at least one\";\n\tconst alternatives = groups.length > 0 ? `: ${groups.join(\" or \")}` : \"\";\n\treturn `Input constraint: provide parameters for ${choice} of the documented alternatives${alternatives}.`;\n}\n\nfunction isExplicitBedrockToolChoice(\n\ttoolChoice: BedrockOptions[\"toolChoice\"],\n): toolChoice is { type: \"tool\"; name: string } {\n\treturn typeof toolChoice === \"object\" && toolChoice !== null && toolChoice.type === \"tool\";\n}\n\nfunction convertToolResultContent(content: (TextContent | ImageContent)[]): ToolResultContentBlock[] {\n\tconst result: ToolResultContentBlock[] = [];\n\tfor (const c of content) {\n\t\tif (c.type === \"image\") {\n\t\t\tresult.push({ image: createImageBlock(c.mimeType, c.data) });\n\t\t} else {\n\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\tif (textBlock) result.push(textBlock);\n\t\t}\n\t}\n\tif (result.length === 0) result.push({ text: EMPTY_TEXT_PLACEHOLDER });\n\treturn result;\n}\n\nfunction convertMessages(\n\tcontext: Context,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcacheRetention: CacheRetention,\n\ttoolNameMap: ToolNameMap,\n): Message[] {\n\tconst result: Message[] = [];\n\tconst transformedMessages = transformMessages(context.messages, model, normalizeToolCallId);\n\n\tfor (let i = 0; i < transformedMessages.length; i++) {\n\t\tconst m = transformedMessages[i];\n\n\t\tswitch (m.role) {\n\t\t\tcase \"user\": {\n\t\t\t\tconst content: ContentBlock[] = [];\n\t\t\t\tif (typeof m.content === \"string\") {\n\t\t\t\t\tcontent.push(createRequiredTextBlock(m.content));\n\t\t\t\t} else {\n\t\t\t\t\tfor (const c of m.content) {\n\t\t\t\t\t\tswitch (c.type) {\n\t\t\t\t\t\t\tcase \"text\": {\n\t\t\t\t\t\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\t\t\t\t\t\tif (textBlock) content.push(textBlock);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"image\":\n\t\t\t\t\t\t\t\tcontent.push({ image: createImageBlock(c.mimeType, c.data) });\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (content.length === 0) content.push({ text: EMPTY_TEXT_PLACEHOLDER });\n\t\t\t\t}\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.USER,\n\t\t\t\t\tcontent,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"assistant\": {\n\t\t\t\t// Skip assistant messages with empty content (e.g., from aborted requests)\n\t\t\t\t// Bedrock rejects messages with empty content arrays\n\t\t\t\tif (m.content.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst contentBlocks: ContentBlock[] = [];\n\t\t\t\tfor (const c of m.content) {\n\t\t\t\t\tswitch (c.type) {\n\t\t\t\t\t\tcase \"text\": {\n\t\t\t\t\t\t\t// Skip empty text blocks\n\t\t\t\t\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\t\t\t\t\tif (!textBlock) continue;\n\t\t\t\t\t\t\tcontentBlocks.push(textBlock);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"toolCall\":\n\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\ttoolUse: {\n\t\t\t\t\t\t\t\t\ttoolUseId: c.id,\n\t\t\t\t\t\t\t\t\tname: toolNameMap.toProviderName(c.name),\n\t\t\t\t\t\t\t\t\tinput: sanitizeBedrockDocument(c.arguments),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"thinking\": {\n\t\t\t\t\t\t\tif (c.redacted) {\n\t\t\t\t\t\t\t\tif (c.thinkingSignature?.trim()) {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\t\t\treasoningContent: {\n\t\t\t\t\t\t\t\t\t\t\tredactedContent: base64ToBytes(c.thinkingSignature),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Skip empty thinking blocks\n\t\t\t\t\t\t\tconst thinking = sanitizeSurrogates(c.thinking);\n\t\t\t\t\t\t\tif (thinking.trim().length === 0) continue;\n\t\t\t\t\t\t\t// Only Anthropic models support the signature field in reasoningText.\n\t\t\t\t\t\t\t// For other models, we omit the signature to avoid errors like:\n\t\t\t\t\t\t\t// \"This model doesn't support the reasoningContent.reasoningText.signature field\"\n\t\t\t\t\t\t\tif (supportsThinkingSignature(model)) {\n\t\t\t\t\t\t\t\t// Signatures arrive after thinking deltas. If a partial or externally\n\t\t\t\t\t\t\t\t// persisted message lacks a signature, Bedrock rejects the replayed\n\t\t\t\t\t\t\t\t// reasoning block. Fall back to plain text, matching Anthropic.\n\t\t\t\t\t\t\t\tif (!c.thinkingSignature || c.thinkingSignature.trim().length === 0) {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({ text: thinking });\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\t\t\treasoningContent: {\n\t\t\t\t\t\t\t\t\t\t\treasoningText: {\n\t\t\t\t\t\t\t\t\t\t\t\ttext: thinking,\n\t\t\t\t\t\t\t\t\t\t\t\tsignature: c.thinkingSignature,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\t\treasoningContent: {\n\t\t\t\t\t\t\t\t\t\treasoningText: { text: thinking },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Skip if all content blocks were filtered out\n\t\t\t\tif (contentBlocks.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.ASSISTANT,\n\t\t\t\t\tcontent: contentBlocks,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"toolResult\": {\n\t\t\t\t// Collect all consecutive toolResult messages into a single user message\n\t\t\t\t// Bedrock requires all tool results to be in one message\n\t\t\t\tconst toolResults: ContentBlock.ToolResultMember[] = [];\n\n\t\t\t\t// Add current tool result with all content blocks combined\n\t\t\t\ttoolResults.push({\n\t\t\t\t\ttoolResult: {\n\t\t\t\t\t\ttoolUseId: m.toolCallId,\n\t\t\t\t\t\tcontent: convertToolResultContent(m.content),\n\t\t\t\t\t\tstatus: m.isError ? ToolResultStatus.ERROR : ToolResultStatus.SUCCESS,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\t// Look ahead for consecutive toolResult messages\n\t\t\t\tlet j = i + 1;\n\t\t\t\twhile (j < transformedMessages.length && transformedMessages[j].role === \"toolResult\") {\n\t\t\t\t\tconst nextMsg = transformedMessages[j] as ToolResultMessage;\n\t\t\t\t\ttoolResults.push({\n\t\t\t\t\t\ttoolResult: {\n\t\t\t\t\t\t\ttoolUseId: nextMsg.toolCallId,\n\t\t\t\t\t\t\tcontent: convertToolResultContent(nextMsg.content),\n\t\t\t\t\t\t\tstatus: nextMsg.isError ? ToolResultStatus.ERROR : ToolResultStatus.SUCCESS,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tj++;\n\t\t\t\t}\n\n\t\t\t\t// Skip the messages we've already processed\n\t\t\t\ti = j - 1;\n\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.USER,\n\t\t\t\t\tcontent: toolResults,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t}\n\n\t// Add cache point to the last user message for supported Claude models when caching is enabled\n\tif (cacheRetention !== \"none\" && supportsPromptCaching(model) && result.length > 0) {\n\t\tconst lastMessage = result[result.length - 1];\n\t\tif (lastMessage.role === ConversationRole.USER && lastMessage.content) {\n\t\t\t(lastMessage.content as ContentBlock[]).push({\n\t\t\t\tcachePoint: {\n\t\t\t\t\ttype: CachePointType.DEFAULT,\n\t\t\t\t\t...(cacheRetention === \"long\" ? { ttl: CacheTTL.ONE_HOUR } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction convertToolConfig(\n\ttools: Tool[] | undefined,\n\ttoolChoice: BedrockOptions[\"toolChoice\"],\n\ttoolNameMap: ToolNameMap,\n): ToolConfiguration | undefined {\n\tif (!tools?.length || toolChoice === \"none\") return undefined;\n\n\tconst bedrockTools: BedrockTool[] = [];\n\tfor (const tool of tools) {\n\t\tconst normalizedInput = normalizeBedrockToolInputSchema(tool.parameters);\n\t\tif (!isBedrockToolInputSchema(normalizedInput.schema)) {\n\t\t\tthrow new Error(`Bedrock tool \"${tool.name}\" requires an object input schema`);\n\t\t}\n\t\tbedrockTools.push({\n\t\t\ttoolSpec: {\n\t\t\t\tname: toolNameMap.toProviderName(tool.name),\n\t\t\t\tdescription: normalizedInput.constraintDescription\n\t\t\t\t\t? `${normalizedInput.constraintDescription}\\n\\n${tool.description}`\n\t\t\t\t\t: tool.description,\n\t\t\t\tinputSchema: { json: normalizedInput.schema as DocumentType },\n\t\t\t},\n\t\t});\n\t}\n\tlet bedrockToolChoice: ToolChoice | undefined;\n\tswitch (toolChoice) {\n\t\tcase \"auto\":\n\t\t\tbedrockToolChoice = { auto: {} };\n\t\t\tbreak;\n\t\tcase \"any\":\n\t\t\tbedrockToolChoice = { any: {} };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (isExplicitBedrockToolChoice(toolChoice)) {\n\t\t\t\tconst name = toolNameMap.toProviderName(toolChoice.name);\n\t\t\t\tif (!bedrockTools.some((tool) => tool.toolSpec?.name === name)) {\n\t\t\t\t\tthrow new Error(`Bedrock tool \"${toolChoice.name}\" is not available in this request`);\n\t\t\t\t}\n\t\t\t\tbedrockToolChoice = { tool: { name } };\n\t\t\t}\n\t}\n\n\treturn { tools: bedrockTools, toolChoice: bedrockToolChoice };\n}\n\nfunction mapStopReason(reason: string | undefined): { stopReason: StopReason; errorMessage?: string } {\n\tswitch (reason) {\n\t\tcase BedrockStopReason.END_TURN:\n\t\tcase BedrockStopReason.STOP_SEQUENCE:\n\t\t\treturn { stopReason: \"stop\" };\n\t\tcase BedrockStopReason.MAX_TOKENS:\n\t\tcase BedrockStopReason.MODEL_CONTEXT_WINDOW_EXCEEDED:\n\t\t\treturn { stopReason: \"length\" };\n\t\tcase BedrockStopReason.TOOL_USE:\n\t\t\treturn { stopReason: \"toolUse\" };\n\t\tdefault:\n\t\t\treturn reason ? { stopReason: \"error\", errorMessage: reason } : { stopReason: \"error\" };\n\t}\n}\n\nfunction getConfiguredBedrockRegion(options: BedrockOptions): string | undefined {\n\tif (typeof process === \"undefined\") {\n\t\treturn options.region;\n\t}\n\n\treturn options.region || process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || undefined;\n}\n\nfunction getConfiguredBedrockProfile(options: BedrockOptions): string | undefined {\n\tif (typeof process === \"undefined\") {\n\t\treturn options.profile?.trim() || undefined;\n\t}\n\n\treturn options.profile?.trim() || process.env.AWS_PROFILE?.trim() || undefined;\n}\n\nfunction getStandardBedrockEndpointRegion(baseUrl: string | undefined): string | undefined {\n\tif (!baseUrl) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst { hostname } = new URL(baseUrl);\n\t\tconst match = hostname.toLowerCase().match(/^bedrock-runtime(?:-fips)?\\.([a-z0-9-]+)\\.amazonaws\\.com(?:\\.cn)?$/);\n\t\treturn match?.[1];\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction shouldUseExplicitBedrockEndpoint(\n\tbaseUrl: string,\n\tconfiguredRegion: string | undefined,\n\thasConfiguredProfile: boolean,\n): boolean {\n\tconst endpointRegion = getStandardBedrockEndpointRegion(baseUrl);\n\tif (!endpointRegion) {\n\t\treturn true;\n\t}\n\n\treturn !configuredRegion && !hasConfiguredProfile;\n}\n\nfunction isGovCloudBedrockTarget(model: Model<\"bedrock-converse-stream\">, options: BedrockOptions): boolean {\n\tconst region = getConfiguredBedrockRegion(options);\n\tif (region?.toLowerCase().startsWith(\"us-gov-\")) {\n\t\treturn true;\n\t}\n\n\tconst modelId = model.id.toLowerCase();\n\treturn modelId.startsWith(\"us-gov.\") || modelId.startsWith(\"arn:aws-us-gov:\");\n}\n\nfunction buildAdditionalModelRequestFields(\n\tmodel: Model<\"bedrock-converse-stream\">,\n\toptions: BedrockOptions,\n): Record<string, DocumentType> | undefined {\n\tif (!options.reasoning || !model.reasoning) {\n\t\treturn undefined;\n\t}\n\n\tif (isAnthropicClaudeModel(model)) {\n\t\t// GovCloud Bedrock currently rejects the Claude thinking.display field.\n\t\t// Omit it there until the GovCloud Converse schema catches up.\n\t\tconst display = isGovCloudBedrockTarget(model, options) ? undefined : (options.thinkingDisplay ?? \"summarized\");\n\t\tconst result: Record<string, DocumentType> = supportsAdaptiveThinking(model.id, model.name)\n\t\t\t? {\n\t\t\t\t\tthinking: { type: \"adaptive\", ...(display !== undefined ? { display } : {}) },\n\t\t\t\t\toutput_config: { effort: mapThinkingLevelToEffort(model, options.reasoning) },\n\t\t\t\t}\n\t\t\t: (() => {\n\t\t\t\t\tconst defaultBudgets: Record<ThinkingLevel, number> = {\n\t\t\t\t\t\tminimal: 1024,\n\t\t\t\t\t\tlow: 2048,\n\t\t\t\t\t\tmedium: 8192,\n\t\t\t\t\t\thigh: 16384,\n\t\t\t\t\t\txhigh: 16384, // Claude doesn't support xhigh, clamp to high\n\t\t\t\t\t\tmax: 16384, // Claude doesn't support max, clamp to high\n\t\t\t\t\t\tultra: 16384, // Ultra maps to Claude's strongest supported non-adaptive wire effort\n\t\t\t\t\t};\n\n\t\t\t\t\t// Custom budgets override defaults (extended levels are not in ThinkingBudgets, use high).\n\t\t\t\t\tconst level =\n\t\t\t\t\t\toptions.reasoning === \"xhigh\" || options.reasoning === \"max\" || options.reasoning === \"ultra\"\n\t\t\t\t\t\t\t? \"high\"\n\t\t\t\t\t\t\t: options.reasoning;\n\t\t\t\t\tconst budget = options.thinkingBudgets?.[level] ?? defaultBudgets[options.reasoning];\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tthinking: {\n\t\t\t\t\t\t\ttype: \"enabled\",\n\t\t\t\t\t\t\tbudget_tokens: budget,\n\t\t\t\t\t\t\t...(display !== undefined ? { display } : {}),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t})();\n\n\t\tif (!supportsAdaptiveThinking(model.id, model.name) && (options.interleavedThinking ?? true)) {\n\t\t\tresult.anthropic_beta = [\"interleaved-thinking-2025-05-14\"];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\treturn undefined;\n}\n\nfunction bytesToBase64(bytes: Uint8Array): string {\n\tlet binary = \"\";\n\tfor (const byte of bytes) {\n\t\tbinary += String.fromCharCode(byte);\n\t}\n\treturn btoa(binary);\n}\n\nfunction base64ToBytes(data: string): Uint8Array {\n\tconst binaryString = atob(data);\n\tconst bytes = new Uint8Array(binaryString.length);\n\tfor (let i = 0; i < binaryString.length; i++) {\n\t\tbytes[i] = binaryString.charCodeAt(i);\n\t}\n\treturn bytes;\n}\n\nfunction appendBase64Bytes(existingBase64: string | undefined, bytes: Uint8Array): string {\n\tif (!existingBase64) return bytesToBase64(bytes);\n\n\tconst existing = base64ToBytes(existingBase64);\n\tconst merged = new Uint8Array(existing.length + bytes.length);\n\tmerged.set(existing);\n\tmerged.set(bytes, existing.length);\n\treturn bytesToBase64(merged);\n}\n\nfunction createImageBlock(mimeType: string, data: string) {\n\tlet format: ImageFormat;\n\tswitch (mimeType) {\n\t\tcase \"image/jpeg\":\n\t\tcase \"image/jpg\":\n\t\t\tformat = ImageFormat.JPEG;\n\t\t\tbreak;\n\t\tcase \"image/png\":\n\t\t\tformat = ImageFormat.PNG;\n\t\t\tbreak;\n\t\tcase \"image/gif\":\n\t\t\tformat = ImageFormat.GIF;\n\t\t\tbreak;\n\t\tcase \"image/webp\":\n\t\t\tformat = ImageFormat.WEBP;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown image type: ${mimeType}`);\n\t}\n\n\treturn { source: { bytes: base64ToBytes(data) }, format };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caupulican/pi-ai",
3
- "version": "0.94.0",
3
+ "version": "0.95.0",
4
4
  "description": "Unified LLM API with automatic model discovery and provider configuration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",