crispy-recall 0.1.5 → 0.2.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.
- package/README.md +88 -1
- package/dist/embed-pending.js +961 -1452
- package/dist/recall.js +2217 -1630
- package/dist/stop-hook.js +928 -1451
- package/package.json +10 -8
- package/dist/node-sqlite3-wasm.wasm +0 -0
package/README.md
CHANGED
|
@@ -6,6 +6,43 @@ Searchable memory for your Claude Code and Codex sessions. Local, fast, no daemo
|
|
|
6
6
|
|
|
7
7
|
A standalone spin-off of the recall feature from [Crispy](https://github.com/TheSylvester/crispy). See the parent project for the broader multi-agent orchestration GUI.
|
|
8
8
|
|
|
9
|
+
## What's new in 0.2.0
|
|
10
|
+
|
|
11
|
+
- **Native SQLite engine with real WAL.** The database now runs on
|
|
12
|
+
better-sqlite3 with write-ahead logging instead of the previous WebAssembly
|
|
13
|
+
binding — which never actually engaged WAL and could silently corrupt the
|
|
14
|
+
index when multiple processes wrote at once. That failure mode is eliminated
|
|
15
|
+
at the root. `recall doctor` gains a SQLite-binding health section.
|
|
16
|
+
**Node.js ≥ 22.16 is now required.**
|
|
17
|
+
- **Git provenance: `--commit` and `--blame`.** `recall --commit <hash>` lists
|
|
18
|
+
the session(s) that produced a commit; `recall --blame <path>[:line[-line]]`
|
|
19
|
+
traces a file or line range back to the conversations responsible. Matching
|
|
20
|
+
is structural (your sessions' actual edits vs the commit's diff), not
|
|
21
|
+
timestamp-based. These flags were documented in the skill but missing from
|
|
22
|
+
the shipped CLI; they now work as documented.
|
|
23
|
+
- **Better semantic retrieval (embedding v3).** Stored messages and queries now
|
|
24
|
+
carry the task prefixes the embedding model was trained on, and short turns
|
|
25
|
+
(one-line answers, approvals, decisions) are embedded together with their
|
|
26
|
+
preceding context so they're finally findable by meaning. Measurably improves
|
|
27
|
+
retrieval on the LoCoMo benchmark (recall@5 54.9 → 58.4).
|
|
28
|
+
- **Semantic search stays available during migrations.** Upgrading re-embeds
|
|
29
|
+
your history in the background; until it finishes, search transparently
|
|
30
|
+
blends old- and new-format vectors and tags output with
|
|
31
|
+
`(migrating: N% re-embedded)` instead of going dark.
|
|
32
|
+
- **Relevance-first ranking.** The hidden age penalty is off by default —
|
|
33
|
+
older sessions now rank purely by relevance (previously the right old result
|
|
34
|
+
could rank 2× worse just for being old). Pass `--recent` to prefer newer
|
|
35
|
+
sessions explicitly.
|
|
36
|
+
- **Faster indexing on large databases.** A new index removes a full-table
|
|
37
|
+
scan from every embedding batch and end-of-turn catch-up (~0.3 s → ~0.05 s
|
|
38
|
+
at ~287K messages). Created automatically on first run.
|
|
39
|
+
- **Safe in-place upgrade for existing installs.** `recall install` migrates
|
|
40
|
+
an existing database in place: rollback snapshot → WAL conversion →
|
|
41
|
+
integrity check with auto-repair → background re-embed. See
|
|
42
|
+
[Upgrading from 0.1.x](#upgrading-from-01x).
|
|
43
|
+
- **New scripting flags.** `--raw-messages` (full ranked per-message JSON) and
|
|
44
|
+
`--no-idf` (keep common words in keyword search), both off by default.
|
|
45
|
+
|
|
9
46
|
## Install
|
|
10
47
|
|
|
11
48
|
Install the command globally, then run the one-time setup:
|
|
@@ -34,12 +71,46 @@ Windows-native are separate installs.** If you use both, run the install in each
|
|
|
34
71
|
> installed skill's command contract have nothing to call. Use the global
|
|
35
72
|
> install above.
|
|
36
73
|
|
|
37
|
-
Prerequisites: Node ≥
|
|
74
|
+
Prerequisites: Node ≥ 22.16 and Claude Code installed. If Codex is detected
|
|
38
75
|
(`~/.codex/` exists), recall installs the `recall` skill into Codex (so the
|
|
39
76
|
agent can search) and you can index your Codex history with
|
|
40
77
|
`recall backfill --vendor codex`. Real-time per-turn Codex indexing is **not
|
|
41
78
|
yet** supported.
|
|
42
79
|
|
|
80
|
+
### Upgrading from 0.1.x
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npm install -g crispy-recall
|
|
84
|
+
recall install # run this FIRST, before any other recall command
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Exit any running Claude/Codex sessions first, then make `recall install` the
|
|
88
|
+
first recall command you run after the npm upgrade — it performs a one-time,
|
|
89
|
+
in-place migration of your existing database (rollback snapshot → WAL
|
|
90
|
+
conversion → integrity check → background re-embed). If a live session is
|
|
91
|
+
still holding the database the installer aborts cleanly and asks you to
|
|
92
|
+
re-run; re-running is always safe and picks up where it left off.
|
|
93
|
+
|
|
94
|
+
What to expect:
|
|
95
|
+
|
|
96
|
+
- **Your indexed history is preserved — even without the original
|
|
97
|
+
transcripts.** Claude Code deletes session `.jsonl` files after 30 days by
|
|
98
|
+
default; the migration never reads them. It works on the database in place,
|
|
99
|
+
and the re-embed sources text from the database itself.
|
|
100
|
+
- A rollback snapshot is written to `~/.recall/recall.db.pre-upgrade-<stamp>`
|
|
101
|
+
(needs free disk roughly equal to your DB size; delete it once you're
|
|
102
|
+
satisfied).
|
|
103
|
+
- A background re-embed upgrades your vectors to the new format — roughly an
|
|
104
|
+
hour per 20K messages on CPU, minutes on GPU. Search works the entire time
|
|
105
|
+
(output shows `migrating: N% re-embedded`); watch progress with
|
|
106
|
+
`recall status`. It resumes automatically after reboots.
|
|
107
|
+
- The migration is one-way: **don't downgrade** to ≤ 0.1.6 afterwards — the
|
|
108
|
+
old engine fails closed on the converted database.
|
|
109
|
+
- **Avoid `recall repair --full` unless you accept losing older history** — it
|
|
110
|
+
rebuilds the index from the transcripts still on disk, which for most
|
|
111
|
+
machines means only the last 30 days. Your database is the store of record;
|
|
112
|
+
the pre-upgrade snapshot is the rollback path if anything looks wrong.
|
|
113
|
+
|
|
43
114
|
## What it does
|
|
44
115
|
|
|
45
116
|
- A **Stop hook** ingests every turn into a local SQLite DB the moment a session ends — no daemon, no background polling.
|
|
@@ -96,6 +167,22 @@ output. `recall install` also takes `--offline` (use a pre-staged binary +
|
|
|
96
167
|
model instead of downloading) and `--no-backfill` / `--auto-backfill` to control
|
|
97
168
|
the initial history index. Run `recall --help` for the full flag set.
|
|
98
169
|
|
|
170
|
+
### Commit attribution (`--commit` / `--blame`)
|
|
171
|
+
|
|
172
|
+
Find the session(s) that produced a commit, or the session(s) responsible for
|
|
173
|
+
the current state of a file or line. Matching is structural — session
|
|
174
|
+
Edit/Write/MultiEdit tool calls are compared against the commit's diff via
|
|
175
|
+
tri-gram intersection, not clock proximity. `--blame` is HEAD-relative: it runs
|
|
176
|
+
`git blame` to find the commits behind the current file (or line range) and
|
|
177
|
+
attributes each; sessions overwritten by a later commit won't appear. Results
|
|
178
|
+
list top-level sessions and subagent leaves chronologically (oldest first).
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
recall --commit 25dd0f8 # sessions that produced a commit
|
|
182
|
+
recall --blame src/paths.ts:82-84 # sessions behind a line range
|
|
183
|
+
recall --blame src/foo.ts:42 src/bar.ts:10-20 --limit 20 # union of specs
|
|
184
|
+
```
|
|
185
|
+
|
|
99
186
|
## Where things live
|
|
100
187
|
|
|
101
188
|
- `~/.recall/` — the DB, model, binary, logs, and `config.json` (the resolved GPU/CPU embedder mode).
|