@@ -77,38 +77,7 @@ func Load(workingDir string, debug bool) (*Config, error) {
7777 return nil, fmt.Errorf("failed to configure providers: %w", err)
7878 }
7979
80− // Test provider connections in parallel
81− var testResults sync.Map
82− var wg sync.WaitGroup
83−
84− go func() {
85− slog.Info("Testing provider connections")
86− defer slog.Info("Provider connection tests completed")
87− for _, p := range cfg.Providers.Seq2() {
88− if p.Type == provider.TypeOpenAI || p.Type == provider.TypeAnthropic {
89− wg.Add(1)
90− go func(provider ProviderConfig) {
91− defer wg.Done()
92− err := provider.TestConnection(cfg.resolver)
93− testResults.Store(provider.ID, err == nil)
94− if err != nil {
95− slog.Error("Provider connection test failed", "provider", provider.ID, "error", err)
96− }
97− }(p)
98− }
99− }
100− wg.Wait()
101−
102− // Remove failed providers
103− testResults.Range(func(key, value any) bool {
104− providerID := key.(string)
105− passed := value.(bool)
106− if !passed {
107− cfg.Providers.Del(providerID)
108− }
109− return true
110− })
111− }()
80+ go cfg.removeUnresponsiveProviders()
11281
11382 if !cfg.IsConfigured() {
11483 slog.Warn("No providers configured")
@@ -122,6 +91,38 @@ func Load(workingDir string, debug bool) (*Config, error) {
12291 return cfg, nil
12392}
12493
94+func (c *Config) removeUnresponsiveProviders() {
95+ // Test provider connections in parallel
96+ var testResults sync.Map
97+ var wg sync.WaitGroup
98+ slog.Info("Testing provider connections")
99+ defer slog.Info("Provider connection tests completed")
100+ for _, p := range c.Providers.Seq2() {
101+ if p.Type == provider.TypeOpenAI || p.Type == provider.TypeAnthropic {
102+ wg.Add(1)
103+ go func(provider ProviderConfig) {
104+ defer wg.Done()
105+ err := provider.TestConnection(c.resolver)
106+ testResults.Store(provider.ID, err == nil)
107+ if err != nil {
108+ slog.Error("Provider connection test failed", "provider", provider.ID, "error", err)
109+ }
110+ }(p)
111+ }
112+ }
113+ wg.Wait()
114+
115+ // Remove failed providers
116+ testResults.Range(func(key, value any) bool {
117+ providerID := key.(string)
118+ passed := value.(bool)
119+ if !passed {
120+ c.Providers.Del(providerID)
121+ }
122+ return true
123+ })
124+}
125+
125126func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []provider.Provider) error {
126127 knownProviderNames := make(map[string]bool)
127128 for _, p := range knownProviders {