hmem-mcp 4.0.0 → 5.1.21

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.
Files changed (47) hide show
  1. package/README.md +161 -205
  2. package/dist/cli-checkpoint.d.ts +16 -0
  3. package/dist/cli-checkpoint.js +233 -0
  4. package/dist/cli-checkpoint.js.map +1 -0
  5. package/dist/cli-context-inject.d.ts +19 -0
  6. package/dist/cli-context-inject.js +77 -0
  7. package/dist/cli-context-inject.js.map +1 -0
  8. package/dist/cli-env.d.ts +16 -0
  9. package/dist/cli-env.js +40 -0
  10. package/dist/cli-env.js.map +1 -0
  11. package/dist/cli-hook-startup.d.ts +20 -0
  12. package/dist/cli-hook-startup.js +101 -0
  13. package/dist/cli-hook-startup.js.map +1 -0
  14. package/dist/cli-init.js +148 -10
  15. package/dist/cli-init.js.map +1 -1
  16. package/dist/cli-log-exchange.js +87 -23
  17. package/dist/cli-log-exchange.js.map +1 -1
  18. package/dist/cli-statusline.d.ts +14 -0
  19. package/dist/cli-statusline.js +172 -0
  20. package/dist/cli-statusline.js.map +1 -0
  21. package/dist/cli.js +30 -2
  22. package/dist/cli.js.map +1 -1
  23. package/dist/hmem-config.d.ts +31 -0
  24. package/dist/hmem-config.js +76 -12
  25. package/dist/hmem-config.js.map +1 -1
  26. package/dist/hmem-store.d.ts +62 -1
  27. package/dist/hmem-store.js +364 -46
  28. package/dist/hmem-store.js.map +1 -1
  29. package/dist/mcp-server.js +405 -99
  30. package/dist/mcp-server.js.map +1 -1
  31. package/dist/session-cache.d.ts +11 -0
  32. package/dist/session-cache.js +25 -0
  33. package/dist/session-cache.js.map +1 -1
  34. package/package.json +1 -1
  35. package/scripts/autoresearch-nightly.sh +84 -0
  36. package/scripts/hmem-statusline.sh +4 -0
  37. package/skills/hmem-config/SKILL.md +112 -147
  38. package/skills/hmem-curate/SKILL.md +56 -6
  39. package/skills/hmem-new-project/SKILL.md +164 -0
  40. package/skills/hmem-read/SKILL.md +174 -146
  41. package/skills/hmem-release/SKILL.md +141 -0
  42. package/skills/hmem-self-curate/SKILL.md +49 -7
  43. package/skills/hmem-setup/SKILL.md +169 -87
  44. package/skills/hmem-sync-setup/SKILL.md +16 -3
  45. package/skills/hmem-update/SKILL.md +254 -0
  46. package/skills/hmem-wipe/SKILL.md +75 -0
  47. package/skills/hmem-write/SKILL.md +113 -61
@@ -0,0 +1,172 @@
1
+ /**
2
+ * cli-statusline.ts
3
+ *
4
+ * Generates Claude Code statusline output.
5
+ * Reads JSON from stdin (Claude Code statusline protocol),
6
+ * queries hmem DB for active project, outputs formatted line.
7
+ *
8
+ * Usage: cat | hmem statusline
9
+ *
10
+ * The shell script wrapper becomes a one-liner:
11
+ * #!/bin/bash
12
+ * cat | hmem statusline
13
+ */
14
+ import fs from "node:fs";
15
+ import path from "node:path";
16
+ import { resolveHmemPath } from "./hmem-store.js";
17
+ import { resolveEnvDefaults } from "./cli-env.js";
18
+ import { loadHmemConfig } from "./hmem-config.js";
19
+ // ANSI color helpers
20
+ const C = {
21
+ green: "\x1b[01;32m",
22
+ yellow: "\x1b[01;33m",
23
+ red: "\x1b[01;31m",
24
+ cyan: "\x1b[00;36m",
25
+ gray: "\x1b[00;90m",
26
+ white: "\x1b[00;37m",
27
+ reset: "\x1b[00m",
28
+ };
29
+ const CACHE_FILE = "/tmp/.hmem_statusline_cache";
30
+ const CACHE_TTL = 30; // seconds
31
+ function buildContextBar(input) {
32
+ const pct = input.context_window?.used_percentage;
33
+ if (pct == null)
34
+ return "";
35
+ const usedInt = Math.round(pct);
36
+ const filled = Math.floor(usedInt * 20 / 100);
37
+ const empty = 20 - filled;
38
+ const bar = "#".repeat(filled) + "-".repeat(empty);
39
+ const color = usedInt >= 80 ? C.red : usedInt >= 50 ? C.yellow : C.green;
40
+ // Total context tokens
41
+ const cu = input.context_window?.current_usage;
42
+ const totalCtx = (cu?.input_tokens ?? 0)
43
+ + (cu?.cache_creation_input_tokens ?? 0)
44
+ + (cu?.cache_read_input_tokens ?? 0);
45
+ const tokLabel = totalCtx > 0
46
+ ? `${Math.round(totalCtx / 1000)}k`
47
+ : `${usedInt}%`;
48
+ return `${color}[${bar}]${C.reset} ${C.white}${tokLabel}${C.reset}`;
49
+ }
50
+ async function getHmemStatus() {
51
+ const empty = { project: "", exchanges: 0, interval: 0 };
52
+ // Check cache
53
+ try {
54
+ if (fs.existsSync(CACHE_FILE)) {
55
+ const raw = fs.readFileSync(CACHE_FILE, "utf-8");
56
+ const newline = raw.indexOf("\n");
57
+ if (newline > 0) {
58
+ const cacheTs = parseInt(raw.substring(0, newline), 10);
59
+ const age = Math.floor(Date.now() / 1000) - cacheTs;
60
+ if (age < CACHE_TTL) {
61
+ return JSON.parse(raw.substring(newline + 1));
62
+ }
63
+ }
64
+ }
65
+ }
66
+ catch { /* ignore */ }
67
+ // Query DB
68
+ let status = empty;
69
+ try {
70
+ resolveEnvDefaults();
71
+ const projectDir = process.env.HMEM_PROJECT_DIR || process.env.COUNCIL_PROJECT_DIR;
72
+ if (!projectDir)
73
+ return writeCache(empty);
74
+ const agentId = process.env.HMEM_AGENT_ID || process.env.COUNCIL_AGENT_ID || "";
75
+ const templateName = agentId.replace(/_\d+$/, "");
76
+ let hmemPath;
77
+ try {
78
+ hmemPath = resolveHmemPath(projectDir, templateName);
79
+ }
80
+ catch {
81
+ const agentsDir = path.join(projectDir, "Agents");
82
+ if (fs.existsSync(agentsDir)) {
83
+ for (const dir of fs.readdirSync(agentsDir)) {
84
+ const candidate = path.join(agentsDir, dir, `${dir}.hmem`);
85
+ if (fs.existsSync(candidate)) {
86
+ hmemPath = candidate;
87
+ break;
88
+ }
89
+ }
90
+ }
91
+ if (!hmemPath)
92
+ return writeCache(empty);
93
+ }
94
+ // Load config for checkpoint interval
95
+ const hmemConfig = loadHmemConfig(path.dirname(hmemPath));
96
+ const Database = (await import("better-sqlite3")).default;
97
+ const db = new Database(hmemPath, { readonly: true });
98
+ try {
99
+ // Active project
100
+ let projRow = db.prepare("SELECT id, title FROM memories WHERE prefix='P' AND active=1 LIMIT 1").get();
101
+ if (!projRow) {
102
+ projRow = db.prepare("SELECT id, title FROM memories WHERE prefix='P' AND obsolete!=1 AND irrelevant!=1 ORDER BY updated_at DESC LIMIT 1").get();
103
+ }
104
+ let project = "";
105
+ if (projRow) {
106
+ const name = projRow.title.split("|")[0].trim();
107
+ project = `${projRow.id} ${name}`;
108
+ }
109
+ // Exchange count since last checkpoint
110
+ let exchanges = 0;
111
+ const oRow = db.prepare("SELECT id FROM memories WHERE prefix='O' AND active=1 AND obsolete!=1 AND irrelevant!=1 LIMIT 1").get();
112
+ if (oRow) {
113
+ const totalExchanges = db.prepare("SELECT COUNT(*) as n FROM memory_nodes WHERE root_id = ? AND depth = 2").get(oRow.id)?.n ?? 0;
114
+ const interval = hmemConfig.checkpointInterval;
115
+ exchanges = interval > 0 ? totalExchanges % interval : totalExchanges;
116
+ status = { project, exchanges, interval };
117
+ }
118
+ else {
119
+ status = { project, exchanges: 0, interval: hmemConfig.checkpointInterval };
120
+ }
121
+ }
122
+ finally {
123
+ db.close();
124
+ }
125
+ }
126
+ catch { /* ignore */ }
127
+ return writeCache(status);
128
+ }
129
+ function writeCache(value) {
130
+ try {
131
+ const now = Math.floor(Date.now() / 1000);
132
+ fs.writeFileSync(CACHE_FILE, `${now}\n${JSON.stringify(value)}\n`);
133
+ }
134
+ catch { /* ignore */ }
135
+ return value;
136
+ }
137
+ export async function statusline() {
138
+ // Read JSON from stdin
139
+ let input = {};
140
+ try {
141
+ const chunks = [];
142
+ for await (const chunk of process.stdin)
143
+ chunks.push(chunk);
144
+ input = JSON.parse(Buffer.concat(chunks).toString("utf-8"));
145
+ }
146
+ catch { /* no input — still show project */ }
147
+ const parts = [];
148
+ const ctxBar = buildContextBar(input);
149
+ if (ctxBar)
150
+ parts.push(ctxBar);
151
+ const status = await getHmemStatus();
152
+ if (status.project) {
153
+ parts.push(`${C.cyan}${status.project}${C.reset}`);
154
+ }
155
+ else {
156
+ parts.push(`${C.gray}no project${C.reset}`);
157
+ }
158
+ // Checkpoint progress: "3/5" exchanges since last checkpoint
159
+ if (status.interval > 0) {
160
+ const ratio = `${status.exchanges}/${status.interval}`;
161
+ // Color: gray normally, yellow when close (1 away), green right after checkpoint (0)
162
+ const cpColor = status.exchanges === 0 ? C.green
163
+ : status.exchanges >= status.interval - 1 ? C.yellow
164
+ : C.gray;
165
+ parts.push(`${cpColor}${ratio}${C.reset}`);
166
+ }
167
+ if (parts.length > 0) {
168
+ const sep = ` ${C.gray}|${C.reset} `;
169
+ process.stdout.write(parts.join(sep));
170
+ }
171
+ }
172
+ //# sourceMappingURL=cli-statusline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-statusline.js","sourceRoot":"","sources":["../src/cli-statusline.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -25,11 +25,35 @@ switch (command) {
25
25
  await logExchange();
26
26
  break;
27
27
  }
28
+ case "context-inject": {
29
+ const { contextInject } = await import("./cli-context-inject.js");
30
+ await contextInject();
31
+ break;
32
+ }
33
+ case "checkpoint": {
34
+ const { checkpoint } = await import("./cli-checkpoint.js");
35
+ await checkpoint();
36
+ break;
37
+ }
38
+ case "hook-startup": {
39
+ const { hookStartup } = await import("./cli-hook-startup.js");
40
+ await hookStartup();
41
+ break;
42
+ }
43
+ case "statusline": {
44
+ const { statusline } = await import("./cli-statusline.js");
45
+ await statusline();
46
+ break;
47
+ }
28
48
  case "version":
29
49
  case "--version":
30
- case "-v":
31
- console.log("hmem 1.1.0");
50
+ case "-v": {
51
+ const { createRequire } = await import("node:module");
52
+ const require = createRequire(import.meta.url);
53
+ const pkg = require("../package.json");
54
+ console.log(`hmem ${pkg.version}`);
32
55
  break;
56
+ }
33
57
  default:
34
58
  console.log(`hmem — Humanlike Memory for AI Agents
35
59
 
@@ -38,6 +62,10 @@ Usage:
38
62
  hmem init Install hmem for AI coding tools (interactive or with flags)
39
63
  hmem update-skills Copy/update skill files to detected AI tools
40
64
  hmem log-exchange Log a chat exchange to active O-entry (called by Stop hook)
65
+ hmem context-inject Output compressed context for re-injection after /clear
66
+ hmem checkpoint Extract knowledge from recent exchanges via Haiku (background)
67
+ hmem hook-startup UserPromptSubmit hook — counter, checkpoint reminders (cross-platform)
68
+ hmem statusline Generate statusline for Claude Code (reads JSON from stdin)
41
69
  hmem version Show version
42
70
 
43
71
  Environment variables (for serve):
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,OAAO;QACV,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChC,MAAM;IAER,KAAK,MAAM,CAAC,CAAC,CAAC;QACZ,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM;IACR,CAAC;IAED,KAAK,eAAe,CAAC,CAAC,CAAC;QACrB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACvD,YAAY,EAAE,CAAC;QACf,MAAM;IACR,CAAC;IAED,KAAK,cAAc,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC9D,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM;IACR,CAAC;IAED,KAAK,SAAS,CAAC;IACf,KAAK,WAAW,CAAC;IACjB,KAAK,IAAI;QACP,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,MAAM;IAER;QACE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;6EA0B6D,CAAC,CAAC;QAC3E,MAAM;AACV,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,OAAO;QACV,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChC,MAAM;IAER,KAAK,MAAM,CAAC,CAAC,CAAC;QACZ,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM;IACR,CAAC;IAED,KAAK,eAAe,CAAC,CAAC,CAAC;QACrB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACvD,YAAY,EAAE,CAAC;QACf,MAAM;IACR,CAAC;IAED,KAAK,cAAc,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC9D,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM;IACR,CAAC;IAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;QACtB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAClE,MAAM,aAAa,EAAE,CAAC;QACtB,MAAM;IACR,CAAC;IAED,KAAK,YAAY,CAAC,CAAC,CAAC;QAClB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC3D,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM;IACR,CAAC;IAED,KAAK,cAAc,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC9D,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM;IACR,CAAC;IAED,KAAK,YAAY,CAAC,CAAC,CAAC;QAClB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC3D,MAAM,UAAU,EAAE,CAAC;QACnB,MAAM;IACR,CAAC;IAED,KAAK,SAAS,CAAC;IACf,KAAK,WAAW,CAAC;IACjB,KAAK,IAAI,CAAC,CAAC,CAAC;QACV,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,MAAM;IACR,CAAC;IAED;QACE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EA8B6D,CAAC,CAAC;QAC3E,MAAM;AACV,CAAC"}
@@ -74,6 +74,37 @@ export interface HmemConfig {
74
74
  accessMin?: number;
75
75
  accessMax?: number;
76
76
  };
77
+ /**
78
+ * Number of messages between automatic save reminders (checkpoint hook).
79
+ * Set to 0 to disable. Default: 20.
80
+ */
81
+ checkpointInterval: number;
82
+ /**
83
+ * Checkpoint mode: "remind" = inject additionalContext reminder (default),
84
+ * "auto" = spawn a Haiku subagent that saves directly (no user interaction).
85
+ */
86
+ checkpointMode: "remind" | "auto";
87
+ /**
88
+ * Number of recent O-entries (session logs) to inject at startup and on load_project.
89
+ * Set to 0 to disable. Default: 10.
90
+ */
91
+ recentOEntries: number;
92
+ /**
93
+ * Token threshold for context clear recommendation.
94
+ * When cumulative hmem output exceeds this, the agent is told to flush + /clear.
95
+ * Set to 0 to disable. Default: 100000.
96
+ */
97
+ contextTokenThreshold: number;
98
+ /**
99
+ * load_project display configuration: which L2 sections to expand.
100
+ * withBody: L2 seq numbers whose L3 children show title + body (e.g. Overview)
101
+ * withChildren: L2 seq numbers whose L3 children are all listed as titles (e.g. Bugs, Open Tasks)
102
+ * Default: withBody=[1], withChildren=[6,8]
103
+ */
104
+ loadProjectExpand: {
105
+ withBody: number[];
106
+ withChildren: number[];
107
+ };
77
108
  /** Sync configuration — single server or array for multi-server redundancy. */
78
109
  sync?: SyncConfigBlock | SyncConfigBlock[];
79
110
  }
@@ -19,6 +19,7 @@ export const DEFAULT_PREFIXES = {
19
19
  R: "Rule",
20
20
  O: "Original",
21
21
  I: "Infrastructure",
22
+ C: "Convention",
22
23
  };
23
24
  /**
24
25
  * Default descriptions for prefix category headers (X0000 entries).
@@ -38,6 +39,7 @@ export const DEFAULT_PREFIX_DESCRIPTIONS = {
38
39
  R: "(R)ules — user-defined rules and constraints",
39
40
  O: "(O)riginal context — raw session history with progressive summarization (auto-generated by flush_context)",
40
41
  I: "(I)nfrastructure — devices, servers, deployments, network. Active device = the one the agent runs on.",
42
+ C: "(C)onventions — reusable patterns, coding standards, and workflows. Entries tagged #universal are loaded with every project.",
41
43
  };
42
44
  export const DEFAULT_CONFIG = {
43
45
  maxCharsPerLevel: [200, 2_500, 10_000, 25_000, 50_000],
@@ -47,6 +49,14 @@ export const DEFAULT_CONFIG = {
47
49
  maxTitleChars: 50,
48
50
  accessCountTopN: 5,
49
51
  prefixDescriptions: { ...DEFAULT_PREFIX_DESCRIPTIONS },
52
+ checkpointInterval: 5,
53
+ checkpointMode: "remind",
54
+ recentOEntries: 10,
55
+ contextTokenThreshold: 100_000,
56
+ loadProjectExpand: {
57
+ withBody: [1], // .1 Overview: show L3 title + body
58
+ withChildren: [6, 8], // .6 Bugs, .8 Open Tasks: list all L3 children as titles
59
+ },
50
60
  bulkReadV2: {
51
61
  topAccessCount: 3,
52
62
  topNewestCount: 5,
@@ -92,6 +102,8 @@ export function saveHmemConfig(projectDir, config) {
92
102
  prefixes: config.prefixes,
93
103
  prefixDescriptions: config.prefixDescriptions,
94
104
  bulkReadV2: config.bulkReadV2,
105
+ recentOEntries: config.recentOEntries,
106
+ contextTokenThreshold: config.contextTokenThreshold,
95
107
  },
96
108
  };
97
109
  if (config.sync) {
@@ -109,7 +121,7 @@ export function saveHmemConfig(projectDir, config) {
109
121
  }
110
122
  /** Known memory config keys — used to detect unified vs flat format. */
111
123
  const MEMORY_KEYS = new Set(["maxL1Chars", "maxLnChars", "maxCharsPerLevel", "maxDepth",
112
- "defaultReadLimit", "prefixes", "prefixDescriptions", "bulkReadV2", "maxTitleChars", "accessCountTopN"]);
124
+ "defaultReadLimit", "prefixes", "prefixDescriptions", "bulkReadV2", "maxTitleChars", "accessCountTopN", "recentOEntries", "contextTokenThreshold", "loadProjectExpand"]);
113
125
  /**
114
126
  * Load hmem.config.json from projectDir.
115
127
  * Unknown keys are ignored. Missing keys fall back to defaults.
@@ -128,7 +140,7 @@ export function loadHmemConfig(projectDir) {
128
140
  && !Array.isArray(raw.memory)
129
141
  && Object.keys(raw.memory).some((k) => MEMORY_KEYS.has(k));
130
142
  const memoryRaw = isUnified ? raw.memory : raw;
131
- const syncRaw = raw.sync && typeof raw.sync === "object" && !Array.isArray(raw.sync) ? raw.sync : undefined;
143
+ const syncRaw = raw.sync ?? undefined;
132
144
  const cfg = {
133
145
  ...DEFAULT_CONFIG,
134
146
  prefixDescriptions: { ...DEFAULT_PREFIX_DESCRIPTIONS },
@@ -142,6 +154,22 @@ export function loadHmemConfig(projectDir) {
142
154
  cfg.accessCountTopN = memoryRaw.accessCountTopN;
143
155
  if (typeof memoryRaw.maxTitleChars === "number" && memoryRaw.maxTitleChars >= 10 && memoryRaw.maxTitleChars <= 120)
144
156
  cfg.maxTitleChars = memoryRaw.maxTitleChars;
157
+ if (typeof memoryRaw.checkpointInterval === "number" && memoryRaw.checkpointInterval >= 0)
158
+ cfg.checkpointInterval = memoryRaw.checkpointInterval;
159
+ if (memoryRaw.checkpointMode === "remind" || memoryRaw.checkpointMode === "auto")
160
+ cfg.checkpointMode = memoryRaw.checkpointMode;
161
+ if (typeof memoryRaw.recentOEntries === "number" && memoryRaw.recentOEntries >= 0)
162
+ cfg.recentOEntries = memoryRaw.recentOEntries;
163
+ if (typeof memoryRaw.contextTokenThreshold === "number" && memoryRaw.contextTokenThreshold >= 0)
164
+ cfg.contextTokenThreshold = memoryRaw.contextTokenThreshold;
165
+ // load_project expand config
166
+ if (memoryRaw.loadProjectExpand && typeof memoryRaw.loadProjectExpand === "object") {
167
+ const lpe = memoryRaw.loadProjectExpand;
168
+ if (Array.isArray(lpe.withBody) && lpe.withBody.every((n) => typeof n === "number"))
169
+ cfg.loadProjectExpand.withBody = lpe.withBody;
170
+ if (Array.isArray(lpe.withChildren) && lpe.withChildren.every((n) => typeof n === "number"))
171
+ cfg.loadProjectExpand.withChildren = lpe.withChildren;
172
+ }
145
173
  // Prefixes: merge user-defined with defaults (user can override or add)
146
174
  if (memoryRaw.prefixes && typeof memoryRaw.prefixes === "object" && !Array.isArray(memoryRaw.prefixes)) {
147
175
  const merged = { ...DEFAULT_PREFIXES };
@@ -209,17 +237,53 @@ export function loadHmemConfig(projectDir) {
209
237
  else {
210
238
  cfg.maxCharsPerLevel = linearLimits(DEFAULT_CONFIG.maxCharsPerLevel[0], DEFAULT_CONFIG.maxCharsPerLevel[DEFAULT_CONFIG.maxCharsPerLevel.length - 1], cfg.maxDepth);
211
239
  }
212
- // Parse sync section (unified format only)
213
- if (syncRaw && syncRaw.serverUrl && syncRaw.userId && syncRaw.salt) {
214
- cfg.sync = {
215
- serverUrl: syncRaw.serverUrl,
216
- userId: syncRaw.userId,
217
- salt: syncRaw.salt,
218
- token: syncRaw.token,
219
- syncSecrets: syncRaw.syncSecrets !== undefined ? syncRaw.syncSecrets : true,
220
- lastPushAt: syncRaw.lastPushAt ?? null,
221
- lastPullAt: syncRaw.lastPullAt ?? null,
240
+ // Parse sync section supports single object or array (multi-server)
241
+ if (syncRaw) {
242
+ const parseSyncBlock = (s) => {
243
+ if (!s || typeof s !== "object" || !s.serverUrl || !s.userId || !s.salt)
244
+ return null;
245
+ return {
246
+ serverUrl: s.serverUrl, userId: s.userId, salt: s.salt,
247
+ token: s.token, syncSecrets: s.syncSecrets !== undefined ? s.syncSecrets : true,
248
+ lastPushAt: s.lastPushAt ?? null, lastPullAt: s.lastPullAt ?? null,
249
+ ...(s.name ? { name: s.name } : {}),
250
+ };
222
251
  };
252
+ if (Array.isArray(syncRaw)) {
253
+ const blocks = syncRaw.map(parseSyncBlock).filter((b) => b !== null);
254
+ if (blocks.length > 0)
255
+ cfg.sync = blocks;
256
+ }
257
+ else {
258
+ const block = parseSyncBlock(syncRaw);
259
+ if (block)
260
+ cfg.sync = block;
261
+ }
262
+ }
263
+ // Auto-migrate legacy (flat) config to unified { memory: { ... } } format
264
+ if (!isUnified) {
265
+ try {
266
+ // Preserve any extra keys (sync, lastSeenVersion, etc.)
267
+ const migrated = {};
268
+ migrated.memory = {
269
+ maxCharsPerLevel: cfg.maxCharsPerLevel,
270
+ maxDepth: cfg.maxDepth,
271
+ defaultReadLimit: cfg.defaultReadLimit,
272
+ maxTitleChars: cfg.maxTitleChars,
273
+ accessCountTopN: cfg.accessCountTopN,
274
+ checkpointInterval: cfg.checkpointInterval,
275
+ checkpointMode: cfg.checkpointMode,
276
+ recentOEntries: cfg.recentOEntries,
277
+ contextTokenThreshold: cfg.contextTokenThreshold,
278
+ };
279
+ if (raw.sync)
280
+ migrated.sync = raw.sync;
281
+ fs.writeFileSync(configPath, JSON.stringify(migrated, null, 2) + "\n", "utf-8");
282
+ console.error(`[hmem] Config auto-migrated to v5 format → hmem.config.json updated`);
283
+ }
284
+ catch (migErr) {
285
+ console.error(`[hmem] Config migration failed: ${migErr}`);
286
+ }
223
287
  }
224
288
  return cfg;
225
289
  }
@@ -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;AA+F7B,uDAAuD;AACvD,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,gBAAgB;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAA2B;IACjE,CAAC,EAAE,qCAAqC;IACxC,CAAC,EAAE,sCAAsC;IACzC,CAAC,EAAE,wBAAwB;IAC3B,CAAC,EAAE,sCAAsC;IACzC,CAAC,EAAE,iCAAiC;IACpC,CAAC,EAAE,+BAA+B;IAClC,CAAC,EAAE,kCAAkC;IACrC,CAAC,EAAE,gCAAgC;IACnC,CAAC,EAAE,oCAAoC;IACvC,CAAC,EAAE,8CAA8C;IACjD,CAAC,EAAE,2GAA2G;IAC9G,CAAC,EAAE,uGAAuG;CAC3G,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IACtD,QAAQ,EAAE,CAAC;IACX,gBAAgB,EAAE,GAAG;IACrB,QAAQ,EAAE,EAAE,GAAG,gBAAgB,EAAE;IACjC,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,CAAC;IAClB,kBAAkB,EAAE,EAAE,GAAG,2BAA2B,EAAE;IACtD,UAAU,EAAE;QACV,cAAc,EAAE,CAAC;QACjB,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,aAAa,EAAE,EAAE;QACjB,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,EAAE;QACjB,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;KACb;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgC;IAC/D,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU,EAAE,EAAU,EAAE,KAAa;IAChE,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAC/C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,MAAkB;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAE7D,MAAM,MAAM,GAA4B;QACtC,MAAM,EAAE;YACN,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B;KACF,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAEvE,2CAA2C;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACnD,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU;IACrF,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAE3G;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,cAAc,EAAE,QAAQ,EAAE,EAAE,GAAG,gBAAgB,EAAE,EAAE,kBAAkB,EAAE,EAAE,GAAG,2BAA2B,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC;IACxK,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAE7D,0CAA0C;QAC1C,wDAAwD;QACxD,mEAAmE;QACnE,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;eACzD,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;eAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAE5G,MAAM,GAAG,GAAe;YACtB,GAAG,cAAc;YACjB,kBAAkB,EAAE,EAAE,GAAG,2BAA2B,EAAE;YACtD,UAAU,EAAE,EAAE,GAAG,cAAc,CAAC,UAAU,EAAE;SAC7C,CAAC;QAEF,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,IAAI,EAAE;YAAE,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACrI,IAAI,OAAO,SAAS,CAAC,gBAAgB,KAAK,QAAQ,IAAI,SAAS,CAAC,gBAAgB,GAAG,CAAC;YAAE,GAAG,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;QACxI,IAAI,OAAO,SAAS,CAAC,eAAe,KAAK,QAAQ,IAAI,SAAS,CAAC,eAAe,IAAI,CAAC;YAAE,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;QACrI,IAAI,OAAO,SAAS,CAAC,aAAa,KAAK,QAAQ,IAAI,SAAS,CAAC,aAAa,IAAI,EAAE,IAAI,SAAS,CAAC,aAAa,IAAI,GAAG;YAAE,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;QAEhK,wEAAwE;QACxE,IAAI,SAAS,CAAC,QAAQ,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvG,MAAM,MAAM,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC;YACvC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChG,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC;QACxB,CAAC;QAED,wDAAwD;QACxD,IAAI,SAAS,CAAC,kBAAkB,IAAI,OAAO,SAAS,CAAC,kBAAkB,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrI,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACtE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChG,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QACD,8EAA8E;QAC9E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,SAAS,CAAC,UAAU,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACrE,MAAM,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC;YAChC,IAAI,OAAO,EAAE,CAAC,cAAc,KAAK,QAAQ,IAAI,EAAE,CAAC,cAAc,IAAI,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC;YACvH,IAAI,OAAO,EAAE,CAAC,cAAc,KAAK,QAAQ,IAAI,EAAE,CAAC,cAAc,IAAI,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC;YACvH,IAAI,OAAO,EAAE,CAAC,gBAAgB,KAAK,QAAQ,IAAI,EAAE,CAAC,gBAAgB,IAAI,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,gBAAgB,GAAG,EAAE,CAAC,gBAAgB,CAAC;YAC/H,IAAI,OAAO,EAAE,CAAC,eAAe,KAAK,QAAQ,IAAI,EAAE,CAAC,eAAe,IAAI,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,eAAe,GAAG,EAAE,CAAC,eAAe,CAAC;YAC3H,6BAA6B;YAC7B,IAAI,OAAO,EAAE,CAAC,aAAa,KAAK,QAAQ,IAAI,EAAE,CAAC,aAAa,GAAG,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC;YAClH,IAAI,OAAO,EAAE,CAAC,SAAS,KAAK,QAAQ,IAAI,EAAE,CAAC,SAAS,IAAI,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;YACnG,IAAI,OAAO,EAAE,CAAC,SAAS,KAAK,QAAQ,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;YAClG,IAAI,OAAO,EAAE,CAAC,aAAa,KAAK,QAAQ,IAAI,EAAE,CAAC,aAAa,GAAG,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC;YAClH,IAAI,OAAO,EAAE,CAAC,SAAS,KAAK,QAAQ,IAAI,EAAE,CAAC,SAAS,IAAI,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;YACnG,IAAI,OAAO,EAAE,CAAC,SAAS,KAAK,QAAQ,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC;gBAAE,GAAG,CAAC,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;QACpG,CAAC;QAED,mEAAmE;QACnE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxF,MAAM,MAAM,GAAG,SAAS,CAAC,gBAA4B,CAAC;YACtD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACjE,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;gBAC3B,OAAO,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;oBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5E,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAChG,MAAM,EAAE,GAAG,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAChH,MAAM,EAAE,GAAG,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzJ,GAAG,CAAC,gBAAgB,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,gBAAgB,GAAG,YAAY,CACjC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAClC,cAAc,CAAC,gBAAgB,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,EAC3E,GAAG,CAAC,QAAQ,CACb,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACnE,GAAG,CAAC,IAAI,GAAG;gBACT,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,WAAW,EAAE,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;gBAC3E,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;gBACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;aACvC,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,mBAAmB,CAAC,CAAC;QAChF,OAAO,EAAE,GAAG,cAAc,EAAE,QAAQ,EAAE,EAAE,GAAG,gBAAgB,EAAE,EAAE,kBAAkB,EAAE,EAAE,GAAG,2BAA2B,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC;IACxK,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"hmem-config.js","sourceRoot":"","sources":["../src/hmem-config.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,8 @@ export interface MemoryEntry {
50
50
  irrelevant?: boolean;
51
51
  /** True if this entry is actively relevant (root-only). When any entry in a prefix has active=1, only active entries of that prefix are expanded in bulk reads. */
52
52
  active?: boolean;
53
+ /** ISO timestamp of last modification (write/update/append). Used for sync status. */
54
+ updated_at?: string;
53
55
  /** True if this entry was already delivered in a previous bulk read (session cache). */
54
56
  suppressed?: boolean;
55
57
  /**
@@ -57,7 +59,7 @@ export interface MemoryEntry {
57
59
  * 'favorite' = favorite flag set, 'access' = top-N by access_count.
58
60
  * Rendered as [♥] or [★] in output.
59
61
  */
60
- promoted?: "access" | "favorite" | "subnode";
62
+ promoted?: "access" | "favorite" | "subnode" | "task";
61
63
  /**
62
64
  * In bulk reads: number of direct children NOT shown (only the latest child is included).
63
65
  * undefined = ID-based read (all direct children shown as usual).
@@ -159,6 +161,8 @@ export interface ReadOptions {
159
161
  contextFor?: string;
160
162
  /** Minimum weighted tag score for context_for matches. Default: 4. Tier weights: rare(<=5)=3, medium(6-20)=2, common(>20)=1. */
161
163
  minTagScore?: number;
164
+ /** Bypass V2 selection, project gate, and session cache — return all matching rows directly. Used for explicit filters (after, before, prefix, tag, stale_days). */
165
+ directResults?: boolean;
162
166
  }
163
167
  export interface WriteResult {
164
168
  id: string;
@@ -255,6 +259,26 @@ export declare class HmemStore {
255
259
  */
256
260
  importFromHmem(sourcePath: string, dryRun?: boolean): ImportResult;
257
261
  private _doImport;
262
+ /**
263
+ * Get the most recent O-entries (session logs), optionally filtered by project link.
264
+ * Returns entries ordered by created_at DESC (newest first).
265
+ */
266
+ getRecentOEntries(limit: number, linkedTo?: string): {
267
+ id: string;
268
+ title: string;
269
+ created_at: string;
270
+ }[];
271
+ /**
272
+ * Get the last N exchanges (user message + agent response) from an O-entry.
273
+ * Exchange structure: L2 = title, L4 (X.1) = user message, L5 (X.1.1) = agent response.
274
+ * Returns newest first.
275
+ */
276
+ getOEntryExchanges(oEntryId: string, limit: number, skipSkillDialogs?: boolean): {
277
+ nodeId: string;
278
+ seq: number;
279
+ userText: string;
280
+ agentText: string;
281
+ }[];
258
282
  /**
259
283
  * Get statistics about the memory store.
260
284
  */
@@ -302,6 +326,22 @@ export declare class HmemStore {
302
326
  appendExchange(parentId: string, userText: string, agentText: string): {
303
327
  id: string;
304
328
  };
329
+ /**
330
+ * Append a checkpoint summary as a tagged L2 node under an O-entry.
331
+ * The summary sits alongside exchanges in the L2 sequence.
332
+ * Returns the node ID.
333
+ */
334
+ appendCheckpointSummary(oEntryId: string, summaryText: string): string;
335
+ /**
336
+ * Get checkpoint summaries for an O-entry, newest first.
337
+ * Returns the summary content + the seq number (to know which exchanges it covers).
338
+ */
339
+ getCheckpointSummaries(oEntryId: string, limit?: number): {
340
+ nodeId: string;
341
+ seq: number;
342
+ content: string;
343
+ created_at: string;
344
+ }[];
305
345
  /**
306
346
  * Bump access_count on a root entry or node.
307
347
  * Returns true if the entry was found and bumped.
@@ -318,6 +358,10 @@ export declare class HmemStore {
318
358
  private validateTags;
319
359
  /** Replace all tags on an entry/node. Pass empty array to clear. */
320
360
  private setTags;
361
+ /** Add a single tag to an entry/node without removing existing tags. */
362
+ addTag(entryId: string, tag: string): void;
363
+ /** Find and tag untagged checkpoint summary nodes ([CP] prefix) under an O-entry. */
364
+ tagNewCheckpointSummaries(oEntryId: string): string[];
321
365
  /** Get tags for a single entry/node. */
322
366
  private fetchTags;
323
367
  /** Bulk-fetch tags for multiple IDs at once. */
@@ -394,7 +438,24 @@ export declare class HmemStore {
394
438
  /** Count L2 children of a root entry (direct children only). */
395
439
  countDirectChildren(rootId: string): number;
396
440
  getActiveO(): string;
441
+ /** Get the active O-entry ID without creating one. Returns null if none active. */
442
+ getActiveOId(): string | null;
443
+ /** Get the active project entry. Returns null if none active. */
444
+ getActiveProject(): {
445
+ id: string;
446
+ title: string;
447
+ } | null;
448
+ /** Find a child node by content/title pattern. Returns node ID or null. */
449
+ findChildNode(parentId: string, pattern: string, depth?: number): string | null;
450
+ /** Find a child node of a root entry by content/title pattern. */
451
+ findRootChildNode(rootId: string, pattern: string, depth: number): string | null;
397
452
  bumpAccess(id: string): void;
453
+ /**
454
+ * Auto-purge: physically delete irrelevant entries older than maxAgeDays.
455
+ * Only deletes entries where irrelevant=1 — entries rescued by bumpAccess survive.
456
+ * Returns the number of deleted entries.
457
+ */
458
+ purgeIrrelevant(maxAgeDays?: number): number;
398
459
  private bumpNodeAccess;
399
460
  /**
400
461
  * Follow the obsolete chain from an entry to its final valid correction.