memorymaster 1.0.0__tar.gz → 2.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.
Files changed (120) hide show
  1. {memorymaster-1.0.0 → memorymaster-2.0.0}/PKG-INFO +64 -13
  2. memorymaster-1.0.0/memorymaster.egg-info/PKG-INFO → memorymaster-2.0.0/README.md +283 -265
  3. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/__init__.py +1 -1
  4. memorymaster-2.0.0/memorymaster/cli.py +1629 -0
  5. memorymaster-2.0.0/memorymaster/config.py +283 -0
  6. memorymaster-2.0.0/memorymaster/conflict_resolver.py +289 -0
  7. memorymaster-2.0.0/memorymaster/context_optimizer.py +262 -0
  8. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/dashboard.py +1018 -933
  9. memorymaster-2.0.0/memorymaster/embeddings.py +181 -0
  10. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/__init__.py +5 -5
  11. memorymaster-2.0.0/memorymaster/jobs/compact_summaries.py +419 -0
  12. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/decay.py +47 -49
  13. memorymaster-2.0.0/memorymaster/jobs/dedup.py +245 -0
  14. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/deterministic.py +390 -379
  15. memorymaster-2.0.0/memorymaster/jobs/staleness.py +227 -0
  16. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/validator.py +173 -169
  17. memorymaster-2.0.0/memorymaster/llm_steward.py +847 -0
  18. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/mcp_server.py +542 -491
  19. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/models.py +280 -255
  20. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/operator.py +1299 -946
  21. memorymaster-2.0.0/memorymaster/operator_queue.py +325 -0
  22. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/policy.py +110 -115
  23. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/postgres_store.py +1637 -1359
  24. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/retrieval.py +221 -204
  25. memorymaster-2.0.0/memorymaster/retry.py +88 -0
  26. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/scheduler.py +98 -93
  27. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/schema.sql +2 -0
  28. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/schema_postgres.sql +30 -1
  29. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/security.py +195 -182
  30. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/service.py +519 -377
  31. memorymaster-2.0.0/memorymaster/snapshot.py +342 -0
  32. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/steward.py +1587 -1583
  33. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/storage.py +1602 -1158
  34. memorymaster-1.0.0/README.md → memorymaster-2.0.0/memorymaster.egg-info/PKG-INFO +316 -236
  35. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster.egg-info/SOURCES.txt +31 -1
  36. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster.egg-info/entry_points.txt +1 -0
  37. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster.egg-info/requires.txt +6 -0
  38. {memorymaster-1.0.0 → memorymaster-2.0.0}/pyproject.toml +45 -42
  39. memorymaster-2.0.0/tests/test_auto_validate.py +197 -0
  40. memorymaster-2.0.0/tests/test_claim_links.py +288 -0
  41. memorymaster-2.0.0/tests/test_cli_json_flag.py +150 -0
  42. memorymaster-2.0.0/tests/test_cli_ready.py +103 -0
  43. memorymaster-2.0.0/tests/test_compact_summaries.py +285 -0
  44. memorymaster-2.0.0/tests/test_config.py +178 -0
  45. memorymaster-2.0.0/tests/test_conflict_resolver.py +460 -0
  46. memorymaster-2.0.0/tests/test_connection_retry.py +127 -0
  47. memorymaster-2.0.0/tests/test_context_optimizer.py +200 -0
  48. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_dashboard.py +4 -4
  49. memorymaster-2.0.0/tests/test_dedup.py +310 -0
  50. memorymaster-2.0.0/tests/test_fts5_search.py +170 -0
  51. memorymaster-2.0.0/tests/test_human_id.py +283 -0
  52. memorymaster-2.0.0/tests/test_llm_steward_key_rotation.py +266 -0
  53. memorymaster-2.0.0/tests/test_operator_queue.py +500 -0
  54. memorymaster-2.0.0/tests/test_postgres_parity.py +625 -0
  55. memorymaster-2.0.0/tests/test_security_patterns.py +132 -0
  56. memorymaster-2.0.0/tests/test_snapshot.py +301 -0
  57. memorymaster-2.0.0/tests/test_staleness.py +337 -0
  58. memorymaster-2.0.0/tests/test_stealth_mode.py +136 -0
  59. memorymaster-2.0.0/tests/test_tenant_isolation.py +167 -0
  60. memorymaster-2.0.0/tests/test_vector_search.py +365 -0
  61. memorymaster-1.0.0/memorymaster/cli.py +0 -696
  62. memorymaster-1.0.0/memorymaster/embeddings.py +0 -90
  63. memorymaster-1.0.0/tests/test_postgres_parity.py +0 -50
  64. {memorymaster-1.0.0 → memorymaster-2.0.0}/LICENSE +0 -0
  65. {memorymaster-1.0.0 → memorymaster-2.0.0}/benchmarks/perf_smoke.py +0 -0
  66. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/__main__.py +0 -0
  67. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/compactor.py +0 -0
  68. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/extractor.py +0 -0
  69. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/lifecycle.py +0 -0
  70. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/metrics_exporter.py +0 -0
  71. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/review.py +0 -0
  72. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/schema.py +0 -0
  73. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/store_factory.py +0 -0
  74. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/turn_schema.py +0 -0
  75. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster.egg-info/dependency_links.txt +0 -0
  76. {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster.egg-info/top_level.txt +0 -0
  77. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/alert_operator_metrics.py +0 -0
  78. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/claude_to_turns.py +0 -0
  79. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/compaction_edge_cases.py +0 -0
  80. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/compaction_trace_report.py +0 -0
  81. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/compaction_trace_validate.py +0 -0
  82. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/confusion_matrix_eval.py +0 -0
  83. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/conversation_importer.py +0 -0
  84. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/conversation_to_turns.py +0 -0
  85. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/e2e_operator.py +0 -0
  86. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/email_live_to_turns.py +0 -0
  87. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/eval_memorymaster.py +0 -0
  88. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/generate_drill_signoff.py +0 -0
  89. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/git_to_turns.py +0 -0
  90. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/github_live_to_turns.py +0 -0
  91. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/jira_live_to_turns.py +0 -0
  92. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/messages_to_turns.py +0 -0
  93. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/operator_metrics.py +0 -0
  94. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/recurring_incident_drill.py +0 -0
  95. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/release_readiness.py +0 -0
  96. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/run_incident_drill.py +0 -0
  97. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/scheduled_ingest.py +0 -0
  98. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/slack_live_to_turns.py +0 -0
  99. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/tickets_to_turns.py +0 -0
  100. {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/webhook_to_turns.py +0 -0
  101. {memorymaster-1.0.0 → memorymaster-2.0.0}/setup.cfg +0 -0
  102. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/conftest.py +0 -0
  103. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_claude_to_turns.py +0 -0
  104. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_cli_review_queue.py +0 -0
  105. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_compaction_trace.py +0 -0
  106. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_confusion_matrix_eval.py +0 -0
  107. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_connectors.py +0 -0
  108. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_conversation_to_turns.py +0 -0
  109. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_deterministic_predicates.py +0 -0
  110. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_events_schema.py +0 -0
  111. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_incident_drill_runner.py +0 -0
  112. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_metrics_exporter.py +0 -0
  113. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_operator.py +0 -0
  114. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_perf_smoke_config.py +0 -0
  115. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_reliability_hardening.py +0 -0
  116. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_review.py +0 -0
  117. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_sqlite_core.py +0 -0
  118. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_steward.py +0 -0
  119. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_steward_resolution_parity.py +0 -0
  120. {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_turn_schema.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: memorymaster
3
- Version: 1.0.0
3
+ Version: 2.0.0
4
4
  Summary: Production-grade memory reliability system for AI coding agents. Lifecycle-managed claims with citations, conflict detection, steward governance, and MCP integration.
5
5
  Author: wolverin0
6
6
  License: MIT
@@ -21,6 +21,10 @@ Provides-Extra: postgres
21
21
  Requires-Dist: psycopg[binary]>=3.2; extra == "postgres"
22
22
  Provides-Extra: security
23
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"
24
28
  Provides-Extra: dev
25
29
  Requires-Dist: pytest>=8.2; extra == "dev"
26
30
  Provides-Extra: mcp
@@ -38,7 +42,7 @@ Dynamic: license-file
38
42
  <a href="https://pypi.org/project/memorymaster/"><img src="https://img.shields.io/pypi/v/memorymaster?color=green" alt="PyPI"></a>
39
43
  <a href="https://github.com/wolverin0/memorymaster/blob/main/LICENSE"><img src="https://img.shields.io/github/license/wolverin0/memorymaster" alt="License"></a>
40
44
  <img src="https://img.shields.io/badge/python-3.10%2B-blue" alt="Python 3.10+">
41
- <img src="https://img.shields.io/badge/tests-82%20passed-brightgreen" alt="Tests">
45
+ <img src="https://img.shields.io/badge/tests-380%2B%20passed-brightgreen" alt="Tests">
42
46
  <img src="https://img.shields.io/badge/coverage-SQLite%20%2B%20Postgres-purple" alt="Backend Coverage">
43
47
  </p>
44
48
  </p>
@@ -53,13 +57,20 @@ MemoryMaster gives AI coding agents **persistent, verifiable memory** with a ful
53
57
  |---------|-------------|
54
58
  | **6-State Lifecycle** | `candidate` -> `confirmed` -> `stale` -> `superseded` -> `conflicted` -> `archived` |
55
59
  | **Citation Tracking** | Every claim links to source evidence with provenance |
56
- | **Hybrid Retrieval** | Lexical + vector + freshness + confidence ranking |
57
- | **Steward Governance** | Multi-probe validators with proposal/approve/reject workflow |
58
- | **MCP Integration** | 12 tools for Claude Code, Codex, and any MCP-compatible agent |
60
+ | **Hybrid Retrieval** | Real vector search (sentence-transformers/Gemini) + FTS5 + freshness + confidence |
61
+ | **Context Optimizer** | `query_for_context(budget=4000)` — auto-curated memory that fits your token budget |
62
+ | **Steward Governance** | Multi-probe validators with auto-validate pipeline after LLM extraction |
63
+ | **Claim Graph** | Typed relationships (supersedes, contradicts, supports, derived_from, relates_to) |
64
+ | **MCP Integration** | 13 tools for Claude Code, Codex, and any MCP-compatible agent |
59
65
  | **Real-time Dashboard** | HTML UI with SSE streaming, conflict view, and triage actions |
60
- | **Auto-Redaction** | Tokens, keys, and passwords scrubbed at ingest time |
61
- | **Dual Backend** | SQLite (zero-config) and Postgres (with optional pgvector) |
62
- | **Incident Drills** | Automated perf + eval + integrity checks with HMAC-signed evidence |
66
+ | **Auto-Redaction** | JWT, GitHub tokens, Bearer, AWS keys, SSH keys + custom patterns |
67
+ | **Deduplication** | Embedding similarity + text overlap detection with auto-merge |
68
+ | **Conflict Resolution** | 5-tier auto-resolution (confidence > freshness > citations > LLM) |
69
+ | **Staleness Detection** | File watcher (mtime + git) auto-flags stale claims |
70
+ | **Git Versioning** | Snapshot/rollback/diff via SQLite backup API |
71
+ | **Multi-tenancy** | Row-level tenant isolation at the service layer |
72
+ | **Dual Backend** | SQLite (zero-config) and Postgres (with full feature parity) |
73
+ | **Configurable** | 11 env vars + JSON config for all tunable weights and thresholds |
63
74
  | **10+ Connectors** | Git, Slack, Jira, email, GitHub, and conversation imports |
64
75
 
65
76
  ## Architecture
@@ -115,7 +126,7 @@ Add to your MCP config:
115
126
  }
116
127
  ```
117
128
 
118
- **12 MCP tools available:** `init_db`, `ingest_claim`, `run_cycle`, `query_memory`, `list_claims`, `list_events`, `pin_claim`, `compact_memory`, `run_steward`, `list_steward_proposals`, `resolve_steward_proposal`, `open_dashboard`
129
+ **13 MCP tools available:** `init_db`, `ingest_claim`, `run_cycle`, `query_memory`, `query_for_context`, `list_claims`, `list_events`, `pin_claim`, `compact_memory`, `run_steward`, `list_steward_proposals`, `resolve_steward_proposal`, `open_dashboard`
119
130
 
120
131
  ## Operator Runtime
121
132
 
@@ -192,9 +203,48 @@ python scripts/email_live_to_turns.py --input config.json --output turns.jsonl
192
203
  python scripts/conversation_importer.py --input chat.json --output turns.jsonl
193
204
  ```
194
205
 
206
+ ## New in v2.0
207
+
208
+ ```bash
209
+ # Context optimizer — THE killer feature for agents
210
+ memorymaster --db memory.db context "auth patterns" --budget 4000 --format xml
211
+
212
+ # Deduplication
213
+ memorymaster --db memory.db dedup --dry-run
214
+
215
+ # Conflict resolution
216
+ memorymaster --db memory.db resolve-conflicts
217
+
218
+ # Claims needing attention
219
+ memorymaster --db memory.db ready
220
+
221
+ # Claim audit trail
222
+ memorymaster --db memory.db history 42
223
+
224
+ # Claim relationships
225
+ memorymaster --db memory.db link 10 20 --type supersedes
226
+ memorymaster --db memory.db links 10
227
+
228
+ # Staleness detection
229
+ memorymaster --db memory.db check-staleness --workspace /path/to/project
230
+
231
+ # LLM compaction summaries
232
+ memorymaster --db memory.db compact-summaries --provider gemini --api-key $KEY
233
+
234
+ # Git-backed versioning
235
+ memorymaster --db memory.db snapshot --message "before refactor"
236
+ memorymaster --db memory.db rollback snap_abc123
237
+
238
+ # Stealth mode (local-only experimentation)
239
+ memorymaster --stealth init-db
240
+
241
+ # JSON output for all commands
242
+ memorymaster --db memory.db --json list-claims
243
+ ```
244
+
195
245
  ## Security
196
246
 
197
- - **Auto-redaction**: Tokens, API keys, passwords, and secrets are scrubbed at ingest time
247
+ - **Auto-redaction**: JWT, GitHub tokens, Bearer, AWS keys, SSH keys, and custom patterns scrubbed at ingest
198
248
  - **Policy-gated access**: `--allow-sensitive` requires `MEMORYMASTER_ALLOW_SENSITIVE_BYPASS=1`
199
249
  - **Non-destructive redaction**: `redact-claim` scrubs claim/citation data with full audit trail
200
250
  - **Encryption**: Optional Fernet encryption for sensitive payloads (`pip install "memorymaster[security]"`)
@@ -244,12 +294,13 @@ python scripts/run_incident_drill.py --dry-run
244
294
 
245
295
  ## Project Stats
246
296
 
247
- - **22 source modules** (10,000+ lines)
248
- - **82 tests** across 21 test modules
297
+ - **31 source modules** (20,000+ lines)
298
+ - **380+ tests** across 40+ test modules
249
299
  - **24 utility scripts** (connectors, benchmarks, drills)
250
- - **12 MCP tools** for agent integration
300
+ - **13 MCP tools** for agent integration
251
301
  - **6 API endpoints** + SSE streaming
252
302
  - **10+ import connectors** (Git, Slack, Jira, email, GitHub, conversations)
303
+ - **11 configurable weights** via env vars or JSON config
253
304
 
254
305
  ## Documentation
255
306