superlocalmemory 3.4.49__tar.gz → 3.4.52__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 (467) hide show
  1. {superlocalmemory-3.4.49/src/superlocalmemory.egg-info → superlocalmemory-3.4.52}/PKG-INFO +44 -2
  2. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/README.md +43 -1
  3. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/pyproject.toml +1 -1
  4. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/__init__.py +1 -1
  5. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/commands.py +7 -2
  6. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/main.py +10 -0
  7. superlocalmemory-3.4.52/src/superlocalmemory/core/backend_orchestrator.py +365 -0
  8. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/ollama_embedder.py +14 -4
  9. superlocalmemory-3.4.52/src/superlocalmemory/core/pruning_engine.py +216 -0
  10. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/recall_pipeline.py +26 -2
  11. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/store_pipeline.py +21 -0
  12. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/tier_manager.py +124 -0
  13. superlocalmemory-3.4.52/src/superlocalmemory/graph/__init__.py +9 -0
  14. superlocalmemory-3.4.52/src/superlocalmemory/graph/cozo_backend.py +527 -0
  15. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/_daemon_proxy.py +1 -1
  16. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/_pool_adapter.py +2 -0
  17. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools_active.py +141 -1
  18. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/engine.py +15 -3
  19. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/entity_channel.py +50 -1
  20. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/reranker.py +15 -0
  21. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/spreading_activation.py +5 -2
  22. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/unified_daemon.py +73 -5
  23. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migration_runner.py +3 -0
  24. superlocalmemory-3.4.52/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +45 -0
  25. superlocalmemory-3.4.52/src/superlocalmemory/storage/schema_v345.py +109 -0
  26. superlocalmemory-3.4.52/src/superlocalmemory/vector/__init__.py +9 -0
  27. superlocalmemory-3.4.52/src/superlocalmemory/vector/lancedb_backend.py +299 -0
  28. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52/src/superlocalmemory.egg-info}/PKG-INFO +44 -2
  29. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory.egg-info/SOURCES.txt +8 -0
  30. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/AUTHORS.md +0 -0
  31. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/LICENSE +0 -0
  32. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/NOTICE +0 -0
  33. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/setup.cfg +0 -0
  34. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/attribution/__init__.py +0 -0
  35. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
  36. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/attribution/signer.py +0 -0
  37. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/attribution/watermark.py +0 -0
  38. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/__init__.py +0 -0
  39. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/context_commands.py +0 -0
  40. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/daemon.py +0 -0
  41. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/db_migrate.py +0 -0
  42. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
  43. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/escape_hatch.py +0 -0
  44. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
  45. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/json_output.py +0 -0
  46. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
  47. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/pending_store.py +0 -0
  48. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/post_install.py +0 -0
  49. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/service_installer.py +0 -0
  50. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/setup_wizard.py +0 -0
  51. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/version_banner.py +0 -0
  52. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
  53. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/__init__.py +0 -0
  54. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
  55. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
  56. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
  57. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
  58. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
  59. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
  60. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
  61. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/changes.py +0 -0
  62. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/communities.py +0 -0
  63. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/config.py +0 -0
  64. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/database.py +0 -0
  65. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
  66. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
  67. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
  68. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/flows.py +0 -0
  69. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
  70. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
  71. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/graph_store.py +0 -0
  72. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/incremental.py +0 -0
  73. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/models.py +0 -0
  74. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/parser.py +0 -0
  75. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/resolver.py +0 -0
  76. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/search.py +0 -0
  77. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/service.py +0 -0
  78. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/code_graph/watcher.py +0 -0
  79. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/compliance/__init__.py +0 -0
  80. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/compliance/abac.py +0 -0
  81. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/compliance/audit.py +0 -0
  82. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
  83. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/compliance/gdpr.py +0 -0
  84. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/compliance/lifecycle.py +0 -0
  85. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/compliance/retention.py +0 -0
  86. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/compliance/scheduler.py +0 -0
  87. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/__init__.py +0 -0
  88. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/clock_monitor.py +0 -0
  89. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/config.py +0 -0
  90. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/consolidation_engine.py +0 -0
  91. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/context_cache.py +0 -0
  92. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/db_pool.py +0 -0
  93. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/embedding_worker.py +0 -0
  94. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/embeddings.py +0 -0
  95. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/engine.py +0 -0
  96. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/engine_capabilities.py +0 -0
  97. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/engine_lock.py +0 -0
  98. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/engine_wiring.py +0 -0
  99. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/error_catalog.py +0 -0
  100. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/error_envelope.py +0 -0
  101. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/fact_consolidator.py +0 -0
  102. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/file_lock.py +0 -0
  103. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/graph_analyzer.py +0 -0
  104. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/graph_pruner.py +0 -0
  105. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/health_monitor.py +0 -0
  106. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/hooks.py +0 -0
  107. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/loop_watchdog.py +0 -0
  108. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/maintenance.py +0 -0
  109. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
  110. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/modes.py +0 -0
  111. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/platform_utils.py +0 -0
  112. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/priority_queue.py +0 -0
  113. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/profiles.py +0 -0
  114. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/queue_consumer.py +0 -0
  115. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
  116. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/ram_lock.py +0 -0
  117. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/rate_limit.py +0 -0
  118. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/recall_gate.py +0 -0
  119. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/recall_queue.py +0 -0
  120. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/recall_worker.py +0 -0
  121. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/registry.py +0 -0
  122. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/reranker_worker.py +0 -0
  123. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/safe_fs.py +0 -0
  124. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/security_primitives.py +0 -0
  125. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/shadow_router.py +0 -0
  126. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/slm_disabled.py +0 -0
  127. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/slmignore.py +0 -0
  128. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/summarizer.py +0 -0
  129. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/topic_signature.py +0 -0
  130. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/core/worker_pool.py +0 -0
  131. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/dynamics/__init__.py +0 -0
  132. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
  133. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
  134. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
  135. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
  136. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/__init__.py +0 -0
  137. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/auto_linker.py +0 -0
  138. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
  139. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/consolidator.py +0 -0
  140. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/context_generator.py +0 -0
  141. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/emotional.py +0 -0
  142. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
  143. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
  144. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
  145. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/foresight.py +0 -0
  146. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/graph_builder.py +0 -0
  147. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/observation_builder.py +0 -0
  148. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/scene_builder.py +0 -0
  149. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/signal_inference.py +0 -0
  150. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
  151. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
  152. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/encoding/type_router.py +0 -0
  153. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/evolution/__init__.py +0 -0
  154. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
  155. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/evolution/budget.py +0 -0
  156. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/evolution/evolution_store.py +0 -0
  157. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
  158. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
  159. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
  160. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/evolution/triggers.py +0 -0
  161. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/evolution/types.py +0 -0
  162. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/__init__.py +0 -0
  163. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
  164. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/adapter_base.py +0 -0
  165. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
  166. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/auto_capture.py +0 -0
  167. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
  168. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
  169. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/auto_recall.py +0 -0
  170. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
  171. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
  172. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
  173. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/context_payload.py +0 -0
  174. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
  175. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
  176. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
  177. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
  178. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
  179. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/ide_connector.py +0 -0
  180. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
  181. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
  182. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
  183. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/rules_engine.py +0 -0
  184. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/session_registry.py +0 -0
  185. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
  186. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/sync_loop.py +0 -0
  187. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
  188. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
  189. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
  190. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/__init__.py +0 -0
  191. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/auth_middleware.py +0 -0
  192. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/backup.py +0 -0
  193. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/cache_manager.py +0 -0
  194. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/cloud_backup.py +0 -0
  195. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/event_bus.py +0 -0
  196. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
  197. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/pid_manager.py +0 -0
  198. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/process_reaper.py +0 -0
  199. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/rate_limiter.py +0 -0
  200. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
  201. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ingestion/__init__.py +0 -0
  202. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
  203. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
  204. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
  205. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ingestion/credentials.py +0 -0
  206. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
  207. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ingestion/parsers.py +0 -0
  208. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
  209. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/__init__.py +0 -0
  210. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/adaptive.py +0 -0
  211. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/arm_catalog.py +0 -0
  212. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/assertion_miner.py +0 -0
  213. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/bandit.py +0 -0
  214. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/bandit_cache.py +0 -0
  215. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/behavioral.py +0 -0
  216. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
  217. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/bootstrap.py +0 -0
  218. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
  219. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
  220. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
  221. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/cross_project.py +0 -0
  222. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/database.py +0 -0
  223. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
  224. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/engagement.py +0 -0
  225. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/ensemble.py +0 -0
  226. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/entity_compiler.py +0 -0
  227. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
  228. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/features.py +0 -0
  229. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/feedback.py +0 -0
  230. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
  231. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
  232. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/labeler.py +0 -0
  233. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/legacy_migration.py +0 -0
  234. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/memory_merge.py +0 -0
  235. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/model_cache.py +0 -0
  236. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/model_rollback.py +0 -0
  237. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/outcome_queue.py +0 -0
  238. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/outcomes.py +0 -0
  239. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/pattern_miner.py +0 -0
  240. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
  241. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/project_context.py +0 -0
  242. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
  243. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/ranker.py +0 -0
  244. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/ranker_common.py +0 -0
  245. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
  246. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
  247. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/reward.py +0 -0
  248. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/reward_archive.py +0 -0
  249. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/reward_boost.py +0 -0
  250. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/reward_proxy.py +0 -0
  251. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/shadow_test.py +0 -0
  252. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/signal_worker.py +0 -0
  253. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/signals.py +0 -0
  254. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
  255. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/source_quality.py +0 -0
  256. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/trigram_index.py +0 -0
  257. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/learning/workflows.py +0 -0
  258. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/llm/__init__.py +0 -0
  259. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/llm/backbone.py +0 -0
  260. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/math/__init__.py +0 -0
  261. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/math/ebbinghaus.py +0 -0
  262. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/math/fisher.py +0 -0
  263. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/math/fisher_quantized.py +0 -0
  264. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/math/hopfield.py +0 -0
  265. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/math/langevin.py +0 -0
  266. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/math/polar_quant.py +0 -0
  267. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/math/qjl.py +0 -0
  268. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/math/sheaf.py +0 -0
  269. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/math/turbo_quant.py +0 -0
  270. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/__init__.py +0 -0
  271. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/resources.py +0 -0
  272. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/server.py +0 -0
  273. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/shared.py +0 -0
  274. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools.py +0 -0
  275. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
  276. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools_context.py +0 -0
  277. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools_core.py +0 -0
  278. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
  279. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools_learning.py +0 -0
  280. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
  281. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools_v28.py +0 -0
  282. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools_v3.py +0 -0
  283. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mcp/tools_v33.py +0 -0
  284. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mesh/__init__.py +0 -0
  285. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mesh/broker.py +0 -0
  286. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/mesh/remote_sync.py +0 -0
  287. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/migrations/__init__.py +0 -0
  288. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
  289. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/parameterization/__init__.py +0 -0
  290. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
  291. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
  292. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
  293. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
  294. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
  295. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/__init__.py +0 -0
  296. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/agentic.py +0 -0
  297. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/ann_index.py +0 -0
  298. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
  299. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
  300. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
  301. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
  302. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/fusion.py +0 -0
  303. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
  304. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
  305. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
  306. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
  307. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/strategy.py +0 -0
  308. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
  309. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/retrieval/vector_store.py +0 -0
  310. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/__init__.py +0 -0
  311. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/api.py +0 -0
  312. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/bandit_loops.py +0 -0
  313. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/middleware/__init__.py +0 -0
  314. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
  315. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/__init__.py +0 -0
  316. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/adapters.py +0 -0
  317. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/agents.py +0 -0
  318. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/backup.py +0 -0
  319. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/behavioral.py +0 -0
  320. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/brain.py +0 -0
  321. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/chat.py +0 -0
  322. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/compliance.py +0 -0
  323. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/data_io.py +0 -0
  324. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/entity.py +0 -0
  325. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/events.py +0 -0
  326. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/evolution.py +0 -0
  327. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/helpers.py +0 -0
  328. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/ingest.py +0 -0
  329. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/insights.py +0 -0
  330. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/learning.py +0 -0
  331. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
  332. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/memories.py +0 -0
  333. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/mesh.py +0 -0
  334. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/prewarm.py +0 -0
  335. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/profiles.py +0 -0
  336. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/stats.py +0 -0
  337. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/tiers.py +0 -0
  338. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/timeline.py +0 -0
  339. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/token.py +0 -0
  340. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/v3_api.py +0 -0
  341. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/routes/ws.py +0 -0
  342. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/security_middleware.py +0 -0
  343. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/server/ui.py +0 -0
  344. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
  345. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
  346. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
  347. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
  348. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
  349. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
  350. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
  351. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/__init__.py +0 -0
  352. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/access_control.py +0 -0
  353. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/access_log.py +0 -0
  354. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/database.py +0 -0
  355. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
  356. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migration_v33.py +0 -0
  357. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
  358. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
  359. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
  360. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
  361. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
  362. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
  363. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
  364. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
  365. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
  366. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
  367. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
  368. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
  369. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
  370. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/migrations.py +0 -0
  371. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/models.py +0 -0
  372. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/quantized_store.py +0 -0
  373. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/schema.py +0 -0
  374. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
  375. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/schema_v32.py +0 -0
  376. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/schema_v3410.py +0 -0
  377. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/schema_v3411.py +0 -0
  378. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/schema_v343.py +0 -0
  379. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/schema_v347.py +0 -0
  380. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/storage/v2_migrator.py +0 -0
  381. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/trust/__init__.py +0 -0
  382. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/trust/gate.py +0 -0
  383. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/trust/provenance.py +0 -0
  384. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/trust/scorer.py +0 -0
  385. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/trust/signals.py +0 -0
  386. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/css/brain.css +0 -0
  387. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
  388. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
  389. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/index.html +0 -0
  390. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/agents.js +0 -0
  391. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
  392. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/brain.js +0 -0
  393. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/clusters.js +0 -0
  394. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/compliance.js +0 -0
  395. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/core.js +0 -0
  396. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/dashboard.js +0 -0
  397. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/events.js +0 -0
  398. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
  399. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/feedback.js +0 -0
  400. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
  401. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
  402. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
  403. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/ide-status.js +0 -0
  404. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/init.js +0 -0
  405. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
  406. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
  407. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/math-health.js +0 -0
  408. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/memories.js +0 -0
  409. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
  410. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
  411. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/modal.js +0 -0
  412. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
  413. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/ng-health.js +0 -0
  414. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
  415. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
  416. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
  417. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
  418. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/profiles.js +0 -0
  419. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
  420. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
  421. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/search.js +0 -0
  422. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/settings.js +0 -0
  423. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/timeline.js +0 -0
  424. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
  425. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
  426. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  427. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  428. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
  429. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
  430. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
  431. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
  432. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
  433. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
  434. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
  435. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
  436. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
  437. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
  438. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
  439. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory.egg-info/requires.txt +0 -0
  440. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/src/superlocalmemory.egg-info/top_level.txt +0 -0
  441. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_auto_hooks.py +0 -0
  442. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_before_web_hook.py +0 -0
  443. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_behavioral_full.py +0 -0
  444. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_claude_hooks.py +0 -0
  445. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_cli.py +0 -0
  446. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_cli_json.py +0 -0
  447. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_cli_v33.py +0 -0
  448. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_compliance_full.py +0 -0
  449. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_config_system.py +0 -0
  450. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_engine_hooks.py +0 -0
  451. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_event_bus.py +0 -0
  452. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_features.py +0 -0
  453. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_final_locomo_mini.py +0 -0
  454. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_hook_handlers.py +0 -0
  455. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_ide_connector.py +0 -0
  456. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_infra.py +0 -0
  457. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_learning_advanced.py +0 -0
  458. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_learning_collectors.py +0 -0
  459. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_llm_provider.py +0 -0
  460. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_mcp_server.py +0 -0
  461. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_migration.py +0 -0
  462. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_mode_switch_preservation.py +0 -0
  463. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_post_install.py +0 -0
  464. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_ranker.py +0 -0
  465. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_topic_shift_hook.py +0 -0
  466. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_trust_full.py +0 -0
  467. {superlocalmemory-3.4.49 → superlocalmemory-3.4.52}/tests/test_v3_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superlocalmemory
3
- Version: 3.4.49
3
+ Version: 3.4.52
4
4
  Summary: Information-geometric agent memory with mathematical guarantees
5
5
  Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com>
6
6
  License: AGPL-3.0-or-later
@@ -93,7 +93,7 @@ Dynamic: license-file
93
93
 
94
94
  <h1 align="center">SuperLocalMemory V3.4</h1>
95
95
  <p align="center"><strong>Every other AI forgets. Yours won't.</strong><br/><em>Infinite memory for Claude Code, Cursor, Windsurf, and any MCP-compatible AI client.</em></p>
96
- <p align="center"><code>v3.4.48</code> — Install once. Every session remembers the last. Automatically.<br><strong>Now with multi-machine agent mesh M4 and M5 coordinate as one.</strong></p>
96
+ <p align="center"><code>v3.4.51 "Recency Intelligence"</code> — <strong>Session context is now time-aware.</strong><br>Stale memories from old projects no longer surface. Ebbinghaus decay + FSRS stability. One command: <code>pip install -U superlocalmemory && slm restart</code></p>
97
97
  <p align="center"><strong>Backed by 3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
98
98
 
99
99
  <p align="center">
@@ -272,6 +272,30 @@ slm warmup # Pre-download embedding model (~500MB, optional)
272
272
  pip install superlocalmemory
273
273
  ```
274
274
 
275
+ ### Upgrading to v3.4.5 "Scale-Ready"
276
+
277
+ **Migration is automatic.** Upgrade your package, restart the daemon, and your database migrates silently.
278
+
279
+ ```bash
280
+ # pip users
281
+ pip install -U superlocalmemory
282
+ slm restart
283
+
284
+ # npm users
285
+ npm update -g superlocalmemory
286
+ slm restart
287
+
288
+ # Verify migration
289
+ slm doctor
290
+ ```
291
+
292
+ No manual commands. No data loss. Your database upgrades in-place with zero downtime. The daemon auto-detects the old version and applies the migration on first start.
293
+
294
+ **New capabilities after upgrade:**
295
+ - Tiered storage: memories auto-classified as active/warm/cold/archived
296
+ - Graph pruning: redundant edges removed, queries stay fast at 1M+ connections
297
+ - Optional: `pip install superlocalmemory[cozo,lancedb]` for graph + vector acceleration
298
+
275
299
  ### First Use
276
300
 
277
301
  ```bash
@@ -499,6 +523,23 @@ Every recall generates learning signals. Over time, the system adapts to your pa
499
523
 
500
524
  Auto-capture hooks: `slm hooks install` + `slm observe` + `slm session-context`. MCP tools: `session_init`, `observe`, `report_feedback`.
501
525
 
526
+ **`session_init` MCP parameters:**
527
+ | Parameter | Type | Default | Description |
528
+ |---|---|---|---|
529
+ | `project_path` | string | `""` | Working directory — used to derive search query |
530
+ | `query` | string | `""` | Override search query |
531
+ | `max_results` | int | `10` | Max memories to return |
532
+ | `max_age_days` | int | `30` | Suppress memories older than N days (0 = disabled). Memories with score ≥ 0.70 always surface regardless of age. |
533
+
534
+ **`slm session-context` CLI flags** (consistent with MCP):
535
+ ```bash
536
+ slm session-context # fast path, 30-day window (default)
537
+ slm session-context --max-age-days 7 # only last 7 days
538
+ slm session-context --max-age-days 0 # no age filter
539
+ slm session-context "my query" --full # full engine path (slow, requires Ollama)
540
+ slm session-context --json # agent-native JSON output
541
+ ```
542
+
502
543
  **No competitor learns at zero token cost.**
503
544
 
504
545
  </details>
@@ -637,6 +678,7 @@ All 8 mesh tools work seamlessly across machines:
637
678
  | `slm hooks install` | Wire auto-memory into Claude Code hooks |
638
679
  | `slm profile list/create/switch` | Profile management |
639
680
  | `slm decay` | Run memory lifecycle review |
681
+ | `slm session-context [query]` | Print session context (for hooks). Flags: `--max-age-days N` (default 30), `--full`, `--json` |
640
682
  | `slm quantize` | Run smart compression cycle |
641
683
  | `slm consolidate --cognitive` | Extract patterns from memory clusters |
642
684
  | `slm soft-prompts` | View auto-learned patterns |
@@ -4,7 +4,7 @@
4
4
 
5
5
  <h1 align="center">SuperLocalMemory V3.4</h1>
6
6
  <p align="center"><strong>Every other AI forgets. Yours won't.</strong><br/><em>Infinite memory for Claude Code, Cursor, Windsurf, and any MCP-compatible AI client.</em></p>
7
- <p align="center"><code>v3.4.48</code> — Install once. Every session remembers the last. Automatically.<br><strong>Now with multi-machine agent mesh M4 and M5 coordinate as one.</strong></p>
7
+ <p align="center"><code>v3.4.51 "Recency Intelligence"</code> — <strong>Session context is now time-aware.</strong><br>Stale memories from old projects no longer surface. Ebbinghaus decay + FSRS stability. One command: <code>pip install -U superlocalmemory && slm restart</code></p>
8
8
  <p align="center"><strong>Backed by 3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
9
9
 
10
10
  <p align="center">
@@ -183,6 +183,30 @@ slm warmup # Pre-download embedding model (~500MB, optional)
183
183
  pip install superlocalmemory
184
184
  ```
185
185
 
186
+ ### Upgrading to v3.4.5 "Scale-Ready"
187
+
188
+ **Migration is automatic.** Upgrade your package, restart the daemon, and your database migrates silently.
189
+
190
+ ```bash
191
+ # pip users
192
+ pip install -U superlocalmemory
193
+ slm restart
194
+
195
+ # npm users
196
+ npm update -g superlocalmemory
197
+ slm restart
198
+
199
+ # Verify migration
200
+ slm doctor
201
+ ```
202
+
203
+ No manual commands. No data loss. Your database upgrades in-place with zero downtime. The daemon auto-detects the old version and applies the migration on first start.
204
+
205
+ **New capabilities after upgrade:**
206
+ - Tiered storage: memories auto-classified as active/warm/cold/archived
207
+ - Graph pruning: redundant edges removed, queries stay fast at 1M+ connections
208
+ - Optional: `pip install superlocalmemory[cozo,lancedb]` for graph + vector acceleration
209
+
186
210
  ### First Use
187
211
 
188
212
  ```bash
@@ -410,6 +434,23 @@ Every recall generates learning signals. Over time, the system adapts to your pa
410
434
 
411
435
  Auto-capture hooks: `slm hooks install` + `slm observe` + `slm session-context`. MCP tools: `session_init`, `observe`, `report_feedback`.
412
436
 
437
+ **`session_init` MCP parameters:**
438
+ | Parameter | Type | Default | Description |
439
+ |---|---|---|---|
440
+ | `project_path` | string | `""` | Working directory — used to derive search query |
441
+ | `query` | string | `""` | Override search query |
442
+ | `max_results` | int | `10` | Max memories to return |
443
+ | `max_age_days` | int | `30` | Suppress memories older than N days (0 = disabled). Memories with score ≥ 0.70 always surface regardless of age. |
444
+
445
+ **`slm session-context` CLI flags** (consistent with MCP):
446
+ ```bash
447
+ slm session-context # fast path, 30-day window (default)
448
+ slm session-context --max-age-days 7 # only last 7 days
449
+ slm session-context --max-age-days 0 # no age filter
450
+ slm session-context "my query" --full # full engine path (slow, requires Ollama)
451
+ slm session-context --json # agent-native JSON output
452
+ ```
453
+
413
454
  **No competitor learns at zero token cost.**
414
455
 
415
456
  </details>
@@ -548,6 +589,7 @@ All 8 mesh tools work seamlessly across machines:
548
589
  | `slm hooks install` | Wire auto-memory into Claude Code hooks |
549
590
  | `slm profile list/create/switch` | Profile management |
550
591
  | `slm decay` | Run memory lifecycle review |
592
+ | `slm session-context [query]` | Print session context (for hooks). Flags: `--max-age-days N` (default 30), `--full`, `--json` |
551
593
  | `slm quantize` | Run smart compression cycle |
552
594
  | `slm consolidate --cognitive` | Extract patterns from memory clusters |
553
595
  | `slm soft-prompts` | View auto-learned patterns |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superlocalmemory"
3
- version = "3.4.49"
3
+ version = "3.4.52"
4
4
  description = "Information-geometric agent memory with mathematical guarantees"
5
5
  readme = "README.md"
6
6
  license = {text = "AGPL-3.0-or-later"}
@@ -3,7 +3,7 @@
3
3
  import os
4
4
  os.environ.setdefault("KMP_DUPLICATE_LIB_OK", "TRUE")
5
5
 
6
- __version__ = "3.4.46"
6
+ __version__ = "3.4.52"
7
7
 
8
8
  _REQUIRED_VERSIONS = {
9
9
  "sentence_transformers": "5.3.0",
@@ -2147,12 +2147,17 @@ def cmd_session_context(args: Namespace) -> None:
2147
2147
  except sqlite3.OperationalError:
2148
2148
  pass
2149
2149
 
2150
- # 2. Recent important memories (last 7 days, top 10 by importance)
2150
+ # 2. Recent important memories age gate from --max-age-days (default 30)
2151
+ max_age = getattr(args, "max_age_days", 30)
2152
+ age_clause = (
2153
+ f"AND created_at >= datetime('now', '-{int(max_age)} days') "
2154
+ if max_age > 0 else ""
2155
+ )
2151
2156
  try:
2152
2157
  rows = conn.execute(
2153
2158
  "SELECT content, fact_type, created_at FROM atomic_facts "
2154
2159
  "WHERE profile_id = ? "
2155
- "AND created_at >= datetime('now', '-7 days') "
2160
+ f"{age_clause}"
2156
2161
  "AND lifecycle = 'active' "
2157
2162
  "ORDER BY importance DESC, created_at DESC LIMIT 10",
2158
2163
  (pid,),
@@ -289,6 +289,16 @@ def main() -> None:
289
289
 
290
290
  ctx_p = sub.add_parser("session-context", help="Print session context (for hooks)")
291
291
  ctx_p.add_argument("query", nargs="?", default="", help="Optional context query")
292
+ ctx_p.add_argument(
293
+ "--max-age-days", type=int, default=30,
294
+ help="Suppress memories older than N days unless score ≥ 0.7 (default: 30). "
295
+ "Set 0 to disable age filter.",
296
+ )
297
+ ctx_p.add_argument(
298
+ "--full", action="store_true",
299
+ help="Use full engine path (slower, requires Ollama). Default is fast SQLite path.",
300
+ )
301
+ ctx_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
292
302
 
293
303
  obs_p = sub.add_parser("observe", help="Auto-capture content (pipe or argument)")
294
304
  obs_p.add_argument("content", nargs="?", default="", help="Content to evaluate")
@@ -0,0 +1,365 @@
1
+ # Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar
2
+ # Licensed under AGPL-3.0-or-later - see LICENSE file
3
+ # Part of SuperLocalMemory V3 | https://qualixar.com | https://varunpratap.com
4
+
5
+ """SuperLocalMemory v3.4.5 — Backend Orchestrator.
6
+
7
+ Central coordinator for multi-backend architecture.
8
+ Manages CozoDB, LanceDB, and TierManager lifecycle.
9
+ Handles auto-migration, fallback, and incremental sync.
10
+
11
+ This is the ONLY module that imports all three backends.
12
+ Other modules call BackendOrchestrator methods.
13
+
14
+ Part of Qualixar | Author: Varun Pratap Bhardwaj
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ import logging
20
+ import sqlite3
21
+ import threading
22
+ from pathlib import Path
23
+ from typing import TYPE_CHECKING, Any
24
+
25
+ if TYPE_CHECKING:
26
+ from superlocalmemory.core.config import SLMConfig
27
+ from superlocalmemory.storage.database import DatabaseManager
28
+
29
+ logger = logging.getLogger(__name__)
30
+
31
+ # ---------------------------------------------------------------------------
32
+ # Global singleton (set by daemon, read by store_pipeline)
33
+ # ---------------------------------------------------------------------------
34
+
35
+ _orchestrator: BackendOrchestrator | None = None
36
+
37
+
38
+ def get_orchestrator() -> BackendOrchestrator | None:
39
+ """Return the global BackendOrchestrator singleton."""
40
+ return _orchestrator
41
+
42
+
43
+ def set_orchestrator(orch: BackendOrchestrator) -> None:
44
+ """Set the global BackendOrchestrator singleton."""
45
+ global _orchestrator
46
+ _orchestrator = orch
47
+
48
+
49
+ # ---------------------------------------------------------------------------
50
+ # BackendOrchestrator
51
+ # ---------------------------------------------------------------------------
52
+
53
+ class BackendOrchestrator:
54
+ """Central coordinator for multi-backend architecture.
55
+
56
+ Lifecycle:
57
+ on_daemon_start() → migrate backends → ready
58
+ sync_new_fact() → called from store_pipeline after SQLite write
59
+ health_check() → returns status of all backends
60
+ """
61
+
62
+ def __init__(self, config: SLMConfig, db: DatabaseManager) -> None:
63
+ self._config = config
64
+ self._db = db
65
+ self._data_dir = Path(config.data_dir)
66
+ self._cozo: Any = None
67
+ self._lancedb: Any = None
68
+ self._tiers: Any = None
69
+ self._backend_cache: dict[str, str] = {}
70
+
71
+ # ------------------------------------------------------------------
72
+ # Daemon Startup
73
+ # ------------------------------------------------------------------
74
+
75
+ def on_daemon_start(self) -> None:
76
+ """Called once on daemon startup. Order matters (F-11: rebalance before migration)."""
77
+ logger.info("BackendOrchestrator: daemon starting")
78
+
79
+ # 1. Apply schema (if not already applied)
80
+ self._apply_schema_v345()
81
+
82
+ # 2. Initialize TierManager (always)
83
+ try:
84
+ from superlocalmemory.core.tier_manager import evaluate_tiers, set_backends
85
+ self._tiers = evaluate_tiers
86
+ set_backends(cozo=self._cozo, lancedb=self._lancedb)
87
+ logger.info("BackendOrchestrator: TierManager initialized")
88
+ except Exception as exc:
89
+ logger.warning("TierManager init failed (non-fatal): %s", exc)
90
+
91
+ # 3. Run initial tier rebalance FIRST (F-11: before migration)
92
+ try:
93
+ from superlocalmemory.core.tier_manager import evaluate_tiers as rebalance
94
+ result = rebalance(self._db)
95
+ logger.info("BackendOrchestrator: initial rebalance — %s",
96
+ result.get("total_evaluated", "?"))
97
+ except Exception as exc:
98
+ logger.warning("Initial rebalance failed (non-fatal): %s", exc)
99
+
100
+ # 4. Initialize CozoDB if available
101
+ cozo_available = self._detect_cozo()
102
+ if cozo_available:
103
+ self._init_cozo()
104
+
105
+ # 5. Initialize LanceDB if available
106
+ lancedb_available = self._detect_lancedb()
107
+ if lancedb_available:
108
+ self._init_lancedb()
109
+
110
+ # 6. Auto-migrate
111
+ if self._cozo:
112
+ status = self._cozo_status()
113
+ if status in ("not_initialized", "migrating"):
114
+ if status == "migrating":
115
+ logger.warning("CozoDB migration interrupted — rebuilding")
116
+ self._migrate_cozo()
117
+
118
+ if self._lancedb:
119
+ status = self._lancedb_status()
120
+ if status in ("not_initialized", "migrating"):
121
+ if status == "migrating":
122
+ logger.warning("LanceDB migration interrupted — rebuilding")
123
+ self._migrate_lancedb()
124
+
125
+ logger.info("BackendOrchestrator: daemon ready (cozo=%s, lancedb=%s)",
126
+ "active" if self._cozo and self._cozo_status() == "active" else "off",
127
+ "active" if self._lancedb and self._lancedb_status() == "active" else "off")
128
+
129
+ # ------------------------------------------------------------------
130
+ # Incremental Sync (F-04: called from store_pipeline)
131
+ # ------------------------------------------------------------------
132
+
133
+ def sync_new_fact(self, fact: Any) -> None:
134
+ """Sync a newly stored fact to CozoDB and LanceDB.
135
+
136
+ Called AFTER SQLite write in store_pipeline.
137
+ Non-blocking, best-effort. Failures are logged, not raised.
138
+ """
139
+ try:
140
+ tier = getattr(fact, "lifecycle", "active")
141
+ except Exception:
142
+ tier = "active"
143
+
144
+ if tier in ("active", "warm"):
145
+ if self._cozo and self._cozo_status() == "active":
146
+ self._sync_fact_entities(fact)
147
+
148
+ if self._lancedb and self._lancedb_status() == "active":
149
+ self._sync_fact_embedding(fact)
150
+
151
+ def _sync_fact_entities(self, fact: Any) -> None:
152
+ """Sync fact's entities and edges to CozoDB."""
153
+ try:
154
+ entities = getattr(fact, "canonical_entities", []) or []
155
+ for eid in entities:
156
+ self._cozo.add_entity(eid, eid, "concept", {})
157
+ # Add edges from this entity to existing ones
158
+ for other in entities:
159
+ if other != eid:
160
+ self._cozo.add_edge(eid, other, "co_occurs", 1.0)
161
+ except Exception as exc:
162
+ logger.debug("CozoDB incremental sync skipped: %s", exc)
163
+
164
+ def _sync_fact_embedding(self, fact: Any) -> None:
165
+ """Sync fact's embedding to LanceDB."""
166
+ try:
167
+ embedding = getattr(fact, "embedding", None)
168
+ if embedding:
169
+ tier = getattr(fact, "lifecycle", "active")
170
+ self._lancedb.add_vectors(
171
+ [fact.fact_id], [embedding], [tier],
172
+ )
173
+ except Exception as exc:
174
+ logger.debug("LanceDB incremental sync skipped: %s", exc)
175
+
176
+ # ------------------------------------------------------------------
177
+ # Backend Access
178
+ # ------------------------------------------------------------------
179
+
180
+ def get_graph_backend(self) -> Any:
181
+ """Return active graph backend or None (caller falls back to NetworkX)."""
182
+ if self._cozo and self._cozo_status() == "active":
183
+ return self._cozo
184
+ return None
185
+
186
+ def get_vector_backend(self) -> Any:
187
+ """Return active vector backend or None."""
188
+ if self._lancedb and self._lancedb_status() == "active":
189
+ return self._lancedb
190
+ return None
191
+
192
+ # ------------------------------------------------------------------
193
+ # Health Check
194
+ # ------------------------------------------------------------------
195
+
196
+ def health_check(self) -> dict[str, Any]:
197
+ """Comprehensive health status for dashboard + CLI."""
198
+ result: dict[str, Any] = {
199
+ "sqlite": {"status": "active"},
200
+ "cozo": {"status": "not_available"},
201
+ "lancedb": {"status": "not_available"},
202
+ "tiers": {},
203
+ "warnings": [],
204
+ }
205
+
206
+ try:
207
+ from superlocalmemory.core.tier_manager import get_tier_stats
208
+ result["tiers"] = get_tier_stats(self._db)
209
+ except Exception:
210
+ pass
211
+
212
+ if self._cozo:
213
+ try:
214
+ result["cozo"] = self._cozo.health_check()
215
+ except Exception as exc:
216
+ result["cozo"] = {"status": "error", "error": str(exc)}
217
+ else:
218
+ result["warnings"].append(
219
+ "CozoDB not active. Install: pip install superlocalmemory[cozo]"
220
+ )
221
+
222
+ if self._lancedb:
223
+ try:
224
+ result["lancedb"] = self._lancedb.health_check()
225
+ except Exception as exc:
226
+ result["lancedb"] = {"status": "error", "error": str(exc)}
227
+ else:
228
+ result["warnings"].append(
229
+ "LanceDB not active. Install: pip install superlocalmemory[lancedb]"
230
+ )
231
+
232
+ return result
233
+
234
+ # ------------------------------------------------------------------
235
+ # Internal: Detection
236
+ # ------------------------------------------------------------------
237
+
238
+ def _detect_cozo(self) -> bool:
239
+ if self._config.get("graph_backend") == "sqlite":
240
+ return False
241
+ try:
242
+ import pycozo # noqa: F401
243
+ return True
244
+ except ImportError:
245
+ return False
246
+
247
+ def _detect_lancedb(self) -> bool:
248
+ if self._config.get("vector_backend") == "sqlite-vec":
249
+ return False
250
+ try:
251
+ import lancedb # noqa: F401
252
+ return True
253
+ except ImportError:
254
+ return False
255
+
256
+ # ------------------------------------------------------------------
257
+ # Internal: Init
258
+ # ------------------------------------------------------------------
259
+
260
+ def _init_cozo(self) -> None:
261
+ try:
262
+ from superlocalmemory.graph.cozo_backend import CozoDBGraphBackend
263
+ cozo_path = self._data_dir / "cozo"
264
+ cozo_path.mkdir(parents=True, exist_ok=True)
265
+ self._cozo = CozoDBGraphBackend(str(cozo_path / "graph"))
266
+ self._update_status("cozo", "not_initialized")
267
+ logger.info("CozoDB initialized at %s", cozo_path)
268
+ except Exception as exc:
269
+ logger.warning("CozoDB init failed: %s", exc)
270
+ self._cozo = None
271
+
272
+ def _init_lancedb(self) -> None:
273
+ try:
274
+ from superlocalmemory.vector.lancedb_backend import LanceDBVectorBackend
275
+ lance_path = self._data_dir / "lance"
276
+ self._lancedb = LanceDBVectorBackend(str(lance_path))
277
+ self._update_status("lancedb", "not_initialized")
278
+ logger.info("LanceDB initialized at %s", lance_path)
279
+ except Exception as exc:
280
+ logger.warning("LanceDB init failed: %s", exc)
281
+ self._lancedb = None
282
+
283
+ # ------------------------------------------------------------------
284
+ # Internal: Migration
285
+ # ------------------------------------------------------------------
286
+
287
+ def _migrate_cozo(self) -> None:
288
+ self._update_status("cozo", "migrating")
289
+
290
+ def _run():
291
+ conn = sqlite3.connect(str(self._data_dir / "memory.db"))
292
+ conn.execute("PRAGMA journal_mode=WAL")
293
+ conn.execute("PRAGMA query_only=ON") # F-07: read-only in migration thread
294
+ try:
295
+ count = self._cozo.bulk_import_from_sqlite(conn)
296
+ self._update_status("cozo", "active", count)
297
+ logger.info("CozoDB migration complete: %d edges", count)
298
+ except Exception as exc:
299
+ logger.error("CozoDB migration failed: %s", exc)
300
+ self._update_status("cozo", "failed", error=str(exc))
301
+ finally:
302
+ conn.close()
303
+
304
+ threading.Thread(target=_run, daemon=True).start()
305
+
306
+ def _migrate_lancedb(self) -> None:
307
+ self._update_status("lancedb", "migrating")
308
+
309
+ def _run():
310
+ conn = sqlite3.connect(str(self._data_dir / "memory.db"))
311
+ conn.execute("PRAGMA journal_mode=WAL")
312
+ conn.execute("PRAGMA query_only=ON")
313
+ try:
314
+ count = self._lancedb.bulk_import_from_sqlite(conn)
315
+ self._update_status("lancedb", "active", count)
316
+ logger.info("LanceDB migration complete: %d vectors", count)
317
+ except Exception as exc:
318
+ logger.error("LanceDB migration failed: %s", exc)
319
+ self._update_status("lancedb", "failed", error=str(exc))
320
+ finally:
321
+ conn.close()
322
+
323
+ threading.Thread(target=_run, daemon=True).start()
324
+
325
+ # ------------------------------------------------------------------
326
+ # Internal: Status
327
+ # ------------------------------------------------------------------
328
+
329
+ def _cozo_status(self) -> str:
330
+ return self._backend_cache.get("cozo", "not_initialized")
331
+
332
+ def _lancedb_status(self) -> str:
333
+ return self._backend_cache.get("lancedb", "not_initialized")
334
+
335
+ def _update_status(self, name: str, status: str,
336
+ count: int = 0, error: str = "") -> None:
337
+ self._backend_cache[name] = status
338
+ try:
339
+ self._db.conn.execute(
340
+ "INSERT OR REPLACE INTO backend_status "
341
+ "(backend_name, status, record_count, error_message, last_sync_at) "
342
+ "VALUES (?, ?, ?, ?, datetime('now'))",
343
+ (name, status, count, error),
344
+ )
345
+ self._db.conn.commit()
346
+ except Exception:
347
+ pass
348
+
349
+ # ------------------------------------------------------------------
350
+ # Internal: Schema
351
+ # ------------------------------------------------------------------
352
+
353
+ def _apply_schema_v345(self) -> None:
354
+ try:
355
+ from superlocalmemory.storage.schema_v345 import (
356
+ apply_migration, schema_version_applied,
357
+ )
358
+ if not schema_version_applied(self._db.conn):
359
+ result = apply_migration(self._db.conn)
360
+ if result.get("errors"):
361
+ logger.warning("Schema v3.4.5 had errors: %s", result["errors"])
362
+ except ImportError:
363
+ logger.debug("schema_v345 not found — skipping")
364
+ except Exception as exc:
365
+ logger.warning("Schema v3.4.5 apply failed (non-fatal): %s", exc)
@@ -204,12 +204,18 @@ class OllamaEmbedder:
204
204
  return False
205
205
 
206
206
  def _call_ollama_embed(self, text: str) -> list[float]:
207
- """Call Ollama embed endpoint for a single text."""
207
+ """Call Ollama embed endpoint for a single text.
208
+
209
+ v3.4.52: ``keep_alive: -1`` pins the embedding model in VRAM
210
+ forever so subsequent calls have no cold-start latency. Industry
211
+ pattern (Hindsight, Zep, Supermemory) — without this, Ollama
212
+ unloads after 5min idle and the next call takes 20-30s.
213
+ """
208
214
  import httpx
209
215
 
210
216
  resp = httpx.post(
211
217
  f"{self._base_url}/api/embed",
212
- json={"model": self._model, "input": [text]},
218
+ json={"model": self._model, "input": [text], "keep_alive": -1},
213
219
  timeout=httpx.Timeout(_RESPONSE_TIMEOUT, connect=_CONNECT_TIMEOUT),
214
220
  )
215
221
  resp.raise_for_status()
@@ -219,12 +225,16 @@ class OllamaEmbedder:
219
225
  return self._normalize(vec)
220
226
 
221
227
  def _call_ollama_embed_batch(self, texts: list[str]) -> list[list[float] | None]:
222
- """Call Ollama embed endpoint with batch input."""
228
+ """Call Ollama embed endpoint with batch input.
229
+
230
+ v3.4.52: ``keep_alive: -1`` pins the embedding model — see
231
+ ``_call_ollama_embed`` docstring for rationale.
232
+ """
223
233
  import httpx
224
234
 
225
235
  resp = httpx.post(
226
236
  f"{self._base_url}/api/embed",
227
- json={"model": self._model, "input": texts},
237
+ json={"model": self._model, "input": texts, "keep_alive": -1},
228
238
  timeout=httpx.Timeout(_RESPONSE_TIMEOUT, connect=_CONNECT_TIMEOUT),
229
239
  )
230
240
  resp.raise_for_status()