Class: RosettAi::Quorum::Strategies::Adopt
- Inherits:
-
Object
- Object
- RosettAi::Quorum::Strategies::Adopt
- Defined in:
- lib/rosett_ai/quorum/strategies/adopt.rb
Overview
Orchestrates multi-engine adopt analysis:
- Detect available engines with adopt_api capability
- Resolve executors via ExecutorResolver
- Dispatch prompt to all executors in parallel
- Collect and compare results
Instance Method Summary collapse
-
#eligible_engines ⇒ Array<String>
List engines eligible for quorum adopt.
-
#initialize(api_key: nil) ⇒ Adopt
constructor
A new instance of Adopt.
-
#run(prompt) ⇒ Hash
Run quorum adopt analysis.
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_engines ⇒ Array<String>
List engines eligible for quorum adopt.
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.
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 |