Module: Legion::Extensions::Agentic::Social::Symbiosis::Runners::CognitiveSymbiosis
- Extended by:
- CognitiveSymbiosis
- Includes:
- Helpers::Lex
- Included in:
- Client, CognitiveSymbiosis
- Defined in:
- lib/legion/extensions/agentic/social/symbiosis/runners/cognitive_symbiosis.rb
Instance Method Summary collapse
- #activate(subsystem_a:, subsystem_b:, amount: 0.05, engine: nil) ⇒ Object
- #create_bond(subsystem_a:, subsystem_b:, relationship_type:, strength: nil, benefit_ratio: nil, engine: nil) ⇒ Object
- #detect_parasites(strength_threshold: 0.0, engine: nil) ⇒ Object
- #ecosystem_report(engine: nil) ⇒ Object
- #health_status(engine: nil) ⇒ Object
- #list_bonds(subsystem_id: nil, relationship_type: nil, engine: nil) ⇒ Object
Instance Method Details
#activate(subsystem_a:, subsystem_b:, amount: 0.05, engine: nil) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/legion/extensions/agentic/social/symbiosis/runners/cognitive_symbiosis.rb', line 34 def activate(subsystem_a:, subsystem_b:, amount: 0.05, engine: nil, **) eng = engine || default_engine result = eng.activate_interaction( subsystem_a: subsystem_a, subsystem_b: subsystem_b, amount: amount.clamp(0.0, 1.0) ) found = result.fetch(:found, false) log.debug "[symbiosis] activate #{subsystem_a}<->#{subsystem_b} found=#{found}" { success: found, **result } rescue ArgumentError => e { success: false, error: e. } end |
#create_bond(subsystem_a:, subsystem_b:, relationship_type:, strength: nil, benefit_ratio: nil, engine: nil) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/legion/extensions/agentic/social/symbiosis/runners/cognitive_symbiosis.rb', line 14 def create_bond(subsystem_a:, subsystem_b:, relationship_type:, strength: nil, benefit_ratio: nil, engine: nil, **) eng = engine || default_engine result = eng.create_bond( subsystem_a: subsystem_a, subsystem_b: subsystem_b, relationship_type: relationship_type.to_sym, strength: strength, benefit_ratio: benefit_ratio ) msg = if result[:created] "[symbiosis] bond created: #{subsystem_a}<->#{subsystem_b} type=#{relationship_type}" else "[symbiosis] bond skipped: #{result[:reason]}" end log.debug msg { success: result[:created], **result } rescue ArgumentError => e { success: false, error: e. } end |
#detect_parasites(strength_threshold: 0.0, engine: nil) ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/legion/extensions/agentic/social/symbiosis/runners/cognitive_symbiosis.rb', line 72 def detect_parasites(strength_threshold: 0.0, engine: nil, **) eng = engine || default_engine parasites = eng.detect_parasites(strength_threshold: strength_threshold.clamp(0.0, 1.0)) log.debug "[symbiosis] detect_parasites count=#{parasites.size}" { success: true, parasites: parasites, count: parasites.size } rescue ArgumentError => e { success: false, error: e. } end |
#ecosystem_report(engine: nil) ⇒ Object
81 82 83 84 85 86 87 88 |
# File 'lib/legion/extensions/agentic/social/symbiosis/runners/cognitive_symbiosis.rb', line 81 def ecosystem_report(engine: nil, **) eng = engine || default_engine report = eng.ecosystem_report log.debug "[symbiosis] ecosystem_report health=#{report.dig(:health, :label)}" { success: true, **report } rescue ArgumentError => e { success: false, error: e. } end |
#health_status(engine: nil) ⇒ Object
48 49 50 51 52 53 54 55 |
# File 'lib/legion/extensions/agentic/social/symbiosis/runners/cognitive_symbiosis.rb', line 48 def health_status(engine: nil, **) eng = engine || default_engine health = eng.measure_ecosystem_health log.debug "[symbiosis] health score=#{health[:score]} label=#{health[:label]}" { success: true, **health } rescue ArgumentError => e { success: false, error: e. } end |
#list_bonds(subsystem_id: nil, relationship_type: nil, engine: nil) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/legion/extensions/agentic/social/symbiosis/runners/cognitive_symbiosis.rb', line 57 def list_bonds(subsystem_id: nil, relationship_type: nil, engine: nil, **) eng = engine || default_engine bonds = if subsystem_id eng.ecosystem.symbiotic_web(subsystem_id).map(&:to_h) else eng.ecosystem.all_bonds.map(&:to_h) end bonds = bonds.select { |b| b[:relationship_type] == relationship_type.to_sym } if relationship_type log.debug "[symbiosis] list_bonds count=#{bonds.size}" { success: true, bonds: bonds, count: bonds.size } rescue ArgumentError => e { success: false, error: e. } end |