claude-mem-lite 3.55.0 → 3.56.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.
@@ -10,7 +10,7 @@
10
10
  "plugins": [
11
11
  {
12
12
  "name": "claude-mem-lite",
13
- "version": "3.55.0",
13
+ "version": "3.56.0",
14
14
  "source": "./",
15
15
  "description": "Persistent long-term memory for Claude Code via MCP — captures coding decisions, bugfixes, and context across sessions. Hybrid FTS5 + TF-IDF search with episode batching. Single SQLite DB, no external services. A lighter, lower-cost alternative to claude-mem (episode batching + a smaller model; cost savings are an internal estimate, not a measured benchmark)."
16
16
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-mem-lite",
3
- "version": "3.55.0",
3
+ "version": "3.56.0",
4
4
  "description": "Persistent long-term memory for Claude Code via MCP — captures coding decisions, bugfixes, and context across sessions. Hybrid FTS5 + TF-IDF search with episode batching. Single SQLite DB, no external services. A lighter, lower-cost alternative to claude-mem (episode batching + a smaller model; cost savings are an internal estimate, not a measured benchmark).",
5
5
  "author": {
6
6
  "name": "sdsrss"
@@ -38,13 +38,29 @@ export async function probeBetterSqlite3Binding(installDir) {
38
38
  * subprocess.
39
39
  *
40
40
  * @param {string} installDir Directory containing node_modules/better-sqlite3
41
- * @param {{probe?: () => Promise<{ok: boolean, error?: string}>, rebuild?: () => Promise<void>}} [deps]
41
+ * @param {{probe?: () => Promise<{ok: boolean, error?: string}>, rebuild?: () => Promise<void>, exec?: (cmd: string, opts: object) => void}} [deps]
42
42
  * @returns {Promise<{ok: true, action: 'verified' | 'rebuilt'} | {ok: false, error: string}>}
43
43
  */
44
44
  export async function ensureBetterSqlite3Working(installDir, deps = {}) {
45
45
  const probe = deps.probe || (() => probeBetterSqlite3Binding(installDir));
46
+ const exec = deps.exec || execSync;
46
47
  const rebuild = deps.rebuild || (async () => {
47
- execSync('npm rebuild better-sqlite3', { cwd: installDir, stdio: 'pipe' });
48
+ // npm >= 12 blocks install/lifecycle scripts by default (the `allow-scripts`
49
+ // allowlist ships empty). better-sqlite3's install step
50
+ // (`prebuild-install || node-gyp rebuild`) is what produces the native .node
51
+ // binding, so a plain `npm rebuild better-sqlite3` exits 0 ("rebuilt
52
+ // dependencies successfully") WITHOUT compiling it — the server then FATALs
53
+ // opening the DB and dies before the MCP handshake (client reports -32000),
54
+ // and THIS self-heal silently no-ops on every launch. Re-enable scripts for
55
+ // just this rebuild of our own vetted dependency: `npm rebuild <pkg>` runs
56
+ // only <pkg>'s scripts, so the blast radius is better-sqlite3 alone. Older
57
+ // npm has no such gate and treats the unknown flag as an ignored config; if
58
+ // it instead errors on the flag, fall back to the plain rebuild.
59
+ try {
60
+ exec('npm rebuild better-sqlite3 --dangerously-allow-all-scripts', { cwd: installDir, stdio: 'pipe' });
61
+ } catch {
62
+ exec('npm rebuild better-sqlite3', { cwd: installDir, stdio: 'pipe' });
63
+ }
48
64
  });
49
65
 
50
66
  const first = await probe();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-mem-lite",
3
- "version": "3.55.0",
3
+ "version": "3.56.0",
4
4
  "description": "Persistent long-term memory for Claude Code via MCP — captures coding decisions, bugfixes, and context across sessions. Hybrid FTS5 + TF-IDF search with episode batching. Single SQLite DB, no external services. A lighter, lower-cost alternative to claude-mem (episode batching + a smaller model; cost savings are an internal estimate, not a measured benchmark).",
5
5
  "type": "module",
6
6
  "packageManager": "npm@10.9.2",