superlocalmemory 3.7.3__tar.gz → 3.7.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. {superlocalmemory-3.7.3/src/superlocalmemory.egg-info → superlocalmemory-3.7.5}/PKG-INFO +6 -5
  2. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/README.md +5 -4
  3. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/pyproject.toml +1 -1
  4. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/__init__.py +1 -1
  5. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/scale_engine_cmd.py +2 -1
  6. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/scale_engine.py +144 -41
  7. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/graph/cozo_backend.py +12 -17
  8. superlocalmemory-3.7.5/src/superlocalmemory/storage/logical_edges.py +45 -0
  9. superlocalmemory-3.7.5/src/superlocalmemory/storage/sqlite_vectors.py +169 -0
  10. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/vector/lancedb_backend.py +39 -68
  11. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5/src/superlocalmemory.egg-info}/PKG-INFO +6 -5
  12. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory.egg-info/SOURCES.txt +2 -0
  13. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/AUTHORS.md +0 -0
  14. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/LICENSE +0 -0
  15. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/NOTICE +0 -0
  16. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-cache/SKILL.md +0 -0
  17. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-compress/SKILL.md +0 -0
  18. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-graph/SKILL.md +0 -0
  19. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-recall/SKILL.md +0 -0
  20. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-remember/SKILL.md +0 -0
  21. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-session/SKILL.md +0 -0
  22. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-status/SKILL.md +0 -0
  23. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/setup.cfg +0 -0
  24. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/attribution/__init__.py +0 -0
  25. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
  26. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/attribution/signer.py +0 -0
  27. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/attribution/watermark.py +0 -0
  28. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/__init__.py +0 -0
  29. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/_lazy_init.py +0 -0
  30. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/cache_cmd.py +0 -0
  31. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/commands.py +0 -0
  32. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/compress_cmd.py +0 -0
  33. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/context_commands.py +0 -0
  34. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/daemon.py +0 -0
  35. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/db_migrate.py +0 -0
  36. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/diagnostics_cmd.py +0 -0
  37. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/escape_hatch.py +0 -0
  38. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/evidence_cmd.py +0 -0
  39. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/help_cmd.py +0 -0
  40. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
  41. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/json_output.py +0 -0
  42. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/main.py +0 -0
  43. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
  44. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/optimize_cmd.py +0 -0
  45. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/optimize_constants.py +0 -0
  46. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/pending_store.py +0 -0
  47. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/post_install.py +0 -0
  48. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/proxy_cmd.py +0 -0
  49. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/service_installer.py +0 -0
  50. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/setup_wizard.py +0 -0
  51. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/version_banner.py +0 -0
  52. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
  53. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/__init__.py +0 -0
  54. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
  55. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
  56. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
  57. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
  58. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
  59. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
  60. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
  61. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/changes.py +0 -0
  62. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/communities.py +0 -0
  63. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/config.py +0 -0
  64. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/database.py +0 -0
  65. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
  66. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
  67. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
  68. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/flows.py +0 -0
  69. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
  70. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
  71. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/graph_store.py +0 -0
  72. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/incremental.py +0 -0
  73. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/models.py +0 -0
  74. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/parser.py +0 -0
  75. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/resolver.py +0 -0
  76. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/search.py +0 -0
  77. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/service.py +0 -0
  78. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/watcher.py +0 -0
  79. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/__init__.py +0 -0
  80. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/abac.py +0 -0
  81. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/audit.py +0 -0
  82. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
  83. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/gdpr.py +0 -0
  84. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/lifecycle.py +0 -0
  85. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/retention.py +0 -0
  86. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/scheduler.py +0 -0
  87. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/__init__.py +0 -0
  88. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/backend_orchestrator.py +0 -0
  89. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/block_hygiene.py +0 -0
  90. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/clock_monitor.py +0 -0
  91. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/config.py +0 -0
  92. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/consolidation_engine.py +0 -0
  93. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/context_cache.py +0 -0
  94. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/db_pool.py +0 -0
  95. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/derivation_lineage.py +0 -0
  96. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/embedding_worker.py +0 -0
  97. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/embeddings.py +0 -0
  98. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/engine.py +0 -0
  99. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/engine_capabilities.py +0 -0
  100. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/engine_ingestion.py +0 -0
  101. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/engine_lock.py +0 -0
  102. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/engine_wiring.py +0 -0
  103. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/error_catalog.py +0 -0
  104. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/error_envelope.py +0 -0
  105. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/evidence_bundle.py +0 -0
  106. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/fact_consolidator.py +0 -0
  107. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/file_lock.py +0 -0
  108. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/graph_analyzer.py +0 -0
  109. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/graph_pruner.py +0 -0
  110. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/health_monitor.py +0 -0
  111. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/hooks.py +0 -0
  112. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/ingest_gate.py +0 -0
  113. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/ingestion_command.py +0 -0
  114. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/injection.py +0 -0
  115. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/lifecycle_state.py +0 -0
  116. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/loop_watchdog.py +0 -0
  117. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/maintenance.py +0 -0
  118. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
  119. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/mcp_embedder_proxy.py +0 -0
  120. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/modes.py +0 -0
  121. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/mutations.py +0 -0
  122. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/ollama_embedder.py +0 -0
  123. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/platform_utils.py +0 -0
  124. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/priority_queue.py +0 -0
  125. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/profiles.py +0 -0
  126. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/pruning_engine.py +0 -0
  127. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/queue_consumer.py +0 -0
  128. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
  129. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/ram_lock.py +0 -0
  130. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/rate_limit.py +0 -0
  131. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/recall_gate.py +0 -0
  132. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/recall_pipeline.py +0 -0
  133. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/recall_queue.py +0 -0
  134. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/recall_worker.py +0 -0
  135. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/registry.py +0 -0
  136. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/remote_mode.py +0 -0
  137. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/reranker_worker.py +0 -0
  138. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/safe_fs.py +0 -0
  139. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/score_contract.py +0 -0
  140. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/security_primitives.py +0 -0
  141. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/shadow_router.py +0 -0
  142. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/slm_disabled.py +0 -0
  143. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/slmignore.py +0 -0
  144. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/store_pipeline.py +0 -0
  145. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/summarizer.py +0 -0
  146. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/tier_manager.py +0 -0
  147. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/topic_signature.py +0 -0
  148. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/worker_pool.py +0 -0
  149. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/dynamics/__init__.py +0 -0
  150. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
  151. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
  152. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
  153. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
  154. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/__init__.py +0 -0
  155. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/auto_linker.py +0 -0
  156. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
  157. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/consolidator.py +0 -0
  158. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/context_generator.py +0 -0
  159. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/emotional.py +0 -0
  160. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
  161. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
  162. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
  163. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/foresight.py +0 -0
  164. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/graph_builder.py +0 -0
  165. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/observation_builder.py +0 -0
  166. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/scene_builder.py +0 -0
  167. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/signal_inference.py +0 -0
  168. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
  169. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
  170. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/type_router.py +0 -0
  171. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evaluation/__init__.py +0 -0
  172. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evaluation/calibration.py +0 -0
  173. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/__init__.py +0 -0
  174. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
  175. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/budget.py +0 -0
  176. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/evolution_store.py +0 -0
  177. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
  178. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
  179. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
  180. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/triggers.py +0 -0
  181. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/types.py +0 -0
  182. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/graph/__init__.py +0 -0
  183. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/__init__.py +0 -0
  184. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
  185. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/adapter_base.py +0 -0
  186. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
  187. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/auto_capture.py +0 -0
  188. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
  189. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
  190. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/auto_recall.py +0 -0
  191. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
  192. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
  193. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
  194. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/codex_assets.py +0 -0
  195. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/codex_hooks.py +0 -0
  196. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/context_payload.py +0 -0
  197. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
  198. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
  199. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
  200. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
  201. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
  202. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/ide_connector.py +0 -0
  203. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/memory_protocol.py +0 -0
  204. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/portable_kit.py +0 -0
  205. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
  206. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
  207. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
  208. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/rules_engine.py +0 -0
  209. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/session_registry.py +0 -0
  210. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
  211. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/sync_loop.py +0 -0
  212. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
  213. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
  214. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
  215. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/__init__.py +0 -0
  216. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/auth_middleware.py +0 -0
  217. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/backup.py +0 -0
  218. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/cache_manager.py +0 -0
  219. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/cloud_backup.py +0 -0
  220. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/daemon_identity.py +0 -0
  221. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/data_root.py +0 -0
  222. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/event_bus.py +0 -0
  223. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
  224. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/local_diagnostics.py +0 -0
  225. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/pid_manager.py +0 -0
  226. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/process_reaper.py +0 -0
  227. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/rate_limiter.py +0 -0
  228. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
  229. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/__init__.py +0 -0
  230. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
  231. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
  232. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
  233. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/credentials.py +0 -0
  234. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
  235. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/parsers.py +0 -0
  236. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
  237. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/__init__.py +0 -0
  238. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/adaptive.py +0 -0
  239. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/arm_catalog.py +0 -0
  240. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/assertion_miner.py +0 -0
  241. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/bandit.py +0 -0
  242. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/bandit_cache.py +0 -0
  243. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/behavioral.py +0 -0
  244. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
  245. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/bootstrap.py +0 -0
  246. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
  247. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
  248. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
  249. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/cross_project.py +0 -0
  250. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/database.py +0 -0
  251. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
  252. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/engagement.py +0 -0
  253. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/ensemble.py +0 -0
  254. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/entity_compiler.py +0 -0
  255. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
  256. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/features.py +0 -0
  257. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/feedback.py +0 -0
  258. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
  259. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
  260. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/labeler.py +0 -0
  261. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/legacy_migration.py +0 -0
  262. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/lightgbm_subprocess.py +0 -0
  263. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/memory_merge.py +0 -0
  264. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/model_cache.py +0 -0
  265. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/model_rollback.py +0 -0
  266. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/outcome_queue.py +0 -0
  267. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/outcomes.py +0 -0
  268. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/pattern_miner.py +0 -0
  269. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
  270. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/project_context.py +0 -0
  271. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
  272. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/ranker.py +0 -0
  273. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/ranker_common.py +0 -0
  274. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
  275. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
  276. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/reward.py +0 -0
  277. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/reward_archive.py +0 -0
  278. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/reward_boost.py +0 -0
  279. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/reward_proxy.py +0 -0
  280. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/shadow_test.py +0 -0
  281. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/signal_worker.py +0 -0
  282. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/signals.py +0 -0
  283. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
  284. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/source_quality.py +0 -0
  285. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/trigram_index.py +0 -0
  286. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/workflows.py +0 -0
  287. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/llm/__init__.py +0 -0
  288. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/llm/backbone.py +0 -0
  289. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/__init__.py +0 -0
  290. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/ebbinghaus.py +0 -0
  291. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/fisher.py +0 -0
  292. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/fisher_quantized.py +0 -0
  293. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/hopfield.py +0 -0
  294. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/langevin.py +0 -0
  295. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/polar_quant.py +0 -0
  296. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/qjl.py +0 -0
  297. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/sheaf.py +0 -0
  298. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/turbo_quant.py +0 -0
  299. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/__init__.py +0 -0
  300. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
  301. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
  302. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/_stdin_guard.py +0 -0
  303. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/agent_context.py +0 -0
  304. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/cli_fallback.py +0 -0
  305. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/http_transport.py +0 -0
  306. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/resources.py +0 -0
  307. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/server.py +0 -0
  308. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/shared.py +0 -0
  309. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools.py +0 -0
  310. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_active.py +0 -0
  311. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
  312. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_context.py +0 -0
  313. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_core.py +0 -0
  314. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
  315. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_learning.py +0 -0
  316. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
  317. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_optimize.py +0 -0
  318. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_v28.py +0 -0
  319. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_v3.py +0 -0
  320. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_v33.py +0 -0
  321. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mesh/__init__.py +0 -0
  322. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mesh/broker.py +0 -0
  323. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mesh/remote_sync.py +0 -0
  324. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/migrations/__init__.py +0 -0
  325. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
  326. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/NOTICE +0 -0
  327. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/__init__.py +0 -0
  328. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/adapters/__init__.py +0 -0
  329. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/adapters/_agent_registry.py +0 -0
  330. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/adapters/anthropic_adapter.py +0 -0
  331. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/adapters/openai_adapter.py +0 -0
  332. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/adapters/wrap.py +0 -0
  333. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/__init__.py +0 -0
  334. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/boundary_store.py +0 -0
  335. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/centroid_store.py +0 -0
  336. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/context_key.py +0 -0
  337. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/exact.py +0 -0
  338. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/invalidation.py +0 -0
  339. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/key_builder.py +0 -0
  340. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/manager.py +0 -0
  341. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/semantic.py +0 -0
  342. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/stampede.py +0 -0
  343. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/compress/__init__.py +0 -0
  344. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/compress/align.py +0 -0
  345. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/compress/ccr.py +0 -0
  346. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/compress/prose_llmlingua.py +0 -0
  347. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/compress/router.py +0 -0
  348. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/config/__init__.py +0 -0
  349. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/config/defaults.py +0 -0
  350. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/config/schema.py +0 -0
  351. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/config/store.py +0 -0
  352. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/metrics/__init__.py +0 -0
  353. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/metrics/counters.py +0 -0
  354. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/metrics/estimator.py +0 -0
  355. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/metrics/exporters.py +0 -0
  356. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/metrics/persistence.py +0 -0
  357. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/__init__.py +0 -0
  358. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/_helpers.py +0 -0
  359. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/anthropic_surface.py +0 -0
  360. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/capture.py +0 -0
  361. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/gemini_surface.py +0 -0
  362. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/lifecycle.py +0 -0
  363. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/openai_surface.py +0 -0
  364. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/server.py +0 -0
  365. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/vertex_surface.py +0 -0
  366. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/storage/__init__.py +0 -0
  367. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/storage/db.py +0 -0
  368. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/storage/schema.py +0 -0
  369. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/__init__.py +0 -0
  370. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
  371. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
  372. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
  373. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
  374. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
  375. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/__init__.py +0 -0
  376. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/agentic.py +0 -0
  377. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/ann_index.py +0 -0
  378. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
  379. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
  380. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
  381. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/engine.py +0 -0
  382. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
  383. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
  384. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/fusion.py +0 -0
  385. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
  386. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
  387. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
  388. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/reranker.py +0 -0
  389. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/scope_policy.py +0 -0
  390. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
  391. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
  392. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/strategy.py +0 -0
  393. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
  394. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/vector_store.py +0 -0
  395. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/__init__.py +0 -0
  396. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/api.py +0 -0
  397. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/bandit_loops.py +0 -0
  398. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/middleware/__init__.py +0 -0
  399. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
  400. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/recall_health.py +0 -0
  401. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/recall_serializer.py +0 -0
  402. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/route_mutations.py +0 -0
  403. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/__init__.py +0 -0
  404. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/adapters.py +0 -0
  405. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/agents.py +0 -0
  406. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/backup.py +0 -0
  407. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/behavioral.py +0 -0
  408. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/brain.py +0 -0
  409. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/chat.py +0 -0
  410. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/compliance.py +0 -0
  411. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/data_io.py +0 -0
  412. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/entity.py +0 -0
  413. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/events.py +0 -0
  414. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/evolution.py +0 -0
  415. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/helpers.py +0 -0
  416. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/ingest.py +0 -0
  417. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/insights.py +0 -0
  418. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/learning.py +0 -0
  419. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
  420. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/memories.py +0 -0
  421. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/mesh.py +0 -0
  422. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/optimize.py +0 -0
  423. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/prewarm.py +0 -0
  424. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/profiles.py +0 -0
  425. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/stats.py +0 -0
  426. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/tiers.py +0 -0
  427. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/timeline.py +0 -0
  428. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/token.py +0 -0
  429. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/v3_api.py +0 -0
  430. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/ws.py +0 -0
  431. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/security_middleware.py +0 -0
  432. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/ui.py +0 -0
  433. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/unified_daemon.py +0 -0
  434. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/write_identity.py +0 -0
  435. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/__init__.py +0 -0
  436. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/access_control.py +0 -0
  437. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/access_log.py +0 -0
  438. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/database.py +0 -0
  439. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
  440. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migration_runner.py +0 -0
  441. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migration_v33.py +0 -0
  442. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
  443. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
  444. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
  445. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
  446. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
  447. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
  448. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
  449. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
  450. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
  451. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
  452. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
  453. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
  454. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
  455. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -0
  456. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M016_add_scope_support.py +0 -0
  457. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M017_ccq_scope_column.py +0 -0
  458. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M018_ingestion_operations.py +0 -0
  459. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M019_derivation_lineage.py +0 -0
  460. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M020_model_state_integrity.py +0 -0
  461. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
  462. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations.py +0 -0
  463. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/models.py +0 -0
  464. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/quantized_store.py +0 -0
  465. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema.py +0 -0
  466. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
  467. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v32.py +0 -0
  468. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v3410.py +0 -0
  469. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v3411.py +0 -0
  470. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v343.py +0 -0
  471. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v345.py +0 -0
  472. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v347.py +0 -0
  473. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/v2_migrator.py +0 -0
  474. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/trust/__init__.py +0 -0
  475. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/trust/gate.py +0 -0
  476. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/trust/provenance.py +0 -0
  477. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/trust/scorer.py +0 -0
  478. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/trust/signals.py +0 -0
  479. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/css/brain.css +0 -0
  480. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
  481. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
  482. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/favicon.svg +0 -0
  483. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/index.html +0 -0
  484. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/agents.js +0 -0
  485. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
  486. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/brain.js +0 -0
  487. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/clusters.js +0 -0
  488. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/compliance.js +0 -0
  489. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/core.js +0 -0
  490. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/dashboard.js +0 -0
  491. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/events.js +0 -0
  492. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
  493. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/feedback.js +0 -0
  494. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
  495. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
  496. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
  497. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ide-status.js +0 -0
  498. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/init.js +0 -0
  499. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
  500. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
  501. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/math-health.js +0 -0
  502. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/memories.js +0 -0
  503. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
  504. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
  505. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/modal.js +0 -0
  506. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
  507. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-health.js +0 -0
  508. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
  509. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
  510. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
  511. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
  512. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/optimize.js +0 -0
  513. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/profiles.js +0 -0
  514. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
  515. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
  516. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/search.js +0 -0
  517. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/settings.js +0 -0
  518. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/timeline.js +0 -0
  519. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
  520. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
  521. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  522. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  523. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
  524. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
  525. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
  526. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
  527. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
  528. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
  529. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
  530. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
  531. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
  532. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/vector/__init__.py +0 -0
  533. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
  534. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
  535. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory.egg-info/requires.txt +0 -0
  536. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory.egg-info/top_level.txt +0 -0
  537. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_auto_hooks.py +0 -0
  538. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_before_web_hook.py +0 -0
  539. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_behavioral_full.py +0 -0
  540. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_claude_hooks.py +0 -0
  541. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_cli_core.py +0 -0
  542. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_cli_json.py +0 -0
  543. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_cli_v33.py +0 -0
  544. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_compliance_full.py +0 -0
  545. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_config_system.py +0 -0
  546. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_dashboard_preserve_embedding.py +0 -0
  547. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_engine_hooks.py +0 -0
  548. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_event_bus.py +0 -0
  549. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_features.py +0 -0
  550. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_final_locomo_mini.py +0 -0
  551. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_graph_integrity.py +0 -0
  552. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_hook_handlers.py +0 -0
  553. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_ide_connector.py +0 -0
  554. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_infra.py +0 -0
  555. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_injection.py +0 -0
  556. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_learning_advanced.py +0 -0
  557. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_learning_collectors.py +0 -0
  558. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_llm_provider.py +0 -0
  559. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_mcp_server.py +0 -0
  560. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_migration.py +0 -0
  561. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_mode_switch_preservation.py +0 -0
  562. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_post_install.py +0 -0
  563. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_ranker.py +0 -0
  564. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_resource_lifecycle.py +0 -0
  565. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_topic_shift_hook.py +0 -0
  566. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_trust_full.py +0 -0
  567. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_v3_api.py +0 -0
  568. {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_version_consistency.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superlocalmemory
3
- Version: 3.7.3
3
+ Version: 3.7.5
4
4
  Summary: Local-first agent memory with auditable hybrid retrieval
5
5
  Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -107,10 +107,10 @@ Dynamic: license-file
107
107
  </picture>
108
108
  </p>
109
109
 
110
- <h1 align="center">SuperLocalMemory V3.7.3</h1>
110
+ <h1 align="center">SuperLocalMemory V3.7.5</h1>
111
111
  <p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
112
112
  <em>Local-first agent memory with explicit operating modes, auditable retrieval, and optional Optimize tools.</em></p>
113
- <p align="center"><code>v3.7.3</code> — <strong>Scale Engine integrity release: explicit legacy adoption, durable promotion recovery, and honest runtime status.</strong><br/>
113
+ <p align="center"><code>v3.7.5</code> — <strong>Scale Engine graph and vector projection parity, durable promotion recovery, and honest runtime status.</strong><br/>
114
114
  Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</code> to your config &nbsp;·&nbsp; Skill: zero-config</p>
115
115
  <p align="center"><strong>3 public research preprints</strong> (arXiv + Zenodo archives) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
116
116
 
@@ -213,7 +213,7 @@ health surfaces expose the stages actually completed by the installed runtime.
213
213
  | **Retrieval and recall** | Semantic, lexical, temporal, Hopfield and spreading-activation candidate channels; RRF fusion, optional reranking and graph score enhancement | Healthy channels participate; response provenance states the evidence used. |
214
214
  | **Brain and learning** | Behavioral patterns, feedback/outcome records, rewards, consolidation, LightGBM-related ranking components, soft prompts, and guarded skill-evolution workflows | Learning is evidence-driven; it does not claim autonomous correctness or guaranteed improvement. |
215
215
  | **Knowledge graph and entities** | Canonical entities, aliases, entity profiles, graph edges, scenes, timelines, explorer and graph APIs | Stored/derived graph data is evidence, not an instruction authority. |
216
- | **Scale Engine** | SQLite + sqlite-vec are canonical. CozoDB graph and LanceDB vector projections are managed with prepare → verify → promote → rollback; a structurally detected pre-v3.7 projection can be explicitly adopted. | Promotion is parity-gated and crash-recoverable. Legacy adoption preserves the prior projection as a rollback backup; if proof fails, routing remains on canonical SQLite and status reports repair required. |
216
+ | **Scale Engine** | SQLite + sqlite-vec are canonical. CozoDB graph and LanceDB vector projections are managed with prepare → verify → promote → rollback; a structurally detected pre-v3.7 projection can be explicitly adopted. | Promotion is parity-gated and crash-recoverable. Legacy adoption preserves the prior projection as a rollback backup; repeated physical edge rows normalize to one logical edge with the strongest weight. |
217
217
  | **Optimize** | Exact cache, tagged invalidation, safe compression, opt-in aggressive prose compression, CCR originals, proxy/MCP/skill surfaces | Only proxy intercepts a primary provider turn. MCP/skill cache results explicitly routed through SLM. |
218
218
  | **Mesh** | Authenticated peer messages, inbox/outbox, locks, offline queue, optional discovery and mesh MCP tools | Mesh is coordination, not automatic replicated memory or conflict resolution. |
219
219
  | **Governance and operations** | Provenance, audit/retention/policy surfaces, export/erasure controls, diagnostics, health, backups and daemon lifecycle | These are engineering controls, not a legal certification. |
@@ -340,7 +340,8 @@ SLM then rebuilds from canonical SQLite, verifies it, and promotes it with a
340
340
  durable recovery journal while retaining the prior directories as a rollback
341
341
  backup. `adopt` reports `restart_required: true`; run `slm restart` before
342
342
  checking daemon health. If proof fails, recall remains on SQLite and status
343
- reports repair required.
343
+ retains the rejected manifest for inspection, retires its replaceable derived
344
+ payload, and allows a corrected retry.
344
345
 
345
346
  Canonical ingestion is a durable state machine: `raw → queryable → enriching →
346
347
  complete`, with `failed` retaining raw evidence, error details, attempt count,
@@ -5,10 +5,10 @@
5
5
  </picture>
6
6
  </p>
7
7
 
8
- <h1 align="center">SuperLocalMemory V3.7.3</h1>
8
+ <h1 align="center">SuperLocalMemory V3.7.5</h1>
9
9
  <p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
10
10
  <em>Local-first agent memory with explicit operating modes, auditable retrieval, and optional Optimize tools.</em></p>
11
- <p align="center"><code>v3.7.3</code> — <strong>Scale Engine integrity release: explicit legacy adoption, durable promotion recovery, and honest runtime status.</strong><br/>
11
+ <p align="center"><code>v3.7.5</code> — <strong>Scale Engine graph and vector projection parity, durable promotion recovery, and honest runtime status.</strong><br/>
12
12
  Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</code> to your config &nbsp;·&nbsp; Skill: zero-config</p>
13
13
  <p align="center"><strong>3 public research preprints</strong> (arXiv + Zenodo archives) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
14
14
 
@@ -111,7 +111,7 @@ health surfaces expose the stages actually completed by the installed runtime.
111
111
  | **Retrieval and recall** | Semantic, lexical, temporal, Hopfield and spreading-activation candidate channels; RRF fusion, optional reranking and graph score enhancement | Healthy channels participate; response provenance states the evidence used. |
112
112
  | **Brain and learning** | Behavioral patterns, feedback/outcome records, rewards, consolidation, LightGBM-related ranking components, soft prompts, and guarded skill-evolution workflows | Learning is evidence-driven; it does not claim autonomous correctness or guaranteed improvement. |
113
113
  | **Knowledge graph and entities** | Canonical entities, aliases, entity profiles, graph edges, scenes, timelines, explorer and graph APIs | Stored/derived graph data is evidence, not an instruction authority. |
114
- | **Scale Engine** | SQLite + sqlite-vec are canonical. CozoDB graph and LanceDB vector projections are managed with prepare → verify → promote → rollback; a structurally detected pre-v3.7 projection can be explicitly adopted. | Promotion is parity-gated and crash-recoverable. Legacy adoption preserves the prior projection as a rollback backup; if proof fails, routing remains on canonical SQLite and status reports repair required. |
114
+ | **Scale Engine** | SQLite + sqlite-vec are canonical. CozoDB graph and LanceDB vector projections are managed with prepare → verify → promote → rollback; a structurally detected pre-v3.7 projection can be explicitly adopted. | Promotion is parity-gated and crash-recoverable. Legacy adoption preserves the prior projection as a rollback backup; repeated physical edge rows normalize to one logical edge with the strongest weight. |
115
115
  | **Optimize** | Exact cache, tagged invalidation, safe compression, opt-in aggressive prose compression, CCR originals, proxy/MCP/skill surfaces | Only proxy intercepts a primary provider turn. MCP/skill cache results explicitly routed through SLM. |
116
116
  | **Mesh** | Authenticated peer messages, inbox/outbox, locks, offline queue, optional discovery and mesh MCP tools | Mesh is coordination, not automatic replicated memory or conflict resolution. |
117
117
  | **Governance and operations** | Provenance, audit/retention/policy surfaces, export/erasure controls, diagnostics, health, backups and daemon lifecycle | These are engineering controls, not a legal certification. |
@@ -238,7 +238,8 @@ SLM then rebuilds from canonical SQLite, verifies it, and promotes it with a
238
238
  durable recovery journal while retaining the prior directories as a rollback
239
239
  backup. `adopt` reports `restart_required: true`; run `slm restart` before
240
240
  checking daemon health. If proof fails, recall remains on SQLite and status
241
- reports repair required.
241
+ retains the rejected manifest for inspection, retires its replaceable derived
242
+ payload, and allows a corrected retry.
242
243
 
243
244
  Canonical ingestion is a durable state machine: `raw → queryable → enriching →
244
245
  complete`, with `failed` retaining raw evidence, error details, attempt count,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superlocalmemory"
3
- version = "3.7.3"
3
+ version = "3.7.5"
4
4
  description = "Local-first agent memory with auditable hybrid retrieval"
5
5
  readme = "README.md"
6
6
  license = "AGPL-3.0-or-later"
@@ -32,7 +32,7 @@ if "OMP_NUM_THREADS" not in os.environ:
32
32
  os.environ["OMP_NUM_THREADS"] = "2"
33
33
  # ---------------------------------------------------------------------------
34
34
 
35
- __version__ = "3.7.3"
35
+ __version__ = "3.7.5"
36
36
 
37
37
  _REQUIRED_VERSIONS = {
38
38
  "sentence_transformers": "5.3.0",
@@ -8,6 +8,7 @@ from argparse import Namespace
8
8
  def cmd_db_scale(args: Namespace) -> int:
9
9
  from superlocalmemory.core.config import SLMConfig
10
10
  from superlocalmemory.core.scale_engine import ScaleEngineError, ScaleEngineManager
11
+ from superlocalmemory.storage.sqlite_vectors import CanonicalVectorError
11
12
 
12
13
  action = args.scale_action
13
14
  # Scale Engine projections are currently canonical-default-profile data.
@@ -42,7 +43,7 @@ def cmd_db_scale(args: Namespace) -> int:
42
43
  result = manager.rollback(args.backup_id)
43
44
  else:
44
45
  raise ScaleEngineError(f"unknown Scale Engine action: {action}")
45
- except ScaleEngineError as exc:
46
+ except (ScaleEngineError, CanonicalVectorError) as exc:
46
47
  print(f"Scale Engine: {exc}")
47
48
  return 1
48
49
  print(json.dumps(result, indent=2, sort_keys=True))
@@ -22,6 +22,14 @@ from datetime import UTC, datetime
22
22
  from pathlib import Path
23
23
  from typing import Any, Callable
24
24
 
25
+ from superlocalmemory.storage.logical_edges import count_logical_edges, iter_logical_edges
26
+ from superlocalmemory.storage.sqlite_vectors import (
27
+ CanonicalVectorError,
28
+ count_canonical_vectors,
29
+ iter_canonical_vectors,
30
+ load_sqlite_vec_extension,
31
+ )
32
+
25
33
 
26
34
  class ScaleEngineError(RuntimeError):
27
35
  """A scale projection cannot safely advance to its next lifecycle state."""
@@ -98,8 +106,8 @@ class ScaleEngineManager:
98
106
  legacy_projection_candidate = (
99
107
  state == "local_core"
100
108
  and all(paths_present.values())
101
- and not manifests
102
109
  and not backups
110
+ and not self.promotion_journal_path.exists()
103
111
  and self._has_legacy_projection_layout()
104
112
  )
105
113
  runtime = self._runtime_backend_status()
@@ -117,7 +125,17 @@ class ScaleEngineManager:
117
125
  "legacy_candidate_requires_confirmation": legacy_projection_candidate,
118
126
  "migration_repair_required": (
119
127
  self.promotion_journal_path.exists()
120
- or (state == "local_core" and bool(manifests))
128
+ or any(
129
+ manifest.get("state") == "promoted" and state != "promoted"
130
+ for manifest in manifests
131
+ )
132
+ or (
133
+ state == "promoted"
134
+ and any(
135
+ manifest.get("state") in {"prepared", "verified"}
136
+ for manifest in manifests
137
+ )
138
+ )
121
139
  ),
122
140
  "stages": manifests,
123
141
  "backups": backups,
@@ -135,26 +153,91 @@ class ScaleEngineManager:
135
153
  if not self.status()["legacy_projection_candidate"]:
136
154
  return None
137
155
  lock_path = self._acquire_lifecycle_lock()
156
+ prepared: dict[str, Any] | None = None
138
157
  try:
139
158
  # Re-check inside the lock. A concurrent command may have
140
159
  # completed promotion while this caller waited to acquire it.
141
- if not self.status()["legacy_projection_candidate"]:
160
+ current_status = self.status()
161
+ if not current_status["legacy_projection_candidate"]:
142
162
  return None
163
+ retry_payloads = [
164
+ manifest["stage_id"]
165
+ for manifest in current_status["stages"]
166
+ if manifest.get("state") in {"prepared", "verified"}
167
+ and manifest.get("stage_id")
168
+ ]
143
169
  prepared = self._prepare()
144
170
  self._verify(prepared["stage_id"])
145
- return self._promote(prepared["stage_id"])
146
- except Exception:
171
+ promoted = self._promote(prepared["stage_id"])
172
+ retired: list[str] = []
173
+ retirement_failures: dict[str, str] = {}
174
+ for stage_id in retry_payloads:
175
+ try:
176
+ self._retire_superseded_stage(stage_id)
177
+ retired.append(stage_id)
178
+ except Exception as cleanup_exc:
179
+ retirement_failures[stage_id] = str(cleanup_exc)
180
+ return {
181
+ **promoted,
182
+ "retired_stages": retired,
183
+ "retirement_failures": retirement_failures,
184
+ }
185
+ except Exception as exc:
147
186
  # A failed adoption must leave the canonical path selected. The
148
- # stage is retained for operator inspection instead of deleting
149
- # evidence about why an upgrade could not be completed.
150
- self.config.scale_engine_state = "local_core"
187
+ # manifest is retained for inspection, but its replaceable Cozo
188
+ # and Lance payloads are retired so repeated retries cannot grow
189
+ # the data root without bound.
190
+ retirement_error: Exception | None = None
191
+ unresolved_promotion = self.promotion_journal_path.exists()
192
+ if prepared is not None and not unresolved_promotion:
193
+ try:
194
+ self._retire_rejected_stage(prepared["stage_id"], exc)
195
+ except Exception as cleanup_exc:
196
+ retirement_error = cleanup_exc
197
+ self.config.scale_engine_state = (
198
+ "verified" if unresolved_promotion else "local_core"
199
+ )
151
200
  self.config.graph_backend = "auto"
152
201
  self.config.vector_backend = "auto"
153
202
  self._save_config()
203
+ if retirement_error is not None:
204
+ raise ScaleEngineError(
205
+ f"{exc}; rejected stage retirement failed: {retirement_error}"
206
+ ) from exc
154
207
  raise
155
208
  finally:
156
209
  self._release_lifecycle_lock(lock_path)
157
210
 
211
+ def _retire_rejected_stage(self, stage_id: str, error: Exception) -> None:
212
+ """Keep rejection evidence while removing replaceable projection data."""
213
+ self._retire_stage_payload(
214
+ stage_id,
215
+ {
216
+ "state": "rejected",
217
+ "rejected_at": _utc_now(),
218
+ "failure": f"{type(error).__name__}: {error}",
219
+ },
220
+ )
221
+
222
+ def _retire_superseded_stage(self, stage_id: str) -> None:
223
+ """Retain an old retry manifest after a newer projection is promoted."""
224
+ self._retire_stage_payload(
225
+ stage_id,
226
+ {"state": "superseded", "superseded_at": _utc_now()},
227
+ )
228
+
229
+ def _retire_stage_payload(
230
+ self, stage_id: str, manifest_updates: dict[str, Any]
231
+ ) -> None:
232
+ """Remove derived stage bytes while retaining its durable manifest."""
233
+ stage_dir, manifest = self._load_stage(stage_id)
234
+ for payload in (stage_dir / "cozo", stage_dir / "lance"):
235
+ if payload.exists():
236
+ shutil.rmtree(payload)
237
+ self._fsync_directory(stage_dir)
238
+ manifest.update(manifest_updates)
239
+ self._write_manifest(stage_dir, manifest)
240
+
158
241
  def prepare(self) -> dict[str, Any]:
159
242
  """Build a new projection in a private staging directory."""
160
243
  lock_path = self._acquire_lifecycle_lock()
@@ -195,6 +278,9 @@ class ScaleEngineManager:
195
278
  self.config.scale_engine_state = "prepared"
196
279
  self._save_config()
197
280
  return manifest
281
+ except CanonicalVectorError as exc:
282
+ shutil.rmtree(stage_dir, ignore_errors=True)
283
+ raise ScaleEngineError(f"canonical vector projection failed: {exc}") from exc
198
284
  except Exception:
199
285
  shutil.rmtree(stage_dir, ignore_errors=True)
200
286
  raise
@@ -208,6 +294,8 @@ class ScaleEngineManager:
208
294
  try:
209
295
  self._recover_interrupted_promotion()
210
296
  return self._verify(stage_id)
297
+ except CanonicalVectorError as exc:
298
+ raise ScaleEngineError(f"canonical vector projection failed: {exc}") from exc
211
299
  finally:
212
300
  self._release_lifecycle_lock(lock_path)
213
301
 
@@ -224,7 +312,9 @@ class ScaleEngineManager:
224
312
  source_fingerprint = self._projection_fingerprint(conn, canonical)
225
313
  observed = self._observed_counts(cozo, lance)
226
314
  if manifest["source_fingerprint"] != source_fingerprint:
227
- raise ScaleEngineError("canonical SQLite changed after preparation; prepare a new stage")
315
+ raise ScaleEngineError(
316
+ "canonical SQLite changed after preparation; prepare a new stage"
317
+ )
228
318
  if canonical != manifest["canonical"] or observed != canonical:
229
319
  raise ScaleEngineError(
230
320
  f"projection parity failed: canonical={canonical}, observed={observed}"
@@ -244,6 +334,8 @@ class ScaleEngineManager:
244
334
  try:
245
335
  self._recover_interrupted_promotion()
246
336
  return self._promote(stage_id)
337
+ except CanonicalVectorError as exc:
338
+ raise ScaleEngineError(f"canonical vector projection failed: {exc}") from exc
247
339
  finally:
248
340
  self._release_lifecycle_lock(lock_path)
249
341
 
@@ -264,7 +356,9 @@ class ScaleEngineManager:
264
356
  gate.execute("BEGIN IMMEDIATE")
265
357
  canonical = self._canonical_counts(gate)
266
358
  if manifest["source_fingerprint"] != self._projection_fingerprint(gate, canonical):
267
- raise ScaleEngineError("canonical SQLite changed after verification; prepare a new stage")
359
+ raise ScaleEngineError(
360
+ "canonical SQLite changed after verification; prepare a new stage"
361
+ )
268
362
  self._mkdir_durable(self.backup_root)
269
363
  journal = {
270
364
  "schema_version": self.SCHEMA_VERSION,
@@ -291,7 +385,13 @@ class ScaleEngineManager:
291
385
  self._replace_durable(destination, source)
292
386
  move["state"] = "complete"
293
387
  self._write_promotion_journal(journal)
294
- manifest.update({"state": "promoted", "promoted_at": _utc_now(), "backup_id": backup_dir.name})
388
+ manifest.update(
389
+ {
390
+ "state": "promoted",
391
+ "promoted_at": _utc_now(),
392
+ "backup_id": backup_dir.name,
393
+ }
394
+ )
295
395
  self._write_manifest(stage_dir, manifest)
296
396
  self.config.scale_engine_state = "promoted"
297
397
  self.config.graph_backend = "cozo"
@@ -308,11 +408,14 @@ class ScaleEngineManager:
308
408
  except sqlite3.Error:
309
409
  pass
310
410
  try:
311
- self._recover_interrupted_promotion()
312
- except ScaleEngineError as recovery_error:
411
+ recovery = self._recover_interrupted_promotion()
412
+ except Exception as recovery_error:
313
413
  raise ScaleEngineError(
314
414
  f"promotion interrupted; automatic recovery needs repair: {recovery_error}"
315
415
  ) from exc
416
+ if recovery == "finalized_committed_promotion":
417
+ _, recovered_manifest = self._load_stage(stage_id)
418
+ return recovered_manifest
316
419
  raise ScaleEngineError(f"promotion rolled back: {exc}") from exc
317
420
  finally:
318
421
  gate.close()
@@ -367,7 +470,11 @@ class ScaleEngineManager:
367
470
  journal["state"] = "committed"
368
471
  self._write_promotion_journal(journal)
369
472
  self.promotion_journal_path.unlink(missing_ok=True)
370
- return {"state": "local_core", "restored_backup": backup_id, "displaced": displaced.name}
473
+ return {
474
+ "state": "local_core",
475
+ "restored_backup": backup_id,
476
+ "displaced": displaced.name,
477
+ }
371
478
  except Exception as exc:
372
479
  try:
373
480
  self._recover_interrupted_promotion()
@@ -385,6 +492,7 @@ class ScaleEngineManager:
385
492
  def _readonly_connection(self) -> sqlite3.Connection:
386
493
  conn = sqlite3.connect(f"file:{self.db_path}?mode=ro", uri=True)
387
494
  conn.execute("PRAGMA query_only=ON")
495
+ load_sqlite_vec_extension(conn)
388
496
  return conn
389
497
 
390
498
  def _canonical_counts(self, conn: sqlite3.Connection) -> dict[str, int]:
@@ -392,18 +500,8 @@ class ScaleEngineManager:
392
500
  "SELECT COUNT(*) FROM canonical_entities WHERE profile_id=?",
393
501
  (self.profile_id,),
394
502
  ).fetchone()[0]
395
- edges = conn.execute(
396
- "SELECT COUNT(*) FROM graph_edges WHERE profile_id=?", (self.profile_id,)
397
- ).fetchone()[0]
398
- try:
399
- vectors = conn.execute(
400
- "SELECT COUNT(*) FROM fact_embeddings_rowids fer "
401
- "JOIN atomic_facts af ON af.fact_id = fer.fact_id "
402
- "WHERE af.profile_id = ?",
403
- (self.profile_id,),
404
- ).fetchone()[0]
405
- except sqlite3.OperationalError:
406
- vectors = 0
503
+ edges = count_logical_edges(conn, self.profile_id)
504
+ vectors = count_canonical_vectors(conn, self.profile_id)
407
505
  return {"entities": int(nodes), "edges": int(edges), "vectors": int(vectors)}
408
506
 
409
507
  def _observed_counts(self, cozo: Any, lance: Any) -> dict[str, int]:
@@ -411,7 +509,11 @@ class ScaleEngineManager:
411
509
  vector = lance.health_check()
412
510
  if graph.get("status") != "active" or vector.get("status") != "active":
413
511
  raise ScaleEngineError(f"projection health failed: cozo={graph}, lancedb={vector}")
414
- return {"entities": int(graph["entities"]), "edges": int(graph["edges"]), "vectors": int(vector["vectors"])}
512
+ return {
513
+ "entities": int(graph["entities"]),
514
+ "edges": int(graph["edges"]),
515
+ "vectors": int(vector["vectors"]),
516
+ }
415
517
 
416
518
  def _projection_fingerprint(
417
519
  self, conn: sqlite3.Connection, counts: dict[str, int]
@@ -420,9 +522,13 @@ class ScaleEngineManager:
420
522
  digest = hashlib.sha256()
421
523
  digest.update(json.dumps(counts, sort_keys=True).encode())
422
524
  tables = (
423
- ("canonical_entities", "entity_id, canonical_name, entity_type, first_seen, last_seen, fact_count, profile_id", "entity_id"),
525
+ (
526
+ "canonical_entities",
527
+ "entity_id, canonical_name, entity_type, first_seen, last_seen, "
528
+ "fact_count, profile_id",
529
+ "entity_id",
530
+ ),
424
531
  ("atomic_facts", "fact_id, canonical_entities_json, lifecycle, profile_id", "fact_id"),
425
- ("graph_edges", "source_id, target_id, edge_type, weight, profile_id", "source_id, target_id, edge_type"),
426
532
  )
427
533
  for table, columns, ordering in tables:
428
534
  try:
@@ -435,17 +541,12 @@ class ScaleEngineManager:
435
541
  except sqlite3.OperationalError as exc:
436
542
  raise ScaleEngineError(f"canonical SQLite missing required {table} table") from exc
437
543
  try:
438
- rows = conn.execute(
439
- "SELECT fer.rowid, fer.fact_id, vec.vector FROM fact_embeddings_rowids fer "
440
- "JOIN atomic_facts af ON af.fact_id = fer.fact_id "
441
- "LEFT JOIN fact_embeddings_vector_chunks00 vec ON vec.rowid = fer.rowid "
442
- "WHERE af.profile_id=? ORDER BY fer.rowid",
443
- (self.profile_id,),
444
- )
445
- for row in rows:
446
- self._digest_row(digest, "fact_embeddings_rowids", row)
447
- except sqlite3.OperationalError:
448
- pass
544
+ for row in iter_logical_edges(conn, self.profile_id):
545
+ self._digest_row(digest, "graph_edges", row)
546
+ except sqlite3.OperationalError as exc:
547
+ raise ScaleEngineError("canonical SQLite missing required graph_edges table") from exc
548
+ for row in iter_canonical_vectors(conn, self.profile_id):
549
+ self._digest_row(digest, "fact_embeddings", row)
449
550
  return digest.hexdigest()
450
551
 
451
552
  @staticmethod
@@ -494,7 +595,9 @@ class ScaleEngineManager:
494
595
 
495
596
  def _require_default_profile(self) -> None:
496
597
  if self.profile_id != "default":
497
- raise ScaleEngineError("Scale Engine promotion currently supports the default profile only")
598
+ raise ScaleEngineError(
599
+ "Scale Engine promotion currently supports the default profile only"
600
+ )
498
601
 
499
602
  def _require_canonical_db(self) -> None:
500
603
  if not self.db_path.exists():
@@ -24,6 +24,8 @@ from datetime import datetime
24
24
  from pathlib import Path
25
25
  from typing import Any
26
26
 
27
+ from superlocalmemory.storage.logical_edges import iter_logical_edges
28
+
27
29
  logger = logging.getLogger(__name__)
28
30
 
29
31
  # Optional import — CozoDB is an optional dependency
@@ -260,6 +262,12 @@ class CozoDBGraphBackend:
260
262
  *fact_entity{fact_id, entity_id, profile_id}, fact_id = $fact_id
261
263
  :rm fact_entity {fact_id, entity_id => profile_id}
262
264
  """, {"fact_id": fact_id})
265
+ self._db.run("""
266
+ ?[from_id, to_id, edge_type, weight, metadata, profile_id, created_at] :=
267
+ *edge{from_id, to_id, edge_type, weight, metadata, profile_id, created_at},
268
+ (from_id = $fact_id or to_id = $fact_id)
269
+ :rm edge {from_id, to_id, edge_type => weight, metadata, profile_id, created_at}
270
+ """, {"fact_id": fact_id})
263
271
 
264
272
  def record_shadow_comparison(
265
273
  self,
@@ -280,12 +288,6 @@ class CozoDBGraphBackend:
280
288
  def record_shadow_error(self, error: str) -> None:
281
289
  self._shadow_errors += 1
282
290
  logger.warning("Cozo entity recall failed closed to SQLite: %s", error)
283
- self._db.run("""
284
- ?[from_id, to_id, edge_type, weight, metadata, profile_id, created_at] :=
285
- *edge{from_id, to_id, edge_type, weight, metadata, profile_id, created_at},
286
- (from_id = $fact_id or to_id = $fact_id)
287
- :rm edge {from_id, to_id, edge_type => weight, metadata, profile_id, created_at}
288
- """, {"fact_id": fact_id})
289
291
 
290
292
  # ------------------------------------------------------------------
291
293
  # Bulk Import (SQLite → CozoDB)
@@ -358,22 +360,15 @@ class CozoDBGraphBackend:
358
360
 
359
361
  # Step 3: Export fact graph edges directly. Fact graph traversal is
360
362
  # intentionally kept in its native fact-ID namespace.
361
- edges_sql = """
362
- SELECT source_id, target_id, edge_type, weight
363
- FROM graph_edges WHERE profile_id = ?
364
- """
365
- edge_rows = conn.execute(edges_sql, (profile_id,)).fetchall()
366
-
367
363
  edge_dicts = []
368
- for row in edge_rows:
369
- ea, eb, etype, weight = row
364
+ for ea, eb, etype, weight, edge_profile in iter_logical_edges(conn, profile_id):
370
365
  edge_dicts.append({
371
366
  "from_id": ea,
372
367
  "to_id": eb,
373
- "edge_type": etype or "related",
374
- "weight": float(weight or 1.0),
368
+ "edge_type": etype,
369
+ "weight": float(weight),
375
370
  "metadata": "{}",
376
- "profile_id": profile_id,
371
+ "profile_id": edge_profile,
377
372
  "created_at": now,
378
373
  })
379
374
 
@@ -0,0 +1,45 @@
1
+ """Canonical logical-edge projection shared by scale backends.
2
+
3
+ Legacy databases can contain multiple physical ``graph_edges`` rows for one
4
+ logical relationship. Current writes define identity as profile, source,
5
+ target, and edge type, retaining the strongest weight. Derived projections
6
+ must use that same contract without rewriting canonical SQLite history.
7
+ """
8
+ from __future__ import annotations
9
+
10
+ import sqlite3
11
+ from collections.abc import Iterator
12
+ from typing import Any
13
+
14
+ _LOGICAL_EDGE_SELECT = """
15
+ SELECT
16
+ source_id,
17
+ target_id,
18
+ COALESCE(edge_type, 'related') AS edge_type,
19
+ MAX(COALESCE(weight, 1.0)) AS weight,
20
+ profile_id
21
+ FROM graph_edges
22
+ WHERE profile_id = ?
23
+ GROUP BY profile_id, source_id, target_id, COALESCE(edge_type, 'related')
24
+ """
25
+
26
+
27
+ def iter_logical_edges(
28
+ conn: sqlite3.Connection, profile_id: str
29
+ ) -> Iterator[tuple[Any, ...]]:
30
+ """Yield normalized graph edges in deterministic fingerprint order."""
31
+ return iter(
32
+ conn.execute(
33
+ _LOGICAL_EDGE_SELECT + " ORDER BY source_id, target_id, edge_type",
34
+ (profile_id,),
35
+ )
36
+ )
37
+
38
+
39
+ def count_logical_edges(conn: sqlite3.Connection, profile_id: str) -> int:
40
+ """Count relationships using the canonical logical identity."""
41
+ row = conn.execute(
42
+ "SELECT COUNT(*) FROM (" + _LOGICAL_EDGE_SELECT + ")",
43
+ (profile_id,),
44
+ ).fetchone()
45
+ return int(row[0] if row else 0)