superlocalmemory 3.7.3__tar.gz → 3.7.5__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.7.3/src/superlocalmemory.egg-info → superlocalmemory-3.7.5}/PKG-INFO +6 -5
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/README.md +5 -4
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/pyproject.toml +1 -1
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/__init__.py +1 -1
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/scale_engine_cmd.py +2 -1
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/scale_engine.py +144 -41
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/graph/cozo_backend.py +12 -17
- superlocalmemory-3.7.5/src/superlocalmemory/storage/logical_edges.py +45 -0
- superlocalmemory-3.7.5/src/superlocalmemory/storage/sqlite_vectors.py +169 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/vector/lancedb_backend.py +39 -68
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5/src/superlocalmemory.egg-info}/PKG-INFO +6 -5
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory.egg-info/SOURCES.txt +2 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/AUTHORS.md +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/LICENSE +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/NOTICE +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-cache/SKILL.md +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-compress/SKILL.md +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-graph/SKILL.md +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-recall/SKILL.md +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-remember/SKILL.md +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-session/SKILL.md +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/plugin-src/skills/slm-status/SKILL.md +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/setup.cfg +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/attribution/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/attribution/signer.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/attribution/watermark.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/_lazy_init.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/cache_cmd.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/commands.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/compress_cmd.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/context_commands.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/daemon.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/db_migrate.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/diagnostics_cmd.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/escape_hatch.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/evidence_cmd.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/help_cmd.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/ingest_cmd.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/json_output.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/main.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/optimize_cmd.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/optimize_constants.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/pending_store.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/post_install.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/proxy_cmd.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/service_installer.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/setup_wizard.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/version_banner.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/wizard_v3426_options.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/blast_radius.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/changes.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/communities.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/config.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/database.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/extractors/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/extractors/python.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/extractors/typescript.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/flows.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/git_hooks.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/graph_engine.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/graph_store.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/incremental.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/models.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/parser.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/resolver.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/search.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/service.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/code_graph/watcher.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/abac.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/audit.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/gdpr.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/lifecycle.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/retention.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/compliance/scheduler.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/backend_orchestrator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/block_hygiene.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/clock_monitor.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/config.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/consolidation_engine.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/context_cache.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/db_pool.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/derivation_lineage.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/embedding_worker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/embeddings.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/engine.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/engine_capabilities.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/engine_ingestion.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/engine_lock.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/engine_wiring.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/error_catalog.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/error_envelope.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/evidence_bundle.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/fact_consolidator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/file_lock.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/graph_analyzer.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/graph_pruner.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/health_monitor.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/hooks.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/ingest_gate.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/ingestion_command.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/injection.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/lifecycle_state.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/loop_watchdog.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/maintenance.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/maintenance_scheduler.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/mcp_embedder_proxy.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/modes.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/mutations.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/ollama_embedder.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/platform_utils.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/priority_queue.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/profiles.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/pruning_engine.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/queue_consumer.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/queue_dispatcher.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/ram_lock.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/rate_limit.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/recall_gate.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/recall_pipeline.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/recall_queue.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/recall_worker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/registry.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/remote_mode.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/reranker_worker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/safe_fs.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/score_contract.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/security_primitives.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/shadow_router.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/slm_disabled.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/slmignore.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/store_pipeline.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/summarizer.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/tier_manager.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/topic_signature.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/core/worker_pool.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/dynamics/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/dynamics/eap_scheduler.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/auto_linker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/consolidator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/context_generator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/emotional.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/foresight.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/graph_builder.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/observation_builder.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/scene_builder.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/signal_inference.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/temporal_validator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/encoding/type_router.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evaluation/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evaluation/calibration.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/blind_verifier.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/budget.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/evolution_store.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/llm_dispatch.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/mutation_generator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/skill_evolver.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/triggers.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/evolution/types.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/graph/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/_outcome_common.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/adapter_base.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/antigravity_adapter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/auto_capture.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/auto_invoker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/auto_parameterize.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/auto_recall.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/auto_recall_hook.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/before_web_hook.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/codex_assets.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/codex_hooks.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/context_payload.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/copilot_adapter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/cross_platform_connector.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/cursor_adapter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/hook_daemon.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/hook_handlers.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/ide_connector.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/memory_protocol.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/portable_kit.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/prewarm_auth.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/rules_engine.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/session_registry.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/sync_loop.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/topic_shift_hook.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/user_prompt_hook.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/auth_middleware.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/backup.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/cache_manager.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/cloud_backup.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/daemon_identity.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/data_root.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/event_bus.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/heartbeat_monitor.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/local_diagnostics.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/pid_manager.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/process_reaper.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/rate_limiter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/adapter_manager.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/base_adapter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/calendar_adapter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/credentials.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/gmail_adapter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/parsers.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ingestion/transcript_adapter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/adaptive.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/arm_catalog.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/assertion_miner.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/bandit.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/bandit_cache.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/behavioral.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/bootstrap.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/consolidation_cycle.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/cross_project.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/database.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/dedup_hnsw.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/engagement.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/ensemble.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/entity_compiler.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/fact_outcome_joins.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/features.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/feedback.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/forgetting_scheduler.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/hnsw_dedup.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/labeler.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/legacy_migration.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/lightgbm_subprocess.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/memory_merge.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/model_cache.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/model_rollback.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/outcome_queue.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/outcomes.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/pattern_miner.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/pattern_miner_constants.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/project_context.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/quantization_scheduler.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/ranker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/ranker_common.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/ranker_retrain_online.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/reward.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/reward_archive.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/reward_boost.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/reward_proxy.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/shadow_test.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/signal_worker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/signals.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/skill_performance_miner.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/source_quality.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/trigram_index.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/learning/workflows.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/llm/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/llm/backbone.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/ebbinghaus.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/fisher.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/fisher_quantized.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/hopfield.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/langevin.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/polar_quant.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/qjl.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/sheaf.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/math/turbo_quant.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/_daemon_proxy.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/_pool_adapter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/_stdin_guard.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/agent_context.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/cli_fallback.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/http_transport.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/resources.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/server.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/shared.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_active.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_code_graph.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_context.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_core.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_evolution.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_learning.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_mesh.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_optimize.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_v28.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_v3.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mcp/tools_v33.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mesh/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mesh/broker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/mesh/remote_sync.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/migrations/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/NOTICE +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/adapters/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/adapters/_agent_registry.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/adapters/anthropic_adapter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/adapters/openai_adapter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/adapters/wrap.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/boundary_store.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/centroid_store.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/context_key.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/exact.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/invalidation.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/key_builder.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/manager.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/semantic.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/cache/stampede.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/compress/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/compress/align.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/compress/ccr.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/compress/prose_llmlingua.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/compress/router.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/config/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/config/defaults.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/config/schema.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/config/store.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/metrics/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/metrics/counters.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/metrics/estimator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/metrics/exporters.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/metrics/persistence.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/_helpers.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/anthropic_surface.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/capture.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/gemini_surface.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/lifecycle.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/openai_surface.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/server.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/proxy/vertex_surface.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/storage/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/storage/db.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/optimize/storage/schema.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/pattern_extractor.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/pii_filter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/prompt_injector.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/agentic.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/ann_index.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/channel_registry.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/engine.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/forgetting_filter.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/fusion.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/hopfield_channel.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/reranker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/scope_policy.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/semantic_channel.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/spreading_activation.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/strategy.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/retrieval/vector_store.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/api.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/bandit_loops.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/middleware/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/middleware/security_headers.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/recall_health.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/recall_serializer.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/route_mutations.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/adapters.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/agents.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/backup.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/behavioral.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/brain.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/chat.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/compliance.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/data_io.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/entity.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/events.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/evolution.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/helpers.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/ingest.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/insights.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/learning.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/memories.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/mesh.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/optimize.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/prewarm.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/profiles.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/stats.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/tiers.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/timeline.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/token.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/v3_api.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/routes/ws.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/security_middleware.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/ui.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/unified_daemon.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/server/write_identity.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/access_control.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/access_log.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/database.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/embedding_migrator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migration_runner.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migration_v33.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M016_add_scope_support.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M017_ccq_scope_column.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M018_ingestion_operations.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M019_derivation_lineage.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/M020_model_state_integrity.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/migrations.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/models.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/quantized_store.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_code_graph.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v32.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v3410.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v3411.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v343.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v345.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/schema_v347.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/storage/v2_migrator.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/trust/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/trust/gate.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/trust/provenance.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/trust/scorer.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/trust/signals.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/css/brain.css +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/css/neural-glass.css +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/favicon.svg +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/index.html +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/agents.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/auto-settings.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/brain.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/clusters.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/compliance.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/core.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/dashboard.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/events.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/fact-detail.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/feedback.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/graph-event-bus.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/graph-filters.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/graph-ui.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ide-status.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/init.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/knowledge-graph.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/lifecycle.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/math-health.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/memories.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/memory-chat.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/memory-timeline.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/modal.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-entities.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-health.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-ingestion.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-mesh.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-shell.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/ng-skills.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/optimize.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/profiles.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/quick-actions.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/recall-lab.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/search.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/settings.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/timeline.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/js/trust-dashboard.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/ui/vendor/sigma.min.js +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/vector/__init__.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory.egg-info/requires.txt +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory.egg-info/top_level.txt +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_auto_hooks.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_before_web_hook.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_behavioral_full.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_claude_hooks.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_cli_core.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_cli_json.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_cli_v33.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_compliance_full.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_config_system.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_dashboard_preserve_embedding.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_engine_hooks.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_event_bus.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_features.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_final_locomo_mini.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_graph_integrity.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_hook_handlers.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_ide_connector.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_infra.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_injection.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_learning_advanced.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_learning_collectors.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_llm_provider.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_mcp_server.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_migration.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_mode_switch_preservation.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_post_install.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_ranker.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_resource_lifecycle.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_topic_shift_hook.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_trust_full.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_v3_api.py +0 -0
- {superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/tests/test_version_consistency.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: superlocalmemory
|
|
3
|
-
Version: 3.7.
|
|
3
|
+
Version: 3.7.5
|
|
4
4
|
Summary: Local-first agent memory with auditable hybrid retrieval
|
|
5
5
|
Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
@@ -107,10 +107,10 @@ Dynamic: license-file
|
|
|
107
107
|
</picture>
|
|
108
108
|
</p>
|
|
109
109
|
|
|
110
|
-
<h1 align="center">SuperLocalMemory V3.7.
|
|
110
|
+
<h1 align="center">SuperLocalMemory V3.7.5</h1>
|
|
111
111
|
<p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
|
|
112
112
|
<em>Local-first agent memory with explicit operating modes, auditable retrieval, and optional Optimize tools.</em></p>
|
|
113
|
-
<p align="center"><code>v3.7.
|
|
113
|
+
<p align="center"><code>v3.7.5</code> — <strong>Scale Engine graph and vector projection parity, durable promotion recovery, and honest runtime status.</strong><br/>
|
|
114
114
|
Proxy: <code>slm wrap claude</code> · MCP: add <code>slm_compress</code> to your config · Skill: zero-config</p>
|
|
115
115
|
<p align="center"><strong>3 public research preprints</strong> (arXiv + Zenodo archives) · <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>
|
|
116
116
|
|
|
@@ -213,7 +213,7 @@ health surfaces expose the stages actually completed by the installed runtime.
|
|
|
213
213
|
| **Retrieval and recall** | Semantic, lexical, temporal, Hopfield and spreading-activation candidate channels; RRF fusion, optional reranking and graph score enhancement | Healthy channels participate; response provenance states the evidence used. |
|
|
214
214
|
| **Brain and learning** | Behavioral patterns, feedback/outcome records, rewards, consolidation, LightGBM-related ranking components, soft prompts, and guarded skill-evolution workflows | Learning is evidence-driven; it does not claim autonomous correctness or guaranteed improvement. |
|
|
215
215
|
| **Knowledge graph and entities** | Canonical entities, aliases, entity profiles, graph edges, scenes, timelines, explorer and graph APIs | Stored/derived graph data is evidence, not an instruction authority. |
|
|
216
|
-
| **Scale Engine** | SQLite + sqlite-vec are canonical. CozoDB graph and LanceDB vector projections are managed with prepare → verify → promote → rollback; a structurally detected pre-v3.7 projection can be explicitly adopted. | Promotion is parity-gated and crash-recoverable. Legacy adoption preserves the prior projection as a rollback backup;
|
|
216
|
+
| **Scale Engine** | SQLite + sqlite-vec are canonical. CozoDB graph and LanceDB vector projections are managed with prepare → verify → promote → rollback; a structurally detected pre-v3.7 projection can be explicitly adopted. | Promotion is parity-gated and crash-recoverable. Legacy adoption preserves the prior projection as a rollback backup; repeated physical edge rows normalize to one logical edge with the strongest weight. |
|
|
217
217
|
| **Optimize** | Exact cache, tagged invalidation, safe compression, opt-in aggressive prose compression, CCR originals, proxy/MCP/skill surfaces | Only proxy intercepts a primary provider turn. MCP/skill cache results explicitly routed through SLM. |
|
|
218
218
|
| **Mesh** | Authenticated peer messages, inbox/outbox, locks, offline queue, optional discovery and mesh MCP tools | Mesh is coordination, not automatic replicated memory or conflict resolution. |
|
|
219
219
|
| **Governance and operations** | Provenance, audit/retention/policy surfaces, export/erasure controls, diagnostics, health, backups and daemon lifecycle | These are engineering controls, not a legal certification. |
|
|
@@ -340,7 +340,8 @@ SLM then rebuilds from canonical SQLite, verifies it, and promotes it with a
|
|
|
340
340
|
durable recovery journal while retaining the prior directories as a rollback
|
|
341
341
|
backup. `adopt` reports `restart_required: true`; run `slm restart` before
|
|
342
342
|
checking daemon health. If proof fails, recall remains on SQLite and status
|
|
343
|
-
|
|
343
|
+
retains the rejected manifest for inspection, retires its replaceable derived
|
|
344
|
+
payload, and allows a corrected retry.
|
|
344
345
|
|
|
345
346
|
Canonical ingestion is a durable state machine: `raw → queryable → enriching →
|
|
346
347
|
complete`, with `failed` retaining raw evidence, error details, attempt count,
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
</picture>
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
|
-
<h1 align="center">SuperLocalMemory V3.7.
|
|
8
|
+
<h1 align="center">SuperLocalMemory V3.7.5</h1>
|
|
9
9
|
<p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
|
|
10
10
|
<em>Local-first agent memory with explicit operating modes, auditable retrieval, and optional Optimize tools.</em></p>
|
|
11
|
-
<p align="center"><code>v3.7.
|
|
11
|
+
<p align="center"><code>v3.7.5</code> — <strong>Scale Engine graph and vector projection parity, durable promotion recovery, and honest runtime status.</strong><br/>
|
|
12
12
|
Proxy: <code>slm wrap claude</code> · MCP: add <code>slm_compress</code> to your config · Skill: zero-config</p>
|
|
13
13
|
<p align="center"><strong>3 public research preprints</strong> (arXiv + Zenodo archives) · <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>
|
|
14
14
|
|
|
@@ -111,7 +111,7 @@ health surfaces expose the stages actually completed by the installed runtime.
|
|
|
111
111
|
| **Retrieval and recall** | Semantic, lexical, temporal, Hopfield and spreading-activation candidate channels; RRF fusion, optional reranking and graph score enhancement | Healthy channels participate; response provenance states the evidence used. |
|
|
112
112
|
| **Brain and learning** | Behavioral patterns, feedback/outcome records, rewards, consolidation, LightGBM-related ranking components, soft prompts, and guarded skill-evolution workflows | Learning is evidence-driven; it does not claim autonomous correctness or guaranteed improvement. |
|
|
113
113
|
| **Knowledge graph and entities** | Canonical entities, aliases, entity profiles, graph edges, scenes, timelines, explorer and graph APIs | Stored/derived graph data is evidence, not an instruction authority. |
|
|
114
|
-
| **Scale Engine** | SQLite + sqlite-vec are canonical. CozoDB graph and LanceDB vector projections are managed with prepare → verify → promote → rollback; a structurally detected pre-v3.7 projection can be explicitly adopted. | Promotion is parity-gated and crash-recoverable. Legacy adoption preserves the prior projection as a rollback backup;
|
|
114
|
+
| **Scale Engine** | SQLite + sqlite-vec are canonical. CozoDB graph and LanceDB vector projections are managed with prepare → verify → promote → rollback; a structurally detected pre-v3.7 projection can be explicitly adopted. | Promotion is parity-gated and crash-recoverable. Legacy adoption preserves the prior projection as a rollback backup; repeated physical edge rows normalize to one logical edge with the strongest weight. |
|
|
115
115
|
| **Optimize** | Exact cache, tagged invalidation, safe compression, opt-in aggressive prose compression, CCR originals, proxy/MCP/skill surfaces | Only proxy intercepts a primary provider turn. MCP/skill cache results explicitly routed through SLM. |
|
|
116
116
|
| **Mesh** | Authenticated peer messages, inbox/outbox, locks, offline queue, optional discovery and mesh MCP tools | Mesh is coordination, not automatic replicated memory or conflict resolution. |
|
|
117
117
|
| **Governance and operations** | Provenance, audit/retention/policy surfaces, export/erasure controls, diagnostics, health, backups and daemon lifecycle | These are engineering controls, not a legal certification. |
|
|
@@ -238,7 +238,8 @@ SLM then rebuilds from canonical SQLite, verifies it, and promotes it with a
|
|
|
238
238
|
durable recovery journal while retaining the prior directories as a rollback
|
|
239
239
|
backup. `adopt` reports `restart_required: true`; run `slm restart` before
|
|
240
240
|
checking daemon health. If proof fails, recall remains on SQLite and status
|
|
241
|
-
|
|
241
|
+
retains the rejected manifest for inspection, retires its replaceable derived
|
|
242
|
+
payload, and allows a corrected retry.
|
|
242
243
|
|
|
243
244
|
Canonical ingestion is a durable state machine: `raw → queryable → enriching →
|
|
244
245
|
complete`, with `failed` retaining raw evidence, error details, attempt count,
|
|
@@ -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.7.
|
|
35
|
+
__version__ = "3.7.5"
|
|
36
36
|
|
|
37
37
|
_REQUIRED_VERSIONS = {
|
|
38
38
|
"sentence_transformers": "5.3.0",
|
{superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/cli/scale_engine_cmd.py
RENAMED
|
@@ -8,6 +8,7 @@ from argparse import Namespace
|
|
|
8
8
|
def cmd_db_scale(args: Namespace) -> int:
|
|
9
9
|
from superlocalmemory.core.config import SLMConfig
|
|
10
10
|
from superlocalmemory.core.scale_engine import ScaleEngineError, ScaleEngineManager
|
|
11
|
+
from superlocalmemory.storage.sqlite_vectors import CanonicalVectorError
|
|
11
12
|
|
|
12
13
|
action = args.scale_action
|
|
13
14
|
# Scale Engine projections are currently canonical-default-profile data.
|
|
@@ -42,7 +43,7 @@ def cmd_db_scale(args: Namespace) -> int:
|
|
|
42
43
|
result = manager.rollback(args.backup_id)
|
|
43
44
|
else:
|
|
44
45
|
raise ScaleEngineError(f"unknown Scale Engine action: {action}")
|
|
45
|
-
except ScaleEngineError as exc:
|
|
46
|
+
except (ScaleEngineError, CanonicalVectorError) as exc:
|
|
46
47
|
print(f"Scale Engine: {exc}")
|
|
47
48
|
return 1
|
|
48
49
|
print(json.dumps(result, indent=2, sort_keys=True))
|
|
@@ -22,6 +22,14 @@ from datetime import UTC, datetime
|
|
|
22
22
|
from pathlib import Path
|
|
23
23
|
from typing import Any, Callable
|
|
24
24
|
|
|
25
|
+
from superlocalmemory.storage.logical_edges import count_logical_edges, iter_logical_edges
|
|
26
|
+
from superlocalmemory.storage.sqlite_vectors import (
|
|
27
|
+
CanonicalVectorError,
|
|
28
|
+
count_canonical_vectors,
|
|
29
|
+
iter_canonical_vectors,
|
|
30
|
+
load_sqlite_vec_extension,
|
|
31
|
+
)
|
|
32
|
+
|
|
25
33
|
|
|
26
34
|
class ScaleEngineError(RuntimeError):
|
|
27
35
|
"""A scale projection cannot safely advance to its next lifecycle state."""
|
|
@@ -98,8 +106,8 @@ class ScaleEngineManager:
|
|
|
98
106
|
legacy_projection_candidate = (
|
|
99
107
|
state == "local_core"
|
|
100
108
|
and all(paths_present.values())
|
|
101
|
-
and not manifests
|
|
102
109
|
and not backups
|
|
110
|
+
and not self.promotion_journal_path.exists()
|
|
103
111
|
and self._has_legacy_projection_layout()
|
|
104
112
|
)
|
|
105
113
|
runtime = self._runtime_backend_status()
|
|
@@ -117,7 +125,17 @@ class ScaleEngineManager:
|
|
|
117
125
|
"legacy_candidate_requires_confirmation": legacy_projection_candidate,
|
|
118
126
|
"migration_repair_required": (
|
|
119
127
|
self.promotion_journal_path.exists()
|
|
120
|
-
or (
|
|
128
|
+
or any(
|
|
129
|
+
manifest.get("state") == "promoted" and state != "promoted"
|
|
130
|
+
for manifest in manifests
|
|
131
|
+
)
|
|
132
|
+
or (
|
|
133
|
+
state == "promoted"
|
|
134
|
+
and any(
|
|
135
|
+
manifest.get("state") in {"prepared", "verified"}
|
|
136
|
+
for manifest in manifests
|
|
137
|
+
)
|
|
138
|
+
)
|
|
121
139
|
),
|
|
122
140
|
"stages": manifests,
|
|
123
141
|
"backups": backups,
|
|
@@ -135,26 +153,91 @@ class ScaleEngineManager:
|
|
|
135
153
|
if not self.status()["legacy_projection_candidate"]:
|
|
136
154
|
return None
|
|
137
155
|
lock_path = self._acquire_lifecycle_lock()
|
|
156
|
+
prepared: dict[str, Any] | None = None
|
|
138
157
|
try:
|
|
139
158
|
# Re-check inside the lock. A concurrent command may have
|
|
140
159
|
# completed promotion while this caller waited to acquire it.
|
|
141
|
-
|
|
160
|
+
current_status = self.status()
|
|
161
|
+
if not current_status["legacy_projection_candidate"]:
|
|
142
162
|
return None
|
|
163
|
+
retry_payloads = [
|
|
164
|
+
manifest["stage_id"]
|
|
165
|
+
for manifest in current_status["stages"]
|
|
166
|
+
if manifest.get("state") in {"prepared", "verified"}
|
|
167
|
+
and manifest.get("stage_id")
|
|
168
|
+
]
|
|
143
169
|
prepared = self._prepare()
|
|
144
170
|
self._verify(prepared["stage_id"])
|
|
145
|
-
|
|
146
|
-
|
|
171
|
+
promoted = self._promote(prepared["stage_id"])
|
|
172
|
+
retired: list[str] = []
|
|
173
|
+
retirement_failures: dict[str, str] = {}
|
|
174
|
+
for stage_id in retry_payloads:
|
|
175
|
+
try:
|
|
176
|
+
self._retire_superseded_stage(stage_id)
|
|
177
|
+
retired.append(stage_id)
|
|
178
|
+
except Exception as cleanup_exc:
|
|
179
|
+
retirement_failures[stage_id] = str(cleanup_exc)
|
|
180
|
+
return {
|
|
181
|
+
**promoted,
|
|
182
|
+
"retired_stages": retired,
|
|
183
|
+
"retirement_failures": retirement_failures,
|
|
184
|
+
}
|
|
185
|
+
except Exception as exc:
|
|
147
186
|
# A failed adoption must leave the canonical path selected. The
|
|
148
|
-
#
|
|
149
|
-
#
|
|
150
|
-
|
|
187
|
+
# manifest is retained for inspection, but its replaceable Cozo
|
|
188
|
+
# and Lance payloads are retired so repeated retries cannot grow
|
|
189
|
+
# the data root without bound.
|
|
190
|
+
retirement_error: Exception | None = None
|
|
191
|
+
unresolved_promotion = self.promotion_journal_path.exists()
|
|
192
|
+
if prepared is not None and not unresolved_promotion:
|
|
193
|
+
try:
|
|
194
|
+
self._retire_rejected_stage(prepared["stage_id"], exc)
|
|
195
|
+
except Exception as cleanup_exc:
|
|
196
|
+
retirement_error = cleanup_exc
|
|
197
|
+
self.config.scale_engine_state = (
|
|
198
|
+
"verified" if unresolved_promotion else "local_core"
|
|
199
|
+
)
|
|
151
200
|
self.config.graph_backend = "auto"
|
|
152
201
|
self.config.vector_backend = "auto"
|
|
153
202
|
self._save_config()
|
|
203
|
+
if retirement_error is not None:
|
|
204
|
+
raise ScaleEngineError(
|
|
205
|
+
f"{exc}; rejected stage retirement failed: {retirement_error}"
|
|
206
|
+
) from exc
|
|
154
207
|
raise
|
|
155
208
|
finally:
|
|
156
209
|
self._release_lifecycle_lock(lock_path)
|
|
157
210
|
|
|
211
|
+
def _retire_rejected_stage(self, stage_id: str, error: Exception) -> None:
|
|
212
|
+
"""Keep rejection evidence while removing replaceable projection data."""
|
|
213
|
+
self._retire_stage_payload(
|
|
214
|
+
stage_id,
|
|
215
|
+
{
|
|
216
|
+
"state": "rejected",
|
|
217
|
+
"rejected_at": _utc_now(),
|
|
218
|
+
"failure": f"{type(error).__name__}: {error}",
|
|
219
|
+
},
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
def _retire_superseded_stage(self, stage_id: str) -> None:
|
|
223
|
+
"""Retain an old retry manifest after a newer projection is promoted."""
|
|
224
|
+
self._retire_stage_payload(
|
|
225
|
+
stage_id,
|
|
226
|
+
{"state": "superseded", "superseded_at": _utc_now()},
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
def _retire_stage_payload(
|
|
230
|
+
self, stage_id: str, manifest_updates: dict[str, Any]
|
|
231
|
+
) -> None:
|
|
232
|
+
"""Remove derived stage bytes while retaining its durable manifest."""
|
|
233
|
+
stage_dir, manifest = self._load_stage(stage_id)
|
|
234
|
+
for payload in (stage_dir / "cozo", stage_dir / "lance"):
|
|
235
|
+
if payload.exists():
|
|
236
|
+
shutil.rmtree(payload)
|
|
237
|
+
self._fsync_directory(stage_dir)
|
|
238
|
+
manifest.update(manifest_updates)
|
|
239
|
+
self._write_manifest(stage_dir, manifest)
|
|
240
|
+
|
|
158
241
|
def prepare(self) -> dict[str, Any]:
|
|
159
242
|
"""Build a new projection in a private staging directory."""
|
|
160
243
|
lock_path = self._acquire_lifecycle_lock()
|
|
@@ -195,6 +278,9 @@ class ScaleEngineManager:
|
|
|
195
278
|
self.config.scale_engine_state = "prepared"
|
|
196
279
|
self._save_config()
|
|
197
280
|
return manifest
|
|
281
|
+
except CanonicalVectorError as exc:
|
|
282
|
+
shutil.rmtree(stage_dir, ignore_errors=True)
|
|
283
|
+
raise ScaleEngineError(f"canonical vector projection failed: {exc}") from exc
|
|
198
284
|
except Exception:
|
|
199
285
|
shutil.rmtree(stage_dir, ignore_errors=True)
|
|
200
286
|
raise
|
|
@@ -208,6 +294,8 @@ class ScaleEngineManager:
|
|
|
208
294
|
try:
|
|
209
295
|
self._recover_interrupted_promotion()
|
|
210
296
|
return self._verify(stage_id)
|
|
297
|
+
except CanonicalVectorError as exc:
|
|
298
|
+
raise ScaleEngineError(f"canonical vector projection failed: {exc}") from exc
|
|
211
299
|
finally:
|
|
212
300
|
self._release_lifecycle_lock(lock_path)
|
|
213
301
|
|
|
@@ -224,7 +312,9 @@ class ScaleEngineManager:
|
|
|
224
312
|
source_fingerprint = self._projection_fingerprint(conn, canonical)
|
|
225
313
|
observed = self._observed_counts(cozo, lance)
|
|
226
314
|
if manifest["source_fingerprint"] != source_fingerprint:
|
|
227
|
-
raise ScaleEngineError(
|
|
315
|
+
raise ScaleEngineError(
|
|
316
|
+
"canonical SQLite changed after preparation; prepare a new stage"
|
|
317
|
+
)
|
|
228
318
|
if canonical != manifest["canonical"] or observed != canonical:
|
|
229
319
|
raise ScaleEngineError(
|
|
230
320
|
f"projection parity failed: canonical={canonical}, observed={observed}"
|
|
@@ -244,6 +334,8 @@ class ScaleEngineManager:
|
|
|
244
334
|
try:
|
|
245
335
|
self._recover_interrupted_promotion()
|
|
246
336
|
return self._promote(stage_id)
|
|
337
|
+
except CanonicalVectorError as exc:
|
|
338
|
+
raise ScaleEngineError(f"canonical vector projection failed: {exc}") from exc
|
|
247
339
|
finally:
|
|
248
340
|
self._release_lifecycle_lock(lock_path)
|
|
249
341
|
|
|
@@ -264,7 +356,9 @@ class ScaleEngineManager:
|
|
|
264
356
|
gate.execute("BEGIN IMMEDIATE")
|
|
265
357
|
canonical = self._canonical_counts(gate)
|
|
266
358
|
if manifest["source_fingerprint"] != self._projection_fingerprint(gate, canonical):
|
|
267
|
-
raise ScaleEngineError(
|
|
359
|
+
raise ScaleEngineError(
|
|
360
|
+
"canonical SQLite changed after verification; prepare a new stage"
|
|
361
|
+
)
|
|
268
362
|
self._mkdir_durable(self.backup_root)
|
|
269
363
|
journal = {
|
|
270
364
|
"schema_version": self.SCHEMA_VERSION,
|
|
@@ -291,7 +385,13 @@ class ScaleEngineManager:
|
|
|
291
385
|
self._replace_durable(destination, source)
|
|
292
386
|
move["state"] = "complete"
|
|
293
387
|
self._write_promotion_journal(journal)
|
|
294
|
-
manifest.update(
|
|
388
|
+
manifest.update(
|
|
389
|
+
{
|
|
390
|
+
"state": "promoted",
|
|
391
|
+
"promoted_at": _utc_now(),
|
|
392
|
+
"backup_id": backup_dir.name,
|
|
393
|
+
}
|
|
394
|
+
)
|
|
295
395
|
self._write_manifest(stage_dir, manifest)
|
|
296
396
|
self.config.scale_engine_state = "promoted"
|
|
297
397
|
self.config.graph_backend = "cozo"
|
|
@@ -308,11 +408,14 @@ class ScaleEngineManager:
|
|
|
308
408
|
except sqlite3.Error:
|
|
309
409
|
pass
|
|
310
410
|
try:
|
|
311
|
-
self._recover_interrupted_promotion()
|
|
312
|
-
except
|
|
411
|
+
recovery = self._recover_interrupted_promotion()
|
|
412
|
+
except Exception as recovery_error:
|
|
313
413
|
raise ScaleEngineError(
|
|
314
414
|
f"promotion interrupted; automatic recovery needs repair: {recovery_error}"
|
|
315
415
|
) from exc
|
|
416
|
+
if recovery == "finalized_committed_promotion":
|
|
417
|
+
_, recovered_manifest = self._load_stage(stage_id)
|
|
418
|
+
return recovered_manifest
|
|
316
419
|
raise ScaleEngineError(f"promotion rolled back: {exc}") from exc
|
|
317
420
|
finally:
|
|
318
421
|
gate.close()
|
|
@@ -367,7 +470,11 @@ class ScaleEngineManager:
|
|
|
367
470
|
journal["state"] = "committed"
|
|
368
471
|
self._write_promotion_journal(journal)
|
|
369
472
|
self.promotion_journal_path.unlink(missing_ok=True)
|
|
370
|
-
return {
|
|
473
|
+
return {
|
|
474
|
+
"state": "local_core",
|
|
475
|
+
"restored_backup": backup_id,
|
|
476
|
+
"displaced": displaced.name,
|
|
477
|
+
}
|
|
371
478
|
except Exception as exc:
|
|
372
479
|
try:
|
|
373
480
|
self._recover_interrupted_promotion()
|
|
@@ -385,6 +492,7 @@ class ScaleEngineManager:
|
|
|
385
492
|
def _readonly_connection(self) -> sqlite3.Connection:
|
|
386
493
|
conn = sqlite3.connect(f"file:{self.db_path}?mode=ro", uri=True)
|
|
387
494
|
conn.execute("PRAGMA query_only=ON")
|
|
495
|
+
load_sqlite_vec_extension(conn)
|
|
388
496
|
return conn
|
|
389
497
|
|
|
390
498
|
def _canonical_counts(self, conn: sqlite3.Connection) -> dict[str, int]:
|
|
@@ -392,18 +500,8 @@ class ScaleEngineManager:
|
|
|
392
500
|
"SELECT COUNT(*) FROM canonical_entities WHERE profile_id=?",
|
|
393
501
|
(self.profile_id,),
|
|
394
502
|
).fetchone()[0]
|
|
395
|
-
edges = conn.
|
|
396
|
-
|
|
397
|
-
).fetchone()[0]
|
|
398
|
-
try:
|
|
399
|
-
vectors = conn.execute(
|
|
400
|
-
"SELECT COUNT(*) FROM fact_embeddings_rowids fer "
|
|
401
|
-
"JOIN atomic_facts af ON af.fact_id = fer.fact_id "
|
|
402
|
-
"WHERE af.profile_id = ?",
|
|
403
|
-
(self.profile_id,),
|
|
404
|
-
).fetchone()[0]
|
|
405
|
-
except sqlite3.OperationalError:
|
|
406
|
-
vectors = 0
|
|
503
|
+
edges = count_logical_edges(conn, self.profile_id)
|
|
504
|
+
vectors = count_canonical_vectors(conn, self.profile_id)
|
|
407
505
|
return {"entities": int(nodes), "edges": int(edges), "vectors": int(vectors)}
|
|
408
506
|
|
|
409
507
|
def _observed_counts(self, cozo: Any, lance: Any) -> dict[str, int]:
|
|
@@ -411,7 +509,11 @@ class ScaleEngineManager:
|
|
|
411
509
|
vector = lance.health_check()
|
|
412
510
|
if graph.get("status") != "active" or vector.get("status") != "active":
|
|
413
511
|
raise ScaleEngineError(f"projection health failed: cozo={graph}, lancedb={vector}")
|
|
414
|
-
return {
|
|
512
|
+
return {
|
|
513
|
+
"entities": int(graph["entities"]),
|
|
514
|
+
"edges": int(graph["edges"]),
|
|
515
|
+
"vectors": int(vector["vectors"]),
|
|
516
|
+
}
|
|
415
517
|
|
|
416
518
|
def _projection_fingerprint(
|
|
417
519
|
self, conn: sqlite3.Connection, counts: dict[str, int]
|
|
@@ -420,9 +522,13 @@ class ScaleEngineManager:
|
|
|
420
522
|
digest = hashlib.sha256()
|
|
421
523
|
digest.update(json.dumps(counts, sort_keys=True).encode())
|
|
422
524
|
tables = (
|
|
423
|
-
(
|
|
525
|
+
(
|
|
526
|
+
"canonical_entities",
|
|
527
|
+
"entity_id, canonical_name, entity_type, first_seen, last_seen, "
|
|
528
|
+
"fact_count, profile_id",
|
|
529
|
+
"entity_id",
|
|
530
|
+
),
|
|
424
531
|
("atomic_facts", "fact_id, canonical_entities_json, lifecycle, profile_id", "fact_id"),
|
|
425
|
-
("graph_edges", "source_id, target_id, edge_type, weight, profile_id", "source_id, target_id, edge_type"),
|
|
426
532
|
)
|
|
427
533
|
for table, columns, ordering in tables:
|
|
428
534
|
try:
|
|
@@ -435,17 +541,12 @@ class ScaleEngineManager:
|
|
|
435
541
|
except sqlite3.OperationalError as exc:
|
|
436
542
|
raise ScaleEngineError(f"canonical SQLite missing required {table} table") from exc
|
|
437
543
|
try:
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
)
|
|
445
|
-
for row in rows:
|
|
446
|
-
self._digest_row(digest, "fact_embeddings_rowids", row)
|
|
447
|
-
except sqlite3.OperationalError:
|
|
448
|
-
pass
|
|
544
|
+
for row in iter_logical_edges(conn, self.profile_id):
|
|
545
|
+
self._digest_row(digest, "graph_edges", row)
|
|
546
|
+
except sqlite3.OperationalError as exc:
|
|
547
|
+
raise ScaleEngineError("canonical SQLite missing required graph_edges table") from exc
|
|
548
|
+
for row in iter_canonical_vectors(conn, self.profile_id):
|
|
549
|
+
self._digest_row(digest, "fact_embeddings", row)
|
|
449
550
|
return digest.hexdigest()
|
|
450
551
|
|
|
451
552
|
@staticmethod
|
|
@@ -494,7 +595,9 @@ class ScaleEngineManager:
|
|
|
494
595
|
|
|
495
596
|
def _require_default_profile(self) -> None:
|
|
496
597
|
if self.profile_id != "default":
|
|
497
|
-
raise ScaleEngineError(
|
|
598
|
+
raise ScaleEngineError(
|
|
599
|
+
"Scale Engine promotion currently supports the default profile only"
|
|
600
|
+
)
|
|
498
601
|
|
|
499
602
|
def _require_canonical_db(self) -> None:
|
|
500
603
|
if not self.db_path.exists():
|
{superlocalmemory-3.7.3 → superlocalmemory-3.7.5}/src/superlocalmemory/graph/cozo_backend.py
RENAMED
|
@@ -24,6 +24,8 @@ from datetime import datetime
|
|
|
24
24
|
from pathlib import Path
|
|
25
25
|
from typing import Any
|
|
26
26
|
|
|
27
|
+
from superlocalmemory.storage.logical_edges import iter_logical_edges
|
|
28
|
+
|
|
27
29
|
logger = logging.getLogger(__name__)
|
|
28
30
|
|
|
29
31
|
# Optional import — CozoDB is an optional dependency
|
|
@@ -260,6 +262,12 @@ class CozoDBGraphBackend:
|
|
|
260
262
|
*fact_entity{fact_id, entity_id, profile_id}, fact_id = $fact_id
|
|
261
263
|
:rm fact_entity {fact_id, entity_id => profile_id}
|
|
262
264
|
""", {"fact_id": fact_id})
|
|
265
|
+
self._db.run("""
|
|
266
|
+
?[from_id, to_id, edge_type, weight, metadata, profile_id, created_at] :=
|
|
267
|
+
*edge{from_id, to_id, edge_type, weight, metadata, profile_id, created_at},
|
|
268
|
+
(from_id = $fact_id or to_id = $fact_id)
|
|
269
|
+
:rm edge {from_id, to_id, edge_type => weight, metadata, profile_id, created_at}
|
|
270
|
+
""", {"fact_id": fact_id})
|
|
263
271
|
|
|
264
272
|
def record_shadow_comparison(
|
|
265
273
|
self,
|
|
@@ -280,12 +288,6 @@ class CozoDBGraphBackend:
|
|
|
280
288
|
def record_shadow_error(self, error: str) -> None:
|
|
281
289
|
self._shadow_errors += 1
|
|
282
290
|
logger.warning("Cozo entity recall failed closed to SQLite: %s", error)
|
|
283
|
-
self._db.run("""
|
|
284
|
-
?[from_id, to_id, edge_type, weight, metadata, profile_id, created_at] :=
|
|
285
|
-
*edge{from_id, to_id, edge_type, weight, metadata, profile_id, created_at},
|
|
286
|
-
(from_id = $fact_id or to_id = $fact_id)
|
|
287
|
-
:rm edge {from_id, to_id, edge_type => weight, metadata, profile_id, created_at}
|
|
288
|
-
""", {"fact_id": fact_id})
|
|
289
291
|
|
|
290
292
|
# ------------------------------------------------------------------
|
|
291
293
|
# Bulk Import (SQLite → CozoDB)
|
|
@@ -358,22 +360,15 @@ class CozoDBGraphBackend:
|
|
|
358
360
|
|
|
359
361
|
# Step 3: Export fact graph edges directly. Fact graph traversal is
|
|
360
362
|
# intentionally kept in its native fact-ID namespace.
|
|
361
|
-
edges_sql = """
|
|
362
|
-
SELECT source_id, target_id, edge_type, weight
|
|
363
|
-
FROM graph_edges WHERE profile_id = ?
|
|
364
|
-
"""
|
|
365
|
-
edge_rows = conn.execute(edges_sql, (profile_id,)).fetchall()
|
|
366
|
-
|
|
367
363
|
edge_dicts = []
|
|
368
|
-
for
|
|
369
|
-
ea, eb, etype, weight = row
|
|
364
|
+
for ea, eb, etype, weight, edge_profile in iter_logical_edges(conn, profile_id):
|
|
370
365
|
edge_dicts.append({
|
|
371
366
|
"from_id": ea,
|
|
372
367
|
"to_id": eb,
|
|
373
|
-
"edge_type": etype
|
|
374
|
-
"weight": float(weight
|
|
368
|
+
"edge_type": etype,
|
|
369
|
+
"weight": float(weight),
|
|
375
370
|
"metadata": "{}",
|
|
376
|
-
"profile_id":
|
|
371
|
+
"profile_id": edge_profile,
|
|
377
372
|
"created_at": now,
|
|
378
373
|
})
|
|
379
374
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""Canonical logical-edge projection shared by scale backends.
|
|
2
|
+
|
|
3
|
+
Legacy databases can contain multiple physical ``graph_edges`` rows for one
|
|
4
|
+
logical relationship. Current writes define identity as profile, source,
|
|
5
|
+
target, and edge type, retaining the strongest weight. Derived projections
|
|
6
|
+
must use that same contract without rewriting canonical SQLite history.
|
|
7
|
+
"""
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import sqlite3
|
|
11
|
+
from collections.abc import Iterator
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
_LOGICAL_EDGE_SELECT = """
|
|
15
|
+
SELECT
|
|
16
|
+
source_id,
|
|
17
|
+
target_id,
|
|
18
|
+
COALESCE(edge_type, 'related') AS edge_type,
|
|
19
|
+
MAX(COALESCE(weight, 1.0)) AS weight,
|
|
20
|
+
profile_id
|
|
21
|
+
FROM graph_edges
|
|
22
|
+
WHERE profile_id = ?
|
|
23
|
+
GROUP BY profile_id, source_id, target_id, COALESCE(edge_type, 'related')
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def iter_logical_edges(
|
|
28
|
+
conn: sqlite3.Connection, profile_id: str
|
|
29
|
+
) -> Iterator[tuple[Any, ...]]:
|
|
30
|
+
"""Yield normalized graph edges in deterministic fingerprint order."""
|
|
31
|
+
return iter(
|
|
32
|
+
conn.execute(
|
|
33
|
+
_LOGICAL_EDGE_SELECT + " ORDER BY source_id, target_id, edge_type",
|
|
34
|
+
(profile_id,),
|
|
35
|
+
)
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def count_logical_edges(conn: sqlite3.Connection, profile_id: str) -> int:
|
|
40
|
+
"""Count relationships using the canonical logical identity."""
|
|
41
|
+
row = conn.execute(
|
|
42
|
+
"SELECT COUNT(*) FROM (" + _LOGICAL_EDGE_SELECT + ")",
|
|
43
|
+
(profile_id,),
|
|
44
|
+
).fetchone()
|
|
45
|
+
return int(row[0] if row else 0)
|