hippo-memory 0.32.0 → 0.34.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.
Files changed (72) hide show
  1. package/README.md +16 -0
  2. package/dist/ambient.d.ts +26 -0
  3. package/dist/ambient.d.ts.map +1 -0
  4. package/dist/ambient.js +147 -0
  5. package/dist/ambient.js.map +1 -0
  6. package/dist/capture.js +4 -0
  7. package/dist/capture.js.map +1 -1
  8. package/dist/cli.js +421 -29
  9. package/dist/cli.js.map +1 -1
  10. package/dist/config.d.ts +17 -0
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +21 -0
  13. package/dist/config.js.map +1 -1
  14. package/dist/consolidate.d.ts +5 -1
  15. package/dist/consolidate.d.ts.map +1 -1
  16. package/dist/consolidate.js +64 -10
  17. package/dist/consolidate.js.map +1 -1
  18. package/dist/dag.d.ts +20 -0
  19. package/dist/dag.d.ts.map +1 -0
  20. package/dist/dag.js +104 -0
  21. package/dist/dag.js.map +1 -0
  22. package/dist/db.d.ts.map +1 -1
  23. package/dist/db.js +132 -1
  24. package/dist/db.js.map +1 -1
  25. package/dist/eval-suite.d.ts +82 -0
  26. package/dist/eval-suite.d.ts.map +1 -0
  27. package/dist/eval-suite.js +289 -0
  28. package/dist/eval-suite.js.map +1 -0
  29. package/dist/extract.d.ts +14 -0
  30. package/dist/extract.d.ts.map +1 -0
  31. package/dist/extract.js +87 -0
  32. package/dist/extract.js.map +1 -0
  33. package/dist/importers.d.ts.map +1 -1
  34. package/dist/importers.js +5 -0
  35. package/dist/importers.js.map +1 -1
  36. package/dist/index.d.ts +5 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +8 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/mcp/framing.d.ts +12 -0
  41. package/dist/mcp/framing.d.ts.map +1 -0
  42. package/dist/mcp/framing.js +45 -0
  43. package/dist/mcp/framing.js.map +1 -0
  44. package/dist/mcp/server.js +28 -33
  45. package/dist/mcp/server.js.map +1 -1
  46. package/dist/memory.d.ts +15 -0
  47. package/dist/memory.d.ts.map +1 -1
  48. package/dist/memory.js +7 -0
  49. package/dist/memory.js.map +1 -1
  50. package/dist/multihop.d.ts +11 -0
  51. package/dist/multihop.d.ts.map +1 -0
  52. package/dist/multihop.js +32 -0
  53. package/dist/multihop.js.map +1 -0
  54. package/dist/raw-archive.d.ts +16 -0
  55. package/dist/raw-archive.d.ts.map +1 -0
  56. package/dist/raw-archive.js +53 -0
  57. package/dist/raw-archive.js.map +1 -0
  58. package/dist/salience.d.ts +22 -0
  59. package/dist/salience.d.ts.map +1 -0
  60. package/dist/salience.js +74 -0
  61. package/dist/salience.js.map +1 -0
  62. package/dist/search.d.ts +18 -0
  63. package/dist/search.d.ts.map +1 -1
  64. package/dist/search.js +148 -7
  65. package/dist/search.js.map +1 -1
  66. package/dist/store.d.ts.map +1 -1
  67. package/dist/store.js +46 -8
  68. package/dist/store.js.map +1 -1
  69. package/extensions/openclaw-plugin/openclaw.plugin.json +46 -46
  70. package/extensions/openclaw-plugin/package.json +13 -13
  71. package/openclaw.plugin.json +45 -45
  72. package/package.json +74 -73
package/dist/config.d.ts CHANGED
@@ -53,6 +53,23 @@ export interface HippoConfig {
53
53
  enabled: boolean;
54
54
  budget: number;
55
55
  };
56
+ extraction: {
57
+ enabled: boolean | 'auto';
58
+ model: string;
59
+ };
60
+ multihop: {
61
+ enabled: boolean;
62
+ };
63
+ salience: {
64
+ enabled: boolean;
65
+ recentWindow: number;
66
+ overlapThreshold: number;
67
+ minContentLength: number;
68
+ maxRepeatErrors: number;
69
+ };
70
+ ambient: {
71
+ enabled: boolean;
72
+ };
56
73
  }
57
74
  export declare function loadConfig(hippoRoot: string): HippoConfig;
58
75
  export declare function saveConfig(hippoRoot: string, config: HippoConfig): void;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,KAAK,aAAa,EAA8C,MAAM,qBAAqB,CAAC;AAErG,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB;kEAC8D;IAC9D,GAAG,EAAE;QACH,OAAO,EAAE,OAAO,CAAC;QACjB;iCACyB;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE;QACN;mFAC2E;QAC3E,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,8EAA8E;IAC9E,MAAM,EAAE;QACN,2EAA2E;QAC3E,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,0EAA0E;IAC1E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2EAA2E;IAC3E,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;8BAE0B;IAC1B,YAAY,EAAE;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AA4CD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAgCzD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAGvE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,KAAK,aAAa,EAA8C,MAAM,qBAAqB,CAAC;AAErG,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB;kEAC8D;IAC9D,GAAG,EAAE;QACH,OAAO,EAAE,OAAO,CAAC;QACjB;iCACyB;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE;QACN;mFAC2E;QAC3E,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,8EAA8E;IAC9E,MAAM,EAAE;QACN,2EAA2E;QAC3E,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,0EAA0E;IAC1E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2EAA2E;IAC3E,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;8BAE0B;IAC1B,YAAY,EAAE;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AA6DD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAoCzD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAGvE"}
package/dist/config.js CHANGED
@@ -44,6 +44,23 @@ const DEFAULT_CONFIG = {
44
44
  enabled: true,
45
45
  budget: 1500,
46
46
  },
47
+ extraction: {
48
+ enabled: 'auto',
49
+ model: 'claude-sonnet-4-6',
50
+ },
51
+ multihop: {
52
+ enabled: false,
53
+ },
54
+ salience: {
55
+ enabled: false,
56
+ recentWindow: 20,
57
+ overlapThreshold: 0.6,
58
+ minContentLength: 5,
59
+ maxRepeatErrors: 4,
60
+ },
61
+ ambient: {
62
+ enabled: true,
63
+ },
47
64
  };
48
65
  export function loadConfig(hippoRoot) {
49
66
  const configPath = path.join(hippoRoot, 'config.json');
@@ -71,6 +88,10 @@ export function loadConfig(hippoRoot) {
71
88
  autoTraceCapture: raw.autoTraceCapture ?? DEFAULT_CONFIG.autoTraceCapture,
72
89
  autoTraceWindowDays: raw.autoTraceWindowDays ?? DEFAULT_CONFIG.autoTraceWindowDays,
73
90
  pinnedInject: { ...DEFAULT_CONFIG.pinnedInject, ...(raw.pinnedInject ?? {}) },
91
+ extraction: { ...DEFAULT_CONFIG.extraction, ...(raw.extraction ?? {}) },
92
+ multihop: { ...DEFAULT_CONFIG.multihop, ...(raw.multihop ?? {}) },
93
+ salience: { ...DEFAULT_CONFIG.salience, ...(raw.salience ?? {}) },
94
+ ambient: { ...DEFAULT_CONFIG.ambient, ...(raw.ambient ?? {}) },
74
95
  };
75
96
  }
76
97
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,10 @@ export interface ConsolidationResult {
13
13
  semanticCreated: number;
14
14
  replayed: number;
15
15
  promotedTraces: number;
16
+ extractionCandidates: number;
17
+ extracted: number;
18
+ dagCandidateClusters: number;
19
+ dagSummariesCreated: number;
16
20
  dryRun: boolean;
17
21
  details: string[];
18
22
  physicsSimulated: number;
@@ -23,5 +27,5 @@ export interface ConsolidationResult {
23
27
  export declare function consolidate(hippoRoot: string, options?: {
24
28
  dryRun?: boolean;
25
29
  now?: Date;
26
- }): ConsolidationResult;
30
+ }): Promise<ConsolidationResult>;
27
31
  //# sourceMappingURL=consolidate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consolidate.d.ts","sourceRoot":"","sources":["../src/consolidate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqDH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAID;;GAEG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAO,GAC7C,mBAAmB,CA4SrB"}
1
+ {"version":3,"file":"consolidate.d.ts","sourceRoot":"","sources":["../src/consolidate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqDH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAID;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAO,GAC7C,OAAO,CAAC,mBAAmB,CAAC,CAyW9B"}
@@ -46,7 +46,7 @@ const REPLAY_COUNT_DEFAULT = 5;
46
46
  /**
47
47
  * Run a full consolidation pass.
48
48
  */
49
- export function consolidate(hippoRoot, options = {}) {
49
+ export async function consolidate(hippoRoot, options = {}) {
50
50
  const now = options.now ?? new Date();
51
51
  const dryRun = options.dryRun ?? false;
52
52
  const result = {
@@ -56,6 +56,10 @@ export function consolidate(hippoRoot, options = {}) {
56
56
  semanticCreated: 0,
57
57
  replayed: 0,
58
58
  promotedTraces: 0,
59
+ extractionCandidates: 0,
60
+ extracted: 0,
61
+ dagCandidateClusters: 0,
62
+ dagSummariesCreated: 0,
59
63
  dryRun,
60
64
  details: [],
61
65
  physicsSimulated: 0,
@@ -186,11 +190,59 @@ export function consolidate(hippoRoot, options = {}) {
186
190
  }
187
191
  }
188
192
  // -------------------------------------------------------------------------
193
+ // 1.6. Batch extraction — extract facts from episodic memories missing them
194
+ // -------------------------------------------------------------------------
195
+ const extractedFromIds = new Set(survivors.filter((e) => e.extracted_from).map((e) => e.extracted_from));
196
+ const extractionCandidates = survivors.filter((e) => e.layer === Layer.Episodic && !extractedFromIds.has(e.id));
197
+ result.extractionCandidates = extractionCandidates.length;
198
+ const apiKey = process.env.ANTHROPIC_API_KEY ?? '';
199
+ if (apiKey && extractionCandidates.length > 0 && !dryRun) {
200
+ const { extractFacts, storeExtractedFacts } = await import('./extract.js');
201
+ const batchLimit = 20;
202
+ let extractedCount = 0;
203
+ for (const candidate of extractionCandidates.slice(0, batchLimit)) {
204
+ try {
205
+ const facts = await extractFacts(candidate.content, {
206
+ apiKey,
207
+ model: config.extraction.model,
208
+ });
209
+ if (facts.length > 0) {
210
+ storeExtractedFacts(hippoRoot, candidate, facts);
211
+ extractedCount += facts.length;
212
+ }
213
+ }
214
+ catch {
215
+ // Best-effort — continue with next candidate
216
+ }
217
+ }
218
+ result.extracted = extractedCount;
219
+ }
220
+ // -------------------------------------------------------------------------
221
+ // 1.7. DAG summarization — cluster extracted facts and generate summaries
222
+ // -------------------------------------------------------------------------
223
+ const extractedFacts = survivors.filter((e) => e.tags.includes('extracted') && e.dag_level === 1);
224
+ if (apiKey && extractedFacts.length >= 3 && !dryRun) {
225
+ try {
226
+ const { buildDag } = await import('./dag.js');
227
+ const dagResult = await buildDag(hippoRoot, extractedFacts, {
228
+ apiKey,
229
+ model: config.extraction.model,
230
+ });
231
+ result.dagCandidateClusters = dagResult.candidateClusters;
232
+ result.dagSummariesCreated = dagResult.summariesCreated;
233
+ if (dagResult.summariesCreated > 0) {
234
+ result.details.push(` 🌳 DAG: ${dagResult.summariesCreated} summaries created, ${dagResult.factsLinked} facts linked`);
235
+ }
236
+ }
237
+ catch {
238
+ // Best-effort
239
+ }
240
+ }
241
+ // -------------------------------------------------------------------------
189
242
  // 2. Physics simulation pass
190
243
  // -------------------------------------------------------------------------
191
244
  if (!dryRun) {
192
245
  try {
193
- const config = loadConfig(hippoRoot);
194
246
  const physicsEnabled = config.physics.enabled === true
195
247
  || (config.physics.enabled === 'auto');
196
248
  if (physicsEnabled) {
@@ -242,18 +294,18 @@ export function consolidate(hippoRoot, options = {}) {
242
294
  // -------------------------------------------------------------------------
243
295
  // 3. Merge pass - episodic entries only
244
296
  // -------------------------------------------------------------------------
245
- const episodics = survivors.filter((e) => e.layer === Layer.Episodic);
297
+ const mergeCandidates = survivors.filter((e) => e.layer === Layer.Episodic && !e.tags.includes('extracted'));
246
298
  const used = new Set();
247
- for (let i = 0; i < episodics.length; i++) {
248
- if (used.has(episodics[i].id))
299
+ for (let i = 0; i < mergeCandidates.length; i++) {
300
+ if (used.has(mergeCandidates[i].id))
249
301
  continue;
250
- const cluster = [episodics[i]];
251
- for (let j = i + 1; j < episodics.length; j++) {
252
- if (used.has(episodics[j].id))
302
+ const cluster = [mergeCandidates[i]];
303
+ for (let j = i + 1; j < mergeCandidates.length; j++) {
304
+ if (used.has(mergeCandidates[j].id))
253
305
  continue;
254
- const overlap = textOverlap(episodics[i].content, episodics[j].content);
306
+ const overlap = textOverlap(mergeCandidates[i].content, mergeCandidates[j].content);
255
307
  if (overlap >= MERGE_OVERLAP_THRESHOLD) {
256
- cluster.push(episodics[j]);
308
+ cluster.push(mergeCandidates[j]);
257
309
  }
258
310
  }
259
311
  if (cluster.length < MERGE_MIN_CLUSTER)
@@ -342,6 +394,8 @@ function detectConflicts(entries, now, decayOpts = {}) {
342
394
  continue;
343
395
  if (survivors[i].superseded_by || survivors[j].superseded_by)
344
396
  continue;
397
+ if (survivors[i].tags.includes('extracted') || survivors[j].tags.includes('extracted'))
398
+ continue;
345
399
  const reasonAndScore = describeConflict(survivors[i], survivors[j]);
346
400
  if (!reasonAndScore)
347
401
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"consolidate.js","sourceRoot":"","sources":["../src/consolidate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consolidate.js","sourceRoot":"","sources":["../src/consolidate.ts"],"names":[],"mappings":"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"}
package/dist/dag.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ import { type MemoryEntry } from './memory.js';
2
+ export interface FactCluster {
3
+ label: string;
4
+ members: MemoryEntry[];
5
+ entityTags: string[];
6
+ }
7
+ export declare function clusterFacts(facts: MemoryEntry[]): FactCluster[];
8
+ export interface DagSummaryOptions {
9
+ apiKey: string;
10
+ model?: string;
11
+ fetcher?: typeof fetch;
12
+ }
13
+ export declare function generateDagSummary(label: string, factContents: string[], opts: DagSummaryOptions): Promise<string | null>;
14
+ export interface DagBuildResult {
15
+ candidateClusters: number;
16
+ summariesCreated: number;
17
+ factsLinked: number;
18
+ }
19
+ export declare function buildDag(hippoRoot: string, facts: MemoryEntry[], opts: DagSummaryOptions): Promise<DagBuildResult>;
20
+ //# sourceMappingURL=dag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag.d.ts","sourceRoot":"","sources":["../src/dag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAsChE;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAUD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqCxB;AAED,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAAE,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,cAAc,CAAC,CAoCzB"}
package/dist/dag.js ADDED
@@ -0,0 +1,104 @@
1
+ import { createMemory, Layer } from './memory.js';
2
+ import { writeEntry } from './store.js';
3
+ export function clusterFacts(facts) {
4
+ if (facts.length === 0)
5
+ return [];
6
+ const entityTags = facts.map((f) => f.tags.filter((t) => t.startsWith('speaker:') || t.startsWith('topic:')));
7
+ const assigned = new Set();
8
+ const clusters = [];
9
+ for (let i = 0; i < facts.length; i++) {
10
+ if (assigned.has(i))
11
+ continue;
12
+ const cluster = [i];
13
+ assigned.add(i);
14
+ for (let j = i + 1; j < facts.length; j++) {
15
+ if (assigned.has(j))
16
+ continue;
17
+ const shared = entityTags[i].filter((t) => entityTags[j].includes(t));
18
+ const union = new Set([...entityTags[i], ...entityTags[j]]);
19
+ const jaccard = union.size > 0 ? shared.length / union.size : 0;
20
+ if (jaccard >= 0.5) {
21
+ cluster.push(j);
22
+ assigned.add(j);
23
+ }
24
+ }
25
+ const members = cluster.map((idx) => facts[idx]);
26
+ const sharedTags = entityTags[cluster[0]].filter((t) => cluster.every((idx) => entityTags[idx].includes(t)));
27
+ const label = sharedTags
28
+ .map((t) => t.split(':')[1])
29
+ .join(': ') || members[0].content.slice(0, 40);
30
+ clusters.push({ label, members, entityTags: sharedTags });
31
+ }
32
+ return clusters;
33
+ }
34
+ const DAG_SUMMARY_PROMPT = `You are summarizing a cluster of facts about a specific topic/entity for a memory system.
35
+
36
+ Topic: {label}
37
+ Facts:
38
+ {facts}
39
+
40
+ Write a single concise paragraph (2-4 sentences) that captures all the key information from these facts. This summary will be used to quickly determine if this cluster is relevant to a future query, so include specific names, dates, numbers, and key details. Output ONLY the summary paragraph, no preamble.`;
41
+ export async function generateDagSummary(label, factContents, opts) {
42
+ const model = opts.model ?? 'claude-sonnet-4-6';
43
+ const fetchFn = opts.fetcher ?? fetch;
44
+ const factsBlock = factContents.map((f, i) => `${i + 1}. ${f}`).join('\n');
45
+ const prompt = DAG_SUMMARY_PROMPT
46
+ .replace('{label}', label)
47
+ .replace('{facts}', factsBlock);
48
+ let res;
49
+ try {
50
+ res = await fetchFn('https://api.anthropic.com/v1/messages', {
51
+ method: 'POST',
52
+ headers: {
53
+ 'content-type': 'application/json',
54
+ 'x-api-key': opts.apiKey,
55
+ 'anthropic-version': '2023-06-01',
56
+ },
57
+ body: JSON.stringify({
58
+ model,
59
+ max_tokens: 400,
60
+ messages: [{ role: 'user', content: prompt }],
61
+ }),
62
+ });
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ if (!res.ok)
68
+ return null;
69
+ try {
70
+ const data = (await res.json());
71
+ const text = data.content?.[0]?.text?.trim() ?? '';
72
+ return text.length >= 20 ? text : null;
73
+ }
74
+ catch {
75
+ return null;
76
+ }
77
+ }
78
+ export async function buildDag(hippoRoot, facts, opts) {
79
+ const result = { candidateClusters: 0, summariesCreated: 0, factsLinked: 0 };
80
+ const unparented = facts.filter((f) => f.dag_level === 1 && !f.dag_parent_id && f.tags.includes('extracted'));
81
+ const clusters = clusterFacts(unparented);
82
+ const eligibleClusters = clusters.filter((c) => c.members.length >= 3);
83
+ result.candidateClusters = eligibleClusters.length;
84
+ for (const cluster of eligibleClusters) {
85
+ const summary = await generateDagSummary(cluster.label, cluster.members.map((m) => m.content), opts);
86
+ if (!summary)
87
+ continue;
88
+ const summaryEntry = createMemory(summary, {
89
+ layer: Layer.Semantic,
90
+ tags: [...cluster.entityTags, 'dag-summary'],
91
+ confidence: 'inferred',
92
+ dag_level: 2,
93
+ });
94
+ writeEntry(hippoRoot, summaryEntry);
95
+ result.summariesCreated++;
96
+ for (const member of cluster.members) {
97
+ const updated = { ...member, dag_parent_id: summaryEntry.id };
98
+ writeEntry(hippoRoot, updated);
99
+ result.factsLinked++;
100
+ }
101
+ }
102
+ return result;
103
+ }
104
+ //# sourceMappingURL=dag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag.js","sourceRoot":"","sources":["../src/dag.ts"],"names":[],"mappings":"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"}
package/dist/db.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACnC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACxC,KAAK,IAAI,IAAI,CAAC;CACf;AAmOD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAmB/D;AAkCD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,GAAG,MAAM,CAI7D;AAoDD,wBAAgB,YAAY,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAEvD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAGhF;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAE9E;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAE5D;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,SAAK,GAAG,IAAI,CAS5E"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACnC,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACxC,KAAK,IAAI,IAAI,CAAC;CACf;AAkWD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAmB/D;AAkCD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,GAAG,MAAM,CAI7D;AAwDD,wBAAgB,YAAY,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAEvD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAGhF;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAE9E;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAE5D;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,SAAK,GAAG,IAAI,CAS5E"}
package/dist/db.js CHANGED
@@ -4,7 +4,7 @@ import { createRequire } from 'module';
4
4
  import { createPhysicsTable } from './physics-state.js';
5
5
  const require = createRequire(import.meta.url);
6
6
  const { DatabaseSync } = require('node:sqlite');
7
- const CURRENT_SCHEMA_VERSION = 11;
7
+ const CURRENT_SCHEMA_VERSION = 15;
8
8
  const MIGRATIONS = [
9
9
  {
10
10
  version: 1,
@@ -210,6 +210,133 @@ const MIGRATIONS = [
210
210
  db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_current ON memories(layer, created) WHERE superseded_by IS NULL`);
211
211
  },
212
212
  },
213
+ {
214
+ version: 12,
215
+ up: (db) => {
216
+ if (!tableHasColumn(db, 'memories', 'extracted_from')) {
217
+ db.exec(`ALTER TABLE memories ADD COLUMN extracted_from TEXT`);
218
+ }
219
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_extracted_from ON memories(extracted_from) WHERE extracted_from IS NOT NULL`);
220
+ },
221
+ },
222
+ {
223
+ version: 13,
224
+ up: (db) => {
225
+ if (!tableHasColumn(db, 'memories', 'dag_level')) {
226
+ db.exec(`ALTER TABLE memories ADD COLUMN dag_level INTEGER NOT NULL DEFAULT 0`);
227
+ }
228
+ if (!tableHasColumn(db, 'memories', 'dag_parent_id')) {
229
+ db.exec(`ALTER TABLE memories ADD COLUMN dag_parent_id TEXT`);
230
+ }
231
+ db.exec(`UPDATE memories SET dag_level = 1 WHERE extracted_from IS NOT NULL AND dag_level = 0`);
232
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_dag_parent ON memories(dag_parent_id) WHERE dag_parent_id IS NOT NULL`);
233
+ },
234
+ },
235
+ {
236
+ version: 14,
237
+ up: (db) => {
238
+ // A3 provenance envelope: kind, scope, owner, artifact_ref.
239
+ // SQLite ALTER TABLE ADD COLUMN cannot add CHECK; CHECK enforcement lives
240
+ // in INSERT/UPDATE triggers added later in this migration.
241
+ if (!tableHasColumn(db, 'memories', 'kind')) {
242
+ db.exec(`ALTER TABLE memories ADD COLUMN kind TEXT DEFAULT 'distilled'`);
243
+ }
244
+ if (!tableHasColumn(db, 'memories', 'scope')) {
245
+ db.exec(`ALTER TABLE memories ADD COLUMN scope TEXT`);
246
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_scope ON memories(scope) WHERE scope IS NOT NULL`);
247
+ }
248
+ if (!tableHasColumn(db, 'memories', 'owner')) {
249
+ db.exec(`ALTER TABLE memories ADD COLUMN owner TEXT`);
250
+ }
251
+ if (!tableHasColumn(db, 'memories', 'artifact_ref')) {
252
+ db.exec(`ALTER TABLE memories ADD COLUMN artifact_ref TEXT`);
253
+ }
254
+ // Backfill kind for any rows where it's NULL (pre-migration data).
255
+ db.exec(`UPDATE memories SET kind = 'superseded' WHERE kind IS NULL AND superseded_by IS NOT NULL`);
256
+ db.exec(`UPDATE memories SET kind = 'distilled' WHERE kind IS NULL`);
257
+ // raw_archive: legitimate path for kind='raw' removal (used by archiveRawMemory).
258
+ db.exec(`
259
+ CREATE TABLE IF NOT EXISTS raw_archive (
260
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
261
+ memory_id TEXT NOT NULL,
262
+ archived_at TEXT NOT NULL,
263
+ reason TEXT NOT NULL,
264
+ archived_by TEXT,
265
+ payload_json TEXT NOT NULL
266
+ )
267
+ `);
268
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_raw_archive_memory_id ON raw_archive(memory_id)`);
269
+ // Append-only invariant: kind='raw' rows cannot be deleted directly.
270
+ // Use raw_archive flow: archive-then-update-then-delete (see src/raw-archive.ts).
271
+ db.exec(`
272
+ CREATE TRIGGER IF NOT EXISTS trg_memories_raw_append_only
273
+ BEFORE DELETE ON memories
274
+ WHEN OLD.kind = 'raw'
275
+ BEGIN
276
+ SELECT RAISE(ABORT, 'raw is append-only');
277
+ END
278
+ `);
279
+ // CHECK substitute: ALTER TABLE cannot add CHECK, so enforce kind allowed-set
280
+ // via INSERT/UPDATE triggers.
281
+ db.exec(`
282
+ CREATE TRIGGER IF NOT EXISTS trg_memories_kind_check_insert
283
+ BEFORE INSERT ON memories
284
+ WHEN NEW.kind IS NOT NULL AND NEW.kind NOT IN ('raw','distilled','superseded','archived')
285
+ BEGIN
286
+ SELECT RAISE(ABORT, 'invalid kind: must be raw|distilled|superseded|archived');
287
+ END
288
+ `);
289
+ db.exec(`
290
+ CREATE TRIGGER IF NOT EXISTS trg_memories_kind_check_update
291
+ BEFORE UPDATE ON memories
292
+ WHEN NEW.kind IS NOT NULL AND NEW.kind NOT IN ('raw','distilled','superseded','archived')
293
+ BEGIN
294
+ SELECT RAISE(ABORT, 'invalid kind: must be raw|distilled|superseded|archived');
295
+ END
296
+ `);
297
+ },
298
+ },
299
+ {
300
+ version: 15,
301
+ up: (db) => {
302
+ // A3 hardening (post-review): close the NULL-kind bypass and add raw_archive
303
+ // dedup safety. Both findings landed in /review on commits 41b1f4d..6456e7d.
304
+ //
305
+ // (1) Original v14 triggers used `WHEN NEW.kind IS NOT NULL AND NEW.kind NOT IN (...)`.
306
+ // A direct INSERT/UPDATE setting kind=NULL bypassed the CHECK substitute. Replace
307
+ // with `WHEN NEW.kind IS NULL OR NEW.kind NOT IN (...)` so NULL is rejected too.
308
+ // (2) Add UNIQUE(memory_id, archived_at) to raw_archive so re-archiving the same id
309
+ // in the same instant cannot produce ambiguous audit rows. Per-id history is still
310
+ // allowed (different timestamps).
311
+ db.exec(`DROP TRIGGER IF EXISTS trg_memories_kind_check_insert`);
312
+ db.exec(`DROP TRIGGER IF EXISTS trg_memories_kind_check_update`);
313
+ db.exec(`
314
+ CREATE TRIGGER trg_memories_kind_check_insert
315
+ BEFORE INSERT ON memories
316
+ WHEN NEW.kind IS NULL OR NEW.kind NOT IN ('raw','distilled','superseded','archived')
317
+ BEGIN
318
+ SELECT RAISE(ABORT, 'invalid kind: must be raw|distilled|superseded|archived (not null)');
319
+ END
320
+ `);
321
+ db.exec(`
322
+ CREATE TRIGGER trg_memories_kind_check_update
323
+ BEFORE UPDATE ON memories
324
+ WHEN NEW.kind IS NULL OR NEW.kind NOT IN ('raw','distilled','superseded','archived')
325
+ BEGIN
326
+ SELECT RAISE(ABORT, 'invalid kind: must be raw|distilled|superseded|archived (not null)');
327
+ END
328
+ `);
329
+ // Defensive: any rows that somehow have NULL kind get fixed (shouldn't exist post-v14
330
+ // backfill, but cheap insurance).
331
+ db.exec(`UPDATE memories SET kind = 'distilled' WHERE kind IS NULL`);
332
+ // raw_archive uniqueness. SQLite cannot ADD CONSTRAINT, but a partial unique index
333
+ // on (memory_id, archived_at) is equivalent for INSERT-time enforcement.
334
+ db.exec(`
335
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_raw_archive_id_at
336
+ ON raw_archive(memory_id, archived_at)
337
+ `);
338
+ },
339
+ },
213
340
  ];
214
341
  function tableHasColumn(db, tableName, columnName) {
215
342
  if (!/^[a-z_]+$/i.test(tableName))
@@ -310,6 +437,10 @@ function ensureOptionalFts(db) {
310
437
  db.prepare(`INSERT INTO meta(key, value) VALUES('fts5_available', ?) ON CONFLICT(key) DO UPDATE SET value=excluded.value`).run(available ? '1' : '0');
311
438
  }
312
439
  function backfillFtsIndex(db) {
440
+ const memCount = db.prepare(`SELECT COUNT(*) AS c FROM memories`).get()?.c ?? 0;
441
+ const ftsCount = db.prepare(`SELECT COUNT(*) AS c FROM memories_fts`).get()?.c ?? 0;
442
+ if (memCount === ftsCount)
443
+ return;
313
444
  db.exec(`
314
445
  INSERT INTO memories_fts(id, content, tags)
315
446
  SELECT m.id, m.content, m.tags_json