Fix provider resitration

Change-Id: I21f223922b60648b5ad9cf0bd61a64a53d4d5aaa
diff --git a/server/llm/providers/providers.go b/server/llm/providers/providers.go
new file mode 100644
index 0000000..87015aa
--- /dev/null
+++ b/server/llm/providers/providers.go
@@ -0,0 +1,19 @@
+package providers
+
+import (
+	_ "github.com/iomodo/staff/llm/openai" // Register OpenAI provider
+)
+
+// RegisterAll registers all available LLM providers
+func RegisterAll() {
+	// Import all provider packages to trigger their init() functions
+	// This ensures all providers are registered when this package is imported
+	_ = "import all providers"
+}
+
+// EnsureRegistered ensures all providers are registered
+// This function can be called from anywhere to ensure providers are available
+func EnsureRegistered() {
+	// The blank imports below will trigger the init() functions
+	// which register the providers with the LLM factory
+}
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)
+}
diff --git a/server/server/server.go b/server/server/server.go
index 920d180..b9fcfc7 100644
--- a/server/server/server.go
+++ b/server/server/server.go
@@ -13,7 +13,7 @@
 	"github.com/iomodo/staff/agent"
 	"github.com/iomodo/staff/git"
 	"github.com/iomodo/staff/llm"
-	_ "github.com/iomodo/staff/llm/openai" // Register OpenAI provider
+	_ "github.com/iomodo/staff/llm/providers" // Auto-register all providers
 	"github.com/iomodo/staff/tm/git_tm"
 	"github.com/joho/godotenv"
 	"golang.org/x/text/cases"