@@ -60,6 +60,12 @@ pub struct Configuration {
6060 /// Default Haiku model name
6161 #[ serde( skip_serializing_if = "Option::is_none" ) ]
6262 pub anthropic_default_haiku_model : Option < String > ,
63+ /// Enable experimental agent teams flag
64+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
65+ pub claude_code_experimental_agent_teams : Option < u32 > ,
66+ /// Disable 1M context limit flag
67+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
68+ pub claude_code_disable_1m_context : Option < u32 > ,
6369}
6470
6571impl Configuration {
@@ -77,6 +83,8 @@ impl Configuration {
7783 "ANTHROPIC_MAX_THINKING_TOKENS" ,
7884 "API_TIMEOUT_MS" ,
7985 "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC" ,
86+ "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS" ,
87+ "CLAUDE_CODE_DISABLE_1M_CONTEXT" ,
8088 "ANTHROPIC_DEFAULT_SONNET_MODEL" ,
8189 "ANTHROPIC_DEFAULT_OPUS_MODEL" ,
8290 "ANTHROPIC_DEFAULT_HAIKU_MODEL" ,
@@ -104,12 +112,14 @@ mod tests {
104112 "ANTHROPIC_DEFAULT_SONNET_MODEL" ,
105113 "ANTHROPIC_DEFAULT_OPUS_MODEL" ,
106114 "ANTHROPIC_DEFAULT_HAIKU_MODEL" ,
115+ "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS" ,
116+ "CLAUDE_CODE_DISABLE_1M_CONTEXT" ,
107117 ] ;
108118
109119 assert_eq ! (
110120 fields. len( ) ,
111121 expected_fields. len( ) ,
112- "Should have exactly 10 fields"
122+ "Should have exactly 12 fields"
113123 ) ;
114124
115125 for expected_field in expected_fields {
@@ -204,6 +214,85 @@ mod tests {
204214 anthropic_default_sonnet_model : Some ( "new_sonnet" . to_string ( ) ) ,
205215 anthropic_default_opus_model : Some ( "new_opus" . to_string ( ) ) ,
206216 anthropic_default_haiku_model : Some ( "new_haiku" . to_string ( ) ) ,
217+ claude_code_experimental_agent_teams : None ,
218+ claude_code_disable_1m_context : None ,
219+ } ;
220+
221+ // Switch to new configuration
222+ settings. switch_to_config ( & config) ;
223+
224+ // Verify the required fields are set correctly
225+ assert_eq ! (
226+ settings. env. get( "ANTHROPIC_AUTH_TOKEN" ) ,
227+ Some ( & "new_token" . to_string( ) )
228+ ) ;
229+ assert_eq ! (
230+ settings. env. get( "ANTHROPIC_BASE_URL" ) ,
231+ Some ( & "https://api.new.com" . to_string( ) )
232+ ) ;
233+ assert_eq ! (
234+ settings. env. get( "ANTHROPIC_MODEL" ) ,
235+ Some ( & "new_model" . to_string( ) )
236+ ) ;
237+ assert_eq ! (
238+ settings. env. get( "ANTHROPIC_SMALL_FAST_MODEL" ) ,
239+ Some ( & "new_fast_model" . to_string( ) )
240+ ) ;
241+
242+ // Verify additional fields are set correctly when provided in config
243+ assert_eq ! (
244+ settings. env. get( "ANTHROPIC_MAX_THINKING_TOKENS" ) ,
245+ Some ( & "50000" . to_string( ) )
246+ ) ;
247+ assert_eq ! (
248+ settings. env. get( "API_TIMEOUT_MS" ) ,
249+ Some ( & "300000" . to_string( ) )
250+ ) ;
251+ assert_eq ! (
252+ settings. env. get( "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC" ) ,
253+ Some ( & "1" . to_string( ) )
254+ ) ;
255+ assert_eq ! (
256+ settings. env. get( "ANTHROPIC_DEFAULT_SONNET_MODEL" ) ,
257+ Some ( & "new_sonnet" . to_string( ) )
258+ ) ;
259+ assert_eq ! (
260+ settings. env. get( "ANTHROPIC_DEFAULT_OPUS_MODEL" ) ,
261+ Some ( & "new_opus" . to_string( ) )
262+ ) ;
263+ assert_eq ! (
264+ settings. env. get( "ANTHROPIC_DEFAULT_HAIKU_MODEL" ) ,
265+ Some ( & "new_haiku" . to_string( ) )
266+ ) ;
267+ }
268+
269+ #[ test]
270+ fn test_switch_to_config_removes_optional_fields_when_not_provided ( ) {
271+ let mut settings = ClaudeSettings :: default ( ) ;
272+
273+ // Add all possible environment variables with old values
274+ let env_fields = Configuration :: get_env_field_names ( ) ;
275+ for field in & env_fields {
276+ settings
277+ . env
278+ . insert ( field. to_string ( ) , "old_value" . to_string ( ) ) ;
279+ }
280+
281+ // Create a test configuration without optional fields
282+ let config = Configuration {
283+ alias_name : "test" . to_string ( ) ,
284+ token : "new_token" . to_string ( ) ,
285+ url : "https://api.new.com" . to_string ( ) ,
286+ model : Some ( "new_model" . to_string ( ) ) ,
287+ small_fast_model : Some ( "new_fast_model" . to_string ( ) ) ,
288+ max_thinking_tokens : None ,
289+ api_timeout_ms : None ,
290+ claude_code_disable_nonessential_traffic : None ,
291+ anthropic_default_sonnet_model : None ,
292+ anthropic_default_opus_model : None ,
293+ anthropic_default_haiku_model : None ,
294+ claude_code_experimental_agent_teams : None ,
295+ claude_code_disable_1m_context : None ,
207296 } ;
208297
209298 // Switch to new configuration
@@ -227,7 +316,7 @@ mod tests {
227316 Some ( & "new_fast_model" . to_string( ) )
228317 ) ;
229318
230- // Verify fields not set in the config are removed ( not just left with old values)
319+ // Verify optional fields are removed when not provided in config
231320 assert ! ( !settings. env. contains_key( "ANTHROPIC_MAX_THINKING_TOKENS" ) ) ;
232321 assert ! ( !settings. env. contains_key( "API_TIMEOUT_MS" ) ) ;
233322 assert ! (
0 commit comments