| 917 | * @param {number} maxTokens Maximum tokens | 917 | * @param {number} maxTokens Maximum tokens |
| 918 | * @param {string} reasoningEffort Reasoning effort | 918 | * @param {string} reasoningEffort Reasoning effort |
| 919 | * @param {boolean} stream If streaming is enabled | 919 | * @param {boolean} stream If streaming is enabled |
| 920 | * @returns {number} Budget tokens | 920 | * @returns {number?} Budget tokens |
| 921 | */ | 921 | */ |
| 922 | export function calculateClaudeBudgetTokens(maxTokens, reasoningEffort, stream) { | 922 | export function calculateClaudeBudgetTokens(maxTokens, reasoningEffort, stream) { |
| 923 | let budgetTokens = 0; | 923 | let budgetTokens = 0; |
| 924 | | 924 | |
| 925 | switch (reasoningEffort) { | 925 | switch (reasoningEffort) { |
| | 926 | case REASONING_EFFORT.auto: |
| | 927 | return null; |
| 926 | case REASONING_EFFORT.min: | 928 | case REASONING_EFFORT.min: |
| 927 | budgetTokens = 1024; | 929 | budgetTokens = 1024; |
| 928 | break; | 930 | break; |
| 929 | case REASONING_EFFORT.low: | 931 | case REASONING_EFFORT.low: |
| 930 | budgetTokens = Math.floor(maxTokens * 0.1); | 932 | budgetTokens = Math.floor(maxTokens * 0.1); |
| 931 | break; | 933 | break; |
| 932 | case REASONING_EFFORT.auto: | | |
| 933 | case REASONING_EFFORT.medium: | 934 | case REASONING_EFFORT.medium: |
| 934 | budgetTokens = Math.floor(maxTokens * 0.25); | 935 | budgetTokens = Math.floor(maxTokens * 0.25); |
| 935 | break; | 936 | break; |