lex-agentic-self 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-self.gemspec +31 -0
- data/lib/legion/extensions/agentic/self/agency/client.rb +21 -0
- data/lib/legion/extensions/agentic/self/agency/helpers/constants.rb +77 -0
- data/lib/legion/extensions/agentic/self/agency/helpers/efficacy_model.rb +136 -0
- data/lib/legion/extensions/agentic/self/agency/helpers/outcome_event.rb +52 -0
- data/lib/legion/extensions/agentic/self/agency/runners/agency.rb +117 -0
- data/lib/legion/extensions/agentic/self/agency/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/agency.rb +19 -0
- data/lib/legion/extensions/agentic/self/anchor/client.rb +15 -0
- data/lib/legion/extensions/agentic/self/anchor/helpers/anchor.rb +92 -0
- data/lib/legion/extensions/agentic/self/anchor/helpers/anchor_engine.rb +123 -0
- data/lib/legion/extensions/agentic/self/anchor/helpers/chain.rb +93 -0
- data/lib/legion/extensions/agentic/self/anchor/helpers/constants.rb +46 -0
- data/lib/legion/extensions/agentic/self/anchor/runners/cognitive_anchor.rb +70 -0
- data/lib/legion/extensions/agentic/self/anchor/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/anchor.rb +22 -0
- data/lib/legion/extensions/agentic/self/anosognosia/client.rb +28 -0
- data/lib/legion/extensions/agentic/self/anosognosia/helpers/anosognosia_engine.rb +153 -0
- data/lib/legion/extensions/agentic/self/anosognosia/helpers/cognitive_deficit.rb +71 -0
- data/lib/legion/extensions/agentic/self/anosognosia/helpers/constants.rb +29 -0
- data/lib/legion/extensions/agentic/self/anosognosia/runners/anosognosia.rb +98 -0
- data/lib/legion/extensions/agentic/self/anosognosia/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/anosognosia.rb +19 -0
- data/lib/legion/extensions/agentic/self/architecture/client.rb +19 -0
- data/lib/legion/extensions/agentic/self/architecture/helpers/architecture_engine.rb +167 -0
- data/lib/legion/extensions/agentic/self/architecture/helpers/connection.rb +57 -0
- data/lib/legion/extensions/agentic/self/architecture/helpers/constants.rb +37 -0
- data/lib/legion/extensions/agentic/self/architecture/helpers/subsystem.rb +80 -0
- data/lib/legion/extensions/agentic/self/architecture/runners/cognitive_architecture.rb +125 -0
- data/lib/legion/extensions/agentic/self/architecture/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/architecture.rb +20 -0
- data/lib/legion/extensions/agentic/self/default_mode_network/actors/idle.rb +45 -0
- data/lib/legion/extensions/agentic/self/default_mode_network/client.rb +28 -0
- data/lib/legion/extensions/agentic/self/default_mode_network/helpers/constants.rb +53 -0
- data/lib/legion/extensions/agentic/self/default_mode_network/helpers/dmn_engine.rb +221 -0
- data/lib/legion/extensions/agentic/self/default_mode_network/helpers/wandering_thought.rb +60 -0
- data/lib/legion/extensions/agentic/self/default_mode_network/runners/default_mode_network.rb +122 -0
- data/lib/legion/extensions/agentic/self/default_mode_network/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/default_mode_network.rb +20 -0
- data/lib/legion/extensions/agentic/self/fingerprint/client.rb +28 -0
- data/lib/legion/extensions/agentic/self/fingerprint/helpers/cognitive_trait.rb +73 -0
- data/lib/legion/extensions/agentic/self/fingerprint/helpers/constants.rb +60 -0
- data/lib/legion/extensions/agentic/self/fingerprint/helpers/fingerprint_engine.rb +169 -0
- data/lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb +86 -0
- data/lib/legion/extensions/agentic/self/fingerprint/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/fingerprint.rb +19 -0
- data/lib/legion/extensions/agentic/self/identity/actors/credential_refresh.rb +49 -0
- data/lib/legion/extensions/agentic/self/identity/actors/orphan_check.rb +52 -0
- data/lib/legion/extensions/agentic/self/identity/client.rb +27 -0
- data/lib/legion/extensions/agentic/self/identity/helpers/dimensions.rb +75 -0
- data/lib/legion/extensions/agentic/self/identity/helpers/fingerprint.rb +170 -0
- data/lib/legion/extensions/agentic/self/identity/helpers/graph_client.rb +29 -0
- data/lib/legion/extensions/agentic/self/identity/helpers/graph_token.rb +36 -0
- data/lib/legion/extensions/agentic/self/identity/helpers/token_cache.rb +59 -0
- data/lib/legion/extensions/agentic/self/identity/helpers/vault_secrets.rb +80 -0
- data/lib/legion/extensions/agentic/self/identity/local_migrations/20260316000030_create_fingerprint.rb +20 -0
- data/lib/legion/extensions/agentic/self/identity/runners/entra.rb +402 -0
- data/lib/legion/extensions/agentic/self/identity/runners/identity.rb +90 -0
- data/lib/legion/extensions/agentic/self/identity/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/identity.rb +28 -0
- data/lib/legion/extensions/agentic/self/metacognition/client.rb +27 -0
- data/lib/legion/extensions/agentic/self/metacognition/helpers/constants.rb +377 -0
- data/lib/legion/extensions/agentic/self/metacognition/helpers/narrator_bridge.rb +85 -0
- data/lib/legion/extensions/agentic/self/metacognition/helpers/registry_store.rb +70 -0
- data/lib/legion/extensions/agentic/self/metacognition/helpers/self_model.rb +160 -0
- data/lib/legion/extensions/agentic/self/metacognition/helpers/snapshot_store.rb +82 -0
- data/lib/legion/extensions/agentic/self/metacognition/runners/metacognition.rb +116 -0
- data/lib/legion/extensions/agentic/self/metacognition/runners/registry.rb +180 -0
- data/lib/legion/extensions/agentic/self/metacognition/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/metacognition.rb +22 -0
- data/lib/legion/extensions/agentic/self/metacognitive_monitoring/client.rb +25 -0
- data/lib/legion/extensions/agentic/self/metacognitive_monitoring/helpers/calibration_tracker.rb +96 -0
- data/lib/legion/extensions/agentic/self/metacognitive_monitoring/helpers/constants.rb +47 -0
- data/lib/legion/extensions/agentic/self/metacognitive_monitoring/helpers/monitoring_engine.rb +141 -0
- data/lib/legion/extensions/agentic/self/metacognitive_monitoring/helpers/monitoring_judgment.rb +79 -0
- data/lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb +151 -0
- data/lib/legion/extensions/agentic/self/metacognitive_monitoring/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/metacognitive_monitoring.rb +20 -0
- data/lib/legion/extensions/agentic/self/narrative_arc/client.rb +29 -0
- data/lib/legion/extensions/agentic/self/narrative_arc/helpers/arc.rb +137 -0
- data/lib/legion/extensions/agentic/self/narrative_arc/helpers/arc_engine.rb +119 -0
- data/lib/legion/extensions/agentic/self/narrative_arc/helpers/beat_event.rb +59 -0
- data/lib/legion/extensions/agentic/self/narrative_arc/helpers/constants.rb +66 -0
- data/lib/legion/extensions/agentic/self/narrative_arc/runners/narrative.rb +101 -0
- data/lib/legion/extensions/agentic/self/narrative_arc/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/narrative_arc.rb +20 -0
- data/lib/legion/extensions/agentic/self/narrative_identity/actors/narrative_decay.rb +45 -0
- data/lib/legion/extensions/agentic/self/narrative_identity/client.rb +22 -0
- data/lib/legion/extensions/agentic/self/narrative_identity/helpers/chapter.rb +48 -0
- data/lib/legion/extensions/agentic/self/narrative_identity/helpers/constants.rb +62 -0
- data/lib/legion/extensions/agentic/self/narrative_identity/helpers/episode.rb +67 -0
- data/lib/legion/extensions/agentic/self/narrative_identity/helpers/narrative_engine.rb +187 -0
- data/lib/legion/extensions/agentic/self/narrative_identity/helpers/theme.rb +50 -0
- data/lib/legion/extensions/agentic/self/narrative_identity/runners/narrative_identity.rb +158 -0
- data/lib/legion/extensions/agentic/self/narrative_identity/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/narrative_identity.rb +21 -0
- data/lib/legion/extensions/agentic/self/narrative_self/client.rb +27 -0
- data/lib/legion/extensions/agentic/self/narrative_self/helpers/autobiography.rb +187 -0
- data/lib/legion/extensions/agentic/self/narrative_self/helpers/constants.rb +42 -0
- data/lib/legion/extensions/agentic/self/narrative_self/helpers/episode.rb +81 -0
- data/lib/legion/extensions/agentic/self/narrative_self/helpers/narrative_thread.rb +65 -0
- data/lib/legion/extensions/agentic/self/narrative_self/runners/narrative_self.rb +86 -0
- data/lib/legion/extensions/agentic/self/narrative_self/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/narrative_self.rb +20 -0
- data/lib/legion/extensions/agentic/self/personality/client.rb +21 -0
- data/lib/legion/extensions/agentic/self/personality/helpers/constants.rb +84 -0
- data/lib/legion/extensions/agentic/self/personality/helpers/personality_store.rb +126 -0
- data/lib/legion/extensions/agentic/self/personality/helpers/trait_model.rb +147 -0
- data/lib/legion/extensions/agentic/self/personality/runners/personality.rb +102 -0
- data/lib/legion/extensions/agentic/self/personality/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/personality.rb +19 -0
- data/lib/legion/extensions/agentic/self/reflection/client.rb +27 -0
- data/lib/legion/extensions/agentic/self/reflection/helpers/constants.rb +66 -0
- data/lib/legion/extensions/agentic/self/reflection/helpers/llm_enhancer.rb +166 -0
- data/lib/legion/extensions/agentic/self/reflection/helpers/monitors.rb +186 -0
- data/lib/legion/extensions/agentic/self/reflection/helpers/reflection.rb +54 -0
- data/lib/legion/extensions/agentic/self/reflection/helpers/reflection_store.rb +99 -0
- data/lib/legion/extensions/agentic/self/reflection/runners/reflection.rb +199 -0
- data/lib/legion/extensions/agentic/self/reflection/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/reflection.rb +21 -0
- data/lib/legion/extensions/agentic/self/self_model/client.rb +19 -0
- data/lib/legion/extensions/agentic/self/self_model/helpers/capability.rb +93 -0
- data/lib/legion/extensions/agentic/self/self_model/helpers/constants.rb +46 -0
- data/lib/legion/extensions/agentic/self/self_model/helpers/knowledge_domain.rb +82 -0
- data/lib/legion/extensions/agentic/self/self_model/helpers/self_model.rb +150 -0
- data/lib/legion/extensions/agentic/self/self_model/runners/self_model.rb +82 -0
- data/lib/legion/extensions/agentic/self/self_model/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/self_model.rb +21 -0
- data/lib/legion/extensions/agentic/self/self_talk/actors/volume_decay.rb +45 -0
- data/lib/legion/extensions/agentic/self/self_talk/client.rb +30 -0
- data/lib/legion/extensions/agentic/self/self_talk/helpers/constants.rb +63 -0
- data/lib/legion/extensions/agentic/self/self_talk/helpers/dialogue.rb +114 -0
- data/lib/legion/extensions/agentic/self/self_talk/helpers/dialogue_turn.rb +43 -0
- data/lib/legion/extensions/agentic/self/self_talk/helpers/inner_voice.rb +77 -0
- data/lib/legion/extensions/agentic/self/self_talk/helpers/llm_enhancer.rb +135 -0
- data/lib/legion/extensions/agentic/self/self_talk/helpers/self_talk_engine.rb +160 -0
- data/lib/legion/extensions/agentic/self/self_talk/runners/self_talk.rb +172 -0
- data/lib/legion/extensions/agentic/self/self_talk/version.rb +13 -0
- data/lib/legion/extensions/agentic/self/self_talk.rb +22 -0
- data/lib/legion/extensions/agentic/self/version.rb +11 -0
- data/lib/legion/extensions/agentic/self.rb +33 -0
- data/spec/legion/extensions/agentic/self/agency/client_spec.rb +67 -0
- data/spec/legion/extensions/agentic/self/agency/helpers/constants_spec.rb +73 -0
- data/spec/legion/extensions/agentic/self/agency/helpers/efficacy_model_spec.rb +190 -0
- data/spec/legion/extensions/agentic/self/agency/helpers/outcome_event_spec.rb +85 -0
- data/spec/legion/extensions/agentic/self/agency/runners/agency_spec.rb +132 -0
- data/spec/legion/extensions/agentic/self/anchor/client_spec.rb +30 -0
- data/spec/legion/extensions/agentic/self/anchor/helpers/anchor_engine_spec.rb +109 -0
- data/spec/legion/extensions/agentic/self/anchor/helpers/anchor_spec.rb +124 -0
- data/spec/legion/extensions/agentic/self/anchor/helpers/chain_spec.rb +106 -0
- data/spec/legion/extensions/agentic/self/anchor/helpers/constants_spec.rb +53 -0
- data/spec/legion/extensions/agentic/self/anchor/runners/cognitive_anchor_spec.rb +70 -0
- data/spec/legion/extensions/agentic/self/anosognosia/anosognosia_spec.rb +15 -0
- data/spec/legion/extensions/agentic/self/anosognosia/client_spec.rb +50 -0
- data/spec/legion/extensions/agentic/self/anosognosia/helpers/anosognosia_engine_spec.rb +266 -0
- data/spec/legion/extensions/agentic/self/anosognosia/helpers/cognitive_deficit_spec.rb +150 -0
- data/spec/legion/extensions/agentic/self/anosognosia/helpers/constants_spec.rb +58 -0
- data/spec/legion/extensions/agentic/self/anosognosia/runners/anosognosia_spec.rb +225 -0
- data/spec/legion/extensions/agentic/self/architecture/client_spec.rb +51 -0
- data/spec/legion/extensions/agentic/self/architecture/helpers/architecture_engine_spec.rb +321 -0
- data/spec/legion/extensions/agentic/self/architecture/helpers/connection_spec.rb +118 -0
- data/spec/legion/extensions/agentic/self/architecture/helpers/subsystem_spec.rb +189 -0
- data/spec/legion/extensions/agentic/self/architecture/runners/cognitive_architecture_spec.rb +181 -0
- data/spec/legion/extensions/agentic/self/default_mode_network/client_spec.rb +69 -0
- data/spec/legion/extensions/agentic/self/default_mode_network/helpers/constants_spec.rb +76 -0
- data/spec/legion/extensions/agentic/self/default_mode_network/helpers/dmn_engine_spec.rb +321 -0
- data/spec/legion/extensions/agentic/self/default_mode_network/helpers/wandering_thought_spec.rb +145 -0
- data/spec/legion/extensions/agentic/self/default_mode_network/runners/default_mode_network_spec.rb +269 -0
- data/spec/legion/extensions/agentic/self/fingerprint/client_spec.rb +54 -0
- data/spec/legion/extensions/agentic/self/fingerprint/helpers/cognitive_trait_spec.rb +180 -0
- data/spec/legion/extensions/agentic/self/fingerprint/helpers/constants_spec.rb +108 -0
- data/spec/legion/extensions/agentic/self/fingerprint/helpers/fingerprint_engine_spec.rb +318 -0
- data/spec/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint_spec.rb +232 -0
- data/spec/legion/extensions/agentic/self/identity/actors/orphan_check_spec.rb +104 -0
- data/spec/legion/extensions/agentic/self/identity/client_spec.rb +32 -0
- data/spec/legion/extensions/agentic/self/identity/helpers/dimensions_spec.rb +51 -0
- data/spec/legion/extensions/agentic/self/identity/helpers/fingerprint_spec.rb +66 -0
- data/spec/legion/extensions/agentic/self/identity/helpers/graph_client_spec.rb +19 -0
- data/spec/legion/extensions/agentic/self/identity/helpers/graph_token_spec.rb +31 -0
- data/spec/legion/extensions/agentic/self/identity/helpers/token_cache_spec.rb +50 -0
- data/spec/legion/extensions/agentic/self/identity/local_persistence_spec.rb +329 -0
- data/spec/legion/extensions/agentic/self/identity/runners/entra_spec.rb +655 -0
- data/spec/legion/extensions/agentic/self/identity/runners/identity_spec.rb +61 -0
- data/spec/legion/extensions/agentic/self/metacognition/client_spec.rb +20 -0
- data/spec/legion/extensions/agentic/self/metacognition/helpers/constants_spec.rb +31 -0
- data/spec/legion/extensions/agentic/self/metacognition/helpers/narrator_bridge_spec.rb +102 -0
- data/spec/legion/extensions/agentic/self/metacognition/helpers/registry_store_spec.rb +227 -0
- data/spec/legion/extensions/agentic/self/metacognition/helpers/self_model_spec.rb +117 -0
- data/spec/legion/extensions/agentic/self/metacognition/helpers/snapshot_store_spec.rb +128 -0
- data/spec/legion/extensions/agentic/self/metacognition/runners/metacognition_spec.rb +110 -0
- data/spec/legion/extensions/agentic/self/metacognition/runners/registry_spec.rb +281 -0
- data/spec/legion/extensions/agentic/self/metacognitive_monitoring/client_spec.rb +59 -0
- data/spec/legion/extensions/agentic/self/metacognitive_monitoring/helpers/calibration_tracker_spec.rb +143 -0
- data/spec/legion/extensions/agentic/self/metacognitive_monitoring/helpers/constants_spec.rb +91 -0
- data/spec/legion/extensions/agentic/self/metacognitive_monitoring/helpers/monitoring_engine_spec.rb +198 -0
- data/spec/legion/extensions/agentic/self/metacognitive_monitoring/helpers/monitoring_judgment_spec.rb +172 -0
- data/spec/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring_spec.rb +244 -0
- data/spec/legion/extensions/agentic/self/narrative_arc/client_spec.rb +22 -0
- data/spec/legion/extensions/agentic/self/narrative_arc/helpers/arc_engine_spec.rb +183 -0
- data/spec/legion/extensions/agentic/self/narrative_arc/helpers/arc_spec.rb +177 -0
- data/spec/legion/extensions/agentic/self/narrative_arc/helpers/beat_event_spec.rb +96 -0
- data/spec/legion/extensions/agentic/self/narrative_arc/helpers/constants_spec.rb +75 -0
- data/spec/legion/extensions/agentic/self/narrative_arc/runners/narrative_spec.rb +142 -0
- data/spec/legion/extensions/agentic/self/narrative_identity/client_spec.rb +69 -0
- data/spec/legion/extensions/agentic/self/narrative_identity/helpers/chapter_spec.rb +85 -0
- data/spec/legion/extensions/agentic/self/narrative_identity/helpers/constants_spec.rb +83 -0
- data/spec/legion/extensions/agentic/self/narrative_identity/helpers/episode_spec.rb +180 -0
- data/spec/legion/extensions/agentic/self/narrative_identity/helpers/narrative_engine_spec.rb +307 -0
- data/spec/legion/extensions/agentic/self/narrative_identity/helpers/theme_spec.rb +107 -0
- data/spec/legion/extensions/agentic/self/narrative_identity/runners/narrative_identity_spec.rb +240 -0
- data/spec/legion/extensions/agentic/self/narrative_self/client_spec.rb +67 -0
- data/spec/legion/extensions/agentic/self/narrative_self/helpers/autobiography_spec.rb +155 -0
- data/spec/legion/extensions/agentic/self/narrative_self/helpers/constants_spec.rb +28 -0
- data/spec/legion/extensions/agentic/self/narrative_self/helpers/episode_spec.rb +144 -0
- data/spec/legion/extensions/agentic/self/narrative_self/helpers/narrative_thread_spec.rb +87 -0
- data/spec/legion/extensions/agentic/self/narrative_self/runners/narrative_self_spec.rb +118 -0
- data/spec/legion/extensions/agentic/self/personality/client_spec.rb +20 -0
- data/spec/legion/extensions/agentic/self/personality/helpers/constants_spec.rb +41 -0
- data/spec/legion/extensions/agentic/self/personality/helpers/personality_store_spec.rb +66 -0
- data/spec/legion/extensions/agentic/self/personality/helpers/trait_model_spec.rb +148 -0
- data/spec/legion/extensions/agentic/self/personality/runners/personality_spec.rb +67 -0
- data/spec/legion/extensions/agentic/self/reflection/client_spec.rb +24 -0
- data/spec/legion/extensions/agentic/self/reflection/helpers/llm_enhancer_spec.rb +191 -0
- data/spec/legion/extensions/agentic/self/reflection/helpers/monitors_spec.rb +120 -0
- data/spec/legion/extensions/agentic/self/reflection/helpers/reflection_spec.rb +49 -0
- data/spec/legion/extensions/agentic/self/reflection/helpers/reflection_store_spec.rb +93 -0
- data/spec/legion/extensions/agentic/self/reflection/runners/reflection_spec.rb +204 -0
- data/spec/legion/extensions/agentic/self/self_model/client_spec.rb +55 -0
- data/spec/legion/extensions/agentic/self/self_model/helpers/capability_spec.rb +160 -0
- data/spec/legion/extensions/agentic/self/self_model/helpers/knowledge_domain_spec.rb +128 -0
- data/spec/legion/extensions/agentic/self/self_model/helpers/self_model_spec.rb +238 -0
- data/spec/legion/extensions/agentic/self/self_model/runners/self_model_spec.rb +143 -0
- data/spec/legion/extensions/agentic/self/self_talk/actors/volume_decay_spec.rb +46 -0
- data/spec/legion/extensions/agentic/self/self_talk/client_spec.rb +26 -0
- data/spec/legion/extensions/agentic/self/self_talk/helpers/constants_spec.rb +110 -0
- data/spec/legion/extensions/agentic/self/self_talk/helpers/dialogue_spec.rb +191 -0
- data/spec/legion/extensions/agentic/self/self_talk/helpers/dialogue_turn_spec.rb +78 -0
- data/spec/legion/extensions/agentic/self/self_talk/helpers/inner_voice_spec.rb +172 -0
- data/spec/legion/extensions/agentic/self/self_talk/helpers/llm_enhancer_spec.rb +206 -0
- data/spec/legion/extensions/agentic/self/self_talk/helpers/self_talk_engine_spec.rb +239 -0
- data/spec/legion/extensions/agentic/self/self_talk/runners/self_talk_llm_spec.rb +169 -0
- data/spec/legion/extensions/agentic/self/self_talk/runners/self_talk_spec.rb +196 -0
- data/spec/spec_helper.rb +46 -0
- metadata +347 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Self
|
|
7
|
+
module Metacognition
|
|
8
|
+
module Helpers
|
|
9
|
+
module Constants
|
|
10
|
+
# Maximum cached self-model snapshots
|
|
11
|
+
MAX_SNAPSHOTS = 50
|
|
12
|
+
|
|
13
|
+
# How long a self-model snapshot is considered fresh (seconds)
|
|
14
|
+
SNAPSHOT_TTL = 30
|
|
15
|
+
|
|
16
|
+
# Subsystems the self-model introspects
|
|
17
|
+
SUBSYSTEMS = %i[
|
|
18
|
+
tick cortex memory emotion prediction identity
|
|
19
|
+
curiosity attention reflection volition language
|
|
20
|
+
trust consent coldstart mesh dream
|
|
21
|
+
narrator metacognition homeostasis empathy
|
|
22
|
+
imagination mood salience habit temporal
|
|
23
|
+
fatigue personality flow reward
|
|
24
|
+
conscience resilience social creativity
|
|
25
|
+
theory_of_mind planning inhibition schema
|
|
26
|
+
working_memory motivation agency surprise
|
|
27
|
+
priming dissonance gestalt bias
|
|
28
|
+
arousal context anchoring
|
|
29
|
+
narrative_self cognitive_load
|
|
30
|
+
learning_rate emotional_regulation
|
|
31
|
+
mentalizing prospection
|
|
32
|
+
interoception mirror joint_attention
|
|
33
|
+
semantic_memory default_mode_network
|
|
34
|
+
predictive_coding attention_schema
|
|
35
|
+
global_workspace hebbian_assembly
|
|
36
|
+
cognitive_map error_monitoring
|
|
37
|
+
neuromodulation feature_binding
|
|
38
|
+
executive_function neural_oscillation
|
|
39
|
+
source_monitoring somatic_marker
|
|
40
|
+
affordance episodic_buffer
|
|
41
|
+
cognitive_flexibility embodied_simulation
|
|
42
|
+
predictive_processing belief_revision
|
|
43
|
+
mental_time_travel cognitive_control
|
|
44
|
+
perceptual_inference inner_speech
|
|
45
|
+
self_model cognitive_rhythm
|
|
46
|
+
cognitive_empathy attention_regulation
|
|
47
|
+
intuition free_energy
|
|
48
|
+
counterfactual moral_reasoning
|
|
49
|
+
analogical_reasoning causal_reasoning
|
|
50
|
+
cognitive_reserve appraisal
|
|
51
|
+
cognitive_coherence conceptual_blending
|
|
52
|
+
dual_process abductive_reasoning
|
|
53
|
+
social_learning conceptual_metaphor
|
|
54
|
+
procedural_learning signal_detection
|
|
55
|
+
bayesian_belief cognitive_scaffolding
|
|
56
|
+
enactive_cognition distributed_cognition
|
|
57
|
+
cognitive_entrainment narrative_reasoning
|
|
58
|
+
causal_attribution cognitive_apprenticeship
|
|
59
|
+
pragmatic_inference
|
|
60
|
+
cognitive_momentum relevance_theory
|
|
61
|
+
situation_model cognitive_disengagement
|
|
62
|
+
epistemic_vigilance frame_semantics
|
|
63
|
+
expectation_violation
|
|
64
|
+
argument_mapping mental_simulation
|
|
65
|
+
cognitive_grammar cognitive_architecture
|
|
66
|
+
cognitive_fatigue_model uncertainty_tolerance
|
|
67
|
+
preference_learning
|
|
68
|
+
temporal_discounting cognitive_immunology
|
|
69
|
+
phenomenal_binding meta_learning
|
|
70
|
+
cognitive_homeostasis attentional_blink
|
|
71
|
+
cognitive_contagion prospective_memory
|
|
72
|
+
cognitive_dissonance_resolution attention_economy
|
|
73
|
+
cognitive_load_balancing semantic_satiation
|
|
74
|
+
cognitive_debt reality_testing cognitive_friction
|
|
75
|
+
epistemic_curiosity cognitive_boundary decision_fatigue
|
|
76
|
+
cognitive_resonance latent_inhibition cognitive_surplus
|
|
77
|
+
transfer_learning cognitive_compression cognitive_plasticity
|
|
78
|
+
anosognosia confabulation cognitive_tempo
|
|
79
|
+
hypothesis_testing cognitive_inertia sensory_gating
|
|
80
|
+
cognitive_synthesis metacognitive_monitoring
|
|
81
|
+
cognitive_defusion cognitive_reappraisal
|
|
82
|
+
semantic_priming cognitive_integration
|
|
83
|
+
cognitive_flexibility_training perspective_shifting
|
|
84
|
+
cognitive_offloading cognitive_chunking
|
|
85
|
+
attention_switching cognitive_dwell
|
|
86
|
+
goal_management cognitive_debugging
|
|
87
|
+
attention_spotlight cognitive_immune_response
|
|
88
|
+
narrative_identity cognitive_triage
|
|
89
|
+
cognitive_horizon cognitive_autopilot self_talk
|
|
90
|
+
cognitive_weathering cognitive_fingerprint cognitive_echo
|
|
91
|
+
cognitive_mirror cognitive_blindspot cognitive_gravity
|
|
92
|
+
cognitive_immune_memory cognitive_narrative_arc subliminal
|
|
93
|
+
cognitive_palimpsest cognitive_chrysalis qualia
|
|
94
|
+
cognitive_liminal cognitive_synesthesia cognitive_nostalgia
|
|
95
|
+
cognitive_zeitgeist cognitive_archaeology cognitive_aurora
|
|
96
|
+
cognitive_genesis cognitive_tessellation cognitive_fermentation
|
|
97
|
+
cognitive_metabolism cognitive_phantom cognitive_tectonics
|
|
98
|
+
cognitive_lucidity cognitive_paleontology cognitive_mycelium
|
|
99
|
+
cognitive_symbiosis cognitive_hologram cognitive_tide
|
|
100
|
+
cognitive_origami cognitive_alchemy cognitive_constellation
|
|
101
|
+
cognitive_pendulum cognitive_erosion cognitive_prism
|
|
102
|
+
cognitive_cocoon cognitive_compass cognitive_mosaic
|
|
103
|
+
cognitive_whirlpool cognitive_greenhouse cognitive_fossil_fuel
|
|
104
|
+
cognitive_lens cognitive_echo_chamber cognitive_labyrinth
|
|
105
|
+
cognitive_kaleidoscope cognitive_quicksand cognitive_volcano
|
|
106
|
+
cognitive_tapestry cognitive_lighthouse cognitive_avalanche
|
|
107
|
+
cognitive_hourglass cognitive_magnet cognitive_weather
|
|
108
|
+
cognitive_furnace cognitive_anchor cognitive_garden
|
|
109
|
+
codegen exec mind_growth
|
|
110
|
+
].freeze
|
|
111
|
+
|
|
112
|
+
# Capability categories for self-description
|
|
113
|
+
CAPABILITY_CATEGORIES = %i[
|
|
114
|
+
perception cognition memory motivation safety
|
|
115
|
+
communication introspection coordination
|
|
116
|
+
].freeze
|
|
117
|
+
|
|
118
|
+
# Maps extensions to capability categories
|
|
119
|
+
EXTENSION_CAPABILITIES = {
|
|
120
|
+
Tick: :cognition,
|
|
121
|
+
Cortex: :cognition,
|
|
122
|
+
Memory: :memory,
|
|
123
|
+
Emotion: :perception,
|
|
124
|
+
Prediction: :cognition,
|
|
125
|
+
Identity: :safety,
|
|
126
|
+
Curiosity: :motivation,
|
|
127
|
+
Attention: :perception,
|
|
128
|
+
Reflection: :introspection,
|
|
129
|
+
Volition: :motivation,
|
|
130
|
+
Language: :introspection,
|
|
131
|
+
Trust: :safety,
|
|
132
|
+
Consent: :safety,
|
|
133
|
+
Codegen: :coordination,
|
|
134
|
+
Coldstart: :cognition,
|
|
135
|
+
Mesh: :communication,
|
|
136
|
+
Dream: :cognition,
|
|
137
|
+
Narrator: :introspection,
|
|
138
|
+
Metacognition: :introspection,
|
|
139
|
+
Conflict: :safety,
|
|
140
|
+
Governance: :safety,
|
|
141
|
+
Extinction: :safety,
|
|
142
|
+
Privatecore: :safety,
|
|
143
|
+
Swarm: :coordination,
|
|
144
|
+
SwarmGithub: :coordination,
|
|
145
|
+
Homeostasis: :cognition,
|
|
146
|
+
Empathy: :communication,
|
|
147
|
+
Imagination: :cognition,
|
|
148
|
+
Mood: :perception,
|
|
149
|
+
Salience: :perception,
|
|
150
|
+
Habit: :cognition,
|
|
151
|
+
Temporal: :perception,
|
|
152
|
+
Fatigue: :cognition,
|
|
153
|
+
Personality: :introspection,
|
|
154
|
+
Flow: :cognition,
|
|
155
|
+
Reward: :motivation,
|
|
156
|
+
Conscience: :safety,
|
|
157
|
+
Resilience: :cognition,
|
|
158
|
+
Social: :communication,
|
|
159
|
+
Creativity: :cognition,
|
|
160
|
+
TheoryOfMind: :communication,
|
|
161
|
+
Planning: :cognition,
|
|
162
|
+
Inhibition: :safety,
|
|
163
|
+
Schema: :cognition,
|
|
164
|
+
WorkingMemory: :memory,
|
|
165
|
+
Motivation: :motivation,
|
|
166
|
+
Agency: :motivation,
|
|
167
|
+
Surprise: :perception,
|
|
168
|
+
Priming: :cognition,
|
|
169
|
+
Dissonance: :cognition,
|
|
170
|
+
Gestalt: :perception,
|
|
171
|
+
Bias: :introspection,
|
|
172
|
+
Arousal: :cognition,
|
|
173
|
+
Context: :cognition,
|
|
174
|
+
Anchoring: :cognition,
|
|
175
|
+
NarrativeSelf: :introspection,
|
|
176
|
+
CognitiveLoad: :cognition,
|
|
177
|
+
LearningRate: :cognition,
|
|
178
|
+
EmotionalRegulation: :introspection,
|
|
179
|
+
Mentalizing: :communication,
|
|
180
|
+
MindGrowth: :introspection,
|
|
181
|
+
Prospection: :cognition,
|
|
182
|
+
Interoception: :perception,
|
|
183
|
+
Mirror: :communication,
|
|
184
|
+
JointAttention: :communication,
|
|
185
|
+
SemanticMemory: :memory,
|
|
186
|
+
DefaultModeNetwork: :cognition,
|
|
187
|
+
PredictiveCoding: :cognition,
|
|
188
|
+
AttentionSchema: :introspection,
|
|
189
|
+
GlobalWorkspace: :cognition,
|
|
190
|
+
HebbianAssembly: :cognition,
|
|
191
|
+
CognitiveMap: :cognition,
|
|
192
|
+
ErrorMonitoring: :safety,
|
|
193
|
+
Neuromodulation: :cognition,
|
|
194
|
+
FeatureBinding: :perception,
|
|
195
|
+
ExecutiveFunction: :cognition,
|
|
196
|
+
NeuralOscillation: :cognition,
|
|
197
|
+
SourceMonitoring: :introspection,
|
|
198
|
+
SomaticMarker: :perception,
|
|
199
|
+
Affordance: :perception,
|
|
200
|
+
EpisodicBuffer: :memory,
|
|
201
|
+
Exec: :coordination,
|
|
202
|
+
CognitiveFlexibility: :cognition,
|
|
203
|
+
EmbodiedSimulation: :cognition,
|
|
204
|
+
PredictiveProcessing: :cognition,
|
|
205
|
+
BeliefRevision: :cognition,
|
|
206
|
+
MentalTimeTravel: :cognition,
|
|
207
|
+
CognitiveControl: :cognition,
|
|
208
|
+
PerceptualInference: :perception,
|
|
209
|
+
InnerSpeech: :introspection,
|
|
210
|
+
SelfModel: :introspection,
|
|
211
|
+
CognitiveRhythm: :cognition,
|
|
212
|
+
CognitiveEmpathy: :communication,
|
|
213
|
+
AttentionRegulation: :perception,
|
|
214
|
+
Intuition: :cognition,
|
|
215
|
+
FreeEnergy: :cognition,
|
|
216
|
+
Counterfactual: :cognition,
|
|
217
|
+
MoralReasoning: :safety,
|
|
218
|
+
AnalogicalReasoning: :cognition,
|
|
219
|
+
CausalReasoning: :cognition,
|
|
220
|
+
CognitiveReserve: :cognition,
|
|
221
|
+
Appraisal: :cognition,
|
|
222
|
+
CognitiveCoherence: :cognition,
|
|
223
|
+
ConceptualBlending: :cognition,
|
|
224
|
+
DualProcess: :cognition,
|
|
225
|
+
AbductiveReasoning: :cognition,
|
|
226
|
+
SocialLearning: :communication,
|
|
227
|
+
ConceptualMetaphor: :cognition,
|
|
228
|
+
ProceduralLearning: :cognition,
|
|
229
|
+
SignalDetection: :perception,
|
|
230
|
+
BayesianBelief: :cognition,
|
|
231
|
+
CognitiveScaffolding: :cognition,
|
|
232
|
+
EnactiveCognition: :cognition,
|
|
233
|
+
DistributedCognition: :coordination,
|
|
234
|
+
CognitiveEntrainment: :coordination,
|
|
235
|
+
NarrativeReasoning: :cognition,
|
|
236
|
+
CausalAttribution: :cognition,
|
|
237
|
+
CognitiveApprenticeship: :cognition,
|
|
238
|
+
PragmaticInference: :communication,
|
|
239
|
+
CognitiveMomentum: :cognition,
|
|
240
|
+
RelevanceTheory: :cognition,
|
|
241
|
+
SituationModel: :cognition,
|
|
242
|
+
CognitiveDisengagement: :cognition,
|
|
243
|
+
EpistemicVigilance: :safety,
|
|
244
|
+
FrameSemantics: :cognition,
|
|
245
|
+
ExpectationViolation: :perception,
|
|
246
|
+
ArgumentMapping: :cognition,
|
|
247
|
+
MentalSimulation: :cognition,
|
|
248
|
+
CognitiveGrammar: :cognition,
|
|
249
|
+
CognitiveArchitecture: :introspection,
|
|
250
|
+
CognitiveFatigueModel: :cognition,
|
|
251
|
+
UncertaintyTolerance: :cognition,
|
|
252
|
+
PreferenceLearning: :cognition,
|
|
253
|
+
TemporalDiscounting: :cognition,
|
|
254
|
+
CognitiveImmunology: :safety,
|
|
255
|
+
PhenomenalBinding: :perception,
|
|
256
|
+
MetaLearning: :cognition,
|
|
257
|
+
CognitiveHomeostasis: :cognition,
|
|
258
|
+
AttentionalBlink: :perception,
|
|
259
|
+
CognitiveContagion: :communication,
|
|
260
|
+
ProspectiveMemory: :memory,
|
|
261
|
+
CognitiveDissonanceResolution: :cognition,
|
|
262
|
+
AttentionEconomy: :cognition,
|
|
263
|
+
CognitiveLoadBalancing: :cognition,
|
|
264
|
+
SemanticSatiation: :perception,
|
|
265
|
+
CognitiveDebt: :cognition,
|
|
266
|
+
RealityTesting: :cognition,
|
|
267
|
+
CognitiveFriction: :cognition,
|
|
268
|
+
EpistemicCuriosity: :motivation,
|
|
269
|
+
CognitiveBoundary: :safety,
|
|
270
|
+
DecisionFatigue: :cognition,
|
|
271
|
+
CognitiveResonance: :perception,
|
|
272
|
+
LatentInhibition: :cognition,
|
|
273
|
+
CognitiveSurplus: :cognition,
|
|
274
|
+
TransferLearning: :cognition,
|
|
275
|
+
CognitiveCompression: :memory,
|
|
276
|
+
CognitivePlasticity: :cognition,
|
|
277
|
+
Anosognosia: :safety,
|
|
278
|
+
Confabulation: :safety,
|
|
279
|
+
CognitiveTempo: :cognition,
|
|
280
|
+
HypothesisTesting: :cognition,
|
|
281
|
+
CognitiveInertia: :cognition,
|
|
282
|
+
SensoryGating: :perception,
|
|
283
|
+
CognitiveSynthesis: :cognition,
|
|
284
|
+
MetacognitiveMonitoring: :introspection,
|
|
285
|
+
CognitiveDefusion: :introspection,
|
|
286
|
+
CognitiveReappraisal: :introspection,
|
|
287
|
+
SemanticPriming: :cognition,
|
|
288
|
+
CognitiveIntegration: :cognition,
|
|
289
|
+
CognitiveFlexibilityTraining: :cognition,
|
|
290
|
+
PerspectiveShifting: :communication,
|
|
291
|
+
CognitiveOffloading: :memory,
|
|
292
|
+
CognitiveChunking: :memory,
|
|
293
|
+
AttentionSwitching: :cognition,
|
|
294
|
+
CognitiveDwell: :cognition,
|
|
295
|
+
GoalManagement: :motivation,
|
|
296
|
+
CognitiveDebugging: :introspection,
|
|
297
|
+
AttentionSpotlight: :perception,
|
|
298
|
+
CognitiveImmuneResponse: :safety,
|
|
299
|
+
NarrativeIdentity: :introspection,
|
|
300
|
+
CognitiveTriage: :cognition,
|
|
301
|
+
CognitiveHorizon: :cognition,
|
|
302
|
+
CognitiveAutopilot: :cognition,
|
|
303
|
+
SelfTalk: :introspection,
|
|
304
|
+
CognitiveWeathering: :cognition,
|
|
305
|
+
CognitiveFingerprint: :introspection,
|
|
306
|
+
CognitiveEcho: :cognition,
|
|
307
|
+
CognitiveMirror: :communication,
|
|
308
|
+
CognitiveBlindspot: :introspection,
|
|
309
|
+
CognitiveGravity: :cognition,
|
|
310
|
+
CognitiveImmuneMemory: :safety,
|
|
311
|
+
CognitiveNarrativeArc: :introspection,
|
|
312
|
+
Subliminal: :cognition,
|
|
313
|
+
CognitivePalimpsest: :memory,
|
|
314
|
+
CognitiveChrysalis: :cognition,
|
|
315
|
+
Qualia: :perception,
|
|
316
|
+
CognitiveLiminal: :cognition,
|
|
317
|
+
CognitiveSynesthesia: :perception,
|
|
318
|
+
CognitiveNostalgia: :perception,
|
|
319
|
+
CognitiveZeitgeist: :cognition,
|
|
320
|
+
CognitiveArchaeology: :memory,
|
|
321
|
+
CognitiveAurora: :perception,
|
|
322
|
+
CognitiveGenesis: :cognition,
|
|
323
|
+
CognitiveTessellation: :cognition,
|
|
324
|
+
CognitiveFermentation: :cognition,
|
|
325
|
+
CognitiveMetabolism: :cognition,
|
|
326
|
+
CognitivePhantom: :cognition,
|
|
327
|
+
CognitiveTectonics: :cognition,
|
|
328
|
+
CognitiveLucidity: :perception,
|
|
329
|
+
CognitivePaleontology: :memory,
|
|
330
|
+
CognitiveMycelium: :cognition,
|
|
331
|
+
CognitiveSymbiosis: :cognition,
|
|
332
|
+
CognitiveHologram: :memory,
|
|
333
|
+
CognitiveTide: :cognition,
|
|
334
|
+
CognitiveOrigami: :cognition,
|
|
335
|
+
CognitiveAlchemy: :cognition,
|
|
336
|
+
CognitiveConstellation: :cognition,
|
|
337
|
+
CognitivePendulum: :cognition,
|
|
338
|
+
CognitiveErosion: :cognition,
|
|
339
|
+
CognitivePrism: :perception,
|
|
340
|
+
CognitiveCocoon: :cognition,
|
|
341
|
+
CognitiveCompass: :introspection,
|
|
342
|
+
CognitiveMosaic: :cognition,
|
|
343
|
+
CognitiveWhirlpool: :cognition,
|
|
344
|
+
CognitiveGreenhouse: :cognition,
|
|
345
|
+
CognitiveFossilFuel: :cognition,
|
|
346
|
+
CognitiveLens: :perception,
|
|
347
|
+
CognitiveEchoChamber: :cognition,
|
|
348
|
+
CognitiveLabyrinth: :cognition,
|
|
349
|
+
CognitiveKaleidoscope: :perception,
|
|
350
|
+
CognitiveQuicksand: :cognition,
|
|
351
|
+
CognitiveVolcano: :cognition,
|
|
352
|
+
CognitiveTapestry: :cognition,
|
|
353
|
+
CognitiveLighthouse: :perception,
|
|
354
|
+
CognitiveAvalanche: :cognition,
|
|
355
|
+
CognitiveHourglass: :cognition,
|
|
356
|
+
CognitiveMagnet: :cognition,
|
|
357
|
+
CognitiveWeather: :cognition,
|
|
358
|
+
CognitiveFurnace: :cognition,
|
|
359
|
+
CognitiveAnchor: :cognition,
|
|
360
|
+
CognitiveGarden: :cognition
|
|
361
|
+
}.freeze
|
|
362
|
+
|
|
363
|
+
# Subsystem health labels
|
|
364
|
+
HEALTH_LABELS = {
|
|
365
|
+
(0.8..) => :excellent,
|
|
366
|
+
(0.6...0.8) => :good,
|
|
367
|
+
(0.4...0.6) => :fair,
|
|
368
|
+
(0.2...0.4) => :degraded,
|
|
369
|
+
(..0.2) => :critical
|
|
370
|
+
}.freeze
|
|
371
|
+
end
|
|
372
|
+
end
|
|
373
|
+
end
|
|
374
|
+
end
|
|
375
|
+
end
|
|
376
|
+
end
|
|
377
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Self
|
|
7
|
+
module Metacognition
|
|
8
|
+
module Helpers
|
|
9
|
+
module NarratorBridge
|
|
10
|
+
module_function
|
|
11
|
+
|
|
12
|
+
def narrate_self_model(model)
|
|
13
|
+
parts = []
|
|
14
|
+
parts << narrate_identity(model[:identity])
|
|
15
|
+
parts << narrate_architecture(model[:architecture])
|
|
16
|
+
parts << narrate_cognitive(model[:cognitive])
|
|
17
|
+
parts << narrate_capabilities(model[:capabilities])
|
|
18
|
+
parts.compact.join(' ')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def narrate_identity(identity)
|
|
22
|
+
return nil unless identity.is_a?(Hash)
|
|
23
|
+
|
|
24
|
+
"I am a #{identity[:model]} #{identity[:role]} built on #{identity[:framework]} " \
|
|
25
|
+
"with #{identity[:extensions]} extension slots."
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def narrate_architecture(arch)
|
|
29
|
+
return nil unless arch.is_a?(Hash)
|
|
30
|
+
|
|
31
|
+
loaded = arch[:loaded_count] || 0
|
|
32
|
+
total = arch[:total_extensions] || 0
|
|
33
|
+
unloaded = arch[:unloaded] || []
|
|
34
|
+
|
|
35
|
+
base = "#{loaded} of #{total} extensions are active."
|
|
36
|
+
if unloaded.empty?
|
|
37
|
+
base
|
|
38
|
+
else
|
|
39
|
+
"#{base} Missing: #{unloaded.first(3).join(', ')}#{'...' if unloaded.size > 3}."
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def narrate_cognitive(cognitive)
|
|
44
|
+
return nil unless cognitive.is_a?(Hash)
|
|
45
|
+
return 'No tick data available.' if cognitive[:status] == :no_tick_data
|
|
46
|
+
|
|
47
|
+
parts = []
|
|
48
|
+
parts << "Operating in #{cognitive[:mode]} mode." if cognitive[:mode] && cognitive[:mode] != :unknown
|
|
49
|
+
parts << "Running #{cognitive[:phases_run]} phases per tick." if cognitive[:phases_run]
|
|
50
|
+
|
|
51
|
+
if cognitive[:health]
|
|
52
|
+
label = SelfModel.health_label(cognitive[:health])
|
|
53
|
+
parts << "Cognitive health: #{label} (#{(cognitive[:health] * 100).round}%)."
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
parts << "Active drives: #{cognitive[:active_drives].join(', ')}." if cognitive[:active_drives]&.any?
|
|
57
|
+
|
|
58
|
+
if cognitive[:attention]
|
|
59
|
+
att = cognitive[:attention]
|
|
60
|
+
parts << "#{att[:spotlight] || 0} signals in spotlight focus." if att[:spotlight]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
if cognitive[:curiosity]
|
|
64
|
+
cur = cognitive[:curiosity]
|
|
65
|
+
parts << "#{cur[:open_wonders] || 0} open questions." if cur[:open_wonders]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
parts.join(' ')
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def narrate_capabilities(capabilities)
|
|
72
|
+
return nil unless capabilities.is_a?(Hash)
|
|
73
|
+
|
|
74
|
+
active_cats = capabilities.select { |_, v| v[:active] }.keys
|
|
75
|
+
return nil if active_cats.empty?
|
|
76
|
+
|
|
77
|
+
"Active capabilities: #{active_cats.join(', ')}."
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Agentic
|
|
6
|
+
module Self
|
|
7
|
+
module Metacognition
|
|
8
|
+
module Helpers
|
|
9
|
+
class RegistryStore
|
|
10
|
+
def initialize
|
|
11
|
+
@extensions = {}
|
|
12
|
+
@mutex = Mutex.new
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def register(entry)
|
|
16
|
+
@mutex.synchronize do
|
|
17
|
+
now = Time.now.utc
|
|
18
|
+
defaults = { invocation_count: 0, health_score: 1.0 }
|
|
19
|
+
@extensions[entry[:name]] = defaults.merge(entry).merge(created_at: now, updated_at: now)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def deregister(name)
|
|
24
|
+
@mutex.synchronize { @extensions.delete(name) }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def get(name)
|
|
28
|
+
@mutex.synchronize { @extensions[name]&.dup }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def list(status: nil, category: nil)
|
|
32
|
+
@mutex.synchronize do
|
|
33
|
+
result = @extensions.values
|
|
34
|
+
result = result.select { |e| e[:status] == status.to_s } if status
|
|
35
|
+
result = result.select { |e| e[:category] == category.to_s } if category
|
|
36
|
+
result.map(&:dup)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def update(name, attrs)
|
|
41
|
+
@mutex.synchronize do
|
|
42
|
+
return nil unless @extensions[name]
|
|
43
|
+
|
|
44
|
+
@extensions[name] = @extensions[name].merge(attrs).merge(updated_at: Time.now.utc)
|
|
45
|
+
@extensions[name].dup
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def category_distribution
|
|
50
|
+
@mutex.synchronize do
|
|
51
|
+
@extensions.values.group_by { |e| e[:category] }.transform_values(&:count)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def count
|
|
56
|
+
@mutex.synchronize { @extensions.size }
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def by_health(threshold: 0.4)
|
|
60
|
+
@mutex.synchronize do
|
|
61
|
+
@extensions.values.select { |e| e[:health_score] && e[:health_score] < threshold }.map(&:dup)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|