superlocalmemory 3.5.5__tar.gz → 3.5.7__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.5.5/src/superlocalmemory.egg-info → superlocalmemory-3.5.7}/PKG-INFO +1 -1
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/pyproject.toml +1 -1
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/__init__.py +1 -1
- superlocalmemory-3.5.7/src/superlocalmemory/learning/lightgbm_subprocess.py +236 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/learning.py +20 -4
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/v3_api.py +28 -6
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/unified_daemon.py +10 -1
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7/src/superlocalmemory.egg-info}/PKG-INFO +1 -1
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory.egg-info/SOURCES.txt +1 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/AUTHORS.md +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/LICENSE +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/NOTICE +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/README.md +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/setup.cfg +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/signer.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/watermark.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/commands.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/context_commands.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/daemon.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/db_migrate.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/escape_hatch.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/json_output.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/main.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/pending_store.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/post_install.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/service_installer.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/setup_wizard.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/version_banner.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/changes.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/communities.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/config.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/database.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/flows.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/graph_store.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/incremental.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/models.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/parser.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/resolver.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/search.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/service.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/watcher.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/abac.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/audit.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/gdpr.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/lifecycle.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/retention.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/scheduler.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/backend_orchestrator.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/clock_monitor.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/config.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/consolidation_engine.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/context_cache.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/db_pool.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/embedding_worker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/embeddings.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/engine.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/engine_capabilities.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/engine_lock.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/engine_wiring.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/error_catalog.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/error_envelope.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/fact_consolidator.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/file_lock.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/graph_analyzer.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/graph_pruner.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/health_monitor.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/hooks.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/injection.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/loop_watchdog.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/maintenance.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/modes.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/ollama_embedder.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/platform_utils.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/priority_queue.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/profiles.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/pruning_engine.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/queue_consumer.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/ram_lock.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/rate_limit.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/recall_gate.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/recall_pipeline.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/recall_queue.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/recall_worker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/registry.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/reranker_worker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/safe_fs.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/security_primitives.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/shadow_router.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/slm_disabled.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/slmignore.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/store_pipeline.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/summarizer.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/tier_manager.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/topic_signature.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/worker_pool.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/dynamics/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/auto_linker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/consolidator.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/context_generator.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/emotional.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/foresight.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/graph_builder.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/observation_builder.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/scene_builder.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/signal_inference.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/encoding/type_router.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/budget.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/evolution_store.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/triggers.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/evolution/types.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/graph/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/graph/cozo_backend.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/adapter_base.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/auto_capture.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/auto_recall.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/context_payload.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/ide_connector.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/rules_engine.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/session_registry.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/sync_loop.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/auth_middleware.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/backup.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/cache_manager.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/cloud_backup.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/event_bus.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/pid_manager.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/process_reaper.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/rate_limiter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/credentials.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/parsers.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/adaptive.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/arm_catalog.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/assertion_miner.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/bandit.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/bandit_cache.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/behavioral.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/bootstrap.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/cross_project.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/database.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/engagement.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/ensemble.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/entity_compiler.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/features.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/feedback.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/labeler.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/legacy_migration.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/memory_merge.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/model_cache.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/model_rollback.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/outcome_queue.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/outcomes.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/pattern_miner.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/project_context.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/ranker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/ranker_common.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/reward.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/reward_archive.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/reward_boost.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/reward_proxy.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/shadow_test.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/signal_worker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/signals.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/source_quality.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/trigram_index.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/learning/workflows.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/llm/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/llm/backbone.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/ebbinghaus.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/fisher.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/fisher_quantized.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/hopfield.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/langevin.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/polar_quant.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/qjl.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/sheaf.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/math/turbo_quant.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/resources.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/server.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/shared.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_active.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_context.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_core.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_learning.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_v28.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_v3.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mcp/tools_v33.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mesh/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mesh/broker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/mesh/remote_sync.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/migrations/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/agentic.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/ann_index.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/engine.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/fusion.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/reranker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/strategy.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/retrieval/vector_store.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/api.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/bandit_loops.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/middleware/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/adapters.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/agents.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/backup.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/behavioral.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/brain.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/chat.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/compliance.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/data_io.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/entity.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/events.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/evolution.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/helpers.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/ingest.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/insights.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/memories.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/mesh.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/prewarm.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/profiles.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/stats.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/tiers.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/timeline.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/token.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/ws.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/security_middleware.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/ui.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/access_control.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/access_log.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/database.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migration_runner.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migration_v33.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/migrations.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/models.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/quantized_store.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v32.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v3410.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v3411.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v343.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v345.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/schema_v347.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/storage/v2_migrator.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/trust/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/trust/gate.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/trust/provenance.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/trust/scorer.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/trust/signals.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/css/brain.css +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/index.html +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/agents.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/brain.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/clusters.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/compliance.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/core.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/dashboard.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/events.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/feedback.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ide-status.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/init.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/math-health.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/memories.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/modal.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-health.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/profiles.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/search.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/settings.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/timeline.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/vector/__init__.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/vector/lancedb_backend.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory.egg-info/requires.txt +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory.egg-info/top_level.txt +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_auto_hooks.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_before_web_hook.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_behavioral_full.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_claude_hooks.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_cli.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_cli_json.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_cli_v33.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_compliance_full.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_config_system.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_engine_hooks.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_event_bus.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_features.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_final_locomo_mini.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_hook_handlers.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_ide_connector.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_infra.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_injection.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_learning_advanced.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_learning_collectors.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_llm_provider.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_mcp_server.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_migration.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_mode_switch_preservation.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_post_install.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_ranker.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_topic_shift_hook.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_trust_full.py +0 -0
- {superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/tests/test_v3_api.py +0 -0
|
@@ -28,7 +28,7 @@ if "OMP_NUM_THREADS" not in os.environ:
|
|
|
28
28
|
os.environ["OMP_NUM_THREADS"] = "2"
|
|
29
29
|
# ---------------------------------------------------------------------------
|
|
30
30
|
|
|
31
|
-
__version__ = "3.
|
|
31
|
+
__version__ = "3.5.7"
|
|
32
32
|
|
|
33
33
|
_REQUIRED_VERSIONS = {
|
|
34
34
|
"sentence_transformers": "5.3.0",
|
|
@@ -0,0 +1,236 @@
|
|
|
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
|
+
"""Isolated LightGBM work (retrain + consolidation) — OpenMP-crash guard.
|
|
6
|
+
|
|
7
|
+
**Why this exists** — the unified daemon serves the HTTP API in-process and,
|
|
8
|
+
by then, has already loaded PyTorch's OpenMP runtime (``torch/lib/libomp.dylib``)
|
|
9
|
+
with *warm* worker threads (the cross-encoder reranker + embedding warm-up at
|
|
10
|
+
startup). Any code path that imports ``lightgbm`` in that same process loads a
|
|
11
|
+
*second* OpenMP runtime — the Homebrew ``libomp.dylib`` that
|
|
12
|
+
``lib_lightgbm.dylib`` links against — which corrupts the shared ``__kmp``
|
|
13
|
+
global state and SIGSEGVs a pre-existing torch OMP worker thread. That
|
|
14
|
+
hard-crashes the whole daemon (observed on macOS / Apple Silicon;
|
|
15
|
+
``DiagnosticReports/Python-*.ips`` shows ``libomp.dylib __kmp_launch_worker``).
|
|
16
|
+
|
|
17
|
+
Two in-daemon entry points reach LightGBM training:
|
|
18
|
+
* ``POST /api/learning/retrain`` → legacy ``_retrain_ranker_impl``;
|
|
19
|
+
* ``POST /api/v3/learning/consolidate`` → ``ConsolidationWorker.run`` whose
|
|
20
|
+
step 5 trains via the online ``_run_shadow_cycle`` (active model) or the
|
|
21
|
+
legacy cold-start path.
|
|
22
|
+
|
|
23
|
+
Both are funnelled through this module so LightGBM only ever trains in a
|
|
24
|
+
**fresh subprocess** that never runs a torch tensor op — torch's OMP pool stays
|
|
25
|
+
dormant there and lightgbm's runtime is the only active one. The mechanism
|
|
26
|
+
mirrors the existing ``embedding_worker`` / ``reranker_worker`` isolation.
|
|
27
|
+
|
|
28
|
+
Spawned via :func:`run_retrain_isolated` / :func:`run_consolidation_isolated`,
|
|
29
|
+
which use a ``python -c`` bootstrap that imports lightgbm BEFORE the
|
|
30
|
+
``superlocalmemory`` package. That ordering is load-bearing: importing the
|
|
31
|
+
package transitively pulls in torch, and torch-OMP-first-then-lightgbm is
|
|
32
|
+
exactly the sequence that segfaults. A plain ``python -m
|
|
33
|
+
superlocalmemory.learning.lightgbm_subprocess`` would run the package
|
|
34
|
+
``__init__`` (torch) first and crash — do not invoke it that way.
|
|
35
|
+
|
|
36
|
+
The child emits a single JSON line on stdout — ``{"error": str|null, ...}`` —
|
|
37
|
+
plus a task payload (``trained`` for retrain, ``stats`` for consolidate).
|
|
38
|
+
Exit 0 = ran to completion; non-zero = handled failure. Either way the parent
|
|
39
|
+
(the daemon) keeps running.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
from __future__ import annotations
|
|
43
|
+
|
|
44
|
+
import argparse
|
|
45
|
+
import json
|
|
46
|
+
import logging
|
|
47
|
+
import subprocess
|
|
48
|
+
import sys
|
|
49
|
+
from pathlib import Path
|
|
50
|
+
|
|
51
|
+
logger = logging.getLogger(__name__)
|
|
52
|
+
|
|
53
|
+
# Wall-clock ceilings. A retrain is 50 boosting rounds on ≤2000 rows (seconds);
|
|
54
|
+
# a full consolidation cycle also decays/dedups/mines/graph-analyses, so it
|
|
55
|
+
# gets more headroom.
|
|
56
|
+
RETRAIN_TIMEOUT_SEC = 300
|
|
57
|
+
CONSOLIDATE_TIMEOUT_SEC = 600
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# ---------------------------------------------------------------------------
|
|
61
|
+
# Child-side task implementations (run in the isolated subprocess).
|
|
62
|
+
# ---------------------------------------------------------------------------
|
|
63
|
+
|
|
64
|
+
def _retrain(learning_db: str, profile_id: str, *, include_synthetic: bool) -> bool:
|
|
65
|
+
"""Legacy ranker retrain in this (lightgbm-first) process. Returns trained."""
|
|
66
|
+
import lightgbm # noqa: F401 (import-order side effect is intentional)
|
|
67
|
+
|
|
68
|
+
from superlocalmemory.learning.ranker_retrain_legacy import (
|
|
69
|
+
_retrain_ranker_impl,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
return bool(
|
|
73
|
+
_retrain_ranker_impl(
|
|
74
|
+
learning_db, profile_id, include_synthetic=include_synthetic,
|
|
75
|
+
)
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _consolidate(
|
|
80
|
+
memory_db: str, learning_db: str, profile_id: str, *, dry_run: bool,
|
|
81
|
+
) -> dict:
|
|
82
|
+
"""Full consolidation cycle (incl. step-5 LightGBM training). Returns stats."""
|
|
83
|
+
import lightgbm # noqa: F401 (import-order side effect is intentional)
|
|
84
|
+
|
|
85
|
+
from superlocalmemory.learning.consolidation_worker import (
|
|
86
|
+
ConsolidationWorker,
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
worker = ConsolidationWorker(memory_db, learning_db)
|
|
90
|
+
return worker.run(profile_id, dry_run=dry_run)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def _emit(obj: dict) -> None:
|
|
94
|
+
"""Write the verdict as a single JSON line (default=str for safety)."""
|
|
95
|
+
sys.stdout.write(json.dumps(obj, default=str) + "\n")
|
|
96
|
+
sys.stdout.flush()
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def main(argv: list[str] | None = None) -> int:
|
|
100
|
+
parser = argparse.ArgumentParser(prog="slm-lightgbm-subprocess")
|
|
101
|
+
parser.add_argument("--task", choices=["retrain", "consolidate"], default="retrain")
|
|
102
|
+
parser.add_argument("--learning-db", required=True)
|
|
103
|
+
parser.add_argument("--memory-db")
|
|
104
|
+
parser.add_argument("--profile", default="default")
|
|
105
|
+
parser.add_argument("--include-synthetic", action="store_true")
|
|
106
|
+
parser.add_argument("--dry-run", action="store_true")
|
|
107
|
+
args = parser.parse_args(argv)
|
|
108
|
+
|
|
109
|
+
result: dict = {"error": None}
|
|
110
|
+
try:
|
|
111
|
+
if args.task == "retrain":
|
|
112
|
+
result["trained"] = _retrain(
|
|
113
|
+
args.learning_db, args.profile,
|
|
114
|
+
include_synthetic=args.include_synthetic,
|
|
115
|
+
)
|
|
116
|
+
else:
|
|
117
|
+
if not args.memory_db:
|
|
118
|
+
raise ValueError("--memory-db is required for the consolidate task")
|
|
119
|
+
result["stats"] = _consolidate(
|
|
120
|
+
args.memory_db, args.learning_db, args.profile,
|
|
121
|
+
dry_run=args.dry_run,
|
|
122
|
+
)
|
|
123
|
+
except Exception as exc: # noqa: BLE001
|
|
124
|
+
result["error"] = f"{type(exc).__name__}: {exc}"
|
|
125
|
+
_emit(result)
|
|
126
|
+
return 1
|
|
127
|
+
|
|
128
|
+
_emit(result)
|
|
129
|
+
return 0
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
# ---------------------------------------------------------------------------
|
|
133
|
+
# Caller-side helpers — spawn the child in an isolated process.
|
|
134
|
+
# ---------------------------------------------------------------------------
|
|
135
|
+
|
|
136
|
+
def _run_isolated(task_args: list[str], *, timeout_sec: int) -> dict:
|
|
137
|
+
"""Spawn the child with lightgbm imported first; return its JSON verdict.
|
|
138
|
+
|
|
139
|
+
Never raises for the expected failure modes (non-zero exit, timeout,
|
|
140
|
+
native crash with no JSON) — encodes them in an ``error`` key so the
|
|
141
|
+
calling daemon stays up no matter what.
|
|
142
|
+
"""
|
|
143
|
+
# The leading ``import lightgbm`` is load-bearing: it must run BEFORE the
|
|
144
|
+
# superlocalmemory package (which transitively imports torch). ``-c`` is
|
|
145
|
+
# the only way to guarantee that ordering — ``-m superlocalmemory.…`` runs
|
|
146
|
+
# the package __init__ (torch) first and would reintroduce the crash.
|
|
147
|
+
bootstrap = (
|
|
148
|
+
"import lightgbm; "
|
|
149
|
+
"from superlocalmemory.learning.lightgbm_subprocess import main; "
|
|
150
|
+
"raise SystemExit(main())"
|
|
151
|
+
)
|
|
152
|
+
cmd = [sys.executable, "-c", bootstrap, *task_args]
|
|
153
|
+
|
|
154
|
+
try:
|
|
155
|
+
proc = subprocess.run(
|
|
156
|
+
cmd,
|
|
157
|
+
capture_output=True,
|
|
158
|
+
text=True,
|
|
159
|
+
timeout=timeout_sec,
|
|
160
|
+
check=False,
|
|
161
|
+
)
|
|
162
|
+
except subprocess.TimeoutExpired:
|
|
163
|
+
return {"error": f"timed out after {timeout_sec}s"}
|
|
164
|
+
except Exception as exc: # noqa: BLE001
|
|
165
|
+
return {"error": f"spawn failed: {exc}"}
|
|
166
|
+
|
|
167
|
+
# The verdict is the last JSON line on stdout. Parse defensively — a native
|
|
168
|
+
# crash in the child would leave no JSON, which we surface plainly.
|
|
169
|
+
for line in reversed((proc.stdout or "").splitlines()):
|
|
170
|
+
line = line.strip()
|
|
171
|
+
if not line:
|
|
172
|
+
continue
|
|
173
|
+
try:
|
|
174
|
+
return json.loads(line)
|
|
175
|
+
except ValueError:
|
|
176
|
+
continue
|
|
177
|
+
|
|
178
|
+
tail = (proc.stderr or "").strip()[-500:]
|
|
179
|
+
return {
|
|
180
|
+
"error": (
|
|
181
|
+
f"subprocess produced no verdict (exit={proc.returncode}). "
|
|
182
|
+
f"stderr tail: {tail}"
|
|
183
|
+
),
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def run_retrain_isolated(
|
|
188
|
+
learning_db: str | Path,
|
|
189
|
+
profile_id: str,
|
|
190
|
+
*,
|
|
191
|
+
include_synthetic: bool = False,
|
|
192
|
+
timeout_sec: int = RETRAIN_TIMEOUT_SEC,
|
|
193
|
+
) -> dict:
|
|
194
|
+
"""Train the ranker in a subprocess. Returns ``{"trained": bool, "error": ...}``."""
|
|
195
|
+
args = [
|
|
196
|
+
"--task", "retrain",
|
|
197
|
+
"--learning-db", str(learning_db),
|
|
198
|
+
"--profile", profile_id,
|
|
199
|
+
]
|
|
200
|
+
if include_synthetic:
|
|
201
|
+
args.append("--include-synthetic")
|
|
202
|
+
verdict = _run_isolated(args, timeout_sec=timeout_sec)
|
|
203
|
+
verdict.setdefault("trained", False)
|
|
204
|
+
verdict.setdefault("error", None)
|
|
205
|
+
return verdict
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def run_consolidation_isolated(
|
|
209
|
+
memory_db: str | Path,
|
|
210
|
+
learning_db: str | Path,
|
|
211
|
+
profile_id: str,
|
|
212
|
+
*,
|
|
213
|
+
dry_run: bool = False,
|
|
214
|
+
timeout_sec: int = CONSOLIDATE_TIMEOUT_SEC,
|
|
215
|
+
) -> dict:
|
|
216
|
+
"""Run the full consolidation cycle in a subprocess (its step-5 training
|
|
217
|
+
would otherwise crash the torch-warm daemon).
|
|
218
|
+
|
|
219
|
+
Returns ``{"stats": dict|None, "error": str|None}``.
|
|
220
|
+
"""
|
|
221
|
+
args = [
|
|
222
|
+
"--task", "consolidate",
|
|
223
|
+
"--memory-db", str(memory_db),
|
|
224
|
+
"--learning-db", str(learning_db),
|
|
225
|
+
"--profile", profile_id,
|
|
226
|
+
]
|
|
227
|
+
if dry_run:
|
|
228
|
+
args.append("--dry-run")
|
|
229
|
+
verdict = _run_isolated(args, timeout_sec=timeout_sec)
|
|
230
|
+
verdict.setdefault("stats", None)
|
|
231
|
+
verdict.setdefault("error", None)
|
|
232
|
+
return verdict
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
if __name__ == "__main__":
|
|
236
|
+
raise SystemExit(main())
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/learning.py
RENAMED
|
@@ -15,6 +15,7 @@ from datetime import datetime, timezone
|
|
|
15
15
|
from pathlib import Path
|
|
16
16
|
|
|
17
17
|
from fastapi import APIRouter
|
|
18
|
+
from fastapi.concurrency import run_in_threadpool
|
|
18
19
|
|
|
19
20
|
from .helpers import get_active_profile, MEMORY_DIR
|
|
20
21
|
|
|
@@ -597,16 +598,31 @@ async def learning_retrain(data: dict | None = None):
|
|
|
597
598
|
data and data.get("include_synthetic")
|
|
598
599
|
) if isinstance(data, dict) else False
|
|
599
600
|
try:
|
|
600
|
-
|
|
601
|
-
|
|
601
|
+
# Train OUT OF PROCESS. The daemon already has torch's OpenMP runtime
|
|
602
|
+
# loaded with warm worker threads; importing lightgbm in-process loads
|
|
603
|
+
# a second libomp and SIGSEGVs the whole daemon (see
|
|
604
|
+
# retrain_subprocess module docstring). Isolation is the fix.
|
|
605
|
+
from superlocalmemory.learning.lightgbm_subprocess import (
|
|
606
|
+
run_retrain_isolated,
|
|
602
607
|
)
|
|
603
608
|
profile_id = get_active_profile() or "default"
|
|
604
|
-
|
|
609
|
+
result = await run_in_threadpool(
|
|
610
|
+
run_retrain_isolated,
|
|
605
611
|
LEARNING_DB,
|
|
606
612
|
profile_id,
|
|
607
613
|
include_synthetic=include_synthetic,
|
|
608
614
|
)
|
|
609
|
-
if
|
|
615
|
+
if result.get("error"):
|
|
616
|
+
logger.error("learning_retrain failed: %s", result["error"])
|
|
617
|
+
return {"success": False, "error": result["error"]}
|
|
618
|
+
if result.get("trained"):
|
|
619
|
+
# Drop the cached model so the next recall reloads the freshly
|
|
620
|
+
# trained one the subprocess just persisted to learning.db.
|
|
621
|
+
try:
|
|
622
|
+
from superlocalmemory.learning.model_cache import invalidate
|
|
623
|
+
invalidate(profile_id)
|
|
624
|
+
except Exception as exc: # pragma: no cover — defensive
|
|
625
|
+
logger.debug("model cache invalidate failed: %s", exc)
|
|
610
626
|
return {
|
|
611
627
|
"success": True,
|
|
612
628
|
"trained": True,
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/routes/v3_api.py
RENAMED
|
@@ -806,15 +806,37 @@ async def run_consolidation(request: Request):
|
|
|
806
806
|
try:
|
|
807
807
|
body = await request.json()
|
|
808
808
|
dry_run = body.get("dry_run", False)
|
|
809
|
-
|
|
809
|
+
# Run the full cycle OUT OF PROCESS. Step 5 trains the LightGBM ranker
|
|
810
|
+
# (online _run_shadow_cycle or legacy cold-start); importing lightgbm
|
|
811
|
+
# in the torch-warm daemon loads a second libomp and SIGSEGVs it (see
|
|
812
|
+
# lightgbm_subprocess module docstring). Isolation is the fix.
|
|
813
|
+
from superlocalmemory.learning.lightgbm_subprocess import (
|
|
814
|
+
run_consolidation_isolated,
|
|
815
|
+
)
|
|
810
816
|
from superlocalmemory.core.config import SLMConfig
|
|
811
817
|
from superlocalmemory.server.routes.helpers import DB_PATH
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
learning_db=str(DB_PATH.parent / "learning.db"),
|
|
815
|
-
)
|
|
818
|
+
from fastapi.concurrency import run_in_threadpool
|
|
819
|
+
|
|
816
820
|
config = SLMConfig.load()
|
|
817
|
-
|
|
821
|
+
learning_db = DB_PATH.parent / "learning.db"
|
|
822
|
+
result = await run_in_threadpool(
|
|
823
|
+
run_consolidation_isolated,
|
|
824
|
+
str(DB_PATH),
|
|
825
|
+
str(learning_db),
|
|
826
|
+
config.active_profile,
|
|
827
|
+
dry_run=dry_run,
|
|
828
|
+
)
|
|
829
|
+
if result.get("error"):
|
|
830
|
+
return {"success": False, "error": result["error"]}
|
|
831
|
+
# Step-5 training may have promoted a new model — drop the daemon's
|
|
832
|
+
# cached model so the next recall reloads it from learning.db.
|
|
833
|
+
if not dry_run:
|
|
834
|
+
try:
|
|
835
|
+
from superlocalmemory.learning.model_cache import invalidate
|
|
836
|
+
invalidate(config.active_profile)
|
|
837
|
+
except Exception:
|
|
838
|
+
pass
|
|
839
|
+
stats = result.get("stats") or {}
|
|
818
840
|
return {"success": True, **stats}
|
|
819
841
|
except Exception as exc:
|
|
820
842
|
return {"success": False, "error": str(exc)}
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/server/unified_daemon.py
RENAMED
|
@@ -1950,10 +1950,19 @@ def start_server(port: int = _DEFAULT_PORT) -> None:
|
|
|
1950
1950
|
log_dir = Path.home() / ".superlocalmemory" / "logs"
|
|
1951
1951
|
log_dir.mkdir(parents=True, exist_ok=True)
|
|
1952
1952
|
|
|
1953
|
+
# Bind address. `SLM_DAEMON_HOST` is the canonical name; `SLM_HOST` is
|
|
1954
|
+
# accepted as a shorter alias (issue #23). Set either to 0.0.0.0 to serve
|
|
1955
|
+
# a shared instance over a trusted private network (e.g. WireGuard mesh).
|
|
1956
|
+
bind_host = (
|
|
1957
|
+
os.environ.get("SLM_DAEMON_HOST")
|
|
1958
|
+
or os.environ.get("SLM_HOST")
|
|
1959
|
+
or "127.0.0.1"
|
|
1960
|
+
)
|
|
1961
|
+
|
|
1953
1962
|
config = uvicorn.Config(
|
|
1954
1963
|
app="superlocalmemory.server.unified_daemon:create_app",
|
|
1955
1964
|
factory=True,
|
|
1956
|
-
host=
|
|
1965
|
+
host=bind_host,
|
|
1957
1966
|
port=port,
|
|
1958
1967
|
log_level="warning",
|
|
1959
1968
|
timeout_graceful_shutdown=10,
|
|
@@ -221,6 +221,7 @@ src/superlocalmemory/learning/forgetting_scheduler.py
|
|
|
221
221
|
src/superlocalmemory/learning/hnsw_dedup.py
|
|
222
222
|
src/superlocalmemory/learning/labeler.py
|
|
223
223
|
src/superlocalmemory/learning/legacy_migration.py
|
|
224
|
+
src/superlocalmemory/learning/lightgbm_subprocess.py
|
|
224
225
|
src/superlocalmemory/learning/memory_merge.py
|
|
225
226
|
src/superlocalmemory/learning/model_cache.py
|
|
226
227
|
src/superlocalmemory/learning/model_rollback.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/signer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/attribution/watermark.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/context_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/service_installer.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/version_banner.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/cli/wizard_v3426_options.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/__init__.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/blast_radius.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/bridge/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/changes.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/communities.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/database.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/git_hooks.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/graph_engine.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/graph_store.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/incremental.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/service.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/code_graph/watcher.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/eu_ai_act.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/lifecycle.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/retention.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/compliance/scheduler.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/backend_orchestrator.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/clock_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/consolidation_engine.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/context_cache.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/embedding_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/engine_capabilities.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/engine_wiring.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/error_catalog.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/error_envelope.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/fact_consolidator.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/graph_analyzer.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/health_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/loop_watchdog.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/maintenance_scheduler.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/ollama_embedder.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/platform_utils.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/priority_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/pruning_engine.py
RENAMED
|
File without changes
|
{superlocalmemory-3.5.5 → superlocalmemory-3.5.7}/src/superlocalmemory/core/queue_consumer.py
RENAMED
|
File without changes
|