superlocalmemory 3.6.8__tar.gz → 3.6.10__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.

Potentially problematic release.


This version of superlocalmemory might be problematic. Click here for more details.

Files changed (530) hide show
  1. {superlocalmemory-3.6.8/src/superlocalmemory.egg-info → superlocalmemory-3.6.10}/PKG-INFO +10 -5
  2. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/README.md +8 -4
  3. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/pyproject.toml +6 -1
  4. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/__init__.py +6 -2
  5. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/compress_cmd.py +32 -70
  6. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/daemon.py +25 -3
  7. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/optimize_cmd.py +1 -3
  8. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/setup_wizard.py +49 -0
  9. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/config.py +28 -0
  10. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/engine.py +15 -4
  11. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/health_monitor.py +32 -9
  12. superlocalmemory-3.6.10/src/superlocalmemory/mcp/agent_context.py +111 -0
  13. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_active.py +47 -12
  14. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_core.py +22 -2
  15. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_mesh.py +37 -38
  16. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/boundary_store.py +23 -9
  17. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/exact.py +7 -4
  18. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/key_builder.py +13 -0
  19. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/manager.py +70 -8
  20. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/semantic.py +10 -5
  21. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/compress/prose_llmlingua.py +1 -7
  22. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/compress/router.py +82 -87
  23. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/config/__init__.py +16 -0
  24. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/config/defaults.py +1 -6
  25. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/config/schema.py +2 -19
  26. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/config/store.py +15 -1
  27. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/metrics/counters.py +15 -7
  28. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/_helpers.py +100 -2
  29. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/anthropic_surface.py +12 -0
  30. superlocalmemory-3.6.10/src/superlocalmemory/optimize/proxy/capture.py +243 -0
  31. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/gemini_surface.py +31 -0
  32. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/openai_surface.py +12 -0
  33. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/server.py +29 -0
  34. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/storage/db.py +78 -11
  35. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/storage/schema.py +11 -0
  36. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/spreading_activation.py +8 -3
  37. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/optimize.py +6 -8
  38. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/unified_daemon.py +68 -11
  39. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/index.html +18 -14
  40. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/auto-settings.js +3 -1
  41. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-shell.js +3 -0
  42. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/optimize.js +9 -9
  43. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10/src/superlocalmemory.egg-info}/PKG-INFO +10 -5
  44. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory.egg-info/SOURCES.txt +2 -2
  45. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory.egg-info/requires.txt +1 -0
  46. superlocalmemory-3.6.8/src/superlocalmemory/optimize/compress/extractive_code.py +0 -311
  47. superlocalmemory-3.6.8/src/superlocalmemory/optimize/compress/extractive_json.py +0 -72
  48. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/AUTHORS.md +0 -0
  49. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/LICENSE +0 -0
  50. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/NOTICE +0 -0
  51. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/setup.cfg +0 -0
  52. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/attribution/__init__.py +0 -0
  53. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
  54. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/attribution/signer.py +0 -0
  55. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/attribution/watermark.py +0 -0
  56. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/__init__.py +0 -0
  57. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/cache_cmd.py +0 -0
  58. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/commands.py +0 -0
  59. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/context_commands.py +0 -0
  60. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/db_migrate.py +0 -0
  61. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
  62. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/escape_hatch.py +0 -0
  63. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/help_cmd.py +0 -0
  64. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
  65. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/json_output.py +0 -0
  66. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/main.py +0 -0
  67. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
  68. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/optimize_constants.py +0 -0
  69. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/pending_store.py +0 -0
  70. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/post_install.py +0 -0
  71. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/proxy_cmd.py +0 -0
  72. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/service_installer.py +0 -0
  73. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/version_banner.py +0 -0
  74. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
  75. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/__init__.py +0 -0
  76. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
  77. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
  78. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
  79. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
  80. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
  81. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
  82. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
  83. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/changes.py +0 -0
  84. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/communities.py +0 -0
  85. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/config.py +0 -0
  86. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/database.py +0 -0
  87. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
  88. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
  89. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
  90. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/flows.py +0 -0
  91. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
  92. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
  93. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/graph_store.py +0 -0
  94. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/incremental.py +0 -0
  95. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/models.py +0 -0
  96. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/parser.py +0 -0
  97. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/resolver.py +0 -0
  98. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/search.py +0 -0
  99. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/service.py +0 -0
  100. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/watcher.py +0 -0
  101. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/__init__.py +0 -0
  102. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/abac.py +0 -0
  103. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/audit.py +0 -0
  104. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
  105. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/gdpr.py +0 -0
  106. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/lifecycle.py +0 -0
  107. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/retention.py +0 -0
  108. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/scheduler.py +0 -0
  109. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/__init__.py +0 -0
  110. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/backend_orchestrator.py +0 -0
  111. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/block_hygiene.py +0 -0
  112. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/clock_monitor.py +0 -0
  113. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/consolidation_engine.py +0 -0
  114. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/context_cache.py +0 -0
  115. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/db_pool.py +0 -0
  116. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/embedding_worker.py +0 -0
  117. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/embeddings.py +0 -0
  118. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/engine_capabilities.py +0 -0
  119. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/engine_lock.py +0 -0
  120. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/engine_wiring.py +0 -0
  121. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/error_catalog.py +0 -0
  122. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/error_envelope.py +0 -0
  123. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/fact_consolidator.py +0 -0
  124. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/file_lock.py +0 -0
  125. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/graph_analyzer.py +0 -0
  126. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/graph_pruner.py +0 -0
  127. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/hooks.py +0 -0
  128. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/ingest_gate.py +0 -0
  129. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/injection.py +0 -0
  130. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/loop_watchdog.py +0 -0
  131. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/maintenance.py +0 -0
  132. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
  133. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/mcp_embedder_proxy.py +0 -0
  134. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/modes.py +0 -0
  135. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/ollama_embedder.py +0 -0
  136. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/platform_utils.py +0 -0
  137. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/priority_queue.py +0 -0
  138. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/profiles.py +0 -0
  139. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/pruning_engine.py +0 -0
  140. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/queue_consumer.py +0 -0
  141. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
  142. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/ram_lock.py +0 -0
  143. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/rate_limit.py +0 -0
  144. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/recall_gate.py +0 -0
  145. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/recall_pipeline.py +0 -0
  146. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/recall_queue.py +0 -0
  147. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/recall_worker.py +0 -0
  148. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/registry.py +0 -0
  149. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/reranker_worker.py +0 -0
  150. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/safe_fs.py +0 -0
  151. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/security_primitives.py +0 -0
  152. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/shadow_router.py +0 -0
  153. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/slm_disabled.py +0 -0
  154. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/slmignore.py +0 -0
  155. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/store_pipeline.py +0 -0
  156. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/summarizer.py +0 -0
  157. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/tier_manager.py +0 -0
  158. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/topic_signature.py +0 -0
  159. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/worker_pool.py +0 -0
  160. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/dynamics/__init__.py +0 -0
  161. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
  162. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
  163. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
  164. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
  165. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/__init__.py +0 -0
  166. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/auto_linker.py +0 -0
  167. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
  168. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/consolidator.py +0 -0
  169. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/context_generator.py +0 -0
  170. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/emotional.py +0 -0
  171. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
  172. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
  173. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
  174. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/foresight.py +0 -0
  175. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/graph_builder.py +0 -0
  176. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/observation_builder.py +0 -0
  177. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/scene_builder.py +0 -0
  178. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/signal_inference.py +0 -0
  179. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
  180. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
  181. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/type_router.py +0 -0
  182. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/__init__.py +0 -0
  183. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
  184. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/budget.py +0 -0
  185. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/evolution_store.py +0 -0
  186. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
  187. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
  188. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
  189. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/triggers.py +0 -0
  190. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/types.py +0 -0
  191. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/graph/__init__.py +0 -0
  192. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/graph/cozo_backend.py +0 -0
  193. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/__init__.py +0 -0
  194. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
  195. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/adapter_base.py +0 -0
  196. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
  197. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/auto_capture.py +0 -0
  198. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
  199. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
  200. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/auto_recall.py +0 -0
  201. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
  202. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
  203. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
  204. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/context_payload.py +0 -0
  205. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
  206. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
  207. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
  208. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
  209. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
  210. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/ide_connector.py +0 -0
  211. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
  212. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
  213. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
  214. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/rules_engine.py +0 -0
  215. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/session_registry.py +0 -0
  216. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
  217. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/sync_loop.py +0 -0
  218. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
  219. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
  220. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
  221. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/__init__.py +0 -0
  222. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/auth_middleware.py +0 -0
  223. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/backup.py +0 -0
  224. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/cache_manager.py +0 -0
  225. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/cloud_backup.py +0 -0
  226. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/event_bus.py +0 -0
  227. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
  228. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/pid_manager.py +0 -0
  229. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/process_reaper.py +0 -0
  230. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/rate_limiter.py +0 -0
  231. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
  232. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/__init__.py +0 -0
  233. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
  234. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
  235. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
  236. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/credentials.py +0 -0
  237. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
  238. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/parsers.py +0 -0
  239. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
  240. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/__init__.py +0 -0
  241. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/adaptive.py +0 -0
  242. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/arm_catalog.py +0 -0
  243. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/assertion_miner.py +0 -0
  244. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/bandit.py +0 -0
  245. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/bandit_cache.py +0 -0
  246. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/behavioral.py +0 -0
  247. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
  248. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/bootstrap.py +0 -0
  249. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
  250. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
  251. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
  252. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/cross_project.py +0 -0
  253. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/database.py +0 -0
  254. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
  255. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/engagement.py +0 -0
  256. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/ensemble.py +0 -0
  257. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/entity_compiler.py +0 -0
  258. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
  259. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/features.py +0 -0
  260. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/feedback.py +0 -0
  261. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
  262. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
  263. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/labeler.py +0 -0
  264. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/legacy_migration.py +0 -0
  265. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/lightgbm_subprocess.py +0 -0
  266. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/memory_merge.py +0 -0
  267. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/model_cache.py +0 -0
  268. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/model_rollback.py +0 -0
  269. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/outcome_queue.py +0 -0
  270. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/outcomes.py +0 -0
  271. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/pattern_miner.py +0 -0
  272. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
  273. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/project_context.py +0 -0
  274. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
  275. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/ranker.py +0 -0
  276. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/ranker_common.py +0 -0
  277. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
  278. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
  279. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/reward.py +0 -0
  280. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/reward_archive.py +0 -0
  281. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/reward_boost.py +0 -0
  282. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/reward_proxy.py +0 -0
  283. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/shadow_test.py +0 -0
  284. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/signal_worker.py +0 -0
  285. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/signals.py +0 -0
  286. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
  287. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/source_quality.py +0 -0
  288. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/trigram_index.py +0 -0
  289. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/workflows.py +0 -0
  290. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/llm/__init__.py +0 -0
  291. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/llm/backbone.py +0 -0
  292. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/__init__.py +0 -0
  293. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/ebbinghaus.py +0 -0
  294. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/fisher.py +0 -0
  295. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/fisher_quantized.py +0 -0
  296. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/hopfield.py +0 -0
  297. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/langevin.py +0 -0
  298. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/polar_quant.py +0 -0
  299. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/qjl.py +0 -0
  300. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/sheaf.py +0 -0
  301. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/turbo_quant.py +0 -0
  302. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/__init__.py +0 -0
  303. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
  304. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
  305. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/_stdin_guard.py +0 -0
  306. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/resources.py +0 -0
  307. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/server.py +0 -0
  308. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/shared.py +0 -0
  309. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools.py +0 -0
  310. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
  311. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_context.py +0 -0
  312. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
  313. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_learning.py +0 -0
  314. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_v28.py +0 -0
  315. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_v3.py +0 -0
  316. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_v33.py +0 -0
  317. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mesh/__init__.py +0 -0
  318. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mesh/broker.py +0 -0
  319. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mesh/remote_sync.py +0 -0
  320. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/migrations/__init__.py +0 -0
  321. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
  322. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/__init__.py +0 -0
  323. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/adapters/__init__.py +0 -0
  324. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/adapters/_agent_registry.py +0 -0
  325. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/adapters/anthropic_adapter.py +0 -0
  326. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/adapters/openai_adapter.py +0 -0
  327. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/adapters/wrap.py +0 -0
  328. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/__init__.py +0 -0
  329. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/centroid_store.py +0 -0
  330. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/context_key.py +0 -0
  331. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/invalidation.py +0 -0
  332. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/stampede.py +0 -0
  333. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/compress/__init__.py +0 -0
  334. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/compress/align.py +0 -0
  335. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/compress/ccr.py +0 -0
  336. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/metrics/__init__.py +0 -0
  337. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/metrics/estimator.py +0 -0
  338. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/metrics/exporters.py +0 -0
  339. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/metrics/persistence.py +0 -0
  340. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/__init__.py +0 -0
  341. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/lifecycle.py +0 -0
  342. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/storage/__init__.py +0 -0
  343. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/__init__.py +0 -0
  344. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
  345. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
  346. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
  347. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
  348. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
  349. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/__init__.py +0 -0
  350. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/agentic.py +0 -0
  351. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/ann_index.py +0 -0
  352. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
  353. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
  354. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
  355. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/engine.py +0 -0
  356. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
  357. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
  358. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/fusion.py +0 -0
  359. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
  360. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
  361. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
  362. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/reranker.py +0 -0
  363. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
  364. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/strategy.py +0 -0
  365. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
  366. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/vector_store.py +0 -0
  367. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/__init__.py +0 -0
  368. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/api.py +0 -0
  369. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/bandit_loops.py +0 -0
  370. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/middleware/__init__.py +0 -0
  371. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
  372. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/recall_health.py +0 -0
  373. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/recall_serializer.py +0 -0
  374. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/__init__.py +0 -0
  375. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/adapters.py +0 -0
  376. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/agents.py +0 -0
  377. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/backup.py +0 -0
  378. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/behavioral.py +0 -0
  379. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/brain.py +0 -0
  380. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/chat.py +0 -0
  381. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/compliance.py +0 -0
  382. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/data_io.py +0 -0
  383. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/entity.py +0 -0
  384. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/events.py +0 -0
  385. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/evolution.py +0 -0
  386. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/helpers.py +0 -0
  387. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/ingest.py +0 -0
  388. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/insights.py +0 -0
  389. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/learning.py +0 -0
  390. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
  391. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/memories.py +0 -0
  392. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/mesh.py +0 -0
  393. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/prewarm.py +0 -0
  394. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/profiles.py +0 -0
  395. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/stats.py +0 -0
  396. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/tiers.py +0 -0
  397. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/timeline.py +0 -0
  398. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/token.py +0 -0
  399. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/v3_api.py +0 -0
  400. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/ws.py +0 -0
  401. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/security_middleware.py +0 -0
  402. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/ui.py +0 -0
  403. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
  404. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
  405. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
  406. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
  407. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
  408. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
  409. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
  410. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/__init__.py +0 -0
  411. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/access_control.py +0 -0
  412. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/access_log.py +0 -0
  413. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/database.py +0 -0
  414. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
  415. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migration_runner.py +0 -0
  416. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migration_v33.py +0 -0
  417. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
  418. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
  419. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
  420. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
  421. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
  422. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
  423. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
  424. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
  425. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
  426. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
  427. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
  428. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
  429. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
  430. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -0
  431. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
  432. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations.py +0 -0
  433. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/models.py +0 -0
  434. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/quantized_store.py +0 -0
  435. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema.py +0 -0
  436. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
  437. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v32.py +0 -0
  438. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v3410.py +0 -0
  439. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v3411.py +0 -0
  440. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v343.py +0 -0
  441. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v345.py +0 -0
  442. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v347.py +0 -0
  443. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/v2_migrator.py +0 -0
  444. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/trust/__init__.py +0 -0
  445. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/trust/gate.py +0 -0
  446. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/trust/provenance.py +0 -0
  447. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/trust/scorer.py +0 -0
  448. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/trust/signals.py +0 -0
  449. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/css/brain.css +0 -0
  450. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
  451. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
  452. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/agents.js +0 -0
  453. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/brain.js +0 -0
  454. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/clusters.js +0 -0
  455. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/compliance.js +0 -0
  456. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/core.js +0 -0
  457. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/dashboard.js +0 -0
  458. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/events.js +0 -0
  459. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
  460. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/feedback.js +0 -0
  461. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
  462. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
  463. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
  464. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ide-status.js +0 -0
  465. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/init.js +0 -0
  466. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
  467. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
  468. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/math-health.js +0 -0
  469. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/memories.js +0 -0
  470. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
  471. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
  472. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/modal.js +0 -0
  473. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
  474. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-health.js +0 -0
  475. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
  476. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
  477. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
  478. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/profiles.js +0 -0
  479. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
  480. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
  481. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/search.js +0 -0
  482. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/settings.js +0 -0
  483. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/timeline.js +0 -0
  484. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
  485. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
  486. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  487. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  488. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
  489. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
  490. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
  491. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
  492. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
  493. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
  494. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
  495. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
  496. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
  497. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/vector/__init__.py +0 -0
  498. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/vector/lancedb_backend.py +0 -0
  499. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
  500. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
  501. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory.egg-info/top_level.txt +0 -0
  502. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_auto_hooks.py +0 -0
  503. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_before_web_hook.py +0 -0
  504. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_behavioral_full.py +0 -0
  505. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_claude_hooks.py +0 -0
  506. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_cli_core.py +0 -0
  507. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_cli_json.py +0 -0
  508. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_cli_v33.py +0 -0
  509. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_compliance_full.py +0 -0
  510. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_config_system.py +0 -0
  511. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_engine_hooks.py +0 -0
  512. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_event_bus.py +0 -0
  513. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_features.py +0 -0
  514. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_final_locomo_mini.py +0 -0
  515. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_graph_integrity.py +0 -0
  516. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_hook_handlers.py +0 -0
  517. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_ide_connector.py +0 -0
  518. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_infra.py +0 -0
  519. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_injection.py +0 -0
  520. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_learning_advanced.py +0 -0
  521. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_learning_collectors.py +0 -0
  522. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_llm_provider.py +0 -0
  523. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_mcp_server.py +0 -0
  524. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_migration.py +0 -0
  525. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_mode_switch_preservation.py +0 -0
  526. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_post_install.py +0 -0
  527. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_ranker.py +0 -0
  528. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_topic_shift_hook.py +0 -0
  529. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_trust_full.py +0 -0
  530. {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_v3_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superlocalmemory
3
- Version: 3.6.8
3
+ Version: 3.6.10
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
@@ -58,6 +58,7 @@ Requires-Dist: huggingface_hub==0.36.2
58
58
  Requires-Dist: torch==2.11.0
59
59
  Requires-Dist: scikit-learn==1.8.0
60
60
  Requires-Dist: sqlite-vec==0.1.9
61
+ Requires-Dist: llmlingua==0.2.2
61
62
  Provides-Extra: search
62
63
  Requires-Dist: sentence-transformers==5.3.0; extra == "search"
63
64
  Requires-Dist: optimum==2.1.0; extra == "search"
@@ -125,18 +126,22 @@ Dynamic: license-file
125
126
  <details>
126
127
  <summary><strong>What's New in V3.6 — Optimize: SKIP, SHRINK, DISCOUNT, REMEMBER</strong> (click to expand)</summary>
127
128
 
128
- > V3.6 is the only local-first layer that SKIPS repeat LLM calls (cache: 100% saved), SHRINKS prompts 60-95% (compress: extractive + LLMLingua-2), and DISCOUNTS prefix costs (align: native KV-cache) — and remembers everything — in one install. **Your first cache hit pays for the install time. Hours of coding on repeat, minimal API cost.**
129
+ > V3.6 is the only local-first layer that SKIPS repeat LLM calls (cache: 100% saved on a hit), SHRINKS prose prompts (compress: lossless-by-default, opt-in LLMLingua-2), and DISCOUNTS prefix costs (align: native KV-cache) — and remembers everything — in one install. **Your first cache hit pays for the install time. Hours of coding on repeat, minimal API cost.**
130
+ >
131
+ > **v3.6.10:** cache and compression are now **independent runtime switches** (cache-only, compress-only, both, or neither — toggle live from the dashboard, no restart). Compression was rebuilt to be **lossless by default** (the old string/array/code truncation is gone); aggressive mode adds LLMLingua-2 for **prose only** — never code, numbers, structured data, or the current turn.
129
132
 
130
133
  ### The Three Levers
131
134
 
132
135
  | Lever | Mechanism | Saving | Off by default? |
133
136
  |-------|-----------|:------:|:---------------:|
134
- | **Cache** | Skip repeat calls — exact-match SQLite lookup, vCache-gated semantic (opt-in) | **100% on a hit** (input + output) | Cache ON, Semantic OFF |
135
- | **Compress** | Shrink prompts — extractive JSON/code (lossless) + LLMLingua-2 prose (opt-in) | **60–95% on a miss** (input only) | Safe mode ON, Aggressive OFF |
137
+ | **Cache** | Skip repeat calls — exact-match SQLite lookup (zero false hits), vCache-gated semantic (opt-in) | **100% on a hit** (input + output) | Cache ON, Semantic OFF |
138
+ | **Compress** | Shrink prompts — **safe = lossless** normalization; **aggressive = LLMLingua-2 prose only** (opt-in) | Safe: small + lossless · Aggressive: large on prose | Safe mode, Aggressive OFF |
136
139
  | **Align** | Stabilize prefix — maximize provider prefix-cache discounts | **Lossless extra** | ON when compression is ON |
137
140
 
138
141
  **Memory** (v3.5's existing engine) runs in parallel — it shapes *what is in* the prompt (relevant facts); Optimize decides *whether and how* it is sent.
139
142
 
143
+ > **Independent at runtime:** enable caching only, compression only, both, or neither — from the dashboard Optimize tab, applied live (no restart). Each AI client can also get its own memory identity over HTTP MCP via `http://127.0.0.1:8765/mcp/{agent_id}`.
144
+
140
145
  ### Quick Start
141
146
 
142
147
  ```bash
@@ -152,7 +157,7 @@ slm wrap claude
152
157
  |:--------|:-------------|
153
158
  | `slm optimize status\|on\|off\|savings` | Master Optimize control + savings report (USD/INR/tokens) |
154
159
  | `slm cache status\|clear\|invalidate\|ttl\|semantic` | Cache sub-control — exact + semantic tiers |
155
- | `slm compress status\|mode\|code\|prose\|ccr\|align` | Compression control — per-channel toggles |
160
+ | `slm compress status\|mode\|prose` | Compression control — safe (lossless) / aggressive (LLMLingua-2 prose) |
156
161
  | `slm proxy [--port] [--provider]` | Start the interception proxy (port 8765) |
157
162
  | `slm wrap <agent>` | Proxy-activate an agent — one command to start saving |
158
163
  | `slm help-optimize [topic]` | Full developer reference + per-agent setup recipes |
@@ -33,18 +33,22 @@
33
33
  <details>
34
34
  <summary><strong>What's New in V3.6 — Optimize: SKIP, SHRINK, DISCOUNT, REMEMBER</strong> (click to expand)</summary>
35
35
 
36
- > V3.6 is the only local-first layer that SKIPS repeat LLM calls (cache: 100% saved), SHRINKS prompts 60-95% (compress: extractive + LLMLingua-2), and DISCOUNTS prefix costs (align: native KV-cache) — and remembers everything — in one install. **Your first cache hit pays for the install time. Hours of coding on repeat, minimal API cost.**
36
+ > V3.6 is the only local-first layer that SKIPS repeat LLM calls (cache: 100% saved on a hit), SHRINKS prose prompts (compress: lossless-by-default, opt-in LLMLingua-2), and DISCOUNTS prefix costs (align: native KV-cache) — and remembers everything — in one install. **Your first cache hit pays for the install time. Hours of coding on repeat, minimal API cost.**
37
+ >
38
+ > **v3.6.10:** cache and compression are now **independent runtime switches** (cache-only, compress-only, both, or neither — toggle live from the dashboard, no restart). Compression was rebuilt to be **lossless by default** (the old string/array/code truncation is gone); aggressive mode adds LLMLingua-2 for **prose only** — never code, numbers, structured data, or the current turn.
37
39
 
38
40
  ### The Three Levers
39
41
 
40
42
  | Lever | Mechanism | Saving | Off by default? |
41
43
  |-------|-----------|:------:|:---------------:|
42
- | **Cache** | Skip repeat calls — exact-match SQLite lookup, vCache-gated semantic (opt-in) | **100% on a hit** (input + output) | Cache ON, Semantic OFF |
43
- | **Compress** | Shrink prompts — extractive JSON/code (lossless) + LLMLingua-2 prose (opt-in) | **60–95% on a miss** (input only) | Safe mode ON, Aggressive OFF |
44
+ | **Cache** | Skip repeat calls — exact-match SQLite lookup (zero false hits), vCache-gated semantic (opt-in) | **100% on a hit** (input + output) | Cache ON, Semantic OFF |
45
+ | **Compress** | Shrink prompts — **safe = lossless** normalization; **aggressive = LLMLingua-2 prose only** (opt-in) | Safe: small + lossless · Aggressive: large on prose | Safe mode, Aggressive OFF |
44
46
  | **Align** | Stabilize prefix — maximize provider prefix-cache discounts | **Lossless extra** | ON when compression is ON |
45
47
 
46
48
  **Memory** (v3.5's existing engine) runs in parallel — it shapes *what is in* the prompt (relevant facts); Optimize decides *whether and how* it is sent.
47
49
 
50
+ > **Independent at runtime:** enable caching only, compression only, both, or neither — from the dashboard Optimize tab, applied live (no restart). Each AI client can also get its own memory identity over HTTP MCP via `http://127.0.0.1:8765/mcp/{agent_id}`.
51
+
48
52
  ### Quick Start
49
53
 
50
54
  ```bash
@@ -60,7 +64,7 @@ slm wrap claude
60
64
  |:--------|:-------------|
61
65
  | `slm optimize status\|on\|off\|savings` | Master Optimize control + savings report (USD/INR/tokens) |
62
66
  | `slm cache status\|clear\|invalidate\|ttl\|semantic` | Cache sub-control — exact + semantic tiers |
63
- | `slm compress status\|mode\|code\|prose\|ccr\|align` | Compression control — per-channel toggles |
67
+ | `slm compress status\|mode\|prose` | Compression control — safe (lossless) / aggressive (LLMLingua-2 prose) |
64
68
  | `slm proxy [--port] [--provider]` | Start the interception proxy (port 8765) |
65
69
  | `slm wrap <agent>` | Proxy-activate an agent — one command to start saving |
66
70
  | `slm help-optimize [topic]` | Full developer reference + per-agent setup recipes |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superlocalmemory"
3
- version = "3.6.8"
3
+ version = "3.6.10"
4
4
  description = "Information-geometric agent memory with mathematical guarantees"
5
5
  readme = "README.md"
6
6
  license = {text = "AGPL-3.0-or-later"}
@@ -69,6 +69,11 @@ dependencies = [
69
69
  "scikit-learn==1.8.0",
70
70
  # Vector KNN extension for the semantic channel.
71
71
  "sqlite-vec==0.1.9",
72
+ # v3.6.10: LLMLingua-2 prose compression (aggressive mode, opt-in at runtime).
73
+ # Hard dependency so `pip install superlocalmemory` ships compression-ready;
74
+ # the ~560MB model downloads on first setup/warmup (fail-open). Verified the
75
+ # pin does NOT disturb the transformers/torch/numpy pins above.
76
+ "llmlingua==0.2.2",
72
77
  ]
73
78
 
74
79
  [project.optional-dependencies]
@@ -1,4 +1,8 @@
1
- """SuperLocalMemory — information-geometric agent memory."""
1
+ """SuperLocalMemory — information-geometric agent memory.
2
+
3
+ v3.6.9: all 7 retrieval layers at full quality (Hopfield@1000, entity_graph@100,
4
+ SA neighbor-cache fix, fast=True deprecated). See CHANGELOG.md.
5
+ """
2
6
 
3
7
  import os
4
8
 
@@ -28,7 +32,7 @@ if "OMP_NUM_THREADS" not in os.environ:
28
32
  os.environ["OMP_NUM_THREADS"] = "2"
29
33
  # ---------------------------------------------------------------------------
30
34
 
31
- __version__ = "3.6.8"
35
+ __version__ = "3.6.10"
32
36
 
33
37
  _REQUIRED_VERSIONS = {
34
38
  "sentence_transformers": "5.3.0",
@@ -2,7 +2,7 @@
2
2
  # Licensed under AGPL-3.0-or-later - see LICENSE file
3
3
  # Part of SuperLocalMemory V3 | https://qualixar.com | https://varunpratap.com
4
4
 
5
- """Handlers for ``slm compress status|mode|code|prose|ccr``."""
5
+ """Handlers for ``slm compress status|mode|prose``."""
6
6
 
7
7
  from __future__ import annotations
8
8
 
@@ -19,11 +19,6 @@ def _get_store():
19
19
  return ConfigStore()
20
20
 
21
21
 
22
- def _get_cache_db():
23
- from superlocalmemory.optimize.storage.db import CacheDB
24
- return CacheDB()
25
-
26
-
27
22
  def _write_config(**fields) -> None:
28
23
  """5-step immutable config-write."""
29
24
  store = _get_store()
@@ -44,18 +39,31 @@ def cmd_compress(args: Namespace) -> None:
44
39
  sub = getattr(args, "compress_command", None)
45
40
  _dispatch = {
46
41
  "status": cmd_compress_status,
47
- "mode": cmd_compress_mode,
48
- "code": cmd_compress_code,
49
- "prose": cmd_compress_prose,
50
- "ccr": cmd_compress_ccr,
51
- "align": cmd_compress_align,
42
+ "mode": cmd_compress_mode,
43
+ "prose": cmd_compress_prose,
44
+ # removed in v3.6.10: code, ccr, align (extractive compressors removed)
45
+ "code": _cmd_compress_removed("code"),
46
+ "ccr": _cmd_compress_removed("ccr"),
47
+ "align": _cmd_compress_removed("align"),
52
48
  }
53
49
  handler = _dispatch.get(sub or "")
54
50
  if handler:
55
51
  handler(args)
56
52
  else:
57
- print("Usage: slm compress status|mode|code|prose|ccr [options]")
53
+ print("Usage: slm compress status|mode|prose [options]")
54
+ sys.exit(0)
55
+
56
+
57
+ def _cmd_compress_removed(name: str):
58
+ def handler(args: Namespace) -> None:
59
+ print(
60
+ f"slm compress {name}: removed in SLM v3.6.10. "
61
+ f"Extractive {name} compression has been replaced by "
62
+ f"Layer 1 (lossless whitespace) + Layer 2 (LLMLingua-2 prose). "
63
+ f"Use 'slm compress prose on' to enable prose compression."
64
+ )
58
65
  sys.exit(0)
66
+ return handler
59
67
 
60
68
 
61
69
  def cmd_compress_status(args: Namespace) -> None:
@@ -68,21 +76,19 @@ def cmd_compress_status(args: Namespace) -> None:
68
76
  "status": "ok",
69
77
  "compress_enabled": cfg.compress_enabled,
70
78
  "compress_mode": cfg.compress_mode,
71
- "compress_code": cfg.compress_code,
72
79
  "compress_prose": cfg.compress_prose,
73
- "compress_ccr": cfg.compress_ccr,
80
+ "compress_protect_recent": cfg.compress_protect_recent,
74
81
  }
75
82
  print(json.dumps(data, indent=2))
76
83
  return
77
84
 
78
85
  print("Compression status:")
79
- print(f" Enabled: {'yes' if cfg.compress_enabled else 'no'}")
80
- print(f" Mode: {cfg.compress_mode}")
81
- print(f" Code: {'ON' if cfg.compress_code else 'OFF'}"
82
- " (extractive JSON/code lossless structure)")
83
- print(f" Prose: {'ON' if cfg.compress_prose else 'OFF'}")
84
- print(f" CCR: {'ON' if cfg.compress_ccr else 'OFF'}"
85
- " (reversible context retrieval)")
86
+ print(f" Enabled: {'yes' if cfg.compress_enabled else 'no'}")
87
+ print(f" Mode: {cfg.compress_mode}")
88
+ print(f" Prose (Layer 2): {'ON' if cfg.compress_prose else 'OFF'}"
89
+ " (LLMLingua-2, aggressive mode only)")
90
+ print(f" Protect recent: {cfg.compress_protect_recent} user turns")
91
+ print(" Layer 1 (lossless whitespace normalization) is always ON when enabled.")
86
92
 
87
93
 
88
94
  def cmd_compress_mode(args: Namespace) -> None:
@@ -103,23 +109,8 @@ def cmd_compress_mode(args: Namespace) -> None:
103
109
  print("Daemon hot-reload: active within 2s. No restart required.")
104
110
 
105
111
 
106
- def cmd_compress_code(args: Namespace) -> None:
107
- """Enable or disable code/JSON compression."""
108
- use_json = getattr(args, "json", False)
109
- value = getattr(args, "code_value", "on")
110
-
111
- _write_config(compress_code=(value == "on"))
112
-
113
- if use_json:
114
- print(json.dumps({"status": "ok", "compress_code": value == "on"}))
115
- return
116
-
117
- print(f"Code compression: {'ENABLED' if value == 'on' else 'DISABLED'}.")
118
- print("Daemon hot-reload: active within 2s.")
119
-
120
-
121
112
  def cmd_compress_prose(args: Namespace) -> None:
122
- """Enable or disable prose compression."""
113
+ """Enable or disable prose compression (Layer 2, LLMLingua-2)."""
123
114
  use_json = getattr(args, "json", False)
124
115
  value = getattr(args, "prose_value", "off")
125
116
 
@@ -141,39 +132,10 @@ def cmd_compress_prose(args: Namespace) -> None:
141
132
  print(json.dumps({"status": "ok", "compress_prose": value == "on"}))
142
133
  return
143
134
 
144
- print(f"Prose compression: {'ENABLED' if value == 'on' else 'DISABLED'}.")
135
+ print(f"Prose compression (LLMLingua-2): {'ENABLED' if value == 'on' else 'DISABLED'}.")
136
+ if value == "on":
137
+ print(" Requires: compress_mode=aggressive and llmlingua package installed.")
138
+ print(" Run: slm compress mode aggressive (if not already set)")
145
139
  if value == "on" and "compress_enabled" in fields:
146
140
  print(" (also enabled global compress)")
147
141
  print("Daemon hot-reload: active within 2s.")
148
-
149
-
150
- def cmd_compress_align(args: Namespace) -> None:
151
- """Enable or disable alignment compression."""
152
- use_json = getattr(args, "json", False)
153
- value = getattr(args, "align_value", "on")
154
-
155
- _write_config(compress_align=(value == "on"))
156
-
157
- if use_json:
158
- print(json.dumps({"status": "ok", "compress_align": value == "on"}))
159
- return
160
-
161
- print(f"Alignment compression: {'ENABLED' if value == 'on' else 'DISABLED'}.")
162
- print("Daemon hot-reload: active within 2s.")
163
-
164
-
165
- def cmd_compress_ccr(args: Namespace) -> None:
166
- """Enable or disable CCR (Compressed Context Retrieval)."""
167
- use_json = getattr(args, "json", False)
168
- value = getattr(args, "ccr_value", "off")
169
-
170
- _write_config(compress_ccr=(value == "on"))
171
-
172
- if use_json:
173
- print(json.dumps({"status": "ok", "compress_ccr": value == "on"}))
174
- return
175
-
176
- print(f"CCR (Compressed Context Retrieval): {'ENABLED' if value == 'on' else 'DISABLED'}.")
177
- if value == "on":
178
- print("Originals stored in llmcache.db for reversible retrieval.")
179
- print("Daemon hot-reload: active within 2s.")
@@ -34,7 +34,10 @@ from threading import Thread
34
34
 
35
35
  logger = logging.getLogger(__name__)
36
36
 
37
- _DEFAULT_PORT = 8765 # v3.4.3: unified daemon on 8765 (was 8767)
37
+ try:
38
+ _DEFAULT_PORT = int(os.environ.get("SLM_DAEMON_PORT", "") or 8765)
39
+ except ValueError:
40
+ _DEFAULT_PORT = 8765
38
41
  _LEGACY_PORT = 8767 # backward-compat redirect
39
42
  _DEFAULT_IDLE_TIMEOUT = 0 # v3.4.3: 24/7 default (was 1800)
40
43
  _PID_FILE = Path.home() / ".superlocalmemory" / "daemon.pid"
@@ -160,7 +163,13 @@ def _start_daemon_subprocess() -> bool:
160
163
  return True
161
164
 
162
165
  import subprocess
163
- cmd = [sys.executable, "-m", "superlocalmemory.server.unified_daemon", "--start"]
166
+ # v3.6.9 (#33): pass SLM_DAEMON_PORT as explicit --port= so the daemon
167
+ # binds the right port even when the env var reaches the subprocess.
168
+ _target_port = _DEFAULT_PORT
169
+ cmd = [
170
+ sys.executable, "-m", "superlocalmemory.server.unified_daemon",
171
+ "--start", f"--port={_target_port}",
172
+ ]
164
173
  log_dir = Path.home() / ".superlocalmemory" / "logs"
165
174
  log_dir.mkdir(parents=True, exist_ok=True)
166
175
  log_file = log_dir / "daemon.log"
@@ -187,7 +196,7 @@ def _start_daemon_subprocess() -> bool:
187
196
 
188
197
  # Write PID immediately so other callers see it during warmup
189
198
  _PID_FILE.write_text(str(proc.pid))
190
- _PORT_FILE.write_text(str(_DEFAULT_PORT))
199
+ _PORT_FILE.write_text(str(_target_port))
191
200
 
192
201
  return _wait_for_daemon(timeout=60)
193
202
 
@@ -237,6 +246,19 @@ def ensure_daemon() -> bool:
237
246
  if is_daemon_running():
238
247
  return True
239
248
 
249
+ # v3.6.9 (#36): TCP-level check catches a systemd-started daemon that
250
+ # has bound the port but hasn't written a PID file yet (e.g. different
251
+ # HOME for the service user vs. the SSH user). If the port is already
252
+ # bound, don't start a second daemon — wait for HTTP readiness instead.
253
+ try:
254
+ import socket as _socket
255
+ with _socket.socket(_socket.AF_INET, _socket.SOCK_STREAM) as _s:
256
+ _s.settimeout(1)
257
+ if _s.connect_ex(("127.0.0.1", _DEFAULT_PORT)) == 0:
258
+ return _wait_for_daemon(timeout=30)
259
+ except Exception:
260
+ pass
261
+
240
262
  # Start unified daemon in background — delegated to helper so the
241
263
  # same logic can be reused by callers that already hold the lock.
242
264
  return _start_daemon_subprocess()
@@ -97,9 +97,7 @@ def cmd_optimize_status(args: Namespace) -> None:
97
97
  f" semantic: {'OFF' if not cfg.semantic_enabled else f'{cfg.ttl.semantic_seconds}s'})")
98
98
  print(f" Compress: {'enabled' if cfg.compress_enabled else 'disabled'}"
99
99
  f" (mode: {cfg.compress_mode},"
100
- f" code: {'ON' if cfg.compress_code else 'OFF'},"
101
- f" prose: {'ON' if cfg.compress_prose else 'OFF'},"
102
- f" CCR: {'ON' if cfg.compress_ccr else 'OFF'})")
100
+ f" prose/L2: {'ON' if cfg.compress_prose else 'OFF'})")
103
101
  proxy_status = f"running on :{OPTIMIZE_DEFAULT_PORT}" if proxy_running else "not running"
104
102
  print(f" Proxy: {proxy_status}")
105
103
  print(f" Config: ~/.superlocalmemory/optimize.json (version {cfg.config_version})")
@@ -32,6 +32,8 @@ _SLM_HOME = Path(os.environ.get("SL_MEMORY_PATH", Path.home() / ".superlocalmemo
32
32
  _SETUP_MARKER = _SLM_HOME / ".setup-complete"
33
33
  _EMBED_MODEL = "nomic-ai/nomic-embed-text-v1.5"
34
34
  _RERANKER_MODEL = "cross-encoder/ms-marco-MiniLM-L-12-v2"
35
+ # v3.6.10: compulsory LLMLingua-2 prose compression model (~560MB, aggressive mode).
36
+ _COMPRESSOR_MODEL = "microsoft/llmlingua-2-xlm-roberta-large-meetingbank"
35
37
 
36
38
 
37
39
  # ---------------------------------------------------------------------------
@@ -178,6 +180,49 @@ def _download_reranker(model_name: str) -> bool:
178
180
  return False
179
181
 
180
182
 
183
+ def _download_compressor(model_name: str) -> bool:
184
+ """Download the LLMLingua-2 prose compression model (v3.6.10).
185
+
186
+ Mirrors _download_reranker: a subprocess forces the HF download with visible
187
+ progress. Fail-open — a network hiccup must NOT break setup; the model also
188
+ lazy-downloads on first use in prose_llmlingua.py.
189
+ """
190
+ print(f"\n Downloading compression model: {model_name}")
191
+ print(f" (LLMLingua-2 prose compressor, ~560MB — aggressive mode only)\n")
192
+
193
+ script = (
194
+ "from llmlingua import PromptCompressor; "
195
+ f"PromptCompressor(model_name='{model_name}', use_llmlingua2=True, "
196
+ "device_map='cpu'); "
197
+ "print('OK')"
198
+ )
199
+
200
+ try:
201
+ result = subprocess.run(
202
+ [sys.executable, "-c", script],
203
+ timeout=900, # 560MB on a slow link can exceed 5 min
204
+ capture_output=False,
205
+ text=True,
206
+ env={
207
+ **os.environ,
208
+ "CUDA_VISIBLE_DEVICES": "",
209
+ "TOKENIZERS_PARALLELISM": "false",
210
+ "TORCH_DEVICE": "cpu",
211
+ },
212
+ )
213
+ if result.returncode == 0:
214
+ print(f" ✓ Compression model ready")
215
+ return True
216
+ print(f" ✗ Compression model download failed (will lazy-download on first use)")
217
+ return False
218
+ except ImportError:
219
+ print(f" ⚠ llmlingua not installed — compression model will download on first use")
220
+ return False
221
+ except Exception as exc:
222
+ print(f" ✗ Compression model error: {exc}")
223
+ return False
224
+
225
+
181
226
  # ---------------------------------------------------------------------------
182
227
  # Verification
183
228
  # ---------------------------------------------------------------------------
@@ -393,6 +438,10 @@ def run_wizard(auto: bool = False) -> None:
393
438
  else:
394
439
  _download_reranker(_RERANKER_MODEL)
395
440
 
441
+ print()
442
+ print("─── Step 4c/10: Download Compression Model (LLMLingua-2) ───")
443
+ _download_compressor(_COMPRESSOR_MODEL)
444
+
396
445
  # -- Step 5: Daemon Configuration (v3.4.3) --
397
446
  print()
398
447
  print("─── Step 5/10: Daemon Configuration ───")
@@ -654,6 +654,25 @@ class AutoInvokeConfig:
654
654
  relevance_threshold: float = 0.3 # Legacy compat with AutoRecall
655
655
 
656
656
 
657
+ # ---------------------------------------------------------------------------
658
+ # Health Config (v3.6.9 BUG-A)
659
+ # ---------------------------------------------------------------------------
660
+
661
+ @dataclass
662
+ class HealthConfig:
663
+ """Health-monitor tuning knobs.
664
+
665
+ All values have safe defaults so an empty ``"health": {}`` JSON section
666
+ silently inherits them. The ``global_rss_budget_mb`` default is computed
667
+ at runtime (40% of physical RAM, floor 2500 MB) so low-RAM boxes keep the
668
+ old behaviour while large machines are never accidentally throttled.
669
+ """
670
+ global_rss_budget_mb: int = 0 # 0 = compute at runtime (40% RAM, floor 2500)
671
+ heartbeat_timeout_sec: int = 60
672
+ health_check_interval_sec: int = 15
673
+ enable_structured_logging: bool = True
674
+
675
+
657
676
  # ---------------------------------------------------------------------------
658
677
  # Master Config
659
678
  # ---------------------------------------------------------------------------
@@ -698,6 +717,7 @@ class SLMConfig:
698
717
  graph_backend: str = "auto" # "auto" = cozo if pycozo installed, else sqlite
699
718
  vector_backend: str = "auto" # "auto" = lancedb if installed, else sqlite-vec
700
719
  evolution: EvolutionConfig = field(default_factory=EvolutionConfig)
720
+ health: HealthConfig = field(default_factory=HealthConfig)
701
721
 
702
722
  # v3.4.3: Daemon configuration
703
723
  daemon_idle_timeout: int = 0 # 0 = 24/7 (no auto-kill). >0 = seconds before auto-kill.
@@ -789,6 +809,14 @@ class SLMConfig:
789
809
  if k in EvolutionConfig.__dataclass_fields__
790
810
  })
791
811
 
812
+ # V3.6.9: Health monitor config (BUG-A — previously silently ignored)
813
+ hlth = data.get("health", {})
814
+ if hlth:
815
+ config.health = HealthConfig(**{
816
+ k: v for k, v in hlth.items()
817
+ if k in HealthConfig.__dataclass_fields__
818
+ })
819
+
792
820
  # V3.4.65: Injection config (additive — defaults if missing from JSON)
793
821
  inj = data.get("injection", {}) or {}
794
822
  config.injection = InjectionConfig(
@@ -452,7 +452,9 @@ class MemoryEngine:
452
452
  now = datetime.now(timezone.utc).isoformat()
453
453
  record = MemoryRecord(
454
454
  profile_id=self._profile_id, content=content,
455
- session_date=now[:10], metadata=metadata or {},
455
+ session_date=now[:10],
456
+ session_id=(metadata or {}).get("session_id", ""),
457
+ metadata=metadata or {},
456
458
  )
457
459
  self._db.store_memory(record)
458
460
  # Lightweight regex entities (matches store_pipeline verbatim path) so
@@ -520,13 +522,22 @@ class MemoryEngine:
520
522
  on a background worker.
521
523
 
522
524
  V3.4.40 (2026-05-09): ``fast=True`` skips the SpreadingActivation
523
- 5th channel for sub-second response. The other 4 channels still
524
- run. Use when recall must complete before another tool call (e.g.
525
- agent recall before WebSearch).
525
+ channel. Deprecated in v3.6.9 SA now completes in ~36ms after the
526
+ neighbor-cache fix; fast=True is slower than fast=False and reduces
527
+ recall quality. The parameter is accepted for backward compatibility
528
+ but is silently treated as False.
526
529
  """
527
530
  self._require_full("recall")
528
531
  self._ensure_init()
529
532
 
533
+ if fast:
534
+ logger.warning(
535
+ "fast=True is deprecated (v3.6.9): SpreadingActivation now "
536
+ "completes in ~36ms; fast mode is slower and reduces quality. "
537
+ "Pass fast=False (the default) to silence this warning."
538
+ )
539
+ fast = False
540
+
530
541
  pid = profile_id or self._profile_id
531
542
 
532
543
  from superlocalmemory.core.recall_pipeline import run_recall
@@ -130,14 +130,26 @@ class HealthMonitor:
130
130
  "superlocalmemory.core.reranker_worker",
131
131
  "superlocalmemory.core.recall_worker",
132
132
  )
133
+ # Workers that are LOAD-BEARING for recall quality — never kill these
134
+ # first; prefer killing the reranker (gracefully degrades) or GC instead.
135
+ _EMBEDDING_IDENTIFIER = "superlocalmemory.core.embedding_worker"
133
136
 
134
137
  def __init__(
135
138
  self,
136
- global_rss_budget_mb: int = 2500,
139
+ global_rss_budget_mb: int = 0,
137
140
  heartbeat_timeout_sec: int = 60,
138
141
  check_interval_sec: int = 15,
139
142
  enable_structured_logging: bool = True,
140
143
  ):
144
+ # Compute RAM-scaled default when 0 is passed (or when the caller
145
+ # explicitly passes 0 meaning "auto"). Floor at 2500 so low-RAM boxes
146
+ # keep the old conservative behaviour.
147
+ if global_rss_budget_mb <= 0:
148
+ if PSUTIL_AVAILABLE:
149
+ phys_mb = psutil.virtual_memory().total // (1024 * 1024)
150
+ global_rss_budget_mb = max(2500, int(phys_mb * 0.40))
151
+ else:
152
+ global_rss_budget_mb = 8000 # safe fallback when psutil absent
141
153
  self._budget_mb = global_rss_budget_mb
142
154
  self._heartbeat_timeout = heartbeat_timeout_sec
143
155
  self._interval = check_interval_sec
@@ -207,7 +219,7 @@ class HealthMonitor:
207
219
  slm_workers.append({
208
220
  "pid": child.pid,
209
221
  "rss_mb": round(rss_mb, 1),
210
- "cmdline": cmdline[:80],
222
+ "cmdline": cmdline[:200],
211
223
  })
212
224
  except (psutil.NoSuchProcess, psutil.AccessDenied):
213
225
  continue
@@ -225,22 +237,33 @@ class HealthMonitor:
225
237
  budget_mb=self._budget_mb,
226
238
  )
227
239
 
228
- # RSS budget enforcement
240
+ # RSS budget enforcement — spare the embedding worker (load-bearing for
241
+ # recall quality). Kill the reranker first (degrades gracefully); only
242
+ # fall back to the embedder if it is the only worker remaining.
229
243
  if total_rss_mb > self._budget_mb and slm_workers:
230
- heaviest = max(slm_workers, key=lambda w: w["rss_mb"])
244
+ non_embedder = [
245
+ w for w in slm_workers
246
+ if self._EMBEDDING_IDENTIFIER not in w["cmdline"]
247
+ ]
248
+ candidate = (
249
+ max(non_embedder, key=lambda w: w["rss_mb"])
250
+ if non_embedder
251
+ else max(slm_workers, key=lambda w: w["rss_mb"])
252
+ )
231
253
  logger.warning(
232
- "RSS budget exceeded (%.0fMB > %dMB). Killing heaviest worker PID %d (%.0fMB)",
233
- total_rss_mb, self._budget_mb, heaviest["pid"], heaviest["rss_mb"],
254
+ "RSS budget exceeded (%.0fMB > %dMB). Killing worker PID %d (%.0fMB)",
255
+ total_rss_mb, self._budget_mb, candidate["pid"], candidate["rss_mb"],
234
256
  )
235
257
  log_structured(
236
258
  level="warning",
237
259
  operation="rss_budget_kill",
238
- killed_pid=heaviest["pid"],
239
- killed_rss_mb=heaviest["rss_mb"],
260
+ killed_pid=candidate["pid"],
261
+ killed_rss_mb=candidate["rss_mb"],
240
262
  total_rss_mb=round(total_rss_mb, 1),
263
+ spared_embedder=bool(non_embedder),
241
264
  )
242
265
  try:
243
- psutil.Process(heaviest["pid"]).terminate()
266
+ psutil.Process(candidate["pid"]).terminate()
244
267
  except psutil.NoSuchProcess:
245
268
  pass
246
269