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