superlocalmemory 3.7.4__tar.gz → 3.7.6__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 (568) hide show
  1. {superlocalmemory-3.7.4/src/superlocalmemory.egg-info → superlocalmemory-3.7.6}/PKG-INFO +3 -3
  2. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/README.md +2 -2
  3. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/plugin-src/skills/slm-recall/SKILL.md +4 -3
  4. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/pyproject.toml +1 -1
  5. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/__init__.py +1 -1
  6. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/scale_engine_cmd.py +2 -1
  7. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/setup_wizard.py +35 -1
  8. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/backend_orchestrator.py +6 -1
  9. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/config.py +1 -1
  10. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/engine.py +3 -2
  11. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/engine_wiring.py +3 -1
  12. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/scale_engine.py +58 -29
  13. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/store_pipeline.py +1 -1
  14. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/before_web_hook.py +1 -1
  15. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/claude_code_hooks.py +1 -1
  16. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_active.py +11 -7
  17. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/engine.py +16 -8
  18. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/recall_health.py +1 -1
  19. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/chat.py +2 -2
  20. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/unified_daemon.py +18 -5
  21. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migration_runner.py +30 -0
  22. superlocalmemory-3.7.6/src/superlocalmemory/storage/sqlite_vectors.py +169 -0
  23. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/memory-chat.js +2 -2
  24. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/vector/lancedb_backend.py +81 -74
  25. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6/src/superlocalmemory.egg-info}/PKG-INFO +3 -3
  26. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory.egg-info/SOURCES.txt +1 -0
  27. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/AUTHORS.md +0 -0
  28. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/LICENSE +0 -0
  29. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/NOTICE +0 -0
  30. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/plugin-src/skills/slm-cache/SKILL.md +0 -0
  31. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/plugin-src/skills/slm-compress/SKILL.md +0 -0
  32. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/plugin-src/skills/slm-graph/SKILL.md +0 -0
  33. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/plugin-src/skills/slm-remember/SKILL.md +0 -0
  34. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/plugin-src/skills/slm-session/SKILL.md +0 -0
  35. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/plugin-src/skills/slm-status/SKILL.md +0 -0
  36. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/setup.cfg +0 -0
  37. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/attribution/__init__.py +0 -0
  38. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
  39. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/attribution/signer.py +0 -0
  40. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/attribution/watermark.py +0 -0
  41. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/__init__.py +0 -0
  42. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/_lazy_init.py +0 -0
  43. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/cache_cmd.py +0 -0
  44. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/commands.py +0 -0
  45. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/compress_cmd.py +0 -0
  46. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/context_commands.py +0 -0
  47. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/daemon.py +0 -0
  48. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/db_migrate.py +0 -0
  49. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/diagnostics_cmd.py +0 -0
  50. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/escape_hatch.py +0 -0
  51. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/evidence_cmd.py +0 -0
  52. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/help_cmd.py +0 -0
  53. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
  54. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/json_output.py +0 -0
  55. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/main.py +0 -0
  56. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
  57. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/optimize_cmd.py +0 -0
  58. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/optimize_constants.py +0 -0
  59. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/pending_store.py +0 -0
  60. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/post_install.py +0 -0
  61. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/proxy_cmd.py +0 -0
  62. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/service_installer.py +0 -0
  63. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/version_banner.py +0 -0
  64. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
  65. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/__init__.py +0 -0
  66. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
  67. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
  68. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
  69. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
  70. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
  71. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
  72. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
  73. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/changes.py +0 -0
  74. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/communities.py +0 -0
  75. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/config.py +0 -0
  76. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/database.py +0 -0
  77. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
  78. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
  79. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
  80. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/flows.py +0 -0
  81. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
  82. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
  83. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/graph_store.py +0 -0
  84. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/incremental.py +0 -0
  85. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/models.py +0 -0
  86. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/parser.py +0 -0
  87. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/resolver.py +0 -0
  88. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/search.py +0 -0
  89. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/service.py +0 -0
  90. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/code_graph/watcher.py +0 -0
  91. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/compliance/__init__.py +0 -0
  92. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/compliance/abac.py +0 -0
  93. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/compliance/audit.py +0 -0
  94. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
  95. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/compliance/gdpr.py +0 -0
  96. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/compliance/lifecycle.py +0 -0
  97. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/compliance/retention.py +0 -0
  98. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/compliance/scheduler.py +0 -0
  99. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/__init__.py +0 -0
  100. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/block_hygiene.py +0 -0
  101. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/clock_monitor.py +0 -0
  102. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/consolidation_engine.py +0 -0
  103. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/context_cache.py +0 -0
  104. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/db_pool.py +0 -0
  105. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/derivation_lineage.py +0 -0
  106. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/embedding_worker.py +0 -0
  107. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/embeddings.py +0 -0
  108. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/engine_capabilities.py +0 -0
  109. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/engine_ingestion.py +0 -0
  110. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/engine_lock.py +0 -0
  111. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/error_catalog.py +0 -0
  112. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/error_envelope.py +0 -0
  113. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/evidence_bundle.py +0 -0
  114. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/fact_consolidator.py +0 -0
  115. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/file_lock.py +0 -0
  116. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/graph_analyzer.py +0 -0
  117. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/graph_pruner.py +0 -0
  118. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/health_monitor.py +0 -0
  119. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/hooks.py +0 -0
  120. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/ingest_gate.py +0 -0
  121. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/ingestion_command.py +0 -0
  122. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/injection.py +0 -0
  123. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/lifecycle_state.py +0 -0
  124. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/loop_watchdog.py +0 -0
  125. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/maintenance.py +0 -0
  126. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
  127. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/mcp_embedder_proxy.py +0 -0
  128. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/modes.py +0 -0
  129. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/mutations.py +0 -0
  130. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/ollama_embedder.py +0 -0
  131. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/platform_utils.py +0 -0
  132. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/priority_queue.py +0 -0
  133. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/profiles.py +0 -0
  134. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/pruning_engine.py +0 -0
  135. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/queue_consumer.py +0 -0
  136. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
  137. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/ram_lock.py +0 -0
  138. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/rate_limit.py +0 -0
  139. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/recall_gate.py +0 -0
  140. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/recall_pipeline.py +0 -0
  141. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/recall_queue.py +0 -0
  142. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/recall_worker.py +0 -0
  143. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/registry.py +0 -0
  144. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/remote_mode.py +0 -0
  145. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/reranker_worker.py +0 -0
  146. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/safe_fs.py +0 -0
  147. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/score_contract.py +0 -0
  148. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/security_primitives.py +0 -0
  149. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/shadow_router.py +0 -0
  150. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/slm_disabled.py +0 -0
  151. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/slmignore.py +0 -0
  152. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/summarizer.py +0 -0
  153. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/tier_manager.py +0 -0
  154. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/topic_signature.py +0 -0
  155. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/core/worker_pool.py +0 -0
  156. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/dynamics/__init__.py +0 -0
  157. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
  158. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
  159. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
  160. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
  161. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/__init__.py +0 -0
  162. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/auto_linker.py +0 -0
  163. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
  164. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/consolidator.py +0 -0
  165. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/context_generator.py +0 -0
  166. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/emotional.py +0 -0
  167. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
  168. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
  169. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
  170. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/foresight.py +0 -0
  171. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/graph_builder.py +0 -0
  172. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/observation_builder.py +0 -0
  173. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/scene_builder.py +0 -0
  174. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/signal_inference.py +0 -0
  175. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
  176. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
  177. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/encoding/type_router.py +0 -0
  178. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evaluation/__init__.py +0 -0
  179. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evaluation/calibration.py +0 -0
  180. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evolution/__init__.py +0 -0
  181. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
  182. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evolution/budget.py +0 -0
  183. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evolution/evolution_store.py +0 -0
  184. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
  185. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
  186. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
  187. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evolution/triggers.py +0 -0
  188. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/evolution/types.py +0 -0
  189. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/graph/__init__.py +0 -0
  190. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/graph/cozo_backend.py +0 -0
  191. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/__init__.py +0 -0
  192. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
  193. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/adapter_base.py +0 -0
  194. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
  195. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/auto_capture.py +0 -0
  196. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
  197. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
  198. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/auto_recall.py +0 -0
  199. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
  200. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/codex_assets.py +0 -0
  201. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/codex_hooks.py +0 -0
  202. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/context_payload.py +0 -0
  203. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
  204. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
  205. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
  206. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
  207. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
  208. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/ide_connector.py +0 -0
  209. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/memory_protocol.py +0 -0
  210. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/portable_kit.py +0 -0
  211. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
  212. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
  213. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
  214. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/rules_engine.py +0 -0
  215. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/session_registry.py +0 -0
  216. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
  217. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/sync_loop.py +0 -0
  218. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
  219. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
  220. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
  221. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/__init__.py +0 -0
  222. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/auth_middleware.py +0 -0
  223. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/backup.py +0 -0
  224. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/cache_manager.py +0 -0
  225. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/cloud_backup.py +0 -0
  226. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/daemon_identity.py +0 -0
  227. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/data_root.py +0 -0
  228. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/event_bus.py +0 -0
  229. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
  230. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/local_diagnostics.py +0 -0
  231. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/pid_manager.py +0 -0
  232. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/process_reaper.py +0 -0
  233. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/rate_limiter.py +0 -0
  234. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
  235. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ingestion/__init__.py +0 -0
  236. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
  237. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
  238. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
  239. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ingestion/credentials.py +0 -0
  240. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
  241. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ingestion/parsers.py +0 -0
  242. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
  243. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/__init__.py +0 -0
  244. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/adaptive.py +0 -0
  245. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/arm_catalog.py +0 -0
  246. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/assertion_miner.py +0 -0
  247. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/bandit.py +0 -0
  248. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/bandit_cache.py +0 -0
  249. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/behavioral.py +0 -0
  250. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
  251. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/bootstrap.py +0 -0
  252. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
  253. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
  254. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
  255. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/cross_project.py +0 -0
  256. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/database.py +0 -0
  257. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
  258. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/engagement.py +0 -0
  259. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/ensemble.py +0 -0
  260. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/entity_compiler.py +0 -0
  261. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
  262. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/features.py +0 -0
  263. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/feedback.py +0 -0
  264. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
  265. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
  266. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/labeler.py +0 -0
  267. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/legacy_migration.py +0 -0
  268. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/lightgbm_subprocess.py +0 -0
  269. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/memory_merge.py +0 -0
  270. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/model_cache.py +0 -0
  271. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/model_rollback.py +0 -0
  272. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/outcome_queue.py +0 -0
  273. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/outcomes.py +0 -0
  274. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/pattern_miner.py +0 -0
  275. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
  276. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/project_context.py +0 -0
  277. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
  278. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/ranker.py +0 -0
  279. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/ranker_common.py +0 -0
  280. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
  281. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
  282. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/reward.py +0 -0
  283. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/reward_archive.py +0 -0
  284. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/reward_boost.py +0 -0
  285. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/reward_proxy.py +0 -0
  286. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/shadow_test.py +0 -0
  287. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/signal_worker.py +0 -0
  288. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/signals.py +0 -0
  289. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
  290. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/source_quality.py +0 -0
  291. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/trigram_index.py +0 -0
  292. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/learning/workflows.py +0 -0
  293. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/llm/__init__.py +0 -0
  294. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/llm/backbone.py +0 -0
  295. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/math/__init__.py +0 -0
  296. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/math/ebbinghaus.py +0 -0
  297. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/math/fisher.py +0 -0
  298. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/math/fisher_quantized.py +0 -0
  299. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/math/hopfield.py +0 -0
  300. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/math/langevin.py +0 -0
  301. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/math/polar_quant.py +0 -0
  302. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/math/qjl.py +0 -0
  303. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/math/sheaf.py +0 -0
  304. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/math/turbo_quant.py +0 -0
  305. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/__init__.py +0 -0
  306. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
  307. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
  308. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/_stdin_guard.py +0 -0
  309. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/agent_context.py +0 -0
  310. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/cli_fallback.py +0 -0
  311. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/http_transport.py +0 -0
  312. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/resources.py +0 -0
  313. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/server.py +0 -0
  314. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/shared.py +0 -0
  315. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools.py +0 -0
  316. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
  317. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_context.py +0 -0
  318. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_core.py +0 -0
  319. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
  320. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_learning.py +0 -0
  321. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
  322. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_optimize.py +0 -0
  323. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_v28.py +0 -0
  324. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_v3.py +0 -0
  325. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mcp/tools_v33.py +0 -0
  326. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mesh/__init__.py +0 -0
  327. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mesh/broker.py +0 -0
  328. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/mesh/remote_sync.py +0 -0
  329. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/migrations/__init__.py +0 -0
  330. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
  331. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/NOTICE +0 -0
  332. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/__init__.py +0 -0
  333. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/adapters/__init__.py +0 -0
  334. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/adapters/_agent_registry.py +0 -0
  335. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/adapters/anthropic_adapter.py +0 -0
  336. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/adapters/openai_adapter.py +0 -0
  337. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/adapters/wrap.py +0 -0
  338. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/cache/__init__.py +0 -0
  339. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/cache/boundary_store.py +0 -0
  340. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/cache/centroid_store.py +0 -0
  341. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/cache/context_key.py +0 -0
  342. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/cache/exact.py +0 -0
  343. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/cache/invalidation.py +0 -0
  344. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/cache/key_builder.py +0 -0
  345. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/cache/manager.py +0 -0
  346. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/cache/semantic.py +0 -0
  347. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/cache/stampede.py +0 -0
  348. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/compress/__init__.py +0 -0
  349. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/compress/align.py +0 -0
  350. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/compress/ccr.py +0 -0
  351. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/compress/prose_llmlingua.py +0 -0
  352. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/compress/router.py +0 -0
  353. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/config/__init__.py +0 -0
  354. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/config/defaults.py +0 -0
  355. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/config/schema.py +0 -0
  356. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/config/store.py +0 -0
  357. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/metrics/__init__.py +0 -0
  358. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/metrics/counters.py +0 -0
  359. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/metrics/estimator.py +0 -0
  360. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/metrics/exporters.py +0 -0
  361. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/metrics/persistence.py +0 -0
  362. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/proxy/__init__.py +0 -0
  363. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/proxy/_helpers.py +0 -0
  364. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/proxy/anthropic_surface.py +0 -0
  365. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/proxy/capture.py +0 -0
  366. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/proxy/gemini_surface.py +0 -0
  367. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/proxy/lifecycle.py +0 -0
  368. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/proxy/openai_surface.py +0 -0
  369. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/proxy/server.py +0 -0
  370. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/proxy/vertex_surface.py +0 -0
  371. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/storage/__init__.py +0 -0
  372. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/storage/db.py +0 -0
  373. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/optimize/storage/schema.py +0 -0
  374. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/parameterization/__init__.py +0 -0
  375. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
  376. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
  377. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
  378. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
  379. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
  380. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/__init__.py +0 -0
  381. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/agentic.py +0 -0
  382. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/ann_index.py +0 -0
  383. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
  384. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
  385. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
  386. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
  387. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
  388. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/fusion.py +0 -0
  389. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
  390. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
  391. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
  392. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/reranker.py +0 -0
  393. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/scope_policy.py +0 -0
  394. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
  395. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
  396. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/strategy.py +0 -0
  397. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
  398. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/retrieval/vector_store.py +0 -0
  399. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/__init__.py +0 -0
  400. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/api.py +0 -0
  401. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/bandit_loops.py +0 -0
  402. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/middleware/__init__.py +0 -0
  403. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
  404. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/recall_serializer.py +0 -0
  405. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/route_mutations.py +0 -0
  406. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/__init__.py +0 -0
  407. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/adapters.py +0 -0
  408. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/agents.py +0 -0
  409. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/backup.py +0 -0
  410. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/behavioral.py +0 -0
  411. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/brain.py +0 -0
  412. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/compliance.py +0 -0
  413. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/data_io.py +0 -0
  414. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/entity.py +0 -0
  415. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/events.py +0 -0
  416. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/evolution.py +0 -0
  417. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/helpers.py +0 -0
  418. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/ingest.py +0 -0
  419. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/insights.py +0 -0
  420. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/learning.py +0 -0
  421. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
  422. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/memories.py +0 -0
  423. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/mesh.py +0 -0
  424. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/optimize.py +0 -0
  425. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/prewarm.py +0 -0
  426. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/profiles.py +0 -0
  427. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/stats.py +0 -0
  428. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/tiers.py +0 -0
  429. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/timeline.py +0 -0
  430. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/token.py +0 -0
  431. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/v3_api.py +0 -0
  432. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/routes/ws.py +0 -0
  433. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/security_middleware.py +0 -0
  434. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/ui.py +0 -0
  435. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/server/write_identity.py +0 -0
  436. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/__init__.py +0 -0
  437. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/access_control.py +0 -0
  438. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/access_log.py +0 -0
  439. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/database.py +0 -0
  440. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
  441. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/logical_edges.py +0 -0
  442. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migration_v33.py +0 -0
  443. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
  444. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
  445. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
  446. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
  447. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
  448. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
  449. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
  450. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
  451. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
  452. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
  453. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
  454. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
  455. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
  456. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -0
  457. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M016_add_scope_support.py +0 -0
  458. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M017_ccq_scope_column.py +0 -0
  459. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M018_ingestion_operations.py +0 -0
  460. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M019_derivation_lineage.py +0 -0
  461. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/M020_model_state_integrity.py +0 -0
  462. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
  463. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/migrations.py +0 -0
  464. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/models.py +0 -0
  465. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/quantized_store.py +0 -0
  466. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/schema.py +0 -0
  467. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
  468. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/schema_v32.py +0 -0
  469. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/schema_v3410.py +0 -0
  470. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/schema_v3411.py +0 -0
  471. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/schema_v343.py +0 -0
  472. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/schema_v345.py +0 -0
  473. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/schema_v347.py +0 -0
  474. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/storage/v2_migrator.py +0 -0
  475. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/trust/__init__.py +0 -0
  476. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/trust/gate.py +0 -0
  477. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/trust/provenance.py +0 -0
  478. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/trust/scorer.py +0 -0
  479. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/trust/signals.py +0 -0
  480. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/css/brain.css +0 -0
  481. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
  482. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
  483. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/favicon.svg +0 -0
  484. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/index.html +0 -0
  485. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/agents.js +0 -0
  486. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
  487. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/brain.js +0 -0
  488. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/clusters.js +0 -0
  489. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/compliance.js +0 -0
  490. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/core.js +0 -0
  491. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/dashboard.js +0 -0
  492. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/events.js +0 -0
  493. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
  494. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/feedback.js +0 -0
  495. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
  496. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
  497. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
  498. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/ide-status.js +0 -0
  499. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/init.js +0 -0
  500. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
  501. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
  502. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/math-health.js +0 -0
  503. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/memories.js +0 -0
  504. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
  505. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/modal.js +0 -0
  506. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
  507. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/ng-health.js +0 -0
  508. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
  509. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
  510. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
  511. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
  512. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/optimize.js +0 -0
  513. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/profiles.js +0 -0
  514. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
  515. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
  516. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/search.js +0 -0
  517. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/settings.js +0 -0
  518. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/timeline.js +0 -0
  519. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
  520. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
  521. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  522. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  523. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
  524. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
  525. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
  526. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
  527. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
  528. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
  529. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
  530. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
  531. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
  532. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory/vector/__init__.py +0 -0
  533. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
  534. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
  535. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory.egg-info/requires.txt +0 -0
  536. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/src/superlocalmemory.egg-info/top_level.txt +0 -0
  537. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_auto_hooks.py +0 -0
  538. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_before_web_hook.py +0 -0
  539. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_behavioral_full.py +0 -0
  540. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_claude_hooks.py +0 -0
  541. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_cli_core.py +0 -0
  542. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_cli_json.py +0 -0
  543. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_cli_v33.py +0 -0
  544. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_compliance_full.py +0 -0
  545. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_config_system.py +0 -0
  546. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_dashboard_preserve_embedding.py +0 -0
  547. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_engine_hooks.py +0 -0
  548. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_event_bus.py +0 -0
  549. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_features.py +0 -0
  550. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_final_locomo_mini.py +0 -0
  551. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_graph_integrity.py +0 -0
  552. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_hook_handlers.py +0 -0
  553. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_ide_connector.py +0 -0
  554. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_infra.py +0 -0
  555. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_injection.py +0 -0
  556. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_learning_advanced.py +0 -0
  557. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_learning_collectors.py +0 -0
  558. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_llm_provider.py +0 -0
  559. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_mcp_server.py +0 -0
  560. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_migration.py +0 -0
  561. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_mode_switch_preservation.py +0 -0
  562. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_post_install.py +0 -0
  563. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_ranker.py +0 -0
  564. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_resource_lifecycle.py +0 -0
  565. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_topic_shift_hook.py +0 -0
  566. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_trust_full.py +0 -0
  567. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_v3_api.py +0 -0
  568. {superlocalmemory-3.7.4 → superlocalmemory-3.7.6}/tests/test_version_consistency.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superlocalmemory
3
- Version: 3.7.4
3
+ Version: 3.7.6
4
4
  Summary: Local-first agent memory with auditable hybrid retrieval
5
5
  Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -107,10 +107,10 @@ Dynamic: license-file
107
107
  </picture>
108
108
  </p>
109
109
 
110
- <h1 align="center">SuperLocalMemory V3.7.4</h1>
110
+ <h1 align="center">SuperLocalMemory V3.7.5</h1>
111
111
  <p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
112
112
  <em>Local-first agent memory with explicit operating modes, auditable retrieval, and optional Optimize tools.</em></p>
113
- <p align="center"><code>v3.7.4</code> — <strong>Scale Engine projection parity: normalized logical graph edges, durable promotion recovery, and honest runtime status.</strong><br/>
113
+ <p align="center"><code>v3.7.5</code> — <strong>Scale Engine graph and vector projection parity, durable promotion recovery, and honest runtime status.</strong><br/>
114
114
  Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</code> to your config &nbsp;·&nbsp; Skill: zero-config</p>
115
115
  <p align="center"><strong>3 public research preprints</strong> (arXiv + Zenodo archives) · <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>
116
116
 
@@ -5,10 +5,10 @@
5
5
  </picture>
6
6
  </p>
7
7
 
8
- <h1 align="center">SuperLocalMemory V3.7.4</h1>
8
+ <h1 align="center">SuperLocalMemory V3.7.5</h1>
9
9
  <p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
10
10
  <em>Local-first agent memory with explicit operating modes, auditable retrieval, and optional Optimize tools.</em></p>
11
- <p align="center"><code>v3.7.4</code> — <strong>Scale Engine projection parity: normalized logical graph edges, durable promotion recovery, and honest runtime status.</strong><br/>
11
+ <p align="center"><code>v3.7.5</code> — <strong>Scale Engine graph and vector projection parity, durable promotion recovery, and honest runtime status.</strong><br/>
12
12
  Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</code> to your config &nbsp;·&nbsp; Skill: zero-config</p>
13
13
  <p align="center"><strong>3 public research preprints</strong> (arXiv + Zenodo archives) · <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>
14
14
 
@@ -142,9 +142,10 @@ once you have the `fact_id` for full content.
142
142
 
143
143
  ## How multi-channel retrieval works
144
144
 
145
- `recall` runs four channels in parallel — semantic vector similarity, lexical
146
- BM25, temporal recency, and structural/graph — then fuses them with Reciprocal
147
- Rank Fusion (RRF) and applies a reranker. The `channel_weights` field in the
145
+ `recall` runs five candidate producers in parallel — semantic vector similarity,
146
+ lexical BM25, temporal recency, spreading activation, and Hopfield — then fuses
147
+ them with Reciprocal Rank Fusion (RRF), applies a reranker, and layers an
148
+ optional entity-graph post-fusion score enhancement. The `channel_weights` field in the
148
149
  response shows how each channel contributed for that query. Weights adapt over
149
150
  time based on engagement signals attributed via `session_id`.
150
151
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superlocalmemory"
3
- version = "3.7.4"
3
+ version = "3.7.6"
4
4
  description = "Local-first agent memory with auditable hybrid retrieval"
5
5
  readme = "README.md"
6
6
  license = "AGPL-3.0-or-later"
@@ -32,7 +32,7 @@ if "OMP_NUM_THREADS" not in os.environ:
32
32
  os.environ["OMP_NUM_THREADS"] = "2"
33
33
  # ---------------------------------------------------------------------------
34
34
 
35
- __version__ = "3.7.4"
35
+ __version__ = "3.7.6"
36
36
 
37
37
  _REQUIRED_VERSIONS = {
38
38
  "sentence_transformers": "5.3.0",
@@ -8,6 +8,7 @@ from argparse import Namespace
8
8
  def cmd_db_scale(args: Namespace) -> int:
9
9
  from superlocalmemory.core.config import SLMConfig
10
10
  from superlocalmemory.core.scale_engine import ScaleEngineError, ScaleEngineManager
11
+ from superlocalmemory.storage.sqlite_vectors import CanonicalVectorError
11
12
 
12
13
  action = args.scale_action
13
14
  # Scale Engine projections are currently canonical-default-profile data.
@@ -42,7 +43,7 @@ def cmd_db_scale(args: Namespace) -> int:
42
43
  result = manager.rollback(args.backup_id)
43
44
  else:
44
45
  raise ScaleEngineError(f"unknown Scale Engine action: {action}")
45
- except ScaleEngineError as exc:
46
+ except (ScaleEngineError, CanonicalVectorError) as exc:
46
47
  print(f"Scale Engine: {exc}")
47
48
  return 1
48
49
  print(json.dumps(result, indent=2, sort_keys=True))
@@ -22,6 +22,7 @@ import subprocess
22
22
  import sys
23
23
  import time
24
24
  from pathlib import Path
25
+ from typing import Any
25
26
 
26
27
 
27
28
  # ---------------------------------------------------------------------------
@@ -227,6 +228,29 @@ def _download_compressor(model_name: str) -> bool:
227
228
  return False
228
229
 
229
230
 
231
+ # ---------------------------------------------------------------------------
232
+ # Embedding-provider detection (v3.7.6 #72)
233
+ # ---------------------------------------------------------------------------
234
+
235
+ def _embedding_is_remote(config: Any) -> bool:
236
+ """True when embeddings come from a remote/OpenAI-compatible endpoint.
237
+
238
+ In that case the local sentence-transformers download (768d nomic) is
239
+ unnecessary and would only waste bandwidth/disk (#72). Detection is by
240
+ provider name or the presence of a configured HTTP endpoint.
241
+ """
242
+ emb = getattr(config, "embedding", None)
243
+ if emb is None:
244
+ return False
245
+ provider = (getattr(emb, "provider", "") or "").strip().lower()
246
+ endpoint = (
247
+ getattr(emb, "api_endpoint", "")
248
+ or getattr(emb, "base_url", "")
249
+ or ""
250
+ )
251
+ return provider in ("openai", "openai-compatible", "remote") or bool(endpoint)
252
+
253
+
230
254
  # ---------------------------------------------------------------------------
231
255
  # Verification
232
256
  # ---------------------------------------------------------------------------
@@ -455,7 +479,17 @@ def run_wizard(auto: bool = False) -> None:
455
479
  print()
456
480
  print("─── Step 4/10: Download Embedding Model ───")
457
481
 
458
- if not st_ok:
482
+ if _embedding_is_remote(config):
483
+ # v3.7.6 (#72): a remote/OpenAI-compatible embedding endpoint supplies
484
+ # its own vectors (any width, e.g. 1024d Qwen3-Embedding), so pulling the
485
+ # local 768d nomic model would be wasted bandwidth and could imply a
486
+ # dimension that does not match the endpoint.
487
+ emb = config.embedding
488
+ print(" ✓ Skipped — remote/OpenAI-compatible embedding endpoint configured")
489
+ print(f" provider={getattr(emb, 'provider', '?')}, "
490
+ f"dimension={getattr(emb, 'dimension', '?')}")
491
+ print(" No local embedding model needed.")
492
+ elif not st_ok:
459
493
  print(" ⚠ Skipped (sentence-transformers not installed)")
460
494
  print(" Models will download on first use.")
461
495
  else:
@@ -354,7 +354,12 @@ class BackendOrchestrator:
354
354
  try:
355
355
  from superlocalmemory.vector.lancedb_backend import LanceDBVectorBackend
356
356
  lance_path = self._data_dir / "lance"
357
- self._lancedb = LanceDBVectorBackend(str(lance_path))
357
+ # v3.7.6 (#72): honor the configured embedding width instead of the
358
+ # hardcoded 768d, so custom endpoints (e.g. 1024d Qwen3-Embedding) work.
359
+ dimension = getattr(
360
+ getattr(self._config, "embedding", None), "dimension", None
361
+ )
362
+ self._lancedb = LanceDBVectorBackend(str(lance_path), dimension=dimension)
358
363
  self._update_status("lancedb", "not_initialized")
359
364
  logger.info("LanceDB initialized at %s", lance_path)
360
365
  except Exception as exc:
@@ -258,7 +258,7 @@ class RetrievalConfig:
258
258
  # Reranking (V3.3.2: ONNX backend enabled for all modes)
259
259
  # V3.4.2: Tested gte-reranker-modernbert-base (8K context) — REGRESSED
260
260
  # LoCoMo from 68.4% to 64.1%. Reverted to MiniLM-L-12-v2. The 512-token
261
- # limit is acceptable because SLM's 6-channel retrieval pre-filters
261
+ # limit is acceptable because SLM's multi-producer retrieval pre-filters
262
262
  # relevant facts before reranking. See bench-v342-locomo.md.
263
263
  use_cross_encoder: bool = True
264
264
  cross_encoder_model: str = "cross-encoder/ms-marco-MiniLM-L-12-v2"
@@ -51,8 +51,9 @@ class MemoryEngine:
51
51
  """Main orchestrator for the SuperLocalMemory V3 memory system.
52
52
 
53
53
  Wires encoding (fact extraction, entity resolution, graph building,
54
- consolidation) with retrieval (4-channel search, RRF fusion,
55
- reranking) and all supporting layers (trust, learning, compliance).
54
+ consolidation) with retrieval (five candidate producers -> RRF fusion,
55
+ reranking, entity-graph post-fusion enhancement) and all supporting
56
+ layers (trust, learning, compliance).
56
57
 
57
58
  Usage::
58
59
 
@@ -500,7 +500,9 @@ def init_retrieval(
500
500
  trust_scorer: Any,
501
501
  vector_store: Any = None,
502
502
  ) -> Any:
503
- """Create the RetrievalEngine with 6 channels. Returns it."""
503
+ """Create the RetrievalEngine five candidate producers (semantic, BM25,
504
+ temporal, spreading_activation, hopfield) plus the entity graph used for
505
+ post-fusion score enhancement. Returns it."""
504
506
  from superlocalmemory.retrieval.engine import RetrievalEngine
505
507
  from superlocalmemory.retrieval.semantic_channel import SemanticChannel
506
508
  from superlocalmemory.retrieval.bm25_channel import BM25Channel
@@ -23,6 +23,12 @@ from pathlib import Path
23
23
  from typing import Any, Callable
24
24
 
25
25
  from superlocalmemory.storage.logical_edges import count_logical_edges, iter_logical_edges
26
+ from superlocalmemory.storage.sqlite_vectors import (
27
+ CanonicalVectorError,
28
+ count_canonical_vectors,
29
+ iter_canonical_vectors,
30
+ load_sqlite_vec_extension,
31
+ )
26
32
 
27
33
 
28
34
  class ScaleEngineError(RuntimeError):
@@ -272,6 +278,9 @@ class ScaleEngineManager:
272
278
  self.config.scale_engine_state = "prepared"
273
279
  self._save_config()
274
280
  return manifest
281
+ except CanonicalVectorError as exc:
282
+ shutil.rmtree(stage_dir, ignore_errors=True)
283
+ raise ScaleEngineError(f"canonical vector projection failed: {exc}") from exc
275
284
  except Exception:
276
285
  shutil.rmtree(stage_dir, ignore_errors=True)
277
286
  raise
@@ -285,6 +294,8 @@ class ScaleEngineManager:
285
294
  try:
286
295
  self._recover_interrupted_promotion()
287
296
  return self._verify(stage_id)
297
+ except CanonicalVectorError as exc:
298
+ raise ScaleEngineError(f"canonical vector projection failed: {exc}") from exc
288
299
  finally:
289
300
  self._release_lifecycle_lock(lock_path)
290
301
 
@@ -301,7 +312,9 @@ class ScaleEngineManager:
301
312
  source_fingerprint = self._projection_fingerprint(conn, canonical)
302
313
  observed = self._observed_counts(cozo, lance)
303
314
  if manifest["source_fingerprint"] != source_fingerprint:
304
- raise ScaleEngineError("canonical SQLite changed after preparation; prepare a new stage")
315
+ raise ScaleEngineError(
316
+ "canonical SQLite changed after preparation; prepare a new stage"
317
+ )
305
318
  if canonical != manifest["canonical"] or observed != canonical:
306
319
  raise ScaleEngineError(
307
320
  f"projection parity failed: canonical={canonical}, observed={observed}"
@@ -321,6 +334,8 @@ class ScaleEngineManager:
321
334
  try:
322
335
  self._recover_interrupted_promotion()
323
336
  return self._promote(stage_id)
337
+ except CanonicalVectorError as exc:
338
+ raise ScaleEngineError(f"canonical vector projection failed: {exc}") from exc
324
339
  finally:
325
340
  self._release_lifecycle_lock(lock_path)
326
341
 
@@ -341,7 +356,9 @@ class ScaleEngineManager:
341
356
  gate.execute("BEGIN IMMEDIATE")
342
357
  canonical = self._canonical_counts(gate)
343
358
  if manifest["source_fingerprint"] != self._projection_fingerprint(gate, canonical):
344
- raise ScaleEngineError("canonical SQLite changed after verification; prepare a new stage")
359
+ raise ScaleEngineError(
360
+ "canonical SQLite changed after verification; prepare a new stage"
361
+ )
345
362
  self._mkdir_durable(self.backup_root)
346
363
  journal = {
347
364
  "schema_version": self.SCHEMA_VERSION,
@@ -368,7 +385,13 @@ class ScaleEngineManager:
368
385
  self._replace_durable(destination, source)
369
386
  move["state"] = "complete"
370
387
  self._write_promotion_journal(journal)
371
- manifest.update({"state": "promoted", "promoted_at": _utc_now(), "backup_id": backup_dir.name})
388
+ manifest.update(
389
+ {
390
+ "state": "promoted",
391
+ "promoted_at": _utc_now(),
392
+ "backup_id": backup_dir.name,
393
+ }
394
+ )
372
395
  self._write_manifest(stage_dir, manifest)
373
396
  self.config.scale_engine_state = "promoted"
374
397
  self.config.graph_backend = "cozo"
@@ -447,7 +470,11 @@ class ScaleEngineManager:
447
470
  journal["state"] = "committed"
448
471
  self._write_promotion_journal(journal)
449
472
  self.promotion_journal_path.unlink(missing_ok=True)
450
- return {"state": "local_core", "restored_backup": backup_id, "displaced": displaced.name}
473
+ return {
474
+ "state": "local_core",
475
+ "restored_backup": backup_id,
476
+ "displaced": displaced.name,
477
+ }
451
478
  except Exception as exc:
452
479
  try:
453
480
  self._recover_interrupted_promotion()
@@ -460,11 +487,20 @@ class ScaleEngineManager:
460
487
  def _real_backend_factory(self, cozo_dir: Path, lance_dir: Path) -> tuple[Any, Any]:
461
488
  from superlocalmemory.graph.cozo_backend import CozoDBGraphBackend
462
489
  from superlocalmemory.vector.lancedb_backend import LanceDBVectorBackend
463
- return CozoDBGraphBackend(str(cozo_dir / "graph")), LanceDBVectorBackend(str(lance_dir))
490
+ # v3.7.6 (#72): promote the configured embedding width into the new
491
+ # LanceDB store so a 1024d (or other) custom endpoint survives promotion.
492
+ dimension = getattr(
493
+ getattr(self.config, "embedding", None), "dimension", None
494
+ )
495
+ return (
496
+ CozoDBGraphBackend(str(cozo_dir / "graph")),
497
+ LanceDBVectorBackend(str(lance_dir), dimension=dimension),
498
+ )
464
499
 
465
500
  def _readonly_connection(self) -> sqlite3.Connection:
466
501
  conn = sqlite3.connect(f"file:{self.db_path}?mode=ro", uri=True)
467
502
  conn.execute("PRAGMA query_only=ON")
503
+ load_sqlite_vec_extension(conn)
468
504
  return conn
469
505
 
470
506
  def _canonical_counts(self, conn: sqlite3.Connection) -> dict[str, int]:
@@ -473,15 +509,7 @@ class ScaleEngineManager:
473
509
  (self.profile_id,),
474
510
  ).fetchone()[0]
475
511
  edges = count_logical_edges(conn, self.profile_id)
476
- try:
477
- vectors = conn.execute(
478
- "SELECT COUNT(*) FROM fact_embeddings_rowids fer "
479
- "JOIN atomic_facts af ON af.fact_id = fer.fact_id "
480
- "WHERE af.profile_id = ?",
481
- (self.profile_id,),
482
- ).fetchone()[0]
483
- except sqlite3.OperationalError:
484
- vectors = 0
512
+ vectors = count_canonical_vectors(conn, self.profile_id)
485
513
  return {"entities": int(nodes), "edges": int(edges), "vectors": int(vectors)}
486
514
 
487
515
  def _observed_counts(self, cozo: Any, lance: Any) -> dict[str, int]:
@@ -489,7 +517,11 @@ class ScaleEngineManager:
489
517
  vector = lance.health_check()
490
518
  if graph.get("status") != "active" or vector.get("status") != "active":
491
519
  raise ScaleEngineError(f"projection health failed: cozo={graph}, lancedb={vector}")
492
- return {"entities": int(graph["entities"]), "edges": int(graph["edges"]), "vectors": int(vector["vectors"])}
520
+ return {
521
+ "entities": int(graph["entities"]),
522
+ "edges": int(graph["edges"]),
523
+ "vectors": int(vector["vectors"]),
524
+ }
493
525
 
494
526
  def _projection_fingerprint(
495
527
  self, conn: sqlite3.Connection, counts: dict[str, int]
@@ -498,7 +530,12 @@ class ScaleEngineManager:
498
530
  digest = hashlib.sha256()
499
531
  digest.update(json.dumps(counts, sort_keys=True).encode())
500
532
  tables = (
501
- ("canonical_entities", "entity_id, canonical_name, entity_type, first_seen, last_seen, fact_count, profile_id", "entity_id"),
533
+ (
534
+ "canonical_entities",
535
+ "entity_id, canonical_name, entity_type, first_seen, last_seen, "
536
+ "fact_count, profile_id",
537
+ "entity_id",
538
+ ),
502
539
  ("atomic_facts", "fact_id, canonical_entities_json, lifecycle, profile_id", "fact_id"),
503
540
  )
504
541
  for table, columns, ordering in tables:
@@ -516,18 +553,8 @@ class ScaleEngineManager:
516
553
  self._digest_row(digest, "graph_edges", row)
517
554
  except sqlite3.OperationalError as exc:
518
555
  raise ScaleEngineError("canonical SQLite missing required graph_edges table") from exc
519
- try:
520
- rows = conn.execute(
521
- "SELECT fer.rowid, fer.fact_id, vec.vector FROM fact_embeddings_rowids fer "
522
- "JOIN atomic_facts af ON af.fact_id = fer.fact_id "
523
- "LEFT JOIN fact_embeddings_vector_chunks00 vec ON vec.rowid = fer.rowid "
524
- "WHERE af.profile_id=? ORDER BY fer.rowid",
525
- (self.profile_id,),
526
- )
527
- for row in rows:
528
- self._digest_row(digest, "fact_embeddings_rowids", row)
529
- except sqlite3.OperationalError:
530
- pass
556
+ for row in iter_canonical_vectors(conn, self.profile_id):
557
+ self._digest_row(digest, "fact_embeddings", row)
531
558
  return digest.hexdigest()
532
559
 
533
560
  @staticmethod
@@ -576,7 +603,9 @@ class ScaleEngineManager:
576
603
 
577
604
  def _require_default_profile(self) -> None:
578
605
  if self.profile_id != "default":
579
- raise ScaleEngineError("Scale Engine promotion currently supports the default profile only")
606
+ raise ScaleEngineError(
607
+ "Scale Engine promotion currently supports the default profile only"
608
+ )
580
609
 
581
610
  def _require_canonical_db(self) -> None:
582
611
  if not self.db_path.exists():
@@ -310,7 +310,7 @@ def run_store(
310
310
  # that fact extraction may abstract away (dates, names, specifics).
311
311
  # This ensures BM25 and semantic search can always find the original text.
312
312
  # V3.3.12: Extract entities from verbatim content so entity channel + temporal
313
- # channel can find it (was entities=[] which made 4/6 channels blind).
313
+ # channel can find it (was entities=[] which blinded the entity-graph and temporal signals).
314
314
  # V3.3.20: Stronger verbatim filter — skip greetings, filler, short phrases.
315
315
  # Verbatim facts with just "Hey! How are you?" dilute embeddings and add noise.
316
316
  _MIN_VERBATIM_WORDS = 8
@@ -17,7 +17,7 @@ the local memories before committing to the external call.
17
17
 
18
18
  PERFORMANCE
19
19
  ===========
20
- Cost: ~500-800ms warm (full 4-channel recall via SLM daemon). Fires only on
20
+ Cost: ~500-800ms warm (full recall via SLM daemon). Fires only on
21
21
  WebSearch and WebFetch (5-20× per typical session), so per-session overhead
22
22
  is ~5-15s in exchange for grounded answers. NOT suitable for UserPromptSubmit
23
23
  (too frequent — would be a perf disaster).
@@ -267,7 +267,7 @@ def _hook_definitions(include_gate: bool = False) -> dict[str, list]:
267
267
  }
268
268
 
269
269
  # v3.4.43 — default PreToolUse entry: pre-web recall on WebSearch/WebFetch.
270
- # Fires `slm hook before_web` which runs a 4-channel recall on the search
270
+ # Fires `slm hook before_web` which runs a recall on the search
271
271
  # query/URL and injects results as a system-reminder BEFORE the web call.
272
272
  # Encourages Claude to consider local memories before paying for new web
273
273
  # research. Independent of `include_gate` — this is value-add, not gating.
@@ -42,12 +42,13 @@ def _sqlite_emergency_recall(
42
42
  native BM25 ranking via ``ORDER BY fts.rank``. This is the Mem0 / Letta
43
43
  industry pattern — multi-process safe via SQLite WAL mode.
44
44
 
45
- Quality degraded vs full 6-channel (no semantic, no entity graph, no
45
+ Quality degraded vs the full recall path (no semantic, no entity graph, no
46
46
  temporal/spreading-activation/Hopfield) but still provides real BM25
47
47
  math + age gate. Returns ``degraded_mode=True`` via the caller's flag.
48
48
 
49
49
  Used ONLY when Tier-1 (full daemon recall) fails completely. Normal
50
- path is full 6-channel; this is the fire-alarm.
50
+ path is the full five-producer fusion + entity-graph enhancement;
51
+ this is the fire-alarm.
51
52
  """
52
53
  import re
53
54
 
@@ -186,9 +187,11 @@ def register_active_tools(server, get_engine: Callable) -> None:
186
187
  permanently relevant still surface). Default: 30.
187
188
  Set to 0 to disable the age gate entirely.
188
189
 
189
- Scoring: Uses 6-channel fusion (semantic + BM25 + entity_graph + temporal +
190
- spreading_activation + hopfield) with Ebbinghaus exponential recency decay
191
- and FSRS stability strengthening by access frequency.
190
+ Scoring: five candidate producers (semantic + BM25 + temporal +
191
+ spreading_activation + hopfield) feed RRF fusion; the entity graph then
192
+ applies an optional post-fusion score enhancement. Combined with
193
+ Ebbinghaus exponential recency decay and FSRS stability strengthening by
194
+ access frequency.
192
195
  """
193
196
  try:
194
197
  from superlocalmemory.hooks.rules_engine import RulesEngine
@@ -215,8 +218,9 @@ def register_active_tools(server, get_engine: Callable) -> None:
215
218
  search_query = "recent important decisions"
216
219
 
217
220
  # 2-tier recall (industry pattern: Hindsight / Zep / Supermemory):
218
- # PRIMARY: full 6-channel via daemon (semantic + BM25 + entity + temporal
219
- # + Hopfield + spreading-activation, Fisher-Rao fusion, FSRS decay).
221
+ # PRIMARY: full recall via daemon five candidate producers (semantic
222
+ # + BM25 + temporal + Hopfield + spreading-activation) into RRF
223
+ # fusion, then entity-graph post-fusion enhancement, FSRS decay.
220
224
  # Fast because Ollama embed model is kept warm (keep_alive=-1
221
225
  # + eager pre-warm at daemon boot).
222
226
  # EMERGENCY: direct FTS5 BM25 (Mem0 / Letta pattern). Used ONLY when
@@ -2,10 +2,13 @@
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
- """SuperLocalMemory V3 — Retrieval Engine (6-Channel Orchestrator).
5
+ """SuperLocalMemory V3 — retrieval orchestration.
6
6
 
7
- 6 channels -> single RRF fusion -> optional cross-encoder rerank.
8
- Channels: semantic, BM25, entity_graph, temporal, spreading_activation, hopfield.
7
+ Five parallel candidate producers (semantic, BM25, temporal, spreading
8
+ activation, and Hopfield) feed single-pass RRF fusion; optional profile hits
9
+ can join that fusion input. The entity graph may then score and boost fused
10
+ candidates when enabled and within the recall time budget. It is not a sixth
11
+ parallel candidate producer. Optional cross-encoder reranking follows fusion.
9
12
  Replaces V1's broken 10-channel triple-re-fusion pipeline.
10
13
 
11
14
  Part of Qualixar | Author: Varun Pratap Bhardwaj
@@ -54,7 +57,12 @@ class EmbeddingProvider(Protocol):
54
57
 
55
58
 
56
59
  class RetrievalEngine:
57
- """Six-channel retrieval orchestrator.
60
+ """Retrieval orchestrator: five candidate producers -> RRF fusion.
61
+
62
+ Five parallel candidate producers (semantic, BM25, temporal,
63
+ spreading_activation, hopfield) feed single-pass RRF fusion, followed by
64
+ optional cross-encoder rerank and an optional entity-graph post-fusion
65
+ score enhancement. Entity graph is not a sixth parallel candidate producer.
58
66
 
59
67
  Usage::
60
68
  engine = RetrievalEngine(db, config, channels, embedder)
@@ -627,10 +635,10 @@ class RetrievalEngine:
627
635
  v3.4.53: channels run in PARALLEL via ThreadPoolExecutor. Industry
628
636
  standard (EverMemOS, szl-recall, ContentPilot 2026): all channels
629
637
  are independent after embedding; running them serially wastes time
630
- equal to the sum of all channel latencies. Parallel execution brings
631
- total channel time from sum(semantic+bm25+entity+temporal+hopfield+sa)
632
- down to max(semantic,bm25,entity,temporal,hopfield,sa) roughly a
633
- 3-5x speedup for the channel phase.
638
+ equal to the sum of all producer latencies. When multiple producers are
639
+ enabled and healthy, parallel dispatch generally bounds the producer
640
+ phase by the slowest submitted producer, plus serial embedding and
641
+ result-collection overhead.
634
642
  """
635
643
  import os as _os_e
636
644
  import time as _time_e
@@ -1,4 +1,4 @@
1
- """Runtime recall-health monitor — keep the 6-channel recall path warm,
1
+ """Runtime recall-health monitor — keep the full recall path warm,
2
2
  detect a "warm-but-broken" embedder at runtime, and self-heal it (v3.6.8).
3
3
 
4
4
  Why this exists
@@ -4,7 +4,7 @@
4
4
 
5
5
  """Ask My Memory — SSE chat endpoint.
6
6
 
7
- Flow: query → 6-channel retrieval → format context → LLM stream → SSE
7
+ Flow: query → full recall (five-producer fusion) → format context → LLM stream → SSE
8
8
  Mode A: No LLM, returns formatted retrieval results.
9
9
  Mode B: Ollama local streaming via /api/chat.
10
10
  Mode C: Cloud LLM streaming (OpenAI-compatible).
@@ -315,7 +315,7 @@ async def _stream_openai_compat(
315
315
  # ── Retrieval Helper ─────────────────────────────────────────────
316
316
 
317
317
  def _recall_memories(query: str, limit: int) -> list:
318
- """Run 6-channel retrieval via WorkerPool (synchronous, runs in executor)."""
318
+ """Run full recall via WorkerPool (synchronous, runs in executor)."""
319
319
  from superlocalmemory.core.worker_pool import WorkerPool
320
320
  pool = WorkerPool.shared()
321
321
  result = pool.recall(query, limit=limit)
@@ -277,7 +277,7 @@ def _emit_event(
277
277
 
278
278
 
279
279
  # v3.4.53: Limit concurrent full (non-fast) recalls. Without this, N parallel
280
- # /recall calls spawn N × 6-channel threads → Ollama serialises, reranker
280
+ # /recall calls spawn N × full-recall threads → Ollama serialises, reranker
281
281
  # lock queues, and total wall time is N × single-recall-time. 3 concurrent
282
282
  # full recalls gives parallelism benefit without resource oversaturation.
283
283
  import asyncio as _asyncio
@@ -775,7 +775,7 @@ async def lifespan(application: FastAPI):
775
775
  # v3.4.52: Ensure covering indexes for SpreadingActivation queries.
776
776
  # SQLite 3.45+ streaming merge (UNION ALL + ORDER BY + LIMIT) uses
777
777
  # these to seek directly to top-K rows per subquery, avoiding a
778
- # full sort. Without them full 6-channel recall takes 7-10s on
778
+ # full sort. Without them full recall takes 7-10s on
779
779
  # >1M edges (the SpreadingActivation 4-UNION query disk-sorts every
780
780
  # node's neighbor list on each call). With them: sub-second.
781
781
  try:
@@ -835,7 +835,7 @@ async def lifespan(application: FastAPI):
835
835
  logger.warning("Embedding warmup failed: %s", exc)
836
836
 
837
837
  def _warmup_recall():
838
- """v3.4.62: Fire a full 6-channel recall after embedding warms up.
838
+ """v3.4.62: Fire a full recall after embedding warms up.
839
839
 
840
840
  Loads the graph_edges table (347K rows, ~100 MB) into the SQLite
841
841
  page cache. Without this, the first user query takes 15-24s because
@@ -853,7 +853,7 @@ async def lifespan(application: FastAPI):
853
853
  try:
854
854
  t0 = _t.monotonic()
855
855
  # Fire 2 warmup queries: one to load the graph page cache,
856
- # second to warm the reranker subprocess + all 6 channels.
856
+ # second to warm the reranker subprocess + all producers.
857
857
  # Without this, dashboard POST /api/search hits 11s cold.
858
858
  for wq in ("memory recall performance", "context injection retrieval"):
859
859
  engine.recall(wq, limit=5)
@@ -1710,7 +1710,20 @@ def _register_dashboard_routes(application: FastAPI) -> None:
1710
1710
  content={"error": str(_identity_exc.detail)},
1711
1711
  )
1712
1712
  raise
1713
- if not check_api_key(headers, is_write=is_write):
1713
+ # v3.7.6 (#71/#73/#74): require_http_mutation_actor above is the
1714
+ # authoritative write-auth boundary — it accepts the daemon
1715
+ # capability, the dashboard install token, a matching X-SLM-API-Key,
1716
+ # or an uncredentialed loopback caller, and fails closed for everyone
1717
+ # else. The legacy check_api_key gate only understands X-SLM-API-Key,
1718
+ # so running it as a second gate 401'd write paths that stage 1 had
1719
+ # already authorized: capability-authenticated daemon write-throughs
1720
+ # (MCP `remember`, #71) and install-token dashboard writes / config
1721
+ # tests (#73/#74) whenever an api_key file exists. Only fall back to
1722
+ # check_api_key when the mutation-actor gate did not run — i.e. for
1723
+ # non-write, non-recall requests, where it is a no-op for reads.
1724
+ if not requires_mutation_actor and not check_api_key(
1725
+ headers, is_write=is_write
1726
+ ):
1714
1727
  from fastapi.responses import JSONResponse
1715
1728
  return JSONResponse(
1716
1729
  status_code=401,
@@ -298,6 +298,36 @@ def _apply_single(
298
298
  _, _, logged_hash, _, status = existing
299
299
  if status == "complete":
300
300
  if logged_hash != ddl_hash:
301
+ # v3.7.6 (#70): a complete migration whose logged DDL hash no
302
+ # longer matches the current text is only a real failure if the
303
+ # schema it guarantees is actually absent. Historically-benign
304
+ # DDL edits (e.g. M002's V3.4.21 <-> S9-W1 variants that build the
305
+ # identical end-state) would otherwise brick readiness forever on
306
+ # upgrade. Consult the migration's own verify(); if the schema is
307
+ # in place, reconcile the log to the current hash and treat as
308
+ # already-applied instead of failing the daemon into permanent
309
+ # not_ready. Absent/failing verify keeps the hard failure.
310
+ mod = _MODULES.get(migration.name)
311
+ verify_fn = (
312
+ getattr(mod, "verify", None) if mod is not None else None
313
+ )
314
+ if verify_fn is not None:
315
+ try:
316
+ if verify_fn(conn):
317
+ if not dry_run:
318
+ try:
319
+ _upsert_log(
320
+ conn, migration.name, ddl_hash, "complete"
321
+ )
322
+ except sqlite3.Error: # pragma: no cover
323
+ pass
324
+ return (
325
+ "skipped",
326
+ "drift reconciled via verify — schema present, "
327
+ "log re-hashed to current DDL",
328
+ )
329
+ except sqlite3.Error: # pragma: no cover
330
+ pass
301
331
  detail = (
302
332
  f"DDL drift detected for {migration.name}: "
303
333
  f"logged={logged_hash[:8]}... current={ddl_hash[:8]}..."