memorymaster 3.26.1__tar.gz → 4.0.0__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.
- memorymaster-4.0.0/PKG-INFO +307 -0
- memorymaster-4.0.0/README.md +261 -0
- memorymaster-4.0.0/memorymaster/__init__.py +5 -0
- memorymaster-4.0.0/memorymaster/__main__.py +3 -0
- memorymaster-4.0.0/memorymaster/_storage_lifecycle.py +11 -0
- memorymaster-4.0.0/memorymaster/_storage_read.py +11 -0
- memorymaster-4.0.0/memorymaster/_storage_schema.py +11 -0
- memorymaster-4.0.0/memorymaster/_storage_shared.py +11 -0
- memorymaster-4.0.0/memorymaster/_storage_sources.py +11 -0
- memorymaster-4.0.0/memorymaster/_storage_write_claims.py +11 -0
- memorymaster-4.0.0/memorymaster/access_control.py +11 -0
- memorymaster-4.0.0/memorymaster/action_exporters.py +11 -0
- memorymaster-4.0.0/memorymaster/action_extractor.py +11 -0
- memorymaster-4.0.0/memorymaster/atlas_claim_extractor.py +11 -0
- memorymaster-4.0.0/memorymaster/atlas_contract.py +11 -0
- memorymaster-4.0.0/memorymaster/auto_extractor.py +11 -0
- memorymaster-4.0.0/memorymaster/auto_resolver.py +11 -0
- memorymaster-4.0.0/memorymaster/bridges/__init__.py +6 -0
- memorymaster-4.0.0/memorymaster/bridges/action_extractor.py +212 -0
- memorymaster-4.0.0/memorymaster/bridges/atlas_claim_extractor.py +162 -0
- memorymaster-4.0.0/memorymaster/bridges/db_merge.py +425 -0
- memorymaster-4.0.0/memorymaster/bridges/delta_sync.py +175 -0
- memorymaster-4.0.0/memorymaster/bridges/dream_bridge.py +806 -0
- memorymaster-4.0.0/memorymaster/bridges/federated_graphify.py +160 -0
- memorymaster-4.0.0/memorymaster/bridges/media_processing.py +199 -0
- memorymaster-4.0.0/memorymaster/bridges/media_providers.py +256 -0
- memorymaster-4.0.0/memorymaster/bridges/qmd_bridge.py +136 -0
- memorymaster-4.0.0/memorymaster/candidate_dedupe.py +11 -0
- memorymaster-4.0.0/memorymaster/claim_edges.py +11 -0
- memorymaster-4.0.0/memorymaster/claim_verifier.py +11 -0
- memorymaster-4.0.0/memorymaster/cli.py +14 -0
- memorymaster-4.0.0/memorymaster/cli_handlers_basic.py +11 -0
- memorymaster-4.0.0/memorymaster/cli_handlers_curation.py +11 -0
- memorymaster-4.0.0/memorymaster/cli_handlers_integrity.py +11 -0
- memorymaster-4.0.0/memorymaster/cli_helpers.py +11 -0
- memorymaster-4.0.0/memorymaster/closets.py +11 -0
- memorymaster-4.0.0/memorymaster/config.py +11 -0
- memorymaster-4.0.0/memorymaster/config_templates/codex-agents-md-append.md +56 -0
- memorymaster-4.0.0/memorymaster/config_templates/hooks/memorymaster-auto-ingest.py +332 -0
- memorymaster-4.0.0/memorymaster/config_templates/hooks/memorymaster-dream-sync.py +40 -0
- memorymaster-4.0.0/memorymaster/config_templates/hooks/memorymaster-recall.py +40 -0
- memorymaster-4.0.0/memorymaster/config_templates/hooks/memorymaster-steward-cycle.py +75 -0
- memorymaster-4.0.0/memorymaster/conflict_resolver.py +11 -0
- memorymaster-4.0.0/memorymaster/connectors/__init__.py +13 -0
- memorymaster-4.0.0/memorymaster/context_hook.py +11 -0
- memorymaster-4.0.0/memorymaster/context_optimizer.py +11 -0
- memorymaster-4.0.0/memorymaster/contradiction_probe.py +11 -0
- memorymaster-4.0.0/memorymaster/core/__init__.py +7 -0
- memorymaster-4.0.0/memorymaster/core/access_control.py +126 -0
- memorymaster-4.0.0/memorymaster/core/config.py +451 -0
- memorymaster-4.0.0/memorymaster/core/hook_log.py +65 -0
- memorymaster-4.0.0/memorymaster/core/intake_policy.py +351 -0
- memorymaster-4.0.0/memorymaster/core/key_rotator.py +270 -0
- memorymaster-4.0.0/memorymaster/core/lifecycle.py +83 -0
- memorymaster-4.0.0/memorymaster/core/llm_budget.py +190 -0
- memorymaster-4.0.0/memorymaster/core/llm_provider.py +698 -0
- memorymaster-4.0.0/memorymaster/core/observability.py +197 -0
- memorymaster-4.0.0/memorymaster/core/plugins.py +127 -0
- memorymaster-4.0.0/memorymaster/core/policy.py +133 -0
- memorymaster-4.0.0/memorymaster/core/security.py +558 -0
- memorymaster-4.0.0/memorymaster/core/service.py +2040 -0
- memorymaster-4.0.0/memorymaster/core/spool.py +201 -0
- memorymaster-4.0.0/memorymaster/core/webhook.py +172 -0
- memorymaster-4.0.0/memorymaster/daily_notes.py +11 -0
- memorymaster-4.0.0/memorymaster/dashboard.py +14 -0
- memorymaster-4.0.0/memorymaster/dashboard_auth.py +11 -0
- memorymaster-4.0.0/memorymaster/dashboard_integrity.py +11 -0
- memorymaster-4.0.0/memorymaster/db_merge.py +11 -0
- memorymaster-4.0.0/memorymaster/delta_sync.py +11 -0
- memorymaster-4.0.0/memorymaster/dream_bridge.py +11 -0
- memorymaster-4.0.0/memorymaster/embeddings.py +11 -0
- memorymaster-4.0.0/memorymaster/entity_extractor.py +11 -0
- memorymaster-4.0.0/memorymaster/entity_graph.py +11 -0
- memorymaster-4.0.0/memorymaster/entity_registry.py +11 -0
- memorymaster-4.0.0/memorymaster/federated_graphify.py +11 -0
- memorymaster-4.0.0/memorymaster/feedback.py +11 -0
- memorymaster-4.0.0/memorymaster/govern/__init__.py +7 -0
- memorymaster-4.0.0/memorymaster/govern/auto_resolver.py +253 -0
- memorymaster-4.0.0/memorymaster/govern/candidate_dedupe.py +301 -0
- memorymaster-4.0.0/memorymaster/govern/claim_verifier.py +169 -0
- memorymaster-4.0.0/memorymaster/govern/conflict_resolver.py +420 -0
- memorymaster-4.0.0/memorymaster/govern/contradiction_probe.py +536 -0
- memorymaster-4.0.0/memorymaster/govern/feedback.py +246 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/compact_summaries.py +444 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/compactor.py +295 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/daydream_ingest.py +375 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/decay.py +131 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/dedup.py +398 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/deterministic.py +404 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/entity_graph_export.py +210 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/fk_repair.py +331 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/integrity.py +346 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/qdrant_reconcile.py +166 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/spool_drain.py +237 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/staleness.py +227 -0
- memorymaster-4.0.0/memorymaster/govern/jobs/validator.py +252 -0
- memorymaster-4.0.0/memorymaster/govern/llm_budget.py +15 -0
- memorymaster-4.0.0/memorymaster/govern/llm_steward.py +1028 -0
- memorymaster-4.0.0/memorymaster/govern/review.py +121 -0
- memorymaster-4.0.0/memorymaster/govern/rl_trainer.py +131 -0
- memorymaster-4.0.0/memorymaster/govern/scheduler.py +107 -0
- memorymaster-4.0.0/memorymaster/govern/steward.py +1740 -0
- memorymaster-4.0.0/memorymaster/govern/steward_classifier.py +152 -0
- memorymaster-4.0.0/memorymaster/govern/steward_features.py +344 -0
- memorymaster-4.0.0/memorymaster/govern/verbatim_cleanup.py +206 -0
- memorymaster-4.0.0/memorymaster/graph_store.py +11 -0
- memorymaster-4.0.0/memorymaster/hook_log.py +11 -0
- memorymaster-4.0.0/memorymaster/jobs/__init__.py +33 -0
- memorymaster-4.0.0/memorymaster/key_rotator.py +11 -0
- memorymaster-4.0.0/memorymaster/knowledge/__init__.py +6 -0
- memorymaster-4.0.0/memorymaster/knowledge/closets.py +260 -0
- memorymaster-4.0.0/memorymaster/knowledge/daily_notes.py +191 -0
- memorymaster-4.0.0/memorymaster/knowledge/entity_extractor.py +767 -0
- memorymaster-4.0.0/memorymaster/knowledge/entity_graph.py +350 -0
- memorymaster-4.0.0/memorymaster/knowledge/entity_registry.py +474 -0
- memorymaster-4.0.0/memorymaster/knowledge/rule_export.py +161 -0
- memorymaster-4.0.0/memorymaster/knowledge/rule_miner.py +611 -0
- memorymaster-4.0.0/memorymaster/knowledge/transcript_miner.py +160 -0
- memorymaster-4.0.0/memorymaster/knowledge/vault_curator.py +295 -0
- memorymaster-4.0.0/memorymaster/knowledge/vault_exporter.py +223 -0
- memorymaster-4.0.0/memorymaster/knowledge/vault_linter.py +451 -0
- memorymaster-4.0.0/memorymaster/knowledge/vault_query_capture.py +113 -0
- memorymaster-4.0.0/memorymaster/knowledge/wiki_engine.py +985 -0
- memorymaster-4.0.0/memorymaster/knowledge/wiki_similarity.py +621 -0
- memorymaster-4.0.0/memorymaster/knowledge/wiki_suggest.py +276 -0
- memorymaster-4.0.0/memorymaster/knowledge/wiki_validate.py +304 -0
- memorymaster-4.0.0/memorymaster/lifecycle.py +11 -0
- memorymaster-4.0.0/memorymaster/llm_budget.py +11 -0
- memorymaster-4.0.0/memorymaster/llm_provider.py +11 -0
- memorymaster-4.0.0/memorymaster/llm_rerank.py +11 -0
- memorymaster-4.0.0/memorymaster/llm_steward.py +11 -0
- memorymaster-4.0.0/memorymaster/mcp_path_policy.py +11 -0
- memorymaster-4.0.0/memorymaster/mcp_server.py +14 -0
- memorymaster-4.0.0/memorymaster/mcp_usage.py +11 -0
- memorymaster-4.0.0/memorymaster/media_processing.py +11 -0
- memorymaster-4.0.0/memorymaster/media_providers.py +11 -0
- memorymaster-4.0.0/memorymaster/metrics_exporter.py +11 -0
- memorymaster-4.0.0/memorymaster/migrations/__init__.py +17 -0
- memorymaster-4.0.0/memorymaster/models.py +11 -0
- memorymaster-4.0.0/memorymaster/observability.py +11 -0
- memorymaster-4.0.0/memorymaster/operator.py +11 -0
- memorymaster-4.0.0/memorymaster/operator_queue.py +11 -0
- memorymaster-4.0.0/memorymaster/plugins.py +11 -0
- memorymaster-4.0.0/memorymaster/policy.py +11 -0
- memorymaster-4.0.0/memorymaster/postgres_store.py +11 -0
- memorymaster-4.0.0/memorymaster/qdrant_backend.py +11 -0
- memorymaster-4.0.0/memorymaster/qdrant_recall_fallback.py +11 -0
- memorymaster-4.0.0/memorymaster/qmd_bridge.py +11 -0
- memorymaster-4.0.0/memorymaster/query_cache.py +11 -0
- memorymaster-4.0.0/memorymaster/query_classifier.py +11 -0
- memorymaster-4.0.0/memorymaster/query_expansion.py +11 -0
- memorymaster-4.0.0/memorymaster/recall/__init__.py +7 -0
- memorymaster-4.0.0/memorymaster/recall/claim_edges.py +285 -0
- memorymaster-4.0.0/memorymaster/recall/context_hook.py +2185 -0
- memorymaster-4.0.0/memorymaster/recall/context_optimizer.py +395 -0
- memorymaster-4.0.0/memorymaster/recall/embeddings.py +217 -0
- memorymaster-4.0.0/memorymaster/recall/llm_rerank.py +201 -0
- memorymaster-4.0.0/memorymaster/recall/qdrant_backend.py +379 -0
- memorymaster-4.0.0/memorymaster/recall/qdrant_recall_fallback.py +305 -0
- memorymaster-4.0.0/memorymaster/recall/query_cache.py +182 -0
- memorymaster-4.0.0/memorymaster/recall/query_classifier.py +73 -0
- memorymaster-4.0.0/memorymaster/recall/query_expansion.py +184 -0
- memorymaster-4.0.0/memorymaster/recall/recall_fusion.py +79 -0
- memorymaster-4.0.0/memorymaster/recall/recall_tokenizer.py +329 -0
- memorymaster-4.0.0/memorymaster/recall/retrieval.py +528 -0
- memorymaster-4.0.0/memorymaster/recall/verbatim_recall.py +296 -0
- memorymaster-4.0.0/memorymaster/recall/verbatim_store.py +563 -0
- memorymaster-4.0.0/memorymaster/recall_fusion.py +11 -0
- memorymaster-4.0.0/memorymaster/recall_tokenizer.py +11 -0
- memorymaster-4.0.0/memorymaster/retrieval.py +11 -0
- memorymaster-4.0.0/memorymaster/retry.py +11 -0
- memorymaster-4.0.0/memorymaster/review.py +11 -0
- memorymaster-4.0.0/memorymaster/rl_trainer.py +11 -0
- memorymaster-4.0.0/memorymaster/rule_export.py +11 -0
- memorymaster-4.0.0/memorymaster/rule_miner.py +11 -0
- memorymaster-4.0.0/memorymaster/rules.py +11 -0
- memorymaster-4.0.0/memorymaster/scheduler.py +11 -0
- memorymaster-4.0.0/memorymaster/schema.py +11 -0
- memorymaster-4.0.0/memorymaster/schema_postgres.sql +335 -0
- memorymaster-4.0.0/memorymaster/scope_utils.py +11 -0
- memorymaster-4.0.0/memorymaster/security.py +11 -0
- memorymaster-4.0.0/memorymaster/service.py +11 -0
- memorymaster-4.0.0/memorymaster/session_tracker.py +11 -0
- memorymaster-4.0.0/memorymaster/setup_hooks.py +14 -0
- memorymaster-4.0.0/memorymaster/snapshot.py +11 -0
- memorymaster-4.0.0/memorymaster/spool.py +11 -0
- memorymaster-4.0.0/memorymaster/steward.py +11 -0
- memorymaster-4.0.0/memorymaster/steward_classifier.py +11 -0
- memorymaster-4.0.0/memorymaster/steward_features.py +11 -0
- memorymaster-4.0.0/memorymaster/storage.py +11 -0
- memorymaster-4.0.0/memorymaster/store_factory.py +11 -0
- memorymaster-4.0.0/memorymaster/stores/__init__.py +8 -0
- memorymaster-4.0.0/memorymaster/stores/_storage_lifecycle.py +643 -0
- memorymaster-4.0.0/memorymaster/stores/_storage_read.py +701 -0
- memorymaster-4.0.0/memorymaster/stores/_storage_schema.py +879 -0
- memorymaster-4.0.0/memorymaster/stores/_storage_shared.py +140 -0
- memorymaster-4.0.0/memorymaster/stores/_storage_sources.py +1006 -0
- memorymaster-4.0.0/memorymaster/stores/_storage_write_claims.py +374 -0
- memorymaster-4.0.0/memorymaster/stores/migrations/0002_miner_state.py +38 -0
- memorymaster-4.0.0/memorymaster/stores/migrations/0003_contradiction_verdicts.py +42 -0
- memorymaster-4.0.0/memorymaster/stores/migrations/0006_verbatim_session_content_index.py +59 -0
- memorymaster-4.0.0/memorymaster/stores/migrations/0007_rule_stats.py +54 -0
- memorymaster-4.0.0/memorymaster/stores/migrations/__init__.py +48 -0
- memorymaster-4.0.0/memorymaster/stores/migrations/runner.py +268 -0
- memorymaster-4.0.0/memorymaster/stores/postgres_store.py +2613 -0
- memorymaster-4.0.0/memorymaster/stores/snapshot.py +487 -0
- memorymaster-4.0.0/memorymaster/stores/storage.py +181 -0
- memorymaster-4.0.0/memorymaster/stores/store_factory.py +27 -0
- memorymaster-4.0.0/memorymaster/surfaces/__init__.py +6 -0
- memorymaster-4.0.0/memorymaster/surfaces/cli.py +671 -0
- memorymaster-4.0.0/memorymaster/surfaces/cli_handlers_basic.py +1567 -0
- memorymaster-4.0.0/memorymaster/surfaces/cli_handlers_curation.py +1062 -0
- memorymaster-4.0.0/memorymaster/surfaces/cli_handlers_integrity.py +159 -0
- memorymaster-4.0.0/memorymaster/surfaces/cli_helpers.py +151 -0
- memorymaster-4.0.0/memorymaster/surfaces/dashboard.py +1670 -0
- memorymaster-4.0.0/memorymaster/surfaces/dashboard_integrity.py +85 -0
- memorymaster-4.0.0/memorymaster/surfaces/mcp_server.py +1588 -0
- memorymaster-4.0.0/memorymaster/surfaces/mcp_usage.py +42 -0
- memorymaster-4.0.0/memorymaster/surfaces/operator.py +1453 -0
- memorymaster-4.0.0/memorymaster/surfaces/operator_queue.py +330 -0
- memorymaster-4.0.0/memorymaster/surfaces/session_tracker.py +129 -0
- memorymaster-4.0.0/memorymaster/surfaces/setup_hooks.py +432 -0
- memorymaster-4.0.0/memorymaster/transcript_miner.py +11 -0
- memorymaster-4.0.0/memorymaster/turn_schema.py +11 -0
- memorymaster-4.0.0/memorymaster/vault_bases.py +11 -0
- memorymaster-4.0.0/memorymaster/vault_curator.py +11 -0
- memorymaster-4.0.0/memorymaster/vault_exporter.py +11 -0
- memorymaster-4.0.0/memorymaster/vault_linter.py +11 -0
- memorymaster-4.0.0/memorymaster/vault_log.py +11 -0
- memorymaster-4.0.0/memorymaster/vault_query_capture.py +11 -0
- memorymaster-4.0.0/memorymaster/vault_synthesis.py +11 -0
- memorymaster-4.0.0/memorymaster/verbatim_cleanup.py +11 -0
- memorymaster-4.0.0/memorymaster/verbatim_recall.py +11 -0
- memorymaster-4.0.0/memorymaster/verbatim_store.py +11 -0
- memorymaster-4.0.0/memorymaster/webhook.py +11 -0
- memorymaster-4.0.0/memorymaster/wiki_engine.py +11 -0
- memorymaster-4.0.0/memorymaster/wiki_freshness.py +11 -0
- memorymaster-4.0.0/memorymaster/wiki_similarity.py +11 -0
- memorymaster-4.0.0/memorymaster/wiki_suggest.py +11 -0
- memorymaster-4.0.0/memorymaster/wiki_validate.py +11 -0
- memorymaster-4.0.0/memorymaster.egg-info/PKG-INFO +307 -0
- memorymaster-4.0.0/memorymaster.egg-info/SOURCES.txt +518 -0
- memorymaster-4.0.0/memorymaster.egg-info/entry_points.txt +6 -0
- memorymaster-4.0.0/memorymaster.egg-info/top_level.txt +1 -0
- memorymaster-4.0.0/pyproject.toml +86 -0
- memorymaster-4.0.0/tests/test_access_control.py +331 -0
- memorymaster-4.0.0/tests/test_action_exporters.py +68 -0
- memorymaster-4.0.0/tests/test_action_extractor.py +77 -0
- memorymaster-4.0.0/tests/test_agent_contract_roundtrip.py +267 -0
- memorymaster-4.0.0/tests/test_ambient_spool.py +483 -0
- memorymaster-4.0.0/tests/test_atlas_claim_extractor.py +61 -0
- memorymaster-4.0.0/tests/test_atlas_contract.py +1010 -0
- memorymaster-4.0.0/tests/test_atlas_source_schema.py +181 -0
- memorymaster-4.0.0/tests/test_auto_extractor.py +309 -0
- memorymaster-4.0.0/tests/test_auto_ingest_hook_citations.py +102 -0
- memorymaster-4.0.0/tests/test_auto_resolver.py +134 -0
- memorymaster-4.0.0/tests/test_auto_validate.py +197 -0
- memorymaster-4.0.0/tests/test_backend_parity.py +167 -0
- memorymaster-4.0.0/tests/test_bench_answer_prompt.py +81 -0
- memorymaster-4.0.0/tests/test_bm25_per_field.py +222 -0
- memorymaster-4.0.0/tests/test_calibration.py +134 -0
- memorymaster-4.0.0/tests/test_calibration_priors_applied.py +25 -0
- memorymaster-4.0.0/tests/test_candidate_dedupe.py +296 -0
- memorymaster-4.0.0/tests/test_claim_edges.py +167 -0
- memorymaster-4.0.0/tests/test_claim_links.py +288 -0
- memorymaster-4.0.0/tests/test_claim_paths.py +306 -0
- memorymaster-4.0.0/tests/test_claim_type_ranking.py +84 -0
- memorymaster-4.0.0/tests/test_cli_dry_run.py +142 -0
- memorymaster-4.0.0/tests/test_cli_handlers_extra.py +308 -0
- memorymaster-4.0.0/tests/test_cli_json_flag.py +150 -0
- memorymaster-4.0.0/tests/test_cli_ready.py +103 -0
- memorymaster-4.0.0/tests/test_cli_review_queue.py +77 -0
- memorymaster-4.0.0/tests/test_cli_subcommands.py +189 -0
- memorymaster-4.0.0/tests/test_closets.py +143 -0
- memorymaster-4.0.0/tests/test_closets_recall_integration.py +50 -0
- memorymaster-4.0.0/tests/test_compact_summaries.py +284 -0
- memorymaster-4.0.0/tests/test_compact_summaries_sensitivity.py +69 -0
- memorymaster-4.0.0/tests/test_compaction_trace.py +141 -0
- memorymaster-4.0.0/tests/test_compactor_artifact_order.py +40 -0
- memorymaster-4.0.0/tests/test_config.py +184 -0
- memorymaster-4.0.0/tests/test_conflict_resolver.py +457 -0
- memorymaster-4.0.0/tests/test_conflict_resolver_extra.py +415 -0
- memorymaster-4.0.0/tests/test_connection_retry.py +127 -0
- memorymaster-4.0.0/tests/test_context_hook.py +260 -0
- memorymaster-4.0.0/tests/test_context_hook_extra.py +643 -0
- memorymaster-4.0.0/tests/test_context_optimizer.py +200 -0
- memorymaster-4.0.0/tests/test_context_optimizer_provider.py +145 -0
- memorymaster-4.0.0/tests/test_contradiction_probe.py +388 -0
- memorymaster-4.0.0/tests/test_dashboard.py +344 -0
- memorymaster-4.0.0/tests/test_dashboard_auth.py +290 -0
- memorymaster-4.0.0/tests/test_dashboard_coverage.py +389 -0
- memorymaster-4.0.0/tests/test_dashboard_latency.py +111 -0
- memorymaster-4.0.0/tests/test_dashboard_lineage.py +70 -0
- memorymaster-4.0.0/tests/test_dashboard_review_queue.py +143 -0
- memorymaster-4.0.0/tests/test_daydream_ingest.py +123 -0
- memorymaster-4.0.0/tests/test_db_merge_audit_fixes.py +184 -0
- memorymaster-4.0.0/tests/test_db_merge_confidence_conflict.py +71 -0
- memorymaster-4.0.0/tests/test_db_merge_coverage_v2.py +260 -0
- memorymaster-4.0.0/tests/test_db_merge_extra.py +237 -0
- memorymaster-4.0.0/tests/test_decay_coverage.py +212 -0
- memorymaster-4.0.0/tests/test_decay_respects_pinned.py +120 -0
- memorymaster-4.0.0/tests/test_dedup.py +321 -0
- memorymaster-4.0.0/tests/test_dedup_cli.py +120 -0
- memorymaster-4.0.0/tests/test_dedup_conflict_disambiguation.py +52 -0
- memorymaster-4.0.0/tests/test_delta_sync.py +261 -0
- memorymaster-4.0.0/tests/test_delta_sync_extra.py +392 -0
- memorymaster-4.0.0/tests/test_deterministic_predicates.py +72 -0
- memorymaster-4.0.0/tests/test_dream_bridge_coverage_v2.py +186 -0
- memorymaster-4.0.0/tests/test_dream_bridge_extra.py +229 -0
- memorymaster-4.0.0/tests/test_dream_bridge_sensitivity.py +76 -0
- memorymaster-4.0.0/tests/test_dream_bridge_subject_sensitivity.py +83 -0
- memorymaster-4.0.0/tests/test_embeddings_coverage.py +127 -0
- memorymaster-4.0.0/tests/test_embeddings_degraded_signal.py +53 -0
- memorymaster-4.0.0/tests/test_entity_extractor.py +150 -0
- memorymaster-4.0.0/tests/test_entity_extractor_llm.py +296 -0
- memorymaster-4.0.0/tests/test_entity_graph.py +309 -0
- memorymaster-4.0.0/tests/test_entity_graph_export.py +147 -0
- memorymaster-4.0.0/tests/test_entity_new_kinds.py +241 -0
- memorymaster-4.0.0/tests/test_entity_regex_v3.py +71 -0
- memorymaster-4.0.0/tests/test_entity_registry.py +406 -0
- memorymaster-4.0.0/tests/test_entity_registry_extra.py +271 -0
- memorymaster-4.0.0/tests/test_entity_registry_merge_atomicity.py +94 -0
- memorymaster-4.0.0/tests/test_eval_harness.py +291 -0
- memorymaster-4.0.0/tests/test_events_schema.py +243 -0
- memorymaster-4.0.0/tests/test_extract_llm_ollama.py +140 -0
- memorymaster-4.0.0/tests/test_federated_graphify_mcp.py +136 -0
- memorymaster-4.0.0/tests/test_federated_query_safety.py +91 -0
- memorymaster-4.0.0/tests/test_feedback.py +278 -0
- memorymaster-4.0.0/tests/test_filter_bypass_hardening.py +267 -0
- memorymaster-4.0.0/tests/test_fk_repair.py +236 -0
- memorymaster-4.0.0/tests/test_floor_gate.py +90 -0
- memorymaster-4.0.0/tests/test_fts5_search.py +169 -0
- memorymaster-4.0.0/tests/test_graph_distance.py +233 -0
- memorymaster-4.0.0/tests/test_graph_harvest.py +348 -0
- memorymaster-4.0.0/tests/test_graph_store.py +322 -0
- memorymaster-4.0.0/tests/test_handler_regressions.py +158 -0
- memorymaster-4.0.0/tests/test_human_id.py +282 -0
- memorymaster-4.0.0/tests/test_initdb_fastpath.py +215 -0
- memorymaster-4.0.0/tests/test_intake_policy.py +467 -0
- memorymaster-4.0.0/tests/test_integration_workflows.py +534 -0
- memorymaster-4.0.0/tests/test_integrity_job.py +346 -0
- memorymaster-4.0.0/tests/test_integrity_metrics.py +298 -0
- memorymaster-4.0.0/tests/test_key_rotator.py +165 -0
- memorymaster-4.0.0/tests/test_lifecycle.py +75 -0
- memorymaster-4.0.0/tests/test_lifecycle_extra.py +314 -0
- memorymaster-4.0.0/tests/test_lifecycle_supersede_invariant.py +87 -0
- memorymaster-4.0.0/tests/test_llm_budget.py +233 -0
- memorymaster-4.0.0/tests/test_llm_concurrency_fixes.py +255 -0
- memorymaster-4.0.0/tests/test_llm_fallback.py +234 -0
- memorymaster-4.0.0/tests/test_llm_provider_claude_cli.py +186 -0
- memorymaster-4.0.0/tests/test_llm_provider_extra.py +716 -0
- memorymaster-4.0.0/tests/test_llm_provider_key_rotation.py +80 -0
- memorymaster-4.0.0/tests/test_llm_steward_coverage.py +113 -0
- memorymaster-4.0.0/tests/test_llm_steward_key_rotation.py +266 -0
- memorymaster-4.0.0/tests/test_llm_steward_scope.py +191 -0
- memorymaster-4.0.0/tests/test_mcp_filter_bypass.py +91 -0
- memorymaster-4.0.0/tests/test_mcp_helpers.py +412 -0
- memorymaster-4.0.0/tests/test_mcp_path_policy.py +206 -0
- memorymaster-4.0.0/tests/test_mcp_rate_limit.py +101 -0
- memorymaster-4.0.0/tests/test_mcp_server_security_cluster.py +187 -0
- memorymaster-4.0.0/tests/test_mcp_server_validation.py +49 -0
- memorymaster-4.0.0/tests/test_mcp_usage.py +95 -0
- memorymaster-4.0.0/tests/test_media_processing.py +86 -0
- memorymaster-4.0.0/tests/test_meta_decisions.py +125 -0
- memorymaster-4.0.0/tests/test_metrics_exporter.py +112 -0
- memorymaster-4.0.0/tests/test_migrations.py +292 -0
- memorymaster-4.0.0/tests/test_misc_correctness_cluster.py +92 -0
- memorymaster-4.0.0/tests/test_observability.py +47 -0
- memorymaster-4.0.0/tests/test_observability_extra.py +335 -0
- memorymaster-4.0.0/tests/test_obsidian_mind_patterns.py +386 -0
- memorymaster-4.0.0/tests/test_open_conn.py +289 -0
- memorymaster-4.0.0/tests/test_operator.py +379 -0
- memorymaster-4.0.0/tests/test_operator_queue.py +498 -0
- memorymaster-4.0.0/tests/test_p2_cycle_cuts.py +256 -0
- memorymaster-4.0.0/tests/test_plugins.py +284 -0
- memorymaster-4.0.0/tests/test_policy_coverage.py +56 -0
- memorymaster-4.0.0/tests/test_policy_mode_env.py +91 -0
- memorymaster-4.0.0/tests/test_postgres_parity.py +735 -0
- memorymaster-4.0.0/tests/test_qdrant_backend.py +320 -0
- memorymaster-4.0.0/tests/test_qdrant_reconcile.py +266 -0
- memorymaster-4.0.0/tests/test_qmd_bridge.py +188 -0
- memorymaster-4.0.0/tests/test_qrels_regression.py +88 -0
- memorymaster-4.0.0/tests/test_query_cache.py +192 -0
- memorymaster-4.0.0/tests/test_query_classifier.py +284 -0
- memorymaster-4.0.0/tests/test_query_expansion.py +264 -0
- memorymaster-4.0.0/tests/test_read_visibility_filter.py +156 -0
- memorymaster-4.0.0/tests/test_recall_analysis.py +306 -0
- memorymaster-4.0.0/tests/test_recall_entity_fanout.py +459 -0
- memorymaster-4.0.0/tests/test_recall_fusion.py +94 -0
- memorymaster-4.0.0/tests/test_recall_latency.py +275 -0
- memorymaster-4.0.0/tests/test_recall_precision_at_5.py +261 -0
- memorymaster-4.0.0/tests/test_recall_tokenizer.py +302 -0
- memorymaster-4.0.0/tests/test_recall_vector_fallback.py +306 -0
- memorymaster-4.0.0/tests/test_reliability_hardening.py +120 -0
- memorymaster-4.0.0/tests/test_resolvers_concurrent_supersede.py +148 -0
- memorymaster-4.0.0/tests/test_retrieval_extra.py +320 -0
- memorymaster-4.0.0/tests/test_retrieval_profile.py +140 -0
- memorymaster-4.0.0/tests/test_retrieval_profiles.py +142 -0
- memorymaster-4.0.0/tests/test_retrieval_rrf_tiebreaker.py +84 -0
- memorymaster-4.0.0/tests/test_retrieval_weights.py +69 -0
- memorymaster-4.0.0/tests/test_review.py +113 -0
- memorymaster-4.0.0/tests/test_rl_trainer.py +232 -0
- memorymaster-4.0.0/tests/test_ro_recall.py +258 -0
- memorymaster-4.0.0/tests/test_rrf_auto_gate.py +362 -0
- memorymaster-4.0.0/tests/test_rule_claims.py +181 -0
- memorymaster-4.0.0/tests/test_rule_confidence_bootstrap.py +211 -0
- memorymaster-4.0.0/tests/test_rule_miner.py +366 -0
- memorymaster-4.0.0/tests/test_rules_export.py +152 -0
- memorymaster-4.0.0/tests/test_scheduler.py +160 -0
- memorymaster-4.0.0/tests/test_schema.py +14 -0
- memorymaster-4.0.0/tests/test_scope_boost.py +298 -0
- memorymaster-4.0.0/tests/test_scope_utils.py +112 -0
- memorymaster-4.0.0/tests/test_security_access.py +219 -0
- memorymaster-4.0.0/tests/test_security_patterns.py +249 -0
- memorymaster-4.0.0/tests/test_sensitivity_filter_adversarial.py +93 -0
- memorymaster-4.0.0/tests/test_sensitivity_filter_adversarial_v2.py +153 -0
- memorymaster-4.0.0/tests/test_sensitivity_filter_t07.py +104 -0
- memorymaster-4.0.0/tests/test_service_coverage.py +263 -0
- memorymaster-4.0.0/tests/test_service_embedding_toctou.py +109 -0
- memorymaster-4.0.0/tests/test_session_tracker.py +337 -0
- memorymaster-4.0.0/tests/test_snapshot.py +302 -0
- memorymaster-4.0.0/tests/test_snapshot_roundtrip.py +168 -0
- memorymaster-4.0.0/tests/test_spool.py +302 -0
- memorymaster-4.0.0/tests/test_sqlite_core.py +264 -0
- memorymaster-4.0.0/tests/test_staleness.py +335 -0
- memorymaster-4.0.0/tests/test_stealth_mode.py +135 -0
- memorymaster-4.0.0/tests/test_steward.py +348 -0
- memorymaster-4.0.0/tests/test_steward_classifier.py +262 -0
- memorymaster-4.0.0/tests/test_steward_contradiction_phase.py +277 -0
- memorymaster-4.0.0/tests/test_steward_daydream_hook.py +116 -0
- memorymaster-4.0.0/tests/test_steward_features.py +174 -0
- memorymaster-4.0.0/tests/test_steward_features_v3.py +255 -0
- memorymaster-4.0.0/tests/test_steward_resolution_parity.py +219 -0
- memorymaster-4.0.0/tests/test_steward_resolvers_audit_fixes.py +242 -0
- memorymaster-4.0.0/tests/test_steward_rule_mining.py +202 -0
- memorymaster-4.0.0/tests/test_storage_concurrency.py +112 -0
- memorymaster-4.0.0/tests/test_storage_extra.py +154 -0
- memorymaster-4.0.0/tests/test_storage_internals_audit.py +124 -0
- memorymaster-4.0.0/tests/test_storage_parity.py +287 -0
- memorymaster-4.0.0/tests/test_store_factory.py +35 -0
- memorymaster-4.0.0/tests/test_tenant_isolation.py +167 -0
- memorymaster-4.0.0/tests/test_transcript_miner_sensitivity.py +56 -0
- memorymaster-4.0.0/tests/test_turn_schema.py +92 -0
- memorymaster-4.0.0/tests/test_two_pass_recall.py +86 -0
- memorymaster-4.0.0/tests/test_v311_fixes.py +172 -0
- memorymaster-4.0.0/tests/test_v313_e2e.py +265 -0
- memorymaster-4.0.0/tests/test_v313_run_cycle_dedupe.py +176 -0
- memorymaster-4.0.0/tests/test_v390_e2e.py +151 -0
- memorymaster-4.0.0/tests/test_v391_strict_warnings.py +73 -0
- memorymaster-4.0.0/tests/test_vault_exporter.py +381 -0
- memorymaster-4.0.0/tests/test_vault_linter_extra.py +298 -0
- memorymaster-4.0.0/tests/test_vault_linter_orphan.py +91 -0
- memorymaster-4.0.0/tests/test_vault_linter_weak_link.py +43 -0
- memorymaster-4.0.0/tests/test_vault_query_capture_scope.py +38 -0
- memorymaster-4.0.0/tests/test_vector_search.py +367 -0
- memorymaster-4.0.0/tests/test_verbatim_cleanup.py +232 -0
- memorymaster-4.0.0/tests/test_verbatim_dedup.py +228 -0
- memorymaster-4.0.0/tests/test_verbatim_perf_index.py +234 -0
- memorymaster-4.0.0/tests/test_verbatim_recall.py +321 -0
- memorymaster-4.0.0/tests/test_verbatim_store.py +67 -0
- memorymaster-4.0.0/tests/test_verbatim_store_pragmas.py +83 -0
- memorymaster-4.0.0/tests/test_verbatim_store_qdrant.py +148 -0
- memorymaster-4.0.0/tests/test_webhook.py +167 -0
- memorymaster-4.0.0/tests/test_webhook_hmac.py +216 -0
- memorymaster-4.0.0/tests/test_whatsapp_importer.py +106 -0
- memorymaster-4.0.0/tests/test_wiki_autopromote.py +101 -0
- memorymaster-4.0.0/tests/test_wiki_backfill_bindings_backend.py +94 -0
- memorymaster-4.0.0/tests/test_wiki_binding.py +182 -0
- memorymaster-4.0.0/tests/test_wiki_engine_absorb_fixes.py +187 -0
- memorymaster-4.0.0/tests/test_wiki_engine_extra.py +410 -0
- memorymaster-4.0.0/tests/test_wiki_engine_idempotency.py +170 -0
- memorymaster-4.0.0/tests/test_wiki_explored_and_contradictions.py +229 -0
- memorymaster-4.0.0/tests/test_wiki_freshness.py +284 -0
- memorymaster-4.0.0/tests/test_wiki_similarity_multiscope.py +272 -0
- memorymaster-4.0.0/tests/test_wiki_suggest.py +124 -0
- memorymaster-4.0.0/tests/test_wiki_validate_cli.py +193 -0
- memorymaster-4.0.0/tests/test_wiki_validate_desc_bound.py +30 -0
- memorymaster-3.26.1/PKG-INFO +0 -250
- memorymaster-3.26.1/README.md +0 -204
- memorymaster-3.26.1/artifacts/bm25-per-field-eval-harness.py +0 -309
- memorymaster-3.26.1/benchmarks/longmemeval_runner.py +0 -290
- memorymaster-3.26.1/benchmarks/longmemeval_vector_runner.py +0 -254
- memorymaster-3.26.1/benchmarks/perf_smoke.py +0 -338
- memorymaster-3.26.1/memorymaster/__init__.py +0 -5
- memorymaster-3.26.1/memorymaster/__main__.py +0 -3
- memorymaster-3.26.1/memorymaster/_storage_lifecycle.py +0 -624
- memorymaster-3.26.1/memorymaster/_storage_read.py +0 -659
- memorymaster-3.26.1/memorymaster/_storage_schema.py +0 -798
- memorymaster-3.26.1/memorymaster/_storage_shared.py +0 -41
- memorymaster-3.26.1/memorymaster/_storage_sources.py +0 -995
- memorymaster-3.26.1/memorymaster/_storage_write_claims.py +0 -374
- memorymaster-3.26.1/memorymaster/access_control.py +0 -126
- memorymaster-3.26.1/memorymaster/action_extractor.py +0 -212
- memorymaster-3.26.1/memorymaster/atlas_claim_extractor.py +0 -162
- memorymaster-3.26.1/memorymaster/auto_resolver.py +0 -226
- memorymaster-3.26.1/memorymaster/candidate_dedupe.py +0 -288
- memorymaster-3.26.1/memorymaster/claim_edges.py +0 -278
- memorymaster-3.26.1/memorymaster/claim_verifier.py +0 -169
- memorymaster-3.26.1/memorymaster/cli.py +0 -621
- memorymaster-3.26.1/memorymaster/cli_handlers_basic.py +0 -1473
- memorymaster-3.26.1/memorymaster/cli_handlers_curation.py +0 -1018
- memorymaster-3.26.1/memorymaster/cli_helpers.py +0 -151
- memorymaster-3.26.1/memorymaster/closets.py +0 -253
- memorymaster-3.26.1/memorymaster/config.py +0 -473
- memorymaster-3.26.1/memorymaster/config_templates/codex-agents-md-append.md +0 -35
- memorymaster-3.26.1/memorymaster/config_templates/hooks/memorymaster-auto-ingest.py +0 -259
- memorymaster-3.26.1/memorymaster/config_templates/hooks/memorymaster-dream-sync.py +0 -28
- memorymaster-3.26.1/memorymaster/config_templates/hooks/memorymaster-recall.py +0 -34
- memorymaster-3.26.1/memorymaster/config_templates/hooks/memorymaster-steward-cycle.py +0 -68
- memorymaster-3.26.1/memorymaster/conflict_resolver.py +0 -413
- memorymaster-3.26.1/memorymaster/context_hook.py +0 -2004
- memorymaster-3.26.1/memorymaster/context_optimizer.py +0 -395
- memorymaster-3.26.1/memorymaster/contradiction_probe.py +0 -520
- memorymaster-3.26.1/memorymaster/daily_notes.py +0 -186
- memorymaster-3.26.1/memorymaster/dashboard.py +0 -1538
- memorymaster-3.26.1/memorymaster/db_merge.py +0 -278
- memorymaster-3.26.1/memorymaster/delta_sync.py +0 -172
- memorymaster-3.26.1/memorymaster/dream_bridge.py +0 -704
- memorymaster-3.26.1/memorymaster/embeddings.py +0 -199
- memorymaster-3.26.1/memorymaster/entity_extractor.py +0 -767
- memorymaster-3.26.1/memorymaster/entity_graph.py +0 -313
- memorymaster-3.26.1/memorymaster/entity_registry.py +0 -456
- memorymaster-3.26.1/memorymaster/federated_graphify.py +0 -154
- memorymaster-3.26.1/memorymaster/feedback.py +0 -247
- memorymaster-3.26.1/memorymaster/hook_log.py +0 -65
- memorymaster-3.26.1/memorymaster/jobs/compact_summaries.py +0 -442
- memorymaster-3.26.1/memorymaster/jobs/compactor.py +0 -295
- memorymaster-3.26.1/memorymaster/jobs/daydream_ingest.py +0 -375
- memorymaster-3.26.1/memorymaster/jobs/decay.py +0 -131
- memorymaster-3.26.1/memorymaster/jobs/dedup.py +0 -398
- memorymaster-3.26.1/memorymaster/jobs/deterministic.py +0 -376
- memorymaster-3.26.1/memorymaster/jobs/entity_graph_export.py +0 -210
- memorymaster-3.26.1/memorymaster/jobs/staleness.py +0 -227
- memorymaster-3.26.1/memorymaster/jobs/validator.py +0 -233
- memorymaster-3.26.1/memorymaster/key_rotator.py +0 -176
- memorymaster-3.26.1/memorymaster/lifecycle.py +0 -72
- memorymaster-3.26.1/memorymaster/llm_budget.py +0 -190
- memorymaster-3.26.1/memorymaster/llm_provider.py +0 -622
- memorymaster-3.26.1/memorymaster/llm_rerank.py +0 -216
- memorymaster-3.26.1/memorymaster/llm_steward.py +0 -942
- memorymaster-3.26.1/memorymaster/mcp_server.py +0 -1499
- memorymaster-3.26.1/memorymaster/mcp_usage.py +0 -43
- memorymaster-3.26.1/memorymaster/media_processing.py +0 -199
- memorymaster-3.26.1/memorymaster/media_providers.py +0 -256
- memorymaster-3.26.1/memorymaster/migrations/0002_miner_state.py +0 -38
- memorymaster-3.26.1/memorymaster/migrations/0003_contradiction_verdicts.py +0 -42
- memorymaster-3.26.1/memorymaster/migrations/__init__.py +0 -41
- memorymaster-3.26.1/memorymaster/migrations/runner.py +0 -268
- memorymaster-3.26.1/memorymaster/observability.py +0 -183
- memorymaster-3.26.1/memorymaster/operator.py +0 -1453
- memorymaster-3.26.1/memorymaster/operator_queue.py +0 -332
- memorymaster-3.26.1/memorymaster/plugins.py +0 -123
- memorymaster-3.26.1/memorymaster/policy.py +0 -133
- memorymaster-3.26.1/memorymaster/postgres_store.py +0 -2600
- memorymaster-3.26.1/memorymaster/qdrant_backend.py +0 -327
- memorymaster-3.26.1/memorymaster/qdrant_recall_fallback.py +0 -305
- memorymaster-3.26.1/memorymaster/qmd_bridge.py +0 -132
- memorymaster-3.26.1/memorymaster/query_cache.py +0 -184
- memorymaster-3.26.1/memorymaster/query_classifier.py +0 -69
- memorymaster-3.26.1/memorymaster/query_expansion.py +0 -184
- memorymaster-3.26.1/memorymaster/recall_fusion.py +0 -79
- memorymaster-3.26.1/memorymaster/recall_tokenizer.py +0 -305
- memorymaster-3.26.1/memorymaster/retrieval.py +0 -435
- memorymaster-3.26.1/memorymaster/review.py +0 -121
- memorymaster-3.26.1/memorymaster/rl_trainer.py +0 -132
- memorymaster-3.26.1/memorymaster/rule_miner.py +0 -483
- memorymaster-3.26.1/memorymaster/scheduler.py +0 -107
- memorymaster-3.26.1/memorymaster/schema.py +0 -11
- memorymaster-3.26.1/memorymaster/schema_postgres.sql +0 -314
- memorymaster-3.26.1/memorymaster/security.py +0 -389
- memorymaster-3.26.1/memorymaster/service.py +0 -1491
- memorymaster-3.26.1/memorymaster/session_tracker.py +0 -129
- memorymaster-3.26.1/memorymaster/setup_hooks.py +0 -404
- memorymaster-3.26.1/memorymaster/skill_evolver.py +0 -161
- memorymaster-3.26.1/memorymaster/snapshot.py +0 -403
- memorymaster-3.26.1/memorymaster/steward.py +0 -1726
- memorymaster-3.26.1/memorymaster/steward_classifier.py +0 -152
- memorymaster-3.26.1/memorymaster/steward_features.py +0 -344
- memorymaster-3.26.1/memorymaster/storage.py +0 -97
- memorymaster-3.26.1/memorymaster/store_factory.py +0 -19
- memorymaster-3.26.1/memorymaster/transcript_miner.py +0 -156
- memorymaster-3.26.1/memorymaster/vault_curator.py +0 -295
- memorymaster-3.26.1/memorymaster/vault_exporter.py +0 -223
- memorymaster-3.26.1/memorymaster/vault_linter.py +0 -453
- memorymaster-3.26.1/memorymaster/vault_query_capture.py +0 -107
- memorymaster-3.26.1/memorymaster/verbatim_cleanup.py +0 -184
- memorymaster-3.26.1/memorymaster/verbatim_recall.py +0 -296
- memorymaster-3.26.1/memorymaster/verbatim_store.py +0 -454
- memorymaster-3.26.1/memorymaster/webhook.py +0 -161
- memorymaster-3.26.1/memorymaster/wiki_engine.py +0 -901
- memorymaster-3.26.1/memorymaster/wiki_similarity.py +0 -621
- memorymaster-3.26.1/memorymaster/wiki_suggest.py +0 -270
- memorymaster-3.26.1/memorymaster/wiki_validate.py +0 -299
- memorymaster-3.26.1/memorymaster.egg-info/PKG-INFO +0 -250
- memorymaster-3.26.1/memorymaster.egg-info/SOURCES.txt +0 -411
- memorymaster-3.26.1/memorymaster.egg-info/entry_points.txt +0 -6
- memorymaster-3.26.1/memorymaster.egg-info/top_level.txt +0 -10
- memorymaster-3.26.1/pyproject.toml +0 -80
- memorymaster-3.26.1/scripts/agg_recall_latency.py +0 -184
- memorymaster-3.26.1/scripts/alert_operator_metrics.py +0 -477
- memorymaster-3.26.1/scripts/audit_dedupe_precision.py +0 -121
- memorymaster-3.26.1/scripts/autoresearch_daemon.py +0 -248
- memorymaster-3.26.1/scripts/backfill_entity_extraction.py +0 -327
- memorymaster-3.26.1/scripts/backfill_graph_store.py +0 -264
- memorymaster-3.26.1/scripts/backfill_stop_hook_citations.py +0 -137
- memorymaster-3.26.1/scripts/backtest_steward_classifier.py +0 -757
- memorymaster-3.26.1/scripts/build_steward_training_set.py +0 -119
- memorymaster-3.26.1/scripts/check_hook_template_drift.py +0 -143
- memorymaster-3.26.1/scripts/claude_to_turns.py +0 -416
- memorymaster-3.26.1/scripts/codex_live_to_turns.py +0 -460
- memorymaster-3.26.1/scripts/compaction_edge_cases.py +0 -294
- memorymaster-3.26.1/scripts/compaction_trace_report.py +0 -167
- memorymaster-3.26.1/scripts/compaction_trace_validate.py +0 -511
- memorymaster-3.26.1/scripts/confusion_matrix_eval.py +0 -177
- memorymaster-3.26.1/scripts/conversation_importer.py +0 -194
- memorymaster-3.26.1/scripts/conversation_to_turns.py +0 -532
- memorymaster-3.26.1/scripts/e2e_operator.py +0 -372
- memorymaster-3.26.1/scripts/email_live_to_turns.py +0 -376
- memorymaster-3.26.1/scripts/eval_bm25_sweep.py +0 -432
- memorymaster-3.26.1/scripts/eval_classify_f1.py +0 -226
- memorymaster-3.26.1/scripts/eval_memorymaster.py +0 -416
- memorymaster-3.26.1/scripts/eval_recall_precision_at_5.py +0 -468
- memorymaster-3.26.1/scripts/eval_recall_quality.py +0 -132
- memorymaster-3.26.1/scripts/eval_steward_pareto.py +0 -273
- memorymaster-3.26.1/scripts/eval_verbatim_recall.py +0 -216
- memorymaster-3.26.1/scripts/expand_recall_eval.py +0 -404
- memorymaster-3.26.1/scripts/generate_drill_signoff.py +0 -279
- memorymaster-3.26.1/scripts/git_to_turns.py +0 -407
- memorymaster-3.26.1/scripts/github_live_to_turns.py +0 -605
- memorymaster-3.26.1/scripts/gitnexus_to_claims.py +0 -180
- memorymaster-3.26.1/scripts/grid_recall_weights.py +0 -191
- memorymaster-3.26.1/scripts/index_claims_to_qdrant.py +0 -315
- memorymaster-3.26.1/scripts/ingest_planning_docs.py +0 -170
- memorymaster-3.26.1/scripts/jira_live_to_turns.py +0 -482
- memorymaster-3.26.1/scripts/label_prompts_with_judge.py +0 -211
- memorymaster-3.26.1/scripts/llm_benchmark.py +0 -264
- memorymaster-3.26.1/scripts/measure_dedupe_thresholds.py +0 -114
- memorymaster-3.26.1/scripts/merge_scope_variants.py +0 -216
- memorymaster-3.26.1/scripts/messages_to_turns.py +0 -445
- memorymaster-3.26.1/scripts/operator_metrics.py +0 -248
- memorymaster-3.26.1/scripts/precompute_candidates.py +0 -94
- memorymaster-3.26.1/scripts/recurring_incident_drill.py +0 -306
- memorymaster-3.26.1/scripts/release_readiness.py +0 -424
- memorymaster-3.26.1/scripts/run_codex_autologger.py +0 -94
- memorymaster-3.26.1/scripts/run_incident_drill.py +0 -657
- memorymaster-3.26.1/scripts/scheduled_ingest.py +0 -595
- memorymaster-3.26.1/scripts/setup-hooks.py +0 -10
- memorymaster-3.26.1/scripts/slack_live_to_turns.py +0 -475
- memorymaster-3.26.1/scripts/sync_hook_templates.py +0 -117
- memorymaster-3.26.1/scripts/tickets_to_turns.py +0 -373
- memorymaster-3.26.1/scripts/train_steward_classifier.py +0 -457
- memorymaster-3.26.1/scripts/webhook_to_turns.py +0 -452
- memorymaster-3.26.1/tests/bench_longmemeval.py +0 -1022
- memorymaster-3.26.1/tests/conftest.py +0 -103
- memorymaster-3.26.1/tests/integration/test_extract_llm_ollama_live.py +0 -49
- memorymaster-3.26.1/tests/test_access_control.py +0 -331
- memorymaster-3.26.1/tests/test_action_exporters.py +0 -68
- memorymaster-3.26.1/tests/test_action_extractor.py +0 -77
- memorymaster-3.26.1/tests/test_atlas_claim_extractor.py +0 -61
- memorymaster-3.26.1/tests/test_atlas_contract.py +0 -1010
- memorymaster-3.26.1/tests/test_atlas_source_schema.py +0 -181
- memorymaster-3.26.1/tests/test_auto_extractor.py +0 -309
- memorymaster-3.26.1/tests/test_auto_ingest_hook_citations.py +0 -102
- memorymaster-3.26.1/tests/test_auto_resolver.py +0 -134
- memorymaster-3.26.1/tests/test_auto_validate.py +0 -197
- memorymaster-3.26.1/tests/test_backend_parity.py +0 -167
- memorymaster-3.26.1/tests/test_bench_answer_prompt.py +0 -75
- memorymaster-3.26.1/tests/test_bm25_per_field.py +0 -222
- memorymaster-3.26.1/tests/test_calibration.py +0 -134
- memorymaster-3.26.1/tests/test_calibration_priors_applied.py +0 -20
- memorymaster-3.26.1/tests/test_candidate_dedupe.py +0 -296
- memorymaster-3.26.1/tests/test_claim_edges.py +0 -167
- memorymaster-3.26.1/tests/test_claim_links.py +0 -288
- memorymaster-3.26.1/tests/test_claim_type_ranking.py +0 -84
- memorymaster-3.26.1/tests/test_cli_dry_run.py +0 -142
- memorymaster-3.26.1/tests/test_cli_handlers_extra.py +0 -308
- memorymaster-3.26.1/tests/test_cli_json_flag.py +0 -150
- memorymaster-3.26.1/tests/test_cli_ready.py +0 -103
- memorymaster-3.26.1/tests/test_cli_review_queue.py +0 -77
- memorymaster-3.26.1/tests/test_cli_subcommands.py +0 -189
- memorymaster-3.26.1/tests/test_closets.py +0 -143
- memorymaster-3.26.1/tests/test_closets_recall_integration.py +0 -50
- memorymaster-3.26.1/tests/test_compact_summaries.py +0 -284
- memorymaster-3.26.1/tests/test_compact_summaries_sensitivity.py +0 -69
- memorymaster-3.26.1/tests/test_compaction_trace.py +0 -141
- memorymaster-3.26.1/tests/test_compactor_artifact_order.py +0 -40
- memorymaster-3.26.1/tests/test_config.py +0 -184
- memorymaster-3.26.1/tests/test_conflict_resolver.py +0 -457
- memorymaster-3.26.1/tests/test_conflict_resolver_extra.py +0 -415
- memorymaster-3.26.1/tests/test_connection_retry.py +0 -127
- memorymaster-3.26.1/tests/test_context_hook.py +0 -260
- memorymaster-3.26.1/tests/test_context_hook_extra.py +0 -643
- memorymaster-3.26.1/tests/test_context_optimizer.py +0 -200
- memorymaster-3.26.1/tests/test_context_optimizer_provider.py +0 -145
- memorymaster-3.26.1/tests/test_contradiction_probe.py +0 -313
- memorymaster-3.26.1/tests/test_dashboard.py +0 -344
- memorymaster-3.26.1/tests/test_dashboard_auth.py +0 -290
- memorymaster-3.26.1/tests/test_dashboard_coverage.py +0 -321
- memorymaster-3.26.1/tests/test_dashboard_latency.py +0 -111
- memorymaster-3.26.1/tests/test_dashboard_lineage.py +0 -70
- memorymaster-3.26.1/tests/test_dashboard_review_queue.py +0 -143
- memorymaster-3.26.1/tests/test_daydream_ingest.py +0 -123
- memorymaster-3.26.1/tests/test_db_merge_confidence_conflict.py +0 -71
- memorymaster-3.26.1/tests/test_db_merge_coverage_v2.py +0 -260
- memorymaster-3.26.1/tests/test_db_merge_extra.py +0 -237
- memorymaster-3.26.1/tests/test_decay_coverage.py +0 -212
- memorymaster-3.26.1/tests/test_decay_respects_pinned.py +0 -120
- memorymaster-3.26.1/tests/test_dedup.py +0 -321
- memorymaster-3.26.1/tests/test_dedup_cli.py +0 -120
- memorymaster-3.26.1/tests/test_dedup_conflict_disambiguation.py +0 -52
- memorymaster-3.26.1/tests/test_delta_sync.py +0 -261
- memorymaster-3.26.1/tests/test_delta_sync_extra.py +0 -392
- memorymaster-3.26.1/tests/test_deterministic_predicates.py +0 -72
- memorymaster-3.26.1/tests/test_dream_bridge_coverage_v2.py +0 -186
- memorymaster-3.26.1/tests/test_dream_bridge_extra.py +0 -229
- memorymaster-3.26.1/tests/test_dream_bridge_sensitivity.py +0 -76
- memorymaster-3.26.1/tests/test_embeddings_coverage.py +0 -127
- memorymaster-3.26.1/tests/test_entity_extractor.py +0 -150
- memorymaster-3.26.1/tests/test_entity_extractor_llm.py +0 -296
- memorymaster-3.26.1/tests/test_entity_graph.py +0 -209
- memorymaster-3.26.1/tests/test_entity_graph_export.py +0 -147
- memorymaster-3.26.1/tests/test_entity_new_kinds.py +0 -241
- memorymaster-3.26.1/tests/test_entity_regex_v3.py +0 -71
- memorymaster-3.26.1/tests/test_entity_registry.py +0 -406
- memorymaster-3.26.1/tests/test_entity_registry_extra.py +0 -271
- memorymaster-3.26.1/tests/test_eval_harness.py +0 -291
- memorymaster-3.26.1/tests/test_events_schema.py +0 -243
- memorymaster-3.26.1/tests/test_extract_llm_ollama.py +0 -140
- memorymaster-3.26.1/tests/test_federated_graphify_mcp.py +0 -136
- memorymaster-3.26.1/tests/test_federated_query_safety.py +0 -91
- memorymaster-3.26.1/tests/test_feedback.py +0 -278
- memorymaster-3.26.1/tests/test_floor_gate.py +0 -90
- memorymaster-3.26.1/tests/test_fts5_search.py +0 -169
- memorymaster-3.26.1/tests/test_graph_distance.py +0 -233
- memorymaster-3.26.1/tests/test_graph_store.py +0 -322
- memorymaster-3.26.1/tests/test_handler_regressions.py +0 -158
- memorymaster-3.26.1/tests/test_human_id.py +0 -282
- memorymaster-3.26.1/tests/test_integration_workflows.py +0 -534
- memorymaster-3.26.1/tests/test_key_rotator.py +0 -159
- memorymaster-3.26.1/tests/test_lifecycle.py +0 -75
- memorymaster-3.26.1/tests/test_lifecycle_extra.py +0 -314
- memorymaster-3.26.1/tests/test_lifecycle_supersede_invariant.py +0 -87
- memorymaster-3.26.1/tests/test_llm_budget.py +0 -232
- memorymaster-3.26.1/tests/test_llm_fallback.py +0 -219
- memorymaster-3.26.1/tests/test_llm_provider_claude_cli.py +0 -186
- memorymaster-3.26.1/tests/test_llm_provider_extra.py +0 -673
- memorymaster-3.26.1/tests/test_llm_provider_key_rotation.py +0 -80
- memorymaster-3.26.1/tests/test_llm_steward_coverage.py +0 -112
- memorymaster-3.26.1/tests/test_llm_steward_key_rotation.py +0 -266
- memorymaster-3.26.1/tests/test_mcp_filter_bypass.py +0 -91
- memorymaster-3.26.1/tests/test_mcp_helpers.py +0 -412
- memorymaster-3.26.1/tests/test_mcp_path_policy.py +0 -206
- memorymaster-3.26.1/tests/test_mcp_rate_limit.py +0 -101
- memorymaster-3.26.1/tests/test_mcp_server_validation.py +0 -49
- memorymaster-3.26.1/tests/test_mcp_usage.py +0 -95
- memorymaster-3.26.1/tests/test_media_processing.py +0 -86
- memorymaster-3.26.1/tests/test_meta_decisions.py +0 -125
- memorymaster-3.26.1/tests/test_metrics_exporter.py +0 -112
- memorymaster-3.26.1/tests/test_migrations.py +0 -292
- memorymaster-3.26.1/tests/test_observability.py +0 -47
- memorymaster-3.26.1/tests/test_observability_extra.py +0 -335
- memorymaster-3.26.1/tests/test_obsidian_mind_patterns.py +0 -386
- memorymaster-3.26.1/tests/test_operator.py +0 -379
- memorymaster-3.26.1/tests/test_operator_queue.py +0 -498
- memorymaster-3.26.1/tests/test_plugins.py +0 -284
- memorymaster-3.26.1/tests/test_policy_coverage.py +0 -56
- memorymaster-3.26.1/tests/test_policy_mode_env.py +0 -91
- memorymaster-3.26.1/tests/test_postgres_parity.py +0 -625
- memorymaster-3.26.1/tests/test_qdrant_backend.py +0 -320
- memorymaster-3.26.1/tests/test_qmd_bridge.py +0 -188
- memorymaster-3.26.1/tests/test_qrels_regression.py +0 -88
- memorymaster-3.26.1/tests/test_query_cache.py +0 -192
- memorymaster-3.26.1/tests/test_query_classifier.py +0 -284
- memorymaster-3.26.1/tests/test_query_expansion.py +0 -264
- memorymaster-3.26.1/tests/test_recall_entity_fanout.py +0 -459
- memorymaster-3.26.1/tests/test_recall_fusion.py +0 -94
- memorymaster-3.26.1/tests/test_recall_latency.py +0 -275
- memorymaster-3.26.1/tests/test_recall_precision_at_5.py +0 -261
- memorymaster-3.26.1/tests/test_recall_tokenizer.py +0 -234
- memorymaster-3.26.1/tests/test_recall_vector_fallback.py +0 -306
- memorymaster-3.26.1/tests/test_reliability_hardening.py +0 -120
- memorymaster-3.26.1/tests/test_resolvers_concurrent_supersede.py +0 -148
- memorymaster-3.26.1/tests/test_retrieval_extra.py +0 -320
- memorymaster-3.26.1/tests/test_retrieval_profile.py +0 -120
- memorymaster-3.26.1/tests/test_retrieval_profiles.py +0 -142
- memorymaster-3.26.1/tests/test_retrieval_rrf_tiebreaker.py +0 -84
- memorymaster-3.26.1/tests/test_retrieval_weights.py +0 -69
- memorymaster-3.26.1/tests/test_review.py +0 -113
- memorymaster-3.26.1/tests/test_rl_trainer.py +0 -232
- memorymaster-3.26.1/tests/test_rrf_auto_gate.py +0 -223
- memorymaster-3.26.1/tests/test_rule_claims.py +0 -181
- memorymaster-3.26.1/tests/test_rule_miner.py +0 -365
- memorymaster-3.26.1/tests/test_scheduler.py +0 -160
- memorymaster-3.26.1/tests/test_schema.py +0 -14
- memorymaster-3.26.1/tests/test_scope_boost.py +0 -298
- memorymaster-3.26.1/tests/test_scope_utils.py +0 -112
- memorymaster-3.26.1/tests/test_security_access.py +0 -219
- memorymaster-3.26.1/tests/test_security_patterns.py +0 -249
- memorymaster-3.26.1/tests/test_sensitivity_filter_adversarial.py +0 -93
- memorymaster-3.26.1/tests/test_sensitivity_filter_adversarial_v2.py +0 -153
- memorymaster-3.26.1/tests/test_sensitivity_filter_t07.py +0 -104
- memorymaster-3.26.1/tests/test_service_coverage.py +0 -263
- memorymaster-3.26.1/tests/test_session_tracker.py +0 -337
- memorymaster-3.26.1/tests/test_snapshot.py +0 -302
- memorymaster-3.26.1/tests/test_snapshot_roundtrip.py +0 -168
- memorymaster-3.26.1/tests/test_sqlite_core.py +0 -264
- memorymaster-3.26.1/tests/test_staleness.py +0 -335
- memorymaster-3.26.1/tests/test_stealth_mode.py +0 -135
- memorymaster-3.26.1/tests/test_steward.py +0 -348
- memorymaster-3.26.1/tests/test_steward_classifier.py +0 -262
- memorymaster-3.26.1/tests/test_steward_contradiction_phase.py +0 -251
- memorymaster-3.26.1/tests/test_steward_daydream_hook.py +0 -116
- memorymaster-3.26.1/tests/test_steward_features.py +0 -174
- memorymaster-3.26.1/tests/test_steward_features_v3.py +0 -255
- memorymaster-3.26.1/tests/test_steward_resolution_parity.py +0 -219
- memorymaster-3.26.1/tests/test_storage_extra.py +0 -154
- memorymaster-3.26.1/tests/test_storage_parity.py +0 -287
- memorymaster-3.26.1/tests/test_store_factory.py +0 -35
- memorymaster-3.26.1/tests/test_tenant_isolation.py +0 -167
- memorymaster-3.26.1/tests/test_turn_schema.py +0 -92
- memorymaster-3.26.1/tests/test_two_pass_recall.py +0 -86
- memorymaster-3.26.1/tests/test_v311_fixes.py +0 -172
- memorymaster-3.26.1/tests/test_v313_e2e.py +0 -265
- memorymaster-3.26.1/tests/test_v313_run_cycle_dedupe.py +0 -176
- memorymaster-3.26.1/tests/test_v390_e2e.py +0 -151
- memorymaster-3.26.1/tests/test_v391_strict_warnings.py +0 -73
- memorymaster-3.26.1/tests/test_vault_exporter.py +0 -381
- memorymaster-3.26.1/tests/test_vault_linter_extra.py +0 -290
- memorymaster-3.26.1/tests/test_vault_linter_orphan.py +0 -91
- memorymaster-3.26.1/tests/test_vector_search.py +0 -367
- memorymaster-3.26.1/tests/test_verbatim_cleanup.py +0 -232
- memorymaster-3.26.1/tests/test_verbatim_dedup.py +0 -228
- memorymaster-3.26.1/tests/test_verbatim_recall.py +0 -321
- memorymaster-3.26.1/tests/test_verbatim_store.py +0 -67
- memorymaster-3.26.1/tests/test_verbatim_store_qdrant.py +0 -148
- memorymaster-3.26.1/tests/test_webhook.py +0 -167
- memorymaster-3.26.1/tests/test_webhook_hmac.py +0 -216
- memorymaster-3.26.1/tests/test_whatsapp_importer.py +0 -106
- memorymaster-3.26.1/tests/test_wiki_autopromote.py +0 -101
- memorymaster-3.26.1/tests/test_wiki_binding.py +0 -182
- memorymaster-3.26.1/tests/test_wiki_engine_extra.py +0 -410
- memorymaster-3.26.1/tests/test_wiki_engine_idempotency.py +0 -170
- memorymaster-3.26.1/tests/test_wiki_explored_and_contradictions.py +0 -229
- memorymaster-3.26.1/tests/test_wiki_freshness.py +0 -284
- memorymaster-3.26.1/tests/test_wiki_similarity_multiscope.py +0 -272
- memorymaster-3.26.1/tests/test_wiki_suggest.py +0 -124
- memorymaster-3.26.1/tests/test_wiki_validate_cli.py +0 -193
- {memorymaster-3.26.1 → memorymaster-4.0.0}/LICENSE +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/action_exporters.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/atlas_contract.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/connectors/__init__.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/bridges}/connectors/whatsapp.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/config_templates/claude-md-append.md +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-classify.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-precompact.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-session-start.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/config_templates/hooks/memorymaster-validate-wiki.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/core}/models.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/core}/retry.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/core}/scope_utils.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/govern}/jobs/__init__.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/govern}/jobs/calibration.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/govern}/jobs/extractor.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/auto_extractor.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/rules.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/vault_bases.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/vault_log.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/vault_synthesis.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/knowledge}/wiki_freshness.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/recall}/graph_store.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster/schema.sql +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/stores}/migrations/0001_initial.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/stores}/migrations/0004_query_cache.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/dashboard_auth.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/mcp_path_policy.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/metrics_exporter.py +0 -0
- {memorymaster-3.26.1/memorymaster → memorymaster-4.0.0/memorymaster/surfaces}/turn_schema.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster.egg-info/dependency_links.txt +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/memorymaster.egg-info/requires.txt +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/setup.cfg +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_auto_ingest_hook_schema.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_classify_hook_f1.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_classify_hook_latency.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_claude_to_turns.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_confusion_matrix_eval.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_connectors.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_conversation_to_turns.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_hook_env_isolation.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_incident_drill_runner.py +0 -0
- {memorymaster-3.26.1 → memorymaster-4.0.0}/tests/test_perf_smoke_config.py +0 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: memorymaster
|
|
3
|
+
Version: 4.0.0
|
|
4
|
+
Summary: Production-grade memory reliability system for AI coding agents. Lifecycle-managed claims with citations, conflict detection, steward governance, and MCP integration.
|
|
5
|
+
Author: wolverin0
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: memory,ai-agents,claims,lifecycle,mcp,sqlite,postgres,coding-agents
|
|
8
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: requests>=2.31
|
|
21
|
+
Requires-Dist: tenacity>=8.2
|
|
22
|
+
Provides-Extra: postgres
|
|
23
|
+
Requires-Dist: psycopg[binary]>=3.2; extra == "postgres"
|
|
24
|
+
Provides-Extra: security
|
|
25
|
+
Requires-Dist: cryptography>=42; extra == "security"
|
|
26
|
+
Provides-Extra: embeddings
|
|
27
|
+
Requires-Dist: sentence-transformers>=3.0; extra == "embeddings"
|
|
28
|
+
Provides-Extra: gemini
|
|
29
|
+
Requires-Dist: google-genai>=1.0; extra == "gemini"
|
|
30
|
+
Provides-Extra: qdrant
|
|
31
|
+
Requires-Dist: httpx>=0.27; extra == "qdrant"
|
|
32
|
+
Provides-Extra: vector
|
|
33
|
+
Requires-Dist: sentence-transformers>=3.0; extra == "vector"
|
|
34
|
+
Requires-Dist: qdrant-client>=1.9; extra == "vector"
|
|
35
|
+
Provides-Extra: graph
|
|
36
|
+
Requires-Dist: kuzu>=0.4; extra == "graph"
|
|
37
|
+
Provides-Extra: dev
|
|
38
|
+
Requires-Dist: pytest>=8.2; extra == "dev"
|
|
39
|
+
Requires-Dist: pytest-cov>=6.0; extra == "dev"
|
|
40
|
+
Provides-Extra: mcp
|
|
41
|
+
Requires-Dist: mcp>=1.2; extra == "mcp"
|
|
42
|
+
Provides-Extra: ml
|
|
43
|
+
Requires-Dist: scikit-learn>=1.3; extra == "ml"
|
|
44
|
+
Requires-Dist: joblib>=1.3; extra == "ml"
|
|
45
|
+
Dynamic: license-file
|
|
46
|
+
|
|
47
|
+
# MemoryMaster
|
|
48
|
+
|
|
49
|
+
**Production-grade memory reliability system for AI coding agents.**
|
|
50
|
+
|
|
51
|
+
Lifecycle-managed claims with citations, conflict detection, steward governance, hybrid retrieval, and MCP integration. Give your AI agents persistent, trustworthy memory.
|
|
52
|
+
|
|
53
|
+
[](LICENSE)
|
|
54
|
+
[](https://www.python.org/downloads/)
|
|
55
|
+
[]()
|
|
56
|
+
[]()
|
|
57
|
+
[]()
|
|
58
|
+
[](https://pypi.org/project/memorymaster/)
|
|
59
|
+
|
|
60
|
+
MemoryMaster prevents the #1 problem with agent memory: **drift, stale assumptions, and unsafe disclosure**. It gives Claude Code, Codex, and any MCP-compatible agent persistent, verifiable memory with a full claim lifecycle, citation tracking, conflict detection, and human-in-the-loop governance.
|
|
61
|
+
|
|
62
|
+
### How it's different
|
|
63
|
+
|
|
64
|
+
Most agent-memory systems (mem0, Letta/MemGPT, Zep) optimize for **storing and recalling more** — embeddings, summaries, a fast vector store. MemoryMaster optimizes for **trusting what you recall**. The differentiator is **governance**: every memory is a lifecycle-managed *claim*, not an opaque embedding.
|
|
65
|
+
|
|
66
|
+
| | mem0 / Letta / Zep | **MemoryMaster** |
|
|
67
|
+
|---|---|---|
|
|
68
|
+
| Unit of memory | text chunk / summary | **claim** with status, tier, citations, bitemporal validity |
|
|
69
|
+
| Stale / wrong facts | linger until overwritten | **decay → `stale`**, **conflict detection**, **supersession** |
|
|
70
|
+
| Contradictions | silently coexist | surfaced as **`conflicted`**, auto-resolved (5-tier) or queued for review |
|
|
71
|
+
| Provenance | usually none | **citation per claim** + per-agent provenance |
|
|
72
|
+
| Secret leakage | your problem | **sensitivity filter at ingest** (JWT/AWS/Bearer/SSH redaction) |
|
|
73
|
+
| Operator control | API only | **steward governance** + a **dashboard** you can *see* |
|
|
74
|
+
|
|
75
|
+
If you want an agent that recalls more, any vector store works. If you want an agent that recalls *correctly* — and can prove where a fact came from and retire it when it goes stale — that's the gap MemoryMaster fills.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Architecture
|
|
80
|
+
|
|
81
|
+
MemoryMaster is layered around MCP/CLI entry points, the `MemoryService` facade, SQLite/Postgres
|
|
82
|
+
storage, optional Qdrant vector search, scheduled jobs, and the Obsidian wiki/vault layer. The
|
|
83
|
+
canonical ingest path is:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
MCP/CLI -> sensitivity filter -> MemoryService.ingest -> store write -> FTS5 index
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The query path is:
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
query_memory -> MemoryService.query -> storage reads + optional Qdrant candidates -> ranked context
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
See [docs/architecture.md](docs/architecture.md) for the current module map, data-flow details,
|
|
96
|
+
recent PR status, and sensitivity-filter invariants.
|
|
97
|
+
|
|
98
|
+
## Key features
|
|
99
|
+
|
|
100
|
+
- **6-state lifecycle**: `candidate` → `confirmed` → `stale` → `superseded` → `conflicted` → `archived`
|
|
101
|
+
- **Citation tracking** with provenance for every claim
|
|
102
|
+
- **Hybrid retrieval**: vector (sentence-transformers / Gemini) + FTS5 + freshness + confidence
|
|
103
|
+
- **Context optimizer**: `query_for_context(budget=4000)` returns auto-curated memory that fits your token budget
|
|
104
|
+
- **Entity graph** with typed relationships and alias resolution
|
|
105
|
+
- **Rule-shaped claims** (new in v3.21.0): prescriptive `when <trigger>, do <action> because <rationale>` claims (`ingest_rule` / `query_rules`) — the shape an agent needs to actually change behaviour next time, not just recall a fact
|
|
106
|
+
- **Correction mining** (new in v3.21.0): `mine-rules` scans the verbatim transcript archive for user corrections and distills them into rule claims; the Stop hook also mines each session's latest correction automatically
|
|
107
|
+
- **Versioned schema migrations** (new in v3.20.0): `migrate` applies SQLite/Postgres migrations with sha256 drift detection; incremental `export-delta` ships small claim deltas for cheap cross-machine sync
|
|
108
|
+
- **Retrieval quality** (new in v3.22.0): floor-ratio boost gate (`MEMORYMASTER_BOOST_FLOOR_RATIO`) stops fresh-but-wrong claims outranking the true match; `query --explain` shows per-stage score attribution; an opt-in correctness-safe query cache (`MEMORYMASTER_QUERY_CACHE`) with a generation gate
|
|
109
|
+
- **Semantic contradiction probe** (new in v3.22.0, wired as a steward phase in v3.23.0): `detect-contradictions` finds claims that genuinely contradict each other (beyond the deterministic same-subject conflict check) via an LLM judge with a Wilson-CI rate and verdict cache; in v3.23 the same probe runs inside `run-steward` and emits paste-ready `conflicted` proposals
|
|
110
|
+
- **Verbatim archive cleanup** (new in v3.23.0): `verbatim-cleanup` dedups the raw-transcript table and optionally purges pre-#128 junk rows, with a dry-run default and FTS5 mirror sync
|
|
111
|
+
- **Steward governance**: multi-probe validators (filesystem, format, citation, semantic, tool) with proposal review
|
|
112
|
+
- **Conflict resolution**: 5-tier auto (confidence > freshness > citations > LLM > manual)
|
|
113
|
+
- **Auto-redaction** at ingest: JWT, GitHub tokens, Bearer, AWS keys, SSH keys, custom patterns
|
|
114
|
+
- **LLM Wiki**: compiled-truth + append-only timeline articles with progressive-disclosure frontmatter, `explored: true|false` operator-review marker, and inline `> [!contradiction]` Obsidian callouts
|
|
115
|
+
- **Atlas Inbox V1** (new in v3.13.0): WhatsApp ingestion → source/evidence/action proposal lifecycle → Super-Productivity export. Versioned API/CLI contract for downstream consumers (LifeAgent, etc.) — see [`docs/atlas-api-contract-v1.md`](docs/atlas-api-contract-v1.md). Real provider adapters (`OpenAIWhisperTranscriptionProvider`, `TesseractOcrProvider`) behind `Protocol`s; mock providers stay default.
|
|
116
|
+
- **Dual backend**: SQLite (zero-config) and Postgres (full feature parity with pgvector)
|
|
117
|
+
- **Dream Bridge** for bidirectional sync with Claude Code's Auto Dream
|
|
118
|
+
- **7-hook stack**: recall, classify, validate-wiki, session-start, auto-ingest, precompact, steward-cron
|
|
119
|
+
|
|
120
|
+
Full feature index lives in [`docs/handbook.md`](docs/handbook.md).
|
|
121
|
+
|
|
122
|
+
## Benchmarks
|
|
123
|
+
|
|
124
|
+
**LongMemEval-S (N=500, retrieval-only)** — v3.15.0 now leads the publicly-reported numbers from [agentmemory](https://github.com/rohitg00/agentmemory) on R@5 and MRR, after wiring `sentence-transformers/all-MiniLM-L6-v2` into the bench harness (the v3.14 baseline was unintentionally BM25-only).
|
|
125
|
+
|
|
126
|
+

|
|
127
|
+
|
|
128
|
+
| Metric | v3.14.0 | **v3.15.0** | agentmemory | Δ vs agentmemory |
|
|
129
|
+
|---|---|---|---|---|
|
|
130
|
+
| Recall@5 | 0.894 | **0.966** | 0.952 | **+0.014** ★ |
|
|
131
|
+
| Recall@10 | 0.942 | **0.984** | 0.986 | -0.002 |
|
|
132
|
+
| MRR | 0.799 | **0.902** | 0.882 | **+0.020** ★ |
|
|
133
|
+
|
|
134
|
+
Reproduce: `python tests/bench_longmemeval.py --retrieval-only`. Full methodology, experiment-by-experiment deltas (1 KEEP, 2 REVERT, 3 NULL), and the architectural findings that surfaced along the way live in [`docs/archive/longmemeval-results.md`](docs/archive/longmemeval-results.md) and [`docs/archive/v315-experiments/`](docs/archive/v315-experiments/). QA-accuracy pass (with judge) is deferred until provider quotas allow.
|
|
135
|
+
|
|
136
|
+
## Prerequisites
|
|
137
|
+
|
|
138
|
+
**Required (the package won't function without these)**
|
|
139
|
+
|
|
140
|
+
- Python **3.10+** with `pip`
|
|
141
|
+
- Claude Code, Codex, or any MCP-compatible agent
|
|
142
|
+
- **An LLM provider** — pick one: Claude Code OAuth (free if you're a subscriber, set `MEMORYMASTER_LLM_PROVIDER=claude_cli`), a free Gemini API key from [aistudio.google.com](https://aistudio.google.com), OpenAI, Anthropic API, or local Ollama. The steward, auto-ingest, and wiki-absorb cycles all need an LLM — without one, claims pile up as `candidate` and never get validated, deduped, or compiled into the wiki.
|
|
143
|
+
|
|
144
|
+
**Strongly recommended (you'll lose ~80% of the value without these)**
|
|
145
|
+
|
|
146
|
+
- **Node.js 18+** for [graphify](https://github.com/wolverin0/graphify) and [GitNexus](https://github.com/wolverin0/gitnexus) — these are the cached intelligence layers that make MemoryMaster cheap to query. Without them, every "what does this codebase do?" question burns tokens cold-exploring files the graph already mapped. The `intelligence-first` workflow in `CLAUDE.md` assumes both are installed.
|
|
147
|
+
- **Obsidian 1.6+** with the [Bases](https://help.obsidian.md/Plugins/Bases) core plugin — the wiki engine writes plain Markdown so any editor works, but Obsidian's backlinks, graph view, and Bases dashboards are how you actually navigate `wiki-absorb` output. Without Obsidian, the wiki is just a folder of files.
|
|
148
|
+
|
|
149
|
+
**Optional (nice to have)**
|
|
150
|
+
|
|
151
|
+
- **Docker** for Qdrant — vector retrieval. SQLite FTS5 is the default and works out of the box; add Qdrant when you want semantic recall on top of keyword search.
|
|
152
|
+
|
|
153
|
+
## 15-minute quickstart
|
|
154
|
+
|
|
155
|
+
From zero to a recalled claim and a live dashboard. No Qdrant, no Postgres, no LLM key required for these steps (SQLite + FTS5 is the default).
|
|
156
|
+
|
|
157
|
+
**1. Install (2 min)**
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
pip install "memorymaster[mcp]"
|
|
161
|
+
memorymaster --db memorymaster.db init-db
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**2. Configure a provider (3 min, optional for this walkthrough)**
|
|
165
|
+
|
|
166
|
+
Recall and ingest below work with zero config. An LLM provider is only needed for the steward/wiki cycles — pick one when you're ready (see [Pick your LLM provider](#pick-your-llm-provider)). For a Claude Code subscriber, the cheapest path is:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
export MEMORYMASTER_LLM_PROVIDER=claude_cli # reuses your Claude Code OAuth, no API key
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**3. Ingest a claim via CLI (1 min)**
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
memorymaster --db memorymaster.db ingest \
|
|
176
|
+
--text "Server uses PostgreSQL 16" \
|
|
177
|
+
--source "session://chat|turn-3|user confirmed"
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**4. Recall it (1 min)**
|
|
181
|
+
|
|
182
|
+
A freshly-ingested claim starts life as a `candidate` (unvalidated). The CLI `query`/`context` paths *exclude* candidates by default — that's the governance model: unvalidated facts don't silently leak into recall until the steward promotes them. To see your brand-new claim before a validation cycle, pass `--include-candidates`:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Hybrid retrieval (lexical + freshness + confidence)
|
|
186
|
+
memorymaster --db memorymaster.db query "database version" \
|
|
187
|
+
--retrieval-mode hybrid --include-candidates
|
|
188
|
+
|
|
189
|
+
# Token-budgeted context block — the killer feature for agents
|
|
190
|
+
memorymaster --db memorymaster.db context "database" \
|
|
191
|
+
--budget 4000 --format xml --include-candidates
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
You should see the PostgreSQL 16 claim come back, ranked, with its citation. (Drop `--include-candidates` and you'll get zero results until step 7's `run-cycle` promotes it to `confirmed` — that's working as designed, not a bug.)
|
|
195
|
+
|
|
196
|
+
**5. Open the dashboard (2 min)**
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
memorymaster --db memorymaster.db run-dashboard # serves on http://127.0.0.1:8765
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Open the URL: you'll see your claim in **Claims**, plus governance panels — **Conflicts**, **Review Queue**, **Recall Analysis** (why each claim ranked where it did), **Audit Log**, **Provenance by Agent**, and **Reliability**.
|
|
203
|
+
|
|
204
|
+
**6. Wire it into your agent (3 min)**
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
memorymaster-setup # interactive: hooks, MCP, steward cron, CLAUDE.md / AGENTS.md
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
That installs the MCP server and the auto-ingest Stop hook so your agent recalls and stores memory automatically. See [MCP server](#mcp-server) for the config block.
|
|
211
|
+
|
|
212
|
+
**7. Run a validation cycle (1 min, needs a provider)**
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
memorymaster --db memorymaster.db run-cycle # extract, validate, decay, compact
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
For the one-prompt agent install (paste into any agent with shell access), see [`docs/handbook.md#one-prompt-agent-install`](docs/handbook.md#one-prompt-agent-install).
|
|
219
|
+
|
|
220
|
+
## Pick your LLM provider
|
|
221
|
+
|
|
222
|
+
| Provider | Env vars | Default model | Cost |
|
|
223
|
+
|----------|----------|---------------|------|
|
|
224
|
+
| **Claude Code OAuth** (recommended for subscribers) | `MEMORYMASTER_LLM_PROVIDER=claude_cli` (requires `claude` CLI on PATH) | `claude-haiku-4-5-20251001` | included in Claude Code plan |
|
|
225
|
+
| Google Gemini (default) | `MEMORYMASTER_LLM_PROVIDER=google` + `GEMINI_API_KEY=...` | `gemini-3.1-flash-lite-preview` | ~free |
|
|
226
|
+
| OpenAI | `MEMORYMASTER_LLM_PROVIDER=openai` + `OPENAI_API_KEY=...` | `gpt-4o-mini` | ~$0.001/call |
|
|
227
|
+
| Anthropic API | `MEMORYMASTER_LLM_PROVIDER=anthropic` + `ANTHROPIC_API_KEY=...` | `claude-haiku-4-5-20251001` | ~$0.001/call |
|
|
228
|
+
| Ollama (local) | `MEMORYMASTER_LLM_PROVIDER=ollama` + `OLLAMA_URL=http://localhost:11434` | `llama3.2:3b` | free |
|
|
229
|
+
|
|
230
|
+
The `claude_cli` provider shells out to your local `claude --print` binary, so it inherits the OAuth session you're already logged into in Claude Code — no API key, no rotator, no quota juggling. **Caveat**: cold-start adds 3-15s per call (subprocess spawn), so it's ideal for batched/cron paths (steward, wiki-absorb) and not for latency-sensitive recall. Override with `MEMORYMASTER_CLAUDE_CLI_BIN` and `MEMORYMASTER_CLAUDE_CLI_TIMEOUT`. On VM installs the OAuth token expires ~24h, so pair with `MEMORYMASTER_LLM_FALLBACK_PROVIDER=ollama`; desktop tokens don't expire.
|
|
231
|
+
|
|
232
|
+
For zero-cost offline use, install [Ollama](https://ollama.com), `ollama pull llama3.2:3b`, and set `MEMORYMASTER_LLM_PROVIDER=ollama`.
|
|
233
|
+
|
|
234
|
+
## MCP server
|
|
235
|
+
|
|
236
|
+
```json
|
|
237
|
+
{
|
|
238
|
+
"mcpServers": {
|
|
239
|
+
"memorymaster": {
|
|
240
|
+
"command": "memorymaster-mcp",
|
|
241
|
+
"env": {
|
|
242
|
+
"MEMORYMASTER_DEFAULT_DB": "/path/to/memorymaster.db",
|
|
243
|
+
"MEMORYMASTER_WORKSPACE": "/path/to/your/project"
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
30 MCP tools spanning setup/lifecycle, ingest, query/retrieval, listing, knowledge graph, and governance: `init_db`, `ingest_claim`, `ingest_rule`, `query_rules`, `rules_export`, `run_cycle`, `run_steward`, `classify_query`, `query_memory`, `query_for_context`, `query_for_task`, `query_claim_paths`, `query_meta_decisions`, `federated_query`, `recall_analysis`, `read_active_tasks`, `list_claims`, `redact_claim_payload`, `pin_claim`, `compact_memory`, `list_events`, `search_verbatim`, `open_dashboard`, `list_steward_proposals`, `resolve_steward_proposal`, `extract_entities`, `entity_stats`, `find_related_claims`, `quality_scores`, `recompute_tiers`.
|
|
251
|
+
|
|
252
|
+
See [`docs/MCP-TOOLS.md`](docs/MCP-TOOLS.md) for the grouped reference (one line per tool), and [`.mcp.json.example`](.mcp.json.example) for the full config template.
|
|
253
|
+
|
|
254
|
+
## Backends
|
|
255
|
+
|
|
256
|
+
| Backend | Install | Use case |
|
|
257
|
+
|---------|---------|----------|
|
|
258
|
+
| **SQLite** | Built-in | Local development, single-agent, zero-config |
|
|
259
|
+
| **Postgres** | `pip install "memorymaster[postgres]"` | Team deployment, multi-agent, pgvector search |
|
|
260
|
+
|
|
261
|
+
## Docker Compose
|
|
262
|
+
|
|
263
|
+
Run the full stack (MemoryMaster + Qdrant + Ollama) with one command:
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
docker compose up -d
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
See [INSTALLATION.md](INSTALLATION.md) for Kubernetes / Helm.
|
|
270
|
+
|
|
271
|
+
## Development
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
# Install with dev dependencies
|
|
275
|
+
pip install -e ".[dev,mcp,security,embeddings,qdrant]"
|
|
276
|
+
|
|
277
|
+
# Run tests
|
|
278
|
+
pytest tests/ -q
|
|
279
|
+
|
|
280
|
+
# Lint and format
|
|
281
|
+
ruff check memorymaster/ && ruff format memorymaster/
|
|
282
|
+
|
|
283
|
+
# Performance benchmarks
|
|
284
|
+
python benchmarks/perf_smoke.py
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full workflow.
|
|
288
|
+
|
|
289
|
+
## Documentation
|
|
290
|
+
|
|
291
|
+
| Document | Description |
|
|
292
|
+
|----------|-------------|
|
|
293
|
+
| [docs/README.md](docs/README.md) | Documentation index — where to find each living doc |
|
|
294
|
+
| [docs/handbook.md](docs/handbook.md) | Full operator handbook — hooks, dashboard, steward, dream bridge, troubleshooting, one-prompt install |
|
|
295
|
+
| [docs/MCP-TOOLS.md](docs/MCP-TOOLS.md) | Reference for all 30 MCP tools, grouped by purpose |
|
|
296
|
+
| [docs/INTEGRATING.md](docs/INTEGRATING.md) | Integration guide for embedding MemoryMaster in your agent |
|
|
297
|
+
| [INSTALLATION.md](INSTALLATION.md) | Setup guide: pip, Docker, Helm, MCP config |
|
|
298
|
+
| [CONTRIBUTING.md](CONTRIBUTING.md) | Dev setup, testing, PR workflow |
|
|
299
|
+
| [ARCHITECTURE.md](ARCHITECTURE.md) | System design and subsystem details |
|
|
300
|
+
| [USER_GUIDE.md](USER_GUIDE.md) | Usage, MCP integration, troubleshooting |
|
|
301
|
+
| [CHANGELOG.md](CHANGELOG.md) | Version history and release notes |
|
|
302
|
+
| [ROADMAP.md](ROADMAP.md) | Release plan and future tracks |
|
|
303
|
+
| [docs/enabling-v2-systems.md](docs/enabling-v2-systems.md) | v3 statistical classifier + cadence policy opt-in |
|
|
304
|
+
|
|
305
|
+
## License
|
|
306
|
+
|
|
307
|
+
[MIT](LICENSE) — Built by [wolverin0](https://github.com/wolverin0)
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# MemoryMaster
|
|
2
|
+
|
|
3
|
+
**Production-grade memory reliability system for AI coding agents.**
|
|
4
|
+
|
|
5
|
+
Lifecycle-managed claims with citations, conflict detection, steward governance, hybrid retrieval, and MCP integration. Give your AI agents persistent, trustworthy memory.
|
|
6
|
+
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](https://www.python.org/downloads/)
|
|
9
|
+
[]()
|
|
10
|
+
[]()
|
|
11
|
+
[]()
|
|
12
|
+
[](https://pypi.org/project/memorymaster/)
|
|
13
|
+
|
|
14
|
+
MemoryMaster prevents the #1 problem with agent memory: **drift, stale assumptions, and unsafe disclosure**. It gives Claude Code, Codex, and any MCP-compatible agent persistent, verifiable memory with a full claim lifecycle, citation tracking, conflict detection, and human-in-the-loop governance.
|
|
15
|
+
|
|
16
|
+
### How it's different
|
|
17
|
+
|
|
18
|
+
Most agent-memory systems (mem0, Letta/MemGPT, Zep) optimize for **storing and recalling more** — embeddings, summaries, a fast vector store. MemoryMaster optimizes for **trusting what you recall**. The differentiator is **governance**: every memory is a lifecycle-managed *claim*, not an opaque embedding.
|
|
19
|
+
|
|
20
|
+
| | mem0 / Letta / Zep | **MemoryMaster** |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| Unit of memory | text chunk / summary | **claim** with status, tier, citations, bitemporal validity |
|
|
23
|
+
| Stale / wrong facts | linger until overwritten | **decay → `stale`**, **conflict detection**, **supersession** |
|
|
24
|
+
| Contradictions | silently coexist | surfaced as **`conflicted`**, auto-resolved (5-tier) or queued for review |
|
|
25
|
+
| Provenance | usually none | **citation per claim** + per-agent provenance |
|
|
26
|
+
| Secret leakage | your problem | **sensitivity filter at ingest** (JWT/AWS/Bearer/SSH redaction) |
|
|
27
|
+
| Operator control | API only | **steward governance** + a **dashboard** you can *see* |
|
|
28
|
+
|
|
29
|
+
If you want an agent that recalls more, any vector store works. If you want an agent that recalls *correctly* — and can prove where a fact came from and retire it when it goes stale — that's the gap MemoryMaster fills.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Architecture
|
|
34
|
+
|
|
35
|
+
MemoryMaster is layered around MCP/CLI entry points, the `MemoryService` facade, SQLite/Postgres
|
|
36
|
+
storage, optional Qdrant vector search, scheduled jobs, and the Obsidian wiki/vault layer. The
|
|
37
|
+
canonical ingest path is:
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
MCP/CLI -> sensitivity filter -> MemoryService.ingest -> store write -> FTS5 index
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The query path is:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
query_memory -> MemoryService.query -> storage reads + optional Qdrant candidates -> ranked context
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
See [docs/architecture.md](docs/architecture.md) for the current module map, data-flow details,
|
|
50
|
+
recent PR status, and sensitivity-filter invariants.
|
|
51
|
+
|
|
52
|
+
## Key features
|
|
53
|
+
|
|
54
|
+
- **6-state lifecycle**: `candidate` → `confirmed` → `stale` → `superseded` → `conflicted` → `archived`
|
|
55
|
+
- **Citation tracking** with provenance for every claim
|
|
56
|
+
- **Hybrid retrieval**: vector (sentence-transformers / Gemini) + FTS5 + freshness + confidence
|
|
57
|
+
- **Context optimizer**: `query_for_context(budget=4000)` returns auto-curated memory that fits your token budget
|
|
58
|
+
- **Entity graph** with typed relationships and alias resolution
|
|
59
|
+
- **Rule-shaped claims** (new in v3.21.0): prescriptive `when <trigger>, do <action> because <rationale>` claims (`ingest_rule` / `query_rules`) — the shape an agent needs to actually change behaviour next time, not just recall a fact
|
|
60
|
+
- **Correction mining** (new in v3.21.0): `mine-rules` scans the verbatim transcript archive for user corrections and distills them into rule claims; the Stop hook also mines each session's latest correction automatically
|
|
61
|
+
- **Versioned schema migrations** (new in v3.20.0): `migrate` applies SQLite/Postgres migrations with sha256 drift detection; incremental `export-delta` ships small claim deltas for cheap cross-machine sync
|
|
62
|
+
- **Retrieval quality** (new in v3.22.0): floor-ratio boost gate (`MEMORYMASTER_BOOST_FLOOR_RATIO`) stops fresh-but-wrong claims outranking the true match; `query --explain` shows per-stage score attribution; an opt-in correctness-safe query cache (`MEMORYMASTER_QUERY_CACHE`) with a generation gate
|
|
63
|
+
- **Semantic contradiction probe** (new in v3.22.0, wired as a steward phase in v3.23.0): `detect-contradictions` finds claims that genuinely contradict each other (beyond the deterministic same-subject conflict check) via an LLM judge with a Wilson-CI rate and verdict cache; in v3.23 the same probe runs inside `run-steward` and emits paste-ready `conflicted` proposals
|
|
64
|
+
- **Verbatim archive cleanup** (new in v3.23.0): `verbatim-cleanup` dedups the raw-transcript table and optionally purges pre-#128 junk rows, with a dry-run default and FTS5 mirror sync
|
|
65
|
+
- **Steward governance**: multi-probe validators (filesystem, format, citation, semantic, tool) with proposal review
|
|
66
|
+
- **Conflict resolution**: 5-tier auto (confidence > freshness > citations > LLM > manual)
|
|
67
|
+
- **Auto-redaction** at ingest: JWT, GitHub tokens, Bearer, AWS keys, SSH keys, custom patterns
|
|
68
|
+
- **LLM Wiki**: compiled-truth + append-only timeline articles with progressive-disclosure frontmatter, `explored: true|false` operator-review marker, and inline `> [!contradiction]` Obsidian callouts
|
|
69
|
+
- **Atlas Inbox V1** (new in v3.13.0): WhatsApp ingestion → source/evidence/action proposal lifecycle → Super-Productivity export. Versioned API/CLI contract for downstream consumers (LifeAgent, etc.) — see [`docs/atlas-api-contract-v1.md`](docs/atlas-api-contract-v1.md). Real provider adapters (`OpenAIWhisperTranscriptionProvider`, `TesseractOcrProvider`) behind `Protocol`s; mock providers stay default.
|
|
70
|
+
- **Dual backend**: SQLite (zero-config) and Postgres (full feature parity with pgvector)
|
|
71
|
+
- **Dream Bridge** for bidirectional sync with Claude Code's Auto Dream
|
|
72
|
+
- **7-hook stack**: recall, classify, validate-wiki, session-start, auto-ingest, precompact, steward-cron
|
|
73
|
+
|
|
74
|
+
Full feature index lives in [`docs/handbook.md`](docs/handbook.md).
|
|
75
|
+
|
|
76
|
+
## Benchmarks
|
|
77
|
+
|
|
78
|
+
**LongMemEval-S (N=500, retrieval-only)** — v3.15.0 now leads the publicly-reported numbers from [agentmemory](https://github.com/rohitg00/agentmemory) on R@5 and MRR, after wiring `sentence-transformers/all-MiniLM-L6-v2` into the bench harness (the v3.14 baseline was unintentionally BM25-only).
|
|
79
|
+
|
|
80
|
+

|
|
81
|
+
|
|
82
|
+
| Metric | v3.14.0 | **v3.15.0** | agentmemory | Δ vs agentmemory |
|
|
83
|
+
|---|---|---|---|---|
|
|
84
|
+
| Recall@5 | 0.894 | **0.966** | 0.952 | **+0.014** ★ |
|
|
85
|
+
| Recall@10 | 0.942 | **0.984** | 0.986 | -0.002 |
|
|
86
|
+
| MRR | 0.799 | **0.902** | 0.882 | **+0.020** ★ |
|
|
87
|
+
|
|
88
|
+
Reproduce: `python tests/bench_longmemeval.py --retrieval-only`. Full methodology, experiment-by-experiment deltas (1 KEEP, 2 REVERT, 3 NULL), and the architectural findings that surfaced along the way live in [`docs/archive/longmemeval-results.md`](docs/archive/longmemeval-results.md) and [`docs/archive/v315-experiments/`](docs/archive/v315-experiments/). QA-accuracy pass (with judge) is deferred until provider quotas allow.
|
|
89
|
+
|
|
90
|
+
## Prerequisites
|
|
91
|
+
|
|
92
|
+
**Required (the package won't function without these)**
|
|
93
|
+
|
|
94
|
+
- Python **3.10+** with `pip`
|
|
95
|
+
- Claude Code, Codex, or any MCP-compatible agent
|
|
96
|
+
- **An LLM provider** — pick one: Claude Code OAuth (free if you're a subscriber, set `MEMORYMASTER_LLM_PROVIDER=claude_cli`), a free Gemini API key from [aistudio.google.com](https://aistudio.google.com), OpenAI, Anthropic API, or local Ollama. The steward, auto-ingest, and wiki-absorb cycles all need an LLM — without one, claims pile up as `candidate` and never get validated, deduped, or compiled into the wiki.
|
|
97
|
+
|
|
98
|
+
**Strongly recommended (you'll lose ~80% of the value without these)**
|
|
99
|
+
|
|
100
|
+
- **Node.js 18+** for [graphify](https://github.com/wolverin0/graphify) and [GitNexus](https://github.com/wolverin0/gitnexus) — these are the cached intelligence layers that make MemoryMaster cheap to query. Without them, every "what does this codebase do?" question burns tokens cold-exploring files the graph already mapped. The `intelligence-first` workflow in `CLAUDE.md` assumes both are installed.
|
|
101
|
+
- **Obsidian 1.6+** with the [Bases](https://help.obsidian.md/Plugins/Bases) core plugin — the wiki engine writes plain Markdown so any editor works, but Obsidian's backlinks, graph view, and Bases dashboards are how you actually navigate `wiki-absorb` output. Without Obsidian, the wiki is just a folder of files.
|
|
102
|
+
|
|
103
|
+
**Optional (nice to have)**
|
|
104
|
+
|
|
105
|
+
- **Docker** for Qdrant — vector retrieval. SQLite FTS5 is the default and works out of the box; add Qdrant when you want semantic recall on top of keyword search.
|
|
106
|
+
|
|
107
|
+
## 15-minute quickstart
|
|
108
|
+
|
|
109
|
+
From zero to a recalled claim and a live dashboard. No Qdrant, no Postgres, no LLM key required for these steps (SQLite + FTS5 is the default).
|
|
110
|
+
|
|
111
|
+
**1. Install (2 min)**
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
pip install "memorymaster[mcp]"
|
|
115
|
+
memorymaster --db memorymaster.db init-db
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**2. Configure a provider (3 min, optional for this walkthrough)**
|
|
119
|
+
|
|
120
|
+
Recall and ingest below work with zero config. An LLM provider is only needed for the steward/wiki cycles — pick one when you're ready (see [Pick your LLM provider](#pick-your-llm-provider)). For a Claude Code subscriber, the cheapest path is:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
export MEMORYMASTER_LLM_PROVIDER=claude_cli # reuses your Claude Code OAuth, no API key
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**3. Ingest a claim via CLI (1 min)**
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
memorymaster --db memorymaster.db ingest \
|
|
130
|
+
--text "Server uses PostgreSQL 16" \
|
|
131
|
+
--source "session://chat|turn-3|user confirmed"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**4. Recall it (1 min)**
|
|
135
|
+
|
|
136
|
+
A freshly-ingested claim starts life as a `candidate` (unvalidated). The CLI `query`/`context` paths *exclude* candidates by default — that's the governance model: unvalidated facts don't silently leak into recall until the steward promotes them. To see your brand-new claim before a validation cycle, pass `--include-candidates`:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Hybrid retrieval (lexical + freshness + confidence)
|
|
140
|
+
memorymaster --db memorymaster.db query "database version" \
|
|
141
|
+
--retrieval-mode hybrid --include-candidates
|
|
142
|
+
|
|
143
|
+
# Token-budgeted context block — the killer feature for agents
|
|
144
|
+
memorymaster --db memorymaster.db context "database" \
|
|
145
|
+
--budget 4000 --format xml --include-candidates
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
You should see the PostgreSQL 16 claim come back, ranked, with its citation. (Drop `--include-candidates` and you'll get zero results until step 7's `run-cycle` promotes it to `confirmed` — that's working as designed, not a bug.)
|
|
149
|
+
|
|
150
|
+
**5. Open the dashboard (2 min)**
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
memorymaster --db memorymaster.db run-dashboard # serves on http://127.0.0.1:8765
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Open the URL: you'll see your claim in **Claims**, plus governance panels — **Conflicts**, **Review Queue**, **Recall Analysis** (why each claim ranked where it did), **Audit Log**, **Provenance by Agent**, and **Reliability**.
|
|
157
|
+
|
|
158
|
+
**6. Wire it into your agent (3 min)**
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
memorymaster-setup # interactive: hooks, MCP, steward cron, CLAUDE.md / AGENTS.md
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
That installs the MCP server and the auto-ingest Stop hook so your agent recalls and stores memory automatically. See [MCP server](#mcp-server) for the config block.
|
|
165
|
+
|
|
166
|
+
**7. Run a validation cycle (1 min, needs a provider)**
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
memorymaster --db memorymaster.db run-cycle # extract, validate, decay, compact
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
For the one-prompt agent install (paste into any agent with shell access), see [`docs/handbook.md#one-prompt-agent-install`](docs/handbook.md#one-prompt-agent-install).
|
|
173
|
+
|
|
174
|
+
## Pick your LLM provider
|
|
175
|
+
|
|
176
|
+
| Provider | Env vars | Default model | Cost |
|
|
177
|
+
|----------|----------|---------------|------|
|
|
178
|
+
| **Claude Code OAuth** (recommended for subscribers) | `MEMORYMASTER_LLM_PROVIDER=claude_cli` (requires `claude` CLI on PATH) | `claude-haiku-4-5-20251001` | included in Claude Code plan |
|
|
179
|
+
| Google Gemini (default) | `MEMORYMASTER_LLM_PROVIDER=google` + `GEMINI_API_KEY=...` | `gemini-3.1-flash-lite-preview` | ~free |
|
|
180
|
+
| OpenAI | `MEMORYMASTER_LLM_PROVIDER=openai` + `OPENAI_API_KEY=...` | `gpt-4o-mini` | ~$0.001/call |
|
|
181
|
+
| Anthropic API | `MEMORYMASTER_LLM_PROVIDER=anthropic` + `ANTHROPIC_API_KEY=...` | `claude-haiku-4-5-20251001` | ~$0.001/call |
|
|
182
|
+
| Ollama (local) | `MEMORYMASTER_LLM_PROVIDER=ollama` + `OLLAMA_URL=http://localhost:11434` | `llama3.2:3b` | free |
|
|
183
|
+
|
|
184
|
+
The `claude_cli` provider shells out to your local `claude --print` binary, so it inherits the OAuth session you're already logged into in Claude Code — no API key, no rotator, no quota juggling. **Caveat**: cold-start adds 3-15s per call (subprocess spawn), so it's ideal for batched/cron paths (steward, wiki-absorb) and not for latency-sensitive recall. Override with `MEMORYMASTER_CLAUDE_CLI_BIN` and `MEMORYMASTER_CLAUDE_CLI_TIMEOUT`. On VM installs the OAuth token expires ~24h, so pair with `MEMORYMASTER_LLM_FALLBACK_PROVIDER=ollama`; desktop tokens don't expire.
|
|
185
|
+
|
|
186
|
+
For zero-cost offline use, install [Ollama](https://ollama.com), `ollama pull llama3.2:3b`, and set `MEMORYMASTER_LLM_PROVIDER=ollama`.
|
|
187
|
+
|
|
188
|
+
## MCP server
|
|
189
|
+
|
|
190
|
+
```json
|
|
191
|
+
{
|
|
192
|
+
"mcpServers": {
|
|
193
|
+
"memorymaster": {
|
|
194
|
+
"command": "memorymaster-mcp",
|
|
195
|
+
"env": {
|
|
196
|
+
"MEMORYMASTER_DEFAULT_DB": "/path/to/memorymaster.db",
|
|
197
|
+
"MEMORYMASTER_WORKSPACE": "/path/to/your/project"
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
30 MCP tools spanning setup/lifecycle, ingest, query/retrieval, listing, knowledge graph, and governance: `init_db`, `ingest_claim`, `ingest_rule`, `query_rules`, `rules_export`, `run_cycle`, `run_steward`, `classify_query`, `query_memory`, `query_for_context`, `query_for_task`, `query_claim_paths`, `query_meta_decisions`, `federated_query`, `recall_analysis`, `read_active_tasks`, `list_claims`, `redact_claim_payload`, `pin_claim`, `compact_memory`, `list_events`, `search_verbatim`, `open_dashboard`, `list_steward_proposals`, `resolve_steward_proposal`, `extract_entities`, `entity_stats`, `find_related_claims`, `quality_scores`, `recompute_tiers`.
|
|
205
|
+
|
|
206
|
+
See [`docs/MCP-TOOLS.md`](docs/MCP-TOOLS.md) for the grouped reference (one line per tool), and [`.mcp.json.example`](.mcp.json.example) for the full config template.
|
|
207
|
+
|
|
208
|
+
## Backends
|
|
209
|
+
|
|
210
|
+
| Backend | Install | Use case |
|
|
211
|
+
|---------|---------|----------|
|
|
212
|
+
| **SQLite** | Built-in | Local development, single-agent, zero-config |
|
|
213
|
+
| **Postgres** | `pip install "memorymaster[postgres]"` | Team deployment, multi-agent, pgvector search |
|
|
214
|
+
|
|
215
|
+
## Docker Compose
|
|
216
|
+
|
|
217
|
+
Run the full stack (MemoryMaster + Qdrant + Ollama) with one command:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
docker compose up -d
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
See [INSTALLATION.md](INSTALLATION.md) for Kubernetes / Helm.
|
|
224
|
+
|
|
225
|
+
## Development
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
# Install with dev dependencies
|
|
229
|
+
pip install -e ".[dev,mcp,security,embeddings,qdrant]"
|
|
230
|
+
|
|
231
|
+
# Run tests
|
|
232
|
+
pytest tests/ -q
|
|
233
|
+
|
|
234
|
+
# Lint and format
|
|
235
|
+
ruff check memorymaster/ && ruff format memorymaster/
|
|
236
|
+
|
|
237
|
+
# Performance benchmarks
|
|
238
|
+
python benchmarks/perf_smoke.py
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full workflow.
|
|
242
|
+
|
|
243
|
+
## Documentation
|
|
244
|
+
|
|
245
|
+
| Document | Description |
|
|
246
|
+
|----------|-------------|
|
|
247
|
+
| [docs/README.md](docs/README.md) | Documentation index — where to find each living doc |
|
|
248
|
+
| [docs/handbook.md](docs/handbook.md) | Full operator handbook — hooks, dashboard, steward, dream bridge, troubleshooting, one-prompt install |
|
|
249
|
+
| [docs/MCP-TOOLS.md](docs/MCP-TOOLS.md) | Reference for all 30 MCP tools, grouped by purpose |
|
|
250
|
+
| [docs/INTEGRATING.md](docs/INTEGRATING.md) | Integration guide for embedding MemoryMaster in your agent |
|
|
251
|
+
| [INSTALLATION.md](INSTALLATION.md) | Setup guide: pip, Docker, Helm, MCP config |
|
|
252
|
+
| [CONTRIBUTING.md](CONTRIBUTING.md) | Dev setup, testing, PR workflow |
|
|
253
|
+
| [ARCHITECTURE.md](ARCHITECTURE.md) | System design and subsystem details |
|
|
254
|
+
| [USER_GUIDE.md](USER_GUIDE.md) | Usage, MCP integration, troubleshooting |
|
|
255
|
+
| [CHANGELOG.md](CHANGELOG.md) | Version history and release notes |
|
|
256
|
+
| [ROADMAP.md](ROADMAP.md) | Release plan and future tracks |
|
|
257
|
+
| [docs/enabling-v2-systems.md](docs/enabling-v2-systems.md) | v3 statistical classifier + cadence policy opt-in |
|
|
258
|
+
|
|
259
|
+
## License
|
|
260
|
+
|
|
261
|
+
[MIT](LICENSE) — Built by [wolverin0](https://github.com/wolverin0)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Deprecated compatibility shim — moved to ``memorymaster.stores._storage_lifecycle``.
|
|
2
|
+
|
|
3
|
+
P2 restructure: this alias keeps the old import path (including submodule
|
|
4
|
+
attribute access) working for one minor version. Update imports to
|
|
5
|
+
``memorymaster.stores._storage_lifecycle``.
|
|
6
|
+
"""
|
|
7
|
+
import sys as _sys
|
|
8
|
+
|
|
9
|
+
from memorymaster.stores import _storage_lifecycle as _new
|
|
10
|
+
|
|
11
|
+
_sys.modules[__name__] = _new
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Deprecated compatibility shim — moved to ``memorymaster.stores._storage_read``.
|
|
2
|
+
|
|
3
|
+
P2 restructure: this alias keeps the old import path (including submodule
|
|
4
|
+
attribute access) working for one minor version. Update imports to
|
|
5
|
+
``memorymaster.stores._storage_read``.
|
|
6
|
+
"""
|
|
7
|
+
import sys as _sys
|
|
8
|
+
|
|
9
|
+
from memorymaster.stores import _storage_read as _new
|
|
10
|
+
|
|
11
|
+
_sys.modules[__name__] = _new
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Deprecated compatibility shim — moved to ``memorymaster.stores._storage_schema``.
|
|
2
|
+
|
|
3
|
+
P2 restructure: this alias keeps the old import path (including submodule
|
|
4
|
+
attribute access) working for one minor version. Update imports to
|
|
5
|
+
``memorymaster.stores._storage_schema``.
|
|
6
|
+
"""
|
|
7
|
+
import sys as _sys
|
|
8
|
+
|
|
9
|
+
from memorymaster.stores import _storage_schema as _new
|
|
10
|
+
|
|
11
|
+
_sys.modules[__name__] = _new
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Deprecated compatibility shim — moved to ``memorymaster.stores._storage_shared``.
|
|
2
|
+
|
|
3
|
+
P2 restructure: this alias keeps the old import path (including submodule
|
|
4
|
+
attribute access) working for one minor version. Update imports to
|
|
5
|
+
``memorymaster.stores._storage_shared``.
|
|
6
|
+
"""
|
|
7
|
+
import sys as _sys
|
|
8
|
+
|
|
9
|
+
from memorymaster.stores import _storage_shared as _new
|
|
10
|
+
|
|
11
|
+
_sys.modules[__name__] = _new
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Deprecated compatibility shim — moved to ``memorymaster.stores._storage_sources``.
|
|
2
|
+
|
|
3
|
+
P2 restructure: this alias keeps the old import path (including submodule
|
|
4
|
+
attribute access) working for one minor version. Update imports to
|
|
5
|
+
``memorymaster.stores._storage_sources``.
|
|
6
|
+
"""
|
|
7
|
+
import sys as _sys
|
|
8
|
+
|
|
9
|
+
from memorymaster.stores import _storage_sources as _new
|
|
10
|
+
|
|
11
|
+
_sys.modules[__name__] = _new
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Deprecated compatibility shim — moved to ``memorymaster.stores._storage_write_claims``.
|
|
2
|
+
|
|
3
|
+
P2 restructure: this alias keeps the old import path (including submodule
|
|
4
|
+
attribute access) working for one minor version. Update imports to
|
|
5
|
+
``memorymaster.stores._storage_write_claims``.
|
|
6
|
+
"""
|
|
7
|
+
import sys as _sys
|
|
8
|
+
|
|
9
|
+
from memorymaster.stores import _storage_write_claims as _new
|
|
10
|
+
|
|
11
|
+
_sys.modules[__name__] = _new
|