lex-agentic-executive 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-executive.gemspec +30 -0
- data/lib/legion/extensions/agentic/executive/autopilot/client.rb +19 -0
- data/lib/legion/extensions/agentic/executive/autopilot/helpers/autopilot_engine.rb +161 -0
- data/lib/legion/extensions/agentic/executive/autopilot/helpers/constants.rb +62 -0
- data/lib/legion/extensions/agentic/executive/autopilot/helpers/mode_event.rb +51 -0
- data/lib/legion/extensions/agentic/executive/autopilot/helpers/routine.rb +91 -0
- data/lib/legion/extensions/agentic/executive/autopilot/runners/cognitive_autopilot.rb +93 -0
- data/lib/legion/extensions/agentic/executive/autopilot/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/autopilot.rb +20 -0
- data/lib/legion/extensions/agentic/executive/chunking/client.rb +21 -0
- data/lib/legion/extensions/agentic/executive/chunking/helpers/chunk.rb +92 -0
- data/lib/legion/extensions/agentic/executive/chunking/helpers/chunking_engine.rb +147 -0
- data/lib/legion/extensions/agentic/executive/chunking/helpers/constants.rb +56 -0
- data/lib/legion/extensions/agentic/executive/chunking/helpers/information_item.rb +51 -0
- data/lib/legion/extensions/agentic/executive/chunking/runners/cognitive_chunking.rb +111 -0
- data/lib/legion/extensions/agentic/executive/chunking/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/chunking.rb +21 -0
- data/lib/legion/extensions/agentic/executive/cognitive_debt/client.rb +28 -0
- data/lib/legion/extensions/agentic/executive/cognitive_debt/helpers/constants.rb +36 -0
- data/lib/legion/extensions/agentic/executive/cognitive_debt/helpers/debt_engine.rb +118 -0
- data/lib/legion/extensions/agentic/executive/cognitive_debt/helpers/debt_item.rb +83 -0
- data/lib/legion/extensions/agentic/executive/cognitive_debt/runners/cognitive_debt.rb +84 -0
- data/lib/legion/extensions/agentic/executive/cognitive_debt/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/cognitive_debt.rb +19 -0
- data/lib/legion/extensions/agentic/executive/compass/client.rb +15 -0
- data/lib/legion/extensions/agentic/executive/compass/helpers/bearing.rb +79 -0
- data/lib/legion/extensions/agentic/executive/compass/helpers/compass_engine.rb +108 -0
- data/lib/legion/extensions/agentic/executive/compass/helpers/constants.rb +65 -0
- data/lib/legion/extensions/agentic/executive/compass/helpers/magnetic_bias.rb +81 -0
- data/lib/legion/extensions/agentic/executive/compass/runners/cognitive_compass.rb +76 -0
- data/lib/legion/extensions/agentic/executive/compass/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/compass.rb +22 -0
- data/lib/legion/extensions/agentic/executive/control/client.rb +19 -0
- data/lib/legion/extensions/agentic/executive/control/helpers/constants.rb +45 -0
- data/lib/legion/extensions/agentic/executive/control/helpers/control_signal.rb +79 -0
- data/lib/legion/extensions/agentic/executive/control/helpers/controller.rb +140 -0
- data/lib/legion/extensions/agentic/executive/control/helpers/goal.rb +72 -0
- data/lib/legion/extensions/agentic/executive/control/runners/cognitive_control.rb +74 -0
- data/lib/legion/extensions/agentic/executive/control/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/control.rb +21 -0
- data/lib/legion/extensions/agentic/executive/decision_fatigue/client.rb +28 -0
- data/lib/legion/extensions/agentic/executive/decision_fatigue/helpers/constants.rb +51 -0
- data/lib/legion/extensions/agentic/executive/decision_fatigue/helpers/decision_record.rb +50 -0
- data/lib/legion/extensions/agentic/executive/decision_fatigue/helpers/fatigue_engine.rb +114 -0
- data/lib/legion/extensions/agentic/executive/decision_fatigue/runners/decision_fatigue.rb +94 -0
- data/lib/legion/extensions/agentic/executive/decision_fatigue/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/decision_fatigue.rb +19 -0
- data/lib/legion/extensions/agentic/executive/disengagement/client.rb +24 -0
- data/lib/legion/extensions/agentic/executive/disengagement/helpers/constants.rb +48 -0
- data/lib/legion/extensions/agentic/executive/disengagement/helpers/disengagement_engine.rb +101 -0
- data/lib/legion/extensions/agentic/executive/disengagement/helpers/goal.rb +105 -0
- data/lib/legion/extensions/agentic/executive/disengagement/runners/cognitive_disengagement.rb +90 -0
- data/lib/legion/extensions/agentic/executive/disengagement/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/disengagement.rb +19 -0
- data/lib/legion/extensions/agentic/executive/dissonance_resolution/client.rb +19 -0
- data/lib/legion/extensions/agentic/executive/dissonance_resolution/helpers/constants.rb +38 -0
- data/lib/legion/extensions/agentic/executive/dissonance_resolution/helpers/dissonance_conflict.rb +90 -0
- data/lib/legion/extensions/agentic/executive/dissonance_resolution/helpers/resolution_engine.rb +155 -0
- data/lib/legion/extensions/agentic/executive/dissonance_resolution/runners/cognitive_dissonance_resolution.rb +74 -0
- data/lib/legion/extensions/agentic/executive/dissonance_resolution/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/dissonance_resolution.rb +19 -0
- data/lib/legion/extensions/agentic/executive/dual_process/client.rb +25 -0
- data/lib/legion/extensions/agentic/executive/dual_process/helpers/constants.rb +44 -0
- data/lib/legion/extensions/agentic/executive/dual_process/helpers/decision.rb +50 -0
- data/lib/legion/extensions/agentic/executive/dual_process/helpers/dual_process_engine.rb +200 -0
- data/lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb +67 -0
- data/lib/legion/extensions/agentic/executive/dual_process/runners/dual_process.rb +87 -0
- data/lib/legion/extensions/agentic/executive/dual_process/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/dual_process.rb +20 -0
- data/lib/legion/extensions/agentic/executive/dwell/client.rb +19 -0
- data/lib/legion/extensions/agentic/executive/dwell/helpers/constants.rb +65 -0
- data/lib/legion/extensions/agentic/executive/dwell/helpers/dwell_engine.rb +126 -0
- data/lib/legion/extensions/agentic/executive/dwell/helpers/dwell_topic.rb +119 -0
- data/lib/legion/extensions/agentic/executive/dwell/runners/cognitive_dwell.rb +87 -0
- data/lib/legion/extensions/agentic/executive/dwell/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/dwell.rb +19 -0
- data/lib/legion/extensions/agentic/executive/executive_function/actors/recovery.rb +45 -0
- data/lib/legion/extensions/agentic/executive/executive_function/client.rb +27 -0
- data/lib/legion/extensions/agentic/executive/executive_function/helpers/ef_component.rb +58 -0
- data/lib/legion/extensions/agentic/executive/executive_function/helpers/executive_controller.rb +129 -0
- data/lib/legion/extensions/agentic/executive/executive_function/runners/executive_function.rb +104 -0
- data/lib/legion/extensions/agentic/executive/executive_function/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/executive_function.rb +18 -0
- data/lib/legion/extensions/agentic/executive/flexibility/actors/tick.rb +31 -0
- data/lib/legion/extensions/agentic/executive/flexibility/client.rb +28 -0
- data/lib/legion/extensions/agentic/executive/flexibility/helpers/constants.rb +39 -0
- data/lib/legion/extensions/agentic/executive/flexibility/helpers/flexibility_engine.rb +109 -0
- data/lib/legion/extensions/agentic/executive/flexibility/helpers/task_set.rb +69 -0
- data/lib/legion/extensions/agentic/executive/flexibility/runners/cognitive_flexibility.rb +77 -0
- data/lib/legion/extensions/agentic/executive/flexibility/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/flexibility.rb +19 -0
- data/lib/legion/extensions/agentic/executive/flexibility_training/client.rb +29 -0
- data/lib/legion/extensions/agentic/executive/flexibility_training/helpers/constants.rb +57 -0
- data/lib/legion/extensions/agentic/executive/flexibility_training/helpers/flexibility_engine.rb +178 -0
- data/lib/legion/extensions/agentic/executive/flexibility_training/helpers/switch_trial.rb +54 -0
- data/lib/legion/extensions/agentic/executive/flexibility_training/helpers/training_task.rb +54 -0
- data/lib/legion/extensions/agentic/executive/flexibility_training/runners/cognitive_flexibility_training.rb +134 -0
- data/lib/legion/extensions/agentic/executive/flexibility_training/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/flexibility_training.rb +20 -0
- data/lib/legion/extensions/agentic/executive/goal_management/client.rb +28 -0
- data/lib/legion/extensions/agentic/executive/goal_management/helpers/constants.rb +49 -0
- data/lib/legion/extensions/agentic/executive/goal_management/helpers/goal.rb +153 -0
- data/lib/legion/extensions/agentic/executive/goal_management/helpers/goal_engine.rb +265 -0
- data/lib/legion/extensions/agentic/executive/goal_management/runners/goal_management.rb +169 -0
- data/lib/legion/extensions/agentic/executive/goal_management/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/goal_management.rb +19 -0
- data/lib/legion/extensions/agentic/executive/inertia/client.rb +15 -0
- data/lib/legion/extensions/agentic/executive/inertia/helpers/belief.rb +99 -0
- data/lib/legion/extensions/agentic/executive/inertia/helpers/constants.rb +45 -0
- data/lib/legion/extensions/agentic/executive/inertia/helpers/inertia_engine.rb +111 -0
- data/lib/legion/extensions/agentic/executive/inertia/runners/cognitive_inertia.rb +74 -0
- data/lib/legion/extensions/agentic/executive/inertia/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/inertia.rb +19 -0
- data/lib/legion/extensions/agentic/executive/inhibition/client.rb +27 -0
- data/lib/legion/extensions/agentic/executive/inhibition/helpers/constants.rb +36 -0
- data/lib/legion/extensions/agentic/executive/inhibition/helpers/impulse.rb +37 -0
- data/lib/legion/extensions/agentic/executive/inhibition/helpers/inhibition_model.rb +122 -0
- data/lib/legion/extensions/agentic/executive/inhibition/helpers/inhibition_store.rb +72 -0
- data/lib/legion/extensions/agentic/executive/inhibition/runners/inhibition.rb +155 -0
- data/lib/legion/extensions/agentic/executive/inhibition/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/inhibition.rb +20 -0
- data/lib/legion/extensions/agentic/executive/load/client.rb +25 -0
- data/lib/legion/extensions/agentic/executive/load/helpers/constants.rb +36 -0
- data/lib/legion/extensions/agentic/executive/load/helpers/load_model.rb +146 -0
- data/lib/legion/extensions/agentic/executive/load/runners/cognitive_load.rb +120 -0
- data/lib/legion/extensions/agentic/executive/load/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/load.rb +18 -0
- data/lib/legion/extensions/agentic/executive/load_balancing/client.rb +19 -0
- data/lib/legion/extensions/agentic/executive/load_balancing/helpers/constants.rb +44 -0
- data/lib/legion/extensions/agentic/executive/load_balancing/helpers/load_balancer.rb +137 -0
- data/lib/legion/extensions/agentic/executive/load_balancing/helpers/subsystem.rb +101 -0
- data/lib/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing.rb +69 -0
- data/lib/legion/extensions/agentic/executive/load_balancing/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/load_balancing.rb +19 -0
- data/lib/legion/extensions/agentic/executive/planning/client.rb +27 -0
- data/lib/legion/extensions/agentic/executive/planning/helpers/constants.rb +26 -0
- data/lib/legion/extensions/agentic/executive/planning/helpers/plan.rb +110 -0
- data/lib/legion/extensions/agentic/executive/planning/helpers/plan_step.rb +82 -0
- data/lib/legion/extensions/agentic/executive/planning/helpers/plan_store.rb +161 -0
- data/lib/legion/extensions/agentic/executive/planning/runners/planning.rb +123 -0
- data/lib/legion/extensions/agentic/executive/planning/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/planning.rb +20 -0
- data/lib/legion/extensions/agentic/executive/prospective_memory/client.rb +28 -0
- data/lib/legion/extensions/agentic/executive/prospective_memory/helpers/constants.rb +32 -0
- data/lib/legion/extensions/agentic/executive/prospective_memory/helpers/intention.rb +94 -0
- data/lib/legion/extensions/agentic/executive/prospective_memory/helpers/prospective_engine.rb +157 -0
- data/lib/legion/extensions/agentic/executive/prospective_memory/runners/prospective_memory.rb +146 -0
- data/lib/legion/extensions/agentic/executive/prospective_memory/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/prospective_memory.rb +19 -0
- data/lib/legion/extensions/agentic/executive/triage/client.rb +19 -0
- data/lib/legion/extensions/agentic/executive/triage/helpers/constants.rb +70 -0
- data/lib/legion/extensions/agentic/executive/triage/helpers/demand.rb +101 -0
- data/lib/legion/extensions/agentic/executive/triage/helpers/triage_engine.rb +150 -0
- data/lib/legion/extensions/agentic/executive/triage/runners/cognitive_triage.rb +110 -0
- data/lib/legion/extensions/agentic/executive/triage/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/triage.rb +19 -0
- data/lib/legion/extensions/agentic/executive/version.rb +11 -0
- data/lib/legion/extensions/agentic/executive/volition/client.rb +27 -0
- data/lib/legion/extensions/agentic/executive/volition/helpers/constants.rb +51 -0
- data/lib/legion/extensions/agentic/executive/volition/helpers/drive_synthesizer.rb +158 -0
- data/lib/legion/extensions/agentic/executive/volition/helpers/intention.rb +56 -0
- data/lib/legion/extensions/agentic/executive/volition/helpers/intention_stack.rb +140 -0
- data/lib/legion/extensions/agentic/executive/volition/runners/volition.rb +129 -0
- data/lib/legion/extensions/agentic/executive/volition/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/volition.rb +20 -0
- data/lib/legion/extensions/agentic/executive/working_memory/client.rb +21 -0
- data/lib/legion/extensions/agentic/executive/working_memory/helpers/buffer.rb +124 -0
- data/lib/legion/extensions/agentic/executive/working_memory/helpers/buffer_item.rb +72 -0
- data/lib/legion/extensions/agentic/executive/working_memory/helpers/constants.rb +47 -0
- data/lib/legion/extensions/agentic/executive/working_memory/runners/working_memory.rb +102 -0
- data/lib/legion/extensions/agentic/executive/working_memory/version.rb +13 -0
- data/lib/legion/extensions/agentic/executive/working_memory.rb +19 -0
- data/lib/legion/extensions/agentic/executive.rb +40 -0
- data/spec/legion/extensions/agentic/executive/autopilot/client_spec.rb +21 -0
- data/spec/legion/extensions/agentic/executive/autopilot/cognitive_autopilot_spec.rb +7 -0
- data/spec/legion/extensions/agentic/executive/autopilot/helpers/autopilot_engine_spec.rb +166 -0
- data/spec/legion/extensions/agentic/executive/autopilot/helpers/constants_spec.rb +37 -0
- data/spec/legion/extensions/agentic/executive/autopilot/helpers/mode_event_spec.rb +30 -0
- data/spec/legion/extensions/agentic/executive/autopilot/helpers/routine_spec.rb +133 -0
- data/spec/legion/extensions/agentic/executive/autopilot/runners_spec.rb +108 -0
- data/spec/legion/extensions/agentic/executive/chunking/client_spec.rb +67 -0
- data/spec/legion/extensions/agentic/executive/chunking/helpers/chunk_spec.rb +187 -0
- data/spec/legion/extensions/agentic/executive/chunking/helpers/chunking_engine_spec.rb +290 -0
- data/spec/legion/extensions/agentic/executive/chunking/helpers/constants_spec.rb +116 -0
- data/spec/legion/extensions/agentic/executive/chunking/helpers/information_item_spec.rb +75 -0
- data/spec/legion/extensions/agentic/executive/chunking/runners/cognitive_chunking_spec.rb +169 -0
- data/spec/legion/extensions/agentic/executive/cognitive_debt/client_spec.rb +73 -0
- data/spec/legion/extensions/agentic/executive/cognitive_debt/cognitive_debt_spec.rb +15 -0
- data/spec/legion/extensions/agentic/executive/cognitive_debt/helpers/constants_spec.rb +78 -0
- data/spec/legion/extensions/agentic/executive/cognitive_debt/helpers/debt_engine_spec.rb +297 -0
- data/spec/legion/extensions/agentic/executive/cognitive_debt/helpers/debt_item_spec.rb +233 -0
- data/spec/legion/extensions/agentic/executive/cognitive_debt/runners/cognitive_debt_spec.rb +196 -0
- data/spec/legion/extensions/agentic/executive/compass/client_spec.rb +16 -0
- data/spec/legion/extensions/agentic/executive/compass/helpers/bearing_spec.rb +93 -0
- data/spec/legion/extensions/agentic/executive/compass/helpers/compass_engine_spec.rb +113 -0
- data/spec/legion/extensions/agentic/executive/compass/helpers/constants_spec.rb +45 -0
- data/spec/legion/extensions/agentic/executive/compass/helpers/magnetic_bias_spec.rb +103 -0
- data/spec/legion/extensions/agentic/executive/compass/runners/cognitive_compass_spec.rb +80 -0
- data/spec/legion/extensions/agentic/executive/control/client_spec.rb +23 -0
- data/spec/legion/extensions/agentic/executive/control/helpers/control_signal_spec.rb +118 -0
- data/spec/legion/extensions/agentic/executive/control/helpers/controller_spec.rb +167 -0
- data/spec/legion/extensions/agentic/executive/control/helpers/goal_spec.rb +99 -0
- data/spec/legion/extensions/agentic/executive/control/runners/cognitive_control_spec.rb +107 -0
- data/spec/legion/extensions/agentic/executive/decision_fatigue/client_spec.rb +24 -0
- data/spec/legion/extensions/agentic/executive/decision_fatigue/helpers/constants_spec.rb +93 -0
- data/spec/legion/extensions/agentic/executive/decision_fatigue/helpers/decision_record_spec.rb +89 -0
- data/spec/legion/extensions/agentic/executive/decision_fatigue/helpers/fatigue_engine_spec.rb +216 -0
- data/spec/legion/extensions/agentic/executive/decision_fatigue/runners/decision_fatigue_spec.rb +180 -0
- data/spec/legion/extensions/agentic/executive/disengagement/helpers/constants_spec.rb +81 -0
- data/spec/legion/extensions/agentic/executive/disengagement/helpers/disengagement_engine_spec.rb +213 -0
- data/spec/legion/extensions/agentic/executive/disengagement/helpers/goal_spec.rb +289 -0
- data/spec/legion/extensions/agentic/executive/disengagement/runners/cognitive_disengagement_spec.rb +215 -0
- data/spec/legion/extensions/agentic/executive/dissonance_resolution/client_spec.rb +20 -0
- data/spec/legion/extensions/agentic/executive/dissonance_resolution/helpers/dissonance_conflict_spec.rb +107 -0
- data/spec/legion/extensions/agentic/executive/dissonance_resolution/helpers/resolution_engine_spec.rb +122 -0
- data/spec/legion/extensions/agentic/executive/dissonance_resolution/runners/cognitive_dissonance_resolution_spec.rb +49 -0
- data/spec/legion/extensions/agentic/executive/dual_process/client_spec.rb +74 -0
- data/spec/legion/extensions/agentic/executive/dual_process/helpers/constants_spec.rb +55 -0
- data/spec/legion/extensions/agentic/executive/dual_process/helpers/decision_spec.rb +76 -0
- data/spec/legion/extensions/agentic/executive/dual_process/helpers/dual_process_engine_spec.rb +274 -0
- data/spec/legion/extensions/agentic/executive/dual_process/helpers/heuristic_spec.rb +144 -0
- data/spec/legion/extensions/agentic/executive/dual_process/runners/dual_process_spec.rb +188 -0
- data/spec/legion/extensions/agentic/executive/dwell/cognitive_dwell_spec.rb +7 -0
- data/spec/legion/extensions/agentic/executive/dwell/helpers/dwell_engine_spec.rb +136 -0
- data/spec/legion/extensions/agentic/executive/dwell/helpers/dwell_topic_spec.rb +152 -0
- data/spec/legion/extensions/agentic/executive/executive_function/client_spec.rb +40 -0
- data/spec/legion/extensions/agentic/executive/executive_function/helpers/ef_component_spec.rb +108 -0
- data/spec/legion/extensions/agentic/executive/executive_function/helpers/executive_controller_spec.rb +136 -0
- data/spec/legion/extensions/agentic/executive/executive_function/runners/executive_function_spec.rb +191 -0
- data/spec/legion/extensions/agentic/executive/flexibility/client_spec.rb +20 -0
- data/spec/legion/extensions/agentic/executive/flexibility/helpers/flexibility_engine_spec.rb +119 -0
- data/spec/legion/extensions/agentic/executive/flexibility/helpers/task_set_spec.rb +87 -0
- data/spec/legion/extensions/agentic/executive/flexibility/runners/cognitive_flexibility_spec.rb +69 -0
- data/spec/legion/extensions/agentic/executive/flexibility_training/client_spec.rb +39 -0
- data/spec/legion/extensions/agentic/executive/flexibility_training/helpers/constants_spec.rb +67 -0
- data/spec/legion/extensions/agentic/executive/flexibility_training/helpers/flexibility_engine_spec.rb +209 -0
- data/spec/legion/extensions/agentic/executive/flexibility_training/helpers/switch_trial_spec.rb +77 -0
- data/spec/legion/extensions/agentic/executive/flexibility_training/helpers/training_task_spec.rb +97 -0
- data/spec/legion/extensions/agentic/executive/flexibility_training/runners/cognitive_flexibility_training_spec.rb +171 -0
- data/spec/legion/extensions/agentic/executive/goal_management/client_spec.rb +34 -0
- data/spec/legion/extensions/agentic/executive/goal_management/goal_management_spec.rb +11 -0
- data/spec/legion/extensions/agentic/executive/goal_management/helpers/constants_spec.rb +94 -0
- data/spec/legion/extensions/agentic/executive/goal_management/helpers/goal_engine_spec.rb +358 -0
- data/spec/legion/extensions/agentic/executive/goal_management/helpers/goal_spec.rb +283 -0
- data/spec/legion/extensions/agentic/executive/goal_management/runners/goal_management_spec.rb +244 -0
- data/spec/legion/extensions/agentic/executive/inertia/helpers/belief_spec.rb +128 -0
- data/spec/legion/extensions/agentic/executive/inertia/helpers/inertia_engine_spec.rb +104 -0
- data/spec/legion/extensions/agentic/executive/inertia/runners/cognitive_inertia_spec.rb +59 -0
- data/spec/legion/extensions/agentic/executive/inhibition/client_spec.rb +43 -0
- data/spec/legion/extensions/agentic/executive/inhibition/helpers/constants_spec.rb +108 -0
- data/spec/legion/extensions/agentic/executive/inhibition/helpers/impulse_spec.rb +101 -0
- data/spec/legion/extensions/agentic/executive/inhibition/helpers/inhibition_model_spec.rb +245 -0
- data/spec/legion/extensions/agentic/executive/inhibition/helpers/inhibition_store_spec.rb +126 -0
- data/spec/legion/extensions/agentic/executive/inhibition/runners/inhibition_spec.rb +242 -0
- data/spec/legion/extensions/agentic/executive/load/client_spec.rb +94 -0
- data/spec/legion/extensions/agentic/executive/load/helpers/constants_spec.rb +62 -0
- data/spec/legion/extensions/agentic/executive/load/helpers/load_model_spec.rb +314 -0
- data/spec/legion/extensions/agentic/executive/load/runners/cognitive_load_spec.rb +231 -0
- data/spec/legion/extensions/agentic/executive/load_balancing/client_spec.rb +20 -0
- data/spec/legion/extensions/agentic/executive/load_balancing/helpers/load_balancer_spec.rb +106 -0
- data/spec/legion/extensions/agentic/executive/load_balancing/helpers/subsystem_spec.rb +106 -0
- data/spec/legion/extensions/agentic/executive/load_balancing/runners/cognitive_load_balancing_spec.rb +52 -0
- data/spec/legion/extensions/agentic/executive/planning/client_spec.rb +91 -0
- data/spec/legion/extensions/agentic/executive/planning/helpers/constants_spec.rb +91 -0
- data/spec/legion/extensions/agentic/executive/planning/helpers/plan_spec.rb +230 -0
- data/spec/legion/extensions/agentic/executive/planning/helpers/plan_step_spec.rb +159 -0
- data/spec/legion/extensions/agentic/executive/planning/helpers/plan_store_spec.rb +317 -0
- data/spec/legion/extensions/agentic/executive/planning/runners/planning_spec.rb +217 -0
- data/spec/legion/extensions/agentic/executive/prospective_memory/client_spec.rb +24 -0
- data/spec/legion/extensions/agentic/executive/prospective_memory/helpers/constants_spec.rb +84 -0
- data/spec/legion/extensions/agentic/executive/prospective_memory/helpers/intention_spec.rb +194 -0
- data/spec/legion/extensions/agentic/executive/prospective_memory/helpers/prospective_engine_spec.rb +255 -0
- data/spec/legion/extensions/agentic/executive/prospective_memory/runners/prospective_memory_spec.rb +220 -0
- data/spec/legion/extensions/agentic/executive/triage/client_spec.rb +28 -0
- data/spec/legion/extensions/agentic/executive/triage/cognitive_triage_spec.rb +7 -0
- data/spec/legion/extensions/agentic/executive/triage/helpers/constants_spec.rb +41 -0
- data/spec/legion/extensions/agentic/executive/triage/helpers/demand_spec.rb +139 -0
- data/spec/legion/extensions/agentic/executive/triage/helpers/triage_engine_spec.rb +183 -0
- data/spec/legion/extensions/agentic/executive/triage/runners_spec.rb +127 -0
- data/spec/legion/extensions/agentic/executive/volition/client_spec.rb +25 -0
- data/spec/legion/extensions/agentic/executive/volition/helpers/drive_synthesizer_spec.rb +99 -0
- data/spec/legion/extensions/agentic/executive/volition/helpers/intention_spec.rb +93 -0
- data/spec/legion/extensions/agentic/executive/volition/helpers/intention_stack_spec.rb +129 -0
- data/spec/legion/extensions/agentic/executive/volition/runners/volition_spec.rb +135 -0
- data/spec/legion/extensions/agentic/executive/working_memory/client_spec.rb +93 -0
- data/spec/legion/extensions/agentic/executive/working_memory/helpers/buffer_item_spec.rb +185 -0
- data/spec/legion/extensions/agentic/executive/working_memory/helpers/buffer_spec.rb +232 -0
- data/spec/legion/extensions/agentic/executive/working_memory/helpers/constants_spec.rb +99 -0
- data/spec/legion/extensions/agentic/executive/working_memory/runners/working_memory_spec.rb +191 -0
- data/spec/spec_helper.rb +46 -0
- metadata +380 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: d156eef0f39f669acfc3f33e496196921f1b34e882c810d1416740349fc4fb84
|
|
4
|
+
data.tar.gz: 97171fb40218dca7e06373731545b30e6eadc36a51c649b3e68e75d7e067e509
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 97708ee5421c6401db3bd4899e1c0c6f62e059dfe6687d9524327e52b0b7c07ebcae937e8f5da1312467e082d8a56c5123064a0390b696cbbcb2de3b4adbbc72
|
|
7
|
+
data.tar.gz: 77360d4645be017e164d28feb1420890e990661091261a6dcc0bc15b84f169af3346a3e63af38e71162c079513357d780dffd7b073a43fd0015aa5dc79bc07ea
|
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/executive/version'
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = 'lex-agentic-executive'
|
|
7
|
+
spec.version = Legion::Extensions::Agentic::Executive::VERSION
|
|
8
|
+
spec.authors = ['Esity']
|
|
9
|
+
spec.email = ['matthewdiverson@gmail.com']
|
|
10
|
+
|
|
11
|
+
spec.summary = 'LEX Agentic Executive'
|
|
12
|
+
spec.description = 'LEX agentic executive domain: planning, working memory, cognitive control'
|
|
13
|
+
spec.homepage = 'https://github.com/LegionIO/lex-agentic-executive'
|
|
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-executive.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,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Executive
|
|
7
|
+
module Autopilot
|
|
8
|
+
class Client
|
|
9
|
+
include Runners::CognitiveAutopilot
|
|
10
|
+
|
|
11
|
+
def initialize(engine: nil)
|
|
12
|
+
@default_engine = engine || Helpers::AutopilotEngine.new
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Executive
|
|
7
|
+
module Autopilot
|
|
8
|
+
module Helpers
|
|
9
|
+
class AutopilotEngine
|
|
10
|
+
include Constants
|
|
11
|
+
|
|
12
|
+
attr_reader :current_mode, :energy
|
|
13
|
+
|
|
14
|
+
def initialize
|
|
15
|
+
@routines = {}
|
|
16
|
+
@events = {}
|
|
17
|
+
@current_mode = :deliberate
|
|
18
|
+
@energy = DEFAULT_ENERGY
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def register_routine(pattern:, domain: :routine, familiarity: 0.0)
|
|
22
|
+
prune_routines
|
|
23
|
+
routine = Routine.new(pattern: pattern, domain: domain, familiarity: familiarity)
|
|
24
|
+
@routines[routine.id] = routine
|
|
25
|
+
routine
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def execute_routine(routine_id:, success: true)
|
|
29
|
+
routine = @routines[routine_id]
|
|
30
|
+
return nil unless routine
|
|
31
|
+
|
|
32
|
+
routine.execute!(success: success)
|
|
33
|
+
cost = routine.autopilot_ready? ? AUTOPILOT_COST : DELIBERATE_COST
|
|
34
|
+
drain_energy!(cost)
|
|
35
|
+
auto_switch_mode(routine)
|
|
36
|
+
routine
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def switch_to_deliberate!(trigger: 'manual')
|
|
40
|
+
return nil if @current_mode == :deliberate
|
|
41
|
+
|
|
42
|
+
drain_energy!(OVERRIDE_COST)
|
|
43
|
+
record_event(from: @current_mode, to: :deliberate, trigger: trigger, cost: OVERRIDE_COST)
|
|
44
|
+
@current_mode = :deliberate
|
|
45
|
+
@current_mode
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def switch_to_autopilot!(trigger: 'manual')
|
|
49
|
+
return nil if @current_mode == :autopilot
|
|
50
|
+
|
|
51
|
+
record_event(from: @current_mode, to: :autopilot, trigger: trigger, cost: 0.0)
|
|
52
|
+
@current_mode = :autopilot
|
|
53
|
+
@current_mode
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def rest!(amount: 0.1)
|
|
57
|
+
@energy = (@energy + amount).clamp(0.0, 1.0).round(10)
|
|
58
|
+
self
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def decay_all!
|
|
62
|
+
@routines.each_value(&:decay!)
|
|
63
|
+
{ routines_decayed: @routines.size }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def autopilot_routines = @routines.values.select(&:autopilot_ready?)
|
|
67
|
+
def novel_routines = @routines.values.select(&:novel?)
|
|
68
|
+
|
|
69
|
+
def autopilot_ratio
|
|
70
|
+
return 0.0 if @routines.empty?
|
|
71
|
+
|
|
72
|
+
(autopilot_routines.size.to_f / @routines.size).round(10)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def override_count = @events.values.count(&:override?)
|
|
76
|
+
|
|
77
|
+
def most_familiar(limit: 5) = @routines.values.sort_by { |r| -r.familiarity }.first(limit)
|
|
78
|
+
def least_familiar(limit: 5) = @routines.values.sort_by(&:familiarity).first(limit)
|
|
79
|
+
|
|
80
|
+
def find_routine(routine_id:)
|
|
81
|
+
@routines[routine_id]
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def energy_label = Constants.label_for(ENERGY_LABELS, @energy)
|
|
85
|
+
def mode_label = Constants.label_for(MODE_LABELS, autopilot_ratio)
|
|
86
|
+
|
|
87
|
+
def exhausted?
|
|
88
|
+
@energy <= 0.2
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def autopilot_report
|
|
92
|
+
{
|
|
93
|
+
current_mode: @current_mode,
|
|
94
|
+
energy: @energy,
|
|
95
|
+
energy_label: energy_label,
|
|
96
|
+
exhausted: exhausted?,
|
|
97
|
+
total_routines: @routines.size,
|
|
98
|
+
autopilot_ready: autopilot_routines.size,
|
|
99
|
+
novel_count: novel_routines.size,
|
|
100
|
+
autopilot_ratio: autopilot_ratio,
|
|
101
|
+
mode_label: mode_label,
|
|
102
|
+
total_events: @events.size,
|
|
103
|
+
override_count: override_count,
|
|
104
|
+
most_familiar: most_familiar(limit: 3).map(&:to_h)
|
|
105
|
+
}
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def to_h
|
|
109
|
+
{
|
|
110
|
+
current_mode: @current_mode,
|
|
111
|
+
energy: @energy,
|
|
112
|
+
total_routines: @routines.size,
|
|
113
|
+
autopilot_ratio: autopilot_ratio
|
|
114
|
+
}
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
private
|
|
118
|
+
|
|
119
|
+
def auto_switch_mode(routine)
|
|
120
|
+
if routine.autopilot_ready? && @current_mode == :deliberate
|
|
121
|
+
record_event(from: :deliberate, to: :autopilot, trigger: "routine_familiar:#{routine.pattern}", cost: 0.0)
|
|
122
|
+
@current_mode = :autopilot
|
|
123
|
+
elsif routine.novel? && @current_mode == :autopilot
|
|
124
|
+
drain_energy!(OVERRIDE_COST)
|
|
125
|
+
record_event(from: :autopilot, to: :deliberate, trigger: "routine_novel:#{routine.pattern}",
|
|
126
|
+
cost: OVERRIDE_COST)
|
|
127
|
+
@current_mode = :deliberate
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def record_event(from:, to:, trigger:, cost:)
|
|
132
|
+
prune_events
|
|
133
|
+
event = ModeEvent.new(from_mode: from, to_mode: to, trigger: trigger, energy_cost: cost)
|
|
134
|
+
@events[event.id] = event
|
|
135
|
+
event
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def drain_energy!(amount)
|
|
139
|
+
@energy = (@energy - amount).clamp(0.0, 1.0).round(10)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def prune_routines
|
|
143
|
+
return if @routines.size < MAX_ROUTINES
|
|
144
|
+
|
|
145
|
+
least = @routines.values.min_by(&:familiarity)
|
|
146
|
+
@routines.delete(least.id) if least
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def prune_events
|
|
150
|
+
return if @events.size < MAX_EVENTS
|
|
151
|
+
|
|
152
|
+
oldest = @events.values.min_by(&:created_at)
|
|
153
|
+
@events.delete(oldest.id) if oldest
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Executive
|
|
7
|
+
module Autopilot
|
|
8
|
+
module Helpers
|
|
9
|
+
module Constants
|
|
10
|
+
MAX_ROUTINES = 200
|
|
11
|
+
MAX_EVENTS = 500
|
|
12
|
+
FAMILIARITY_BOOST = 0.08
|
|
13
|
+
FAMILIARITY_DECAY = 0.02
|
|
14
|
+
AUTOPILOT_THRESHOLD = 0.7
|
|
15
|
+
DELIBERATE_THRESHOLD = 0.3
|
|
16
|
+
OVERRIDE_COST = 0.15
|
|
17
|
+
AUTOPILOT_COST = 0.02
|
|
18
|
+
DELIBERATE_COST = 0.10
|
|
19
|
+
DEFAULT_ENERGY = 1.0
|
|
20
|
+
|
|
21
|
+
PROCESSING_MODES = %i[autopilot deliberate transitioning].freeze
|
|
22
|
+
|
|
23
|
+
TASK_DOMAINS = %i[
|
|
24
|
+
routine analysis creative social emergency
|
|
25
|
+
administrative technical unknown
|
|
26
|
+
].freeze
|
|
27
|
+
|
|
28
|
+
FAMILIARITY_LABELS = {
|
|
29
|
+
(0.8..) => :expert,
|
|
30
|
+
(0.6...0.8) => :proficient,
|
|
31
|
+
(0.4...0.6) => :familiar,
|
|
32
|
+
(0.2...0.4) => :learning,
|
|
33
|
+
(..0.2) => :novel
|
|
34
|
+
}.freeze
|
|
35
|
+
|
|
36
|
+
MODE_LABELS = {
|
|
37
|
+
(0.8..) => :deep_autopilot,
|
|
38
|
+
(0.6...0.8) => :light_autopilot,
|
|
39
|
+
(0.4...0.6) => :mixed,
|
|
40
|
+
(0.2...0.4) => :mostly_deliberate,
|
|
41
|
+
(..0.2) => :full_deliberate
|
|
42
|
+
}.freeze
|
|
43
|
+
|
|
44
|
+
ENERGY_LABELS = {
|
|
45
|
+
(0.8..) => :energized,
|
|
46
|
+
(0.6...0.8) => :steady,
|
|
47
|
+
(0.4...0.6) => :tiring,
|
|
48
|
+
(0.2...0.4) => :fatigued,
|
|
49
|
+
(..0.2) => :exhausted
|
|
50
|
+
}.freeze
|
|
51
|
+
|
|
52
|
+
def self.label_for(labels, value)
|
|
53
|
+
match = labels.find { |range, _| range.cover?(value) }
|
|
54
|
+
match&.last
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'securerandom'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Agentic
|
|
8
|
+
module Executive
|
|
9
|
+
module Autopilot
|
|
10
|
+
module Helpers
|
|
11
|
+
class ModeEvent
|
|
12
|
+
include Constants
|
|
13
|
+
|
|
14
|
+
attr_reader :id, :from_mode, :to_mode, :trigger, :energy_cost, :created_at
|
|
15
|
+
|
|
16
|
+
def initialize(from_mode:, to_mode:, trigger:, energy_cost: 0.0)
|
|
17
|
+
@id = SecureRandom.uuid
|
|
18
|
+
@from_mode = from_mode.to_sym
|
|
19
|
+
@to_mode = to_mode.to_sym
|
|
20
|
+
@trigger = trigger.to_s
|
|
21
|
+
@energy_cost = energy_cost.to_f.clamp(0.0, 1.0).round(10)
|
|
22
|
+
@created_at = Time.now.utc
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def override?
|
|
26
|
+
@from_mode == :autopilot && @to_mode == :deliberate
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def engage_autopilot?
|
|
30
|
+
@from_mode == :deliberate && @to_mode == :autopilot
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def to_h
|
|
34
|
+
{
|
|
35
|
+
id: @id,
|
|
36
|
+
from_mode: @from_mode,
|
|
37
|
+
to_mode: @to_mode,
|
|
38
|
+
trigger: @trigger,
|
|
39
|
+
energy_cost: @energy_cost,
|
|
40
|
+
override: override?,
|
|
41
|
+
engage_autopilot: engage_autopilot?,
|
|
42
|
+
created_at: @created_at
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'securerandom'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Agentic
|
|
8
|
+
module Executive
|
|
9
|
+
module Autopilot
|
|
10
|
+
module Helpers
|
|
11
|
+
class Routine
|
|
12
|
+
include Constants
|
|
13
|
+
|
|
14
|
+
attr_reader :id, :pattern, :domain, :familiarity, :execution_count,
|
|
15
|
+
:success_count, :failure_count, :created_at, :last_executed_at
|
|
16
|
+
|
|
17
|
+
def initialize(pattern:, domain: :routine, familiarity: 0.0)
|
|
18
|
+
@id = SecureRandom.uuid
|
|
19
|
+
@pattern = pattern
|
|
20
|
+
@domain = validate_domain(domain)
|
|
21
|
+
@familiarity = familiarity.to_f.clamp(0.0, 1.0).round(10)
|
|
22
|
+
@execution_count = 0
|
|
23
|
+
@success_count = 0
|
|
24
|
+
@failure_count = 0
|
|
25
|
+
@created_at = Time.now.utc
|
|
26
|
+
@last_executed_at = nil
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def execute!(success: true)
|
|
30
|
+
@execution_count += 1
|
|
31
|
+
@last_executed_at = Time.now.utc
|
|
32
|
+
if success
|
|
33
|
+
@success_count += 1
|
|
34
|
+
@familiarity = (@familiarity + FAMILIARITY_BOOST).clamp(0.0, 1.0).round(10)
|
|
35
|
+
else
|
|
36
|
+
@failure_count += 1
|
|
37
|
+
@familiarity = (@familiarity - FAMILIARITY_BOOST).clamp(0.0, 1.0).round(10)
|
|
38
|
+
end
|
|
39
|
+
self
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def decay!
|
|
43
|
+
@familiarity = (@familiarity - FAMILIARITY_DECAY).clamp(0.0, 1.0).round(10)
|
|
44
|
+
self
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def autopilot_ready?
|
|
48
|
+
@familiarity >= AUTOPILOT_THRESHOLD
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def novel?
|
|
52
|
+
@familiarity <= DELIBERATE_THRESHOLD
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def success_rate
|
|
56
|
+
return 0.0 if @execution_count.zero?
|
|
57
|
+
|
|
58
|
+
(@success_count.to_f / @execution_count).round(10)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def familiarity_label = Constants.label_for(FAMILIARITY_LABELS, @familiarity)
|
|
62
|
+
|
|
63
|
+
def to_h
|
|
64
|
+
{
|
|
65
|
+
id: @id,
|
|
66
|
+
pattern: @pattern,
|
|
67
|
+
domain: @domain,
|
|
68
|
+
familiarity: @familiarity,
|
|
69
|
+
familiarity_label: familiarity_label,
|
|
70
|
+
autopilot_ready: autopilot_ready?,
|
|
71
|
+
novel: novel?,
|
|
72
|
+
execution_count: @execution_count,
|
|
73
|
+
success_rate: success_rate,
|
|
74
|
+
created_at: @created_at,
|
|
75
|
+
last_executed_at: @last_executed_at
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
private
|
|
80
|
+
|
|
81
|
+
def validate_domain(domain)
|
|
82
|
+
sym = domain.to_sym
|
|
83
|
+
TASK_DOMAINS.include?(sym) ? sym : :unknown
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Executive
|
|
7
|
+
module Autopilot
|
|
8
|
+
module Runners
|
|
9
|
+
module CognitiveAutopilot
|
|
10
|
+
include Legion::Extensions::Helpers::Lex if defined?(Legion::Extensions::Helpers::Lex)
|
|
11
|
+
|
|
12
|
+
def register_routine(pattern:, domain: :routine, familiarity: 0.0, engine: nil, **)
|
|
13
|
+
eng = engine || default_engine
|
|
14
|
+
routine = eng.register_routine(pattern: pattern, domain: domain, familiarity: familiarity)
|
|
15
|
+
{ success: true, routine: routine.to_h }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def execute_routine(routine_id:, success: true, engine: nil, **)
|
|
19
|
+
eng = engine || default_engine
|
|
20
|
+
routine = eng.execute_routine(routine_id: routine_id, success: success)
|
|
21
|
+
return { success: false, error: 'routine not found' } unless routine
|
|
22
|
+
|
|
23
|
+
{ success: true, routine: routine.to_h, mode: eng.current_mode, energy: eng.energy }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def switch_to_deliberate(trigger: 'manual', engine: nil, **)
|
|
27
|
+
eng = engine || default_engine
|
|
28
|
+
result = eng.switch_to_deliberate!(trigger: trigger)
|
|
29
|
+
return { success: false, error: 'already in deliberate mode' } unless result
|
|
30
|
+
|
|
31
|
+
{ success: true, mode: :deliberate, energy: eng.energy }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def switch_to_autopilot(trigger: 'manual', engine: nil, **)
|
|
35
|
+
eng = engine || default_engine
|
|
36
|
+
result = eng.switch_to_autopilot!(trigger: trigger)
|
|
37
|
+
return { success: false, error: 'already in autopilot mode' } unless result
|
|
38
|
+
|
|
39
|
+
{ success: true, mode: :autopilot, energy: eng.energy }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def rest(amount: 0.1, engine: nil, **)
|
|
43
|
+
eng = engine || default_engine
|
|
44
|
+
eng.rest!(amount: amount)
|
|
45
|
+
{ success: true, energy: eng.energy, energy_label: eng.energy_label }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def decay_all(engine: nil, **)
|
|
49
|
+
eng = engine || default_engine
|
|
50
|
+
result = eng.decay_all!
|
|
51
|
+
{ success: true, **result }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def autopilot_routines(engine: nil, **)
|
|
55
|
+
eng = engine || default_engine
|
|
56
|
+
{ success: true, routines: eng.autopilot_routines.map(&:to_h), count: eng.autopilot_routines.size }
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def novel_routines(engine: nil, **)
|
|
60
|
+
eng = engine || default_engine
|
|
61
|
+
{ success: true, routines: eng.novel_routines.map(&:to_h), count: eng.novel_routines.size }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def most_familiar(limit: 5, engine: nil, **)
|
|
65
|
+
eng = engine || default_engine
|
|
66
|
+
{ success: true, routines: eng.most_familiar(limit: limit).map(&:to_h) }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def get_routine(routine_id:, engine: nil, **)
|
|
70
|
+
eng = engine || default_engine
|
|
71
|
+
routine = eng.find_routine(routine_id: routine_id)
|
|
72
|
+
return { success: false, error: 'routine not found' } unless routine
|
|
73
|
+
|
|
74
|
+
{ success: true, routine: routine.to_h }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def autopilot_status(engine: nil, **)
|
|
78
|
+
eng = engine || default_engine
|
|
79
|
+
{ success: true, **eng.autopilot_report }
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
private
|
|
83
|
+
|
|
84
|
+
def default_engine
|
|
85
|
+
@default_engine ||= Helpers::AutopilotEngine.new
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'autopilot/version'
|
|
4
|
+
require_relative 'autopilot/helpers/constants'
|
|
5
|
+
require_relative 'autopilot/helpers/routine'
|
|
6
|
+
require_relative 'autopilot/helpers/mode_event'
|
|
7
|
+
require_relative 'autopilot/helpers/autopilot_engine'
|
|
8
|
+
require_relative 'autopilot/runners/cognitive_autopilot'
|
|
9
|
+
require_relative 'autopilot/client'
|
|
10
|
+
|
|
11
|
+
module Legion
|
|
12
|
+
module Extensions
|
|
13
|
+
module Agentic
|
|
14
|
+
module Executive
|
|
15
|
+
module Autopilot
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/agentic/executive/chunking/runners/cognitive_chunking'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Agentic
|
|
8
|
+
module Executive
|
|
9
|
+
module Chunking
|
|
10
|
+
class Client
|
|
11
|
+
include Runners::CognitiveChunking
|
|
12
|
+
|
|
13
|
+
def initialize(**)
|
|
14
|
+
@chunking_engine = Helpers::ChunkingEngine.new
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|