hippo-memory 0.8.0 → 0.9.0

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 (43) hide show
  1. package/README.md +99 -13
  2. package/dist/cli.d.ts +5 -2
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +589 -209
  5. package/dist/cli.js.map +1 -1
  6. package/dist/consolidate.d.ts.map +1 -1
  7. package/dist/consolidate.js +12 -5
  8. package/dist/consolidate.js.map +1 -1
  9. package/dist/dashboard.d.ts +8 -0
  10. package/dist/dashboard.d.ts.map +1 -0
  11. package/dist/dashboard.js +306 -0
  12. package/dist/dashboard.js.map +1 -0
  13. package/dist/db.d.ts.map +1 -1
  14. package/dist/db.js +149 -100
  15. package/dist/db.js.map +1 -1
  16. package/dist/handoff.d.ts +29 -0
  17. package/dist/handoff.d.ts.map +1 -0
  18. package/dist/handoff.js +30 -0
  19. package/dist/handoff.js.map +1 -0
  20. package/dist/index.d.ts +4 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +4 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/mcp/server.js +78 -2
  25. package/dist/mcp/server.js.map +1 -1
  26. package/dist/search.d.ts +19 -0
  27. package/dist/search.d.ts.map +1 -1
  28. package/dist/search.js +35 -1
  29. package/dist/search.js.map +1 -1
  30. package/dist/store.d.ts +18 -0
  31. package/dist/store.d.ts.map +1 -1
  32. package/dist/store.js +209 -99
  33. package/dist/store.js.map +1 -1
  34. package/dist/working-memory.d.ts +59 -0
  35. package/dist/working-memory.d.ts.map +1 -0
  36. package/dist/working-memory.js +149 -0
  37. package/dist/working-memory.js.map +1 -0
  38. package/extensions/openclaw-plugin/README.md +6 -2
  39. package/extensions/openclaw-plugin/index.ts +569 -370
  40. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  41. package/extensions/openclaw-plugin/package.json +1 -1
  42. package/openclaw.plugin.json +1 -1
  43. package/package.json +1 -1
package/README.md CHANGED
@@ -43,13 +43,25 @@ hippo recall "data pipeline issues" --budget 2000
43
43
 
44
44
  That's it. You have a memory system.
45
45
 
46
- ### What's new in this build
47
-
48
- - **SQLite-first storage** with markdown/JSON mirrors for humans and git
49
- - **Active task snapshots** for bare `continue` recovery
50
- - **Session event trails** for short-term continuity across stops and resumes
51
- - **Persistent stale-memory lifecycle** during `hippo sleep`
52
- - **Conflict tracking** with `hippo conflicts` and `.hippo/conflicts/` mirrors
46
+ ### What's new in v0.9.0
47
+
48
+ - **Working memory layer** (`hippo wm push/read/clear/flush`). Bounded buffer (max 20 per scope) with importance-based eviction. Current-state notes live separately from long-term memory.
49
+ - **Session handoffs** (`hippo handoff create/latest/show`). Persist session summaries, next actions, and artifacts so successor sessions can resume without transcript archaeology.
50
+ - **Session lifecycle** with explicit start/end events, fallback session IDs, and `hippo session resume` for continuity.
51
+ - **Explainable recall** (`hippo recall --why`). See which terms matched, whether BM25 or embedding contributed, and the source bucket (layer, confidence, local/global).
52
+ - **`hippo current show`** for compact current-state display (active task + recent session events), ready for agent injection.
53
+ - **SQLite lock hardening**: `busy_timeout=5000`, `synchronous=NORMAL`, `wal_autocheckpoint=100`. Concurrent plugin calls no longer hit `SQLITE_BUSY`.
54
+ - **Consolidation batching**: all writes/deletes happen in a single transaction instead of N open/close cycles.
55
+ - **`--limit` flag** on `hippo recall` and `hippo context` to cap result count independently of token budget.
56
+ - **Plugin injection dedup guard** prevents double context injection on reconnect.
57
+
58
+ ### What's new in v0.8.0
59
+
60
+ - **Hybrid search** blends BM25 keywords with cosine embedding similarity. Install `@xenova/transformers`, run `hippo embed`, recall quality jumps. Falls back to BM25 otherwise.
61
+ - **Schema acceleration** auto-computes how well new memories fit existing patterns. Familiar memories consolidate faster; novel ones decay faster if unused.
62
+ - **Multi-agent shared memory** with `hippo share`, `hippo peers`, and transfer scoring. Universal lessons travel between projects; project-specific config stays local.
63
+ - **Conflict resolution** via `hippo resolve <id> --keep <mem_id>`. Closes the detect-inspect-resolve loop.
64
+ - **Agent eval benchmark** validates the learning hypothesis: hippo agents drop from 78% trap rate to 14% over a 50-task sequence.
53
65
 
54
66
  ### Zero-config agent integration
55
67
 
@@ -150,6 +162,50 @@ hippo context --auto --budget 1500
150
162
 
151
163
  Hippo mirrors the latest trail to `.hippo/buffer/recent-session.md` so you can inspect the short-term thread without opening SQLite.
152
164
 
165
+ ### Session handoffs
166
+
167
+ When you're done for the day (or switching to another agent), create a handoff so the next session knows exactly where to pick up:
168
+
169
+ ```bash
170
+ hippo handoff create \
171
+ --summary "Finished schema migration, tests green" \
172
+ --next "Wire handoff injection into context output" \
173
+ --session sess_20260403 \
174
+ --artifact src/db.ts
175
+
176
+ hippo handoff latest # show the most recent handoff
177
+ hippo handoff show 3 # show a specific handoff by ID
178
+ hippo session resume # re-inject latest handoff as context
179
+ ```
180
+
181
+ ### Working memory
182
+
183
+ Working memory is a bounded scratchpad for current-state notes. It's separate from long-term memory and gets cleared between sessions.
184
+
185
+ ```bash
186
+ hippo wm push --scope repo \
187
+ --content "Investigating flaky test in store.test.ts, line 42" \
188
+ --importance 0.9
189
+
190
+ hippo wm read --scope repo # show current working notes
191
+ hippo wm clear --scope repo # wipe the scratchpad
192
+ hippo wm flush --scope repo # flush on session end
193
+ ```
194
+
195
+ The buffer holds a maximum of 20 entries per scope. When full, the lowest-importance entry is evicted.
196
+
197
+ ### Explainable recall
198
+
199
+ See why a memory was returned:
200
+
201
+ ```bash
202
+ hippo recall "data pipeline" --why --limit 5
203
+
204
+ # --- mem_a1b2c3 [episodic] [observed] [local] score=0.847
205
+ # BM25: matched [data, pipeline]; cosine: 0.82
206
+ # ...memory content...
207
+ ```
208
+
153
209
  ---
154
210
 
155
211
  ## How It Works
@@ -401,9 +457,12 @@ hippo watch "npm run build"
401
457
  | `hippo remember "<text>" --global` | Store in global `~/.hippo/` store |
402
458
  | `hippo recall "<query>"` | Retrieve relevant memories (local + global) |
403
459
  | `hippo recall "<query>" --budget <n>` | Recall within token limit (default: 4000) |
460
+ | `hippo recall "<query>" --limit <n>` | Cap result count |
461
+ | `hippo recall "<query>" --why` | Show match reasons and source buckets |
404
462
  | `hippo recall "<query>" --json` | Output as JSON |
405
463
  | `hippo context --auto` | Smart context injection (auto-detects task from git) |
406
464
  | `hippo context "<query>" --budget <n>` | Context injection with explicit query (default: 1500) |
465
+ | `hippo context --limit <n>` | Cap memory count in context |
407
466
  | `hippo context --budget 0` | Skip entirely (zero token cost) |
408
467
  | `hippo context --framing <mode>` | Framing: observe (default), suggest, assert |
409
468
  | `hippo context --format <fmt>` | Output format: markdown (default) or json |
@@ -431,11 +490,33 @@ hippo watch "npm run build"
431
490
  | `hippo learn --git` | Scan recent git commits for lessons |
432
491
  | `hippo learn --git --days <n>` | Scan N days back (default: 7) |
433
492
  | `hippo learn --git --repos <paths>` | Scan multiple repos (comma-separated) |
493
+ | `hippo conflicts` | List detected open memory conflicts |
494
+ | `hippo conflicts --json` | Output conflicts as JSON |
495
+ | `hippo resolve <id>` | Show both conflicting memories for comparison |
496
+ | `hippo resolve <id> --keep <mem_id>` | Resolve: keep winner, weaken loser |
497
+ | `hippo resolve <id> --keep <mem_id> --forget` | Resolve: keep winner, delete loser |
434
498
  | `hippo promote <id>` | Copy a local memory to the global store |
499
+ | `hippo share <id>` | Share with attribution + transfer scoring |
500
+ | `hippo share <id> --force` | Share even if transfer score is low |
501
+ | `hippo share --auto` | Auto-share all high-scoring memories |
502
+ | `hippo share --auto --dry-run` | Preview what would be shared |
503
+ | `hippo peers` | List projects contributing to global store |
435
504
  | `hippo sync` | Pull global memories into local project |
436
505
  | `hippo hook list` | Show available framework hooks |
437
506
  | `hippo hook install <target>` | Install hook (claude-code, codex, cursor, openclaw) |
438
507
  | `hippo hook uninstall <target>` | Remove hook |
508
+ | `hippo handoff create --summary "..."` | Create a session handoff |
509
+ | `hippo handoff latest` | Show the most recent handoff |
510
+ | `hippo handoff show <id>` | Show a specific handoff by ID |
511
+ | `hippo session latest` | Show latest task snapshot + events |
512
+ | `hippo session resume` | Re-inject latest handoff as context |
513
+ | `hippo current show` | Compact current state (task + session events) |
514
+ | `hippo wm push --scope <s> --content "..."` | Push to working memory |
515
+ | `hippo wm read --scope <s>` | Read working memory entries |
516
+ | `hippo wm clear --scope <s>` | Clear working memory |
517
+ | `hippo wm flush --scope <s>` | Flush working memory (session end) |
518
+ | `hippo dashboard` | Open web dashboard at localhost:3333 |
519
+ | `hippo dashboard --port <n>` | Use custom port |
439
520
  | `hippo mcp` | Start MCP server (stdio transport) |
440
521
 
441
522
  ---
@@ -509,7 +590,7 @@ Add to your MCP config (e.g. `.cursor/mcp.json` or `claude_desktop_config.json`)
509
590
  }
510
591
  ```
511
592
 
512
- Exposes 6 tools: `hippo_recall`, `hippo_remember`, `hippo_outcome`, `hippo_context`, `hippo_status`, `hippo_learn`.
593
+ Exposes tools: `hippo_recall`, `hippo_remember`, `hippo_outcome`, `hippo_context`, `hippo_status`, `hippo_learn`, `hippo_wm_push`.
513
594
 
514
595
  ### OpenClaw Plugin
515
596
 
@@ -557,6 +638,11 @@ For how these mechanisms connect to LLM training, continual learning, and open r
557
638
  |---------|-------|------|-------------|-----------|
558
639
  | Decay by default | Yes | No | No | No |
559
640
  | Retrieval strengthening | Yes | No | No | No |
641
+ | Hybrid search (BM25 + embeddings) | Yes | Embeddings only | No | No |
642
+ | Schema acceleration | Yes | No | No | No |
643
+ | Conflict detection + resolution | Yes | No | No | No |
644
+ | Multi-agent shared memory | Yes | No | No | No |
645
+ | Transfer scoring | Yes | No | No | No |
560
646
  | Outcome tracking | Yes | No | No | No |
561
647
  | Confidence tiers | Yes | No | No | No |
562
648
  | Cross-tool import | Yes | No | No | No |
@@ -569,7 +655,7 @@ For how these mechanisms connect to LLM training, continual learning, and open r
569
655
  | Git-friendly | Yes | No | Yes | No |
570
656
  | Framework agnostic | Yes | Partial | Yes | No |
571
657
 
572
- Mem0, Basic Memory, and Claude-Mem all implement "save everything, search later." Hippo is the only one that models what memories are worth keeping, and the only one that lets you bring memories from other tools.
658
+ Mem0, Basic Memory, and Claude-Mem all implement "save everything, search later." Hippo implements all 7 hippocampal mechanisms: two-speed storage, decay, retrieval strengthening, schema acceleration, conflict detection, multi-agent transfer, and explicit working memory. It's the only tool that models what memories are worth keeping.
573
659
 
574
660
  ---
575
661
 
@@ -578,10 +664,10 @@ Mem0, Basic Memory, and Claude-Mem all implement "save everything, search later.
578
664
  Issues and PRs welcome. Before contributing, run `hippo status` in the repo root to see the project's own memory.
579
665
 
580
666
  The interesting problems:
581
- - Better consolidation heuristics (what makes a good semantic memory?)
582
- - Schema acceleration (fast-track memories that fit existing patterns)
583
- - Multi-agent shared memory with attribution
584
- - Benchmark eval: memory-augmented agent vs static memory vs no memory
667
+ - Better consolidation heuristics (LLM-powered merge vs current text overlap)
668
+ - Web UI / dashboard for visualizing decay curves and memory health
669
+ - Optimal decay parameter tuning from real usage data
670
+ - Cross-agent transfer learning evaluation
585
671
 
586
672
  ## License
587
673
 
package/dist/cli.d.ts CHANGED
@@ -5,13 +5,15 @@
5
5
  * Commands:
6
6
  * hippo init [--global]
7
7
  * hippo remember <text> [--tag <t>] [--error] [--pin] [--global]
8
- * hippo recall <query> [--budget <n>] [--json]
8
+ * hippo recall <query> [--budget <n>] [--json] [--why]
9
9
  * hippo sleep [--dry-run]
10
10
  * hippo status
11
11
  * hippo outcome --good | --bad [--id <id>]
12
12
  * hippo conflicts [--status <status>] [--json]
13
13
  * hippo snapshot <save|show|clear>
14
- * hippo session <log|show>
14
+ * hippo session <log|show|latest|resume>
15
+ * hippo handoff <create|latest|show>
16
+ * hippo current <show>
15
17
  * hippo forget <id>
16
18
  * hippo inspect <id>
17
19
  * hippo embed [--status]
@@ -19,6 +21,7 @@
19
21
  * hippo learn --git [--days <n>] [--repos <paths>]
20
22
  * hippo promote <id>
21
23
  * hippo sync
24
+ * hippo wm <push|read|clear|flush>
22
25
  */
23
26
  export {};
24
27
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;GAoBG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}