@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/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.3 adds graph memory — entity relationships extracted from memories
50
- * using a local LLM, enabling richer contextual recall.
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({ dbPath: './memory.db', graphMemory: true });
90
+ * const memory = new Engram({
91
+ * dbPath: './memory.db',
92
+ * autoConsolidate: true,
93
+ * consolidateThreshold: 100,
94
+ * });
57
95
  *
58
- * await memory.remember('session_1', 'Jeff is building GovScout in React 19', 'user');
59
- * const context = await memory.recall('session_1', 'what is Jeff building?', 5);
60
- * const graph = await memory.graph('session_1', 'GovScout');
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
- * Store a graph edge
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 storeEdge;
127
+ private summarizeMemories;
92
128
  /**
93
- * Cosine similarity between two vectors
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
- private cosineSimilarity;
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 with optional graph traversal
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
- * Augment recall results with graph-connected memories
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.3: Query the knowledge graph for an entity
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
- graph(sessionId: string, entity: string): Promise<GraphResult>;
195
+ rememberUser(userId: string, content: string, role?: 'user' | 'assistant' | 'system', metadata?: Record<string, unknown>): Promise<UserMemoryEntry>;
112
196
  /**
113
- * Get recent conversation history
197
+ * v0.5: Recall user-scoped memories. Works independently of session.
198
+ * Semantic search when available, keyword fallback otherwise.
114
199
  */
115
- history(sessionId: string, limit?: number): Promise<MemoryEntry[]>;
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
- forget(sessionId: string, options?: {
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
- * Memory statistics
213
+ * v0.5: Consolidate user-scoped memories. Same mechanic as session consolidation.
125
214
  */
126
- stats(sessionId: string): Promise<{
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
  }
@@ -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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"}