@@ -77,38 +77,7 @@ func Load(workingDir string, debug bool) (*Config, error) {
77 return nil, fmt.Errorf("failed to configure providers: %w", err)
77 return nil, fmt.Errorf("failed to configure providers: %w", err)
80− // Test provider connections in parallel
80+ go cfg.removeUnresponsiveProviders()
81− var testResults sync.Map
82− var wg sync.WaitGroup
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 {
90− go func(provider ProviderConfig) {
92− err := provider.TestConnection(cfg.resolver)
93− testResults.Store(provider.ID, err == nil)
95− slog.Error("Provider connection test failed", "provider", provider.ID, "error", err)
102− // Remove failed providers
103− testResults.Range(func(key, value any) bool {
104− providerID := key.(string)
105− passed := value.(bool)
107− cfg.Providers.Del(providerID)
113 if !cfg.IsConfigured() {
82 if !cfg.IsConfigured() {
114 slog.Warn("No providers configured")
83 slog.Warn("No providers configured")
@@ -122,6 +91,38 @@ func Load(workingDir string, debug bool) (*Config, error) {
122 return cfg, nil
91 return cfg, nil
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 {
103+ go func(provider ProviderConfig) {
105+ err := provider.TestConnection(c.resolver)
106+ testResults.Store(provider.ID, err == nil)
108+ slog.Error("Provider connection test failed", "provider", provider.ID, "error", err)
115+ // Remove failed providers
116+ testResults.Range(func(key, value any) bool {
117+ providerID := key.(string)
118+ passed := value.(bool)
120+ c.Providers.Del(providerID)
125func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []provider.Provider) error {
126func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []provider.Provider) error {
126 knownProviderNames := make(map[string]bool)
127 knownProviderNames := make(map[string]bool)
127 for _, p := range knownProviders {
128 for _, p := range knownProviders {