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.
Files changed (249) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile +5 -0
  4. data/LICENSE +21 -0
  5. data/README.md +13 -0
  6. data/lex-agentic-self.gemspec +31 -0
  7. data/lib/legion/extensions/agentic/self/agency/client.rb +21 -0
  8. data/lib/legion/extensions/agentic/self/agency/helpers/constants.rb +77 -0
  9. data/lib/legion/extensions/agentic/self/agency/helpers/efficacy_model.rb +136 -0
  10. data/lib/legion/extensions/agentic/self/agency/helpers/outcome_event.rb +52 -0
  11. data/lib/legion/extensions/agentic/self/agency/runners/agency.rb +117 -0
  12. data/lib/legion/extensions/agentic/self/agency/version.rb +13 -0
  13. data/lib/legion/extensions/agentic/self/agency.rb +19 -0
  14. data/lib/legion/extensions/agentic/self/anchor/client.rb +15 -0
  15. data/lib/legion/extensions/agentic/self/anchor/helpers/anchor.rb +92 -0
  16. data/lib/legion/extensions/agentic/self/anchor/helpers/anchor_engine.rb +123 -0
  17. data/lib/legion/extensions/agentic/self/anchor/helpers/chain.rb +93 -0
  18. data/lib/legion/extensions/agentic/self/anchor/helpers/constants.rb +46 -0
  19. data/lib/legion/extensions/agentic/self/anchor/runners/cognitive_anchor.rb +70 -0
  20. data/lib/legion/extensions/agentic/self/anchor/version.rb +13 -0
  21. data/lib/legion/extensions/agentic/self/anchor.rb +22 -0
  22. data/lib/legion/extensions/agentic/self/anosognosia/client.rb +28 -0
  23. data/lib/legion/extensions/agentic/self/anosognosia/helpers/anosognosia_engine.rb +153 -0
  24. data/lib/legion/extensions/agentic/self/anosognosia/helpers/cognitive_deficit.rb +71 -0
  25. data/lib/legion/extensions/agentic/self/anosognosia/helpers/constants.rb +29 -0
  26. data/lib/legion/extensions/agentic/self/anosognosia/runners/anosognosia.rb +98 -0
  27. data/lib/legion/extensions/agentic/self/anosognosia/version.rb +13 -0
  28. data/lib/legion/extensions/agentic/self/anosognosia.rb +19 -0
  29. data/lib/legion/extensions/agentic/self/architecture/client.rb +19 -0
  30. data/lib/legion/extensions/agentic/self/architecture/helpers/architecture_engine.rb +167 -0
  31. data/lib/legion/extensions/agentic/self/architecture/helpers/connection.rb +57 -0
  32. data/lib/legion/extensions/agentic/self/architecture/helpers/constants.rb +37 -0
  33. data/lib/legion/extensions/agentic/self/architecture/helpers/subsystem.rb +80 -0
  34. data/lib/legion/extensions/agentic/self/architecture/runners/cognitive_architecture.rb +125 -0
  35. data/lib/legion/extensions/agentic/self/architecture/version.rb +13 -0
  36. data/lib/legion/extensions/agentic/self/architecture.rb +20 -0
  37. data/lib/legion/extensions/agentic/self/default_mode_network/actors/idle.rb +45 -0
  38. data/lib/legion/extensions/agentic/self/default_mode_network/client.rb +28 -0
  39. data/lib/legion/extensions/agentic/self/default_mode_network/helpers/constants.rb +53 -0
  40. data/lib/legion/extensions/agentic/self/default_mode_network/helpers/dmn_engine.rb +221 -0
  41. data/lib/legion/extensions/agentic/self/default_mode_network/helpers/wandering_thought.rb +60 -0
  42. data/lib/legion/extensions/agentic/self/default_mode_network/runners/default_mode_network.rb +122 -0
  43. data/lib/legion/extensions/agentic/self/default_mode_network/version.rb +13 -0
  44. data/lib/legion/extensions/agentic/self/default_mode_network.rb +20 -0
  45. data/lib/legion/extensions/agentic/self/fingerprint/client.rb +28 -0
  46. data/lib/legion/extensions/agentic/self/fingerprint/helpers/cognitive_trait.rb +73 -0
  47. data/lib/legion/extensions/agentic/self/fingerprint/helpers/constants.rb +60 -0
  48. data/lib/legion/extensions/agentic/self/fingerprint/helpers/fingerprint_engine.rb +169 -0
  49. data/lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb +86 -0
  50. data/lib/legion/extensions/agentic/self/fingerprint/version.rb +13 -0
  51. data/lib/legion/extensions/agentic/self/fingerprint.rb +19 -0
  52. data/lib/legion/extensions/agentic/self/identity/actors/credential_refresh.rb +49 -0
  53. data/lib/legion/extensions/agentic/self/identity/actors/orphan_check.rb +52 -0
  54. data/lib/legion/extensions/agentic/self/identity/client.rb +27 -0
  55. data/lib/legion/extensions/agentic/self/identity/helpers/dimensions.rb +75 -0
  56. data/lib/legion/extensions/agentic/self/identity/helpers/fingerprint.rb +170 -0
  57. data/lib/legion/extensions/agentic/self/identity/helpers/graph_client.rb +29 -0
  58. data/lib/legion/extensions/agentic/self/identity/helpers/graph_token.rb +36 -0
  59. data/lib/legion/extensions/agentic/self/identity/helpers/token_cache.rb +59 -0
  60. data/lib/legion/extensions/agentic/self/identity/helpers/vault_secrets.rb +80 -0
  61. data/lib/legion/extensions/agentic/self/identity/local_migrations/20260316000030_create_fingerprint.rb +20 -0
  62. data/lib/legion/extensions/agentic/self/identity/runners/entra.rb +402 -0
  63. data/lib/legion/extensions/agentic/self/identity/runners/identity.rb +90 -0
  64. data/lib/legion/extensions/agentic/self/identity/version.rb +13 -0
  65. data/lib/legion/extensions/agentic/self/identity.rb +28 -0
  66. data/lib/legion/extensions/agentic/self/metacognition/client.rb +27 -0
  67. data/lib/legion/extensions/agentic/self/metacognition/helpers/constants.rb +377 -0
  68. data/lib/legion/extensions/agentic/self/metacognition/helpers/narrator_bridge.rb +85 -0
  69. data/lib/legion/extensions/agentic/self/metacognition/helpers/registry_store.rb +70 -0
  70. data/lib/legion/extensions/agentic/self/metacognition/helpers/self_model.rb +160 -0
  71. data/lib/legion/extensions/agentic/self/metacognition/helpers/snapshot_store.rb +82 -0
  72. data/lib/legion/extensions/agentic/self/metacognition/runners/metacognition.rb +116 -0
  73. data/lib/legion/extensions/agentic/self/metacognition/runners/registry.rb +180 -0
  74. data/lib/legion/extensions/agentic/self/metacognition/version.rb +13 -0
  75. data/lib/legion/extensions/agentic/self/metacognition.rb +22 -0
  76. data/lib/legion/extensions/agentic/self/metacognitive_monitoring/client.rb +25 -0
  77. data/lib/legion/extensions/agentic/self/metacognitive_monitoring/helpers/calibration_tracker.rb +96 -0
  78. data/lib/legion/extensions/agentic/self/metacognitive_monitoring/helpers/constants.rb +47 -0
  79. data/lib/legion/extensions/agentic/self/metacognitive_monitoring/helpers/monitoring_engine.rb +141 -0
  80. data/lib/legion/extensions/agentic/self/metacognitive_monitoring/helpers/monitoring_judgment.rb +79 -0
  81. data/lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb +151 -0
  82. data/lib/legion/extensions/agentic/self/metacognitive_monitoring/version.rb +13 -0
  83. data/lib/legion/extensions/agentic/self/metacognitive_monitoring.rb +20 -0
  84. data/lib/legion/extensions/agentic/self/narrative_arc/client.rb +29 -0
  85. data/lib/legion/extensions/agentic/self/narrative_arc/helpers/arc.rb +137 -0
  86. data/lib/legion/extensions/agentic/self/narrative_arc/helpers/arc_engine.rb +119 -0
  87. data/lib/legion/extensions/agentic/self/narrative_arc/helpers/beat_event.rb +59 -0
  88. data/lib/legion/extensions/agentic/self/narrative_arc/helpers/constants.rb +66 -0
  89. data/lib/legion/extensions/agentic/self/narrative_arc/runners/narrative.rb +101 -0
  90. data/lib/legion/extensions/agentic/self/narrative_arc/version.rb +13 -0
  91. data/lib/legion/extensions/agentic/self/narrative_arc.rb +20 -0
  92. data/lib/legion/extensions/agentic/self/narrative_identity/actors/narrative_decay.rb +45 -0
  93. data/lib/legion/extensions/agentic/self/narrative_identity/client.rb +22 -0
  94. data/lib/legion/extensions/agentic/self/narrative_identity/helpers/chapter.rb +48 -0
  95. data/lib/legion/extensions/agentic/self/narrative_identity/helpers/constants.rb +62 -0
  96. data/lib/legion/extensions/agentic/self/narrative_identity/helpers/episode.rb +67 -0
  97. data/lib/legion/extensions/agentic/self/narrative_identity/helpers/narrative_engine.rb +187 -0
  98. data/lib/legion/extensions/agentic/self/narrative_identity/helpers/theme.rb +50 -0
  99. data/lib/legion/extensions/agentic/self/narrative_identity/runners/narrative_identity.rb +158 -0
  100. data/lib/legion/extensions/agentic/self/narrative_identity/version.rb +13 -0
  101. data/lib/legion/extensions/agentic/self/narrative_identity.rb +21 -0
  102. data/lib/legion/extensions/agentic/self/narrative_self/client.rb +27 -0
  103. data/lib/legion/extensions/agentic/self/narrative_self/helpers/autobiography.rb +187 -0
  104. data/lib/legion/extensions/agentic/self/narrative_self/helpers/constants.rb +42 -0
  105. data/lib/legion/extensions/agentic/self/narrative_self/helpers/episode.rb +81 -0
  106. data/lib/legion/extensions/agentic/self/narrative_self/helpers/narrative_thread.rb +65 -0
  107. data/lib/legion/extensions/agentic/self/narrative_self/runners/narrative_self.rb +86 -0
  108. data/lib/legion/extensions/agentic/self/narrative_self/version.rb +13 -0
  109. data/lib/legion/extensions/agentic/self/narrative_self.rb +20 -0
  110. data/lib/legion/extensions/agentic/self/personality/client.rb +21 -0
  111. data/lib/legion/extensions/agentic/self/personality/helpers/constants.rb +84 -0
  112. data/lib/legion/extensions/agentic/self/personality/helpers/personality_store.rb +126 -0
  113. data/lib/legion/extensions/agentic/self/personality/helpers/trait_model.rb +147 -0
  114. data/lib/legion/extensions/agentic/self/personality/runners/personality.rb +102 -0
  115. data/lib/legion/extensions/agentic/self/personality/version.rb +13 -0
  116. data/lib/legion/extensions/agentic/self/personality.rb +19 -0
  117. data/lib/legion/extensions/agentic/self/reflection/client.rb +27 -0
  118. data/lib/legion/extensions/agentic/self/reflection/helpers/constants.rb +66 -0
  119. data/lib/legion/extensions/agentic/self/reflection/helpers/llm_enhancer.rb +166 -0
  120. data/lib/legion/extensions/agentic/self/reflection/helpers/monitors.rb +186 -0
  121. data/lib/legion/extensions/agentic/self/reflection/helpers/reflection.rb +54 -0
  122. data/lib/legion/extensions/agentic/self/reflection/helpers/reflection_store.rb +99 -0
  123. data/lib/legion/extensions/agentic/self/reflection/runners/reflection.rb +199 -0
  124. data/lib/legion/extensions/agentic/self/reflection/version.rb +13 -0
  125. data/lib/legion/extensions/agentic/self/reflection.rb +21 -0
  126. data/lib/legion/extensions/agentic/self/self_model/client.rb +19 -0
  127. data/lib/legion/extensions/agentic/self/self_model/helpers/capability.rb +93 -0
  128. data/lib/legion/extensions/agentic/self/self_model/helpers/constants.rb +46 -0
  129. data/lib/legion/extensions/agentic/self/self_model/helpers/knowledge_domain.rb +82 -0
  130. data/lib/legion/extensions/agentic/self/self_model/helpers/self_model.rb +150 -0
  131. data/lib/legion/extensions/agentic/self/self_model/runners/self_model.rb +82 -0
  132. data/lib/legion/extensions/agentic/self/self_model/version.rb +13 -0
  133. data/lib/legion/extensions/agentic/self/self_model.rb +21 -0
  134. data/lib/legion/extensions/agentic/self/self_talk/actors/volume_decay.rb +45 -0
  135. data/lib/legion/extensions/agentic/self/self_talk/client.rb +30 -0
  136. data/lib/legion/extensions/agentic/self/self_talk/helpers/constants.rb +63 -0
  137. data/lib/legion/extensions/agentic/self/self_talk/helpers/dialogue.rb +114 -0
  138. data/lib/legion/extensions/agentic/self/self_talk/helpers/dialogue_turn.rb +43 -0
  139. data/lib/legion/extensions/agentic/self/self_talk/helpers/inner_voice.rb +77 -0
  140. data/lib/legion/extensions/agentic/self/self_talk/helpers/llm_enhancer.rb +135 -0
  141. data/lib/legion/extensions/agentic/self/self_talk/helpers/self_talk_engine.rb +160 -0
  142. data/lib/legion/extensions/agentic/self/self_talk/runners/self_talk.rb +172 -0
  143. data/lib/legion/extensions/agentic/self/self_talk/version.rb +13 -0
  144. data/lib/legion/extensions/agentic/self/self_talk.rb +22 -0
  145. data/lib/legion/extensions/agentic/self/version.rb +11 -0
  146. data/lib/legion/extensions/agentic/self.rb +33 -0
  147. data/spec/legion/extensions/agentic/self/agency/client_spec.rb +67 -0
  148. data/spec/legion/extensions/agentic/self/agency/helpers/constants_spec.rb +73 -0
  149. data/spec/legion/extensions/agentic/self/agency/helpers/efficacy_model_spec.rb +190 -0
  150. data/spec/legion/extensions/agentic/self/agency/helpers/outcome_event_spec.rb +85 -0
  151. data/spec/legion/extensions/agentic/self/agency/runners/agency_spec.rb +132 -0
  152. data/spec/legion/extensions/agentic/self/anchor/client_spec.rb +30 -0
  153. data/spec/legion/extensions/agentic/self/anchor/helpers/anchor_engine_spec.rb +109 -0
  154. data/spec/legion/extensions/agentic/self/anchor/helpers/anchor_spec.rb +124 -0
  155. data/spec/legion/extensions/agentic/self/anchor/helpers/chain_spec.rb +106 -0
  156. data/spec/legion/extensions/agentic/self/anchor/helpers/constants_spec.rb +53 -0
  157. data/spec/legion/extensions/agentic/self/anchor/runners/cognitive_anchor_spec.rb +70 -0
  158. data/spec/legion/extensions/agentic/self/anosognosia/anosognosia_spec.rb +15 -0
  159. data/spec/legion/extensions/agentic/self/anosognosia/client_spec.rb +50 -0
  160. data/spec/legion/extensions/agentic/self/anosognosia/helpers/anosognosia_engine_spec.rb +266 -0
  161. data/spec/legion/extensions/agentic/self/anosognosia/helpers/cognitive_deficit_spec.rb +150 -0
  162. data/spec/legion/extensions/agentic/self/anosognosia/helpers/constants_spec.rb +58 -0
  163. data/spec/legion/extensions/agentic/self/anosognosia/runners/anosognosia_spec.rb +225 -0
  164. data/spec/legion/extensions/agentic/self/architecture/client_spec.rb +51 -0
  165. data/spec/legion/extensions/agentic/self/architecture/helpers/architecture_engine_spec.rb +321 -0
  166. data/spec/legion/extensions/agentic/self/architecture/helpers/connection_spec.rb +118 -0
  167. data/spec/legion/extensions/agentic/self/architecture/helpers/subsystem_spec.rb +189 -0
  168. data/spec/legion/extensions/agentic/self/architecture/runners/cognitive_architecture_spec.rb +181 -0
  169. data/spec/legion/extensions/agentic/self/default_mode_network/client_spec.rb +69 -0
  170. data/spec/legion/extensions/agentic/self/default_mode_network/helpers/constants_spec.rb +76 -0
  171. data/spec/legion/extensions/agentic/self/default_mode_network/helpers/dmn_engine_spec.rb +321 -0
  172. data/spec/legion/extensions/agentic/self/default_mode_network/helpers/wandering_thought_spec.rb +145 -0
  173. data/spec/legion/extensions/agentic/self/default_mode_network/runners/default_mode_network_spec.rb +269 -0
  174. data/spec/legion/extensions/agentic/self/fingerprint/client_spec.rb +54 -0
  175. data/spec/legion/extensions/agentic/self/fingerprint/helpers/cognitive_trait_spec.rb +180 -0
  176. data/spec/legion/extensions/agentic/self/fingerprint/helpers/constants_spec.rb +108 -0
  177. data/spec/legion/extensions/agentic/self/fingerprint/helpers/fingerprint_engine_spec.rb +318 -0
  178. data/spec/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint_spec.rb +232 -0
  179. data/spec/legion/extensions/agentic/self/identity/actors/orphan_check_spec.rb +104 -0
  180. data/spec/legion/extensions/agentic/self/identity/client_spec.rb +32 -0
  181. data/spec/legion/extensions/agentic/self/identity/helpers/dimensions_spec.rb +51 -0
  182. data/spec/legion/extensions/agentic/self/identity/helpers/fingerprint_spec.rb +66 -0
  183. data/spec/legion/extensions/agentic/self/identity/helpers/graph_client_spec.rb +19 -0
  184. data/spec/legion/extensions/agentic/self/identity/helpers/graph_token_spec.rb +31 -0
  185. data/spec/legion/extensions/agentic/self/identity/helpers/token_cache_spec.rb +50 -0
  186. data/spec/legion/extensions/agentic/self/identity/local_persistence_spec.rb +329 -0
  187. data/spec/legion/extensions/agentic/self/identity/runners/entra_spec.rb +655 -0
  188. data/spec/legion/extensions/agentic/self/identity/runners/identity_spec.rb +61 -0
  189. data/spec/legion/extensions/agentic/self/metacognition/client_spec.rb +20 -0
  190. data/spec/legion/extensions/agentic/self/metacognition/helpers/constants_spec.rb +31 -0
  191. data/spec/legion/extensions/agentic/self/metacognition/helpers/narrator_bridge_spec.rb +102 -0
  192. data/spec/legion/extensions/agentic/self/metacognition/helpers/registry_store_spec.rb +227 -0
  193. data/spec/legion/extensions/agentic/self/metacognition/helpers/self_model_spec.rb +117 -0
  194. data/spec/legion/extensions/agentic/self/metacognition/helpers/snapshot_store_spec.rb +128 -0
  195. data/spec/legion/extensions/agentic/self/metacognition/runners/metacognition_spec.rb +110 -0
  196. data/spec/legion/extensions/agentic/self/metacognition/runners/registry_spec.rb +281 -0
  197. data/spec/legion/extensions/agentic/self/metacognitive_monitoring/client_spec.rb +59 -0
  198. data/spec/legion/extensions/agentic/self/metacognitive_monitoring/helpers/calibration_tracker_spec.rb +143 -0
  199. data/spec/legion/extensions/agentic/self/metacognitive_monitoring/helpers/constants_spec.rb +91 -0
  200. data/spec/legion/extensions/agentic/self/metacognitive_monitoring/helpers/monitoring_engine_spec.rb +198 -0
  201. data/spec/legion/extensions/agentic/self/metacognitive_monitoring/helpers/monitoring_judgment_spec.rb +172 -0
  202. data/spec/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring_spec.rb +244 -0
  203. data/spec/legion/extensions/agentic/self/narrative_arc/client_spec.rb +22 -0
  204. data/spec/legion/extensions/agentic/self/narrative_arc/helpers/arc_engine_spec.rb +183 -0
  205. data/spec/legion/extensions/agentic/self/narrative_arc/helpers/arc_spec.rb +177 -0
  206. data/spec/legion/extensions/agentic/self/narrative_arc/helpers/beat_event_spec.rb +96 -0
  207. data/spec/legion/extensions/agentic/self/narrative_arc/helpers/constants_spec.rb +75 -0
  208. data/spec/legion/extensions/agentic/self/narrative_arc/runners/narrative_spec.rb +142 -0
  209. data/spec/legion/extensions/agentic/self/narrative_identity/client_spec.rb +69 -0
  210. data/spec/legion/extensions/agentic/self/narrative_identity/helpers/chapter_spec.rb +85 -0
  211. data/spec/legion/extensions/agentic/self/narrative_identity/helpers/constants_spec.rb +83 -0
  212. data/spec/legion/extensions/agentic/self/narrative_identity/helpers/episode_spec.rb +180 -0
  213. data/spec/legion/extensions/agentic/self/narrative_identity/helpers/narrative_engine_spec.rb +307 -0
  214. data/spec/legion/extensions/agentic/self/narrative_identity/helpers/theme_spec.rb +107 -0
  215. data/spec/legion/extensions/agentic/self/narrative_identity/runners/narrative_identity_spec.rb +240 -0
  216. data/spec/legion/extensions/agentic/self/narrative_self/client_spec.rb +67 -0
  217. data/spec/legion/extensions/agentic/self/narrative_self/helpers/autobiography_spec.rb +155 -0
  218. data/spec/legion/extensions/agentic/self/narrative_self/helpers/constants_spec.rb +28 -0
  219. data/spec/legion/extensions/agentic/self/narrative_self/helpers/episode_spec.rb +144 -0
  220. data/spec/legion/extensions/agentic/self/narrative_self/helpers/narrative_thread_spec.rb +87 -0
  221. data/spec/legion/extensions/agentic/self/narrative_self/runners/narrative_self_spec.rb +118 -0
  222. data/spec/legion/extensions/agentic/self/personality/client_spec.rb +20 -0
  223. data/spec/legion/extensions/agentic/self/personality/helpers/constants_spec.rb +41 -0
  224. data/spec/legion/extensions/agentic/self/personality/helpers/personality_store_spec.rb +66 -0
  225. data/spec/legion/extensions/agentic/self/personality/helpers/trait_model_spec.rb +148 -0
  226. data/spec/legion/extensions/agentic/self/personality/runners/personality_spec.rb +67 -0
  227. data/spec/legion/extensions/agentic/self/reflection/client_spec.rb +24 -0
  228. data/spec/legion/extensions/agentic/self/reflection/helpers/llm_enhancer_spec.rb +191 -0
  229. data/spec/legion/extensions/agentic/self/reflection/helpers/monitors_spec.rb +120 -0
  230. data/spec/legion/extensions/agentic/self/reflection/helpers/reflection_spec.rb +49 -0
  231. data/spec/legion/extensions/agentic/self/reflection/helpers/reflection_store_spec.rb +93 -0
  232. data/spec/legion/extensions/agentic/self/reflection/runners/reflection_spec.rb +204 -0
  233. data/spec/legion/extensions/agentic/self/self_model/client_spec.rb +55 -0
  234. data/spec/legion/extensions/agentic/self/self_model/helpers/capability_spec.rb +160 -0
  235. data/spec/legion/extensions/agentic/self/self_model/helpers/knowledge_domain_spec.rb +128 -0
  236. data/spec/legion/extensions/agentic/self/self_model/helpers/self_model_spec.rb +238 -0
  237. data/spec/legion/extensions/agentic/self/self_model/runners/self_model_spec.rb +143 -0
  238. data/spec/legion/extensions/agentic/self/self_talk/actors/volume_decay_spec.rb +46 -0
  239. data/spec/legion/extensions/agentic/self/self_talk/client_spec.rb +26 -0
  240. data/spec/legion/extensions/agentic/self/self_talk/helpers/constants_spec.rb +110 -0
  241. data/spec/legion/extensions/agentic/self/self_talk/helpers/dialogue_spec.rb +191 -0
  242. data/spec/legion/extensions/agentic/self/self_talk/helpers/dialogue_turn_spec.rb +78 -0
  243. data/spec/legion/extensions/agentic/self/self_talk/helpers/inner_voice_spec.rb +172 -0
  244. data/spec/legion/extensions/agentic/self/self_talk/helpers/llm_enhancer_spec.rb +206 -0
  245. data/spec/legion/extensions/agentic/self/self_talk/helpers/self_talk_engine_spec.rb +239 -0
  246. data/spec/legion/extensions/agentic/self/self_talk/runners/self_talk_llm_spec.rb +169 -0
  247. data/spec/legion/extensions/agentic/self/self_talk/runners/self_talk_spec.rb +196 -0
  248. data/spec/spec_helper.rb +46 -0
  249. 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