claude-recall 0.23.1 → 0.23.3
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/.claude/settings.json
CHANGED
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
"type": "command",
|
|
42
42
|
"command": "node /home/ebiarao/.nvm/versions/node/v20.19.3/lib/node_modules/claude-recall/dist/cli/claude-recall-cli.js hook run tool-outcome-watcher",
|
|
43
43
|
"timeout": 3
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"type": "command",
|
|
47
|
+
"command": "node /home/ebiarao/.nvm/versions/node/v20.19.3/lib/node_modules/claude-recall/dist/cli/claude-recall-cli.js hook run rule-injection-resolver",
|
|
48
|
+
"timeout": 3
|
|
44
49
|
}
|
|
45
50
|
]
|
|
46
51
|
}
|
|
@@ -52,6 +57,11 @@
|
|
|
52
57
|
"type": "command",
|
|
53
58
|
"command": "node /home/ebiarao/.nvm/versions/node/v20.19.3/lib/node_modules/claude-recall/dist/cli/claude-recall-cli.js hook run tool-failure",
|
|
54
59
|
"timeout": 3
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"type": "command",
|
|
63
|
+
"command": "node /home/ebiarao/.nvm/versions/node/v20.19.3/lib/node_modules/claude-recall/dist/cli/claude-recall-cli.js hook run rule-injection-resolver",
|
|
64
|
+
"timeout": 3
|
|
55
65
|
}
|
|
56
66
|
]
|
|
57
67
|
}
|
|
@@ -63,6 +73,11 @@
|
|
|
63
73
|
{
|
|
64
74
|
"type": "command",
|
|
65
75
|
"command": "python3 /home/ebiarao/repos-wsl/personal-projects/claude-recall/.claude/hooks/search_enforcer.py"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"type": "command",
|
|
79
|
+
"command": "node /home/ebiarao/.nvm/versions/node/v20.19.3/lib/node_modules/claude-recall/dist/cli/claude-recall-cli.js hook run rule-injector",
|
|
80
|
+
"timeout": 5
|
|
66
81
|
}
|
|
67
82
|
]
|
|
68
83
|
}
|
|
@@ -121,5 +136,5 @@
|
|
|
121
136
|
}
|
|
122
137
|
]
|
|
123
138
|
},
|
|
124
|
-
"hooksVersion": "
|
|
139
|
+
"hooksVersion": "14.0.0"
|
|
125
140
|
}
|
|
@@ -8,15 +8,15 @@ source: claude-recall
|
|
|
8
8
|
|
|
9
9
|
# Preferences
|
|
10
10
|
|
|
11
|
-
Auto-generated from 5 memories. Last updated: 2026-04-
|
|
11
|
+
Auto-generated from 5 memories. Last updated: 2026-04-23.
|
|
12
12
|
|
|
13
13
|
## Rules
|
|
14
14
|
|
|
15
|
-
- integration-fixture session
|
|
16
|
-
- integration-fixture preference
|
|
17
|
-
- integration-fixture preference
|
|
18
|
-
- integration-fixture preference
|
|
19
|
-
- integration-fixture memory
|
|
15
|
+
- integration-fixture session 1776936462139
|
|
16
|
+
- integration-fixture preference 1776936462057-2
|
|
17
|
+
- integration-fixture preference 1776936462057-1
|
|
18
|
+
- integration-fixture preference 1776936462057-0
|
|
19
|
+
- integration-fixture memory 1776936461992
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
*Auto-generated by Claude Recall. Regenerate: `npx claude-recall skills generate`*
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"topicId": "preferences",
|
|
3
|
-
"sourceHash": "
|
|
3
|
+
"sourceHash": "8f6c2515c073f67ccf01ad1386f3694b666e3f56bb1ccdeeb6aae55dfc04a477",
|
|
4
4
|
"memoryCount": 5,
|
|
5
|
-
"generatedAt": "2026-04-
|
|
5
|
+
"generatedAt": "2026-04-23T09:27:42.176Z",
|
|
6
6
|
"memoryKeys": [
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
7
|
+
"memory_1776936462141_jljtaadmy",
|
|
8
|
+
"memory_1776936462104_21zrli1a5",
|
|
9
|
+
"memory_1776936462081_4cngzrj7y",
|
|
10
|
+
"memory_1776936462058_u48oswvqh",
|
|
11
|
+
"memory_1776936461995_g769cz2vk"
|
|
12
12
|
]
|
|
13
13
|
}
|
package/README.md
CHANGED
|
@@ -34,33 +34,22 @@ Your preferences, project structure, workflows, corrections, and coding style ar
|
|
|
34
34
|
|
|
35
35
|
### Install for Claude Code
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Run this **once** on your machine:
|
|
37
|
+
Install the global binary once per machine:
|
|
40
38
|
|
|
41
39
|
```bash
|
|
42
40
|
npm install -g claude-recall
|
|
43
41
|
```
|
|
44
42
|
|
|
45
|
-
Then
|
|
43
|
+
Then, in each project directory where you want claude-recall active:
|
|
46
44
|
|
|
47
45
|
```bash
|
|
48
46
|
claude-recall setup --install
|
|
49
47
|
claude mcp add claude-recall -- claude-recall mcp start
|
|
50
48
|
```
|
|
51
49
|
|
|
52
|
-
Restart Claude Code.
|
|
53
|
-
|
|
54
|
-
#### Adding to another project
|
|
50
|
+
Restart Claude Code. Ask *"Load my rules"* to verify — Claude should call `load_rules`.
|
|
55
51
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
claude-recall setup --install
|
|
60
|
-
claude mcp add claude-recall -- claude-recall mcp start
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Restart Claude Code in that project.
|
|
52
|
+
> **Hit `EACCES: permission denied`?** Your global npm is owned by root. Either `sudo npm install -g claude-recall` once, or do the permanent fix described in [Upgrading](#upgrading) below.
|
|
64
53
|
|
|
65
54
|
### Install for Pi
|
|
66
55
|
|
|
@@ -68,49 +57,51 @@ Restart Claude Code in that project.
|
|
|
68
57
|
pi install npm:claude-recall
|
|
69
58
|
```
|
|
70
59
|
|
|
71
|
-
That's it.
|
|
72
|
-
|
|
73
|
-
**Verify:** Start Pi and ask *"Load my rules"* — Pi should call `recall_load_rules`.
|
|
60
|
+
That's it. Ask Pi to *"Load my rules"* to verify.
|
|
74
61
|
|
|
75
62
|
### Shared Database
|
|
76
63
|
|
|
77
|
-
Both agents use the same database
|
|
64
|
+
Both agents use the same database at `~/.claude-recall/claude-recall.db`, scoped per project by working directory. A correction learned in one agent is available in the other.
|
|
78
65
|
|
|
79
66
|
### Upgrading
|
|
80
67
|
|
|
81
|
-
#### If you use Claude Code
|
|
82
|
-
|
|
83
|
-
Run this **once** to update the global binary:
|
|
84
|
-
|
|
85
68
|
```bash
|
|
86
|
-
|
|
69
|
+
claude-recall upgrade
|
|
87
70
|
```
|
|
88
71
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
claude-recall setup --install
|
|
93
|
-
```
|
|
72
|
+
One command. Checks the registry, refreshes the global binary, clears any running MCP servers — Claude Code respawns them on the next tool call, picking up the new version. **No `claude mcp add` re-run needed** — existing registrations point at the `claude-recall` command, not a pinned path.
|
|
94
73
|
|
|
95
|
-
|
|
74
|
+
For Pi, run `pi update npm:claude-recall` and restart Pi.
|
|
96
75
|
|
|
97
|
-
**
|
|
76
|
+
> **Seeing `error: unknown command 'upgrade'`?** Your installed version predates 0.23.2 (the release that added the `upgrade` command). Bootstrap once with `npm install -g claude-recall@latest`, then all future upgrades use `claude-recall upgrade`.
|
|
98
77
|
|
|
99
|
-
|
|
78
|
+
<details>
|
|
79
|
+
<summary><b>If the install step reports <code>EACCES: permission denied</code></b></summary>
|
|
100
80
|
|
|
101
|
-
|
|
81
|
+
Your global npm prefix is root-owned (common when node was installed via `apt install nodejs`). Pick one:
|
|
102
82
|
|
|
83
|
+
**Quick** — one-time sudo:
|
|
103
84
|
```bash
|
|
104
|
-
|
|
85
|
+
sudo npm install -g claude-recall@latest
|
|
105
86
|
```
|
|
106
87
|
|
|
107
|
-
|
|
88
|
+
**Permanent** — move the prefix to a user-owned directory so no global install ever needs sudo again:
|
|
89
|
+
```bash
|
|
90
|
+
mkdir -p ~/.npm-global
|
|
91
|
+
npm config set prefix ~/.npm-global
|
|
92
|
+
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
93
|
+
source ~/.bashrc
|
|
108
94
|
|
|
109
|
-
|
|
95
|
+
# Install claude-recall into the new user-owned prefix:
|
|
96
|
+
npm install -g claude-recall@latest
|
|
110
97
|
|
|
111
|
-
|
|
98
|
+
# Verify and you're done:
|
|
99
|
+
claude-recall --version
|
|
100
|
+
```
|
|
112
101
|
|
|
113
|
-
|
|
102
|
+
The prefix fix only tells npm *where* to install; it doesn't install anything itself. The explicit `npm install -g` line picks up the new binary into the new prefix so `claude-recall` on your PATH has the `upgrade` command.
|
|
103
|
+
|
|
104
|
+
</details>
|
|
114
105
|
|
|
115
106
|
---
|
|
116
107
|
|
|
@@ -312,6 +303,7 @@ claude-recall mcp cleanup --all # Stop all stale MCP servers
|
|
|
312
303
|
# ── Setup & Diagnostics ─────────────────────────────────────────────
|
|
313
304
|
claude-recall setup # Show activation instructions
|
|
314
305
|
claude-recall setup --install # Install skills + hooks
|
|
306
|
+
claude-recall upgrade # One-shot upgrade: global binary + clear stale MCP servers
|
|
315
307
|
claude-recall status # Installation and system status
|
|
316
308
|
claude-recall repair # Clean up old hooks, install skills
|
|
317
309
|
claude-recall hooks check # Verify hook files exist and are valid
|
|
@@ -261,6 +261,77 @@ class ClaudeRecallCLI {
|
|
|
261
261
|
});
|
|
262
262
|
this.logger.info('CLI', 'Failures displayed', { count: displayFailures.length });
|
|
263
263
|
}
|
|
264
|
+
/**
|
|
265
|
+
* One-shot upgrade: check registry, install latest globally, clean up any
|
|
266
|
+
* running MCP servers (so fresh 0.x spawns on next Claude Code tool call).
|
|
267
|
+
*
|
|
268
|
+
* Handles the common failure modes inline so users don't have to figure them out:
|
|
269
|
+
* - EACCES on `/usr/lib/node_modules` → print sudo + permanent-prefix fix
|
|
270
|
+
* - No npm in PATH → actionable error
|
|
271
|
+
* - Registry unreachable → clear error, don't leave install half-done
|
|
272
|
+
*/
|
|
273
|
+
async upgrade() {
|
|
274
|
+
const { execSync, spawnSync } = require('child_process');
|
|
275
|
+
// Current version from package.json shipped with the installed binary
|
|
276
|
+
let current;
|
|
277
|
+
try {
|
|
278
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'package.json'), 'utf-8'));
|
|
279
|
+
current = pkg.version;
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
current = 'unknown';
|
|
283
|
+
}
|
|
284
|
+
// Latest version from registry
|
|
285
|
+
let latest;
|
|
286
|
+
try {
|
|
287
|
+
latest = execSync('npm view claude-recall version', {
|
|
288
|
+
encoding: 'utf-8',
|
|
289
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
290
|
+
}).trim();
|
|
291
|
+
}
|
|
292
|
+
catch (err) {
|
|
293
|
+
console.error('❌ Could not reach the npm registry.');
|
|
294
|
+
console.error(` ${err?.stderr?.toString().trim() || err?.message || 'unknown error'}`);
|
|
295
|
+
console.error('\nCheck your connection, then run `claude-recall upgrade` again.');
|
|
296
|
+
process.exit(1);
|
|
297
|
+
}
|
|
298
|
+
console.log(`Installed: ${current}`);
|
|
299
|
+
console.log(`Latest: ${latest}`);
|
|
300
|
+
if (current === latest) {
|
|
301
|
+
console.log('\n✓ Already up to date.');
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
console.log(`\n📦 Upgrading ${current} → ${latest}...\n`);
|
|
305
|
+
// Run npm install -g, streaming output so the user sees progress / errors live
|
|
306
|
+
const install = spawnSync('npm', ['install', '-g', 'claude-recall@latest'], {
|
|
307
|
+
stdio: 'inherit',
|
|
308
|
+
});
|
|
309
|
+
if (install.status !== 0) {
|
|
310
|
+
// npm prints its own error — add the practical remediation on top
|
|
311
|
+
console.error('\n❌ Install failed.');
|
|
312
|
+
console.error('\nMost common cause: your global npm prefix is owned by root (EACCES).');
|
|
313
|
+
console.error('\nQuick fix:');
|
|
314
|
+
console.error(' sudo npm install -g claude-recall');
|
|
315
|
+
console.error('\nPermanent fix (no more sudo for any global install on this machine):');
|
|
316
|
+
console.error(' mkdir -p ~/.npm-global');
|
|
317
|
+
console.error(" npm config set prefix ~/.npm-global");
|
|
318
|
+
console.error(" echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc");
|
|
319
|
+
console.error(' source ~/.bashrc');
|
|
320
|
+
console.error('\nThen re-run: claude-recall upgrade');
|
|
321
|
+
process.exit(install.status ?? 1);
|
|
322
|
+
}
|
|
323
|
+
// Kill any running MCP servers so Claude Code respawns them with the new binary
|
|
324
|
+
console.log('\n🧹 Cleaning up running MCP servers (Claude Code respawns them on next tool call)...');
|
|
325
|
+
try {
|
|
326
|
+
spawnSync('claude-recall', ['mcp', 'cleanup', '--all'], { stdio: 'inherit' });
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
// Non-fatal — the user can restart Claude Code manually if this fails
|
|
330
|
+
}
|
|
331
|
+
console.log(`\n✓ Upgraded to ${latest}. No need to re-run \`claude mcp add\` — existing`);
|
|
332
|
+
console.log(' registrations point at the `claude-recall` command and pick up the new');
|
|
333
|
+
console.log(' binary automatically. Just run any tool in Claude Code.');
|
|
334
|
+
}
|
|
264
335
|
/**
|
|
265
336
|
* Demote rules loaded often but never cited — excludes them from future load_rules payloads.
|
|
266
337
|
* Rules remain searchable via search_memory and can be restored with `rules promote <id>`.
|
|
@@ -1613,6 +1684,15 @@ async function main() {
|
|
|
1613
1684
|
cli.cleanupTestPollution({ dryRun: options.dryRun });
|
|
1614
1685
|
process.exit(0);
|
|
1615
1686
|
});
|
|
1687
|
+
// Upgrade command: one-shot upgrade, handles EACCES inline
|
|
1688
|
+
program
|
|
1689
|
+
.command('upgrade')
|
|
1690
|
+
.description('Upgrade claude-recall to the latest version and clear stale MCP servers')
|
|
1691
|
+
.action(async () => {
|
|
1692
|
+
const cli = new ClaudeRecallCLI(program.opts());
|
|
1693
|
+
await cli.upgrade();
|
|
1694
|
+
process.exit(0);
|
|
1695
|
+
});
|
|
1616
1696
|
// Export command
|
|
1617
1697
|
program
|
|
1618
1698
|
.command('export <output>')
|
package/package.json
CHANGED