@cartisien/engram 0.3.0 → 0.5.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 +83 -3
- 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 +126 -34
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +496 -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 +3 -2
- 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,31 @@ export interface RecallOptions {
|
|
|
33
36
|
after?: Date;
|
|
34
37
|
role?: 'user' | 'assistant' | 'system';
|
|
35
38
|
includeGraph?: boolean;
|
|
39
|
+
tiers?: MemoryTier[];
|
|
40
|
+
userId?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface UserMemoryEntry {
|
|
43
|
+
id: string;
|
|
44
|
+
userId: string;
|
|
45
|
+
content: string;
|
|
46
|
+
role: 'user' | 'assistant' | 'system';
|
|
47
|
+
timestamp: Date;
|
|
48
|
+
tier: MemoryTier;
|
|
49
|
+
consolidatedFrom?: string[];
|
|
50
|
+
metadata?: Record<string, unknown>;
|
|
51
|
+
similarity?: number;
|
|
52
|
+
}
|
|
53
|
+
export interface ConsolidateOptions {
|
|
54
|
+
batch?: number;
|
|
55
|
+
keep?: number;
|
|
56
|
+
model?: string;
|
|
57
|
+
dryRun?: boolean;
|
|
58
|
+
}
|
|
59
|
+
export interface ConsolidationResult {
|
|
60
|
+
summarized: number;
|
|
61
|
+
created: number;
|
|
62
|
+
archived: number;
|
|
63
|
+
previews?: string[];
|
|
36
64
|
}
|
|
37
65
|
export interface EngramConfig {
|
|
38
66
|
dbPath?: string;
|
|
@@ -42,23 +70,32 @@ export interface EngramConfig {
|
|
|
42
70
|
semanticSearch?: boolean;
|
|
43
71
|
graphMemory?: boolean;
|
|
44
72
|
graphModel?: string;
|
|
73
|
+
autoConsolidate?: boolean;
|
|
74
|
+
consolidateThreshold?: number;
|
|
75
|
+
consolidateKeep?: number;
|
|
76
|
+
consolidateBatch?: number;
|
|
77
|
+
consolidateModel?: string;
|
|
45
78
|
}
|
|
46
79
|
/**
|
|
47
80
|
* Engram - Persistent semantic memory for AI agents
|
|
48
81
|
*
|
|
49
|
-
* v0.
|
|
50
|
-
*
|
|
82
|
+
* v0.4 adds memory consolidation — working memories are periodically
|
|
83
|
+
* summarized into long-term memories by a local LLM, keeping context
|
|
84
|
+
* dense and relevant as conversations grow.
|
|
51
85
|
*
|
|
52
86
|
* @example
|
|
53
87
|
* ```typescript
|
|
54
88
|
* import { Engram } from '@cartisien/engram';
|
|
55
89
|
*
|
|
56
|
-
* const memory = new Engram({
|
|
90
|
+
* const memory = new Engram({
|
|
91
|
+
* dbPath: './memory.db',
|
|
92
|
+
* autoConsolidate: true,
|
|
93
|
+
* consolidateThreshold: 100,
|
|
94
|
+
* });
|
|
57
95
|
*
|
|
58
|
-
*
|
|
59
|
-
* const
|
|
60
|
-
*
|
|
61
|
-
* // → { entity: 'GovScout', relationships: [{ relation: 'built_with', target: 'React 19' }], ... }
|
|
96
|
+
* // Manual consolidation
|
|
97
|
+
* const result = await memory.consolidate('session_1');
|
|
98
|
+
* // → { summarized: 50, created: 4, archived: 50 }
|
|
62
99
|
* ```
|
|
63
100
|
*/
|
|
64
101
|
export declare class Engram {
|
|
@@ -71,66 +108,121 @@ export declare class Engram {
|
|
|
71
108
|
private semanticSearch;
|
|
72
109
|
private graphMemory;
|
|
73
110
|
private graphModel;
|
|
111
|
+
private autoConsolidate;
|
|
112
|
+
private consolidateThreshold;
|
|
113
|
+
private consolidateKeep;
|
|
114
|
+
private consolidateBatch;
|
|
115
|
+
private consolidateModel;
|
|
74
116
|
constructor(config?: EngramConfig);
|
|
75
117
|
private init;
|
|
76
|
-
/**
|
|
77
|
-
* Fetch embedding vector from Ollama
|
|
78
|
-
*/
|
|
79
118
|
private embed;
|
|
80
|
-
/**
|
|
81
|
-
* Extract entity-relationship triples from text using a local LLM
|
|
82
|
-
*/
|
|
83
119
|
private extractGraph;
|
|
84
|
-
/**
|
|
85
|
-
* Upsert a graph node
|
|
86
|
-
*/
|
|
87
120
|
private upsertNode;
|
|
121
|
+
private storeEdge;
|
|
122
|
+
private cosineSimilarity;
|
|
88
123
|
/**
|
|
89
|
-
*
|
|
124
|
+
* Call LLM to summarize a batch of memories into consolidated entries.
|
|
125
|
+
* Returns an array of summary strings (typically 2-5 per batch).
|
|
90
126
|
*/
|
|
91
|
-
private
|
|
127
|
+
private summarizeMemories;
|
|
92
128
|
/**
|
|
93
|
-
*
|
|
129
|
+
* v0.4: Consolidate working memories into long-term summaries.
|
|
130
|
+
*
|
|
131
|
+
* Takes the oldest `batch` working memories (excluding the `keep` most recent),
|
|
132
|
+
* summarizes them via LLM, stores summaries as `long_term` tier, and archives
|
|
133
|
+
* the originals.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* const result = await memory.consolidate('session_1');
|
|
138
|
+
* // → { summarized: 50, created: 4, archived: 50 }
|
|
139
|
+
*
|
|
140
|
+
* // Preview without writing
|
|
141
|
+
* const preview = await memory.consolidate('session_1', { dryRun: true });
|
|
142
|
+
* // → { summarized: 50, created: 0, archived: 0, previews: ['...', '...'] }
|
|
143
|
+
* ```
|
|
94
144
|
*/
|
|
95
|
-
|
|
145
|
+
consolidate(sessionId: string, options?: ConsolidateOptions): Promise<ConsolidationResult>;
|
|
96
146
|
/**
|
|
97
|
-
* Store a memory entry
|
|
147
|
+
* Store a memory entry. With autoConsolidate enabled, triggers consolidation
|
|
148
|
+
* when working memory count exceeds the configured threshold.
|
|
98
149
|
*/
|
|
99
150
|
remember(sessionId: string, content: string, role?: 'user' | 'assistant' | 'system', metadata?: Record<string, unknown>): Promise<MemoryEntry>;
|
|
100
151
|
/**
|
|
101
|
-
* Recall memories
|
|
152
|
+
* Recall memories. Searches working and long_term tiers by default.
|
|
153
|
+
* Archived memories (consolidated originals) are excluded unless explicitly requested.
|
|
102
154
|
*/
|
|
103
155
|
recall(sessionId: string, query?: string, limit?: number, options?: RecallOptions): Promise<MemoryEntry[]>;
|
|
104
156
|
/**
|
|
105
|
-
*
|
|
157
|
+
* Blend user-scoped memories into session recall results.
|
|
158
|
+
* User memories are appended after session results (deduplicated by content).
|
|
106
159
|
*/
|
|
160
|
+
private blendUserMemories;
|
|
107
161
|
private augmentWithGraph;
|
|
162
|
+
graph(sessionId: string, entity: string): Promise<GraphResult>;
|
|
163
|
+
history(sessionId: string, limit?: number): Promise<MemoryEntry[]>;
|
|
164
|
+
forget(sessionId: string, options?: {
|
|
165
|
+
before?: Date;
|
|
166
|
+
id?: string;
|
|
167
|
+
includeLongTerm?: boolean;
|
|
168
|
+
}): Promise<number>;
|
|
169
|
+
stats(sessionId: string): Promise<{
|
|
170
|
+
total: number;
|
|
171
|
+
byRole: Record<string, number>;
|
|
172
|
+
byTier: Record<MemoryTier, number>;
|
|
173
|
+
oldest: Date | null;
|
|
174
|
+
newest: Date | null;
|
|
175
|
+
withEmbeddings: number;
|
|
176
|
+
graphNodes?: number;
|
|
177
|
+
graphEdges?: number;
|
|
178
|
+
}>;
|
|
179
|
+
private mapUserRow;
|
|
108
180
|
/**
|
|
109
|
-
* v0.
|
|
181
|
+
* v0.5: Store a user-scoped memory that persists across all sessions.
|
|
182
|
+
*
|
|
183
|
+
* Use this for facts about the user that should always be available
|
|
184
|
+
* regardless of which session is active — preferences, identity, long-term goals.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* await memory.rememberUser('user_jeff', 'Prefers TypeScript over JavaScript', 'preference');
|
|
189
|
+
* await memory.rememberUser('user_jeff', 'Building GovScout — a federal contracting app');
|
|
190
|
+
*
|
|
191
|
+
* // Available in any session
|
|
192
|
+
* const facts = await memory.recallUser('user_jeff', 'what does the user prefer?', 5);
|
|
193
|
+
* ```
|
|
110
194
|
*/
|
|
111
|
-
|
|
195
|
+
rememberUser(userId: string, content: string, role?: 'user' | 'assistant' | 'system', metadata?: Record<string, unknown>): Promise<UserMemoryEntry>;
|
|
112
196
|
/**
|
|
113
|
-
*
|
|
197
|
+
* v0.5: Recall user-scoped memories. Works independently of session.
|
|
198
|
+
* Semantic search when available, keyword fallback otherwise.
|
|
114
199
|
*/
|
|
115
|
-
|
|
200
|
+
recallUser(userId: string, query?: string, limit?: number, options?: {
|
|
201
|
+
tiers?: MemoryTier[];
|
|
202
|
+
role?: string;
|
|
203
|
+
}): Promise<UserMemoryEntry[]>;
|
|
116
204
|
/**
|
|
117
|
-
* Delete memories
|
|
205
|
+
* v0.5: Delete user-scoped memories.
|
|
118
206
|
*/
|
|
119
|
-
|
|
120
|
-
before?: Date;
|
|
207
|
+
forgetUser(userId: string, options?: {
|
|
121
208
|
id?: string;
|
|
209
|
+
before?: Date;
|
|
210
|
+
includeLongTerm?: boolean;
|
|
122
211
|
}): Promise<number>;
|
|
123
212
|
/**
|
|
124
|
-
*
|
|
213
|
+
* v0.5: Consolidate user-scoped memories. Same mechanic as session consolidation.
|
|
125
214
|
*/
|
|
126
|
-
|
|
215
|
+
consolidateUser(userId: string, options?: ConsolidateOptions): Promise<ConsolidationResult>;
|
|
216
|
+
/**
|
|
217
|
+
* v0.5: Stats for user-scoped memories.
|
|
218
|
+
*/
|
|
219
|
+
userStats(userId: string): Promise<{
|
|
127
220
|
total: number;
|
|
128
221
|
byRole: Record<string, number>;
|
|
222
|
+
byTier: Record<MemoryTier, number>;
|
|
129
223
|
oldest: Date | null;
|
|
130
224
|
newest: Date | null;
|
|
131
225
|
withEmbeddings: number;
|
|
132
|
-
graphNodes?: number;
|
|
133
|
-
graphEdges?: number;
|
|
134
226
|
}>;
|
|
135
227
|
close(): Promise<void>;
|
|
136
228
|
}
|
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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"}
|