@ai-sdk/amazon-bedrock 4.0.23 → 4.0.25

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.
Files changed (68) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/anthropic/index.js +1 -1
  3. package/dist/anthropic/index.mjs +1 -1
  4. package/dist/index.js +33 -8
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +33 -8
  7. package/dist/index.mjs.map +1 -1
  8. package/package.json +4 -3
  9. package/src/__fixtures__/bedrock-json-only-text-first.1.chunks.txt +7 -0
  10. package/src/__fixtures__/bedrock-json-other-tool.1.chunks.txt +6 -0
  11. package/src/__fixtures__/bedrock-json-other-tool.1.json +24 -0
  12. package/src/__fixtures__/bedrock-json-tool-text-then-weather-then-json.1.chunks.txt +12 -0
  13. package/src/__fixtures__/bedrock-json-tool-with-answer.1.json +29 -0
  14. package/src/__fixtures__/bedrock-json-tool.1.chunks.txt +4 -0
  15. package/src/__fixtures__/bedrock-json-tool.1.json +35 -0
  16. package/src/__fixtures__/bedrock-json-tool.2.chunks.txt +6 -0
  17. package/src/__fixtures__/bedrock-json-tool.2.json +28 -0
  18. package/src/__fixtures__/bedrock-json-tool.3.chunks.txt +7 -0
  19. package/src/__fixtures__/bedrock-json-tool.3.json +36 -0
  20. package/src/__fixtures__/bedrock-json-with-tool.1.chunks.txt +9 -0
  21. package/src/__fixtures__/bedrock-json-with-tool.1.json +41 -0
  22. package/src/__fixtures__/bedrock-json-with-tools.1.chunks.txt +12 -0
  23. package/src/__fixtures__/bedrock-json-with-tools.1.json +50 -0
  24. package/src/__fixtures__/bedrock-tool-call.1.chunks.txt +6 -0
  25. package/src/__fixtures__/bedrock-tool-call.1.json +24 -0
  26. package/src/__fixtures__/bedrock-tool-no-args.chunks.txt +8 -0
  27. package/src/__fixtures__/bedrock-tool-no-args.json +25 -0
  28. package/src/anthropic/bedrock-anthropic-fetch.test.ts +344 -0
  29. package/src/anthropic/bedrock-anthropic-fetch.ts +62 -0
  30. package/src/anthropic/bedrock-anthropic-options.ts +28 -0
  31. package/src/anthropic/bedrock-anthropic-provider.test.ts +456 -0
  32. package/src/anthropic/bedrock-anthropic-provider.ts +357 -0
  33. package/src/anthropic/index.ts +9 -0
  34. package/src/bedrock-api-types.ts +195 -0
  35. package/src/bedrock-chat-language-model.test.ts +4569 -0
  36. package/src/bedrock-chat-language-model.ts +1019 -0
  37. package/src/bedrock-chat-options.ts +114 -0
  38. package/src/bedrock-embedding-model.test.ts +148 -0
  39. package/src/bedrock-embedding-model.ts +104 -0
  40. package/src/bedrock-embedding-options.ts +24 -0
  41. package/src/bedrock-error.ts +6 -0
  42. package/src/bedrock-event-stream-decoder.ts +59 -0
  43. package/src/bedrock-event-stream-response-handler.test.ts +233 -0
  44. package/src/bedrock-event-stream-response-handler.ts +57 -0
  45. package/src/bedrock-image-model.test.ts +866 -0
  46. package/src/bedrock-image-model.ts +297 -0
  47. package/src/bedrock-image-settings.ts +6 -0
  48. package/src/bedrock-prepare-tools.ts +190 -0
  49. package/src/bedrock-provider.test.ts +457 -0
  50. package/src/bedrock-provider.ts +351 -0
  51. package/src/bedrock-sigv4-fetch.test.ts +675 -0
  52. package/src/bedrock-sigv4-fetch.ts +138 -0
  53. package/src/convert-bedrock-usage.test.ts +207 -0
  54. package/src/convert-bedrock-usage.ts +50 -0
  55. package/src/convert-to-bedrock-chat-messages.test.ts +1175 -0
  56. package/src/convert-to-bedrock-chat-messages.ts +452 -0
  57. package/src/index.ts +10 -0
  58. package/src/inject-fetch-headers.test.ts +135 -0
  59. package/src/inject-fetch-headers.ts +32 -0
  60. package/src/map-bedrock-finish-reason.ts +22 -0
  61. package/src/normalize-tool-call-id.test.ts +72 -0
  62. package/src/normalize-tool-call-id.ts +36 -0
  63. package/src/reranking/__fixtures__/bedrock-reranking.1.json +12 -0
  64. package/src/reranking/bedrock-reranking-api.ts +44 -0
  65. package/src/reranking/bedrock-reranking-model.test.ts +299 -0
  66. package/src/reranking/bedrock-reranking-model.ts +115 -0
  67. package/src/reranking/bedrock-reranking-options.ts +36 -0
  68. package/src/version.ts +6 -0
package/dist/index.mjs CHANGED
@@ -368,6 +368,20 @@ import {
368
368
  UnsupportedFunctionalityError as UnsupportedFunctionalityError2
369
369
  } from "@ai-sdk/provider";
370
370
  import { convertToBase64, parseProviderOptions } from "@ai-sdk/provider-utils";
371
+
372
+ // src/normalize-tool-call-id.ts
373
+ function isMistralModel(modelId) {
374
+ return modelId.includes("mistral.");
375
+ }
376
+ function normalizeToolCallId(toolCallId, isMistral) {
377
+ if (!isMistral) {
378
+ return toolCallId;
379
+ }
380
+ const alphanumericChars = toolCallId.replace(/[^a-zA-Z0-9]/g, "");
381
+ return alphanumericChars.slice(0, 9);
382
+ }
383
+
384
+ // src/convert-to-bedrock-chat-messages.ts
371
385
  function getCachePoint(providerMetadata) {
372
386
  var _a;
373
387
  return (_a = providerMetadata == null ? void 0 : providerMetadata.bedrock) == null ? void 0 : _a.cachePoint;
@@ -381,7 +395,7 @@ async function shouldEnableCitations(providerMetadata) {
381
395
  });
382
396
  return (_b = (_a = bedrockOptions == null ? void 0 : bedrockOptions.citations) == null ? void 0 : _a.enabled) != null ? _b : false;
383
397
  }
384
- async function convertToBedrockChatMessages(prompt) {
398
+ async function convertToBedrockChatMessages(prompt, isMistral = false) {
385
399
  var _a, _b;
386
400
  const blocks = groupIntoBlocks(prompt);
387
401
  let system = [];
@@ -518,7 +532,7 @@ async function convertToBedrockChatMessages(prompt) {
518
532
  }
519
533
  bedrockContent.push({
520
534
  toolResult: {
521
- toolUseId: part.toolCallId,
535
+ toolUseId: normalizeToolCallId(part.toolCallId, isMistral),
522
536
  content: toolResultContent
523
537
  }
524
538
  });
@@ -605,7 +619,7 @@ async function convertToBedrockChatMessages(prompt) {
605
619
  case "tool-call": {
606
620
  bedrockContent.push({
607
621
  toolUse: {
608
- toolUseId: part.toolCallId,
622
+ toolUseId: normalizeToolCallId(part.toolCallId, isMistral),
609
623
  name: part.toolName,
610
624
  input: part.input
611
625
  }
@@ -929,7 +943,11 @@ var BedrockChatLanguageModel = class {
929
943
  });
930
944
  }
931
945
  }
932
- const { system, messages } = await convertToBedrockChatMessages(filteredPrompt);
946
+ const isMistral = isMistralModel(this.modelId);
947
+ const { system, messages } = await convertToBedrockChatMessages(
948
+ filteredPrompt,
949
+ isMistral
950
+ );
933
951
  const {
934
952
  reasoningConfig: _,
935
953
  additionalModelRequestFields: __,
@@ -1026,9 +1044,11 @@ var BedrockChatLanguageModel = class {
1026
1044
  text: JSON.stringify(part.toolUse.input)
1027
1045
  });
1028
1046
  } else {
1047
+ const isMistral = isMistralModel(this.modelId);
1048
+ const rawToolCallId = (_c = (_b = part.toolUse) == null ? void 0 : _b.toolUseId) != null ? _c : this.config.generateId();
1029
1049
  content.push({
1030
1050
  type: "tool-call",
1031
- toolCallId: (_c = (_b = part.toolUse) == null ? void 0 : _b.toolUseId) != null ? _c : this.config.generateId(),
1051
+ toolCallId: normalizeToolCallId(rawToolCallId, isMistral),
1032
1052
  toolName: (_e = (_d = part.toolUse) == null ? void 0 : _d.name) != null ? _e : `tool-${this.config.generateId()}`,
1033
1053
  input: JSON.stringify((_g = (_f = part.toolUse) == null ? void 0 : _f.input) != null ? _g : {})
1034
1054
  });
@@ -1072,6 +1092,7 @@ var BedrockChatLanguageModel = class {
1072
1092
  warnings,
1073
1093
  usesJsonResponseTool
1074
1094
  } = await this.getArgs(options);
1095
+ const isMistral = isMistralModel(this.modelId);
1075
1096
  const url = `${this.getUrl(this.modelId)}/converse-stream`;
1076
1097
  const { value: response, responseHeaders } = await postJsonToApi({
1077
1098
  url,
@@ -1275,9 +1296,13 @@ var BedrockChatLanguageModel = class {
1275
1296
  const toolUse = contentBlockStart.start.toolUse;
1276
1297
  const blockIndex = contentBlockStart.contentBlockIndex;
1277
1298
  const isJsonResponseTool = usesJsonResponseTool && toolUse.name === "json";
1299
+ const normalizedToolCallId = normalizeToolCallId(
1300
+ toolUse.toolUseId,
1301
+ isMistral
1302
+ );
1278
1303
  contentBlocks[blockIndex] = {
1279
1304
  type: "tool-call",
1280
- toolCallId: toolUse.toolUseId,
1305
+ toolCallId: normalizedToolCallId,
1281
1306
  toolName: toolUse.name,
1282
1307
  jsonText: "",
1283
1308
  isJsonResponseTool
@@ -1285,7 +1310,7 @@ var BedrockChatLanguageModel = class {
1285
1310
  if (!isJsonResponseTool) {
1286
1311
  controller.enqueue({
1287
1312
  type: "tool-input-start",
1288
- id: toolUse.toolUseId,
1313
+ id: normalizedToolCallId,
1289
1314
  toolName: toolUse.name
1290
1315
  });
1291
1316
  }
@@ -1773,7 +1798,7 @@ import {
1773
1798
  import { AwsV4Signer } from "aws4fetch";
1774
1799
 
1775
1800
  // src/version.ts
1776
- var VERSION = true ? "4.0.23" : "0.0.0-test";
1801
+ var VERSION = true ? "4.0.25" : "0.0.0-test";
1777
1802
 
1778
1803
  // src/bedrock-sigv4-fetch.ts
1779
1804
  function createSigV4FetchFunction(getCredentials, fetch = globalThis.fetch) {