Class: RosettAi::Quorum::Strategies::Adopt

Inherits:
Object
  • Object
show all
Defined in:
lib/rosett_ai/quorum/strategies/adopt.rb

Overview

Orchestrates multi-engine adopt analysis:

  1. Detect available engines with adopt_api capability
  2. Resolve executors via ExecutorResolver
  3. Dispatch prompt to all executors in parallel
  4. Collect and compare results

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil) ⇒ Adopt

Returns a new instance of Adopt.



15
16
17
# File 'lib/rosett_ai/quorum/strategies/adopt.rb', line 15

def initialize(api_key: nil)
  @api_key = api_key
end

Instance Method Details

#eligible_enginesArray<String>

List engines eligible for quorum adopt.

Returns:

  • (Array<String>)

    engine names



35
36
37
38
39
40
41
# File 'lib/rosett_ai/quorum/strategies/adopt.rb', line 35

def eligible_engines
  RosettAi::Engines::Registry.available.select do |name|
    manifest = RosettAi::Engines::Registry.manifest(name)
    manifest.dig('capabilities', 'adopt_api') == true &&
      manifest.dig('components', 'executor') == true
  end
end

#run(prompt) ⇒ Hash

Run quorum adopt analysis.

Parameters:

  • prompt (String)

    the analysis prompt

Returns:

  • (Hash)

    aggregated result with findings, overall_status, summary

Raises:



23
24
25
26
27
28
29
30
# File 'lib/rosett_ai/quorum/strategies/adopt.rb', line 23

def run(prompt)
  executors = resolve_executors
  raise RosettAi::AdoptError, 'No engines with adopt_api capability detected' if executors.empty?

  dispatched = Dispatcher.new.dispatch(prompt, executors)
  collected = Collector.new.collect(dispatched)
  Comparator.new.compare(collected)
end