Class: AgentHarness::Providers::Registry

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/agent_harness/providers/registry.rb

Overview

Registry for provider classes

Manages registration and lookup of provider classes. Supports dynamic registration of custom providers and aliasing of provider names.

Examples:

Registering a custom provider

AgentHarness::Providers::Registry.instance.register(:my_provider, MyProviderClass)

Looking up a provider

klass = AgentHarness::Providers::Registry.instance.get(:claude)

Instance Method Summary collapse

Constructor Details

#initializeRegistry

Returns a new instance of Registry.



20
21
22
23
24
# File 'lib/agent_harness/providers/registry.rb', line 20

def initialize
  @providers = {}
  @aliases = {}
  @builtin_registered = false
end

Instance Method Details

#allArray<Symbol>

List all registered provider names

Returns:

  • (Array<Symbol>)

    provider names



69
70
71
72
# File 'lib/agent_harness/providers/registry.rb', line 69

def all
  ensure_builtin_providers_registered
  @providers.keys
end

#availableArray<Symbol>

List available providers (CLI installed)

Returns:

  • (Array<Symbol>)

    available provider names



77
78
79
80
# File 'lib/agent_harness/providers/registry.rb', line 77

def available
  ensure_builtin_providers_registered
  @providers.select { |_, klass| klass.available? }.keys
end

#get(name) ⇒ Class

Get provider class by name

Parameters:

  • name (Symbol, String)

    the provider name

Returns:

  • (Class)

    the provider class

Raises:



50
51
52
53
54
# File 'lib/agent_harness/providers/registry.rb', line 50

def get(name)
  ensure_builtin_providers_registered
  name = resolve_alias(name.to_sym)
  @providers[name] || raise(ConfigurationError, "Unknown provider: #{name}")
end

#register(name, klass, aliases: []) ⇒ void

This method returns an undefined value.

Register a provider class

Parameters:

  • name (Symbol, String)

    the provider name

  • klass (Class)

    the provider class

  • aliases (Array<Symbol, String>) (defaults to: [])

    alternative names



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/agent_harness/providers/registry.rb', line 32

def register(name, klass, aliases: [])
  name = name.to_sym
  validate_provider_class!(klass)

  @providers[name] = klass

  aliases.each do |alias_name|
    @aliases[alias_name.to_sym] = name
  end

  AgentHarness.logger&.debug("[AgentHarness::Registry] Registered provider: #{name}")
end

#registered?(name) ⇒ Boolean

Check if provider is registered

Parameters:

  • name (Symbol, String)

    the provider name

Returns:

  • (Boolean)

    true if registered



60
61
62
63
64
# File 'lib/agent_harness/providers/registry.rb', line 60

def registered?(name)
  ensure_builtin_providers_registered
  name = resolve_alias(name.to_sym)
  @providers.key?(name)
end

#reset!void

This method returns an undefined value.

Reset registry (useful for testing)



85
86
87
88
89
# File 'lib/agent_harness/providers/registry.rb', line 85

def reset!
  @providers.clear
  @aliases.clear
  @builtin_registered = false
end