agent-memory-graph 0.1.1 → 0.2.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.
@@ -16,7 +16,7 @@ var SCHEMA_VERSION, SCHEMA_SQL, SchemaManager;
16
16
  var init_schema = __esm({
17
17
  "src/graph/schema.js"() {
18
18
  "use strict";
19
- SCHEMA_VERSION = 1;
19
+ SCHEMA_VERSION = 2;
20
20
  SCHEMA_SQL = `
21
21
  -- Schema version tracking
22
22
  CREATE TABLE IF NOT EXISTS _meta (
@@ -33,7 +33,8 @@ CREATE TABLE IF NOT EXISTS entities (
33
33
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
34
34
  updated_at TEXT NOT NULL DEFAULT (datetime('now')),
35
35
  source TEXT,
36
- confidence REAL DEFAULT 1.0
36
+ confidence REAL DEFAULT 1.0,
37
+ mention_count INTEGER DEFAULT 1
37
38
  );
38
39
 
39
40
  -- Relationships (graph edges)
@@ -106,14 +107,25 @@ END;
106
107
  /** Initialize schema (idempotent) */
107
108
  initialize() {
108
109
  this.db.exec(SCHEMA_SQL);
109
- const stmt = this.db.prepare(`INSERT OR REPLACE INTO _meta (key, value) VALUES ('schema_version', ?)`);
110
+ const currentVersion = this.getVersion();
111
+ if (currentVersion < 2) {
112
+ try {
113
+ this.db.exec(`ALTER TABLE entities ADD COLUMN mention_count INTEGER DEFAULT 1`);
114
+ } catch (_) {
115
+ }
116
+ }
117
+ const stmt = this.db.prepare(
118
+ `INSERT OR REPLACE INTO _meta (key, value) VALUES ('schema_version', ?)`
119
+ );
110
120
  stmt.run(String(SCHEMA_VERSION));
111
121
  return this.db;
112
122
  }
113
123
  /** Get current schema version */
114
124
  getVersion() {
115
125
  try {
116
- const row = this.db.prepare(`SELECT value FROM _meta WHERE key = 'schema_version'`).get();
126
+ const row = this.db.prepare(
127
+ `SELECT value FROM _meta WHERE key = 'schema_version'`
128
+ ).get();
117
129
  return row ? parseInt(row.value, 10) : 0;
118
130
  } catch {
119
131
  return 0;
@@ -144,6 +156,7 @@ var init_engine = __esm({
144
156
  addEntity(name, type, properties = {}, options = {}) {
145
157
  const existing = this.findEntityByName(name, type);
146
158
  if (existing) {
159
+ this.db.prepare(`UPDATE entities SET mention_count = mention_count + 1 WHERE id = ?`).run(existing.id);
147
160
  return this.updateEntity(existing.id, { properties, ...options });
148
161
  }
149
162
  const id = `e-${nanoid(12)}`;
@@ -151,7 +164,16 @@ var init_engine = __esm({
151
164
  this.db.prepare(`
152
165
  INSERT INTO entities (id, name, type, properties, created_at, updated_at, source, confidence)
153
166
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)
154
- `).run(id, name, type, JSON.stringify(properties), now, now, options.source ?? null, options.confidence ?? 1);
167
+ `).run(
168
+ id,
169
+ name,
170
+ type,
171
+ JSON.stringify(properties),
172
+ now,
173
+ now,
174
+ options.source ?? null,
175
+ options.confidence ?? 1
176
+ );
155
177
  return { id, name, type, properties, created_at: now, updated_at: now, source: options.source, confidence: options.confidence ?? 1 };
156
178
  }
157
179
  getEntity(id) {
@@ -165,8 +187,7 @@ var init_engine = __esm({
165
187
  }
166
188
  updateEntity(id, updates) {
167
189
  const existing = this.getEntity(id);
168
- if (!existing)
169
- throw new Error(`Entity ${id} not found`);
190
+ if (!existing) throw new Error(`Entity ${id} not found`);
170
191
  const merged = {
171
192
  name: updates.name ?? existing.name,
172
193
  type: updates.type ?? existing.type,
@@ -178,16 +199,31 @@ var init_engine = __esm({
178
199
  this.db.prepare(`
179
200
  UPDATE entities SET name = ?, type = ?, properties = ?, source = ?, confidence = ?, updated_at = ?
180
201
  WHERE id = ?
181
- `).run(merged.name, merged.type, JSON.stringify(merged.properties), merged.source ?? null, merged.confidence, now, id);
202
+ `).run(
203
+ merged.name,
204
+ merged.type,
205
+ JSON.stringify(merged.properties),
206
+ merged.source ?? null,
207
+ merged.confidence,
208
+ now,
209
+ id
210
+ );
182
211
  return { ...existing, ...merged, updated_at: now };
183
212
  }
184
213
  deleteEntity(id) {
185
214
  const result = this.db.prepare(`DELETE FROM entities WHERE id = ?`).run(id);
186
215
  return result.changes > 0;
187
216
  }
217
+ reassignRelationships(fromEntityId, toEntityId) {
218
+ const now = (/* @__PURE__ */ new Date()).toISOString();
219
+ const r1 = this.db.prepare(`UPDATE relationships SET from_id = ?, updated_at = ? WHERE from_id = ?`).run(toEntityId, now, fromEntityId);
220
+ const r2 = this.db.prepare(`UPDATE relationships SET to_id = ?, updated_at = ? WHERE to_id = ?`).run(toEntityId, now, fromEntityId);
221
+ this.db.prepare(`DELETE FROM relationships WHERE from_id = to_id`).run();
222
+ return r1.changes + r2.changes;
223
+ }
188
224
  listEntities(options = {}) {
189
225
  const { type, limit = 100, offset = 0 } = options;
190
- const query = type ? `SELECT * FROM entities WHERE type = ? COLLATE NOCASE ORDER BY updated_at DESC LIMIT ? OFFSET ?` : `SELECT * FROM entities ORDER BY updated_at DESC LIMIT ? OFFSET ?`;
226
+ const query = type ? `SELECT * FROM entities WHERE type = ? COLLATE NOCASE ORDER BY mention_count DESC, updated_at DESC LIMIT ? OFFSET ?` : `SELECT * FROM entities ORDER BY mention_count DESC, updated_at DESC LIMIT ? OFFSET ?`;
191
227
  const rows = type ? this.db.prepare(query).all(type, limit, offset) : this.db.prepare(query).all(limit, offset);
192
228
  return rows.map((r) => this.rowToEntity(r));
193
229
  }
@@ -217,7 +253,17 @@ var init_engine = __esm({
217
253
  this.db.prepare(`
218
254
  INSERT INTO relationships (id, from_id, to_id, relation, properties, created_at, updated_at, source, confidence)
219
255
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
220
- `).run(id, fromEntity.id, toEntity.id, relation, JSON.stringify(options.properties ?? {}), now, now, options.source ?? null, options.confidence ?? 1);
256
+ `).run(
257
+ id,
258
+ fromEntity.id,
259
+ toEntity.id,
260
+ relation,
261
+ JSON.stringify(options.properties ?? {}),
262
+ now,
263
+ now,
264
+ options.source ?? null,
265
+ options.confidence ?? 1
266
+ );
221
267
  return {
222
268
  id,
223
269
  from_id: fromEntity.id,
@@ -286,16 +332,14 @@ var init_engine = __esm({
286
332
  findPath(fromName, toName, maxHops = 3) {
287
333
  const fromEntity = this.findEntityByName(fromName);
288
334
  const toEntity = this.findEntityByName(toName);
289
- if (!fromEntity || !toEntity)
290
- return null;
335
+ if (!fromEntity || !toEntity) return null;
291
336
  const queue = [
292
337
  { entityId: fromEntity.id, path: [fromEntity.name], relations: [] }
293
338
  ];
294
339
  const visited = /* @__PURE__ */ new Set([fromEntity.id]);
295
340
  while (queue.length > 0) {
296
341
  const current = queue.shift();
297
- if (current.path.length > maxHops + 1)
298
- break;
342
+ if (current.path.length > maxHops + 1) break;
299
343
  const outgoing = this.db.prepare(`
300
344
  SELECT r.relation, r.to_id as neighbor_id, e.name as neighbor_name
301
345
  FROM relationships r JOIN entities e ON r.to_id = e.id
@@ -334,8 +378,7 @@ var init_engine = __esm({
334
378
  */
335
379
  getNeighborhood(entityName, hops = 1) {
336
380
  const entity = this.findEntityByName(entityName);
337
- if (!entity)
338
- return { entities: [], relationships: [] };
381
+ if (!entity) return { entities: [], relationships: [] };
339
382
  const entityIds = /* @__PURE__ */ new Set([entity.id]);
340
383
  const relIds = /* @__PURE__ */ new Set();
341
384
  let frontier = [entity.id];
@@ -498,7 +541,9 @@ var init_defaults = __esm({
498
541
  function buildPrompt(text, domains) {
499
542
  const domainContext = domains.length > 0 ? `
500
543
  Domain hints (use these to improve accuracy):
501
- ${domains.map((d) => `- ${d.name}: entities=[${d.entityHints.join(", ")}], relations=[${d.relationHints.join(", ")}]`).join("\n")}
544
+ ${domains.map(
545
+ (d) => `- ${d.name}: entities=[${d.entityHints.join(", ")}], relations=[${d.relationHints.join(", ")}]`
546
+ ).join("\n")}
502
547
  ` : "";
503
548
  return `You are an entity and relationship extractor. Given text, extract all meaningful entities and their relationships.
504
549
 
@@ -511,14 +556,18 @@ Rules:
511
556
  6. Do NOT hallucinate entities not mentioned or strongly implied in the text
512
557
  7. Normalize entity names (capitalize properly, use full names when available)
513
558
  8. Use UPPER_SNAKE_CASE for relationship types (WORKS_ON, USES, OWNS, etc.)
559
+ 9. Extract temporal context when mentioned (dates, timeframes, "last year", "in 2024", "recently"). Store as properties: {"when": "2024", "temporal": "joined in 2024"}
560
+ 10. For relationships with time context, include a "when" property: {"from": "X", "relation": "JOINED", "to": "Y", "when": "2024"}
561
+ 11. Do NOT extract tokens, API keys, passwords, hashes, or secrets as entities
562
+ 12. Do NOT extract CLI commands (/new, /reset, /status) as entities
514
563
  ${domainContext}
515
564
  Return ONLY valid JSON (no markdown, no explanation):
516
565
  {
517
566
  "entities": [
518
- {"name": "Entity Name", "type": "Type", "properties": {}, "confidence": 0.9}
567
+ {"name": "Entity Name", "type": "Type", "properties": {"role": "CTO", "when": "2024"}, "confidence": 0.9}
519
568
  ],
520
569
  "relationships": [
521
- {"from": "Entity A", "relation": "RELATION_TYPE", "to": "Entity B", "fromType": "TypeA", "toType": "TypeB", "confidence": 0.85}
570
+ {"from": "Entity A", "relation": "RELATION_TYPE", "to": "Entity B", "fromType": "TypeA", "toType": "TypeB", "confidence": 0.85, "when": "optional temporal context"}
522
571
  ]
523
572
  }
524
573
 
@@ -534,17 +583,17 @@ function detectProvider(config) {
534
583
  if (config.extraction.provider !== "auto") {
535
584
  return config.extraction.provider;
536
585
  }
537
- if (process.env.OPENAI_API_KEY)
538
- return "openai";
539
- if (process.env.ANTHROPIC_API_KEY)
540
- return "anthropic";
541
- if (process.env.OLLAMA_HOST || process.env.OLLAMA_URL)
542
- return "ollama";
586
+ if (process.env.OPENAI_API_KEY) return "openai";
587
+ if (process.env.ANTHROPIC_API_KEY) return "anthropic";
588
+ if (process.env.OLLAMA_HOST || process.env.OLLAMA_URL) return "ollama";
543
589
  return null;
544
590
  }
545
591
  async function callOpenAI(prompt, model) {
546
592
  const { default: OpenAI } = await import("openai");
547
- const client = new OpenAI();
593
+ const client = new OpenAI({
594
+ apiKey: process.env.OPENAI_API_KEY || "sk-local",
595
+ baseURL: process.env.OPENAI_BASE_URL || "http://127.0.0.1:20128/v1"
596
+ });
548
597
  const response = await client.chat.completions.create({
549
598
  model: model === "auto" ? "gpt-4o-mini" : model,
550
599
  messages: [{ role: "user", content: prompt }],
@@ -585,7 +634,9 @@ async function callOllama(prompt, model) {
585
634
  async function extractFromText(text, config) {
586
635
  const provider = detectProvider(config);
587
636
  if (!provider) {
588
- throw new Error("No LLM provider available. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or OLLAMA_HOST.");
637
+ throw new Error(
638
+ "No LLM provider available. Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or OLLAMA_HOST."
639
+ );
589
640
  }
590
641
  const prompt = buildPrompt(text, config.domains);
591
642
  const model = config.extraction.model;
@@ -1221,13 +1272,10 @@ function findDuplicates(engine, threshold = 0.85) {
1221
1272
  const duplicates = [];
1222
1273
  const processed = /* @__PURE__ */ new Set();
1223
1274
  for (let i = 0; i < entities.length; i++) {
1224
- if (processed.has(entities[i].id))
1225
- continue;
1275
+ if (processed.has(entities[i].id)) continue;
1226
1276
  for (let j = i + 1; j < entities.length; j++) {
1227
- if (processed.has(entities[j].id))
1228
- continue;
1229
- if (entities[i].type.toLowerCase() !== entities[j].type.toLowerCase())
1230
- continue;
1277
+ if (processed.has(entities[j].id)) continue;
1278
+ if (entities[i].type.toLowerCase() !== entities[j].type.toLowerCase()) continue;
1231
1279
  const sim = nameSimilarity(entities[i].name, entities[j].name);
1232
1280
  if (sim >= threshold) {
1233
1281
  duplicates.push({
@@ -1244,20 +1292,38 @@ function findDuplicates(engine, threshold = 0.85) {
1244
1292
  function mergeEntities(engine, keepId, mergeId) {
1245
1293
  const keep = engine.getEntity(keepId);
1246
1294
  const merge = engine.getEntity(mergeId);
1247
- if (!keep || !merge)
1248
- return false;
1295
+ if (!keep || !merge) return false;
1249
1296
  const mergedProps = { ...merge.properties, ...keep.properties };
1250
1297
  engine.updateEntity(keepId, { properties: mergedProps });
1298
+ engine.reassignRelationships(mergeId, keepId);
1251
1299
  engine.deleteEntity(mergeId);
1252
1300
  return true;
1253
1301
  }
1302
+ function autoDedup(engine) {
1303
+ const entities = engine.listEntities({ limit: 1e4 });
1304
+ let mergeCount = 0;
1305
+ const merged = /* @__PURE__ */ new Set();
1306
+ for (let i = 0; i < entities.length; i++) {
1307
+ if (merged.has(entities[i].id)) continue;
1308
+ for (let j = i + 1; j < entities.length; j++) {
1309
+ if (merged.has(entities[j].id)) continue;
1310
+ if (entities[i].type.toLowerCase() !== entities[j].type.toLowerCase()) continue;
1311
+ const sim = nameSimilarity(entities[i].name, entities[j].name);
1312
+ if (sim >= 0.9) {
1313
+ const [keep, remove] = entities[i].name.length >= entities[j].name.length ? [entities[i], entities[j]] : [entities[j], entities[i]];
1314
+ mergeEntities(engine, keep.id, remove.id);
1315
+ merged.add(remove.id);
1316
+ mergeCount++;
1317
+ }
1318
+ }
1319
+ }
1320
+ return mergeCount;
1321
+ }
1254
1322
  function nameSimilarity(a, b) {
1255
1323
  const na = a.toLowerCase().trim();
1256
1324
  const nb = b.toLowerCase().trim();
1257
- if (na === nb)
1258
- return 1;
1259
- if (na.includes(nb) || nb.includes(na))
1260
- return 0.9;
1325
+ if (na === nb) return 1;
1326
+ if (na.includes(nb) || nb.includes(na)) return 0.9;
1261
1327
  const dist = levenshtein(na, nb);
1262
1328
  const maxLen = Math.max(na.length, nb.length);
1263
1329
  return maxLen === 0 ? 1 : 1 - dist / maxLen;
@@ -1266,10 +1332,8 @@ function levenshtein(a, b) {
1266
1332
  const m = a.length;
1267
1333
  const n = b.length;
1268
1334
  const dp = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0));
1269
- for (let i = 0; i <= m; i++)
1270
- dp[i][0] = i;
1271
- for (let j = 0; j <= n; j++)
1272
- dp[0][j] = j;
1335
+ for (let i = 0; i <= m; i++) dp[i][0] = i;
1336
+ for (let j = 0; j <= n; j++) dp[0][j] = j;
1273
1337
  for (let i = 1; i <= m; i++) {
1274
1338
  for (let j = 1; j <= n; j++) {
1275
1339
  dp[i][j] = a[i - 1] === b[j - 1] ? dp[i - 1][j - 1] : 1 + Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]);
@@ -1303,6 +1367,9 @@ var init_src = __esm({
1303
1367
  MemoryGraph = class {
1304
1368
  engine;
1305
1369
  config;
1370
+ ingestCount = 0;
1371
+ DEDUP_INTERVAL = 10;
1372
+ // Run auto-dedup every N ingestions
1306
1373
  constructor(options = {}) {
1307
1374
  this.config = loadConfig(options.configPath);
1308
1375
  if (options.config) {
@@ -1324,14 +1391,24 @@ var init_src = __esm({
1324
1391
  });
1325
1392
  }
1326
1393
  for (const rel of result.relationships) {
1394
+ const props = {};
1395
+ if (rel.when) props.when = rel.when;
1327
1396
  this.engine.addRelation(rel.from, rel.relation, rel.to, {
1328
1397
  source: options.source,
1329
1398
  confidence: rel.confidence,
1330
1399
  fromType: rel.fromType,
1331
- toType: rel.toType
1400
+ toType: rel.toType,
1401
+ properties: props
1332
1402
  });
1333
1403
  }
1334
1404
  this.engine.logExtraction(text, result.entities, result.relationships, options.sessionId);
1405
+ this.ingestCount++;
1406
+ if (this.ingestCount % this.DEDUP_INTERVAL === 0) {
1407
+ try {
1408
+ autoDedup(this.engine);
1409
+ } catch (_) {
1410
+ }
1411
+ }
1335
1412
  return result;
1336
1413
  }
1337
1414
  /**
@@ -1379,8 +1456,7 @@ var init_src = __esm({
1379
1456
  */
1380
1457
  deleteEntity(nameOrId) {
1381
1458
  const entity = this.engine.getEntity(nameOrId) ?? this.engine.findEntityByName(nameOrId);
1382
- if (!entity)
1383
- return false;
1459
+ if (!entity) return false;
1384
1460
  return this.engine.deleteEntity(entity.id);
1385
1461
  }
1386
1462
  // ─── Graph Operations ──────────────────────────────────────────
@@ -1500,6 +1576,39 @@ async function getGraph(config) {
1500
1576
  }
1501
1577
  return graphInstance;
1502
1578
  }
1579
+ var messageBuffer = [];
1580
+ var batchTimer = null;
1581
+ var BATCH_WINDOW_MS = 15e3;
1582
+ var BATCH_MAX_MESSAGES = 5;
1583
+ async function flushBatch(config) {
1584
+ if (messageBuffer.length === 0) return;
1585
+ const batch = messageBuffer.splice(0, messageBuffer.length);
1586
+ const combinedText = batch.map((m) => m.text).join("\n");
1587
+ const source = `chat:${batch[0].senderId}`;
1588
+ const sessionKey = batch[0].sessionKey;
1589
+ try {
1590
+ const graph = await getGraph(config);
1591
+ await graph.ingest(combinedText, { source, sessionId: sessionKey });
1592
+ } catch (err) {
1593
+ console.warn("[memory-graph] Batch ingest failed:", err.message);
1594
+ }
1595
+ }
1596
+ var COMMAND_PATTERNS = /^\s*[\/!](new|reset|status|help|start|stop|restart|approve|elevated|exec|reasoning|model|clear)\b/i;
1597
+ var TOKEN_PATTERNS = /(?:npm_|clh_|ghp_|gho_|sk-|xox[bpas]-|Bearer\s+|token[:\s]+\S{20,}|[A-Za-z0-9_-]{40,})/;
1598
+ var CASUAL_PATTERNS = /^\s*(ok|oke|okie|oki|yes|no|yep|nope|sure|đi|đc|dc|ừ|ờ|uh|hmm|hm|ah|oh|wow|nice|cool|good|great|thanks|thx|cảm ơn|sao rồi|sao r|ổn không|ổn k|gà ơi|gà|em ơi|sếp ơi|aira ơi|tiếp|tiếp đi|continue|go|done|xong|rồi|chưa|có|không|ko|k|đúng|sai|được|đc rồi|ok em|ok anh)\s*[?!.]*\s*$/i;
1599
+ var URL_ONLY_PATTERN = /^\s*(https?:\/\/\S+\s*)+$/;
1600
+ var MIN_MEANINGFUL_LENGTH = 30;
1601
+ var MIN_WORD_COUNT = 5;
1602
+ function shouldIngest(text) {
1603
+ if (text.length < MIN_MEANINGFUL_LENGTH) return false;
1604
+ if (COMMAND_PATTERNS.test(text)) return false;
1605
+ if (TOKEN_PATTERNS.test(text)) return false;
1606
+ if (CASUAL_PATTERNS.test(text)) return false;
1607
+ if (URL_ONLY_PATTERN.test(text)) return false;
1608
+ const wordCount = text.split(/\s+/).filter((w) => w.length > 1).length;
1609
+ if (wordCount < MIN_WORD_COUNT) return false;
1610
+ return true;
1611
+ }
1503
1612
  var entry_default = definePluginEntry({
1504
1613
  id: "memory-graph",
1505
1614
  name: "Memory Graph",
@@ -1511,16 +1620,28 @@ var entry_default = definePluginEntry({
1511
1620
  const config = event.context?.pluginConfig;
1512
1621
  if (config?.autoIngest === false) return;
1513
1622
  const text = typeof event.content === "string" ? event.content : event.content?.text || event.content?.body || "";
1514
- if (!text || text.length < 20) return;
1515
- try {
1516
- const graph = await getGraph(config);
1517
- await graph.ingest(text, {
1518
- source: `chat:${event.senderId || "unknown"}`,
1519
- sessionId: event.sessionKey
1520
- });
1521
- } catch (err) {
1522
- console.warn("[memory-graph] Auto-ingest failed:", err.message);
1623
+ if (!text || !shouldIngest(text)) return;
1624
+ messageBuffer.push({
1625
+ text,
1626
+ senderId: event.senderId || "unknown",
1627
+ sessionKey: event.sessionKey || "",
1628
+ timestamp: Date.now()
1629
+ });
1630
+ if (messageBuffer.length >= BATCH_MAX_MESSAGES) {
1631
+ if (batchTimer) {
1632
+ clearTimeout(batchTimer);
1633
+ batchTimer = null;
1634
+ }
1635
+ await flushBatch(config);
1636
+ return;
1523
1637
  }
1638
+ if (batchTimer) clearTimeout(batchTimer);
1639
+ batchTimer = setTimeout(() => {
1640
+ batchTimer = null;
1641
+ flushBatch(config).catch((err) => {
1642
+ console.warn("[memory-graph] Batch flush failed:", err.message);
1643
+ });
1644
+ }, BATCH_WINDOW_MS);
1524
1645
  },
1525
1646
  { priority: 10 }
1526
1647
  );
@@ -8,7 +8,15 @@ export declare function findDuplicates(engine: GraphEngine, threshold?: number):
8
8
  similarity: number;
9
9
  }>;
10
10
  /**
11
- * Merge duplicate entity into target (moves all relationships).
11
+ * Merge duplicate entity into target (moves all relationships, then deletes duplicate).
12
12
  */
13
13
  export declare function mergeEntities(engine: GraphEngine, keepId: string, mergeId: string): boolean;
14
+ /**
15
+ * Auto-dedup: find and merge entities that are clearly the same.
16
+ * Uses stricter rules than findDuplicates for automatic merging:
17
+ * - Same type
18
+ * - One name contains the other (e.g., "KL" vs "Sếp KL")
19
+ * - Or Levenshtein similarity >= 0.9
20
+ */
21
+ export declare function autoDedup(engine: GraphEngine): number;
14
22
  //# sourceMappingURL=dedup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dedup.d.ts","sourceRoot":"","sources":["../../../src/extract/dedup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE9D;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,SAAS,SAAO,GACf,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAcT"}
1
+ {"version":3,"file":"dedup.d.ts","sourceRoot":"","sources":["../../../src/extract/dedup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE9D;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,SAAS,SAAO,GACf,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CA2BpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAgBT;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA+BrD"}
@@ -28,21 +28,57 @@ export function findDuplicates(engine, threshold = 0.85) {
28
28
  return duplicates;
29
29
  }
30
30
  /**
31
- * Merge duplicate entity into target (moves all relationships).
31
+ * Merge duplicate entity into target (moves all relationships, then deletes duplicate).
32
32
  */
33
33
  export function mergeEntities(engine, keepId, mergeId) {
34
34
  const keep = engine.getEntity(keepId);
35
35
  const merge = engine.getEntity(mergeId);
36
36
  if (!keep || !merge)
37
37
  return false;
38
- // Merge properties
38
+ // Merge properties (keep's properties take priority)
39
39
  const mergedProps = { ...merge.properties, ...keep.properties };
40
40
  engine.updateEntity(keepId, { properties: mergedProps });
41
- // This requires direct DB access we'll handle via the engine's internal db
42
- // For now, delete the duplicate (relationships cascade)
41
+ // Move all relationships from merge keep
42
+ engine.reassignRelationships(mergeId, keepId);
43
+ // Delete the duplicate
43
44
  engine.deleteEntity(mergeId);
44
45
  return true;
45
46
  }
47
+ /**
48
+ * Auto-dedup: find and merge entities that are clearly the same.
49
+ * Uses stricter rules than findDuplicates for automatic merging:
50
+ * - Same type
51
+ * - One name contains the other (e.g., "KL" vs "Sếp KL")
52
+ * - Or Levenshtein similarity >= 0.9
53
+ */
54
+ export function autoDedup(engine) {
55
+ const entities = engine.listEntities({ limit: 10000 });
56
+ let mergeCount = 0;
57
+ const merged = new Set();
58
+ for (let i = 0; i < entities.length; i++) {
59
+ if (merged.has(entities[i].id))
60
+ continue;
61
+ for (let j = i + 1; j < entities.length; j++) {
62
+ if (merged.has(entities[j].id))
63
+ continue;
64
+ // Same type required
65
+ if (entities[i].type.toLowerCase() !== entities[j].type.toLowerCase())
66
+ continue;
67
+ const sim = nameSimilarity(entities[i].name, entities[j].name);
68
+ // Only auto-merge at very high confidence (0.9+)
69
+ if (sim >= 0.9) {
70
+ // Keep the longer/more descriptive name
71
+ const [keep, remove] = entities[i].name.length >= entities[j].name.length
72
+ ? [entities[i], entities[j]]
73
+ : [entities[j], entities[i]];
74
+ mergeEntities(engine, keep.id, remove.id);
75
+ merged.add(remove.id);
76
+ mergeCount++;
77
+ }
78
+ }
79
+ }
80
+ return mergeCount;
81
+ }
46
82
  /**
47
83
  * Simple name similarity using normalized Levenshtein distance.
48
84
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dedup.js","sourceRoot":"","sources":["../../../src/extract/dedup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dedup.js","sourceRoot":"","sources":["../../../src/extract/dedup.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export interface ExtractedRelation {
12
12
  fromType?: string;
13
13
  toType?: string;
14
14
  confidence: number;
15
+ when?: string;
15
16
  }
16
17
  export interface ExtractionResult {
17
18
  entities: ExtractedEntity[];
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/extract/extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAU,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,aAAa,EAAE,iBAAiB,EAAE,CAAC;CACpC;AAyHD;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4D7F"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/extract/extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAU,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,aAAa,EAAE,iBAAiB,EAAE,CAAC;CACpC;AA6HD;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4D7F"}
@@ -16,14 +16,18 @@ Rules:
16
16
  6. Do NOT hallucinate entities not mentioned or strongly implied in the text
17
17
  7. Normalize entity names (capitalize properly, use full names when available)
18
18
  8. Use UPPER_SNAKE_CASE for relationship types (WORKS_ON, USES, OWNS, etc.)
19
+ 9. Extract temporal context when mentioned (dates, timeframes, "last year", "in 2024", "recently"). Store as properties: {"when": "2024", "temporal": "joined in 2024"}
20
+ 10. For relationships with time context, include a "when" property: {"from": "X", "relation": "JOINED", "to": "Y", "when": "2024"}
21
+ 11. Do NOT extract tokens, API keys, passwords, hashes, or secrets as entities
22
+ 12. Do NOT extract CLI commands (/new, /reset, /status) as entities
19
23
  ${domainContext}
20
24
  Return ONLY valid JSON (no markdown, no explanation):
21
25
  {
22
26
  "entities": [
23
- {"name": "Entity Name", "type": "Type", "properties": {}, "confidence": 0.9}
27
+ {"name": "Entity Name", "type": "Type", "properties": {"role": "CTO", "when": "2024"}, "confidence": 0.9}
24
28
  ],
25
29
  "relationships": [
26
- {"from": "Entity A", "relation": "RELATION_TYPE", "to": "Entity B", "fromType": "TypeA", "toType": "TypeB", "confidence": 0.85}
30
+ {"from": "Entity A", "relation": "RELATION_TYPE", "to": "Entity B", "fromType": "TypeA", "toType": "TypeB", "confidence": 0.85, "when": "optional temporal context"}
27
31
  ]
28
32
  }
29
33
 
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../../src/extract/extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../../src/extract/extractor.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,7 @@ export declare class GraphEngine {
44
44
  confidence?: number;
45
45
  }): Entity;
46
46
  deleteEntity(id: string): boolean;
47
+ reassignRelationships(fromEntityId: string, toEntityId: string): number;
47
48
  listEntities(options?: {
48
49
  type?: string;
49
50
  limit?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/graph/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/graph/engine.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,8 @@ export class GraphEngine {
10
10
  addEntity(name, type, properties = {}, options = {}) {
11
11
  const existing = this.findEntityByName(name, type);
12
12
  if (existing) {
13
- // Update existing entity
13
+ // Increment mention count + update
14
+ this.db.prepare(`UPDATE entities SET mention_count = mention_count + 1 WHERE id = ?`).run(existing.id);
14
15
  return this.updateEntity(existing.id, { properties, ...options });
15
16
  }
16
17
  const id = `e-${nanoid(12)}`;
@@ -56,11 +57,20 @@ export class GraphEngine {
56
57
  const result = this.db.prepare(`DELETE FROM entities WHERE id = ?`).run(id);
57
58
  return result.changes > 0;
58
59
  }
60
+ reassignRelationships(fromEntityId, toEntityId) {
61
+ const now = new Date().toISOString();
62
+ const r1 = this.db.prepare(`UPDATE relationships SET from_id = ?, updated_at = ? WHERE from_id = ?`).run(toEntityId, now, fromEntityId);
63
+ const r2 = this.db.prepare(`UPDATE relationships SET to_id = ?, updated_at = ? WHERE to_id = ?`).run(toEntityId, now, fromEntityId);
64
+ // Remove self-referencing relationships that may have been created
65
+ this.db.prepare(`DELETE FROM relationships WHERE from_id = to_id`).run();
66
+ return r1.changes + r2.changes;
67
+ }
59
68
  listEntities(options = {}) {
60
69
  const { type, limit = 100, offset = 0 } = options;
70
+ // Sort by relevance: mention_count DESC, then updated_at DESC
61
71
  const query = type
62
- ? `SELECT * FROM entities WHERE type = ? COLLATE NOCASE ORDER BY updated_at DESC LIMIT ? OFFSET ?`
63
- : `SELECT * FROM entities ORDER BY updated_at DESC LIMIT ? OFFSET ?`;
72
+ ? `SELECT * FROM entities WHERE type = ? COLLATE NOCASE ORDER BY mention_count DESC, updated_at DESC LIMIT ? OFFSET ?`
73
+ : `SELECT * FROM entities ORDER BY mention_count DESC, updated_at DESC LIMIT ? OFFSET ?`;
64
74
  const rows = type
65
75
  ? this.db.prepare(query).all(type, limit, offset)
66
76
  : this.db.prepare(query).all(limit, offset);
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/graph/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/graph/engine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/graph/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAoFtC,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,EAAE,MAAM;IAU1B,qCAAqC;IACrC,UAAU,IAAI,QAAQ,CAAC,QAAQ;IAY/B,iCAAiC;IACjC,UAAU,IAAI,MAAM;IAWpB,gCAAgC;IAChC,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/graph/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAqFtC,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,EAAE,MAAM;IAU1B,qCAAqC;IACrC,UAAU,IAAI,QAAQ,CAAC,QAAQ;IAqB/B,iCAAiC;IACjC,UAAU,IAAI,MAAM;IAWpB,gCAAgC;IAChC,KAAK,IAAI,IAAI;CAGd"}
@@ -1,7 +1,7 @@
1
1
  import Database from 'better-sqlite3';
2
2
  import { resolve } from 'node:path';
3
3
  import { mkdirSync } from 'node:fs';
4
- const SCHEMA_VERSION = 1;
4
+ const SCHEMA_VERSION = 2;
5
5
  const SCHEMA_SQL = `
6
6
  -- Schema version tracking
7
7
  CREATE TABLE IF NOT EXISTS _meta (
@@ -18,7 +18,8 @@ CREATE TABLE IF NOT EXISTS entities (
18
18
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
19
19
  updated_at TEXT NOT NULL DEFAULT (datetime('now')),
20
20
  source TEXT,
21
- confidence REAL DEFAULT 1.0
21
+ confidence REAL DEFAULT 1.0,
22
+ mention_count INTEGER DEFAULT 1
22
23
  );
23
24
 
24
25
  -- Relationships (graph edges)
@@ -92,6 +93,15 @@ export class SchemaManager {
92
93
  /** Initialize schema (idempotent) */
93
94
  initialize() {
94
95
  this.db.exec(SCHEMA_SQL);
96
+ // Migrations
97
+ const currentVersion = this.getVersion();
98
+ if (currentVersion < 2) {
99
+ // Add mention_count column if missing (v1 → v2)
100
+ try {
101
+ this.db.exec(`ALTER TABLE entities ADD COLUMN mention_count INTEGER DEFAULT 1`);
102
+ }
103
+ catch (_) { /* column already exists */ }
104
+ }
95
105
  // Set schema version
96
106
  const stmt = this.db.prepare(`INSERT OR REPLACE INTO _meta (key, value) VALUES ('schema_version', ?)`);
97
107
  stmt.run(String(SCHEMA_VERSION));
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/graph/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4ElB,CAAC;AAEF,MAAM,OAAO,aAAa;IAChB,EAAE,CAAoB;IAE9B,YAAY,MAAc;QACxB,0BAA0B;QAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpC,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACtC,CAAC;IAED,qCAAqC;IACrC,UAAU;QACR,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzB,qBAAqB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,wEAAwE,CACzE,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,iCAAiC;IACjC,UAAU;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,sDAAsD,CACvD,CAAC,GAAG,EAAmC,CAAC;YACzC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/graph/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ElB,CAAC;AAEF,MAAM,OAAO,aAAa;IAChB,EAAE,CAAoB;IAE9B,YAAY,MAAc;QACxB,0BAA0B;QAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpC,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACtC,CAAC;IAED,qCAAqC;IACrC,UAAU;QACR,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzB,aAAa;QACb,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,gDAAgD;YAChD,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YAClF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC;QAC7C,CAAC;QAED,qBAAqB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,wEAAwE,CACzE,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,iCAAiC;IACjC,UAAU;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,sDAAsD,CACvD,CAAC,GAAG,EAAmC,CAAC;YACzC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
@@ -30,6 +30,8 @@ export interface MemoryGraphOptions {
30
30
  export declare class MemoryGraph {
31
31
  private engine;
32
32
  private config;
33
+ private ingestCount;
34
+ private readonly DEDUP_INTERVAL;
33
35
  constructor(options?: MemoryGraphOptions);
34
36
  /**
35
37
  * Ingest text: extract entities and relationships, store in graph.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -5,7 +5,7 @@ import { hybridSearch } from './search/hybrid.js';
5
5
  import { naturalLanguageQuery } from './search/natural-language.js';
6
6
  import { exportGraph } from './sync/export.js';
7
7
  import { importFromMemoryMd, importFromDirectory } from './sync/memory-md.js';
8
- import { findDuplicates, mergeEntities } from './extract/dedup.js';
8
+ import { findDuplicates, mergeEntities, autoDedup } from './extract/dedup.js';
9
9
  /**
10
10
  * MemoryGraph — Domain-agnostic knowledge graph for AI agents.
11
11
  *
@@ -24,6 +24,8 @@ import { findDuplicates, mergeEntities } from './extract/dedup.js';
24
24
  export class MemoryGraph {
25
25
  engine;
26
26
  config;
27
+ ingestCount = 0;
28
+ DEDUP_INTERVAL = 10; // Run auto-dedup every N ingestions
27
29
  constructor(options = {}) {
28
30
  this.config = loadConfig(options.configPath);
29
31
  // Apply inline overrides
@@ -48,15 +50,27 @@ export class MemoryGraph {
48
50
  }
49
51
  // Store relationships
50
52
  for (const rel of result.relationships) {
53
+ const props = {};
54
+ if (rel.when)
55
+ props.when = rel.when;
51
56
  this.engine.addRelation(rel.from, rel.relation, rel.to, {
52
57
  source: options.source,
53
58
  confidence: rel.confidence,
54
59
  fromType: rel.fromType,
55
60
  toType: rel.toType,
61
+ properties: props,
56
62
  });
57
63
  }
58
64
  // Log extraction
59
65
  this.engine.logExtraction(text, result.entities, result.relationships, options.sessionId);
66
+ // Auto-dedup every N ingestions
67
+ this.ingestCount++;
68
+ if (this.ingestCount % this.DEDUP_INTERVAL === 0) {
69
+ try {
70
+ autoDedup(this.engine);
71
+ }
72
+ catch (_) { /* non-blocking */ }
73
+ }
60
74
  return result;
61
75
  }
62
76
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmD,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAE,UAAU,EAAe,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAyB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAsB,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,WAAW,EAAqB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAW9E;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,WAAW;IACd,MAAM,CAAc;IACpB,MAAM,CAAS;IACf,WAAW,GAAG,CAAC,CAAC;IACP,cAAc,GAAG,EAAE,CAAC,CAAC,oCAAoC;IAE1E,YAAY,UAA8B,EAAE;QAC1C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE7C,yBAAyB;QACzB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAY,CAAC;QAChE,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,kEAAkE;IAElE;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,UAAmD,EAAE;QAC9E,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAExD,iBAAiB;QACjB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE;gBACvE,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,sBAAsB;QACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,KAAK,GAA4B,EAAE,CAAC;YAC1C,IAAK,GAAW,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE;gBACtD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QAED,iBAAiB;QACjB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAE1F,gCAAgC;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,QAAgB;QACxB,OAAO,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAa,EAAE,KAAc;QAClC,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;YACtC,GAAG,IAAI,CAAC,MAAM;YACd,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE;SACnF,CAAC,CAAC;IACL,CAAC;IAED,kEAAkE;IAElE;;OAEG;IACH,SAAS,CAAC,IAAY,EAAE,IAAY,EAAE,aAAsC,EAAE;QAC5E,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAU,EAAE,OAAgD;QACtG,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY,EAAE,IAAa;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,OAA2C;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,QAAgB;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACzF,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,kEAAkE;IAElE;;OAEG;IACH,QAAQ,CAAC,IAAY,EAAE,EAAU,EAAE,OAAgB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,UAAkB,EAAE,IAAI,GAAG,CAAC;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,kEAAkE;IAElE;;OAEG;IACH,MAAM,CAAC,MAAoB,EAAE,OAA+D;QAC1F,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;QAC5E,CAAC;QAED,OAAO,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,kEAAkE;IAElE;;OAEG;IACH,WAAW,CAAC,OAAqD;QAC/D,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC;QACtF,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE1D,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;YACrB,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI;YAC/B,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF"}
@@ -3,7 +3,13 @@
3
3
  "name": "Memory Graph",
4
4
  "description": "Auto-builds a knowledge graph from conversations. Extracts entities and relationships from every message, stores in local SQLite, and exposes query/search/path tools to the agent.",
5
5
  "contracts": {
6
- "tools": ["memory_graph_query", "memory_graph_ingest", "memory_graph_search", "memory_graph_path", "memory_graph_stats"]
6
+ "tools": [
7
+ "memory_graph_query",
8
+ "memory_graph_ingest",
9
+ "memory_graph_search",
10
+ "memory_graph_path",
11
+ "memory_graph_stats"
12
+ ]
7
13
  },
8
14
  "activation": {
9
15
  "onStartup": true
@@ -42,14 +48,43 @@
42
48
  "items": {
43
49
  "type": "object",
44
50
  "properties": {
45
- "name": { "type": "string" },
46
- "entityHints": { "type": "array", "items": { "type": "string" } },
47
- "relationHints": { "type": "array", "items": { "type": "string" } }
51
+ "name": {
52
+ "type": "string"
53
+ },
54
+ "entityHints": {
55
+ "type": "array",
56
+ "items": {
57
+ "type": "string"
58
+ }
59
+ },
60
+ "relationHints": {
61
+ "type": "array",
62
+ "items": {
63
+ "type": "string"
64
+ }
65
+ }
48
66
  }
49
67
  },
50
68
  "default": []
51
69
  }
52
70
  },
53
71
  "additionalProperties": false
54
- }
55
- }
72
+ },
73
+ "build": {
74
+ "openclawVersion": ">=2026.3.24",
75
+ "entry": "dist/plugin/entry.js"
76
+ },
77
+ "version": "0.1.1",
78
+ "author": "KLSGG",
79
+ "repository": "https://github.com/KLSGG/agent-memory-graph",
80
+ "license": "MIT",
81
+ "keywords": [
82
+ "memory",
83
+ "knowledge-graph",
84
+ "entities",
85
+ "relationships",
86
+ "sqlite",
87
+ "llm",
88
+ "auto-ingest"
89
+ ]
90
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-memory-graph",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Domain-agnostic knowledge graph memory for AI agents. Zero-config, local-first, SQLite-powered. Works as OpenClaw skill (CLI) or plugin (auto-hook).",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -15,6 +15,10 @@
15
15
  "compat": {
16
16
  "pluginApi": ">=2026.3.24-beta.2",
17
17
  "minGatewayVersion": "2026.3.24-beta.2"
18
+ },
19
+ "build": {
20
+ "openclawVersion": ">=2026.3.24",
21
+ "entry": "dist/plugin/entry.js"
18
22
  }
19
23
  },
20
24
  "scripts": {