superlocalmemory 3.4.35__tar.gz → 3.4.36__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.35/src/superlocalmemory.egg-info → superlocalmemory-3.4.36}/PKG-INFO +1 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/pyproject.toml +1 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/__init__.py +1 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/auto_recall_hook.py +32 -0
- superlocalmemory-3.4.36/src/superlocalmemory/hooks/hook_daemon.py +276 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/unified_daemon.py +19 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36/src/superlocalmemory.egg-info}/PKG-INFO +1 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory.egg-info/SOURCES.txt +1 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/AUTHORS.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/LICENSE +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/NOTICE +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/README.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/setup.cfg +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/attribution/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/attribution/signer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/attribution/watermark.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/commands.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/context_commands.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/daemon.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/db_migrate.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/escape_hatch.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/json_output.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/main.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/pending_store.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/post_install.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/service_installer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/setup_wizard.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/version_banner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/changes.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/communities.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/config.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/database.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/flows.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/graph_store.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/incremental.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/models.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/parser.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/resolver.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/search.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/service.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/watcher.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/abac.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/audit.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/gdpr.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/lifecycle.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/retention.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/scheduler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/clock_monitor.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/config.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/consolidation_engine.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/context_cache.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/db_pool.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/embedding_worker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/embeddings.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/engine.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/engine_capabilities.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/engine_lock.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/engine_wiring.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/error_catalog.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/error_envelope.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/fact_consolidator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/file_lock.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/graph_analyzer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/graph_pruner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/health_monitor.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/loop_watchdog.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/maintenance.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/modes.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/ollama_embedder.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/platform_utils.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/priority_queue.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/profiles.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/queue_consumer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/ram_lock.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/rate_limit.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/recall_gate.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/recall_pipeline.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/recall_queue.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/recall_worker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/registry.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/reranker_worker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/safe_fs.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/security_primitives.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/shadow_router.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/slm_disabled.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/slmignore.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/store_pipeline.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/summarizer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/tier_manager.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/topic_signature.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/worker_pool.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/dynamics/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/auto_linker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/consolidator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/context_generator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/emotional.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/foresight.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/graph_builder.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/observation_builder.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/scene_builder.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/signal_inference.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/encoding/type_router.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/evolution/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/evolution/budget.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/evolution/evolution_store.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/evolution/triggers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/evolution/types.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/adapter_base.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/auto_capture.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/auto_recall.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/context_payload.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/ide_connector.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/rules_engine.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/session_registry.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/sync_loop.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/auth_middleware.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/backup.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/cache_manager.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/cloud_backup.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/event_bus.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/pid_manager.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/process_reaper.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/rate_limiter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ingestion/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ingestion/credentials.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ingestion/parsers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/adaptive.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/arm_catalog.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/assertion_miner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/bandit.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/bandit_cache.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/behavioral.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/bootstrap.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/cross_project.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/database.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/engagement.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/ensemble.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/entity_compiler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/features.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/feedback.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/labeler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/legacy_migration.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/memory_merge.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/model_cache.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/model_rollback.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/outcome_queue.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/outcomes.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/pattern_miner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/project_context.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/ranker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/ranker_common.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/reward.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/reward_archive.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/reward_boost.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/reward_proxy.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/shadow_test.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/signal_worker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/signals.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/source_quality.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/trigram_index.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/learning/workflows.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/llm/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/llm/backbone.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/math/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/math/ebbinghaus.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/math/fisher.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/math/fisher_quantized.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/math/hopfield.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/math/langevin.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/math/polar_quant.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/math/qjl.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/math/sheaf.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/math/turbo_quant.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/resources.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/server.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/shared.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools_active.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools_context.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools_core.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools_learning.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools_v28.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools_v3.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mcp/tools_v33.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mesh/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/mesh/broker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/migrations/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/parameterization/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/agentic.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/ann_index.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/engine.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/fusion.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/reranker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/strategy.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/retrieval/vector_store.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/api.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/bandit_loops.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/middleware/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/adapters.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/agents.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/backup.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/behavioral.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/brain.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/chat.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/compliance.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/data_io.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/entity.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/events.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/evolution.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/helpers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/ingest.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/insights.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/learning.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/memories.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/mesh.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/prewarm.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/profiles.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/stats.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/tiers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/timeline.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/token.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/v3_api.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/routes/ws.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/security_middleware.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/ui.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/access_control.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/access_log.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/database.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migration_runner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migration_v33.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/migrations.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/models.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/quantized_store.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/schema.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/schema_v32.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/schema_v3410.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/schema_v3411.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/schema_v343.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/schema_v347.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/storage/v2_migrator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/trust/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/trust/gate.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/trust/provenance.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/trust/scorer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/trust/signals.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/css/brain.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/index.html +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/agents.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/brain.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/clusters.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/compliance.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/core.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/dashboard.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/events.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/feedback.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/ide-status.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/init.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/math-health.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/memories.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/modal.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/ng-health.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/profiles.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/search.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/settings.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/timeline.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory.egg-info/requires.txt +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory.egg-info/top_level.txt +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_auto_hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_behavioral_full.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_claude_hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_cli.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_cli_json.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_cli_v33.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_compliance_full.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_config_system.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_engine_hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_event_bus.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_features.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_final_locomo_mini.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_hook_handlers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_ide_connector.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_infra.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_learning_advanced.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_learning_collectors.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_llm_provider.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_mcp_server.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_migration.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_post_install.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_ranker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_trust_full.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/tests/test_v3_api.py +0 -0
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/hooks/auto_recall_hook.py
RENAMED
|
@@ -76,6 +76,30 @@ def _get_queue_db_path():
|
|
|
76
76
|
return slm_dir / "recall_queue.db"
|
|
77
77
|
|
|
78
78
|
|
|
79
|
+
def _try_socket_first(prompt: str, session_id: str) -> dict | None:
|
|
80
|
+
"""Try the persistent hook daemon socket. Returns full envelope or None.
|
|
81
|
+
|
|
82
|
+
The socket path returns an already-formatted Claude Code envelope.
|
|
83
|
+
If this returns a non-None dict, the caller writes it to stdout directly
|
|
84
|
+
(skip _do_recall + _format_envelope). Returns None on any failure,
|
|
85
|
+
triggering the subprocess fallback.
|
|
86
|
+
"""
|
|
87
|
+
try:
|
|
88
|
+
from superlocalmemory.hooks.hook_daemon import try_socket_recall
|
|
89
|
+
response = try_socket_recall(
|
|
90
|
+
prompt=prompt,
|
|
91
|
+
session_id=session_id,
|
|
92
|
+
timeout=_get_mode_timeout(_detect_mode()),
|
|
93
|
+
)
|
|
94
|
+
if response is None or not isinstance(response, dict):
|
|
95
|
+
return None
|
|
96
|
+
if not response:
|
|
97
|
+
return {}
|
|
98
|
+
return response
|
|
99
|
+
except Exception:
|
|
100
|
+
return None
|
|
101
|
+
|
|
102
|
+
|
|
79
103
|
def _do_recall(query: str, limit: int = _DEFAULT_LIMIT, session_id: str = "") -> list[dict] | None:
|
|
80
104
|
"""Enqueue recall to queue, poll for result. Returns list of dicts or None."""
|
|
81
105
|
try:
|
|
@@ -192,6 +216,14 @@ def main() -> int:
|
|
|
192
216
|
sys.stdout.write("{}")
|
|
193
217
|
return 0
|
|
194
218
|
|
|
219
|
+
try:
|
|
220
|
+
socket_result = _try_socket_first(prompt, session_id)
|
|
221
|
+
if socket_result is not None:
|
|
222
|
+
sys.stdout.write(json.dumps(socket_result) if socket_result else "{}")
|
|
223
|
+
return 0
|
|
224
|
+
except Exception:
|
|
225
|
+
pass
|
|
226
|
+
|
|
195
227
|
try:
|
|
196
228
|
results = _do_recall(prompt, limit=_DEFAULT_LIMIT, session_id=session_id)
|
|
197
229
|
except Exception:
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
# Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar
|
|
2
|
+
# Licensed under AGPL-3.0-or-later - see LICENSE file
|
|
3
|
+
# Part of SuperLocalMemory V3 | https://qualixar.com | https://varunpratap.com
|
|
4
|
+
|
|
5
|
+
"""Persistent hook daemon — Unix socket server for sub-200ms recall.
|
|
6
|
+
|
|
7
|
+
Eliminates Python subprocess startup (~300-500ms) by keeping a long-lived
|
|
8
|
+
process that Claude Code hooks talk to via Unix domain socket.
|
|
9
|
+
|
|
10
|
+
Protocol (newline-delimited JSON):
|
|
11
|
+
Client → {"prompt": "...", "session_id": "..."}\n
|
|
12
|
+
Server → {"hookSpecificOutput": {...}}\n (or {}\n for ack/empty)
|
|
13
|
+
|
|
14
|
+
MEMORY SAFETY: This module NEVER imports MemoryEngine. All recall goes
|
|
15
|
+
through recall_queue.db → QueueConsumer → pool.recall(). The hook daemon
|
|
16
|
+
stays at ~15-20MB RSS.
|
|
17
|
+
|
|
18
|
+
Lifecycle: started by unified_daemon.py alongside QueueConsumer. If it
|
|
19
|
+
crashes, auto_recall_hook.py falls back to subprocess (v3.4.35 path).
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
from __future__ import annotations
|
|
23
|
+
|
|
24
|
+
import json
|
|
25
|
+
import logging
|
|
26
|
+
import os
|
|
27
|
+
import socket
|
|
28
|
+
import threading
|
|
29
|
+
import time
|
|
30
|
+
from pathlib import Path
|
|
31
|
+
|
|
32
|
+
logger = logging.getLogger(__name__)
|
|
33
|
+
|
|
34
|
+
_DEFAULT_SOCK_NAME = "hook_daemon.sock"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _default_sock_path() -> Path:
|
|
38
|
+
return Path.home() / ".superlocalmemory" / _DEFAULT_SOCK_NAME
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _default_queue_db_path() -> Path:
|
|
42
|
+
return Path.home() / ".superlocalmemory" / "recall_queue.db"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class HookDaemon:
|
|
46
|
+
"""Unix socket server for persistent auto-recall.
|
|
47
|
+
|
|
48
|
+
Accepts newline-delimited JSON requests, runs the same logic as
|
|
49
|
+
auto_recall_hook.main() but without Python startup cost.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
def __init__(
|
|
53
|
+
self,
|
|
54
|
+
sock_path: Path | None = None,
|
|
55
|
+
queue_db_path: Path | None = None,
|
|
56
|
+
) -> None:
|
|
57
|
+
self._sock_path = sock_path or _default_sock_path()
|
|
58
|
+
self._queue_db_path = queue_db_path or _default_queue_db_path()
|
|
59
|
+
self._running = False
|
|
60
|
+
self._stop_event = threading.Event()
|
|
61
|
+
self._thread: threading.Thread | None = None
|
|
62
|
+
self._server_sock: socket.socket | None = None
|
|
63
|
+
self._queue = None
|
|
64
|
+
|
|
65
|
+
@property
|
|
66
|
+
def running(self) -> bool:
|
|
67
|
+
return self._running
|
|
68
|
+
|
|
69
|
+
def start(self) -> None:
|
|
70
|
+
if self._running:
|
|
71
|
+
return
|
|
72
|
+
if self._sock_path.exists():
|
|
73
|
+
self._sock_path.unlink()
|
|
74
|
+
|
|
75
|
+
from superlocalmemory.core.recall_queue import RecallQueue
|
|
76
|
+
self._queue = RecallQueue(self._queue_db_path)
|
|
77
|
+
|
|
78
|
+
self._server_sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
|
79
|
+
self._server_sock.bind(str(self._sock_path))
|
|
80
|
+
self._server_sock.listen(8)
|
|
81
|
+
self._server_sock.settimeout(1.0)
|
|
82
|
+
|
|
83
|
+
self._stop_event.clear()
|
|
84
|
+
self._running = True
|
|
85
|
+
self._thread = threading.Thread(
|
|
86
|
+
target=self._accept_loop,
|
|
87
|
+
daemon=True,
|
|
88
|
+
name="slm-hook-daemon",
|
|
89
|
+
)
|
|
90
|
+
self._thread.start()
|
|
91
|
+
logger.info("HookDaemon started on %s", self._sock_path)
|
|
92
|
+
|
|
93
|
+
def stop(self) -> None:
|
|
94
|
+
if not self._running:
|
|
95
|
+
return
|
|
96
|
+
self._stop_event.set()
|
|
97
|
+
self._running = False
|
|
98
|
+
if self._server_sock is not None:
|
|
99
|
+
try:
|
|
100
|
+
self._server_sock.close()
|
|
101
|
+
except Exception:
|
|
102
|
+
pass
|
|
103
|
+
self._server_sock = None
|
|
104
|
+
if self._thread is not None:
|
|
105
|
+
self._thread.join(timeout=3.0)
|
|
106
|
+
self._thread = None
|
|
107
|
+
if self._sock_path.exists():
|
|
108
|
+
try:
|
|
109
|
+
self._sock_path.unlink()
|
|
110
|
+
except Exception:
|
|
111
|
+
pass
|
|
112
|
+
if self._queue is not None:
|
|
113
|
+
try:
|
|
114
|
+
self._queue.close()
|
|
115
|
+
except Exception:
|
|
116
|
+
pass
|
|
117
|
+
self._queue = None
|
|
118
|
+
logger.info("HookDaemon stopped")
|
|
119
|
+
|
|
120
|
+
def _accept_loop(self) -> None:
|
|
121
|
+
while not self._stop_event.is_set():
|
|
122
|
+
try:
|
|
123
|
+
client, _ = self._server_sock.accept()
|
|
124
|
+
except socket.timeout:
|
|
125
|
+
continue
|
|
126
|
+
except OSError:
|
|
127
|
+
if self._stop_event.is_set():
|
|
128
|
+
break
|
|
129
|
+
continue
|
|
130
|
+
threading.Thread(
|
|
131
|
+
target=self._handle_client,
|
|
132
|
+
args=(client,),
|
|
133
|
+
daemon=True,
|
|
134
|
+
name="slm-hook-client",
|
|
135
|
+
).start()
|
|
136
|
+
|
|
137
|
+
def _handle_client(self, client: socket.socket) -> None:
|
|
138
|
+
try:
|
|
139
|
+
client.settimeout(30.0)
|
|
140
|
+
data = b""
|
|
141
|
+
while b"\n" not in data:
|
|
142
|
+
chunk = client.recv(4096)
|
|
143
|
+
if not chunk:
|
|
144
|
+
return
|
|
145
|
+
data += chunk
|
|
146
|
+
|
|
147
|
+
line = data.decode("utf-8").strip()
|
|
148
|
+
if not line:
|
|
149
|
+
client.sendall(b"{}\n")
|
|
150
|
+
return
|
|
151
|
+
|
|
152
|
+
try:
|
|
153
|
+
payload = json.loads(line)
|
|
154
|
+
except Exception:
|
|
155
|
+
client.sendall(b"{}\n")
|
|
156
|
+
return
|
|
157
|
+
|
|
158
|
+
response = self._process_request(payload)
|
|
159
|
+
client.sendall((json.dumps(response) + "\n").encode("utf-8"))
|
|
160
|
+
except Exception:
|
|
161
|
+
try:
|
|
162
|
+
client.sendall(b"{}\n")
|
|
163
|
+
except Exception:
|
|
164
|
+
pass
|
|
165
|
+
finally:
|
|
166
|
+
try:
|
|
167
|
+
client.close()
|
|
168
|
+
except Exception:
|
|
169
|
+
pass
|
|
170
|
+
|
|
171
|
+
def _process_request(self, payload: dict) -> dict:
|
|
172
|
+
from superlocalmemory.hooks.auto_recall_hook import (
|
|
173
|
+
_is_ack, _get_mode_timeout, _detect_mode, _format_envelope,
|
|
174
|
+
_DEFAULT_LIMIT,
|
|
175
|
+
)
|
|
176
|
+
from superlocalmemory.core.recall_queue import QueueTimeoutError
|
|
177
|
+
|
|
178
|
+
prompt = payload.get("prompt", "")
|
|
179
|
+
session_id = payload.get("session_id", "")
|
|
180
|
+
|
|
181
|
+
if not prompt or not isinstance(prompt, str):
|
|
182
|
+
return {}
|
|
183
|
+
|
|
184
|
+
if _is_ack(prompt):
|
|
185
|
+
return {}
|
|
186
|
+
|
|
187
|
+
try:
|
|
188
|
+
mode = _detect_mode()
|
|
189
|
+
timeout = _get_mode_timeout(mode)
|
|
190
|
+
stall_timeout = max(timeout - 5.0, 5.0)
|
|
191
|
+
|
|
192
|
+
request_id = self._queue.enqueue(
|
|
193
|
+
query=prompt,
|
|
194
|
+
limit_n=_DEFAULT_LIMIT,
|
|
195
|
+
mode=mode,
|
|
196
|
+
agent_id="hook_daemon",
|
|
197
|
+
session_id=session_id,
|
|
198
|
+
priority="high",
|
|
199
|
+
stall_timeout_s=stall_timeout,
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
result = self._queue.poll_result(request_id, timeout_s=timeout)
|
|
203
|
+
|
|
204
|
+
if isinstance(result, dict) and result.get("ok") is not False:
|
|
205
|
+
results = result.get("results", [])
|
|
206
|
+
if results:
|
|
207
|
+
return _format_envelope(results)
|
|
208
|
+
return {}
|
|
209
|
+
except (QueueTimeoutError, Exception):
|
|
210
|
+
return {}
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
def try_socket_recall(
|
|
214
|
+
sock_path: Path | None = None,
|
|
215
|
+
prompt: str = "",
|
|
216
|
+
session_id: str = "",
|
|
217
|
+
timeout: float = 15.0,
|
|
218
|
+
) -> dict | None:
|
|
219
|
+
"""Try to get recall result via the persistent hook daemon socket.
|
|
220
|
+
|
|
221
|
+
Returns the hook envelope dict on success, or None if the daemon
|
|
222
|
+
is unavailable (triggers subprocess fallback in auto_recall_hook).
|
|
223
|
+
"""
|
|
224
|
+
path = sock_path or _default_sock_path()
|
|
225
|
+
if not path.exists():
|
|
226
|
+
return None
|
|
227
|
+
|
|
228
|
+
try:
|
|
229
|
+
client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
|
230
|
+
client.settimeout(timeout)
|
|
231
|
+
client.connect(str(path))
|
|
232
|
+
|
|
233
|
+
request = json.dumps({"prompt": prompt, "session_id": session_id}) + "\n"
|
|
234
|
+
client.sendall(request.encode("utf-8"))
|
|
235
|
+
|
|
236
|
+
data = b""
|
|
237
|
+
while b"\n" not in data:
|
|
238
|
+
chunk = client.recv(8192)
|
|
239
|
+
if not chunk:
|
|
240
|
+
break
|
|
241
|
+
data += chunk
|
|
242
|
+
|
|
243
|
+
client.close()
|
|
244
|
+
|
|
245
|
+
if not data.strip():
|
|
246
|
+
return None
|
|
247
|
+
|
|
248
|
+
response = json.loads(data.decode("utf-8").strip())
|
|
249
|
+
return response if isinstance(response, dict) else None
|
|
250
|
+
except Exception:
|
|
251
|
+
return None
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
def ensure_hook_daemon(
|
|
255
|
+
sock_path: Path | None = None,
|
|
256
|
+
queue_db_path: Path | None = None,
|
|
257
|
+
) -> HookDaemon | None:
|
|
258
|
+
"""Start hook daemon if not already running. Returns daemon or None."""
|
|
259
|
+
path = sock_path or _default_sock_path()
|
|
260
|
+
|
|
261
|
+
if path.exists():
|
|
262
|
+
try:
|
|
263
|
+
test = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
|
264
|
+
test.settimeout(1.0)
|
|
265
|
+
test.connect(str(path))
|
|
266
|
+
test.close()
|
|
267
|
+
return None
|
|
268
|
+
except Exception:
|
|
269
|
+
pass
|
|
270
|
+
|
|
271
|
+
daemon = HookDaemon(
|
|
272
|
+
sock_path=path,
|
|
273
|
+
queue_db_path=queue_db_path or _default_queue_db_path(),
|
|
274
|
+
)
|
|
275
|
+
daemon.start()
|
|
276
|
+
return daemon
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/server/unified_daemon.py
RENAMED
|
@@ -438,6 +438,17 @@ async def lifespan(application: FastAPI):
|
|
|
438
438
|
application.state.queue_consumer = _queue_consumer
|
|
439
439
|
application.state.recall_queue = _recall_queue
|
|
440
440
|
logger.info("QueueConsumer started (recall_queue.db)")
|
|
441
|
+
|
|
442
|
+
# v3.4.36: Start persistent hook daemon (Unix socket server).
|
|
443
|
+
# Eliminates Python subprocess startup for each recall hook call.
|
|
444
|
+
try:
|
|
445
|
+
from superlocalmemory.hooks.hook_daemon import HookDaemon
|
|
446
|
+
_hook_daemon = HookDaemon(queue_db_path=_queue_db)
|
|
447
|
+
_hook_daemon.start()
|
|
448
|
+
application.state.hook_daemon = _hook_daemon
|
|
449
|
+
except Exception as _hd_exc:
|
|
450
|
+
logger.warning("HookDaemon start failed (non-fatal): %s", _hd_exc)
|
|
451
|
+
application.state.hook_daemon = None
|
|
441
452
|
except Exception as _qc_exc:
|
|
442
453
|
logger.warning("QueueConsumer start failed (non-fatal): %s", _qc_exc)
|
|
443
454
|
application.state.queue_consumer = None
|
|
@@ -592,6 +603,14 @@ async def lifespan(application: FastAPI):
|
|
|
592
603
|
except Exception as exc: # pragma: no cover — defensive
|
|
593
604
|
logger.warning("bandit_tasks cancel failed: %s", exc)
|
|
594
605
|
|
|
606
|
+
# v3.4.36: Stop HookDaemon (Unix socket server).
|
|
607
|
+
_hd = getattr(application.state, "hook_daemon", None)
|
|
608
|
+
if _hd is not None:
|
|
609
|
+
try:
|
|
610
|
+
_hd.stop()
|
|
611
|
+
except Exception as exc: # pragma: no cover — defensive
|
|
612
|
+
logger.warning("hook_daemon stop failed: %s", exc)
|
|
613
|
+
|
|
595
614
|
# v3.4.26: Stop QueueConsumer (recall_queue.db drainer).
|
|
596
615
|
_qc = getattr(application.state, "queue_consumer", None)
|
|
597
616
|
if _qc is not None:
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory.egg-info/SOURCES.txt
RENAMED
|
@@ -158,6 +158,7 @@ src/superlocalmemory/hooks/context_payload.py
|
|
|
158
158
|
src/superlocalmemory/hooks/copilot_adapter.py
|
|
159
159
|
src/superlocalmemory/hooks/cross_platform_connector.py
|
|
160
160
|
src/superlocalmemory/hooks/cursor_adapter.py
|
|
161
|
+
src/superlocalmemory/hooks/hook_daemon.py
|
|
161
162
|
src/superlocalmemory/hooks/hook_handlers.py
|
|
162
163
|
src/superlocalmemory/hooks/ide_connector.py
|
|
163
164
|
src/superlocalmemory/hooks/post_tool_async_hook.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/attribution/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/attribution/signer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/attribution/watermark.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/context_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/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.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/pending_store.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/post_install.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/service_installer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/setup_wizard.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/version_banner.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/cli/wizard_v3426_options.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/__init__.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/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.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/changes.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/communities.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/config.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/database.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/flows.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/git_hooks.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/graph_engine.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/graph_store.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/incremental.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/models.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/parser.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/resolver.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/search.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/service.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/code_graph/watcher.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/audit.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/eu_ai_act.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/lifecycle.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/retention.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/compliance/scheduler.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/clock_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/context_cache.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/embedding_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/engine_capabilities.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/engine_lock.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/engine_wiring.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/error_catalog.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/error_envelope.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/fact_consolidator.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/graph_analyzer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/graph_pruner.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/health_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/loop_watchdog.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/maintenance.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/ollama_embedder.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/platform_utils.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/priority_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/queue_consumer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/queue_dispatcher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/recall_gate.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.36}/src/superlocalmemory/core/recall_pipeline.py
RENAMED
|
File without changes
|