Class: Legion::Extensions::Agentic::Attention::Focus::Helpers::FocusManager
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Attention::Focus::Helpers::FocusManager
- Defined in:
- lib/legion/extensions/agentic/attention/focus/helpers/focus_manager.rb
Instance Attribute Summary collapse
-
#manual_focus ⇒ Object
readonly
Returns the value of attribute manual_focus.
Instance Method Summary collapse
- #focus_boost(domain) ⇒ Object
- #focus_on(domain, reason: nil) ⇒ Object
- #focused?(domain) ⇒ Boolean
- #goal_relevance(signal, active_wonders: []) ⇒ Object
-
#initialize ⇒ FocusManager
constructor
A new instance of FocusManager.
- #release(domain) ⇒ Object
Constructor Details
#initialize ⇒ FocusManager
Returns a new instance of FocusManager.
12 13 14 |
# File 'lib/legion/extensions/agentic/attention/focus/helpers/focus_manager.rb', line 12 def initialize @manual_focus = {} end |
Instance Attribute Details
#manual_focus ⇒ Object (readonly)
Returns the value of attribute manual_focus.
10 11 12 |
# File 'lib/legion/extensions/agentic/attention/focus/helpers/focus_manager.rb', line 10 def manual_focus @manual_focus end |
Instance Method Details
#focus_boost(domain) ⇒ Object
37 38 39 |
# File 'lib/legion/extensions/agentic/attention/focus/helpers/focus_manager.rb', line 37 def focus_boost(domain) focused?(domain) ? Constants::FOCUS_BOOST : 0.0 end |
#focus_on(domain, reason: nil) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/legion/extensions/agentic/attention/focus/helpers/focus_manager.rb', line 16 def focus_on(domain, reason: nil) domain = domain.to_sym return :already_focused if @manual_focus.key?(domain) return :capacity_full if @manual_focus.size >= Constants::MAX_MANUAL_FOCUS @manual_focus[domain] = { reason: reason, focused_at: Time.now.utc } :focused end |
#focused?(domain) ⇒ Boolean
33 34 35 |
# File 'lib/legion/extensions/agentic/attention/focus/helpers/focus_manager.rb', line 33 def focused?(domain) @manual_focus.key?(domain.to_sym) end |
#goal_relevance(signal, active_wonders: []) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/legion/extensions/agentic/attention/focus/helpers/focus_manager.rb', line 41 def goal_relevance(signal, active_wonders: []) domain = Focus.extract_domain(signal) base_relevance = focus_boost(domain) wonder_relevance = compute_wonder_relevance(signal, active_wonders) [base_relevance + wonder_relevance, 1.0].min end |
#release(domain) ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/legion/extensions/agentic/attention/focus/helpers/focus_manager.rb', line 25 def release(domain) domain = domain.to_sym return :not_focused unless @manual_focus.key?(domain) @manual_focus.delete(domain) :released end |