Module: Legion::Extensions::Agentic::Homeostasis::Surplus::Runners::Surplus

Includes:
Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/agentic/homeostasis/surplus/runners/surplus.rb

Instance Method Summary collapse

Instance Method Details

#allocate_surplus(activity_type:, amount: Helpers::Constants::SURPLUS_THRESHOLD) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/legion/extensions/agentic/homeostasis/surplus/runners/surplus.rb', line 20

def allocate_surplus(activity_type:, amount: Helpers::Constants::SURPLUS_THRESHOLD, **)
  result = surplus_engine.allocate!(activity_type: activity_type, amount: amount)
  if result[:allocated]
    log.info("[cognitive_surplus] allocated #{amount.round(2)} to " \
             "#{activity_type} quality=#{result[:quality].round(2)} id=#{result[:allocation_id][0..7]}")
  else
    log.debug("[cognitive_surplus] allocate failed: #{result[:reason]}")
  end
  result
end

#commit_capacity(amount:) ⇒ Object



41
42
43
44
45
46
# File 'lib/legion/extensions/agentic/homeostasis/surplus/runners/surplus.rb', line 41

def commit_capacity(amount:, **)
  result = surplus_engine.commit!(amount: amount)
  log.debug("[cognitive_surplus] committed #{amount.round(2)} committed=#{result[:committed].round(2)} " \
            "surplus=#{result[:available_surplus].round(2)}")
  result
end

#deplete_surplus(amount:) ⇒ Object



62
63
64
65
66
67
# File 'lib/legion/extensions/agentic/homeostasis/surplus/runners/surplus.rb', line 62

def deplete_surplus(amount:, **)
  result = surplus_engine.deplete!(amount: amount)
  log.debug("[cognitive_surplus] depleted amount=#{result[:amount].round(2)} " \
            "surplus=#{result[:available_surplus].round(2)}")
  result
end

#release_surplus(allocation_id:) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/legion/extensions/agentic/homeostasis/surplus/runners/surplus.rb', line 31

def release_surplus(allocation_id:, **)
  result = surplus_engine.release!(allocation_id: allocation_id)
  if result[:released]
    log.info("[cognitive_surplus] released allocation #{allocation_id[0..7]} amount=#{result[:amount].round(2)}")
  else
    log.debug("[cognitive_surplus] release failed: #{result[:reason]} id=#{allocation_id[0..7]}")
  end
  result
end

#replenish_surplusObject



55
56
57
58
59
60
# File 'lib/legion/extensions/agentic/homeostasis/surplus/runners/surplus.rb', line 55

def replenish_surplus(**)
  result = surplus_engine.replenish!
  log.debug("[cognitive_surplus] replenished gained=#{result[:gained].round(2)} " \
            "surplus=#{result[:available_surplus].round(2)}")
  result
end

#surplus_allocationsObject



69
70
71
72
73
# File 'lib/legion/extensions/agentic/homeostasis/surplus/runners/surplus.rb', line 69

def surplus_allocations(**)
  allocations = surplus_engine.allocations.values.select(&:active?).map(&:to_h)
  log.debug("[cognitive_surplus] allocations count=#{allocations.size}")
  { allocations: allocations, count: allocations.size }
end

#surplus_statusObject



13
14
15
16
17
18
# File 'lib/legion/extensions/agentic/homeostasis/surplus/runners/surplus.rb', line 13

def surplus_status(**)
  report = surplus_engine.surplus_report
  log.debug("[cognitive_surplus] status surplus=#{report[:available_surplus].round(2)} " \
            "label=#{report[:surplus_label]} quality=#{report[:quality_label]}")
  report
end

#uncommit_capacity(amount:) ⇒ Object



48
49
50
51
52
53
# File 'lib/legion/extensions/agentic/homeostasis/surplus/runners/surplus.rb', line 48

def uncommit_capacity(amount:, **)
  result = surplus_engine.uncommit!(amount: amount)
  log.debug("[cognitive_surplus] uncommitted #{amount.round(2)} committed=#{result[:committed].round(2)} " \
            "surplus=#{result[:available_surplus].round(2)}")
  result
end