superlocalmemory 3.4.35__tar.gz → 3.4.37__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.37}/PKG-INFO +1 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/pyproject.toml +1 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/__init__.py +1 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/commands.py +1 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/embedding_worker.py +1 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/embeddings.py +5 -8
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/health_monitor.py +2 -2
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/recall_worker.py +3 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/auto_recall_hook.py +32 -0
- superlocalmemory-3.4.37/src/superlocalmemory/hooks/hook_daemon.py +276 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/reranker.py +2 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/unified_daemon.py +100 -10
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37/src/superlocalmemory.egg-info}/PKG-INFO +1 -1
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory.egg-info/SOURCES.txt +1 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/AUTHORS.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/LICENSE +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/NOTICE +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/README.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/setup.cfg +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/attribution/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/attribution/signer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/attribution/watermark.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/context_commands.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/daemon.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/db_migrate.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/escape_hatch.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/json_output.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/main.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/pending_store.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/post_install.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/service_installer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/setup_wizard.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/version_banner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/changes.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/communities.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/config.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/database.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/flows.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/graph_store.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/incremental.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/models.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/parser.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/resolver.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/search.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/service.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/code_graph/watcher.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/compliance/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/compliance/abac.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/compliance/audit.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/compliance/gdpr.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/compliance/lifecycle.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/compliance/retention.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/compliance/scheduler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/clock_monitor.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/config.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/consolidation_engine.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/context_cache.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/db_pool.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/engine.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/engine_capabilities.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/engine_lock.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/engine_wiring.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/error_catalog.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/error_envelope.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/fact_consolidator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/file_lock.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/graph_analyzer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/graph_pruner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/loop_watchdog.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/maintenance.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/modes.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/ollama_embedder.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/platform_utils.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/priority_queue.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/profiles.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/queue_consumer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/ram_lock.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/rate_limit.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/recall_gate.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/recall_pipeline.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/recall_queue.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/registry.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/reranker_worker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/safe_fs.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/security_primitives.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/shadow_router.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/slm_disabled.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/slmignore.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/store_pipeline.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/summarizer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/tier_manager.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/topic_signature.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/worker_pool.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/dynamics/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/auto_linker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/consolidator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/context_generator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/emotional.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/foresight.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/graph_builder.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/observation_builder.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/scene_builder.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/signal_inference.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/encoding/type_router.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/evolution/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/evolution/budget.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/evolution/evolution_store.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/evolution/triggers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/evolution/types.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/adapter_base.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/auto_capture.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/auto_recall.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/context_payload.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/ide_connector.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/rules_engine.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/session_registry.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/sync_loop.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/auth_middleware.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/backup.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/cache_manager.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/cloud_backup.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/event_bus.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/pid_manager.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/process_reaper.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/rate_limiter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ingestion/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ingestion/credentials.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ingestion/parsers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/adaptive.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/arm_catalog.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/assertion_miner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/bandit.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/bandit_cache.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/behavioral.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/bootstrap.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/cross_project.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/database.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/engagement.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/ensemble.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/entity_compiler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/features.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/feedback.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/labeler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/legacy_migration.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/memory_merge.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/model_cache.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/model_rollback.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/outcome_queue.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/outcomes.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/pattern_miner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/project_context.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/ranker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/ranker_common.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/reward.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/reward_archive.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/reward_boost.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/reward_proxy.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/shadow_test.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/signal_worker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/signals.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/source_quality.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/trigram_index.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/learning/workflows.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/llm/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/llm/backbone.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/math/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/math/ebbinghaus.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/math/fisher.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/math/fisher_quantized.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/math/hopfield.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/math/langevin.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/math/polar_quant.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/math/qjl.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/math/sheaf.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/math/turbo_quant.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/resources.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/server.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/shared.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools_active.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools_context.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools_core.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools_learning.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools_v28.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools_v3.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mcp/tools_v33.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mesh/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/mesh/broker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/migrations/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/parameterization/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/agentic.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/ann_index.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/engine.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/fusion.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/strategy.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/retrieval/vector_store.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/api.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/bandit_loops.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/middleware/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/adapters.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/agents.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/backup.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/behavioral.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/brain.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/chat.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/compliance.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/data_io.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/entity.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/events.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/evolution.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/helpers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/ingest.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/insights.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/learning.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/memories.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/mesh.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/prewarm.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/profiles.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/stats.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/tiers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/timeline.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/token.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/v3_api.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/routes/ws.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/security_middleware.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/ui.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/access_control.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/access_log.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/database.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migration_runner.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migration_v33.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/migrations.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/models.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/quantized_store.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/schema.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/schema_v32.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/schema_v3410.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/schema_v3411.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/schema_v343.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/schema_v347.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/storage/v2_migrator.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/trust/__init__.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/trust/gate.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/trust/provenance.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/trust/scorer.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/trust/signals.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/css/brain.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/index.html +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/agents.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/brain.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/clusters.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/compliance.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/core.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/dashboard.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/events.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/feedback.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/ide-status.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/init.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/math-health.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/memories.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/modal.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/ng-health.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/profiles.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/search.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/settings.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/timeline.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory.egg-info/requires.txt +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory.egg-info/top_level.txt +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_auto_hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_behavioral_full.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_claude_hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_cli.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_cli_json.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_cli_v33.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_compliance_full.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_config_system.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_engine_hooks.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_event_bus.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_features.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_final_locomo_mini.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_hook_handlers.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_ide_connector.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_infra.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_learning_advanced.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_learning_collectors.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_llm_provider.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_mcp_server.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_migration.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_post_install.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_ranker.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_trust_full.py +0 -0
- {superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/tests/test_v3_api.py +0 -0
|
@@ -1710,6 +1710,7 @@ def _warmup_diagnose() -> None:
|
|
|
1710
1710
|
"""Diagnostic helper when warmup fails."""
|
|
1711
1711
|
print("\nDiagnosing...")
|
|
1712
1712
|
print(f" Python executable: {sys.executable}")
|
|
1713
|
+
os.environ["ORT_DISABLE_COREML"] = "1"
|
|
1713
1714
|
try:
|
|
1714
1715
|
from sentence_transformers import SentenceTransformer
|
|
1715
1716
|
print(" sentence-transformers: importable")
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/embedding_worker.py
RENAMED
|
@@ -151,7 +151,7 @@ def _worker_main() -> None:
|
|
|
151
151
|
_respond({"ok": False, "error": str(exc)})
|
|
152
152
|
|
|
153
153
|
# V3.3.16: RSS watchdog — V3.4.24: cross-platform via platform_utils.
|
|
154
|
-
_rss_limit = int(os.environ.get("SLM_EMBED_WORKER_RSS_LIMIT_MB",
|
|
154
|
+
_rss_limit = int(os.environ.get("SLM_EMBED_WORKER_RSS_LIMIT_MB", 1800))
|
|
155
155
|
rss_mb = get_rss_mb()
|
|
156
156
|
if rss_mb > 0 and rss_mb > _rss_limit:
|
|
157
157
|
sys.exit(0)
|
|
@@ -140,14 +140,10 @@ def release_embedding_lock() -> None:
|
|
|
140
140
|
_embedding_lock_fd = None
|
|
141
141
|
|
|
142
142
|
|
|
143
|
-
_IDLE_TIMEOUT_SECONDS =
|
|
144
|
-
# V3.
|
|
145
|
-
#
|
|
146
|
-
#
|
|
147
|
-
# per-embed RSS self-check (SLM_EMBED_WORKER_RSS_LIMIT_MB, 4GB default) and
|
|
148
|
-
# the daemon memory watchdog (unified_daemon.py, 4GB/60s) still cap any
|
|
149
|
-
# runaway. To restore the old aggressive policy without redeploying, set
|
|
150
|
-
# ``SLM_EMBED_IDLE_TIMEOUT=120`` and ``slm restart``.
|
|
143
|
+
_IDLE_TIMEOUT_SECONDS = 300 # 5 minutes — balance cold-start vs RAM.
|
|
144
|
+
# V3.4.37: Reduced from 1800 → 300. Holding 1.1 GB for 30 min idle
|
|
145
|
+
# wastes RAM on laptops. 5 min covers bursty session_init+recall
|
|
146
|
+
# patterns while freeing memory between sessions.
|
|
151
147
|
_IDLE_TIMEOUT_SECONDS = int(os.environ.get("SLM_EMBED_IDLE_TIMEOUT", _IDLE_TIMEOUT_SECONDS))
|
|
152
148
|
# V3.3.21: Configurable response timeout — 180s default, but batch ingestion
|
|
153
149
|
# (2-turn chunks across 10 conversations) needs 600s+ to survive cold-start
|
|
@@ -476,6 +472,7 @@ class EmbeddingService:
|
|
|
476
472
|
"PYTORCH_ENABLE_MPS_FALLBACK": "1",
|
|
477
473
|
"TOKENIZERS_PARALLELISM": "false",
|
|
478
474
|
"TORCH_DEVICE": "cpu",
|
|
475
|
+
"ORT_DISABLE_COREML": "1",
|
|
479
476
|
}
|
|
480
477
|
from superlocalmemory.core.platform_utils import popen_platform_kwargs
|
|
481
478
|
self._worker_proc = subprocess.Popen(
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/health_monitor.py
RENAMED
|
@@ -133,9 +133,9 @@ class HealthMonitor:
|
|
|
133
133
|
|
|
134
134
|
def __init__(
|
|
135
135
|
self,
|
|
136
|
-
global_rss_budget_mb: int =
|
|
136
|
+
global_rss_budget_mb: int = 2500,
|
|
137
137
|
heartbeat_timeout_sec: int = 60,
|
|
138
|
-
check_interval_sec: int =
|
|
138
|
+
check_interval_sec: int = 15,
|
|
139
139
|
enable_structured_logging: bool = True,
|
|
140
140
|
):
|
|
141
141
|
self._budget_mb = global_rss_budget_mb
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/core/recall_worker.py
RENAMED
|
@@ -28,6 +28,8 @@ os.environ["PYTORCH_MPS_MEM_LIMIT"] = "0"
|
|
|
28
28
|
os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1"
|
|
29
29
|
os.environ["TOKENIZERS_PARALLELISM"] = "false"
|
|
30
30
|
os.environ["TORCH_DEVICE"] = "cpu"
|
|
31
|
+
# V3.4.37: Disable CoreML EP — uses 3-5GB on ARM64 Mac.
|
|
32
|
+
os.environ["ORT_DISABLE_COREML"] = "1"
|
|
31
33
|
|
|
32
34
|
# SIGTERM bridge: Docker/systemd send SIGTERM to stop processes.
|
|
33
35
|
# Without this, the worker ignores SIGTERM and becomes a zombie.
|
|
@@ -324,7 +326,7 @@ def _worker_main() -> None:
|
|
|
324
326
|
|
|
325
327
|
# V3.3.16: RSS watchdog — V3.4.24: cross-platform via platform_utils.
|
|
326
328
|
rss_mb = get_rss_mb()
|
|
327
|
-
if rss_mb > 0 and rss_mb >
|
|
329
|
+
if rss_mb > 0 and rss_mb > 1500:
|
|
328
330
|
sys.exit(0)
|
|
329
331
|
|
|
330
332
|
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/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.37}/src/superlocalmemory/retrieval/reranker.py
RENAMED
|
@@ -51,7 +51,7 @@ _live_rerankers: set[weakref.ref] = set()
|
|
|
51
51
|
|
|
52
52
|
logger = logging.getLogger(__name__)
|
|
53
53
|
|
|
54
|
-
_IDLE_TIMEOUT_SECONDS =
|
|
54
|
+
_IDLE_TIMEOUT_SECONDS = 300 # V3.4.37: 5 min (was 30) — balance cold-start vs RAM.
|
|
55
55
|
# V3.3.12: Configurable via SLM_RERANKER_IDLE_TIMEOUT env var.
|
|
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.
|
|
@@ -192,6 +192,7 @@ class CrossEncoderReranker:
|
|
|
192
192
|
"PYTORCH_ENABLE_MPS_FALLBACK": "1",
|
|
193
193
|
"TOKENIZERS_PARALLELISM": "false",
|
|
194
194
|
"TORCH_DEVICE": "cpu",
|
|
195
|
+
"ORT_DISABLE_COREML": "1",
|
|
195
196
|
}
|
|
196
197
|
from superlocalmemory.core.platform_utils import popen_platform_kwargs
|
|
197
198
|
self._worker_proc = subprocess.Popen(
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/server/unified_daemon.py
RENAMED
|
@@ -66,6 +66,75 @@ class ObserveRequest(BaseModel):
|
|
|
66
66
|
content: str
|
|
67
67
|
|
|
68
68
|
|
|
69
|
+
# ---------------------------------------------------------------------------
|
|
70
|
+
# V3.4.37: Engine recall adapter — routes QueueConsumer through the daemon's
|
|
71
|
+
# in-process MemoryEngine instead of spawning a recall_worker subprocess.
|
|
72
|
+
# Saves ~800 MB by eliminating the duplicate engine.
|
|
73
|
+
# ---------------------------------------------------------------------------
|
|
74
|
+
|
|
75
|
+
class EngineRecallAdapter:
|
|
76
|
+
"""Adapts MemoryEngine.recall() to RecallPoolProtocol for QueueConsumer.
|
|
77
|
+
|
|
78
|
+
The daemon already has a full MemoryEngine in-process. The QueueConsumer
|
|
79
|
+
previously routed through WorkerPool → recall_worker subprocess, which
|
|
80
|
+
loaded a SECOND MemoryEngine. This adapter eliminates that duplication.
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
def __init__(self, engine) -> None:
|
|
84
|
+
self._engine = engine
|
|
85
|
+
|
|
86
|
+
def recall(self, query: str, limit: int = 10, session_id: str = "") -> dict:
|
|
87
|
+
response = self._engine.recall(
|
|
88
|
+
query, limit=limit, session_id=session_id or None,
|
|
89
|
+
)
|
|
90
|
+
memory_ids = list({
|
|
91
|
+
r.fact.memory_id for r in response.results[:limit]
|
|
92
|
+
if r.fact.memory_id
|
|
93
|
+
})
|
|
94
|
+
memory_map = (
|
|
95
|
+
self._engine._db.get_memory_content_batch(memory_ids)
|
|
96
|
+
if memory_ids else {}
|
|
97
|
+
)
|
|
98
|
+
results = []
|
|
99
|
+
for r in response.results[:limit]:
|
|
100
|
+
fact_type = getattr(r.fact, "fact_type", None)
|
|
101
|
+
lifecycle = getattr(r.fact, "lifecycle", None)
|
|
102
|
+
results.append({
|
|
103
|
+
"fact_id": r.fact.fact_id,
|
|
104
|
+
"memory_id": r.fact.memory_id,
|
|
105
|
+
"content": r.fact.content[:300],
|
|
106
|
+
"source_content": memory_map.get(r.fact.memory_id, ""),
|
|
107
|
+
"score": round(r.score, 4),
|
|
108
|
+
"confidence": round(r.confidence, 4),
|
|
109
|
+
"trust_score": round(r.trust_score, 4),
|
|
110
|
+
"channel_scores": {
|
|
111
|
+
k: round(v, 4)
|
|
112
|
+
for k, v in (r.channel_scores or {}).items()
|
|
113
|
+
},
|
|
114
|
+
"fact_type": fact_type.value
|
|
115
|
+
if fact_type and hasattr(fact_type, "value") else "",
|
|
116
|
+
"lifecycle": lifecycle.value
|
|
117
|
+
if lifecycle and hasattr(lifecycle, "value") else "",
|
|
118
|
+
"access_count": getattr(r.fact, "access_count", 0),
|
|
119
|
+
"evidence_chain": list(
|
|
120
|
+
getattr(r, "evidence_chain", []) or []
|
|
121
|
+
),
|
|
122
|
+
})
|
|
123
|
+
return {
|
|
124
|
+
"ok": True,
|
|
125
|
+
"query": query,
|
|
126
|
+
"query_type": response.query_type,
|
|
127
|
+
"result_count": len(results),
|
|
128
|
+
"retrieval_time_ms": round(response.retrieval_time_ms, 1),
|
|
129
|
+
"channel_weights": {
|
|
130
|
+
k: round(v, 3)
|
|
131
|
+
for k, v in (response.channel_weights or {}).items()
|
|
132
|
+
},
|
|
133
|
+
"total_candidates": getattr(response, "total_candidates", 0),
|
|
134
|
+
"results": results,
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
|
|
69
138
|
# ---------------------------------------------------------------------------
|
|
70
139
|
# v3.4.32: Recall-priority gate for the pending materializer.
|
|
71
140
|
# All /remember writes go to pending.db and return fast; a background
|
|
@@ -397,9 +466,10 @@ async def lifespan(application: FastAPI):
|
|
|
397
466
|
# Set up observe buffer
|
|
398
467
|
_observe_buffer.set_engine(engine)
|
|
399
468
|
|
|
400
|
-
#
|
|
401
|
-
|
|
402
|
-
|
|
469
|
+
# V3.4.37: Removed WorkerPool.warmup() — the recall_worker subprocess
|
|
470
|
+
# duplicated the daemon's MemoryEngine (800+ MB). QueueConsumer now
|
|
471
|
+
# uses the daemon's engine directly via EngineRecallAdapter.
|
|
472
|
+
# WorkerPool is still available as fallback for dashboard/chat routes.
|
|
403
473
|
|
|
404
474
|
# Force reranker warmup
|
|
405
475
|
retrieval_eng = getattr(engine, '_retrieval_engine', None)
|
|
@@ -422,8 +492,9 @@ async def lifespan(application: FastAPI):
|
|
|
422
492
|
logger.warning("Embedding warmup failed: %s", exc)
|
|
423
493
|
threading.Thread(target=_warmup_embedder, daemon=True, name="embed-warmup").start()
|
|
424
494
|
|
|
425
|
-
# v3.4.
|
|
426
|
-
#
|
|
495
|
+
# v3.4.37: QueueConsumer uses daemon's engine directly via adapter.
|
|
496
|
+
# Previously routed through WorkerPool → recall_worker subprocess,
|
|
497
|
+
# which loaded a duplicate MemoryEngine (~800 MB waste).
|
|
427
498
|
try:
|
|
428
499
|
from pathlib import Path as _QP
|
|
429
500
|
from superlocalmemory.core.queue_consumer import QueueConsumer
|
|
@@ -432,12 +503,23 @@ async def lifespan(application: FastAPI):
|
|
|
432
503
|
_recall_queue = RecallQueue(_queue_db)
|
|
433
504
|
_queue_consumer = QueueConsumer(
|
|
434
505
|
queue=_recall_queue,
|
|
435
|
-
pool=
|
|
506
|
+
pool=EngineRecallAdapter(engine),
|
|
436
507
|
)
|
|
437
508
|
_queue_consumer.start()
|
|
438
509
|
application.state.queue_consumer = _queue_consumer
|
|
439
510
|
application.state.recall_queue = _recall_queue
|
|
440
511
|
logger.info("QueueConsumer started (recall_queue.db)")
|
|
512
|
+
|
|
513
|
+
# v3.4.36: Start persistent hook daemon (Unix socket server).
|
|
514
|
+
# Eliminates Python subprocess startup for each recall hook call.
|
|
515
|
+
try:
|
|
516
|
+
from superlocalmemory.hooks.hook_daemon import HookDaemon
|
|
517
|
+
_hook_daemon = HookDaemon(queue_db_path=_queue_db)
|
|
518
|
+
_hook_daemon.start()
|
|
519
|
+
application.state.hook_daemon = _hook_daemon
|
|
520
|
+
except Exception as _hd_exc:
|
|
521
|
+
logger.warning("HookDaemon start failed (non-fatal): %s", _hd_exc)
|
|
522
|
+
application.state.hook_daemon = None
|
|
441
523
|
except Exception as _qc_exc:
|
|
442
524
|
logger.warning("QueueConsumer start failed (non-fatal): %s", _qc_exc)
|
|
443
525
|
application.state.queue_consumer = None
|
|
@@ -455,9 +537,9 @@ async def lifespan(application: FastAPI):
|
|
|
455
537
|
from superlocalmemory.core.health_monitor import HealthMonitor
|
|
456
538
|
health_config = getattr(config, 'health', None)
|
|
457
539
|
monitor = HealthMonitor(
|
|
458
|
-
global_rss_budget_mb=getattr(health_config, 'global_rss_budget_mb',
|
|
540
|
+
global_rss_budget_mb=getattr(health_config, 'global_rss_budget_mb', 2500) if health_config else 2500,
|
|
459
541
|
heartbeat_timeout_sec=getattr(health_config, 'heartbeat_timeout_sec', 60) if health_config else 60,
|
|
460
|
-
check_interval_sec=getattr(health_config, 'health_check_interval_sec',
|
|
542
|
+
check_interval_sec=getattr(health_config, 'health_check_interval_sec', 15) if health_config else 15,
|
|
461
543
|
enable_structured_logging=getattr(health_config, 'enable_structured_logging', True) if health_config else True,
|
|
462
544
|
)
|
|
463
545
|
monitor.start()
|
|
@@ -592,6 +674,14 @@ async def lifespan(application: FastAPI):
|
|
|
592
674
|
except Exception as exc: # pragma: no cover — defensive
|
|
593
675
|
logger.warning("bandit_tasks cancel failed: %s", exc)
|
|
594
676
|
|
|
677
|
+
# v3.4.36: Stop HookDaemon (Unix socket server).
|
|
678
|
+
_hd = getattr(application.state, "hook_daemon", None)
|
|
679
|
+
if _hd is not None:
|
|
680
|
+
try:
|
|
681
|
+
_hd.stop()
|
|
682
|
+
except Exception as exc: # pragma: no cover — defensive
|
|
683
|
+
logger.warning("hook_daemon stop failed: %s", exc)
|
|
684
|
+
|
|
595
685
|
# v3.4.26: Stop QueueConsumer (recall_queue.db drainer).
|
|
596
686
|
_qc = getattr(application.state, "queue_consumer", None)
|
|
597
687
|
if _qc is not None:
|
|
@@ -1240,11 +1330,11 @@ def _start_memory_watchdog() -> None:
|
|
|
1240
1330
|
"""
|
|
1241
1331
|
import threading
|
|
1242
1332
|
|
|
1243
|
-
MAX_WORKER_MB =
|
|
1333
|
+
MAX_WORKER_MB = 1800 # V3.4.37: 1.8GB — ONNX nomic-embed is ~1.7GB loaded
|
|
1244
1334
|
|
|
1245
1335
|
def watchdog_loop():
|
|
1246
1336
|
while True:
|
|
1247
|
-
time.sleep(
|
|
1337
|
+
time.sleep(15) # V3.4.37: 15s (was 60s) — catch spikes faster
|
|
1248
1338
|
try:
|
|
1249
1339
|
import psutil
|
|
1250
1340
|
parent = psutil.Process(os.getpid())
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/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.37}/src/superlocalmemory/attribution/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/attribution/signer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/src/superlocalmemory/attribution/watermark.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.4.35 → superlocalmemory-3.4.37}/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.37}/src/superlocalmemory/cli/escape_hatch.py
RENAMED
|
File without changes
|
|
File without changes
|