superlocalmemory 3.4.52__tar.gz → 3.4.53__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.52/src/superlocalmemory.egg-info → superlocalmemory-3.4.53}/PKG-INFO +1 -1
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/pyproject.toml +1 -1
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/__init__.py +1 -1
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/engine.py +56 -42
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/reranker.py +44 -27
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/unified_daemon.py +23 -1
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53/src/superlocalmemory.egg-info}/PKG-INFO +1 -1
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/AUTHORS.md +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/LICENSE +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/NOTICE +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/README.md +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/setup.cfg +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/attribution/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/attribution/signer.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/attribution/watermark.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/commands.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/context_commands.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/daemon.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/db_migrate.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/escape_hatch.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/json_output.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/main.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/pending_store.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/post_install.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/service_installer.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/setup_wizard.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/version_banner.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/changes.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/communities.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/config.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/database.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/flows.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/graph_store.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/incremental.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/models.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/parser.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/resolver.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/search.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/service.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/watcher.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/abac.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/audit.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/gdpr.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/lifecycle.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/retention.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/scheduler.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/backend_orchestrator.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/clock_monitor.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/config.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/consolidation_engine.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/context_cache.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/db_pool.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/embedding_worker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/embeddings.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/engine.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/engine_capabilities.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/engine_lock.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/engine_wiring.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/error_catalog.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/error_envelope.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/fact_consolidator.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/file_lock.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/graph_analyzer.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/graph_pruner.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/health_monitor.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/hooks.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/loop_watchdog.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/maintenance.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/modes.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/ollama_embedder.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/platform_utils.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/priority_queue.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/profiles.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/pruning_engine.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/queue_consumer.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/ram_lock.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/rate_limit.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/recall_gate.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/recall_pipeline.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/recall_queue.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/recall_worker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/registry.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/reranker_worker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/safe_fs.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/security_primitives.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/shadow_router.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/slm_disabled.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/slmignore.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/store_pipeline.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/summarizer.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/tier_manager.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/topic_signature.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/worker_pool.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/dynamics/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/auto_linker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/consolidator.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/context_generator.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/emotional.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/foresight.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/graph_builder.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/observation_builder.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/scene_builder.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/signal_inference.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/encoding/type_router.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/evolution/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/evolution/budget.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/evolution/evolution_store.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/evolution/triggers.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/evolution/types.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/graph/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/graph/cozo_backend.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/adapter_base.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/auto_capture.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/auto_recall.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/context_payload.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/ide_connector.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/rules_engine.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/session_registry.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/sync_loop.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/auth_middleware.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/backup.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/cache_manager.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/cloud_backup.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/event_bus.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/pid_manager.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/process_reaper.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/rate_limiter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ingestion/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ingestion/credentials.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ingestion/parsers.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/adaptive.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/arm_catalog.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/assertion_miner.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/bandit.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/bandit_cache.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/behavioral.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/bootstrap.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/cross_project.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/database.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/engagement.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/ensemble.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/entity_compiler.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/features.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/feedback.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/labeler.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/legacy_migration.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/memory_merge.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/model_cache.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/model_rollback.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/outcome_queue.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/outcomes.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/pattern_miner.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/project_context.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/ranker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/ranker_common.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/reward.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/reward_archive.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/reward_boost.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/reward_proxy.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/shadow_test.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/signal_worker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/signals.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/source_quality.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/trigram_index.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/learning/workflows.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/llm/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/llm/backbone.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/math/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/math/ebbinghaus.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/math/fisher.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/math/fisher_quantized.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/math/hopfield.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/math/langevin.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/math/polar_quant.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/math/qjl.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/math/sheaf.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/math/turbo_quant.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/resources.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/server.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/shared.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools_active.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools_context.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools_core.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools_learning.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools_v28.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools_v3.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mcp/tools_v33.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mesh/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mesh/broker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/mesh/remote_sync.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/migrations/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/parameterization/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/agentic.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/ann_index.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/fusion.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/strategy.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/vector_store.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/api.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/bandit_loops.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/middleware/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/adapters.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/agents.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/backup.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/behavioral.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/brain.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/chat.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/compliance.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/data_io.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/entity.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/events.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/evolution.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/helpers.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/ingest.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/insights.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/learning.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/memories.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/mesh.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/prewarm.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/profiles.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/stats.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/tiers.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/timeline.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/token.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/v3_api.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/routes/ws.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/security_middleware.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/ui.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/access_control.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/access_log.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/database.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migration_runner.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migration_v33.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/migrations.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/models.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/quantized_store.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/schema.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/schema_v32.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/schema_v3410.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/schema_v3411.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/schema_v343.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/schema_v345.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/schema_v347.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/storage/v2_migrator.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/trust/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/trust/gate.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/trust/provenance.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/trust/scorer.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/trust/signals.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/css/brain.css +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/index.html +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/agents.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/brain.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/clusters.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/compliance.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/core.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/dashboard.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/events.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/feedback.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/ide-status.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/init.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/math-health.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/memories.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/modal.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/ng-health.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/profiles.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/search.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/settings.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/timeline.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/vector/__init__.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/vector/lancedb_backend.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory.egg-info/SOURCES.txt +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory.egg-info/requires.txt +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory.egg-info/top_level.txt +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_auto_hooks.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_before_web_hook.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_behavioral_full.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_claude_hooks.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_cli.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_cli_json.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_cli_v33.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_compliance_full.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_config_system.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_engine_hooks.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_event_bus.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_features.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_final_locomo_mini.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_hook_handlers.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_ide_connector.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_infra.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_learning_advanced.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_learning_collectors.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_llm_provider.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_mcp_server.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_migration.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_mode_switch_preservation.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_post_install.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_ranker.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_topic_shift_hook.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_trust_full.py +0 -0
- {superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/tests/test_v3_api.py +0 -0
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/engine.py
RENAMED
|
@@ -451,7 +451,17 @@ class RetrievalEngine:
|
|
|
451
451
|
def _run_channels(
|
|
452
452
|
self, query: str, profile_id: str, strat: QueryStrategy,
|
|
453
453
|
) -> dict[str, list[tuple[str, float]]]:
|
|
454
|
-
"""Run active retrieval channels.
|
|
454
|
+
"""Run active retrieval channels.
|
|
455
|
+
|
|
456
|
+
v3.4.53: channels run in PARALLEL via ThreadPoolExecutor. Industry
|
|
457
|
+
standard (EverMemOS, szl-recall, ContentPilot 2026): all channels
|
|
458
|
+
are independent after embedding; running them serially wastes time
|
|
459
|
+
equal to the sum of all channel latencies. Parallel execution brings
|
|
460
|
+
total channel time from sum(semantic+bm25+entity+temporal+hopfield+sa)
|
|
461
|
+
down to max(semantic,bm25,entity,temporal,hopfield,sa) — roughly a
|
|
462
|
+
3-5x speedup for the channel phase.
|
|
463
|
+
"""
|
|
464
|
+
import concurrent.futures
|
|
455
465
|
out: dict[str, list[tuple[str, float]]] = {}
|
|
456
466
|
# Skip channels listed in disabled_channels (ablation support)
|
|
457
467
|
# V3.4.40: union with per-recall extra_disabled set (e.g. --fast skip)
|
|
@@ -475,51 +485,55 @@ class RetrievalEngine:
|
|
|
475
485
|
except Exception as exc:
|
|
476
486
|
logger.warning("Query embedding failed: %s", exc)
|
|
477
487
|
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
out["semantic"] = r
|
|
483
|
-
except Exception as exc:
|
|
484
|
-
logger.warning("Semantic channel: %s", exc)
|
|
485
|
-
|
|
486
|
-
if self._bm25 is not None and "bm25" not in disabled:
|
|
487
|
-
try:
|
|
488
|
-
r = self._bm25.search(query, profile_id, self._config.bm25_top_k)
|
|
489
|
-
if r:
|
|
490
|
-
out["bm25"] = r
|
|
491
|
-
except Exception as exc:
|
|
492
|
-
logger.warning("BM25 channel: %s", exc)
|
|
493
|
-
|
|
494
|
-
# V3.4.12: entity_graph is now a signal enhancer (post-RRF boost),
|
|
495
|
-
# not an independent channel. Removed from channel execution to avoid
|
|
496
|
-
# running spreading activation twice. See score_candidates() in engine.recall().
|
|
497
|
-
|
|
498
|
-
if self._temporal is not None and "temporal" not in disabled:
|
|
499
|
-
try:
|
|
500
|
-
r = self._temporal.search(query, profile_id, top_k=self._config.bm25_top_k)
|
|
501
|
-
if r:
|
|
502
|
-
out["temporal"] = r
|
|
503
|
-
except Exception as exc:
|
|
504
|
-
logger.warning("Temporal channel: %s", exc)
|
|
488
|
+
# v3.4.53: collect channel callables and run in parallel.
|
|
489
|
+
# Each channel is a standalone search — no shared mutable state,
|
|
490
|
+
# no ordering dependencies. SQLite WAL mode permits concurrent reads.
|
|
491
|
+
futures: dict[str, concurrent.futures.Future] = {}
|
|
505
492
|
|
|
506
|
-
|
|
507
|
-
|
|
493
|
+
def _safe_channel(name: str, fn, *args):
|
|
494
|
+
"""Run a single channel, returning (name, result_or_None)."""
|
|
508
495
|
try:
|
|
509
|
-
|
|
510
|
-
if
|
|
511
|
-
out["hopfield"] = r
|
|
496
|
+
res = fn(*args)
|
|
497
|
+
return (name, res if res else None)
|
|
512
498
|
except Exception as exc:
|
|
513
|
-
logger.warning("
|
|
499
|
+
logger.warning("%s channel: %s", name, exc)
|
|
500
|
+
return (name, None)
|
|
501
|
+
|
|
502
|
+
with concurrent.futures.ThreadPoolExecutor(max_workers=6) as executor:
|
|
503
|
+
if self._semantic is not None and q_emb is not None and "semantic" not in disabled:
|
|
504
|
+
futures["semantic"] = executor.submit(
|
|
505
|
+
_safe_channel, "semantic",
|
|
506
|
+
self._semantic.search, q_emb, profile_id, self._config.semantic_top_k,
|
|
507
|
+
)
|
|
508
|
+
if self._bm25 is not None and "bm25" not in disabled:
|
|
509
|
+
futures["bm25"] = executor.submit(
|
|
510
|
+
_safe_channel, "bm25",
|
|
511
|
+
self._bm25.search, query, profile_id, self._config.bm25_top_k,
|
|
512
|
+
)
|
|
513
|
+
if self._temporal is not None and "temporal" not in disabled:
|
|
514
|
+
futures["temporal"] = executor.submit(
|
|
515
|
+
_safe_channel, "temporal",
|
|
516
|
+
self._temporal.search, query, profile_id, self._config.bm25_top_k,
|
|
517
|
+
)
|
|
518
|
+
if self._hopfield is not None and q_emb is not None and "hopfield" not in disabled:
|
|
519
|
+
futures["hopfield"] = executor.submit(
|
|
520
|
+
_safe_channel, "hopfield",
|
|
521
|
+
self._hopfield.search, q_emb, profile_id, self._config.hopfield_top_k,
|
|
522
|
+
)
|
|
523
|
+
if self._spreading_activation is not None and q_emb is not None and "spreading_activation" not in disabled:
|
|
524
|
+
futures["spreading_activation"] = executor.submit(
|
|
525
|
+
_safe_channel, "spreading_activation",
|
|
526
|
+
self._spreading_activation.search, q_emb, profile_id, self._config.bm25_top_k,
|
|
527
|
+
)
|
|
514
528
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
529
|
+
# Collect results as channels complete
|
|
530
|
+
for name, fut in futures.items():
|
|
531
|
+
try:
|
|
532
|
+
ch_name, result = fut.result(timeout=30)
|
|
533
|
+
if result:
|
|
534
|
+
out[ch_name] = result
|
|
535
|
+
except Exception as exc:
|
|
536
|
+
logger.warning("Channel %s timed out or failed: %s", name, exc)
|
|
523
537
|
|
|
524
538
|
# Apply registered post-retrieval filters (forgetting filter, etc.)
|
|
525
539
|
if hasattr(self, '_registry') and self._registry._filters:
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/retrieval/reranker.py
RENAMED
|
@@ -56,7 +56,11 @@ _IDLE_TIMEOUT_SECONDS = 300 # V3.4.37: 5 min (was 30) — balance cold-start vs
|
|
|
56
56
|
# V3.4.19: Bumped from 120 → 1800 in lock-step with the embedding worker.
|
|
57
57
|
# Set ``SLM_RERANKER_IDLE_TIMEOUT=120`` + ``slm restart`` to revert.
|
|
58
58
|
_IDLE_TIMEOUT_SECONDS = int(os.environ.get("SLM_RERANKER_IDLE_TIMEOUT", _IDLE_TIMEOUT_SECONDS))
|
|
59
|
-
_SUBPROCESS_RESPONSE_TIMEOUT =
|
|
59
|
+
_SUBPROCESS_RESPONSE_TIMEOUT = 15 # v3.4.52: 15s (was 180s). Long timeout blocked the
|
|
60
|
+
# entire FastAPI event loop — a dead reranker subprocess held ALL
|
|
61
|
+
# endpoints hostage for 3 minutes. 15s is enough for ONNX inference
|
|
62
|
+
# cold start; if the worker can't respond, we fall back to fusion
|
|
63
|
+
# scores without reranking.
|
|
60
64
|
_WORKER_RECYCLE_AFTER = 500 # Recycle after N requests
|
|
61
65
|
|
|
62
66
|
|
|
@@ -231,16 +235,26 @@ class CrossEncoderReranker:
|
|
|
231
235
|
logger.warning("Failed to spawn reranker worker: %s", exc)
|
|
232
236
|
self._worker_proc = None
|
|
233
237
|
|
|
234
|
-
def _send_request(self, req: dict, timeout: float | None = None
|
|
238
|
+
def _send_request(self, req: dict, timeout: float | None = None,
|
|
239
|
+
block: bool = True) -> dict | None:
|
|
235
240
|
"""Send JSON request to worker, get response. Thread-safe.
|
|
236
241
|
|
|
237
242
|
Uses a short timeout (10s) for rerank requests since the model
|
|
238
243
|
should already be loaded by the background warmup. Uses the full
|
|
239
244
|
timeout only for explicit load/ping commands.
|
|
245
|
+
|
|
246
|
+
v3.4.52: when ``block=False``, uses ``try_lock`` instead of
|
|
247
|
+
``lock.acquire()``. If another thread is already using the
|
|
248
|
+
reranker subprocess, returns ``None`` immediately (the caller
|
|
249
|
+
falls back to fusion scores without reranking). This prevents
|
|
250
|
+
concurrent recall requests from serialising on the lock.
|
|
240
251
|
"""
|
|
241
252
|
effective_timeout = timeout or _SUBPROCESS_RESPONSE_TIMEOUT
|
|
242
253
|
|
|
243
|
-
|
|
254
|
+
acquired = self._lock.acquire(blocking=block)
|
|
255
|
+
if not acquired:
|
|
256
|
+
return None # another request is using the subprocess
|
|
257
|
+
try:
|
|
244
258
|
if self._request_count >= _WORKER_RECYCLE_AFTER and self._worker_proc is not None:
|
|
245
259
|
logger.info("Recycling reranker worker after %d requests", self._request_count)
|
|
246
260
|
self._kill_worker()
|
|
@@ -253,31 +267,32 @@ class CrossEncoderReranker:
|
|
|
253
267
|
if self._worker_proc is None:
|
|
254
268
|
return None
|
|
255
269
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
self._worker_proc.stdin.flush()
|
|
270
|
+
msg = json.dumps(req) + "\n"
|
|
271
|
+
self._worker_proc.stdin.write(msg)
|
|
272
|
+
self._worker_proc.stdin.flush()
|
|
260
273
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
self._kill_worker()
|
|
268
|
-
self._model_loaded = False
|
|
269
|
-
return None
|
|
270
|
-
|
|
271
|
-
resp = json.loads(resp_line)
|
|
272
|
-
self._reset_idle_timer()
|
|
273
|
-
self._request_count += 1
|
|
274
|
-
return resp
|
|
275
|
-
except (BrokenPipeError, OSError, json.JSONDecodeError) as exc:
|
|
276
|
-
logger.warning("Reranker worker communication failed: %s", exc)
|
|
274
|
+
resp_line = self._readline_with_timeout(
|
|
275
|
+
self._worker_proc.stdout,
|
|
276
|
+
effective_timeout,
|
|
277
|
+
)
|
|
278
|
+
if not resp_line:
|
|
279
|
+
logger.warning("Reranker worker timed out after %ds", effective_timeout)
|
|
277
280
|
self._kill_worker()
|
|
278
281
|
self._model_loaded = False
|
|
279
282
|
return None
|
|
280
283
|
|
|
284
|
+
resp = json.loads(resp_line)
|
|
285
|
+
self._reset_idle_timer()
|
|
286
|
+
self._request_count += 1
|
|
287
|
+
return resp
|
|
288
|
+
except (BrokenPipeError, OSError, json.JSONDecodeError) as exc:
|
|
289
|
+
logger.warning("Reranker worker communication failed: %s", exc)
|
|
290
|
+
self._kill_worker()
|
|
291
|
+
self._model_loaded = False
|
|
292
|
+
return None
|
|
293
|
+
finally:
|
|
294
|
+
self._lock.release()
|
|
295
|
+
|
|
281
296
|
@staticmethod
|
|
282
297
|
def _readline_with_timeout(stream: Any, timeout_seconds: float) -> str:
|
|
283
298
|
"""Read a line from stream with timeout. Returns '' on timeout."""
|
|
@@ -363,14 +378,16 @@ class CrossEncoderReranker:
|
|
|
363
378
|
|
|
364
379
|
documents = [fact.content for fact, _ in candidates]
|
|
365
380
|
|
|
366
|
-
#
|
|
367
|
-
#
|
|
368
|
-
#
|
|
381
|
+
# v3.4.53: block=False — if another recall is using the reranker
|
|
382
|
+
# subprocess, skip reranking and return fusion scores directly.
|
|
383
|
+
# This prevents concurrent recalls from serialising on the lock.
|
|
384
|
+
# 15s timeout (was 180s) — warm ONNX inference takes ~100ms; if
|
|
385
|
+
# the worker can't respond in 15s it's dead and we fall back.
|
|
369
386
|
resp = self._send_request({
|
|
370
387
|
"cmd": "rerank",
|
|
371
388
|
"query": query,
|
|
372
389
|
"documents": documents,
|
|
373
|
-
}, timeout=
|
|
390
|
+
}, timeout=15.0, block=False)
|
|
374
391
|
|
|
375
392
|
if resp is None or not resp.get("ok"):
|
|
376
393
|
# Fallback: return by existing score
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/server/unified_daemon.py
RENAMED
|
@@ -156,6 +156,13 @@ from superlocalmemory.core.recall_gate import (
|
|
|
156
156
|
# daemon startup via engine._process_pending_memories().
|
|
157
157
|
_engine = None
|
|
158
158
|
|
|
159
|
+
# v3.4.53: Limit concurrent full (non-fast) recalls. Without this, N parallel
|
|
160
|
+
# /recall calls spawn N × 6-channel threads → Ollama serialises, reranker
|
|
161
|
+
# lock queues, and total wall time is N × single-recall-time. 3 concurrent
|
|
162
|
+
# full recalls gives parallelism benefit without resource oversaturation.
|
|
163
|
+
import asyncio as _asyncio
|
|
164
|
+
_recall_semaphore = _asyncio.Semaphore(3)
|
|
165
|
+
|
|
159
166
|
# v3.4.52: Embedding model warm state. Set to True by the async pre-warm
|
|
160
167
|
# thread once Ollama has loaded the embedding model. /health reports this
|
|
161
168
|
# so MCP clients can wait for warm state before issuing recall calls.
|
|
@@ -1167,9 +1174,22 @@ def _register_daemon_routes(application: FastAPI) -> None:
|
|
|
1167
1174
|
import time as _t
|
|
1168
1175
|
effective_sid = f"http:{int(_t.time() * 1000)}"
|
|
1169
1176
|
# v3.4.32: mark recall in-flight so the pending materializer pauses
|
|
1177
|
+
# v3.4.52: run engine.recall() in a thread-pool executor so the
|
|
1178
|
+
# FastAPI event loop stays responsive for /health, /remember, and
|
|
1179
|
+
# concurrent /recall requests. Without this, a single slow full
|
|
1180
|
+
# recall (reranker timeout, cold embedder) blocks ALL endpoints.
|
|
1181
|
+
import asyncio
|
|
1170
1182
|
_begin_recall()
|
|
1183
|
+
# v3.4.53: Full (non-fast) recalls are gated by a semaphore to
|
|
1184
|
+
# prevent resource oversaturation. Ollama serialises concurrent
|
|
1185
|
+
# embedding calls and the reranker subprocess has a single lock —
|
|
1186
|
+
# queuing more than ~3 concurrent full recalls just adds latency.
|
|
1187
|
+
# Fast recalls (SQLite/BM25 only) skip the semaphore.
|
|
1188
|
+
if not fast:
|
|
1189
|
+
await _recall_semaphore.acquire()
|
|
1171
1190
|
try:
|
|
1172
|
-
response =
|
|
1191
|
+
response = await asyncio.to_thread(
|
|
1192
|
+
engine.recall,
|
|
1173
1193
|
search_query, limit=limit, session_id=effective_sid,
|
|
1174
1194
|
fast=fast,
|
|
1175
1195
|
)
|
|
@@ -1228,6 +1248,8 @@ def _register_daemon_routes(application: FastAPI) -> None:
|
|
|
1228
1248
|
except Exception as exc:
|
|
1229
1249
|
raise HTTPException(500, detail=str(exc))
|
|
1230
1250
|
finally:
|
|
1251
|
+
if not fast:
|
|
1252
|
+
_recall_semaphore.release()
|
|
1231
1253
|
_end_recall()
|
|
1232
1254
|
|
|
1233
1255
|
@application.post("/remember")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/attribution/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/attribution/signer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/attribution/watermark.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/context_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/escape_hatch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/pending_store.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/post_install.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/service_installer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/setup_wizard.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/version_banner.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/cli/wizard_v3426_options.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/__init__.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/blast_radius.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/changes.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/communities.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/config.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/database.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/flows.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/git_hooks.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/graph_engine.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/graph_store.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/incremental.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/models.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/parser.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/resolver.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/search.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/service.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/code_graph/watcher.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/audit.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/eu_ai_act.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/lifecycle.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/retention.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/compliance/scheduler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/clock_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/context_cache.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/embedding_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/engine_capabilities.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/engine_lock.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/engine_wiring.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/error_catalog.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/error_envelope.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/fact_consolidator.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/graph_analyzer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/graph_pruner.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/health_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/loop_watchdog.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/maintenance.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/ollama_embedder.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/platform_utils.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/priority_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/pruning_engine.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/queue_consumer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/queue_dispatcher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/recall_gate.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/recall_pipeline.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/recall_queue.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/recall_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/reranker_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/security_primitives.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/shadow_router.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/slm_disabled.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/store_pipeline.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/tier_manager.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/topic_signature.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/core/worker_pool.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.52 → superlocalmemory-3.4.53}/src/superlocalmemory/dynamics/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|