Module: Legion::Extensions::Agentic::Executive::LoadBalancing::Runners::CognitiveLoadBalancing

Includes:
Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb

Instance Method Summary collapse

Instance Method Details

#assign_cognitive_load(subsystem_id:, amount:) ⇒ Object



20
21
22
23
24
25
# File 'lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb', line 20

def assign_cognitive_load(subsystem_id:, amount:, **)
  result = engine.assign_load(subsystem_id: subsystem_id, amount: amount)
  return { success: false, error: 'subsystem not found' } unless result

  { success: true }.merge(result.to_h)
end

#auto_assign_load(amount:, subsystem_type: nil) ⇒ Object



34
35
36
37
38
39
# File 'lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb', line 34

def auto_assign_load(amount:, subsystem_type: nil, **)
  result = engine.auto_assign(amount: amount, subsystem_type: subsystem_type)
  return { success: false, error: 'no available subsystem' } unless result

  { success: true, assigned_to: result.name }.merge(result.to_h)
end

#cognitive_load_balance_reportObject



56
57
58
# File 'lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb', line 56

def cognitive_load_balance_report(**)
  engine.balance_report
end

#cognitive_load_balancing_statsObject



60
61
62
# File 'lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb', line 60

def cognitive_load_balancing_stats(**)
  engine.to_h
end

#most_loaded_report(limit: 5) ⇒ Object



51
52
53
54
# File 'lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb', line 51

def most_loaded_report(limit: 5, **)
  subs = engine.most_loaded(limit: limit)
  { success: true, limit: limit, subsystems: subs.map(&:to_h) }
end

#overloaded_subsystems_reportObject



46
47
48
49
# File 'lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb', line 46

def overloaded_subsystems_report(**)
  subs = engine.overloaded_subsystems
  { success: true, count: subs.size, subsystems: subs.map(&:to_h) }
end

#rebalance_cognitive_loadObject



41
42
43
44
# File 'lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb', line 41

def rebalance_cognitive_load(**)
  transfers = engine.rebalance
  { success: true, transfers: transfers, stats: engine.to_h }
end

#register_cognitive_subsystem(name:, subsystem_type: :general, capacity: nil) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb', line 12

def register_cognitive_subsystem(name:, subsystem_type: :general,
                                 capacity: nil, **)
  cap = capacity || Helpers::Constants::DEFAULT_CAPACITY
  sub = engine.register_subsystem(name: name, subsystem_type: subsystem_type,
                                  capacity: cap)
  { success: true }.merge(sub.to_h)
end

#shed_cognitive_load(subsystem_id:, amount:) ⇒ Object



27
28
29
30
31
32
# File 'lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb', line 27

def shed_cognitive_load(subsystem_id:, amount:, **)
  result = engine.shed_load(subsystem_id: subsystem_id, amount: amount)
  return { success: false, error: 'subsystem not found' } unless result

  { success: true, shed: result }
end