superlocalmemory 3.2.1__tar.gz → 3.2.2__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.2.1/src/superlocalmemory.egg-info → superlocalmemory-3.2.2}/PKG-INFO +62 -2
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/README.md +61 -1
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/pyproject.toml +26 -1
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/attribution/signer.py +6 -1
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/config.py +114 -1
- superlocalmemory-3.2.2/src/superlocalmemory/core/consolidation_engine.py +595 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/embeddings.py +0 -1
- superlocalmemory-3.2.2/src/superlocalmemory/core/engine.py +325 -0
- superlocalmemory-3.2.2/src/superlocalmemory/core/engine_wiring.py +474 -0
- superlocalmemory-3.2.2/src/superlocalmemory/core/graph_analyzer.py +199 -0
- superlocalmemory-3.2.2/src/superlocalmemory/core/recall_pipeline.py +247 -0
- superlocalmemory-3.2.2/src/superlocalmemory/core/store_pipeline.py +483 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/worker_pool.py +35 -12
- superlocalmemory-3.2.2/src/superlocalmemory/encoding/auto_linker.py +308 -0
- superlocalmemory-3.2.2/src/superlocalmemory/encoding/context_generator.py +175 -0
- superlocalmemory-3.2.2/src/superlocalmemory/encoding/temporal_validator.py +513 -0
- superlocalmemory-3.2.2/src/superlocalmemory/hooks/auto_invoker.py +484 -0
- superlocalmemory-3.2.2/src/superlocalmemory/retrieval/channel_registry.py +154 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/engine.py +12 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/semantic_channel.py +87 -3
- superlocalmemory-3.2.2/src/superlocalmemory/retrieval/spreading_activation.py +311 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/strategy.py +6 -6
- superlocalmemory-3.2.2/src/superlocalmemory/retrieval/vector_store.py +386 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/v3_api.py +576 -0
- superlocalmemory-3.2.2/src/superlocalmemory/storage/access_log.py +169 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/database.py +288 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/schema.py +10 -0
- superlocalmemory-3.2.2/src/superlocalmemory/storage/schema_v32.py +252 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/v2_migrator.py +24 -2
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2/src/superlocalmemory.egg-info}/PKG-INFO +62 -2
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory.egg-info/SOURCES.txt +14 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_v3_api.py +14 -0
- superlocalmemory-3.2.1/src/superlocalmemory/core/engine.py +0 -835
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/AUTHORS.md +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/LICENSE +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/NOTICE +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/setup.cfg +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/attribution/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/attribution/mathematical_dna.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/attribution/watermark.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/commands.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/json_output.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/main.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/migrate_cmd.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/post_install.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/cli/setup_wizard.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/abac.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/audit.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/eu_ai_act.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/gdpr.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/lifecycle.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/retention.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/compliance/scheduler.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/embedding_worker.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/hooks.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/maintenance.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/modes.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/ollama_embedder.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/profiles.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/recall_worker.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/registry.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/core/summarizer.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/dynamics/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/consolidator.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/emotional.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/entity_resolver.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/entropy_gate.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/fact_extractor.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/foresight.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/graph_builder.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/observation_builder.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/scene_builder.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/signal_inference.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/temporal_parser.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/encoding/type_router.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/auto_capture.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/auto_recall.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/claude_code_hooks.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/ide_connector.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/hooks/rules_engine.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/auth_middleware.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/backup.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/cache_manager.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/event_bus.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/rate_limiter.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/infra/webhook_dispatcher.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/adaptive.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/behavioral.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/behavioral_listener.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/bootstrap.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/consolidation_worker.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/cross_project.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/database.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/engagement.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/features.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/feedback.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/outcomes.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/project_context.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/ranker.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/signals.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/source_quality.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/learning/workflows.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/llm/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/llm/backbone.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/math/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/math/fisher.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/math/langevin.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/math/sheaf.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/resources.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/server.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/tools.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/tools_active.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/tools_core.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/tools_v28.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/mcp/tools_v3.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/agentic.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/ann_index.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/bm25_channel.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/bridge_discovery.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/entity_channel.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/fusion.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/profile_channel.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/reranker.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/retrieval/temporal_channel.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/api.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/agents.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/backup.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/behavioral.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/compliance.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/data_io.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/events.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/helpers.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/learning.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/lifecycle.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/memories.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/profiles.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/stats.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/routes/ws.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/security_middleware.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/server/ui.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/access_control.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/migrations.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/storage/models.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/trust/__init__.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/trust/gate.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/trust/provenance.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/trust/scorer.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/trust/signals.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory.egg-info/dependency_links.txt +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory.egg-info/entry_points.txt +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory.egg-info/requires.txt +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory.egg-info/top_level.txt +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_auto_hooks.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_behavioral_full.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_cli.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_cli_json.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_compliance_full.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_config_system.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_engine_hooks.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_event_bus.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_features.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_final_locomo_mini.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_ide_connector.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_infra.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_learning_advanced.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_learning_collectors.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_llm_provider.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_mcp_server.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_migration.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_post_install.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_ranker.py +0 -0
- {superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/tests/test_trust_full.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: superlocalmemory
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.2
|
|
4
4
|
Summary: Information-geometric agent memory with mathematical guarantees
|
|
5
5
|
Author-email: Varun Pratap Bhardwaj <admin@superlocalmemory.com>
|
|
6
6
|
License: MIT
|
|
@@ -55,7 +55,7 @@ Dynamic: license-file
|
|
|
55
55
|
<img src="https://superlocalmemory.com/assets/logo-mark.png" alt="SuperLocalMemory" width="200"/>
|
|
56
56
|
</p>
|
|
57
57
|
|
|
58
|
-
<h1 align="center">SuperLocalMemory V3</h1>
|
|
58
|
+
<h1 align="center">SuperLocalMemory V3.2</h1>
|
|
59
59
|
<p align="center"><strong>The first local-only AI memory to break 74% retrieval on LoCoMo.<br/>No cloud. No APIs. No data leaves your machine.</strong></p>
|
|
60
60
|
|
|
61
61
|
<p align="center">
|
|
@@ -100,6 +100,66 @@ Mathematical layers contribute **+12.7 percentage points** on average across 6 c
|
|
|
100
100
|
|
|
101
101
|
---
|
|
102
102
|
|
|
103
|
+
## What's New in V3.2 — The Living Brain
|
|
104
|
+
|
|
105
|
+
> Your AI agent now remembers the way humans do: associatively, temporally, and with consolidation during idle time. V3.2 transforms SLM from a retrieval engine into a living memory system that surfaces what you need before you ask for it.
|
|
106
|
+
|
|
107
|
+
### Headline Features
|
|
108
|
+
|
|
109
|
+
**100x Faster Recall** — Retrieval latency drops from ~500ms to <10ms at 10K facts. Vector KNN search replaces full-table scan. You feel the difference on the first query.
|
|
110
|
+
|
|
111
|
+
**Automatic Memory Surfacing** — Memories now come to you. A multi-signal scoring engine (similarity + recency + frequency + trust) proactively injects relevant context at session start and during conversations. No more "I forgot we decided that last week."
|
|
112
|
+
|
|
113
|
+
**Associative Retrieval (5th Channel)** — V3 had 4 retrieval channels. V3.2 adds a 5th: multi-hop spreading activation across your knowledge graph. Ask about "deployment" and it surfaces the related database migration decision three hops away.
|
|
114
|
+
|
|
115
|
+
**Temporal Intelligence** — Facts now carry time-awareness. Bi-temporal validity tracks when something was true vs. when it was recorded. Contradictions are detected automatically: "We use Postgres" + "We migrated to MySQL" triggers a conflict resolution flow.
|
|
116
|
+
|
|
117
|
+
**Sleep-Time Consolidation** — During idle periods, SLM compresses, deduplicates, and reorganizes your memory store. Redundant facts merge. Clusters tighten. Important memories get promoted to Core Memory blocks that stay permanently in context (inspired by Letta's core memory, but fully local).
|
|
118
|
+
|
|
119
|
+
**Core Memory Blocks** — Pin your most critical context (architecture decisions, team conventions, project constraints) into always-available working memory. These blocks are injected into every session automatically — your agent never starts cold.
|
|
120
|
+
|
|
121
|
+
### By the Numbers
|
|
122
|
+
|
|
123
|
+
| Metric | V3.0 | V3.2 | Change |
|
|
124
|
+
|:-------|:----:|:----:|:------:|
|
|
125
|
+
| Recall latency (10K facts) | ~500ms | <10ms | **100x faster** |
|
|
126
|
+
| Retrieval channels | 4 | 5 | +spreading activation |
|
|
127
|
+
| MCP tools | 24 | 29 | +5 new |
|
|
128
|
+
| CLI commands | 16 | 21 | +5 new |
|
|
129
|
+
| Dashboard tabs | 17 | 20 | +3 new |
|
|
130
|
+
| API endpoints | — | 9 new | configuration & status |
|
|
131
|
+
| DB tables | 9 | 18 | +9 for temporal, consolidation, core memory |
|
|
132
|
+
|
|
133
|
+
### Enable V3.2 Features
|
|
134
|
+
|
|
135
|
+
All new features default OFF. Zero breaking changes. Opt in when ready:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Turn on automatic memory surfacing
|
|
139
|
+
slm config set auto_invoke.enabled true
|
|
140
|
+
|
|
141
|
+
# Turn on sleep-time consolidation
|
|
142
|
+
slm config set consolidation.enabled true
|
|
143
|
+
|
|
144
|
+
# Turn on temporal intelligence
|
|
145
|
+
slm config set temporal.enabled true
|
|
146
|
+
|
|
147
|
+
# Turn on associative retrieval (5th channel)
|
|
148
|
+
slm config set retrieval.synapse.enabled true
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Or enable everything at once:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
slm config set v32_features.all true
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Fully backward compatible.** All 29 MCP tools, 21 CLI commands work the same. Existing data untouched. New features activate only when you flip the switch.
|
|
158
|
+
|
|
159
|
+
> **V3.2 Paper** — Technical details, formal guarantees, and benchmark results in the upcoming companion paper. Watch the [arXiv page](https://arxiv.org/abs/2603.14588) for updates.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
103
163
|
## Quick Start
|
|
104
164
|
|
|
105
165
|
### Install via npm (recommended)
|
|
@@ -2,7 +2,7 @@
|
|
|
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</h1>
|
|
5
|
+
<h1 align="center">SuperLocalMemory V3.2</h1>
|
|
6
6
|
<p align="center"><strong>The first local-only AI memory to break 74% retrieval on LoCoMo.<br/>No cloud. No APIs. No data leaves your machine.</strong></p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
@@ -47,6 +47,66 @@ Mathematical layers contribute **+12.7 percentage points** on average across 6 c
|
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
|
|
50
|
+
## What's New in V3.2 — The Living Brain
|
|
51
|
+
|
|
52
|
+
> Your AI agent now remembers the way humans do: associatively, temporally, and with consolidation during idle time. V3.2 transforms SLM from a retrieval engine into a living memory system that surfaces what you need before you ask for it.
|
|
53
|
+
|
|
54
|
+
### Headline Features
|
|
55
|
+
|
|
56
|
+
**100x Faster Recall** — Retrieval latency drops from ~500ms to <10ms at 10K facts. Vector KNN search replaces full-table scan. You feel the difference on the first query.
|
|
57
|
+
|
|
58
|
+
**Automatic Memory Surfacing** — Memories now come to you. A multi-signal scoring engine (similarity + recency + frequency + trust) proactively injects relevant context at session start and during conversations. No more "I forgot we decided that last week."
|
|
59
|
+
|
|
60
|
+
**Associative Retrieval (5th Channel)** — V3 had 4 retrieval channels. V3.2 adds a 5th: multi-hop spreading activation across your knowledge graph. Ask about "deployment" and it surfaces the related database migration decision three hops away.
|
|
61
|
+
|
|
62
|
+
**Temporal Intelligence** — Facts now carry time-awareness. Bi-temporal validity tracks when something was true vs. when it was recorded. Contradictions are detected automatically: "We use Postgres" + "We migrated to MySQL" triggers a conflict resolution flow.
|
|
63
|
+
|
|
64
|
+
**Sleep-Time Consolidation** — During idle periods, SLM compresses, deduplicates, and reorganizes your memory store. Redundant facts merge. Clusters tighten. Important memories get promoted to Core Memory blocks that stay permanently in context (inspired by Letta's core memory, but fully local).
|
|
65
|
+
|
|
66
|
+
**Core Memory Blocks** — Pin your most critical context (architecture decisions, team conventions, project constraints) into always-available working memory. These blocks are injected into every session automatically — your agent never starts cold.
|
|
67
|
+
|
|
68
|
+
### By the Numbers
|
|
69
|
+
|
|
70
|
+
| Metric | V3.0 | V3.2 | Change |
|
|
71
|
+
|:-------|:----:|:----:|:------:|
|
|
72
|
+
| Recall latency (10K facts) | ~500ms | <10ms | **100x faster** |
|
|
73
|
+
| Retrieval channels | 4 | 5 | +spreading activation |
|
|
74
|
+
| MCP tools | 24 | 29 | +5 new |
|
|
75
|
+
| CLI commands | 16 | 21 | +5 new |
|
|
76
|
+
| Dashboard tabs | 17 | 20 | +3 new |
|
|
77
|
+
| API endpoints | — | 9 new | configuration & status |
|
|
78
|
+
| DB tables | 9 | 18 | +9 for temporal, consolidation, core memory |
|
|
79
|
+
|
|
80
|
+
### Enable V3.2 Features
|
|
81
|
+
|
|
82
|
+
All new features default OFF. Zero breaking changes. Opt in when ready:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Turn on automatic memory surfacing
|
|
86
|
+
slm config set auto_invoke.enabled true
|
|
87
|
+
|
|
88
|
+
# Turn on sleep-time consolidation
|
|
89
|
+
slm config set consolidation.enabled true
|
|
90
|
+
|
|
91
|
+
# Turn on temporal intelligence
|
|
92
|
+
slm config set temporal.enabled true
|
|
93
|
+
|
|
94
|
+
# Turn on associative retrieval (5th channel)
|
|
95
|
+
slm config set retrieval.synapse.enabled true
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Or enable everything at once:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
slm config set v32_features.all true
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Fully backward compatible.** All 29 MCP tools, 21 CLI commands work the same. Existing data untouched. New features activate only when you flip the switch.
|
|
105
|
+
|
|
106
|
+
> **V3.2 Paper** — Technical details, formal guarantees, and benchmark results in the upcoming companion paper. Watch the [arXiv page](https://arxiv.org/abs/2603.14588) for updates.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
50
110
|
## Quick Start
|
|
51
111
|
|
|
52
112
|
### Install via npm (recommended)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "superlocalmemory"
|
|
3
|
-
version = "3.2.
|
|
3
|
+
version = "3.2.2"
|
|
4
4
|
description = "Information-geometric agent memory with mathematical guarantees"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = {text = "MIT"}
|
|
@@ -78,6 +78,31 @@ where = ["src"]
|
|
|
78
78
|
[tool.pytest.ini_options]
|
|
79
79
|
testpaths = ["tests"]
|
|
80
80
|
pythonpath = ["src"]
|
|
81
|
+
markers = [
|
|
82
|
+
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
[tool.coverage.run]
|
|
86
|
+
source = ["superlocalmemory"]
|
|
87
|
+
omit = [
|
|
88
|
+
"*/tests/*",
|
|
89
|
+
"*/ui/*",
|
|
90
|
+
"*/cli/*",
|
|
91
|
+
"*/__main__.py",
|
|
92
|
+
]
|
|
93
|
+
|
|
94
|
+
[tool.coverage.report]
|
|
95
|
+
fail_under = 0
|
|
96
|
+
show_missing = true
|
|
97
|
+
exclude_lines = [
|
|
98
|
+
"pragma: no cover",
|
|
99
|
+
"if TYPE_CHECKING:",
|
|
100
|
+
"if __name__ ==",
|
|
101
|
+
"@overload",
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
[tool.coverage.html]
|
|
105
|
+
directory = "htmlcov"
|
|
81
106
|
|
|
82
107
|
[tool.ruff]
|
|
83
108
|
target-version = "py311"
|
{superlocalmemory-3.2.1 → superlocalmemory-3.2.2}/src/superlocalmemory/attribution/signer.py
RENAMED
|
@@ -17,6 +17,7 @@ from __future__ import annotations
|
|
|
17
17
|
import hashlib
|
|
18
18
|
import hmac
|
|
19
19
|
import os
|
|
20
|
+
import sys
|
|
20
21
|
from datetime import datetime, timezone
|
|
21
22
|
from typing import Dict
|
|
22
23
|
|
|
@@ -35,7 +36,11 @@ def _get_or_create_key() -> str:
|
|
|
35
36
|
os.makedirs(os.path.dirname(key_path), exist_ok=True)
|
|
36
37
|
with open(key_path, "w") as f:
|
|
37
38
|
f.write(key)
|
|
38
|
-
|
|
39
|
+
# On POSIX, restrict the key file to owner-only read/write.
|
|
40
|
+
# On Windows, os.chmod only supports setting the read-only flag
|
|
41
|
+
# and cannot enforce Unix-style permissions, so we skip it.
|
|
42
|
+
if sys.platform != "win32":
|
|
43
|
+
os.chmod(key_path, 0o600)
|
|
39
44
|
return key
|
|
40
45
|
|
|
41
46
|
_DEFAULT_KEY: str = _get_or_create_key()
|
|
@@ -84,13 +84,14 @@ class LLMConfig:
|
|
|
84
84
|
|
|
85
85
|
@dataclass
|
|
86
86
|
class ChannelWeights:
|
|
87
|
-
"""Retrieval channel weights —
|
|
87
|
+
"""Retrieval channel weights — 5 channels, query-adaptive."""
|
|
88
88
|
|
|
89
89
|
# Entity-linked facts are high-precision matches that rank above BM25.
|
|
90
90
|
semantic: float = 1.2
|
|
91
91
|
bm25: float = 1.0
|
|
92
92
|
entity_graph: float = 1.3
|
|
93
93
|
temporal: float = 1.0
|
|
94
|
+
spreading_activation: float = 1.0 # Phase 3: 5th channel (BC-08: default value)
|
|
94
95
|
|
|
95
96
|
def as_dict(self) -> dict[str, float]:
|
|
96
97
|
return {
|
|
@@ -98,6 +99,7 @@ class ChannelWeights:
|
|
|
98
99
|
"bm25": self.bm25,
|
|
99
100
|
"entity_graph": self.entity_graph,
|
|
100
101
|
"temporal": self.temporal,
|
|
102
|
+
"spreading_activation": self.spreading_activation,
|
|
101
103
|
}
|
|
102
104
|
|
|
103
105
|
|
|
@@ -207,6 +209,109 @@ class MathConfig:
|
|
|
207
209
|
# Rate-Distortion (production only, disabled for benchmarks)
|
|
208
210
|
|
|
209
211
|
|
|
212
|
+
# ---------------------------------------------------------------------------
|
|
213
|
+
# Master Config
|
|
214
|
+
# ---------------------------------------------------------------------------
|
|
215
|
+
|
|
216
|
+
@dataclass(frozen=True)
|
|
217
|
+
class ConsolidationConfig:
|
|
218
|
+
"""Configuration for sleep-time consolidation (Phase 5).
|
|
219
|
+
|
|
220
|
+
Feature-flagged: starts enabled=False (Rule 12).
|
|
221
|
+
"""
|
|
222
|
+
|
|
223
|
+
enabled: bool = False # Feature flag (Rule 12)
|
|
224
|
+
step_count_trigger: int = 50 # Lightweight consolidation every N stores (L7)
|
|
225
|
+
session_trigger: bool = True # Run on session end
|
|
226
|
+
idle_timeout_seconds: int = 300 # 5 min inactivity
|
|
227
|
+
scheduled_sessions: int = 5 # Full consolidation every N sessions
|
|
228
|
+
core_memory_char_limit: int = 2000 # Total chars across all blocks
|
|
229
|
+
block_char_limit: int = 500 # Per-block character limit
|
|
230
|
+
compression_similarity: float = 0.85 # Dedup threshold for compression
|
|
231
|
+
promotion_min_access: int = 3 # Min access count for promotion
|
|
232
|
+
promotion_min_trust: float = 0.5 # Min trust for promotion
|
|
233
|
+
decay_days_threshold: int = 30 # Edge decay after N days
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
@dataclass(frozen=True)
|
|
237
|
+
class TemporalValidatorConfig:
|
|
238
|
+
"""Configuration for temporal intelligence (Phase 4).
|
|
239
|
+
|
|
240
|
+
Feature-flagged: starts enabled=False (Rule 12).
|
|
241
|
+
"""
|
|
242
|
+
|
|
243
|
+
enabled: bool = False
|
|
244
|
+
mode: str = "a" # "a" (sheaf), "b"/"c" (LLM)
|
|
245
|
+
|
|
246
|
+
# Sheaf contradiction threshold
|
|
247
|
+
contradiction_threshold: float = 0.45 # Mode A threshold (768d)
|
|
248
|
+
|
|
249
|
+
# LLM pre-filter threshold (lower to catch more candidates)
|
|
250
|
+
llm_prefilter_threshold: float = 0.30
|
|
251
|
+
|
|
252
|
+
# Max LLM checks per new fact (cost control)
|
|
253
|
+
max_llm_checks: int = 5
|
|
254
|
+
|
|
255
|
+
# Trust penalty for expired facts
|
|
256
|
+
expiration_trust_penalty: float = -0.2
|
|
257
|
+
|
|
258
|
+
# Include expired facts in historical queries
|
|
259
|
+
include_expired_in_history: bool = True
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
@dataclass(frozen=True)
|
|
263
|
+
class AutoInvokeConfig:
|
|
264
|
+
"""Configuration for the Auto-Invoke Engine (Phase 2).
|
|
265
|
+
|
|
266
|
+
Feature-flagged: starts enabled=False, graduated to default on
|
|
267
|
+
after MRR validation passes (Rule 12).
|
|
268
|
+
|
|
269
|
+
References:
|
|
270
|
+
- SYNAPSE: FOK gating (fok_threshold = 0.12)
|
|
271
|
+
- ACT-R: base-level activation (act_r_decay = 0.5)
|
|
272
|
+
- Zep/Hindsight: multi-signal ranking consensus
|
|
273
|
+
"""
|
|
274
|
+
|
|
275
|
+
enabled: bool = False # Feature flag (Rule 12)
|
|
276
|
+
profile_id: str = "default"
|
|
277
|
+
|
|
278
|
+
# Scoring weights (4-signal default) -- must sum to 1.0
|
|
279
|
+
weights: dict = field(default_factory=lambda: {
|
|
280
|
+
"similarity": 0.40,
|
|
281
|
+
"recency": 0.25,
|
|
282
|
+
"frequency": 0.20,
|
|
283
|
+
"trust": 0.15,
|
|
284
|
+
})
|
|
285
|
+
|
|
286
|
+
# ACT-R mode (3-signal alternative) -- must sum to 1.0
|
|
287
|
+
use_act_r: bool = False
|
|
288
|
+
act_r_weights: dict = field(default_factory=lambda: {
|
|
289
|
+
"similarity": 0.40,
|
|
290
|
+
"base_level": 0.35,
|
|
291
|
+
"trust": 0.25,
|
|
292
|
+
})
|
|
293
|
+
act_r_decay: float = 0.5 # Power-law decay exponent
|
|
294
|
+
|
|
295
|
+
# FOK gating (Feeling-of-Knowing)
|
|
296
|
+
fok_threshold: float = 0.12 # SYNAPSE minimum score gate
|
|
297
|
+
|
|
298
|
+
# Retrieval limits
|
|
299
|
+
max_memories_injected: int = 10
|
|
300
|
+
candidate_multiplier: int = 3 # candidates = limit * multiplier
|
|
301
|
+
|
|
302
|
+
# Mode A degradation weights -- must sum to 1.0
|
|
303
|
+
mode_a_weights: dict = field(default_factory=lambda: {
|
|
304
|
+
"similarity": 0.00,
|
|
305
|
+
"recency": 0.40,
|
|
306
|
+
"frequency": 0.35,
|
|
307
|
+
"trust": 0.25,
|
|
308
|
+
})
|
|
309
|
+
|
|
310
|
+
# Behavioral
|
|
311
|
+
include_archived: bool = False
|
|
312
|
+
relevance_threshold: float = 0.3 # Legacy compat with AutoRecall
|
|
313
|
+
|
|
314
|
+
|
|
210
315
|
# ---------------------------------------------------------------------------
|
|
211
316
|
# Master Config
|
|
212
317
|
# ---------------------------------------------------------------------------
|
|
@@ -229,6 +334,13 @@ class SLMConfig:
|
|
|
229
334
|
encoding: EncodingConfig = field(default_factory=EncodingConfig)
|
|
230
335
|
retrieval: RetrievalConfig = field(default_factory=RetrievalConfig)
|
|
231
336
|
math: MathConfig = field(default_factory=MathConfig)
|
|
337
|
+
temporal_validator: TemporalValidatorConfig = field(
|
|
338
|
+
default_factory=TemporalValidatorConfig,
|
|
339
|
+
)
|
|
340
|
+
auto_invoke: AutoInvokeConfig = field(default_factory=AutoInvokeConfig)
|
|
341
|
+
consolidation: ConsolidationConfig = field(
|
|
342
|
+
default_factory=ConsolidationConfig,
|
|
343
|
+
)
|
|
232
344
|
|
|
233
345
|
def __post_init__(self) -> None:
|
|
234
346
|
if self.db_path is None:
|
|
@@ -395,6 +507,7 @@ class SLMConfig:
|
|
|
395
507
|
bm25=1.2,
|
|
396
508
|
entity_graph=1.3,
|
|
397
509
|
temporal=1.0,
|
|
510
|
+
spreading_activation=1.2, # Phase 3: SA boost in Mode C
|
|
398
511
|
),
|
|
399
512
|
retrieval=RetrievalConfig(
|
|
400
513
|
use_cross_encoder=True,
|