Fix provider resitration
Change-Id: I21f223922b60648b5ad9cf0bd61a64a53d4d5aaa
diff --git a/server/llm/registry.go b/server/llm/registry.go
new file mode 100644
index 0000000..f41ffe6
--- /dev/null
+++ b/server/llm/registry.go
@@ -0,0 +1,54 @@
+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)
+}