agmem 0.2.0__py3-none-any.whl → 0.3.0__py3-none-any.whl
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.0.dist-info → agmem-0.3.0.dist-info}/METADATA +338 -26
- {agmem-0.2.0.dist-info → agmem-0.3.0.dist-info}/RECORD +32 -16
- memvcs/__init__.py +1 -1
- memvcs/cli.py +1 -1
- memvcs/coordinator/server.py +18 -2
- memvcs/core/agents.py +411 -0
- memvcs/core/archaeology.py +410 -0
- memvcs/core/collaboration.py +435 -0
- memvcs/core/compliance.py +427 -0
- memvcs/core/compression_metrics.py +248 -0
- memvcs/core/confidence.py +379 -0
- memvcs/core/daemon.py +735 -0
- memvcs/core/delta.py +45 -23
- memvcs/core/distiller.py +3 -12
- memvcs/core/fast_similarity.py +404 -0
- memvcs/core/federated.py +13 -2
- memvcs/core/gardener.py +8 -68
- memvcs/core/pack.py +1 -1
- memvcs/core/privacy_validator.py +187 -0
- memvcs/core/private_search.py +327 -0
- memvcs/core/protocol_builder.py +198 -0
- memvcs/core/search_index.py +538 -0
- memvcs/core/semantic_graph.py +388 -0
- memvcs/core/session.py +520 -0
- memvcs/core/timetravel.py +430 -0
- memvcs/integrations/mcp_server.py +775 -4
- memvcs/integrations/web_ui/server.py +424 -0
- memvcs/integrations/web_ui/websocket.py +223 -0
- {agmem-0.2.0.dist-info → agmem-0.3.0.dist-info}/WHEEL +0 -0
- {agmem-0.2.0.dist-info → agmem-0.3.0.dist-info}/entry_points.txt +0 -0
- {agmem-0.2.0.dist-info → agmem-0.3.0.dist-info}/licenses/LICENSE +0 -0
- {agmem-0.2.0.dist-info → agmem-0.3.0.dist-info}/top_level.txt +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,32 +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
|
-
|
|
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
|
|
152
448
|
|
|
153
449
|
```mermaid
|
|
154
450
|
graph TB
|
|
@@ -183,6 +479,13 @@ graph TB
|
|
|
183
479
|
Intel4["✅ Temporal queries<br/>Point-in-time, Range"]
|
|
184
480
|
end
|
|
185
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
|
+
|
|
186
489
|
subgraph Ops ["⚙️ Operations"]
|
|
187
490
|
Ops1["✅ Pack/GC<br/>Object packing, cleanup"]
|
|
188
491
|
Ops2["✅ Daemon mode<br/>Watch + auto-commit"]
|
|
@@ -193,13 +496,15 @@ graph TB
|
|
|
193
496
|
Collab --> Safety
|
|
194
497
|
Safety --> Privacy
|
|
195
498
|
Privacy --> Intelligence
|
|
196
|
-
Intelligence -->
|
|
499
|
+
Intelligence --> NewFeatures
|
|
500
|
+
NewFeatures --> Ops
|
|
197
501
|
|
|
198
502
|
style Core fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
|
|
199
503
|
style Collab fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
|
|
200
504
|
style Safety fill:#ffebee,stroke:#c62828,stroke-width:2px
|
|
201
505
|
style Privacy fill:#e1f5fe,stroke:#01579b,stroke-width:2px
|
|
202
506
|
style Intelligence fill:#f1f8e9,stroke:#558b2f,stroke-width:2px
|
|
507
|
+
style NewFeatures fill:#fff8e1,stroke:#f9a825,stroke-width:3px
|
|
203
508
|
style Ops fill:#fff3e0,stroke:#e65100,stroke-width:2px
|
|
204
509
|
```
|
|
205
510
|
|
|
@@ -826,8 +1131,15 @@ mypy memvcs/
|
|
|
826
1131
|
- [x] Encryption at rest (optional AES-256-GCM); differential privacy budget (`--private` on distill/garden)
|
|
827
1132
|
- [x] Pack files and garbage collection (`agmem gc`); ZK proofs and federated stubs (`agmem prove`, `agmem federated`)
|
|
828
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
|
|
829
1140
|
- [ ] IPFS remote (stub in place); full ZK circuits and federated coordinator
|
|
830
1141
|
|
|
1142
|
+
|
|
831
1143
|
## Integrations
|
|
832
1144
|
|
|
833
1145
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
agmem-0.
|
|
2
|
-
memvcs/__init__.py,sha256=
|
|
3
|
-
memvcs/cli.py,sha256=
|
|
1
|
+
agmem-0.3.0.dist-info/licenses/LICENSE,sha256=X_S6RBErW-F0IDbM3FAEoDB-zxExFnl2m8640rTXphM,1067
|
|
2
|
+
memvcs/__init__.py,sha256=PwF2IkjOfw5nZCDcZdsNKns-h-FEvRahAqNd37Ti8_8,193
|
|
3
|
+
memvcs/cli.py,sha256=WPjhbevcOc_w_7SEXV5oitbEA5kYY5lHWgyTOq6x8sU,6075
|
|
4
4
|
memvcs/commands/__init__.py,sha256=A2D6xWaO6epU7iV4QSvqvF5TspnwRyDN7NojmGatPrE,510
|
|
5
5
|
memvcs/commands/add.py,sha256=k9eM7qf2NFvneiJkFQNiAYFB2GgKmyPw_NXmkCxblQE,8736
|
|
6
6
|
memvcs/commands/audit.py,sha256=E6m54B726tqDQR3rrgRXWrjE-seu2UocqrFxN1aHkY4,1680
|
|
@@ -47,37 +47,52 @@ memvcs/commands/tree.py,sha256=vdULq4vIXA_4gNfMnHn_Y78BwE0sJoeTBOnFJR3WsZ4,4927
|
|
|
47
47
|
memvcs/commands/verify.py,sha256=04CVW5NYWkUlPJ5z1Kci6dfQFM6UmPTGZh9ZextFLMc,3887
|
|
48
48
|
memvcs/commands/when.py,sha256=bxG_tEYnZNBTl2IPkoxpc2LUEbO_5ev1hRvEzxQQDmc,4773
|
|
49
49
|
memvcs/coordinator/__init__.py,sha256=XJEXEXJFvvhtRInPeyAC9bFNXGbshSrtuK6wZo3wS6g,139
|
|
50
|
-
memvcs/coordinator/server.py,sha256
|
|
50
|
+
memvcs/coordinator/server.py,sha256=M0wnww0EbtxuDaunP29LJDCnsTm1mcOn7h_fqZbQy5c,7550
|
|
51
51
|
memvcs/core/__init__.py,sha256=dkIC-4tS0GhwV2mZIbofEe8xR8uiFwrxslGf1aXwhYg,493
|
|
52
52
|
memvcs/core/access_index.py,sha256=HhacnzSUASzRV2jhDHkwRFoPS3rtqh9n9yE1VV7JXpk,5596
|
|
53
|
+
memvcs/core/agents.py,sha256=im8X9m8_x_be8IA2Mu804o0479yIdAdO7AHKZ8m6WoQ,13989
|
|
54
|
+
memvcs/core/archaeology.py,sha256=Uo-IOQOj031yrqO-MZ_UvLlZsjdP4EVKROwPJiPFp7o,14544
|
|
53
55
|
memvcs/core/audit.py,sha256=8APkm9Spl_-1rIdyRQz1elyxOeK3nlpwm0CLkpLlhTE,3732
|
|
56
|
+
memvcs/core/collaboration.py,sha256=Ao-cerw11vwTfMM1YEAuR3yicyRez1w2DdYMObTLtnI,14099
|
|
57
|
+
memvcs/core/compliance.py,sha256=XsBQr7kclbSM21yekW4GcHG1VJipp2L_saw4OTkA7w8,14855
|
|
58
|
+
memvcs/core/compression_metrics.py,sha256=0JrbkCGr0hnaKlmPLqv5WVLwO3emOEz2iFhdMTDNTNY,9835
|
|
54
59
|
memvcs/core/compression_pipeline.py,sha256=Vzr5v_0pgAG20C8znC0-Ho5fEwBoaTOLddxMTldd64M,5564
|
|
60
|
+
memvcs/core/confidence.py,sha256=22AwbCsLwWkQwqMww4eh6uNvZAYwyqMfNX8VakNZCEo,13176
|
|
55
61
|
memvcs/core/config_loader.py,sha256=j-jgLDp2TRzWN9ZEZebfWSfatevBNYs0FEb3ud1SIR8,8277
|
|
56
62
|
memvcs/core/consistency.py,sha256=YOG8xhqZLKZCLbai2rdcP0KxYPNGFv5RRMwrQ6qCeyc,7462
|
|
57
63
|
memvcs/core/constants.py,sha256=WUjAb50BFcF0mbFi_GNteDLCxLihmViBm9Fb-JMPmbM,220
|
|
58
64
|
memvcs/core/crypto_verify.py,sha256=DTuC7Kfx6z2b8UWOWziBTqP633LrjXbdtGmBBqrJTF0,10424
|
|
65
|
+
memvcs/core/daemon.py,sha256=pg2UaSd5QZ3RhjR64nLviAPIC1hug3ftL62dkCuCuU8,23433
|
|
59
66
|
memvcs/core/decay.py,sha256=ROGwnqngs7eJNkbKmwyOdij607m73vpmoJqzrIDLBzk,6581
|
|
60
|
-
memvcs/core/delta.py,sha256=
|
|
67
|
+
memvcs/core/delta.py,sha256=aCbIXoBdo9unn1baJo20TdOctBCjYF20bQVlOCbb8fs,8518
|
|
61
68
|
memvcs/core/diff.py,sha256=koEHTLciIUxYKVJVuvmY0GDXMgDgGZP_qg5RayhF-iE,13226
|
|
62
|
-
memvcs/core/distiller.py,sha256=
|
|
69
|
+
memvcs/core/distiller.py,sha256=wwY3xQVRBjVfxnOUIwMsQCSeQ2tlG68w2-KiCwkF9yo,13844
|
|
63
70
|
memvcs/core/encryption.py,sha256=epny_nlW6ylllv1qxs1mAcFq-PrLIisgfot4llOoAqw,5289
|
|
64
|
-
memvcs/core/
|
|
65
|
-
memvcs/core/
|
|
71
|
+
memvcs/core/fast_similarity.py,sha256=phgjxkSchJg7om9AFFSMbtP6bSidyRy-vVrR3XyMmDQ,13934
|
|
72
|
+
memvcs/core/federated.py,sha256=qwvfhNgga-lHadbinAfKPI4oAl0RMn5ab01ChmQTP1s,5863
|
|
73
|
+
memvcs/core/gardener.py,sha256=bpoJbK6PJ6nvK3ytj23jpMUBUB7Nn_fB80Ap1E7-Nv8,17041
|
|
66
74
|
memvcs/core/hooks.py,sha256=XF9z8J5sWjAcuOyWQ2nuvEzK0UV8s4ThrcltaBZttzw,5448
|
|
67
75
|
memvcs/core/ipfs_remote.py,sha256=xmEO14bn_7Ej-W5jhx2QJyBd-ljj9S2COOxMmcZBiTs,6643
|
|
68
76
|
memvcs/core/knowledge_graph.py,sha256=GY27e1rgraF2zMpz_jsumdUtpgTRk48yH5CAEQ3TDl4,16416
|
|
69
77
|
memvcs/core/merge.py,sha256=x2eSaxr4f63Eq00FCJ6DDe2TZU8H5yHQpzKzMhYsaFw,19871
|
|
70
78
|
memvcs/core/objects.py,sha256=Xgw1IpQnJLCG5o_7gDHVQ-TNGR9CSpDYWRXzLgLSuec,11006
|
|
71
|
-
memvcs/core/pack.py,sha256=
|
|
79
|
+
memvcs/core/pack.py,sha256=jtbeBh625K6nshPgBGf7zelU-BhvK5-t5NYBJPoYfgs,15961
|
|
72
80
|
memvcs/core/pii_scanner.py,sha256=T6gQ1APFrSDk980fjnv4ZMF-UztbJgmUFSwGrwWixEw,10802
|
|
73
81
|
memvcs/core/privacy_budget.py,sha256=fOPlxoKEAmsKtda-OJCrSaKjTyw7ekcqdN7KfRBw1CY,2113
|
|
82
|
+
memvcs/core/privacy_validator.py,sha256=g3l1zxSIxkjMYJMwL5yfuDY5FFjmkm6HZ2Wo4xBiEkQ,6795
|
|
83
|
+
memvcs/core/private_search.py,sha256=RHmLY8dyRdAMBa2nEalh2YuDOBzjM8hIFMRkqYTX9U4,10643
|
|
84
|
+
memvcs/core/protocol_builder.py,sha256=b_5FphgmMdp7qP34ws3U2agXEoeYzTBjSgsQqd2Jx6Y,7713
|
|
74
85
|
memvcs/core/refs.py,sha256=4Nx2ZVRa_DzfUZ4O1AwzOHEjoGAEICJKqSd9GxaiD_g,16754
|
|
75
86
|
memvcs/core/remote.py,sha256=sZbAO9JEaDJM96PylB0CjpmR5UxWYdoXlq86sj3R2gU,22228
|
|
76
87
|
memvcs/core/repository.py,sha256=NzC2UFPv6ePxi5lfiSKyZFLclH4bJpWJz88pY7tDiv4,20605
|
|
77
88
|
memvcs/core/schema.py,sha256=_CrEWCdArc0yDJ04GT7fyvjHqkal7gegdFSsFOjVpBc,15287
|
|
89
|
+
memvcs/core/search_index.py,sha256=BlG62Uc3Eh019Xco154hSFKaKqO_hcJr5d82v7mMh3I,16928
|
|
90
|
+
memvcs/core/semantic_graph.py,sha256=ke-H1I3T9oQsofBrvJOmhdd9fRiwbbww-24fakVtRkc,13708
|
|
91
|
+
memvcs/core/session.py,sha256=kprikqIP61DmtxsWdDATyrufP12UH-1ed99lVJTzHjU,17673
|
|
78
92
|
memvcs/core/staging.py,sha256=dptdGi_74lhDkcGqGVU39ZyTkb25j-Rnkz0GWi83W1k,7221
|
|
79
93
|
memvcs/core/temporal_index.py,sha256=81hZHlVElp2UpXjseFVCdDUwxGM45zIU-y1dDlOhFHI,4012
|
|
80
94
|
memvcs/core/test_runner.py,sha256=7-0jCvji63JRbVfy3LNQWIQ7VL5weulOoG7SY1-YJbw,11496
|
|
95
|
+
memvcs/core/timetravel.py,sha256=7NWzjy_S5hGw67VW2Feyy76uE95s2GfHIssQjCF1ozg,14963
|
|
81
96
|
memvcs/core/trust.py,sha256=msx80Cl3bxyQTY8mFUKWY9P6l3zb1s8FafympgHwtpo,3494
|
|
82
97
|
memvcs/core/vector_store.py,sha256=yUAp5BlaAtjkrtsdY1I-vmAp_YIFgJykBoNlp5hcg0I,11063
|
|
83
98
|
memvcs/core/zk_proofs.py,sha256=tvJnj5oLTNQ_wFIGcMuuVF5faigIX_32U_HojNMoNp0,7623
|
|
@@ -94,9 +109,10 @@ memvcs/core/storage/s3.py,sha256=tY5rfz8FfkRRNaHOPX7Wk6yXdBBBhKV0Ju2qnBtHxeU,138
|
|
|
94
109
|
memvcs/health/__init__.py,sha256=YuxF8hVHJHNilAvVa0maptFLBWm4hcBymMjpA2dFJVU,546
|
|
95
110
|
memvcs/health/monitor.py,sha256=2JQqkR6n0e5L-gsU97FEB3rxjrCNAaGRNFpa7LKZtOg,15545
|
|
96
111
|
memvcs/integrations/__init__.py,sha256=hVtJoFaXt6ErAZwctcSBDZLXRHFs1CNgtltIBQiroQ0,103
|
|
97
|
-
memvcs/integrations/mcp_server.py,sha256
|
|
112
|
+
memvcs/integrations/mcp_server.py,sha256=-Kg04padPDPm59-rkzPv2zMTOb53ejwkh23Y9tmHMTM,35066
|
|
98
113
|
memvcs/integrations/web_ui/__init__.py,sha256=MQIfgDKDgPctlcTUjwkwueS_MDsDssVRmIUnpECGS0k,51
|
|
99
|
-
memvcs/integrations/web_ui/server.py,sha256=
|
|
114
|
+
memvcs/integrations/web_ui/server.py,sha256=9Rdaaic8_Gkvg89GDAerkbZU4Og7IeOAWcngOpwO0Tg,28147
|
|
115
|
+
memvcs/integrations/web_ui/websocket.py,sha256=Ji3Z8E1kEP2Q5EsL23E8abZyMbKGsVKHUmdMWeZ4Ers,7353
|
|
100
116
|
memvcs/retrieval/__init__.py,sha256=IzzmYbE_hmkCmcwQqIUPca4vQh_tD--cB_l00i6uGxY,465
|
|
101
117
|
memvcs/retrieval/base.py,sha256=aCeWpb2EbSRE81Rn4maLzqPmLSKZOUrwmSSfTEFJ33U,1336
|
|
102
118
|
memvcs/retrieval/pack.py,sha256=4rrGP7oduPhAM9PYnW2_eNm4WpSDnleHEja-fjBtONc,4299
|
|
@@ -104,8 +120,8 @@ memvcs/retrieval/recaller.py,sha256=8KY-XjMUz5_vcKf46zI64uk1DEM__u7wM92ShukOtsY,
|
|
|
104
120
|
memvcs/retrieval/strategies.py,sha256=26yxQQubQfjxWQXknfVMxuzPHf2EcZxJg_B99BEdl5c,11458
|
|
105
121
|
memvcs/utils/__init__.py,sha256=8psUzz4Ntv2GzbRebkeVsoyC6Ck-FIwi0_lfYdj5oho,185
|
|
106
122
|
memvcs/utils/helpers.py,sha256=37zg_DcQ2y99b9NSLqxFkglHe13rJXKhFDpEbQ7iLhM,4121
|
|
107
|
-
agmem-0.
|
|
108
|
-
agmem-0.
|
|
109
|
-
agmem-0.
|
|
110
|
-
agmem-0.
|
|
111
|
-
agmem-0.
|
|
123
|
+
agmem-0.3.0.dist-info/METADATA,sha256=ytzmWVS_XqQ2dnhL60IwSXHDYbwBsfLgo6_DllrXKEI,51060
|
|
124
|
+
agmem-0.3.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
125
|
+
agmem-0.3.0.dist-info/entry_points.txt,sha256=at7eWycgjqOo1wbUMECnXUsNo3gpCkJTU71OzrGLHu0,42
|
|
126
|
+
agmem-0.3.0.dist-info/top_level.txt,sha256=HtMMsKuwLKLOdgF1GxqQztqFM54tTJctVdJuOec6B-4,7
|
|
127
|
+
agmem-0.3.0.dist-info/RECORD,,
|
memvcs/__init__.py
CHANGED
memvcs/cli.py
CHANGED
|
@@ -141,7 +141,7 @@ For more information: https://github.com/vivek-tiwari-vt/agmem
|
|
|
141
141
|
""",
|
|
142
142
|
)
|
|
143
143
|
|
|
144
|
-
parser.add_argument("--version", "-v", action="version", version="%(prog)s 0.1
|
|
144
|
+
parser.add_argument("--version", "-v", action="version", version="%(prog)s 0.2.1")
|
|
145
145
|
|
|
146
146
|
parser.add_argument("--verbose", action="store_true", help="Enable verbose output")
|
|
147
147
|
|
memvcs/coordinator/server.py
CHANGED
|
@@ -21,6 +21,7 @@ from typing import Dict, List, Optional, Any
|
|
|
21
21
|
from pathlib import Path
|
|
22
22
|
import json
|
|
23
23
|
import hashlib
|
|
24
|
+
import re
|
|
24
25
|
|
|
25
26
|
try:
|
|
26
27
|
from fastapi import FastAPI, HTTPException, Request
|
|
@@ -39,10 +40,25 @@ except ImportError:
|
|
|
39
40
|
return None
|
|
40
41
|
|
|
41
42
|
|
|
43
|
+
def _get_version() -> str:
|
|
44
|
+
"""Get agmem version from pyproject.toml. Falls back to 0.2.1 if not found."""
|
|
45
|
+
try:
|
|
46
|
+
pyproject_path = Path(__file__).parent.parent.parent / "pyproject.toml"
|
|
47
|
+
if pyproject_path.exists():
|
|
48
|
+
content = pyproject_path.read_text()
|
|
49
|
+
match = re.search(r'version\s*=\s*"([^"]+)"', content)
|
|
50
|
+
if match:
|
|
51
|
+
return match.group(1)
|
|
52
|
+
except Exception:
|
|
53
|
+
pass
|
|
54
|
+
return "0.2.1"
|
|
55
|
+
|
|
56
|
+
|
|
42
57
|
# Storage: In-memory for simplicity (use Redis/PostgreSQL for production)
|
|
43
58
|
summaries_store: Dict[str, List[Dict[str, Any]]] = {}
|
|
59
|
+
_version = _get_version()
|
|
44
60
|
metadata_store: Dict[str, Any] = {
|
|
45
|
-
"coordinator_version":
|
|
61
|
+
"coordinator_version": _version,
|
|
46
62
|
"started_at": datetime.now(timezone.utc).isoformat(),
|
|
47
63
|
"total_pushes": 0,
|
|
48
64
|
"total_agents": 0,
|
|
@@ -79,7 +95,7 @@ if FASTAPI_AVAILABLE:
|
|
|
79
95
|
app = FastAPI(
|
|
80
96
|
title="agmem Federated Coordinator",
|
|
81
97
|
description="Minimal coordinator for federated agent memory collaboration",
|
|
82
|
-
version=
|
|
98
|
+
version=_version,
|
|
83
99
|
)
|
|
84
100
|
|
|
85
101
|
@app.get("/")
|