Module: Legion::Extensions::Agentic::Language::Language::Runners::Language

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

Instance Method Summary collapse

Instance Method Details

#can_answer_wonder?(wonder:, traces: []) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/legion/extensions/agentic/language/language/runners/language.rb', line 41

def can_answer_wonder?(wonder:, traces: [], **)
  domain = wonder.is_a?(Hash) ? wonder[:domain] : :general
  relevant = filter_traces(traces, domain)

  answerable = relevant.size >= Helpers::Constants::RESOLUTION_THRESHOLD
  confidence = answerable ? compute_answer_confidence(relevant) : 0.0

  {
    answerable:  answerable,
    confidence:  confidence.round(3),
    domain:      domain,
    trace_count: relevant.size,
    threshold:   Helpers::Constants::RESOLUTION_THRESHOLD
  }
end

#knowledge_mapObject



57
58
59
60
61
62
63
# File 'lib/legion/extensions/agentic/language/language/runners/language.rb', line 57

def knowledge_map(**)
  {
    domains:       lexicon.knowledge_map,
    known_domains: lexicon.known_domains,
    total_domains: lexicon.size
  }
end

#language_statsObject



65
66
67
68
69
70
71
# File 'lib/legion/extensions/agentic/language/language/runners/language.rb', line 65

def language_stats(**)
  {
    cached_domains: lexicon.size,
    known_domains:  lexicon.known_domains,
    knowledge_map:  lexicon.knowledge_map
  }
end

#summarize(domain:, depth: :standard, traces: []) ⇒ Object



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

def summarize(domain:, depth: :standard, traces: [], **)
  traces = filter_traces(traces, domain)
  summary = Helpers::Summarizer.summarize_domain(traces, domain: domain.to_sym, depth: depth.to_sym)
  lexicon.store_summary(domain, summary)

  log.debug "[language] summarize domain=#{domain} traces=#{traces.size} " \
            "knowledge=#{summary[:knowledge_level]}"
  summary
end

#what_do_i_know(domain:, depth: :standard, traces: []) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/legion/extensions/agentic/language/language/runners/language.rb', line 23

def what_do_i_know(domain:, depth: :standard, traces: [], **)
  summary = if lexicon.stale?(domain)
              summarize(domain: domain, depth: depth, traces: traces)
            else
              lexicon.get_summary(domain)
            end

  prose = generate_knowledge_prose(summary)

  {
    domain:          domain.to_sym,
    knowledge_level: summary[:knowledge_level],
    prose:           prose,
    fact_count:      summary[:key_facts]&.size || 0,
    summary:         summary
  }
end