superlocalmemory 3.4.44__tar.gz → 3.4.48__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.4.44/src/superlocalmemory.egg-info → superlocalmemory-3.4.48}/PKG-INFO +68 -4
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/README.md +62 -1
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/pyproject.toml +11 -7
- superlocalmemory-3.4.48/src/superlocalmemory/__init__.py +40 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/recall_worker.py +5 -3
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/worker_pool.py +2 -1
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/llm/backbone.py +12 -1
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/_daemon_proxy.py +7 -3
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/_pool_adapter.py +7 -2
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/server.py +21 -3
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_active.py +31 -18
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_core.py +5 -6
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_v3.py +2 -2
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mesh/broker.py +64 -1
- superlocalmemory-3.4.48/src/superlocalmemory/mesh/remote_sync.py +266 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/mesh.py +14 -1
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/unified_daemon.py +2 -2
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/database.py +1 -1
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema.py +3 -3
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48/src/superlocalmemory.egg-info}/PKG-INFO +68 -4
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory.egg-info/SOURCES.txt +1 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory.egg-info/requires.txt +5 -2
- superlocalmemory-3.4.44/src/superlocalmemory/__init__.py +0 -3
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/AUTHORS.md +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/LICENSE +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/NOTICE +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/setup.cfg +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/attribution/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/attribution/signer.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/attribution/watermark.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/commands.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/context_commands.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/daemon.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/db_migrate.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/escape_hatch.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/json_output.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/main.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/pending_store.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/post_install.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/service_installer.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/setup_wizard.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/version_banner.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/changes.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/communities.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/config.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/database.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/flows.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/graph_store.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/incremental.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/models.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/parser.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/resolver.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/search.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/service.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/code_graph/watcher.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/abac.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/audit.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/gdpr.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/lifecycle.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/retention.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/compliance/scheduler.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/clock_monitor.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/config.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/consolidation_engine.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/context_cache.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/db_pool.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/embedding_worker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/embeddings.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/engine.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/engine_capabilities.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/engine_lock.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/engine_wiring.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/error_catalog.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/error_envelope.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/fact_consolidator.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/file_lock.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/graph_analyzer.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/graph_pruner.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/health_monitor.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/hooks.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/loop_watchdog.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/maintenance.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/modes.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/ollama_embedder.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/platform_utils.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/priority_queue.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/profiles.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/queue_consumer.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/ram_lock.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/rate_limit.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/recall_gate.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/recall_pipeline.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/recall_queue.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/registry.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/reranker_worker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/safe_fs.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/security_primitives.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/shadow_router.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/slm_disabled.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/slmignore.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/store_pipeline.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/summarizer.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/tier_manager.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/topic_signature.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/dynamics/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/auto_linker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/consolidator.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/context_generator.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/emotional.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/foresight.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/graph_builder.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/observation_builder.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/scene_builder.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/signal_inference.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/encoding/type_router.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/budget.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/evolution_store.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/triggers.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/evolution/types.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/adapter_base.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/auto_capture.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/auto_recall.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/context_payload.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/ide_connector.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/rules_engine.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/session_registry.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/sync_loop.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/auth_middleware.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/backup.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/cache_manager.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/cloud_backup.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/event_bus.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/pid_manager.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/process_reaper.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/rate_limiter.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/credentials.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/parsers.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/adaptive.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/arm_catalog.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/assertion_miner.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/bandit.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/bandit_cache.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/behavioral.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/bootstrap.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/cross_project.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/database.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/engagement.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/ensemble.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/entity_compiler.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/features.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/feedback.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/labeler.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/legacy_migration.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/memory_merge.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/model_cache.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/model_rollback.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/outcome_queue.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/outcomes.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/pattern_miner.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/project_context.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/ranker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/ranker_common.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/reward.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/reward_archive.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/reward_boost.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/reward_proxy.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/shadow_test.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/signal_worker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/signals.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/source_quality.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/trigram_index.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/learning/workflows.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/llm/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/ebbinghaus.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/fisher.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/fisher_quantized.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/hopfield.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/langevin.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/polar_quant.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/qjl.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/sheaf.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/math/turbo_quant.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/resources.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/shared.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_context.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_learning.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_v28.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_v33.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mesh/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/migrations/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/agentic.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/ann_index.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/engine.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/fusion.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/reranker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/strategy.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/retrieval/vector_store.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/api.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/bandit_loops.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/middleware/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/adapters.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/agents.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/backup.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/behavioral.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/brain.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/chat.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/compliance.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/data_io.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/entity.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/events.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/evolution.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/helpers.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/ingest.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/insights.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/learning.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/memories.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/prewarm.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/profiles.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/stats.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/tiers.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/timeline.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/token.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/v3_api.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/routes/ws.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/security_middleware.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/server/ui.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/access_control.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/access_log.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migration_runner.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migration_v33.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/migrations.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/models.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/quantized_store.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_v32.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_v3410.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_v3411.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_v343.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/schema_v347.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/storage/v2_migrator.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/trust/__init__.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/trust/gate.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/trust/provenance.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/trust/scorer.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/trust/signals.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/css/brain.css +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/index.html +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/agents.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/brain.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/clusters.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/compliance.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/core.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/dashboard.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/events.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/feedback.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ide-status.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/init.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/math-health.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/memories.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/modal.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-health.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/profiles.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/search.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/settings.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/timeline.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory.egg-info/top_level.txt +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_auto_hooks.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_before_web_hook.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_behavioral_full.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_claude_hooks.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_cli.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_cli_json.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_cli_v33.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_compliance_full.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_config_system.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_engine_hooks.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_event_bus.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_features.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_final_locomo_mini.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_hook_handlers.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_ide_connector.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_infra.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_learning_advanced.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_learning_collectors.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_llm_provider.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_mcp_server.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_migration.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_mode_switch_preservation.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_post_install.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_ranker.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_topic_shift_hook.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_trust_full.py +0 -0
- {superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/tests/test_v3_api.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: superlocalmemory
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.48
|
|
4
4
|
Summary: Information-geometric agent memory with mathematical guarantees
|
|
5
5
|
Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com>
|
|
6
6
|
License: AGPL-3.0-or-later
|
|
@@ -39,6 +39,7 @@ Requires-Dist: einops==0.8.2
|
|
|
39
39
|
Requires-Dist: fastapi[all]==0.136.1
|
|
40
40
|
Requires-Dist: uvicorn==0.46.0
|
|
41
41
|
Requires-Dist: websockets==16.0
|
|
42
|
+
Requires-Dist: zeroconf>=0.140
|
|
42
43
|
Requires-Dist: lightgbm==4.6.0
|
|
43
44
|
Requires-Dist: orjson==3.11.9
|
|
44
45
|
Requires-Dist: tree-sitter==0.25.2
|
|
@@ -48,7 +49,8 @@ Requires-Dist: watchdog==5.0.3
|
|
|
48
49
|
Requires-Dist: psutil==7.2.2
|
|
49
50
|
Requires-Dist: structlog==25.5.0
|
|
50
51
|
Requires-Dist: portalocker==3.2.0
|
|
51
|
-
Requires-Dist: sentence-transformers
|
|
52
|
+
Requires-Dist: sentence-transformers==5.3.0
|
|
53
|
+
Requires-Dist: optimum==2.1.0
|
|
52
54
|
Requires-Dist: onnxruntime==1.24.4
|
|
53
55
|
Requires-Dist: transformers==4.57.6
|
|
54
56
|
Requires-Dist: huggingface_hub==0.36.2
|
|
@@ -56,7 +58,8 @@ Requires-Dist: torch==2.11.0
|
|
|
56
58
|
Requires-Dist: scikit-learn==1.8.0
|
|
57
59
|
Requires-Dist: sqlite-vec==0.1.9
|
|
58
60
|
Provides-Extra: search
|
|
59
|
-
Requires-Dist: sentence-transformers
|
|
61
|
+
Requires-Dist: sentence-transformers==5.3.0; extra == "search"
|
|
62
|
+
Requires-Dist: optimum==2.1.0; extra == "search"
|
|
60
63
|
Requires-Dist: einops==0.8.2; extra == "search"
|
|
61
64
|
Requires-Dist: torch==2.11.0; extra == "search"
|
|
62
65
|
Requires-Dist: scikit-learn==1.8.0; extra == "search"
|
|
@@ -90,7 +93,7 @@ Dynamic: license-file
|
|
|
90
93
|
|
|
91
94
|
<h1 align="center">SuperLocalMemory V3.4</h1>
|
|
92
95
|
<p align="center"><strong>Every other AI forgets. Yours won't.</strong><br/><em>Infinite memory for Claude Code, Cursor, Windsurf, and any MCP-compatible AI client.</em></p>
|
|
93
|
-
<p align="center"><code>v3.4.
|
|
96
|
+
<p align="center"><code>v3.4.48</code> — Install once. Every session remembers the last. Automatically.<br><strong>Now with multi-machine agent mesh — M4 and M5 coordinate as one.</strong></p>
|
|
94
97
|
<p align="center"><strong>Backed by 3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
|
|
95
98
|
|
|
96
99
|
<p align="center">
|
|
@@ -502,6 +505,67 @@ Auto-capture hooks: `slm hooks install` + `slm observe` + `slm session-context`.
|
|
|
502
505
|
|
|
503
506
|
---
|
|
504
507
|
|
|
508
|
+
## Multi-Machine Mesh Coordination (New in v3.4.48)
|
|
509
|
+
|
|
510
|
+
Run SLM on multiple machines (M4 + M5) and have your agents coordinate as one team without any disruption.
|
|
511
|
+
|
|
512
|
+
### Setup
|
|
513
|
+
|
|
514
|
+
**M4 (broker):**
|
|
515
|
+
```bash
|
|
516
|
+
export SLM_MESH_HOST=192.168.1.100
|
|
517
|
+
export SLM_MESH_SHARED_SECRET=my-secret-key
|
|
518
|
+
slm init # Starts SLM at http://192.168.1.100:8765
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
**M5 (client):**
|
|
522
|
+
```bash
|
|
523
|
+
export SLM_MESH_PEER_URL=http://192.168.1.100:8765
|
|
524
|
+
export SLM_MESH_SHARED_SECRET=my-secret-key
|
|
525
|
+
slm init # Syncs M4's agents every 30s, proxies messages to M4
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
### How It Works
|
|
529
|
+
|
|
530
|
+
- **HTTP-based sync** — M5 queries M4's `/mesh/peers` endpoint every 30 seconds
|
|
531
|
+
- **Message proxying** — When M5's agent sends a message to an M4 agent, it's routed automatically
|
|
532
|
+
- **mDNS discovery (optional)** — M5 can auto-discover M4 on the LAN via `_slm-mesh._tcp` (enable with `SLM_MESH_DISCOVERY=on`, default)
|
|
533
|
+
- **Graceful fallback** — Network errors logged but don't crash; offline agents queue messages for delivery
|
|
534
|
+
- **Shared secret** — `SLM_MESH_SHARED_SECRET` gates remote peer discovery (required for remote mode)
|
|
535
|
+
|
|
536
|
+
### Environment Variables
|
|
537
|
+
|
|
538
|
+
| Variable | Default | Purpose |
|
|
539
|
+
|:---------|:--------|:--------|
|
|
540
|
+
| `SLM_MESH_HOST` | `127.0.0.1` | Host this SLM listens on (set to IP for remote) |
|
|
541
|
+
| `SLM_MESH_PEER_URL` | unset | Full URL of remote SLM (e.g., `http://192.168.1.100:8765`) |
|
|
542
|
+
| `SLM_MESH_SHARED_SECRET` | unset | Auth secret (required when remote) |
|
|
543
|
+
| `SLM_MESH_DISCOVERY` | `on` | mDNS discovery (`on`/`off`) |
|
|
544
|
+
| `SLM_MESH_WS_PORT` | `7900` | WebSocket port for mesh (internal use) |
|
|
545
|
+
|
|
546
|
+
### Dependencies
|
|
547
|
+
|
|
548
|
+
- `zeroconf>=0.140` (new in v3.4.48, optional, pure Python, auto-installed)
|
|
549
|
+
- `httpx==0.28.1` (already in core deps)
|
|
550
|
+
- No Docker. No external broker. Works on WiFi + LAN.
|
|
551
|
+
|
|
552
|
+
### MCP Tools
|
|
553
|
+
|
|
554
|
+
All 8 mesh tools work seamlessly across machines:
|
|
555
|
+
|
|
556
|
+
| Tool | Description |
|
|
557
|
+
|:-----|:------------|
|
|
558
|
+
| `mesh_peers` | List local + remote peers merged |
|
|
559
|
+
| `mesh_send` | Send message to any peer (local or remote) |
|
|
560
|
+
| `mesh_broadcast` | Send to all agents (across machines) |
|
|
561
|
+
| `mesh_project` | Send to all agents in a project (across machines) |
|
|
562
|
+
| `mesh_inbox` | Get messages for this agent |
|
|
563
|
+
| `mesh_pending` | Get offline messages (broadcast/project) |
|
|
564
|
+
| `mesh_state` | Get/set shared state (replicated) |
|
|
565
|
+
| `mesh_lock` | Acquire/release distributed file locks |
|
|
566
|
+
|
|
567
|
+
---
|
|
568
|
+
|
|
505
569
|
## Features
|
|
506
570
|
|
|
507
571
|
### Retrieval
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<h1 align="center">SuperLocalMemory V3.4</h1>
|
|
6
6
|
<p align="center"><strong>Every other AI forgets. Yours won't.</strong><br/><em>Infinite memory for Claude Code, Cursor, Windsurf, and any MCP-compatible AI client.</em></p>
|
|
7
|
-
<p align="center"><code>v3.4.
|
|
7
|
+
<p align="center"><code>v3.4.48</code> — Install once. Every session remembers the last. Automatically.<br><strong>Now with multi-machine agent mesh — M4 and M5 coordinate as one.</strong></p>
|
|
8
8
|
<p align="center"><strong>Backed by 3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
@@ -416,6 +416,67 @@ Auto-capture hooks: `slm hooks install` + `slm observe` + `slm session-context`.
|
|
|
416
416
|
|
|
417
417
|
---
|
|
418
418
|
|
|
419
|
+
## Multi-Machine Mesh Coordination (New in v3.4.48)
|
|
420
|
+
|
|
421
|
+
Run SLM on multiple machines (M4 + M5) and have your agents coordinate as one team without any disruption.
|
|
422
|
+
|
|
423
|
+
### Setup
|
|
424
|
+
|
|
425
|
+
**M4 (broker):**
|
|
426
|
+
```bash
|
|
427
|
+
export SLM_MESH_HOST=192.168.1.100
|
|
428
|
+
export SLM_MESH_SHARED_SECRET=my-secret-key
|
|
429
|
+
slm init # Starts SLM at http://192.168.1.100:8765
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
**M5 (client):**
|
|
433
|
+
```bash
|
|
434
|
+
export SLM_MESH_PEER_URL=http://192.168.1.100:8765
|
|
435
|
+
export SLM_MESH_SHARED_SECRET=my-secret-key
|
|
436
|
+
slm init # Syncs M4's agents every 30s, proxies messages to M4
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
### How It Works
|
|
440
|
+
|
|
441
|
+
- **HTTP-based sync** — M5 queries M4's `/mesh/peers` endpoint every 30 seconds
|
|
442
|
+
- **Message proxying** — When M5's agent sends a message to an M4 agent, it's routed automatically
|
|
443
|
+
- **mDNS discovery (optional)** — M5 can auto-discover M4 on the LAN via `_slm-mesh._tcp` (enable with `SLM_MESH_DISCOVERY=on`, default)
|
|
444
|
+
- **Graceful fallback** — Network errors logged but don't crash; offline agents queue messages for delivery
|
|
445
|
+
- **Shared secret** — `SLM_MESH_SHARED_SECRET` gates remote peer discovery (required for remote mode)
|
|
446
|
+
|
|
447
|
+
### Environment Variables
|
|
448
|
+
|
|
449
|
+
| Variable | Default | Purpose |
|
|
450
|
+
|:---------|:--------|:--------|
|
|
451
|
+
| `SLM_MESH_HOST` | `127.0.0.1` | Host this SLM listens on (set to IP for remote) |
|
|
452
|
+
| `SLM_MESH_PEER_URL` | unset | Full URL of remote SLM (e.g., `http://192.168.1.100:8765`) |
|
|
453
|
+
| `SLM_MESH_SHARED_SECRET` | unset | Auth secret (required when remote) |
|
|
454
|
+
| `SLM_MESH_DISCOVERY` | `on` | mDNS discovery (`on`/`off`) |
|
|
455
|
+
| `SLM_MESH_WS_PORT` | `7900` | WebSocket port for mesh (internal use) |
|
|
456
|
+
|
|
457
|
+
### Dependencies
|
|
458
|
+
|
|
459
|
+
- `zeroconf>=0.140` (new in v3.4.48, optional, pure Python, auto-installed)
|
|
460
|
+
- `httpx==0.28.1` (already in core deps)
|
|
461
|
+
- No Docker. No external broker. Works on WiFi + LAN.
|
|
462
|
+
|
|
463
|
+
### MCP Tools
|
|
464
|
+
|
|
465
|
+
All 8 mesh tools work seamlessly across machines:
|
|
466
|
+
|
|
467
|
+
| Tool | Description |
|
|
468
|
+
|:-----|:------------|
|
|
469
|
+
| `mesh_peers` | List local + remote peers merged |
|
|
470
|
+
| `mesh_send` | Send message to any peer (local or remote) |
|
|
471
|
+
| `mesh_broadcast` | Send to all agents (across machines) |
|
|
472
|
+
| `mesh_project` | Send to all agents in a project (across machines) |
|
|
473
|
+
| `mesh_inbox` | Get messages for this agent |
|
|
474
|
+
| `mesh_pending` | Get offline messages (broadcast/project) |
|
|
475
|
+
| `mesh_state` | Get/set shared state (replicated) |
|
|
476
|
+
| `mesh_lock` | Acquire/release distributed file locks |
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
419
480
|
## Features
|
|
420
481
|
|
|
421
482
|
### Retrieval
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "superlocalmemory"
|
|
3
|
-
version = "3.4.
|
|
3
|
+
version = "3.4.48"
|
|
4
4
|
description = "Information-geometric agent memory with mathematical guarantees"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = {text = "AGPL-3.0-or-later"}
|
|
@@ -45,6 +45,7 @@ dependencies = [
|
|
|
45
45
|
"fastapi[all]==0.136.1",
|
|
46
46
|
"uvicorn==0.46.0",
|
|
47
47
|
"websockets==16.0",
|
|
48
|
+
"zeroconf>=0.140",
|
|
48
49
|
"lightgbm==4.6.0",
|
|
49
50
|
"orjson==3.11.9",
|
|
50
51
|
"tree-sitter==0.25.2",
|
|
@@ -54,10 +55,12 @@ dependencies = [
|
|
|
54
55
|
"psutil==7.2.2",
|
|
55
56
|
"structlog==25.5.0",
|
|
56
57
|
"portalocker==3.2.0",
|
|
57
|
-
# Semantic search + cross-encoder reranker.
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
|
|
58
|
+
# Semantic search + cross-encoder reranker. Do NOT use
|
|
59
|
+
# sentence-transformers[onnx] — its extras pull optimum which
|
|
60
|
+
# overrides the sentence-transformers pin via transitive deps.
|
|
61
|
+
# Pin all three explicitly instead.
|
|
62
|
+
"sentence-transformers==5.3.0",
|
|
63
|
+
"optimum==2.1.0",
|
|
61
64
|
"onnxruntime==1.24.4",
|
|
62
65
|
"transformers==4.57.6",
|
|
63
66
|
"huggingface_hub==0.36.2",
|
|
@@ -72,8 +75,9 @@ dependencies = [
|
|
|
72
75
|
# moved into core in v3.4.18. ``pip install superlocalmemory[search]`` still
|
|
73
76
|
# works but installs nothing extra.
|
|
74
77
|
search = [
|
|
75
|
-
# Same hard pin as core deps —
|
|
76
|
-
"sentence-transformers
|
|
78
|
+
# Same hard pin as core deps — no [onnx] extra.
|
|
79
|
+
"sentence-transformers==5.3.0",
|
|
80
|
+
"optimum==2.1.0",
|
|
77
81
|
"einops==0.8.2",
|
|
78
82
|
"torch==2.11.0",
|
|
79
83
|
"scikit-learn==1.8.0",
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""SuperLocalMemory — information-geometric agent memory."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
os.environ.setdefault("KMP_DUPLICATE_LIB_OK", "TRUE")
|
|
5
|
+
|
|
6
|
+
__version__ = "3.4.46"
|
|
7
|
+
|
|
8
|
+
_REQUIRED_VERSIONS = {
|
|
9
|
+
"sentence_transformers": "5.3.0",
|
|
10
|
+
"onnxruntime": "1.24.4",
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _check_critical_deps() -> None:
|
|
15
|
+
"""Warn if embedding-critical packages have wrong versions."""
|
|
16
|
+
import warnings
|
|
17
|
+
for mod_name, expected in _REQUIRED_VERSIONS.items():
|
|
18
|
+
try:
|
|
19
|
+
mod = __import__(mod_name)
|
|
20
|
+
actual = getattr(mod, "__version__", None)
|
|
21
|
+
if actual and actual != expected:
|
|
22
|
+
warnings.warn(
|
|
23
|
+
f"SuperLocalMemory requires {mod_name}=={expected} but "
|
|
24
|
+
f"{actual} is installed. This causes memory blow-up on "
|
|
25
|
+
f"Apple Silicon. Fix: pip install {mod_name}=={expected}",
|
|
26
|
+
stacklevel=2,
|
|
27
|
+
)
|
|
28
|
+
except ImportError:
|
|
29
|
+
pass
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# Only run the dep check when a full (non-LIGHT) engine is in use.
|
|
33
|
+
# The MCP server runs in LIGHT mode — importing onnxruntime here
|
|
34
|
+
# breaks the LIGHT engine contract (ONNX_LOADED must stay False).
|
|
35
|
+
# Skip when SLM_SKIP_DEP_CHECK=1 or SLM_DISABLE_WARMUP_SIDE_EFFECTS=1.
|
|
36
|
+
if not (
|
|
37
|
+
os.environ.get("SLM_SKIP_DEP_CHECK") == "1"
|
|
38
|
+
or os.environ.get("SLM_DISABLE_WARMUP_SIDE_EFFECTS") == "1"
|
|
39
|
+
):
|
|
40
|
+
_check_critical_deps()
|
{superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/recall_worker.py
RENAMED
|
@@ -59,10 +59,12 @@ def _get_engine():
|
|
|
59
59
|
return _engine
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
def _handle_recall(
|
|
62
|
+
def _handle_recall(
|
|
63
|
+
query: str, limit: int, session_id: str = "", fast: bool = False,
|
|
64
|
+
) -> dict:
|
|
63
65
|
engine = _get_engine()
|
|
64
66
|
response = engine.recall(
|
|
65
|
-
query, limit=limit, session_id=session_id or None,
|
|
67
|
+
query, limit=limit, session_id=session_id or None, fast=bool(fast),
|
|
66
68
|
)
|
|
67
69
|
|
|
68
70
|
# Batch-fetch original memory text for all results
|
|
@@ -290,7 +292,7 @@ def _worker_main() -> None:
|
|
|
290
292
|
if cmd == "recall":
|
|
291
293
|
result = _handle_recall(
|
|
292
294
|
req.get("query", ""), req.get("limit", 10),
|
|
293
|
-
req.get("session_id", ""),
|
|
295
|
+
req.get("session_id", ""), bool(req.get("fast", False)),
|
|
294
296
|
)
|
|
295
297
|
_respond(result)
|
|
296
298
|
elif cmd == "store":
|
{superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/core/worker_pool.py
RENAMED
|
@@ -67,6 +67,7 @@ class WorkerPool:
|
|
|
67
67
|
|
|
68
68
|
def recall(
|
|
69
69
|
self, query: str, limit: int = 10, session_id: str = "",
|
|
70
|
+
fast: bool = False,
|
|
70
71
|
) -> dict:
|
|
71
72
|
"""Run recall in worker subprocess. Returns result dict.
|
|
72
73
|
|
|
@@ -77,7 +78,7 @@ class WorkerPool:
|
|
|
77
78
|
"""
|
|
78
79
|
return self._send({
|
|
79
80
|
"cmd": "recall", "query": query, "limit": limit,
|
|
80
|
-
"session_id": session_id or "",
|
|
81
|
+
"session_id": session_id or "", "fast": bool(fast),
|
|
81
82
|
})
|
|
82
83
|
|
|
83
84
|
def store(self, content: str, metadata: dict | None = None) -> dict:
|
|
@@ -273,6 +273,10 @@ class LLMBackbone:
|
|
|
273
273
|
headers = {
|
|
274
274
|
"x-api-key": self._api_key,
|
|
275
275
|
"anthropic-version": _ANTHROPIC_API_VERSION,
|
|
276
|
+
# Enable prompt caching — system prompt cached as ephemeral block.
|
|
277
|
+
# Requires ≥1024 tokens in the cached block to activate.
|
|
278
|
+
# Savings: ~90% cost reduction on cached input tokens.
|
|
279
|
+
"anthropic-beta": "prompt-caching-2024-07-31",
|
|
276
280
|
"Content-Type": "application/json",
|
|
277
281
|
}
|
|
278
282
|
payload: dict[str, Any] = {
|
|
@@ -282,7 +286,14 @@ class LLMBackbone:
|
|
|
282
286
|
"messages": [{"role": "user", "content": prompt}],
|
|
283
287
|
}
|
|
284
288
|
if system:
|
|
285
|
-
|
|
289
|
+
# Structured block with cache_control — plain string disables caching.
|
|
290
|
+
payload["system"] = [
|
|
291
|
+
{
|
|
292
|
+
"type": "text",
|
|
293
|
+
"text": system,
|
|
294
|
+
"cache_control": {"type": "ephemeral"},
|
|
295
|
+
}
|
|
296
|
+
]
|
|
286
297
|
return _ANTHROPIC_URL, headers, payload
|
|
287
298
|
|
|
288
299
|
def _build_azure(
|
{superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/_daemon_proxy.py
RENAMED
|
@@ -45,10 +45,14 @@ class DaemonPoolProxy:
|
|
|
45
45
|
|
|
46
46
|
def recall(
|
|
47
47
|
self, query: str, limit: int = 10, session_id: str = "",
|
|
48
|
+
fast: bool = False,
|
|
48
49
|
) -> dict[str, Any]:
|
|
49
|
-
params = urllib.parse.urlencode(
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
params = urllib.parse.urlencode({
|
|
51
|
+
"q": query,
|
|
52
|
+
"limit": limit,
|
|
53
|
+
"session_id": session_id or "",
|
|
54
|
+
"fast": "true" if fast else "false",
|
|
55
|
+
})
|
|
52
56
|
try:
|
|
53
57
|
with urllib.request.urlopen(
|
|
54
58
|
self._url(f"/recall?{params}"), timeout=self._timeout,
|
{superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/_pool_adapter.py
RENAMED
|
@@ -74,12 +74,17 @@ def _unwrap_error(raw: Any, op: str) -> None:
|
|
|
74
74
|
raise PoolError(f"pool.{op} failed: {reason}")
|
|
75
75
|
|
|
76
76
|
|
|
77
|
-
def pool_recall(query: str, limit: int = 10, **
|
|
77
|
+
def pool_recall(query: str, limit: int = 10, **kwargs: Any) -> PoolRecallResponse:
|
|
78
78
|
"""Call pool.recall and reshape its dict into a typed response.
|
|
79
79
|
|
|
80
80
|
Raises :class:`PoolError` on worker death or any non-ok envelope.
|
|
81
81
|
"""
|
|
82
|
-
raw = _pool().recall(
|
|
82
|
+
raw = _pool().recall(
|
|
83
|
+
query=query,
|
|
84
|
+
limit=limit,
|
|
85
|
+
session_id=str(kwargs.get("session_id") or ""),
|
|
86
|
+
fast=bool(kwargs.get("fast", False)),
|
|
87
|
+
)
|
|
83
88
|
_unwrap_error(raw, "recall")
|
|
84
89
|
items = raw.get("results", []) if isinstance(raw, dict) else []
|
|
85
90
|
results = [
|
|
@@ -19,6 +19,10 @@ _os.environ.setdefault('PYTORCH_MPS_MEM_LIMIT', '0')
|
|
|
19
19
|
_os.environ.setdefault('PYTORCH_ENABLE_MPS_FALLBACK', '1')
|
|
20
20
|
_os.environ.setdefault('TOKENIZERS_PARALLELISM', 'false')
|
|
21
21
|
_os.environ.setdefault('TORCH_DEVICE', 'cpu')
|
|
22
|
+
# LIGHT engine contract: suppress the top-level dep check in __init__.py
|
|
23
|
+
# that unconditionally imports onnxruntime. MCP runs LIGHT-only — ONNX
|
|
24
|
+
# must never load in this process.
|
|
25
|
+
_os.environ.setdefault('SLM_SKIP_DEP_CHECK', '1')
|
|
22
26
|
|
|
23
27
|
import logging
|
|
24
28
|
import sys
|
|
@@ -122,13 +126,21 @@ _ESSENTIAL_TOOLS = frozenset(_ESSENTIAL_TOOLS)
|
|
|
122
126
|
|
|
123
127
|
_all_tools = _os_reg.environ.get("SLM_MCP_ALL_TOOLS") == "1"
|
|
124
128
|
|
|
129
|
+
# v3.4.45: Minimal mode — explicit user allowlist via SLM_MCP_TOOLS env var.
|
|
130
|
+
# Format: comma-separated tool names, e.g. "remember,recall,session_init,search"
|
|
131
|
+
# Use case: Claude Code consumer plans with tight context budgets where the
|
|
132
|
+
# 25-tool essential set is still too many. Power users override to expose
|
|
133
|
+
# exactly the tools they invoke. Falls back to _ESSENTIAL_TOOLS when unset.
|
|
134
|
+
_user_allowlist_str = _os_reg.environ.get("SLM_MCP_TOOLS", "").strip()
|
|
135
|
+
|
|
125
136
|
|
|
126
137
|
class _FilteredServer:
|
|
127
138
|
"""Wraps FastMCP to only register essential tools.
|
|
128
139
|
|
|
129
140
|
Non-essential tools are silently skipped (not registered on the MCP
|
|
130
141
|
server). They remain available via CLI. When SLM_MCP_ALL_TOOLS=1,
|
|
131
|
-
all tools are registered (bypass filter).
|
|
142
|
+
all tools are registered (bypass filter). When SLM_MCP_TOOLS is set,
|
|
143
|
+
that user allowlist is used instead of _ESSENTIAL_TOOLS.
|
|
132
144
|
"""
|
|
133
145
|
__slots__ = ("_server", "_allowed")
|
|
134
146
|
|
|
@@ -147,8 +159,14 @@ class _FilteredServer:
|
|
|
147
159
|
return getattr(self._server, name)
|
|
148
160
|
|
|
149
161
|
|
|
150
|
-
# Choose
|
|
151
|
-
|
|
162
|
+
# Choose registration target (precedence: ALL > user allowlist > essential)
|
|
163
|
+
if _all_tools:
|
|
164
|
+
_target = server
|
|
165
|
+
elif _user_allowlist_str:
|
|
166
|
+
_user_allowlist = frozenset(t.strip() for t in _user_allowlist_str.split(",") if t.strip())
|
|
167
|
+
_target = _FilteredServer(server, _user_allowlist)
|
|
168
|
+
else:
|
|
169
|
+
_target = _FilteredServer(server, _ESSENTIAL_TOOLS)
|
|
152
170
|
|
|
153
171
|
from superlocalmemory.mcp.tools_core import register_core_tools
|
|
154
172
|
from superlocalmemory.mcp.tools_v28 import register_v28_tools
|
{superlocalmemory-3.4.44 → superlocalmemory-3.4.48}/src/superlocalmemory/mcp/tools_active.py
RENAMED
|
@@ -93,7 +93,6 @@ def register_active_tools(server, get_engine: Callable) -> None:
|
|
|
93
93
|
The AI should call this automatically before any other work.
|
|
94
94
|
"""
|
|
95
95
|
try:
|
|
96
|
-
from superlocalmemory.hooks.auto_recall import AutoRecall
|
|
97
96
|
from superlocalmemory.hooks.rules_engine import RulesEngine
|
|
98
97
|
from superlocalmemory.mcp._pool_adapter import pool_recall
|
|
99
98
|
|
|
@@ -104,21 +103,37 @@ def register_active_tools(server, get_engine: Callable) -> None:
|
|
|
104
103
|
return {"success": True, "context": "", "memories": [], "message": "Auto-recall disabled"}
|
|
105
104
|
|
|
106
105
|
recall_config = rules.get_recall_config()
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
106
|
+
relevance_threshold = recall_config.get("relevance_threshold", 0.3)
|
|
107
|
+
if query:
|
|
108
|
+
search_query = query
|
|
109
|
+
elif project_path:
|
|
110
|
+
search_query = f"project context {project_path}"
|
|
111
|
+
else:
|
|
112
|
+
search_query = "recent important decisions"
|
|
113
|
+
|
|
114
|
+
response = pool_recall(search_query, limit=max_results, fast=True)
|
|
115
|
+
relevant = [
|
|
116
|
+
r for r in response.results
|
|
117
|
+
if r.score >= relevance_threshold
|
|
118
|
+
]
|
|
119
|
+
|
|
120
|
+
# Build both return shapes from one recall. Calling recall twice
|
|
121
|
+
# doubles session startup latency and can return duplicate snippets.
|
|
122
|
+
context = ""
|
|
123
|
+
if relevant:
|
|
124
|
+
lines = ["# Relevant Memory Context", ""]
|
|
125
|
+
for r in relevant[:max_results]:
|
|
126
|
+
lines.append(f"- {r.fact.content[:200]}")
|
|
127
|
+
context = "\n".join(lines)
|
|
128
|
+
|
|
129
|
+
memories = [
|
|
130
|
+
{
|
|
131
|
+
"fact_id": r.fact.fact_id,
|
|
132
|
+
"content": r.fact.content[:300],
|
|
133
|
+
"score": round(r.score, 3),
|
|
134
|
+
}
|
|
135
|
+
for r in relevant[:max_results]
|
|
136
|
+
]
|
|
122
137
|
|
|
123
138
|
# Get learning status
|
|
124
139
|
pid = engine.profile_id
|
|
@@ -184,7 +199,6 @@ def register_active_tools(server, get_engine: Callable) -> None:
|
|
|
184
199
|
from superlocalmemory.hooks.rules_engine import RulesEngine
|
|
185
200
|
from superlocalmemory.mcp._pool_adapter import pool_store
|
|
186
201
|
|
|
187
|
-
engine = get_engine()
|
|
188
202
|
rules = RulesEngine()
|
|
189
203
|
|
|
190
204
|
auto = AutoCapture(
|
|
@@ -305,7 +319,6 @@ def register_active_tools(server, get_engine: Callable) -> None:
|
|
|
305
319
|
"""
|
|
306
320
|
try:
|
|
307
321
|
engine = get_engine()
|
|
308
|
-
pid = engine.profile_id
|
|
309
322
|
sid = session_id or getattr(engine, '_last_session_id', '')
|
|
310
323
|
if not sid:
|
|
311
324
|
return {"success": False, "error": "No session_id provided"}
|
|
@@ -13,10 +13,9 @@ Part of Qualixar | Author: Varun Pratap Bhardwaj
|
|
|
13
13
|
|
|
14
14
|
from __future__ import annotations
|
|
15
15
|
|
|
16
|
-
import json
|
|
17
16
|
import logging
|
|
18
17
|
from pathlib import Path
|
|
19
|
-
from typing import
|
|
18
|
+
from typing import Callable
|
|
20
19
|
|
|
21
20
|
from mcp.types import ToolAnnotations
|
|
22
21
|
|
|
@@ -111,7 +110,6 @@ def register_core_tools(server, get_engine: Callable) -> None:
|
|
|
111
110
|
Extracts atomic facts, resolves entities, builds graph edges,
|
|
112
111
|
and indexes for 4-channel retrieval.
|
|
113
112
|
"""
|
|
114
|
-
import asyncio
|
|
115
113
|
try:
|
|
116
114
|
# v3.4.32: Store-first pattern. Write to pending.db and return
|
|
117
115
|
# immediately. The daemon's pending-materializer thread drains
|
|
@@ -141,7 +139,7 @@ def register_core_tools(server, get_engine: Callable) -> None:
|
|
|
141
139
|
@server.tool(annotations=ToolAnnotations(readOnlyHint=True))
|
|
142
140
|
async def recall(
|
|
143
141
|
query: str, limit: int = 10, agent_id: str = "mcp_client",
|
|
144
|
-
session_id: str = "",
|
|
142
|
+
session_id: str = "", fast: bool = False,
|
|
145
143
|
) -> dict:
|
|
146
144
|
"""Search memories by semantic query with 4-channel retrieval, RRF fusion, and reranking.
|
|
147
145
|
|
|
@@ -153,8 +151,8 @@ def register_core_tools(server, get_engine: Callable) -> None:
|
|
|
153
151
|
"""
|
|
154
152
|
import asyncio
|
|
155
153
|
try:
|
|
156
|
-
from superlocalmemory.
|
|
157
|
-
pool =
|
|
154
|
+
from superlocalmemory.mcp._daemon_proxy import choose_pool
|
|
155
|
+
pool = choose_pool()
|
|
158
156
|
# S9-DASH-10: priority for session_id, so engagement
|
|
159
157
|
# signals land on the right pending_outcome:
|
|
160
158
|
# 1. Explicit ``session_id`` tool-call argument.
|
|
@@ -199,6 +197,7 @@ def register_core_tools(server, get_engine: Callable) -> None:
|
|
|
199
197
|
# block behind a single threading.Lock. See worker_pool.py.
|
|
200
198
|
result = await asyncio.to_thread(
|
|
201
199
|
pool.recall, query, limit=limit, session_id=effective_sid,
|
|
200
|
+
fast=bool(fast),
|
|
202
201
|
)
|
|
203
202
|
if result.get("ok"):
|
|
204
203
|
# Record implicit feedback: every returned result is a recall_hit
|
|
@@ -285,8 +285,8 @@ def register_v3_tools(server, get_engine: Callable) -> None:
|
|
|
285
285
|
limit: Maximum results (default 10).
|
|
286
286
|
"""
|
|
287
287
|
try:
|
|
288
|
-
from superlocalmemory.
|
|
289
|
-
raw =
|
|
288
|
+
from superlocalmemory.mcp._daemon_proxy import choose_pool
|
|
289
|
+
raw = choose_pool().recall(query=query, limit=limit)
|
|
290
290
|
items = raw.get("results", []) if isinstance(raw, dict) else []
|
|
291
291
|
results = []
|
|
292
292
|
for item in items[:limit]:
|