@ai-sdk/anthropic 3.0.127 → 3.0.128

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.
@@ -2,7 +2,7 @@ import { LanguageModelV3, LanguageModelV3CallOptions, LanguageModelV3GenerateRes
2
2
  import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
3
  import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
4
4
 
5
- type AnthropicMessagesModelId = 'claude-3-haiku-20240307' | 'claude-haiku-4-5-20251001' | 'claude-haiku-4-5' | 'claude-opus-4-0' | 'claude-opus-4-20250514' | 'claude-opus-4-1-20250805' | 'claude-opus-4-1' | 'claude-opus-4-5' | 'claude-opus-4-5-20251101' | 'claude-sonnet-4-0' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-5' | 'claude-sonnet-4-6' | 'claude-opus-4-6' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-opus-5' | 'claude-opus-5-5' | 'claude-fable-5' | 'claude-fable-5-1' | 'claude-sonnet-5' | 'claude-sonnet-5-5' | (string & {});
5
+ type AnthropicMessagesModelId = 'claude-3-haiku-20240307' | 'claude-haiku-4-5-20251001' | 'claude-haiku-4-5' | 'claude-haiku-5-5' | 'claude-opus-4-0' | 'claude-opus-4-20250514' | 'claude-opus-4-1-20250805' | 'claude-opus-4-1' | 'claude-opus-4-5' | 'claude-opus-4-5-20251101' | 'claude-sonnet-4-0' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-5' | 'claude-sonnet-4-6' | 'claude-opus-4-6' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-opus-5' | 'claude-opus-5-5' | 'claude-fable-5' | 'claude-fable-5-1' | 'claude-sonnet-5' | 'claude-sonnet-5-5' | (string & {});
6
6
 
7
7
  type AnthropicMessagesConfig = {
8
8
  provider: string;
@@ -62,6 +62,11 @@ declare function getModelCapabilities(modelId: string): {
62
62
  * are rejected with a 400.
63
63
  */
64
64
  rejectsThinkingDisabled: boolean;
65
+ /**
66
+ * Budget-based thinking (`thinking.type` `enabled` with `budget_tokens`) is
67
+ * rejected with a 400. Only adaptive thinking is supported.
68
+ */
69
+ rejectsBudgetThinking: boolean;
65
70
  /**
66
71
  * Forced tool use (`tool_choice` `any` or a named tool) is rejected with a 400.
67
72
  */
@@ -2,7 +2,7 @@ import { LanguageModelV3, LanguageModelV3CallOptions, LanguageModelV3GenerateRes
2
2
  import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
3
  import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
4
4
 
5
- type AnthropicMessagesModelId = 'claude-3-haiku-20240307' | 'claude-haiku-4-5-20251001' | 'claude-haiku-4-5' | 'claude-opus-4-0' | 'claude-opus-4-20250514' | 'claude-opus-4-1-20250805' | 'claude-opus-4-1' | 'claude-opus-4-5' | 'claude-opus-4-5-20251101' | 'claude-sonnet-4-0' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-5' | 'claude-sonnet-4-6' | 'claude-opus-4-6' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-opus-5' | 'claude-opus-5-5' | 'claude-fable-5' | 'claude-fable-5-1' | 'claude-sonnet-5' | 'claude-sonnet-5-5' | (string & {});
5
+ type AnthropicMessagesModelId = 'claude-3-haiku-20240307' | 'claude-haiku-4-5-20251001' | 'claude-haiku-4-5' | 'claude-haiku-5-5' | 'claude-opus-4-0' | 'claude-opus-4-20250514' | 'claude-opus-4-1-20250805' | 'claude-opus-4-1' | 'claude-opus-4-5' | 'claude-opus-4-5-20251101' | 'claude-sonnet-4-0' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-5' | 'claude-sonnet-4-6' | 'claude-opus-4-6' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-opus-5' | 'claude-opus-5-5' | 'claude-fable-5' | 'claude-fable-5-1' | 'claude-sonnet-5' | 'claude-sonnet-5-5' | (string & {});
6
6
 
7
7
  type AnthropicMessagesConfig = {
8
8
  provider: string;
@@ -62,6 +62,11 @@ declare function getModelCapabilities(modelId: string): {
62
62
  * are rejected with a 400.
63
63
  */
64
64
  rejectsThinkingDisabled: boolean;
65
+ /**
66
+ * Budget-based thinking (`thinking.type` `enabled` with `budget_tokens`) is
67
+ * rejected with a 400. Only adaptive thinking is supported.
68
+ */
69
+ rejectsBudgetThinking: boolean;
65
70
  /**
66
71
  * Forced tool use (`tool_choice` `any` or a named tool) is rejected with a 400.
67
72
  */
@@ -3816,6 +3816,7 @@ var AnthropicMessagesLanguageModel = class {
3816
3816
  rejectsSamplingParameters,
3817
3817
  rejectsThinkingDisabledAboveHighEffort,
3818
3818
  rejectsThinkingDisabled,
3819
+ rejectsBudgetThinking,
3819
3820
  rejectsForcedToolUse,
3820
3821
  supportsBetweenToolsThinking,
3821
3822
  isKnownModel
@@ -3933,15 +3934,16 @@ var AnthropicMessagesLanguageModel = class {
3933
3934
  details: `thinking cannot be disabled for ${this.modelId}; it always uses adaptive thinking. The thinking setting has been removed. Lower 'effort' to reduce thinking.`
3934
3935
  });
3935
3936
  anthropicOptions.thinking = void 0;
3936
- } else if (requestedType === "enabled") {
3937
- warnings.push({
3938
- type: "unsupported",
3939
- feature: "providerOptions.anthropic.thinking",
3940
- details: `budget-based thinking is not supported by ${this.modelId}; it always uses adaptive thinking. Using adaptive thinking instead. Use 'effort' to control how much the model thinks.`
3941
- });
3942
- anthropicOptions.thinking = { type: "adaptive" };
3943
3937
  }
3944
3938
  }
3939
+ if (rejectsBudgetThinking && (anthropicOptions == null ? void 0 : anthropicOptions.thinking) != null && "type" in anthropicOptions.thinking && anthropicOptions.thinking.type === "enabled") {
3940
+ warnings.push({
3941
+ type: "unsupported",
3942
+ feature: "providerOptions.anthropic.thinking",
3943
+ details: rejectsThinkingDisabled ? `budget-based thinking is not supported by ${this.modelId}; it always uses adaptive thinking. Using adaptive thinking instead. Use 'effort' to control how much the model thinks.` : `budget-based thinking is not supported by ${this.modelId}. Using adaptive thinking instead. Use 'effort' to control how much the model thinks.`
3944
+ });
3945
+ anthropicOptions.thinking = { type: "adaptive" };
3946
+ }
3945
3947
  const thinking = anthropicOptions == null ? void 0 : anthropicOptions.thinking;
3946
3948
  const thinkingType = thinking != null && "type" in thinking ? thinking.type : void 0;
3947
3949
  if (rejectsThinkingDisabledAboveHighEffort && thinkingType === "disabled" && (anthropicOptions.effort === "xhigh" || anthropicOptions.effort === "max")) {
@@ -5820,6 +5822,7 @@ function getModelCapabilities(modelId) {
5820
5822
  rejectsSamplingParameters: true,
5821
5823
  rejectsThinkingDisabledAboveHighEffort: true,
5822
5824
  rejectsThinkingDisabled: true,
5825
+ rejectsBudgetThinking: true,
5823
5826
  rejectsForcedToolUse: true,
5824
5827
  supportsBetweenToolsThinking: true,
5825
5828
  isKnownModel: true
@@ -5831,10 +5834,23 @@ function getModelCapabilities(modelId) {
5831
5834
  rejectsSamplingParameters: true,
5832
5835
  rejectsThinkingDisabledAboveHighEffort: true,
5833
5836
  rejectsThinkingDisabled: true,
5837
+ rejectsBudgetThinking: true,
5834
5838
  rejectsForcedToolUse: true,
5835
5839
  supportsBetweenToolsThinking: false,
5836
5840
  isKnownModel: true
5837
5841
  };
5842
+ } else if (modelId.includes("claude-haiku-5-5")) {
5843
+ return {
5844
+ maxOutputTokens: 128e3,
5845
+ supportsStructuredOutput: true,
5846
+ rejectsSamplingParameters: true,
5847
+ rejectsThinkingDisabledAboveHighEffort: true,
5848
+ rejectsThinkingDisabled: false,
5849
+ rejectsBudgetThinking: true,
5850
+ rejectsForcedToolUse: false,
5851
+ supportsBetweenToolsThinking: false,
5852
+ isKnownModel: true
5853
+ };
5838
5854
  } else if (modelId.includes("claude-opus-5")) {
5839
5855
  return {
5840
5856
  maxOutputTokens: 128e3,
@@ -5842,6 +5858,7 @@ function getModelCapabilities(modelId) {
5842
5858
  rejectsSamplingParameters: true,
5843
5859
  rejectsThinkingDisabledAboveHighEffort: true,
5844
5860
  rejectsThinkingDisabled: false,
5861
+ rejectsBudgetThinking: false,
5845
5862
  rejectsForcedToolUse: false,
5846
5863
  supportsBetweenToolsThinking: false,
5847
5864
  isKnownModel: true
@@ -5853,6 +5870,7 @@ function getModelCapabilities(modelId) {
5853
5870
  rejectsSamplingParameters: true,
5854
5871
  rejectsThinkingDisabledAboveHighEffort: false,
5855
5872
  rejectsThinkingDisabled: true,
5873
+ rejectsBudgetThinking: true,
5856
5874
  rejectsForcedToolUse: true,
5857
5875
  supportsBetweenToolsThinking: false,
5858
5876
  isKnownModel: true
@@ -5864,6 +5882,7 @@ function getModelCapabilities(modelId) {
5864
5882
  rejectsSamplingParameters: true,
5865
5883
  rejectsThinkingDisabledAboveHighEffort: false,
5866
5884
  rejectsThinkingDisabled: true,
5885
+ rejectsBudgetThinking: true,
5867
5886
  rejectsForcedToolUse: false,
5868
5887
  supportsBetweenToolsThinking: false,
5869
5888
  isKnownModel: true
@@ -5875,6 +5894,7 @@ function getModelCapabilities(modelId) {
5875
5894
  rejectsSamplingParameters: true,
5876
5895
  rejectsThinkingDisabledAboveHighEffort: false,
5877
5896
  rejectsThinkingDisabled: false,
5897
+ rejectsBudgetThinking: false,
5878
5898
  rejectsForcedToolUse: false,
5879
5899
  supportsBetweenToolsThinking: false,
5880
5900
  isKnownModel: true
@@ -5886,6 +5906,7 @@ function getModelCapabilities(modelId) {
5886
5906
  rejectsSamplingParameters: false,
5887
5907
  rejectsThinkingDisabledAboveHighEffort: false,
5888
5908
  rejectsThinkingDisabled: false,
5909
+ rejectsBudgetThinking: false,
5889
5910
  rejectsForcedToolUse: false,
5890
5911
  supportsBetweenToolsThinking: false,
5891
5912
  isKnownModel: true
@@ -5897,6 +5918,7 @@ function getModelCapabilities(modelId) {
5897
5918
  rejectsSamplingParameters: false,
5898
5919
  rejectsThinkingDisabledAboveHighEffort: false,
5899
5920
  rejectsThinkingDisabled: false,
5921
+ rejectsBudgetThinking: false,
5900
5922
  rejectsForcedToolUse: false,
5901
5923
  supportsBetweenToolsThinking: false,
5902
5924
  isKnownModel: true
@@ -5908,6 +5930,7 @@ function getModelCapabilities(modelId) {
5908
5930
  rejectsSamplingParameters: false,
5909
5931
  rejectsThinkingDisabledAboveHighEffort: false,
5910
5932
  rejectsThinkingDisabled: false,
5933
+ rejectsBudgetThinking: false,
5911
5934
  rejectsForcedToolUse: false,
5912
5935
  supportsBetweenToolsThinking: false,
5913
5936
  isKnownModel: true
@@ -5919,6 +5942,7 @@ function getModelCapabilities(modelId) {
5919
5942
  rejectsSamplingParameters: false,
5920
5943
  rejectsThinkingDisabledAboveHighEffort: false,
5921
5944
  rejectsThinkingDisabled: false,
5945
+ rejectsBudgetThinking: false,
5922
5946
  rejectsForcedToolUse: false,
5923
5947
  supportsBetweenToolsThinking: false,
5924
5948
  isKnownModel: true
@@ -5930,6 +5954,7 @@ function getModelCapabilities(modelId) {
5930
5954
  rejectsSamplingParameters: false,
5931
5955
  rejectsThinkingDisabledAboveHighEffort: false,
5932
5956
  rejectsThinkingDisabled: false,
5957
+ rejectsBudgetThinking: false,
5933
5958
  rejectsForcedToolUse: false,
5934
5959
  supportsBetweenToolsThinking: false,
5935
5960
  isKnownModel: true
@@ -5941,6 +5966,7 @@ function getModelCapabilities(modelId) {
5941
5966
  rejectsSamplingParameters: false,
5942
5967
  rejectsThinkingDisabledAboveHighEffort: false,
5943
5968
  rejectsThinkingDisabled: false,
5969
+ rejectsBudgetThinking: false,
5944
5970
  rejectsForcedToolUse: false,
5945
5971
  supportsBetweenToolsThinking: false,
5946
5972
  isKnownModel: true
@@ -5952,6 +5978,7 @@ function getModelCapabilities(modelId) {
5952
5978
  rejectsSamplingParameters: false,
5953
5979
  rejectsThinkingDisabledAboveHighEffort: false,
5954
5980
  rejectsThinkingDisabled: false,
5981
+ rejectsBudgetThinking: false,
5955
5982
  rejectsForcedToolUse: false,
5956
5983
  supportsBetweenToolsThinking: false,
5957
5984
  isKnownModel: false
@@ -5963,6 +5990,7 @@ function getModelCapabilities(modelId) {
5963
5990
  rejectsSamplingParameters: true,
5964
5991
  rejectsThinkingDisabledAboveHighEffort: true,
5965
5992
  rejectsThinkingDisabled: false,
5993
+ rejectsBudgetThinking: false,
5966
5994
  rejectsForcedToolUse: false,
5967
5995
  supportsBetweenToolsThinking: false,
5968
5996
  isKnownModel: false
@@ -5974,6 +6002,7 @@ function getModelCapabilities(modelId) {
5974
6002
  rejectsSamplingParameters: false,
5975
6003
  rejectsThinkingDisabledAboveHighEffort: false,
5976
6004
  rejectsThinkingDisabled: false,
6005
+ rejectsBudgetThinking: false,
5977
6006
  rejectsForcedToolUse: false,
5978
6007
  supportsBetweenToolsThinking: false,
5979
6008
  isKnownModel: false