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

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

Overview

rubocop:disable Legion/Extension/RunnerIncludeHelpers

Instance Method Summary collapse

Instance Method Details

#activate_semantic_frame(frame_id:) ⇒ Object



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

def activate_semantic_frame(frame_id:, **)
  result = engine.activate_frame(frame_id: frame_id)
  if result
    log.debug("[frame_semantics] activated frame #{frame_id[0..7]}")
    { activated: true, frame_id: frame_id }
  else
    { activated: false, reason: :frame_not_found }
  end
end

#active_frames_reportObject



68
69
70
71
72
# File 'lib/legion/extensions/agentic/language/frame_semantics/runners/frame_semantics.rb', line 68

def active_frames_report(**)
  frames = engine.active_frames
  log.debug("[frame_semantics] active_frames count=#{frames.size}")
  { frames: frames.map(&:to_h), count: frames.size }
end

#add_frame_relation(frame_id:, relation:, target_frame_id:) ⇒ Object



47
48
49
50
51
52
53
54
55
56
# File 'lib/legion/extensions/agentic/language/frame_semantics/runners/frame_semantics.rb', line 47

def add_frame_relation(frame_id:, relation:, target_frame_id:, **)
  result = engine.add_frame_relation(frame_id: frame_id, relation: relation,
                                     target_frame_id: target_frame_id)
  if result
    log.debug("[frame_semantics] added relation #{relation} #{frame_id[0..7]}->#{target_frame_id[0..7]}")
    { added: true, frame_id: frame_id, relation: relation, target_frame_id: target_frame_id }
  else
    { added: false, reason: :invalid_frame_or_relation }
  end
end

#complete_frames_reportObject



80
81
82
83
84
# File 'lib/legion/extensions/agentic/language/frame_semantics/runners/frame_semantics.rb', line 80

def complete_frames_report(**)
  frames = engine.complete_frames
  log.debug("[frame_semantics] complete_frames count=#{frames.size}")
  { frames: frames.map(&:to_h), count: frames.size }
end

#create_semantic_frame(name:, domain:) ⇒ Object



10
11
12
13
14
# File 'lib/legion/extensions/agentic/language/frame_semantics/runners/frame_semantics.rb', line 10

def create_semantic_frame(name:, domain:, **)
  frame = engine.create_frame(name: name, domain: domain)
  log.debug("[frame_semantics] created frame name=#{name} domain=#{domain} id=#{frame.id[0..7]}")
  { frame_id: frame.id, name: frame.name, domain: frame.domain, created: true }
end

#define_frame_slot(frame_id:, name:, slot_type: :core, required: true) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/legion/extensions/agentic/language/frame_semantics/runners/frame_semantics.rb', line 16

def define_frame_slot(frame_id:, name:, slot_type: :core, required: true, **)
  frame = engine.define_slot(frame_id: frame_id, name: name, slot_type: slot_type, required: required)
  if frame
    log.debug("[frame_semantics] defined slot #{name} on frame #{frame_id[0..7]}")
    { defined: true, frame_id: frame_id, slot_name: name, slot_type: slot_type }
  else
    { defined: false, reason: :frame_not_found }
  end
end

#fill_frame_slot(frame_id:, slot_name:, filler:) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/legion/extensions/agentic/language/frame_semantics/runners/frame_semantics.rb', line 26

def fill_frame_slot(frame_id:, slot_name:, filler:, **)
  result = engine.fill_slot(frame_id: frame_id, slot_name: slot_name, filler: filler)
  if result
    log.debug("[frame_semantics] filled slot #{slot_name} on frame #{frame_id[0..7]}")
    { filled: true, frame_id: frame_id, slot_name: slot_name, filler: filler }
  else
    { filled: false, reason: :slot_or_frame_not_found }
  end
end

#frame_semantics_statsObject



93
94
95
# File 'lib/legion/extensions/agentic/language/frame_semantics/runners/frame_semantics.rb', line 93

def frame_semantics_stats(**)
  engine.to_h
end

#instantiate_semantic_frame(frame_id:, context:, confidence: 0.7) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'lib/legion/extensions/agentic/language/frame_semantics/runners/frame_semantics.rb', line 36

def instantiate_semantic_frame(frame_id:, context:, confidence: 0.7, **)
  instance = engine.instantiate_frame(frame_id: frame_id, context: context, confidence: confidence)
  if instance
    log.debug("[frame_semantics] instantiated frame #{frame_id[0..7]} instance=#{instance.id[0..7]}")
    { instantiated: true, instance_id: instance.id, frame_id: frame_id,
      filled_count: instance.filled_count }
  else
    { instantiated: false, reason: :frame_not_found }
  end
end


74
75
76
77
78
# File 'lib/legion/extensions/agentic/language/frame_semantics/runners/frame_semantics.rb', line 74

def related_frames_report(frame_id:, **)
  frames = engine.related_frames(frame_id: frame_id)
  log.debug("[frame_semantics] related_frames frame=#{frame_id[0..7]} count=#{frames.size}")
  { frames: frames.map(&:to_h), count: frames.size }
end

#update_frame_semanticsObject



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

def update_frame_semantics(**)
  engine.decay_all
  engine.prune_inactive
  log.debug('[frame_semantics] decay_all + prune_inactive complete')
  { updated: true, stats: engine.to_h }
end