@ai-sdk/amazon-bedrock 5.0.86 → 5.0.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @ai-sdk/amazon-bedrock
2
2
 
3
+ ## 5.0.88
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [2973485]
8
+ - Updated dependencies [e76a0a3]
9
+ - Updated dependencies [a4db5ea]
10
+ - Updated dependencies [2937ea2]
11
+ - @ai-sdk/provider-utils@5.0.45
12
+ - @ai-sdk/openai@4.0.71
13
+ - @ai-sdk/anthropic@4.0.58
14
+
15
+ ## 5.0.87
16
+
17
+ ### Patch Changes
18
+
19
+ - d746e16: fix(amazon-bedrock): avoid strict mode for open tool schemas
20
+ - c559a12: fix(amazon-bedrock): preserve API error messages when the error type is omitted
21
+ - Updated dependencies [fd75cee]
22
+ - Updated dependencies [1f5bb62]
23
+ - Updated dependencies [0455398]
24
+ - @ai-sdk/openai@4.0.70
25
+ - @ai-sdk/provider-utils@5.0.44
26
+ - @ai-sdk/anthropic@4.0.57
27
+
3
28
  ## 5.0.86
4
29
 
5
30
  ### Patch Changes
@@ -23,7 +23,7 @@ import {
23
23
  import { AwsV4Signer } from "aws4fetch";
24
24
 
25
25
  // src/version.ts
26
- var VERSION = true ? "5.0.86" : "0.0.0-test";
26
+ var VERSION = true ? "5.0.88" : "0.0.0-test";
27
27
 
28
28
  // src/amazon-bedrock-sigv4-fetch.ts
29
29
  function createSigV4FetchFunction(getCredentials, fetch, service = "bedrock") {
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  combineHeaders,
13
13
  createProviderStreamError,
14
- createJsonErrorResponseHandler,
14
+ createJsonErrorResponseHandler as createJsonErrorResponseHandler2,
15
15
  createJsonResponseHandler,
16
16
  injectJsonInstructionIntoMessages,
17
17
  isCustomReasoning,
@@ -169,11 +169,16 @@ function matchesModel(modelId, models) {
169
169
  }
170
170
 
171
171
  // src/amazon-bedrock-error.ts
172
+ import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
172
173
  import { z as z2 } from "zod/v4";
173
174
  var AmazonBedrockErrorSchema = z2.object({
174
175
  message: z2.string(),
175
176
  type: z2.string().nullish()
176
177
  });
178
+ var amazonBedrockFailedResponseHandler = createJsonErrorResponseHandler({
179
+ errorSchema: AmazonBedrockErrorSchema,
180
+ errorToMessage: (error) => error.type == null ? error.message : `${error.type}: ${error.message}`
181
+ });
177
182
 
178
183
  // src/amazon-bedrock-event-stream-response-handler.ts
179
184
  import { EmptyResponseBodyError } from "@ai-sdk/provider";
@@ -399,18 +404,25 @@ async function prepareTools({
399
404
  const filteredFunctionTools = (toolChoice == null ? void 0 : toolChoice.type) === "tool" ? functionTools.filter((t) => t.name === toolChoice.toolName) : functionTools;
400
405
  const supportsStrictOnTools = supportsStrictTools(modelId);
401
406
  for (const tool of filteredFunctionTools) {
407
+ const supportsStrictForTool = supportsStrictOnTools && (tool.strict !== true || isStrictToolSchemaCompatible(tool.inputSchema));
402
408
  if (!supportsStrictOnTools && tool.strict != null) {
403
409
  toolWarnings.push({
404
410
  type: "unsupported",
405
411
  feature: "strict",
406
412
  details: `Tool '${tool.name}' has strict: ${tool.strict}, but strict mode is not supported by this model on Amazon Bedrock. The strict property will be ignored.`
407
413
  });
414
+ } else if (tool.strict === true && !supportsStrictForTool) {
415
+ toolWarnings.push({
416
+ type: "unsupported",
417
+ feature: "strict",
418
+ details: `Tool '${tool.name}' has strict: true, but Amazon Bedrock requires every object in a strict tool schema to set additionalProperties: false. The strict property will be ignored.`
419
+ });
408
420
  }
409
421
  amazonBedrockTools.push({
410
422
  toolSpec: {
411
423
  name: tool.name,
412
424
  ...((_a = tool.description) == null ? void 0 : _a.trim()) !== "" ? { description: tool.description } : {},
413
- ...tool.strict != null && supportsStrictOnTools ? { strict: tool.strict } : {},
425
+ ...tool.strict != null && supportsStrictForTool ? { strict: tool.strict } : {},
414
426
  inputSchema: {
415
427
  json: tool.inputSchema
416
428
  }
@@ -459,6 +471,52 @@ async function prepareTools({
459
471
  toolWarnings
460
472
  };
461
473
  }
474
+ function isStrictToolSchemaCompatible(schema) {
475
+ if (typeof schema === "boolean") {
476
+ return true;
477
+ }
478
+ const schemaWithDefs = schema;
479
+ if ((schema.type === "object" || Array.isArray(schema.type) && schema.type.includes("object")) && schema.additionalProperties !== false) {
480
+ return false;
481
+ }
482
+ const schemaMaps = [
483
+ schema.properties,
484
+ schema.patternProperties,
485
+ schema.definitions,
486
+ schemaWithDefs.$defs
487
+ ];
488
+ for (const schemaMap of schemaMaps) {
489
+ if (schemaMap != null && Object.values(schemaMap).some(
490
+ (definition) => !isStrictToolSchemaCompatible(definition)
491
+ )) {
492
+ return false;
493
+ }
494
+ }
495
+ if (schema.dependencies != null && Object.values(schema.dependencies).some(
496
+ (dependency) => !Array.isArray(dependency) && !isStrictToolSchemaCompatible(dependency)
497
+ )) {
498
+ return false;
499
+ }
500
+ const nestedSchemas = [
501
+ schema.propertyNames,
502
+ schema.contains,
503
+ schema.not,
504
+ schema.if,
505
+ schema.then,
506
+ schema.else
507
+ ];
508
+ if (nestedSchemas.some(
509
+ (nestedSchema) => nestedSchema != null && !isStrictToolSchemaCompatible(nestedSchema)
510
+ )) {
511
+ return false;
512
+ }
513
+ if (schema.items != null && (Array.isArray(schema.items) ? schema.items.some((item) => !isStrictToolSchemaCompatible(item)) : !isStrictToolSchemaCompatible(schema.items))) {
514
+ return false;
515
+ }
516
+ return [schema.anyOf, schema.allOf, schema.oneOf].every(
517
+ (alternatives) => alternatives == null || alternatives.every(isStrictToolSchemaCompatible)
518
+ );
519
+ }
462
520
 
463
521
  // src/convert-amazon-bedrock-usage.ts
464
522
  import { createNullLanguageModelUsage } from "@ai-sdk/provider-utils";
@@ -1525,7 +1583,7 @@ var AmazonBedrockChatLanguageModel = class _AmazonBedrockChatLanguageModel {
1525
1583
  url,
1526
1584
  headers: await this.getHeaders({ headers: options.headers }),
1527
1585
  body: args,
1528
- failedResponseHandler: createJsonErrorResponseHandler({
1586
+ failedResponseHandler: createJsonErrorResponseHandler2({
1529
1587
  errorSchema: AmazonBedrockErrorSchema,
1530
1588
  errorToMessage: (error) => {
1531
1589
  var _a2;
@@ -1674,10 +1732,7 @@ var AmazonBedrockChatLanguageModel = class _AmazonBedrockChatLanguageModel {
1674
1732
  url,
1675
1733
  headers: await this.getHeaders({ headers: options.headers }),
1676
1734
  body: args,
1677
- failedResponseHandler: createJsonErrorResponseHandler({
1678
- errorSchema: AmazonBedrockErrorSchema,
1679
- errorToMessage: (error) => `${error.type}: ${error.message}`
1680
- }),
1735
+ failedResponseHandler: amazonBedrockFailedResponseHandler,
1681
1736
  successfulResponseHandler: createAmazonBedrockEventStreamResponseHandler(
1682
1737
  AmazonBedrockStreamSchema
1683
1738
  ),
@@ -2291,7 +2346,6 @@ import {
2291
2346
  } from "@ai-sdk/provider";
2292
2347
  import {
2293
2348
  combineHeaders as combineHeaders2,
2294
- createJsonErrorResponseHandler as createJsonErrorResponseHandler2,
2295
2349
  createJsonResponseHandler as createJsonResponseHandler2,
2296
2350
  parseProviderOptions as parseProviderOptions3,
2297
2351
  postJsonToApi as postJsonToApi2,
@@ -2440,10 +2494,7 @@ var AmazonBedrockEmbeddingModel = class _AmazonBedrockEmbeddingModel {
2440
2494
  )
2441
2495
  ),
2442
2496
  body: args,
2443
- failedResponseHandler: createJsonErrorResponseHandler2({
2444
- errorSchema: AmazonBedrockErrorSchema,
2445
- errorToMessage: (error) => `${error.type}: ${error.message}`
2446
- }),
2497
+ failedResponseHandler: amazonBedrockFailedResponseHandler,
2447
2498
  successfulResponseHandler: createJsonResponseHandler2(
2448
2499
  AmazonBedrockEmbeddingResponseSchema
2449
2500
  ),
@@ -2515,7 +2566,6 @@ var AmazonBedrockEmbeddingResponseSchema = z6.union([
2515
2566
  import {
2516
2567
  combineHeaders as combineHeaders3,
2517
2568
  convertUint8ArrayToBase64,
2518
- createJsonErrorResponseHandler as createJsonErrorResponseHandler3,
2519
2569
  createJsonResponseHandler as createJsonResponseHandler3,
2520
2570
  parseProviderOptions as parseProviderOptions4,
2521
2571
  postJsonToApi as postJsonToApi3,
@@ -2730,10 +2780,7 @@ var AmazonBedrockImageModel = class _AmazonBedrockImageModel {
2730
2780
  )
2731
2781
  ),
2732
2782
  body: args,
2733
- failedResponseHandler: createJsonErrorResponseHandler3({
2734
- errorSchema: AmazonBedrockErrorSchema,
2735
- errorToMessage: (error) => `${error.type}: ${error.message}`
2736
- }),
2783
+ failedResponseHandler: amazonBedrockFailedResponseHandler,
2737
2784
  successfulResponseHandler: createJsonResponseHandler3(
2738
2785
  amazonBedrockImageResponseSchema
2739
2786
  ),
@@ -2796,7 +2843,7 @@ import {
2796
2843
  import { AwsV4Signer } from "aws4fetch";
2797
2844
 
2798
2845
  // src/version.ts
2799
- var VERSION = true ? "5.0.86" : "0.0.0-test";
2846
+ var VERSION = true ? "5.0.88" : "0.0.0-test";
2800
2847
 
2801
2848
  // src/amazon-bedrock-sigv4-fetch.ts
2802
2849
  function createSigV4FetchFunction(getCredentials, fetch, service = "bedrock") {
@@ -2884,7 +2931,6 @@ function createApiKeyFetchFunction(apiKey, fetch) {
2884
2931
  // src/reranking/amazon-bedrock-reranking-model.ts
2885
2932
  import {
2886
2933
  combineHeaders as combineHeaders5,
2887
- createJsonErrorResponseHandler as createJsonErrorResponseHandler4,
2888
2934
  createJsonResponseHandler as createJsonResponseHandler4,
2889
2935
  parseProviderOptions as parseProviderOptions5,
2890
2936
  postJsonToApi as postJsonToApi4,
@@ -2990,10 +3036,7 @@ var AmazonBedrockRerankingModel = class {
2990
3036
  }
2991
3037
  }))
2992
3038
  },
2993
- failedResponseHandler: createJsonErrorResponseHandler4({
2994
- errorSchema: AmazonBedrockErrorSchema,
2995
- errorToMessage: (error) => `${error.type}: ${error.message}`
2996
- }),
3039
+ failedResponseHandler: amazonBedrockFailedResponseHandler,
2997
3040
  successfulResponseHandler: createJsonResponseHandler4(
2998
3041
  amazonBedrockRerankingResponseSchema
2999
3042
  ),