From 7f10a030744571179aa197cbe87323009e72e7d5 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Tue, 22 Jul 2025 16:56:42 -0300 Subject: [PATCH] fix: improvements --- internal/config/load.go | 65 +++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/internal/config/load.go b/internal/config/load.go index 09d65e5391b94a1f80b15e7e576ba5d3e38ef19d..c05861a2431303591274568502ae090fde71a4dd 100644 --- a/internal/config/load.go +++ b/internal/config/load.go @@ -77,38 +77,7 @@ func Load(workingDir string, debug bool) (*Config, error) { return nil, fmt.Errorf("failed to configure providers: %w", err) } - // Test provider connections in parallel - var testResults sync.Map - var wg sync.WaitGroup - - go func() { - slog.Info("Testing provider connections") - defer slog.Info("Provider connection tests completed") - for _, p := range cfg.Providers.Seq2() { - if p.Type == provider.TypeOpenAI || p.Type == provider.TypeAnthropic { - wg.Add(1) - go func(provider ProviderConfig) { - defer wg.Done() - err := provider.TestConnection(cfg.resolver) - testResults.Store(provider.ID, err == nil) - if err != nil { - slog.Error("Provider connection test failed", "provider", provider.ID, "error", err) - } - }(p) - } - } - wg.Wait() - - // Remove failed providers - testResults.Range(func(key, value any) bool { - providerID := key.(string) - passed := value.(bool) - if !passed { - cfg.Providers.Del(providerID) - } - return true - }) - }() + go cfg.removeUnresponsiveProviders() if !cfg.IsConfigured() { slog.Warn("No providers configured") @@ -122,6 +91,38 @@ func Load(workingDir string, debug bool) (*Config, error) { return cfg, nil } +func (c *Config) removeUnresponsiveProviders() { + // Test provider connections in parallel + var testResults sync.Map + var wg sync.WaitGroup + slog.Info("Testing provider connections") + defer slog.Info("Provider connection tests completed") + for _, p := range c.Providers.Seq2() { + if p.Type == provider.TypeOpenAI || p.Type == provider.TypeAnthropic { + wg.Add(1) + go func(provider ProviderConfig) { + defer wg.Done() + err := provider.TestConnection(c.resolver) + testResults.Store(provider.ID, err == nil) + if err != nil { + slog.Error("Provider connection test failed", "provider", provider.ID, "error", err) + } + }(p) + } + } + wg.Wait() + + // Remove failed providers + testResults.Range(func(key, value any) bool { + providerID := key.(string) + passed := value.(bool) + if !passed { + c.Providers.Del(providerID) + } + return true + }) +} + func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []provider.Provider) error { knownProviderNames := make(map[string]bool) for _, p := range knownProviders {