superlocalmemory 3.2.1__tar.gz → 3.2.2__tar.gz

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 (186) hide show
  1. {superlocalmemory-3.2.1/src/superlocalmemory.egg-info → superlocalmemory-3.2.2}/PKG-INFO +62 -2
  2. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/README.md +61 -1
  3. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/pyproject.toml +26 -1
  4. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/attribution/signer.py +6 -1
  5. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/config.py +114 -1
  6. superlocalmemory-3.2.2/src/superlocalmemory/core/consolidation_engine.py +595 -0
  7. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/embeddings.py +0 -1
  8. superlocalmemory-3.2.2/src/superlocalmemory/core/engine.py +325 -0
  9. superlocalmemory-3.2.2/src/superlocalmemory/core/engine_wiring.py +474 -0
  10. superlocalmemory-3.2.2/src/superlocalmemory/core/graph_analyzer.py +199 -0
  11. superlocalmemory-3.2.2/src/superlocalmemory/core/recall_pipeline.py +247 -0
  12. superlocalmemory-3.2.2/src/superlocalmemory/core/store_pipeline.py +483 -0
  13. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/worker_pool.py +35 -12
  14. superlocalmemory-3.2.2/src/superlocalmemory/encoding/auto_linker.py +308 -0
  15. superlocalmemory-3.2.2/src/superlocalmemory/encoding/context_generator.py +175 -0
  16. superlocalmemory-3.2.2/src/superlocalmemory/encoding/temporal_validator.py +513 -0
  17. superlocalmemory-3.2.2/src/superlocalmemory/hooks/auto_invoker.py +484 -0
  18. superlocalmemory-3.2.2/src/superlocalmemory/retrieval/channel_registry.py +154 -0
  19. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/engine.py +12 -0
  20. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/semantic_channel.py +87 -3
  21. superlocalmemory-3.2.2/src/superlocalmemory/retrieval/spreading_activation.py +311 -0
  22. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/strategy.py +6 -6
  23. superlocalmemory-3.2.2/src/superlocalmemory/retrieval/vector_store.py +386 -0
  24. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/v3_api.py +576 -0
  25. superlocalmemory-3.2.2/src/superlocalmemory/storage/access_log.py +169 -0
  26. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/database.py +288 -0
  27. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/schema.py +10 -0
  28. superlocalmemory-3.2.2/src/superlocalmemory/storage/schema_v32.py +252 -0
  29. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/v2_migrator.py +24 -2
  30. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2/src/superlocalmemory.egg-info}/PKG-INFO +62 -2
  31. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory.egg-info/SOURCES.txt +14 -0
  32. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_v3_api.py +14 -0
  33. superlocalmemory-3.2.1/src/superlocalmemory/core/engine.py +0 -835
  34. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/AUTHORS.md +0 -0
  35. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/LICENSE +0 -0
  36. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/NOTICE +0 -0
  37. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/setup.cfg +0 -0
  38. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/__init__.py +0 -0
  39. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/attribution/__init__.py +0 -0
  40. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
  41. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/attribution/watermark.py +0 -0
  42. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/__init__.py +0 -0
  43. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/commands.py +0 -0
  44. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/json_output.py +0 -0
  45. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/main.py +0 -0
  46. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
  47. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/post_install.py +0 -0
  48. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/setup_wizard.py +0 -0
  49. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/__init__.py +0 -0
  50. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/abac.py +0 -0
  51. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/audit.py +0 -0
  52. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
  53. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/gdpr.py +0 -0
  54. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/lifecycle.py +0 -0
  55. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/retention.py +0 -0
  56. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/scheduler.py +0 -0
  57. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/__init__.py +0 -0
  58. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/embedding_worker.py +0 -0
  59. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/hooks.py +0 -0
  60. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/maintenance.py +0 -0
  61. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/modes.py +0 -0
  62. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/ollama_embedder.py +0 -0
  63. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/profiles.py +0 -0
  64. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/recall_worker.py +0 -0
  65. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/registry.py +0 -0
  66. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/summarizer.py +0 -0
  67. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/dynamics/__init__.py +0 -0
  68. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
  69. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/__init__.py +0 -0
  70. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/consolidator.py +0 -0
  71. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/emotional.py +0 -0
  72. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
  73. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
  74. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
  75. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/foresight.py +0 -0
  76. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/graph_builder.py +0 -0
  77. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/observation_builder.py +0 -0
  78. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/scene_builder.py +0 -0
  79. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/signal_inference.py +0 -0
  80. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
  81. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/type_router.py +0 -0
  82. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/__init__.py +0 -0
  83. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/auto_capture.py +0 -0
  84. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/auto_recall.py +0 -0
  85. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
  86. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/ide_connector.py +0 -0
  87. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/rules_engine.py +0 -0
  88. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/__init__.py +0 -0
  89. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/auth_middleware.py +0 -0
  90. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/backup.py +0 -0
  91. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/cache_manager.py +0 -0
  92. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/event_bus.py +0 -0
  93. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/rate_limiter.py +0 -0
  94. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
  95. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/__init__.py +0 -0
  96. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/adaptive.py +0 -0
  97. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/behavioral.py +0 -0
  98. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
  99. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/bootstrap.py +0 -0
  100. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
  101. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/cross_project.py +0 -0
  102. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/database.py +0 -0
  103. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/engagement.py +0 -0
  104. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/features.py +0 -0
  105. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/feedback.py +0 -0
  106. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/outcomes.py +0 -0
  107. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/project_context.py +0 -0
  108. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/ranker.py +0 -0
  109. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/signals.py +0 -0
  110. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/source_quality.py +0 -0
  111. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/workflows.py +0 -0
  112. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/llm/__init__.py +0 -0
  113. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/llm/backbone.py +0 -0
  114. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/math/__init__.py +0 -0
  115. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/math/fisher.py +0 -0
  116. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/math/langevin.py +0 -0
  117. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/math/sheaf.py +0 -0
  118. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/__init__.py +0 -0
  119. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/resources.py +0 -0
  120. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/server.py +0 -0
  121. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/tools.py +0 -0
  122. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/tools_active.py +0 -0
  123. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/tools_core.py +0 -0
  124. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/tools_v28.py +0 -0
  125. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/tools_v3.py +0 -0
  126. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/__init__.py +0 -0
  127. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/agentic.py +0 -0
  128. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/ann_index.py +0 -0
  129. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
  130. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
  131. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
  132. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/fusion.py +0 -0
  133. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
  134. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/reranker.py +0 -0
  135. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
  136. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/__init__.py +0 -0
  137. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/api.py +0 -0
  138. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/__init__.py +0 -0
  139. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/agents.py +0 -0
  140. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/backup.py +0 -0
  141. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/behavioral.py +0 -0
  142. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/compliance.py +0 -0
  143. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/data_io.py +0 -0
  144. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/events.py +0 -0
  145. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/helpers.py +0 -0
  146. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/learning.py +0 -0
  147. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
  148. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/memories.py +0 -0
  149. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/profiles.py +0 -0
  150. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/stats.py +0 -0
  151. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/ws.py +0 -0
  152. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/security_middleware.py +0 -0
  153. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/ui.py +0 -0
  154. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/__init__.py +0 -0
  155. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/access_control.py +0 -0
  156. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/migrations.py +0 -0
  157. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/models.py +0 -0
  158. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/trust/__init__.py +0 -0
  159. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/trust/gate.py +0 -0
  160. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/trust/provenance.py +0 -0
  161. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/trust/scorer.py +0 -0
  162. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/trust/signals.py +0 -0
  163. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
  164. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
  165. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory.egg-info/requires.txt +0 -0
  166. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory.egg-info/top_level.txt +0 -0
  167. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_auto_hooks.py +0 -0
  168. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_behavioral_full.py +0 -0
  169. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_cli.py +0 -0
  170. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_cli_json.py +0 -0
  171. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_compliance_full.py +0 -0
  172. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_config_system.py +0 -0
  173. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_engine_hooks.py +0 -0
  174. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_event_bus.py +0 -0
  175. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_features.py +0 -0
  176. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_final_locomo_mini.py +0 -0
  177. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_ide_connector.py +0 -0
  178. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_infra.py +0 -0
  179. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_learning_advanced.py +0 -0
  180. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_learning_collectors.py +0 -0
  181. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_llm_provider.py +0 -0
  182. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_mcp_server.py +0 -0
  183. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_migration.py +0 -0
  184. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_post_install.py +0 -0
  185. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_ranker.py +0 -0
  186. {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_trust_full.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superlocalmemory
3
- Version: 3.2.1
3
+ Version: 3.2.2
4
4
  Summary: Information-geometric agent memory with mathematical guarantees
5
5
  Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com>
6
6
  License: MIT
@@ -55,7 +55,7 @@ Dynamic: license-file
55
55
  <img src="https://superlocalmemory.com/assets/logo-mark.png" alt="SuperLocalMemory" width="200"/>
56
56
  </p>
57
57
 
58
- <h1 align="center">SuperLocalMemory V3</h1>
58
+ <h1 align="center">SuperLocalMemory V3.2</h1>
59
59
  <p align="center"><strong>The first local-only AI memory to break 74% retrieval on LoCoMo.<br/>No cloud. No APIs. No data leaves your machine.</strong></p>
60
60
 
61
61
  <p align="center">
@@ -100,6 +100,66 @@ Mathematical layers contribute **+12.7 percentage points** on average across 6 c
100
100
 
101
101
  ---
102
102
 
103
+ ## What's New in V3.2 — The Living Brain
104
+
105
+ > Your AI agent now remembers the way humans do: associatively, temporally, and with consolidation during idle time. V3.2 transforms SLM from a retrieval engine into a living memory system that surfaces what you need before you ask for it.
106
+
107
+ ### Headline Features
108
+
109
+ **100x Faster Recall** — Retrieval latency drops from ~500ms to <10ms at 10K facts. Vector KNN search replaces full-table scan. You feel the difference on the first query.
110
+
111
+ **Automatic Memory Surfacing** — Memories now come to you. A multi-signal scoring engine (similarity + recency + frequency + trust) proactively injects relevant context at session start and during conversations. No more "I forgot we decided that last week."
112
+
113
+ **Associative Retrieval (5th Channel)** — V3 had 4 retrieval channels. V3.2 adds a 5th: multi-hop spreading activation across your knowledge graph. Ask about "deployment" and it surfaces the related database migration decision three hops away.
114
+
115
+ **Temporal Intelligence** — Facts now carry time-awareness. Bi-temporal validity tracks when something was true vs. when it was recorded. Contradictions are detected automatically: "We use Postgres" + "We migrated to MySQL" triggers a conflict resolution flow.
116
+
117
+ **Sleep-Time Consolidation** — During idle periods, SLM compresses, deduplicates, and reorganizes your memory store. Redundant facts merge. Clusters tighten. Important memories get promoted to Core Memory blocks that stay permanently in context (inspired by Letta's core memory, but fully local).
118
+
119
+ **Core Memory Blocks** — Pin your most critical context (architecture decisions, team conventions, project constraints) into always-available working memory. These blocks are injected into every session automatically — your agent never starts cold.
120
+
121
+ ### By the Numbers
122
+
123
+ | Metric | V3.0 | V3.2 | Change |
124
+ |:-------|:----:|:----:|:------:|
125
+ | Recall latency (10K facts) | ~500ms | <10ms | **100x faster** |
126
+ | Retrieval channels | 4 | 5 | +spreading activation |
127
+ | MCP tools | 24 | 29 | +5 new |
128
+ | CLI commands | 16 | 21 | +5 new |
129
+ | Dashboard tabs | 17 | 20 | +3 new |
130
+ | API endpoints | — | 9 new | configuration & status |
131
+ | DB tables | 9 | 18 | +9 for temporal, consolidation, core memory |
132
+
133
+ ### Enable V3.2 Features
134
+
135
+ All new features default OFF. Zero breaking changes. Opt in when ready:
136
+
137
+ ```bash
138
+ # Turn on automatic memory surfacing
139
+ slm config set auto_invoke.enabled true
140
+
141
+ # Turn on sleep-time consolidation
142
+ slm config set consolidation.enabled true
143
+
144
+ # Turn on temporal intelligence
145
+ slm config set temporal.enabled true
146
+
147
+ # Turn on associative retrieval (5th channel)
148
+ slm config set retrieval.synapse.enabled true
149
+ ```
150
+
151
+ Or enable everything at once:
152
+
153
+ ```bash
154
+ slm config set v32_features.all true
155
+ ```
156
+
157
+ **Fully backward compatible.** All 29 MCP tools, 21 CLI commands work the same. Existing data untouched. New features activate only when you flip the switch.
158
+
159
+ > **V3.2 Paper** — Technical details, formal guarantees, and benchmark results in the upcoming companion paper. Watch the [arXiv page](https://arxiv.org/abs/2603.14588) for updates.
160
+
161
+ ---
162
+
103
163
  ## Quick Start
104
164
 
105
165
  ### Install via npm (recommended)
@@ -2,7 +2,7 @@
2
2
  <img src="https://superlocalmemory.com/assets/logo-mark.png" alt="SuperLocalMemory" width="200"/>
3
3
  </p>
4
4
 
5
- <h1 align="center">SuperLocalMemory V3</h1>
5
+ <h1 align="center">SuperLocalMemory V3.2</h1>
6
6
  <p align="center"><strong>The first local-only AI memory to break 74% retrieval on LoCoMo.<br/>No cloud. No APIs. No data leaves your machine.</strong></p>
7
7
 
8
8
  <p align="center">
@@ -47,6 +47,66 @@ Mathematical layers contribute **+12.7 percentage points** on average across 6 c
47
47
 
48
48
  ---
49
49
 
50
+ ## What's New in V3.2 — The Living Brain
51
+
52
+ > Your AI agent now remembers the way humans do: associatively, temporally, and with consolidation during idle time. V3.2 transforms SLM from a retrieval engine into a living memory system that surfaces what you need before you ask for it.
53
+
54
+ ### Headline Features
55
+
56
+ **100x Faster Recall** — Retrieval latency drops from ~500ms to <10ms at 10K facts. Vector KNN search replaces full-table scan. You feel the difference on the first query.
57
+
58
+ **Automatic Memory Surfacing** — Memories now come to you. A multi-signal scoring engine (similarity + recency + frequency + trust) proactively injects relevant context at session start and during conversations. No more "I forgot we decided that last week."
59
+
60
+ **Associative Retrieval (5th Channel)** — V3 had 4 retrieval channels. V3.2 adds a 5th: multi-hop spreading activation across your knowledge graph. Ask about "deployment" and it surfaces the related database migration decision three hops away.
61
+
62
+ **Temporal Intelligence** — Facts now carry time-awareness. Bi-temporal validity tracks when something was true vs. when it was recorded. Contradictions are detected automatically: "We use Postgres" + "We migrated to MySQL" triggers a conflict resolution flow.
63
+
64
+ **Sleep-Time Consolidation** — During idle periods, SLM compresses, deduplicates, and reorganizes your memory store. Redundant facts merge. Clusters tighten. Important memories get promoted to Core Memory blocks that stay permanently in context (inspired by Letta's core memory, but fully local).
65
+
66
+ **Core Memory Blocks** — Pin your most critical context (architecture decisions, team conventions, project constraints) into always-available working memory. These blocks are injected into every session automatically — your agent never starts cold.
67
+
68
+ ### By the Numbers
69
+
70
+ | Metric | V3.0 | V3.2 | Change |
71
+ |:-------|:----:|:----:|:------:|
72
+ | Recall latency (10K facts) | ~500ms | <10ms | **100x faster** |
73
+ | Retrieval channels | 4 | 5 | +spreading activation |
74
+ | MCP tools | 24 | 29 | +5 new |
75
+ | CLI commands | 16 | 21 | +5 new |
76
+ | Dashboard tabs | 17 | 20 | +3 new |
77
+ | API endpoints | — | 9 new | configuration & status |
78
+ | DB tables | 9 | 18 | +9 for temporal, consolidation, core memory |
79
+
80
+ ### Enable V3.2 Features
81
+
82
+ All new features default OFF. Zero breaking changes. Opt in when ready:
83
+
84
+ ```bash
85
+ # Turn on automatic memory surfacing
86
+ slm config set auto_invoke.enabled true
87
+
88
+ # Turn on sleep-time consolidation
89
+ slm config set consolidation.enabled true
90
+
91
+ # Turn on temporal intelligence
92
+ slm config set temporal.enabled true
93
+
94
+ # Turn on associative retrieval (5th channel)
95
+ slm config set retrieval.synapse.enabled true
96
+ ```
97
+
98
+ Or enable everything at once:
99
+
100
+ ```bash
101
+ slm config set v32_features.all true
102
+ ```
103
+
104
+ **Fully backward compatible.** All 29 MCP tools, 21 CLI commands work the same. Existing data untouched. New features activate only when you flip the switch.
105
+
106
+ > **V3.2 Paper** — Technical details, formal guarantees, and benchmark results in the upcoming companion paper. Watch the [arXiv page](https://arxiv.org/abs/2603.14588) for updates.
107
+
108
+ ---
109
+
50
110
  ## Quick Start
51
111
 
52
112
  ### Install via npm (recommended)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superlocalmemory"
3
- version = "3.2.1"
3
+ version = "3.2.2"
4
4
  description = "Information-geometric agent memory with mathematical guarantees"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -78,6 +78,31 @@ where = ["src"]
78
78
  [tool.pytest.ini_options]
79
79
  testpaths = ["tests"]
80
80
  pythonpath = ["src"]
81
+ markers = [
82
+ "slow: marks tests as slow (deselect with '-m \"not slow\"')",
83
+ ]
84
+
85
+ [tool.coverage.run]
86
+ source = ["superlocalmemory"]
87
+ omit = [
88
+ "*/tests/*",
89
+ "*/ui/*",
90
+ "*/cli/*",
91
+ "*/__main__.py",
92
+ ]
93
+
94
+ [tool.coverage.report]
95
+ fail_under = 0
96
+ show_missing = true
97
+ exclude_lines = [
98
+ "pragma: no cover",
99
+ "if TYPE_CHECKING:",
100
+ "if __name__ ==",
101
+ "@overload",
102
+ ]
103
+
104
+ [tool.coverage.html]
105
+ directory = "htmlcov"
81
106
 
82
107
  [tool.ruff]
83
108
  target-version = "py311"
@@ -17,6 +17,7 @@ from __future__ import annotations
17
17
  import hashlib
18
18
  import hmac
19
19
  import os
20
+ import sys
20
21
  from datetime import datetime, timezone
21
22
  from typing import Dict
22
23
 
@@ -35,7 +36,11 @@ def _get_or_create_key() -> str:
35
36
  os.makedirs(os.path.dirname(key_path), exist_ok=True)
36
37
  with open(key_path, "w") as f:
37
38
  f.write(key)
38
- os.chmod(key_path, 0o600)
39
+ # On POSIX, restrict the key file to owner-only read/write.
40
+ # On Windows, os.chmod only supports setting the read-only flag
41
+ # and cannot enforce Unix-style permissions, so we skip it.
42
+ if sys.platform != "win32":
43
+ os.chmod(key_path, 0o600)
39
44
  return key
40
45
 
41
46
  _DEFAULT_KEY: str = _get_or_create_key()
@@ -84,13 +84,14 @@ class LLMConfig:
84
84
 
85
85
  @dataclass
86
86
  class ChannelWeights:
87
- """Retrieval channel weights — 4 channels, query-adaptive."""
87
+ """Retrieval channel weights — 5 channels, query-adaptive."""
88
88
 
89
89
  # Entity-linked facts are high-precision matches that rank above BM25.
90
90
  semantic: float = 1.2
91
91
  bm25: float = 1.0
92
92
  entity_graph: float = 1.3
93
93
  temporal: float = 1.0
94
+ spreading_activation: float = 1.0 # Phase 3: 5th channel (BC-08: default value)
94
95
 
95
96
  def as_dict(self) -> dict[str, float]:
96
97
  return {
@@ -98,6 +99,7 @@ class ChannelWeights:
98
99
  "bm25": self.bm25,
99
100
  "entity_graph": self.entity_graph,
100
101
  "temporal": self.temporal,
102
+ "spreading_activation": self.spreading_activation,
101
103
  }
102
104
 
103
105
 
@@ -207,6 +209,109 @@ class MathConfig:
207
209
  # Rate-Distortion (production only, disabled for benchmarks)
208
210
 
209
211
 
212
+ # ---------------------------------------------------------------------------
213
+ # Master Config
214
+ # ---------------------------------------------------------------------------
215
+
216
+ @dataclass(frozen=True)
217
+ class ConsolidationConfig:
218
+ """Configuration for sleep-time consolidation (Phase 5).
219
+
220
+ Feature-flagged: starts enabled=False (Rule 12).
221
+ """
222
+
223
+ enabled: bool = False # Feature flag (Rule 12)
224
+ step_count_trigger: int = 50 # Lightweight consolidation every N stores (L7)
225
+ session_trigger: bool = True # Run on session end
226
+ idle_timeout_seconds: int = 300 # 5 min inactivity
227
+ scheduled_sessions: int = 5 # Full consolidation every N sessions
228
+ core_memory_char_limit: int = 2000 # Total chars across all blocks
229
+ block_char_limit: int = 500 # Per-block character limit
230
+ compression_similarity: float = 0.85 # Dedup threshold for compression
231
+ promotion_min_access: int = 3 # Min access count for promotion
232
+ promotion_min_trust: float = 0.5 # Min trust for promotion
233
+ decay_days_threshold: int = 30 # Edge decay after N days
234
+
235
+
236
+ @dataclass(frozen=True)
237
+ class TemporalValidatorConfig:
238
+ """Configuration for temporal intelligence (Phase 4).
239
+
240
+ Feature-flagged: starts enabled=False (Rule 12).
241
+ """
242
+
243
+ enabled: bool = False
244
+ mode: str = "a" # "a" (sheaf), "b"/"c" (LLM)
245
+
246
+ # Sheaf contradiction threshold
247
+ contradiction_threshold: float = 0.45 # Mode A threshold (768d)
248
+
249
+ # LLM pre-filter threshold (lower to catch more candidates)
250
+ llm_prefilter_threshold: float = 0.30
251
+
252
+ # Max LLM checks per new fact (cost control)
253
+ max_llm_checks: int = 5
254
+
255
+ # Trust penalty for expired facts
256
+ expiration_trust_penalty: float = -0.2
257
+
258
+ # Include expired facts in historical queries
259
+ include_expired_in_history: bool = True
260
+
261
+
262
+ @dataclass(frozen=True)
263
+ class AutoInvokeConfig:
264
+ """Configuration for the Auto-Invoke Engine (Phase 2).
265
+
266
+ Feature-flagged: starts enabled=False, graduated to default on
267
+ after MRR validation passes (Rule 12).
268
+
269
+ References:
270
+ - SYNAPSE: FOK gating (fok_threshold = 0.12)
271
+ - ACT-R: base-level activation (act_r_decay = 0.5)
272
+ - Zep/Hindsight: multi-signal ranking consensus
273
+ """
274
+
275
+ enabled: bool = False # Feature flag (Rule 12)
276
+ profile_id: str = "default"
277
+
278
+ # Scoring weights (4-signal default) -- must sum to 1.0
279
+ weights: dict = field(default_factory=lambda: {
280
+ "similarity": 0.40,
281
+ "recency": 0.25,
282
+ "frequency": 0.20,
283
+ "trust": 0.15,
284
+ })
285
+
286
+ # ACT-R mode (3-signal alternative) -- must sum to 1.0
287
+ use_act_r: bool = False
288
+ act_r_weights: dict = field(default_factory=lambda: {
289
+ "similarity": 0.40,
290
+ "base_level": 0.35,
291
+ "trust": 0.25,
292
+ })
293
+ act_r_decay: float = 0.5 # Power-law decay exponent
294
+
295
+ # FOK gating (Feeling-of-Knowing)
296
+ fok_threshold: float = 0.12 # SYNAPSE minimum score gate
297
+
298
+ # Retrieval limits
299
+ max_memories_injected: int = 10
300
+ candidate_multiplier: int = 3 # candidates = limit * multiplier
301
+
302
+ # Mode A degradation weights -- must sum to 1.0
303
+ mode_a_weights: dict = field(default_factory=lambda: {
304
+ "similarity": 0.00,
305
+ "recency": 0.40,
306
+ "frequency": 0.35,
307
+ "trust": 0.25,
308
+ })
309
+
310
+ # Behavioral
311
+ include_archived: bool = False
312
+ relevance_threshold: float = 0.3 # Legacy compat with AutoRecall
313
+
314
+
210
315
  # ---------------------------------------------------------------------------
211
316
  # Master Config
212
317
  # ---------------------------------------------------------------------------
@@ -229,6 +334,13 @@ class SLMConfig:
229
334
  encoding: EncodingConfig = field(default_factory=EncodingConfig)
230
335
  retrieval: RetrievalConfig = field(default_factory=RetrievalConfig)
231
336
  math: MathConfig = field(default_factory=MathConfig)
337
+ temporal_validator: TemporalValidatorConfig = field(
338
+ default_factory=TemporalValidatorConfig,
339
+ )
340
+ auto_invoke: AutoInvokeConfig = field(default_factory=AutoInvokeConfig)
341
+ consolidation: ConsolidationConfig = field(
342
+ default_factory=ConsolidationConfig,
343
+ )
232
344
 
233
345
  def __post_init__(self) -> None:
234
346
  if self.db_path is None:
@@ -395,6 +507,7 @@ class SLMConfig:
395
507
  bm25=1.2,
396
508
  entity_graph=1.3,
397
509
  temporal=1.0,
510
+ spreading_activation=1.2, # Phase 3: SA boost in Mode C
398
511
  ),
399
512
  retrieval=RetrievalConfig(
400
513
  use_cross_encoder=True,