Class: AgentHarness::Orchestration::Conductor

Inherits:
Object
  • Object
show all
Defined in:
lib/agent_harness/orchestration/conductor.rb

Overview

Main orchestration entry point

Provides a simple interface for sending messages while managing provider selection, fallback, retries, and error handling internally.

Examples:

Basic usage

conductor = AgentHarness::Orchestration::Conductor.new
response = conductor.send_message("Hello, world!")

With explicit provider

response = conductor.send_message("Hello", provider: :gemini)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config: nil) ⇒ Conductor

Create a new conductor

Parameters:

  • config (Configuration, nil) (defaults to: nil)

    configuration object



22
23
24
25
26
# File 'lib/agent_harness/orchestration/conductor.rb', line 22

def initialize(config: nil)
  @config = config || AgentHarness.configuration
  @provider_manager = ProviderManager.new(@config)
  @metrics = Metrics.new
end

Instance Attribute Details

#metricsObject (readonly)

Returns the value of attribute metrics.



17
18
19
# File 'lib/agent_harness/orchestration/conductor.rb', line 17

def metrics
  @metrics
end

#provider_managerObject (readonly)

Returns the value of attribute provider_manager.



17
18
19
# File 'lib/agent_harness/orchestration/conductor.rb', line 17

def provider_manager
  @provider_manager
end

Instance Method Details

#execute_direct(prompt, provider:, **options) ⇒ Response

Execute with explicit provider (bypass orchestration)

Parameters:

  • prompt (String)

    the prompt to send

  • provider (Symbol)

    the provider to use

  • options (Hash)

    additional options

Returns:



53
54
55
56
# File 'lib/agent_harness/orchestration/conductor.rb', line 53

def execute_direct(prompt, provider:, **options)
  provider_instance = @provider_manager.get_provider(provider)
  provider_instance.send_message(prompt: prompt, **options)
end

#reset!void

This method returns an undefined value.

Reset all orchestration state



73
74
75
76
# File 'lib/agent_harness/orchestration/conductor.rb', line 73

def reset!
  @provider_manager.reset!
  @metrics.reset!
end

#send_message(prompt, provider: nil, model: nil, **options) ⇒ Response

Send a message with full orchestration

Handles provider selection, fallback, retries, circuit breakers, and error handling transparently.

Parameters:

  • prompt (String)

    the prompt to send

  • provider (Symbol, nil) (defaults to: nil)

    preferred provider

  • model (String, nil) (defaults to: nil)

    model to use

  • options (Hash)

    additional options

Returns:

Raises:



39
40
41
42
43
44
45
# File 'lib/agent_harness/orchestration/conductor.rb', line 39

def send_message(prompt, provider: nil, model: nil, **options)
  provider_name = provider || @config.default_provider

  with_orchestration(provider_name, model, options) do |selected_provider|
    selected_provider.send_message(prompt: prompt, model: model, **options)
  end
end

#statusHash

Get current orchestration status

Returns:

  • (Hash)

    status information



61
62
63
64
65
66
67
68
# File 'lib/agent_harness/orchestration/conductor.rb', line 61

def status
  {
    current_provider: @provider_manager.current_provider,
    available_providers: @provider_manager.available_providers,
    health: @provider_manager.health_status,
    metrics: @metrics.summary
  }
end