This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/server/providers/registry.go
2026-02-19 15:03:20 +00:00

50 lines
892 B
Go

package providers
import (
"fmt"
"sync"
)
// registry holds all registered providers.
var (
registry = make(map[string]Provider)
mu sync.RWMutex
)
// Register adds a provider to the registry.
func Register(p Provider) {
mu.Lock()
defer mu.Unlock()
registry[p.ID()] = p
}
// Get returns a provider by ID.
func Get(id string) (Provider, error) {
mu.RLock()
defer mu.RUnlock()
p, ok := registry[id]
if !ok {
return nil, fmt.Errorf("unknown provider: %s", id)
}
return p, nil
}
// List returns all registered provider IDs.
func List() []string {
mu.RLock()
defer mu.RUnlock()
ids := make([]string, 0, len(registry))
for id := range registry {
ids = append(ids, id)
}
return ids
}
// Init registers all built-in providers.
func Init() {
Register(&OpenAIProvider{})
Register(&AnthropicProvider{})
Register(&VeniceProvider{})
Register(&OpenRouterProvider{})
}