superlocalmemory 3.6.7__tar.gz → 3.6.9__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.6.7/src/superlocalmemory.egg-info → superlocalmemory-3.6.9}/PKG-INFO +1 -1
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/pyproject.toml +1 -1
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/__init__.py +1 -1
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/daemon.py +25 -3
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/config.py +28 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/engine.py +15 -4
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/health_monitor.py +32 -9
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools_active.py +40 -4
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools_core.py +6 -2
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools_mesh.py +37 -38
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/spreading_activation.py +8 -3
- superlocalmemory-3.6.9/src/superlocalmemory/server/recall_health.py +237 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/unified_daemon.py +79 -6
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9/src/superlocalmemory.egg-info}/PKG-INFO +1 -1
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory.egg-info/SOURCES.txt +1 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/AUTHORS.md +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/LICENSE +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/NOTICE +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/README.md +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/setup.cfg +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/attribution/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/attribution/signer.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/attribution/watermark.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/cache_cmd.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/commands.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/compress_cmd.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/context_commands.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/db_migrate.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/escape_hatch.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/help_cmd.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/json_output.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/main.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/optimize_cmd.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/optimize_constants.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/pending_store.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/post_install.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/proxy_cmd.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/service_installer.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/setup_wizard.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/version_banner.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/changes.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/communities.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/config.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/database.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/flows.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/graph_store.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/incremental.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/models.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/parser.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/resolver.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/search.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/service.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/code_graph/watcher.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/compliance/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/compliance/abac.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/compliance/audit.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/compliance/gdpr.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/compliance/lifecycle.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/compliance/retention.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/compliance/scheduler.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/backend_orchestrator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/block_hygiene.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/clock_monitor.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/consolidation_engine.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/context_cache.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/db_pool.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/embedding_worker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/embeddings.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/engine_capabilities.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/engine_lock.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/engine_wiring.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/error_catalog.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/error_envelope.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/fact_consolidator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/file_lock.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/graph_analyzer.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/graph_pruner.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/hooks.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/ingest_gate.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/injection.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/loop_watchdog.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/maintenance.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/mcp_embedder_proxy.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/modes.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/ollama_embedder.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/platform_utils.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/priority_queue.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/profiles.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/pruning_engine.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/queue_consumer.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/ram_lock.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/rate_limit.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/recall_gate.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/recall_pipeline.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/recall_queue.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/recall_worker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/registry.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/reranker_worker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/safe_fs.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/security_primitives.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/shadow_router.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/slm_disabled.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/slmignore.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/store_pipeline.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/summarizer.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/tier_manager.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/topic_signature.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/worker_pool.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/dynamics/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/auto_linker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/consolidator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/context_generator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/emotional.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/foresight.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/graph_builder.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/observation_builder.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/scene_builder.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/signal_inference.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/encoding/type_router.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/evolution/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/evolution/budget.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/evolution/evolution_store.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/evolution/triggers.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/evolution/types.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/graph/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/graph/cozo_backend.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/adapter_base.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/auto_capture.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/auto_recall.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/context_payload.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/ide_connector.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/rules_engine.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/session_registry.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/sync_loop.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/auth_middleware.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/backup.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/cache_manager.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/cloud_backup.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/event_bus.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/pid_manager.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/process_reaper.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/rate_limiter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ingestion/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ingestion/credentials.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ingestion/parsers.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/adaptive.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/arm_catalog.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/assertion_miner.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/bandit.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/bandit_cache.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/behavioral.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/bootstrap.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/cross_project.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/database.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/engagement.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/ensemble.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/entity_compiler.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/features.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/feedback.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/labeler.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/legacy_migration.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/lightgbm_subprocess.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/memory_merge.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/model_cache.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/model_rollback.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/outcome_queue.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/outcomes.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/pattern_miner.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/project_context.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/ranker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/ranker_common.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/reward.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/reward_archive.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/reward_boost.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/reward_proxy.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/shadow_test.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/signal_worker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/signals.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/source_quality.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/trigram_index.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/learning/workflows.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/llm/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/llm/backbone.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/math/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/math/ebbinghaus.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/math/fisher.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/math/fisher_quantized.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/math/hopfield.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/math/langevin.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/math/polar_quant.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/math/qjl.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/math/sheaf.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/math/turbo_quant.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/_stdin_guard.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/resources.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/server.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/shared.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools_context.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools_learning.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools_v28.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools_v3.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mcp/tools_v33.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mesh/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mesh/broker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/mesh/remote_sync.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/migrations/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/adapters/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/adapters/_agent_registry.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/adapters/anthropic_adapter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/adapters/openai_adapter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/adapters/wrap.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/cache/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/cache/boundary_store.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/cache/centroid_store.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/cache/context_key.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/cache/exact.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/cache/invalidation.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/cache/key_builder.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/cache/manager.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/cache/semantic.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/cache/stampede.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/compress/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/compress/align.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/compress/ccr.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/compress/extractive_code.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/compress/extractive_json.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/compress/prose_llmlingua.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/compress/router.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/config/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/config/defaults.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/config/schema.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/config/store.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/metrics/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/metrics/counters.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/metrics/estimator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/metrics/exporters.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/metrics/persistence.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/proxy/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/proxy/_helpers.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/proxy/anthropic_surface.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/proxy/gemini_surface.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/proxy/lifecycle.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/proxy/openai_surface.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/proxy/server.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/storage/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/storage/db.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/optimize/storage/schema.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/parameterization/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/agentic.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/ann_index.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/engine.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/fusion.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/reranker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/strategy.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/retrieval/vector_store.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/api.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/bandit_loops.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/middleware/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/recall_serializer.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/adapters.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/agents.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/backup.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/behavioral.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/brain.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/chat.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/compliance.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/data_io.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/entity.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/events.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/evolution.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/helpers.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/ingest.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/insights.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/learning.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/memories.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/mesh.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/optimize.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/prewarm.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/profiles.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/stats.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/tiers.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/timeline.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/token.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/v3_api.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/routes/ws.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/security_middleware.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/server/ui.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/access_control.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/access_log.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/database.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migration_runner.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migration_v33.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/migrations.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/models.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/quantized_store.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/schema.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/schema_v32.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/schema_v3410.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/schema_v3411.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/schema_v343.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/schema_v345.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/schema_v347.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/storage/v2_migrator.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/trust/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/trust/gate.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/trust/provenance.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/trust/scorer.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/trust/signals.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/css/brain.css +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/index.html +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/agents.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/brain.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/clusters.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/compliance.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/core.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/dashboard.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/events.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/feedback.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/ide-status.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/init.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/math-health.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/memories.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/modal.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/ng-health.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/optimize.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/profiles.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/search.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/settings.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/timeline.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/vector/__init__.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/vector/lancedb_backend.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory.egg-info/requires.txt +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory.egg-info/top_level.txt +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_auto_hooks.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_before_web_hook.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_behavioral_full.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_claude_hooks.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_cli_core.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_cli_json.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_cli_v33.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_compliance_full.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_config_system.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_engine_hooks.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_event_bus.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_features.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_final_locomo_mini.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_graph_integrity.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_hook_handlers.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_ide_connector.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_infra.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_injection.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_learning_advanced.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_learning_collectors.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_llm_provider.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_mcp_server.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_migration.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_mode_switch_preservation.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_post_install.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_ranker.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_topic_shift_hook.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_trust_full.py +0 -0
- {superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/tests/test_v3_api.py +0 -0
|
@@ -28,7 +28,7 @@ if "OMP_NUM_THREADS" not in os.environ:
|
|
|
28
28
|
os.environ["OMP_NUM_THREADS"] = "2"
|
|
29
29
|
# ---------------------------------------------------------------------------
|
|
30
30
|
|
|
31
|
-
__version__ = "3.6.
|
|
31
|
+
__version__ = "3.6.9"
|
|
32
32
|
|
|
33
33
|
_REQUIRED_VERSIONS = {
|
|
34
34
|
"sentence_transformers": "5.3.0",
|
|
@@ -34,7 +34,10 @@ from threading import Thread
|
|
|
34
34
|
|
|
35
35
|
logger = logging.getLogger(__name__)
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
try:
|
|
38
|
+
_DEFAULT_PORT = int(os.environ.get("SLM_DAEMON_PORT", "") or 8765)
|
|
39
|
+
except ValueError:
|
|
40
|
+
_DEFAULT_PORT = 8765
|
|
38
41
|
_LEGACY_PORT = 8767 # backward-compat redirect
|
|
39
42
|
_DEFAULT_IDLE_TIMEOUT = 0 # v3.4.3: 24/7 default (was 1800)
|
|
40
43
|
_PID_FILE = Path.home() / ".superlocalmemory" / "daemon.pid"
|
|
@@ -160,7 +163,13 @@ def _start_daemon_subprocess() -> bool:
|
|
|
160
163
|
return True
|
|
161
164
|
|
|
162
165
|
import subprocess
|
|
163
|
-
|
|
166
|
+
# v3.6.9 (#33): pass SLM_DAEMON_PORT as explicit --port= so the daemon
|
|
167
|
+
# binds the right port even when the env var reaches the subprocess.
|
|
168
|
+
_target_port = _DEFAULT_PORT
|
|
169
|
+
cmd = [
|
|
170
|
+
sys.executable, "-m", "superlocalmemory.server.unified_daemon",
|
|
171
|
+
"--start", f"--port={_target_port}",
|
|
172
|
+
]
|
|
164
173
|
log_dir = Path.home() / ".superlocalmemory" / "logs"
|
|
165
174
|
log_dir.mkdir(parents=True, exist_ok=True)
|
|
166
175
|
log_file = log_dir / "daemon.log"
|
|
@@ -187,7 +196,7 @@ def _start_daemon_subprocess() -> bool:
|
|
|
187
196
|
|
|
188
197
|
# Write PID immediately so other callers see it during warmup
|
|
189
198
|
_PID_FILE.write_text(str(proc.pid))
|
|
190
|
-
_PORT_FILE.write_text(str(
|
|
199
|
+
_PORT_FILE.write_text(str(_target_port))
|
|
191
200
|
|
|
192
201
|
return _wait_for_daemon(timeout=60)
|
|
193
202
|
|
|
@@ -237,6 +246,19 @@ def ensure_daemon() -> bool:
|
|
|
237
246
|
if is_daemon_running():
|
|
238
247
|
return True
|
|
239
248
|
|
|
249
|
+
# v3.6.9 (#36): TCP-level check catches a systemd-started daemon that
|
|
250
|
+
# has bound the port but hasn't written a PID file yet (e.g. different
|
|
251
|
+
# HOME for the service user vs. the SSH user). If the port is already
|
|
252
|
+
# bound, don't start a second daemon — wait for HTTP readiness instead.
|
|
253
|
+
try:
|
|
254
|
+
import socket as _socket
|
|
255
|
+
with _socket.socket(_socket.AF_INET, _socket.SOCK_STREAM) as _s:
|
|
256
|
+
_s.settimeout(1)
|
|
257
|
+
if _s.connect_ex(("127.0.0.1", _DEFAULT_PORT)) == 0:
|
|
258
|
+
return _wait_for_daemon(timeout=30)
|
|
259
|
+
except Exception:
|
|
260
|
+
pass
|
|
261
|
+
|
|
240
262
|
# Start unified daemon in background — delegated to helper so the
|
|
241
263
|
# same logic can be reused by callers that already hold the lock.
|
|
242
264
|
return _start_daemon_subprocess()
|
|
@@ -654,6 +654,25 @@ class AutoInvokeConfig:
|
|
|
654
654
|
relevance_threshold: float = 0.3 # Legacy compat with AutoRecall
|
|
655
655
|
|
|
656
656
|
|
|
657
|
+
# ---------------------------------------------------------------------------
|
|
658
|
+
# Health Config (v3.6.9 BUG-A)
|
|
659
|
+
# ---------------------------------------------------------------------------
|
|
660
|
+
|
|
661
|
+
@dataclass
|
|
662
|
+
class HealthConfig:
|
|
663
|
+
"""Health-monitor tuning knobs.
|
|
664
|
+
|
|
665
|
+
All values have safe defaults so an empty ``"health": {}`` JSON section
|
|
666
|
+
silently inherits them. The ``global_rss_budget_mb`` default is computed
|
|
667
|
+
at runtime (40% of physical RAM, floor 2500 MB) so low-RAM boxes keep the
|
|
668
|
+
old behaviour while large machines are never accidentally throttled.
|
|
669
|
+
"""
|
|
670
|
+
global_rss_budget_mb: int = 0 # 0 = compute at runtime (40% RAM, floor 2500)
|
|
671
|
+
heartbeat_timeout_sec: int = 60
|
|
672
|
+
health_check_interval_sec: int = 15
|
|
673
|
+
enable_structured_logging: bool = True
|
|
674
|
+
|
|
675
|
+
|
|
657
676
|
# ---------------------------------------------------------------------------
|
|
658
677
|
# Master Config
|
|
659
678
|
# ---------------------------------------------------------------------------
|
|
@@ -698,6 +717,7 @@ class SLMConfig:
|
|
|
698
717
|
graph_backend: str = "auto" # "auto" = cozo if pycozo installed, else sqlite
|
|
699
718
|
vector_backend: str = "auto" # "auto" = lancedb if installed, else sqlite-vec
|
|
700
719
|
evolution: EvolutionConfig = field(default_factory=EvolutionConfig)
|
|
720
|
+
health: HealthConfig = field(default_factory=HealthConfig)
|
|
701
721
|
|
|
702
722
|
# v3.4.3: Daemon configuration
|
|
703
723
|
daemon_idle_timeout: int = 0 # 0 = 24/7 (no auto-kill). >0 = seconds before auto-kill.
|
|
@@ -789,6 +809,14 @@ class SLMConfig:
|
|
|
789
809
|
if k in EvolutionConfig.__dataclass_fields__
|
|
790
810
|
})
|
|
791
811
|
|
|
812
|
+
# V3.6.9: Health monitor config (BUG-A — previously silently ignored)
|
|
813
|
+
hlth = data.get("health", {})
|
|
814
|
+
if hlth:
|
|
815
|
+
config.health = HealthConfig(**{
|
|
816
|
+
k: v for k, v in hlth.items()
|
|
817
|
+
if k in HealthConfig.__dataclass_fields__
|
|
818
|
+
})
|
|
819
|
+
|
|
792
820
|
# V3.4.65: Injection config (additive — defaults if missing from JSON)
|
|
793
821
|
inj = data.get("injection", {}) or {}
|
|
794
822
|
config.injection = InjectionConfig(
|
|
@@ -452,7 +452,9 @@ class MemoryEngine:
|
|
|
452
452
|
now = datetime.now(timezone.utc).isoformat()
|
|
453
453
|
record = MemoryRecord(
|
|
454
454
|
profile_id=self._profile_id, content=content,
|
|
455
|
-
session_date=now[:10],
|
|
455
|
+
session_date=now[:10],
|
|
456
|
+
session_id=(metadata or {}).get("session_id", ""),
|
|
457
|
+
metadata=metadata or {},
|
|
456
458
|
)
|
|
457
459
|
self._db.store_memory(record)
|
|
458
460
|
# Lightweight regex entities (matches store_pipeline verbatim path) so
|
|
@@ -520,13 +522,22 @@ class MemoryEngine:
|
|
|
520
522
|
on a background worker.
|
|
521
523
|
|
|
522
524
|
V3.4.40 (2026-05-09): ``fast=True`` skips the SpreadingActivation
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
525
|
+
channel. Deprecated in v3.6.9 — SA now completes in ~36ms after the
|
|
526
|
+
neighbor-cache fix; fast=True is slower than fast=False and reduces
|
|
527
|
+
recall quality. The parameter is accepted for backward compatibility
|
|
528
|
+
but is silently treated as False.
|
|
526
529
|
"""
|
|
527
530
|
self._require_full("recall")
|
|
528
531
|
self._ensure_init()
|
|
529
532
|
|
|
533
|
+
if fast:
|
|
534
|
+
logger.warning(
|
|
535
|
+
"fast=True is deprecated (v3.6.9): SpreadingActivation now "
|
|
536
|
+
"completes in ~36ms; fast mode is slower and reduces quality. "
|
|
537
|
+
"Pass fast=False (the default) to silence this warning."
|
|
538
|
+
)
|
|
539
|
+
fast = False
|
|
540
|
+
|
|
530
541
|
pid = profile_id or self._profile_id
|
|
531
542
|
|
|
532
543
|
from superlocalmemory.core.recall_pipeline import run_recall
|
{superlocalmemory-3.6.7 → superlocalmemory-3.6.9}/src/superlocalmemory/core/health_monitor.py
RENAMED
|
@@ -130,14 +130,26 @@ class HealthMonitor:
|
|
|
130
130
|
"superlocalmemory.core.reranker_worker",
|
|
131
131
|
"superlocalmemory.core.recall_worker",
|
|
132
132
|
)
|
|
133
|
+
# Workers that are LOAD-BEARING for recall quality — never kill these
|
|
134
|
+
# first; prefer killing the reranker (gracefully degrades) or GC instead.
|
|
135
|
+
_EMBEDDING_IDENTIFIER = "superlocalmemory.core.embedding_worker"
|
|
133
136
|
|
|
134
137
|
def __init__(
|
|
135
138
|
self,
|
|
136
|
-
global_rss_budget_mb: int =
|
|
139
|
+
global_rss_budget_mb: int = 0,
|
|
137
140
|
heartbeat_timeout_sec: int = 60,
|
|
138
141
|
check_interval_sec: int = 15,
|
|
139
142
|
enable_structured_logging: bool = True,
|
|
140
143
|
):
|
|
144
|
+
# Compute RAM-scaled default when 0 is passed (or when the caller
|
|
145
|
+
# explicitly passes 0 meaning "auto"). Floor at 2500 so low-RAM boxes
|
|
146
|
+
# keep the old conservative behaviour.
|
|
147
|
+
if global_rss_budget_mb <= 0:
|
|
148
|
+
if PSUTIL_AVAILABLE:
|
|
149
|
+
phys_mb = psutil.virtual_memory().total // (1024 * 1024)
|
|
150
|
+
global_rss_budget_mb = max(2500, int(phys_mb * 0.40))
|
|
151
|
+
else:
|
|
152
|
+
global_rss_budget_mb = 8000 # safe fallback when psutil absent
|
|
141
153
|
self._budget_mb = global_rss_budget_mb
|
|
142
154
|
self._heartbeat_timeout = heartbeat_timeout_sec
|
|
143
155
|
self._interval = check_interval_sec
|
|
@@ -207,7 +219,7 @@ class HealthMonitor:
|
|
|
207
219
|
slm_workers.append({
|
|
208
220
|
"pid": child.pid,
|
|
209
221
|
"rss_mb": round(rss_mb, 1),
|
|
210
|
-
"cmdline": cmdline[:
|
|
222
|
+
"cmdline": cmdline[:200],
|
|
211
223
|
})
|
|
212
224
|
except (psutil.NoSuchProcess, psutil.AccessDenied):
|
|
213
225
|
continue
|
|
@@ -225,22 +237,33 @@ class HealthMonitor:
|
|
|
225
237
|
budget_mb=self._budget_mb,
|
|
226
238
|
)
|
|
227
239
|
|
|
228
|
-
# RSS budget enforcement
|
|
240
|
+
# RSS budget enforcement — spare the embedding worker (load-bearing for
|
|
241
|
+
# recall quality). Kill the reranker first (degrades gracefully); only
|
|
242
|
+
# fall back to the embedder if it is the only worker remaining.
|
|
229
243
|
if total_rss_mb > self._budget_mb and slm_workers:
|
|
230
|
-
|
|
244
|
+
non_embedder = [
|
|
245
|
+
w for w in slm_workers
|
|
246
|
+
if self._EMBEDDING_IDENTIFIER not in w["cmdline"]
|
|
247
|
+
]
|
|
248
|
+
candidate = (
|
|
249
|
+
max(non_embedder, key=lambda w: w["rss_mb"])
|
|
250
|
+
if non_embedder
|
|
251
|
+
else max(slm_workers, key=lambda w: w["rss_mb"])
|
|
252
|
+
)
|
|
231
253
|
logger.warning(
|
|
232
|
-
"RSS budget exceeded (%.0fMB > %dMB). Killing
|
|
233
|
-
total_rss_mb, self._budget_mb,
|
|
254
|
+
"RSS budget exceeded (%.0fMB > %dMB). Killing worker PID %d (%.0fMB)",
|
|
255
|
+
total_rss_mb, self._budget_mb, candidate["pid"], candidate["rss_mb"],
|
|
234
256
|
)
|
|
235
257
|
log_structured(
|
|
236
258
|
level="warning",
|
|
237
259
|
operation="rss_budget_kill",
|
|
238
|
-
killed_pid=
|
|
239
|
-
killed_rss_mb=
|
|
260
|
+
killed_pid=candidate["pid"],
|
|
261
|
+
killed_rss_mb=candidate["rss_mb"],
|
|
240
262
|
total_rss_mb=round(total_rss_mb, 1),
|
|
263
|
+
spared_embedder=bool(non_embedder),
|
|
241
264
|
)
|
|
242
265
|
try:
|
|
243
|
-
psutil.Process(
|
|
266
|
+
psutil.Process(candidate["pid"]).terminate()
|
|
244
267
|
except psutil.NoSuchProcess:
|
|
245
268
|
pass
|
|
246
269
|
|
|
@@ -16,9 +16,12 @@ Part of Qualixar | Author: Varun Pratap Bhardwaj
|
|
|
16
16
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
+
import asyncio
|
|
20
|
+
import datetime
|
|
19
21
|
import logging
|
|
20
22
|
import os
|
|
21
23
|
import sqlite3
|
|
24
|
+
import uuid
|
|
22
25
|
from pathlib import Path
|
|
23
26
|
from typing import Callable
|
|
24
27
|
|
|
@@ -213,7 +216,13 @@ def register_active_tools(server, get_engine: Callable) -> None:
|
|
|
213
216
|
from superlocalmemory.mcp._pool_adapter import PoolError
|
|
214
217
|
degraded_mode = False
|
|
215
218
|
try:
|
|
216
|
-
|
|
219
|
+
# v3.6.9-audit: pool_recall uses blocking urllib under the hood
|
|
220
|
+
# (DaemonPoolProxy.recall → urllib.urlopen). Must run in a
|
|
221
|
+
# thread so the async MCP event loop is not stalled — same
|
|
222
|
+
# fix class as #34 mesh tools deadlock.
|
|
223
|
+
response = await asyncio.to_thread(
|
|
224
|
+
pool_recall, search_query, limit=max_results, fast=False,
|
|
225
|
+
)
|
|
217
226
|
except (PoolError, Exception) as exc:
|
|
218
227
|
logger.warning(
|
|
219
228
|
"session_init: daemon recall failed (%s) — using FTS5 emergency fallback. "
|
|
@@ -349,6 +358,13 @@ def register_active_tools(server, get_engine: Callable) -> None:
|
|
|
349
358
|
"session_init feedback_count read failed: %s", exc,
|
|
350
359
|
)
|
|
351
360
|
|
|
361
|
+
# v3.6.9 (#35): generate a stable session_id so clients can pass it
|
|
362
|
+
# to remember() and close_session() for proper session aggregation.
|
|
363
|
+
session_id = (
|
|
364
|
+
f"slm-{datetime.datetime.now(datetime.timezone.utc):%Y%m%d}"
|
|
365
|
+
f"-{uuid.uuid4().hex[:8]}"
|
|
366
|
+
)
|
|
367
|
+
|
|
352
368
|
# Register agent + emit event (v3.4.39: SLM_AGENT_ID env support)
|
|
353
369
|
agent_id = _get_agent_id()
|
|
354
370
|
_register_agent(agent_id, pid)
|
|
@@ -360,6 +376,7 @@ def register_active_tools(server, get_engine: Callable) -> None:
|
|
|
360
376
|
|
|
361
377
|
return {
|
|
362
378
|
"success": True,
|
|
379
|
+
"session_id": session_id,
|
|
363
380
|
"context": context,
|
|
364
381
|
"memories": memories[:max_results],
|
|
365
382
|
"memory_count": len(memories),
|
|
@@ -430,8 +447,11 @@ def register_active_tools(server, get_engine: Callable) -> None:
|
|
|
430
447
|
"confidence": round(decision.confidence, 3),
|
|
431
448
|
}
|
|
432
449
|
|
|
433
|
-
# Auto-store via engine
|
|
434
|
-
|
|
450
|
+
# Auto-store via engine.
|
|
451
|
+
# pool_store uses blocking urllib (DaemonPoolProxy) — run in
|
|
452
|
+
# thread so the MCP event loop stays unblocked (#34 class).
|
|
453
|
+
stored = await asyncio.to_thread(
|
|
454
|
+
auto.capture,
|
|
435
455
|
content,
|
|
436
456
|
category=decision.category,
|
|
437
457
|
metadata={"agent_id": agent_id, "source": "auto-observe"},
|
|
@@ -525,8 +545,24 @@ def register_active_tools(server, get_engine: Callable) -> None:
|
|
|
525
545
|
try:
|
|
526
546
|
engine = get_engine()
|
|
527
547
|
sid = session_id or getattr(engine, '_last_session_id', '')
|
|
548
|
+
# v3.6.9 (#35): _last_session_id was never assigned — fall back to
|
|
549
|
+
# querying the DB for the most recent session_id instead of silently
|
|
550
|
+
# returning summary_events_created: 0.
|
|
551
|
+
if not sid:
|
|
552
|
+
try:
|
|
553
|
+
db = getattr(engine, '_db', None) or getattr(engine, 'db', None)
|
|
554
|
+
if db and hasattr(db, 'execute'):
|
|
555
|
+
rows = db.execute(
|
|
556
|
+
"SELECT session_id FROM memories "
|
|
557
|
+
"WHERE session_id != '' ORDER BY created_at DESC LIMIT 1",
|
|
558
|
+
()
|
|
559
|
+
)
|
|
560
|
+
if rows:
|
|
561
|
+
sid = str(rows[0][0])
|
|
562
|
+
except Exception:
|
|
563
|
+
pass
|
|
528
564
|
if not sid:
|
|
529
|
-
return {"success": False, "error": "No session_id provided"}
|
|
565
|
+
return {"success": False, "error": "No session_id provided or found"}
|
|
530
566
|
count = engine.close_session(sid)
|
|
531
567
|
return {
|
|
532
568
|
"success": True,
|
|
@@ -122,9 +122,13 @@ def register_core_tools(server, get_engine: Callable) -> None:
|
|
|
122
122
|
# recall window so a parallel/next agent finds memories saved seconds ago.
|
|
123
123
|
# Falls back to pending.db only if the daemon is unreachable.
|
|
124
124
|
try:
|
|
125
|
+
import asyncio as _asyncio
|
|
125
126
|
from superlocalmemory.cli.daemon import daemon_request, is_daemon_running
|
|
126
|
-
|
|
127
|
-
|
|
127
|
+
# is_daemon_running() and daemon_request() both use blocking urllib
|
|
128
|
+
# against the same uvicorn server — run in threads so the MCP
|
|
129
|
+
# event loop stays unblocked (#34 class bug).
|
|
130
|
+
if await _asyncio.to_thread(is_daemon_running):
|
|
131
|
+
resp = await _asyncio.to_thread(daemon_request, "POST", "/remember", {
|
|
128
132
|
"content": content, "tags": tags, "metadata": meta,
|
|
129
133
|
})
|
|
130
134
|
if resp and (resp.get("fact_ids") is not None or resp.get("ok")):
|
|
@@ -16,6 +16,7 @@ Auto-heartbeat keeps the session alive as long as the MCP server is running.
|
|
|
16
16
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
+
import asyncio
|
|
19
20
|
import json
|
|
20
21
|
import logging
|
|
21
22
|
import os
|
|
@@ -141,20 +142,20 @@ def register_mesh_tools(server, get_engine: Callable) -> None:
|
|
|
141
142
|
global _SESSION_SUMMARY
|
|
142
143
|
_SESSION_SUMMARY = summary or "Active session"
|
|
143
144
|
|
|
144
|
-
_ensure_registered
|
|
145
|
+
await asyncio.to_thread(_ensure_registered)
|
|
145
146
|
|
|
146
147
|
# Update summary
|
|
147
|
-
result =
|
|
148
|
-
"
|
|
149
|
-
"summary": _SESSION_SUMMARY,
|
|
150
|
-
|
|
148
|
+
result = await asyncio.to_thread(
|
|
149
|
+
_mesh_request, "POST", "/summary",
|
|
150
|
+
{"peer_id": _PEER_ID, "summary": _SESSION_SUMMARY},
|
|
151
|
+
)
|
|
151
152
|
|
|
152
153
|
return {
|
|
153
154
|
"peer_id": _PEER_ID,
|
|
154
155
|
"summary": _SESSION_SUMMARY,
|
|
155
156
|
"project_path": _PROJECT_PATH,
|
|
156
|
-
"registered":
|
|
157
|
-
"heartbeat_active": _HEARTBEAT_THREAD is not None,
|
|
157
|
+
"registered": _REGISTERED,
|
|
158
|
+
"heartbeat_active": _HEARTBEAT_THREAD is not None and _HEARTBEAT_THREAD.is_alive(),
|
|
158
159
|
"broker_response": result,
|
|
159
160
|
}
|
|
160
161
|
|
|
@@ -165,8 +166,8 @@ def register_mesh_tools(server, get_engine: Callable) -> None:
|
|
|
165
166
|
Shows other Claude Code, Cursor, or AI agent sessions that are
|
|
166
167
|
connected to the same SLM mesh network.
|
|
167
168
|
"""
|
|
168
|
-
_ensure_registered
|
|
169
|
-
result = _mesh_request
|
|
169
|
+
await asyncio.to_thread(_ensure_registered)
|
|
170
|
+
result = await asyncio.to_thread(_mesh_request, "GET", "/peers")
|
|
170
171
|
peers = (result or {}).get("peers", [])
|
|
171
172
|
return {
|
|
172
173
|
"peers": peers,
|
|
@@ -185,12 +186,11 @@ def register_mesh_tools(server, get_engine: Callable) -> None:
|
|
|
185
186
|
- "project:/path/to/dir" (all sessions in that project directory)
|
|
186
187
|
message: The message content (max 4KB — use file paths for large data)
|
|
187
188
|
"""
|
|
188
|
-
_ensure_registered
|
|
189
|
-
result =
|
|
190
|
-
"
|
|
191
|
-
"to_peer": to,
|
|
192
|
-
|
|
193
|
-
})
|
|
189
|
+
await asyncio.to_thread(_ensure_registered)
|
|
190
|
+
result = await asyncio.to_thread(
|
|
191
|
+
_mesh_request, "POST", "/send",
|
|
192
|
+
{"from_peer": _PEER_ID, "to_peer": to, "content": message},
|
|
193
|
+
)
|
|
194
194
|
return result or {"error": "Failed to send message"}
|
|
195
195
|
|
|
196
196
|
@server.tool()
|
|
@@ -201,18 +201,19 @@ def register_mesh_tools(server, get_engine: Callable) -> None:
|
|
|
201
201
|
Broadcast/project messages are delivered to ALL matching sessions.
|
|
202
202
|
Messages auto-expire after 48 hours.
|
|
203
203
|
"""
|
|
204
|
-
_ensure_registered
|
|
204
|
+
await asyncio.to_thread(_ensure_registered)
|
|
205
205
|
project = _PROJECT_PATH or _detect_project_path()
|
|
206
|
-
messages =
|
|
207
|
-
"GET", f"/inbox/{_PEER_ID}?project_path={project}",
|
|
206
|
+
messages = await asyncio.to_thread(
|
|
207
|
+
_mesh_request, "GET", f"/inbox/{_PEER_ID}?project_path={project}",
|
|
208
208
|
)
|
|
209
209
|
msg_list = (messages or {}).get("messages", [])
|
|
210
210
|
# Auto-mark unread messages as read
|
|
211
211
|
unread_ids = [m["id"] for m in msg_list if not m.get("read")]
|
|
212
212
|
if unread_ids:
|
|
213
|
-
|
|
214
|
-
"
|
|
215
|
-
|
|
213
|
+
await asyncio.to_thread(
|
|
214
|
+
_mesh_request, "POST", f"/inbox/{_PEER_ID}/read",
|
|
215
|
+
{"message_ids": unread_ids},
|
|
216
|
+
)
|
|
216
217
|
return {
|
|
217
218
|
"messages": msg_list,
|
|
218
219
|
"count": len(msg_list),
|
|
@@ -231,21 +232,20 @@ def register_mesh_tools(server, get_engine: Callable) -> None:
|
|
|
231
232
|
value: Value to set (only for action="set")
|
|
232
233
|
action: "get" (read all or one key), "set" (write a key)
|
|
233
234
|
"""
|
|
234
|
-
_ensure_registered
|
|
235
|
+
await asyncio.to_thread(_ensure_registered)
|
|
235
236
|
|
|
236
237
|
if action == "set" and key:
|
|
237
|
-
result =
|
|
238
|
-
"
|
|
239
|
-
"value": value,
|
|
240
|
-
|
|
241
|
-
})
|
|
238
|
+
result = await asyncio.to_thread(
|
|
239
|
+
_mesh_request, "POST", "/state",
|
|
240
|
+
{"key": key, "value": value, "set_by": _PEER_ID},
|
|
241
|
+
)
|
|
242
242
|
return result or {"error": "Failed to set state"}
|
|
243
243
|
|
|
244
244
|
if key:
|
|
245
|
-
result = _mesh_request
|
|
245
|
+
result = await asyncio.to_thread(_mesh_request, "GET", f"/state/{key}")
|
|
246
246
|
return result or {"key": key, "value": None}
|
|
247
247
|
|
|
248
|
-
result = _mesh_request
|
|
248
|
+
result = await asyncio.to_thread(_mesh_request, "GET", "/state")
|
|
249
249
|
return result or {"state": {}}
|
|
250
250
|
|
|
251
251
|
@server.tool()
|
|
@@ -261,12 +261,11 @@ def register_mesh_tools(server, get_engine: Callable) -> None:
|
|
|
261
261
|
file_path: Path to the file
|
|
262
262
|
action: "query" (check lock), "acquire" (lock file), "release" (unlock)
|
|
263
263
|
"""
|
|
264
|
-
_ensure_registered
|
|
265
|
-
result =
|
|
266
|
-
"
|
|
267
|
-
"action": action,
|
|
268
|
-
|
|
269
|
-
})
|
|
264
|
+
await asyncio.to_thread(_ensure_registered)
|
|
265
|
+
result = await asyncio.to_thread(
|
|
266
|
+
_mesh_request, "POST", "/lock",
|
|
267
|
+
{"file_path": file_path, "action": action, "locked_by": _PEER_ID},
|
|
268
|
+
)
|
|
270
269
|
return result or {"error": "Lock operation failed"}
|
|
271
270
|
|
|
272
271
|
@server.tool(annotations=ToolAnnotations(readOnlyHint=True))
|
|
@@ -275,7 +274,7 @@ def register_mesh_tools(server, get_engine: Callable) -> None:
|
|
|
275
274
|
|
|
276
275
|
Shows the activity log of the mesh network.
|
|
277
276
|
"""
|
|
278
|
-
result = _mesh_request
|
|
277
|
+
result = await asyncio.to_thread(_mesh_request, "GET", "/events")
|
|
279
278
|
return result or {"events": []}
|
|
280
279
|
|
|
281
280
|
@server.tool(annotations=ToolAnnotations(readOnlyHint=True))
|
|
@@ -284,10 +283,10 @@ def register_mesh_tools(server, get_engine: Callable) -> None:
|
|
|
284
283
|
|
|
285
284
|
Shows broker uptime, peer count, and connection status.
|
|
286
285
|
"""
|
|
287
|
-
result = _mesh_request
|
|
286
|
+
result = await asyncio.to_thread(_mesh_request, "GET", "/status")
|
|
288
287
|
if result:
|
|
289
288
|
result["my_peer_id"] = _PEER_ID
|
|
290
|
-
result["heartbeat_active"] = _HEARTBEAT_THREAD is not None
|
|
289
|
+
result["heartbeat_active"] = _HEARTBEAT_THREAD is not None and _HEARTBEAT_THREAD.is_alive()
|
|
291
290
|
return result or {
|
|
292
291
|
"broker_up": False,
|
|
293
292
|
"error": "Cannot reach mesh broker. Is the daemon running? (slm serve start)",
|
|
@@ -170,8 +170,11 @@ class SpreadingActivation:
|
|
|
170
170
|
for fact_id, similarity in seeds:
|
|
171
171
|
activations[fact_id] = cfg.alpha * similarity
|
|
172
172
|
|
|
173
|
-
#
|
|
173
|
+
# Cache neighbor lookups and out-degrees across iterations — same node
|
|
174
|
+
# often survives multiple rounds via self-retention (delta=0.5);
|
|
175
|
+
# caching here cuts ~80% of SQL queries vs per-iteration re-query.
|
|
174
176
|
degree_cache: dict[str, int] = {}
|
|
177
|
+
neighbor_cache: dict[str, list] = {}
|
|
175
178
|
|
|
176
179
|
# Steps 2-4, repeated T times
|
|
177
180
|
for _iteration in range(cfg.max_iterations):
|
|
@@ -181,8 +184,10 @@ class SpreadingActivation:
|
|
|
181
184
|
if activation < 0.001:
|
|
182
185
|
continue
|
|
183
186
|
|
|
184
|
-
# Get neighbors from BOTH tables (Rule 13)
|
|
185
|
-
|
|
187
|
+
# Get neighbors from BOTH tables (Rule 13) — cached per node
|
|
188
|
+
if node_id not in neighbor_cache:
|
|
189
|
+
neighbor_cache[node_id] = self._get_unified_neighbors(node_id, profile_id)
|
|
190
|
+
neighbors = neighbor_cache[node_id]
|
|
186
191
|
|
|
187
192
|
# Out-degree for fan effect normalization
|
|
188
193
|
if node_id not in degree_cache:
|