superlocalmemory 3.6.8__tar.gz → 3.6.10__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.
Potentially problematic release.
This version of superlocalmemory might be problematic. Click here for more details.
- {superlocalmemory-3.6.8/src/superlocalmemory.egg-info → superlocalmemory-3.6.10}/PKG-INFO +10 -5
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/README.md +8 -4
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/pyproject.toml +6 -1
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/__init__.py +6 -2
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/compress_cmd.py +32 -70
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/daemon.py +25 -3
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/optimize_cmd.py +1 -3
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/setup_wizard.py +49 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/config.py +28 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/engine.py +15 -4
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/health_monitor.py +32 -9
- superlocalmemory-3.6.10/src/superlocalmemory/mcp/agent_context.py +111 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_active.py +47 -12
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_core.py +22 -2
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_mesh.py +37 -38
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/boundary_store.py +23 -9
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/exact.py +7 -4
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/key_builder.py +13 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/manager.py +70 -8
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/semantic.py +10 -5
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/compress/prose_llmlingua.py +1 -7
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/compress/router.py +82 -87
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/config/__init__.py +16 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/config/defaults.py +1 -6
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/config/schema.py +2 -19
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/config/store.py +15 -1
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/metrics/counters.py +15 -7
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/_helpers.py +100 -2
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/anthropic_surface.py +12 -0
- superlocalmemory-3.6.10/src/superlocalmemory/optimize/proxy/capture.py +243 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/gemini_surface.py +31 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/openai_surface.py +12 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/server.py +29 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/storage/db.py +78 -11
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/storage/schema.py +11 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/spreading_activation.py +8 -3
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/optimize.py +6 -8
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/unified_daemon.py +68 -11
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/index.html +18 -14
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/auto-settings.js +3 -1
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-shell.js +3 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/optimize.js +9 -9
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10/src/superlocalmemory.egg-info}/PKG-INFO +10 -5
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory.egg-info/SOURCES.txt +2 -2
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory.egg-info/requires.txt +1 -0
- superlocalmemory-3.6.8/src/superlocalmemory/optimize/compress/extractive_code.py +0 -311
- superlocalmemory-3.6.8/src/superlocalmemory/optimize/compress/extractive_json.py +0 -72
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/AUTHORS.md +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/LICENSE +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/NOTICE +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/setup.cfg +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/attribution/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/attribution/signer.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/attribution/watermark.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/cache_cmd.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/commands.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/context_commands.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/db_migrate.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/doctor_cmd.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/escape_hatch.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/help_cmd.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/json_output.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/main.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/optimize_constants.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/pending_store.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/post_install.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/proxy_cmd.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/service_installer.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/version_banner.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/changes.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/communities.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/config.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/database.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/flows.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/graph_store.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/incremental.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/models.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/parser.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/resolver.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/search.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/service.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/code_graph/watcher.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/abac.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/audit.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/gdpr.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/lifecycle.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/retention.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/compliance/scheduler.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/backend_orchestrator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/block_hygiene.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/clock_monitor.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/consolidation_engine.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/context_cache.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/db_pool.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/embedding_worker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/embeddings.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/engine_capabilities.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/engine_lock.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/engine_wiring.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/error_catalog.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/error_envelope.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/fact_consolidator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/file_lock.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/graph_analyzer.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/graph_pruner.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/hooks.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/ingest_gate.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/injection.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/loop_watchdog.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/maintenance.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/mcp_embedder_proxy.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/modes.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/ollama_embedder.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/platform_utils.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/priority_queue.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/profiles.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/pruning_engine.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/queue_consumer.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/ram_lock.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/rate_limit.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/recall_gate.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/recall_pipeline.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/recall_queue.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/recall_worker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/registry.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/reranker_worker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/safe_fs.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/security_primitives.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/shadow_router.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/slm_disabled.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/slmignore.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/store_pipeline.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/summarizer.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/tier_manager.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/topic_signature.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/worker_pool.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/dynamics/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/auto_linker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/consolidator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/context_generator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/emotional.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/foresight.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/graph_builder.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/observation_builder.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/scene_builder.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/signal_inference.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/encoding/type_router.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/budget.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/evolution_store.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/triggers.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/evolution/types.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/graph/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/graph/cozo_backend.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/adapter_base.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/auto_capture.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/auto_recall.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/context_payload.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/ide_connector.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/rules_engine.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/session_registry.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/sync_loop.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/auth_middleware.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/backup.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/cache_manager.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/cloud_backup.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/event_bus.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/pid_manager.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/process_reaper.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/rate_limiter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/credentials.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/parsers.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/adaptive.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/arm_catalog.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/assertion_miner.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/bandit.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/bandit_cache.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/behavioral.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/bootstrap.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/cross_project.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/database.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/engagement.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/ensemble.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/entity_compiler.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/features.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/feedback.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/labeler.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/legacy_migration.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/lightgbm_subprocess.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/memory_merge.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/model_cache.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/model_rollback.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/outcome_queue.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/outcomes.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/pattern_miner.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/project_context.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/ranker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/ranker_common.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/reward.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/reward_archive.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/reward_boost.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/reward_proxy.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/shadow_test.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/signal_worker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/signals.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/source_quality.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/trigram_index.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/learning/workflows.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/llm/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/llm/backbone.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/ebbinghaus.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/fisher.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/fisher_quantized.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/hopfield.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/langevin.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/polar_quant.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/qjl.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/sheaf.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/math/turbo_quant.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/_stdin_guard.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/resources.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/server.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/shared.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_context.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_learning.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_v28.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_v3.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mcp/tools_v33.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mesh/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mesh/broker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/mesh/remote_sync.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/migrations/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/adapters/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/adapters/_agent_registry.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/adapters/anthropic_adapter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/adapters/openai_adapter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/adapters/wrap.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/centroid_store.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/context_key.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/invalidation.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/cache/stampede.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/compress/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/compress/align.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/compress/ccr.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/metrics/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/metrics/estimator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/metrics/exporters.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/metrics/persistence.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/proxy/lifecycle.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/optimize/storage/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/agentic.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/ann_index.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/engine.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/fusion.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/reranker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/strategy.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/retrieval/vector_store.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/api.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/bandit_loops.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/middleware/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/recall_health.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/recall_serializer.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/adapters.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/agents.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/backup.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/behavioral.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/brain.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/chat.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/compliance.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/data_io.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/entity.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/events.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/evolution.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/helpers.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/ingest.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/insights.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/learning.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/memories.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/mesh.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/prewarm.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/profiles.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/stats.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/tiers.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/timeline.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/token.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/v3_api.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/routes/ws.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/security_middleware.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/server/ui.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-build-graph/SKILL.md +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-list-recent/SKILL.md +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-recall/SKILL.md +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-remember/SKILL.md +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-status/SKILL.md +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/access_control.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/access_log.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/database.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migration_runner.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migration_v33.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/migrations.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/models.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/quantized_store.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v32.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v3410.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v3411.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v343.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v345.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/schema_v347.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/storage/v2_migrator.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/trust/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/trust/gate.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/trust/provenance.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/trust/scorer.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/trust/signals.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/css/brain.css +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/agents.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/brain.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/clusters.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/compliance.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/core.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/dashboard.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/events.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/feedback.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ide-status.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/init.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/math-health.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/memories.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/modal.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-health.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/profiles.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/search.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/settings.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/timeline.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/vector/__init__.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/vector/lancedb_backend.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory.egg-info/top_level.txt +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_auto_hooks.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_before_web_hook.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_behavioral_full.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_claude_hooks.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_cli_core.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_cli_json.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_cli_v33.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_compliance_full.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_config_system.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_engine_hooks.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_event_bus.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_features.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_final_locomo_mini.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_graph_integrity.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_hook_handlers.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_ide_connector.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_infra.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_injection.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_learning_advanced.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_learning_collectors.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_llm_provider.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_mcp_server.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_migration.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_mode_switch_preservation.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_post_install.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_ranker.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_topic_shift_hook.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_trust_full.py +0 -0
- {superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/tests/test_v3_api.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: superlocalmemory
|
|
3
|
-
Version: 3.6.
|
|
3
|
+
Version: 3.6.10
|
|
4
4
|
Summary: Information-geometric agent memory with mathematical guarantees
|
|
5
5
|
Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com>
|
|
6
6
|
License: AGPL-3.0-or-later
|
|
@@ -58,6 +58,7 @@ Requires-Dist: huggingface_hub==0.36.2
|
|
|
58
58
|
Requires-Dist: torch==2.11.0
|
|
59
59
|
Requires-Dist: scikit-learn==1.8.0
|
|
60
60
|
Requires-Dist: sqlite-vec==0.1.9
|
|
61
|
+
Requires-Dist: llmlingua==0.2.2
|
|
61
62
|
Provides-Extra: search
|
|
62
63
|
Requires-Dist: sentence-transformers==5.3.0; extra == "search"
|
|
63
64
|
Requires-Dist: optimum==2.1.0; extra == "search"
|
|
@@ -125,18 +126,22 @@ Dynamic: license-file
|
|
|
125
126
|
<details>
|
|
126
127
|
<summary><strong>What's New in V3.6 — Optimize: SKIP, SHRINK, DISCOUNT, REMEMBER</strong> (click to expand)</summary>
|
|
127
128
|
|
|
128
|
-
> V3.6 is the only local-first layer that SKIPS repeat LLM calls (cache: 100% saved), SHRINKS prompts
|
|
129
|
+
> V3.6 is the only local-first layer that SKIPS repeat LLM calls (cache: 100% saved on a hit), SHRINKS prose prompts (compress: lossless-by-default, opt-in LLMLingua-2), and DISCOUNTS prefix costs (align: native KV-cache) — and remembers everything — in one install. **Your first cache hit pays for the install time. Hours of coding on repeat, minimal API cost.**
|
|
130
|
+
>
|
|
131
|
+
> **v3.6.10:** cache and compression are now **independent runtime switches** (cache-only, compress-only, both, or neither — toggle live from the dashboard, no restart). Compression was rebuilt to be **lossless by default** (the old string/array/code truncation is gone); aggressive mode adds LLMLingua-2 for **prose only** — never code, numbers, structured data, or the current turn.
|
|
129
132
|
|
|
130
133
|
### The Three Levers
|
|
131
134
|
|
|
132
135
|
| Lever | Mechanism | Saving | Off by default? |
|
|
133
136
|
|-------|-----------|:------:|:---------------:|
|
|
134
|
-
| **Cache** | Skip repeat calls — exact-match SQLite lookup, vCache-gated semantic (opt-in) | **100% on a hit** (input + output) | Cache ON, Semantic OFF |
|
|
135
|
-
| **Compress** | Shrink prompts —
|
|
137
|
+
| **Cache** | Skip repeat calls — exact-match SQLite lookup (zero false hits), vCache-gated semantic (opt-in) | **100% on a hit** (input + output) | Cache ON, Semantic OFF |
|
|
138
|
+
| **Compress** | Shrink prompts — **safe = lossless** normalization; **aggressive = LLMLingua-2 prose only** (opt-in) | Safe: small + lossless · Aggressive: large on prose | Safe mode, Aggressive OFF |
|
|
136
139
|
| **Align** | Stabilize prefix — maximize provider prefix-cache discounts | **Lossless extra** | ON when compression is ON |
|
|
137
140
|
|
|
138
141
|
**Memory** (v3.5's existing engine) runs in parallel — it shapes *what is in* the prompt (relevant facts); Optimize decides *whether and how* it is sent.
|
|
139
142
|
|
|
143
|
+
> **Independent at runtime:** enable caching only, compression only, both, or neither — from the dashboard Optimize tab, applied live (no restart). Each AI client can also get its own memory identity over HTTP MCP via `http://127.0.0.1:8765/mcp/{agent_id}`.
|
|
144
|
+
|
|
140
145
|
### Quick Start
|
|
141
146
|
|
|
142
147
|
```bash
|
|
@@ -152,7 +157,7 @@ slm wrap claude
|
|
|
152
157
|
|:--------|:-------------|
|
|
153
158
|
| `slm optimize status\|on\|off\|savings` | Master Optimize control + savings report (USD/INR/tokens) |
|
|
154
159
|
| `slm cache status\|clear\|invalidate\|ttl\|semantic` | Cache sub-control — exact + semantic tiers |
|
|
155
|
-
| `slm compress status\|mode\|
|
|
160
|
+
| `slm compress status\|mode\|prose` | Compression control — safe (lossless) / aggressive (LLMLingua-2 prose) |
|
|
156
161
|
| `slm proxy [--port] [--provider]` | Start the interception proxy (port 8765) |
|
|
157
162
|
| `slm wrap <agent>` | Proxy-activate an agent — one command to start saving |
|
|
158
163
|
| `slm help-optimize [topic]` | Full developer reference + per-agent setup recipes |
|
|
@@ -33,18 +33,22 @@
|
|
|
33
33
|
<details>
|
|
34
34
|
<summary><strong>What's New in V3.6 — Optimize: SKIP, SHRINK, DISCOUNT, REMEMBER</strong> (click to expand)</summary>
|
|
35
35
|
|
|
36
|
-
> V3.6 is the only local-first layer that SKIPS repeat LLM calls (cache: 100% saved), SHRINKS prompts
|
|
36
|
+
> V3.6 is the only local-first layer that SKIPS repeat LLM calls (cache: 100% saved on a hit), SHRINKS prose prompts (compress: lossless-by-default, opt-in LLMLingua-2), and DISCOUNTS prefix costs (align: native KV-cache) — and remembers everything — in one install. **Your first cache hit pays for the install time. Hours of coding on repeat, minimal API cost.**
|
|
37
|
+
>
|
|
38
|
+
> **v3.6.10:** cache and compression are now **independent runtime switches** (cache-only, compress-only, both, or neither — toggle live from the dashboard, no restart). Compression was rebuilt to be **lossless by default** (the old string/array/code truncation is gone); aggressive mode adds LLMLingua-2 for **prose only** — never code, numbers, structured data, or the current turn.
|
|
37
39
|
|
|
38
40
|
### The Three Levers
|
|
39
41
|
|
|
40
42
|
| Lever | Mechanism | Saving | Off by default? |
|
|
41
43
|
|-------|-----------|:------:|:---------------:|
|
|
42
|
-
| **Cache** | Skip repeat calls — exact-match SQLite lookup, vCache-gated semantic (opt-in) | **100% on a hit** (input + output) | Cache ON, Semantic OFF |
|
|
43
|
-
| **Compress** | Shrink prompts —
|
|
44
|
+
| **Cache** | Skip repeat calls — exact-match SQLite lookup (zero false hits), vCache-gated semantic (opt-in) | **100% on a hit** (input + output) | Cache ON, Semantic OFF |
|
|
45
|
+
| **Compress** | Shrink prompts — **safe = lossless** normalization; **aggressive = LLMLingua-2 prose only** (opt-in) | Safe: small + lossless · Aggressive: large on prose | Safe mode, Aggressive OFF |
|
|
44
46
|
| **Align** | Stabilize prefix — maximize provider prefix-cache discounts | **Lossless extra** | ON when compression is ON |
|
|
45
47
|
|
|
46
48
|
**Memory** (v3.5's existing engine) runs in parallel — it shapes *what is in* the prompt (relevant facts); Optimize decides *whether and how* it is sent.
|
|
47
49
|
|
|
50
|
+
> **Independent at runtime:** enable caching only, compression only, both, or neither — from the dashboard Optimize tab, applied live (no restart). Each AI client can also get its own memory identity over HTTP MCP via `http://127.0.0.1:8765/mcp/{agent_id}`.
|
|
51
|
+
|
|
48
52
|
### Quick Start
|
|
49
53
|
|
|
50
54
|
```bash
|
|
@@ -60,7 +64,7 @@ slm wrap claude
|
|
|
60
64
|
|:--------|:-------------|
|
|
61
65
|
| `slm optimize status\|on\|off\|savings` | Master Optimize control + savings report (USD/INR/tokens) |
|
|
62
66
|
| `slm cache status\|clear\|invalidate\|ttl\|semantic` | Cache sub-control — exact + semantic tiers |
|
|
63
|
-
| `slm compress status\|mode\|
|
|
67
|
+
| `slm compress status\|mode\|prose` | Compression control — safe (lossless) / aggressive (LLMLingua-2 prose) |
|
|
64
68
|
| `slm proxy [--port] [--provider]` | Start the interception proxy (port 8765) |
|
|
65
69
|
| `slm wrap <agent>` | Proxy-activate an agent — one command to start saving |
|
|
66
70
|
| `slm help-optimize [topic]` | Full developer reference + per-agent setup recipes |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "superlocalmemory"
|
|
3
|
-
version = "3.6.
|
|
3
|
+
version = "3.6.10"
|
|
4
4
|
description = "Information-geometric agent memory with mathematical guarantees"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = {text = "AGPL-3.0-or-later"}
|
|
@@ -69,6 +69,11 @@ dependencies = [
|
|
|
69
69
|
"scikit-learn==1.8.0",
|
|
70
70
|
# Vector KNN extension for the semantic channel.
|
|
71
71
|
"sqlite-vec==0.1.9",
|
|
72
|
+
# v3.6.10: LLMLingua-2 prose compression (aggressive mode, opt-in at runtime).
|
|
73
|
+
# Hard dependency so `pip install superlocalmemory` ships compression-ready;
|
|
74
|
+
# the ~560MB model downloads on first setup/warmup (fail-open). Verified the
|
|
75
|
+
# pin does NOT disturb the transformers/torch/numpy pins above.
|
|
76
|
+
"llmlingua==0.2.2",
|
|
72
77
|
]
|
|
73
78
|
|
|
74
79
|
[project.optional-dependencies]
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
"""SuperLocalMemory — information-geometric agent memory.
|
|
1
|
+
"""SuperLocalMemory — information-geometric agent memory.
|
|
2
|
+
|
|
3
|
+
v3.6.9: all 7 retrieval layers at full quality (Hopfield@1000, entity_graph@100,
|
|
4
|
+
SA neighbor-cache fix, fast=True deprecated). See CHANGELOG.md.
|
|
5
|
+
"""
|
|
2
6
|
|
|
3
7
|
import os
|
|
4
8
|
|
|
@@ -28,7 +32,7 @@ if "OMP_NUM_THREADS" not in os.environ:
|
|
|
28
32
|
os.environ["OMP_NUM_THREADS"] = "2"
|
|
29
33
|
# ---------------------------------------------------------------------------
|
|
30
34
|
|
|
31
|
-
__version__ = "3.6.
|
|
35
|
+
__version__ = "3.6.10"
|
|
32
36
|
|
|
33
37
|
_REQUIRED_VERSIONS = {
|
|
34
38
|
"sentence_transformers": "5.3.0",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Licensed under AGPL-3.0-or-later - see LICENSE file
|
|
3
3
|
# Part of SuperLocalMemory V3 | https://qualixar.com | https://varunpratap.com
|
|
4
4
|
|
|
5
|
-
"""Handlers for ``slm compress status|mode|
|
|
5
|
+
"""Handlers for ``slm compress status|mode|prose``."""
|
|
6
6
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
@@ -19,11 +19,6 @@ def _get_store():
|
|
|
19
19
|
return ConfigStore()
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
def _get_cache_db():
|
|
23
|
-
from superlocalmemory.optimize.storage.db import CacheDB
|
|
24
|
-
return CacheDB()
|
|
25
|
-
|
|
26
|
-
|
|
27
22
|
def _write_config(**fields) -> None:
|
|
28
23
|
"""5-step immutable config-write."""
|
|
29
24
|
store = _get_store()
|
|
@@ -44,18 +39,31 @@ def cmd_compress(args: Namespace) -> None:
|
|
|
44
39
|
sub = getattr(args, "compress_command", None)
|
|
45
40
|
_dispatch = {
|
|
46
41
|
"status": cmd_compress_status,
|
|
47
|
-
"mode":
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
"
|
|
42
|
+
"mode": cmd_compress_mode,
|
|
43
|
+
"prose": cmd_compress_prose,
|
|
44
|
+
# removed in v3.6.10: code, ccr, align (extractive compressors removed)
|
|
45
|
+
"code": _cmd_compress_removed("code"),
|
|
46
|
+
"ccr": _cmd_compress_removed("ccr"),
|
|
47
|
+
"align": _cmd_compress_removed("align"),
|
|
52
48
|
}
|
|
53
49
|
handler = _dispatch.get(sub or "")
|
|
54
50
|
if handler:
|
|
55
51
|
handler(args)
|
|
56
52
|
else:
|
|
57
|
-
print("Usage: slm compress status|mode|
|
|
53
|
+
print("Usage: slm compress status|mode|prose [options]")
|
|
54
|
+
sys.exit(0)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def _cmd_compress_removed(name: str):
|
|
58
|
+
def handler(args: Namespace) -> None:
|
|
59
|
+
print(
|
|
60
|
+
f"slm compress {name}: removed in SLM v3.6.10. "
|
|
61
|
+
f"Extractive {name} compression has been replaced by "
|
|
62
|
+
f"Layer 1 (lossless whitespace) + Layer 2 (LLMLingua-2 prose). "
|
|
63
|
+
f"Use 'slm compress prose on' to enable prose compression."
|
|
64
|
+
)
|
|
58
65
|
sys.exit(0)
|
|
66
|
+
return handler
|
|
59
67
|
|
|
60
68
|
|
|
61
69
|
def cmd_compress_status(args: Namespace) -> None:
|
|
@@ -68,21 +76,19 @@ def cmd_compress_status(args: Namespace) -> None:
|
|
|
68
76
|
"status": "ok",
|
|
69
77
|
"compress_enabled": cfg.compress_enabled,
|
|
70
78
|
"compress_mode": cfg.compress_mode,
|
|
71
|
-
"compress_code": cfg.compress_code,
|
|
72
79
|
"compress_prose": cfg.compress_prose,
|
|
73
|
-
"
|
|
80
|
+
"compress_protect_recent": cfg.compress_protect_recent,
|
|
74
81
|
}
|
|
75
82
|
print(json.dumps(data, indent=2))
|
|
76
83
|
return
|
|
77
84
|
|
|
78
85
|
print("Compression status:")
|
|
79
|
-
print(f" Enabled:
|
|
80
|
-
print(f" Mode:
|
|
81
|
-
print(f"
|
|
82
|
-
" (
|
|
83
|
-
print(f"
|
|
84
|
-
print(
|
|
85
|
-
" (reversible context retrieval)")
|
|
86
|
+
print(f" Enabled: {'yes' if cfg.compress_enabled else 'no'}")
|
|
87
|
+
print(f" Mode: {cfg.compress_mode}")
|
|
88
|
+
print(f" Prose (Layer 2): {'ON' if cfg.compress_prose else 'OFF'}"
|
|
89
|
+
" (LLMLingua-2, aggressive mode only)")
|
|
90
|
+
print(f" Protect recent: {cfg.compress_protect_recent} user turns")
|
|
91
|
+
print(" Layer 1 (lossless whitespace normalization) is always ON when enabled.")
|
|
86
92
|
|
|
87
93
|
|
|
88
94
|
def cmd_compress_mode(args: Namespace) -> None:
|
|
@@ -103,23 +109,8 @@ def cmd_compress_mode(args: Namespace) -> None:
|
|
|
103
109
|
print("Daemon hot-reload: active within 2s. No restart required.")
|
|
104
110
|
|
|
105
111
|
|
|
106
|
-
def cmd_compress_code(args: Namespace) -> None:
|
|
107
|
-
"""Enable or disable code/JSON compression."""
|
|
108
|
-
use_json = getattr(args, "json", False)
|
|
109
|
-
value = getattr(args, "code_value", "on")
|
|
110
|
-
|
|
111
|
-
_write_config(compress_code=(value == "on"))
|
|
112
|
-
|
|
113
|
-
if use_json:
|
|
114
|
-
print(json.dumps({"status": "ok", "compress_code": value == "on"}))
|
|
115
|
-
return
|
|
116
|
-
|
|
117
|
-
print(f"Code compression: {'ENABLED' if value == 'on' else 'DISABLED'}.")
|
|
118
|
-
print("Daemon hot-reload: active within 2s.")
|
|
119
|
-
|
|
120
|
-
|
|
121
112
|
def cmd_compress_prose(args: Namespace) -> None:
|
|
122
|
-
"""Enable or disable prose compression."""
|
|
113
|
+
"""Enable or disable prose compression (Layer 2, LLMLingua-2)."""
|
|
123
114
|
use_json = getattr(args, "json", False)
|
|
124
115
|
value = getattr(args, "prose_value", "off")
|
|
125
116
|
|
|
@@ -141,39 +132,10 @@ def cmd_compress_prose(args: Namespace) -> None:
|
|
|
141
132
|
print(json.dumps({"status": "ok", "compress_prose": value == "on"}))
|
|
142
133
|
return
|
|
143
134
|
|
|
144
|
-
print(f"Prose compression: {'ENABLED' if value == 'on' else 'DISABLED'}.")
|
|
135
|
+
print(f"Prose compression (LLMLingua-2): {'ENABLED' if value == 'on' else 'DISABLED'}.")
|
|
136
|
+
if value == "on":
|
|
137
|
+
print(" Requires: compress_mode=aggressive and llmlingua package installed.")
|
|
138
|
+
print(" Run: slm compress mode aggressive (if not already set)")
|
|
145
139
|
if value == "on" and "compress_enabled" in fields:
|
|
146
140
|
print(" (also enabled global compress)")
|
|
147
141
|
print("Daemon hot-reload: active within 2s.")
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
def cmd_compress_align(args: Namespace) -> None:
|
|
151
|
-
"""Enable or disable alignment compression."""
|
|
152
|
-
use_json = getattr(args, "json", False)
|
|
153
|
-
value = getattr(args, "align_value", "on")
|
|
154
|
-
|
|
155
|
-
_write_config(compress_align=(value == "on"))
|
|
156
|
-
|
|
157
|
-
if use_json:
|
|
158
|
-
print(json.dumps({"status": "ok", "compress_align": value == "on"}))
|
|
159
|
-
return
|
|
160
|
-
|
|
161
|
-
print(f"Alignment compression: {'ENABLED' if value == 'on' else 'DISABLED'}.")
|
|
162
|
-
print("Daemon hot-reload: active within 2s.")
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
def cmd_compress_ccr(args: Namespace) -> None:
|
|
166
|
-
"""Enable or disable CCR (Compressed Context Retrieval)."""
|
|
167
|
-
use_json = getattr(args, "json", False)
|
|
168
|
-
value = getattr(args, "ccr_value", "off")
|
|
169
|
-
|
|
170
|
-
_write_config(compress_ccr=(value == "on"))
|
|
171
|
-
|
|
172
|
-
if use_json:
|
|
173
|
-
print(json.dumps({"status": "ok", "compress_ccr": value == "on"}))
|
|
174
|
-
return
|
|
175
|
-
|
|
176
|
-
print(f"CCR (Compressed Context Retrieval): {'ENABLED' if value == 'on' else 'DISABLED'}.")
|
|
177
|
-
if value == "on":
|
|
178
|
-
print("Originals stored in llmcache.db for reversible retrieval.")
|
|
179
|
-
print("Daemon hot-reload: active within 2s.")
|
|
@@ -34,7 +34,10 @@ from threading import Thread
|
|
|
34
34
|
|
|
35
35
|
logger = logging.getLogger(__name__)
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
try:
|
|
38
|
+
_DEFAULT_PORT = int(os.environ.get("SLM_DAEMON_PORT", "") or 8765)
|
|
39
|
+
except ValueError:
|
|
40
|
+
_DEFAULT_PORT = 8765
|
|
38
41
|
_LEGACY_PORT = 8767 # backward-compat redirect
|
|
39
42
|
_DEFAULT_IDLE_TIMEOUT = 0 # v3.4.3: 24/7 default (was 1800)
|
|
40
43
|
_PID_FILE = Path.home() / ".superlocalmemory" / "daemon.pid"
|
|
@@ -160,7 +163,13 @@ def _start_daemon_subprocess() -> bool:
|
|
|
160
163
|
return True
|
|
161
164
|
|
|
162
165
|
import subprocess
|
|
163
|
-
|
|
166
|
+
# v3.6.9 (#33): pass SLM_DAEMON_PORT as explicit --port= so the daemon
|
|
167
|
+
# binds the right port even when the env var reaches the subprocess.
|
|
168
|
+
_target_port = _DEFAULT_PORT
|
|
169
|
+
cmd = [
|
|
170
|
+
sys.executable, "-m", "superlocalmemory.server.unified_daemon",
|
|
171
|
+
"--start", f"--port={_target_port}",
|
|
172
|
+
]
|
|
164
173
|
log_dir = Path.home() / ".superlocalmemory" / "logs"
|
|
165
174
|
log_dir.mkdir(parents=True, exist_ok=True)
|
|
166
175
|
log_file = log_dir / "daemon.log"
|
|
@@ -187,7 +196,7 @@ def _start_daemon_subprocess() -> bool:
|
|
|
187
196
|
|
|
188
197
|
# Write PID immediately so other callers see it during warmup
|
|
189
198
|
_PID_FILE.write_text(str(proc.pid))
|
|
190
|
-
_PORT_FILE.write_text(str(
|
|
199
|
+
_PORT_FILE.write_text(str(_target_port))
|
|
191
200
|
|
|
192
201
|
return _wait_for_daemon(timeout=60)
|
|
193
202
|
|
|
@@ -237,6 +246,19 @@ def ensure_daemon() -> bool:
|
|
|
237
246
|
if is_daemon_running():
|
|
238
247
|
return True
|
|
239
248
|
|
|
249
|
+
# v3.6.9 (#36): TCP-level check catches a systemd-started daemon that
|
|
250
|
+
# has bound the port but hasn't written a PID file yet (e.g. different
|
|
251
|
+
# HOME for the service user vs. the SSH user). If the port is already
|
|
252
|
+
# bound, don't start a second daemon — wait for HTTP readiness instead.
|
|
253
|
+
try:
|
|
254
|
+
import socket as _socket
|
|
255
|
+
with _socket.socket(_socket.AF_INET, _socket.SOCK_STREAM) as _s:
|
|
256
|
+
_s.settimeout(1)
|
|
257
|
+
if _s.connect_ex(("127.0.0.1", _DEFAULT_PORT)) == 0:
|
|
258
|
+
return _wait_for_daemon(timeout=30)
|
|
259
|
+
except Exception:
|
|
260
|
+
pass
|
|
261
|
+
|
|
240
262
|
# Start unified daemon in background — delegated to helper so the
|
|
241
263
|
# same logic can be reused by callers that already hold the lock.
|
|
242
264
|
return _start_daemon_subprocess()
|
|
@@ -97,9 +97,7 @@ def cmd_optimize_status(args: Namespace) -> None:
|
|
|
97
97
|
f" semantic: {'OFF' if not cfg.semantic_enabled else f'{cfg.ttl.semantic_seconds}s'})")
|
|
98
98
|
print(f" Compress: {'enabled' if cfg.compress_enabled else 'disabled'}"
|
|
99
99
|
f" (mode: {cfg.compress_mode},"
|
|
100
|
-
f"
|
|
101
|
-
f" prose: {'ON' if cfg.compress_prose else 'OFF'},"
|
|
102
|
-
f" CCR: {'ON' if cfg.compress_ccr else 'OFF'})")
|
|
100
|
+
f" prose/L2: {'ON' if cfg.compress_prose else 'OFF'})")
|
|
103
101
|
proxy_status = f"running on :{OPTIMIZE_DEFAULT_PORT}" if proxy_running else "not running"
|
|
104
102
|
print(f" Proxy: {proxy_status}")
|
|
105
103
|
print(f" Config: ~/.superlocalmemory/optimize.json (version {cfg.config_version})")
|
|
@@ -32,6 +32,8 @@ _SLM_HOME = Path(os.environ.get("SL_MEMORY_PATH", Path.home() / ".superlocalmemo
|
|
|
32
32
|
_SETUP_MARKER = _SLM_HOME / ".setup-complete"
|
|
33
33
|
_EMBED_MODEL = "nomic-ai/nomic-embed-text-v1.5"
|
|
34
34
|
_RERANKER_MODEL = "cross-encoder/ms-marco-MiniLM-L-12-v2"
|
|
35
|
+
# v3.6.10: compulsory LLMLingua-2 prose compression model (~560MB, aggressive mode).
|
|
36
|
+
_COMPRESSOR_MODEL = "microsoft/llmlingua-2-xlm-roberta-large-meetingbank"
|
|
35
37
|
|
|
36
38
|
|
|
37
39
|
# ---------------------------------------------------------------------------
|
|
@@ -178,6 +180,49 @@ def _download_reranker(model_name: str) -> bool:
|
|
|
178
180
|
return False
|
|
179
181
|
|
|
180
182
|
|
|
183
|
+
def _download_compressor(model_name: str) -> bool:
|
|
184
|
+
"""Download the LLMLingua-2 prose compression model (v3.6.10).
|
|
185
|
+
|
|
186
|
+
Mirrors _download_reranker: a subprocess forces the HF download with visible
|
|
187
|
+
progress. Fail-open — a network hiccup must NOT break setup; the model also
|
|
188
|
+
lazy-downloads on first use in prose_llmlingua.py.
|
|
189
|
+
"""
|
|
190
|
+
print(f"\n Downloading compression model: {model_name}")
|
|
191
|
+
print(f" (LLMLingua-2 prose compressor, ~560MB — aggressive mode only)\n")
|
|
192
|
+
|
|
193
|
+
script = (
|
|
194
|
+
"from llmlingua import PromptCompressor; "
|
|
195
|
+
f"PromptCompressor(model_name='{model_name}', use_llmlingua2=True, "
|
|
196
|
+
"device_map='cpu'); "
|
|
197
|
+
"print('OK')"
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
try:
|
|
201
|
+
result = subprocess.run(
|
|
202
|
+
[sys.executable, "-c", script],
|
|
203
|
+
timeout=900, # 560MB on a slow link can exceed 5 min
|
|
204
|
+
capture_output=False,
|
|
205
|
+
text=True,
|
|
206
|
+
env={
|
|
207
|
+
**os.environ,
|
|
208
|
+
"CUDA_VISIBLE_DEVICES": "",
|
|
209
|
+
"TOKENIZERS_PARALLELISM": "false",
|
|
210
|
+
"TORCH_DEVICE": "cpu",
|
|
211
|
+
},
|
|
212
|
+
)
|
|
213
|
+
if result.returncode == 0:
|
|
214
|
+
print(f" ✓ Compression model ready")
|
|
215
|
+
return True
|
|
216
|
+
print(f" ✗ Compression model download failed (will lazy-download on first use)")
|
|
217
|
+
return False
|
|
218
|
+
except ImportError:
|
|
219
|
+
print(f" ⚠ llmlingua not installed — compression model will download on first use")
|
|
220
|
+
return False
|
|
221
|
+
except Exception as exc:
|
|
222
|
+
print(f" ✗ Compression model error: {exc}")
|
|
223
|
+
return False
|
|
224
|
+
|
|
225
|
+
|
|
181
226
|
# ---------------------------------------------------------------------------
|
|
182
227
|
# Verification
|
|
183
228
|
# ---------------------------------------------------------------------------
|
|
@@ -393,6 +438,10 @@ def run_wizard(auto: bool = False) -> None:
|
|
|
393
438
|
else:
|
|
394
439
|
_download_reranker(_RERANKER_MODEL)
|
|
395
440
|
|
|
441
|
+
print()
|
|
442
|
+
print("─── Step 4c/10: Download Compression Model (LLMLingua-2) ───")
|
|
443
|
+
_download_compressor(_COMPRESSOR_MODEL)
|
|
444
|
+
|
|
396
445
|
# -- Step 5: Daemon Configuration (v3.4.3) --
|
|
397
446
|
print()
|
|
398
447
|
print("─── Step 5/10: Daemon Configuration ───")
|
|
@@ -654,6 +654,25 @@ class AutoInvokeConfig:
|
|
|
654
654
|
relevance_threshold: float = 0.3 # Legacy compat with AutoRecall
|
|
655
655
|
|
|
656
656
|
|
|
657
|
+
# ---------------------------------------------------------------------------
|
|
658
|
+
# Health Config (v3.6.9 BUG-A)
|
|
659
|
+
# ---------------------------------------------------------------------------
|
|
660
|
+
|
|
661
|
+
@dataclass
|
|
662
|
+
class HealthConfig:
|
|
663
|
+
"""Health-monitor tuning knobs.
|
|
664
|
+
|
|
665
|
+
All values have safe defaults so an empty ``"health": {}`` JSON section
|
|
666
|
+
silently inherits them. The ``global_rss_budget_mb`` default is computed
|
|
667
|
+
at runtime (40% of physical RAM, floor 2500 MB) so low-RAM boxes keep the
|
|
668
|
+
old behaviour while large machines are never accidentally throttled.
|
|
669
|
+
"""
|
|
670
|
+
global_rss_budget_mb: int = 0 # 0 = compute at runtime (40% RAM, floor 2500)
|
|
671
|
+
heartbeat_timeout_sec: int = 60
|
|
672
|
+
health_check_interval_sec: int = 15
|
|
673
|
+
enable_structured_logging: bool = True
|
|
674
|
+
|
|
675
|
+
|
|
657
676
|
# ---------------------------------------------------------------------------
|
|
658
677
|
# Master Config
|
|
659
678
|
# ---------------------------------------------------------------------------
|
|
@@ -698,6 +717,7 @@ class SLMConfig:
|
|
|
698
717
|
graph_backend: str = "auto" # "auto" = cozo if pycozo installed, else sqlite
|
|
699
718
|
vector_backend: str = "auto" # "auto" = lancedb if installed, else sqlite-vec
|
|
700
719
|
evolution: EvolutionConfig = field(default_factory=EvolutionConfig)
|
|
720
|
+
health: HealthConfig = field(default_factory=HealthConfig)
|
|
701
721
|
|
|
702
722
|
# v3.4.3: Daemon configuration
|
|
703
723
|
daemon_idle_timeout: int = 0 # 0 = 24/7 (no auto-kill). >0 = seconds before auto-kill.
|
|
@@ -789,6 +809,14 @@ class SLMConfig:
|
|
|
789
809
|
if k in EvolutionConfig.__dataclass_fields__
|
|
790
810
|
})
|
|
791
811
|
|
|
812
|
+
# V3.6.9: Health monitor config (BUG-A — previously silently ignored)
|
|
813
|
+
hlth = data.get("health", {})
|
|
814
|
+
if hlth:
|
|
815
|
+
config.health = HealthConfig(**{
|
|
816
|
+
k: v for k, v in hlth.items()
|
|
817
|
+
if k in HealthConfig.__dataclass_fields__
|
|
818
|
+
})
|
|
819
|
+
|
|
792
820
|
# V3.4.65: Injection config (additive — defaults if missing from JSON)
|
|
793
821
|
inj = data.get("injection", {}) or {}
|
|
794
822
|
config.injection = InjectionConfig(
|
|
@@ -452,7 +452,9 @@ class MemoryEngine:
|
|
|
452
452
|
now = datetime.now(timezone.utc).isoformat()
|
|
453
453
|
record = MemoryRecord(
|
|
454
454
|
profile_id=self._profile_id, content=content,
|
|
455
|
-
session_date=now[:10],
|
|
455
|
+
session_date=now[:10],
|
|
456
|
+
session_id=(metadata or {}).get("session_id", ""),
|
|
457
|
+
metadata=metadata or {},
|
|
456
458
|
)
|
|
457
459
|
self._db.store_memory(record)
|
|
458
460
|
# Lightweight regex entities (matches store_pipeline verbatim path) so
|
|
@@ -520,13 +522,22 @@ class MemoryEngine:
|
|
|
520
522
|
on a background worker.
|
|
521
523
|
|
|
522
524
|
V3.4.40 (2026-05-09): ``fast=True`` skips the SpreadingActivation
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
525
|
+
channel. Deprecated in v3.6.9 — SA now completes in ~36ms after the
|
|
526
|
+
neighbor-cache fix; fast=True is slower than fast=False and reduces
|
|
527
|
+
recall quality. The parameter is accepted for backward compatibility
|
|
528
|
+
but is silently treated as False.
|
|
526
529
|
"""
|
|
527
530
|
self._require_full("recall")
|
|
528
531
|
self._ensure_init()
|
|
529
532
|
|
|
533
|
+
if fast:
|
|
534
|
+
logger.warning(
|
|
535
|
+
"fast=True is deprecated (v3.6.9): SpreadingActivation now "
|
|
536
|
+
"completes in ~36ms; fast mode is slower and reduces quality. "
|
|
537
|
+
"Pass fast=False (the default) to silence this warning."
|
|
538
|
+
)
|
|
539
|
+
fast = False
|
|
540
|
+
|
|
530
541
|
pid = profile_id or self._profile_id
|
|
531
542
|
|
|
532
543
|
from superlocalmemory.core.recall_pipeline import run_recall
|
{superlocalmemory-3.6.8 → superlocalmemory-3.6.10}/src/superlocalmemory/core/health_monitor.py
RENAMED
|
@@ -130,14 +130,26 @@ class HealthMonitor:
|
|
|
130
130
|
"superlocalmemory.core.reranker_worker",
|
|
131
131
|
"superlocalmemory.core.recall_worker",
|
|
132
132
|
)
|
|
133
|
+
# Workers that are LOAD-BEARING for recall quality — never kill these
|
|
134
|
+
# first; prefer killing the reranker (gracefully degrades) or GC instead.
|
|
135
|
+
_EMBEDDING_IDENTIFIER = "superlocalmemory.core.embedding_worker"
|
|
133
136
|
|
|
134
137
|
def __init__(
|
|
135
138
|
self,
|
|
136
|
-
global_rss_budget_mb: int =
|
|
139
|
+
global_rss_budget_mb: int = 0,
|
|
137
140
|
heartbeat_timeout_sec: int = 60,
|
|
138
141
|
check_interval_sec: int = 15,
|
|
139
142
|
enable_structured_logging: bool = True,
|
|
140
143
|
):
|
|
144
|
+
# Compute RAM-scaled default when 0 is passed (or when the caller
|
|
145
|
+
# explicitly passes 0 meaning "auto"). Floor at 2500 so low-RAM boxes
|
|
146
|
+
# keep the old conservative behaviour.
|
|
147
|
+
if global_rss_budget_mb <= 0:
|
|
148
|
+
if PSUTIL_AVAILABLE:
|
|
149
|
+
phys_mb = psutil.virtual_memory().total // (1024 * 1024)
|
|
150
|
+
global_rss_budget_mb = max(2500, int(phys_mb * 0.40))
|
|
151
|
+
else:
|
|
152
|
+
global_rss_budget_mb = 8000 # safe fallback when psutil absent
|
|
141
153
|
self._budget_mb = global_rss_budget_mb
|
|
142
154
|
self._heartbeat_timeout = heartbeat_timeout_sec
|
|
143
155
|
self._interval = check_interval_sec
|
|
@@ -207,7 +219,7 @@ class HealthMonitor:
|
|
|
207
219
|
slm_workers.append({
|
|
208
220
|
"pid": child.pid,
|
|
209
221
|
"rss_mb": round(rss_mb, 1),
|
|
210
|
-
"cmdline": cmdline[:
|
|
222
|
+
"cmdline": cmdline[:200],
|
|
211
223
|
})
|
|
212
224
|
except (psutil.NoSuchProcess, psutil.AccessDenied):
|
|
213
225
|
continue
|
|
@@ -225,22 +237,33 @@ class HealthMonitor:
|
|
|
225
237
|
budget_mb=self._budget_mb,
|
|
226
238
|
)
|
|
227
239
|
|
|
228
|
-
# RSS budget enforcement
|
|
240
|
+
# RSS budget enforcement — spare the embedding worker (load-bearing for
|
|
241
|
+
# recall quality). Kill the reranker first (degrades gracefully); only
|
|
242
|
+
# fall back to the embedder if it is the only worker remaining.
|
|
229
243
|
if total_rss_mb > self._budget_mb and slm_workers:
|
|
230
|
-
|
|
244
|
+
non_embedder = [
|
|
245
|
+
w for w in slm_workers
|
|
246
|
+
if self._EMBEDDING_IDENTIFIER not in w["cmdline"]
|
|
247
|
+
]
|
|
248
|
+
candidate = (
|
|
249
|
+
max(non_embedder, key=lambda w: w["rss_mb"])
|
|
250
|
+
if non_embedder
|
|
251
|
+
else max(slm_workers, key=lambda w: w["rss_mb"])
|
|
252
|
+
)
|
|
231
253
|
logger.warning(
|
|
232
|
-
"RSS budget exceeded (%.0fMB > %dMB). Killing
|
|
233
|
-
total_rss_mb, self._budget_mb,
|
|
254
|
+
"RSS budget exceeded (%.0fMB > %dMB). Killing worker PID %d (%.0fMB)",
|
|
255
|
+
total_rss_mb, self._budget_mb, candidate["pid"], candidate["rss_mb"],
|
|
234
256
|
)
|
|
235
257
|
log_structured(
|
|
236
258
|
level="warning",
|
|
237
259
|
operation="rss_budget_kill",
|
|
238
|
-
killed_pid=
|
|
239
|
-
killed_rss_mb=
|
|
260
|
+
killed_pid=candidate["pid"],
|
|
261
|
+
killed_rss_mb=candidate["rss_mb"],
|
|
240
262
|
total_rss_mb=round(total_rss_mb, 1),
|
|
263
|
+
spared_embedder=bool(non_embedder),
|
|
241
264
|
)
|
|
242
265
|
try:
|
|
243
|
-
psutil.Process(
|
|
266
|
+
psutil.Process(candidate["pid"]).terminate()
|
|
244
267
|
except psutil.NoSuchProcess:
|
|
245
268
|
pass
|
|
246
269
|
|