claude-mem-lite 3.38.0 → 3.38.1
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-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/mem-cli.mjs +21 -3
- package/package.json +1 -1
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"plugins": [
|
|
11
11
|
{
|
|
12
12
|
"name": "claude-mem-lite",
|
|
13
|
-
"version": "3.38.
|
|
13
|
+
"version": "3.38.1",
|
|
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.38.
|
|
3
|
+
"version": "3.38.1",
|
|
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"
|
package/mem-cli.mjs
CHANGED
|
@@ -2443,16 +2443,34 @@ function cmdCitationStats(db, args) {
|
|
|
2443
2443
|
// as the per-project cite rate above; funnel.prior/delta_pt show the direction.
|
|
2444
2444
|
const funnel = computeCitationFunnelTrend(db, { days });
|
|
2445
2445
|
|
|
2446
|
+
// Survivorship-honesty: the per-project rate (cited_count/decay_seen_count over
|
|
2447
|
+
// SURVIVING in-window obs) is doubly biased — GC drops uncited obs from the
|
|
2448
|
+
// denominator and the window excludes older obs — so it overstates adoption (a
|
|
2449
|
+
// project can read 91% while its true lifetime inject→cite is ~6%). citation_log
|
|
2450
|
+
// rows persist across GC, so their per-project sum is the honest historical rate.
|
|
2451
|
+
// Attach both to each row so the text + JSON surface the biased and honest numbers.
|
|
2452
|
+
const funnelByProject = new Map(
|
|
2453
|
+
db.prepare(`SELECT project, COALESCE(SUM(injected_n), 0) inj, COALESCE(SUM(cited_n), 0) cit
|
|
2454
|
+
FROM citation_log GROUP BY project`).all().map(r => [r.project, r])
|
|
2455
|
+
);
|
|
2456
|
+
for (const r of perProject) {
|
|
2457
|
+
const f = funnelByProject.get(r.project);
|
|
2458
|
+
r.funnel_injected = f ? f.inj : 0;
|
|
2459
|
+
r.funnel_cited = f ? f.cit : 0;
|
|
2460
|
+
}
|
|
2461
|
+
|
|
2446
2462
|
if (json) {
|
|
2447
2463
|
out(JSON.stringify({ window_days: days, per_project: perProject, decay_queue: decayQueue, promoted, demoted, data_pollution_note: dataPollutionNote, funnel }, null, 2));
|
|
2448
2464
|
return;
|
|
2449
2465
|
}
|
|
2450
2466
|
|
|
2451
2467
|
if (dataPollutionNote) out(`Note: ${dataPollutionNote}\n`);
|
|
2452
|
-
out(`Cite rate by project (last ${days}d
|
|
2468
|
+
out(`Cite rate by project (last ${days}d):`);
|
|
2469
|
+
out(` funnel = lifetime injected→cited (citation_log, GC-durable = honest) · surviving = cited/decay over in-window non-GC'd obs (survivorship-biased, reads high):`);
|
|
2453
2470
|
for (const r of perProject) {
|
|
2454
|
-
const
|
|
2455
|
-
|
|
2471
|
+
const funnelRate = r.funnel_injected > 0 ? (r.funnel_cited * 100 / r.funnel_injected).toFixed(1) + '%' : '—';
|
|
2472
|
+
const survRate = r.resolved > 0 ? (r.cited * 100 / r.resolved).toFixed(1) + '%' : '—';
|
|
2473
|
+
out(` ${r.project.padEnd(30)} funnel ${String(funnelRate).padStart(6)} (${r.funnel_cited}/${r.funnel_injected}) · surviving ${String(survRate).padStart(6)} (${r.cited}/${r.resolved}) · at_risk:${r.at_risk}`);
|
|
2456
2474
|
}
|
|
2457
2475
|
out('');
|
|
2458
2476
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-mem-lite",
|
|
3
|
-
"version": "3.38.
|
|
3
|
+
"version": "3.38.1",
|
|
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",
|