persisted-memory 1.0.3 → 1.1.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 +61 -12
- package/dist/cli/auto-persist.d.ts +1 -0
- package/dist/cli/auto-persist.js +14 -0
- package/dist/cli/auto-persist.js.map +1 -0
- package/dist/embeddings/ollama.js +1 -1
- package/dist/embeddings/ollama.js.map +1 -1
- package/dist/server.js +4 -4
- package/dist/server.js.map +1 -1
- package/dist/storage/types.d.ts +1 -1
- package/dist/storage/types.js +5 -1
- package/dist/storage/types.js.map +1 -1
- package/dist/utils/auto-persist.d.ts +13 -0
- package/dist/utils/auto-persist.js +160 -0
- package/dist/utils/auto-persist.js.map +1 -0
- package/dist/utils/daily-log-parser.d.ts +25 -0
- package/dist/utils/daily-log-parser.js +181 -0
- package/dist/utils/daily-log-parser.js.map +1 -0
- package/hooks/on-session-end.sh +4 -1
- package/package.json +5 -3
- package/scripts/install.sh +10 -5
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Claude Code Session (any project)
|
|
|
12
12
|
│ PreCompact → saves context before compaction
|
|
13
13
|
│ PostToolUse → logs file changes
|
|
14
14
|
│ Stop → marks turn completion
|
|
15
|
-
│ SessionEnd →
|
|
15
|
+
│ SessionEnd → auto-persist to LanceDB + AI summary
|
|
16
16
|
│
|
|
17
17
|
└─ MCP Server provides 10 tools
|
|
18
18
|
memory_store, memory_search, memory_recall,
|
|
@@ -31,6 +31,8 @@ Memories are stored **per-project** at `<project>/.claude/memory/`. The MCP serv
|
|
|
31
31
|
- **Privacy tags** -- wrap sensitive content in `<private>...</private>` to exclude from outputs
|
|
32
32
|
- **AI-powered summaries** -- Ollama-generated session summaries (falls back to rule-based)
|
|
33
33
|
- **Web viewer** -- browser-based UI for exploring and searching memories
|
|
34
|
+
- **Auto-persist** -- hook-captured activity is automatically stored into LanceDB (no manual `memory_store` needed)
|
|
35
|
+
- **Configurable embeddings** -- swap model and vector dimension via environment variables
|
|
34
36
|
- **Zero external APIs** -- everything runs locally with Ollama
|
|
35
37
|
|
|
36
38
|
## Prerequisites
|
|
@@ -130,7 +132,7 @@ Hooks fire automatically during every Claude Code session:
|
|
|
130
132
|
- **Session start**: Previous session's SUMMARY.md is injected into context
|
|
131
133
|
- **File changes**: Edit/Write operations are logged to daily Markdown
|
|
132
134
|
- **Context compaction**: Transcript is saved before compaction occurs
|
|
133
|
-
- **Session end**: AI-powered summary is generated (or rule-based fallback)
|
|
135
|
+
- **Session end**: Daily log entries are auto-persisted to LanceDB, then AI-powered summary is generated (or rule-based fallback)
|
|
134
136
|
|
|
135
137
|
### Manual (via MCP tools)
|
|
136
138
|
|
|
@@ -217,20 +219,64 @@ When storing memories, specify a type:
|
|
|
217
219
|
| `medium` | Useful context (default) |
|
|
218
220
|
| `low` | Minor notes |
|
|
219
221
|
|
|
222
|
+
## Auto-Persist
|
|
223
|
+
|
|
224
|
+
Hook-captured activity (file modifications, pre-compact saves, session context) is **automatically stored into LanceDB** at session end -- no manual `memory_store` calls needed.
|
|
225
|
+
|
|
226
|
+
**How it works:**
|
|
227
|
+
1. Hooks write activity to daily log files (`daily/YYYY-MM-DD.md`) throughout the session
|
|
228
|
+
2. On session end, the auto-persist system parses the daily log and classifies each section
|
|
229
|
+
3. Already-stored memories (`memory_store` entries) are skipped to avoid duplicates
|
|
230
|
+
4. File modifications are aggregated into a single `code_change` entry
|
|
231
|
+
5. New entries are embedded and stored in LanceDB + knowledge graph
|
|
232
|
+
6. A character offset is tracked to avoid re-processing on subsequent runs
|
|
233
|
+
|
|
234
|
+
All auto-persisted entries are tagged with `"auto-persisted"` for traceability.
|
|
235
|
+
|
|
236
|
+
| Daily Log Pattern | Classification | Action |
|
|
237
|
+
|---|---|---|
|
|
238
|
+
| `**[type]** (importance)` | `memory_store` | **Skip** (already in LanceDB) |
|
|
239
|
+
| `- HH:MM Modified: path` | `file_modification` | **Aggregate** into one `code_change` entry |
|
|
240
|
+
| `_Turn completed at_` | `turn_marker` | **Skip** (noise) |
|
|
241
|
+
| `## Session ended at` | `session_marker` | **Skip** (noise) |
|
|
242
|
+
| `## Pre-compact save` | `pre_compact` | **Store** as `context` / `medium` |
|
|
243
|
+
| Other (>50 chars) | `content` | **Store** as `context` / `low` |
|
|
244
|
+
|
|
245
|
+
## Configuration
|
|
246
|
+
|
|
247
|
+
Embedding model and vector dimensions are configurable via environment variables:
|
|
248
|
+
|
|
249
|
+
| Variable | Default | Description |
|
|
250
|
+
|---|---|---|
|
|
251
|
+
| `MEMORY_EMBED_MODEL` | `nomic-embed-text` | Ollama embedding model name |
|
|
252
|
+
| `MEMORY_VECTOR_DIM` | `768` | Vector dimension (must match model output) |
|
|
253
|
+
| `OLLAMA_URL` | `http://localhost:11434` | Ollama server URL (localhost only) |
|
|
254
|
+
|
|
255
|
+
**Storage math** (768 dims): ~3KB per vector. 1,000 memories = ~3MB, 10,000 = ~30MB.
|
|
256
|
+
|
|
257
|
+
Example with a smaller model:
|
|
258
|
+
```bash
|
|
259
|
+
export MEMORY_EMBED_MODEL=all-minilm
|
|
260
|
+
export MEMORY_VECTOR_DIM=384
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**Important:** `MEMORY_VECTOR_DIM` must match the actual output dimension of your chosen model. A mismatch will cause vectors to fall back to zero-vectors, disabling semantic search.
|
|
264
|
+
|
|
220
265
|
## Per-Project Data
|
|
221
266
|
|
|
222
267
|
Each project gets its own memory directory:
|
|
223
268
|
|
|
224
269
|
```
|
|
225
270
|
<your-project>/.claude/memory/
|
|
226
|
-
├── .lance/
|
|
227
|
-
├──
|
|
228
|
-
├──
|
|
229
|
-
├──
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
└──
|
|
271
|
+
├── .lance/ # LanceDB vector index (add to .gitignore)
|
|
272
|
+
├── .auto-persist-offset # Tracks last-persisted position per daily log
|
|
273
|
+
├── SUMMARY.md # Auto-generated context summary
|
|
274
|
+
├── knowledge-graph.json # Entity/relationship graph
|
|
275
|
+
├── daily/ # Daily session logs
|
|
276
|
+
│ └── 2026-02-18.md
|
|
277
|
+
├── sessions/ # Archived session summaries
|
|
278
|
+
│ └── 2026-02-18-10-30.md
|
|
279
|
+
└── decisions.md # Append-only decisions log
|
|
234
280
|
```
|
|
235
281
|
|
|
236
282
|
## Search
|
|
@@ -282,10 +328,13 @@ persisted-memory/
|
|
|
282
328
|
│ │ ├── chunking.ts # Split text into embeddable chunks
|
|
283
329
|
│ │ ├── project.ts # Resolve CLAUDE_PROJECT_DIR
|
|
284
330
|
│ │ ├── privacy.ts # Private tag stripping
|
|
285
|
-
│ │
|
|
331
|
+
│ │ ├── summarize.ts # AI-powered summary generation
|
|
332
|
+
│ │ ├── daily-log-parser.ts # Parse daily log into classified sections
|
|
333
|
+
│ │ └── auto-persist.ts # Auto-persist orchestrator
|
|
286
334
|
│ ├── cli/
|
|
287
335
|
│ │ ├── viewer.ts # Web viewer CLI entry point
|
|
288
|
-
│ │
|
|
336
|
+
│ │ ├── generate-summary.ts # Summary generation CLI
|
|
337
|
+
│ │ └── auto-persist.ts # Auto-persist CLI entry point
|
|
289
338
|
│ └── viewer/
|
|
290
339
|
│ ├── server.ts # HTTP server for web viewer
|
|
291
340
|
│ └── index.html # Self-contained web UI
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { autoPersist } from "../utils/auto-persist.js";
|
|
2
|
+
import { getMemoryDir } from "../utils/project.js";
|
|
3
|
+
async function main() {
|
|
4
|
+
const memoryDir = process.env.MEMORY_DIR || getMemoryDir();
|
|
5
|
+
const result = await autoPersist(memoryDir);
|
|
6
|
+
if (result.entriesStored > 0) {
|
|
7
|
+
console.log(`Auto-persisted ${result.entriesStored} entries (${result.chunksStored} chunks) from ${result.date}`);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
main().catch((err) => {
|
|
11
|
+
console.error("Failed to auto-persist:", err);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=auto-persist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-persist.js","sourceRoot":"","sources":["../../src/cli/auto-persist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,YAAY,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;IAE5C,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,kBAAkB,MAAM,CAAC,aAAa,aAAa,MAAM,CAAC,YAAY,iBAAiB,MAAM,CAAC,IAAI,EAAE,CACrG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { validateLocalhostUrl } from "../utils/validate-url.js";
|
|
2
2
|
const OLLAMA_URL = validateLocalhostUrl(process.env.OLLAMA_URL || "http://localhost:11434");
|
|
3
|
-
const MODEL = "nomic-embed-text";
|
|
3
|
+
const MODEL = process.env.MEMORY_EMBED_MODEL || "nomic-embed-text";
|
|
4
4
|
const TIMEOUT_MS = 10_000;
|
|
5
5
|
const HEALTH_TIMEOUT_MS = 3_000;
|
|
6
6
|
export async function embed(text) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/embeddings/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,wBAAwB,CAAC,CAAC;AAC5F,MAAM,KAAK,GAAG,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/embeddings/ollama.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -4,7 +4,7 @@ import { randomUUID } from "node:crypto";
|
|
|
4
4
|
import { join, dirname } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { spawn } from "node:child_process";
|
|
7
|
-
import { MEMORY_TYPES, IMPORTANCE_LEVELS } from "./storage/types.js";
|
|
7
|
+
import { MEMORY_TYPES, IMPORTANCE_LEVELS, VECTOR_DIM } from "./storage/types.js";
|
|
8
8
|
import * as lanceStore from "./storage/lance-store.js";
|
|
9
9
|
import * as mdStore from "./storage/markdown-store.js";
|
|
10
10
|
import * as kgStore from "./storage/knowledge-graph.js";
|
|
@@ -45,7 +45,7 @@ async function withGraphLock(fn) {
|
|
|
45
45
|
export function createServer() {
|
|
46
46
|
const server = new McpServer({
|
|
47
47
|
name: "persisted-memory",
|
|
48
|
-
version: "1.
|
|
48
|
+
version: "1.1.0",
|
|
49
49
|
});
|
|
50
50
|
// --- memory_store ---
|
|
51
51
|
server.tool("memory_store", "Store a memory entry. Wrap sensitive content in <private>...</private> tags to exclude it from summaries and public views. Dual-writes to both LanceDB (vector index) and Markdown files (source of truth).", {
|
|
@@ -71,7 +71,7 @@ export function createServer() {
|
|
|
71
71
|
const chunks = chunkText(entry.text);
|
|
72
72
|
const vector = await embed(chunks[0]);
|
|
73
73
|
// Store in LanceDB
|
|
74
|
-
await lanceStore.store(entry, vector || new Array(
|
|
74
|
+
await lanceStore.store(entry, vector || new Array(VECTOR_DIM).fill(0));
|
|
75
75
|
// If text is long, store additional chunks
|
|
76
76
|
for (let i = 1; i < chunks.length; i++) {
|
|
77
77
|
const chunkEntry = {
|
|
@@ -80,7 +80,7 @@ export function createServer() {
|
|
|
80
80
|
text: chunks[i],
|
|
81
81
|
};
|
|
82
82
|
const chunkVec = await embed(chunks[i]);
|
|
83
|
-
await lanceStore.store(chunkEntry, chunkVec || new Array(
|
|
83
|
+
await lanceStore.store(chunkEntry, chunkVec || new Array(VECTOR_DIM).fill(0));
|
|
84
84
|
}
|
|
85
85
|
// Dual-write to Markdown
|
|
86
86
|
mdStore.appendDaily(memoryDir, `**[${entry.type}]** (${entry.importance})\n\n${entry.text}`);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/types.d.ts
CHANGED
package/dist/storage/types.js
CHANGED
|
@@ -8,6 +8,10 @@ export const MEMORY_TYPES = [
|
|
|
8
8
|
"preference",
|
|
9
9
|
];
|
|
10
10
|
export const IMPORTANCE_LEVELS = ["low", "medium", "high", "critical"];
|
|
11
|
-
|
|
11
|
+
const rawDim = parseInt(process.env.MEMORY_VECTOR_DIM || "768", 10);
|
|
12
|
+
if (!Number.isFinite(rawDim) || rawDim <= 0) {
|
|
13
|
+
throw new Error(`Invalid MEMORY_VECTOR_DIM: "${process.env.MEMORY_VECTOR_DIM}". Must be a positive integer.`);
|
|
14
|
+
}
|
|
15
|
+
export const VECTOR_DIM = rawDim;
|
|
12
16
|
export const MEMORY_TABLE = "memories";
|
|
13
17
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU;IACV,cAAc;IACd,aAAa;IACb,WAAW;IACX,SAAS;IACT,SAAS;IACT,YAAY;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAU,CAAC;AAmBhF,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU;IACV,cAAc;IACd,aAAa;IACb,WAAW;IACX,SAAS;IACT,SAAS;IACT,YAAY;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAU,CAAC;AAmBhF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;AACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;IAC5C,MAAM,IAAI,KAAK,CACb,+BAA+B,OAAO,CAAC,GAAG,CAAC,iBAAiB,gCAAgC,CAC7F,CAAC;AACJ,CAAC;AACD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface AutoPersistResult {
|
|
2
|
+
date: string;
|
|
3
|
+
entriesStored: number;
|
|
4
|
+
chunksStored: number;
|
|
5
|
+
skippedBytes: number;
|
|
6
|
+
newBytes: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Auto-persist new entries from today's daily log into LanceDB.
|
|
10
|
+
* Tracks character offsets to avoid re-processing already-persisted content.
|
|
11
|
+
* Uses a file lock to prevent concurrent runs.
|
|
12
|
+
*/
|
|
13
|
+
export declare function autoPersist(memoryDir: string): Promise<AutoPersistResult>;
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { readFileSync, writeFileSync, existsSync, openSync, closeSync, unlinkSync, constants } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { VECTOR_DIM } from "../storage/types.js";
|
|
5
|
+
import * as lanceStore from "../storage/lance-store.js";
|
|
6
|
+
import * as kgStore from "../storage/knowledge-graph.js";
|
|
7
|
+
import { embed } from "../embeddings/ollama.js";
|
|
8
|
+
import { chunkText } from "./chunking.js";
|
|
9
|
+
import { parseDailyLog, toPersistableEntries } from "./daily-log-parser.js";
|
|
10
|
+
const OFFSET_FILE = ".auto-persist-offset";
|
|
11
|
+
const LOCK_FILE = ".auto-persist.lock";
|
|
12
|
+
/** Minimum number of new chunks before running consolidation */
|
|
13
|
+
const CONSOLIDATION_THRESHOLD = 10;
|
|
14
|
+
function zeroVector() {
|
|
15
|
+
return new Array(VECTOR_DIM).fill(0);
|
|
16
|
+
}
|
|
17
|
+
function readOffsets(memoryDir) {
|
|
18
|
+
const filePath = join(memoryDir, OFFSET_FILE);
|
|
19
|
+
try {
|
|
20
|
+
if (existsSync(filePath)) {
|
|
21
|
+
return JSON.parse(readFileSync(filePath, "utf-8"));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// Corrupted file, start fresh
|
|
26
|
+
}
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
29
|
+
function writeOffsets(memoryDir, offsets) {
|
|
30
|
+
const filePath = join(memoryDir, OFFSET_FILE);
|
|
31
|
+
writeFileSync(filePath, JSON.stringify(offsets, null, 2));
|
|
32
|
+
}
|
|
33
|
+
// --- File lock for preventing concurrent auto-persist runs ---
|
|
34
|
+
function acquireLock(memoryDir) {
|
|
35
|
+
const lockPath = join(memoryDir, LOCK_FILE);
|
|
36
|
+
try {
|
|
37
|
+
const fd = openSync(lockPath, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY);
|
|
38
|
+
// Write PID for debugging
|
|
39
|
+
writeFileSync(lockPath, String(process.pid));
|
|
40
|
+
closeSync(fd);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Lock already exists — another process is running
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function releaseLock(memoryDir) {
|
|
49
|
+
const lockPath = join(memoryDir, LOCK_FILE);
|
|
50
|
+
try {
|
|
51
|
+
unlinkSync(lockPath);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Best-effort cleanup
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Store a single persistable entry into LanceDB + knowledge graph.
|
|
59
|
+
* Reuses the same pipeline as memory_store tool.
|
|
60
|
+
*/
|
|
61
|
+
async function storeEntry(entry, graph) {
|
|
62
|
+
const memEntry = {
|
|
63
|
+
id: randomUUID(),
|
|
64
|
+
text: entry.text,
|
|
65
|
+
type: entry.type,
|
|
66
|
+
importance: entry.importance,
|
|
67
|
+
timestamp: Date.now(),
|
|
68
|
+
file_paths: entry.filePaths,
|
|
69
|
+
tags: ["auto-persisted"],
|
|
70
|
+
};
|
|
71
|
+
const chunks = chunkText(memEntry.text);
|
|
72
|
+
let storedCount = 0;
|
|
73
|
+
for (let i = 0; i < chunks.length; i++) {
|
|
74
|
+
const chunkEntry = i === 0
|
|
75
|
+
? (chunks.length > 1 ? { ...memEntry, text: chunks[0] } : memEntry)
|
|
76
|
+
: { ...memEntry, id: randomUUID(), text: chunks[i] };
|
|
77
|
+
const vector = await embed(chunks[i]);
|
|
78
|
+
await lanceStore.store(chunkEntry, vector || zeroVector());
|
|
79
|
+
storedCount++;
|
|
80
|
+
}
|
|
81
|
+
// Update knowledge graph
|
|
82
|
+
kgStore.updateGraphFromMemory(graph, memEntry.id, memEntry.text, memEntry.tags, memEntry.file_paths);
|
|
83
|
+
return storedCount;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Auto-persist new entries from today's daily log into LanceDB.
|
|
87
|
+
* Tracks character offsets to avoid re-processing already-persisted content.
|
|
88
|
+
* Uses a file lock to prevent concurrent runs.
|
|
89
|
+
*/
|
|
90
|
+
export async function autoPersist(memoryDir) {
|
|
91
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
92
|
+
const dailyPath = join(memoryDir, "daily", `${today}.md`);
|
|
93
|
+
const result = {
|
|
94
|
+
date: today,
|
|
95
|
+
entriesStored: 0,
|
|
96
|
+
chunksStored: 0,
|
|
97
|
+
skippedBytes: 0,
|
|
98
|
+
newBytes: 0,
|
|
99
|
+
};
|
|
100
|
+
if (!existsSync(dailyPath)) {
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
// Acquire lock to prevent concurrent runs
|
|
104
|
+
if (!acquireLock(memoryDir)) {
|
|
105
|
+
return result; // Another auto-persist is running, skip silently
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
// Initialize LanceDB
|
|
109
|
+
await lanceStore.init(memoryDir);
|
|
110
|
+
// Read the full file and determine new content using character offsets
|
|
111
|
+
const fullContent = readFileSync(dailyPath, "utf-8");
|
|
112
|
+
const fullLength = fullContent.length;
|
|
113
|
+
const offsets = readOffsets(memoryDir);
|
|
114
|
+
const lastOffset = offsets[today] || 0;
|
|
115
|
+
if (fullLength <= lastOffset) {
|
|
116
|
+
result.skippedBytes = fullLength;
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
// Extract only new content (characters after last offset)
|
|
120
|
+
const newContent = fullContent.slice(lastOffset);
|
|
121
|
+
result.skippedBytes = lastOffset;
|
|
122
|
+
result.newBytes = newContent.length;
|
|
123
|
+
// Parse and classify
|
|
124
|
+
const sections = parseDailyLog(newContent);
|
|
125
|
+
const entries = toPersistableEntries(sections);
|
|
126
|
+
if (entries.length === 0) {
|
|
127
|
+
// No new entries to store, but update offset
|
|
128
|
+
offsets[today] = fullLength;
|
|
129
|
+
writeOffsets(memoryDir, offsets);
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
// Load knowledge graph once
|
|
133
|
+
const graph = kgStore.loadGraph(memoryDir);
|
|
134
|
+
// Store each entry
|
|
135
|
+
for (const entry of entries) {
|
|
136
|
+
const chunks = await storeEntry(entry, graph);
|
|
137
|
+
result.entriesStored++;
|
|
138
|
+
result.chunksStored += chunks;
|
|
139
|
+
}
|
|
140
|
+
// Save knowledge graph
|
|
141
|
+
kgStore.saveGraph(memoryDir, graph);
|
|
142
|
+
// Update offset
|
|
143
|
+
offsets[today] = fullLength;
|
|
144
|
+
writeOffsets(memoryDir, offsets);
|
|
145
|
+
// Run consolidation only when enough new entries warrant it
|
|
146
|
+
if (result.chunksStored >= CONSOLIDATION_THRESHOLD) {
|
|
147
|
+
try {
|
|
148
|
+
await lanceStore.consolidate(embed);
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// Non-fatal: consolidation failure shouldn't break auto-persist
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
releaseLock(memoryDir);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=auto-persist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-persist.js","sourceRoot":"","sources":["../../src/utils/auto-persist.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MemoryType, Importance } from "../storage/types.js";
|
|
2
|
+
export type SectionKind = "memory_store" | "file_modification" | "turn_marker" | "session_marker" | "pre_compact" | "content";
|
|
3
|
+
export interface ParsedSection {
|
|
4
|
+
kind: SectionKind;
|
|
5
|
+
text: string;
|
|
6
|
+
byteOffset: number;
|
|
7
|
+
byteLength: number;
|
|
8
|
+
}
|
|
9
|
+
export interface PersistableEntry {
|
|
10
|
+
text: string;
|
|
11
|
+
type: MemoryType;
|
|
12
|
+
importance: Importance;
|
|
13
|
+
filePaths?: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Parse a daily log markdown file into classified sections.
|
|
17
|
+
* Heading-delimited blocks (## / ###) are kept as single sections.
|
|
18
|
+
* Standalone content between headings is split by blank lines.
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseDailyLog(content: string): ParsedSection[];
|
|
21
|
+
/**
|
|
22
|
+
* Convert parsed sections into persistable entries.
|
|
23
|
+
* Aggregates file modifications, skips noise and already-stored memories.
|
|
24
|
+
*/
|
|
25
|
+
export declare function toPersistableEntries(sections: ParsedSection[]): PersistableEntry[];
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// Patterns for classifying lines/sections
|
|
2
|
+
const MEMORY_STORE_RE = /^\*\*\[(\w+)\]\*\*\s*\((\w+)\)/m;
|
|
3
|
+
const FILE_MOD_RE = /^- \d{2}:\d{2} Modified:\s*(.+)$/;
|
|
4
|
+
const TURN_MARKER_RE = /^_Turn completed at /;
|
|
5
|
+
const SESSION_MARKER_RE = /^## Session ended at /;
|
|
6
|
+
const PRE_COMPACT_RE = /^## Pre-compact save /;
|
|
7
|
+
const HEADING_RE = /^#{2,3}\s/;
|
|
8
|
+
/** Minimum character length for a content block to be worth persisting */
|
|
9
|
+
const MIN_CONTENT_LENGTH = 50;
|
|
10
|
+
/**
|
|
11
|
+
* Parse a daily log markdown file into classified sections.
|
|
12
|
+
* Heading-delimited blocks (## / ###) are kept as single sections.
|
|
13
|
+
* Standalone content between headings is split by blank lines.
|
|
14
|
+
*/
|
|
15
|
+
export function parseDailyLog(content) {
|
|
16
|
+
if (!content || !content.trim())
|
|
17
|
+
return [];
|
|
18
|
+
const sections = [];
|
|
19
|
+
const blocks = splitIntoBlocks(content);
|
|
20
|
+
for (const block of blocks) {
|
|
21
|
+
const trimmed = block.text.trim();
|
|
22
|
+
if (!trimmed)
|
|
23
|
+
continue;
|
|
24
|
+
const kind = classifyBlock(trimmed);
|
|
25
|
+
sections.push({
|
|
26
|
+
kind,
|
|
27
|
+
text: trimmed,
|
|
28
|
+
byteOffset: block.byteOffset,
|
|
29
|
+
byteLength: block.byteLength,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return sections;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Split content into blocks using heading boundaries.
|
|
36
|
+
* Content under a heading (## or ###) is kept together as one block.
|
|
37
|
+
* Standalone lines between headings are split by blank lines.
|
|
38
|
+
*/
|
|
39
|
+
function splitIntoBlocks(content) {
|
|
40
|
+
const blocks = [];
|
|
41
|
+
const lines = content.split("\n");
|
|
42
|
+
let currentLines = [];
|
|
43
|
+
let inHeadingBlock = false;
|
|
44
|
+
let blockStartByte = 0;
|
|
45
|
+
let currentByte = 0;
|
|
46
|
+
function flushBlock() {
|
|
47
|
+
const text = currentLines.join("\n");
|
|
48
|
+
if (text.trim()) {
|
|
49
|
+
blocks.push({
|
|
50
|
+
text: text.trim(),
|
|
51
|
+
byteOffset: blockStartByte,
|
|
52
|
+
byteLength: Buffer.byteLength(text, "utf-8"),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
currentLines = [];
|
|
56
|
+
inHeadingBlock = false;
|
|
57
|
+
}
|
|
58
|
+
for (const line of lines) {
|
|
59
|
+
const lineBytes = Buffer.byteLength(line + "\n", "utf-8");
|
|
60
|
+
if (HEADING_RE.test(line)) {
|
|
61
|
+
// New heading — flush any accumulated standalone content
|
|
62
|
+
if (currentLines.length > 0) {
|
|
63
|
+
flushBlock();
|
|
64
|
+
}
|
|
65
|
+
blockStartByte = currentByte;
|
|
66
|
+
currentLines.push(line);
|
|
67
|
+
inHeadingBlock = true;
|
|
68
|
+
}
|
|
69
|
+
else if (inHeadingBlock) {
|
|
70
|
+
// Check if this line is a recognized standalone pattern that should
|
|
71
|
+
// break out of the heading block (e.g. file modifications or turn markers
|
|
72
|
+
// appended after a memory_store heading by a different hook)
|
|
73
|
+
const trimmedLine = line.trim();
|
|
74
|
+
if (trimmedLine && (FILE_MOD_RE.test(trimmedLine) || TURN_MARKER_RE.test(trimmedLine))) {
|
|
75
|
+
flushBlock();
|
|
76
|
+
blockStartByte = currentByte;
|
|
77
|
+
currentLines.push(line);
|
|
78
|
+
// Stay in standalone mode (inHeadingBlock = false from flushBlock)
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Content under a heading — accumulate into the same block
|
|
82
|
+
currentLines.push(line);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Standalone content — split by blank lines
|
|
87
|
+
if (line.trim() === "") {
|
|
88
|
+
if (currentLines.length > 0 && currentLines.some((l) => l.trim())) {
|
|
89
|
+
flushBlock();
|
|
90
|
+
}
|
|
91
|
+
// Skip blank lines outside heading blocks
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
if (currentLines.length === 0) {
|
|
95
|
+
blockStartByte = currentByte;
|
|
96
|
+
}
|
|
97
|
+
currentLines.push(line);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
currentByte += lineBytes;
|
|
101
|
+
}
|
|
102
|
+
// Flush remaining
|
|
103
|
+
if (currentLines.length > 0) {
|
|
104
|
+
flushBlock();
|
|
105
|
+
}
|
|
106
|
+
return blocks;
|
|
107
|
+
}
|
|
108
|
+
function classifyBlock(text) {
|
|
109
|
+
// Check all lines, not just first — the heading line may precede the marker
|
|
110
|
+
if (MEMORY_STORE_RE.test(text))
|
|
111
|
+
return "memory_store";
|
|
112
|
+
const firstLine = text.split("\n")[0];
|
|
113
|
+
if (FILE_MOD_RE.test(firstLine))
|
|
114
|
+
return "file_modification";
|
|
115
|
+
if (TURN_MARKER_RE.test(firstLine))
|
|
116
|
+
return "turn_marker";
|
|
117
|
+
if (SESSION_MARKER_RE.test(firstLine))
|
|
118
|
+
return "session_marker";
|
|
119
|
+
if (PRE_COMPACT_RE.test(firstLine))
|
|
120
|
+
return "pre_compact";
|
|
121
|
+
return "content";
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Convert parsed sections into persistable entries.
|
|
125
|
+
* Aggregates file modifications, skips noise and already-stored memories.
|
|
126
|
+
*/
|
|
127
|
+
export function toPersistableEntries(sections) {
|
|
128
|
+
const entries = [];
|
|
129
|
+
const fileMods = [];
|
|
130
|
+
for (const section of sections) {
|
|
131
|
+
switch (section.kind) {
|
|
132
|
+
case "memory_store":
|
|
133
|
+
// Already in LanceDB, skip
|
|
134
|
+
break;
|
|
135
|
+
case "file_modification": {
|
|
136
|
+
// Collect file paths for aggregation
|
|
137
|
+
const lines = section.text.split("\n");
|
|
138
|
+
for (const line of lines) {
|
|
139
|
+
const match = FILE_MOD_RE.exec(line.trim());
|
|
140
|
+
if (match) {
|
|
141
|
+
fileMods.push(match[1].trim());
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
case "turn_marker":
|
|
147
|
+
case "session_marker":
|
|
148
|
+
// Noise, skip
|
|
149
|
+
break;
|
|
150
|
+
case "pre_compact":
|
|
151
|
+
entries.push({
|
|
152
|
+
text: section.text,
|
|
153
|
+
type: "context",
|
|
154
|
+
importance: "medium",
|
|
155
|
+
});
|
|
156
|
+
break;
|
|
157
|
+
case "content":
|
|
158
|
+
// Only store content blocks with meaningful length
|
|
159
|
+
if (section.text.length > MIN_CONTENT_LENGTH) {
|
|
160
|
+
entries.push({
|
|
161
|
+
text: section.text,
|
|
162
|
+
type: "context",
|
|
163
|
+
importance: "low",
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Aggregate file modifications into a single entry
|
|
170
|
+
if (fileMods.length > 0) {
|
|
171
|
+
const uniquePaths = [...new Set(fileMods)];
|
|
172
|
+
entries.push({
|
|
173
|
+
text: `Files modified: ${uniquePaths.join(", ")}`,
|
|
174
|
+
type: "code_change",
|
|
175
|
+
importance: "low",
|
|
176
|
+
filePaths: uniquePaths,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
return entries;
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=daily-log-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daily-log-parser.js","sourceRoot":"","sources":["../../src/utils/daily-log-parser.ts"],"names":[],"mappings":"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"}
|
package/hooks/on-session-end.sh
CHANGED
|
@@ -12,9 +12,12 @@ if [ -f "$MEMORY_DIR/daily/$DATE.md" ]; then
|
|
|
12
12
|
cp "$MEMORY_DIR/daily/$DATE.md" "$MEMORY_DIR/sessions/$DATE-$TIME.md"
|
|
13
13
|
fi
|
|
14
14
|
|
|
15
|
-
#
|
|
15
|
+
# Auto-persist daily log entries to LanceDB (best-effort)
|
|
16
16
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
17
17
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
18
|
+
MEMORY_DIR="$MEMORY_DIR" node "$PROJECT_DIR/dist/cli/auto-persist.js" 2>/dev/null || true
|
|
19
|
+
|
|
20
|
+
# Try AI-powered summary generation, fall back to tail-based
|
|
18
21
|
if MEMORY_DIR="$MEMORY_DIR" node "$PROJECT_DIR/dist/cli/generate-summary.js" 2>/dev/null; then
|
|
19
22
|
exit 0
|
|
20
23
|
fi
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "persisted-memory",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Persistent memory system for Claude Code via MCP — dual-write to Markdown + LanceDB with hybrid semantic search",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -39,6 +39,8 @@
|
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsc && cp src/viewer/index.html dist/viewer/index.html",
|
|
42
|
+
"prepare": "test -f tsconfig.json && npm run build || true",
|
|
43
|
+
"prepack": "npm run build",
|
|
42
44
|
"dev": "tsc --watch",
|
|
43
45
|
"viewer": "node dist/cli/viewer.js",
|
|
44
46
|
"test": "vitest run",
|
|
@@ -53,8 +55,8 @@
|
|
|
53
55
|
},
|
|
54
56
|
"devDependencies": {
|
|
55
57
|
"@types/node": "^20",
|
|
56
|
-
"@vitest/coverage-v8": "^
|
|
58
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
57
59
|
"typescript": "^5.6",
|
|
58
|
-
"vitest": "^
|
|
60
|
+
"vitest": "^4.0.18"
|
|
59
61
|
}
|
|
60
62
|
}
|
package/scripts/install.sh
CHANGED
|
@@ -8,12 +8,17 @@ SETTINGS_FILE="$HOME/.claude/settings.json"
|
|
|
8
8
|
echo "=== Persisted Memory — Install ==="
|
|
9
9
|
echo ""
|
|
10
10
|
|
|
11
|
-
# 1. Build
|
|
12
|
-
echo "Building persisted-memory..."
|
|
11
|
+
# 1. Build (only needed when installing from source)
|
|
13
12
|
cd "$SCRIPT_DIR"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
if [ -f "$SCRIPT_DIR/tsconfig.json" ]; then
|
|
14
|
+
echo "Building persisted-memory from source..."
|
|
15
|
+
npm install
|
|
16
|
+
npm run build
|
|
17
|
+
echo " Build complete."
|
|
18
|
+
else
|
|
19
|
+
echo "Using pre-built dist/ from published package."
|
|
20
|
+
npm install --omit=dev
|
|
21
|
+
fi
|
|
17
22
|
echo ""
|
|
18
23
|
|
|
19
24
|
# 2. Register MCP server (user-level)
|