superlocalmemory 3.6.22__tar.gz → 3.6.23__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.6.22/src/superlocalmemory.egg-info → superlocalmemory-3.6.23}/PKG-INFO +7 -4
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/README.md +6 -3
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/pyproject.toml +1 -1
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/__init__.py +1 -1
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/commands.py +37 -4
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/maintenance.py +22 -21
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/claude_code_hooks.py +4 -5
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/hook_handlers.py +22 -23
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/llm/backbone.py +12 -7
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/storage/db.py +2 -1
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/helpers.py +84 -4
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/ui.py +6 -3
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23/src/superlocalmemory.egg-info}/PKG-INFO +7 -4
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_hook_handlers.py +18 -2
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_version_consistency.py +1 -1
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/AUTHORS.md +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/LICENSE +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/NOTICE +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/setup.cfg +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/signer.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/watermark.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/_lazy_init.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/cache_cmd.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/compress_cmd.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/context_commands.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/daemon.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/db_migrate.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/escape_hatch.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/help_cmd.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/json_output.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/main.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/optimize_cmd.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/optimize_constants.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/pending_store.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/post_install.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/proxy_cmd.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/service_installer.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/setup_wizard.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/version_banner.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/changes.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/communities.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/config.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/database.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/flows.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/graph_store.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/incremental.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/models.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/parser.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/resolver.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/search.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/service.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/code_graph/watcher.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/abac.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/audit.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/gdpr.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/lifecycle.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/retention.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/compliance/scheduler.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/backend_orchestrator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/block_hygiene.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/clock_monitor.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/config.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/consolidation_engine.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/context_cache.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/db_pool.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/embedding_worker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/embeddings.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/engine.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/engine_capabilities.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/engine_lock.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/engine_wiring.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/error_catalog.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/error_envelope.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/fact_consolidator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/file_lock.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/graph_analyzer.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/graph_pruner.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/health_monitor.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/hooks.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/ingest_gate.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/injection.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/loop_watchdog.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/mcp_embedder_proxy.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/modes.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/ollama_embedder.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/platform_utils.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/priority_queue.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/profiles.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/pruning_engine.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/queue_consumer.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/ram_lock.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/rate_limit.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/recall_gate.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/recall_pipeline.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/recall_queue.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/recall_worker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/registry.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/remote_mode.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/reranker_worker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/safe_fs.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/security_primitives.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/shadow_router.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/slm_disabled.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/slmignore.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/store_pipeline.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/summarizer.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/tier_manager.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/topic_signature.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/worker_pool.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/dynamics/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/auto_linker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/consolidator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/context_generator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/emotional.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/foresight.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/graph_builder.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/observation_builder.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/scene_builder.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/signal_inference.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/encoding/type_router.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/budget.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/evolution_store.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/triggers.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/evolution/types.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/graph/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/graph/cozo_backend.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/adapter_base.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/auto_capture.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/auto_recall.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/context_payload.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/ide_connector.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/memory_protocol.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/portable_kit.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/rules_engine.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/session_registry.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/sync_loop.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/auth_middleware.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/backup.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/cache_manager.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/cloud_backup.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/event_bus.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/pid_manager.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/process_reaper.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/rate_limiter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/credentials.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/parsers.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/adaptive.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/arm_catalog.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/assertion_miner.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/bandit.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/bandit_cache.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/behavioral.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/bootstrap.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/cross_project.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/database.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/engagement.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/ensemble.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/entity_compiler.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/features.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/feedback.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/labeler.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/legacy_migration.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/lightgbm_subprocess.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/memory_merge.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/model_cache.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/model_rollback.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/outcome_queue.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/outcomes.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/pattern_miner.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/project_context.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/ranker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/ranker_common.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/reward.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/reward_archive.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/reward_boost.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/reward_proxy.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/shadow_test.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/signal_worker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/signals.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/source_quality.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/trigram_index.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/learning/workflows.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/llm/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/ebbinghaus.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/fisher.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/fisher_quantized.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/hopfield.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/langevin.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/polar_quant.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/qjl.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/sheaf.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/math/turbo_quant.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/_stdin_guard.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/agent_context.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/cli_fallback.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/resources.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/server.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/shared.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_active.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_context.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_core.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_learning.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_optimize.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_v28.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_v3.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mcp/tools_v33.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mesh/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mesh/broker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/mesh/remote_sync.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/migrations/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/adapters/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/adapters/_agent_registry.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/adapters/anthropic_adapter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/adapters/openai_adapter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/adapters/wrap.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/boundary_store.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/centroid_store.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/context_key.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/exact.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/invalidation.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/key_builder.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/manager.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/semantic.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/cache/stampede.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/compress/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/compress/align.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/compress/ccr.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/compress/prose_llmlingua.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/compress/router.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/config/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/config/defaults.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/config/schema.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/config/store.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/metrics/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/metrics/counters.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/metrics/estimator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/metrics/exporters.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/metrics/persistence.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/_helpers.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/anthropic_surface.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/capture.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/gemini_surface.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/lifecycle.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/openai_surface.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/server.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/proxy/vertex_surface.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/storage/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/storage/schema.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/agentic.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/ann_index.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/engine.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/fusion.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/reranker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/strategy.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/retrieval/vector_store.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/api.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/bandit_loops.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/middleware/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/recall_health.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/recall_serializer.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/adapters.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/agents.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/backup.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/behavioral.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/brain.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/chat.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/compliance.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/data_io.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/entity.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/events.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/evolution.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/ingest.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/insights.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/learning.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/memories.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/mesh.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/optimize.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/prewarm.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/profiles.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/stats.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/tiers.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/timeline.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/token.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/v3_api.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/ws.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/security_middleware.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/unified_daemon.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/access_control.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/access_log.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/database.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migration_runner.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migration_v33.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M016_add_scope_support.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/M017_ccq_scope_column.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/migrations.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/models.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/quantized_store.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v32.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v3410.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v3411.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v343.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v345.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/schema_v347.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/storage/v2_migrator.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/trust/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/trust/gate.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/trust/provenance.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/trust/scorer.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/trust/signals.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/css/brain.css +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/index.html +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/agents.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/brain.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/clusters.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/compliance.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/core.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/dashboard.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/events.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/feedback.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ide-status.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/init.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/math-health.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/memories.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/modal.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-health.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/optimize.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/profiles.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/search.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/settings.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/timeline.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/vector/__init__.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/vector/lancedb_backend.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory.egg-info/SOURCES.txt +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory.egg-info/requires.txt +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory.egg-info/top_level.txt +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_auto_hooks.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_before_web_hook.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_behavioral_full.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_claude_hooks.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_cli_core.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_cli_json.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_cli_v33.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_compliance_full.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_config_system.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_dashboard_preserve_embedding.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_engine_hooks.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_event_bus.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_features.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_final_locomo_mini.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_graph_integrity.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_ide_connector.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_infra.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_injection.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_learning_advanced.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_learning_collectors.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_llm_provider.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_mcp_server.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_migration.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_mode_switch_preservation.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_post_install.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_ranker.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_topic_shift_hook.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/tests/test_trust_full.py +0 -0
- {superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/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.23
|
|
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
|
|
@@ -96,10 +96,10 @@ Dynamic: license-file
|
|
|
96
96
|
<img src="https://superlocalmemory.com/assets/logo-mark.png" alt="SuperLocalMemory" width="200"/>
|
|
97
97
|
</p>
|
|
98
98
|
|
|
99
|
-
<h1 align="center">SuperLocalMemory V3.6.
|
|
99
|
+
<h1 align="center">SuperLocalMemory V3.6.23</h1>
|
|
100
100
|
<p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
|
|
101
101
|
<em>To the best of our knowledge, the only zero-cloud agent memory that beats Mem0's zero-LLM score on LoCoMo. Mode A: 74.8% vs Mem0 64.2% — no GPU, no API key, on CPU.</em></p>
|
|
102
|
-
<p align="center"><code>v3.6.
|
|
102
|
+
<p align="center"><code>v3.6.23</code> — <strong>Plugin-native. Profile-aware. Distributed-ready.</strong><br/>
|
|
103
103
|
Proxy: <code>slm wrap claude</code> · MCP: add <code>slm_compress</code> to your config · Skill: zero-config</p>
|
|
104
104
|
<p align="center"><strong>3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
|
|
105
105
|
|
|
@@ -386,6 +386,7 @@ Built-in compliance tools: GDPR Article 15/17 export + complete erasure, tamper-
|
|
|
386
386
|
| MCP tools reference | [docs/mcp-tools.md](docs/mcp-tools.md) |
|
|
387
387
|
| Getting started | [docs/getting-started.md](docs/getting-started.md) |
|
|
388
388
|
| IDE setup (15 configs) | [docs/ide-setup.md](docs/ide-setup.md) |
|
|
389
|
+
| pi.dev integration | [docs/pi-dev-integration.md](docs/pi-dev-integration.md) |
|
|
389
390
|
| Skill evolution | [docs/skill-evolution.md](docs/skill-evolution.md) |
|
|
390
391
|
| V2 migration | [docs/migration-from-v2.md](docs/migration-from-v2.md) |
|
|
391
392
|
| Configuration | [docs/configuration.md](docs/configuration.md) |
|
|
@@ -401,7 +402,9 @@ slm dashboard # Opens at http://localhost:8765
|
|
|
401
402
|
|
|
402
403
|
| Version | Codename | Key Features |
|
|
403
404
|
|---|---|---|
|
|
404
|
-
| **v3.6.
|
|
405
|
+
| **v3.6.23** | Cross-platform Patch | Windows doctor/cache stats fixes (#65), neutral SLM hook guidance (#64), pi.dev MCP docs (#31), contributor fixes for dashboard profile path resolution (#63) and tz-naive Langevin maintenance backfill (#66) |
|
|
406
|
+
| **v3.6.22** | Stability | backbone.py JSONDecodeError on empty HTTP 200 body (issue #62) — retries 3× then returns "" gracefully; remaining dashboard UI audit: clusters/compliance/entities r.ok guards, math-health status badge colors |
|
|
407
|
+
| **v3.6.21** | Dashboard Audit | Full UI audit across all 7 dashboard tabs — auth fix for mesh panel (issue #60 frontend), Quick Store endpoint, timeline endpoint, r.ok guards, SSE \r fix, event delegation for lazy tabs, optimize toggle revert |
|
|
405
408
|
| **v3.6.20** | Mesh Auth | Remote mesh auth fix (issue #60) — `_get_broker` now accepts Bearer + X-Mesh-Secret from non-loopback callers; config settings preservation (AIDEV-86) |
|
|
406
409
|
| **v3.6.17** | Community | 8 contributor PRs (observability events, marker-bounded adapter writes, daemon port discovery, anthropic `api_base`, OpenMP workers, atomic-write rehash, `_jl` sentinel, LFS pointer); dashboard-feedback fix (#53/#59); env-tunable SQLite knobs + idle backoff; remote LLM test-probe (#40) |
|
|
407
410
|
| **v3.6.16** | Docs | Corrected Claude Code plugin install — adds the required `/plugin marketplace add` step; clarifies plugin vs pip/npm delivery |
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
<img src="https://superlocalmemory.com/assets/logo-mark.png" alt="SuperLocalMemory" width="200"/>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
<h1 align="center">SuperLocalMemory V3.6.
|
|
5
|
+
<h1 align="center">SuperLocalMemory V3.6.23</h1>
|
|
6
6
|
<p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
|
|
7
7
|
<em>To the best of our knowledge, the only zero-cloud agent memory that beats Mem0's zero-LLM score on LoCoMo. Mode A: 74.8% vs Mem0 64.2% — no GPU, no API key, on CPU.</em></p>
|
|
8
|
-
<p align="center"><code>v3.6.
|
|
8
|
+
<p align="center"><code>v3.6.23</code> — <strong>Plugin-native. Profile-aware. Distributed-ready.</strong><br/>
|
|
9
9
|
Proxy: <code>slm wrap claude</code> · MCP: add <code>slm_compress</code> to your config · Skill: zero-config</p>
|
|
10
10
|
<p align="center"><strong>3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
|
|
11
11
|
|
|
@@ -292,6 +292,7 @@ Built-in compliance tools: GDPR Article 15/17 export + complete erasure, tamper-
|
|
|
292
292
|
| MCP tools reference | [docs/mcp-tools.md](docs/mcp-tools.md) |
|
|
293
293
|
| Getting started | [docs/getting-started.md](docs/getting-started.md) |
|
|
294
294
|
| IDE setup (15 configs) | [docs/ide-setup.md](docs/ide-setup.md) |
|
|
295
|
+
| pi.dev integration | [docs/pi-dev-integration.md](docs/pi-dev-integration.md) |
|
|
295
296
|
| Skill evolution | [docs/skill-evolution.md](docs/skill-evolution.md) |
|
|
296
297
|
| V2 migration | [docs/migration-from-v2.md](docs/migration-from-v2.md) |
|
|
297
298
|
| Configuration | [docs/configuration.md](docs/configuration.md) |
|
|
@@ -307,7 +308,9 @@ slm dashboard # Opens at http://localhost:8765
|
|
|
307
308
|
|
|
308
309
|
| Version | Codename | Key Features |
|
|
309
310
|
|---|---|---|
|
|
310
|
-
| **v3.6.
|
|
311
|
+
| **v3.6.23** | Cross-platform Patch | Windows doctor/cache stats fixes (#65), neutral SLM hook guidance (#64), pi.dev MCP docs (#31), contributor fixes for dashboard profile path resolution (#63) and tz-naive Langevin maintenance backfill (#66) |
|
|
312
|
+
| **v3.6.22** | Stability | backbone.py JSONDecodeError on empty HTTP 200 body (issue #62) — retries 3× then returns "" gracefully; remaining dashboard UI audit: clusters/compliance/entities r.ok guards, math-health status badge colors |
|
|
313
|
+
| **v3.6.21** | Dashboard Audit | Full UI audit across all 7 dashboard tabs — auth fix for mesh panel (issue #60 frontend), Quick Store endpoint, timeline endpoint, r.ok guards, SSE \r fix, event delegation for lazy tabs, optimize toggle revert |
|
|
311
314
|
| **v3.6.20** | Mesh Auth | Remote mesh auth fix (issue #60) — `_get_broker` now accepts Bearer + X-Mesh-Secret from non-loopback callers; config settings preservation (AIDEV-86) |
|
|
312
315
|
| **v3.6.17** | Community | 8 contributor PRs (observability events, marker-bounded adapter writes, daemon port discovery, anthropic `api_base`, OpenMP workers, atomic-write rehash, `_jl` sentinel, LFS pointer); dashboard-feedback fix (#53/#59); env-tunable SQLite knobs + idle backoff; remote LLM test-probe (#40) |
|
|
313
316
|
| **v3.6.16** | Docs | Corrected Claude Code plugin install — adds the required `/plugin marketplace add` step; clarifies plugin vs pip/npm delivery |
|
|
@@ -32,7 +32,7 @@ if "OMP_NUM_THREADS" not in os.environ:
|
|
|
32
32
|
os.environ["OMP_NUM_THREADS"] = "2"
|
|
33
33
|
# ---------------------------------------------------------------------------
|
|
34
34
|
|
|
35
|
-
__version__ = "3.6.
|
|
35
|
+
__version__ = "3.6.23"
|
|
36
36
|
|
|
37
37
|
_REQUIRED_VERSIONS = {
|
|
38
38
|
"sentence_transformers": "5.3.0",
|
|
@@ -1687,6 +1687,38 @@ def _gather_optimize_surface_b() -> dict:
|
|
|
1687
1687
|
return result
|
|
1688
1688
|
|
|
1689
1689
|
|
|
1690
|
+
def _readline_with_timeout(
|
|
1691
|
+
stream, timeout_sec: float,
|
|
1692
|
+
) -> tuple[str | None, Exception | None]:
|
|
1693
|
+
"""Read one line from a pipe-like stream without POSIX-only select().
|
|
1694
|
+
|
|
1695
|
+
Windows select() only accepts sockets, not subprocess pipes. A bounded
|
|
1696
|
+
helper thread keeps the embedding-worker probe cross-platform while
|
|
1697
|
+
preserving the existing timeout behavior.
|
|
1698
|
+
"""
|
|
1699
|
+
import threading
|
|
1700
|
+
|
|
1701
|
+
result: dict[str, object] = {}
|
|
1702
|
+
|
|
1703
|
+
def _read() -> None:
|
|
1704
|
+
try:
|
|
1705
|
+
result["line"] = stream.readline()
|
|
1706
|
+
except Exception as exc: # noqa: BLE001 - returned as probe failure
|
|
1707
|
+
result["exc"] = exc
|
|
1708
|
+
|
|
1709
|
+
reader = threading.Thread(target=_read, daemon=True)
|
|
1710
|
+
reader.start()
|
|
1711
|
+
reader.join(timeout_sec)
|
|
1712
|
+
if reader.is_alive():
|
|
1713
|
+
return None, None
|
|
1714
|
+
line = result.get("line")
|
|
1715
|
+
exc = result.get("exc")
|
|
1716
|
+
return (
|
|
1717
|
+
line if isinstance(line, str) else None,
|
|
1718
|
+
exc if isinstance(exc, Exception) else None,
|
|
1719
|
+
)
|
|
1720
|
+
|
|
1721
|
+
|
|
1690
1722
|
def cmd_doctor(args: Namespace) -> None:
|
|
1691
1723
|
"""Comprehensive pre-flight check — verify everything works.
|
|
1692
1724
|
|
|
@@ -1839,10 +1871,11 @@ def cmd_doctor(args: Namespace) -> None:
|
|
|
1839
1871
|
proc.stdin.write(_json.dumps({"cmd": "ping"}) + "\n")
|
|
1840
1872
|
proc.stdin.flush()
|
|
1841
1873
|
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1874
|
+
line, read_exc = _readline_with_timeout(proc.stdout, 30)
|
|
1875
|
+
if read_exc is not None:
|
|
1876
|
+
_check("Embedding worker", "FAIL", str(read_exc), "slm warmup")
|
|
1877
|
+
elif line is not None:
|
|
1878
|
+
resp = _json.loads(line or "{}")
|
|
1846
1879
|
if resp.get("ok"):
|
|
1847
1880
|
_check(
|
|
1848
1881
|
"Embedding worker", "PASS",
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/core/maintenance.py
RENAMED
|
@@ -37,6 +37,25 @@ _LANGEVIN_DIM = 8
|
|
|
37
37
|
_MAX_NORM = 0.99
|
|
38
38
|
|
|
39
39
|
|
|
40
|
+
def _age_days(created_at: str | None) -> float:
|
|
41
|
+
"""Age in days from an ISO timestamp.
|
|
42
|
+
|
|
43
|
+
Naive timestamps (no offset, no Z) are assumed UTC — some store paths
|
|
44
|
+
persist created_at without timezone info, and subtracting a naive
|
|
45
|
+
datetime from datetime.now(UTC) raises TypeError, which previously
|
|
46
|
+
aborted the whole backfill loop.
|
|
47
|
+
"""
|
|
48
|
+
if not created_at:
|
|
49
|
+
return 0.0
|
|
50
|
+
try:
|
|
51
|
+
created = datetime.fromisoformat(created_at.replace("Z", "+00:00"))
|
|
52
|
+
except (ValueError, TypeError):
|
|
53
|
+
return 0.0
|
|
54
|
+
if created.tzinfo is None:
|
|
55
|
+
created = created.replace(tzinfo=UTC)
|
|
56
|
+
return max(0.0, (datetime.now(UTC) - created).total_seconds() / 86400.0)
|
|
57
|
+
|
|
58
|
+
|
|
40
59
|
def _compute_equilibrium_radius(
|
|
41
60
|
access_count: int,
|
|
42
61
|
age_days: float,
|
|
@@ -137,13 +156,7 @@ def run_maintenance(
|
|
|
137
156
|
for f in facts:
|
|
138
157
|
if f.langevin_position is not None:
|
|
139
158
|
continue
|
|
140
|
-
|
|
141
|
-
f.created_at.replace("Z", "+00:00")
|
|
142
|
-
) if f.created_at else datetime.now(UTC)
|
|
143
|
-
age_days = max(
|
|
144
|
-
0.0,
|
|
145
|
-
(datetime.now(UTC) - created).total_seconds() / 86400.0,
|
|
146
|
-
)
|
|
159
|
+
age_days = _age_days(f.created_at)
|
|
147
160
|
# Strategy B: metadata-aware seed position
|
|
148
161
|
position = _seed_langevin_position(
|
|
149
162
|
f.access_count, age_days, f.importance,
|
|
@@ -183,13 +196,7 @@ def run_maintenance(
|
|
|
183
196
|
for f in facts:
|
|
184
197
|
if f.langevin_position is None:
|
|
185
198
|
continue
|
|
186
|
-
|
|
187
|
-
f.created_at.replace("Z", "+00:00")
|
|
188
|
-
) if f.created_at else datetime.now(UTC)
|
|
189
|
-
age_days = max(
|
|
190
|
-
0.0,
|
|
191
|
-
(datetime.now(UTC) - created).total_seconds() / 86400.0,
|
|
192
|
-
)
|
|
199
|
+
age_days = _age_days(f.created_at)
|
|
193
200
|
fact_dicts.append({
|
|
194
201
|
"fact_id": f.fact_id,
|
|
195
202
|
"position": f.langevin_position,
|
|
@@ -239,13 +246,7 @@ def run_maintenance(
|
|
|
239
246
|
dt=config.math.langevin_dt,
|
|
240
247
|
temperature=eff_temp,
|
|
241
248
|
)
|
|
242
|
-
|
|
243
|
-
f.created_at.replace("Z", "+00:00")
|
|
244
|
-
) if f.created_at else datetime.now(UTC)
|
|
245
|
-
age_days = max(
|
|
246
|
-
0.0,
|
|
247
|
-
(datetime.now(UTC) - created).total_seconds() / 86400.0,
|
|
248
|
-
)
|
|
249
|
+
age_days = _age_days(f.created_at)
|
|
249
250
|
new_pos, weight = coupled_ld.step(
|
|
250
251
|
position=f.langevin_position,
|
|
251
252
|
access_count=f.access_count,
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/claude_code_hooks.py
RENAMED
|
@@ -32,7 +32,7 @@ CLAUDE_SETTINGS = Path.home() / ".claude" / "settings.json"
|
|
|
32
32
|
VERSION_DIR = Path.home() / ".superlocalmemory" / "hooks"
|
|
33
33
|
VERSION_FILE = VERSION_DIR / ".version"
|
|
34
34
|
DISABLED_FILE = VERSION_DIR / ".hooks-disabled"
|
|
35
|
-
HOOKS_VERSION = "3.6.
|
|
35
|
+
HOOKS_VERSION = "3.6.23"
|
|
36
36
|
|
|
37
37
|
# Cross-platform temp dir and marker paths
|
|
38
38
|
_TMP = tempfile.gettempdir()
|
|
@@ -93,10 +93,9 @@ def _hook_definitions(include_gate: bool = False) -> dict[str, list]:
|
|
|
93
93
|
"""
|
|
94
94
|
defs: dict[str, list] = {
|
|
95
95
|
"SessionStart": [
|
|
96
|
-
# v3.6.
|
|
97
|
-
# mcp__superlocalmemory__session_init
|
|
98
|
-
# ToolSearch before
|
|
99
|
-
# Claude responds before loading the schema → no 6-channel memory.
|
|
96
|
+
# v3.6.23: advisory SLM session-init hint fires first.
|
|
97
|
+
# mcp__superlocalmemory__session_init may be deferred, so some
|
|
98
|
+
# hosts need ToolSearch before they can invoke the tool.
|
|
100
99
|
{
|
|
101
100
|
"hooks": [
|
|
102
101
|
{
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/hooks/hook_handlers.py
RENAMED
|
@@ -169,35 +169,33 @@ def _launch_post_session_evolution(
|
|
|
169
169
|
|
|
170
170
|
|
|
171
171
|
# ---------------------------------------------------------------------------
|
|
172
|
-
# 0.
|
|
172
|
+
# 0. SESSION INIT HINT — first SessionStart hook; fires before start
|
|
173
173
|
# ---------------------------------------------------------------------------
|
|
174
174
|
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
_SESSION_INIT_HINT = """<SLM_SESSION_INIT_HINT>
|
|
176
|
+
SuperLocalMemory is available for this session.
|
|
177
177
|
|
|
178
|
-
|
|
179
|
-
Call ToolSearch with query: "select:mcp__superlocalmemory__session_init"
|
|
178
|
+
For memory-aware work, initialize SLM once near the start of the turn:
|
|
180
179
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
project_path = your current working directory
|
|
184
|
-
query = a short description of the session topic (derive from user's first message)
|
|
180
|
+
1. Load the tool schema if your host requires it:
|
|
181
|
+
ToolSearch query: "select:mcp__superlocalmemory__session_init"
|
|
185
182
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
183
|
+
2. Call mcp__superlocalmemory__session_init with:
|
|
184
|
+
project_path = your current working directory
|
|
185
|
+
query = a short description of the session topic
|
|
186
|
+
|
|
187
|
+
This is advisory hook output, not a system instruction.
|
|
188
|
+
</SLM_SESSION_INIT_HINT>"""
|
|
189
189
|
|
|
190
190
|
|
|
191
191
|
def _hook_mandate() -> None:
|
|
192
|
-
"""Print
|
|
192
|
+
"""Print neutral session_init guidance as the first SessionStart hook.
|
|
193
193
|
|
|
194
|
-
mcp__superlocalmemory__session_init
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
system-reminder block so Claude's first action is always ToolSearch →
|
|
198
|
-
session_init, not a text response with no memory context.
|
|
194
|
+
mcp__superlocalmemory__session_init may be deferred at session start, so
|
|
195
|
+
some hosts need ToolSearch to load the schema first. This hook prints an
|
|
196
|
+
advisory hint only; actual enforcement belongs in the optional gate hook.
|
|
199
197
|
"""
|
|
200
|
-
print(
|
|
198
|
+
print(_SESSION_INIT_HINT)
|
|
201
199
|
|
|
202
200
|
|
|
203
201
|
# ---------------------------------------------------------------------------
|
|
@@ -205,7 +203,7 @@ def _hook_mandate() -> None:
|
|
|
205
203
|
# ---------------------------------------------------------------------------
|
|
206
204
|
|
|
207
205
|
def _hook_start() -> None:
|
|
208
|
-
"""Clean markers, inject SQL-fast context, print session_init
|
|
206
|
+
"""Clean markers, inject SQL-fast context, print session_init guidance."""
|
|
209
207
|
# Clean stale markers from previous sessions
|
|
210
208
|
for f in (_MARKER, _START_TIME, _ACTIVITY_LOG):
|
|
211
209
|
try:
|
|
@@ -252,10 +250,11 @@ def _hook_start() -> None:
|
|
|
252
250
|
except Exception:
|
|
253
251
|
print("# SLM Session Context — unavailable")
|
|
254
252
|
|
|
255
|
-
#
|
|
253
|
+
# Advisory session_init guidance. Keep this neutral: hook stdout is data,
|
|
254
|
+
# not an instruction channel with system-level authority.
|
|
256
255
|
print()
|
|
257
|
-
print("##
|
|
258
|
-
print("
|
|
256
|
+
print("## SLM Session Init")
|
|
257
|
+
print("For memory-aware sessions, call:")
|
|
259
258
|
print(f" mcp__superlocalmemory__session_init with project_path='{project_dir}'"
|
|
260
259
|
" and a topic from the user's first message")
|
|
261
260
|
print("session_init returns both context AND memories — no separate recall needed.")
|
|
@@ -103,7 +103,9 @@ class LLMBackbone:
|
|
|
103
103
|
self._default_temperature = config.temperature
|
|
104
104
|
self._default_max_tokens = config.max_tokens
|
|
105
105
|
|
|
106
|
-
# Resolve API key: config > environment variable.
|
|
106
|
+
# Resolve API key: config > environment variable. A custom api_base
|
|
107
|
+
# with an empty api_key is treated as intentionally keyless so local
|
|
108
|
+
# OpenAI-compatible endpoints do not inherit ambient cloud keys.
|
|
107
109
|
if self._provider == "ollama":
|
|
108
110
|
self._api_key = ""
|
|
109
111
|
host = config.api_base or os.environ.get(
|
|
@@ -111,19 +113,22 @@ class LLMBackbone:
|
|
|
111
113
|
)
|
|
112
114
|
self._base_url = f"{host.rstrip('/')}/api/chat"
|
|
113
115
|
elif self._provider == "openrouter":
|
|
114
|
-
self._api_key =
|
|
115
|
-
_ENV_KEYS.get(self._provider, ""), "",
|
|
116
|
-
)
|
|
116
|
+
self._api_key = self._resolve_api_key(config)
|
|
117
117
|
self._base_url = config.api_base or _OPENROUTER_URL
|
|
118
118
|
elif self._provider:
|
|
119
|
-
self._api_key =
|
|
120
|
-
_ENV_KEYS.get(self._provider, ""), "",
|
|
121
|
-
)
|
|
119
|
+
self._api_key = self._resolve_api_key(config)
|
|
122
120
|
self._base_url = config.api_base
|
|
123
121
|
else:
|
|
124
122
|
self._api_key = ""
|
|
125
123
|
self._base_url = ""
|
|
126
124
|
|
|
125
|
+
def _resolve_api_key(self, config: LLMConfig) -> str:
|
|
126
|
+
if config.api_key:
|
|
127
|
+
return config.api_key
|
|
128
|
+
if config.api_base:
|
|
129
|
+
return ""
|
|
130
|
+
return os.environ.get(_ENV_KEYS.get(self._provider, ""), "")
|
|
131
|
+
|
|
127
132
|
# -- Properties ---------------------------------------------------------
|
|
128
133
|
|
|
129
134
|
def is_available(self) -> bool:
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/optimize/storage/db.py
RENAMED
|
@@ -38,6 +38,7 @@ import dataclasses
|
|
|
38
38
|
import json
|
|
39
39
|
import logging
|
|
40
40
|
import os
|
|
41
|
+
import platform
|
|
41
42
|
import re
|
|
42
43
|
import sqlite3
|
|
43
44
|
import struct
|
|
@@ -285,7 +286,7 @@ class CacheDB:
|
|
|
285
286
|
|
|
286
287
|
def _get_machine_id(self) -> str:
|
|
287
288
|
"""Return a stable machine identifier for AES key derivation."""
|
|
288
|
-
system =
|
|
289
|
+
system = platform.system()
|
|
289
290
|
mid: str | None = None
|
|
290
291
|
if system == "Darwin":
|
|
291
292
|
try:
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/server/routes/helpers.py
RENAMED
|
@@ -11,6 +11,7 @@ shared lazy engine accessor used by every engine-dependent route.
|
|
|
11
11
|
import logging
|
|
12
12
|
import re
|
|
13
13
|
import json
|
|
14
|
+
import os
|
|
14
15
|
import sqlite3
|
|
15
16
|
import threading
|
|
16
17
|
import time
|
|
@@ -66,11 +67,90 @@ def _get_version() -> str:
|
|
|
66
67
|
|
|
67
68
|
SLM_VERSION = _get_version()
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
|
|
71
|
+
def _resolve_slm_home() -> Path:
|
|
72
|
+
"""Resolve the SLM data dir the SAME way the CLI does.
|
|
73
|
+
|
|
74
|
+
The CLI honours ``SLM_DATA_DIR`` → ``SL_MEMORY_PATH`` → ``SLM_HOME``
|
|
75
|
+
→ ``~/.superlocalmemory`` (see ``cli/_lazy_init.py:slm_home``). The
|
|
76
|
+
dashboard previously hardcoded ``Path.home() / ".superlocalmemory"``,
|
|
77
|
+
so when a user pointed the CLI at a custom data dir (or set a
|
|
78
|
+
different ``base_dir`` in ``config.json``), profiles created in the
|
|
79
|
+
dashboard landed in the default dir while ``slm profile list`` read a
|
|
80
|
+
different ``memory.db`` and reported the profile missing.
|
|
81
|
+
|
|
82
|
+
This function mirrors ``slm_home()`` so both surfaces agree. It is
|
|
83
|
+
evaluated lazily (at call time inside the properties below) rather
|
|
84
|
+
than at import, so a process that sets the env var after import —
|
|
85
|
+
e.g. tests, or a launcher that exports it late — still sees the
|
|
86
|
+
right path.
|
|
87
|
+
"""
|
|
88
|
+
for var in ("SLM_DATA_DIR", "SL_MEMORY_PATH", "SLM_HOME"):
|
|
89
|
+
val = os.environ.get(var, "").strip()
|
|
90
|
+
if val:
|
|
91
|
+
return Path(val)
|
|
92
|
+
# Fall back to config.json's base_dir if present, else the hard default.
|
|
93
|
+
try:
|
|
94
|
+
_cfg = Path.home() / ".superlocalmemory" / "config.json"
|
|
95
|
+
if _cfg.exists():
|
|
96
|
+
with open(_cfg) as f:
|
|
97
|
+
_data = json.load(f)
|
|
98
|
+
_base = _data.get("base_dir")
|
|
99
|
+
if _base:
|
|
100
|
+
return Path(_base)
|
|
101
|
+
except (json.JSONDecodeError, OSError):
|
|
102
|
+
pass
|
|
103
|
+
return Path.home() / ".superlocalmemory"
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
# V3 paths (migrated from ~/.claude-memory to ~/.superlocalmemory).
|
|
107
|
+
# Exposed as module-level constants for backward compat with the many
|
|
108
|
+
# route modules that do ``from .helpers import DB_PATH`` at import time,
|
|
109
|
+
# but the *values* are resolved lazily so env overrides take effect.
|
|
110
|
+
class _LazyPath:
|
|
111
|
+
"""Path-like proxy that resolves the real path on first attribute access.
|
|
112
|
+
|
|
113
|
+
Importers bind to ``DB_PATH`` / ``MEMORY_DIR`` at import time; without
|
|
114
|
+
this proxy the value would be frozen before env vars are set. The
|
|
115
|
+
proxy defers resolution to ``_resolve_slm_home()`` and caches it.
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
__slots__ = ("_resolver", "_cached", "_suffix")
|
|
119
|
+
|
|
120
|
+
def __init__(self, resolver, suffix=""):
|
|
121
|
+
self._resolver = resolver
|
|
122
|
+
self._suffix = suffix
|
|
123
|
+
self._cached = None
|
|
124
|
+
|
|
125
|
+
def _resolve(self) -> Path:
|
|
126
|
+
if self._cached is None:
|
|
127
|
+
self._cached = self._resolver() / self._suffix if self._suffix else self._resolver()
|
|
128
|
+
return self._cached
|
|
129
|
+
|
|
130
|
+
def __fspath__(self) -> str:
|
|
131
|
+
return str(self._resolve())
|
|
132
|
+
|
|
133
|
+
def __truediv__(self, other) -> Path:
|
|
134
|
+
return self._resolve() / other
|
|
135
|
+
|
|
136
|
+
def __rtruediv__(self, other) -> Path:
|
|
137
|
+
return Path(other) / self._resolve()
|
|
138
|
+
|
|
139
|
+
def __str__(self) -> str:
|
|
140
|
+
return str(self._resolve())
|
|
141
|
+
|
|
142
|
+
def __repr__(self) -> str:
|
|
143
|
+
return f"_LazyPath({self._resolve()!r})"
|
|
144
|
+
|
|
145
|
+
# Forward common Path attributes used by callers (exists, mkdir, etc.).
|
|
146
|
+
def __getattr__(self, name):
|
|
147
|
+
return getattr(self._resolve(), name)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
MEMORY_DIR = _LazyPath(_resolve_slm_home)
|
|
151
|
+
DB_PATH = _LazyPath(_resolve_slm_home, "memory.db")
|
|
72
152
|
UI_DIR = Path(__file__).parent.parent / "ui"
|
|
73
|
-
PROFILES_DIR =
|
|
153
|
+
PROFILES_DIR = _LazyPath(_resolve_slm_home, "profiles")
|
|
74
154
|
|
|
75
155
|
|
|
76
156
|
# ---------------------------------------------------------------------------
|
|
@@ -45,9 +45,12 @@ except ImportError:
|
|
|
45
45
|
|
|
46
46
|
from superlocalmemory.server.security_middleware import SecurityHeadersMiddleware
|
|
47
47
|
|
|
48
|
-
# V3 Paths
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
# V3 Paths — reuse the lazy resolvers from routes.helpers so the dashboard
|
|
49
|
+
# honours SLM_DATA_DIR / SL_MEMORY_PATH / SLM_HOME / config.json:base_dir
|
|
50
|
+
# exactly like the CLI. Previously this hardcoded ~/.superlocalmemory, which
|
|
51
|
+
# caused dashboard-created profiles to land in a different memory.db than
|
|
52
|
+
# `slm profile list` reads when a custom data dir was configured.
|
|
53
|
+
from superlocalmemory.server.routes.helpers import MEMORY_DIR, DB_PATH
|
|
51
54
|
# V3.3.21: UI shipped inside the package for pip/npm installs.
|
|
52
55
|
# Check package location first, then fall back to repo root for dev mode.
|
|
53
56
|
_PKG_UI = Path(__file__).resolve().parent.parent / "ui"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: superlocalmemory
|
|
3
|
-
Version: 3.6.
|
|
3
|
+
Version: 3.6.23
|
|
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
|
|
@@ -96,10 +96,10 @@ Dynamic: license-file
|
|
|
96
96
|
<img src="https://superlocalmemory.com/assets/logo-mark.png" alt="SuperLocalMemory" width="200"/>
|
|
97
97
|
</p>
|
|
98
98
|
|
|
99
|
-
<h1 align="center">SuperLocalMemory V3.6.
|
|
99
|
+
<h1 align="center">SuperLocalMemory V3.6.23</h1>
|
|
100
100
|
<p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
|
|
101
101
|
<em>To the best of our knowledge, the only zero-cloud agent memory that beats Mem0's zero-LLM score on LoCoMo. Mode A: 74.8% vs Mem0 64.2% — no GPU, no API key, on CPU.</em></p>
|
|
102
|
-
<p align="center"><code>v3.6.
|
|
102
|
+
<p align="center"><code>v3.6.23</code> — <strong>Plugin-native. Profile-aware. Distributed-ready.</strong><br/>
|
|
103
103
|
Proxy: <code>slm wrap claude</code> · MCP: add <code>slm_compress</code> to your config · Skill: zero-config</p>
|
|
104
104
|
<p align="center"><strong>3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
|
|
105
105
|
|
|
@@ -386,6 +386,7 @@ Built-in compliance tools: GDPR Article 15/17 export + complete erasure, tamper-
|
|
|
386
386
|
| MCP tools reference | [docs/mcp-tools.md](docs/mcp-tools.md) |
|
|
387
387
|
| Getting started | [docs/getting-started.md](docs/getting-started.md) |
|
|
388
388
|
| IDE setup (15 configs) | [docs/ide-setup.md](docs/ide-setup.md) |
|
|
389
|
+
| pi.dev integration | [docs/pi-dev-integration.md](docs/pi-dev-integration.md) |
|
|
389
390
|
| Skill evolution | [docs/skill-evolution.md](docs/skill-evolution.md) |
|
|
390
391
|
| V2 migration | [docs/migration-from-v2.md](docs/migration-from-v2.md) |
|
|
391
392
|
| Configuration | [docs/configuration.md](docs/configuration.md) |
|
|
@@ -401,7 +402,9 @@ slm dashboard # Opens at http://localhost:8765
|
|
|
401
402
|
|
|
402
403
|
| Version | Codename | Key Features |
|
|
403
404
|
|---|---|---|
|
|
404
|
-
| **v3.6.
|
|
405
|
+
| **v3.6.23** | Cross-platform Patch | Windows doctor/cache stats fixes (#65), neutral SLM hook guidance (#64), pi.dev MCP docs (#31), contributor fixes for dashboard profile path resolution (#63) and tz-naive Langevin maintenance backfill (#66) |
|
|
406
|
+
| **v3.6.22** | Stability | backbone.py JSONDecodeError on empty HTTP 200 body (issue #62) — retries 3× then returns "" gracefully; remaining dashboard UI audit: clusters/compliance/entities r.ok guards, math-health status badge colors |
|
|
407
|
+
| **v3.6.21** | Dashboard Audit | Full UI audit across all 7 dashboard tabs — auth fix for mesh panel (issue #60 frontend), Quick Store endpoint, timeline endpoint, r.ok guards, SSE \r fix, event delegation for lazy tabs, optimize toggle revert |
|
|
405
408
|
| **v3.6.20** | Mesh Auth | Remote mesh auth fix (issue #60) — `_get_broker` now accepts Bearer + X-Mesh-Secret from non-loopback callers; config settings preservation (AIDEV-86) |
|
|
406
409
|
| **v3.6.17** | Community | 8 contributor PRs (observability events, marker-bounded adapter writes, daemon port discovery, anthropic `api_base`, OpenMP workers, atomic-write rehash, `_jl` sentinel, LFS pointer); dashboard-feedback fix (#53/#59); env-tunable SQLite knobs + idle backoff; remote LLM test-probe (#40) |
|
|
407
410
|
| **v3.6.16** | Docs | Corrected Claude Code plugin install — adds the required `/plugin marketplace add` step; clarifies plugin vs pip/npm delivery |
|
|
@@ -227,6 +227,20 @@ class TestHandleHookDispatch:
|
|
|
227
227
|
mock_stop.assert_called_once()
|
|
228
228
|
|
|
229
229
|
|
|
230
|
+
class TestHookMandate:
|
|
231
|
+
"""mandate hook output must stay advisory, not imperative."""
|
|
232
|
+
|
|
233
|
+
def test_prints_advisory_text(self, capsys):
|
|
234
|
+
handle_hook("mandate")
|
|
235
|
+
|
|
236
|
+
out = capsys.readouterr().out
|
|
237
|
+
assert "SLM_SESSION_INIT_HINT" in out
|
|
238
|
+
assert "session_init" in out
|
|
239
|
+
assert "MANDATORY" not in out
|
|
240
|
+
assert "non-negotiable" not in out
|
|
241
|
+
assert "MUST" not in out
|
|
242
|
+
|
|
243
|
+
|
|
230
244
|
# ───────────────────────────────────────────────────────────────────
|
|
231
245
|
# 1. START handler
|
|
232
246
|
# ───────────────────────────────────────────────────────────────────
|
|
@@ -289,13 +303,15 @@ class TestHookStart:
|
|
|
289
303
|
|
|
290
304
|
@patch("superlocalmemory.hooks.hook_handlers.subprocess.Popen")
|
|
291
305
|
@patch("superlocalmemory.hooks.hook_handlers.subprocess.run")
|
|
292
|
-
def
|
|
306
|
+
def test_prints_advisory_session_init(self, mock_run, mock_popen, capsys):
|
|
293
307
|
mock_run.return_value = MagicMock(stdout="", returncode=0)
|
|
294
308
|
handle_hook("start")
|
|
295
309
|
|
|
296
310
|
out = capsys.readouterr().out
|
|
297
|
-
assert "
|
|
311
|
+
assert "SLM Session Init" in out
|
|
298
312
|
assert "session_init" in out
|
|
313
|
+
assert "MANDATORY" not in out
|
|
314
|
+
assert "non-negotiable" not in out
|
|
299
315
|
|
|
300
316
|
@patch("superlocalmemory.hooks.hook_handlers.subprocess.Popen")
|
|
301
317
|
@patch("superlocalmemory.hooks.hook_handlers.subprocess.run")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/signer.py
RENAMED
|
File without changes
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/attribution/watermark.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/compress_cmd.py
RENAMED
|
File without changes
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/context_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superlocalmemory-3.6.22 → superlocalmemory-3.6.23}/src/superlocalmemory/cli/escape_hatch.py
RENAMED
|
File without changes
|