@cartisien/engram 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -2
- package/dist/adapters/base.d.ts +2 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +2 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/memory.d.ts +17 -0
- package/dist/adapters/memory.d.ts.map +1 -0
- package/dist/adapters/memory.js +58 -0
- package/dist/adapters/memory.js.map +1 -0
- package/dist/adapters/postgres.d.ts +33 -0
- package/dist/adapters/postgres.d.ts.map +1 -0
- package/dist/adapters/postgres.js +47 -0
- package/dist/adapters/postgres.js.map +1 -0
- package/dist/adapters/sqlite.d.ts +19 -0
- package/dist/adapters/sqlite.d.ts.map +1 -0
- package/dist/adapters/sqlite.js +33 -0
- package/dist/adapters/sqlite.js.map +1 -0
- package/dist/engram.d.ts +57 -0
- package/dist/engram.d.ts.map +1 -0
- package/dist/engram.js +148 -0
- package/dist/engram.js.map +1 -0
- package/dist/index.d.ts +64 -37
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +243 -120
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +48 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/embeddings.d.ts +20 -0
- package/dist/utils/embeddings.d.ts.map +1 -0
- package/dist/utils/embeddings.js +28 -0
- package/dist/utils/embeddings.js.map +1 -0
- package/dist/utils/similarity.d.ts +10 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +31 -0
- package/dist/utils/similarity.js.map +1 -0
- package/package.json +1 -1
- package/LICENSE +0 -21
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
export type MemoryTier = 'working' | 'long_term' | 'archived';
|
|
1
2
|
export interface MemoryEntry {
|
|
2
3
|
id: string;
|
|
3
4
|
sessionId: string;
|
|
4
5
|
content: string;
|
|
5
6
|
role: 'user' | 'assistant' | 'system';
|
|
6
7
|
timestamp: Date;
|
|
8
|
+
tier: MemoryTier;
|
|
9
|
+
consolidatedFrom?: string[];
|
|
7
10
|
metadata?: Record<string, unknown>;
|
|
8
11
|
similarity?: number;
|
|
9
12
|
}
|
|
@@ -33,6 +36,19 @@ export interface RecallOptions {
|
|
|
33
36
|
after?: Date;
|
|
34
37
|
role?: 'user' | 'assistant' | 'system';
|
|
35
38
|
includeGraph?: boolean;
|
|
39
|
+
tiers?: MemoryTier[];
|
|
40
|
+
}
|
|
41
|
+
export interface ConsolidateOptions {
|
|
42
|
+
batch?: number;
|
|
43
|
+
keep?: number;
|
|
44
|
+
model?: string;
|
|
45
|
+
dryRun?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface ConsolidationResult {
|
|
48
|
+
summarized: number;
|
|
49
|
+
created: number;
|
|
50
|
+
archived: number;
|
|
51
|
+
previews?: string[];
|
|
36
52
|
}
|
|
37
53
|
export interface EngramConfig {
|
|
38
54
|
dbPath?: string;
|
|
@@ -42,23 +58,32 @@ export interface EngramConfig {
|
|
|
42
58
|
semanticSearch?: boolean;
|
|
43
59
|
graphMemory?: boolean;
|
|
44
60
|
graphModel?: string;
|
|
61
|
+
autoConsolidate?: boolean;
|
|
62
|
+
consolidateThreshold?: number;
|
|
63
|
+
consolidateKeep?: number;
|
|
64
|
+
consolidateBatch?: number;
|
|
65
|
+
consolidateModel?: string;
|
|
45
66
|
}
|
|
46
67
|
/**
|
|
47
68
|
* Engram - Persistent semantic memory for AI agents
|
|
48
69
|
*
|
|
49
|
-
* v0.
|
|
50
|
-
*
|
|
70
|
+
* v0.4 adds memory consolidation — working memories are periodically
|
|
71
|
+
* summarized into long-term memories by a local LLM, keeping context
|
|
72
|
+
* dense and relevant as conversations grow.
|
|
51
73
|
*
|
|
52
74
|
* @example
|
|
53
75
|
* ```typescript
|
|
54
76
|
* import { Engram } from '@cartisien/engram';
|
|
55
77
|
*
|
|
56
|
-
* const memory = new Engram({
|
|
78
|
+
* const memory = new Engram({
|
|
79
|
+
* dbPath: './memory.db',
|
|
80
|
+
* autoConsolidate: true,
|
|
81
|
+
* consolidateThreshold: 100,
|
|
82
|
+
* });
|
|
57
83
|
*
|
|
58
|
-
*
|
|
59
|
-
* const
|
|
60
|
-
*
|
|
61
|
-
* // → { entity: 'GovScout', relationships: [{ relation: 'built_with', target: 'React 19' }], ... }
|
|
84
|
+
* // Manual consolidation
|
|
85
|
+
* const result = await memory.consolidate('session_1');
|
|
86
|
+
* // → { summarized: 50, created: 4, archived: 50 }
|
|
62
87
|
* ```
|
|
63
88
|
*/
|
|
64
89
|
export declare class Engram {
|
|
@@ -71,61 +96,63 @@ export declare class Engram {
|
|
|
71
96
|
private semanticSearch;
|
|
72
97
|
private graphMemory;
|
|
73
98
|
private graphModel;
|
|
99
|
+
private autoConsolidate;
|
|
100
|
+
private consolidateThreshold;
|
|
101
|
+
private consolidateKeep;
|
|
102
|
+
private consolidateBatch;
|
|
103
|
+
private consolidateModel;
|
|
74
104
|
constructor(config?: EngramConfig);
|
|
75
105
|
private init;
|
|
76
|
-
/**
|
|
77
|
-
* Fetch embedding vector from Ollama
|
|
78
|
-
*/
|
|
79
106
|
private embed;
|
|
80
|
-
/**
|
|
81
|
-
* Extract entity-relationship triples from text using a local LLM
|
|
82
|
-
*/
|
|
83
107
|
private extractGraph;
|
|
84
|
-
/**
|
|
85
|
-
* Upsert a graph node
|
|
86
|
-
*/
|
|
87
108
|
private upsertNode;
|
|
109
|
+
private storeEdge;
|
|
110
|
+
private cosineSimilarity;
|
|
88
111
|
/**
|
|
89
|
-
*
|
|
112
|
+
* Call LLM to summarize a batch of memories into consolidated entries.
|
|
113
|
+
* Returns an array of summary strings (typically 2-5 per batch).
|
|
90
114
|
*/
|
|
91
|
-
private
|
|
115
|
+
private summarizeMemories;
|
|
92
116
|
/**
|
|
93
|
-
*
|
|
117
|
+
* v0.4: Consolidate working memories into long-term summaries.
|
|
118
|
+
*
|
|
119
|
+
* Takes the oldest `batch` working memories (excluding the `keep` most recent),
|
|
120
|
+
* summarizes them via LLM, stores summaries as `long_term` tier, and archives
|
|
121
|
+
* the originals.
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* const result = await memory.consolidate('session_1');
|
|
126
|
+
* // → { summarized: 50, created: 4, archived: 50 }
|
|
127
|
+
*
|
|
128
|
+
* // Preview without writing
|
|
129
|
+
* const preview = await memory.consolidate('session_1', { dryRun: true });
|
|
130
|
+
* // → { summarized: 50, created: 0, archived: 0, previews: ['...', '...'] }
|
|
131
|
+
* ```
|
|
94
132
|
*/
|
|
95
|
-
|
|
133
|
+
consolidate(sessionId: string, options?: ConsolidateOptions): Promise<ConsolidationResult>;
|
|
96
134
|
/**
|
|
97
|
-
* Store a memory entry
|
|
135
|
+
* Store a memory entry. With autoConsolidate enabled, triggers consolidation
|
|
136
|
+
* when working memory count exceeds the configured threshold.
|
|
98
137
|
*/
|
|
99
138
|
remember(sessionId: string, content: string, role?: 'user' | 'assistant' | 'system', metadata?: Record<string, unknown>): Promise<MemoryEntry>;
|
|
100
139
|
/**
|
|
101
|
-
* Recall memories
|
|
140
|
+
* Recall memories. Searches working and long_term tiers by default.
|
|
141
|
+
* Archived memories (consolidated originals) are excluded unless explicitly requested.
|
|
102
142
|
*/
|
|
103
143
|
recall(sessionId: string, query?: string, limit?: number, options?: RecallOptions): Promise<MemoryEntry[]>;
|
|
104
|
-
/**
|
|
105
|
-
* Augment recall results with graph-connected memories
|
|
106
|
-
*/
|
|
107
144
|
private augmentWithGraph;
|
|
108
|
-
/**
|
|
109
|
-
* v0.3: Query the knowledge graph for an entity
|
|
110
|
-
*/
|
|
111
145
|
graph(sessionId: string, entity: string): Promise<GraphResult>;
|
|
112
|
-
/**
|
|
113
|
-
* Get recent conversation history
|
|
114
|
-
*/
|
|
115
146
|
history(sessionId: string, limit?: number): Promise<MemoryEntry[]>;
|
|
116
|
-
/**
|
|
117
|
-
* Delete memories
|
|
118
|
-
*/
|
|
119
147
|
forget(sessionId: string, options?: {
|
|
120
148
|
before?: Date;
|
|
121
149
|
id?: string;
|
|
150
|
+
includeLongTerm?: boolean;
|
|
122
151
|
}): Promise<number>;
|
|
123
|
-
/**
|
|
124
|
-
* Memory statistics
|
|
125
|
-
*/
|
|
126
152
|
stats(sessionId: string): Promise<{
|
|
127
153
|
total: number;
|
|
128
154
|
byRole: Record<string, number>;
|
|
155
|
+
byTier: Record<MemoryTier, number>;
|
|
129
156
|
oldest: Date | null;
|
|
130
157
|
newest: Date | null;
|
|
131
158
|
withEmbeddings: number;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,eAAe,EAAE,WAAW,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|