Module: Legion::Extensions::Agentic::Executive::Flexibility::Runners::CognitiveFlexibility

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

Instance Method Summary collapse

Instance Method Details

#add_rule(set_id:, type:, condition:, action:) ⇒ Object



19
20
21
22
23
# File 'lib/legion/extensions/agentic/executive/flexibility/runners/cognitive_flexibility.rb', line 19

def add_rule(set_id:, type:, condition:, action:, **)
  Legion::Logging.debug "[cognitive_flexibility] rule: set=#{set_id} type=#{type}"
  rule = engine.add_rule(set_id: set_id.to_sym, type: type.to_sym, condition: condition, action: action)
  rule ? { success: true, rule: rule } : { success: false, reason: :invalid }
end

#available_setsObject



40
41
42
43
# File 'lib/legion/extensions/agentic/executive/flexibility/runners/cognitive_flexibility.rb', line 40

def available_sets(**)
  sets = engine.available_sets
  { success: true, sets: sets, count: sets.size }
end

#cognitive_flexibility_statsObject



61
62
63
64
# File 'lib/legion/extensions/agentic/executive/flexibility/runners/cognitive_flexibility.rb', line 61

def cognitive_flexibility_stats(**)
  Legion::Logging.debug '[cognitive_flexibility] stats'
  { success: true, stats: engine.to_h }
end

#create_task_set(name:, domain: :general) ⇒ Object



13
14
15
16
17
# File 'lib/legion/extensions/agentic/executive/flexibility/runners/cognitive_flexibility.rb', line 13

def create_task_set(name:, domain: :general, **)
  Legion::Logging.debug "[cognitive_flexibility] create: #{name}"
  ts = engine.create_task_set(name: name, domain: domain)
  ts ? { success: true, task_set: ts.to_h } : { success: false, reason: :limit_reached }
end

#current_task_setObject



35
36
37
38
# File 'lib/legion/extensions/agentic/executive/flexibility/runners/cognitive_flexibility.rb', line 35

def current_task_set(**)
  cs = engine.current_set
  cs ? { success: true, task_set: cs.to_h } : { success: true, task_set: nil }
end

#flexibility_levelObject



45
46
47
48
49
50
51
52
53
# File 'lib/legion/extensions/agentic/executive/flexibility/runners/cognitive_flexibility.rb', line 45

def flexibility_level(**)
  {
    success:       true,
    flexibility:   engine.flexibility.round(4),
    label:         engine.flexibility_label,
    perseverating: engine.perseverating?,
    switch_cost:   engine.switch_cost.round(4)
  }
end

#switch_set(set_id:) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/legion/extensions/agentic/executive/flexibility/runners/cognitive_flexibility.rb', line 25

def switch_set(set_id:, **)
  Legion::Logging.debug "[cognitive_flexibility] switch to #{set_id}"
  ts = engine.switch_to(set_id: set_id.to_sym)
  if ts
    { success: true, task_set: ts.to_h, switch_cost: engine.switch_cost.round(4) }
  else
    { success: false, reason: :not_found }
  end
end

#update_cognitive_flexibilityObject



55
56
57
58
59
# File 'lib/legion/extensions/agentic/executive/flexibility/runners/cognitive_flexibility.rb', line 55

def update_cognitive_flexibility(**)
  Legion::Logging.debug '[cognitive_flexibility] tick'
  engine.tick
  { success: true, switch_cost: engine.switch_cost.round(4) }
end