package provider import "fmt" type Registry struct { providers map[string]AgentProvider } func NewRegistry() *Registry { return &Registry{providers: make(map[string]AgentProvider)} } func (r *Registry) Register(p AgentProvider) { r.providers[p.Info().Name] = p } func (r *Registry) Get(name string) (AgentProvider, error) { p, ok := r.providers[name] if !ok { return nil, fmt.Errorf("provider %q not found", name) } return p, nil } func (r *Registry) List() []Info { infos := make([]Info, 0, len(r.providers)) for _, p := range r.providers { infos = append(infos, p.Info()) } return infos }