Module: Legion::Extensions::Agentic::Integration::Gestalt::Runners::Gestalt
- Includes:
- Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/agentic/integration/gestalt/runners/gestalt.rb
Instance Method Summary collapse
- #complete_pattern(fragment:, domain: nil) ⇒ Object
- #confirm_completion(pattern_id:, correct: true) ⇒ Object
- #gestalt_stats ⇒ Object
- #group_items(items:, principle: :proximity) ⇒ Object
- #learn_pattern(name:, elements:, domain: :general) ⇒ Object
- #patterns_in_domain(domain:) ⇒ Object
- #remove_pattern(id:) ⇒ Object
- #store ⇒ Object
- #update_gestalt ⇒ Object
Instance Method Details
#complete_pattern(fragment:, domain: nil) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/legion/extensions/agentic/integration/gestalt/runners/gestalt.rb', line 22 def complete_pattern(fragment:, domain: nil, **) completions = store.complete(fragment, domain: domain) log.debug("[gestalt] complete: #{completions.size} candidates for #{fragment.size} elements") { success: true, completions: completions, count: completions.size, best: completions.first } end |
#confirm_completion(pattern_id:, correct: true) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/legion/extensions/agentic/integration/gestalt/runners/gestalt.rb', line 33 def confirm_completion(pattern_id:, correct: true, **) result = if correct store.reinforce(pattern_id) else store.penalize(pattern_id) end return { success: false, reason: :not_found } unless result log.debug("[gestalt] #{correct ? 'reinforced' : 'penalized'} pattern=#{pattern_id}") { success: true, pattern: result.to_h } end |
#gestalt_stats ⇒ Object
73 74 75 |
# File 'lib/legion/extensions/agentic/integration/gestalt/runners/gestalt.rb', line 73 def gestalt_stats(**) { success: true, stats: store.to_h } end |
#group_items(items:, principle: :proximity) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/legion/extensions/agentic/integration/gestalt/runners/gestalt.rb', line 45 def group_items(items:, principle: :proximity, **) groups = case principle when :proximity store.group_by_proximity(items) when :similarity store.group_by_similarity(items) else [items] end { success: true, groups: groups, group_count: groups.size, principle: principle } end |
#learn_pattern(name:, elements:, domain: :general) ⇒ Object
16 17 18 19 20 |
# File 'lib/legion/extensions/agentic/integration/gestalt/runners/gestalt.rb', line 16 def learn_pattern(name:, elements:, domain: :general, **) pattern = store.add(name: name, elements: elements, domain: domain) log.debug("[gestalt] learned pattern=#{name} domain=#{domain} size=#{elements.size}") { success: true, pattern: pattern.to_h } end |
#patterns_in_domain(domain:) ⇒ Object
63 64 65 66 |
# File 'lib/legion/extensions/agentic/integration/gestalt/runners/gestalt.rb', line 63 def patterns_in_domain(domain:, **) patterns = store.in_domain(domain) { success: true, patterns: patterns.map(&:to_h), count: patterns.size } end |
#remove_pattern(id:) ⇒ Object
68 69 70 71 |
# File 'lib/legion/extensions/agentic/integration/gestalt/runners/gestalt.rb', line 68 def remove_pattern(id:, **) store.remove(id) { success: true } end |
#store ⇒ Object
12 13 14 |
# File 'lib/legion/extensions/agentic/integration/gestalt/runners/gestalt.rb', line 12 def store @store ||= Helpers::PatternStore.new end |
#update_gestalt ⇒ Object
57 58 59 60 61 |
# File 'lib/legion/extensions/agentic/integration/gestalt/runners/gestalt.rb', line 57 def update_gestalt(**) store.decay_all log.debug("[gestalt] tick: patterns=#{store.size}") { success: true, pattern_count: store.size } end |