@@ -11,16 +11,22 @@ import { InteractivePrompt } from '../utils/prompt';
1111import { getProviderCatalog , supportsModelConfig , ModelEntry } from './model-catalog' ;
1212import { getProviderSettingsPath , getClaudeEnvVars } from './config-generator' ;
1313import { CLIProxyProvider } from './types' ;
14- import { initUI , color , bold , dim , ok , info , warn , header } from '../utils/ui' ;
14+ import { initUI , color , bold , dim , ok , info , header } from '../utils/ui' ;
1515
1616/**
1717 * Check if model is a Claude model routed via Antigravity
18- * These models don't support thinking toggle due to protocol limitations
18+ * Claude models require MAX_THINKING_TOKENS < 8192 for thinking to work
1919 */
2020function isClaudeModel ( modelId : string ) : boolean {
2121 return modelId . includes ( 'claude' ) ;
2222}
2323
24+ /**
25+ * Max thinking tokens for Claude models via Antigravity
26+ * Must be < 8192 due to Google protocol conversion limitations
27+ */
28+ const CLAUDE_MAX_THINKING_TOKENS = '8191' ;
29+
2430/** CCS directory */
2531const CCS_DIR = path . join ( process . env . HOME || process . env . USERPROFILE || '' , '.ccs' ) ;
2632
@@ -146,15 +152,20 @@ export async function configureProviderModel(
146152 const isClaude = isClaudeModel ( selectedModel ) ;
147153
148154 // CCS-controlled env vars (always override with our values)
149- const ccsControlledEnv = {
150- ANTHROPIC_BASE_URL : baseEnv . ANTHROPIC_BASE_URL ,
151- ANTHROPIC_AUTH_TOKEN : baseEnv . ANTHROPIC_AUTH_TOKEN ,
155+ const ccsControlledEnv : Record < string , string > = {
156+ ANTHROPIC_BASE_URL : baseEnv . ANTHROPIC_BASE_URL || '' ,
157+ ANTHROPIC_AUTH_TOKEN : baseEnv . ANTHROPIC_AUTH_TOKEN || '' ,
152158 ANTHROPIC_MODEL : selectedModel ,
153159 ANTHROPIC_DEFAULT_OPUS_MODEL : selectedModel ,
154160 ANTHROPIC_DEFAULT_SONNET_MODEL : selectedModel ,
155- ANTHROPIC_DEFAULT_HAIKU_MODEL : baseEnv . ANTHROPIC_DEFAULT_HAIKU_MODEL ,
161+ ANTHROPIC_DEFAULT_HAIKU_MODEL : baseEnv . ANTHROPIC_DEFAULT_HAIKU_MODEL || '' ,
156162 } ;
157163
164+ // Claude models require MAX_THINKING_TOKENS < 8192 for thinking to work
165+ if ( isClaude ) {
166+ ccsControlledEnv . MAX_THINKING_TOKENS = CLAUDE_MAX_THINKING_TOKENS ;
167+ }
168+
158169 // Merge: user env vars (preserved) + CCS controlled (override)
159170 const mergedEnv = {
160171 ...existingEnv ,
@@ -167,12 +178,6 @@ export async function configureProviderModel(
167178 env : mergedEnv ,
168179 } ;
169180
170- // Claude models via Antigravity don't support thinking toggle
171- // Always set to false for Claude models (CCS-controlled)
172- if ( isClaude ) {
173- settings . alwaysThinkingEnabled = false ;
174- }
175-
176181 // Ensure CCS directory exists
177182 if ( ! fs . existsSync ( CCS_DIR ) ) {
178183 fs . mkdirSync ( CCS_DIR , { recursive : true } ) ;
@@ -189,12 +194,13 @@ export async function configureProviderModel(
189194 console . error ( ok ( `Model set to: ${ bold ( displayName ) } ` ) ) ;
190195 console . error ( dim ( ` Config saved: ${ settingsPath } ` ) ) ;
191196
192- // Show warning for Claude models about thinking limitation
197+ // Show info for Claude models about thinking token limit
193198 if ( isClaude ) {
194199 console . error ( '' ) ;
195- console . error ( warn ( 'Claude models via Antigravity have limited thinking support.' ) ) ;
196- console . error ( dim ( ' Thinking toggle (Tab) disabled - Google protocol limitation.' ) ) ;
197- console . error ( dim ( ' See: https://github.com/router-for-me/CLIProxyAPI/issues/415' ) ) ;
200+ console . error (
201+ info ( `MAX_THINKING_TOKENS set to ${ CLAUDE_MAX_THINKING_TOKENS } (required < 8192)` )
202+ ) ;
203+ console . error ( dim ( ' Google protocol conversion requires this limit for thinking to work.' ) ) ;
198204 }
199205 console . error ( '' ) ;
200206
0 commit comments