@slorenzot/memento-core 0.7.0 → 2.0.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.
@@ -1,8 +1,9 @@
1
- import type { Observation, Session, Prompt } from './types.js';
1
+ import type { Observation, Session, Prompt, SearchParams, SearchResult, MergeParams, MergeResult, MergeCandidates, ExportParams, ExportResult, ExportData, ImportData, ImportOptions, ImportResult, JournalEntry, WriteJournalParams, JournalSearchParams, JournalSearchResult, PromptInjectionConfig, RenderedPromptContext, FullExportData, FullImportOptions, FullImportResult, ListPromptsParams, ListPromptsResult } from './types.js';
2
2
  export declare class MemoryEngine {
3
3
  private db;
4
4
  private dbPath;
5
5
  private initError;
6
+ private embeddingService;
6
7
  constructor(dbPath?: string);
7
8
  private createMockDatabase;
8
9
  isHealthy(): boolean;
@@ -12,6 +13,12 @@ export declare class MemoryEngine {
12
13
  private serialize;
13
14
  private deserialize;
14
15
  private checkHealth;
16
+ /**
17
+ * Retry wrapper with exponential backoff for SQLITE_BUSY errors.
18
+ * Dual defense: PRAGMA busy_timeout (5s) catches most contention,
19
+ * this catches the rest with retries.
20
+ */
21
+ private withRetry;
15
22
  createObservation(data: {
16
23
  sessionId: number;
17
24
  title: string;
@@ -20,6 +27,9 @@ export declare class MemoryEngine {
20
27
  topicKey: string | null;
21
28
  projectId: string;
22
29
  metadata: Record<string, unknown>;
30
+ scope?: 'project' | 'personal';
31
+ pinned?: boolean;
32
+ readOnly?: boolean;
23
33
  }): Promise<Observation>;
24
34
  updateObservation(id: number, updates: {
25
35
  title?: string;
@@ -27,26 +37,109 @@ export declare class MemoryEngine {
27
37
  type?: Observation['type'];
28
38
  topicKey?: string | null;
29
39
  metadata?: Record<string, unknown>;
40
+ pinned?: boolean;
41
+ readOnly?: boolean;
30
42
  }): Promise<Observation>;
31
- deleteObservation(id: number): Promise<void>;
32
- getObservation(id: number): Promise<Observation | null>;
33
- search(params: {
34
- query?: string;
35
- type?: Observation['type'];
43
+ deleteObservation(id: number, reason?: string): Promise<void>;
44
+ restoreObservation(id: number): Promise<Observation>;
45
+ purgeObservations(params: {
46
+ projectId?: string;
47
+ observationIds?: number[];
48
+ }): Promise<{
49
+ purgedCount: number;
50
+ purgedIds: number[];
51
+ }>;
52
+ listDeleted(params: {
36
53
  projectId?: string;
37
- topicKey?: string;
38
54
  limit?: number;
39
- offset?: number;
40
55
  }): Promise<{
41
56
  observations: Observation[];
42
57
  total: number;
43
58
  }>;
59
+ findMergeCandidates(params: {
60
+ projectId: string;
61
+ strategy: 'by_topic' | 'by_similarity';
62
+ similarityThreshold?: number;
63
+ }): Promise<MergeCandidates>;
64
+ mergeObservations(params: MergeParams): Promise<MergeResult[]>;
65
+ jaccardSimilarity(text1: string, text2: string): number;
66
+ exportObservations(params: ExportParams): Promise<ExportResult>;
67
+ private exportToJSON;
68
+ private exportToXML;
69
+ private exportToTXT;
70
+ /**
71
+ * Sanitize a user query for safe use in FTS5 MATCH.
72
+ * Strips FTS5 operators and special characters that would cause syntax errors.
73
+ * Returns empty string if nothing survives sanitization.
74
+ */
75
+ private sanitizeFTS5Query;
76
+ getObservation(id: number, includeDeleted?: boolean): Promise<Observation | null>;
77
+ search(params: SearchParams): Promise<SearchResult>;
78
+ /**
79
+ * Keyword search using existing FTS5 (unchanged behavior).
80
+ */
81
+ private searchKeyword;
82
+ /**
83
+ * Semantic search using cosine similarity on embeddings.
84
+ * Falls back to keyword search if embeddings are unavailable.
85
+ */
86
+ private searchSemantic;
87
+ /**
88
+ * Hybrid search combining FTS5 BM25 + cosine similarity.
89
+ * Score = 0.4 * bm25_normalized + 0.6 * cosine_similarity
90
+ */
91
+ private searchHybrid;
92
+ /**
93
+ * Generate and store embedding for an observation.
94
+ * Non-blocking: does not throw on failure.
95
+ */
96
+ generateEmbedding(observationId: number): Promise<boolean>;
97
+ /**
98
+ * Delete embedding for an observation.
99
+ */
100
+ deleteEmbedding(observationId: number): Promise<void>;
101
+ /**
102
+ * Get embedding status (is the service available?).
103
+ */
104
+ getEmbeddingStatus(): Promise<import("./EmbeddingService.js").EmbeddingStatus>;
105
+ /**
106
+ * Backfill embeddings for observations that don't have them.
107
+ * Processes in batches. Returns count of embeddings generated.
108
+ */
109
+ backfillEmbeddings(batchSize?: number): Promise<{
110
+ processed: number;
111
+ failed: number;
112
+ }>;
44
113
  createSession(data: {
45
114
  projectId: string;
46
115
  endedAt: Date | null;
47
116
  metadata: Record<string, unknown>;
117
+ seedIfEmpty?: boolean;
48
118
  }): Promise<Session>;
119
+ /**
120
+ * Seed default observations if project has no observations yet.
121
+ * Creates 3 seeds: persona (personal scope), human (personal), project (project scope).
122
+ * Public so that `memento init` can call it directly.
123
+ */
124
+ seedIfEmpty(projectId: string, sessionId: number): Promise<void>;
49
125
  endSession(id: number): Promise<Session>;
126
+ /**
127
+ * Close stale (orphaned) sessions for a specific project.
128
+ * Sessions are considered stale if they have no ended_at AND started_at is older than maxAgeMs.
129
+ * Auto-closed sessions receive metadata: { auto_closed: true, reason: 'stale', closed_at: <timestamp> }.
130
+ * Returns the count of closed sessions.
131
+ */
132
+ closeStaleSessionsForProject(projectId: string, maxAgeMs?: number): {
133
+ closed: number;
134
+ };
135
+ /**
136
+ * Close ALL stale (orphaned) sessions across all projects.
137
+ * Sessions are considered stale if they have no ended_at AND started_at is older than maxAgeMs.
138
+ * Returns the count of closed sessions.
139
+ */
140
+ closeStaleSessions(maxAgeMs?: number): {
141
+ closed: number;
142
+ };
50
143
  getSession(id: number): Promise<Session | null>;
51
144
  savePrompt(data: {
52
145
  sessionId: number;
@@ -54,12 +147,149 @@ export declare class MemoryEngine {
54
147
  projectId: string;
55
148
  metadata: Record<string, unknown>;
56
149
  }): Promise<Prompt>;
150
+ /**
151
+ * Select observations for prompt injection based on config.
152
+ * Returns observations sorted deterministically for prompt caching:
153
+ * 1. Pinned observations (by ID ascending)
154
+ * 2. Non-pinned observations (by ID ascending)
155
+ */
156
+ selectForPrompt(config: PromptInjectionConfig): Observation[];
157
+ /**
158
+ * Render observations as compact XML for system prompt injection.
159
+ */
160
+ renderPromptContext(observations: Observation[], config: PromptInjectionConfig): RenderedPromptContext;
161
+ private renderObservationXml;
162
+ private estimateObservationChars;
163
+ /**
164
+ * Pin an observation (always include in prompt injection).
165
+ */
166
+ pinObservation(id: number): Promise<Observation>;
167
+ /**
168
+ * Unpin an observation.
169
+ */
170
+ unpinObservation(id: number): Promise<Observation>;
171
+ /**
172
+ * Lock an observation (set read-only). Prevents all modifications.
173
+ */
174
+ lockObservation(id: number): Promise<Observation>;
175
+ /**
176
+ * Unlock an observation (remove read-only protection).
177
+ */
178
+ unlockObservation(id: number): Promise<Observation>;
57
179
  private getObservationById;
58
180
  private getSessionById;
59
181
  private getPromptById;
60
182
  private mapObservation;
61
183
  private mapSession;
62
184
  private mapPrompt;
185
+ getTimeline(params: {
186
+ projectId?: string;
187
+ scope?: string;
188
+ limit?: number;
189
+ offset?: number;
190
+ }): Promise<{
191
+ observations: Observation[];
192
+ total: number;
193
+ }>;
194
+ getRecentContext(params: {
195
+ projectId?: string;
196
+ limit?: number;
197
+ scope?: 'project' | 'personal';
198
+ }): Promise<{
199
+ observations: Observation[];
200
+ total: number;
201
+ }>;
202
+ listSessions(params: {
203
+ projectId?: string;
204
+ activeOnly?: boolean;
205
+ limit?: number;
206
+ offset?: number;
207
+ }): Promise<{
208
+ sessions: Session[];
209
+ total: number;
210
+ }>;
211
+ listProjects(): Promise<Array<{
212
+ name: string;
213
+ activeCount: number;
214
+ deletedCount: number;
215
+ lastActivity: Date | null;
216
+ byType: Record<string, number>;
217
+ }>>;
218
+ /**
219
+ * Register a project in the projects table.
220
+ * Uses INSERT OR IGNORE to be idempotent.
221
+ * Returns the registered project name (normalized).
222
+ */
223
+ registerProject(name: string, workingDir?: string): string;
224
+ /**
225
+ * Get all registered project names from the projects table.
226
+ */
227
+ listRegisteredProjects(): Array<{
228
+ name: string;
229
+ workingDir: string | null;
230
+ aliases: string[];
231
+ }>;
232
+ /**
233
+ * Merge all observations and sessions from sourceProject into targetProject.
234
+ * Also updates FTS index. Returns count of affected records.
235
+ *
236
+ * Tries both the raw source name and the normalized version to handle
237
+ * un-normalized data in the database.
238
+ */
239
+ mergeProject(sourceProjectId: string, targetProjectId: string): {
240
+ observationsMoved: number;
241
+ sessionsMoved: number;
242
+ journalMoved: number;
243
+ promptsMoved: number;
244
+ };
245
+ /**
246
+ * Normalize all project_id values in the database.
247
+ * After normalization, merges projects that became identical.
248
+ * Returns details of what was changed.
249
+ */
250
+ normalizeAllProjectIds(): {
251
+ normalized: number;
252
+ merged: Array<{
253
+ from: string;
254
+ to: string;
255
+ observationsMoved: number;
256
+ }>;
257
+ };
258
+ getDashboardStats(): Promise<{
259
+ totalObservations: number;
260
+ activeObservations: number;
261
+ deletedObservations: number;
262
+ byType: Record<string, number>;
263
+ byProject: Record<string, number>;
264
+ activeSessions: number;
265
+ recentObservations: Observation[];
266
+ }>;
267
+ exportToJson(options?: {
268
+ projectId?: string;
269
+ includeSessions?: boolean;
270
+ }): Promise<ExportData>;
271
+ importFromJson(data: ImportData, options?: ImportOptions): Promise<ImportResult>;
272
+ private findObservationByUuid;
273
+ resetFull(): Promise<{
274
+ deleted: number;
275
+ }>;
276
+ resetProject(projectId: string): Promise<{
277
+ deleted: number;
278
+ orphanSessions: number;
279
+ }>;
280
+ countByProject(projectId: string): Promise<{
281
+ observations: number;
282
+ prompts: number;
283
+ sessions: number;
284
+ }>;
285
+ writeJournal(data: WriteJournalParams): Promise<JournalEntry>;
286
+ readJournal(id: number): Promise<JournalEntry | null>;
287
+ searchJournal(params: JournalSearchParams): Promise<JournalSearchResult>;
288
+ invalidateJournal(id: number, supersededById: number): Promise<void>;
289
+ private mapJournalEntry;
290
+ listPrompts(params?: ListPromptsParams): Promise<ListPromptsResult>;
291
+ exportProject(projectId: string): Promise<FullExportData>;
292
+ importProject(data: FullExportData, options?: FullImportOptions): Promise<FullImportResult>;
63
293
  close(): void;
64
294
  }
65
295
  //# sourceMappingURL=MemoryEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryEngine.d.ts","sourceRoot":"","sources":["../src/MemoryEngine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAM/D,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAsB;gBAE3B,MAAM,GAAE,MAA4B;IA0BhD,OAAO,CAAC,kBAAkB;IAY1B,SAAS,IAAI,OAAO;IAIpB,YAAY,IAAI,KAAK,GAAG,IAAI;IAI5B,eAAe,IAAI,MAAM;IAIzB,OAAO,CAAC,kBAAkB;IAoE1B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,WAAW;IAMb,iBAAiB,CAAC,IAAI,EAAE;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,WAAW,CAAC;IA+BlB,iBAAiB,CACrB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GACA,OAAO,CAAC,WAAW,CAAC;IAsCjB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIvD,MAAM,CAAC,MAAM,EAAE;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAgDrD,aAAa,CAAC,IAAI,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBd,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAI/C,UAAU,CAAC,IAAI,EAAE;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,MAAM,CAAC;YAoBL,kBAAkB;YAMlB,cAAc;YAMd,aAAa;IAM3B,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,SAAS;IAqBjB,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"MemoryEngine.d.ts","sourceRoot":"","sources":["../src/MemoryEngine.ts"],"names":[],"mappings":"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"}