Module: Legion::Extensions::Agentic::Inference::Schema::Runners::Schema

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

Instance Method Summary collapse

Instance Method Details

#contradictionsObject



62
63
64
65
66
# File 'lib/legion/extensions/agentic/inference/schema/runners/schema.rb', line 62

def contradictions(**)
  result = world_model.contradictions
  log.debug "[schema] contradictions: #{result.size}"
  { contradictions: result, count: result.size }
end

#counterfactual(cause:) ⇒ Object



46
47
48
49
50
# File 'lib/legion/extensions/agentic/inference/schema/runners/schema.rb', line 46

def counterfactual(cause:, **)
  affected = world_model.counterfactual(cause)
  log.debug "[schema] counterfactual for #{cause}: #{affected.size} effects"
  { cause: cause, affected: affected, impact: affected.size }
end

#explain(outcome:) ⇒ Object



40
41
42
43
44
# File 'lib/legion/extensions/agentic/inference/schema/runners/schema.rb', line 40

def explain(outcome:, **)
  chain = world_model.explain(outcome)
  log.debug "[schema] explanation for #{outcome}: #{chain.size} links"
  { outcome: outcome, chain: chain, depth: chain.size }
end

#find_causes(effect:) ⇒ Object



57
58
59
60
# File 'lib/legion/extensions/agentic/inference/schema/runners/schema.rb', line 57

def find_causes(effect:, **)
  causes = world_model.find_causes(effect).map(&:to_h)
  { effect: effect, causes: causes, count: causes.size }
end

#find_effects(cause:) ⇒ Object



52
53
54
55
# File 'lib/legion/extensions/agentic/inference/schema/runners/schema.rb', line 52

def find_effects(cause:, **)
  effects = world_model.find_effects(cause).map(&:to_h)
  { cause: cause, effects: effects, count: effects.size }
end

#learn_relation(cause:, effect:, relation_type:, confidence: 0.5) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/legion/extensions/agentic/inference/schema/runners/schema.rb', line 23

def learn_relation(cause:, effect:, relation_type:, confidence: 0.5, **)
  relation_sym = relation_type.to_sym
  result = world_model.add_relation(cause: cause, effect: effect, relation_type: relation_sym, confidence: confidence)
  return { success: false, error: 'invalid relation type' } unless result

  log.info "[schema] learned: #{cause} #{relation_sym} #{effect} (#{result.confidence.round(2)})"
  { success: true, relation: result.to_h }
end

#schema_statsObject



68
69
70
71
72
73
# File 'lib/legion/extensions/agentic/inference/schema/runners/schema.rb', line 68

def schema_stats(**)
  log.debug '[schema] stats'
  world_model.to_h.merge(
    top_relations: world_model.established_relations.first(10).map(&:to_h)
  )
end

#update_schema(tick_results: {}) ⇒ Object



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

def update_schema(tick_results: {}, **)
  extract_prediction_outcomes(tick_results)
  world_model.decay_all

  log.debug "[schema] relations=#{world_model.relation_count} " \
            "domains=#{world_model.domain_count} established=#{world_model.established_relations.size}"

  world_model.to_h
end

#weaken_relation(cause:, effect:, relation_type:) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/legion/extensions/agentic/inference/schema/runners/schema.rb', line 32

def weaken_relation(cause:, effect:, relation_type:, **)
  result = world_model.weaken_relation(cause: cause, effect: effect, relation_type: relation_type.to_sym)
  return { success: false, error: 'relation not found' } unless result

  log.debug "[schema] weakened: #{cause} #{relation_type} #{effect}"
  { success: true, relation: result.to_h }
end