lex-agentic-attention 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile +5 -0
- data/LICENSE +21 -0
- data/README.md +13 -0
- data/lex-agentic-attention.gemspec +30 -0
- data/lib/legion/extensions/agentic/attention/arousal/client.rb +27 -0
- data/lib/legion/extensions/agentic/attention/arousal/helpers/arousal_model.rb +84 -0
- data/lib/legion/extensions/agentic/attention/arousal/helpers/constants.rb +44 -0
- data/lib/legion/extensions/agentic/attention/arousal/runners/arousal.rb +119 -0
- data/lib/legion/extensions/agentic/attention/arousal/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/arousal.rb +18 -0
- data/lib/legion/extensions/agentic/attention/blindspot/client.rb +19 -0
- data/lib/legion/extensions/agentic/attention/blindspot/helpers/blindspot.rb +98 -0
- data/lib/legion/extensions/agentic/attention/blindspot/helpers/blindspot_engine.rb +174 -0
- data/lib/legion/extensions/agentic/attention/blindspot/helpers/constants.rb +63 -0
- data/lib/legion/extensions/agentic/attention/blindspot/helpers/knowledge_boundary.rb +62 -0
- data/lib/legion/extensions/agentic/attention/blindspot/runners/cognitive_blindspot.rb +103 -0
- data/lib/legion/extensions/agentic/attention/blindspot/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/blindspot.rb +20 -0
- data/lib/legion/extensions/agentic/attention/blink/client.rb +19 -0
- data/lib/legion/extensions/agentic/attention/blink/helpers/blink_engine.rb +171 -0
- data/lib/legion/extensions/agentic/attention/blink/helpers/constants.rb +46 -0
- data/lib/legion/extensions/agentic/attention/blink/helpers/stimulus.rb +68 -0
- data/lib/legion/extensions/agentic/attention/blink/runners/attentional_blink.rb +75 -0
- data/lib/legion/extensions/agentic/attention/blink/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/blink.rb +19 -0
- data/lib/legion/extensions/agentic/attention/economy/client.rb +28 -0
- data/lib/legion/extensions/agentic/attention/economy/helpers/attention_budget.rb +143 -0
- data/lib/legion/extensions/agentic/attention/economy/helpers/constants.rb +38 -0
- data/lib/legion/extensions/agentic/attention/economy/helpers/demand.rb +72 -0
- data/lib/legion/extensions/agentic/attention/economy/runners/attention_economy.rb +90 -0
- data/lib/legion/extensions/agentic/attention/economy/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/economy.rb +19 -0
- data/lib/legion/extensions/agentic/attention/feature_binding/actors/decay.rb +45 -0
- data/lib/legion/extensions/agentic/attention/feature_binding/client.rb +29 -0
- data/lib/legion/extensions/agentic/attention/feature_binding/helpers/binding_field.rb +124 -0
- data/lib/legion/extensions/agentic/attention/feature_binding/helpers/bound_object.rb +89 -0
- data/lib/legion/extensions/agentic/attention/feature_binding/helpers/constants.rb +52 -0
- data/lib/legion/extensions/agentic/attention/feature_binding/helpers/feature.rb +52 -0
- data/lib/legion/extensions/agentic/attention/feature_binding/runners/feature_binding.rb +102 -0
- data/lib/legion/extensions/agentic/attention/feature_binding/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/feature_binding.rb +20 -0
- data/lib/legion/extensions/agentic/attention/focus/client.rb +30 -0
- data/lib/legion/extensions/agentic/attention/focus/helpers/constants.rb +38 -0
- data/lib/legion/extensions/agentic/attention/focus/helpers/focus.rb +78 -0
- data/lib/legion/extensions/agentic/attention/focus/helpers/focus_manager.rb +67 -0
- data/lib/legion/extensions/agentic/attention/focus/helpers/habituation.rb +61 -0
- data/lib/legion/extensions/agentic/attention/focus/runners/attention.rb +121 -0
- data/lib/legion/extensions/agentic/attention/focus/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/focus.rb +20 -0
- data/lib/legion/extensions/agentic/attention/kaleidoscope/client.rb +15 -0
- data/lib/legion/extensions/agentic/attention/kaleidoscope/helpers/constants.rb +48 -0
- data/lib/legion/extensions/agentic/attention/kaleidoscope/helpers/facet.rb +90 -0
- data/lib/legion/extensions/agentic/attention/kaleidoscope/helpers/kaleidoscope_engine.rb +142 -0
- data/lib/legion/extensions/agentic/attention/kaleidoscope/helpers/pattern.rb +110 -0
- data/lib/legion/extensions/agentic/attention/kaleidoscope/runners/cognitive_kaleidoscope.rb +91 -0
- data/lib/legion/extensions/agentic/attention/kaleidoscope/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/kaleidoscope.rb +22 -0
- data/lib/legion/extensions/agentic/attention/latent_inhibition/client.rb +28 -0
- data/lib/legion/extensions/agentic/attention/latent_inhibition/helpers/constants.rb +33 -0
- data/lib/legion/extensions/agentic/attention/latent_inhibition/helpers/inhibition_engine.rb +118 -0
- data/lib/legion/extensions/agentic/attention/latent_inhibition/helpers/stimulus_record.rb +70 -0
- data/lib/legion/extensions/agentic/attention/latent_inhibition/runners/latent_inhibition.rb +78 -0
- data/lib/legion/extensions/agentic/attention/latent_inhibition/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/latent_inhibition.rb +19 -0
- data/lib/legion/extensions/agentic/attention/lens/client.rb +29 -0
- data/lib/legion/extensions/agentic/attention/lens/helpers/constants.rb +58 -0
- data/lib/legion/extensions/agentic/attention/lens/helpers/lens.rb +99 -0
- data/lib/legion/extensions/agentic/attention/lens/helpers/lens_engine.rb +101 -0
- data/lib/legion/extensions/agentic/attention/lens/helpers/lens_stack.rb +134 -0
- data/lib/legion/extensions/agentic/attention/lens/runners/cognitive_lens.rb +90 -0
- data/lib/legion/extensions/agentic/attention/lens/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/lens.rb +22 -0
- data/lib/legion/extensions/agentic/attention/lighthouse/client.rb +25 -0
- data/lib/legion/extensions/agentic/attention/lighthouse/helpers/beacon.rb +76 -0
- data/lib/legion/extensions/agentic/attention/lighthouse/helpers/constants.rb +49 -0
- data/lib/legion/extensions/agentic/attention/lighthouse/helpers/fog.rb +74 -0
- data/lib/legion/extensions/agentic/attention/lighthouse/helpers/lighthouse_engine.rb +127 -0
- data/lib/legion/extensions/agentic/attention/lighthouse/runners/cognitive_lighthouse.rb +80 -0
- data/lib/legion/extensions/agentic/attention/lighthouse/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/lighthouse.rb +22 -0
- data/lib/legion/extensions/agentic/attention/priming/client.rb +21 -0
- data/lib/legion/extensions/agentic/attention/priming/helpers/activation_network.rb +130 -0
- data/lib/legion/extensions/agentic/attention/priming/helpers/concept_node.rb +92 -0
- data/lib/legion/extensions/agentic/attention/priming/helpers/constants.rb +54 -0
- data/lib/legion/extensions/agentic/attention/priming/runners/priming.rb +94 -0
- data/lib/legion/extensions/agentic/attention/priming/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/priming.rb +19 -0
- data/lib/legion/extensions/agentic/attention/prism/client.rb +26 -0
- data/lib/legion/extensions/agentic/attention/prism/helpers/beam.rb +169 -0
- data/lib/legion/extensions/agentic/attention/prism/helpers/constants.rb +46 -0
- data/lib/legion/extensions/agentic/attention/prism/helpers/prism_engine.rb +136 -0
- data/lib/legion/extensions/agentic/attention/prism/helpers/spectral_component.rb +72 -0
- data/lib/legion/extensions/agentic/attention/prism/runners/cognitive_prism.rb +79 -0
- data/lib/legion/extensions/agentic/attention/prism/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/prism.rb +22 -0
- data/lib/legion/extensions/agentic/attention/regulation/client.rb +19 -0
- data/lib/legion/extensions/agentic/attention/regulation/helpers/attention_controller.rb +157 -0
- data/lib/legion/extensions/agentic/attention/regulation/helpers/attention_target.rb +64 -0
- data/lib/legion/extensions/agentic/attention/regulation/helpers/constants.rb +41 -0
- data/lib/legion/extensions/agentic/attention/regulation/runners/attention_regulation.rb +88 -0
- data/lib/legion/extensions/agentic/attention/regulation/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/regulation.rb +20 -0
- data/lib/legion/extensions/agentic/attention/relevance_theory/helpers/client.rb +17 -0
- data/lib/legion/extensions/agentic/attention/relevance_theory/helpers/cognitive_input.rb +88 -0
- data/lib/legion/extensions/agentic/attention/relevance_theory/helpers/constants.rb +50 -0
- data/lib/legion/extensions/agentic/attention/relevance_theory/helpers/relevance_engine.rb +152 -0
- data/lib/legion/extensions/agentic/attention/relevance_theory/runners/relevance_theory.rb +98 -0
- data/lib/legion/extensions/agentic/attention/relevance_theory/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/relevance_theory.rb +19 -0
- data/lib/legion/extensions/agentic/attention/salience/client.rb +21 -0
- data/lib/legion/extensions/agentic/attention/salience/helpers/constants.rb +44 -0
- data/lib/legion/extensions/agentic/attention/salience/helpers/salience_map.rb +122 -0
- data/lib/legion/extensions/agentic/attention/salience/helpers/signal_integrator.rb +97 -0
- data/lib/legion/extensions/agentic/attention/salience/runners/salience.rb +70 -0
- data/lib/legion/extensions/agentic/attention/salience/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/salience.rb +19 -0
- data/lib/legion/extensions/agentic/attention/schema/actors/decay.rb +45 -0
- data/lib/legion/extensions/agentic/attention/schema/client.rb +28 -0
- data/lib/legion/extensions/agentic/attention/schema/helpers/attention_schema_model.rb +226 -0
- data/lib/legion/extensions/agentic/attention/schema/helpers/constants.rb +66 -0
- data/lib/legion/extensions/agentic/attention/schema/helpers/schema_item.rb +68 -0
- data/lib/legion/extensions/agentic/attention/schema/runners/attention_schema.rb +117 -0
- data/lib/legion/extensions/agentic/attention/schema/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/schema.rb +19 -0
- data/lib/legion/extensions/agentic/attention/sensory_gating/client.rb +15 -0
- data/lib/legion/extensions/agentic/attention/sensory_gating/helpers/constants.rb +44 -0
- data/lib/legion/extensions/agentic/attention/sensory_gating/helpers/gating_engine.rb +109 -0
- data/lib/legion/extensions/agentic/attention/sensory_gating/helpers/sensory_filter.rb +100 -0
- data/lib/legion/extensions/agentic/attention/sensory_gating/runners/sensory_gating.rb +73 -0
- data/lib/legion/extensions/agentic/attention/sensory_gating/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/sensory_gating.rb +19 -0
- data/lib/legion/extensions/agentic/attention/signal_detection/client.rb +28 -0
- data/lib/legion/extensions/agentic/attention/signal_detection/helpers/constants.rb +66 -0
- data/lib/legion/extensions/agentic/attention/signal_detection/helpers/detection_engine.rb +129 -0
- data/lib/legion/extensions/agentic/attention/signal_detection/helpers/detector.rb +136 -0
- data/lib/legion/extensions/agentic/attention/signal_detection/runners/signal_detection.rb +113 -0
- data/lib/legion/extensions/agentic/attention/signal_detection/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/signal_detection.rb +19 -0
- data/lib/legion/extensions/agentic/attention/spotlight/client.rb +29 -0
- data/lib/legion/extensions/agentic/attention/spotlight/helpers/attention_target.rb +61 -0
- data/lib/legion/extensions/agentic/attention/spotlight/helpers/constants.rb +44 -0
- data/lib/legion/extensions/agentic/attention/spotlight/helpers/spotlight.rb +78 -0
- data/lib/legion/extensions/agentic/attention/spotlight/helpers/spotlight_engine.rb +163 -0
- data/lib/legion/extensions/agentic/attention/spotlight/runners/attention_spotlight.rb +122 -0
- data/lib/legion/extensions/agentic/attention/spotlight/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/spotlight.rb +20 -0
- data/lib/legion/extensions/agentic/attention/subliminal/client.rb +19 -0
- data/lib/legion/extensions/agentic/attention/subliminal/helpers/constants.rb +74 -0
- data/lib/legion/extensions/agentic/attention/subliminal/helpers/influence_event.rb +44 -0
- data/lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_engine.rb +149 -0
- data/lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb +101 -0
- data/lib/legion/extensions/agentic/attention/subliminal/runners/subliminal.rb +71 -0
- data/lib/legion/extensions/agentic/attention/subliminal/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/subliminal.rb +20 -0
- data/lib/legion/extensions/agentic/attention/surprise/client.rb +22 -0
- data/lib/legion/extensions/agentic/attention/surprise/helpers/constants.rb +35 -0
- data/lib/legion/extensions/agentic/attention/surprise/helpers/habituation_model.rb +62 -0
- data/lib/legion/extensions/agentic/attention/surprise/helpers/surprise_event.rb +43 -0
- data/lib/legion/extensions/agentic/attention/surprise/helpers/surprise_store.rb +74 -0
- data/lib/legion/extensions/agentic/attention/surprise/runners/surprise.rb +174 -0
- data/lib/legion/extensions/agentic/attention/surprise/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/surprise.rb +20 -0
- data/lib/legion/extensions/agentic/attention/switching/client.rb +19 -0
- data/lib/legion/extensions/agentic/attention/switching/helpers/constants.rb +64 -0
- data/lib/legion/extensions/agentic/attention/switching/helpers/switch_event.rb +60 -0
- data/lib/legion/extensions/agentic/attention/switching/helpers/switching_engine.rb +172 -0
- data/lib/legion/extensions/agentic/attention/switching/helpers/task_set.rb +91 -0
- data/lib/legion/extensions/agentic/attention/switching/runners/attention_switching.rb +92 -0
- data/lib/legion/extensions/agentic/attention/switching/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/switching.rb +20 -0
- data/lib/legion/extensions/agentic/attention/synesthesia/client.rb +29 -0
- data/lib/legion/extensions/agentic/attention/synesthesia/helpers/constants.rb +52 -0
- data/lib/legion/extensions/agentic/attention/synesthesia/helpers/sensory_mapping.rb +70 -0
- data/lib/legion/extensions/agentic/attention/synesthesia/helpers/synesthesia_engine.rb +177 -0
- data/lib/legion/extensions/agentic/attention/synesthesia/helpers/synesthetic_event.rb +49 -0
- data/lib/legion/extensions/agentic/attention/synesthesia/runners/cognitive_synesthesia.rb +83 -0
- data/lib/legion/extensions/agentic/attention/synesthesia/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/synesthesia.rb +20 -0
- data/lib/legion/extensions/agentic/attention/telescope/client.rb +15 -0
- data/lib/legion/extensions/agentic/attention/telescope/helpers/constants.rb +60 -0
- data/lib/legion/extensions/agentic/attention/telescope/helpers/observation.rb +68 -0
- data/lib/legion/extensions/agentic/attention/telescope/helpers/observatory_engine.rb +126 -0
- data/lib/legion/extensions/agentic/attention/telescope/helpers/telescope.rb +129 -0
- data/lib/legion/extensions/agentic/attention/telescope/runners/cognitive_telescope.rb +103 -0
- data/lib/legion/extensions/agentic/attention/telescope/version.rb +13 -0
- data/lib/legion/extensions/agentic/attention/telescope.rb +22 -0
- data/lib/legion/extensions/agentic/attention/version.rb +11 -0
- data/lib/legion/extensions/agentic/attention.rb +41 -0
- data/spec/legion/extensions/agentic/attention/arousal/client_spec.rb +42 -0
- data/spec/legion/extensions/agentic/attention/arousal/helpers/arousal_model_spec.rb +160 -0
- data/spec/legion/extensions/agentic/attention/arousal/helpers/constants_spec.rb +61 -0
- data/spec/legion/extensions/agentic/attention/arousal/runners/arousal_spec.rb +137 -0
- data/spec/legion/extensions/agentic/attention/blindspot/client_spec.rb +41 -0
- data/spec/legion/extensions/agentic/attention/blindspot/helpers/blindspot_engine_spec.rb +246 -0
- data/spec/legion/extensions/agentic/attention/blindspot/helpers/blindspot_spec.rb +204 -0
- data/spec/legion/extensions/agentic/attention/blindspot/helpers/constants_spec.rb +82 -0
- data/spec/legion/extensions/agentic/attention/blindspot/helpers/knowledge_boundary_spec.rb +104 -0
- data/spec/legion/extensions/agentic/attention/blindspot/runners/cognitive_blindspot_spec.rb +179 -0
- data/spec/legion/extensions/agentic/attention/blink/client_spec.rb +18 -0
- data/spec/legion/extensions/agentic/attention/blink/helpers/blink_engine_spec.rb +147 -0
- data/spec/legion/extensions/agentic/attention/blink/helpers/constants_spec.rb +27 -0
- data/spec/legion/extensions/agentic/attention/blink/helpers/stimulus_spec.rb +77 -0
- data/spec/legion/extensions/agentic/attention/blink/runners/attentional_blink_spec.rb +77 -0
- data/spec/legion/extensions/agentic/attention/economy/client_spec.rb +30 -0
- data/spec/legion/extensions/agentic/attention/economy/helpers/attention_budget_spec.rb +222 -0
- data/spec/legion/extensions/agentic/attention/economy/helpers/constants_spec.rb +112 -0
- data/spec/legion/extensions/agentic/attention/economy/helpers/demand_spec.rb +128 -0
- data/spec/legion/extensions/agentic/attention/economy/runners/attention_economy_spec.rb +163 -0
- data/spec/legion/extensions/agentic/attention/feature_binding/client_spec.rb +20 -0
- data/spec/legion/extensions/agentic/attention/feature_binding/helpers/binding_field_spec.rb +207 -0
- data/spec/legion/extensions/agentic/attention/feature_binding/helpers/bound_object_spec.rb +149 -0
- data/spec/legion/extensions/agentic/attention/feature_binding/helpers/feature_spec.rb +86 -0
- data/spec/legion/extensions/agentic/attention/feature_binding/runners/feature_binding_spec.rb +106 -0
- data/spec/legion/extensions/agentic/attention/focus/client_spec.rb +19 -0
- data/spec/legion/extensions/agentic/attention/focus/helpers/focus_manager_spec.rb +105 -0
- data/spec/legion/extensions/agentic/attention/focus/helpers/focus_spec.rb +148 -0
- data/spec/legion/extensions/agentic/attention/focus/helpers/habituation_spec.rb +97 -0
- data/spec/legion/extensions/agentic/attention/focus/runners/attention_spec.rb +134 -0
- data/spec/legion/extensions/agentic/attention/kaleidoscope/client_spec.rb +38 -0
- data/spec/legion/extensions/agentic/attention/kaleidoscope/helpers/constants_spec.rb +79 -0
- data/spec/legion/extensions/agentic/attention/kaleidoscope/helpers/facet_spec.rb +155 -0
- data/spec/legion/extensions/agentic/attention/kaleidoscope/helpers/kaleidoscope_engine_spec.rb +164 -0
- data/spec/legion/extensions/agentic/attention/kaleidoscope/helpers/pattern_spec.rb +157 -0
- data/spec/legion/extensions/agentic/attention/kaleidoscope/runners/cognitive_kaleidoscope_spec.rb +112 -0
- data/spec/legion/extensions/agentic/attention/latent_inhibition/client_spec.rb +49 -0
- data/spec/legion/extensions/agentic/attention/latent_inhibition/helpers/constants_spec.rb +57 -0
- data/spec/legion/extensions/agentic/attention/latent_inhibition/helpers/inhibition_engine_spec.rb +207 -0
- data/spec/legion/extensions/agentic/attention/latent_inhibition/helpers/stimulus_record_spec.rb +175 -0
- data/spec/legion/extensions/agentic/attention/latent_inhibition/runners/latent_inhibition_spec.rb +148 -0
- data/spec/legion/extensions/agentic/attention/lens/client_spec.rb +64 -0
- data/spec/legion/extensions/agentic/attention/lens/helpers/constants_spec.rb +91 -0
- data/spec/legion/extensions/agentic/attention/lens/helpers/lens_engine_spec.rb +158 -0
- data/spec/legion/extensions/agentic/attention/lens/helpers/lens_spec.rb +222 -0
- data/spec/legion/extensions/agentic/attention/lens/helpers/lens_stack_spec.rb +179 -0
- data/spec/legion/extensions/agentic/attention/lens/runners/cognitive_lens_spec.rb +182 -0
- data/spec/legion/extensions/agentic/attention/lighthouse/client_spec.rb +103 -0
- data/spec/legion/extensions/agentic/attention/lighthouse/helpers/beacon_spec.rb +170 -0
- data/spec/legion/extensions/agentic/attention/lighthouse/helpers/constants_spec.rb +94 -0
- data/spec/legion/extensions/agentic/attention/lighthouse/helpers/fog_spec.rb +166 -0
- data/spec/legion/extensions/agentic/attention/lighthouse/helpers/lighthouse_engine_spec.rb +238 -0
- data/spec/legion/extensions/agentic/attention/lighthouse/runners/cognitive_lighthouse_spec.rb +182 -0
- data/spec/legion/extensions/agentic/attention/priming/client_spec.rb +80 -0
- data/spec/legion/extensions/agentic/attention/priming/helpers/activation_network_spec.rb +176 -0
- data/spec/legion/extensions/agentic/attention/priming/helpers/concept_node_spec.rb +165 -0
- data/spec/legion/extensions/agentic/attention/priming/helpers/constants_spec.rb +51 -0
- data/spec/legion/extensions/agentic/attention/priming/runners/priming_spec.rb +141 -0
- data/spec/legion/extensions/agentic/attention/prism/client_spec.rb +86 -0
- data/spec/legion/extensions/agentic/attention/prism/helpers/beam_spec.rb +182 -0
- data/spec/legion/extensions/agentic/attention/prism/helpers/constants_spec.rb +93 -0
- data/spec/legion/extensions/agentic/attention/prism/helpers/prism_engine_spec.rb +253 -0
- data/spec/legion/extensions/agentic/attention/prism/helpers/spectral_component_spec.rb +171 -0
- data/spec/legion/extensions/agentic/attention/prism/runners/cognitive_prism_spec.rb +132 -0
- data/spec/legion/extensions/agentic/attention/regulation/client_spec.rb +58 -0
- data/spec/legion/extensions/agentic/attention/regulation/helpers/attention_controller_spec.rb +295 -0
- data/spec/legion/extensions/agentic/attention/regulation/helpers/attention_target_spec.rb +122 -0
- data/spec/legion/extensions/agentic/attention/regulation/runners/attention_regulation_spec.rb +147 -0
- data/spec/legion/extensions/agentic/attention/relevance_theory/helpers/cognitive_input_spec.rb +121 -0
- data/spec/legion/extensions/agentic/attention/relevance_theory/helpers/relevance_engine_spec.rb +149 -0
- data/spec/legion/extensions/agentic/attention/relevance_theory/relevance_theory_spec.rb +11 -0
- data/spec/legion/extensions/agentic/attention/relevance_theory/runners/relevance_theory_spec.rb +86 -0
- data/spec/legion/extensions/agentic/attention/salience/client_spec.rb +60 -0
- data/spec/legion/extensions/agentic/attention/salience/helpers/constants_spec.rb +100 -0
- data/spec/legion/extensions/agentic/attention/salience/helpers/salience_map_spec.rb +189 -0
- data/spec/legion/extensions/agentic/attention/salience/helpers/signal_integrator_spec.rb +149 -0
- data/spec/legion/extensions/agentic/attention/salience/runners/salience_spec.rb +143 -0
- data/spec/legion/extensions/agentic/attention/schema/client_spec.rb +47 -0
- data/spec/legion/extensions/agentic/attention/schema/helpers/attention_schema_model_spec.rb +219 -0
- data/spec/legion/extensions/agentic/attention/schema/helpers/schema_item_spec.rb +114 -0
- data/spec/legion/extensions/agentic/attention/schema/runners/attention_schema_spec.rb +185 -0
- data/spec/legion/extensions/agentic/attention/sensory_gating/helpers/gating_engine_spec.rb +112 -0
- data/spec/legion/extensions/agentic/attention/sensory_gating/helpers/sensory_filter_spec.rb +121 -0
- data/spec/legion/extensions/agentic/attention/sensory_gating/runners/sensory_gating_spec.rb +61 -0
- data/spec/legion/extensions/agentic/attention/signal_detection/client_spec.rb +20 -0
- data/spec/legion/extensions/agentic/attention/signal_detection/helpers/constants_spec.rb +85 -0
- data/spec/legion/extensions/agentic/attention/signal_detection/helpers/detection_engine_spec.rb +143 -0
- data/spec/legion/extensions/agentic/attention/signal_detection/helpers/detector_spec.rb +179 -0
- data/spec/legion/extensions/agentic/attention/signal_detection/runners/signal_detection_spec.rb +151 -0
- data/spec/legion/extensions/agentic/attention/spotlight/client_spec.rb +31 -0
- data/spec/legion/extensions/agentic/attention/spotlight/helpers/attention_target_spec.rb +121 -0
- data/spec/legion/extensions/agentic/attention/spotlight/helpers/constants_spec.rb +82 -0
- data/spec/legion/extensions/agentic/attention/spotlight/helpers/spotlight_engine_spec.rb +275 -0
- data/spec/legion/extensions/agentic/attention/spotlight/helpers/spotlight_spec.rb +196 -0
- data/spec/legion/extensions/agentic/attention/spotlight/runners/attention_spotlight_spec.rb +251 -0
- data/spec/legion/extensions/agentic/attention/subliminal/client_spec.rb +21 -0
- data/spec/legion/extensions/agentic/attention/subliminal/helpers/influence_event_spec.rb +58 -0
- data/spec/legion/extensions/agentic/attention/subliminal/helpers/subliminal_engine_spec.rb +161 -0
- data/spec/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace_spec.rb +168 -0
- data/spec/legion/extensions/agentic/attention/subliminal/runners_spec.rb +78 -0
- data/spec/legion/extensions/agentic/attention/subliminal/subliminal_spec.rb +7 -0
- data/spec/legion/extensions/agentic/attention/surprise/client_spec.rb +122 -0
- data/spec/legion/extensions/agentic/attention/surprise/helpers/constants_spec.rb +112 -0
- data/spec/legion/extensions/agentic/attention/surprise/helpers/habituation_model_spec.rb +127 -0
- data/spec/legion/extensions/agentic/attention/surprise/helpers/surprise_event_spec.rb +102 -0
- data/spec/legion/extensions/agentic/attention/surprise/helpers/surprise_store_spec.rb +171 -0
- data/spec/legion/extensions/agentic/attention/surprise/runners/surprise_spec.rb +266 -0
- data/spec/legion/extensions/agentic/attention/switching/attention_switching_spec.rb +7 -0
- data/spec/legion/extensions/agentic/attention/switching/helpers/switch_event_spec.rb +74 -0
- data/spec/legion/extensions/agentic/attention/switching/helpers/switching_engine_spec.rb +164 -0
- data/spec/legion/extensions/agentic/attention/switching/helpers/task_set_spec.rb +134 -0
- data/spec/legion/extensions/agentic/attention/synesthesia/client_spec.rb +57 -0
- data/spec/legion/extensions/agentic/attention/synesthesia/helpers/constants_spec.rb +89 -0
- data/spec/legion/extensions/agentic/attention/synesthesia/helpers/sensory_mapping_spec.rb +135 -0
- data/spec/legion/extensions/agentic/attention/synesthesia/helpers/synesthesia_engine_spec.rb +260 -0
- data/spec/legion/extensions/agentic/attention/synesthesia/helpers/synesthetic_event_spec.rb +83 -0
- data/spec/legion/extensions/agentic/attention/synesthesia/runners/cognitive_synesthesia_spec.rb +192 -0
- data/spec/legion/extensions/agentic/attention/telescope/client_spec.rb +30 -0
- data/spec/legion/extensions/agentic/attention/telescope/helpers/constants_spec.rb +108 -0
- data/spec/legion/extensions/agentic/attention/telescope/helpers/observation_spec.rb +138 -0
- data/spec/legion/extensions/agentic/attention/telescope/helpers/observatory_engine_spec.rb +197 -0
- data/spec/legion/extensions/agentic/attention/telescope/helpers/telescope_spec.rb +251 -0
- data/spec/legion/extensions/agentic/attention/telescope/runners/cognitive_telescope_spec.rb +191 -0
- data/spec/spec_helper.rb +46 -0
- metadata +399 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Attention
|
|
7
|
+
module RelevanceTheory
|
|
8
|
+
module Runners
|
|
9
|
+
module RelevanceTheory
|
|
10
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
|
|
11
|
+
Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
12
|
+
|
|
13
|
+
def submit_relevance_input(content:, input_type:, context:, cognitive_effect: nil,
|
|
14
|
+
processing_effort: nil, effect_type: nil, source_id: nil, **)
|
|
15
|
+
input = engine.submit_input(
|
|
16
|
+
content: content,
|
|
17
|
+
input_type: input_type.to_sym,
|
|
18
|
+
context: context.to_sym,
|
|
19
|
+
cognitive_effect: cognitive_effect || Helpers::Constants::DEFAULT_EFFECT,
|
|
20
|
+
processing_effort: processing_effort || Helpers::Constants::DEFAULT_EFFORT,
|
|
21
|
+
effect_type: (effect_type || :new_implication).to_sym,
|
|
22
|
+
source_id: source_id
|
|
23
|
+
)
|
|
24
|
+
Legion::Logging.debug "[relevance_theory] submit id=#{input.id[0..7]} " \
|
|
25
|
+
"type=#{input_type} relevance=#{input.normalized_relevance.round(3)}"
|
|
26
|
+
{ success: true, input: input.to_h }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def assess_input_relevance(input_id:, **)
|
|
30
|
+
result = engine.assess_relevance(input_id: input_id)
|
|
31
|
+
Legion::Logging.debug "[relevance_theory] assess id=#{input_id[0..7]} " \
|
|
32
|
+
"relevance=#{result[:normalized]}"
|
|
33
|
+
result
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def strengthen_relevance(input_id:, amount: 0.1, **)
|
|
37
|
+
result = engine.strengthen_input(input_id: input_id, amount: amount)
|
|
38
|
+
Legion::Logging.debug "[relevance_theory] strengthen id=#{input_id[0..7]}"
|
|
39
|
+
result
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def weaken_relevance(input_id:, amount: 0.1, **)
|
|
43
|
+
result = engine.weaken_input(input_id: input_id, amount: amount)
|
|
44
|
+
Legion::Logging.debug "[relevance_theory] weaken id=#{input_id[0..7]}"
|
|
45
|
+
result
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def worth_processing_report(**)
|
|
49
|
+
inputs = engine.worth_processing
|
|
50
|
+
Legion::Logging.debug "[relevance_theory] worth_processing count=#{inputs.size}"
|
|
51
|
+
{ success: true, inputs: inputs.map(&:to_h), count: inputs.size }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def most_relevant_inputs(limit: 5, **)
|
|
55
|
+
inputs = engine.most_relevant(limit: limit)
|
|
56
|
+
Legion::Logging.debug "[relevance_theory] most_relevant count=#{inputs.size}"
|
|
57
|
+
{ success: true, inputs: inputs.map(&:to_h), count: inputs.size }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def context_relevance_report(context:, **)
|
|
61
|
+
score = engine.context_relevance(context: context.to_sym)
|
|
62
|
+
Legion::Logging.debug '[relevance_theory] context_relevance ' \
|
|
63
|
+
"ctx=#{context} score=#{score.round(3)}"
|
|
64
|
+
{ success: true, context: context, relevance: score.round(3) }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def attention_budget_report(**)
|
|
68
|
+
budget = engine.attention_budget
|
|
69
|
+
Legion::Logging.debug '[relevance_theory] attention_budget ' \
|
|
70
|
+
"ratio=#{budget[:processing_ratio]}"
|
|
71
|
+
{ success: true }.merge(budget)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def update_relevance_theory(**)
|
|
75
|
+
engine.decay_all
|
|
76
|
+
pruned = engine.prune_irrelevant
|
|
77
|
+
Legion::Logging.debug "[relevance_theory] decay+prune pruned=#{pruned}"
|
|
78
|
+
{ success: true, pruned: pruned }
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def relevance_theory_stats(**)
|
|
82
|
+
stats = engine.to_h
|
|
83
|
+
Legion::Logging.debug "[relevance_theory] stats total=#{stats[:total_inputs]}"
|
|
84
|
+
{ success: true }.merge(stats)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
private
|
|
88
|
+
|
|
89
|
+
def engine
|
|
90
|
+
@engine ||= Helpers::RelevanceEngine.new
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'relevance_theory/version'
|
|
4
|
+
require_relative 'relevance_theory/helpers/constants'
|
|
5
|
+
require_relative 'relevance_theory/helpers/cognitive_input'
|
|
6
|
+
require_relative 'relevance_theory/helpers/relevance_engine'
|
|
7
|
+
require_relative 'relevance_theory/runners/relevance_theory'
|
|
8
|
+
require_relative 'relevance_theory/helpers/client'
|
|
9
|
+
|
|
10
|
+
module Legion
|
|
11
|
+
module Extensions
|
|
12
|
+
module Agentic
|
|
13
|
+
module Attention
|
|
14
|
+
module RelevanceTheory
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Attention
|
|
7
|
+
module Salience
|
|
8
|
+
class Client
|
|
9
|
+
include Runners::Salience
|
|
10
|
+
|
|
11
|
+
attr_reader :salience_map
|
|
12
|
+
|
|
13
|
+
def initialize(salience_map: nil, **)
|
|
14
|
+
@salience_map = salience_map || Helpers::SalienceMap.new
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Attention
|
|
7
|
+
module Salience
|
|
8
|
+
module Helpers
|
|
9
|
+
module Constants
|
|
10
|
+
SALIENCE_SOURCES = %i[emotion mood attention curiosity homeostasis trust empathy volition].freeze
|
|
11
|
+
|
|
12
|
+
SOURCE_WEIGHTS = {
|
|
13
|
+
emotion: 0.20,
|
|
14
|
+
mood: 0.10,
|
|
15
|
+
attention: 0.15,
|
|
16
|
+
curiosity: 0.15,
|
|
17
|
+
homeostasis: 0.15,
|
|
18
|
+
trust: 0.10,
|
|
19
|
+
empathy: 0.05,
|
|
20
|
+
volition: 0.10
|
|
21
|
+
}.freeze
|
|
22
|
+
|
|
23
|
+
URGENCY_LEVELS = %i[critical high moderate low background].freeze
|
|
24
|
+
|
|
25
|
+
URGENCY_THRESHOLDS = {
|
|
26
|
+
critical: 0.9,
|
|
27
|
+
high: 0.7,
|
|
28
|
+
moderate: 0.4,
|
|
29
|
+
low: 0.2,
|
|
30
|
+
background: 0.0
|
|
31
|
+
}.freeze
|
|
32
|
+
|
|
33
|
+
MAX_SALIENCE_ITEMS = 10
|
|
34
|
+
SALIENCE_DECAY_RATE = 0.05
|
|
35
|
+
INTEGRATION_ALPHA = 0.3
|
|
36
|
+
NOVELTY_BOOST = 0.2
|
|
37
|
+
CONFLICT_AMPLIFIER = 1.5
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Attention
|
|
7
|
+
module Salience
|
|
8
|
+
module Helpers
|
|
9
|
+
class SalienceMap
|
|
10
|
+
attr_reader :current_map, :baseline, :history
|
|
11
|
+
|
|
12
|
+
MAX_HISTORY = 50
|
|
13
|
+
TREND_WINDOW = 5
|
|
14
|
+
TREND_DELTA = 0.02
|
|
15
|
+
|
|
16
|
+
def initialize
|
|
17
|
+
@current_map = {}
|
|
18
|
+
@baseline = 0.0
|
|
19
|
+
@history = []
|
|
20
|
+
@novel_sources = {}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def update(integrated_signals)
|
|
24
|
+
@current_map = integrated_signals.transform_values { |v| v[:weighted] }
|
|
25
|
+
apply_novelty_boost(integrated_signals)
|
|
26
|
+
overall = overall_salience
|
|
27
|
+
@baseline = (Constants::INTEGRATION_ALPHA * overall) + ((1.0 - Constants::INTEGRATION_ALPHA) * @baseline)
|
|
28
|
+
snapshot = {
|
|
29
|
+
timestamp: Time.now.utc.to_f,
|
|
30
|
+
overall: overall,
|
|
31
|
+
urgency: urgency_level,
|
|
32
|
+
dominant: dominant_source,
|
|
33
|
+
map_snapshot: @current_map.dup
|
|
34
|
+
}
|
|
35
|
+
@history << snapshot
|
|
36
|
+
@history.shift while @history.size > MAX_HISTORY
|
|
37
|
+
snapshot
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def overall_salience
|
|
41
|
+
@current_map.values.sum.round(6)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def urgency_level
|
|
45
|
+
score = overall_salience
|
|
46
|
+
Constants::URGENCY_LEVELS.find do |level|
|
|
47
|
+
score >= Constants::URGENCY_THRESHOLDS[level]
|
|
48
|
+
end || :background
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def dominant_source
|
|
52
|
+
return nil if @current_map.empty?
|
|
53
|
+
|
|
54
|
+
@current_map.max_by { |_k, v| v }&.first
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def above_baseline?
|
|
58
|
+
overall_salience > @baseline
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def conflict_signals
|
|
62
|
+
values = @current_map.values
|
|
63
|
+
return [] if values.size < 2
|
|
64
|
+
|
|
65
|
+
pairs = []
|
|
66
|
+
keys = @current_map.keys
|
|
67
|
+
keys.each_with_index do |key_a, i|
|
|
68
|
+
keys[(i + 1)..].each do |key_b|
|
|
69
|
+
diff = (@current_map[key_a] - @current_map[key_b]).abs
|
|
70
|
+
pairs << [key_a, key_b] if diff > 0.3
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
pairs
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def salience_trend
|
|
77
|
+
return :stable if @history.size < 2
|
|
78
|
+
|
|
79
|
+
window = @history.last([TREND_WINDOW, @history.size].min).map { |h| h[:overall] }
|
|
80
|
+
delta = window.last - window.first
|
|
81
|
+
if delta > TREND_DELTA
|
|
82
|
+
:rising
|
|
83
|
+
elsif delta < -TREND_DELTA
|
|
84
|
+
:falling
|
|
85
|
+
else
|
|
86
|
+
:stable
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def to_h
|
|
91
|
+
{
|
|
92
|
+
current_map: @current_map,
|
|
93
|
+
overall: overall_salience,
|
|
94
|
+
baseline: @baseline,
|
|
95
|
+
urgency: urgency_level,
|
|
96
|
+
dominant: dominant_source,
|
|
97
|
+
above_baseline: above_baseline?,
|
|
98
|
+
conflicts: conflict_signals,
|
|
99
|
+
trend: salience_trend,
|
|
100
|
+
history_size: @history.size
|
|
101
|
+
}
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
private
|
|
105
|
+
|
|
106
|
+
def apply_novelty_boost(integrated_signals)
|
|
107
|
+
integrated_signals.each_key do |source|
|
|
108
|
+
next if @novel_sources.key?(source)
|
|
109
|
+
|
|
110
|
+
@novel_sources[source] = true
|
|
111
|
+
current = @current_map[source] || 0.0
|
|
112
|
+
boosted = [current + Constants::NOVELTY_BOOST, 1.0].min
|
|
113
|
+
@current_map[source] = boosted
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Attention
|
|
7
|
+
module Salience
|
|
8
|
+
module Helpers
|
|
9
|
+
module SignalIntegrator
|
|
10
|
+
module_function
|
|
11
|
+
|
|
12
|
+
def integrate(tick_results: {})
|
|
13
|
+
Constants::SALIENCE_SOURCES.each_with_object({}) do |source, result|
|
|
14
|
+
data = tick_results.fetch(source, {}) || {}
|
|
15
|
+
raw = extract_raw(source, data)
|
|
16
|
+
weight = Constants::SOURCE_WEIGHTS.fetch(source, 0.0)
|
|
17
|
+
|
|
18
|
+
result[source] = {
|
|
19
|
+
raw_salience: raw,
|
|
20
|
+
weighted: (raw * weight).round(6),
|
|
21
|
+
signal_data: data
|
|
22
|
+
}
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def extract_raw(source, data)
|
|
27
|
+
case source
|
|
28
|
+
when :emotion then extract_emotion(data)
|
|
29
|
+
when :mood then extract_mood(data)
|
|
30
|
+
when :attention then extract_attention(data)
|
|
31
|
+
when :curiosity then extract_curiosity(data)
|
|
32
|
+
when :homeostasis then extract_homeostasis(data)
|
|
33
|
+
when :trust then extract_trust(data)
|
|
34
|
+
when :empathy then extract_empathy(data)
|
|
35
|
+
when :volition then extract_volition(data)
|
|
36
|
+
else 0.0
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def extract_emotion(data)
|
|
41
|
+
arousal = (data[:arousal] || 0.0).to_f
|
|
42
|
+
gut_strength = (data[:gut_strength] || 0.0).to_f
|
|
43
|
+
clamp([arousal, gut_strength].max)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def extract_mood(data)
|
|
47
|
+
stability = (data[:stability] || 1.0).to_f
|
|
48
|
+
clamp(1.0 - stability)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def extract_attention(data)
|
|
52
|
+
spotlight_count = (data[:spotlight_count] || 0).to_f
|
|
53
|
+
total = [(data[:total] || 0).to_f, 1.0].max
|
|
54
|
+
clamp(spotlight_count / total)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def extract_curiosity(data)
|
|
58
|
+
top_salience = (data[:top_salience] || 0.0).to_f
|
|
59
|
+
clamp(top_salience)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def extract_homeostasis(data)
|
|
63
|
+
worst_deviation = (data[:worst_deviation] || 0.0).to_f
|
|
64
|
+
clamp(worst_deviation)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def extract_trust(data)
|
|
68
|
+
violation_count = (data[:violation_count] || 0).to_f
|
|
69
|
+
clamp(violation_count * 0.3)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
EMPATHY_CLIMATE_SCORES = {
|
|
73
|
+
adversarial: 1.0,
|
|
74
|
+
tense: 0.5,
|
|
75
|
+
neutral: 0.1,
|
|
76
|
+
harmonious: 0.0
|
|
77
|
+
}.freeze
|
|
78
|
+
|
|
79
|
+
def extract_empathy(data)
|
|
80
|
+
EMPATHY_CLIMATE_SCORES.fetch(data[:climate], 0.0)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def extract_volition(data)
|
|
84
|
+
intention_salience = (data[:intention_salience] || 0.0).to_f
|
|
85
|
+
clamp(intention_salience)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def clamp(value, min = 0.0, max = 1.0)
|
|
89
|
+
value.clamp(min, max)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Attention
|
|
7
|
+
module Salience
|
|
8
|
+
module Runners
|
|
9
|
+
module Salience
|
|
10
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
|
|
11
|
+
Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
12
|
+
|
|
13
|
+
def compute_salience(tick_results: {}, **)
|
|
14
|
+
integrated = Helpers::SignalIntegrator.integrate(tick_results: tick_results)
|
|
15
|
+
salience_map.update(integrated)
|
|
16
|
+
|
|
17
|
+
Legion::Logging.debug "[salience] compute: overall=#{salience_map.overall_salience.round(3)} " \
|
|
18
|
+
"urgency=#{salience_map.urgency_level} dominant=#{salience_map.dominant_source}"
|
|
19
|
+
|
|
20
|
+
{
|
|
21
|
+
overall: salience_map.overall_salience,
|
|
22
|
+
urgency: salience_map.urgency_level,
|
|
23
|
+
dominant_source: salience_map.dominant_source,
|
|
24
|
+
above_baseline: salience_map.above_baseline?,
|
|
25
|
+
conflicts: salience_map.conflict_signals,
|
|
26
|
+
sources: integrated,
|
|
27
|
+
trend: salience_map.salience_trend
|
|
28
|
+
}
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def salience_status(**)
|
|
32
|
+
Legion::Logging.debug "[salience] status: urgency=#{salience_map.urgency_level} trend=#{salience_map.salience_trend}"
|
|
33
|
+
{
|
|
34
|
+
overall: salience_map.overall_salience,
|
|
35
|
+
urgency: salience_map.urgency_level,
|
|
36
|
+
dominant: salience_map.dominant_source,
|
|
37
|
+
baseline: salience_map.baseline,
|
|
38
|
+
trend: salience_map.salience_trend,
|
|
39
|
+
above_baseline: salience_map.above_baseline?
|
|
40
|
+
}
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def salience_for(source:, **)
|
|
44
|
+
data = salience_map.current_map[source]
|
|
45
|
+
Legion::Logging.debug "[salience] salience_for: source=#{source} salience=#{data || 0.0}"
|
|
46
|
+
{ source: source, salience: data || 0.0, urgency: salience_map.urgency_level }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def salience_history(limit: 10, **)
|
|
50
|
+
{ entries: salience_map.history.last(limit) }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def salience_stats(**)
|
|
54
|
+
{
|
|
55
|
+
overall: salience_map.overall_salience,
|
|
56
|
+
baseline: salience_map.baseline,
|
|
57
|
+
urgency: salience_map.urgency_level,
|
|
58
|
+
dominant: salience_map.dominant_source,
|
|
59
|
+
history_size: salience_map.history.size,
|
|
60
|
+
conflict_count: salience_map.conflict_signals.size,
|
|
61
|
+
trend: salience_map.salience_trend
|
|
62
|
+
}
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/agentic/attention/salience/version'
|
|
4
|
+
require 'legion/extensions/agentic/attention/salience/helpers/constants'
|
|
5
|
+
require 'legion/extensions/agentic/attention/salience/helpers/signal_integrator'
|
|
6
|
+
require 'legion/extensions/agentic/attention/salience/helpers/salience_map'
|
|
7
|
+
require 'legion/extensions/agentic/attention/salience/runners/salience'
|
|
8
|
+
require 'legion/extensions/agentic/attention/salience/client'
|
|
9
|
+
|
|
10
|
+
module Legion
|
|
11
|
+
module Extensions
|
|
12
|
+
module Agentic
|
|
13
|
+
module Attention
|
|
14
|
+
module Salience
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/actors/every'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Agentic
|
|
8
|
+
module Attention
|
|
9
|
+
module Schema
|
|
10
|
+
module Actor
|
|
11
|
+
class Decay < Legion::Extensions::Actors::Every
|
|
12
|
+
def runner_class
|
|
13
|
+
Legion::Extensions::Agentic::Attention::Schema::Runners::AttentionSchema
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def runner_function
|
|
17
|
+
'decay_schema'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def time
|
|
21
|
+
30
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def run_now?
|
|
25
|
+
false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def use_runner?
|
|
29
|
+
false
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def check_subtask?
|
|
33
|
+
false
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def generate_task?
|
|
37
|
+
false
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/agentic/attention/schema/helpers/constants'
|
|
4
|
+
require 'legion/extensions/agentic/attention/schema/helpers/schema_item'
|
|
5
|
+
require 'legion/extensions/agentic/attention/schema/helpers/attention_schema_model'
|
|
6
|
+
require 'legion/extensions/agentic/attention/schema/runners/attention_schema'
|
|
7
|
+
|
|
8
|
+
module Legion
|
|
9
|
+
module Extensions
|
|
10
|
+
module Agentic
|
|
11
|
+
module Attention
|
|
12
|
+
module Schema
|
|
13
|
+
class Client
|
|
14
|
+
include Runners::AttentionSchema
|
|
15
|
+
|
|
16
|
+
def initialize(schema_model: nil, **)
|
|
17
|
+
@schema_model = schema_model || Helpers::AttentionSchemaModel.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
attr_reader :schema_model
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|