@@ -36,6 +36,11 @@ func TestConfig_LoadFromBytes(t *testing.T) {
3636 require.Equal(t, "https://api.openai.com/v2", pc.BaseURL)
3737}
3838
39+// testStore wraps a Config in a minimal ConfigStore for testing.
40+func testStore(cfg *Config) *ConfigStore {
41+ return &ConfigStore{config: cfg}
42+}
43+
3944func TestConfig_setDefaults(t *testing.T) {
4045 cfg := &Config{}
4146
@@ -53,7 +58,6 @@ func TestConfig_setDefaults(t *testing.T) {
5358 for _, path := range defaultContextPaths {
5459 require.Contains(t, cfg.Options.ContextPaths, path)
5560 }
56− require.Equal(t, "/tmp", cfg.workingDir)
5761}
5862
5963func TestConfig_configureProviders(t *testing.T) {
@@ -74,7 +78,7 @@ func TestConfig_configureProviders(t *testing.T) {
7478 "OPENAI_API_KEY": "test-key",
7579 })
7680 resolver := NewEnvironmentVariableResolver(env)
77− err := cfg.configureProviders(env, resolver, knownProviders)
81+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
7882 require.NoError(t, err)
7983 require.Equal(t, 1, cfg.Providers.Len())
8084
@@ -117,7 +121,7 @@ func TestConfig_configureProvidersWithOverride(t *testing.T) {
117121 "OPENAI_API_KEY": "test-key",
118122 })
119123 resolver := NewEnvironmentVariableResolver(env)
120− err := cfg.configureProviders(env, resolver, knownProviders)
124+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
121125 require.NoError(t, err)
122126 require.Equal(t, 1, cfg.Providers.Len())
123127
@@ -159,7 +163,7 @@ func TestConfig_configureProvidersWithNewProvider(t *testing.T) {
159163 "OPENAI_API_KEY": "test-key",
160164 })
161165 resolver := NewEnvironmentVariableResolver(env)
162− err := cfg.configureProviders(env, resolver, knownProviders)
166+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
163167 require.NoError(t, err)
164168 // Should be to because of the env variable
165169 require.Equal(t, cfg.Providers.Len(), 2)
@@ -195,7 +199,7 @@ func TestConfig_configureProvidersBedrockWithCredentials(t *testing.T) {
195199 "AWS_SECRET_ACCESS_KEY": "test-secret-key",
196200 })
197201 resolver := NewEnvironmentVariableResolver(env)
198− err := cfg.configureProviders(env, resolver, knownProviders)
202+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
199203 require.NoError(t, err)
200204 require.Equal(t, cfg.Providers.Len(), 1)
201205
@@ -221,7 +225,7 @@ func TestConfig_configureProvidersBedrockWithoutCredentials(t *testing.T) {
221225 cfg.setDefaults("/tmp", "")
222226 env := env.NewFromMap(map[string]string{})
223227 resolver := NewEnvironmentVariableResolver(env)
224− err := cfg.configureProviders(env, resolver, knownProviders)
228+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
225229 require.NoError(t, err)
226230 // Provider should not be configured without credentials
227231 require.Equal(t, cfg.Providers.Len(), 0)
@@ -246,7 +250,7 @@ func TestConfig_configureProvidersBedrockWithoutUnsupportedModel(t *testing.T) {
246250 "AWS_SECRET_ACCESS_KEY": "test-secret-key",
247251 })
248252 resolver := NewEnvironmentVariableResolver(env)
249− err := cfg.configureProviders(env, resolver, knownProviders)
253+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
250254 require.Error(t, err)
251255}
252256
@@ -269,7 +273,7 @@ func TestConfig_configureProvidersVertexAIWithCredentials(t *testing.T) {
269273 "VERTEXAI_LOCATION": "us-central1",
270274 })
271275 resolver := NewEnvironmentVariableResolver(env)
272− err := cfg.configureProviders(env, resolver, knownProviders)
276+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
273277 require.NoError(t, err)
274278 require.Equal(t, cfg.Providers.Len(), 1)
275279
@@ -301,7 +305,7 @@ func TestConfig_configureProvidersVertexAIWithoutCredentials(t *testing.T) {
301305 "GOOGLE_CLOUD_LOCATION": "us-central1",
302306 })
303307 resolver := NewEnvironmentVariableResolver(env)
304− err := cfg.configureProviders(env, resolver, knownProviders)
308+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
305309 require.NoError(t, err)
306310 // Provider should not be configured without proper credentials
307311 require.Equal(t, cfg.Providers.Len(), 0)
@@ -326,7 +330,7 @@ func TestConfig_configureProvidersVertexAIMissingProject(t *testing.T) {
326330 "GOOGLE_CLOUD_LOCATION": "us-central1",
327331 })
328332 resolver := NewEnvironmentVariableResolver(env)
329− err := cfg.configureProviders(env, resolver, knownProviders)
333+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
330334 require.NoError(t, err)
331335 // Provider should not be configured without project
332336 require.Equal(t, cfg.Providers.Len(), 0)
@@ -350,7 +354,7 @@ func TestConfig_configureProvidersSetProviderID(t *testing.T) {
350354 "OPENAI_API_KEY": "test-key",
351355 })
352356 resolver := NewEnvironmentVariableResolver(env)
353− err := cfg.configureProviders(env, resolver, knownProviders)
357+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
354358 require.NoError(t, err)
355359 require.Equal(t, cfg.Providers.Len(), 1)
356360
@@ -541,7 +545,7 @@ func TestConfig_configureProvidersWithDisabledProvider(t *testing.T) {
541545 "OPENAI_API_KEY": "test-key",
542546 })
543547 resolver := NewEnvironmentVariableResolver(env)
544− err := cfg.configureProviders(env, resolver, knownProviders)
548+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
545549 require.NoError(t, err)
546550
547551 require.Equal(t, cfg.Providers.Len(), 1)
@@ -569,7 +573,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
569573
570574 env := env.NewFromMap(map[string]string{})
571575 resolver := NewEnvironmentVariableResolver(env)
572− err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
576+ err := cfg.configureProviders(testStore(cfg), env, resolver, []catwalk.Provider{})
573577 require.NoError(t, err)
574578
575579 require.Equal(t, cfg.Providers.Len(), 1)
@@ -592,7 +596,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
592596
593597 env := env.NewFromMap(map[string]string{})
594598 resolver := NewEnvironmentVariableResolver(env)
595− err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
599+ err := cfg.configureProviders(testStore(cfg), env, resolver, []catwalk.Provider{})
596600 require.NoError(t, err)
597601
598602 require.Equal(t, cfg.Providers.Len(), 0)
@@ -614,7 +618,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
614618
615619 env := env.NewFromMap(map[string]string{})
616620 resolver := NewEnvironmentVariableResolver(env)
617− err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
621+ err := cfg.configureProviders(testStore(cfg), env, resolver, []catwalk.Provider{})
618622 require.NoError(t, err)
619623
620624 require.Equal(t, cfg.Providers.Len(), 0)
@@ -639,7 +643,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
639643
640644 env := env.NewFromMap(map[string]string{})
641645 resolver := NewEnvironmentVariableResolver(env)
642− err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
646+ err := cfg.configureProviders(testStore(cfg), env, resolver, []catwalk.Provider{})
643647 require.NoError(t, err)
644648
645649 require.Equal(t, cfg.Providers.Len(), 0)
@@ -664,7 +668,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
664668
665669 env := env.NewFromMap(map[string]string{})
666670 resolver := NewEnvironmentVariableResolver(env)
667− err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
671+ err := cfg.configureProviders(testStore(cfg), env, resolver, []catwalk.Provider{})
668672 require.NoError(t, err)
669673
670674 require.Equal(t, cfg.Providers.Len(), 1)
@@ -692,7 +696,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
692696
693697 env := env.NewFromMap(map[string]string{})
694698 resolver := NewEnvironmentVariableResolver(env)
695− err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
699+ err := cfg.configureProviders(testStore(cfg), env, resolver, []catwalk.Provider{})
696700 require.NoError(t, err)
697701
698702 require.Equal(t, cfg.Providers.Len(), 1)
@@ -722,7 +726,7 @@ func TestConfig_configureProvidersCustomProviderValidation(t *testing.T) {
722726
723727 env := env.NewFromMap(map[string]string{})
724728 resolver := NewEnvironmentVariableResolver(env)
725− err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
729+ err := cfg.configureProviders(testStore(cfg), env, resolver, []catwalk.Provider{})
726730 require.NoError(t, err)
727731
728732 require.Equal(t, cfg.Providers.Len(), 0)
@@ -757,7 +761,7 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
757761 "GOOGLE_GENAI_USE_VERTEXAI": "false",
758762 })
759763 resolver := NewEnvironmentVariableResolver(env)
760− err := cfg.configureProviders(env, resolver, knownProviders)
764+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
761765 require.NoError(t, err)
762766
763767 require.Equal(t, cfg.Providers.Len(), 0)
@@ -788,7 +792,7 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
788792
789793 env := env.NewFromMap(map[string]string{})
790794 resolver := NewEnvironmentVariableResolver(env)
791− err := cfg.configureProviders(env, resolver, knownProviders)
795+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
792796 require.NoError(t, err)
793797
794798 require.Equal(t, cfg.Providers.Len(), 0)
@@ -819,7 +823,7 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
819823
820824 env := env.NewFromMap(map[string]string{})
821825 resolver := NewEnvironmentVariableResolver(env)
822− err := cfg.configureProviders(env, resolver, knownProviders)
826+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
823827 require.NoError(t, err)
824828
825829 require.Equal(t, cfg.Providers.Len(), 0)
@@ -852,7 +856,7 @@ func TestConfig_configureProvidersEnhancedCredentialValidation(t *testing.T) {
852856 "OPENAI_API_KEY": "test-key",
853857 })
854858 resolver := NewEnvironmentVariableResolver(env)
855− err := cfg.configureProviders(env, resolver, knownProviders)
859+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
856860 require.NoError(t, err)
857861
858862 require.Equal(t, cfg.Providers.Len(), 1)
@@ -886,7 +890,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
886890 cfg.setDefaults("/tmp", "")
887891 env := env.NewFromMap(map[string]string{})
888892 resolver := NewEnvironmentVariableResolver(env)
889− err := cfg.configureProviders(env, resolver, knownProviders)
893+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
890894 require.NoError(t, err)
891895
892896 large, small, err := cfg.defaultModelSelection(knownProviders)
@@ -922,7 +926,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
922926 cfg.setDefaults("/tmp", "")
923927 env := env.NewFromMap(map[string]string{})
924928 resolver := NewEnvironmentVariableResolver(env)
925− err := cfg.configureProviders(env, resolver, knownProviders)
929+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
926930 require.NoError(t, err)
927931
928932 _, _, err = cfg.defaultModelSelection(knownProviders)
@@ -952,7 +956,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
952956 cfg.setDefaults("/tmp", "")
953957 env := env.NewFromMap(map[string]string{})
954958 resolver := NewEnvironmentVariableResolver(env)
955− err := cfg.configureProviders(env, resolver, knownProviders)
959+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
956960 require.NoError(t, err)
957961 _, _, err = cfg.defaultModelSelection(knownProviders)
958962 require.Error(t, err)
@@ -995,7 +999,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
995999 cfg.setDefaults("/tmp", "")
9961000 env := env.NewFromMap(map[string]string{})
9971001 resolver := NewEnvironmentVariableResolver(env)
998− err := cfg.configureProviders(env, resolver, knownProviders)
1002+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
9991003 require.NoError(t, err)
10001004 large, small, err := cfg.defaultModelSelection(knownProviders)
10011005 require.NoError(t, err)
@@ -1039,7 +1043,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
10391043 cfg.setDefaults("/tmp", "")
10401044 env := env.NewFromMap(map[string]string{})
10411045 resolver := NewEnvironmentVariableResolver(env)
1042− err := cfg.configureProviders(env, resolver, knownProviders)
1046+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
10431047 require.NoError(t, err)
10441048 _, _, err = cfg.defaultModelSelection(knownProviders)
10451049 require.Error(t, err)
@@ -1081,7 +1085,7 @@ func TestConfig_defaultModelSelection(t *testing.T) {
10811085 cfg.setDefaults("/tmp", "")
10821086 env := env.NewFromMap(map[string]string{})
10831087 resolver := NewEnvironmentVariableResolver(env)
1084− err := cfg.configureProviders(env, resolver, knownProviders)
1088+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
10851089 require.NoError(t, err)
10861090 large, small, err := cfg.defaultModelSelection(knownProviders)
10871091 require.NoError(t, err)
@@ -1126,7 +1130,7 @@ func TestConfig_configureProvidersDisableDefaultProviders(t *testing.T) {
11261130 "OPENAI_API_KEY": "test-key",
11271131 })
11281132 resolver := NewEnvironmentVariableResolver(env)
1129− err := cfg.configureProviders(env, resolver, knownProviders)
1133+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
11301134 require.ErrorContains(t, err, "no custom providers")
11311135
11321136 // openai should NOT be present because it lacks base_url and models.
@@ -1169,7 +1173,7 @@ func TestConfig_configureProvidersDisableDefaultProviders(t *testing.T) {
11691173 "OPENAI_API_KEY": "test-key",
11701174 })
11711175 resolver := NewEnvironmentVariableResolver(env)
1172− err := cfg.configureProviders(env, resolver, knownProviders)
1176+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
11731177 require.NoError(t, err)
11741178
11751179 // Only fully specified provider should be present.
@@ -1223,7 +1227,7 @@ func TestConfig_configureProvidersDisableDefaultProviders(t *testing.T) {
12231227 "ANTHROPIC_API_KEY": "test-key",
12241228 })
12251229 resolver := NewEnvironmentVariableResolver(env)
1226− err := cfg.configureProviders(env, resolver, knownProviders)
1230+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
12271231 require.NoError(t, err)
12281232
12291233 // Both providers should be present.
@@ -1251,7 +1255,7 @@ func TestConfig_configureProvidersDisableDefaultProviders(t *testing.T) {
12511255
12521256 env := env.NewFromMap(map[string]string{})
12531257 resolver := NewEnvironmentVariableResolver(env)
1254− err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
1258+ err := cfg.configureProviders(testStore(cfg), env, resolver, []catwalk.Provider{})
12551259 require.ErrorContains(t, err, "no custom providers")
12561260
12571261 // Provider should be rejected for missing models.
@@ -1275,7 +1279,7 @@ func TestConfig_configureProvidersDisableDefaultProviders(t *testing.T) {
12751279
12761280 env := env.NewFromMap(map[string]string{})
12771281 resolver := NewEnvironmentVariableResolver(env)
1278− err := cfg.configureProviders(env, resolver, []catwalk.Provider{})
1282+ err := cfg.configureProviders(testStore(cfg), env, resolver, []catwalk.Provider{})
12791283 require.ErrorContains(t, err, "no custom providers")
12801284
12811285 // Provider should be rejected for missing base_url.
@@ -1340,10 +1344,10 @@ func TestConfig_configureSelectedModels(t *testing.T) {
13401344 cfg.setDefaults("/tmp", "")
13411345 env := env.NewFromMap(map[string]string{})
13421346 resolver := NewEnvironmentVariableResolver(env)
1343− err := cfg.configureProviders(env, resolver, knownProviders)
1347+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
13441348 require.NoError(t, err)
13451349
1346− err = cfg.configureSelectedModels(knownProviders)
1350+ err = configureSelectedModels(testStore(cfg), knownProviders)
13471351 require.NoError(t, err)
13481352 large := cfg.Models[SelectedModelTypeLarge]
13491353 small := cfg.Models[SelectedModelTypeSmall]
@@ -1402,10 +1406,10 @@ func TestConfig_configureSelectedModels(t *testing.T) {
14021406 cfg.setDefaults("/tmp", "")
14031407 env := env.NewFromMap(map[string]string{})
14041408 resolver := NewEnvironmentVariableResolver(env)
1405− err := cfg.configureProviders(env, resolver, knownProviders)
1409+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
14061410 require.NoError(t, err)
14071411
1408− err = cfg.configureSelectedModels(knownProviders)
1412+ err = configureSelectedModels(testStore(cfg), knownProviders)
14091413 require.NoError(t, err)
14101414 large := cfg.Models[SelectedModelTypeLarge]
14111415 small := cfg.Models[SelectedModelTypeSmall]
@@ -1447,10 +1451,10 @@ func TestConfig_configureSelectedModels(t *testing.T) {
14471451 cfg.setDefaults("/tmp", "")
14481452 env := env.NewFromMap(map[string]string{})
14491453 resolver := NewEnvironmentVariableResolver(env)
1450− err := cfg.configureProviders(env, resolver, knownProviders)
1454+ err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
14511455 require.NoError(t, err)
14521456
1453− err = cfg.configureSelectedModels(knownProviders)
1457+ err = configureSelectedModels(testStore(cfg), knownProviders)
14541458 require.NoError(t, err)
14551459 large := cfg.Models[SelectedModelTypeLarge]
14561460 require.Equal(t, "large-model", large.Model)