Module: Legion::Extensions::Synapse::Runners::Evaluate
- Includes:
- Helpers::Lex, Propose
- Included in:
- Client
- Defined in:
- lib/legion/extensions/synapse/runners/evaluate.rb
Constant Summary
Constants included from Propose
Propose::PAIN_CORRELATION_THRESHOLD
Instance Method Summary collapse
Methods included from Propose
#propose_proactive, #propose_reactive
Instance Method Details
#evaluate(synapse_id:, payload: {}, conditioner_client: nil, transformer_client: nil) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/legion/extensions/synapse/runners/evaluate.rb', line 17 def evaluate(synapse_id:, payload: {}, conditioner_client: nil, transformer_client: nil) Data::Model.define_synapse_model Data::Model.define_synapse_signal_model Data::Model.define_synapse_proposal_model synapse = Data::Model::Synapse[synapse_id] return { success: false, error: 'synapse not found' } unless synapse return { success: false, error: 'synapse not active' } unless Helpers::Confidence::EVALUABLE_STATUSES.include?(synapse.status) mode = Helpers::Confidence.autonomy_mode(synapse.confidence) start_time = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, :millisecond) # Step 1: Attention check attention_result = check_attention(synapse, payload, mode, conditioner_client) # Step 2: Transform (if attention passed and confidence allows) transform_result = if attention_result[:passed] && Helpers::Confidence.can_transform?(synapse.confidence) run_transform(synapse, payload, transformer_client) else { success: attention_result[:passed], result: payload } end elapsed = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, :millisecond) - start_time # Step 3: Record signal record_signal(synapse, attention_result[:passed], transform_result[:success], elapsed) # Step 4: Adjust confidence event = transform_result[:success] ? :success : :failure new_confidence = Helpers::Confidence.adjust(synapse.confidence, event) synapse.update(confidence: new_confidence) # Step 5: Generate proposals if autonomous if Helpers::Confidence.can_self_modify?(new_confidence) && Helpers::Proposals.reactive? signal_record = Data::Model::SynapseSignal.where(synapse_id: synapse.id).order(Sequel.desc(:id)).first propose_reactive( synapse: synapse, payload: payload, signal_id: signal_record&.id, attention_result: attention_result, transform_result: transform_result, transformer_client: transformer_client ) end { success: transform_result[:success], mode: mode, passed: attention_result[:passed], transformed: transform_result[:success], result: transform_result[:result], latency_ms: elapsed } end |