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.
- {memorymaster-1.0.0 → memorymaster-2.0.0}/PKG-INFO +64 -13
- memorymaster-1.0.0/memorymaster.egg-info/PKG-INFO → memorymaster-2.0.0/README.md +283 -265
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/__init__.py +1 -1
- memorymaster-2.0.0/memorymaster/cli.py +1629 -0
- memorymaster-2.0.0/memorymaster/config.py +283 -0
- memorymaster-2.0.0/memorymaster/conflict_resolver.py +289 -0
- memorymaster-2.0.0/memorymaster/context_optimizer.py +262 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/dashboard.py +1018 -933
- memorymaster-2.0.0/memorymaster/embeddings.py +181 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/__init__.py +5 -5
- memorymaster-2.0.0/memorymaster/jobs/compact_summaries.py +419 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/decay.py +47 -49
- memorymaster-2.0.0/memorymaster/jobs/dedup.py +245 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/deterministic.py +390 -379
- memorymaster-2.0.0/memorymaster/jobs/staleness.py +227 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/validator.py +173 -169
- memorymaster-2.0.0/memorymaster/llm_steward.py +847 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/mcp_server.py +542 -491
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/models.py +280 -255
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/operator.py +1299 -946
- memorymaster-2.0.0/memorymaster/operator_queue.py +325 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/policy.py +110 -115
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/postgres_store.py +1637 -1359
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/retrieval.py +221 -204
- memorymaster-2.0.0/memorymaster/retry.py +88 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/scheduler.py +98 -93
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/schema.sql +2 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/schema_postgres.sql +30 -1
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/security.py +195 -182
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/service.py +519 -377
- memorymaster-2.0.0/memorymaster/snapshot.py +342 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/steward.py +1587 -1583
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/storage.py +1602 -1158
- memorymaster-1.0.0/README.md → memorymaster-2.0.0/memorymaster.egg-info/PKG-INFO +316 -236
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster.egg-info/SOURCES.txt +31 -1
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster.egg-info/entry_points.txt +1 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster.egg-info/requires.txt +6 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/pyproject.toml +45 -42
- memorymaster-2.0.0/tests/test_auto_validate.py +197 -0
- memorymaster-2.0.0/tests/test_claim_links.py +288 -0
- memorymaster-2.0.0/tests/test_cli_json_flag.py +150 -0
- memorymaster-2.0.0/tests/test_cli_ready.py +103 -0
- memorymaster-2.0.0/tests/test_compact_summaries.py +285 -0
- memorymaster-2.0.0/tests/test_config.py +178 -0
- memorymaster-2.0.0/tests/test_conflict_resolver.py +460 -0
- memorymaster-2.0.0/tests/test_connection_retry.py +127 -0
- memorymaster-2.0.0/tests/test_context_optimizer.py +200 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_dashboard.py +4 -4
- memorymaster-2.0.0/tests/test_dedup.py +310 -0
- memorymaster-2.0.0/tests/test_fts5_search.py +170 -0
- memorymaster-2.0.0/tests/test_human_id.py +283 -0
- memorymaster-2.0.0/tests/test_llm_steward_key_rotation.py +266 -0
- memorymaster-2.0.0/tests/test_operator_queue.py +500 -0
- memorymaster-2.0.0/tests/test_postgres_parity.py +625 -0
- memorymaster-2.0.0/tests/test_security_patterns.py +132 -0
- memorymaster-2.0.0/tests/test_snapshot.py +301 -0
- memorymaster-2.0.0/tests/test_staleness.py +337 -0
- memorymaster-2.0.0/tests/test_stealth_mode.py +136 -0
- memorymaster-2.0.0/tests/test_tenant_isolation.py +167 -0
- memorymaster-2.0.0/tests/test_vector_search.py +365 -0
- memorymaster-1.0.0/memorymaster/cli.py +0 -696
- memorymaster-1.0.0/memorymaster/embeddings.py +0 -90
- memorymaster-1.0.0/tests/test_postgres_parity.py +0 -50
- {memorymaster-1.0.0 → memorymaster-2.0.0}/LICENSE +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/benchmarks/perf_smoke.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/__main__.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/compactor.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/jobs/extractor.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/lifecycle.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/metrics_exporter.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/review.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/schema.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/store_factory.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster/turn_schema.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster.egg-info/dependency_links.txt +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/memorymaster.egg-info/top_level.txt +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/alert_operator_metrics.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/claude_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/compaction_edge_cases.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/compaction_trace_report.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/compaction_trace_validate.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/confusion_matrix_eval.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/conversation_importer.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/conversation_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/e2e_operator.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/email_live_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/eval_memorymaster.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/generate_drill_signoff.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/git_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/github_live_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/jira_live_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/messages_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/operator_metrics.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/recurring_incident_drill.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/release_readiness.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/run_incident_drill.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/scheduled_ingest.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/slack_live_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/tickets_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/scripts/webhook_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/setup.cfg +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/conftest.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_claude_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_cli_review_queue.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_compaction_trace.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_confusion_matrix_eval.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_connectors.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_conversation_to_turns.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_deterministic_predicates.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_events_schema.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_incident_drill_runner.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_metrics_exporter.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_operator.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_perf_smoke_config.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_reliability_hardening.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_review.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_sqlite_core.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_steward.py +0 -0
- {memorymaster-1.0.0 → memorymaster-2.0.0}/tests/test_steward_resolution_parity.py +0 -0
- {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:
|
|
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-
|
|
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** |
|
|
57
|
-
| **
|
|
58
|
-
| **
|
|
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** |
|
|
61
|
-
| **
|
|
62
|
-
| **
|
|
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
|
-
**
|
|
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**:
|
|
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
|
-
- **
|
|
248
|
-
- **
|
|
297
|
+
- **31 source modules** (20,000+ lines)
|
|
298
|
+
- **380+ tests** across 40+ test modules
|
|
249
299
|
- **24 utility scripts** (connectors, benchmarks, drills)
|
|
250
|
-
- **
|
|
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
|
|