Module: Legion::Extensions::Synapse::Runners::Retrieve

Included in:
Client
Defined in:
lib/legion/extensions/synapse/runners/retrieve.rb

Constant Summary collapse

SEED_CONFIDENCE_THRESHOLD =
0.7

Instance Method Summary collapse

Instance Method Details

#retrieve_and_seed(knowledge_entries:) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/legion/extensions/synapse/runners/retrieve.rb', line 13

def retrieve_and_seed(knowledge_entries:, **)
  Data::Model.define_synapse_model
  seeded = []

  knowledge_entries.each do |entry|
    next unless entry[:confidence] && entry[:confidence] >= SEED_CONFIDENCE_THRESHOLD
    next unless entry[:content_type] == 'synapse_pattern'

    pattern = parse_pattern(entry)
    next unless pattern
    next if synapse_exists?(pattern[:source_function_id], pattern[:target_function_id])

    synapse = Data::Model::Synapse.create(
      source_function_id: pattern[:source_function_id],
      target_function_id: pattern[:target_function_id],
      attention:          pattern[:attention],
      transform:          pattern[:transform],
      routing_strategy:   pattern[:routing_strategy] || 'direct',
      origin:             'seeded',
      confidence:         Helpers::Confidence.starting_score(:seeded),
      status:             'active'
    )
    seeded << { id: synapse.id, source: pattern[:source_function_id], target: pattern[:target_function_id] }
  end

  { success: true, seeded: seeded, count: seeded.size }
end