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)
+}