superlocalmemory 3.6.22__tar.gz → 3.6.23__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 (531) hide show
  1. {superlocalmemory-3.6.22/src/superlocalmemory.egg-info → superlocalmemory-3.6.23}/PKG-INFO +7 -4
  2. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/README.md +6 -3
  3. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/pyproject.toml +1 -1
  4. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/__init__.py +1 -1
  5. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/commands.py +37 -4
  6. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/maintenance.py +22 -21
  7. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/claude_code_hooks.py +4 -5
  8. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/hook_handlers.py +22 -23
  9. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/llm/backbone.py +12 -7
  10. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/storage/db.py +2 -1
  11. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/helpers.py +84 -4
  12. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/ui.py +6 -3
  13. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23/src/superlocalmemory.egg-info}/PKG-INFO +7 -4
  14. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_hook_handlers.py +18 -2
  15. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_version_consistency.py +1 -1
  16. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/AUTHORS.md +0 -0
  17. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/LICENSE +0 -0
  18. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/NOTICE +0 -0
  19. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/setup.cfg +0 -0
  20. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/__init__.py +0 -0
  21. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
  22. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/signer.py +0 -0
  23. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/watermark.py +0 -0
  24. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/__init__.py +0 -0
  25. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/_lazy_init.py +0 -0
  26. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/cache_cmd.py +0 -0
  27. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/compress_cmd.py +0 -0
  28. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/context_commands.py +0 -0
  29. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/daemon.py +0 -0
  30. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/db_migrate.py +0 -0
  31. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/escape_hatch.py +0 -0
  32. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/help_cmd.py +0 -0
  33. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
  34. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/json_output.py +0 -0
  35. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/main.py +0 -0
  36. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
  37. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/optimize_cmd.py +0 -0
  38. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/optimize_constants.py +0 -0
  39. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/pending_store.py +0 -0
  40. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/post_install.py +0 -0
  41. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/proxy_cmd.py +0 -0
  42. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/service_installer.py +0 -0
  43. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/setup_wizard.py +0 -0
  44. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/version_banner.py +0 -0
  45. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
  46. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/__init__.py +0 -0
  47. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
  48. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
  49. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
  50. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
  51. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
  52. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
  53. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
  54. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/changes.py +0 -0
  55. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/communities.py +0 -0
  56. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/config.py +0 -0
  57. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/database.py +0 -0
  58. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
  59. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
  60. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
  61. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/flows.py +0 -0
  62. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
  63. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
  64. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/graph_store.py +0 -0
  65. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/incremental.py +0 -0
  66. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/models.py +0 -0
  67. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/parser.py +0 -0
  68. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/resolver.py +0 -0
  69. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/search.py +0 -0
  70. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/service.py +0 -0
  71. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/watcher.py +0 -0
  72. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/__init__.py +0 -0
  73. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/abac.py +0 -0
  74. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/audit.py +0 -0
  75. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
  76. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/gdpr.py +0 -0
  77. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/lifecycle.py +0 -0
  78. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/retention.py +0 -0
  79. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/scheduler.py +0 -0
  80. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/__init__.py +0 -0
  81. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/backend_orchestrator.py +0 -0
  82. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/block_hygiene.py +0 -0
  83. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/clock_monitor.py +0 -0
  84. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/config.py +0 -0
  85. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/consolidation_engine.py +0 -0
  86. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/context_cache.py +0 -0
  87. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/db_pool.py +0 -0
  88. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/embedding_worker.py +0 -0
  89. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/embeddings.py +0 -0
  90. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/engine.py +0 -0
  91. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/engine_capabilities.py +0 -0
  92. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/engine_lock.py +0 -0
  93. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/engine_wiring.py +0 -0
  94. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/error_catalog.py +0 -0
  95. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/error_envelope.py +0 -0
  96. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/fact_consolidator.py +0 -0
  97. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/file_lock.py +0 -0
  98. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/graph_analyzer.py +0 -0
  99. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/graph_pruner.py +0 -0
  100. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/health_monitor.py +0 -0
  101. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/hooks.py +0 -0
  102. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/ingest_gate.py +0 -0
  103. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/injection.py +0 -0
  104. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/loop_watchdog.py +0 -0
  105. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
  106. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/mcp_embedder_proxy.py +0 -0
  107. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/modes.py +0 -0
  108. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/ollama_embedder.py +0 -0
  109. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/platform_utils.py +0 -0
  110. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/priority_queue.py +0 -0
  111. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/profiles.py +0 -0
  112. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/pruning_engine.py +0 -0
  113. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/queue_consumer.py +0 -0
  114. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
  115. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/ram_lock.py +0 -0
  116. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/rate_limit.py +0 -0
  117. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/recall_gate.py +0 -0
  118. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/recall_pipeline.py +0 -0
  119. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/recall_queue.py +0 -0
  120. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/recall_worker.py +0 -0
  121. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/registry.py +0 -0
  122. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/remote_mode.py +0 -0
  123. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/reranker_worker.py +0 -0
  124. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/safe_fs.py +0 -0
  125. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/security_primitives.py +0 -0
  126. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/shadow_router.py +0 -0
  127. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/slm_disabled.py +0 -0
  128. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/slmignore.py +0 -0
  129. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/store_pipeline.py +0 -0
  130. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/summarizer.py +0 -0
  131. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/tier_manager.py +0 -0
  132. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/topic_signature.py +0 -0
  133. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/worker_pool.py +0 -0
  134. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/dynamics/__init__.py +0 -0
  135. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
  136. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
  137. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
  138. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
  139. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/__init__.py +0 -0
  140. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/auto_linker.py +0 -0
  141. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
  142. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/consolidator.py +0 -0
  143. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/context_generator.py +0 -0
  144. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/emotional.py +0 -0
  145. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
  146. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
  147. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
  148. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/foresight.py +0 -0
  149. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/graph_builder.py +0 -0
  150. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/observation_builder.py +0 -0
  151. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/scene_builder.py +0 -0
  152. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/signal_inference.py +0 -0
  153. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
  154. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
  155. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/type_router.py +0 -0
  156. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/__init__.py +0 -0
  157. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
  158. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/budget.py +0 -0
  159. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/evolution_store.py +0 -0
  160. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
  161. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
  162. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
  163. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/triggers.py +0 -0
  164. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/types.py +0 -0
  165. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/graph/__init__.py +0 -0
  166. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/graph/cozo_backend.py +0 -0
  167. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/__init__.py +0 -0
  168. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
  169. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/adapter_base.py +0 -0
  170. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
  171. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/auto_capture.py +0 -0
  172. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
  173. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
  174. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/auto_recall.py +0 -0
  175. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
  176. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
  177. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/context_payload.py +0 -0
  178. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
  179. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
  180. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
  181. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
  182. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/ide_connector.py +0 -0
  183. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/memory_protocol.py +0 -0
  184. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/portable_kit.py +0 -0
  185. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
  186. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
  187. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
  188. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/rules_engine.py +0 -0
  189. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/session_registry.py +0 -0
  190. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
  191. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/sync_loop.py +0 -0
  192. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
  193. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
  194. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
  195. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/__init__.py +0 -0
  196. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/auth_middleware.py +0 -0
  197. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/backup.py +0 -0
  198. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/cache_manager.py +0 -0
  199. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/cloud_backup.py +0 -0
  200. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/event_bus.py +0 -0
  201. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
  202. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/pid_manager.py +0 -0
  203. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/process_reaper.py +0 -0
  204. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/rate_limiter.py +0 -0
  205. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
  206. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/__init__.py +0 -0
  207. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
  208. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
  209. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
  210. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/credentials.py +0 -0
  211. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
  212. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/parsers.py +0 -0
  213. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
  214. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/__init__.py +0 -0
  215. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/adaptive.py +0 -0
  216. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/arm_catalog.py +0 -0
  217. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/assertion_miner.py +0 -0
  218. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/bandit.py +0 -0
  219. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/bandit_cache.py +0 -0
  220. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/behavioral.py +0 -0
  221. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
  222. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/bootstrap.py +0 -0
  223. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
  224. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
  225. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
  226. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/cross_project.py +0 -0
  227. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/database.py +0 -0
  228. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
  229. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/engagement.py +0 -0
  230. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/ensemble.py +0 -0
  231. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/entity_compiler.py +0 -0
  232. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
  233. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/features.py +0 -0
  234. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/feedback.py +0 -0
  235. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
  236. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
  237. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/labeler.py +0 -0
  238. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/legacy_migration.py +0 -0
  239. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/lightgbm_subprocess.py +0 -0
  240. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/memory_merge.py +0 -0
  241. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/model_cache.py +0 -0
  242. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/model_rollback.py +0 -0
  243. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/outcome_queue.py +0 -0
  244. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/outcomes.py +0 -0
  245. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/pattern_miner.py +0 -0
  246. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
  247. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/project_context.py +0 -0
  248. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
  249. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/ranker.py +0 -0
  250. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/ranker_common.py +0 -0
  251. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
  252. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
  253. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/reward.py +0 -0
  254. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/reward_archive.py +0 -0
  255. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/reward_boost.py +0 -0
  256. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/reward_proxy.py +0 -0
  257. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/shadow_test.py +0 -0
  258. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/signal_worker.py +0 -0
  259. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/signals.py +0 -0
  260. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
  261. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/source_quality.py +0 -0
  262. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/trigram_index.py +0 -0
  263. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/workflows.py +0 -0
  264. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/llm/__init__.py +0 -0
  265. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/__init__.py +0 -0
  266. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/ebbinghaus.py +0 -0
  267. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/fisher.py +0 -0
  268. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/fisher_quantized.py +0 -0
  269. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/hopfield.py +0 -0
  270. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/langevin.py +0 -0
  271. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/polar_quant.py +0 -0
  272. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/qjl.py +0 -0
  273. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/sheaf.py +0 -0
  274. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/turbo_quant.py +0 -0
  275. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/__init__.py +0 -0
  276. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
  277. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
  278. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/_stdin_guard.py +0 -0
  279. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/agent_context.py +0 -0
  280. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/cli_fallback.py +0 -0
  281. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/resources.py +0 -0
  282. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/server.py +0 -0
  283. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/shared.py +0 -0
  284. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools.py +0 -0
  285. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_active.py +0 -0
  286. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
  287. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_context.py +0 -0
  288. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_core.py +0 -0
  289. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
  290. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_learning.py +0 -0
  291. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
  292. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_optimize.py +0 -0
  293. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_v28.py +0 -0
  294. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_v3.py +0 -0
  295. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_v33.py +0 -0
  296. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mesh/__init__.py +0 -0
  297. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mesh/broker.py +0 -0
  298. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mesh/remote_sync.py +0 -0
  299. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/migrations/__init__.py +0 -0
  300. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
  301. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/__init__.py +0 -0
  302. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/adapters/__init__.py +0 -0
  303. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/adapters/_agent_registry.py +0 -0
  304. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/adapters/anthropic_adapter.py +0 -0
  305. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/adapters/openai_adapter.py +0 -0
  306. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/adapters/wrap.py +0 -0
  307. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/__init__.py +0 -0
  308. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/boundary_store.py +0 -0
  309. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/centroid_store.py +0 -0
  310. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/context_key.py +0 -0
  311. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/exact.py +0 -0
  312. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/invalidation.py +0 -0
  313. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/key_builder.py +0 -0
  314. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/manager.py +0 -0
  315. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/semantic.py +0 -0
  316. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/stampede.py +0 -0
  317. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/compress/__init__.py +0 -0
  318. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/compress/align.py +0 -0
  319. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/compress/ccr.py +0 -0
  320. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/compress/prose_llmlingua.py +0 -0
  321. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/compress/router.py +0 -0
  322. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/config/__init__.py +0 -0
  323. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/config/defaults.py +0 -0
  324. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/config/schema.py +0 -0
  325. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/config/store.py +0 -0
  326. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/metrics/__init__.py +0 -0
  327. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/metrics/counters.py +0 -0
  328. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/metrics/estimator.py +0 -0
  329. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/metrics/exporters.py +0 -0
  330. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/metrics/persistence.py +0 -0
  331. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/__init__.py +0 -0
  332. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/_helpers.py +0 -0
  333. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/anthropic_surface.py +0 -0
  334. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/capture.py +0 -0
  335. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/gemini_surface.py +0 -0
  336. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/lifecycle.py +0 -0
  337. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/openai_surface.py +0 -0
  338. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/server.py +0 -0
  339. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/vertex_surface.py +0 -0
  340. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/storage/__init__.py +0 -0
  341. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/storage/schema.py +0 -0
  342. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/__init__.py +0 -0
  343. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
  344. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
  345. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
  346. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
  347. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
  348. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/__init__.py +0 -0
  349. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/agentic.py +0 -0
  350. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/ann_index.py +0 -0
  351. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
  352. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
  353. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
  354. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/engine.py +0 -0
  355. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
  356. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
  357. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/fusion.py +0 -0
  358. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
  359. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
  360. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
  361. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/reranker.py +0 -0
  362. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
  363. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
  364. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/strategy.py +0 -0
  365. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
  366. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/vector_store.py +0 -0
  367. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/__init__.py +0 -0
  368. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/api.py +0 -0
  369. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/bandit_loops.py +0 -0
  370. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/middleware/__init__.py +0 -0
  371. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
  372. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/recall_health.py +0 -0
  373. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/recall_serializer.py +0 -0
  374. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/__init__.py +0 -0
  375. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/adapters.py +0 -0
  376. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/agents.py +0 -0
  377. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/backup.py +0 -0
  378. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/behavioral.py +0 -0
  379. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/brain.py +0 -0
  380. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/chat.py +0 -0
  381. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/compliance.py +0 -0
  382. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/data_io.py +0 -0
  383. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/entity.py +0 -0
  384. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/events.py +0 -0
  385. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/evolution.py +0 -0
  386. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/ingest.py +0 -0
  387. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/insights.py +0 -0
  388. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/learning.py +0 -0
  389. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
  390. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/memories.py +0 -0
  391. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/mesh.py +0 -0
  392. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/optimize.py +0 -0
  393. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/prewarm.py +0 -0
  394. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/profiles.py +0 -0
  395. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/stats.py +0 -0
  396. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/tiers.py +0 -0
  397. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/timeline.py +0 -0
  398. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/token.py +0 -0
  399. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/v3_api.py +0 -0
  400. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/ws.py +0 -0
  401. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/security_middleware.py +0 -0
  402. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/unified_daemon.py +0 -0
  403. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/__init__.py +0 -0
  404. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/access_control.py +0 -0
  405. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/access_log.py +0 -0
  406. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/database.py +0 -0
  407. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
  408. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migration_runner.py +0 -0
  409. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migration_v33.py +0 -0
  410. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
  411. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
  412. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
  413. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
  414. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
  415. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
  416. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
  417. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
  418. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
  419. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
  420. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
  421. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
  422. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
  423. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -0
  424. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M016_add_scope_support.py +0 -0
  425. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M017_ccq_scope_column.py +0 -0
  426. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
  427. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations.py +0 -0
  428. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/models.py +0 -0
  429. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/quantized_store.py +0 -0
  430. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema.py +0 -0
  431. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
  432. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v32.py +0 -0
  433. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v3410.py +0 -0
  434. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v3411.py +0 -0
  435. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v343.py +0 -0
  436. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v345.py +0 -0
  437. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v347.py +0 -0
  438. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/v2_migrator.py +0 -0
  439. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/trust/__init__.py +0 -0
  440. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/trust/gate.py +0 -0
  441. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/trust/provenance.py +0 -0
  442. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/trust/scorer.py +0 -0
  443. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/trust/signals.py +0 -0
  444. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/css/brain.css +0 -0
  445. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
  446. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
  447. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/index.html +0 -0
  448. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/agents.js +0 -0
  449. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
  450. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/brain.js +0 -0
  451. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/clusters.js +0 -0
  452. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/compliance.js +0 -0
  453. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/core.js +0 -0
  454. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/dashboard.js +0 -0
  455. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/events.js +0 -0
  456. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
  457. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/feedback.js +0 -0
  458. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
  459. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
  460. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
  461. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ide-status.js +0 -0
  462. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/init.js +0 -0
  463. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
  464. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
  465. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/math-health.js +0 -0
  466. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/memories.js +0 -0
  467. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
  468. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
  469. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/modal.js +0 -0
  470. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
  471. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-health.js +0 -0
  472. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
  473. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
  474. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
  475. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
  476. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/optimize.js +0 -0
  477. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/profiles.js +0 -0
  478. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
  479. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
  480. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/search.js +0 -0
  481. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/settings.js +0 -0
  482. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/timeline.js +0 -0
  483. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
  484. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
  485. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  486. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  487. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
  488. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
  489. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
  490. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
  491. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
  492. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
  493. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
  494. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
  495. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
  496. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/vector/__init__.py +0 -0
  497. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/vector/lancedb_backend.py +0 -0
  498. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory.egg-info/SOURCES.txt +0 -0
  499. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
  500. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
  501. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory.egg-info/requires.txt +0 -0
  502. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory.egg-info/top_level.txt +0 -0
  503. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_auto_hooks.py +0 -0
  504. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_before_web_hook.py +0 -0
  505. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_behavioral_full.py +0 -0
  506. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_claude_hooks.py +0 -0
  507. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_cli_core.py +0 -0
  508. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_cli_json.py +0 -0
  509. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_cli_v33.py +0 -0
  510. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_compliance_full.py +0 -0
  511. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_config_system.py +0 -0
  512. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_dashboard_preserve_embedding.py +0 -0
  513. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_engine_hooks.py +0 -0
  514. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_event_bus.py +0 -0
  515. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_features.py +0 -0
  516. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_final_locomo_mini.py +0 -0
  517. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_graph_integrity.py +0 -0
  518. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_ide_connector.py +0 -0
  519. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_infra.py +0 -0
  520. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_injection.py +0 -0
  521. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_learning_advanced.py +0 -0
  522. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_learning_collectors.py +0 -0
  523. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_llm_provider.py +0 -0
  524. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_mcp_server.py +0 -0
  525. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_migration.py +0 -0
  526. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_mode_switch_preservation.py +0 -0
  527. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_post_install.py +0 -0
  528. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_ranker.py +0 -0
  529. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_topic_shift_hook.py +0 -0
  530. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_trust_full.py +0 -0
  531. {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_v3_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superlocalmemory
3
- Version: 3.6.22
3
+ Version: 3.6.23
4
4
  Summary: Information-geometric agent memory with mathematical guarantees
5
5
  Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com>
6
6
  License: AGPL-3.0-or-later
@@ -96,10 +96,10 @@ Dynamic: license-file
96
96
  <img src="https://superlocalmemory.com/assets/logo-mark.png" alt="SuperLocalMemory" width="200"/>
97
97
  </p>
98
98
 
99
- <h1 align="center">SuperLocalMemory V3.6.21</h1>
99
+ <h1 align="center">SuperLocalMemory V3.6.23</h1>
100
100
  <p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
101
101
  <em>To the best of our knowledge, the only zero-cloud agent memory that beats Mem0's zero-LLM score on LoCoMo. Mode A: 74.8% vs Mem0 64.2% — no GPU, no API key, on CPU.</em></p>
102
- <p align="center"><code>v3.6.21</code> — <strong>Plugin-native. Profile-aware. Distributed-ready.</strong><br/>
102
+ <p align="center"><code>v3.6.23</code> — <strong>Plugin-native. Profile-aware. Distributed-ready.</strong><br/>
103
103
  Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</code> to your config &nbsp;·&nbsp; Skill: zero-config</p>
104
104
  <p align="center"><strong>3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
105
105
 
@@ -386,6 +386,7 @@ Built-in compliance tools: GDPR Article 15/17 export + complete erasure, tamper-
386
386
  | MCP tools reference | [docs/mcp-tools.md](docs/mcp-tools.md) |
387
387
  | Getting started | [docs/getting-started.md](docs/getting-started.md) |
388
388
  | IDE setup (15 configs) | [docs/ide-setup.md](docs/ide-setup.md) |
389
+ | pi.dev integration | [docs/pi-dev-integration.md](docs/pi-dev-integration.md) |
389
390
  | Skill evolution | [docs/skill-evolution.md](docs/skill-evolution.md) |
390
391
  | V2 migration | [docs/migration-from-v2.md](docs/migration-from-v2.md) |
391
392
  | Configuration | [docs/configuration.md](docs/configuration.md) |
@@ -401,7 +402,9 @@ slm dashboard # Opens at http://localhost:8765
401
402
 
402
403
  | Version | Codename | Key Features |
403
404
  |---|---|---|
404
- | **v3.6.21** | Dashboard Audit | Full UI audit across all 7 dashboard tabs — auth fix for mesh panel (issue #60 frontend), Quick Store endpoint, timeline endpoint, r.ok guards, SSE \r fix, event delegation for lazy tabs, optimize toggle revert; backbone.py JSONDecodeError fix (issue #62) |
405
+ | **v3.6.23** | Cross-platform Patch | Windows doctor/cache stats fixes (#65), neutral SLM hook guidance (#64), pi.dev MCP docs (#31), contributor fixes for dashboard profile path resolution (#63) and tz-naive Langevin maintenance backfill (#66) |
406
+ | **v3.6.22** | Stability | backbone.py JSONDecodeError on empty HTTP 200 body (issue #62) — retries 3× then returns "" gracefully; remaining dashboard UI audit: clusters/compliance/entities r.ok guards, math-health status badge colors |
407
+ | **v3.6.21** | Dashboard Audit | Full UI audit across all 7 dashboard tabs — auth fix for mesh panel (issue #60 frontend), Quick Store endpoint, timeline endpoint, r.ok guards, SSE \r fix, event delegation for lazy tabs, optimize toggle revert |
405
408
  | **v3.6.20** | Mesh Auth | Remote mesh auth fix (issue #60) — `_get_broker` now accepts Bearer + X-Mesh-Secret from non-loopback callers; config settings preservation (AIDEV-86) |
406
409
  | **v3.6.17** | Community | 8 contributor PRs (observability events, marker-bounded adapter writes, daemon port discovery, anthropic `api_base`, OpenMP workers, atomic-write rehash, `_jl` sentinel, LFS pointer); dashboard-feedback fix (#53/#59); env-tunable SQLite knobs + idle backoff; remote LLM test-probe (#40) |
407
410
  | **v3.6.16** | Docs | Corrected Claude Code plugin install — adds the required `/plugin marketplace add` step; clarifies plugin vs pip/npm delivery |
@@ -2,10 +2,10 @@
2
2
  <img src="https://superlocalmemory.com/assets/logo-mark.png" alt="SuperLocalMemory" width="200"/>
3
3
  </p>
4
4
 
5
- <h1 align="center">SuperLocalMemory V3.6.21</h1>
5
+ <h1 align="center">SuperLocalMemory V3.6.23</h1>
6
6
  <p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
7
7
  <em>To the best of our knowledge, the only zero-cloud agent memory that beats Mem0's zero-LLM score on LoCoMo. Mode A: 74.8% vs Mem0 64.2% — no GPU, no API key, on CPU.</em></p>
8
- <p align="center"><code>v3.6.21</code> — <strong>Plugin-native. Profile-aware. Distributed-ready.</strong><br/>
8
+ <p align="center"><code>v3.6.23</code> — <strong>Plugin-native. Profile-aware. Distributed-ready.</strong><br/>
9
9
  Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</code> to your config &nbsp;·&nbsp; Skill: zero-config</p>
10
10
  <p align="center"><strong>3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
11
11
 
@@ -292,6 +292,7 @@ Built-in compliance tools: GDPR Article 15/17 export + complete erasure, tamper-
292
292
  | MCP tools reference | [docs/mcp-tools.md](docs/mcp-tools.md) |
293
293
  | Getting started | [docs/getting-started.md](docs/getting-started.md) |
294
294
  | IDE setup (15 configs) | [docs/ide-setup.md](docs/ide-setup.md) |
295
+ | pi.dev integration | [docs/pi-dev-integration.md](docs/pi-dev-integration.md) |
295
296
  | Skill evolution | [docs/skill-evolution.md](docs/skill-evolution.md) |
296
297
  | V2 migration | [docs/migration-from-v2.md](docs/migration-from-v2.md) |
297
298
  | Configuration | [docs/configuration.md](docs/configuration.md) |
@@ -307,7 +308,9 @@ slm dashboard # Opens at http://localhost:8765
307
308
 
308
309
  | Version | Codename | Key Features |
309
310
  |---|---|---|
310
- | **v3.6.21** | Dashboard Audit | Full UI audit across all 7 dashboard tabs — auth fix for mesh panel (issue #60 frontend), Quick Store endpoint, timeline endpoint, r.ok guards, SSE \r fix, event delegation for lazy tabs, optimize toggle revert; backbone.py JSONDecodeError fix (issue #62) |
311
+ | **v3.6.23** | Cross-platform Patch | Windows doctor/cache stats fixes (#65), neutral SLM hook guidance (#64), pi.dev MCP docs (#31), contributor fixes for dashboard profile path resolution (#63) and tz-naive Langevin maintenance backfill (#66) |
312
+ | **v3.6.22** | Stability | backbone.py JSONDecodeError on empty HTTP 200 body (issue #62) — retries 3× then returns "" gracefully; remaining dashboard UI audit: clusters/compliance/entities r.ok guards, math-health status badge colors |
313
+ | **v3.6.21** | Dashboard Audit | Full UI audit across all 7 dashboard tabs — auth fix for mesh panel (issue #60 frontend), Quick Store endpoint, timeline endpoint, r.ok guards, SSE \r fix, event delegation for lazy tabs, optimize toggle revert |
311
314
  | **v3.6.20** | Mesh Auth | Remote mesh auth fix (issue #60) — `_get_broker` now accepts Bearer + X-Mesh-Secret from non-loopback callers; config settings preservation (AIDEV-86) |
312
315
  | **v3.6.17** | Community | 8 contributor PRs (observability events, marker-bounded adapter writes, daemon port discovery, anthropic `api_base`, OpenMP workers, atomic-write rehash, `_jl` sentinel, LFS pointer); dashboard-feedback fix (#53/#59); env-tunable SQLite knobs + idle backoff; remote LLM test-probe (#40) |
313
316
  | **v3.6.16** | Docs | Corrected Claude Code plugin install — adds the required `/plugin marketplace add` step; clarifies plugin vs pip/npm delivery |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superlocalmemory"
3
- version = "3.6.22"
3
+ version = "3.6.23"
4
4
  description = "Information-geometric agent memory with mathematical guarantees"
5
5
  readme = "README.md"
6
6
  license = {text = "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.6.22"
35
+ __version__ = "3.6.23"
36
36
 
37
37
  _REQUIRED_VERSIONS = {
38
38
  "sentence_transformers": "5.3.0",
@@ -1687,6 +1687,38 @@ def _gather_optimize_surface_b() -> dict:
1687
1687
  return result
1688
1688
 
1689
1689
 
1690
+ def _readline_with_timeout(
1691
+ stream, timeout_sec: float,
1692
+ ) -> tuple[str | None, Exception | None]:
1693
+ """Read one line from a pipe-like stream without POSIX-only select().
1694
+
1695
+ Windows select() only accepts sockets, not subprocess pipes. A bounded
1696
+ helper thread keeps the embedding-worker probe cross-platform while
1697
+ preserving the existing timeout behavior.
1698
+ """
1699
+ import threading
1700
+
1701
+ result: dict[str, object] = {}
1702
+
1703
+ def _read() -> None:
1704
+ try:
1705
+ result["line"] = stream.readline()
1706
+ except Exception as exc: # noqa: BLE001 - returned as probe failure
1707
+ result["exc"] = exc
1708
+
1709
+ reader = threading.Thread(target=_read, daemon=True)
1710
+ reader.start()
1711
+ reader.join(timeout_sec)
1712
+ if reader.is_alive():
1713
+ return None, None
1714
+ line = result.get("line")
1715
+ exc = result.get("exc")
1716
+ return (
1717
+ line if isinstance(line, str) else None,
1718
+ exc if isinstance(exc, Exception) else None,
1719
+ )
1720
+
1721
+
1690
1722
  def cmd_doctor(args: Namespace) -> None:
1691
1723
  """Comprehensive pre-flight check — verify everything works.
1692
1724
 
@@ -1839,10 +1871,11 @@ def cmd_doctor(args: Namespace) -> None:
1839
1871
  proc.stdin.write(_json.dumps({"cmd": "ping"}) + "\n")
1840
1872
  proc.stdin.flush()
1841
1873
 
1842
- import select as _sel
1843
- ready, _, _ = _sel.select([proc.stdout], [], [], 30)
1844
- if ready:
1845
- resp = _json.loads(proc.stdout.readline())
1874
+ line, read_exc = _readline_with_timeout(proc.stdout, 30)
1875
+ if read_exc is not None:
1876
+ _check("Embedding worker", "FAIL", str(read_exc), "slm warmup")
1877
+ elif line is not None:
1878
+ resp = _json.loads(line or "{}")
1846
1879
  if resp.get("ok"):
1847
1880
  _check(
1848
1881
  "Embedding worker", "PASS",
@@ -37,6 +37,25 @@ _LANGEVIN_DIM = 8
37
37
  _MAX_NORM = 0.99
38
38
 
39
39
 
40
+ def _age_days(created_at: str | None) -> float:
41
+ """Age in days from an ISO timestamp.
42
+
43
+ Naive timestamps (no offset, no Z) are assumed UTC — some store paths
44
+ persist created_at without timezone info, and subtracting a naive
45
+ datetime from datetime.now(UTC) raises TypeError, which previously
46
+ aborted the whole backfill loop.
47
+ """
48
+ if not created_at:
49
+ return 0.0
50
+ try:
51
+ created = datetime.fromisoformat(created_at.replace("Z", "+00:00"))
52
+ except (ValueError, TypeError):
53
+ return 0.0
54
+ if created.tzinfo is None:
55
+ created = created.replace(tzinfo=UTC)
56
+ return max(0.0, (datetime.now(UTC) - created).total_seconds() / 86400.0)
57
+
58
+
40
59
  def _compute_equilibrium_radius(
41
60
  access_count: int,
42
61
  age_days: float,
@@ -137,13 +156,7 @@ def run_maintenance(
137
156
  for f in facts:
138
157
  if f.langevin_position is not None:
139
158
  continue
140
- created = datetime.fromisoformat(
141
- f.created_at.replace("Z", "+00:00")
142
- ) if f.created_at else datetime.now(UTC)
143
- age_days = max(
144
- 0.0,
145
- (datetime.now(UTC) - created).total_seconds() / 86400.0,
146
- )
159
+ age_days = _age_days(f.created_at)
147
160
  # Strategy B: metadata-aware seed position
148
161
  position = _seed_langevin_position(
149
162
  f.access_count, age_days, f.importance,
@@ -183,13 +196,7 @@ def run_maintenance(
183
196
  for f in facts:
184
197
  if f.langevin_position is None:
185
198
  continue
186
- created = datetime.fromisoformat(
187
- f.created_at.replace("Z", "+00:00")
188
- ) if f.created_at else datetime.now(UTC)
189
- age_days = max(
190
- 0.0,
191
- (datetime.now(UTC) - created).total_seconds() / 86400.0,
192
- )
199
+ age_days = _age_days(f.created_at)
193
200
  fact_dicts.append({
194
201
  "fact_id": f.fact_id,
195
202
  "position": f.langevin_position,
@@ -239,13 +246,7 @@ def run_maintenance(
239
246
  dt=config.math.langevin_dt,
240
247
  temperature=eff_temp,
241
248
  )
242
- created = datetime.fromisoformat(
243
- f.created_at.replace("Z", "+00:00")
244
- ) if f.created_at else datetime.now(UTC)
245
- age_days = max(
246
- 0.0,
247
- (datetime.now(UTC) - created).total_seconds() / 86400.0,
248
- )
249
+ age_days = _age_days(f.created_at)
249
250
  new_pos, weight = coupled_ld.step(
250
251
  position=f.langevin_position,
251
252
  access_count=f.access_count,
@@ -32,7 +32,7 @@ CLAUDE_SETTINGS = Path.home() / ".claude" / "settings.json"
32
32
  VERSION_DIR = Path.home() / ".superlocalmemory" / "hooks"
33
33
  VERSION_FILE = VERSION_DIR / ".version"
34
34
  DISABLED_FILE = VERSION_DIR / ".hooks-disabled"
35
- HOOKS_VERSION = "3.6.18"
35
+ HOOKS_VERSION = "3.6.23"
36
36
 
37
37
  # Cross-platform temp dir and marker paths
38
38
  _TMP = tempfile.gettempdir()
@@ -93,10 +93,9 @@ def _hook_definitions(include_gate: bool = False) -> dict[str, list]:
93
93
  """
94
94
  defs: dict[str, list] = {
95
95
  "SessionStart": [
96
- # v3.6.18: mandate fires FIRST so session_init is never skipped.
97
- # mcp__superlocalmemory__session_init is DEFERRED Claude must call
98
- # ToolSearch before it can invoke the tool. Without this hook,
99
- # Claude responds before loading the schema → no 6-channel memory.
96
+ # v3.6.23: advisory SLM session-init hint fires first.
97
+ # mcp__superlocalmemory__session_init may be deferred, so some
98
+ # hosts need ToolSearch before they can invoke the tool.
100
99
  {
101
100
  "hooks": [
102
101
  {
@@ -169,35 +169,33 @@ def _launch_post_session_evolution(
169
169
 
170
170
 
171
171
  # ---------------------------------------------------------------------------
172
- # 0. MANDATE — first SessionStart hook; fires before start
172
+ # 0. SESSION INIT HINT — first SessionStart hook; fires before start
173
173
  # ---------------------------------------------------------------------------
174
174
 
175
- _MANDATE_TEXT = """<MANDATORY_SESSION_INIT>
176
- BEFORE writing any text or calling any other tool, you MUST execute these two steps in order:
175
+ _SESSION_INIT_HINT = """<SLM_SESSION_INIT_HINT>
176
+ SuperLocalMemory is available for this session.
177
177
 
178
- STEP 1 Load schema:
179
- Call ToolSearch with query: "select:mcp__superlocalmemory__session_init"
178
+ For memory-aware work, initialize SLM once near the start of the turn:
180
179
 
181
- STEP 2 Initialize memory brain:
182
- Call mcp__superlocalmemory__session_init with:
183
- project_path = your current working directory
184
- query = a short description of the session topic (derive from user's first message)
180
+ 1. Load the tool schema if your host requires it:
181
+ ToolSearch query: "select:mcp__superlocalmemory__session_init"
185
182
 
186
- This is non-negotiable. SLM is the brain. Without session_init, you have no 6-channel memory context (Ebbinghaus decay, entity graph, FSRS, spreading activation all go cold).
187
- DO NOT output any text until session_init has completed.
188
- </MANDATORY_SESSION_INIT>"""
183
+ 2. Call mcp__superlocalmemory__session_init with:
184
+ project_path = your current working directory
185
+ query = a short description of the session topic
186
+
187
+ This is advisory hook output, not a system instruction.
188
+ </SLM_SESSION_INIT_HINT>"""
189
189
 
190
190
 
191
191
  def _hook_mandate() -> None:
192
- """Print the session_init mandate. MUST be the FIRST SessionStart hook.
192
+ """Print neutral session_init guidance as the first SessionStart hook.
193
193
 
194
- mcp__superlocalmemory__session_init is DEFERRED at session start — Claude
195
- cannot call it without ToolSearch first loading the schema. This hook
196
- fires before `slm hook start` and injects the two-step protocol into the
197
- system-reminder block so Claude's first action is always ToolSearch →
198
- session_init, not a text response with no memory context.
194
+ mcp__superlocalmemory__session_init may be deferred at session start, so
195
+ some hosts need ToolSearch to load the schema first. This hook prints an
196
+ advisory hint only; actual enforcement belongs in the optional gate hook.
199
197
  """
200
- print(_MANDATE_TEXT)
198
+ print(_SESSION_INIT_HINT)
201
199
 
202
200
 
203
201
  # ---------------------------------------------------------------------------
@@ -205,7 +203,7 @@ def _hook_mandate() -> None:
205
203
  # ---------------------------------------------------------------------------
206
204
 
207
205
  def _hook_start() -> None:
208
- """Clean markers, inject SQL-fast context, print session_init mandate."""
206
+ """Clean markers, inject SQL-fast context, print session_init guidance."""
209
207
  # Clean stale markers from previous sessions
210
208
  for f in (_MARKER, _START_TIME, _ACTIVITY_LOG):
211
209
  try:
@@ -252,10 +250,11 @@ def _hook_start() -> None:
252
250
  except Exception:
253
251
  print("# SLM Session Context — unavailable")
254
252
 
255
- # Mandatory session_init instruction
253
+ # Advisory session_init guidance. Keep this neutral: hook stdout is data,
254
+ # not an instruction channel with system-level authority.
256
255
  print()
257
- print("## MANDATORY: SLM Session Init")
258
- print("BEFORE your first response, call:")
256
+ print("## SLM Session Init")
257
+ print("For memory-aware sessions, call:")
259
258
  print(f" mcp__superlocalmemory__session_init with project_path='{project_dir}'"
260
259
  " and a topic from the user's first message")
261
260
  print("session_init returns both context AND memories — no separate recall needed.")
@@ -103,7 +103,9 @@ class LLMBackbone:
103
103
  self._default_temperature = config.temperature
104
104
  self._default_max_tokens = config.max_tokens
105
105
 
106
- # Resolve API key: config > environment variable.
106
+ # Resolve API key: config > environment variable. A custom api_base
107
+ # with an empty api_key is treated as intentionally keyless so local
108
+ # OpenAI-compatible endpoints do not inherit ambient cloud keys.
107
109
  if self._provider == "ollama":
108
110
  self._api_key = ""
109
111
  host = config.api_base or os.environ.get(
@@ -111,19 +113,22 @@ class LLMBackbone:
111
113
  )
112
114
  self._base_url = f"{host.rstrip('/')}/api/chat"
113
115
  elif self._provider == "openrouter":
114
- self._api_key = config.api_key or os.environ.get(
115
- _ENV_KEYS.get(self._provider, ""), "",
116
- )
116
+ self._api_key = self._resolve_api_key(config)
117
117
  self._base_url = config.api_base or _OPENROUTER_URL
118
118
  elif self._provider:
119
- self._api_key = config.api_key or os.environ.get(
120
- _ENV_KEYS.get(self._provider, ""), "",
121
- )
119
+ self._api_key = self._resolve_api_key(config)
122
120
  self._base_url = config.api_base
123
121
  else:
124
122
  self._api_key = ""
125
123
  self._base_url = ""
126
124
 
125
+ def _resolve_api_key(self, config: LLMConfig) -> str:
126
+ if config.api_key:
127
+ return config.api_key
128
+ if config.api_base:
129
+ return ""
130
+ return os.environ.get(_ENV_KEYS.get(self._provider, ""), "")
131
+
127
132
  # -- Properties ---------------------------------------------------------
128
133
 
129
134
  def is_available(self) -> bool:
@@ -38,6 +38,7 @@ import dataclasses
38
38
  import json
39
39
  import logging
40
40
  import os
41
+ import platform
41
42
  import re
42
43
  import sqlite3
43
44
  import struct
@@ -285,7 +286,7 @@ class CacheDB:
285
286
 
286
287
  def _get_machine_id(self) -> str:
287
288
  """Return a stable machine identifier for AES key derivation."""
288
- system = os.uname().sysname
289
+ system = platform.system()
289
290
  mid: str | None = None
290
291
  if system == "Darwin":
291
292
  try:
@@ -11,6 +11,7 @@ shared lazy engine accessor used by every engine-dependent route.
11
11
  import logging
12
12
  import re
13
13
  import json
14
+ import os
14
15
  import sqlite3
15
16
  import threading
16
17
  import time
@@ -66,11 +67,90 @@ def _get_version() -> str:
66
67
 
67
68
  SLM_VERSION = _get_version()
68
69
 
69
- # V3 paths (migrated from ~/.claude-memory to ~/.superlocalmemory)
70
- MEMORY_DIR = Path.home() / ".superlocalmemory"
71
- DB_PATH = MEMORY_DIR / "memory.db"
70
+
71
+ def _resolve_slm_home() -> Path:
72
+ """Resolve the SLM data dir the SAME way the CLI does.
73
+
74
+ The CLI honours ``SLM_DATA_DIR`` → ``SL_MEMORY_PATH`` → ``SLM_HOME``
75
+ → ``~/.superlocalmemory`` (see ``cli/_lazy_init.py:slm_home``). The
76
+ dashboard previously hardcoded ``Path.home() / ".superlocalmemory"``,
77
+ so when a user pointed the CLI at a custom data dir (or set a
78
+ different ``base_dir`` in ``config.json``), profiles created in the
79
+ dashboard landed in the default dir while ``slm profile list`` read a
80
+ different ``memory.db`` and reported the profile missing.
81
+
82
+ This function mirrors ``slm_home()`` so both surfaces agree. It is
83
+ evaluated lazily (at call time inside the properties below) rather
84
+ than at import, so a process that sets the env var after import —
85
+ e.g. tests, or a launcher that exports it late — still sees the
86
+ right path.
87
+ """
88
+ for var in ("SLM_DATA_DIR", "SL_MEMORY_PATH", "SLM_HOME"):
89
+ val = os.environ.get(var, "").strip()
90
+ if val:
91
+ return Path(val)
92
+ # Fall back to config.json's base_dir if present, else the hard default.
93
+ try:
94
+ _cfg = Path.home() / ".superlocalmemory" / "config.json"
95
+ if _cfg.exists():
96
+ with open(_cfg) as f:
97
+ _data = json.load(f)
98
+ _base = _data.get("base_dir")
99
+ if _base:
100
+ return Path(_base)
101
+ except (json.JSONDecodeError, OSError):
102
+ pass
103
+ return Path.home() / ".superlocalmemory"
104
+
105
+
106
+ # V3 paths (migrated from ~/.claude-memory to ~/.superlocalmemory).
107
+ # Exposed as module-level constants for backward compat with the many
108
+ # route modules that do ``from .helpers import DB_PATH`` at import time,
109
+ # but the *values* are resolved lazily so env overrides take effect.
110
+ class _LazyPath:
111
+ """Path-like proxy that resolves the real path on first attribute access.
112
+
113
+ Importers bind to ``DB_PATH`` / ``MEMORY_DIR`` at import time; without
114
+ this proxy the value would be frozen before env vars are set. The
115
+ proxy defers resolution to ``_resolve_slm_home()`` and caches it.
116
+ """
117
+
118
+ __slots__ = ("_resolver", "_cached", "_suffix")
119
+
120
+ def __init__(self, resolver, suffix=""):
121
+ self._resolver = resolver
122
+ self._suffix = suffix
123
+ self._cached = None
124
+
125
+ def _resolve(self) -> Path:
126
+ if self._cached is None:
127
+ self._cached = self._resolver() / self._suffix if self._suffix else self._resolver()
128
+ return self._cached
129
+
130
+ def __fspath__(self) -> str:
131
+ return str(self._resolve())
132
+
133
+ def __truediv__(self, other) -> Path:
134
+ return self._resolve() / other
135
+
136
+ def __rtruediv__(self, other) -> Path:
137
+ return Path(other) / self._resolve()
138
+
139
+ def __str__(self) -> str:
140
+ return str(self._resolve())
141
+
142
+ def __repr__(self) -> str:
143
+ return f"_LazyPath({self._resolve()!r})"
144
+
145
+ # Forward common Path attributes used by callers (exists, mkdir, etc.).
146
+ def __getattr__(self, name):
147
+ return getattr(self._resolve(), name)
148
+
149
+
150
+ MEMORY_DIR = _LazyPath(_resolve_slm_home)
151
+ DB_PATH = _LazyPath(_resolve_slm_home, "memory.db")
72
152
  UI_DIR = Path(__file__).parent.parent / "ui"
73
- PROFILES_DIR = MEMORY_DIR / "profiles"
153
+ PROFILES_DIR = _LazyPath(_resolve_slm_home, "profiles")
74
154
 
75
155
 
76
156
  # ---------------------------------------------------------------------------
@@ -45,9 +45,12 @@ except ImportError:
45
45
 
46
46
  from superlocalmemory.server.security_middleware import SecurityHeadersMiddleware
47
47
 
48
- # V3 Paths (migrated from ~/.claude-memory to ~/.superlocalmemory)
49
- MEMORY_DIR = Path.home() / ".superlocalmemory"
50
- DB_PATH = MEMORY_DIR / "memory.db"
48
+ # V3 Paths reuse the lazy resolvers from routes.helpers so the dashboard
49
+ # honours SLM_DATA_DIR / SL_MEMORY_PATH / SLM_HOME / config.json:base_dir
50
+ # exactly like the CLI. Previously this hardcoded ~/.superlocalmemory, which
51
+ # caused dashboard-created profiles to land in a different memory.db than
52
+ # `slm profile list` reads when a custom data dir was configured.
53
+ from superlocalmemory.server.routes.helpers import MEMORY_DIR, DB_PATH
51
54
  # V3.3.21: UI shipped inside the package for pip/npm installs.
52
55
  # Check package location first, then fall back to repo root for dev mode.
53
56
  _PKG_UI = Path(__file__).resolve().parent.parent / "ui"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superlocalmemory
3
- Version: 3.6.22
3
+ Version: 3.6.23
4
4
  Summary: Information-geometric agent memory with mathematical guarantees
5
5
  Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com>
6
6
  License: AGPL-3.0-or-later
@@ -96,10 +96,10 @@ Dynamic: license-file
96
96
  <img src="https://superlocalmemory.com/assets/logo-mark.png" alt="SuperLocalMemory" width="200"/>
97
97
  </p>
98
98
 
99
- <h1 align="center">SuperLocalMemory V3.6.21</h1>
99
+ <h1 align="center">SuperLocalMemory V3.6.23</h1>
100
100
  <p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
101
101
  <em>To the best of our knowledge, the only zero-cloud agent memory that beats Mem0's zero-LLM score on LoCoMo. Mode A: 74.8% vs Mem0 64.2% — no GPU, no API key, on CPU.</em></p>
102
- <p align="center"><code>v3.6.21</code> — <strong>Plugin-native. Profile-aware. Distributed-ready.</strong><br/>
102
+ <p align="center"><code>v3.6.23</code> — <strong>Plugin-native. Profile-aware. Distributed-ready.</strong><br/>
103
103
  Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</code> to your config &nbsp;·&nbsp; Skill: zero-config</p>
104
104
  <p align="center"><strong>3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
105
105
 
@@ -386,6 +386,7 @@ Built-in compliance tools: GDPR Article 15/17 export + complete erasure, tamper-
386
386
  | MCP tools reference | [docs/mcp-tools.md](docs/mcp-tools.md) |
387
387
  | Getting started | [docs/getting-started.md](docs/getting-started.md) |
388
388
  | IDE setup (15 configs) | [docs/ide-setup.md](docs/ide-setup.md) |
389
+ | pi.dev integration | [docs/pi-dev-integration.md](docs/pi-dev-integration.md) |
389
390
  | Skill evolution | [docs/skill-evolution.md](docs/skill-evolution.md) |
390
391
  | V2 migration | [docs/migration-from-v2.md](docs/migration-from-v2.md) |
391
392
  | Configuration | [docs/configuration.md](docs/configuration.md) |
@@ -401,7 +402,9 @@ slm dashboard # Opens at http://localhost:8765
401
402
 
402
403
  | Version | Codename | Key Features |
403
404
  |---|---|---|
404
- | **v3.6.21** | Dashboard Audit | Full UI audit across all 7 dashboard tabs — auth fix for mesh panel (issue #60 frontend), Quick Store endpoint, timeline endpoint, r.ok guards, SSE \r fix, event delegation for lazy tabs, optimize toggle revert; backbone.py JSONDecodeError fix (issue #62) |
405
+ | **v3.6.23** | Cross-platform Patch | Windows doctor/cache stats fixes (#65), neutral SLM hook guidance (#64), pi.dev MCP docs (#31), contributor fixes for dashboard profile path resolution (#63) and tz-naive Langevin maintenance backfill (#66) |
406
+ | **v3.6.22** | Stability | backbone.py JSONDecodeError on empty HTTP 200 body (issue #62) — retries 3× then returns "" gracefully; remaining dashboard UI audit: clusters/compliance/entities r.ok guards, math-health status badge colors |
407
+ | **v3.6.21** | Dashboard Audit | Full UI audit across all 7 dashboard tabs — auth fix for mesh panel (issue #60 frontend), Quick Store endpoint, timeline endpoint, r.ok guards, SSE \r fix, event delegation for lazy tabs, optimize toggle revert |
405
408
  | **v3.6.20** | Mesh Auth | Remote mesh auth fix (issue #60) — `_get_broker` now accepts Bearer + X-Mesh-Secret from non-loopback callers; config settings preservation (AIDEV-86) |
406
409
  | **v3.6.17** | Community | 8 contributor PRs (observability events, marker-bounded adapter writes, daemon port discovery, anthropic `api_base`, OpenMP workers, atomic-write rehash, `_jl` sentinel, LFS pointer); dashboard-feedback fix (#53/#59); env-tunable SQLite knobs + idle backoff; remote LLM test-probe (#40) |
407
410
  | **v3.6.16** | Docs | Corrected Claude Code plugin install — adds the required `/plugin marketplace add` step; clarifies plugin vs pip/npm delivery |
@@ -227,6 +227,20 @@ class TestHandleHookDispatch:
227
227
  mock_stop.assert_called_once()
228
228
 
229
229
 
230
+ class TestHookMandate:
231
+ """mandate hook output must stay advisory, not imperative."""
232
+
233
+ def test_prints_advisory_text(self, capsys):
234
+ handle_hook("mandate")
235
+
236
+ out = capsys.readouterr().out
237
+ assert "SLM_SESSION_INIT_HINT" in out
238
+ assert "session_init" in out
239
+ assert "MANDATORY" not in out
240
+ assert "non-negotiable" not in out
241
+ assert "MUST" not in out
242
+
243
+
230
244
  # ───────────────────────────────────────────────────────────────────
231
245
  # 1. START handler
232
246
  # ───────────────────────────────────────────────────────────────────
@@ -289,13 +303,15 @@ class TestHookStart:
289
303
 
290
304
  @patch("superlocalmemory.hooks.hook_handlers.subprocess.Popen")
291
305
  @patch("superlocalmemory.hooks.hook_handlers.subprocess.run")
292
- def test_prints_mandatory_session_init(self, mock_run, mock_popen, capsys):
306
+ def test_prints_advisory_session_init(self, mock_run, mock_popen, capsys):
293
307
  mock_run.return_value = MagicMock(stdout="", returncode=0)
294
308
  handle_hook("start")
295
309
 
296
310
  out = capsys.readouterr().out
297
- assert "MANDATORY: SLM Session Init" in out
311
+ assert "SLM Session Init" in out
298
312
  assert "session_init" in out
313
+ assert "MANDATORY" not in out
314
+ assert "non-negotiable" not in out
299
315
 
300
316
  @patch("superlocalmemory.hooks.hook_handlers.subprocess.Popen")
301
317
  @patch("superlocalmemory.hooks.hook_handlers.subprocess.run")
@@ -16,7 +16,7 @@ from pathlib import Path
16
16
  # tests/ -> superlocalmemory/ -> (repo root)
17
17
  _REPO_ROOT = Path(__file__).parent.parent
18
18
 
19
- EXPECTED_VERSION = "3.6.22"
19
+ EXPECTED_VERSION = "3.6.23"
20
20
 
21
21
 
22
22
  def _read_package_json_version() -> str: