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
- #contradictions ⇒ Object
- #counterfactual(cause:) ⇒ Object
- #explain(outcome:) ⇒ Object
- #find_causes(effect:) ⇒ Object
- #find_effects(cause:) ⇒ Object
- #learn_relation(cause:, effect:, relation_type:, confidence: 0.5) ⇒ Object
- #schema_stats ⇒ Object
- #update_schema(tick_results: {}) ⇒ Object
- #weaken_relation(cause:, effect:, relation_type:) ⇒ Object
Instance Method Details
#contradictions ⇒ Object
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_stats ⇒ Object
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 |