superlocalmemory 3.5.5__tar.gz → 3.5.7__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 (471) hide show
  1. {superlocalmemory-3.5.5/src/superlocalmemory.egg-info → superlocalmemory-3.5.7}/PKG-INFO +1 -1
  2. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/pyproject.toml +1 -1
  3. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/__init__.py +1 -1
  4. superlocalmemory-3.5.7/src/superlocalmemory/learning/lightgbm_subprocess.py +236 -0
  5. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/learning.py +20 -4
  6. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/v3_api.py +28 -6
  7. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/unified_daemon.py +10 -1
  8. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7/src/superlocalmemory.egg-info}/PKG-INFO +1 -1
  9. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory.egg-info/SOURCES.txt +1 -0
  10. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/AUTHORS.md +0 -0
  11. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/LICENSE +0 -0
  12. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/NOTICE +0 -0
  13. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/README.md +0 -0
  14. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/setup.cfg +0 -0
  15. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/__init__.py +0 -0
  16. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
  17. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/signer.py +0 -0
  18. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/watermark.py +0 -0
  19. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/__init__.py +0 -0
  20. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/commands.py +0 -0
  21. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/context_commands.py +0 -0
  22. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/daemon.py +0 -0
  23. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/db_migrate.py +0 -0
  24. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
  25. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/escape_hatch.py +0 -0
  26. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
  27. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/json_output.py +0 -0
  28. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/main.py +0 -0
  29. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
  30. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/pending_store.py +0 -0
  31. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/post_install.py +0 -0
  32. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/service_installer.py +0 -0
  33. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/setup_wizard.py +0 -0
  34. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/version_banner.py +0 -0
  35. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
  36. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/__init__.py +0 -0
  37. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
  38. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
  39. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
  40. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
  41. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
  42. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
  43. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
  44. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/changes.py +0 -0
  45. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/communities.py +0 -0
  46. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/config.py +0 -0
  47. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/database.py +0 -0
  48. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
  49. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
  50. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
  51. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/flows.py +0 -0
  52. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
  53. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
  54. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/graph_store.py +0 -0
  55. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/incremental.py +0 -0
  56. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/models.py +0 -0
  57. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/parser.py +0 -0
  58. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/resolver.py +0 -0
  59. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/search.py +0 -0
  60. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/service.py +0 -0
  61. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/watcher.py +0 -0
  62. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/__init__.py +0 -0
  63. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/abac.py +0 -0
  64. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/audit.py +0 -0
  65. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
  66. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/gdpr.py +0 -0
  67. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/lifecycle.py +0 -0
  68. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/retention.py +0 -0
  69. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/scheduler.py +0 -0
  70. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/__init__.py +0 -0
  71. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/backend_orchestrator.py +0 -0
  72. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/clock_monitor.py +0 -0
  73. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/config.py +0 -0
  74. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/consolidation_engine.py +0 -0
  75. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/context_cache.py +0 -0
  76. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/db_pool.py +0 -0
  77. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/embedding_worker.py +0 -0
  78. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/embeddings.py +0 -0
  79. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/engine.py +0 -0
  80. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/engine_capabilities.py +0 -0
  81. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/engine_lock.py +0 -0
  82. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/engine_wiring.py +0 -0
  83. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/error_catalog.py +0 -0
  84. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/error_envelope.py +0 -0
  85. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/fact_consolidator.py +0 -0
  86. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/file_lock.py +0 -0
  87. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/graph_analyzer.py +0 -0
  88. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/graph_pruner.py +0 -0
  89. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/health_monitor.py +0 -0
  90. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/hooks.py +0 -0
  91. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/injection.py +0 -0
  92. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/loop_watchdog.py +0 -0
  93. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/maintenance.py +0 -0
  94. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
  95. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/modes.py +0 -0
  96. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/ollama_embedder.py +0 -0
  97. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/platform_utils.py +0 -0
  98. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/priority_queue.py +0 -0
  99. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/profiles.py +0 -0
  100. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/pruning_engine.py +0 -0
  101. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/queue_consumer.py +0 -0
  102. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
  103. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/ram_lock.py +0 -0
  104. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/rate_limit.py +0 -0
  105. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/recall_gate.py +0 -0
  106. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/recall_pipeline.py +0 -0
  107. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/recall_queue.py +0 -0
  108. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/recall_worker.py +0 -0
  109. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/registry.py +0 -0
  110. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/reranker_worker.py +0 -0
  111. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/safe_fs.py +0 -0
  112. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/security_primitives.py +0 -0
  113. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/shadow_router.py +0 -0
  114. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/slm_disabled.py +0 -0
  115. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/slmignore.py +0 -0
  116. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/store_pipeline.py +0 -0
  117. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/summarizer.py +0 -0
  118. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/tier_manager.py +0 -0
  119. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/topic_signature.py +0 -0
  120. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/worker_pool.py +0 -0
  121. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/dynamics/__init__.py +0 -0
  122. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
  123. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
  124. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
  125. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
  126. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/__init__.py +0 -0
  127. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/auto_linker.py +0 -0
  128. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
  129. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/consolidator.py +0 -0
  130. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/context_generator.py +0 -0
  131. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/emotional.py +0 -0
  132. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
  133. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
  134. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
  135. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/foresight.py +0 -0
  136. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/graph_builder.py +0 -0
  137. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/observation_builder.py +0 -0
  138. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/scene_builder.py +0 -0
  139. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/signal_inference.py +0 -0
  140. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
  141. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
  142. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/type_router.py +0 -0
  143. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/__init__.py +0 -0
  144. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
  145. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/budget.py +0 -0
  146. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/evolution_store.py +0 -0
  147. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
  148. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
  149. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
  150. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/triggers.py +0 -0
  151. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/types.py +0 -0
  152. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/graph/__init__.py +0 -0
  153. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/graph/cozo_backend.py +0 -0
  154. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/__init__.py +0 -0
  155. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
  156. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/adapter_base.py +0 -0
  157. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
  158. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/auto_capture.py +0 -0
  159. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
  160. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
  161. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/auto_recall.py +0 -0
  162. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
  163. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
  164. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
  165. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/context_payload.py +0 -0
  166. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
  167. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
  168. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
  169. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
  170. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
  171. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/ide_connector.py +0 -0
  172. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
  173. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
  174. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
  175. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/rules_engine.py +0 -0
  176. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/session_registry.py +0 -0
  177. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
  178. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/sync_loop.py +0 -0
  179. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
  180. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
  181. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
  182. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/__init__.py +0 -0
  183. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/auth_middleware.py +0 -0
  184. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/backup.py +0 -0
  185. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/cache_manager.py +0 -0
  186. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/cloud_backup.py +0 -0
  187. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/event_bus.py +0 -0
  188. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
  189. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/pid_manager.py +0 -0
  190. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/process_reaper.py +0 -0
  191. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/rate_limiter.py +0 -0
  192. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
  193. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/__init__.py +0 -0
  194. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
  195. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
  196. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
  197. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/credentials.py +0 -0
  198. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
  199. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/parsers.py +0 -0
  200. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
  201. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/__init__.py +0 -0
  202. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/adaptive.py +0 -0
  203. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/arm_catalog.py +0 -0
  204. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/assertion_miner.py +0 -0
  205. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/bandit.py +0 -0
  206. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/bandit_cache.py +0 -0
  207. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/behavioral.py +0 -0
  208. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
  209. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/bootstrap.py +0 -0
  210. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
  211. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
  212. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
  213. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/cross_project.py +0 -0
  214. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/database.py +0 -0
  215. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
  216. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/engagement.py +0 -0
  217. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/ensemble.py +0 -0
  218. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/entity_compiler.py +0 -0
  219. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
  220. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/features.py +0 -0
  221. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/feedback.py +0 -0
  222. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
  223. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
  224. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/labeler.py +0 -0
  225. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/legacy_migration.py +0 -0
  226. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/memory_merge.py +0 -0
  227. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/model_cache.py +0 -0
  228. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/model_rollback.py +0 -0
  229. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/outcome_queue.py +0 -0
  230. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/outcomes.py +0 -0
  231. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/pattern_miner.py +0 -0
  232. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
  233. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/project_context.py +0 -0
  234. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
  235. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/ranker.py +0 -0
  236. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/ranker_common.py +0 -0
  237. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
  238. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
  239. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/reward.py +0 -0
  240. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/reward_archive.py +0 -0
  241. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/reward_boost.py +0 -0
  242. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/reward_proxy.py +0 -0
  243. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/shadow_test.py +0 -0
  244. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/signal_worker.py +0 -0
  245. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/signals.py +0 -0
  246. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
  247. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/source_quality.py +0 -0
  248. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/trigram_index.py +0 -0
  249. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/workflows.py +0 -0
  250. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/llm/__init__.py +0 -0
  251. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/llm/backbone.py +0 -0
  252. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/__init__.py +0 -0
  253. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/ebbinghaus.py +0 -0
  254. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/fisher.py +0 -0
  255. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/fisher_quantized.py +0 -0
  256. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/hopfield.py +0 -0
  257. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/langevin.py +0 -0
  258. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/polar_quant.py +0 -0
  259. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/qjl.py +0 -0
  260. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/sheaf.py +0 -0
  261. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/turbo_quant.py +0 -0
  262. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/__init__.py +0 -0
  263. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
  264. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
  265. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/resources.py +0 -0
  266. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/server.py +0 -0
  267. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/shared.py +0 -0
  268. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools.py +0 -0
  269. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_active.py +0 -0
  270. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
  271. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_context.py +0 -0
  272. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_core.py +0 -0
  273. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
  274. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_learning.py +0 -0
  275. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
  276. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_v28.py +0 -0
  277. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_v3.py +0 -0
  278. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_v33.py +0 -0
  279. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mesh/__init__.py +0 -0
  280. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mesh/broker.py +0 -0
  281. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mesh/remote_sync.py +0 -0
  282. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/migrations/__init__.py +0 -0
  283. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
  284. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/__init__.py +0 -0
  285. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
  286. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
  287. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
  288. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
  289. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
  290. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/__init__.py +0 -0
  291. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/agentic.py +0 -0
  292. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/ann_index.py +0 -0
  293. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
  294. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
  295. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
  296. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/engine.py +0 -0
  297. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
  298. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
  299. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/fusion.py +0 -0
  300. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
  301. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
  302. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
  303. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/reranker.py +0 -0
  304. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
  305. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
  306. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/strategy.py +0 -0
  307. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
  308. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/vector_store.py +0 -0
  309. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/__init__.py +0 -0
  310. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/api.py +0 -0
  311. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/bandit_loops.py +0 -0
  312. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/middleware/__init__.py +0 -0
  313. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
  314. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/__init__.py +0 -0
  315. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/adapters.py +0 -0
  316. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/agents.py +0 -0
  317. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/backup.py +0 -0
  318. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/behavioral.py +0 -0
  319. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/brain.py +0 -0
  320. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/chat.py +0 -0
  321. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/compliance.py +0 -0
  322. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/data_io.py +0 -0
  323. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/entity.py +0 -0
  324. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/events.py +0 -0
  325. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/evolution.py +0 -0
  326. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/helpers.py +0 -0
  327. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/ingest.py +0 -0
  328. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/insights.py +0 -0
  329. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
  330. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/memories.py +0 -0
  331. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/mesh.py +0 -0
  332. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/prewarm.py +0 -0
  333. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/profiles.py +0 -0
  334. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/stats.py +0 -0
  335. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/tiers.py +0 -0
  336. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/timeline.py +0 -0
  337. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/token.py +0 -0
  338. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/ws.py +0 -0
  339. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/security_middleware.py +0 -0
  340. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/ui.py +0 -0
  341. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
  342. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
  343. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
  344. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
  345. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
  346. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
  347. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
  348. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/__init__.py +0 -0
  349. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/access_control.py +0 -0
  350. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/access_log.py +0 -0
  351. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/database.py +0 -0
  352. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
  353. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migration_runner.py +0 -0
  354. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migration_v33.py +0 -0
  355. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
  356. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
  357. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
  358. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
  359. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
  360. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
  361. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
  362. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
  363. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
  364. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
  365. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
  366. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
  367. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
  368. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -0
  369. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
  370. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations.py +0 -0
  371. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/models.py +0 -0
  372. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/quantized_store.py +0 -0
  373. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema.py +0 -0
  374. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
  375. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v32.py +0 -0
  376. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v3410.py +0 -0
  377. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v3411.py +0 -0
  378. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v343.py +0 -0
  379. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v345.py +0 -0
  380. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v347.py +0 -0
  381. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/v2_migrator.py +0 -0
  382. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/trust/__init__.py +0 -0
  383. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/trust/gate.py +0 -0
  384. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/trust/provenance.py +0 -0
  385. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/trust/scorer.py +0 -0
  386. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/trust/signals.py +0 -0
  387. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/css/brain.css +0 -0
  388. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
  389. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
  390. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/index.html +0 -0
  391. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/agents.js +0 -0
  392. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
  393. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/brain.js +0 -0
  394. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/clusters.js +0 -0
  395. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/compliance.js +0 -0
  396. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/core.js +0 -0
  397. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/dashboard.js +0 -0
  398. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/events.js +0 -0
  399. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
  400. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/feedback.js +0 -0
  401. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
  402. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
  403. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
  404. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ide-status.js +0 -0
  405. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/init.js +0 -0
  406. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
  407. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
  408. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/math-health.js +0 -0
  409. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/memories.js +0 -0
  410. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
  411. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
  412. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/modal.js +0 -0
  413. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
  414. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-health.js +0 -0
  415. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
  416. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
  417. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
  418. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
  419. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/profiles.js +0 -0
  420. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
  421. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
  422. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/search.js +0 -0
  423. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/settings.js +0 -0
  424. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/timeline.js +0 -0
  425. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
  426. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
  427. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  428. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  429. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
  430. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
  431. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
  432. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
  433. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
  434. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
  435. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
  436. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
  437. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
  438. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/vector/__init__.py +0 -0
  439. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/vector/lancedb_backend.py +0 -0
  440. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
  441. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
  442. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory.egg-info/requires.txt +0 -0
  443. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory.egg-info/top_level.txt +0 -0
  444. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_auto_hooks.py +0 -0
  445. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_before_web_hook.py +0 -0
  446. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_behavioral_full.py +0 -0
  447. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_claude_hooks.py +0 -0
  448. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_cli.py +0 -0
  449. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_cli_json.py +0 -0
  450. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_cli_v33.py +0 -0
  451. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_compliance_full.py +0 -0
  452. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_config_system.py +0 -0
  453. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_engine_hooks.py +0 -0
  454. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_event_bus.py +0 -0
  455. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_features.py +0 -0
  456. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_final_locomo_mini.py +0 -0
  457. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_hook_handlers.py +0 -0
  458. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_ide_connector.py +0 -0
  459. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_infra.py +0 -0
  460. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_injection.py +0 -0
  461. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_learning_advanced.py +0 -0
  462. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_learning_collectors.py +0 -0
  463. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_llm_provider.py +0 -0
  464. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_mcp_server.py +0 -0
  465. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_migration.py +0 -0
  466. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_mode_switch_preservation.py +0 -0
  467. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_post_install.py +0 -0
  468. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_ranker.py +0 -0
  469. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_topic_shift_hook.py +0 -0
  470. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_trust_full.py +0 -0
  471. {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_v3_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superlocalmemory
3
- Version: 3.5.5
3
+ Version: 3.5.7
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superlocalmemory"
3
- version = "3.5.5"
3
+ version = "3.5.7"
4
4
  description = "Information-geometric agent memory with mathematical guarantees"
5
5
  readme = "README.md"
6
6
  license = {text = "AGPL-3.0-or-later"}
@@ -28,7 +28,7 @@ if "OMP_NUM_THREADS" not in os.environ:
28
28
  os.environ["OMP_NUM_THREADS"] = "2"
29
29
  # ---------------------------------------------------------------------------
30
30
 
31
- __version__ = "3.4.64"
31
+ __version__ = "3.5.7"
32
32
 
33
33
  _REQUIRED_VERSIONS = {
34
34
  "sentence_transformers": "5.3.0",
@@ -0,0 +1,236 @@
1
+ # Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar
2
+ # Licensed under AGPL-3.0-or-later - see LICENSE file
3
+ # Part of SuperLocalMemory V3 | https://qualixar.com | https://varunpratap.com
4
+
5
+ """Isolated LightGBM work (retrain + consolidation) — OpenMP-crash guard.
6
+
7
+ **Why this exists** — the unified daemon serves the HTTP API in-process and,
8
+ by then, has already loaded PyTorch's OpenMP runtime (``torch/lib/libomp.dylib``)
9
+ with *warm* worker threads (the cross-encoder reranker + embedding warm-up at
10
+ startup). Any code path that imports ``lightgbm`` in that same process loads a
11
+ *second* OpenMP runtime — the Homebrew ``libomp.dylib`` that
12
+ ``lib_lightgbm.dylib`` links against — which corrupts the shared ``__kmp``
13
+ global state and SIGSEGVs a pre-existing torch OMP worker thread. That
14
+ hard-crashes the whole daemon (observed on macOS / Apple Silicon;
15
+ ``DiagnosticReports/Python-*.ips`` shows ``libomp.dylib __kmp_launch_worker``).
16
+
17
+ Two in-daemon entry points reach LightGBM training:
18
+ * ``POST /api/learning/retrain`` → legacy ``_retrain_ranker_impl``;
19
+ * ``POST /api/v3/learning/consolidate`` → ``ConsolidationWorker.run`` whose
20
+ step 5 trains via the online ``_run_shadow_cycle`` (active model) or the
21
+ legacy cold-start path.
22
+
23
+ Both are funnelled through this module so LightGBM only ever trains in a
24
+ **fresh subprocess** that never runs a torch tensor op — torch's OMP pool stays
25
+ dormant there and lightgbm's runtime is the only active one. The mechanism
26
+ mirrors the existing ``embedding_worker`` / ``reranker_worker`` isolation.
27
+
28
+ Spawned via :func:`run_retrain_isolated` / :func:`run_consolidation_isolated`,
29
+ which use a ``python -c`` bootstrap that imports lightgbm BEFORE the
30
+ ``superlocalmemory`` package. That ordering is load-bearing: importing the
31
+ package transitively pulls in torch, and torch-OMP-first-then-lightgbm is
32
+ exactly the sequence that segfaults. A plain ``python -m
33
+ superlocalmemory.learning.lightgbm_subprocess`` would run the package
34
+ ``__init__`` (torch) first and crash — do not invoke it that way.
35
+
36
+ The child emits a single JSON line on stdout — ``{"error": str|null, ...}`` —
37
+ plus a task payload (``trained`` for retrain, ``stats`` for consolidate).
38
+ Exit 0 = ran to completion; non-zero = handled failure. Either way the parent
39
+ (the daemon) keeps running.
40
+ """
41
+
42
+ from __future__ import annotations
43
+
44
+ import argparse
45
+ import json
46
+ import logging
47
+ import subprocess
48
+ import sys
49
+ from pathlib import Path
50
+
51
+ logger = logging.getLogger(__name__)
52
+
53
+ # Wall-clock ceilings. A retrain is 50 boosting rounds on ≤2000 rows (seconds);
54
+ # a full consolidation cycle also decays/dedups/mines/graph-analyses, so it
55
+ # gets more headroom.
56
+ RETRAIN_TIMEOUT_SEC = 300
57
+ CONSOLIDATE_TIMEOUT_SEC = 600
58
+
59
+
60
+ # ---------------------------------------------------------------------------
61
+ # Child-side task implementations (run in the isolated subprocess).
62
+ # ---------------------------------------------------------------------------
63
+
64
+ def _retrain(learning_db: str, profile_id: str, *, include_synthetic: bool) -> bool:
65
+ """Legacy ranker retrain in this (lightgbm-first) process. Returns trained."""
66
+ import lightgbm # noqa: F401 (import-order side effect is intentional)
67
+
68
+ from superlocalmemory.learning.ranker_retrain_legacy import (
69
+ _retrain_ranker_impl,
70
+ )
71
+
72
+ return bool(
73
+ _retrain_ranker_impl(
74
+ learning_db, profile_id, include_synthetic=include_synthetic,
75
+ )
76
+ )
77
+
78
+
79
+ def _consolidate(
80
+ memory_db: str, learning_db: str, profile_id: str, *, dry_run: bool,
81
+ ) -> dict:
82
+ """Full consolidation cycle (incl. step-5 LightGBM training). Returns stats."""
83
+ import lightgbm # noqa: F401 (import-order side effect is intentional)
84
+
85
+ from superlocalmemory.learning.consolidation_worker import (
86
+ ConsolidationWorker,
87
+ )
88
+
89
+ worker = ConsolidationWorker(memory_db, learning_db)
90
+ return worker.run(profile_id, dry_run=dry_run)
91
+
92
+
93
+ def _emit(obj: dict) -> None:
94
+ """Write the verdict as a single JSON line (default=str for safety)."""
95
+ sys.stdout.write(json.dumps(obj, default=str) + "\n")
96
+ sys.stdout.flush()
97
+
98
+
99
+ def main(argv: list[str] | None = None) -> int:
100
+ parser = argparse.ArgumentParser(prog="slm-lightgbm-subprocess")
101
+ parser.add_argument("--task", choices=["retrain", "consolidate"], default="retrain")
102
+ parser.add_argument("--learning-db", required=True)
103
+ parser.add_argument("--memory-db")
104
+ parser.add_argument("--profile", default="default")
105
+ parser.add_argument("--include-synthetic", action="store_true")
106
+ parser.add_argument("--dry-run", action="store_true")
107
+ args = parser.parse_args(argv)
108
+
109
+ result: dict = {"error": None}
110
+ try:
111
+ if args.task == "retrain":
112
+ result["trained"] = _retrain(
113
+ args.learning_db, args.profile,
114
+ include_synthetic=args.include_synthetic,
115
+ )
116
+ else:
117
+ if not args.memory_db:
118
+ raise ValueError("--memory-db is required for the consolidate task")
119
+ result["stats"] = _consolidate(
120
+ args.memory_db, args.learning_db, args.profile,
121
+ dry_run=args.dry_run,
122
+ )
123
+ except Exception as exc: # noqa: BLE001
124
+ result["error"] = f"{type(exc).__name__}: {exc}"
125
+ _emit(result)
126
+ return 1
127
+
128
+ _emit(result)
129
+ return 0
130
+
131
+
132
+ # ---------------------------------------------------------------------------
133
+ # Caller-side helpers — spawn the child in an isolated process.
134
+ # ---------------------------------------------------------------------------
135
+
136
+ def _run_isolated(task_args: list[str], *, timeout_sec: int) -> dict:
137
+ """Spawn the child with lightgbm imported first; return its JSON verdict.
138
+
139
+ Never raises for the expected failure modes (non-zero exit, timeout,
140
+ native crash with no JSON) — encodes them in an ``error`` key so the
141
+ calling daemon stays up no matter what.
142
+ """
143
+ # The leading ``import lightgbm`` is load-bearing: it must run BEFORE the
144
+ # superlocalmemory package (which transitively imports torch). ``-c`` is
145
+ # the only way to guarantee that ordering — ``-m superlocalmemory.…`` runs
146
+ # the package __init__ (torch) first and would reintroduce the crash.
147
+ bootstrap = (
148
+ "import lightgbm; "
149
+ "from superlocalmemory.learning.lightgbm_subprocess import main; "
150
+ "raise SystemExit(main())"
151
+ )
152
+ cmd = [sys.executable, "-c", bootstrap, *task_args]
153
+
154
+ try:
155
+ proc = subprocess.run(
156
+ cmd,
157
+ capture_output=True,
158
+ text=True,
159
+ timeout=timeout_sec,
160
+ check=False,
161
+ )
162
+ except subprocess.TimeoutExpired:
163
+ return {"error": f"timed out after {timeout_sec}s"}
164
+ except Exception as exc: # noqa: BLE001
165
+ return {"error": f"spawn failed: {exc}"}
166
+
167
+ # The verdict is the last JSON line on stdout. Parse defensively — a native
168
+ # crash in the child would leave no JSON, which we surface plainly.
169
+ for line in reversed((proc.stdout or "").splitlines()):
170
+ line = line.strip()
171
+ if not line:
172
+ continue
173
+ try:
174
+ return json.loads(line)
175
+ except ValueError:
176
+ continue
177
+
178
+ tail = (proc.stderr or "").strip()[-500:]
179
+ return {
180
+ "error": (
181
+ f"subprocess produced no verdict (exit={proc.returncode}). "
182
+ f"stderr tail: {tail}"
183
+ ),
184
+ }
185
+
186
+
187
+ def run_retrain_isolated(
188
+ learning_db: str | Path,
189
+ profile_id: str,
190
+ *,
191
+ include_synthetic: bool = False,
192
+ timeout_sec: int = RETRAIN_TIMEOUT_SEC,
193
+ ) -> dict:
194
+ """Train the ranker in a subprocess. Returns ``{"trained": bool, "error": ...}``."""
195
+ args = [
196
+ "--task", "retrain",
197
+ "--learning-db", str(learning_db),
198
+ "--profile", profile_id,
199
+ ]
200
+ if include_synthetic:
201
+ args.append("--include-synthetic")
202
+ verdict = _run_isolated(args, timeout_sec=timeout_sec)
203
+ verdict.setdefault("trained", False)
204
+ verdict.setdefault("error", None)
205
+ return verdict
206
+
207
+
208
+ def run_consolidation_isolated(
209
+ memory_db: str | Path,
210
+ learning_db: str | Path,
211
+ profile_id: str,
212
+ *,
213
+ dry_run: bool = False,
214
+ timeout_sec: int = CONSOLIDATE_TIMEOUT_SEC,
215
+ ) -> dict:
216
+ """Run the full consolidation cycle in a subprocess (its step-5 training
217
+ would otherwise crash the torch-warm daemon).
218
+
219
+ Returns ``{"stats": dict|None, "error": str|None}``.
220
+ """
221
+ args = [
222
+ "--task", "consolidate",
223
+ "--memory-db", str(memory_db),
224
+ "--learning-db", str(learning_db),
225
+ "--profile", profile_id,
226
+ ]
227
+ if dry_run:
228
+ args.append("--dry-run")
229
+ verdict = _run_isolated(args, timeout_sec=timeout_sec)
230
+ verdict.setdefault("stats", None)
231
+ verdict.setdefault("error", None)
232
+ return verdict
233
+
234
+
235
+ if __name__ == "__main__":
236
+ raise SystemExit(main())
@@ -15,6 +15,7 @@ from datetime import datetime, timezone
15
15
  from pathlib import Path
16
16
 
17
17
  from fastapi import APIRouter
18
+ from fastapi.concurrency import run_in_threadpool
18
19
 
19
20
  from .helpers import get_active_profile, MEMORY_DIR
20
21
 
@@ -597,16 +598,31 @@ async def learning_retrain(data: dict | None = None):
597
598
  data and data.get("include_synthetic")
598
599
  ) if isinstance(data, dict) else False
599
600
  try:
600
- from superlocalmemory.learning.consolidation_worker import (
601
- _retrain_ranker_impl,
601
+ # Train OUT OF PROCESS. The daemon already has torch's OpenMP runtime
602
+ # loaded with warm worker threads; importing lightgbm in-process loads
603
+ # a second libomp and SIGSEGVs the whole daemon (see
604
+ # retrain_subprocess module docstring). Isolation is the fix.
605
+ from superlocalmemory.learning.lightgbm_subprocess import (
606
+ run_retrain_isolated,
602
607
  )
603
608
  profile_id = get_active_profile() or "default"
604
- trained = _retrain_ranker_impl(
609
+ result = await run_in_threadpool(
610
+ run_retrain_isolated,
605
611
  LEARNING_DB,
606
612
  profile_id,
607
613
  include_synthetic=include_synthetic,
608
614
  )
609
- if trained:
615
+ if result.get("error"):
616
+ logger.error("learning_retrain failed: %s", result["error"])
617
+ return {"success": False, "error": result["error"]}
618
+ if result.get("trained"):
619
+ # Drop the cached model so the next recall reloads the freshly
620
+ # trained one the subprocess just persisted to learning.db.
621
+ try:
622
+ from superlocalmemory.learning.model_cache import invalidate
623
+ invalidate(profile_id)
624
+ except Exception as exc: # pragma: no cover — defensive
625
+ logger.debug("model cache invalidate failed: %s", exc)
610
626
  return {
611
627
  "success": True,
612
628
  "trained": True,
@@ -806,15 +806,37 @@ async def run_consolidation(request: Request):
806
806
  try:
807
807
  body = await request.json()
808
808
  dry_run = body.get("dry_run", False)
809
- from superlocalmemory.learning.consolidation_worker import ConsolidationWorker
809
+ # Run the full cycle OUT OF PROCESS. Step 5 trains the LightGBM ranker
810
+ # (online _run_shadow_cycle or legacy cold-start); importing lightgbm
811
+ # in the torch-warm daemon loads a second libomp and SIGSEGVs it (see
812
+ # lightgbm_subprocess module docstring). Isolation is the fix.
813
+ from superlocalmemory.learning.lightgbm_subprocess import (
814
+ run_consolidation_isolated,
815
+ )
810
816
  from superlocalmemory.core.config import SLMConfig
811
817
  from superlocalmemory.server.routes.helpers import DB_PATH
812
- worker = ConsolidationWorker(
813
- memory_db=str(DB_PATH),
814
- learning_db=str(DB_PATH.parent / "learning.db"),
815
- )
818
+ from fastapi.concurrency import run_in_threadpool
819
+
816
820
  config = SLMConfig.load()
817
- stats = worker.run(config.active_profile, dry_run=dry_run)
821
+ learning_db = DB_PATH.parent / "learning.db"
822
+ result = await run_in_threadpool(
823
+ run_consolidation_isolated,
824
+ str(DB_PATH),
825
+ str(learning_db),
826
+ config.active_profile,
827
+ dry_run=dry_run,
828
+ )
829
+ if result.get("error"):
830
+ return {"success": False, "error": result["error"]}
831
+ # Step-5 training may have promoted a new model — drop the daemon's
832
+ # cached model so the next recall reloads it from learning.db.
833
+ if not dry_run:
834
+ try:
835
+ from superlocalmemory.learning.model_cache import invalidate
836
+ invalidate(config.active_profile)
837
+ except Exception:
838
+ pass
839
+ stats = result.get("stats") or {}
818
840
  return {"success": True, **stats}
819
841
  except Exception as exc:
820
842
  return {"success": False, "error": str(exc)}
@@ -1950,10 +1950,19 @@ def start_server(port: int = _DEFAULT_PORT) -> None:
1950
1950
  log_dir = Path.home() / ".superlocalmemory" / "logs"
1951
1951
  log_dir.mkdir(parents=True, exist_ok=True)
1952
1952
 
1953
+ # Bind address. `SLM_DAEMON_HOST` is the canonical name; `SLM_HOST` is
1954
+ # accepted as a shorter alias (issue #23). Set either to 0.0.0.0 to serve
1955
+ # a shared instance over a trusted private network (e.g. WireGuard mesh).
1956
+ bind_host = (
1957
+ os.environ.get("SLM_DAEMON_HOST")
1958
+ or os.environ.get("SLM_HOST")
1959
+ or "127.0.0.1"
1960
+ )
1961
+
1953
1962
  config = uvicorn.Config(
1954
1963
  app="superlocalmemory.server.unified_daemon:create_app",
1955
1964
  factory=True,
1956
- host=os.environ.get("SLM_DAEMON_HOST", "127.0.0.1"),
1965
+ host=bind_host,
1957
1966
  port=port,
1958
1967
  log_level="warning",
1959
1968
  timeout_graceful_shutdown=10,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superlocalmemory
3
- Version: 3.5.5
3
+ Version: 3.5.7
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
@@ -221,6 +221,7 @@ src/superlocalmemory/learning/forgetting_scheduler.py
221
221
  src/superlocalmemory/learning/hnsw_dedup.py
222
222
  src/superlocalmemory/learning/labeler.py
223
223
  src/superlocalmemory/learning/legacy_migration.py
224
+ src/superlocalmemory/learning/lightgbm_subprocess.py
224
225
  src/superlocalmemory/learning/memory_merge.py
225
226
  src/superlocalmemory/learning/model_cache.py
226
227
  src/superlocalmemory/learning/model_rollback.py