Module: Legion::Extensions::Agentic::Learning::EpistemicCuriosity::Runners::EpistemicCuriosity

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

Instance Method Summary collapse

Instance Method Details

#create_gap(question:, domain:, gap_type: :factual, urgency: Helpers::Constants::DEFAULT_URGENCY) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/legion/extensions/agentic/learning/epistemic_curiosity/runners/epistemic_curiosity.rb', line 13

def create_gap(question:, domain:, gap_type: :factual, urgency: Helpers::Constants::DEFAULT_URGENCY, **)
  result = engine.create_gap(question: question, domain: domain, gap_type: gap_type, urgency: urgency)
  if result[:created]
    log.info "[epistemic_curiosity] gap created: id=#{result[:gap][:id]} domain=#{domain} type=#{gap_type}"
  else
    log.debug "[epistemic_curiosity] gap not created: reason=#{result[:reason]}"
  end
  result
end

#curiosity_reportObject



79
80
81
82
83
# File 'lib/legion/extensions/agentic/learning/epistemic_curiosity/runners/epistemic_curiosity.rb', line 79

def curiosity_report(**)
  report = engine.curiosity_report
  log.debug "[epistemic_curiosity] report: open=#{report[:open_gaps]} debt=#{report[:information_debt]}"
  report
end

#curiosity_statusObject



85
86
87
88
89
90
91
92
93
# File 'lib/legion/extensions/agentic/learning/epistemic_curiosity/runners/epistemic_curiosity.rb', line 85

def curiosity_status(**)
  {
    total_gaps:             engine.open_gaps.size + engine.resolved_gaps.size,
    open_gaps:              engine.open_gaps.size,
    resolved_gaps:          engine.resolved_gaps.size,
    information_debt:       engine.information_debt,
    exploration_efficiency: engine.exploration_efficiency
  }
end

#decay_gapsObject



73
74
75
76
77
# File 'lib/legion/extensions/agentic/learning/epistemic_curiosity/runners/epistemic_curiosity.rb', line 73

def decay_gaps(**)
  count = engine.decay_all
  log.debug "[epistemic_curiosity] decay cycle: gaps_updated=#{count}"
  { decayed: count }
end

#explore_gap(gap_id:) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/legion/extensions/agentic/learning/epistemic_curiosity/runners/epistemic_curiosity.rb', line 23

def explore_gap(gap_id:, **)
  result = engine.explore_gap(gap_id: gap_id)
  if result[:found]
    gap = result[:gap]
    log.debug "[epistemic_curiosity] explore: id=#{gap_id} explorations=#{gap[:explorations]} urgency=#{gap[:urgency]}"
  else
    log.debug "[epistemic_curiosity] explore: id=#{gap_id} not found"
  end
  result
end

#gaps_by_domain(domain:) ⇒ Object



61
62
63
64
65
# File 'lib/legion/extensions/agentic/learning/epistemic_curiosity/runners/epistemic_curiosity.rb', line 61

def gaps_by_domain(domain:, **)
  gaps = engine.by_domain(domain)
  log.debug "[epistemic_curiosity] by_domain: domain=#{domain} count=#{gaps.size}"
  { gaps: gaps.map(&:to_h), count: gaps.size, domain: domain }
end

#gaps_by_type(gap_type:) ⇒ Object



67
68
69
70
71
# File 'lib/legion/extensions/agentic/learning/epistemic_curiosity/runners/epistemic_curiosity.rb', line 67

def gaps_by_type(gap_type:, **)
  gaps = engine.by_type(gap_type)
  log.debug "[epistemic_curiosity] by_type: gap_type=#{gap_type} count=#{gaps.size}"
  { gaps: gaps.map(&:to_h), count: gaps.size, gap_type: gap_type }
end

#most_urgent_gaps(limit: 5) ⇒ Object



55
56
57
58
59
# File 'lib/legion/extensions/agentic/learning/epistemic_curiosity/runners/epistemic_curiosity.rb', line 55

def most_urgent_gaps(limit: 5, **)
  gaps = engine.most_urgent(limit: limit)
  log.debug "[epistemic_curiosity] most_urgent: limit=#{limit} returned=#{gaps.size}"
  { gaps: gaps.map(&:to_h), count: gaps.size }
end

#resolve_gap(gap_id:) ⇒ Object



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

def resolve_gap(gap_id:, **)
  result = engine.resolve_gap(gap_id: gap_id)
  if result[:found]
    log.info "[epistemic_curiosity] resolved: id=#{gap_id}"
  else
    log.debug "[epistemic_curiosity] resolve: id=#{gap_id} not found"
  end
  result
end

#satisfy_gap(gap_id:, amount: 0.3) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/legion/extensions/agentic/learning/epistemic_curiosity/runners/epistemic_curiosity.rb', line 34

def satisfy_gap(gap_id:, amount: 0.3, **)
  result = engine.satisfy_gap(gap_id: gap_id, amount: amount)
  if result[:found]
    gap = result[:gap]
    log.debug "[epistemic_curiosity] satisfy: id=#{gap_id} satisfaction=#{gap[:satisfaction]} resolved=#{gap[:resolved]}"
  else
    log.debug "[epistemic_curiosity] satisfy: id=#{gap_id} not found"
  end
  result
end