Module: Legion::Extensions::Agentic::Language::Grammar::Runners::CognitiveGrammar

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

Instance Method Summary collapse

Instance Method Details

#cognitive_grammar_statsObject



87
88
89
90
91
# File 'lib/legion/extensions/agentic/language/grammar/runners/cognitive_grammar.rb', line 87

def cognitive_grammar_stats(**)
  stats = engine.to_h
  log.debug "[cognitive_grammar] stats constructions=#{stats[:constructions_count]} construals=#{stats[:construals_count]}"
  stats
end

#construals_for_scene_report(scene:) ⇒ Object



55
56
57
58
59
# File 'lib/legion/extensions/agentic/language/grammar/runners/cognitive_grammar.rb', line 55

def construals_for_scene_report(scene:, **)
  construals = engine.construals_for_scene(scene: scene)
  log.debug "[cognitive_grammar] construals_for_scene scene=#{scene} count=#{construals.size}"
  { scene: scene, count: construals.size, construals: construals.map(&:to_h) }
end

#constructions_by_domain_report(domain:) ⇒ Object



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

def constructions_by_domain_report(domain:, **)
  constructions = engine.constructions_by_domain(domain: domain)
  log.debug "[cognitive_grammar] constructions_by_domain domain=#{domain} count=#{constructions.size}"
  { domain: domain, count: constructions.size, constructions: constructions.map(&:to_h) }
end

#create_grammar_construal(scene:, perspective:, figure:, ground:, specificity: :intermediate, scope: :local, dynamicity: 0.5, construction_id: nil) ⇒ Object

rubocop:disable Metrics/ParameterLists



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/legion/extensions/agentic/language/grammar/runners/cognitive_grammar.rb', line 26

def create_grammar_construal(scene:, perspective:, figure:, ground:, # rubocop:disable Metrics/ParameterLists
                             specificity: :intermediate, scope: :local,
                             dynamicity: 0.5, construction_id: nil, **)
  construal = engine.create_construal(
    scene:           scene,
    perspective:     perspective,
    figure:          figure,
    ground:          ground,
    specificity:     specificity,
    scope:           scope,
    dynamicity:      dynamicity,
    construction_id: construction_id
  )
  return { created: false, reason: :invalid_parameters } unless construal

  log.debug "[cognitive_grammar] created construal scene=#{scene} figure=#{figure}"
  construal.to_h
end

#create_grammar_construction(form:, meaning:, expression_type:, domain:) ⇒ Object



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

def create_grammar_construction(form:, meaning:, expression_type:, domain:, **)
  construction = engine.create_construction(
    form:            form,
    meaning:         meaning,
    expression_type: expression_type,
    domain:          domain
  )
  return { created: false, reason: :invalid_expression_type } unless construction

  log.debug "[cognitive_grammar] created construction form=#{form} type=#{expression_type} domain=#{domain}"
  construction.to_h
end

#entrenched_constructions_reportObject



61
62
63
64
65
# File 'lib/legion/extensions/agentic/language/grammar/runners/cognitive_grammar.rb', line 61

def entrenched_constructions_report(**)
  constructions = engine.entrenched_constructions
  log.debug "[cognitive_grammar] entrenched constructions count=#{constructions.size}"
  { count: constructions.size, constructions: constructions.map(&:to_h) }
end

#most_used_constructions(limit: 5) ⇒ Object



73
74
75
76
77
# File 'lib/legion/extensions/agentic/language/grammar/runners/cognitive_grammar.rb', line 73

def most_used_constructions(limit: 5, **)
  constructions = engine.most_used(limit: limit)
  log.debug "[cognitive_grammar] most_used limit=#{limit} count=#{constructions.size}"
  { limit: limit, count: constructions.size, constructions: constructions.map(&:to_h) }
end

#update_cognitive_grammarObject



79
80
81
82
83
84
85
# File 'lib/legion/extensions/agentic/language/grammar/runners/cognitive_grammar.rb', line 79

def update_cognitive_grammar(**)
  engine.decay_all
  pruned = engine.prune_inactive
  stats  = engine.to_h
  log.debug "[cognitive_grammar] update: pruned=#{pruned} remaining=#{stats[:constructions_count]}"
  { pruned: pruned, stats: stats }
end

#use_grammar_construction(construction_id:) ⇒ Object



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

def use_grammar_construction(construction_id:, **)
  construction = engine.use_construction(construction_id: construction_id)
  return { found: false, construction_id: construction_id } unless construction

  msg = "[cognitive_grammar] used construction id=#{construction_id[0..7]} " \
        "usage_count=#{construction.usage_count} activation=#{construction.activation.round(3)}"
  log.debug msg
  { found: true, construction: construction.to_h }
end