superlocalmemory 3.4.44__tar.gz → 3.4.48__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 (460) hide show
  1. {superlocalmemory-3.4.44/src/superlocalmemory.egg-info → superlocalmemory-3.4.48}/PKG-INFO +68 -4
  2. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/README.md +62 -1
  3. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/pyproject.toml +11 -7
  4. superlocalmemory-3.4.48/src/superlocalmemory/__init__.py +40 -0
  5. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/recall_worker.py +5 -3
  6. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/worker_pool.py +2 -1
  7. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/llm/backbone.py +12 -1
  8. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/_daemon_proxy.py +7 -3
  9. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/_pool_adapter.py +7 -2
  10. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/server.py +21 -3
  11. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_active.py +31 -18
  12. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_core.py +5 -6
  13. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_v3.py +2 -2
  14. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mesh/broker.py +64 -1
  15. superlocalmemory-3.4.48/src/superlocalmemory/mesh/remote_sync.py +266 -0
  16. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/mesh.py +14 -1
  17. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/unified_daemon.py +2 -2
  18. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/database.py +1 -1
  19. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema.py +3 -3
  20. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48/src/superlocalmemory.egg-info}/PKG-INFO +68 -4
  21. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory.egg-info/SOURCES.txt +1 -0
  22. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory.egg-info/requires.txt +5 -2
  23. superlocalmemory-3.4.44/src/superlocalmemory/__init__.py +0 -3
  24. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/AUTHORS.md +0 -0
  25. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/LICENSE +0 -0
  26. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/NOTICE +0 -0
  27. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/setup.cfg +0 -0
  28. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/attribution/__init__.py +0 -0
  29. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
  30. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/attribution/signer.py +0 -0
  31. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/attribution/watermark.py +0 -0
  32. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/__init__.py +0 -0
  33. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/commands.py +0 -0
  34. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/context_commands.py +0 -0
  35. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/daemon.py +0 -0
  36. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/db_migrate.py +0 -0
  37. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
  38. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/escape_hatch.py +0 -0
  39. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
  40. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/json_output.py +0 -0
  41. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/main.py +0 -0
  42. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
  43. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/pending_store.py +0 -0
  44. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/post_install.py +0 -0
  45. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/service_installer.py +0 -0
  46. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/setup_wizard.py +0 -0
  47. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/version_banner.py +0 -0
  48. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
  49. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/__init__.py +0 -0
  50. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
  51. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
  52. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
  53. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
  54. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
  55. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
  56. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
  57. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/changes.py +0 -0
  58. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/communities.py +0 -0
  59. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/config.py +0 -0
  60. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/database.py +0 -0
  61. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
  62. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
  63. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
  64. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/flows.py +0 -0
  65. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
  66. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
  67. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/graph_store.py +0 -0
  68. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/incremental.py +0 -0
  69. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/models.py +0 -0
  70. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/parser.py +0 -0
  71. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/resolver.py +0 -0
  72. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/search.py +0 -0
  73. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/service.py +0 -0
  74. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/watcher.py +0 -0
  75. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/__init__.py +0 -0
  76. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/abac.py +0 -0
  77. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/audit.py +0 -0
  78. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
  79. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/gdpr.py +0 -0
  80. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/lifecycle.py +0 -0
  81. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/retention.py +0 -0
  82. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/scheduler.py +0 -0
  83. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/__init__.py +0 -0
  84. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/clock_monitor.py +0 -0
  85. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/config.py +0 -0
  86. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/consolidation_engine.py +0 -0
  87. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/context_cache.py +0 -0
  88. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/db_pool.py +0 -0
  89. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/embedding_worker.py +0 -0
  90. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/embeddings.py +0 -0
  91. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/engine.py +0 -0
  92. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/engine_capabilities.py +0 -0
  93. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/engine_lock.py +0 -0
  94. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/engine_wiring.py +0 -0
  95. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/error_catalog.py +0 -0
  96. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/error_envelope.py +0 -0
  97. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/fact_consolidator.py +0 -0
  98. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/file_lock.py +0 -0
  99. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/graph_analyzer.py +0 -0
  100. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/graph_pruner.py +0 -0
  101. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/health_monitor.py +0 -0
  102. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/hooks.py +0 -0
  103. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/loop_watchdog.py +0 -0
  104. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/maintenance.py +0 -0
  105. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
  106. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/modes.py +0 -0
  107. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/ollama_embedder.py +0 -0
  108. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/platform_utils.py +0 -0
  109. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/priority_queue.py +0 -0
  110. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/profiles.py +0 -0
  111. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/queue_consumer.py +0 -0
  112. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
  113. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/ram_lock.py +0 -0
  114. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/rate_limit.py +0 -0
  115. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/recall_gate.py +0 -0
  116. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/recall_pipeline.py +0 -0
  117. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/recall_queue.py +0 -0
  118. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/registry.py +0 -0
  119. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/reranker_worker.py +0 -0
  120. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/safe_fs.py +0 -0
  121. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/security_primitives.py +0 -0
  122. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/shadow_router.py +0 -0
  123. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/slm_disabled.py +0 -0
  124. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/slmignore.py +0 -0
  125. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/store_pipeline.py +0 -0
  126. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/summarizer.py +0 -0
  127. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/tier_manager.py +0 -0
  128. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/topic_signature.py +0 -0
  129. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/dynamics/__init__.py +0 -0
  130. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
  131. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
  132. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
  133. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
  134. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/__init__.py +0 -0
  135. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/auto_linker.py +0 -0
  136. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
  137. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/consolidator.py +0 -0
  138. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/context_generator.py +0 -0
  139. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/emotional.py +0 -0
  140. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
  141. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
  142. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
  143. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/foresight.py +0 -0
  144. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/graph_builder.py +0 -0
  145. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/observation_builder.py +0 -0
  146. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/scene_builder.py +0 -0
  147. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/signal_inference.py +0 -0
  148. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
  149. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
  150. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/type_router.py +0 -0
  151. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/__init__.py +0 -0
  152. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
  153. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/budget.py +0 -0
  154. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/evolution_store.py +0 -0
  155. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
  156. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
  157. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
  158. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/triggers.py +0 -0
  159. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/types.py +0 -0
  160. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/__init__.py +0 -0
  161. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
  162. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/adapter_base.py +0 -0
  163. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
  164. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/auto_capture.py +0 -0
  165. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
  166. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
  167. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/auto_recall.py +0 -0
  168. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
  169. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
  170. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
  171. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/context_payload.py +0 -0
  172. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
  173. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
  174. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
  175. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
  176. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
  177. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/ide_connector.py +0 -0
  178. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
  179. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
  180. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
  181. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/rules_engine.py +0 -0
  182. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/session_registry.py +0 -0
  183. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
  184. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/sync_loop.py +0 -0
  185. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
  186. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
  187. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
  188. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/__init__.py +0 -0
  189. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/auth_middleware.py +0 -0
  190. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/backup.py +0 -0
  191. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/cache_manager.py +0 -0
  192. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/cloud_backup.py +0 -0
  193. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/event_bus.py +0 -0
  194. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
  195. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/pid_manager.py +0 -0
  196. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/process_reaper.py +0 -0
  197. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/rate_limiter.py +0 -0
  198. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
  199. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/__init__.py +0 -0
  200. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
  201. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
  202. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
  203. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/credentials.py +0 -0
  204. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
  205. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/parsers.py +0 -0
  206. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
  207. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/__init__.py +0 -0
  208. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/adaptive.py +0 -0
  209. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/arm_catalog.py +0 -0
  210. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/assertion_miner.py +0 -0
  211. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/bandit.py +0 -0
  212. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/bandit_cache.py +0 -0
  213. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/behavioral.py +0 -0
  214. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
  215. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/bootstrap.py +0 -0
  216. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
  217. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
  218. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
  219. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/cross_project.py +0 -0
  220. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/database.py +0 -0
  221. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
  222. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/engagement.py +0 -0
  223. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/ensemble.py +0 -0
  224. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/entity_compiler.py +0 -0
  225. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
  226. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/features.py +0 -0
  227. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/feedback.py +0 -0
  228. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
  229. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
  230. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/labeler.py +0 -0
  231. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/legacy_migration.py +0 -0
  232. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/memory_merge.py +0 -0
  233. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/model_cache.py +0 -0
  234. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/model_rollback.py +0 -0
  235. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/outcome_queue.py +0 -0
  236. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/outcomes.py +0 -0
  237. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/pattern_miner.py +0 -0
  238. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
  239. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/project_context.py +0 -0
  240. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
  241. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/ranker.py +0 -0
  242. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/ranker_common.py +0 -0
  243. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
  244. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
  245. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/reward.py +0 -0
  246. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/reward_archive.py +0 -0
  247. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/reward_boost.py +0 -0
  248. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/reward_proxy.py +0 -0
  249. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/shadow_test.py +0 -0
  250. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/signal_worker.py +0 -0
  251. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/signals.py +0 -0
  252. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
  253. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/source_quality.py +0 -0
  254. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/trigram_index.py +0 -0
  255. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/workflows.py +0 -0
  256. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/llm/__init__.py +0 -0
  257. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/__init__.py +0 -0
  258. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/ebbinghaus.py +0 -0
  259. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/fisher.py +0 -0
  260. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/fisher_quantized.py +0 -0
  261. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/hopfield.py +0 -0
  262. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/langevin.py +0 -0
  263. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/polar_quant.py +0 -0
  264. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/qjl.py +0 -0
  265. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/sheaf.py +0 -0
  266. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/turbo_quant.py +0 -0
  267. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/__init__.py +0 -0
  268. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/resources.py +0 -0
  269. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/shared.py +0 -0
  270. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools.py +0 -0
  271. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
  272. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_context.py +0 -0
  273. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
  274. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_learning.py +0 -0
  275. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
  276. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_v28.py +0 -0
  277. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_v33.py +0 -0
  278. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mesh/__init__.py +0 -0
  279. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/migrations/__init__.py +0 -0
  280. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
  281. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/__init__.py +0 -0
  282. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
  283. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
  284. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
  285. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
  286. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
  287. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/__init__.py +0 -0
  288. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/agentic.py +0 -0
  289. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/ann_index.py +0 -0
  290. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
  291. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
  292. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
  293. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/engine.py +0 -0
  294. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
  295. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
  296. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/fusion.py +0 -0
  297. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
  298. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
  299. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
  300. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/reranker.py +0 -0
  301. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
  302. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
  303. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/strategy.py +0 -0
  304. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
  305. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/vector_store.py +0 -0
  306. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/__init__.py +0 -0
  307. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/api.py +0 -0
  308. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/bandit_loops.py +0 -0
  309. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/middleware/__init__.py +0 -0
  310. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
  311. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/__init__.py +0 -0
  312. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/adapters.py +0 -0
  313. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/agents.py +0 -0
  314. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/backup.py +0 -0
  315. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/behavioral.py +0 -0
  316. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/brain.py +0 -0
  317. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/chat.py +0 -0
  318. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/compliance.py +0 -0
  319. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/data_io.py +0 -0
  320. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/entity.py +0 -0
  321. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/events.py +0 -0
  322. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/evolution.py +0 -0
  323. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/helpers.py +0 -0
  324. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/ingest.py +0 -0
  325. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/insights.py +0 -0
  326. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/learning.py +0 -0
  327. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
  328. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/memories.py +0 -0
  329. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/prewarm.py +0 -0
  330. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/profiles.py +0 -0
  331. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/stats.py +0 -0
  332. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/tiers.py +0 -0
  333. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/timeline.py +0 -0
  334. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/token.py +0 -0
  335. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/v3_api.py +0 -0
  336. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/ws.py +0 -0
  337. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/security_middleware.py +0 -0
  338. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/ui.py +0 -0
  339. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
  340. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
  341. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
  342. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
  343. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
  344. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
  345. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
  346. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/__init__.py +0 -0
  347. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/access_control.py +0 -0
  348. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/access_log.py +0 -0
  349. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
  350. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migration_runner.py +0 -0
  351. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migration_v33.py +0 -0
  352. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
  353. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
  354. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
  355. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
  356. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
  357. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
  358. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
  359. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
  360. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
  361. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
  362. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
  363. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
  364. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
  365. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations.py +0 -0
  366. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/models.py +0 -0
  367. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/quantized_store.py +0 -0
  368. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
  369. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_v32.py +0 -0
  370. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_v3410.py +0 -0
  371. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_v3411.py +0 -0
  372. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_v343.py +0 -0
  373. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_v347.py +0 -0
  374. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/v2_migrator.py +0 -0
  375. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/trust/__init__.py +0 -0
  376. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/trust/gate.py +0 -0
  377. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/trust/provenance.py +0 -0
  378. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/trust/scorer.py +0 -0
  379. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/trust/signals.py +0 -0
  380. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/css/brain.css +0 -0
  381. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
  382. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
  383. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/index.html +0 -0
  384. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/agents.js +0 -0
  385. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
  386. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/brain.js +0 -0
  387. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/clusters.js +0 -0
  388. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/compliance.js +0 -0
  389. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/core.js +0 -0
  390. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/dashboard.js +0 -0
  391. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/events.js +0 -0
  392. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
  393. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/feedback.js +0 -0
  394. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
  395. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
  396. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
  397. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ide-status.js +0 -0
  398. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/init.js +0 -0
  399. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
  400. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
  401. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/math-health.js +0 -0
  402. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/memories.js +0 -0
  403. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
  404. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
  405. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/modal.js +0 -0
  406. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
  407. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-health.js +0 -0
  408. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
  409. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
  410. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
  411. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
  412. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/profiles.js +0 -0
  413. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
  414. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
  415. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/search.js +0 -0
  416. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/settings.js +0 -0
  417. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/timeline.js +0 -0
  418. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
  419. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
  420. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  421. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  422. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
  423. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
  424. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
  425. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
  426. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
  427. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
  428. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
  429. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
  430. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
  431. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
  432. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
  433. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory.egg-info/top_level.txt +0 -0
  434. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_auto_hooks.py +0 -0
  435. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_before_web_hook.py +0 -0
  436. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_behavioral_full.py +0 -0
  437. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_claude_hooks.py +0 -0
  438. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_cli.py +0 -0
  439. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_cli_json.py +0 -0
  440. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_cli_v33.py +0 -0
  441. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_compliance_full.py +0 -0
  442. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_config_system.py +0 -0
  443. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_engine_hooks.py +0 -0
  444. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_event_bus.py +0 -0
  445. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_features.py +0 -0
  446. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_final_locomo_mini.py +0 -0
  447. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_hook_handlers.py +0 -0
  448. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_ide_connector.py +0 -0
  449. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_infra.py +0 -0
  450. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_learning_advanced.py +0 -0
  451. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_learning_collectors.py +0 -0
  452. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_llm_provider.py +0 -0
  453. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_mcp_server.py +0 -0
  454. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_migration.py +0 -0
  455. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_mode_switch_preservation.py +0 -0
  456. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_post_install.py +0 -0
  457. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_ranker.py +0 -0
  458. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_topic_shift_hook.py +0 -0
  459. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_trust_full.py +0 -0
  460. {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/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.44
3
+ Version: 3.4.48
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
@@ -39,6 +39,7 @@ Requires-Dist: einops==0.8.2
39
39
  Requires-Dist: fastapi[all]==0.136.1
40
40
  Requires-Dist: uvicorn==0.46.0
41
41
  Requires-Dist: websockets==16.0
42
+ Requires-Dist: zeroconf>=0.140
42
43
  Requires-Dist: lightgbm==4.6.0
43
44
  Requires-Dist: orjson==3.11.9
44
45
  Requires-Dist: tree-sitter==0.25.2
@@ -48,7 +49,8 @@ Requires-Dist: watchdog==5.0.3
48
49
  Requires-Dist: psutil==7.2.2
49
50
  Requires-Dist: structlog==25.5.0
50
51
  Requires-Dist: portalocker==3.2.0
51
- Requires-Dist: sentence-transformers[onnx]==5.3.0
52
+ Requires-Dist: sentence-transformers==5.3.0
53
+ Requires-Dist: optimum==2.1.0
52
54
  Requires-Dist: onnxruntime==1.24.4
53
55
  Requires-Dist: transformers==4.57.6
54
56
  Requires-Dist: huggingface_hub==0.36.2
@@ -56,7 +58,8 @@ Requires-Dist: torch==2.11.0
56
58
  Requires-Dist: scikit-learn==1.8.0
57
59
  Requires-Dist: sqlite-vec==0.1.9
58
60
  Provides-Extra: search
59
- Requires-Dist: sentence-transformers[onnx]==5.3.0; extra == "search"
61
+ Requires-Dist: sentence-transformers==5.3.0; extra == "search"
62
+ Requires-Dist: optimum==2.1.0; extra == "search"
60
63
  Requires-Dist: einops==0.8.2; extra == "search"
61
64
  Requires-Dist: torch==2.11.0; extra == "search"
62
65
  Requires-Dist: scikit-learn==1.8.0; extra == "search"
@@ -90,7 +93,7 @@ Dynamic: license-file
90
93
 
91
94
  <h1 align="center">SuperLocalMemory V3.4</h1>
92
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>
93
- <p align="center"><code>v3.4.25</code> — Install once. Every session remembers the last. Automatically.</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>
94
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>
95
98
 
96
99
  <p align="center">
@@ -502,6 +505,67 @@ Auto-capture hooks: `slm hooks install` + `slm observe` + `slm session-context`.
502
505
 
503
506
  ---
504
507
 
508
+ ## Multi-Machine Mesh Coordination (New in v3.4.48)
509
+
510
+ Run SLM on multiple machines (M4 + M5) and have your agents coordinate as one team without any disruption.
511
+
512
+ ### Setup
513
+
514
+ **M4 (broker):**
515
+ ```bash
516
+ export SLM_MESH_HOST=192.168.1.100
517
+ export SLM_MESH_SHARED_SECRET=my-secret-key
518
+ slm init # Starts SLM at http://192.168.1.100:8765
519
+ ```
520
+
521
+ **M5 (client):**
522
+ ```bash
523
+ export SLM_MESH_PEER_URL=http://192.168.1.100:8765
524
+ export SLM_MESH_SHARED_SECRET=my-secret-key
525
+ slm init # Syncs M4's agents every 30s, proxies messages to M4
526
+ ```
527
+
528
+ ### How It Works
529
+
530
+ - **HTTP-based sync** — M5 queries M4's `/mesh/peers` endpoint every 30 seconds
531
+ - **Message proxying** — When M5's agent sends a message to an M4 agent, it's routed automatically
532
+ - **mDNS discovery (optional)** — M5 can auto-discover M4 on the LAN via `_slm-mesh._tcp` (enable with `SLM_MESH_DISCOVERY=on`, default)
533
+ - **Graceful fallback** — Network errors logged but don't crash; offline agents queue messages for delivery
534
+ - **Shared secret** — `SLM_MESH_SHARED_SECRET` gates remote peer discovery (required for remote mode)
535
+
536
+ ### Environment Variables
537
+
538
+ | Variable | Default | Purpose |
539
+ |:---------|:--------|:--------|
540
+ | `SLM_MESH_HOST` | `127.0.0.1` | Host this SLM listens on (set to IP for remote) |
541
+ | `SLM_MESH_PEER_URL` | unset | Full URL of remote SLM (e.g., `http://192.168.1.100:8765`) |
542
+ | `SLM_MESH_SHARED_SECRET` | unset | Auth secret (required when remote) |
543
+ | `SLM_MESH_DISCOVERY` | `on` | mDNS discovery (`on`/`off`) |
544
+ | `SLM_MESH_WS_PORT` | `7900` | WebSocket port for mesh (internal use) |
545
+
546
+ ### Dependencies
547
+
548
+ - `zeroconf>=0.140` (new in v3.4.48, optional, pure Python, auto-installed)
549
+ - `httpx==0.28.1` (already in core deps)
550
+ - No Docker. No external broker. Works on WiFi + LAN.
551
+
552
+ ### MCP Tools
553
+
554
+ All 8 mesh tools work seamlessly across machines:
555
+
556
+ | Tool | Description |
557
+ |:-----|:------------|
558
+ | `mesh_peers` | List local + remote peers merged |
559
+ | `mesh_send` | Send message to any peer (local or remote) |
560
+ | `mesh_broadcast` | Send to all agents (across machines) |
561
+ | `mesh_project` | Send to all agents in a project (across machines) |
562
+ | `mesh_inbox` | Get messages for this agent |
563
+ | `mesh_pending` | Get offline messages (broadcast/project) |
564
+ | `mesh_state` | Get/set shared state (replicated) |
565
+ | `mesh_lock` | Acquire/release distributed file locks |
566
+
567
+ ---
568
+
505
569
  ## Features
506
570
 
507
571
  ### Retrieval
@@ -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.25</code> — Install once. Every session remembers the last. Automatically.</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>
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">
@@ -416,6 +416,67 @@ Auto-capture hooks: `slm hooks install` + `slm observe` + `slm session-context`.
416
416
 
417
417
  ---
418
418
 
419
+ ## Multi-Machine Mesh Coordination (New in v3.4.48)
420
+
421
+ Run SLM on multiple machines (M4 + M5) and have your agents coordinate as one team without any disruption.
422
+
423
+ ### Setup
424
+
425
+ **M4 (broker):**
426
+ ```bash
427
+ export SLM_MESH_HOST=192.168.1.100
428
+ export SLM_MESH_SHARED_SECRET=my-secret-key
429
+ slm init # Starts SLM at http://192.168.1.100:8765
430
+ ```
431
+
432
+ **M5 (client):**
433
+ ```bash
434
+ export SLM_MESH_PEER_URL=http://192.168.1.100:8765
435
+ export SLM_MESH_SHARED_SECRET=my-secret-key
436
+ slm init # Syncs M4's agents every 30s, proxies messages to M4
437
+ ```
438
+
439
+ ### How It Works
440
+
441
+ - **HTTP-based sync** — M5 queries M4's `/mesh/peers` endpoint every 30 seconds
442
+ - **Message proxying** — When M5's agent sends a message to an M4 agent, it's routed automatically
443
+ - **mDNS discovery (optional)** — M5 can auto-discover M4 on the LAN via `_slm-mesh._tcp` (enable with `SLM_MESH_DISCOVERY=on`, default)
444
+ - **Graceful fallback** — Network errors logged but don't crash; offline agents queue messages for delivery
445
+ - **Shared secret** — `SLM_MESH_SHARED_SECRET` gates remote peer discovery (required for remote mode)
446
+
447
+ ### Environment Variables
448
+
449
+ | Variable | Default | Purpose |
450
+ |:---------|:--------|:--------|
451
+ | `SLM_MESH_HOST` | `127.0.0.1` | Host this SLM listens on (set to IP for remote) |
452
+ | `SLM_MESH_PEER_URL` | unset | Full URL of remote SLM (e.g., `http://192.168.1.100:8765`) |
453
+ | `SLM_MESH_SHARED_SECRET` | unset | Auth secret (required when remote) |
454
+ | `SLM_MESH_DISCOVERY` | `on` | mDNS discovery (`on`/`off`) |
455
+ | `SLM_MESH_WS_PORT` | `7900` | WebSocket port for mesh (internal use) |
456
+
457
+ ### Dependencies
458
+
459
+ - `zeroconf>=0.140` (new in v3.4.48, optional, pure Python, auto-installed)
460
+ - `httpx==0.28.1` (already in core deps)
461
+ - No Docker. No external broker. Works on WiFi + LAN.
462
+
463
+ ### MCP Tools
464
+
465
+ All 8 mesh tools work seamlessly across machines:
466
+
467
+ | Tool | Description |
468
+ |:-----|:------------|
469
+ | `mesh_peers` | List local + remote peers merged |
470
+ | `mesh_send` | Send message to any peer (local or remote) |
471
+ | `mesh_broadcast` | Send to all agents (across machines) |
472
+ | `mesh_project` | Send to all agents in a project (across machines) |
473
+ | `mesh_inbox` | Get messages for this agent |
474
+ | `mesh_pending` | Get offline messages (broadcast/project) |
475
+ | `mesh_state` | Get/set shared state (replicated) |
476
+ | `mesh_lock` | Acquire/release distributed file locks |
477
+
478
+ ---
479
+
419
480
  ## Features
420
481
 
421
482
  ### Retrieval
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superlocalmemory"
3
- version = "3.4.44"
3
+ version = "3.4.48"
4
4
  description = "Information-geometric agent memory with mathematical guarantees"
5
5
  readme = "README.md"
6
6
  license = {text = "AGPL-3.0-or-later"}
@@ -45,6 +45,7 @@ dependencies = [
45
45
  "fastapi[all]==0.136.1",
46
46
  "uvicorn==0.46.0",
47
47
  "websockets==16.0",
48
+ "zeroconf>=0.140",
48
49
  "lightgbm==4.6.0",
49
50
  "orjson==3.11.9",
50
51
  "tree-sitter==0.25.2",
@@ -54,10 +55,12 @@ dependencies = [
54
55
  "psutil==7.2.2",
55
56
  "structlog==25.5.0",
56
57
  "portalocker==3.2.0",
57
- # Semantic search + cross-encoder reranker. Embedding stack is
58
- # extremely sensitive to version drift on Apple Silicon — newer
59
- # versions allocate dramatically more per-batch memory.
60
- "sentence-transformers[onnx]==5.3.0",
58
+ # Semantic search + cross-encoder reranker. Do NOT use
59
+ # sentence-transformers[onnx] its extras pull optimum which
60
+ # overrides the sentence-transformers pin via transitive deps.
61
+ # Pin all three explicitly instead.
62
+ "sentence-transformers==5.3.0",
63
+ "optimum==2.1.0",
61
64
  "onnxruntime==1.24.4",
62
65
  "transformers==4.57.6",
63
66
  "huggingface_hub==0.36.2",
@@ -72,8 +75,9 @@ dependencies = [
72
75
  # moved into core in v3.4.18. ``pip install superlocalmemory[search]`` still
73
76
  # works but installs nothing extra.
74
77
  search = [
75
- # Same hard pin as core deps — see comment above.
76
- "sentence-transformers[onnx]==5.3.0",
78
+ # Same hard pin as core deps — no [onnx] extra.
79
+ "sentence-transformers==5.3.0",
80
+ "optimum==2.1.0",
77
81
  "einops==0.8.2",
78
82
  "torch==2.11.0",
79
83
  "scikit-learn==1.8.0",
@@ -0,0 +1,40 @@
1
+ """SuperLocalMemory — information-geometric agent memory."""
2
+
3
+ import os
4
+ os.environ.setdefault("KMP_DUPLICATE_LIB_OK", "TRUE")
5
+
6
+ __version__ = "3.4.46"
7
+
8
+ _REQUIRED_VERSIONS = {
9
+ "sentence_transformers": "5.3.0",
10
+ "onnxruntime": "1.24.4",
11
+ }
12
+
13
+
14
+ def _check_critical_deps() -> None:
15
+ """Warn if embedding-critical packages have wrong versions."""
16
+ import warnings
17
+ for mod_name, expected in _REQUIRED_VERSIONS.items():
18
+ try:
19
+ mod = __import__(mod_name)
20
+ actual = getattr(mod, "__version__", None)
21
+ if actual and actual != expected:
22
+ warnings.warn(
23
+ f"SuperLocalMemory requires {mod_name}=={expected} but "
24
+ f"{actual} is installed. This causes memory blow-up on "
25
+ f"Apple Silicon. Fix: pip install {mod_name}=={expected}",
26
+ stacklevel=2,
27
+ )
28
+ except ImportError:
29
+ pass
30
+
31
+
32
+ # Only run the dep check when a full (non-LIGHT) engine is in use.
33
+ # The MCP server runs in LIGHT mode — importing onnxruntime here
34
+ # breaks the LIGHT engine contract (ONNX_LOADED must stay False).
35
+ # Skip when SLM_SKIP_DEP_CHECK=1 or SLM_DISABLE_WARMUP_SIDE_EFFECTS=1.
36
+ if not (
37
+ os.environ.get("SLM_SKIP_DEP_CHECK") == "1"
38
+ or os.environ.get("SLM_DISABLE_WARMUP_SIDE_EFFECTS") == "1"
39
+ ):
40
+ _check_critical_deps()
@@ -59,10 +59,12 @@ def _get_engine():
59
59
  return _engine
60
60
 
61
61
 
62
- def _handle_recall(query: str, limit: int, session_id: str = "") -> dict:
62
+ def _handle_recall(
63
+ query: str, limit: int, session_id: str = "", fast: bool = False,
64
+ ) -> dict:
63
65
  engine = _get_engine()
64
66
  response = engine.recall(
65
- query, limit=limit, session_id=session_id or None,
67
+ query, limit=limit, session_id=session_id or None, fast=bool(fast),
66
68
  )
67
69
 
68
70
  # Batch-fetch original memory text for all results
@@ -290,7 +292,7 @@ def _worker_main() -> None:
290
292
  if cmd == "recall":
291
293
  result = _handle_recall(
292
294
  req.get("query", ""), req.get("limit", 10),
293
- req.get("session_id", ""),
295
+ req.get("session_id", ""), bool(req.get("fast", False)),
294
296
  )
295
297
  _respond(result)
296
298
  elif cmd == "store":
@@ -67,6 +67,7 @@ class WorkerPool:
67
67
 
68
68
  def recall(
69
69
  self, query: str, limit: int = 10, session_id: str = "",
70
+ fast: bool = False,
70
71
  ) -> dict:
71
72
  """Run recall in worker subprocess. Returns result dict.
72
73
 
@@ -77,7 +78,7 @@ class WorkerPool:
77
78
  """
78
79
  return self._send({
79
80
  "cmd": "recall", "query": query, "limit": limit,
80
- "session_id": session_id or "",
81
+ "session_id": session_id or "", "fast": bool(fast),
81
82
  })
82
83
 
83
84
  def store(self, content: str, metadata: dict | None = None) -> dict:
@@ -273,6 +273,10 @@ class LLMBackbone:
273
273
  headers = {
274
274
  "x-api-key": self._api_key,
275
275
  "anthropic-version": _ANTHROPIC_API_VERSION,
276
+ # Enable prompt caching — system prompt cached as ephemeral block.
277
+ # Requires ≥1024 tokens in the cached block to activate.
278
+ # Savings: ~90% cost reduction on cached input tokens.
279
+ "anthropic-beta": "prompt-caching-2024-07-31",
276
280
  "Content-Type": "application/json",
277
281
  }
278
282
  payload: dict[str, Any] = {
@@ -282,7 +286,14 @@ class LLMBackbone:
282
286
  "messages": [{"role": "user", "content": prompt}],
283
287
  }
284
288
  if system:
285
- payload["system"] = system
289
+ # Structured block with cache_control — plain string disables caching.
290
+ payload["system"] = [
291
+ {
292
+ "type": "text",
293
+ "text": system,
294
+ "cache_control": {"type": "ephemeral"},
295
+ }
296
+ ]
286
297
  return _ANTHROPIC_URL, headers, payload
287
298
 
288
299
  def _build_azure(
@@ -45,10 +45,14 @@ class DaemonPoolProxy:
45
45
 
46
46
  def recall(
47
47
  self, query: str, limit: int = 10, session_id: str = "",
48
+ fast: bool = False,
48
49
  ) -> dict[str, Any]:
49
- params = urllib.parse.urlencode(
50
- {"q": query, "limit": limit, "session_id": session_id or ""}
51
- )
50
+ params = urllib.parse.urlencode({
51
+ "q": query,
52
+ "limit": limit,
53
+ "session_id": session_id or "",
54
+ "fast": "true" if fast else "false",
55
+ })
52
56
  try:
53
57
  with urllib.request.urlopen(
54
58
  self._url(f"/recall?{params}"), timeout=self._timeout,
@@ -74,12 +74,17 @@ def _unwrap_error(raw: Any, op: str) -> None:
74
74
  raise PoolError(f"pool.{op} failed: {reason}")
75
75
 
76
76
 
77
- def pool_recall(query: str, limit: int = 10, **_: Any) -> PoolRecallResponse:
77
+ def pool_recall(query: str, limit: int = 10, **kwargs: Any) -> PoolRecallResponse:
78
78
  """Call pool.recall and reshape its dict into a typed response.
79
79
 
80
80
  Raises :class:`PoolError` on worker death or any non-ok envelope.
81
81
  """
82
- raw = _pool().recall(query=query, limit=limit)
82
+ raw = _pool().recall(
83
+ query=query,
84
+ limit=limit,
85
+ session_id=str(kwargs.get("session_id") or ""),
86
+ fast=bool(kwargs.get("fast", False)),
87
+ )
83
88
  _unwrap_error(raw, "recall")
84
89
  items = raw.get("results", []) if isinstance(raw, dict) else []
85
90
  results = [
@@ -19,6 +19,10 @@ _os.environ.setdefault('PYTORCH_MPS_MEM_LIMIT', '0')
19
19
  _os.environ.setdefault('PYTORCH_ENABLE_MPS_FALLBACK', '1')
20
20
  _os.environ.setdefault('TOKENIZERS_PARALLELISM', 'false')
21
21
  _os.environ.setdefault('TORCH_DEVICE', 'cpu')
22
+ # LIGHT engine contract: suppress the top-level dep check in __init__.py
23
+ # that unconditionally imports onnxruntime. MCP runs LIGHT-only — ONNX
24
+ # must never load in this process.
25
+ _os.environ.setdefault('SLM_SKIP_DEP_CHECK', '1')
22
26
 
23
27
  import logging
24
28
  import sys
@@ -122,13 +126,21 @@ _ESSENTIAL_TOOLS = frozenset(_ESSENTIAL_TOOLS)
122
126
 
123
127
  _all_tools = _os_reg.environ.get("SLM_MCP_ALL_TOOLS") == "1"
124
128
 
129
+ # v3.4.45: Minimal mode — explicit user allowlist via SLM_MCP_TOOLS env var.
130
+ # Format: comma-separated tool names, e.g. "remember,recall,session_init,search"
131
+ # Use case: Claude Code consumer plans with tight context budgets where the
132
+ # 25-tool essential set is still too many. Power users override to expose
133
+ # exactly the tools they invoke. Falls back to _ESSENTIAL_TOOLS when unset.
134
+ _user_allowlist_str = _os_reg.environ.get("SLM_MCP_TOOLS", "").strip()
135
+
125
136
 
126
137
  class _FilteredServer:
127
138
  """Wraps FastMCP to only register essential tools.
128
139
 
129
140
  Non-essential tools are silently skipped (not registered on the MCP
130
141
  server). They remain available via CLI. When SLM_MCP_ALL_TOOLS=1,
131
- all tools are registered (bypass filter).
142
+ all tools are registered (bypass filter). When SLM_MCP_TOOLS is set,
143
+ that user allowlist is used instead of _ESSENTIAL_TOOLS.
132
144
  """
133
145
  __slots__ = ("_server", "_allowed")
134
146
 
@@ -147,8 +159,14 @@ class _FilteredServer:
147
159
  return getattr(self._server, name)
148
160
 
149
161
 
150
- # Choose full or filtered registration target
151
- _target = server if _all_tools else _FilteredServer(server, _ESSENTIAL_TOOLS)
162
+ # Choose registration target (precedence: ALL > user allowlist > essential)
163
+ if _all_tools:
164
+ _target = server
165
+ elif _user_allowlist_str:
166
+ _user_allowlist = frozenset(t.strip() for t in _user_allowlist_str.split(",") if t.strip())
167
+ _target = _FilteredServer(server, _user_allowlist)
168
+ else:
169
+ _target = _FilteredServer(server, _ESSENTIAL_TOOLS)
152
170
 
153
171
  from superlocalmemory.mcp.tools_core import register_core_tools
154
172
  from superlocalmemory.mcp.tools_v28 import register_v28_tools
@@ -93,7 +93,6 @@ def register_active_tools(server, get_engine: Callable) -> None:
93
93
  The AI should call this automatically before any other work.
94
94
  """
95
95
  try:
96
- from superlocalmemory.hooks.auto_recall import AutoRecall
97
96
  from superlocalmemory.hooks.rules_engine import RulesEngine
98
97
  from superlocalmemory.mcp._pool_adapter import pool_recall
99
98
 
@@ -104,21 +103,37 @@ def register_active_tools(server, get_engine: Callable) -> None:
104
103
  return {"success": True, "context": "", "memories": [], "message": "Auto-recall disabled"}
105
104
 
106
105
  recall_config = rules.get_recall_config()
107
- auto = AutoRecall(
108
- recall_fn=pool_recall,
109
- config={
110
- "enabled": True,
111
- "max_memories_injected": max_results,
112
- "relevance_threshold": recall_config.get("relevance_threshold", 0.3),
113
- },
114
- )
115
-
116
- # Get formatted context for system prompt injection
117
- context = auto.get_session_context(project_path=project_path, query=query)
118
-
119
- # Get structured results for tool response
120
- search_query = query or f"project context {project_path}" if project_path else "recent important decisions"
121
- memories = auto.get_query_context(search_query)
106
+ relevance_threshold = recall_config.get("relevance_threshold", 0.3)
107
+ if query:
108
+ search_query = query
109
+ elif project_path:
110
+ search_query = f"project context {project_path}"
111
+ else:
112
+ search_query = "recent important decisions"
113
+
114
+ response = pool_recall(search_query, limit=max_results, fast=True)
115
+ relevant = [
116
+ r for r in response.results
117
+ if r.score >= relevance_threshold
118
+ ]
119
+
120
+ # Build both return shapes from one recall. Calling recall twice
121
+ # doubles session startup latency and can return duplicate snippets.
122
+ context = ""
123
+ if relevant:
124
+ lines = ["# Relevant Memory Context", ""]
125
+ for r in relevant[:max_results]:
126
+ lines.append(f"- {r.fact.content[:200]}")
127
+ context = "\n".join(lines)
128
+
129
+ memories = [
130
+ {
131
+ "fact_id": r.fact.fact_id,
132
+ "content": r.fact.content[:300],
133
+ "score": round(r.score, 3),
134
+ }
135
+ for r in relevant[:max_results]
136
+ ]
122
137
 
123
138
  # Get learning status
124
139
  pid = engine.profile_id
@@ -184,7 +199,6 @@ def register_active_tools(server, get_engine: Callable) -> None:
184
199
  from superlocalmemory.hooks.rules_engine import RulesEngine
185
200
  from superlocalmemory.mcp._pool_adapter import pool_store
186
201
 
187
- engine = get_engine()
188
202
  rules = RulesEngine()
189
203
 
190
204
  auto = AutoCapture(
@@ -305,7 +319,6 @@ def register_active_tools(server, get_engine: Callable) -> None:
305
319
  """
306
320
  try:
307
321
  engine = get_engine()
308
- pid = engine.profile_id
309
322
  sid = session_id or getattr(engine, '_last_session_id', '')
310
323
  if not sid:
311
324
  return {"success": False, "error": "No session_id provided"}
@@ -13,10 +13,9 @@ Part of Qualixar | Author: Varun Pratap Bhardwaj
13
13
 
14
14
  from __future__ import annotations
15
15
 
16
- import json
17
16
  import logging
18
17
  from pathlib import Path
19
- from typing import Any, Callable
18
+ from typing import Callable
20
19
 
21
20
  from mcp.types import ToolAnnotations
22
21
 
@@ -111,7 +110,6 @@ def register_core_tools(server, get_engine: Callable) -> None:
111
110
  Extracts atomic facts, resolves entities, builds graph edges,
112
111
  and indexes for 4-channel retrieval.
113
112
  """
114
- import asyncio
115
113
  try:
116
114
  # v3.4.32: Store-first pattern. Write to pending.db and return
117
115
  # immediately. The daemon's pending-materializer thread drains
@@ -141,7 +139,7 @@ def register_core_tools(server, get_engine: Callable) -> None:
141
139
  @server.tool(annotations=ToolAnnotations(readOnlyHint=True))
142
140
  async def recall(
143
141
  query: str, limit: int = 10, agent_id: str = "mcp_client",
144
- session_id: str = "",
142
+ session_id: str = "", fast: bool = False,
145
143
  ) -> dict:
146
144
  """Search memories by semantic query with 4-channel retrieval, RRF fusion, and reranking.
147
145
 
@@ -153,8 +151,8 @@ def register_core_tools(server, get_engine: Callable) -> None:
153
151
  """
154
152
  import asyncio
155
153
  try:
156
- from superlocalmemory.core.worker_pool import WorkerPool
157
- pool = WorkerPool.shared()
154
+ from superlocalmemory.mcp._daemon_proxy import choose_pool
155
+ pool = choose_pool()
158
156
  # S9-DASH-10: priority for session_id, so engagement
159
157
  # signals land on the right pending_outcome:
160
158
  # 1. Explicit ``session_id`` tool-call argument.
@@ -199,6 +197,7 @@ def register_core_tools(server, get_engine: Callable) -> None:
199
197
  # block behind a single threading.Lock. See worker_pool.py.
200
198
  result = await asyncio.to_thread(
201
199
  pool.recall, query, limit=limit, session_id=effective_sid,
200
+ fast=bool(fast),
202
201
  )
203
202
  if result.get("ok"):
204
203
  # Record implicit feedback: every returned result is a recall_hit
@@ -285,8 +285,8 @@ def register_v3_tools(server, get_engine: Callable) -> None:
285
285
  limit: Maximum results (default 10).
286
286
  """
287
287
  try:
288
- from superlocalmemory.core.worker_pool import WorkerPool
289
- raw = WorkerPool.shared().recall(query=query, limit=limit)
288
+ from superlocalmemory.mcp._daemon_proxy import choose_pool
289
+ raw = choose_pool().recall(query=query, limit=limit)
290
290
  items = raw.get("results", []) if isinstance(raw, dict) else []
291
291
  results = []
292
292
  for item in items[:limit]: