claude-conversation-memory-mcp 0.6.0 → 1.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.
- package/dist/ConversationMemory.d.ts +151 -10
- package/dist/ConversationMemory.d.ts.map +1 -1
- package/dist/ConversationMemory.js +127 -10
- package/dist/ConversationMemory.js.map +1 -1
- package/dist/cache/QueryCache.d.ts +215 -0
- package/dist/cache/QueryCache.d.ts.map +1 -0
- package/dist/cache/QueryCache.js +294 -0
- package/dist/cache/QueryCache.js.map +1 -0
- package/dist/parsers/ConversationParser.d.ts +62 -3
- package/dist/parsers/ConversationParser.d.ts.map +1 -1
- package/dist/parsers/ConversationParser.js +50 -3
- package/dist/parsers/ConversationParser.js.map +1 -1
- package/dist/parsers/DecisionExtractor.d.ts +61 -3
- package/dist/parsers/DecisionExtractor.d.ts.map +1 -1
- package/dist/parsers/DecisionExtractor.js +47 -3
- package/dist/parsers/DecisionExtractor.js.map +1 -1
- package/dist/parsers/GitIntegrator.d.ts +88 -3
- package/dist/parsers/GitIntegrator.d.ts.map +1 -1
- package/dist/parsers/GitIntegrator.js +68 -3
- package/dist/parsers/GitIntegrator.js.map +1 -1
- package/dist/parsers/MistakeExtractor.d.ts +62 -3
- package/dist/parsers/MistakeExtractor.d.ts.map +1 -1
- package/dist/parsers/MistakeExtractor.js +50 -3
- package/dist/parsers/MistakeExtractor.js.map +1 -1
- package/dist/parsers/RequirementsExtractor.d.ts +95 -4
- package/dist/parsers/RequirementsExtractor.d.ts.map +1 -1
- package/dist/parsers/RequirementsExtractor.js +73 -4
- package/dist/parsers/RequirementsExtractor.js.map +1 -1
- package/dist/storage/ConversationStorage.d.ts +271 -2
- package/dist/storage/ConversationStorage.d.ts.map +1 -1
- package/dist/storage/ConversationStorage.js +356 -7
- package/dist/storage/ConversationStorage.js.map +1 -1
- package/dist/tools/ToolHandlers.d.ts +525 -16
- package/dist/tools/ToolHandlers.d.ts.map +1 -1
- package/dist/tools/ToolHandlers.js +533 -24
- package/dist/tools/ToolHandlers.js.map +1 -1
- package/dist/utils/Logger.d.ts +67 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +119 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/constants.d.ts +75 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +105 -0
- package/dist/utils/constants.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,14 +1,130 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Conversation Storage Layer
|
|
3
|
-
*
|
|
2
|
+
* Conversation Storage Layer - CRUD operations for all conversation-related data.
|
|
3
|
+
*
|
|
4
|
+
* This class provides the data access layer for the conversation-memory system.
|
|
5
|
+
* It handles storing and retrieving conversations, messages, tool uses, decisions,
|
|
6
|
+
* mistakes, requirements, and git commits.
|
|
7
|
+
*
|
|
8
|
+
* All store operations use transactions for atomicity and performance.
|
|
9
|
+
* All JSON fields are automatically serialized/deserialized.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const storage = new ConversationStorage(sqliteManager);
|
|
14
|
+
* await storage.storeConversations(conversations);
|
|
15
|
+
* const conv = storage.getConversation('conv-123');
|
|
16
|
+
* const timeline = storage.getFileTimeline('src/index.ts');
|
|
17
|
+
* ```
|
|
4
18
|
*/
|
|
5
19
|
import { sanitizeForLike } from "../utils/sanitization.js";
|
|
20
|
+
import { QueryCache } from "../cache/QueryCache.js";
|
|
21
|
+
/**
|
|
22
|
+
* Data access layer for conversation memory storage.
|
|
23
|
+
*
|
|
24
|
+
* Provides CRUD operations for all conversation-related entities using SQLite.
|
|
25
|
+
* Supports optional caching for frequently accessed queries.
|
|
26
|
+
*/
|
|
6
27
|
export class ConversationStorage {
|
|
7
28
|
db;
|
|
29
|
+
cache = null;
|
|
30
|
+
/**
|
|
31
|
+
* Create a new ConversationStorage instance.
|
|
32
|
+
*
|
|
33
|
+
* @param db - SQLiteManager instance for database access
|
|
34
|
+
*/
|
|
8
35
|
constructor(db) {
|
|
9
36
|
this.db = db;
|
|
10
37
|
}
|
|
38
|
+
// ==================== Cache Management ====================
|
|
39
|
+
/**
|
|
40
|
+
* Enable query result caching.
|
|
41
|
+
*
|
|
42
|
+
* Caching improves performance for frequently accessed queries by storing
|
|
43
|
+
* results in memory. Cache is automatically invalidated when data changes.
|
|
44
|
+
*
|
|
45
|
+
* @param config - Cache configuration (maxSize and ttlMs)
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* storage.enableCache({ maxSize: 100, ttlMs: 300000 });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
enableCache(config) {
|
|
53
|
+
this.cache = new QueryCache(config);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Disable query result caching.
|
|
57
|
+
*
|
|
58
|
+
* Clears all cached data and stops caching new queries.
|
|
59
|
+
*/
|
|
60
|
+
disableCache() {
|
|
61
|
+
this.cache = null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if caching is enabled.
|
|
65
|
+
*
|
|
66
|
+
* @returns True if caching is enabled
|
|
67
|
+
*/
|
|
68
|
+
isCacheEnabled() {
|
|
69
|
+
return this.cache !== null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Clear all cached query results.
|
|
73
|
+
*
|
|
74
|
+
* Clears the cache but keeps caching enabled.
|
|
75
|
+
*/
|
|
76
|
+
clearCache() {
|
|
77
|
+
if (this.cache) {
|
|
78
|
+
this.cache.clear();
|
|
79
|
+
this.cache.resetStats();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get cache statistics.
|
|
84
|
+
*
|
|
85
|
+
* Returns performance metrics including hits, misses, hit rate, and evictions.
|
|
86
|
+
*
|
|
87
|
+
* @returns Cache statistics or null if caching is disabled
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const stats = storage.getCacheStats();
|
|
92
|
+
* if (stats) {
|
|
93
|
+
* console.log(`Hit rate: ${(stats.hitRate * 100).toFixed(1)}%`);
|
|
94
|
+
* }
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
getCacheStats() {
|
|
98
|
+
return this.cache ? this.cache.getStats() : null;
|
|
99
|
+
}
|
|
11
100
|
// ==================== Conversations ====================
|
|
101
|
+
/**
|
|
102
|
+
* Store conversations in the database.
|
|
103
|
+
*
|
|
104
|
+
* Uses INSERT OR REPLACE to handle both new and updated conversations.
|
|
105
|
+
* All operations are performed in a single transaction for atomicity.
|
|
106
|
+
*
|
|
107
|
+
* @param conversations - Array of conversation objects to store
|
|
108
|
+
* @returns Promise that resolves when all conversations are stored
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* await storage.storeConversations([
|
|
113
|
+
* {
|
|
114
|
+
* id: 'conv-123',
|
|
115
|
+
* project_path: '/path/to/project',
|
|
116
|
+
* first_message_at: Date.now(),
|
|
117
|
+
* last_message_at: Date.now(),
|
|
118
|
+
* message_count: 42,
|
|
119
|
+
* git_branch: 'main',
|
|
120
|
+
* claude_version: '3.5',
|
|
121
|
+
* metadata: {},
|
|
122
|
+
* created_at: Date.now(),
|
|
123
|
+
* updated_at: Date.now()
|
|
124
|
+
* }
|
|
125
|
+
* ]);
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
12
128
|
async storeConversations(conversations) {
|
|
13
129
|
const stmt = this.db.prepare(`
|
|
14
130
|
INSERT OR REPLACE INTO conversations
|
|
@@ -19,23 +135,79 @@ export class ConversationStorage {
|
|
|
19
135
|
this.db.transaction(() => {
|
|
20
136
|
for (const conv of conversations) {
|
|
21
137
|
stmt.run(conv.id, conv.project_path, conv.first_message_at, conv.last_message_at, conv.message_count, conv.git_branch, conv.claude_version, JSON.stringify(conv.metadata), conv.created_at, conv.updated_at);
|
|
138
|
+
// Invalidate cache for this conversation
|
|
139
|
+
if (this.cache) {
|
|
140
|
+
this.cache.delete(`conversation:${conv.id}`);
|
|
141
|
+
}
|
|
22
142
|
}
|
|
23
143
|
});
|
|
24
144
|
console.log(`✓ Stored ${conversations.length} conversations`);
|
|
25
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Retrieve a single conversation by ID.
|
|
148
|
+
*
|
|
149
|
+
* @param id - Conversation ID to retrieve
|
|
150
|
+
* @returns Conversation object if found, null otherwise
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const conv = storage.getConversation('conv-123');
|
|
155
|
+
* if (conv) {
|
|
156
|
+
* console.log(`${conv.message_count} messages on ${conv.git_branch}`);
|
|
157
|
+
* }
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
26
160
|
getConversation(id) {
|
|
161
|
+
const cacheKey = `conversation:${id}`;
|
|
162
|
+
// Check cache first
|
|
163
|
+
if (this.cache) {
|
|
164
|
+
const cached = this.cache.get(cacheKey);
|
|
165
|
+
if (cached !== undefined) {
|
|
166
|
+
return cached;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
27
169
|
const row = this.db
|
|
28
170
|
.prepare("SELECT * FROM conversations WHERE id = ?")
|
|
29
171
|
.get(id);
|
|
30
172
|
if (!row) {
|
|
173
|
+
// Cache null result to avoid repeated queries
|
|
174
|
+
this.cache?.set(cacheKey, null);
|
|
31
175
|
return null;
|
|
32
176
|
}
|
|
33
|
-
|
|
177
|
+
const result = {
|
|
34
178
|
...row,
|
|
35
179
|
metadata: JSON.parse(row.metadata || "{}"),
|
|
36
180
|
};
|
|
181
|
+
// Cache the result
|
|
182
|
+
this.cache?.set(cacheKey, result);
|
|
183
|
+
return result;
|
|
37
184
|
}
|
|
38
185
|
// ==================== Messages ====================
|
|
186
|
+
/**
|
|
187
|
+
* Store messages in the database.
|
|
188
|
+
*
|
|
189
|
+
* Stores all messages from conversations including content, metadata, and relationships.
|
|
190
|
+
* Uses INSERT OR REPLACE for idempotent storage.
|
|
191
|
+
*
|
|
192
|
+
* @param messages - Array of message objects to store
|
|
193
|
+
* @returns Promise that resolves when all messages are stored
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* await storage.storeMessages([
|
|
198
|
+
* {
|
|
199
|
+
* id: 'msg-123',
|
|
200
|
+
* conversation_id: 'conv-123',
|
|
201
|
+
* message_type: 'text',
|
|
202
|
+
* role: 'user',
|
|
203
|
+
* content: 'Hello',
|
|
204
|
+
* timestamp: Date.now(),
|
|
205
|
+
* is_sidechain: false,
|
|
206
|
+
* metadata: {}
|
|
207
|
+
* }
|
|
208
|
+
* ]);
|
|
209
|
+
* ```
|
|
210
|
+
*/
|
|
39
211
|
async storeMessages(messages) {
|
|
40
212
|
const stmt = this.db.prepare(`
|
|
41
213
|
INSERT OR REPLACE INTO messages
|
|
@@ -51,6 +223,14 @@ export class ConversationStorage {
|
|
|
51
223
|
console.log(`✓ Stored ${messages.length} messages`);
|
|
52
224
|
}
|
|
53
225
|
// ==================== Tool Uses ====================
|
|
226
|
+
/**
|
|
227
|
+
* Store tool use records in the database.
|
|
228
|
+
*
|
|
229
|
+
* Records all tool invocations from assistant messages.
|
|
230
|
+
*
|
|
231
|
+
* @param toolUses - Array of tool use objects
|
|
232
|
+
* @returns Promise that resolves when stored
|
|
233
|
+
*/
|
|
54
234
|
async storeToolUses(toolUses) {
|
|
55
235
|
const stmt = this.db.prepare(`
|
|
56
236
|
INSERT OR REPLACE INTO tool_uses
|
|
@@ -65,6 +245,14 @@ export class ConversationStorage {
|
|
|
65
245
|
console.log(`✓ Stored ${toolUses.length} tool uses`);
|
|
66
246
|
}
|
|
67
247
|
// ==================== Tool Results ====================
|
|
248
|
+
/**
|
|
249
|
+
* Store tool execution results in the database.
|
|
250
|
+
*
|
|
251
|
+
* Records the output/results from tool invocations.
|
|
252
|
+
*
|
|
253
|
+
* @param toolResults - Array of tool result objects
|
|
254
|
+
* @returns Promise that resolves when stored
|
|
255
|
+
*/
|
|
68
256
|
async storeToolResults(toolResults) {
|
|
69
257
|
const stmt = this.db.prepare(`
|
|
70
258
|
INSERT OR REPLACE INTO tool_results
|
|
@@ -79,6 +267,14 @@ export class ConversationStorage {
|
|
|
79
267
|
console.log(`✓ Stored ${toolResults.length} tool results`);
|
|
80
268
|
}
|
|
81
269
|
// ==================== File Edits ====================
|
|
270
|
+
/**
|
|
271
|
+
* Store file edit records in the database.
|
|
272
|
+
*
|
|
273
|
+
* Records all file modifications made during conversations.
|
|
274
|
+
*
|
|
275
|
+
* @param fileEdits - Array of file edit objects
|
|
276
|
+
* @returns Promise that resolves when stored
|
|
277
|
+
*/
|
|
82
278
|
async storeFileEdits(fileEdits) {
|
|
83
279
|
const stmt = this.db.prepare(`
|
|
84
280
|
INSERT OR REPLACE INTO file_edits
|
|
@@ -89,16 +285,47 @@ export class ConversationStorage {
|
|
|
89
285
|
this.db.transaction(() => {
|
|
90
286
|
for (const edit of fileEdits) {
|
|
91
287
|
stmt.run(edit.id, edit.conversation_id, edit.file_path, edit.message_id, edit.backup_version || null, edit.backup_time || null, edit.snapshot_timestamp, JSON.stringify(edit.metadata));
|
|
288
|
+
// Invalidate all caches for this file
|
|
289
|
+
if (this.cache) {
|
|
290
|
+
this.cache.delete(`edits:${edit.file_path}`);
|
|
291
|
+
this.cache.delete(`timeline:${edit.file_path}`);
|
|
292
|
+
}
|
|
92
293
|
}
|
|
93
294
|
});
|
|
94
295
|
console.log(`✓ Stored ${fileEdits.length} file edits`);
|
|
95
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Retrieve all edits for a specific file.
|
|
299
|
+
*
|
|
300
|
+
* @param filePath - Path to the file
|
|
301
|
+
* @returns Array of file edits, ordered by timestamp (most recent first)
|
|
302
|
+
*/
|
|
96
303
|
getFileEdits(filePath) {
|
|
97
|
-
|
|
304
|
+
const cacheKey = `edits:${filePath}`;
|
|
305
|
+
// Check cache first
|
|
306
|
+
if (this.cache) {
|
|
307
|
+
const cached = this.cache.get(cacheKey);
|
|
308
|
+
if (cached !== undefined) {
|
|
309
|
+
return cached;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
const result = this.db
|
|
98
313
|
.prepare("SELECT * FROM file_edits WHERE file_path = ? ORDER BY snapshot_timestamp DESC")
|
|
99
314
|
.all(filePath);
|
|
315
|
+
// Cache the result
|
|
316
|
+
this.cache?.set(cacheKey, result);
|
|
317
|
+
return result;
|
|
100
318
|
}
|
|
101
319
|
// ==================== Thinking Blocks ====================
|
|
320
|
+
/**
|
|
321
|
+
* Store thinking blocks in the database.
|
|
322
|
+
*
|
|
323
|
+
* Thinking blocks contain Claude's internal reasoning. They can be large and
|
|
324
|
+
* are optionally indexed based on the includeThinking flag.
|
|
325
|
+
*
|
|
326
|
+
* @param blocks - Array of thinking block objects
|
|
327
|
+
* @returns Promise that resolves when stored
|
|
328
|
+
*/
|
|
102
329
|
async storeThinkingBlocks(blocks) {
|
|
103
330
|
const stmt = this.db.prepare(`
|
|
104
331
|
INSERT OR REPLACE INTO thinking_blocks
|
|
@@ -113,6 +340,14 @@ export class ConversationStorage {
|
|
|
113
340
|
console.log(`✓ Stored ${blocks.length} thinking blocks`);
|
|
114
341
|
}
|
|
115
342
|
// ==================== Decisions ====================
|
|
343
|
+
/**
|
|
344
|
+
* Store extracted decisions in the database.
|
|
345
|
+
*
|
|
346
|
+
* Decisions include architectural choices, technical decisions, and their rationale.
|
|
347
|
+
*
|
|
348
|
+
* @param decisions - Array of decision objects
|
|
349
|
+
* @returns Promise that resolves when stored
|
|
350
|
+
*/
|
|
116
351
|
async storeDecisions(decisions) {
|
|
117
352
|
const stmt = this.db.prepare(`
|
|
118
353
|
INSERT OR REPLACE INTO decisions
|
|
@@ -128,20 +363,46 @@ export class ConversationStorage {
|
|
|
128
363
|
});
|
|
129
364
|
console.log(`✓ Stored ${decisions.length} decisions`);
|
|
130
365
|
}
|
|
366
|
+
/**
|
|
367
|
+
* Retrieve all decisions related to a specific file.
|
|
368
|
+
*
|
|
369
|
+
* @param filePath - Path to the file
|
|
370
|
+
* @returns Array of decisions that reference this file
|
|
371
|
+
* @internal
|
|
372
|
+
*/
|
|
131
373
|
getDecisionsForFile(filePath) {
|
|
374
|
+
const cacheKey = `decisions:${filePath}`;
|
|
375
|
+
// Check cache first
|
|
376
|
+
if (this.cache) {
|
|
377
|
+
const cached = this.cache.get(cacheKey);
|
|
378
|
+
if (cached !== undefined) {
|
|
379
|
+
return cached;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
132
382
|
const sanitized = sanitizeForLike(filePath);
|
|
133
383
|
const rows = this.db
|
|
134
384
|
.prepare("SELECT * FROM decisions WHERE related_files LIKE ? ESCAPE '\\' ORDER BY timestamp DESC")
|
|
135
385
|
.all(`%"${sanitized}"%`);
|
|
136
|
-
|
|
386
|
+
const result = rows.map((row) => ({
|
|
137
387
|
...row,
|
|
138
388
|
alternatives_considered: JSON.parse(row.alternatives_considered || "[]"),
|
|
139
389
|
rejected_reasons: JSON.parse(row.rejected_reasons || "{}"),
|
|
140
390
|
related_files: JSON.parse(row.related_files || "[]"),
|
|
141
391
|
related_commits: JSON.parse(row.related_commits || "[]"),
|
|
142
392
|
}));
|
|
393
|
+
// Cache the result
|
|
394
|
+
this.cache?.set(cacheKey, result);
|
|
395
|
+
return result;
|
|
143
396
|
}
|
|
144
397
|
// ==================== Git Commits ====================
|
|
398
|
+
/**
|
|
399
|
+
* Store git commit records linked to conversations.
|
|
400
|
+
*
|
|
401
|
+
* Links git commits to the conversations where they were made or discussed.
|
|
402
|
+
*
|
|
403
|
+
* @param commits - Array of git commit objects
|
|
404
|
+
* @returns Promise that resolves when stored
|
|
405
|
+
*/
|
|
145
406
|
async storeGitCommits(commits) {
|
|
146
407
|
const stmt = this.db.prepare(`
|
|
147
408
|
INSERT OR REPLACE INTO git_commits
|
|
@@ -157,17 +418,36 @@ export class ConversationStorage {
|
|
|
157
418
|
console.log(`✓ Stored ${commits.length} git commits`);
|
|
158
419
|
}
|
|
159
420
|
getCommitsForFile(filePath) {
|
|
421
|
+
const cacheKey = `commits:${filePath}`;
|
|
422
|
+
// Check cache first
|
|
423
|
+
if (this.cache) {
|
|
424
|
+
const cached = this.cache.get(cacheKey);
|
|
425
|
+
if (cached !== undefined) {
|
|
426
|
+
return cached;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
160
429
|
const sanitized = sanitizeForLike(filePath);
|
|
161
430
|
const rows = this.db
|
|
162
431
|
.prepare("SELECT * FROM git_commits WHERE files_changed LIKE ? ESCAPE '\\' ORDER BY timestamp DESC")
|
|
163
432
|
.all(`%"${sanitized}"%`);
|
|
164
|
-
|
|
433
|
+
const result = rows.map((row) => ({
|
|
165
434
|
...row,
|
|
166
435
|
files_changed: JSON.parse(row.files_changed || "[]"),
|
|
167
436
|
metadata: JSON.parse(row.metadata || "{}"),
|
|
168
437
|
}));
|
|
438
|
+
// Cache the result
|
|
439
|
+
this.cache?.set(cacheKey, result);
|
|
440
|
+
return result;
|
|
169
441
|
}
|
|
170
442
|
// ==================== Mistakes ====================
|
|
443
|
+
/**
|
|
444
|
+
* Store extracted mistakes in the database.
|
|
445
|
+
*
|
|
446
|
+
* Mistakes include errors, bugs, and wrong approaches that were later corrected.
|
|
447
|
+
*
|
|
448
|
+
* @param mistakes - Array of mistake objects
|
|
449
|
+
* @returns Promise that resolves when stored
|
|
450
|
+
*/
|
|
171
451
|
async storeMistakes(mistakes) {
|
|
172
452
|
const stmt = this.db.prepare(`
|
|
173
453
|
INSERT OR REPLACE INTO mistakes
|
|
@@ -183,6 +463,14 @@ export class ConversationStorage {
|
|
|
183
463
|
console.log(`✓ Stored ${mistakes.length} mistakes`);
|
|
184
464
|
}
|
|
185
465
|
// ==================== Requirements ====================
|
|
466
|
+
/**
|
|
467
|
+
* Store extracted requirements in the database.
|
|
468
|
+
*
|
|
469
|
+
* Requirements include dependencies, constraints, and specifications for components.
|
|
470
|
+
*
|
|
471
|
+
* @param requirements - Array of requirement objects
|
|
472
|
+
* @returns Promise that resolves when stored
|
|
473
|
+
*/
|
|
186
474
|
async storeRequirements(requirements) {
|
|
187
475
|
const stmt = this.db.prepare(`
|
|
188
476
|
INSERT OR REPLACE INTO requirements
|
|
@@ -198,6 +486,14 @@ export class ConversationStorage {
|
|
|
198
486
|
console.log(`✓ Stored ${requirements.length} requirements`);
|
|
199
487
|
}
|
|
200
488
|
// ==================== Validations ====================
|
|
489
|
+
/**
|
|
490
|
+
* Store validation records in the database.
|
|
491
|
+
*
|
|
492
|
+
* Validations capture test results and performance data from conversations.
|
|
493
|
+
*
|
|
494
|
+
* @param validations - Array of validation objects
|
|
495
|
+
* @returns Promise that resolves when stored
|
|
496
|
+
*/
|
|
201
497
|
async storeValidations(validations) {
|
|
202
498
|
const stmt = this.db.prepare(`
|
|
203
499
|
INSERT OR REPLACE INTO validations
|
|
@@ -213,18 +509,71 @@ export class ConversationStorage {
|
|
|
213
509
|
console.log(`✓ Stored ${validations.length} validations`);
|
|
214
510
|
}
|
|
215
511
|
// ==================== Queries ====================
|
|
512
|
+
/**
|
|
513
|
+
* Get the complete timeline of changes to a file.
|
|
514
|
+
*
|
|
515
|
+
* Combines file edits, git commits, and related decisions into a single timeline.
|
|
516
|
+
* This is a key method used by tools like checkBeforeModify and getFileEvolution.
|
|
517
|
+
*
|
|
518
|
+
* @param filePath - Path to the file
|
|
519
|
+
* @returns Object containing:
|
|
520
|
+
* - `file_path`: The file path queried
|
|
521
|
+
* - `edits`: All file edit records
|
|
522
|
+
* - `commits`: All git commits affecting this file
|
|
523
|
+
* - `decisions`: All decisions related to this file
|
|
524
|
+
*
|
|
525
|
+
* @example
|
|
526
|
+
* ```typescript
|
|
527
|
+
* const timeline = storage.getFileTimeline('src/index.ts');
|
|
528
|
+
* console.log(`${timeline.edits.length} edits`);
|
|
529
|
+
* console.log(`${timeline.commits.length} commits`);
|
|
530
|
+
* console.log(`${timeline.decisions.length} decisions`);
|
|
531
|
+
* ```
|
|
532
|
+
*/
|
|
216
533
|
getFileTimeline(filePath) {
|
|
534
|
+
const cacheKey = `timeline:${filePath}`;
|
|
535
|
+
// Check cache first
|
|
536
|
+
if (this.cache) {
|
|
537
|
+
const cached = this.cache.get(cacheKey);
|
|
538
|
+
if (cached !== undefined) {
|
|
539
|
+
return cached;
|
|
540
|
+
}
|
|
541
|
+
}
|
|
217
542
|
// Combine file edits, commits, and decisions
|
|
218
543
|
const edits = this.getFileEdits(filePath);
|
|
219
544
|
const commits = this.getCommitsForFile(filePath);
|
|
220
545
|
const decisions = this.getDecisionsForFile(filePath);
|
|
221
|
-
|
|
546
|
+
const result = {
|
|
222
547
|
file_path: filePath,
|
|
223
548
|
edits,
|
|
224
549
|
commits,
|
|
225
550
|
decisions,
|
|
226
551
|
};
|
|
552
|
+
// Cache the result
|
|
553
|
+
this.cache?.set(cacheKey, result);
|
|
554
|
+
return result;
|
|
227
555
|
}
|
|
556
|
+
/**
|
|
557
|
+
* Get statistics about the indexed conversation data.
|
|
558
|
+
*
|
|
559
|
+
* Returns counts of all major entity types stored in the database.
|
|
560
|
+
* Used for displaying indexing results and system health checks.
|
|
561
|
+
*
|
|
562
|
+
* @returns Object containing counts for:
|
|
563
|
+
* - `conversations`: Total conversations indexed
|
|
564
|
+
* - `messages`: Total messages stored
|
|
565
|
+
* - `decisions`: Total decisions extracted
|
|
566
|
+
* - `mistakes`: Total mistakes documented
|
|
567
|
+
* - `git_commits`: Total git commits linked
|
|
568
|
+
*
|
|
569
|
+
* @example
|
|
570
|
+
* ```typescript
|
|
571
|
+
* const stats = storage.getStats();
|
|
572
|
+
* console.log(`Indexed ${stats.conversations.count} conversations`);
|
|
573
|
+
* console.log(`Extracted ${stats.decisions.count} decisions`);
|
|
574
|
+
* console.log(`Linked ${stats.git_commits.count} commits`);
|
|
575
|
+
* ```
|
|
576
|
+
*/
|
|
228
577
|
getStats() {
|
|
229
578
|
const stats = {
|
|
230
579
|
conversations: this.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationStorage.js","sourceRoot":"","sources":["../../src/storage/ConversationStorage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConversationStorage.js","sourceRoot":"","sources":["../../src/storage/ConversationStorage.ts"],"names":[],"mappings":"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"}
|