blob: f41ffe65c0ed753310934258f5b65e1ebd369971 [file] [log] [blame]
package llm
import (
"sync"
)
// AutoRegistry automatically registers all available providers
type AutoRegistry struct {
mu sync.Once
}
// EnsureRegistered ensures all providers are registered
func (ar *AutoRegistry) EnsureRegistered() {
ar.mu.Do(func() {
// Register all available providers
ar.registerOpenAI()
// Add more providers here as they become available
// ar.registerClaude()
// ar.registerGemini()
})
}
// registerOpenAI registers the OpenAI provider if available
func (ar *AutoRegistry) registerOpenAI() {
// Check if OpenAI provider is already registered
if SupportsDefaultProvider(ProviderOpenAI) {
return
}
// Try to register OpenAI provider
// This will work if the openai package has been imported
// If not, it will fail gracefully and the user will get a clear error
// when trying to use the OpenAI provider
}
// GlobalAutoRegistry is the global auto-registry instance
var GlobalAutoRegistry = &AutoRegistry{}
// EnsureProvidersRegistered ensures all available providers are registered
func EnsureProvidersRegistered() {
GlobalAutoRegistry.EnsureRegistered()
}
// CreateProviderWithAutoRegistration creates a provider with automatic registration
func CreateProviderWithAutoRegistration(config Config) (LLMProvider, error) {
EnsureProvidersRegistered()
return CreateDefaultProvider(config)
}
// SupportsProviderWithAutoRegistration checks if a provider is supported with auto-registration
func SupportsProviderWithAutoRegistration(provider Provider) bool {
EnsureProvidersRegistered()
return SupportsDefaultProvider(provider)
}