hmem-mcp 1.2.0 → 1.6.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 +109 -35
- package/dist/cli-init.js +142 -13
- package/dist/cli-init.js.map +1 -1
- package/dist/hmem-config.d.ts +7 -1
- package/dist/hmem-config.js +4 -1
- package/dist/hmem-config.js.map +1 -1
- package/dist/hmem-store.d.ts +54 -3
- package/dist/hmem-store.js +259 -18
- package/dist/hmem-store.js.map +1 -1
- package/dist/mcp-server.js +331 -36
- package/dist/mcp-server.js.map +1 -1
- package/hmem.config.example.json +4 -1
- package/package.json +1 -1
- package/skills/hmem-config/SKILL.md +2 -0
- package/skills/hmem-curate/SKILL.md +126 -0
- package/skills/hmem-read/SKILL.md +20 -0
- package/skills/{save → hmem-save}/SKILL.md +30 -7
- package/skills/hmem-write/SKILL.md +107 -3
- package/skills/memory-curate/SKILL.md +0 -76
package/README.md
CHANGED
|
@@ -56,16 +56,44 @@ write_memory(prefix="L", content="Always restart MCP server after recompiling Ty
|
|
|
56
56
|
On spawn, the agent receives all Level 1 summaries. Deeper levels are fetched on demand — by ID, one branch at a time.
|
|
57
57
|
|
|
58
58
|
```
|
|
59
|
-
read_memory() # → all L1 summaries
|
|
59
|
+
read_memory() # → all L1 summaries
|
|
60
60
|
read_memory(id="L0003") # → L1 + direct L2 children for this entry
|
|
61
61
|
read_memory(id="L0003.2") # → that L2 node + its L3 children
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
Each node gets a compound ID (`L0003.2.1`) so any branch is individually addressable.
|
|
65
65
|
|
|
66
|
+
### Updating Memory
|
|
67
|
+
|
|
68
|
+
Entries can be updated without deleting and recreating them:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
update_memory(id="L0003", content="Corrected L1 summary")
|
|
72
|
+
update_memory(id="L0003.2", content="Fixed sub-node text")
|
|
73
|
+
append_memory(id="L0003", content="New finding\n\tSub-detail")
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`update_memory` replaces the text of a single node (children preserved). `append_memory` adds new child nodes to an existing entry.
|
|
77
|
+
|
|
78
|
+
### Obsolete Entries
|
|
79
|
+
|
|
80
|
+
When an entry is outdated, mark it as obsolete — never delete it:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
update_memory(id="E0023", content="...", obsolete=true)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Obsolete entries are **hidden from bulk reads** and replaced by a summary line at the bottom:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
--- 3 obsolete entries hidden (E0023, D0007, L0012) — use read_memory(id=X) to view ---
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
They remain fully searchable and accessible by ID. Past errors still teach future agents what not to do — knowledge is never destroyed, only archived.
|
|
93
|
+
|
|
66
94
|
### Memory Curation
|
|
67
95
|
|
|
68
|
-
A dedicated curator agent runs periodically to maintain memory health. It
|
|
96
|
+
A dedicated curator agent runs periodically to maintain memory health. It detects duplicates, merges fragmented entries, marks stale pointers, and prunes low-value content — a form of the Ebbinghaus Forgetting Curve.
|
|
69
97
|
|
|
70
98
|
---
|
|
71
99
|
|
|
@@ -74,9 +102,14 @@ A dedicated curator agent runs periodically to maintain memory health. It tracks
|
|
|
74
102
|
- **Hierarchical retrieval** — lazy loading of detail levels saves tokens
|
|
75
103
|
- **True tree structure** — multiple siblings at the same depth (not just one chain)
|
|
76
104
|
- **Persistent across sessions** — agents remember previous work even after restart
|
|
105
|
+
- **Editable without deletion** — `update_memory` and `append_memory` modify entries in place
|
|
106
|
+
- **Obsolete flag** — mark outdated entries as obsolete; hidden from bulk reads but still searchable — knowledge is never destroyed, only archived
|
|
107
|
+
- **Favorite flag** — mark any entry as `[♥]` to always see it with L2 detail, regardless of category
|
|
108
|
+
- **Access-count promotion** — the top-N most-accessed entries are automatically shown with L2 detail (`[★]`)
|
|
109
|
+
- **Effective-date sorting** — entries with recent appends surface to the top (old P entries grow over time without losing their position)
|
|
110
|
+
- **Token-efficient bulk reads** — only the most recent L2 child is shown in bulk reads, with a "+N more" hint
|
|
77
111
|
- **Per-agent memory** — each agent has its own `.hmem` file (SQLite)
|
|
78
112
|
- **Shared company knowledge** — `FIRMENWISSEN` store with role-based access control
|
|
79
|
-
- **Retrieval counting** — built-in importance scoring based on access frequency
|
|
80
113
|
- **Skill-file driven** — agents are instructed via skill files, no hardcoded logic
|
|
81
114
|
- **MCP-native** — works with Claude Code, Gemini CLI, OpenCode, and any MCP-compatible tool
|
|
82
115
|
|
|
@@ -173,24 +206,33 @@ In Claude Code, run `/mcp` to check the server status.
|
|
|
173
206
|
|
|
174
207
|
## Skill Files
|
|
175
208
|
|
|
176
|
-
Skill files teach your AI tool how to use hmem correctly. Copy them to your tool's global skills directory.
|
|
177
|
-
|
|
178
|
-
> **Note:** `hmem init` copies skills automatically. Only use the manual steps below if you skipped the installer.
|
|
209
|
+
Skill files teach your AI tool how to use hmem correctly. Copy them to your tool's global skills directory, then restart your AI tool.
|
|
179
210
|
|
|
180
211
|
> **After copying skills, fully restart your terminal and AI tool** — skills are loaded at startup and won't appear in a running session.
|
|
181
212
|
|
|
182
|
-
|
|
213
|
+
### Available skills
|
|
214
|
+
|
|
215
|
+
| Slash command | What it does |
|
|
216
|
+
|---|---|
|
|
217
|
+
| `/hmem-read` | Load your memory at session start — call at the beginning of every session |
|
|
218
|
+
| `/hmem-write` | Protocol for writing memories correctly (prefixes, hierarchy, anti-patterns) |
|
|
219
|
+
| `/hmem-save` | Save session learnings to memory, then commit + push |
|
|
220
|
+
| `/hmem-config` | View and adjust memory settings (`hmem.config.json`) interactively |
|
|
221
|
+
| `/hmem-curate` | Audit and clean up memory entries (curator role required) |
|
|
222
|
+
|
|
223
|
+
### Copy skills to your tool
|
|
224
|
+
|
|
225
|
+
Find the skills directory in the installed package:
|
|
183
226
|
|
|
184
227
|
```bash
|
|
185
|
-
HMEM_DIR="$(npm root -g)/hmem"
|
|
186
|
-
# or: HMEM_DIR="$(dirname $(realpath $(which hmem)))"
|
|
228
|
+
HMEM_DIR="$(npm root -g)/hmem-mcp"
|
|
187
229
|
```
|
|
188
230
|
|
|
189
231
|
If you cloned from source, the skills are in the `skills/` directory.
|
|
190
232
|
|
|
191
233
|
**Claude Code:**
|
|
192
234
|
```bash
|
|
193
|
-
for skill in hmem-read hmem-write save
|
|
235
|
+
for skill in hmem-read hmem-write hmem-save hmem-config hmem-curate; do
|
|
194
236
|
mkdir -p ~/.claude/skills/$skill
|
|
195
237
|
cp "$HMEM_DIR/skills/$skill/SKILL.md" ~/.claude/skills/$skill/SKILL.md
|
|
196
238
|
done
|
|
@@ -198,7 +240,7 @@ done
|
|
|
198
240
|
|
|
199
241
|
**Gemini CLI:**
|
|
200
242
|
```bash
|
|
201
|
-
for skill in hmem-read hmem-write save
|
|
243
|
+
for skill in hmem-read hmem-write hmem-save hmem-config hmem-curate; do
|
|
202
244
|
mkdir -p ~/.gemini/skills/$skill
|
|
203
245
|
cp "$HMEM_DIR/skills/$skill/SKILL.md" ~/.gemini/skills/$skill/SKILL.md
|
|
204
246
|
done
|
|
@@ -206,7 +248,7 @@ done
|
|
|
206
248
|
|
|
207
249
|
**OpenCode:**
|
|
208
250
|
```bash
|
|
209
|
-
for skill in hmem-read hmem-write save
|
|
251
|
+
for skill in hmem-read hmem-write hmem-save hmem-config hmem-curate; do
|
|
210
252
|
mkdir -p ~/.config/opencode/skills/$skill
|
|
211
253
|
cp "$HMEM_DIR/skills/$skill/SKILL.md" ~/.config/opencode/skills/$skill/SKILL.md
|
|
212
254
|
done
|
|
@@ -222,6 +264,8 @@ done
|
|
|
222
264
|
|------|-------------|
|
|
223
265
|
| `read_memory` | Read hierarchical memories — L1 summaries or drill into any node by ID |
|
|
224
266
|
| `write_memory` | Save new memory entries with tab-indented hierarchy |
|
|
267
|
+
| `update_memory` | Update the text of an existing entry or sub-node (children preserved) |
|
|
268
|
+
| `append_memory` | Append new child nodes to an existing entry without overwriting it |
|
|
225
269
|
| `search_memory` | Full-text search across all agent `.hmem` databases |
|
|
226
270
|
|
|
227
271
|
### Curator Tools (role: ceo)
|
|
@@ -230,8 +274,9 @@ done
|
|
|
230
274
|
|------|-------------|
|
|
231
275
|
| `get_audit_queue` | List agents whose memory has changed since last audit |
|
|
232
276
|
| `read_agent_memory` | Read any agent's full memory (for curation) |
|
|
233
|
-
| `fix_agent_memory` | Correct a specific memory
|
|
234
|
-
| `
|
|
277
|
+
| `fix_agent_memory` | Correct a specific entry or sub-node in any agent's memory |
|
|
278
|
+
| `append_agent_memory` | Add content to an existing entry in any agent's memory (for merging duplicates) |
|
|
279
|
+
| `delete_agent_memory` | Delete a memory entry (prefer `fix_agent_memory(obsolete=true)` — deletion is permanent) |
|
|
235
280
|
| `mark_audited` | Mark an agent as audited |
|
|
236
281
|
|
|
237
282
|
---
|
|
@@ -289,41 +334,70 @@ Place an optional `hmem.config.json` in your `HMEM_PROJECT_DIR` to tune behavior
|
|
|
289
334
|
"maxL1Chars": 120,
|
|
290
335
|
"maxLnChars": 50000,
|
|
291
336
|
"maxDepth": 5,
|
|
292
|
-
"
|
|
337
|
+
"accessCountTopN": 5,
|
|
293
338
|
"recentDepthTiers": [
|
|
294
339
|
{ "count": 10, "depth": 2 },
|
|
295
340
|
{ "count": 3, "depth": 3 }
|
|
296
341
|
],
|
|
297
342
|
"prefixes": {
|
|
298
|
-
"
|
|
299
|
-
"L": "Lesson",
|
|
300
|
-
"T": "Task",
|
|
301
|
-
"E": "Error",
|
|
302
|
-
"D": "Decision",
|
|
303
|
-
"M": "Milestone",
|
|
304
|
-
"S": "Skill",
|
|
305
|
-
"F": "Favorite"
|
|
343
|
+
"R": "Research"
|
|
306
344
|
}
|
|
307
345
|
}
|
|
308
346
|
```
|
|
309
347
|
|
|
310
|
-
###
|
|
348
|
+
### Memory prefixes
|
|
311
349
|
|
|
312
|
-
The default prefixes
|
|
350
|
+
The default prefixes cover most use cases:
|
|
351
|
+
|
|
352
|
+
| Prefix | Category | When to use |
|
|
353
|
+
|--------|----------|-------------|
|
|
354
|
+
| `P` | Project | Project experiences, summaries |
|
|
355
|
+
| `L` | Lesson | Lessons learned, best practices |
|
|
356
|
+
| `E` | Error | Bugs, errors + their fix |
|
|
357
|
+
| `D` | Decision | Architecture decisions with reasoning |
|
|
358
|
+
| `T` | Task | Task notes, work progress |
|
|
359
|
+
| `M` | Milestone | Key milestones, releases |
|
|
360
|
+
| `S` | Skill | Skills, processes, how-to guides |
|
|
361
|
+
| `N` | Navigator | Code pointers — where something lives in the codebase |
|
|
362
|
+
|
|
363
|
+
To add your own, add entries to the `"prefixes"` key in `hmem.config.json`. Custom prefixes are **merged** with the defaults — you don't need to repeat the built-in ones.
|
|
364
|
+
|
|
365
|
+
### Favorites
|
|
366
|
+
|
|
367
|
+
Any entry can be marked as a **favorite** — regardless of its prefix category. Favorites always appear with their L2 detail in bulk reads, marked with `[♥]`.
|
|
368
|
+
|
|
369
|
+
```
|
|
370
|
+
write_memory(prefix="D", content="...", favorite=true) # set at creation
|
|
371
|
+
update_memory(id="D0010", content="...", favorite=true) # set on existing entry
|
|
372
|
+
update_memory(id="D0010", content="...", favorite=false) # clear the flag
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
Use favorites for reference info you need to see every session — key decisions, API endpoints, frequently consulted patterns. Use sparingly: if everything is a favorite, nothing is.
|
|
376
|
+
|
|
377
|
+
### Access-count auto-promotion (`accessCountTopN`)
|
|
378
|
+
|
|
379
|
+
The top-N most-accessed entries are automatically promoted to L2 depth in bulk reads, marked with `[★]`. This creates "organic favorites" — entries that proved important in practice rise to the surface automatically.
|
|
313
380
|
|
|
314
381
|
```json
|
|
315
|
-
{
|
|
316
|
-
"prefixes": {
|
|
317
|
-
"R": "Research",
|
|
318
|
-
"B": "Bookmark",
|
|
319
|
-
"Q": "Question"
|
|
320
|
-
}
|
|
321
|
-
}
|
|
382
|
+
{ "accessCountTopN": 5 }
|
|
322
383
|
```
|
|
323
384
|
|
|
324
|
-
|
|
385
|
+
Set to `0` to disable. Default: `5`.
|
|
386
|
+
|
|
387
|
+
| Mechanism | When useful |
|
|
388
|
+
|---|---|
|
|
389
|
+
| **favorite flag** | Entries you know are important from day 1 — even with zero access history |
|
|
390
|
+
| **accessCountTopN** | Entries that proved important over time — emerges from actual usage |
|
|
391
|
+
|
|
392
|
+
### Token-efficient bulk reads
|
|
393
|
+
|
|
394
|
+
In a default `read_memory()` call, each entry shows only its **most recently added** L2 child (with that child's timestamp). A `+N more` hint indicates when additional L2 nodes exist. This keeps the bulk output compact while remaining discoverable.
|
|
395
|
+
|
|
396
|
+
To see all children of an entry, use `read_memory(id="P0005")`.
|
|
397
|
+
|
|
398
|
+
### Effective-date sorting
|
|
325
399
|
|
|
326
|
-
|
|
400
|
+
Entries are sorted by `effective_date` — the most recent timestamp across the entry and all its nodes. This means a project entry (`P0005`) that was first written months ago but had a new session note appended today will appear near the top of the listing, alongside truly recent entries.
|
|
327
401
|
|
|
328
402
|
### Character limits
|
|
329
403
|
|
|
@@ -365,7 +439,7 @@ Result:
|
|
|
365
439
|
|
|
366
440
|
This mirrors how human memory works: you remember today's events in full detail, last week's in outline, older ones only as headlines.
|
|
367
441
|
|
|
368
|
-
Set to `[]` to disable recency inlining (L1-only for all entries
|
|
442
|
+
Set to `[]` to disable recency inlining (L1-only for all entries).
|
|
369
443
|
|
|
370
444
|
**Backward compat:** The old `"recentChildrenCount": N` key is still accepted and treated as `[{ "count": N, "depth": 2 }]`.
|
|
371
445
|
|
package/dist/cli-init.js
CHANGED
|
@@ -21,6 +21,14 @@ const TOOLS = {
|
|
|
21
21
|
projectFile: ".mcp.json",
|
|
22
22
|
format: "standard",
|
|
23
23
|
detect: () => fs.existsSync(path.join(HOME, ".claude")),
|
|
24
|
+
globalInstructions: {
|
|
25
|
+
path: path.join(HOME, ".claude", "CLAUDE.md"),
|
|
26
|
+
mode: "append",
|
|
27
|
+
},
|
|
28
|
+
projectInstructions: {
|
|
29
|
+
path: "CLAUDE.md",
|
|
30
|
+
mode: "append",
|
|
31
|
+
},
|
|
24
32
|
},
|
|
25
33
|
"opencode": {
|
|
26
34
|
name: "OpenCode",
|
|
@@ -30,6 +38,10 @@ const TOOLS = {
|
|
|
30
38
|
projectFile: "opencode.json",
|
|
31
39
|
format: "opencode",
|
|
32
40
|
detect: () => fs.existsSync(path.join(HOME, ".config", "opencode")),
|
|
41
|
+
// OpenCode reads CLAUDE.md as fallback — skip to avoid duplicate writes
|
|
42
|
+
globalInstructions: null,
|
|
43
|
+
projectInstructions: null,
|
|
44
|
+
instructionsManual: "OpenCode reads CLAUDE.md automatically — no separate file needed.",
|
|
33
45
|
},
|
|
34
46
|
"cursor": {
|
|
35
47
|
name: "Cursor",
|
|
@@ -39,6 +51,14 @@ const TOOLS = {
|
|
|
39
51
|
projectFile: "mcp.json",
|
|
40
52
|
format: "standard",
|
|
41
53
|
detect: () => fs.existsSync(path.join(HOME, ".cursor")),
|
|
54
|
+
// Cursor has no global instructions file — only GUI (Settings > Rules)
|
|
55
|
+
globalInstructions: null,
|
|
56
|
+
projectInstructions: {
|
|
57
|
+
path: path.join(".cursor", "rules", "hmem.mdc"),
|
|
58
|
+
mode: "standalone",
|
|
59
|
+
},
|
|
60
|
+
instructionsManual: "Cursor: add the following to Settings → Rules (cursor.com/settings):\n" +
|
|
61
|
+
" \"At the start of every session, call read_memory() to load your long-term memory.\"",
|
|
42
62
|
},
|
|
43
63
|
"windsurf": {
|
|
44
64
|
name: "Windsurf",
|
|
@@ -47,8 +67,16 @@ const TOOLS = {
|
|
|
47
67
|
projectDir: ".windsurf",
|
|
48
68
|
projectFile: "mcp.json",
|
|
49
69
|
format: "standard",
|
|
50
|
-
detect: () => fs.existsSync(path.join(HOME, ".codeium", "windsurf"))
|
|
51
|
-
|
|
70
|
+
detect: () => fs.existsSync(path.join(HOME, ".codeium", "windsurf")) ||
|
|
71
|
+
fs.existsSync(path.join(HOME, ".windsurf")),
|
|
72
|
+
globalInstructions: {
|
|
73
|
+
path: path.join(HOME, ".codeium", "windsurf", "memories", "global_rules.md"),
|
|
74
|
+
mode: "append",
|
|
75
|
+
},
|
|
76
|
+
projectInstructions: {
|
|
77
|
+
path: path.join(".windsurf", "rules", "hmem.md"),
|
|
78
|
+
mode: "standalone",
|
|
79
|
+
},
|
|
52
80
|
},
|
|
53
81
|
"cline": {
|
|
54
82
|
name: "Cline / Roo Code (VS Code)",
|
|
@@ -58,6 +86,16 @@ const TOOLS = {
|
|
|
58
86
|
projectFile: "mcp.json",
|
|
59
87
|
format: "standard",
|
|
60
88
|
detect: () => fs.existsSync(path.join(HOME, ".vscode")),
|
|
89
|
+
// Cline: ~/Documents/Cline/Rules/ | Roo Code: ~/.roo/rules/
|
|
90
|
+
// Both are directory-based → create a dedicated hmem.md file in each
|
|
91
|
+
globalInstructions: {
|
|
92
|
+
path: path.join(HOME, "Documents", "Cline", "Rules", "hmem.md"),
|
|
93
|
+
mode: "standalone",
|
|
94
|
+
},
|
|
95
|
+
projectInstructions: {
|
|
96
|
+
path: path.join(".clinerules", "hmem.md"),
|
|
97
|
+
mode: "standalone",
|
|
98
|
+
},
|
|
61
99
|
},
|
|
62
100
|
"gemini-cli": {
|
|
63
101
|
name: "Gemini CLI",
|
|
@@ -67,8 +105,58 @@ const TOOLS = {
|
|
|
67
105
|
projectFile: "settings.json",
|
|
68
106
|
format: "standard",
|
|
69
107
|
detect: () => fs.existsSync(path.join(HOME, ".gemini")),
|
|
108
|
+
globalInstructions: {
|
|
109
|
+
path: path.join(HOME, ".gemini", "GEMINI.md"),
|
|
110
|
+
mode: "append",
|
|
111
|
+
},
|
|
112
|
+
projectInstructions: {
|
|
113
|
+
path: "GEMINI.md",
|
|
114
|
+
mode: "append",
|
|
115
|
+
},
|
|
70
116
|
},
|
|
71
117
|
};
|
|
118
|
+
// ---- Instructions content ----
|
|
119
|
+
const HMEM_MARKER = "## hmem — Persistent Memory";
|
|
120
|
+
const HMEM_APPEND_SECTION = `
|
|
121
|
+
|
|
122
|
+
## hmem — Persistent Memory
|
|
123
|
+
|
|
124
|
+
At the start of every session, call \`read_memory()\` to load your long-term memory before doing anything else.
|
|
125
|
+
`;
|
|
126
|
+
const HMEM_STANDALONE_CONTENT = `# hmem — Persistent Memory
|
|
127
|
+
|
|
128
|
+
At the start of every session, call \`read_memory()\` to load your long-term memory before doing anything else.
|
|
129
|
+
`;
|
|
130
|
+
/**
|
|
131
|
+
* Writes hmem instructions to a file.
|
|
132
|
+
* - append mode: appends a section to an existing file; skips if already present.
|
|
133
|
+
* - standalone mode: creates a dedicated file; skips if already exists.
|
|
134
|
+
* Returns "created" | "updated" | "skipped".
|
|
135
|
+
*/
|
|
136
|
+
function writeInstructions(target) {
|
|
137
|
+
const dir = path.dirname(target.path);
|
|
138
|
+
if (!fs.existsSync(dir)) {
|
|
139
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
140
|
+
}
|
|
141
|
+
if (target.mode === "standalone") {
|
|
142
|
+
if (fs.existsSync(target.path))
|
|
143
|
+
return "skipped";
|
|
144
|
+
fs.writeFileSync(target.path, HMEM_STANDALONE_CONTENT, "utf-8");
|
|
145
|
+
return "created";
|
|
146
|
+
}
|
|
147
|
+
// append mode
|
|
148
|
+
if (fs.existsSync(target.path)) {
|
|
149
|
+
const content = fs.readFileSync(target.path, "utf-8");
|
|
150
|
+
if (content.includes(HMEM_MARKER))
|
|
151
|
+
return "skipped";
|
|
152
|
+
fs.appendFileSync(target.path, HMEM_APPEND_SECTION, "utf-8");
|
|
153
|
+
return "updated";
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
fs.writeFileSync(target.path, HMEM_APPEND_SECTION.trimStart(), "utf-8");
|
|
157
|
+
return "created";
|
|
158
|
+
}
|
|
159
|
+
}
|
|
72
160
|
// ---- Readline helpers ----
|
|
73
161
|
let rl;
|
|
74
162
|
function ask(question) {
|
|
@@ -114,7 +202,7 @@ function standardMcpEntry(projectDir) {
|
|
|
114
202
|
mcpServers: {
|
|
115
203
|
hmem: {
|
|
116
204
|
command: "npx",
|
|
117
|
-
args: ["-y", "hmem", "serve"],
|
|
205
|
+
args: ["-y", "hmem-mcp", "serve"],
|
|
118
206
|
env: {
|
|
119
207
|
HMEM_PROJECT_DIR: projectDir,
|
|
120
208
|
},
|
|
@@ -130,7 +218,7 @@ function opencodeMcpEntry(projectDir) {
|
|
|
130
218
|
mcp: {
|
|
131
219
|
hmem: {
|
|
132
220
|
type: "local",
|
|
133
|
-
command: ["npx", "-y", "hmem", "serve"],
|
|
221
|
+
command: ["npx", "-y", "hmem-mcp", "serve"],
|
|
134
222
|
environment: {
|
|
135
223
|
HMEM_PROJECT_DIR: projectDir,
|
|
136
224
|
},
|
|
@@ -212,7 +300,7 @@ export async function runInit() {
|
|
|
212
300
|
: detected;
|
|
213
301
|
if (allToolIds.length === 0) {
|
|
214
302
|
console.log("\n No supported tools detected for this scope.");
|
|
215
|
-
console.log(" Install Claude Code, OpenCode, Cursor, Windsurf,
|
|
303
|
+
console.log(" Install Claude Code, OpenCode, Cursor, Windsurf, Gemini CLI, or Cline first.\n");
|
|
216
304
|
return;
|
|
217
305
|
}
|
|
218
306
|
const toolChoices = allToolIds.map(id => TOOLS[id].name);
|
|
@@ -228,8 +316,8 @@ export async function runInit() {
|
|
|
228
316
|
fs.mkdirSync(absMemDir, { recursive: true });
|
|
229
317
|
console.log(` Created: ${absMemDir}`);
|
|
230
318
|
}
|
|
231
|
-
// Step 5: Write configs
|
|
232
|
-
console.log("\n Writing configuration...\n");
|
|
319
|
+
// Step 5: Write MCP configs
|
|
320
|
+
console.log("\n Writing MCP configuration...\n");
|
|
233
321
|
for (const toolId of selectedTools) {
|
|
234
322
|
const tool = TOOLS[toolId];
|
|
235
323
|
// Determine file path
|
|
@@ -241,12 +329,10 @@ export async function runInit() {
|
|
|
241
329
|
const projDir = path.join(process.cwd(), tool.projectDir);
|
|
242
330
|
configPath = path.join(projDir, tool.projectFile);
|
|
243
331
|
}
|
|
244
|
-
// Build project dir for env var
|
|
245
|
-
const envProjectDir = absMemDir;
|
|
246
332
|
// Generate MCP entry
|
|
247
333
|
const entry = tool.format === "opencode"
|
|
248
|
-
? opencodeMcpEntry(
|
|
249
|
-
: standardMcpEntry(
|
|
334
|
+
? opencodeMcpEntry(absMemDir)
|
|
335
|
+
: standardMcpEntry(absMemDir);
|
|
250
336
|
// Read existing config (if any) and merge
|
|
251
337
|
let existing = {};
|
|
252
338
|
if (fs.existsSync(configPath)) {
|
|
@@ -261,6 +347,41 @@ export async function runInit() {
|
|
|
261
347
|
writeConfigFile(configPath, merged);
|
|
262
348
|
console.log(` [ok] ${tool.name}: ${configPath}`);
|
|
263
349
|
}
|
|
350
|
+
// Step 6: Write instructions files (session-start memory trigger)
|
|
351
|
+
console.log("\n Writing session-start instructions...\n");
|
|
352
|
+
const manualHints = [];
|
|
353
|
+
for (const toolId of selectedTools) {
|
|
354
|
+
const tool = TOOLS[toolId];
|
|
355
|
+
const target = isGlobal ? tool.globalInstructions : tool.projectInstructions;
|
|
356
|
+
if (target) {
|
|
357
|
+
// Resolve project-local paths against cwd
|
|
358
|
+
const resolvedTarget = isGlobal
|
|
359
|
+
? target
|
|
360
|
+
: { ...target, path: path.resolve(process.cwd(), target.path) };
|
|
361
|
+
const result = writeInstructions(resolvedTarget);
|
|
362
|
+
const label = result === "skipped" ? "already set" : result;
|
|
363
|
+
console.log(` [${label}] ${tool.name}: ${resolvedTarget.path}`);
|
|
364
|
+
}
|
|
365
|
+
else if (tool.instructionsManual) {
|
|
366
|
+
manualHints.push(` ${tool.name}: ${tool.instructionsManual}`);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
// Also write Roo Code global instructions alongside Cline (both use cline toolId)
|
|
370
|
+
if (selectedTools.includes("cline") && isGlobal) {
|
|
371
|
+
const rooTarget = {
|
|
372
|
+
path: path.join(HOME, ".roo", "rules", "hmem.md"),
|
|
373
|
+
mode: "standalone",
|
|
374
|
+
};
|
|
375
|
+
const result = writeInstructions(rooTarget);
|
|
376
|
+
const label = result === "skipped" ? "already set" : result;
|
|
377
|
+
console.log(` [${label}] Roo Code: ${rooTarget.path}`);
|
|
378
|
+
}
|
|
379
|
+
if (manualHints.length > 0) {
|
|
380
|
+
console.log("\n Manual steps required:");
|
|
381
|
+
for (const hint of manualHints) {
|
|
382
|
+
console.log(`\n${hint}`);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
264
385
|
// Step 7: Create default hmem.config.json if not exists
|
|
265
386
|
const hmemConfigPath = path.join(absMemDir, "hmem.config.json");
|
|
266
387
|
if (!fs.existsSync(hmemConfigPath)) {
|
|
@@ -275,11 +396,19 @@ export async function runInit() {
|
|
|
275
396
|
],
|
|
276
397
|
};
|
|
277
398
|
writeConfigFile(hmemConfigPath, defaultConfig);
|
|
278
|
-
console.log(
|
|
399
|
+
console.log(`\n [ok] Config: ${hmemConfigPath}`);
|
|
279
400
|
}
|
|
280
401
|
console.log(`\n Done! Restart your AI tool(s) to activate hmem.\n`);
|
|
281
402
|
console.log(` Memory directory: ${absMemDir}`);
|
|
282
|
-
console.log(`\n
|
|
403
|
+
console.log(`\n Available slash commands (after copying skill files — see README):\n`);
|
|
404
|
+
console.log(` /hmem-read — Load your memory at session start`);
|
|
405
|
+
console.log(` /save — Save session learnings to memory,`);
|
|
406
|
+
console.log(` then commit + push (only if in a git repo with uncommitted changes)`);
|
|
407
|
+
console.log(` /hmem-config — View and adjust memory settings`);
|
|
408
|
+
console.log(` /memory-curate — Audit and clean up memory entries`);
|
|
409
|
+
console.log(` (advanced — untested, use with caution)\n`);
|
|
410
|
+
console.log(` Skill files: https://github.com/Bumblebiber/hmem#skill-files\n`);
|
|
411
|
+
console.log(` Test: Open your AI tool and call read_memory() — it should respond.\n`);
|
|
283
412
|
}
|
|
284
413
|
finally {
|
|
285
414
|
rl.close();
|
package/dist/cli-init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-init.js","sourceRoot":"","sources":["../src/cli-init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-init.js","sourceRoot":"","sources":["../src/cli-init.ts"],"names":[],"mappings":"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"}
|
package/dist/hmem-config.d.ts
CHANGED
|
@@ -59,10 +59,16 @@ export interface HmemConfig {
|
|
|
59
59
|
defaultReadLimit: number;
|
|
60
60
|
/**
|
|
61
61
|
* Memory category prefixes. Keys are single uppercase letters, values are human-readable names.
|
|
62
|
-
* Default: P=Project, L=Lesson, T=Task, E=Error, D=Decision, M=Milestone, S=Skill,
|
|
62
|
+
* Default: P=Project, L=Lesson, T=Task, E=Error, D=Decision, M=Milestone, S=Skill, N=Navigator.
|
|
63
63
|
* Users can add custom prefixes (e.g. "R": "Research") in hmem.config.json.
|
|
64
64
|
*/
|
|
65
65
|
prefixes: Record<string, string>;
|
|
66
|
+
/**
|
|
67
|
+
* Number of top-accessed entries that are automatically promoted to L2 depth in bulk reads.
|
|
68
|
+
* These are entries with the highest access_count (excluding zero) — "organic favorites".
|
|
69
|
+
* Set to 0 to disable. Default: 5.
|
|
70
|
+
*/
|
|
71
|
+
accessCountTopN: number;
|
|
66
72
|
}
|
|
67
73
|
export declare const DEFAULT_PREFIXES: Record<string, string>;
|
|
68
74
|
export declare const DEFAULT_CONFIG: HmemConfig;
|
package/dist/hmem-config.js
CHANGED
|
@@ -8,7 +8,7 @@ export const DEFAULT_PREFIXES = {
|
|
|
8
8
|
D: "Decision",
|
|
9
9
|
M: "Milestone",
|
|
10
10
|
S: "Skill",
|
|
11
|
-
|
|
11
|
+
N: "Navigator",
|
|
12
12
|
};
|
|
13
13
|
export const DEFAULT_CONFIG = {
|
|
14
14
|
maxCharsPerLevel: [120, 2_500, 10_000, 25_000, 50_000],
|
|
@@ -19,6 +19,7 @@ export const DEFAULT_CONFIG = {
|
|
|
19
19
|
],
|
|
20
20
|
defaultReadLimit: 100,
|
|
21
21
|
prefixes: { ...DEFAULT_PREFIXES },
|
|
22
|
+
accessCountTopN: 5,
|
|
22
23
|
};
|
|
23
24
|
/**
|
|
24
25
|
* Format prefix map as "P=Project, L=Lesson, ..." for tool descriptions.
|
|
@@ -67,6 +68,8 @@ export function loadHmemConfig(projectDir) {
|
|
|
67
68
|
cfg.maxDepth = raw.maxDepth;
|
|
68
69
|
if (typeof raw.defaultReadLimit === "number" && raw.defaultReadLimit > 0)
|
|
69
70
|
cfg.defaultReadLimit = raw.defaultReadLimit;
|
|
71
|
+
if (typeof raw.accessCountTopN === "number" && raw.accessCountTopN >= 0)
|
|
72
|
+
cfg.accessCountTopN = raw.accessCountTopN;
|
|
70
73
|
// Recency tiers: explicit array > legacy recentChildrenCount > default
|
|
71
74
|
if (Array.isArray(raw.recentDepthTiers)) {
|
|
72
75
|
const tiers = raw.recentDepthTiers.filter((t) => typeof t.count === "number" &&
|
package/dist/hmem-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmem-config.js","sourceRoot":"","sources":["../src/hmem-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"hmem-config.js","sourceRoot":"","sources":["../src/hmem-config.ts"],"names":[],"mappings":"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"}
|