Module: Legion::Extensions::MindGrowth::Runners::SwarmBuilder
- Extended by:
- SwarmBuilder
- Included in:
- SwarmBuilder
- Defined in:
- lib/legion/extensions/mind_growth/runners/swarm_builder.rb
Constant Summary collapse
- ACTIVITY_ROLES =
{ concept_exploration: %i[finder reviewer coordinator], parallel_build: %i[fixer validator coordinator], adversarial_review: %i[reviewer fixer coordinator], integration_sweep: %i[validator fixer coordinator] }.freeze
- CHARTER_TYPES =
ACTIVITY_ROLES.keys.freeze
Instance Method Summary collapse
- #active_build_swarms ⇒ Object
- #complete_build_swarm(charter_id:, outcome: :success) ⇒ Object
- #create_build_swarm(charter_type:, objective:, proposal_ids: []) ⇒ Object
- #execute_swarm_build(charter_id:) ⇒ Object
- #join_build_swarm(charter_id:, agent_id:, role:) ⇒ Object
- #swarm_build_status(charter_id:) ⇒ Object
Instance Method Details
#active_build_swarms ⇒ Object
93 94 95 96 97 98 99 100 |
# File 'lib/legion/extensions/mind_growth/runners/swarm_builder.rb', line 93 def active_build_swarms(**) return { success: false, reason: :swarm_unavailable } unless swarm_available? all_swarms = Legion::Extensions::Swarm::Runners::Swarm.active_swarms swarms = Array(all_swarms[:swarms]).select { |s| mind_growth_swarm?(s) } { success: true, swarms: swarms, count: swarms.size } end |
#complete_build_swarm(charter_id:, outcome: :success) ⇒ Object
73 74 75 76 77 78 79 80 |
# File 'lib/legion/extensions/mind_growth/runners/swarm_builder.rb', line 73 def complete_build_swarm(charter_id:, outcome: :success, **) return { success: false, reason: :swarm_unavailable } unless swarm_available? Legion::Extensions::Swarm::Runners::Swarm.complete_swarm( charter_id: charter_id, outcome: outcome ) end |
#create_build_swarm(charter_type:, objective:, proposal_ids: []) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/legion/extensions/mind_growth/runners/swarm_builder.rb', line 19 def create_build_swarm(charter_type:, objective:, proposal_ids: [], **) return { success: false, reason: :invalid_charter_type } unless CHARTER_TYPES.include?(charter_type.to_sym) return { success: false, reason: :swarm_unavailable } unless swarm_available? charter_type_sym = charter_type.to_sym roles = ACTIVITY_ROLES[charter_type_sym] result = Legion::Extensions::Swarm::Runners::Swarm.create_swarm( name: "mind-growth-#{charter_type_sym}", objective: objective, roles: roles ) return { success: false, reason: :swarm_creation_failed } unless result[:success] charter_id = result[:charter][:id] Legion::Extensions::Swarm::Runners::Workspace.workspace_put( charter_id: charter_id, key: 'proposals', value: proposal_ids, author: 'mind-growth' ) { success: true, charter_id: charter_id, charter_type: charter_type_sym, roles: roles } end |
#execute_swarm_build(charter_id:) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/legion/extensions/mind_growth/runners/swarm_builder.rb', line 57 def execute_swarm_build(charter_id:, **) return { success: false, reason: :swarm_unavailable } unless swarm_available? charter_type = resolve_charter_type(charter_id) return { success: false, reason: :unknown_charter_type } unless charter_type results = case charter_type when :concept_exploration then execute_concept_exploration(charter_id) when :parallel_build then execute_parallel_build(charter_id) when :adversarial_review then execute_adversarial_review(charter_id) when :integration_sweep then execute_integration_sweep(charter_id) end { success: true, charter_id: charter_id, charter_type: charter_type, results: Array(results) } end |
#join_build_swarm(charter_id:, agent_id:, role:) ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'lib/legion/extensions/mind_growth/runners/swarm_builder.rb', line 47 def join_build_swarm(charter_id:, agent_id:, role:, **) return { success: false, reason: :swarm_unavailable } unless swarm_available? Legion::Extensions::Swarm::Runners::Swarm.join_swarm( charter_id: charter_id, agent_id: agent_id, role: role ) end |
#swarm_build_status(charter_id:) ⇒ Object
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/legion/extensions/mind_growth/runners/swarm_builder.rb', line 82 def swarm_build_status(charter_id:, **) return { success: false, reason: :swarm_unavailable } unless swarm_available? status_result = Legion::Extensions::Swarm::Runners::Swarm.swarm_status(charter_id: charter_id) workspace_result = Legion::Extensions::Swarm::Runners::Workspace.workspace_list(charter_id: charter_id) workspace_keys = workspace_result[:success] ? workspace_result[:entries].keys : [] { success: true, status: status_result[:status], workspace_keys: workspace_keys } end |