@ai-sdk/amazon-bedrock 4.0.0-beta.99 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -113,9 +113,23 @@ interface AmazonBedrockProviderSettings {
113
113
  interface AmazonBedrockProvider extends ProviderV3 {
114
114
  (modelId: BedrockChatModelId): LanguageModelV3;
115
115
  languageModel(modelId: BedrockChatModelId): LanguageModelV3;
116
+ /**
117
+ * Creates a model for text embeddings.
118
+ */
116
119
  embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;
120
+ /**
121
+ * Creates a model for text embeddings.
122
+ */
117
123
  embeddingModel(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;
118
124
  /**
125
+ * @deprecated Use `embedding` instead.
126
+ */
127
+ textEmbedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;
128
+ /**
129
+ * @deprecated Use `embeddingModel` instead.
130
+ */
131
+ textEmbeddingModel(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;
132
+ /**
119
133
  Creates a model for image generation.
120
134
  */
121
135
  image(modelId: BedrockImageModelId): ImageModelV3;
package/dist/index.d.ts CHANGED
@@ -113,9 +113,23 @@ interface AmazonBedrockProviderSettings {
113
113
  interface AmazonBedrockProvider extends ProviderV3 {
114
114
  (modelId: BedrockChatModelId): LanguageModelV3;
115
115
  languageModel(modelId: BedrockChatModelId): LanguageModelV3;
116
+ /**
117
+ * Creates a model for text embeddings.
118
+ */
116
119
  embedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;
120
+ /**
121
+ * Creates a model for text embeddings.
122
+ */
117
123
  embeddingModel(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;
118
124
  /**
125
+ * @deprecated Use `embedding` instead.
126
+ */
127
+ textEmbedding(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;
128
+ /**
129
+ * @deprecated Use `embeddingModel` instead.
130
+ */
131
+ textEmbeddingModel(modelId: BedrockEmbeddingModelId): EmbeddingModelV3;
132
+ /**
119
133
  Creates a model for image generation.
120
134
  */
121
135
  image(modelId: BedrockImageModelId): ImageModelV3;
package/dist/index.js CHANGED
@@ -107,45 +107,6 @@ var BedrockErrorSchema = import_v42.z.object({
107
107
  type: import_v42.z.string().nullish()
108
108
  });
109
109
 
110
- // src/convert-bedrock-usage.ts
111
- function convertBedrockUsage(usage) {
112
- var _a, _b;
113
- if (usage == null) {
114
- return {
115
- inputTokens: {
116
- total: void 0,
117
- noCache: void 0,
118
- cacheRead: void 0,
119
- cacheWrite: void 0
120
- },
121
- outputTokens: {
122
- total: void 0,
123
- text: void 0,
124
- reasoning: void 0
125
- },
126
- raw: void 0
127
- };
128
- }
129
- const inputTokens = usage.inputTokens;
130
- const outputTokens = usage.outputTokens;
131
- const cacheReadTokens = (_a = usage.cacheReadInputTokens) != null ? _a : 0;
132
- const cacheWriteTokens = (_b = usage.cacheWriteInputTokens) != null ? _b : 0;
133
- return {
134
- inputTokens: {
135
- total: inputTokens,
136
- noCache: inputTokens - cacheReadTokens,
137
- cacheRead: cacheReadTokens,
138
- cacheWrite: cacheWriteTokens
139
- },
140
- outputTokens: {
141
- total: outputTokens,
142
- text: outputTokens,
143
- reasoning: void 0
144
- },
145
- raw: usage
146
- };
147
- }
148
-
149
110
  // src/bedrock-event-stream-response-handler.ts
150
111
  var import_provider = require("@ai-sdk/provider");
151
112
  var import_provider_utils = require("@ai-sdk/provider-utils");
@@ -355,6 +316,45 @@ async function prepareTools({
355
316
  };
356
317
  }
357
318
 
319
+ // src/convert-bedrock-usage.ts
320
+ function convertBedrockUsage(usage) {
321
+ var _a, _b;
322
+ if (usage == null) {
323
+ return {
324
+ inputTokens: {
325
+ total: void 0,
326
+ noCache: void 0,
327
+ cacheRead: void 0,
328
+ cacheWrite: void 0
329
+ },
330
+ outputTokens: {
331
+ total: void 0,
332
+ text: void 0,
333
+ reasoning: void 0
334
+ },
335
+ raw: void 0
336
+ };
337
+ }
338
+ const inputTokens = usage.inputTokens;
339
+ const outputTokens = usage.outputTokens;
340
+ const cacheReadTokens = (_a = usage.cacheReadInputTokens) != null ? _a : 0;
341
+ const cacheWriteTokens = (_b = usage.cacheWriteInputTokens) != null ? _b : 0;
342
+ return {
343
+ inputTokens: {
344
+ total: inputTokens,
345
+ noCache: inputTokens - cacheReadTokens,
346
+ cacheRead: cacheReadTokens,
347
+ cacheWrite: cacheWriteTokens
348
+ },
349
+ outputTokens: {
350
+ total: outputTokens,
351
+ text: outputTokens,
352
+ reasoning: void 0
353
+ },
354
+ raw: usage
355
+ };
356
+ }
357
+
358
358
  // src/convert-to-bedrock-chat-messages.ts
359
359
  var import_provider3 = require("@ai-sdk/provider");
360
360
  var import_provider_utils3 = require("@ai-sdk/provider-utils");
@@ -454,6 +454,9 @@ async function convertToBedrockChatMessages(prompt) {
454
454
  }
455
455
  case "tool": {
456
456
  for (const part of content) {
457
+ if (part.type === "tool-approval-response") {
458
+ continue;
459
+ }
457
460
  let toolResultContent;
458
461
  const output = part.output;
459
462
  switch (output.type) {
@@ -706,7 +709,7 @@ function mapBedrockFinishReason(finishReason, isJsonResponseFromTool) {
706
709
  case "tool_use":
707
710
  return isJsonResponseFromTool ? "stop" : "tool-calls";
708
711
  default:
709
- return "unknown";
712
+ return "other";
710
713
  }
711
714
  }
712
715
 
@@ -919,6 +922,7 @@ var BedrockChatLanguageModel = class {
919
922
  system,
920
923
  messages,
921
924
  additionalModelRequestFields: bedrockOptions.additionalModelRequestFields,
925
+ additionalModelResponseFieldPaths: ["/stop_sequence"],
922
926
  ...Object.keys(inferenceConfig).length > 0 && {
923
927
  inferenceConfig
924
928
  },
@@ -936,7 +940,7 @@ var BedrockChatLanguageModel = class {
936
940
  return (0, import_provider_utils4.combineHeaders)(await (0, import_provider_utils4.resolve)(this.config.headers), headers);
937
941
  }
938
942
  async doGenerate(options) {
939
- var _a, _b, _c, _d, _e, _f, _g, _h;
943
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
940
944
  const {
941
945
  command: args,
942
946
  warnings,
@@ -1010,23 +1014,28 @@ var BedrockChatLanguageModel = class {
1010
1014
  }
1011
1015
  }
1012
1016
  }
1013
- const providerMetadata = response.trace || response.usage || isJsonResponseFromTool ? {
1017
+ const stopSequence = (_i = (_h = response.additionalModelResponseFields) == null ? void 0 : _h.stop_sequence) != null ? _i : null;
1018
+ const providerMetadata = response.trace || response.usage || isJsonResponseFromTool || stopSequence ? {
1014
1019
  bedrock: {
1015
1020
  ...response.trace && typeof response.trace === "object" ? { trace: response.trace } : {},
1016
- ...((_h = response.usage) == null ? void 0 : _h.cacheWriteInputTokens) != null && {
1021
+ ...((_j = response.usage) == null ? void 0 : _j.cacheWriteInputTokens) != null && {
1017
1022
  usage: {
1018
1023
  cacheWriteInputTokens: response.usage.cacheWriteInputTokens
1019
1024
  }
1020
1025
  },
1021
- ...isJsonResponseFromTool && { isJsonResponseFromTool: true }
1026
+ ...isJsonResponseFromTool && { isJsonResponseFromTool: true },
1027
+ stopSequence
1022
1028
  }
1023
1029
  } : void 0;
1024
1030
  return {
1025
1031
  content,
1026
- finishReason: mapBedrockFinishReason(
1027
- response.stopReason,
1028
- isJsonResponseFromTool
1029
- ),
1032
+ finishReason: {
1033
+ unified: mapBedrockFinishReason(
1034
+ response.stopReason,
1035
+ isJsonResponseFromTool
1036
+ ),
1037
+ raw: (_k = response.stopReason) != null ? _k : void 0
1038
+ },
1030
1039
  usage: convertBedrockUsage(response.usage),
1031
1040
  response: {
1032
1041
  // TODO add id, timestamp, etc
@@ -1055,10 +1064,14 @@ var BedrockChatLanguageModel = class {
1055
1064
  abortSignal: options.abortSignal,
1056
1065
  fetch: this.config.fetch
1057
1066
  });
1058
- let finishReason = "unknown";
1067
+ let finishReason = {
1068
+ unified: "other",
1069
+ raw: void 0
1070
+ };
1059
1071
  let usage = void 0;
1060
1072
  let providerMetadata = void 0;
1061
1073
  let isJsonResponseFromTool = false;
1074
+ let stopSequence = null;
1062
1075
  const contentBlocks = {};
1063
1076
  return {
1064
1077
  stream: response.pipeThrough(
@@ -1067,9 +1080,9 @@ var BedrockChatLanguageModel = class {
1067
1080
  controller.enqueue({ type: "stream-start", warnings });
1068
1081
  },
1069
1082
  transform(chunk, controller) {
1070
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
1083
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
1071
1084
  function enqueueError(bedrockError) {
1072
- finishReason = "error";
1085
+ finishReason = { unified: "error", raw: void 0 };
1073
1086
  controller.enqueue({ type: "error", error: bedrockError });
1074
1087
  }
1075
1088
  if (options.includeRawChunks) {
@@ -1097,16 +1110,20 @@ var BedrockChatLanguageModel = class {
1097
1110
  return;
1098
1111
  }
1099
1112
  if (value.messageStop) {
1100
- finishReason = mapBedrockFinishReason(
1101
- value.messageStop.stopReason,
1102
- isJsonResponseFromTool
1103
- );
1113
+ finishReason = {
1114
+ unified: mapBedrockFinishReason(
1115
+ value.messageStop.stopReason,
1116
+ isJsonResponseFromTool
1117
+ ),
1118
+ raw: (_a = value.messageStop.stopReason) != null ? _a : void 0
1119
+ };
1120
+ stopSequence = (_c = (_b = value.messageStop.additionalModelResponseFields) == null ? void 0 : _b.stop_sequence) != null ? _c : null;
1104
1121
  }
1105
1122
  if (value.metadata) {
1106
1123
  if (value.metadata.usage) {
1107
1124
  usage = value.metadata.usage;
1108
1125
  }
1109
- const cacheUsage = ((_a = value.metadata.usage) == null ? void 0 : _a.cacheWriteInputTokens) != null ? {
1126
+ const cacheUsage = ((_d = value.metadata.usage) == null ? void 0 : _d.cacheWriteInputTokens) != null ? {
1110
1127
  usage: {
1111
1128
  cacheWriteInputTokens: value.metadata.usage.cacheWriteInputTokens
1112
1129
  }
@@ -1123,7 +1140,7 @@ var BedrockChatLanguageModel = class {
1123
1140
  };
1124
1141
  }
1125
1142
  }
1126
- if (((_b = value.contentBlockStart) == null ? void 0 : _b.contentBlockIndex) != null && !((_d = (_c = value.contentBlockStart) == null ? void 0 : _c.start) == null ? void 0 : _d.toolUse)) {
1143
+ if (((_e = value.contentBlockStart) == null ? void 0 : _e.contentBlockIndex) != null && !((_g = (_f = value.contentBlockStart) == null ? void 0 : _f.start) == null ? void 0 : _g.toolUse)) {
1127
1144
  const blockIndex = value.contentBlockStart.contentBlockIndex;
1128
1145
  contentBlocks[blockIndex] = { type: "text" };
1129
1146
  controller.enqueue({
@@ -1131,7 +1148,7 @@ var BedrockChatLanguageModel = class {
1131
1148
  id: String(blockIndex)
1132
1149
  });
1133
1150
  }
1134
- if (((_e = value.contentBlockDelta) == null ? void 0 : _e.delta) && "text" in value.contentBlockDelta.delta && value.contentBlockDelta.delta.text) {
1151
+ if (((_h = value.contentBlockDelta) == null ? void 0 : _h.delta) && "text" in value.contentBlockDelta.delta && value.contentBlockDelta.delta.text) {
1135
1152
  const blockIndex = value.contentBlockDelta.contentBlockIndex || 0;
1136
1153
  if (contentBlocks[blockIndex] == null) {
1137
1154
  contentBlocks[blockIndex] = { type: "text" };
@@ -1146,7 +1163,7 @@ var BedrockChatLanguageModel = class {
1146
1163
  delta: value.contentBlockDelta.delta.text
1147
1164
  });
1148
1165
  }
1149
- if (((_f = value.contentBlockStop) == null ? void 0 : _f.contentBlockIndex) != null) {
1166
+ if (((_i = value.contentBlockStop) == null ? void 0 : _i.contentBlockIndex) != null) {
1150
1167
  const blockIndex = value.contentBlockStop.contentBlockIndex;
1151
1168
  const contentBlock = contentBlocks[blockIndex];
1152
1169
  if (contentBlock != null) {
@@ -1192,7 +1209,7 @@ var BedrockChatLanguageModel = class {
1192
1209
  delete contentBlocks[blockIndex];
1193
1210
  }
1194
1211
  }
1195
- if (((_g = value.contentBlockDelta) == null ? void 0 : _g.delta) && "reasoningContent" in value.contentBlockDelta.delta && value.contentBlockDelta.delta.reasoningContent) {
1212
+ if (((_j = value.contentBlockDelta) == null ? void 0 : _j.delta) && "reasoningContent" in value.contentBlockDelta.delta && value.contentBlockDelta.delta.reasoningContent) {
1196
1213
  const blockIndex = value.contentBlockDelta.contentBlockIndex || 0;
1197
1214
  const reasoningContent = value.contentBlockDelta.delta.reasoningContent;
1198
1215
  if ("text" in reasoningContent && reasoningContent.text) {
@@ -1233,7 +1250,7 @@ var BedrockChatLanguageModel = class {
1233
1250
  }
1234
1251
  }
1235
1252
  const contentBlockStart = value.contentBlockStart;
1236
- if (((_h = contentBlockStart == null ? void 0 : contentBlockStart.start) == null ? void 0 : _h.toolUse) != null) {
1253
+ if (((_k = contentBlockStart == null ? void 0 : contentBlockStart.start) == null ? void 0 : _k.toolUse) != null) {
1237
1254
  const toolUse = contentBlockStart.start.toolUse;
1238
1255
  const blockIndex = contentBlockStart.contentBlockIndex;
1239
1256
  const isJsonResponseTool = usesJsonResponseTool && toolUse.name === "json";
@@ -1257,7 +1274,7 @@ var BedrockChatLanguageModel = class {
1257
1274
  const blockIndex = contentBlockDelta.contentBlockIndex;
1258
1275
  const contentBlock = contentBlocks[blockIndex];
1259
1276
  if ((contentBlock == null ? void 0 : contentBlock.type) === "tool-call") {
1260
- const delta = (_i = contentBlockDelta.delta.toolUse.input) != null ? _i : "";
1277
+ const delta = (_l = contentBlockDelta.delta.toolUse.input) != null ? _l : "";
1261
1278
  if (!contentBlock.isJsonResponseTool) {
1262
1279
  controller.enqueue({
1263
1280
  type: "tool-input-delta",
@@ -1270,16 +1287,22 @@ var BedrockChatLanguageModel = class {
1270
1287
  }
1271
1288
  },
1272
1289
  flush(controller) {
1273
- if (isJsonResponseFromTool) {
1290
+ if (isJsonResponseFromTool || stopSequence != null) {
1274
1291
  if (providerMetadata) {
1275
1292
  providerMetadata.bedrock = {
1276
1293
  ...providerMetadata.bedrock,
1277
- isJsonResponseFromTool: true
1294
+ ...isJsonResponseFromTool && {
1295
+ isJsonResponseFromTool: true
1296
+ },
1297
+ stopSequence
1278
1298
  };
1279
1299
  } else {
1280
1300
  providerMetadata = {
1281
1301
  bedrock: {
1282
- isJsonResponseFromTool: true
1302
+ ...isJsonResponseFromTool && {
1303
+ isJsonResponseFromTool: true
1304
+ },
1305
+ stopSequence
1283
1306
  }
1284
1307
  };
1285
1308
  }
@@ -1306,6 +1329,9 @@ var BedrockStopReasonSchema = import_v43.z.union([
1306
1329
  import_v43.z.enum(BEDROCK_STOP_REASONS),
1307
1330
  import_v43.z.string()
1308
1331
  ]);
1332
+ var BedrockAdditionalModelResponseFieldsSchema = import_v43.z.object({
1333
+ stop_sequence: import_v43.z.string().nullish()
1334
+ }).catchall(import_v43.z.unknown());
1309
1335
  var BedrockToolUseSchema = import_v43.z.object({
1310
1336
  toolUseId: import_v43.z.string(),
1311
1337
  name: import_v43.z.string(),
@@ -1342,6 +1368,7 @@ var BedrockResponseSchema = import_v43.z.object({
1342
1368
  })
1343
1369
  }),
1344
1370
  stopReason: BedrockStopReasonSchema,
1371
+ additionalModelResponseFields: BedrockAdditionalModelResponseFieldsSchema.nullish(),
1345
1372
  trace: import_v43.z.unknown().nullish(),
1346
1373
  usage: import_v43.z.object({
1347
1374
  inputTokens: import_v43.z.number(),
@@ -1381,7 +1408,7 @@ var BedrockStreamSchema = import_v43.z.object({
1381
1408
  }).nullish(),
1382
1409
  internalServerException: import_v43.z.record(import_v43.z.string(), import_v43.z.unknown()).nullish(),
1383
1410
  messageStop: import_v43.z.object({
1384
- additionalModelResponseFields: import_v43.z.record(import_v43.z.string(), import_v43.z.unknown()).nullish(),
1411
+ additionalModelResponseFields: BedrockAdditionalModelResponseFieldsSchema.nullish(),
1385
1412
  stopReason: BedrockStopReasonSchema
1386
1413
  }).nullish(),
1387
1414
  metadata: import_v43.z.object({
@@ -1523,31 +1550,110 @@ var BedrockImageModel = class {
1523
1550
  seed,
1524
1551
  providerOptions,
1525
1552
  headers,
1526
- abortSignal
1553
+ abortSignal,
1554
+ files,
1555
+ mask
1527
1556
  }) {
1528
- var _a, _b, _c, _d, _e, _f, _g;
1557
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
1529
1558
  const warnings = [];
1530
1559
  const [width, height] = size ? size.split("x").map(Number) : [];
1531
- const args = {
1532
- taskType: "TEXT_IMAGE",
1533
- textToImageParams: {
1534
- text: prompt,
1535
- ...((_a = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _a.negativeText) ? {
1536
- negativeText: providerOptions.bedrock.negativeText
1537
- } : {},
1538
- ...((_b = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _b.style) ? {
1539
- style: providerOptions.bedrock.style
1540
- } : {}
1541
- },
1542
- imageGenerationConfig: {
1543
- ...width ? { width } : {},
1544
- ...height ? { height } : {},
1545
- ...seed ? { seed } : {},
1546
- ...n ? { numberOfImages: n } : {},
1547
- ...((_c = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _c.quality) ? { quality: providerOptions.bedrock.quality } : {},
1548
- ...((_d = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _d.cfgScale) ? { cfgScale: providerOptions.bedrock.cfgScale } : {}
1549
- }
1560
+ const hasFiles = files != null && files.length > 0;
1561
+ const imageGenerationConfig = {
1562
+ ...width ? { width } : {},
1563
+ ...height ? { height } : {},
1564
+ ...seed ? { seed } : {},
1565
+ ...n ? { numberOfImages: n } : {},
1566
+ ...((_a = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _a.quality) ? { quality: providerOptions.bedrock.quality } : {},
1567
+ ...((_b = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _b.cfgScale) ? { cfgScale: providerOptions.bedrock.cfgScale } : {}
1550
1568
  };
1569
+ let args;
1570
+ if (hasFiles) {
1571
+ const hasMask = (mask == null ? void 0 : mask.type) != null;
1572
+ const hasMaskPrompt = ((_c = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _c.maskPrompt) != null;
1573
+ const taskType = (_e = (_d = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _d.taskType) != null ? _e : hasMask || hasMaskPrompt ? "INPAINTING" : "IMAGE_VARIATION";
1574
+ const sourceImageBase64 = getBase64Data(files[0]);
1575
+ switch (taskType) {
1576
+ case "INPAINTING": {
1577
+ const inPaintingParams = {
1578
+ image: sourceImageBase64,
1579
+ ...prompt ? { text: prompt } : {},
1580
+ ...((_f = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _f.negativeText) ? { negativeText: providerOptions.bedrock.negativeText } : {}
1581
+ };
1582
+ if (hasMask) {
1583
+ inPaintingParams.maskImage = getBase64Data(mask);
1584
+ } else if (hasMaskPrompt) {
1585
+ inPaintingParams.maskPrompt = providerOptions.bedrock.maskPrompt;
1586
+ }
1587
+ args = {
1588
+ taskType: "INPAINTING",
1589
+ inPaintingParams,
1590
+ imageGenerationConfig
1591
+ };
1592
+ break;
1593
+ }
1594
+ case "OUTPAINTING": {
1595
+ const outPaintingParams = {
1596
+ image: sourceImageBase64,
1597
+ ...prompt ? { text: prompt } : {},
1598
+ ...((_g = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _g.negativeText) ? { negativeText: providerOptions.bedrock.negativeText } : {},
1599
+ ...((_h = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _h.outPaintingMode) ? { outPaintingMode: providerOptions.bedrock.outPaintingMode } : {}
1600
+ };
1601
+ if (hasMask) {
1602
+ outPaintingParams.maskImage = getBase64Data(mask);
1603
+ } else if (hasMaskPrompt) {
1604
+ outPaintingParams.maskPrompt = providerOptions.bedrock.maskPrompt;
1605
+ }
1606
+ args = {
1607
+ taskType: "OUTPAINTING",
1608
+ outPaintingParams,
1609
+ imageGenerationConfig
1610
+ };
1611
+ break;
1612
+ }
1613
+ case "BACKGROUND_REMOVAL": {
1614
+ args = {
1615
+ taskType: "BACKGROUND_REMOVAL",
1616
+ backgroundRemovalParams: {
1617
+ image: sourceImageBase64
1618
+ }
1619
+ };
1620
+ break;
1621
+ }
1622
+ case "IMAGE_VARIATION": {
1623
+ const images = files.map((file) => getBase64Data(file));
1624
+ const imageVariationParams = {
1625
+ images,
1626
+ ...prompt ? { text: prompt } : {},
1627
+ ...((_i = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _i.negativeText) ? { negativeText: providerOptions.bedrock.negativeText } : {},
1628
+ ...((_j = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _j.similarityStrength) != null ? {
1629
+ similarityStrength: providerOptions.bedrock.similarityStrength
1630
+ } : {}
1631
+ };
1632
+ args = {
1633
+ taskType: "IMAGE_VARIATION",
1634
+ imageVariationParams,
1635
+ imageGenerationConfig
1636
+ };
1637
+ break;
1638
+ }
1639
+ default:
1640
+ throw new Error(`Unsupported task type: ${taskType}`);
1641
+ }
1642
+ } else {
1643
+ args = {
1644
+ taskType: "TEXT_IMAGE",
1645
+ textToImageParams: {
1646
+ text: prompt,
1647
+ ...((_k = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _k.negativeText) ? {
1648
+ negativeText: providerOptions.bedrock.negativeText
1649
+ } : {},
1650
+ ...((_l = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _l.style) ? {
1651
+ style: providerOptions.bedrock.style
1652
+ } : {}
1653
+ },
1654
+ imageGenerationConfig
1655
+ };
1656
+ }
1551
1657
  if (aspectRatio != void 0) {
1552
1658
  warnings.push({
1553
1659
  type: "unsupported",
@@ -1555,7 +1661,7 @@ var BedrockImageModel = class {
1555
1661
  details: "This model does not support aspect ratio. Use `size` instead."
1556
1662
  });
1557
1663
  }
1558
- const currentDate = (_g = (_f = (_e = this.config._internal) == null ? void 0 : _e.currentDate) == null ? void 0 : _f.call(_e)) != null ? _g : /* @__PURE__ */ new Date();
1664
+ const currentDate = (_o = (_n = (_m = this.config._internal) == null ? void 0 : _m.currentDate) == null ? void 0 : _n.call(_m)) != null ? _o : /* @__PURE__ */ new Date();
1559
1665
  const { value: response, responseHeaders } = await (0, import_provider_utils6.postJsonToApi)({
1560
1666
  url: this.getUrl(this.modelId),
1561
1667
  headers: await (0, import_provider_utils6.resolve)(
@@ -1572,6 +1678,18 @@ var BedrockImageModel = class {
1572
1678
  abortSignal,
1573
1679
  fetch: this.config.fetch
1574
1680
  });
1681
+ if (response.status === "Request Moderated") {
1682
+ const moderationReasons = (_p = response.details) == null ? void 0 : _p["Moderation Reasons"];
1683
+ const reasons = Array.isArray(moderationReasons) ? moderationReasons : ["Unknown"];
1684
+ throw new Error(
1685
+ `Amazon Bedrock request was moderated: ${reasons.join(", ")}`
1686
+ );
1687
+ }
1688
+ if (!response.images || response.images.length === 0) {
1689
+ throw new Error(
1690
+ "Amazon Bedrock returned no images. " + (response.status ? `Status: ${response.status}` : "")
1691
+ );
1692
+ }
1575
1693
  return {
1576
1694
  images: response.images,
1577
1695
  warnings,
@@ -1583,8 +1701,27 @@ var BedrockImageModel = class {
1583
1701
  };
1584
1702
  }
1585
1703
  };
1704
+ function getBase64Data(file) {
1705
+ if (file.type === "url") {
1706
+ throw new Error(
1707
+ "URL-based images are not supported for Amazon Bedrock image editing. Please provide the image data directly."
1708
+ );
1709
+ }
1710
+ if (file.data instanceof Uint8Array) {
1711
+ return (0, import_provider_utils6.convertUint8ArrayToBase64)(file.data);
1712
+ }
1713
+ return file.data;
1714
+ }
1586
1715
  var bedrockImageResponseSchema = import_v46.z.object({
1587
- images: import_v46.z.array(import_v46.z.string())
1716
+ // Normal successful response
1717
+ images: import_v46.z.array(import_v46.z.string()).optional(),
1718
+ // Moderation response fields
1719
+ id: import_v46.z.string().optional(),
1720
+ status: import_v46.z.string().optional(),
1721
+ result: import_v46.z.unknown().optional(),
1722
+ progress: import_v46.z.unknown().optional(),
1723
+ details: import_v46.z.record(import_v46.z.string(), import_v46.z.unknown()).optional(),
1724
+ preview: import_v46.z.unknown().optional()
1588
1725
  });
1589
1726
 
1590
1727
  // src/bedrock-sigv4-fetch.ts
@@ -1592,7 +1729,7 @@ var import_provider_utils7 = require("@ai-sdk/provider-utils");
1592
1729
  var import_aws4fetch = require("aws4fetch");
1593
1730
 
1594
1731
  // src/version.ts
1595
- var VERSION = true ? "4.0.0-beta.99" : "0.0.0-test";
1732
+ var VERSION = true ? "4.0.1" : "0.0.0-test";
1596
1733
 
1597
1734
  // src/bedrock-sigv4-fetch.ts
1598
1735
  function createSigV4FetchFunction(getCredentials, fetch = globalThis.fetch) {
@@ -1926,6 +2063,8 @@ Original error: ${errorMessage}`
1926
2063
  provider.languageModel = createChatModel;
1927
2064
  provider.embedding = createEmbeddingModel;
1928
2065
  provider.embeddingModel = createEmbeddingModel;
2066
+ provider.textEmbedding = createEmbeddingModel;
2067
+ provider.textEmbeddingModel = createEmbeddingModel;
1929
2068
  provider.image = createImageModel;
1930
2069
  provider.imageModel = createImageModel;
1931
2070
  provider.reranking = createRerankingModel;