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
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 11316e7a48a460b4bfb317d22f335cf149e138d329df2f1ffbb91c6439915463
|
|
4
|
+
data.tar.gz: 94a927cd12dde2ec8212462a6c504839096cb5a074945c8f89b65ebde28bf06e
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 177772a3cf51ff7e3d799445014bf601ac106070a26a5130a12110164133cc82baa38651108eae9ea9c0cdbaec0ba2984e38ff197af6e5c3f6bba669e54ee833
|
|
7
|
+
data.tar.gz: 80ec4fb94b4ff8129ca765ff4e90a22429cd65155f00849a7845e8e8f23159e23ed3286039db62620f9584517637e74caee81e392a42005f4c22213a6ccd1627
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [Unreleased]
|
|
4
|
+
|
|
5
|
+
## [0.1.0] - 2026-03-18
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Initial release as domain consolidation gem
|
|
9
|
+
- Consolidated source extensions into unified domain gem under `Legion::Extensions::Agentic::<Domain>`
|
|
10
|
+
- All sub-modules loaded from single entry point
|
|
11
|
+
- Full spec suite with zero failures
|
|
12
|
+
- RuboCop compliance across all files
|
data/Gemfile
ADDED
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Matthew Iverson
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'lib/legion/extensions/agentic/attention/version'
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = 'lex-agentic-attention'
|
|
7
|
+
spec.version = Legion::Extensions::Agentic::Attention::VERSION
|
|
8
|
+
spec.authors = ['Esity']
|
|
9
|
+
spec.email = ['matthewdiverson@gmail.com']
|
|
10
|
+
|
|
11
|
+
spec.summary = 'LEX Agentic Attention'
|
|
12
|
+
spec.description = 'LEX agentic attention domain: focus, salience, cognitive control'
|
|
13
|
+
spec.homepage = 'https://github.com/LegionIO/lex-agentic-attention'
|
|
14
|
+
spec.license = 'MIT'
|
|
15
|
+
spec.required_ruby_version = '>= 3.4'
|
|
16
|
+
|
|
17
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
|
18
|
+
spec.metadata['source_code_uri'] = spec.homepage
|
|
19
|
+
spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/main/CHANGELOG.md"
|
|
20
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
21
|
+
|
|
22
|
+
spec.files = Dir.chdir(__dir__) do
|
|
23
|
+
Dir.glob('{lib,spec}/**/*.rb') + %w[lex-agentic-attention.gemspec Gemfile LICENSE README.md CHANGELOG.md]
|
|
24
|
+
end
|
|
25
|
+
spec.require_paths = ['lib']
|
|
26
|
+
|
|
27
|
+
spec.add_development_dependency 'rspec', '~> 3.13'
|
|
28
|
+
spec.add_development_dependency 'rubocop', '~> 1.60'
|
|
29
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.26'
|
|
30
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/agentic/attention/arousal/helpers/constants'
|
|
4
|
+
require 'legion/extensions/agentic/attention/arousal/helpers/arousal_model'
|
|
5
|
+
require 'legion/extensions/agentic/attention/arousal/runners/arousal'
|
|
6
|
+
|
|
7
|
+
module Legion
|
|
8
|
+
module Extensions
|
|
9
|
+
module Agentic
|
|
10
|
+
module Attention
|
|
11
|
+
module Arousal
|
|
12
|
+
class Client
|
|
13
|
+
include Runners::Arousal
|
|
14
|
+
|
|
15
|
+
def initialize(**)
|
|
16
|
+
@arousal_model = Helpers::ArousalModel.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
attr_reader :arousal_model
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Attention
|
|
7
|
+
module Arousal
|
|
8
|
+
module Helpers
|
|
9
|
+
class ArousalModel
|
|
10
|
+
include Constants
|
|
11
|
+
|
|
12
|
+
attr_reader :arousal, :arousal_history, :performance_last
|
|
13
|
+
|
|
14
|
+
def initialize
|
|
15
|
+
@arousal = DEFAULT_AROUSAL
|
|
16
|
+
@arousal_history = []
|
|
17
|
+
@performance_last = 0.0
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def stimulate(amount:, source: :unknown)
|
|
21
|
+
boost = amount || BOOST_FACTOR
|
|
22
|
+
raw = @arousal + boost.to_f.clamp(0.0, 1.0)
|
|
23
|
+
update_arousal(raw, source: source)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def calm(amount:)
|
|
27
|
+
reduction = amount || CALM_FACTOR
|
|
28
|
+
raw = @arousal - reduction.to_f.clamp(0.0, 1.0)
|
|
29
|
+
update_arousal(raw, source: :calm)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def decay
|
|
33
|
+
delta = (@arousal - DEFAULT_AROUSAL) * DECAY_RATE
|
|
34
|
+
raw = @arousal - delta
|
|
35
|
+
update_arousal(raw, source: :decay)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def performance(task_complexity: :moderate)
|
|
39
|
+
optimal = optimal_for(task_complexity)
|
|
40
|
+
diff = @arousal - optimal
|
|
41
|
+
@performance_last = Math.exp(-PERFORMANCE_SENSITIVITY * (diff**2))
|
|
42
|
+
@performance_last
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def arousal_label
|
|
46
|
+
AROUSAL_LABELS.each do |range, label|
|
|
47
|
+
return label if range.cover?(@arousal)
|
|
48
|
+
end
|
|
49
|
+
:dormant
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def optimal_for(complexity)
|
|
53
|
+
TASK_COMPLEXITIES.fetch(complexity, OPTIMAL_AROUSAL_DEFAULT)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def to_h
|
|
57
|
+
{
|
|
58
|
+
arousal: @arousal,
|
|
59
|
+
label: arousal_label,
|
|
60
|
+
performance_last: @performance_last,
|
|
61
|
+
history_size: @arousal_history.size
|
|
62
|
+
}
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
private
|
|
66
|
+
|
|
67
|
+
def update_arousal(raw, source: :unknown)
|
|
68
|
+
clamped = raw.clamp(AROUSAL_FLOOR, AROUSAL_CEILING)
|
|
69
|
+
@arousal = (AROUSAL_ALPHA * clamped) + ((1.0 - AROUSAL_ALPHA) * @arousal)
|
|
70
|
+
record_history(source)
|
|
71
|
+
@arousal
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def record_history(source)
|
|
75
|
+
@arousal_history << { arousal: @arousal, source: source, at: Time.now.utc }
|
|
76
|
+
@arousal_history.shift while @arousal_history.size > MAX_AROUSAL_HISTORY
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
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 Arousal
|
|
8
|
+
module Helpers
|
|
9
|
+
module Constants
|
|
10
|
+
DEFAULT_AROUSAL = 0.3
|
|
11
|
+
AROUSAL_ALPHA = 0.15
|
|
12
|
+
DECAY_RATE = 0.05
|
|
13
|
+
OPTIMAL_AROUSAL_SIMPLE = 0.7
|
|
14
|
+
OPTIMAL_AROUSAL_COMPLEX = 0.4
|
|
15
|
+
OPTIMAL_AROUSAL_DEFAULT = 0.5
|
|
16
|
+
PERFORMANCE_SENSITIVITY = 4.0
|
|
17
|
+
BOOST_FACTOR = 0.2
|
|
18
|
+
CALM_FACTOR = 0.15
|
|
19
|
+
AROUSAL_FLOOR = 0.0
|
|
20
|
+
AROUSAL_CEILING = 1.0
|
|
21
|
+
MAX_AROUSAL_HISTORY = 200
|
|
22
|
+
|
|
23
|
+
TASK_COMPLEXITIES = {
|
|
24
|
+
trivial: 0.8,
|
|
25
|
+
simple: 0.7,
|
|
26
|
+
moderate: 0.5,
|
|
27
|
+
complex: 0.4,
|
|
28
|
+
extreme: 0.3
|
|
29
|
+
}.freeze
|
|
30
|
+
|
|
31
|
+
AROUSAL_LABELS = {
|
|
32
|
+
(0.8..) => :panic,
|
|
33
|
+
(0.6...0.8) => :high,
|
|
34
|
+
(0.4...0.6) => :optimal,
|
|
35
|
+
(0.2...0.4) => :low,
|
|
36
|
+
(..0.2) => :dormant
|
|
37
|
+
}.freeze
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Attention
|
|
7
|
+
module Arousal
|
|
8
|
+
module Runners
|
|
9
|
+
module Arousal
|
|
10
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
|
|
11
|
+
Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
12
|
+
|
|
13
|
+
def stimulate(amount: nil, source: :unknown, **)
|
|
14
|
+
model = arousal_model
|
|
15
|
+
amount ||= Helpers::Constants::BOOST_FACTOR
|
|
16
|
+
new_level = model.stimulate(amount: amount, source: source)
|
|
17
|
+
Legion::Logging.debug "[arousal] stimulate: source=#{source} amount=#{amount.round(2)} level=#{new_level.round(3)}"
|
|
18
|
+
{
|
|
19
|
+
success: true,
|
|
20
|
+
arousal: new_level,
|
|
21
|
+
label: model.arousal_label,
|
|
22
|
+
source: source
|
|
23
|
+
}
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def calm(amount: nil, **)
|
|
27
|
+
model = arousal_model
|
|
28
|
+
amount ||= Helpers::Constants::CALM_FACTOR
|
|
29
|
+
new_level = model.calm(amount: amount)
|
|
30
|
+
Legion::Logging.debug "[arousal] calm: amount=#{amount.round(2)} level=#{new_level.round(3)}"
|
|
31
|
+
{
|
|
32
|
+
success: true,
|
|
33
|
+
arousal: new_level,
|
|
34
|
+
label: model.arousal_label
|
|
35
|
+
}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def update_arousal(**)
|
|
39
|
+
model = arousal_model
|
|
40
|
+
model.decay
|
|
41
|
+
perf = model.performance
|
|
42
|
+
Legion::Logging.debug "[arousal] update: level=#{model.arousal.round(3)} label=#{model.arousal_label} perf=#{perf.round(3)}"
|
|
43
|
+
{
|
|
44
|
+
success: true,
|
|
45
|
+
arousal: model.arousal,
|
|
46
|
+
label: model.arousal_label,
|
|
47
|
+
performance: perf
|
|
48
|
+
}
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def check_performance(task_complexity: :moderate, **)
|
|
52
|
+
model = arousal_model
|
|
53
|
+
perf = model.performance(task_complexity: task_complexity)
|
|
54
|
+
optimal = model.optimal_for(task_complexity)
|
|
55
|
+
msg = "[arousal] performance: complexity=#{task_complexity} " \
|
|
56
|
+
"arousal=#{model.arousal.round(3)} optimal=#{optimal} perf=#{perf.round(3)}"
|
|
57
|
+
Legion::Logging.debug msg
|
|
58
|
+
{
|
|
59
|
+
success: true,
|
|
60
|
+
performance: perf,
|
|
61
|
+
arousal: model.arousal,
|
|
62
|
+
optimal_arousal: optimal,
|
|
63
|
+
task_complexity: task_complexity
|
|
64
|
+
}
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def arousal_status(**)
|
|
68
|
+
model = arousal_model
|
|
69
|
+
perf = model.performance
|
|
70
|
+
Legion::Logging.debug "[arousal] status: level=#{model.arousal.round(3)} label=#{model.arousal_label}"
|
|
71
|
+
{
|
|
72
|
+
success: true,
|
|
73
|
+
arousal: model.arousal,
|
|
74
|
+
label: model.arousal_label,
|
|
75
|
+
performance: perf,
|
|
76
|
+
history_size: model.arousal_history.size
|
|
77
|
+
}
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def arousal_guidance(task_complexity: :moderate, **)
|
|
81
|
+
model = arousal_model
|
|
82
|
+
current = model.arousal
|
|
83
|
+
optimal = model.optimal_for(task_complexity)
|
|
84
|
+
perf = model.performance(task_complexity: task_complexity)
|
|
85
|
+
guidance = compute_guidance(current, optimal)
|
|
86
|
+
Legion::Logging.debug "[arousal] guidance: complexity=#{task_complexity} current=#{current.round(3)} optimal=#{optimal} guidance=#{guidance}"
|
|
87
|
+
{
|
|
88
|
+
success: true,
|
|
89
|
+
guidance: guidance,
|
|
90
|
+
arousal: current,
|
|
91
|
+
optimal_arousal: optimal,
|
|
92
|
+
performance: perf,
|
|
93
|
+
task_complexity: task_complexity
|
|
94
|
+
}
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
private
|
|
98
|
+
|
|
99
|
+
def arousal_model
|
|
100
|
+
@arousal_model ||= Helpers::ArousalModel.new
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def compute_guidance(current, optimal)
|
|
104
|
+
gap = current - optimal
|
|
105
|
+
if gap > 0.15
|
|
106
|
+
:throttle
|
|
107
|
+
elsif gap < -0.15
|
|
108
|
+
:boost
|
|
109
|
+
else
|
|
110
|
+
:maintain
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/agentic/attention/arousal/version'
|
|
4
|
+
require 'legion/extensions/agentic/attention/arousal/helpers/constants'
|
|
5
|
+
require 'legion/extensions/agentic/attention/arousal/helpers/arousal_model'
|
|
6
|
+
require 'legion/extensions/agentic/attention/arousal/runners/arousal'
|
|
7
|
+
require 'legion/extensions/agentic/attention/arousal/client'
|
|
8
|
+
|
|
9
|
+
module Legion
|
|
10
|
+
module Extensions
|
|
11
|
+
module Agentic
|
|
12
|
+
module Attention
|
|
13
|
+
module Arousal
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Attention
|
|
7
|
+
module Blindspot
|
|
8
|
+
class Client
|
|
9
|
+
include Runners::CognitiveBlindspot
|
|
10
|
+
|
|
11
|
+
def engine
|
|
12
|
+
@engine ||= Helpers::BlindspotEngine.new
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'securerandom'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Agentic
|
|
8
|
+
module Attention
|
|
9
|
+
module Blindspot
|
|
10
|
+
module Helpers
|
|
11
|
+
class Blindspot
|
|
12
|
+
include Constants
|
|
13
|
+
|
|
14
|
+
attr_reader :id, :domain, :discovered_by, :severity, :description,
|
|
15
|
+
:status, :created_at, :acknowledged_at, :mitigated_at, :resolved_at
|
|
16
|
+
|
|
17
|
+
def initialize(domain:, discovered_by:, description:, severity: DEFAULT_SEVERITY)
|
|
18
|
+
@id = SecureRandom.uuid
|
|
19
|
+
@domain = domain.to_sym
|
|
20
|
+
@discovered_by = discovered_by.to_sym
|
|
21
|
+
@description = description.to_s
|
|
22
|
+
@severity = severity.to_f.clamp(0.0, 1.0)
|
|
23
|
+
@status = :active
|
|
24
|
+
@created_at = Time.now.utc
|
|
25
|
+
@acknowledged_at = nil
|
|
26
|
+
@mitigated_at = nil
|
|
27
|
+
@resolved_at = nil
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def severity_label
|
|
31
|
+
Constants.label_for(SEVERITY_LABELS, @severity) || :negligible
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def active?
|
|
35
|
+
@status == :active
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def acknowledged?
|
|
39
|
+
@status == :acknowledged || @status == :mitigated || @status == :resolved
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def resolved?
|
|
43
|
+
@status == :resolved
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def acknowledge!
|
|
47
|
+
return self if @status != :active
|
|
48
|
+
|
|
49
|
+
@status = :acknowledged
|
|
50
|
+
@acknowledged_at = Time.now.utc
|
|
51
|
+
self
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def mitigate!(boost: SEVERITY_BOOST)
|
|
55
|
+
acknowledge! if @status == :active
|
|
56
|
+
@status = :mitigated
|
|
57
|
+
@mitigated_at = Time.now.utc
|
|
58
|
+
@severity = (@severity - boost).clamp(0.0, 1.0).round(10)
|
|
59
|
+
self
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def resolve!
|
|
63
|
+
acknowledge! if @status == :active
|
|
64
|
+
@status = :resolved
|
|
65
|
+
@resolved_at = Time.now.utc
|
|
66
|
+
self
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def boost_severity!(amount: SEVERITY_BOOST)
|
|
70
|
+
@severity = (@severity + amount).clamp(0.0, 1.0).round(10)
|
|
71
|
+
self
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def to_h
|
|
75
|
+
{
|
|
76
|
+
id: @id,
|
|
77
|
+
domain: @domain,
|
|
78
|
+
discovered_by: @discovered_by,
|
|
79
|
+
description: @description,
|
|
80
|
+
severity: @severity,
|
|
81
|
+
severity_label: severity_label,
|
|
82
|
+
status: @status,
|
|
83
|
+
active: active?,
|
|
84
|
+
acknowledged: acknowledged?,
|
|
85
|
+
resolved: resolved?,
|
|
86
|
+
created_at: @created_at,
|
|
87
|
+
acknowledged_at: @acknowledged_at,
|
|
88
|
+
mitigated_at: @mitigated_at,
|
|
89
|
+
resolved_at: @resolved_at
|
|
90
|
+
}
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|