agmem 0.2.1__tar.gz → 0.3.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.
- {agmem-0.2.1/agmem.egg-info → agmem-0.3.0}/PKG-INFO +338 -27
- {agmem-0.2.1 → agmem-0.3.0}/README.md +336 -25
- {agmem-0.2.1 → agmem-0.3.0/agmem.egg-info}/PKG-INFO +338 -27
- {agmem-0.2.1 → agmem-0.3.0}/agmem.egg-info/SOURCES.txt +21 -0
- agmem-0.3.0/memvcs/core/agents.py +411 -0
- agmem-0.3.0/memvcs/core/archaeology.py +410 -0
- agmem-0.3.0/memvcs/core/collaboration.py +435 -0
- agmem-0.3.0/memvcs/core/compliance.py +427 -0
- agmem-0.3.0/memvcs/core/confidence.py +379 -0
- agmem-0.3.0/memvcs/core/daemon.py +735 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/delta.py +45 -23
- agmem-0.3.0/memvcs/core/private_search.py +327 -0
- agmem-0.3.0/memvcs/core/search_index.py +538 -0
- agmem-0.3.0/memvcs/core/semantic_graph.py +388 -0
- agmem-0.3.0/memvcs/core/session.py +520 -0
- agmem-0.3.0/memvcs/core/timetravel.py +430 -0
- agmem-0.3.0/memvcs/integrations/mcp_server.py +1036 -0
- agmem-0.3.0/memvcs/integrations/web_ui/server.py +775 -0
- agmem-0.3.0/memvcs/integrations/web_ui/websocket.py +223 -0
- {agmem-0.2.1 → agmem-0.3.0}/pyproject.toml +7 -1
- agmem-0.3.0/tests/test_archaeology.py +167 -0
- agmem-0.3.0/tests/test_collaboration.py +238 -0
- agmem-0.3.0/tests/test_compliance.py +227 -0
- agmem-0.3.0/tests/test_confidence.py +205 -0
- agmem-0.3.0/tests/test_daemon.py +389 -0
- agmem-0.3.0/tests/test_phase3.py +280 -0
- agmem-0.3.0/tests/test_progressive_search.py +247 -0
- agmem-0.3.0/tests/test_session.py +240 -0
- agmem-0.3.0/tests/test_web_api.py +255 -0
- agmem-0.2.1/memvcs/integrations/mcp_server.py +0 -265
- agmem-0.2.1/memvcs/integrations/web_ui/server.py +0 -351
- {agmem-0.2.1 → agmem-0.3.0}/LICENSE +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/MANIFEST.in +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/agmem.egg-info/dependency_links.txt +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/agmem.egg-info/entry_points.txt +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/agmem.egg-info/requires.txt +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/agmem.egg-info/top_level.txt +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/docs/AGMEM_PUBLISHING_SETUP.md +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/docs/CONFIG.md +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/docs/FEDERATED.md +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/docs/GTM.md +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/docs/KNOWLEDGE_GRAPH.md +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/docs/SEQUENTIAL_VALIDATION.md +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/docs/TEST_REPORT.md +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/docs/aux/INSTALL.md +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/examples/basic_workflow.sh +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/cli.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/add.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/audit.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/base.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/blame.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/branch.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/checkout.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/clean.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/clone.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/commit.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/daemon.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/decay.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/diff.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/distill.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/federated.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/fsck.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/garden.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/gc.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/graph.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/init.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/log.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/mcp.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/merge.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/pack.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/prove.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/pull.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/push.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/recall.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/reflog.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/remote.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/repair.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/reset.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/resolve.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/resurrect.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/search.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/serve.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/show.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/stash.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/status.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/tag.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/test.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/timeline.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/tree.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/verify.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/commands/when.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/coordinator/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/coordinator/server.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/access_index.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/audit.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/compression_metrics.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/compression_pipeline.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/config_loader.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/consistency.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/constants.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/crypto_verify.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/decay.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/diff.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/distiller.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/encryption.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/fast_similarity.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/federated.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/gardener.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/hooks.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/ipfs_remote.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/knowledge_graph.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/llm/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/llm/anthropic_provider.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/llm/base.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/llm/factory.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/llm/openai_provider.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/merge.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/objects.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/pack.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/pii_scanner.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/privacy_budget.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/privacy_validator.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/protocol_builder.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/refs.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/remote.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/repository.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/schema.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/staging.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/storage/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/storage/base.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/storage/gcs.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/storage/local.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/storage/s3.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/temporal_index.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/test_runner.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/trust.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/vector_store.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/core/zk_proofs.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/health/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/health/monitor.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/integrations/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/integrations/web_ui/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/retrieval/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/retrieval/base.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/retrieval/pack.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/retrieval/recaller.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/retrieval/strategies.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/utils/__init__.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/memvcs/utils/helpers.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/setup.cfg +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/setup.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_access_index.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_advanced_commands.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_audit.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_commit_importance.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_compression_pipeline.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_consistency.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_crypto_verify.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_decay.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_delta_encoding.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_distiller_dp.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_edge_cases.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_encryption.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_federated.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_health_monitor.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_ipfs_integration.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_ipfs_remote.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_llm_provider.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_objects.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_pack_gc.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_performance_benchmarks.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_pii.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_plan_features.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_privacy_budget.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_repository.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_resolve_helpers.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_retrieval.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_temporal_index.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_trust.py +0 -0
- {agmem-0.2.1 → agmem-0.3.0}/tests/test_zk_proofs.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agmem
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Agentic Memory Version Control System - Git for AI agent memories
|
|
5
5
|
Home-page: https://github.com/vivek-tiwari-vt/agmem
|
|
6
6
|
Author: agmem Team
|
|
@@ -10,7 +10,7 @@ Project-URL: Homepage, https://github.com/vivek-tiwari-vt/agmem
|
|
|
10
10
|
Project-URL: Documentation, https://github.com/vivek-tiwari-vt/agmem#readme
|
|
11
11
|
Project-URL: Repository, https://github.com/vivek-tiwari-vt/agmem
|
|
12
12
|
Project-URL: Bug Tracker, https://github.com/vivek-tiwari-vt/agmem/issues
|
|
13
|
-
Keywords: ai,agent,memory,version-control,git,vcs,llm,merkle,audit,encryption,differential-privacy,trust,multi-agent,health-monitoring,delta-encoding,ipfs,federated
|
|
13
|
+
Keywords: ai,agent,memory,version-control,git,vcs,llm,merkle,audit,encryption,differential-privacy,trust,multi-agent,health-monitoring,delta-encoding,ipfs,federated,time-travel,semantic-graph,memory-agents,confidence-scoring,session-management,collaboration
|
|
14
14
|
Classifier: Development Status :: 3 - Alpha
|
|
15
15
|
Classifier: Intended Audience :: Developers
|
|
16
16
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -123,33 +123,328 @@ agmem solves all of these problems with a familiar Git-like interface.
|
|
|
123
123
|
|
|
124
124
|
## Features
|
|
125
125
|
|
|
126
|
+
### 🔧 Core Version Control
|
|
126
127
|
- ✅ **Git-like workflow** — `init`, `add`, `commit`, `status`, `log`, `branch`, `checkout`, `merge`, `diff`, `show`, `reset`, `tag`, `stash`, `reflog`, `blame`, `tree`, `clean`
|
|
127
|
-
- ✅ **HEAD~n** — Walk parent chain: `agmem log HEAD~5`, `agmem show HEAD~1`
|
|
128
|
+
- ✅ **HEAD~n resolution** — Walk parent chain: `agmem log HEAD~5`, `agmem show HEAD~1`
|
|
128
129
|
- ✅ **Branch/tag names with `/`** — Git-style refs: `feature/test`, `releases/v1` (path-validated)
|
|
129
|
-
- ✅ **Content-addressable storage** — SHA-256 deduplication like Git
|
|
130
|
+
- ✅ **Content-addressable storage** — SHA-256 deduplication like Git with zlib compression
|
|
130
131
|
- ✅ **Memory-type-aware merging** — Episodic append, semantic consolidate, procedural prefer-new
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
- ✅ **
|
|
134
|
-
- ✅ **
|
|
135
|
-
- ✅ **
|
|
136
|
-
- ✅ **
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
- ✅ **
|
|
140
|
-
- ✅ **
|
|
141
|
-
- ✅ **
|
|
142
|
-
- ✅ **
|
|
143
|
-
- ✅ **
|
|
144
|
-
- ✅ **
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
- ✅ **
|
|
148
|
-
- ✅ **
|
|
149
|
-
- ✅ **
|
|
150
|
-
- ✅ **
|
|
151
|
-
|
|
152
|
-
###
|
|
132
|
+
|
|
133
|
+
### 🌐 Collaboration & Remotes
|
|
134
|
+
- ✅ **Remote operations** — `clone`, `push`, `pull`, `remote` with file:// URLs
|
|
135
|
+
- ✅ **Multi-agent trust** — Trust store (full/conditional/untrusted) per public key
|
|
136
|
+
- ✅ **Federated collaboration** — Coordinator API for distributed memory sharing
|
|
137
|
+
- ✅ **Conflict resolution** — `agmem resolve` with ours/theirs/both strategies
|
|
138
|
+
|
|
139
|
+
### 🔒 Security & Privacy
|
|
140
|
+
- ✅ **Cryptographic verification** — Merkle tree over blobs, Ed25519 signing
|
|
141
|
+
- ✅ **Encryption at rest** — AES-256-GCM with Argon2id key derivation
|
|
142
|
+
- ✅ **Tamper-evident audit** — Append-only hash-chained log
|
|
143
|
+
- ✅ **Differential privacy** — Epsilon/delta budget with fact-level noise
|
|
144
|
+
- ✅ **Zero-knowledge proofs** — Keyword containment, memory freshness
|
|
145
|
+
- ✅ **PII scanning** — Pre-commit hooks for sensitive data
|
|
146
|
+
|
|
147
|
+
### 🧠 Intelligence & Search
|
|
148
|
+
- ✅ **Semantic search** — Vector embeddings with GPU acceleration
|
|
149
|
+
- ✅ **Knowledge graph** — Wikilinks, tags, co-occurrence relationships
|
|
150
|
+
- ✅ **Multi-provider LLM** — OpenAI and Anthropic integration
|
|
151
|
+
- ✅ **Temporal queries** — Point-in-time and range-based retrieval
|
|
152
|
+
|
|
153
|
+
### ⚙️ Operations & Performance
|
|
154
|
+
- ✅ **Pack files & GC** — Object packing with 5-10x delta compression
|
|
155
|
+
- ✅ **Health monitoring** — Storage, redundancy, staleness, graph consistency
|
|
156
|
+
- ✅ **IPFS/S3/GCS remotes** — Distributed storage backends
|
|
157
|
+
- ✅ **GPU acceleration** — CUDA/MPS detection for embeddings
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 🚀 New in v0.3.0: Complete Feature Set
|
|
162
|
+
|
|
163
|
+
### Phase 1: UX Parity
|
|
164
|
+
|
|
165
|
+
```mermaid
|
|
166
|
+
graph LR
|
|
167
|
+
subgraph Daemon ["🔄 Observation Daemon"]
|
|
168
|
+
D1["Extract MCP<br/>observations"] --> D2["Classify by<br/>memory type"]
|
|
169
|
+
D2 --> D3["Auto-stage<br/>changes"]
|
|
170
|
+
D3 --> D4["Generate commit<br/>message (LLM)"]
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
subgraph WebUI ["🌐 Web Viewer"]
|
|
174
|
+
W1["Dashboard"] --> W2["Timeline"]
|
|
175
|
+
W2 --> W3["Graph"]
|
|
176
|
+
W3 --> W4["Agents"]
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
subgraph Search ["🔍 Progressive Search"]
|
|
180
|
+
S1["Layer 1:<br/>Fast index"] --> S2["Layer 2:<br/>Timeline context"]
|
|
181
|
+
S2 --> S3["Layer 3:<br/>Full details"]
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
subgraph Sessions ["📋 Session Manager"]
|
|
185
|
+
SS1["Start session"] --> SS2["Track observations"]
|
|
186
|
+
SS2 --> SS3["Classify topics"]
|
|
187
|
+
SS3 --> SS4["Auto-commit"]
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
style Daemon fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
|
|
191
|
+
style WebUI fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
|
|
192
|
+
style Search fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
|
|
193
|
+
style Sessions fill:#fff3e0,stroke:#f57c00,stroke-width:2px
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
| Feature | Module | Description |
|
|
197
|
+
|---------|--------|-------------|
|
|
198
|
+
| **Observation Daemon** | `daemon.py` | Real-time MCP tool observation extraction with LLM commit messages |
|
|
199
|
+
| **Web Viewer UI** | `web_ui/` | React dashboard with 22 REST endpoints + WebSocket |
|
|
200
|
+
| **Progressive Search** | `search_index.py` | 3-tier search: index → timeline → full details |
|
|
201
|
+
| **Session Manager** | `session.py` | Session lifecycle with topic classification |
|
|
202
|
+
|
|
203
|
+
### Phase 2: Differentiation
|
|
204
|
+
|
|
205
|
+
```mermaid
|
|
206
|
+
graph TB
|
|
207
|
+
subgraph Collab ["👥 Multi-Agent Collaboration"]
|
|
208
|
+
C1["Agent Registry<br/>register, list, trust"]
|
|
209
|
+
C2["Trust Manager<br/>grant, revoke, verify"]
|
|
210
|
+
C3["Contribution Tracker<br/>commits, leaderboard"]
|
|
211
|
+
C4["Conflict Detector<br/>concurrent edits"]
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
subgraph Compliance ["📋 Compliance Dashboard"]
|
|
215
|
+
CP1["Privacy Manager<br/>budget tracking"]
|
|
216
|
+
CP2["Encryption Verifier<br/>status checks"]
|
|
217
|
+
CP3["Tamper Detector<br/>Merkle verification"]
|
|
218
|
+
CP4["Audit Analyzer<br/>pattern detection"]
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
subgraph Archaeology ["🏛️ Memory Archaeology"]
|
|
222
|
+
A1["History Explorer<br/>file evolution"]
|
|
223
|
+
A2["Forgotten Finder<br/>unused memories"]
|
|
224
|
+
A3["Pattern Analyzer<br/>recurring themes"]
|
|
225
|
+
A4["Context Reconstructor<br/>historical state"]
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
subgraph Confidence ["📊 Confidence Scoring"]
|
|
229
|
+
CS1["Decay Model<br/>exponential, linear, step"]
|
|
230
|
+
CS2["Source Tracker<br/>reliability scores"]
|
|
231
|
+
CS3["Confidence Calculator<br/>multi-factor scoring"]
|
|
232
|
+
CS4["Expiration Alert<br/>low-confidence items"]
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
style Collab fill:#e1f5fe,stroke:#01579b,stroke-width:2px
|
|
236
|
+
style Compliance fill:#fce4ec,stroke:#c2185b,stroke-width:2px
|
|
237
|
+
style Archaeology fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
|
|
238
|
+
style Confidence fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
| Feature | Module | MCP Tools |
|
|
242
|
+
|---------|--------|-----------|
|
|
243
|
+
| **Collaboration** | `collaboration.py` | `agent_register`, `trust_grant`, `contributions_list` |
|
|
244
|
+
| **Compliance** | `compliance.py` | `privacy_status`, `integrity_verify` |
|
|
245
|
+
| **Archaeology** | `archaeology.py` | `forgotten_memories`, `find_context` |
|
|
246
|
+
| **Confidence** | `confidence.py` | `confidence_score`, `low_confidence`, `expiring_soon` |
|
|
247
|
+
|
|
248
|
+
### Phase 3: Advanced Features
|
|
249
|
+
|
|
250
|
+
```mermaid
|
|
251
|
+
graph TB
|
|
252
|
+
subgraph TimeTravel ["⏰ Time-Travel Debugging"]
|
|
253
|
+
T1["TimeExpressionParser<br/>'yesterday', '2 weeks ago'"]
|
|
254
|
+
T2["TemporalNavigator<br/>commit lookup by time"]
|
|
255
|
+
T3["TimelineVisualizer<br/>activity heatmaps"]
|
|
256
|
+
T4["SnapshotExporter<br/>JSON, Markdown, Archive"]
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
subgraph PrivateSearch ["🔐 Privacy-Preserving Search"]
|
|
260
|
+
P1["SearchTokenizer<br/>blind search tokens"]
|
|
261
|
+
P2["AccessControl<br/>file-level permissions"]
|
|
262
|
+
P3["DP Noise<br/>result randomization"]
|
|
263
|
+
P4["Private Engine<br/>secure retrieval"]
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
subgraph SemanticGraph ["🕸️ Semantic Memory Graph"]
|
|
267
|
+
G1["GraphBuilder<br/>auto-infer relationships"]
|
|
268
|
+
G2["Clusterer<br/>type, tag, community"]
|
|
269
|
+
G3["GraphSearch<br/>traversal queries"]
|
|
270
|
+
G4["Visualizer<br/>D3 force-directed"]
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
subgraph Agents ["🤖 Memory Agents"]
|
|
274
|
+
AG1["ConsolidationAgent<br/>merge fragmented"]
|
|
275
|
+
AG2["CleanupAgent<br/>duplicates, stale"]
|
|
276
|
+
AG3["AlertAgent<br/>notifications"]
|
|
277
|
+
AG4["AgentManager<br/>orchestration"]
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
style TimeTravel fill:#fff3e0,stroke:#e65100,stroke-width:2px
|
|
281
|
+
style PrivateSearch fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
|
|
282
|
+
style SemanticGraph fill:#e0f2f1,stroke:#00695c,stroke-width:2px
|
|
283
|
+
style Agents fill:#fbe9e7,stroke:#bf360c,stroke-width:2px
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
| Feature | Module | MCP Tools |
|
|
287
|
+
|---------|--------|-----------|
|
|
288
|
+
| **Time-Travel** | `timetravel.py` | `time_travel`, `timeline` |
|
|
289
|
+
| **Private Search** | `private_search.py` | Secure search with access control |
|
|
290
|
+
| **Semantic Graph** | `semantic_graph.py` | `memory_graph`, `graph_related` |
|
|
291
|
+
| **Memory Agents** | `agents.py` | `agent_health`, `find_duplicates`, `cleanup_candidates` |
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## 📊 Complete Architecture
|
|
296
|
+
|
|
297
|
+
```mermaid
|
|
298
|
+
flowchart TB
|
|
299
|
+
subgraph Frontend ["🖥️ Frontend Layer"]
|
|
300
|
+
direction LR
|
|
301
|
+
CLI["CLI<br/>agmem *"]
|
|
302
|
+
MCP["MCP Server<br/>30 tools"]
|
|
303
|
+
WEB["Web UI<br/>React + WebSocket"]
|
|
304
|
+
API["REST API<br/>22 endpoints"]
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
subgraph Core ["⚙️ Core Layer (48 Modules)"]
|
|
308
|
+
direction TB
|
|
309
|
+
|
|
310
|
+
subgraph VCS ["Version Control"]
|
|
311
|
+
Repository
|
|
312
|
+
Objects
|
|
313
|
+
Refs
|
|
314
|
+
Staging
|
|
315
|
+
Merge
|
|
316
|
+
Diff
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
subgraph Intelligence ["Intelligence"]
|
|
320
|
+
VectorStore["Vector Store"]
|
|
321
|
+
KnowledgeGraph["Knowledge Graph"]
|
|
322
|
+
SemanticGraph["Semantic Graph"]
|
|
323
|
+
SearchIndex["Search Index"]
|
|
324
|
+
LLM["LLM Providers"]
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
subgraph Security ["Security"]
|
|
328
|
+
CryptoVerify["Crypto Verify"]
|
|
329
|
+
Encryption
|
|
330
|
+
Trust
|
|
331
|
+
Audit
|
|
332
|
+
ZKProofs["ZK Proofs"]
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
subgraph Automation ["Automation"]
|
|
336
|
+
Daemon
|
|
337
|
+
Session
|
|
338
|
+
Agents
|
|
339
|
+
Gardener
|
|
340
|
+
Distiller
|
|
341
|
+
end
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
subgraph Storage ["💾 Storage Layer"]
|
|
345
|
+
direction LR
|
|
346
|
+
Local["Local<br/>.mem/objects/"]
|
|
347
|
+
Pack["Pack Files<br/>Delta encoded"]
|
|
348
|
+
IPFS["IPFS<br/>Distributed"]
|
|
349
|
+
Cloud["S3/GCS<br/>Cloud"]
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
Frontend --> Core
|
|
353
|
+
Core --> Storage
|
|
354
|
+
|
|
355
|
+
style Frontend fill:#e3f2fd,stroke:#1976d2,stroke-width:3px
|
|
356
|
+
style Core fill:#f5f5f5,stroke:#616161,stroke-width:2px
|
|
357
|
+
style Storage fill:#fff3e0,stroke:#e65100,stroke-width:2px
|
|
358
|
+
style VCS fill:#c8e6c9,stroke:#2e7d32
|
|
359
|
+
style Intelligence fill:#bbdefb,stroke:#1565c0
|
|
360
|
+
style Security fill:#ffcdd2,stroke:#c62828
|
|
361
|
+
style Automation fill:#e1bee7,stroke:#7b1fa2
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## 🔄 User Flows
|
|
367
|
+
|
|
368
|
+
### Memory Commit Flow
|
|
369
|
+
|
|
370
|
+
```mermaid
|
|
371
|
+
sequenceDiagram
|
|
372
|
+
participant Agent as 🤖 Agent
|
|
373
|
+
participant Daemon as 🔄 Daemon
|
|
374
|
+
participant Session as 📋 Session
|
|
375
|
+
participant VCS as 💾 VCS
|
|
376
|
+
participant Graph as 🕸️ Graph
|
|
377
|
+
|
|
378
|
+
Agent->>Daemon: MCP tool observation
|
|
379
|
+
Daemon->>Daemon: Extract & classify
|
|
380
|
+
Daemon->>Session: Add to session
|
|
381
|
+
Session->>Session: Topic classification
|
|
382
|
+
|
|
383
|
+
alt Auto-commit enabled
|
|
384
|
+
Session->>VCS: Stage changes
|
|
385
|
+
VCS->>VCS: Generate commit (LLM)
|
|
386
|
+
VCS->>Graph: Update relationships
|
|
387
|
+
else Manual commit
|
|
388
|
+
Agent->>VCS: agmem commit
|
|
389
|
+
VCS->>Graph: Update relationships
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
Graph->>Graph: Rebuild connections
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
### Multi-Agent Collaboration Flow
|
|
396
|
+
|
|
397
|
+
```mermaid
|
|
398
|
+
sequenceDiagram
|
|
399
|
+
participant A1 as 🤖 Agent A
|
|
400
|
+
participant Reg as 📋 Registry
|
|
401
|
+
participant Trust as 🔐 Trust
|
|
402
|
+
participant Remote as 🌐 Remote
|
|
403
|
+
participant A2 as 🤖 Agent B
|
|
404
|
+
|
|
405
|
+
A1->>Reg: agent_register
|
|
406
|
+
A2->>Reg: agent_register
|
|
407
|
+
|
|
408
|
+
A1->>Trust: trust_grant(Agent B)
|
|
409
|
+
Trust->>Trust: Verify public key
|
|
410
|
+
|
|
411
|
+
A1->>Remote: agmem push
|
|
412
|
+
Remote->>Remote: Store commits
|
|
413
|
+
|
|
414
|
+
A2->>Remote: agmem pull
|
|
415
|
+
Remote->>Trust: Verify origin
|
|
416
|
+
Trust->>A2: Merge if trusted
|
|
417
|
+
|
|
418
|
+
A2->>A2: contribution_log
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### Time-Travel Debugging Flow
|
|
422
|
+
|
|
423
|
+
```mermaid
|
|
424
|
+
sequenceDiagram
|
|
425
|
+
participant User as 👤 User
|
|
426
|
+
participant Parser as 📅 Parser
|
|
427
|
+
participant Nav as 🧭 Navigator
|
|
428
|
+
participant VCS as 💾 VCS
|
|
429
|
+
participant Export as 📦 Exporter
|
|
430
|
+
|
|
431
|
+
User->>Parser: "2 weeks ago"
|
|
432
|
+
Parser->>Parser: Parse expression
|
|
433
|
+
Parser->>Nav: Get commit at time
|
|
434
|
+
Nav->>VCS: Lookup by timestamp
|
|
435
|
+
VCS->>Nav: Return commit hash
|
|
436
|
+
|
|
437
|
+
alt View timeline
|
|
438
|
+
Nav->>User: Activity heatmap
|
|
439
|
+
else Export snapshot
|
|
440
|
+
Nav->>Export: Export state
|
|
441
|
+
Export->>User: JSON/Markdown/Archive
|
|
442
|
+
end
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
### Feature Coverage Overview
|
|
153
448
|
|
|
154
449
|
```mermaid
|
|
155
450
|
graph TB
|
|
@@ -184,6 +479,13 @@ graph TB
|
|
|
184
479
|
Intel4["✅ Temporal queries<br/>Point-in-time, Range"]
|
|
185
480
|
end
|
|
186
481
|
|
|
482
|
+
subgraph NewFeatures ["🆕 v0.3.0 Features"]
|
|
483
|
+
New1["✅ Web UI + React Frontend<br/>Dashboard, Graph, Timeline"]
|
|
484
|
+
New2["✅ Session Management<br/>Topic classification, auto-commit"]
|
|
485
|
+
New3["✅ Memory Agents<br/>Consolidation, Cleanup, Alerts"]
|
|
486
|
+
New4["✅ Time-Travel<br/>Natural language dates"]
|
|
487
|
+
end
|
|
488
|
+
|
|
187
489
|
subgraph Ops ["⚙️ Operations"]
|
|
188
490
|
Ops1["✅ Pack/GC<br/>Object packing, cleanup"]
|
|
189
491
|
Ops2["✅ Daemon mode<br/>Watch + auto-commit"]
|
|
@@ -194,13 +496,15 @@ graph TB
|
|
|
194
496
|
Collab --> Safety
|
|
195
497
|
Safety --> Privacy
|
|
196
498
|
Privacy --> Intelligence
|
|
197
|
-
Intelligence -->
|
|
499
|
+
Intelligence --> NewFeatures
|
|
500
|
+
NewFeatures --> Ops
|
|
198
501
|
|
|
199
502
|
style Core fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
|
|
200
503
|
style Collab fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
|
|
201
504
|
style Safety fill:#ffebee,stroke:#c62828,stroke-width:2px
|
|
202
505
|
style Privacy fill:#e1f5fe,stroke:#01579b,stroke-width:2px
|
|
203
506
|
style Intelligence fill:#f1f8e9,stroke:#558b2f,stroke-width:2px
|
|
507
|
+
style NewFeatures fill:#fff8e1,stroke:#f9a825,stroke-width:3px
|
|
204
508
|
style Ops fill:#fff3e0,stroke:#e65100,stroke-width:2px
|
|
205
509
|
```
|
|
206
510
|
|
|
@@ -827,8 +1131,15 @@ mypy memvcs/
|
|
|
827
1131
|
- [x] Encryption at rest (optional AES-256-GCM); differential privacy budget (`--private` on distill/garden)
|
|
828
1132
|
- [x] Pack files and garbage collection (`agmem gc`); ZK proofs and federated stubs (`agmem prove`, `agmem federated`)
|
|
829
1133
|
- [x] Multi-provider LLM (OpenAI, Anthropic); temporal range queries; daemon health checks; GPU detection; test suite and CI
|
|
1134
|
+
- [x] **Phase 1: UX Parity** — Observation daemon, web viewer UI, progressive disclosure search, session-aware auto-commit
|
|
1135
|
+
- [x] **Phase 2: Differentiation** — Multi-agent collaboration, compliance dashboard, memory archaeology, confidence scoring
|
|
1136
|
+
- [x] **Phase 3: Advanced Features** — Time-travel debugging, privacy-preserving search, semantic memory graph, memory agents
|
|
1137
|
+
- [x] **React Frontend** — Interactive force-directed graph visualization with search, zoom, pan, node dragging
|
|
1138
|
+
- [x] **WebSocket Support** — Real-time updates for file changes, commits, and agent activity
|
|
1139
|
+
- [x] **Service Templates** — systemd and launchd service files for daemon deployment
|
|
830
1140
|
- [ ] IPFS remote (stub in place); full ZK circuits and federated coordinator
|
|
831
1141
|
|
|
1142
|
+
|
|
832
1143
|
## Integrations
|
|
833
1144
|
|
|
834
1145
|
```
|