@@ -93,35 +93,34 @@ func Load(workingDir string, debug bool) (*Config, error) {
95func (c *Config) removeUnresponsiveProviders() {
95func (c *Config) removeUnresponsiveProviders() {
96− // Test provider connections in parallel
97− var testResults sync.Map
98− var wg sync.WaitGroup
99 slog.Info("Testing provider connections")
96 slog.Info("Testing provider connections")
100 defer slog.Info("Provider connection tests completed")
97 defer slog.Info("Provider connection tests completed")
99+ // Test provider connections in parallel
100+ var wg sync.WaitGroup
101+ testResults := csync.NewMap[string, bool]()
101 for _, p := range c.Providers.Seq2() {
102 for _, p := range c.Providers.Seq2() {
102− if p.Type == catwalk.TypeOpenAI || p.Type == catwalk.TypeAnthropic {
103+ if p.Type != catwalk.TypeOpenAI && p.Type != catwalk.TypeAnthropic {
103− wg.Add(1)
104+ continue
104− go func(provider ProviderConfig) {
106− err := provider.TestConnection(c.resolver)
107− testResults.Store(provider.ID, err == nil)
109− slog.Error("Provider connection test failed", "provider", provider.ID, "error", err)
107+ go func(provider ProviderConfig) {
109+ err := provider.TestConnection(c.resolver)
110+ testResults.Set(provider.ID, err == nil)
112+ slog.Error("Provider connection test failed", "provider", provider.ID, "error", err)
114 wg.Wait()
116 wg.Wait()
116 // Remove failed providers
118 // Remove failed providers
117− testResults.Range(func(key, value any) bool {
119+ for providerID, passed := range testResults.Seq2() {
118− providerID := key.(string)
119− passed := value.(bool)
120 if !passed {
120 if !passed {
121 c.Providers.Del(providerID)
121 c.Providers.Del(providerID)
127func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []catwalk.Provider) error {
126func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []catwalk.Provider) error {