Class: RosettAi::Ui::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/rosett_ai/ui/registry.rb

Overview

Discovers and manages installed UI plugins.

Plugins register themselves via RosettAi::Ui::Registry.register. The registry selects the appropriate adapter at runtime based on user preference or available plugins.

Class Method Summary collapse

Class Method Details

.availableArray<Symbol>

List all available UI adapter names.

Returns:

  • (Array<Symbol>)


45
46
47
# File 'lib/rosett_ai/ui/registry.rb', line 45

def available
  @adapters.keys
end

.register(name, adapter_class) ⇒ void

This method returns an undefined value.

Register a new UI backend adapter.

Parameters:

  • name (Symbol, String)

    adapter identifier

  • adapter_class (Class)

    the adapter class



22
23
24
# File 'lib/rosett_ai/ui/registry.rb', line 22

def register(name, adapter_class)
  @adapters[name.to_sym] = adapter_class
end

.registered?(name) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/rosett_ai/ui/registry.rb', line 49

def registered?(name)
  @adapters.key?(name.to_sym)
end

.reset!void

This method returns an undefined value.

Clear all registered UI backends.



56
57
58
# File 'lib/rosett_ai/ui/registry.rb', line 56

def reset!
  @adapters = {}
end

.resolve(name = nil) ⇒ Object

Resolve a UI adapter by name, or use the default.

Parameters:

  • name (Symbol, String, nil) (defaults to: nil)

    adapter name, or nil for default

Returns:

  • (Object)

    instantiated adapter



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/rosett_ai/ui/registry.rb', line 30

def resolve(name = nil)
  key = name&.to_sym || default_adapter
  adapter_class = @adapters[key]

  unless adapter_class
    available = @adapters.keys.join(', ')
    raise RosettAi::Error, "Unknown UI adapter '#{key}'. Available: #{available}"
  end

  adapter_class.new
end