@ai-sdk/anthropic 3.0.2 → 3.0.4

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,17 @@
1
1
  # @ai-sdk/anthropic
2
2
 
3
+ ## 3.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - bf39dac: Fix: Use provider tool name in Tool Search Tool results
8
+
9
+ ## 3.0.3
10
+
11
+ ### Patch Changes
12
+
13
+ - 77b760d: fix(anthropic): support deferred results for web search/fetch tool
14
+
3
15
  ## 3.0.2
4
16
 
5
17
  ### Patch Changes
package/dist/index.js CHANGED
@@ -32,7 +32,7 @@ var import_provider4 = require("@ai-sdk/provider");
32
32
  var import_provider_utils22 = require("@ai-sdk/provider-utils");
33
33
 
34
34
  // src/version.ts
35
- var VERSION = true ? "3.0.2" : "0.0.0-test";
35
+ var VERSION = true ? "3.0.4" : "0.0.0-test";
36
36
 
37
37
  // src/anthropic-messages-language-model.ts
38
38
  var import_provider3 = require("@ai-sdk/provider");
@@ -974,7 +974,8 @@ var webSearch_20250305InputSchema = (0, import_provider_utils5.lazySchema)(
974
974
  var factory2 = (0, import_provider_utils5.createProviderToolFactoryWithOutputSchema)({
975
975
  id: "anthropic.web_search_20250305",
976
976
  inputSchema: webSearch_20250305InputSchema,
977
- outputSchema: webSearch_20250305OutputSchema
977
+ outputSchema: webSearch_20250305OutputSchema,
978
+ supportsDeferredResults: true
978
979
  });
979
980
  var webSearch_20250305 = (args = {}) => {
980
981
  return factory2(args);
@@ -1030,7 +1031,8 @@ var webFetch_20250910InputSchema = (0, import_provider_utils6.lazySchema)(
1030
1031
  var factory3 = (0, import_provider_utils6.createProviderToolFactoryWithOutputSchema)({
1031
1032
  id: "anthropic.web_fetch_20250910",
1032
1033
  inputSchema: webFetch_20250910InputSchema,
1033
- outputSchema: webFetch_20250910OutputSchema
1034
+ outputSchema: webFetch_20250910OutputSchema,
1035
+ supportsDeferredResults: true
1034
1036
  });
1035
1037
  var webFetch_20250910 = (args = {}) => {
1036
1038
  return factory3(args);
@@ -2711,7 +2713,7 @@ var AnthropicMessagesLanguageModel = class {
2711
2713
  });
2712
2714
  }
2713
2715
  async doGenerate(options) {
2714
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2716
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
2715
2717
  const { args, warnings, betas, usesJsonResponseTool, toolNameMapping } = await this.getArgs({
2716
2718
  ...options,
2717
2719
  stream: false,
@@ -2735,6 +2737,7 @@ var AnthropicMessagesLanguageModel = class {
2735
2737
  });
2736
2738
  const content = [];
2737
2739
  const mcpToolCalls = {};
2740
+ const serverToolCalls = {};
2738
2741
  let isJsonResponseFromTool = false;
2739
2742
  for (const part of response.content) {
2740
2743
  switch (part.type) {
@@ -2829,6 +2832,7 @@ var AnthropicMessagesLanguageModel = class {
2829
2832
  providerExecuted: true
2830
2833
  });
2831
2834
  } else if (part.name === "tool_search_tool_regex" || part.name === "tool_search_tool_bm25") {
2835
+ serverToolCalls[part.id] = part.name;
2832
2836
  content.push({
2833
2837
  type: "tool-call",
2834
2838
  toolCallId: part.id,
@@ -2992,11 +2996,12 @@ var AnthropicMessagesLanguageModel = class {
2992
2996
  }
2993
2997
  // tool search tool results:
2994
2998
  case "tool_search_tool_result": {
2999
+ const providerToolName = (_c = serverToolCalls[part.tool_use_id]) != null ? _c : "tool_search_tool_regex";
2995
3000
  if (part.content.type === "tool_search_tool_search_result") {
2996
3001
  content.push({
2997
3002
  type: "tool-result",
2998
3003
  toolCallId: part.tool_use_id,
2999
- toolName: toolNameMapping.toCustomToolName("tool_search"),
3004
+ toolName: toolNameMapping.toCustomToolName(providerToolName),
3000
3005
  result: part.content.tool_references.map((ref) => ({
3001
3006
  type: ref.type,
3002
3007
  toolName: ref.tool_name
@@ -3006,7 +3011,7 @@ var AnthropicMessagesLanguageModel = class {
3006
3011
  content.push({
3007
3012
  type: "tool-result",
3008
3013
  toolCallId: part.tool_use_id,
3009
- toolName: toolNameMapping.toCustomToolName("tool_search"),
3014
+ toolName: toolNameMapping.toCustomToolName(providerToolName),
3010
3015
  isError: true,
3011
3016
  result: {
3012
3017
  type: "tool_search_tool_result_error",
@@ -3025,13 +3030,13 @@ var AnthropicMessagesLanguageModel = class {
3025
3030
  finishReason: response.stop_reason,
3026
3031
  isJsonResponseFromTool
3027
3032
  }),
3028
- raw: (_c = response.stop_reason) != null ? _c : void 0
3033
+ raw: (_d = response.stop_reason) != null ? _d : void 0
3029
3034
  },
3030
3035
  usage: convertAnthropicMessagesUsage(response.usage),
3031
3036
  request: { body: args },
3032
3037
  response: {
3033
- id: (_d = response.id) != null ? _d : void 0,
3034
- modelId: (_e = response.model) != null ? _e : void 0,
3038
+ id: (_e = response.id) != null ? _e : void 0,
3039
+ modelId: (_f = response.model) != null ? _f : void 0,
3035
3040
  headers: responseHeaders,
3036
3041
  body: rawResponse
3037
3042
  },
@@ -3039,20 +3044,20 @@ var AnthropicMessagesLanguageModel = class {
3039
3044
  providerMetadata: {
3040
3045
  anthropic: {
3041
3046
  usage: response.usage,
3042
- cacheCreationInputTokens: (_f = response.usage.cache_creation_input_tokens) != null ? _f : null,
3043
- stopSequence: (_g = response.stop_sequence) != null ? _g : null,
3047
+ cacheCreationInputTokens: (_g = response.usage.cache_creation_input_tokens) != null ? _g : null,
3048
+ stopSequence: (_h = response.stop_sequence) != null ? _h : null,
3044
3049
  container: response.container ? {
3045
3050
  expiresAt: response.container.expires_at,
3046
3051
  id: response.container.id,
3047
- skills: (_i = (_h = response.container.skills) == null ? void 0 : _h.map((skill) => ({
3052
+ skills: (_j = (_i = response.container.skills) == null ? void 0 : _i.map((skill) => ({
3048
3053
  type: skill.type,
3049
3054
  skillId: skill.skill_id,
3050
3055
  version: skill.version
3051
- }))) != null ? _i : null
3056
+ }))) != null ? _j : null
3052
3057
  } : null,
3053
- contextManagement: (_j = mapAnthropicResponseContextManagement(
3058
+ contextManagement: (_k = mapAnthropicResponseContextManagement(
3054
3059
  response.context_management
3055
- )) != null ? _j : null
3060
+ )) != null ? _k : null
3056
3061
  }
3057
3062
  }
3058
3063
  };
@@ -3095,6 +3100,7 @@ var AnthropicMessagesLanguageModel = class {
3095
3100
  };
3096
3101
  const contentBlocks = {};
3097
3102
  const mcpToolCalls = {};
3103
+ const serverToolCalls = {};
3098
3104
  let contextManagement = null;
3099
3105
  let rawUsage = void 0;
3100
3106
  let cacheCreationInputTokens = null;
@@ -3109,7 +3115,7 @@ var AnthropicMessagesLanguageModel = class {
3109
3115
  controller.enqueue({ type: "stream-start", warnings });
3110
3116
  },
3111
3117
  transform(chunk, controller) {
3112
- var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
3118
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
3113
3119
  if (options.includeRawChunks) {
3114
3120
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
3115
3121
  }
@@ -3221,6 +3227,7 @@ var AnthropicMessagesLanguageModel = class {
3221
3227
  providerExecuted: true
3222
3228
  });
3223
3229
  } else if (part.name === "tool_search_tool_regex" || part.name === "tool_search_tool_bm25") {
3230
+ serverToolCalls[part.id] = part.name;
3224
3231
  const customToolName = toolNameMapping.toCustomToolName(
3225
3232
  part.name
3226
3233
  );
@@ -3365,11 +3372,12 @@ var AnthropicMessagesLanguageModel = class {
3365
3372
  }
3366
3373
  // tool search tool results:
3367
3374
  case "tool_search_tool_result": {
3375
+ const providerToolName = (_c = serverToolCalls[part.tool_use_id]) != null ? _c : "tool_search_tool_regex";
3368
3376
  if (part.content.type === "tool_search_tool_search_result") {
3369
3377
  controller.enqueue({
3370
3378
  type: "tool-result",
3371
3379
  toolCallId: part.tool_use_id,
3372
- toolName: toolNameMapping.toCustomToolName("tool_search"),
3380
+ toolName: toolNameMapping.toCustomToolName(providerToolName),
3373
3381
  result: part.content.tool_references.map((ref) => ({
3374
3382
  type: ref.type,
3375
3383
  toolName: ref.tool_name
@@ -3379,7 +3387,7 @@ var AnthropicMessagesLanguageModel = class {
3379
3387
  controller.enqueue({
3380
3388
  type: "tool-result",
3381
3389
  toolCallId: part.tool_use_id,
3382
- toolName: toolNameMapping.toCustomToolName("tool_search"),
3390
+ toolName: toolNameMapping.toCustomToolName(providerToolName),
3383
3391
  isError: true,
3384
3392
  result: {
3385
3393
  type: "tool_search_tool_result_error",
@@ -3578,12 +3586,12 @@ var AnthropicMessagesLanguageModel = class {
3578
3586
  }
3579
3587
  case "message_start": {
3580
3588
  usage.input_tokens = value.message.usage.input_tokens;
3581
- usage.cache_read_input_tokens = (_c = value.message.usage.cache_read_input_tokens) != null ? _c : 0;
3582
- usage.cache_creation_input_tokens = (_d = value.message.usage.cache_creation_input_tokens) != null ? _d : 0;
3589
+ usage.cache_read_input_tokens = (_d = value.message.usage.cache_read_input_tokens) != null ? _d : 0;
3590
+ usage.cache_creation_input_tokens = (_e = value.message.usage.cache_creation_input_tokens) != null ? _e : 0;
3583
3591
  rawUsage = {
3584
3592
  ...value.message.usage
3585
3593
  };
3586
- cacheCreationInputTokens = (_e = value.message.usage.cache_creation_input_tokens) != null ? _e : null;
3594
+ cacheCreationInputTokens = (_f = value.message.usage.cache_creation_input_tokens) != null ? _f : null;
3587
3595
  if (value.message.container != null) {
3588
3596
  container = {
3589
3597
  expiresAt: value.message.container.expires_at,
@@ -3602,8 +3610,8 @@ var AnthropicMessagesLanguageModel = class {
3602
3610
  }
3603
3611
  controller.enqueue({
3604
3612
  type: "response-metadata",
3605
- id: (_f = value.message.id) != null ? _f : void 0,
3606
- modelId: (_g = value.message.model) != null ? _g : void 0
3613
+ id: (_g = value.message.id) != null ? _g : void 0,
3614
+ modelId: (_h = value.message.model) != null ? _h : void 0
3607
3615
  });
3608
3616
  if (value.message.content != null) {
3609
3617
  for (let contentIndex = 0; contentIndex < value.message.content.length; contentIndex++) {
@@ -3619,7 +3627,7 @@ var AnthropicMessagesLanguageModel = class {
3619
3627
  id: part.id,
3620
3628
  toolName: part.name
3621
3629
  });
3622
- const inputStr = JSON.stringify((_h = part.input) != null ? _h : {});
3630
+ const inputStr = JSON.stringify((_i = part.input) != null ? _i : {});
3623
3631
  controller.enqueue({
3624
3632
  type: "tool-input-delta",
3625
3633
  id: part.id,
@@ -3654,17 +3662,17 @@ var AnthropicMessagesLanguageModel = class {
3654
3662
  finishReason: value.delta.stop_reason,
3655
3663
  isJsonResponseFromTool
3656
3664
  }),
3657
- raw: (_i = value.delta.stop_reason) != null ? _i : void 0
3665
+ raw: (_j = value.delta.stop_reason) != null ? _j : void 0
3658
3666
  };
3659
- stopSequence = (_j = value.delta.stop_sequence) != null ? _j : null;
3667
+ stopSequence = (_k = value.delta.stop_sequence) != null ? _k : null;
3660
3668
  container = value.delta.container != null ? {
3661
3669
  expiresAt: value.delta.container.expires_at,
3662
3670
  id: value.delta.container.id,
3663
- skills: (_l = (_k = value.delta.container.skills) == null ? void 0 : _k.map((skill) => ({
3671
+ skills: (_m = (_l = value.delta.container.skills) == null ? void 0 : _l.map((skill) => ({
3664
3672
  type: skill.type,
3665
3673
  skillId: skill.skill_id,
3666
3674
  version: skill.version
3667
- }))) != null ? _l : null
3675
+ }))) != null ? _m : null
3668
3676
  } : null;
3669
3677
  if (value.delta.context_management) {
3670
3678
  contextManagement = mapAnthropicResponseContextManagement(