feat(mem0-agent): read path, hooks, maintenance, CLI and skills

- pack.py: single-call context pack, budgeted, sanitized, cached, with
  served-id tracking that turns a citation into POSITIVE feedback
- assist.py: error-signature lookup (never raw stdout, which returned 0 results in v1)
- maintain.py: transactional consolidation (add merged -> verify -> delete sources)
- transcript.py: JSONL parsing into non-overlapping windows via a cursor
- cli.py: the twelve commands the hooks invoke; detached assist queues a block
  that the next prompt hook drains, keeping the hot path network-free
- hooks generated from one spec; plugin manifest, MCP wiring, five skills

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Deshraj Yadav
2026-07-28 01:56:38 -07:00
co-authored by Claude Fable 5
parent e102b21180
commit 3ea00cf88c
33 changed files with 5934 additions and 1 deletions
@@ -0,0 +1,37 @@
---
name: health
description: Diagnose mem0 connectivity, credentials, project configuration and read/write health. Use when memory operations fail, searches return nothing, the context pack is empty, or to verify the plugin is working.
---
# Health check
```bash
mem0-agent health # connectivity, identity, scope, config, breaker
mem0-agent health --deep # adds a real write probe and a corpus quality scan
```
Read the output top-down and stop at the first failure — later checks depend on earlier ones.
## What each failure means
| Symptom | Cause | Fix |
|---|---|---|
| `no API key` | not in env or keychain | `mem0-agent onboard`, or export `MEM0_API_KEY` |
| `identity unavailable` | key rejected or network down | verify the key at app.mem0.ai |
| `circuit open` | 3 consecutive API failures | wait out the cooldown; memory is paused, sessions are unaffected |
| `config incomplete` | instructions/categories/decay not applied | `mem0-agent setup` |
| pack empty, corpus non-empty | scope mismatch | compare `user_id`/`app_id` against `mem0-agent stats` |
| a just-written memory is missing | extraction is asynchronous (20s–5min) | wait, then re-check — this is normal, not a fault |
## Things that look broken but aren't
- **Categories are empty on new memories.** Categorization is a background job running
hours behind writes. Retrieval filters on `metadata.type`, which is set at write time, so
this does not affect recall.
- **A memory you deleted still exists in the database.** Deletes are soft; the record is
hidden from every read path.
- **Nothing was captured this session.** Most turns should capture nothing. Check
`mem0-agent stats` for the drop/flag breakdown before assuming a bug.
Report findings plainly. If everything passes, say so in one line and include the corpus
size and current scope.