simple-memory-mcp 1.1.3
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/LICENSE +21 -0
- package/README.md +742 -0
- package/dist/cli/arg-parser.d.ts +9 -0
- package/dist/cli/arg-parser.d.ts.map +1 -0
- package/dist/cli/arg-parser.js +68 -0
- package/dist/cli/arg-parser.js.map +1 -0
- package/dist/cli/help-generator.d.ts +8 -0
- package/dist/cli/help-generator.d.ts.map +1 -0
- package/dist/cli/help-generator.js +89 -0
- package/dist/cli/help-generator.js.map +1 -0
- package/dist/cli/index.d.ts +27 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +56 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/query-builder.d.ts +8 -0
- package/dist/cli/query-builder.d.ts.map +1 -0
- package/dist/cli/query-builder.js +63 -0
- package/dist/cli/query-builder.js.map +1 -0
- package/dist/cli/shortcuts-config.d.ts +26 -0
- package/dist/cli/shortcuts-config.d.ts.map +1 -0
- package/dist/cli/shortcuts-config.js +94 -0
- package/dist/cli/shortcuts-config.js.map +1 -0
- package/dist/graphql/resolvers.d.ts +101 -0
- package/dist/graphql/resolvers.d.ts.map +1 -0
- package/dist/graphql/resolvers.js +98 -0
- package/dist/graphql/resolvers.js.map +1 -0
- package/dist/graphql/schema.d.ts +13 -0
- package/dist/graphql/schema.d.ts.map +1 -0
- package/dist/graphql/schema.js +314 -0
- package/dist/graphql/schema.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +573 -0
- package/dist/index.js.map +1 -0
- package/dist/services/backup-service.d.ts +57 -0
- package/dist/services/backup-service.d.ts.map +1 -0
- package/dist/services/backup-service.js +191 -0
- package/dist/services/backup-service.js.map +1 -0
- package/dist/services/database-optimizer.d.ts +15 -0
- package/dist/services/database-optimizer.d.ts.map +1 -0
- package/dist/services/database-optimizer.js +45 -0
- package/dist/services/database-optimizer.js.map +1 -0
- package/dist/services/memory-service.d.ts +126 -0
- package/dist/services/memory-service.d.ts.map +1 -0
- package/dist/services/memory-service.js +862 -0
- package/dist/services/memory-service.js.map +1 -0
- package/dist/services/migrations.d.ts +17 -0
- package/dist/services/migrations.d.ts.map +1 -0
- package/dist/services/migrations.js +273 -0
- package/dist/services/migrations.js.map +1 -0
- package/dist/tests/backup-export-test.d.ts +2 -0
- package/dist/tests/backup-export-test.d.ts.map +1 -0
- package/dist/tests/backup-export-test.js +162 -0
- package/dist/tests/backup-export-test.js.map +1 -0
- package/dist/tests/backup-test.d.ts +14 -0
- package/dist/tests/backup-test.d.ts.map +1 -0
- package/dist/tests/backup-test.js +209 -0
- package/dist/tests/backup-test.js.map +1 -0
- package/dist/tests/export-import-test.d.ts +15 -0
- package/dist/tests/export-import-test.d.ts.map +1 -0
- package/dist/tests/export-import-test.js +227 -0
- package/dist/tests/export-import-test.js.map +1 -0
- package/dist/tests/graphql-comprehensive-test.d.ts +6 -0
- package/dist/tests/graphql-comprehensive-test.d.ts.map +1 -0
- package/dist/tests/graphql-comprehensive-test.js +342 -0
- package/dist/tests/graphql-comprehensive-test.js.map +1 -0
- package/dist/tests/graphql-performance-test.d.ts +6 -0
- package/dist/tests/graphql-performance-test.d.ts.map +1 -0
- package/dist/tests/graphql-performance-test.js +141 -0
- package/dist/tests/graphql-performance-test.js.map +1 -0
- package/dist/tests/graphql-test.d.ts +5 -0
- package/dist/tests/graphql-test.d.ts.map +1 -0
- package/dist/tests/graphql-test.js +47 -0
- package/dist/tests/graphql-test.js.map +1 -0
- package/dist/tests/memory-server-tests.d.ts +7 -0
- package/dist/tests/memory-server-tests.d.ts.map +1 -0
- package/dist/tests/memory-server-tests.js +466 -0
- package/dist/tests/memory-server-tests.js.map +1 -0
- package/dist/tests/migration-test.d.ts +2 -0
- package/dist/tests/migration-test.d.ts.map +1 -0
- package/dist/tests/migration-test.js +270 -0
- package/dist/tests/migration-test.js.map +1 -0
- package/dist/tests/performance-benchmark.d.ts +7 -0
- package/dist/tests/performance-benchmark.d.ts.map +1 -0
- package/dist/tests/performance-benchmark.js +234 -0
- package/dist/tests/performance-benchmark.js.map +1 -0
- package/dist/tests/performance-test.d.ts +3 -0
- package/dist/tests/performance-test.d.ts.map +1 -0
- package/dist/tests/performance-test.js +61 -0
- package/dist/tests/performance-test.js.map +1 -0
- package/dist/tests/time-range-test.d.ts +7 -0
- package/dist/tests/time-range-test.d.ts.map +1 -0
- package/dist/tests/time-range-test.js +169 -0
- package/dist/tests/time-range-test.js.map +1 -0
- package/dist/tools/delete-memory/cli-parser.d.ts +2 -0
- package/dist/tools/delete-memory/cli-parser.d.ts.map +1 -0
- package/dist/tools/delete-memory/cli-parser.js +13 -0
- package/dist/tools/delete-memory/cli-parser.js.map +1 -0
- package/dist/tools/delete-memory/executor.d.ts +13 -0
- package/dist/tools/delete-memory/executor.d.ts.map +1 -0
- package/dist/tools/delete-memory/executor.js +40 -0
- package/dist/tools/delete-memory/executor.js.map +1 -0
- package/dist/tools/delete-memory/index.d.ts +3 -0
- package/dist/tools/delete-memory/index.d.ts.map +1 -0
- package/dist/tools/delete-memory/index.js +24 -0
- package/dist/tools/delete-memory/index.js.map +1 -0
- package/dist/tools/export-memory/cli-parser.d.ts +2 -0
- package/dist/tools/export-memory/cli-parser.d.ts.map +1 -0
- package/dist/tools/export-memory/cli-parser.js +34 -0
- package/dist/tools/export-memory/cli-parser.js.map +1 -0
- package/dist/tools/export-memory/executor.d.ts +10 -0
- package/dist/tools/export-memory/executor.d.ts.map +1 -0
- package/dist/tools/export-memory/executor.js +41 -0
- package/dist/tools/export-memory/executor.js.map +1 -0
- package/dist/tools/export-memory/index.d.ts +4 -0
- package/dist/tools/export-memory/index.d.ts.map +1 -0
- package/dist/tools/export-memory/index.js +99 -0
- package/dist/tools/export-memory/index.js.map +1 -0
- package/dist/tools/import-memory/cli-parser.d.ts +2 -0
- package/dist/tools/import-memory/cli-parser.d.ts.map +1 -0
- package/dist/tools/import-memory/cli-parser.js +25 -0
- package/dist/tools/import-memory/cli-parser.js.map +1 -0
- package/dist/tools/import-memory/executor.d.ts +8 -0
- package/dist/tools/import-memory/executor.d.ts.map +1 -0
- package/dist/tools/import-memory/executor.js +31 -0
- package/dist/tools/import-memory/executor.js.map +1 -0
- package/dist/tools/import-memory/index.d.ts +4 -0
- package/dist/tools/import-memory/index.d.ts.map +1 -0
- package/dist/tools/import-memory/index.js +70 -0
- package/dist/tools/import-memory/index.js.map +1 -0
- package/dist/tools/index.d.ts +14 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +48 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/memory-graphql/cli-parser.d.ts +6 -0
- package/dist/tools/memory-graphql/cli-parser.d.ts.map +1 -0
- package/dist/tools/memory-graphql/cli-parser.js +24 -0
- package/dist/tools/memory-graphql/cli-parser.js.map +1 -0
- package/dist/tools/memory-graphql/executor.d.ts +18 -0
- package/dist/tools/memory-graphql/executor.d.ts.map +1 -0
- package/dist/tools/memory-graphql/executor.js +53 -0
- package/dist/tools/memory-graphql/executor.js.map +1 -0
- package/dist/tools/memory-graphql/index.d.ts +3 -0
- package/dist/tools/memory-graphql/index.d.ts.map +1 -0
- package/dist/tools/memory-graphql/index.js +73 -0
- package/dist/tools/memory-graphql/index.js.map +1 -0
- package/dist/tools/memory-stats/cli-parser.d.ts +2 -0
- package/dist/tools/memory-stats/cli-parser.d.ts.map +1 -0
- package/dist/tools/memory-stats/cli-parser.js +8 -0
- package/dist/tools/memory-stats/cli-parser.js.map +1 -0
- package/dist/tools/memory-stats/executor.d.ts +4 -0
- package/dist/tools/memory-stats/executor.d.ts.map +1 -0
- package/dist/tools/memory-stats/executor.js +4 -0
- package/dist/tools/memory-stats/executor.js.map +1 -0
- package/dist/tools/memory-stats/index.d.ts +3 -0
- package/dist/tools/memory-stats/index.d.ts.map +1 -0
- package/dist/tools/memory-stats/index.js +15 -0
- package/dist/tools/memory-stats/index.js.map +1 -0
- package/dist/tools/search-memory/cli-parser.d.ts +2 -0
- package/dist/tools/search-memory/cli-parser.d.ts.map +1 -0
- package/dist/tools/search-memory/cli-parser.js +56 -0
- package/dist/tools/search-memory/cli-parser.js.map +1 -0
- package/dist/tools/search-memory/executor.d.ts +36 -0
- package/dist/tools/search-memory/executor.d.ts.map +1 -0
- package/dist/tools/search-memory/executor.js +83 -0
- package/dist/tools/search-memory/executor.js.map +1 -0
- package/dist/tools/search-memory/index.d.ts +3 -0
- package/dist/tools/search-memory/index.d.ts.map +1 -0
- package/dist/tools/search-memory/index.js +89 -0
- package/dist/tools/search-memory/index.js.map +1 -0
- package/dist/tools/store-memory/cli-parser.d.ts +2 -0
- package/dist/tools/store-memory/cli-parser.d.ts.map +1 -0
- package/dist/tools/store-memory/cli-parser.js +21 -0
- package/dist/tools/store-memory/cli-parser.js.map +1 -0
- package/dist/tools/store-memory/executor.d.ts +16 -0
- package/dist/tools/store-memory/executor.d.ts.map +1 -0
- package/dist/tools/store-memory/executor.js +100 -0
- package/dist/tools/store-memory/executor.js.map +1 -0
- package/dist/tools/store-memory/index.d.ts +3 -0
- package/dist/tools/store-memory/index.d.ts.map +1 -0
- package/dist/tools/store-memory/index.js +68 -0
- package/dist/tools/store-memory/index.js.map +1 -0
- package/dist/tools/sync-memory/cli-parser.d.ts +1 -0
- package/dist/tools/sync-memory/cli-parser.d.ts.map +1 -0
- package/dist/tools/sync-memory/cli-parser.js +2 -0
- package/dist/tools/sync-memory/cli-parser.js.map +1 -0
- package/dist/tools/sync-memory/executor.d.ts +1 -0
- package/dist/tools/sync-memory/executor.d.ts.map +1 -0
- package/dist/tools/sync-memory/executor.js +2 -0
- package/dist/tools/sync-memory/executor.js.map +1 -0
- package/dist/tools/sync-memory/index.d.ts +1 -0
- package/dist/tools/sync-memory/index.d.ts.map +1 -0
- package/dist/tools/sync-memory/index.js +2 -0
- package/dist/tools/sync-memory/index.js.map +1 -0
- package/dist/tools/update-memory/cli-parser.d.ts +2 -0
- package/dist/tools/update-memory/cli-parser.d.ts.map +1 -0
- package/dist/tools/update-memory/cli-parser.js +17 -0
- package/dist/tools/update-memory/cli-parser.js.map +1 -0
- package/dist/tools/update-memory/executor.d.ts +16 -0
- package/dist/tools/update-memory/executor.d.ts.map +1 -0
- package/dist/tools/update-memory/executor.js +59 -0
- package/dist/tools/update-memory/executor.js.map +1 -0
- package/dist/tools/update-memory/index.d.ts +3 -0
- package/dist/tools/update-memory/index.d.ts.map +1 -0
- package/dist/tools/update-memory/index.js +30 -0
- package/dist/tools/update-memory/index.js.map +1 -0
- package/dist/transports/streamable-http.d.ts +38 -0
- package/dist/transports/streamable-http.d.ts.map +1 -0
- package/dist/transports/streamable-http.js +209 -0
- package/dist/transports/streamable-http.js.map +1 -0
- package/dist/types/tools.d.ts +79 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +3 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/cli-parser.d.ts +12 -0
- package/dist/utils/cli-parser.d.ts.map +1 -0
- package/dist/utils/cli-parser.js +43 -0
- package/dist/utils/cli-parser.js.map +1 -0
- package/dist/utils/config.d.ts +95 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +176 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/db-integrity-check.d.ts +22 -0
- package/dist/utils/db-integrity-check.d.ts.map +1 -0
- package/dist/utils/db-integrity-check.js +69 -0
- package/dist/utils/db-integrity-check.js.map +1 -0
- package/dist/utils/debug.d.ts +25 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +67 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/help-generator.d.ts +18 -0
- package/dist/utils/help-generator.d.ts.map +1 -0
- package/dist/utils/help-generator.js +81 -0
- package/dist/utils/help-generator.js.map +1 -0
- package/dist/utils/json-parser.d.ts +12 -0
- package/dist/utils/json-parser.d.ts.map +1 -0
- package/dist/utils/json-parser.js +52 -0
- package/dist/utils/json-parser.js.map +1 -0
- package/dist/utils/mcp-config.d.ts +12 -0
- package/dist/utils/mcp-config.d.ts.map +1 -0
- package/dist/utils/mcp-config.js +64 -0
- package/dist/utils/mcp-config.js.map +1 -0
- package/dist/web-server.d.ts +3 -0
- package/dist/web-server.d.ts.map +1 -0
- package/dist/web-server.js +265 -0
- package/dist/web-server.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, unlinkSync, writeFileSync, readFileSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { debugLog, formatTimestampForFilename } from '../utils/debug.js';
|
|
4
|
+
export class BackupService {
|
|
5
|
+
config;
|
|
6
|
+
lastBackupTime = 0;
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.config = {
|
|
9
|
+
...config,
|
|
10
|
+
autoBackupInterval: config.autoBackupInterval || 0,
|
|
11
|
+
maxBackups: config.maxBackups || 10
|
|
12
|
+
};
|
|
13
|
+
// Ensure backup directory exists
|
|
14
|
+
try {
|
|
15
|
+
mkdirSync(this.config.backupPath, { recursive: true });
|
|
16
|
+
debugLog(`Backup directory ready: ${this.config.backupPath}`);
|
|
17
|
+
// Load lastBackupTime from metadata file (for CLI persistence)
|
|
18
|
+
this.lastBackupTime = this.getLastBackupTime();
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
debugLog(`Warning: Could not create backup directory: ${error.message}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get path to backup metadata file
|
|
26
|
+
*/
|
|
27
|
+
getMetadataPath() {
|
|
28
|
+
return join(this.config.backupPath, '.backup-metadata.json');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Save backup metadata
|
|
32
|
+
* @returns true if saved successfully, false on error
|
|
33
|
+
*/
|
|
34
|
+
saveMetadata() {
|
|
35
|
+
try {
|
|
36
|
+
const metadata = {
|
|
37
|
+
lastBackupTime: this.lastBackupTime,
|
|
38
|
+
lastBackupDate: new Date(this.lastBackupTime).toISOString()
|
|
39
|
+
};
|
|
40
|
+
writeFileSync(this.getMetadataPath(), JSON.stringify(metadata, null, 2));
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
debugLog(`Warning: Could not save backup metadata: ${error.message}`);
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get last backup time from metadata file
|
|
50
|
+
* @returns timestamp in milliseconds, or 0 if no metadata exists
|
|
51
|
+
*/
|
|
52
|
+
getLastBackupTime() {
|
|
53
|
+
try {
|
|
54
|
+
if (!existsSync(this.config.backupPath)) {
|
|
55
|
+
debugLog(`Backup path does not exist yet: ${this.config.backupPath}`);
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
const metadataPath = this.getMetadataPath();
|
|
59
|
+
if (existsSync(metadataPath)) {
|
|
60
|
+
const metadata = JSON.parse(readFileSync(metadataPath, 'utf-8'));
|
|
61
|
+
debugLog(`📋 Loaded backup metadata: last backup at ${metadata.lastBackupDate}`);
|
|
62
|
+
return metadata.lastBackupTime;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
debugLog(`📋 No backup metadata found (will create on first backup)`);
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
debugLog(`Warning: Could not read last backup time: ${error.message}`);
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create a JSON export backup of all memories
|
|
76
|
+
*/
|
|
77
|
+
backup(label = 'manual') {
|
|
78
|
+
try {
|
|
79
|
+
const timestamp = formatTimestampForFilename();
|
|
80
|
+
const backupFileName = `smem_${label}_${timestamp}.json`;
|
|
81
|
+
const backupPath = join(this.config.backupPath, backupFileName);
|
|
82
|
+
// Get export data
|
|
83
|
+
const exportData = this.config.getBackupData();
|
|
84
|
+
// Override source if configured
|
|
85
|
+
if (this.config.source) {
|
|
86
|
+
exportData.source = this.config.source;
|
|
87
|
+
}
|
|
88
|
+
// Write JSON backup
|
|
89
|
+
writeFileSync(backupPath, JSON.stringify(exportData, null, 2), 'utf-8');
|
|
90
|
+
this.lastBackupTime = Date.now();
|
|
91
|
+
this.saveMetadata(); // Persist backup time
|
|
92
|
+
debugLog(`✅ Backup created: ${backupPath} (${exportData.totalMemories} memories)`);
|
|
93
|
+
// Clean up old backups
|
|
94
|
+
this.cleanupOldBackups();
|
|
95
|
+
return backupPath;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
debugLog(`❌ Backup failed: ${error.message}`);
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Check if backup should be created based on throttle interval
|
|
104
|
+
*/
|
|
105
|
+
shouldBackup() {
|
|
106
|
+
// If interval is 0, backup on every write
|
|
107
|
+
if (!this.config.autoBackupInterval || this.config.autoBackupInterval <= 0) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
const intervalMs = this.config.autoBackupInterval * 60 * 1000;
|
|
111
|
+
return (Date.now() - this.lastBackupTime) >= intervalMs;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Backup if enough time has passed since last backup (lazy backup on write)
|
|
115
|
+
*/
|
|
116
|
+
backupIfNeeded() {
|
|
117
|
+
if (this.shouldBackup()) {
|
|
118
|
+
return this.backup('auto');
|
|
119
|
+
}
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Initialize lazy backup mode (creates initial backup if needed)
|
|
124
|
+
* Backups will be created on write operations when interval has passed
|
|
125
|
+
*/
|
|
126
|
+
initialize() {
|
|
127
|
+
const intervalMinutes = this.config.autoBackupInterval || 0;
|
|
128
|
+
debugLog(`Lazy backup enabled (interval: ${intervalMinutes} minutes)`);
|
|
129
|
+
this.backupIfNeeded();
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Clean up old backups, keeping only the most recent N
|
|
133
|
+
*/
|
|
134
|
+
cleanupOldBackups() {
|
|
135
|
+
if (this.config.maxBackups <= 0) {
|
|
136
|
+
return; // Keep all backups
|
|
137
|
+
}
|
|
138
|
+
try {
|
|
139
|
+
const files = readdirSync(this.config.backupPath)
|
|
140
|
+
.filter(f => f.endsWith('.json') && f.startsWith('smem_'))
|
|
141
|
+
.map(f => ({
|
|
142
|
+
name: f,
|
|
143
|
+
path: join(this.config.backupPath, f)
|
|
144
|
+
}))
|
|
145
|
+
// Sort by filename (which contains timestamp) - newest first
|
|
146
|
+
.sort((a, b) => b.name.localeCompare(a.name));
|
|
147
|
+
// Delete backups beyond the max count
|
|
148
|
+
const toDelete = files.slice(this.config.maxBackups);
|
|
149
|
+
for (const file of toDelete) {
|
|
150
|
+
try {
|
|
151
|
+
unlinkSync(file.path);
|
|
152
|
+
debugLog(`Deleted old backup: ${file.name}`);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
debugLog(`Warning: Could not delete old backup: ${error.message}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (toDelete.length > 0) {
|
|
159
|
+
debugLog(`Cleaned up ${toDelete.length} old backup(s), kept ${this.config.maxBackups} most recent`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
debugLog(`Warning: Backup cleanup failed: ${error.message}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get count of available backups
|
|
168
|
+
*/
|
|
169
|
+
getBackupCount() {
|
|
170
|
+
if (!existsSync(this.config.backupPath)) {
|
|
171
|
+
return 0;
|
|
172
|
+
}
|
|
173
|
+
try {
|
|
174
|
+
return readdirSync(this.config.backupPath)
|
|
175
|
+
.filter(f => f.endsWith('.json') && f.startsWith('smem_'))
|
|
176
|
+
.length;
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return 0;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get time since last backup in minutes
|
|
184
|
+
*/
|
|
185
|
+
getTimeSinceLastBackup() {
|
|
186
|
+
if (this.lastBackupTime === 0)
|
|
187
|
+
return -1;
|
|
188
|
+
return Math.floor((Date.now() - this.lastBackupTime) / 60000);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=backup-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup-service.js","sourceRoot":"","sources":["../../src/services/backup-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
export declare class DatabaseOptimizer {
|
|
3
|
+
/**
|
|
4
|
+
* Apply SQLite performance optimizations
|
|
5
|
+
* Safe to run multiple times (idempotent)
|
|
6
|
+
*
|
|
7
|
+
* Set MEMORY_CLOUD_SAFE=true for OneDrive/Dropbox/cloud storage locations
|
|
8
|
+
*/
|
|
9
|
+
static applyOptimizations(db: Database.Database): void;
|
|
10
|
+
/**
|
|
11
|
+
* Optimize FTS5 index (run periodically or after bulk inserts)
|
|
12
|
+
*/
|
|
13
|
+
static optimizeFTS(db: Database.Database): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=database-optimizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-optimizer.d.ts","sourceRoot":"","sources":["../../src/services/database-optimizer.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,qBAAa,iBAAiB;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI;IA2BtD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI;CAShD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { debugLog } from '../utils/debug.js';
|
|
2
|
+
export class DatabaseOptimizer {
|
|
3
|
+
/**
|
|
4
|
+
* Apply SQLite performance optimizations
|
|
5
|
+
* Safe to run multiple times (idempotent)
|
|
6
|
+
*
|
|
7
|
+
* Set MEMORY_CLOUD_SAFE=true for OneDrive/Dropbox/cloud storage locations
|
|
8
|
+
*/
|
|
9
|
+
static applyOptimizations(db) {
|
|
10
|
+
const isCloudSafe = process.env.MEMORY_CLOUD_SAFE === 'true';
|
|
11
|
+
if (isCloudSafe) {
|
|
12
|
+
// Cloud-safe mode: Use DELETE journal (single file, no WAL shm/wal files)
|
|
13
|
+
db.pragma('journal_mode = DELETE');
|
|
14
|
+
debugLog('Database optimizations applied (CLOUD-SAFE MODE)');
|
|
15
|
+
debugLog('⚠️ Performance reduced for cloud storage compatibility');
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
// Performance mode: WAL allows readers and writers to work simultaneously
|
|
19
|
+
db.pragma('journal_mode = WAL');
|
|
20
|
+
debugLog('Database optimizations applied (PERFORMANCE MODE)');
|
|
21
|
+
}
|
|
22
|
+
// Larger cache = fewer disk reads = faster queries (64MB)
|
|
23
|
+
db.pragma('cache_size = -64000');
|
|
24
|
+
// Store temp tables in memory (faster)
|
|
25
|
+
db.pragma('temp_store = MEMORY');
|
|
26
|
+
// Cloud-safe: Use FULL sync for maximum safety, else NORMAL for speed
|
|
27
|
+
db.pragma(isCloudSafe ? 'synchronous = FULL' : 'synchronous = NORMAL');
|
|
28
|
+
// Enforce foreign key constraints
|
|
29
|
+
db.pragma('foreign_keys = ON');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Optimize FTS5 index (run periodically or after bulk inserts)
|
|
33
|
+
*/
|
|
34
|
+
static optimizeFTS(db) {
|
|
35
|
+
try {
|
|
36
|
+
db.exec(`INSERT INTO memories_fts(memories_fts) VALUES('optimize')`);
|
|
37
|
+
debugLog('FTS index optimized');
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
// FTS table might not exist yet, that's fine
|
|
41
|
+
debugLog('FTS optimization skipped:', error.message);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=database-optimizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-optimizer.js","sourceRoot":"","sources":["../../src/services/database-optimizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,OAAO,iBAAiB;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,EAAqB;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,CAAC;QAE7D,IAAI,WAAW,EAAE,CAAC;YAChB,0EAA0E;YAC1E,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;YACnC,QAAQ,CAAC,kDAAkD,CAAC,CAAC;YAC7D,QAAQ,CAAC,yDAAyD,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,0EAA0E;YAC1E,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAChC,QAAQ,CAAC,mDAAmD,CAAC,CAAC;QAChE,CAAC;QAED,0DAA0D;QAC1D,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAEjC,uCAAuC;QACvC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAEjC,sEAAsE;QACtE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QAEvE,kCAAkC;QAClC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,EAAqB;QACtC,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YACrE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,6CAA6C;YAC7C,QAAQ,CAAC,2BAA2B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { type MCPConfigPath } from '../utils/mcp-config.js';
|
|
2
|
+
import type { ExportFilters, ImportOptions, ImportResult, ExportFormat } from '../types/tools.js';
|
|
3
|
+
export interface MemoryEntry {
|
|
4
|
+
id: number;
|
|
5
|
+
content: string;
|
|
6
|
+
tags: string[];
|
|
7
|
+
createdAt: string;
|
|
8
|
+
hash: string;
|
|
9
|
+
relevance?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface MemoryRelationship {
|
|
12
|
+
fromMemoryId: number;
|
|
13
|
+
toMemoryId: number;
|
|
14
|
+
relationshipType: string;
|
|
15
|
+
createdAt: string;
|
|
16
|
+
}
|
|
17
|
+
export interface MemoryStats {
|
|
18
|
+
version: string;
|
|
19
|
+
totalMemories: number;
|
|
20
|
+
totalRelationships: number;
|
|
21
|
+
dbSize: number;
|
|
22
|
+
dbPath: string;
|
|
23
|
+
resolvedPath: string;
|
|
24
|
+
schemaVersion: number;
|
|
25
|
+
configPath?: string;
|
|
26
|
+
backupEnabled?: boolean;
|
|
27
|
+
backupPath?: string;
|
|
28
|
+
backupCount?: number;
|
|
29
|
+
lastBackupAge?: number;
|
|
30
|
+
nextBackupIn?: number;
|
|
31
|
+
mcpConfigPaths?: MCPConfigPath[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Memory Service for persistent storage and retrieval of memories with tagging and relationships.
|
|
35
|
+
* Based on SQLite with FTS (Full Text Search) for efficient querying.
|
|
36
|
+
*/
|
|
37
|
+
export declare class MemoryService {
|
|
38
|
+
private db;
|
|
39
|
+
private dbPath;
|
|
40
|
+
private resolvedDbPath;
|
|
41
|
+
private stmts;
|
|
42
|
+
private maxContentSize;
|
|
43
|
+
private backup?;
|
|
44
|
+
constructor(dbPath?: string, maxContentSize?: number);
|
|
45
|
+
initialize(): void;
|
|
46
|
+
private initDb;
|
|
47
|
+
private prepareStatements;
|
|
48
|
+
/**
|
|
49
|
+
* Store a memory with optional tags
|
|
50
|
+
*/
|
|
51
|
+
store(content: string, tags?: string[]): string;
|
|
52
|
+
/**
|
|
53
|
+
* Search memories by content or tags
|
|
54
|
+
*/
|
|
55
|
+
search(query?: string, tags?: string[], limit?: number, daysAgo?: number, startDate?: string, endDate?: string, minRelevance?: number): MemoryEntry[];
|
|
56
|
+
/**
|
|
57
|
+
* Delete a memory by hash
|
|
58
|
+
*/
|
|
59
|
+
delete(hash: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Delete memories by tag
|
|
62
|
+
*/
|
|
63
|
+
deleteByTag(tag: string): number;
|
|
64
|
+
/**
|
|
65
|
+
* Bulk link memories in a single transaction for performance
|
|
66
|
+
* Returns the number of relationships successfully created
|
|
67
|
+
*/
|
|
68
|
+
linkMemoriesBulk(relationships: Array<{
|
|
69
|
+
fromHash: string;
|
|
70
|
+
toHash: string;
|
|
71
|
+
relationshipType?: string;
|
|
72
|
+
}>): number;
|
|
73
|
+
/**
|
|
74
|
+
* Link two memories with a relationship
|
|
75
|
+
*/
|
|
76
|
+
linkMemories(fromHash: string, toHash: string, relationshipType?: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Get memories related to a specific memory
|
|
79
|
+
*/
|
|
80
|
+
getRelated(hash: string, limit?: number): MemoryEntry[];
|
|
81
|
+
/**
|
|
82
|
+
* Get statistics about the memory database
|
|
83
|
+
*/
|
|
84
|
+
stats(): MemoryStats;
|
|
85
|
+
/**
|
|
86
|
+
* Update an existing memory by hash
|
|
87
|
+
* @param hash The hash of the memory to update
|
|
88
|
+
* @param newContent The new content for the memory
|
|
89
|
+
* @param newTags Optional new tags (if provided, replaces all existing tags)
|
|
90
|
+
* @returns The new hash if successful, null if memory not found
|
|
91
|
+
*/
|
|
92
|
+
update(hash: string, newContent: string, newTags?: string[]): string | null;
|
|
93
|
+
/**
|
|
94
|
+
* Get memory by hash
|
|
95
|
+
*/
|
|
96
|
+
getByHash(hash: string): MemoryEntry | null;
|
|
97
|
+
/**
|
|
98
|
+
* Close database connection
|
|
99
|
+
*/
|
|
100
|
+
close(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Create a manual backup
|
|
103
|
+
*/
|
|
104
|
+
createBackup(label?: string): string | null;
|
|
105
|
+
/**
|
|
106
|
+
* Export memories to JSON format with optional filtering
|
|
107
|
+
*/
|
|
108
|
+
exportMemories(filters?: ExportFilters): ExportFormat;
|
|
109
|
+
/**
|
|
110
|
+
* Import memories from JSON format
|
|
111
|
+
*/
|
|
112
|
+
importMemories(jsonData: string, options?: ImportOptions): ImportResult;
|
|
113
|
+
/**
|
|
114
|
+
* Get relationships for a memory
|
|
115
|
+
*/
|
|
116
|
+
private getMemoryRelationships;
|
|
117
|
+
/**
|
|
118
|
+
* Restore relationships after importing memories
|
|
119
|
+
*/
|
|
120
|
+
private restoreRelationships;
|
|
121
|
+
/**
|
|
122
|
+
* Get a memory by its hash
|
|
123
|
+
*/
|
|
124
|
+
private getMemoryByHash;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=memory-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-service.d.ts","sourceRoot":"","sources":["../../src/services/memory-service.ts"],"names":[],"mappings":"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"}
|