memorymaster 3.6.0__tar.gz → 3.9.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-3.6.0/memorymaster.egg-info → memorymaster-3.9.0}/PKG-INFO +231 -231
- {memorymaster-3.6.0 → memorymaster-3.9.0}/README.md +187 -187
- {memorymaster-3.6.0 → memorymaster-3.9.0}/artifacts/bm25-per-field-eval-harness.py +309 -309
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/__init__.py +5 -5
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/_storage_lifecycle.py +552 -552
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/_storage_read.py +654 -654
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/_storage_schema.py +652 -652
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/_storage_shared.py +41 -41
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/_storage_write_claims.py +353 -353
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/access_control.py +126 -126
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/auto_extractor.py +139 -139
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/auto_resolver.py +220 -220
- memorymaster-3.9.0/memorymaster/claim_edges.py +209 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/cli.py +442 -442
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/cli_handlers_basic.py +716 -716
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/cli_handlers_curation.py +893 -893
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/cli_helpers.py +138 -138
- memorymaster-3.9.0/memorymaster/closets.py +232 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/hooks/memorymaster-auto-ingest.py +222 -222
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/hooks/memorymaster-classify.py +304 -304
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/hooks/memorymaster-dream-sync.py +27 -27
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/hooks/memorymaster-observe.py +39 -39
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/hooks/memorymaster-precompact.py +76 -76
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/hooks/memorymaster-recall.py +32 -32
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/hooks/memorymaster-session-start.py +272 -272
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/hooks/memorymaster-steward-cycle.py +60 -60
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/context_hook.py +1710 -1561
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/context_optimizer.py +253 -253
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/dashboard.py +1059 -1059
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/db_merge.py +156 -156
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/dream_bridge.py +697 -697
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/embeddings.py +199 -199
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/entity_extractor.py +767 -718
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/entity_graph.py +313 -313
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/entity_registry.py +456 -456
- memorymaster-3.9.0/memorymaster/federated_graphify.py +154 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/feedback.py +247 -247
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/graph_store.py +570 -570
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/hook_log.py +65 -65
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/jobs/__init__.py +5 -5
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/jobs/decay.py +50 -50
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/jobs/deterministic.py +376 -376
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/jobs/validator.py +233 -233
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/key_rotator.py +176 -176
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/llm_provider.py +512 -512
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/llm_steward.py +847 -847
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/mcp_server.py +962 -962
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/metrics_exporter.py +1 -1
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/models.py +336 -336
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/operator.py +1453 -1453
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/policy.py +133 -133
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/postgres_store.py +1665 -1665
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/qdrant_backend.py +327 -327
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/qdrant_recall_fallback.py +305 -305
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/query_expansion.py +184 -184
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/recall_fusion.py +79 -79
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/recall_tokenizer.py +305 -305
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/retrieval.py +237 -237
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/scheduler.py +98 -98
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/schema.sql +123 -123
- memorymaster-3.9.0/memorymaster/scope_utils.py +109 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/security.py +363 -363
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/service.py +792 -792
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/session_tracker.py +129 -129
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/setup_hooks.py +404 -404
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/skill_evolver.py +161 -161
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/steward.py +1627 -1627
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/steward_classifier.py +149 -149
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/steward_features.py +345 -345
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/storage.py +101 -101
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/vault_linter.py +301 -301
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/verbatim_recall.py +296 -296
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/webhook.py +58 -58
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/wiki_freshness.py +228 -228
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/wiki_similarity.py +621 -621
- memorymaster-3.9.0/memorymaster/wiki_validate.py +299 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0/memorymaster.egg-info}/PKG-INFO +231 -231
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster.egg-info/SOURCES.txt +14 -44
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster.egg-info/top_level.txt +0 -4
- {memorymaster-3.6.0 → memorymaster-3.9.0}/pyproject.toml +72 -72
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/agg_recall_latency.py +184 -184
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/alert_operator_metrics.py +1 -1
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/backfill_entity_extraction.py +327 -327
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/backfill_graph_store.py +264 -264
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/backfill_stop_hook_citations.py +137 -137
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/backtest_steward_classifier.py +757 -757
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/build_steward_training_set.py +119 -119
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/check_hook_template_drift.py +143 -143
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/eval_bm25_sweep.py +432 -432
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/eval_classify_f1.py +226 -226
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/eval_recall_precision_at_5.py +468 -468
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/eval_recall_quality.py +132 -132
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/eval_steward_pareto.py +273 -273
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/eval_verbatim_recall.py +216 -216
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/expand_recall_eval.py +404 -404
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/gitnexus_to_claims.py +180 -180
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/grid_recall_weights.py +191 -191
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/index_claims_to_qdrant.py +315 -315
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/ingest_planning_docs.py +170 -170
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/label_prompts_with_judge.py +211 -211
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/merge_scope_variants.py +216 -216
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/precompute_candidates.py +94 -94
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/run_longmemeval.py +997 -997
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/scheduled_ingest.py +595 -595
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/setup-hooks.py +10 -10
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/sync_hook_templates.py +117 -117
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/train_steward_classifier.py +457 -457
- {memorymaster-3.6.0 → memorymaster-3.9.0}/setup.cfg +4 -4
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/conftest.py +37 -37
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/integration/test_extract_llm_ollama_live.py +49 -49
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_auto_ingest_hook_citations.py +147 -147
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_auto_validate.py +197 -197
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_bm25_per_field.py +222 -222
- memorymaster-3.9.0/tests/test_claim_edges.py +167 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_claim_links.py +288 -288
- memorymaster-3.9.0/tests/test_claim_type_ranking.py +84 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_classify_hook_f1.py +85 -85
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_classify_hook_latency.py +91 -91
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_cli_review_queue.py +1 -1
- memorymaster-3.9.0/tests/test_closets.py +143 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_compaction_trace.py +1 -1
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_connectors.py +473 -473
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_context_hook.py +260 -260
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_deterministic_predicates.py +1 -1
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_entity_extractor.py +150 -150
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_entity_extractor_llm.py +296 -296
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_entity_new_kinds.py +241 -241
- memorymaster-3.9.0/tests/test_entity_regex_v3.py +71 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_entity_registry.py +406 -406
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_eval_harness.py +291 -291
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_events_schema.py +1 -1
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_extract_llm_ollama.py +140 -140
- memorymaster-3.9.0/tests/test_federated_graphify_mcp.py +136 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_fts5_search.py +169 -169
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_graph_distance.py +233 -233
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_graph_store.py +321 -321
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_hook_env_isolation.py +79 -79
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_integration_workflows.py +534 -534
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_key_rotator.py +159 -159
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_llm_fallback.py +219 -219
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_llm_provider_claude_cli.py +186 -186
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_mcp_helpers.py +412 -412
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_metrics_exporter.py +1 -1
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_operator.py +379 -379
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_policy_mode_env.py +91 -91
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_postgres_parity.py +625 -625
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_query_expansion.py +264 -264
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_recall_entity_fanout.py +459 -459
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_recall_fusion.py +94 -94
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_recall_latency.py +275 -275
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_recall_precision_at_5.py +261 -261
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_recall_tokenizer.py +234 -234
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_recall_vector_fallback.py +306 -306
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_reliability_hardening.py +1 -1
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_rl_trainer.py +232 -232
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_rrf_auto_gate.py +223 -223
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_scope_boost.py +298 -298
- memorymaster-3.9.0/tests/test_scope_utils.py +112 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_security_patterns.py +249 -249
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_sensitivity_filter_adversarial.py +93 -93
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_sensitivity_filter_adversarial_v2.py +153 -153
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_sqlite_core.py +255 -255
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_steward.py +348 -348
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_steward_classifier.py +261 -261
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_steward_features.py +174 -174
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_steward_features_v3.py +254 -254
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_steward_resolution_parity.py +219 -219
- memorymaster-3.9.0/tests/test_two_pass_recall.py +86 -0
- memorymaster-3.9.0/tests/test_v390_e2e.py +151 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_vault_exporter.py +381 -381
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_vector_search.py +367 -367
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_verbatim_recall.py +321 -321
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_wiki_freshness.py +281 -281
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_wiki_similarity_multiscope.py +270 -270
- memorymaster-3.9.0/tests/test_wiki_validate_cli.py +193 -0
- memorymaster-3.6.0/artifacts/l2-haiku-batches/extract.py +0 -66
- memorymaster-3.6.0/cloned/MetaClaw/examples/run_conversation_opd.py +0 -64
- memorymaster-3.6.0/cloned/MetaClaw/examples/run_conversation_replay.py +0 -242
- memorymaster-3.6.0/cloned/MetaClaw/examples/run_conversation_rl.py +0 -118
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/__init__.py +0 -39
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/__main__.py +0 -5
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/api_server.py +0 -1782
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/bedrock_client.py +0 -195
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/calendar_client.py +0 -290
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/claw_adapter.py +0 -597
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/cli.py +0 -559
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/config.py +0 -200
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/config_store.py +0 -283
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/data_formatter.py +0 -242
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/idle_detector.py +0 -122
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/launcher.py +0 -273
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/log_color.py +0 -150
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/openclaw_env_rollout.py +0 -384
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/prm_scorer.py +0 -244
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/rollout.py +0 -189
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/runtime_state.py +0 -131
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/scheduler.py +0 -254
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/sdk_backend.py +0 -166
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/setup_wizard.py +0 -420
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/skill_evolver.py +0 -463
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/skill_manager.py +0 -487
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/trainer.py +0 -560
- memorymaster-3.6.0/cloned/MetaClaw/metaclaw/utils.py +0 -161
- memorymaster-3.6.0/cloned/MetaClaw/scripts/run_v03_benchmark.py +0 -310
- memorymaster-3.6.0/cloned/MetaClaw/tests/conftest.py +0 -7
- memorymaster-3.6.0/cloned/MetaClaw/tests/test_cli.py +0 -352
- memorymaster-3.6.0/cloned/MetaClaw/tests/test_launcher.py +0 -98
- memorymaster-3.6.0/cloned/MetaClaw/tests/test_openclaw_env_rollout.py +0 -153
- memorymaster-3.6.0/cloned/MetaClaw/tests/test_runtime_state.py +0 -62
- memorymaster-3.6.0/cloned/MetaClaw/tests/test_sdk_backend.py +0 -144
- memorymaster-3.6.0/cloned/MetaClaw/tests/test_setup_wizard.py +0 -130
- memorymaster-3.6.0/cloned/MetaClaw/tests/test_utils.py +0 -211
- memorymaster-3.6.0/cloned/MetaClaw/tests/test_v03_live_tinker.py +0 -743
- memorymaster-3.6.0/cloned/agent-skill-creator/references/examples/stock-analyzer/scripts/main.py +0 -397
- memorymaster-3.6.0/cloned/agent-skill-creator/scripts/export_utils.py +0 -845
- memorymaster-3.6.0/cloned/agent-skill-creator/scripts/security_scan.py +0 -423
- memorymaster-3.6.0/cloned/agent-skill-creator/scripts/skill_registry.py +0 -823
- memorymaster-3.6.0/cloned/agent-skill-creator/scripts/staleness_check.py +0 -796
- memorymaster-3.6.0/cloned/agent-skill-creator/scripts/validate.py +0 -461
- {memorymaster-3.6.0 → memorymaster-3.9.0}/LICENSE +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/benchmarks/longmemeval_runner.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/benchmarks/longmemeval_vector_runner.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/benchmarks/perf_smoke.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/__main__.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/claim_verifier.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/claude-md-append.md +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/codex-agents-md-append.md +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/config_templates/hooks/memorymaster-validate-wiki.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/conflict_resolver.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/daily_notes.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/jobs/compact_summaries.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/jobs/compactor.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/jobs/dedup.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/jobs/extractor.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/jobs/staleness.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/lifecycle.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/operator_queue.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/plugins.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/qmd_bridge.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/query_classifier.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/retry.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/review.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/rl_trainer.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/schema.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/schema_postgres.sql +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/snapshot.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/store_factory.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/transcript_miner.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/turn_schema.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/vault_bases.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/vault_curator.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/vault_exporter.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/vault_log.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/vault_query_capture.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/vault_synthesis.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/verbatim_store.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster/wiki_engine.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster.egg-info/dependency_links.txt +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster.egg-info/entry_points.txt +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/memorymaster.egg-info/requires.txt +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/autoresearch_daemon.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/claude_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/codex_live_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/compaction_edge_cases.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/compaction_trace_report.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/compaction_trace_validate.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/confusion_matrix_eval.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/conversation_importer.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/conversation_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/e2e_operator.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/email_live_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/eval_memorymaster.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/generate_drill_signoff.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/git_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/github_live_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/jira_live_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/llm_benchmark.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/messages_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/operator_metrics.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/recurring_incident_drill.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/release_readiness.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/run_codex_autologger.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/run_incident_drill.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/slack_live_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/tickets_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/scripts/webhook_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_access_control.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_auto_extractor.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_auto_ingest_hook_schema.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_auto_resolver.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_claude_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_cli_json_flag.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_cli_ready.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_cli_subcommands.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_compact_summaries.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_config.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_conflict_resolver.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_confusion_matrix_eval.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_connection_retry.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_context_optimizer.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_conversation_to_turns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_dashboard.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_dedup.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_embeddings_coverage.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_entity_graph.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_feedback.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_handler_regressions.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_human_id.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_incident_drill_runner.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_lifecycle.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_llm_steward_coverage.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_llm_steward_key_rotation.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_obsidian_mind_patterns.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_operator_queue.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_perf_smoke_config.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_plugins.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_policy_coverage.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_qdrant_backend.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_qmd_bridge.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_query_classifier.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_review.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_scheduler.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_schema.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_security_access.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_service_coverage.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_session_tracker.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_snapshot.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_staleness.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_stealth_mode.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_store_factory.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_tenant_isolation.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_turn_schema.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_webhook.py +0 -0
- {memorymaster-3.6.0 → memorymaster-3.9.0}/tests/test_wiki_binding.py +0 -0
|
@@ -1,231 +1,231 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: memorymaster
|
|
3
|
-
Version: 3.
|
|
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
|
-
Provides-Extra: postgres
|
|
21
|
-
Requires-Dist: psycopg[binary]>=3.2; extra == "postgres"
|
|
22
|
-
Provides-Extra: security
|
|
23
|
-
Requires-Dist: cryptography>=42; extra == "security"
|
|
24
|
-
Provides-Extra: embeddings
|
|
25
|
-
Requires-Dist: sentence-transformers>=3.0; extra == "embeddings"
|
|
26
|
-
Provides-Extra: gemini
|
|
27
|
-
Requires-Dist: google-genai>=1.0; extra == "gemini"
|
|
28
|
-
Provides-Extra: qdrant
|
|
29
|
-
Requires-Dist: httpx>=0.27; extra == "qdrant"
|
|
30
|
-
Provides-Extra: vector
|
|
31
|
-
Requires-Dist: sentence-transformers>=3.0; extra == "vector"
|
|
32
|
-
Requires-Dist: qdrant-client>=1.9; extra == "vector"
|
|
33
|
-
Provides-Extra: graph
|
|
34
|
-
Requires-Dist: kuzu>=0.4; extra == "graph"
|
|
35
|
-
Provides-Extra: dev
|
|
36
|
-
Requires-Dist: pytest>=8.2; extra == "dev"
|
|
37
|
-
Requires-Dist: pytest-cov>=6.0; extra == "dev"
|
|
38
|
-
Provides-Extra: mcp
|
|
39
|
-
Requires-Dist: mcp>=1.2; extra == "mcp"
|
|
40
|
-
Provides-Extra: ml
|
|
41
|
-
Requires-Dist: scikit-learn>=1.3; extra == "ml"
|
|
42
|
-
Requires-Dist: joblib>=1.3; extra == "ml"
|
|
43
|
-
Dynamic: license-file
|
|
44
|
-
|
|
45
|
-
# MemoryMaster
|
|
46
|
-
|
|
47
|
-
**Production-grade memory reliability system for AI coding agents.**
|
|
48
|
-
|
|
49
|
-
Lifecycle-managed claims with citations, conflict detection, steward governance, hybrid retrieval, and MCP integration. Give your AI agents persistent, trustworthy memory.
|
|
50
|
-
|
|
51
|
-
[](LICENSE)
|
|
52
|
-
[](https://www.python.org/downloads/)
|
|
53
|
-
[]()
|
|
54
|
-
[]()
|
|
55
|
-
[]()
|
|
56
|
-
[](https://pypi.org/project/memorymaster/)
|
|
57
|
-
|
|
58
|
-
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.
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Architecture
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
66
|
-
│ Agent Runtime │
|
|
67
|
-
│ (Claude Code / Codex / any MCP-compatible agent) │
|
|
68
|
-
└────────────┬────────────────────────────────┬───────────────────┘
|
|
69
|
-
│ MCP (22 tools) │ CLI (64 commands)
|
|
70
|
-
v v
|
|
71
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
72
|
-
│ MemoryMaster Core │
|
|
73
|
-
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌───────────────┐ │
|
|
74
|
-
│ │ Ingestor │ │ Extractor │ │ Validator │ │ State Engine │ │
|
|
75
|
-
│ │ (events) │->│ (claims) │->│ (probes) │->│ (6-state FSM) │ │
|
|
76
|
-
│ └──────────┘ └───────────┘ └──────────┘ └───────────────┘ │
|
|
77
|
-
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌───────────────┐ │
|
|
78
|
-
│ │ Retrieval│ │ Compactor │ │ Steward │ │ Dashboard │ │
|
|
79
|
-
│ │ (hybrid) │ │ (archive) │ │ (govern) │ │ (HTML+SSE) │ │
|
|
80
|
-
│ └──────────┘ └───────────┘ └──────────┘ └───────────────┘ │
|
|
81
|
-
└────────┬──────────────┬──────────────┬──────────┬───────────────┘
|
|
82
|
-
v v v v
|
|
83
|
-
SQLite/Postgres Qdrant Ollama/CLI Claude Code
|
|
84
|
-
(vectors) (LLM stack) Auto Dream + Vault
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## Key features
|
|
88
|
-
|
|
89
|
-
- **6-state lifecycle**: `candidate` → `confirmed` → `stale` → `superseded` → `conflicted` → `archived`
|
|
90
|
-
- **Citation tracking** with provenance for every claim
|
|
91
|
-
- **Hybrid retrieval**: vector (sentence-transformers / Gemini) + FTS5 + freshness + confidence
|
|
92
|
-
- **Context optimizer**: `query_for_context(budget=4000)` returns auto-curated memory that fits your token budget
|
|
93
|
-
- **Entity graph** with typed relationships and alias resolution
|
|
94
|
-
- **Steward governance**: multi-probe validators (filesystem, format, citation, semantic, tool) with proposal review
|
|
95
|
-
- **Conflict resolution**: 5-tier auto (confidence > freshness > citations > LLM > manual)
|
|
96
|
-
- **Auto-redaction** at ingest: JWT, GitHub tokens, Bearer, AWS keys, SSH keys, custom patterns
|
|
97
|
-
- **LLM Wiki**: compiled-truth + append-only timeline articles with progressive-disclosure frontmatter
|
|
98
|
-
- **Dual backend**: SQLite (zero-config) and Postgres (full feature parity with pgvector)
|
|
99
|
-
- **Dream Bridge** for bidirectional sync with Claude Code's Auto Dream
|
|
100
|
-
- **7-hook stack**: recall, classify, validate-wiki, session-start, auto-ingest, precompact, steward-cron
|
|
101
|
-
|
|
102
|
-
Full feature index lives in [`docs/handbook.md`](docs/handbook.md).
|
|
103
|
-
|
|
104
|
-
## Prerequisites
|
|
105
|
-
|
|
106
|
-
**Required**
|
|
107
|
-
|
|
108
|
-
- Python **3.10+** with `pip`
|
|
109
|
-
- Claude Code, Codex, or any MCP-compatible agent
|
|
110
|
-
|
|
111
|
-
**Optional**
|
|
112
|
-
|
|
113
|
-
- **Already a Claude Code subscriber?** No API key needed — set `MEMORYMASTER_LLM_PROVIDER=claude_cli` and the steward + auto-ingest hooks will use your existing OAuth via the local `claude --print` binary
|
|
114
|
-
- A free Gemini API key from [aistudio.google.com](https://aistudio.google.com) — powers the auto-ingest hook at ~zero cost
|
|
115
|
-
- **Node.js 18+** for graphify and GitNexus
|
|
116
|
-
- **Obsidian 1.6+** with the Bases core plugin (for visual wiki browsing)
|
|
117
|
-
- **Docker** for Qdrant (SQLite FTS5 is the default and works out of the box)
|
|
118
|
-
|
|
119
|
-
## Quick start
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
pip install "memorymaster[mcp]"
|
|
123
|
-
memorymaster --db memorymaster.db init-db
|
|
124
|
-
memorymaster-setup # interactive: hooks, MCP, steward cron, CLAUDE.md / AGENTS.md
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
That's enough to use the CLI, the MCP server, and the auto-ingest Stop hook.
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
# Ingest a claim with citation
|
|
131
|
-
memorymaster --db memorymaster.db ingest \
|
|
132
|
-
--text "Server uses PostgreSQL 16" \
|
|
133
|
-
--source "session://chat|turn-3|user confirmed"
|
|
134
|
-
|
|
135
|
-
# Query memory (hybrid retrieval)
|
|
136
|
-
memorymaster --db memorymaster.db query "database version" --retrieval-mode hybrid
|
|
137
|
-
|
|
138
|
-
# Context optimizer — the killer feature for agents
|
|
139
|
-
memorymaster --db memorymaster.db context "auth patterns" --budget 4000 --format xml
|
|
140
|
-
|
|
141
|
-
# Run validation cycle
|
|
142
|
-
memorymaster --db memorymaster.db run-cycle
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
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).
|
|
146
|
-
|
|
147
|
-
## Pick your LLM provider
|
|
148
|
-
|
|
149
|
-
| Provider | Env vars | Default model | Cost |
|
|
150
|
-
|----------|----------|---------------|------|
|
|
151
|
-
| **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 |
|
|
152
|
-
| Google Gemini (default) | `MEMORYMASTER_LLM_PROVIDER=google` + `GEMINI_API_KEY=...` | `gemini-3.1-flash-lite-preview` | ~free |
|
|
153
|
-
| OpenAI | `MEMORYMASTER_LLM_PROVIDER=openai` + `OPENAI_API_KEY=...` | `gpt-4o-mini` | ~$0.001/call |
|
|
154
|
-
| Anthropic API | `MEMORYMASTER_LLM_PROVIDER=anthropic` + `ANTHROPIC_API_KEY=...` | `claude-haiku-4-5-20251001` | ~$0.001/call |
|
|
155
|
-
| Ollama (local) | `MEMORYMASTER_LLM_PROVIDER=ollama` + `OLLAMA_URL=http://localhost:11434` | `llama3.2:3b` | free |
|
|
156
|
-
|
|
157
|
-
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.
|
|
158
|
-
|
|
159
|
-
For zero-cost offline use, install [Ollama](https://ollama.com), `ollama pull llama3.2:3b`, and set `MEMORYMASTER_LLM_PROVIDER=ollama`.
|
|
160
|
-
|
|
161
|
-
## MCP server
|
|
162
|
-
|
|
163
|
-
```json
|
|
164
|
-
{
|
|
165
|
-
"mcpServers": {
|
|
166
|
-
"memorymaster": {
|
|
167
|
-
"command": "memorymaster-mcp",
|
|
168
|
-
"env": {
|
|
169
|
-
"MEMORYMASTER_DEFAULT_DB": "/path/to/memorymaster.db",
|
|
170
|
-
"MEMORYMASTER_WORKSPACE": "/path/to/your/project"
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
22 MCP tools: `init_db`, `ingest_claim`, `run_cycle`, `run_steward`, `classify_query`, `query_memory`, `query_for_context`, `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`, `federated_query`.
|
|
178
|
-
|
|
179
|
-
See [`.mcp.json.example`](.mcp.json.example) for the full template.
|
|
180
|
-
|
|
181
|
-
## Backends
|
|
182
|
-
|
|
183
|
-
| Backend | Install | Use case |
|
|
184
|
-
|---------|---------|----------|
|
|
185
|
-
| **SQLite** | Built-in | Local development, single-agent, zero-config |
|
|
186
|
-
| **Postgres** | `pip install "memorymaster[postgres]"` | Team deployment, multi-agent, pgvector search |
|
|
187
|
-
|
|
188
|
-
## Docker Compose
|
|
189
|
-
|
|
190
|
-
Run the full stack (MemoryMaster + Qdrant + Ollama) with one command:
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
docker compose up -d
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
See [INSTALLATION.md](INSTALLATION.md) for Kubernetes / Helm.
|
|
197
|
-
|
|
198
|
-
## Development
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
# Install with dev dependencies
|
|
202
|
-
pip install -e ".[dev,mcp,security,embeddings,qdrant]"
|
|
203
|
-
|
|
204
|
-
# Run tests
|
|
205
|
-
pytest tests/ -q
|
|
206
|
-
|
|
207
|
-
# Lint and format
|
|
208
|
-
ruff check memorymaster/ && ruff format memorymaster/
|
|
209
|
-
|
|
210
|
-
# Performance benchmarks
|
|
211
|
-
python benchmarks/perf_smoke.py
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full workflow.
|
|
215
|
-
|
|
216
|
-
## Documentation
|
|
217
|
-
|
|
218
|
-
| Document | Description |
|
|
219
|
-
|----------|-------------|
|
|
220
|
-
| [docs/handbook.md](docs/handbook.md) | Full operator handbook — hooks, dashboard, steward, dream bridge, troubleshooting, one-prompt install |
|
|
221
|
-
| [INSTALLATION.md](INSTALLATION.md) | Setup guide: pip, Docker, Helm, MCP config |
|
|
222
|
-
| [CONTRIBUTING.md](CONTRIBUTING.md) | Dev setup, testing, PR workflow |
|
|
223
|
-
| [ARCHITECTURE.md](ARCHITECTURE.md) | System design and subsystem details |
|
|
224
|
-
| [USER_GUIDE.md](USER_GUIDE.md) | Usage, MCP integration, troubleshooting |
|
|
225
|
-
| [CHANGELOG.md](CHANGELOG.md) | Version history and release notes |
|
|
226
|
-
| [ROADMAP.md](ROADMAP.md) | Release plan and future tracks |
|
|
227
|
-
| [docs/enabling-v2-systems.md](docs/enabling-v2-systems.md) | v3 statistical classifier + cadence policy opt-in |
|
|
228
|
-
|
|
229
|
-
## License
|
|
230
|
-
|
|
231
|
-
[MIT](LICENSE) — Built by [wolverin0](https://github.com/wolverin0)
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: memorymaster
|
|
3
|
+
Version: 3.9.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
|
+
Provides-Extra: postgres
|
|
21
|
+
Requires-Dist: psycopg[binary]>=3.2; extra == "postgres"
|
|
22
|
+
Provides-Extra: security
|
|
23
|
+
Requires-Dist: cryptography>=42; extra == "security"
|
|
24
|
+
Provides-Extra: embeddings
|
|
25
|
+
Requires-Dist: sentence-transformers>=3.0; extra == "embeddings"
|
|
26
|
+
Provides-Extra: gemini
|
|
27
|
+
Requires-Dist: google-genai>=1.0; extra == "gemini"
|
|
28
|
+
Provides-Extra: qdrant
|
|
29
|
+
Requires-Dist: httpx>=0.27; extra == "qdrant"
|
|
30
|
+
Provides-Extra: vector
|
|
31
|
+
Requires-Dist: sentence-transformers>=3.0; extra == "vector"
|
|
32
|
+
Requires-Dist: qdrant-client>=1.9; extra == "vector"
|
|
33
|
+
Provides-Extra: graph
|
|
34
|
+
Requires-Dist: kuzu>=0.4; extra == "graph"
|
|
35
|
+
Provides-Extra: dev
|
|
36
|
+
Requires-Dist: pytest>=8.2; extra == "dev"
|
|
37
|
+
Requires-Dist: pytest-cov>=6.0; extra == "dev"
|
|
38
|
+
Provides-Extra: mcp
|
|
39
|
+
Requires-Dist: mcp>=1.2; extra == "mcp"
|
|
40
|
+
Provides-Extra: ml
|
|
41
|
+
Requires-Dist: scikit-learn>=1.3; extra == "ml"
|
|
42
|
+
Requires-Dist: joblib>=1.3; extra == "ml"
|
|
43
|
+
Dynamic: license-file
|
|
44
|
+
|
|
45
|
+
# MemoryMaster
|
|
46
|
+
|
|
47
|
+
**Production-grade memory reliability system for AI coding agents.**
|
|
48
|
+
|
|
49
|
+
Lifecycle-managed claims with citations, conflict detection, steward governance, hybrid retrieval, and MCP integration. Give your AI agents persistent, trustworthy memory.
|
|
50
|
+
|
|
51
|
+
[](LICENSE)
|
|
52
|
+
[](https://www.python.org/downloads/)
|
|
53
|
+
[]()
|
|
54
|
+
[]()
|
|
55
|
+
[]()
|
|
56
|
+
[](https://pypi.org/project/memorymaster/)
|
|
57
|
+
|
|
58
|
+
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.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Architecture
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
66
|
+
│ Agent Runtime │
|
|
67
|
+
│ (Claude Code / Codex / any MCP-compatible agent) │
|
|
68
|
+
└────────────┬────────────────────────────────┬───────────────────┘
|
|
69
|
+
│ MCP (22 tools) │ CLI (64 commands)
|
|
70
|
+
v v
|
|
71
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
72
|
+
│ MemoryMaster Core │
|
|
73
|
+
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌───────────────┐ │
|
|
74
|
+
│ │ Ingestor │ │ Extractor │ │ Validator │ │ State Engine │ │
|
|
75
|
+
│ │ (events) │->│ (claims) │->│ (probes) │->│ (6-state FSM) │ │
|
|
76
|
+
│ └──────────┘ └───────────┘ └──────────┘ └───────────────┘ │
|
|
77
|
+
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌───────────────┐ │
|
|
78
|
+
│ │ Retrieval│ │ Compactor │ │ Steward │ │ Dashboard │ │
|
|
79
|
+
│ │ (hybrid) │ │ (archive) │ │ (govern) │ │ (HTML+SSE) │ │
|
|
80
|
+
│ └──────────┘ └───────────┘ └──────────┘ └───────────────┘ │
|
|
81
|
+
└────────┬──────────────┬──────────────┬──────────┬───────────────┘
|
|
82
|
+
v v v v
|
|
83
|
+
SQLite/Postgres Qdrant Ollama/CLI Claude Code
|
|
84
|
+
(vectors) (LLM stack) Auto Dream + Vault
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Key features
|
|
88
|
+
|
|
89
|
+
- **6-state lifecycle**: `candidate` → `confirmed` → `stale` → `superseded` → `conflicted` → `archived`
|
|
90
|
+
- **Citation tracking** with provenance for every claim
|
|
91
|
+
- **Hybrid retrieval**: vector (sentence-transformers / Gemini) + FTS5 + freshness + confidence
|
|
92
|
+
- **Context optimizer**: `query_for_context(budget=4000)` returns auto-curated memory that fits your token budget
|
|
93
|
+
- **Entity graph** with typed relationships and alias resolution
|
|
94
|
+
- **Steward governance**: multi-probe validators (filesystem, format, citation, semantic, tool) with proposal review
|
|
95
|
+
- **Conflict resolution**: 5-tier auto (confidence > freshness > citations > LLM > manual)
|
|
96
|
+
- **Auto-redaction** at ingest: JWT, GitHub tokens, Bearer, AWS keys, SSH keys, custom patterns
|
|
97
|
+
- **LLM Wiki**: compiled-truth + append-only timeline articles with progressive-disclosure frontmatter
|
|
98
|
+
- **Dual backend**: SQLite (zero-config) and Postgres (full feature parity with pgvector)
|
|
99
|
+
- **Dream Bridge** for bidirectional sync with Claude Code's Auto Dream
|
|
100
|
+
- **7-hook stack**: recall, classify, validate-wiki, session-start, auto-ingest, precompact, steward-cron
|
|
101
|
+
|
|
102
|
+
Full feature index lives in [`docs/handbook.md`](docs/handbook.md).
|
|
103
|
+
|
|
104
|
+
## Prerequisites
|
|
105
|
+
|
|
106
|
+
**Required**
|
|
107
|
+
|
|
108
|
+
- Python **3.10+** with `pip`
|
|
109
|
+
- Claude Code, Codex, or any MCP-compatible agent
|
|
110
|
+
|
|
111
|
+
**Optional**
|
|
112
|
+
|
|
113
|
+
- **Already a Claude Code subscriber?** No API key needed — set `MEMORYMASTER_LLM_PROVIDER=claude_cli` and the steward + auto-ingest hooks will use your existing OAuth via the local `claude --print` binary
|
|
114
|
+
- A free Gemini API key from [aistudio.google.com](https://aistudio.google.com) — powers the auto-ingest hook at ~zero cost
|
|
115
|
+
- **Node.js 18+** for graphify and GitNexus
|
|
116
|
+
- **Obsidian 1.6+** with the Bases core plugin (for visual wiki browsing)
|
|
117
|
+
- **Docker** for Qdrant (SQLite FTS5 is the default and works out of the box)
|
|
118
|
+
|
|
119
|
+
## Quick start
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pip install "memorymaster[mcp]"
|
|
123
|
+
memorymaster --db memorymaster.db init-db
|
|
124
|
+
memorymaster-setup # interactive: hooks, MCP, steward cron, CLAUDE.md / AGENTS.md
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
That's enough to use the CLI, the MCP server, and the auto-ingest Stop hook.
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Ingest a claim with citation
|
|
131
|
+
memorymaster --db memorymaster.db ingest \
|
|
132
|
+
--text "Server uses PostgreSQL 16" \
|
|
133
|
+
--source "session://chat|turn-3|user confirmed"
|
|
134
|
+
|
|
135
|
+
# Query memory (hybrid retrieval)
|
|
136
|
+
memorymaster --db memorymaster.db query "database version" --retrieval-mode hybrid
|
|
137
|
+
|
|
138
|
+
# Context optimizer — the killer feature for agents
|
|
139
|
+
memorymaster --db memorymaster.db context "auth patterns" --budget 4000 --format xml
|
|
140
|
+
|
|
141
|
+
# Run validation cycle
|
|
142
|
+
memorymaster --db memorymaster.db run-cycle
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
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).
|
|
146
|
+
|
|
147
|
+
## Pick your LLM provider
|
|
148
|
+
|
|
149
|
+
| Provider | Env vars | Default model | Cost |
|
|
150
|
+
|----------|----------|---------------|------|
|
|
151
|
+
| **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 |
|
|
152
|
+
| Google Gemini (default) | `MEMORYMASTER_LLM_PROVIDER=google` + `GEMINI_API_KEY=...` | `gemini-3.1-flash-lite-preview` | ~free |
|
|
153
|
+
| OpenAI | `MEMORYMASTER_LLM_PROVIDER=openai` + `OPENAI_API_KEY=...` | `gpt-4o-mini` | ~$0.001/call |
|
|
154
|
+
| Anthropic API | `MEMORYMASTER_LLM_PROVIDER=anthropic` + `ANTHROPIC_API_KEY=...` | `claude-haiku-4-5-20251001` | ~$0.001/call |
|
|
155
|
+
| Ollama (local) | `MEMORYMASTER_LLM_PROVIDER=ollama` + `OLLAMA_URL=http://localhost:11434` | `llama3.2:3b` | free |
|
|
156
|
+
|
|
157
|
+
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.
|
|
158
|
+
|
|
159
|
+
For zero-cost offline use, install [Ollama](https://ollama.com), `ollama pull llama3.2:3b`, and set `MEMORYMASTER_LLM_PROVIDER=ollama`.
|
|
160
|
+
|
|
161
|
+
## MCP server
|
|
162
|
+
|
|
163
|
+
```json
|
|
164
|
+
{
|
|
165
|
+
"mcpServers": {
|
|
166
|
+
"memorymaster": {
|
|
167
|
+
"command": "memorymaster-mcp",
|
|
168
|
+
"env": {
|
|
169
|
+
"MEMORYMASTER_DEFAULT_DB": "/path/to/memorymaster.db",
|
|
170
|
+
"MEMORYMASTER_WORKSPACE": "/path/to/your/project"
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
22 MCP tools: `init_db`, `ingest_claim`, `run_cycle`, `run_steward`, `classify_query`, `query_memory`, `query_for_context`, `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`, `federated_query`.
|
|
178
|
+
|
|
179
|
+
See [`.mcp.json.example`](.mcp.json.example) for the full template.
|
|
180
|
+
|
|
181
|
+
## Backends
|
|
182
|
+
|
|
183
|
+
| Backend | Install | Use case |
|
|
184
|
+
|---------|---------|----------|
|
|
185
|
+
| **SQLite** | Built-in | Local development, single-agent, zero-config |
|
|
186
|
+
| **Postgres** | `pip install "memorymaster[postgres]"` | Team deployment, multi-agent, pgvector search |
|
|
187
|
+
|
|
188
|
+
## Docker Compose
|
|
189
|
+
|
|
190
|
+
Run the full stack (MemoryMaster + Qdrant + Ollama) with one command:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
docker compose up -d
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
See [INSTALLATION.md](INSTALLATION.md) for Kubernetes / Helm.
|
|
197
|
+
|
|
198
|
+
## Development
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# Install with dev dependencies
|
|
202
|
+
pip install -e ".[dev,mcp,security,embeddings,qdrant]"
|
|
203
|
+
|
|
204
|
+
# Run tests
|
|
205
|
+
pytest tests/ -q
|
|
206
|
+
|
|
207
|
+
# Lint and format
|
|
208
|
+
ruff check memorymaster/ && ruff format memorymaster/
|
|
209
|
+
|
|
210
|
+
# Performance benchmarks
|
|
211
|
+
python benchmarks/perf_smoke.py
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full workflow.
|
|
215
|
+
|
|
216
|
+
## Documentation
|
|
217
|
+
|
|
218
|
+
| Document | Description |
|
|
219
|
+
|----------|-------------|
|
|
220
|
+
| [docs/handbook.md](docs/handbook.md) | Full operator handbook — hooks, dashboard, steward, dream bridge, troubleshooting, one-prompt install |
|
|
221
|
+
| [INSTALLATION.md](INSTALLATION.md) | Setup guide: pip, Docker, Helm, MCP config |
|
|
222
|
+
| [CONTRIBUTING.md](CONTRIBUTING.md) | Dev setup, testing, PR workflow |
|
|
223
|
+
| [ARCHITECTURE.md](ARCHITECTURE.md) | System design and subsystem details |
|
|
224
|
+
| [USER_GUIDE.md](USER_GUIDE.md) | Usage, MCP integration, troubleshooting |
|
|
225
|
+
| [CHANGELOG.md](CHANGELOG.md) | Version history and release notes |
|
|
226
|
+
| [ROADMAP.md](ROADMAP.md) | Release plan and future tracks |
|
|
227
|
+
| [docs/enabling-v2-systems.md](docs/enabling-v2-systems.md) | v3 statistical classifier + cadence policy opt-in |
|
|
228
|
+
|
|
229
|
+
## License
|
|
230
|
+
|
|
231
|
+
[MIT](LICENSE) — Built by [wolverin0](https://github.com/wolverin0)
|