claude-conversation-memory-mcp 0.2.5 → 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/.claude-memory-config.example.json +8 -0
- package/.claude-memory-config.example.jsonc +50 -0
- package/README.md +203 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +260 -20
- package/dist/cli/commands.js.map +1 -1
- package/dist/embeddings/ModelRegistry.d.ts +48 -0
- package/dist/embeddings/ModelRegistry.d.ts.map +1 -0
- package/dist/embeddings/ModelRegistry.js +170 -0
- package/dist/embeddings/ModelRegistry.js.map +1 -0
- package/dist/embeddings/providers/OllamaEmbeddings.d.ts +1 -1
- package/dist/embeddings/providers/OllamaEmbeddings.d.ts.map +1 -1
- package/dist/embeddings/providers/OllamaEmbeddings.js +7 -14
- package/dist/embeddings/providers/OllamaEmbeddings.js.map +1 -1
- package/dist/embeddings/providers/OpenAIEmbeddings.d.ts +1 -1
- package/dist/embeddings/providers/OpenAIEmbeddings.d.ts.map +1 -1
- package/dist/embeddings/providers/OpenAIEmbeddings.js +9 -7
- package/dist/embeddings/providers/OpenAIEmbeddings.js.map +1 -1
- package/dist/embeddings/providers/TransformersEmbeddings.d.ts +1 -1
- package/dist/embeddings/providers/TransformersEmbeddings.d.ts.map +1 -1
- package/dist/embeddings/providers/TransformersEmbeddings.js +9 -8
- package/dist/embeddings/providers/TransformersEmbeddings.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +6 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/tools/ToolDefinitions.d.ts +46 -0
- package/dist/tools/ToolDefinitions.d.ts.map +1 -1
- package/dist/tools/ToolDefinitions.js +46 -0
- package/dist/tools/ToolDefinitions.js.map +1 -1
- package/dist/tools/ToolHandlers.d.ts +11 -2
- package/dist/tools/ToolHandlers.d.ts.map +1 -1
- package/dist/tools/ToolHandlers.js +86 -2
- package/dist/tools/ToolHandlers.js.map +1 -1
- package/dist/types/ToolTypes.d.ts +37 -0
- package/dist/types/ToolTypes.d.ts.map +1 -1
- package/dist/utils/ProjectMigration.d.ts +82 -0
- package/dist/utils/ProjectMigration.d.ts.map +1 -0
- package/dist/utils/ProjectMigration.js +413 -0
- package/dist/utils/ProjectMigration.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Migration Utility
|
|
3
|
+
* Handles migration of conversation history when project directories are renamed
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readdirSync, mkdirSync, copyFileSync } from "fs";
|
|
6
|
+
import { join } from "path";
|
|
7
|
+
import { homedir } from "os";
|
|
8
|
+
import Database from "better-sqlite3";
|
|
9
|
+
import { pathToProjectFolderName } from "./sanitization.js";
|
|
10
|
+
export class ProjectMigration {
|
|
11
|
+
projectsDir;
|
|
12
|
+
constructor(_sqliteManager, projectsDir) {
|
|
13
|
+
// Parameter kept for backwards compatibility but not used
|
|
14
|
+
// Allow override of projects directory for testing
|
|
15
|
+
this.projectsDir = projectsDir || join(homedir(), ".claude", "projects");
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get the projects directory (for use by other classes)
|
|
19
|
+
*/
|
|
20
|
+
getProjectsDir() {
|
|
21
|
+
return this.projectsDir;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Discover old conversation folders using combined approach
|
|
25
|
+
*/
|
|
26
|
+
async discoverOldFolders(currentProjectPath) {
|
|
27
|
+
const candidates = [];
|
|
28
|
+
const projectsDir = this.projectsDir;
|
|
29
|
+
if (!existsSync(projectsDir)) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
const folders = readdirSync(projectsDir);
|
|
33
|
+
for (const folder of folders) {
|
|
34
|
+
const folderPath = join(projectsDir, folder);
|
|
35
|
+
const dbPath = join(folderPath, ".claude-conversations-memory.db");
|
|
36
|
+
let storedPath = null;
|
|
37
|
+
let stats = { conversations: 0, messages: 0, lastActivity: null };
|
|
38
|
+
let pathScore = 0;
|
|
39
|
+
// Strategy 1: Check database for stored project_path
|
|
40
|
+
if (existsSync(dbPath)) {
|
|
41
|
+
try {
|
|
42
|
+
const db = new Database(dbPath, { readonly: true });
|
|
43
|
+
// Get stored project path
|
|
44
|
+
const pathRow = db
|
|
45
|
+
.prepare("SELECT project_path FROM conversations LIMIT 1")
|
|
46
|
+
.get();
|
|
47
|
+
storedPath = pathRow?.project_path || null;
|
|
48
|
+
// Get statistics
|
|
49
|
+
const statsRow = db.prepare(`
|
|
50
|
+
SELECT
|
|
51
|
+
COUNT(DISTINCT id) as conversations,
|
|
52
|
+
MAX(last_message_at) as last_activity
|
|
53
|
+
FROM conversations
|
|
54
|
+
`).get();
|
|
55
|
+
const messageCount = db
|
|
56
|
+
.prepare("SELECT COUNT(*) as count FROM messages")
|
|
57
|
+
.get();
|
|
58
|
+
stats = {
|
|
59
|
+
conversations: statsRow?.conversations || 0,
|
|
60
|
+
messages: messageCount?.count || 0,
|
|
61
|
+
lastActivity: statsRow?.last_activity || null
|
|
62
|
+
};
|
|
63
|
+
db.close();
|
|
64
|
+
// Score based on path match
|
|
65
|
+
if (storedPath) {
|
|
66
|
+
pathScore = this.scorePath(currentProjectPath, storedPath);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (_error) {
|
|
70
|
+
// Database exists but can't read - still a candidate
|
|
71
|
+
pathScore = 10;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Strategy 2: Folder name similarity
|
|
75
|
+
const expectedFolder = pathToProjectFolderName(currentProjectPath);
|
|
76
|
+
const folderScore = this.scoreFolderName(expectedFolder, folder);
|
|
77
|
+
// Strategy 3: Check for JSONL files
|
|
78
|
+
let jsonlCount = 0;
|
|
79
|
+
try {
|
|
80
|
+
jsonlCount = readdirSync(folderPath).filter(f => f.endsWith(".jsonl")).length;
|
|
81
|
+
}
|
|
82
|
+
catch (_error) {
|
|
83
|
+
// Can't read folder
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
// Calculate overall score
|
|
87
|
+
const score = this.calculateOverallScore({
|
|
88
|
+
pathScore,
|
|
89
|
+
folderScore,
|
|
90
|
+
hasDatabase: existsSync(dbPath),
|
|
91
|
+
jsonlCount
|
|
92
|
+
});
|
|
93
|
+
if (score > 0 || storedPath !== null) {
|
|
94
|
+
candidates.push({
|
|
95
|
+
folderPath,
|
|
96
|
+
folderName: folder,
|
|
97
|
+
storedProjectPath: storedPath,
|
|
98
|
+
stats,
|
|
99
|
+
score
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Sort by score (highest first)
|
|
104
|
+
return candidates.sort((a, b) => b.score - a.score);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Validate migration is safe and possible
|
|
108
|
+
*/
|
|
109
|
+
validateMigration(sourceFolder, targetFolder, mode = "migrate") {
|
|
110
|
+
const errors = [];
|
|
111
|
+
// Check source exists
|
|
112
|
+
if (!existsSync(sourceFolder)) {
|
|
113
|
+
errors.push("Source folder does not exist");
|
|
114
|
+
return { valid: false, errors };
|
|
115
|
+
}
|
|
116
|
+
// Check source has JSONL files
|
|
117
|
+
const sourceFiles = readdirSync(sourceFolder).filter(f => f.endsWith(".jsonl"));
|
|
118
|
+
if (sourceFiles.length === 0) {
|
|
119
|
+
errors.push("Source folder has no conversation files");
|
|
120
|
+
}
|
|
121
|
+
// Check source database is readable
|
|
122
|
+
const sourceDb = join(sourceFolder, ".claude-conversations-memory.db");
|
|
123
|
+
if (existsSync(sourceDb)) {
|
|
124
|
+
try {
|
|
125
|
+
const db = new Database(sourceDb, { readonly: true });
|
|
126
|
+
db.prepare("SELECT 1 FROM conversations LIMIT 1").get();
|
|
127
|
+
db.close();
|
|
128
|
+
}
|
|
129
|
+
catch (_error) {
|
|
130
|
+
errors.push("Source database is corrupted or unreadable");
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Check target doesn't have data (conflict detection) - ONLY for migrate mode
|
|
134
|
+
if (mode === "migrate" && existsSync(targetFolder)) {
|
|
135
|
+
const targetFiles = readdirSync(targetFolder).filter(f => f.endsWith(".jsonl"));
|
|
136
|
+
if (targetFiles.length > 0) {
|
|
137
|
+
errors.push("Target folder already has conversation data");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Get statistics if validation passed so far
|
|
141
|
+
let stats;
|
|
142
|
+
if (errors.length === 0 && existsSync(sourceDb)) {
|
|
143
|
+
try {
|
|
144
|
+
const db = new Database(sourceDb, { readonly: true });
|
|
145
|
+
const convCount = db
|
|
146
|
+
.prepare("SELECT COUNT(*) as count FROM conversations")
|
|
147
|
+
.get();
|
|
148
|
+
const msgCount = db
|
|
149
|
+
.prepare("SELECT COUNT(*) as count FROM messages")
|
|
150
|
+
.get();
|
|
151
|
+
db.close();
|
|
152
|
+
stats = {
|
|
153
|
+
conversations: convCount.count,
|
|
154
|
+
messages: msgCount.count,
|
|
155
|
+
files: sourceFiles.length
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
catch (_error) {
|
|
159
|
+
// Can't get stats, but not a blocker
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
valid: errors.length === 0,
|
|
164
|
+
errors,
|
|
165
|
+
stats
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Execute migration (copy files and update database)
|
|
170
|
+
*/
|
|
171
|
+
async executeMigration(sourceFolder, targetFolder, oldProjectPath, newProjectPath, dryRun, mode = "migrate") {
|
|
172
|
+
// Validate first
|
|
173
|
+
const validation = this.validateMigration(sourceFolder, targetFolder, mode);
|
|
174
|
+
if (!validation.valid) {
|
|
175
|
+
throw new Error(`Migration validation failed: ${validation.errors.join(", ")}`);
|
|
176
|
+
}
|
|
177
|
+
if (dryRun) {
|
|
178
|
+
return {
|
|
179
|
+
success: true,
|
|
180
|
+
filesCopied: validation.stats?.files || 0,
|
|
181
|
+
databaseUpdated: false,
|
|
182
|
+
message: "Dry run: No changes made"
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
// Create target folder
|
|
186
|
+
if (!existsSync(targetFolder)) {
|
|
187
|
+
mkdirSync(targetFolder, { recursive: true });
|
|
188
|
+
}
|
|
189
|
+
const sourceDb = join(sourceFolder, ".claude-conversations-memory.db");
|
|
190
|
+
const targetDb = join(targetFolder, ".claude-conversations-memory.db");
|
|
191
|
+
// Branch based on mode
|
|
192
|
+
if (mode === "merge") {
|
|
193
|
+
return this.executeMerge(sourceFolder, targetFolder, sourceDb, targetDb, oldProjectPath, newProjectPath);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
// Original migrate logic (replace target)
|
|
197
|
+
// Copy all JSONL files
|
|
198
|
+
const jsonlFiles = readdirSync(sourceFolder).filter(f => f.endsWith(".jsonl"));
|
|
199
|
+
let filesCopied = 0;
|
|
200
|
+
for (const file of jsonlFiles) {
|
|
201
|
+
const sourcePath = join(sourceFolder, file);
|
|
202
|
+
const targetPath = join(targetFolder, file);
|
|
203
|
+
copyFileSync(sourcePath, targetPath);
|
|
204
|
+
filesCopied++;
|
|
205
|
+
}
|
|
206
|
+
if (existsSync(sourceDb)) {
|
|
207
|
+
// Create backup
|
|
208
|
+
const backupPath = join(sourceFolder, ".claude-conversations-memory.db.bak");
|
|
209
|
+
copyFileSync(sourceDb, backupPath);
|
|
210
|
+
// Copy database
|
|
211
|
+
copyFileSync(sourceDb, targetDb);
|
|
212
|
+
// Update project_path in the copied database
|
|
213
|
+
this.updateProjectPaths(targetDb, oldProjectPath, newProjectPath);
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
success: true,
|
|
217
|
+
filesCopied,
|
|
218
|
+
databaseUpdated: true,
|
|
219
|
+
message: `Migrated ${filesCopied} conversation files`
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Execute merge (combine source into existing target)
|
|
225
|
+
*/
|
|
226
|
+
executeMerge(sourceFolder, targetFolder, sourceDb, targetDb, oldProjectPath, newProjectPath) {
|
|
227
|
+
// Copy only JSONL files that don't exist in target (skip duplicates)
|
|
228
|
+
const sourceFiles = readdirSync(sourceFolder).filter(f => f.endsWith(".jsonl"));
|
|
229
|
+
const existingFiles = existsSync(targetFolder)
|
|
230
|
+
? readdirSync(targetFolder).filter(f => f.endsWith(".jsonl"))
|
|
231
|
+
: [];
|
|
232
|
+
const existingSet = new Set(existingFiles);
|
|
233
|
+
let filesCopied = 0;
|
|
234
|
+
for (const file of sourceFiles) {
|
|
235
|
+
if (!existingSet.has(file)) {
|
|
236
|
+
const sourcePath = join(sourceFolder, file);
|
|
237
|
+
const targetPath = join(targetFolder, file);
|
|
238
|
+
copyFileSync(sourcePath, targetPath);
|
|
239
|
+
filesCopied++;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Merge databases
|
|
243
|
+
if (existsSync(sourceDb)) {
|
|
244
|
+
if (existsSync(targetDb)) {
|
|
245
|
+
// Backup target database before merge
|
|
246
|
+
const backupPath = join(targetFolder, ".claude-conversations-memory.db.bak");
|
|
247
|
+
copyFileSync(targetDb, backupPath);
|
|
248
|
+
// Merge source into target
|
|
249
|
+
this.mergeDatabase(sourceDb, targetDb, oldProjectPath, newProjectPath);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
// No target database yet, just copy
|
|
253
|
+
copyFileSync(sourceDb, targetDb);
|
|
254
|
+
this.updateProjectPaths(targetDb, oldProjectPath, newProjectPath);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return {
|
|
258
|
+
success: true,
|
|
259
|
+
filesCopied,
|
|
260
|
+
databaseUpdated: true,
|
|
261
|
+
message: `Merged ${filesCopied} new conversation files into target`
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Merge source database into target database (INSERT OR IGNORE strategy)
|
|
266
|
+
*/
|
|
267
|
+
mergeDatabase(sourceDbPath, targetDbPath, oldProjectPath, newProjectPath) {
|
|
268
|
+
// Check which tables exist BEFORE attaching
|
|
269
|
+
const source = new Database(sourceDbPath, { readonly: true });
|
|
270
|
+
const sourceTables = new Set(source.prepare("SELECT name FROM sqlite_master WHERE type='table'").all().map(row => row.name));
|
|
271
|
+
source.close();
|
|
272
|
+
const target = new Database(targetDbPath);
|
|
273
|
+
const targetTables = new Set(target.prepare("SELECT name FROM sqlite_master WHERE type='table'").all().map(row => row.name));
|
|
274
|
+
try {
|
|
275
|
+
target.exec("BEGIN TRANSACTION");
|
|
276
|
+
// Attach source database
|
|
277
|
+
target.exec(`ATTACH DATABASE '${sourceDbPath}' AS source`);
|
|
278
|
+
// Merge conversations (always exists)
|
|
279
|
+
target.exec(`
|
|
280
|
+
INSERT OR IGNORE INTO conversations
|
|
281
|
+
SELECT * FROM source.conversations
|
|
282
|
+
`);
|
|
283
|
+
// Merge other tables only if they exist in both databases
|
|
284
|
+
const tablesToMerge = [
|
|
285
|
+
"messages",
|
|
286
|
+
"tool_uses",
|
|
287
|
+
"decisions",
|
|
288
|
+
"mistakes",
|
|
289
|
+
"requirements",
|
|
290
|
+
"file_evolution",
|
|
291
|
+
"git_commits"
|
|
292
|
+
];
|
|
293
|
+
for (const table of tablesToMerge) {
|
|
294
|
+
if (sourceTables.has(table) && targetTables.has(table)) {
|
|
295
|
+
target.exec(`
|
|
296
|
+
INSERT OR IGNORE INTO ${table}
|
|
297
|
+
SELECT * FROM source.${table}
|
|
298
|
+
`);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Update project_path for newly merged conversations from source
|
|
302
|
+
const stmt = target.prepare(`
|
|
303
|
+
UPDATE conversations
|
|
304
|
+
SET project_path = ?
|
|
305
|
+
WHERE project_path = ?
|
|
306
|
+
`);
|
|
307
|
+
stmt.run(newProjectPath, oldProjectPath);
|
|
308
|
+
target.exec("COMMIT");
|
|
309
|
+
// Detach source after commit
|
|
310
|
+
target.exec("DETACH DATABASE source");
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
try {
|
|
314
|
+
target.exec("ROLLBACK");
|
|
315
|
+
}
|
|
316
|
+
catch (_rollbackError) {
|
|
317
|
+
// Rollback might fail if transaction already ended
|
|
318
|
+
}
|
|
319
|
+
throw error;
|
|
320
|
+
}
|
|
321
|
+
finally {
|
|
322
|
+
target.close();
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Update project_path in database (with transaction)
|
|
327
|
+
*/
|
|
328
|
+
updateProjectPaths(dbPath, oldPath, newPath) {
|
|
329
|
+
const db = new Database(dbPath);
|
|
330
|
+
try {
|
|
331
|
+
db.exec("BEGIN TRANSACTION");
|
|
332
|
+
const stmt = db.prepare("UPDATE conversations SET project_path = ? WHERE project_path = ?");
|
|
333
|
+
const result = stmt.run(newPath, oldPath);
|
|
334
|
+
if (result.changes === 0) {
|
|
335
|
+
throw new Error("No conversations updated - path mismatch");
|
|
336
|
+
}
|
|
337
|
+
db.exec("COMMIT");
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
db.exec("ROLLBACK");
|
|
341
|
+
db.close();
|
|
342
|
+
throw error;
|
|
343
|
+
}
|
|
344
|
+
db.close();
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Score path similarity
|
|
348
|
+
*/
|
|
349
|
+
scorePath(currentPath, oldPath) {
|
|
350
|
+
// Exact match
|
|
351
|
+
if (currentPath === oldPath) {
|
|
352
|
+
return 100;
|
|
353
|
+
}
|
|
354
|
+
// Split into components
|
|
355
|
+
const currentParts = currentPath.split("/").filter(p => p.length > 0);
|
|
356
|
+
const oldParts = oldPath.split("/").filter(p => p.length > 0);
|
|
357
|
+
// Count matching components
|
|
358
|
+
let matches = 0;
|
|
359
|
+
const minLength = Math.min(currentParts.length, oldParts.length);
|
|
360
|
+
for (let i = 0; i < minLength; i++) {
|
|
361
|
+
if (currentParts[i] === oldParts[i]) {
|
|
362
|
+
matches++;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// If only one component differs and same length, likely a rename
|
|
366
|
+
if (currentParts.length === oldParts.length &&
|
|
367
|
+
matches === currentParts.length - 1) {
|
|
368
|
+
return 80;
|
|
369
|
+
}
|
|
370
|
+
// General similarity score
|
|
371
|
+
return (matches / Math.max(currentParts.length, oldParts.length)) * 100;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Score folder name similarity
|
|
375
|
+
*/
|
|
376
|
+
scoreFolderName(expected, actual) {
|
|
377
|
+
// Exact match
|
|
378
|
+
if (expected === actual) {
|
|
379
|
+
return 100;
|
|
380
|
+
}
|
|
381
|
+
// Split by dashes
|
|
382
|
+
const expectedParts = expected.split("-").filter(p => p.length > 0);
|
|
383
|
+
const actualParts = actual.split("-").filter(p => p.length > 0);
|
|
384
|
+
// Count matching parts
|
|
385
|
+
let matches = 0;
|
|
386
|
+
const minLength = Math.min(expectedParts.length, actualParts.length);
|
|
387
|
+
for (let i = 0; i < minLength; i++) {
|
|
388
|
+
if (expectedParts[i] === actualParts[i]) {
|
|
389
|
+
matches++;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
// Calculate percentage
|
|
393
|
+
return (matches / Math.max(expectedParts.length, actualParts.length)) * 100;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Calculate overall score from multiple factors
|
|
397
|
+
*/
|
|
398
|
+
calculateOverallScore(factors) {
|
|
399
|
+
let score = 0;
|
|
400
|
+
// Path similarity is most important (0-100 points)
|
|
401
|
+
score += factors.pathScore;
|
|
402
|
+
// Folder name similarity (weighted 50%)
|
|
403
|
+
score += factors.folderScore * 0.5;
|
|
404
|
+
// Having a database is good (20 points)
|
|
405
|
+
if (factors.hasDatabase) {
|
|
406
|
+
score += 20;
|
|
407
|
+
}
|
|
408
|
+
// More JSONL files = higher confidence (1 point per file, max 30)
|
|
409
|
+
score += Math.min(factors.jsonlCount, 30);
|
|
410
|
+
return score;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=ProjectMigration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectMigration.js","sourceRoot":"","sources":["../../src/utils/ProjectMigration.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-conversation-memory-mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server for indexing and searching Claude Code conversation history with decision tracking and
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "MCP server for indexing and searching Claude Code conversation history with decision tracking, git integration, and project migration/merge",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
12
|
"README.md",
|
|
13
|
-
"LICENSE"
|
|
13
|
+
"LICENSE",
|
|
14
|
+
".claude-memory-config.example.json",
|
|
15
|
+
".claude-memory-config.example.jsonc"
|
|
14
16
|
],
|
|
15
17
|
"scripts": {
|
|
16
18
|
"build": "tsc && npm run postbuild",
|