Class: Legion::Extensions::Synapse::Client
- Inherits:
-
Object
- Object
- Legion::Extensions::Synapse::Client
- Includes:
- Runners::BlastRadius, Runners::Challenge, Runners::Crystallize, Runners::Dream, Runners::Evaluate, Runners::GaiaReport, Runners::Mutate, Runners::Pain, Runners::Promote, Runners::Propose, Runners::Report, Runners::Retrieve, Runners::Revert
- Defined in:
- lib/legion/extensions/synapse/client.rb
Constant Summary
Constants included from Runners::BlastRadius
Runners::BlastRadius::BLAST_MULTIPLIERS, Runners::BlastRadius::TIER_CRITICAL, Runners::BlastRadius::TIER_HIGH, Runners::BlastRadius::TIER_LOW, Runners::BlastRadius::TIER_MED
Constants included from Runners::Propose
Runners::Propose::PAIN_CORRELATION_THRESHOLD
Constants included from Runners::Retrieve
Runners::Retrieve::SEED_CONFIDENCE_THRESHOLD
Constants included from Runners::Promote
Runners::Promote::CONFIDENCE_THRESHOLD, Runners::Promote::STABILITY_HOURS
Constants included from Runners::Mutate
Runners::Mutate::VALID_MUTATION_TYPES, Runners::Mutate::VALID_TRIGGERS
Constants included from Runners::Crystallize
Runners::Crystallize::EMERGENCE_THRESHOLD
Constants included from Runners::Pain
Runners::Pain::CONSECUTIVE_FAILURE_THRESHOLD
Instance Attribute Summary collapse
-
#conditioner_client ⇒ Object
readonly
Returns the value of attribute conditioner_client.
-
#transformer_client ⇒ Object
readonly
Returns the value of attribute transformer_client.
Instance Method Summary collapse
- #challenge_proposal(proposal_id:) ⇒ Object
- #challenger_stats ⇒ Object
- #challenges(proposal_id:) ⇒ Object
- #create(source_function_id:, target_function_id:, attention: nil, transform: nil, routing_strategy: 'direct', origin: 'explicit', relationship_id: nil) ⇒ Object
- #evaluate(synapse_id:, payload: {}) ⇒ Object
-
#initialize(conditioner_client: nil, transformer_client: nil) ⇒ Client
constructor
A new instance of Client.
- #proposals(synapse_id:, status: nil) ⇒ Object
- #review_proposal(proposal_id:, status:) ⇒ Object
Methods included from Runners::Challenge
#pending_challenges, #resolve_challenge_outcomes, #run_challenge_cycle
Methods included from Runners::BlastRadius
#blast_multiplier_for, #blast_tier, #compute, #requires_llm_review?
Methods included from Runners::Propose
#propose_proactive, #propose_reactive
Methods included from Runners::Retrieve
Methods included from Runners::Promote
Methods included from Runners::Dream
#dream_replay, #dream_simulate
Methods included from Runners::GaiaReport
#gaia_reflection, #gaia_summary
Methods included from Runners::Report
Methods included from Runners::Revert
Methods included from Runners::Mutate
Methods included from Runners::Crystallize
Methods included from Runners::Pain
Constructor Details
#initialize(conditioner_client: nil, transformer_client: nil) ⇒ Client
Returns a new instance of Client.
39 40 41 42 |
# File 'lib/legion/extensions/synapse/client.rb', line 39 def initialize(conditioner_client: nil, transformer_client: nil) @conditioner_client = conditioner_client @transformer_client = transformer_client end |
Instance Attribute Details
#conditioner_client ⇒ Object (readonly)
Returns the value of attribute conditioner_client.
37 38 39 |
# File 'lib/legion/extensions/synapse/client.rb', line 37 def conditioner_client @conditioner_client end |
#transformer_client ⇒ Object (readonly)
Returns the value of attribute transformer_client.
37 38 39 |
# File 'lib/legion/extensions/synapse/client.rb', line 37 def transformer_client @transformer_client end |
Instance Method Details
#challenge_proposal(proposal_id:) ⇒ Object
87 88 89 |
# File 'lib/legion/extensions/synapse/client.rb', line 87 def challenge_proposal(proposal_id:) super(proposal_id: proposal_id, transformer_client: @transformer_client) end |
#challenger_stats ⇒ Object
96 97 98 99 100 101 102 103 104 |
# File 'lib/legion/extensions/synapse/client.rb', line 96 def challenger_stats Data::Model.define_synapse_challenge_model resolved = Data::Model::SynapseChallenge.exclude(outcome: nil) { total: resolved.count, correct: resolved.where(outcome: 'correct').count, by_type: resolved.group_and_count(:challenger_type).to_h { |r| [r[:challenger_type], r[:count]] } } end |
#challenges(proposal_id:) ⇒ Object
91 92 93 94 |
# File 'lib/legion/extensions/synapse/client.rb', line 91 def challenges(proposal_id:) Data::Model.define_synapse_challenge_model Data::Model::SynapseChallenge.where(proposal_id: proposal_id).order(Sequel.desc(:id)).all end |
#create(source_function_id:, target_function_id:, attention: nil, transform: nil, routing_strategy: 'direct', origin: 'explicit', relationship_id: nil) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/legion/extensions/synapse/client.rb', line 53 def create(source_function_id:, target_function_id:, attention: nil, transform: nil, routing_strategy: 'direct', origin: 'explicit', relationship_id: nil) Data::Model.define_synapse_model Data::Model::Synapse.create( source_function_id: source_function_id, target_function_id: target_function_id, attention: attention, transform: transform, routing_strategy: routing_strategy, origin: origin, relationship_id: relationship_id, confidence: Helpers::Confidence.starting_score(origin), status: origin == 'emergent' ? 'observing' : 'active' ) end |
#evaluate(synapse_id:, payload: {}) ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/legion/extensions/synapse/client.rb', line 44 def evaluate(synapse_id:, payload: {}) super( synapse_id: synapse_id, payload: payload, conditioner_client: @conditioner_client, transformer_client: @transformer_client ) end |
#proposals(synapse_id:, status: nil) ⇒ Object
69 70 71 72 73 74 |
# File 'lib/legion/extensions/synapse/client.rb', line 69 def proposals(synapse_id:, status: nil) Data::Model.define_synapse_proposal_model dataset = Data::Model::SynapseProposal.where(synapse_id: synapse_id) dataset = dataset.where(status: status) if status dataset.order(Sequel.desc(:id)).all end |
#review_proposal(proposal_id:, status:) ⇒ Object
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/legion/extensions/synapse/client.rb', line 76 def review_proposal(proposal_id:, status:) Data::Model.define_synapse_proposal_model return { success: false, error: "invalid status: #{status}" } unless Helpers::Proposals::VALID_STATUSES.include?(status) proposal = Data::Model::SynapseProposal[proposal_id] return { success: false, error: 'proposal not found' } unless proposal proposal.update(status: status, reviewed_at: Time.now) { success: true, proposal_id: proposal_id, status: status } end |