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.
Files changed (247) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +742 -0
  3. package/dist/cli/arg-parser.d.ts +9 -0
  4. package/dist/cli/arg-parser.d.ts.map +1 -0
  5. package/dist/cli/arg-parser.js +68 -0
  6. package/dist/cli/arg-parser.js.map +1 -0
  7. package/dist/cli/help-generator.d.ts +8 -0
  8. package/dist/cli/help-generator.d.ts.map +1 -0
  9. package/dist/cli/help-generator.js +89 -0
  10. package/dist/cli/help-generator.js.map +1 -0
  11. package/dist/cli/index.d.ts +27 -0
  12. package/dist/cli/index.d.ts.map +1 -0
  13. package/dist/cli/index.js +56 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/cli/query-builder.d.ts +8 -0
  16. package/dist/cli/query-builder.d.ts.map +1 -0
  17. package/dist/cli/query-builder.js +63 -0
  18. package/dist/cli/query-builder.js.map +1 -0
  19. package/dist/cli/shortcuts-config.d.ts +26 -0
  20. package/dist/cli/shortcuts-config.d.ts.map +1 -0
  21. package/dist/cli/shortcuts-config.js +94 -0
  22. package/dist/cli/shortcuts-config.js.map +1 -0
  23. package/dist/graphql/resolvers.d.ts +101 -0
  24. package/dist/graphql/resolvers.d.ts.map +1 -0
  25. package/dist/graphql/resolvers.js +98 -0
  26. package/dist/graphql/resolvers.js.map +1 -0
  27. package/dist/graphql/schema.d.ts +13 -0
  28. package/dist/graphql/schema.d.ts.map +1 -0
  29. package/dist/graphql/schema.js +314 -0
  30. package/dist/graphql/schema.js.map +1 -0
  31. package/dist/index.d.ts +3 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +573 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/services/backup-service.d.ts +57 -0
  36. package/dist/services/backup-service.d.ts.map +1 -0
  37. package/dist/services/backup-service.js +191 -0
  38. package/dist/services/backup-service.js.map +1 -0
  39. package/dist/services/database-optimizer.d.ts +15 -0
  40. package/dist/services/database-optimizer.d.ts.map +1 -0
  41. package/dist/services/database-optimizer.js +45 -0
  42. package/dist/services/database-optimizer.js.map +1 -0
  43. package/dist/services/memory-service.d.ts +126 -0
  44. package/dist/services/memory-service.d.ts.map +1 -0
  45. package/dist/services/memory-service.js +862 -0
  46. package/dist/services/memory-service.js.map +1 -0
  47. package/dist/services/migrations.d.ts +17 -0
  48. package/dist/services/migrations.d.ts.map +1 -0
  49. package/dist/services/migrations.js +273 -0
  50. package/dist/services/migrations.js.map +1 -0
  51. package/dist/tests/backup-export-test.d.ts +2 -0
  52. package/dist/tests/backup-export-test.d.ts.map +1 -0
  53. package/dist/tests/backup-export-test.js +162 -0
  54. package/dist/tests/backup-export-test.js.map +1 -0
  55. package/dist/tests/backup-test.d.ts +14 -0
  56. package/dist/tests/backup-test.d.ts.map +1 -0
  57. package/dist/tests/backup-test.js +209 -0
  58. package/dist/tests/backup-test.js.map +1 -0
  59. package/dist/tests/export-import-test.d.ts +15 -0
  60. package/dist/tests/export-import-test.d.ts.map +1 -0
  61. package/dist/tests/export-import-test.js +227 -0
  62. package/dist/tests/export-import-test.js.map +1 -0
  63. package/dist/tests/graphql-comprehensive-test.d.ts +6 -0
  64. package/dist/tests/graphql-comprehensive-test.d.ts.map +1 -0
  65. package/dist/tests/graphql-comprehensive-test.js +342 -0
  66. package/dist/tests/graphql-comprehensive-test.js.map +1 -0
  67. package/dist/tests/graphql-performance-test.d.ts +6 -0
  68. package/dist/tests/graphql-performance-test.d.ts.map +1 -0
  69. package/dist/tests/graphql-performance-test.js +141 -0
  70. package/dist/tests/graphql-performance-test.js.map +1 -0
  71. package/dist/tests/graphql-test.d.ts +5 -0
  72. package/dist/tests/graphql-test.d.ts.map +1 -0
  73. package/dist/tests/graphql-test.js +47 -0
  74. package/dist/tests/graphql-test.js.map +1 -0
  75. package/dist/tests/memory-server-tests.d.ts +7 -0
  76. package/dist/tests/memory-server-tests.d.ts.map +1 -0
  77. package/dist/tests/memory-server-tests.js +466 -0
  78. package/dist/tests/memory-server-tests.js.map +1 -0
  79. package/dist/tests/migration-test.d.ts +2 -0
  80. package/dist/tests/migration-test.d.ts.map +1 -0
  81. package/dist/tests/migration-test.js +270 -0
  82. package/dist/tests/migration-test.js.map +1 -0
  83. package/dist/tests/performance-benchmark.d.ts +7 -0
  84. package/dist/tests/performance-benchmark.d.ts.map +1 -0
  85. package/dist/tests/performance-benchmark.js +234 -0
  86. package/dist/tests/performance-benchmark.js.map +1 -0
  87. package/dist/tests/performance-test.d.ts +3 -0
  88. package/dist/tests/performance-test.d.ts.map +1 -0
  89. package/dist/tests/performance-test.js +61 -0
  90. package/dist/tests/performance-test.js.map +1 -0
  91. package/dist/tests/time-range-test.d.ts +7 -0
  92. package/dist/tests/time-range-test.d.ts.map +1 -0
  93. package/dist/tests/time-range-test.js +169 -0
  94. package/dist/tests/time-range-test.js.map +1 -0
  95. package/dist/tools/delete-memory/cli-parser.d.ts +2 -0
  96. package/dist/tools/delete-memory/cli-parser.d.ts.map +1 -0
  97. package/dist/tools/delete-memory/cli-parser.js +13 -0
  98. package/dist/tools/delete-memory/cli-parser.js.map +1 -0
  99. package/dist/tools/delete-memory/executor.d.ts +13 -0
  100. package/dist/tools/delete-memory/executor.d.ts.map +1 -0
  101. package/dist/tools/delete-memory/executor.js +40 -0
  102. package/dist/tools/delete-memory/executor.js.map +1 -0
  103. package/dist/tools/delete-memory/index.d.ts +3 -0
  104. package/dist/tools/delete-memory/index.d.ts.map +1 -0
  105. package/dist/tools/delete-memory/index.js +24 -0
  106. package/dist/tools/delete-memory/index.js.map +1 -0
  107. package/dist/tools/export-memory/cli-parser.d.ts +2 -0
  108. package/dist/tools/export-memory/cli-parser.d.ts.map +1 -0
  109. package/dist/tools/export-memory/cli-parser.js +34 -0
  110. package/dist/tools/export-memory/cli-parser.js.map +1 -0
  111. package/dist/tools/export-memory/executor.d.ts +10 -0
  112. package/dist/tools/export-memory/executor.d.ts.map +1 -0
  113. package/dist/tools/export-memory/executor.js +41 -0
  114. package/dist/tools/export-memory/executor.js.map +1 -0
  115. package/dist/tools/export-memory/index.d.ts +4 -0
  116. package/dist/tools/export-memory/index.d.ts.map +1 -0
  117. package/dist/tools/export-memory/index.js +99 -0
  118. package/dist/tools/export-memory/index.js.map +1 -0
  119. package/dist/tools/import-memory/cli-parser.d.ts +2 -0
  120. package/dist/tools/import-memory/cli-parser.d.ts.map +1 -0
  121. package/dist/tools/import-memory/cli-parser.js +25 -0
  122. package/dist/tools/import-memory/cli-parser.js.map +1 -0
  123. package/dist/tools/import-memory/executor.d.ts +8 -0
  124. package/dist/tools/import-memory/executor.d.ts.map +1 -0
  125. package/dist/tools/import-memory/executor.js +31 -0
  126. package/dist/tools/import-memory/executor.js.map +1 -0
  127. package/dist/tools/import-memory/index.d.ts +4 -0
  128. package/dist/tools/import-memory/index.d.ts.map +1 -0
  129. package/dist/tools/import-memory/index.js +70 -0
  130. package/dist/tools/import-memory/index.js.map +1 -0
  131. package/dist/tools/index.d.ts +14 -0
  132. package/dist/tools/index.d.ts.map +1 -0
  133. package/dist/tools/index.js +48 -0
  134. package/dist/tools/index.js.map +1 -0
  135. package/dist/tools/memory-graphql/cli-parser.d.ts +6 -0
  136. package/dist/tools/memory-graphql/cli-parser.d.ts.map +1 -0
  137. package/dist/tools/memory-graphql/cli-parser.js +24 -0
  138. package/dist/tools/memory-graphql/cli-parser.js.map +1 -0
  139. package/dist/tools/memory-graphql/executor.d.ts +18 -0
  140. package/dist/tools/memory-graphql/executor.d.ts.map +1 -0
  141. package/dist/tools/memory-graphql/executor.js +53 -0
  142. package/dist/tools/memory-graphql/executor.js.map +1 -0
  143. package/dist/tools/memory-graphql/index.d.ts +3 -0
  144. package/dist/tools/memory-graphql/index.d.ts.map +1 -0
  145. package/dist/tools/memory-graphql/index.js +73 -0
  146. package/dist/tools/memory-graphql/index.js.map +1 -0
  147. package/dist/tools/memory-stats/cli-parser.d.ts +2 -0
  148. package/dist/tools/memory-stats/cli-parser.d.ts.map +1 -0
  149. package/dist/tools/memory-stats/cli-parser.js +8 -0
  150. package/dist/tools/memory-stats/cli-parser.js.map +1 -0
  151. package/dist/tools/memory-stats/executor.d.ts +4 -0
  152. package/dist/tools/memory-stats/executor.d.ts.map +1 -0
  153. package/dist/tools/memory-stats/executor.js +4 -0
  154. package/dist/tools/memory-stats/executor.js.map +1 -0
  155. package/dist/tools/memory-stats/index.d.ts +3 -0
  156. package/dist/tools/memory-stats/index.d.ts.map +1 -0
  157. package/dist/tools/memory-stats/index.js +15 -0
  158. package/dist/tools/memory-stats/index.js.map +1 -0
  159. package/dist/tools/search-memory/cli-parser.d.ts +2 -0
  160. package/dist/tools/search-memory/cli-parser.d.ts.map +1 -0
  161. package/dist/tools/search-memory/cli-parser.js +56 -0
  162. package/dist/tools/search-memory/cli-parser.js.map +1 -0
  163. package/dist/tools/search-memory/executor.d.ts +36 -0
  164. package/dist/tools/search-memory/executor.d.ts.map +1 -0
  165. package/dist/tools/search-memory/executor.js +83 -0
  166. package/dist/tools/search-memory/executor.js.map +1 -0
  167. package/dist/tools/search-memory/index.d.ts +3 -0
  168. package/dist/tools/search-memory/index.d.ts.map +1 -0
  169. package/dist/tools/search-memory/index.js +89 -0
  170. package/dist/tools/search-memory/index.js.map +1 -0
  171. package/dist/tools/store-memory/cli-parser.d.ts +2 -0
  172. package/dist/tools/store-memory/cli-parser.d.ts.map +1 -0
  173. package/dist/tools/store-memory/cli-parser.js +21 -0
  174. package/dist/tools/store-memory/cli-parser.js.map +1 -0
  175. package/dist/tools/store-memory/executor.d.ts +16 -0
  176. package/dist/tools/store-memory/executor.d.ts.map +1 -0
  177. package/dist/tools/store-memory/executor.js +100 -0
  178. package/dist/tools/store-memory/executor.js.map +1 -0
  179. package/dist/tools/store-memory/index.d.ts +3 -0
  180. package/dist/tools/store-memory/index.d.ts.map +1 -0
  181. package/dist/tools/store-memory/index.js +68 -0
  182. package/dist/tools/store-memory/index.js.map +1 -0
  183. package/dist/tools/sync-memory/cli-parser.d.ts +1 -0
  184. package/dist/tools/sync-memory/cli-parser.d.ts.map +1 -0
  185. package/dist/tools/sync-memory/cli-parser.js +2 -0
  186. package/dist/tools/sync-memory/cli-parser.js.map +1 -0
  187. package/dist/tools/sync-memory/executor.d.ts +1 -0
  188. package/dist/tools/sync-memory/executor.d.ts.map +1 -0
  189. package/dist/tools/sync-memory/executor.js +2 -0
  190. package/dist/tools/sync-memory/executor.js.map +1 -0
  191. package/dist/tools/sync-memory/index.d.ts +1 -0
  192. package/dist/tools/sync-memory/index.d.ts.map +1 -0
  193. package/dist/tools/sync-memory/index.js +2 -0
  194. package/dist/tools/sync-memory/index.js.map +1 -0
  195. package/dist/tools/update-memory/cli-parser.d.ts +2 -0
  196. package/dist/tools/update-memory/cli-parser.d.ts.map +1 -0
  197. package/dist/tools/update-memory/cli-parser.js +17 -0
  198. package/dist/tools/update-memory/cli-parser.js.map +1 -0
  199. package/dist/tools/update-memory/executor.d.ts +16 -0
  200. package/dist/tools/update-memory/executor.d.ts.map +1 -0
  201. package/dist/tools/update-memory/executor.js +59 -0
  202. package/dist/tools/update-memory/executor.js.map +1 -0
  203. package/dist/tools/update-memory/index.d.ts +3 -0
  204. package/dist/tools/update-memory/index.d.ts.map +1 -0
  205. package/dist/tools/update-memory/index.js +30 -0
  206. package/dist/tools/update-memory/index.js.map +1 -0
  207. package/dist/transports/streamable-http.d.ts +38 -0
  208. package/dist/transports/streamable-http.d.ts.map +1 -0
  209. package/dist/transports/streamable-http.js +209 -0
  210. package/dist/transports/streamable-http.js.map +1 -0
  211. package/dist/types/tools.d.ts +79 -0
  212. package/dist/types/tools.d.ts.map +1 -0
  213. package/dist/types/tools.js +3 -0
  214. package/dist/types/tools.js.map +1 -0
  215. package/dist/utils/cli-parser.d.ts +12 -0
  216. package/dist/utils/cli-parser.d.ts.map +1 -0
  217. package/dist/utils/cli-parser.js +43 -0
  218. package/dist/utils/cli-parser.js.map +1 -0
  219. package/dist/utils/config.d.ts +95 -0
  220. package/dist/utils/config.d.ts.map +1 -0
  221. package/dist/utils/config.js +176 -0
  222. package/dist/utils/config.js.map +1 -0
  223. package/dist/utils/db-integrity-check.d.ts +22 -0
  224. package/dist/utils/db-integrity-check.d.ts.map +1 -0
  225. package/dist/utils/db-integrity-check.js +69 -0
  226. package/dist/utils/db-integrity-check.js.map +1 -0
  227. package/dist/utils/debug.d.ts +25 -0
  228. package/dist/utils/debug.d.ts.map +1 -0
  229. package/dist/utils/debug.js +67 -0
  230. package/dist/utils/debug.js.map +1 -0
  231. package/dist/utils/help-generator.d.ts +18 -0
  232. package/dist/utils/help-generator.d.ts.map +1 -0
  233. package/dist/utils/help-generator.js +81 -0
  234. package/dist/utils/help-generator.js.map +1 -0
  235. package/dist/utils/json-parser.d.ts +12 -0
  236. package/dist/utils/json-parser.d.ts.map +1 -0
  237. package/dist/utils/json-parser.js +52 -0
  238. package/dist/utils/json-parser.js.map +1 -0
  239. package/dist/utils/mcp-config.d.ts +12 -0
  240. package/dist/utils/mcp-config.d.ts.map +1 -0
  241. package/dist/utils/mcp-config.js +64 -0
  242. package/dist/utils/mcp-config.js.map +1 -0
  243. package/dist/web-server.d.ts +3 -0
  244. package/dist/web-server.d.ts.map +1 -0
  245. package/dist/web-server.js +265 -0
  246. package/dist/web-server.js.map +1 -0
  247. package/package.json +75 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-service.js","sourceRoot":"","sources":["../../src/services/memory-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import Database from 'better-sqlite3';
2
+ export interface Migration {
3
+ version: number;
4
+ description: string;
5
+ up: (db: Database.Database) => void;
6
+ }
7
+ /**
8
+ * All migrations in order
9
+ * Add new migrations to the end, never modify existing ones
10
+ */
11
+ export declare const migrations: Migration[];
12
+ /**
13
+ * Run all pending migrations
14
+ * This is the only function you need to call - it handles everything
15
+ */
16
+ export declare function runMigrations(db: Database.Database, dbPath: string): void;
17
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/services/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC;CACrC;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,EA0NjC,CAAC;AAmBF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAgFzE"}
@@ -0,0 +1,273 @@
1
+ import { debugLog } from '../utils/debug.js';
2
+ import { existsSync, copyFileSync } from 'fs';
3
+ /**
4
+ * All migrations in order
5
+ * Add new migrations to the end, never modify existing ones
6
+ */
7
+ export const migrations = [
8
+ {
9
+ version: 1,
10
+ description: 'Initial schema with migration tracking',
11
+ up: (db) => {
12
+ // Schema already exists, just mark as version 1
13
+ debugLog('Migration 1: Baseline schema marked');
14
+ }
15
+ },
16
+ {
17
+ version: 2,
18
+ description: 'Normalize tags + add performance indexes',
19
+ up: (db) => {
20
+ debugLog('Migration 2: Starting tag normalization and index creation');
21
+ // Create tags table
22
+ db.exec(`
23
+ CREATE TABLE IF NOT EXISTS tags (
24
+ memory_id INTEGER NOT NULL,
25
+ tag TEXT NOT NULL,
26
+ FOREIGN KEY (memory_id) REFERENCES memories (id) ON DELETE CASCADE,
27
+ PRIMARY KEY (memory_id, tag)
28
+ );
29
+ `);
30
+ // Create indexes for tags table
31
+ db.exec(`
32
+ CREATE INDEX IF NOT EXISTS idx_tags_tag ON tags(tag);
33
+ CREATE INDEX IF NOT EXISTS idx_tags_memory_id ON tags(memory_id);
34
+ `);
35
+ // Add performance indexes to existing tables
36
+ db.exec(`
37
+ CREATE INDEX IF NOT EXISTS idx_memories_created_at ON memories(created_at DESC);
38
+ CREATE INDEX IF NOT EXISTS idx_memories_hash ON memories(hash);
39
+ CREATE INDEX IF NOT EXISTS idx_relationships_from ON relationships(from_memory_id);
40
+ CREATE INDEX IF NOT EXISTS idx_relationships_to ON relationships(to_memory_id);
41
+ CREATE INDEX IF NOT EXISTS idx_relationships_composite ON relationships(from_memory_id, to_memory_id);
42
+ `);
43
+ // Migrate existing tags from memories.tags column to tags table
44
+ const memories = db.prepare(`SELECT id, tags FROM memories WHERE tags IS NOT NULL AND tags != ''`).all();
45
+ if (memories.length > 0) {
46
+ debugLog(`Migrating tags for ${memories.length} memories`);
47
+ const insertTag = db.prepare('INSERT OR IGNORE INTO tags (memory_id, tag) VALUES (?, ?)');
48
+ const migrateData = db.transaction(() => {
49
+ for (const memory of memories) {
50
+ const tagList = memory.tags.split(',').map(t => t.trim().toLowerCase()).filter(t => t);
51
+ for (const tag of tagList) {
52
+ insertTag.run(memory.id, tag);
53
+ }
54
+ }
55
+ });
56
+ migrateData();
57
+ debugLog(`Successfully migrated ${memories.length} memories to new tag format`);
58
+ }
59
+ // Run ANALYZE to update query planner statistics
60
+ db.exec('ANALYZE');
61
+ debugLog('Migration 2: Completed successfully');
62
+ }
63
+ },
64
+ {
65
+ version: 3,
66
+ description: 'Update FTS table to remove tags column',
67
+ up: (db) => {
68
+ debugLog('Migration 3: Updating FTS table schema');
69
+ // Always recreate FTS table to ensure consistency
70
+ debugLog('Recreating FTS table with updated schema');
71
+ // Drop old FTS table and triggers
72
+ db.exec(`DROP TRIGGER IF EXISTS memories_ai`);
73
+ db.exec(`DROP TRIGGER IF EXISTS memories_au`);
74
+ db.exec(`DROP TRIGGER IF EXISTS memories_ad`);
75
+ db.exec(`DROP TABLE IF EXISTS memories_fts`);
76
+ // Create new FTS table without tags column
77
+ db.exec(`
78
+ CREATE VIRTUAL TABLE memories_fts
79
+ USING fts5(content, content='memories', content_rowid='id')
80
+ `);
81
+ // Recreate triggers
82
+ db.exec(`
83
+ CREATE TRIGGER memories_ai AFTER INSERT ON memories BEGIN
84
+ INSERT INTO memories_fts (rowid, content)
85
+ VALUES (new.id, new.content);
86
+ END;
87
+ `);
88
+ db.exec(`
89
+ CREATE TRIGGER memories_au AFTER UPDATE ON memories BEGIN
90
+ UPDATE memories_fts SET content = new.content
91
+ WHERE rowid = new.id;
92
+ END;
93
+ `);
94
+ db.exec(`
95
+ CREATE TRIGGER memories_ad AFTER DELETE ON memories BEGIN
96
+ DELETE FROM memories_fts WHERE rowid = old.id;
97
+ END;
98
+ `);
99
+ // Repopulate FTS table with existing memories
100
+ const memories = db.prepare(`SELECT id, content FROM memories`).all();
101
+ if (memories.length > 0) {
102
+ debugLog(`Repopulating FTS table with ${memories.length} memories`);
103
+ const insertFts = db.prepare(`INSERT INTO memories_fts (rowid, content) VALUES (?, ?)`);
104
+ const populateFts = db.transaction(() => {
105
+ for (const memory of memories) {
106
+ insertFts.run(memory.id, memory.content);
107
+ }
108
+ });
109
+ populateFts();
110
+ }
111
+ debugLog('Migration 3: FTS table updated successfully');
112
+ }
113
+ },
114
+ {
115
+ version: 4,
116
+ description: 'Fix FTS update trigger for external content tables',
117
+ up: (db) => {
118
+ debugLog('Migration 4: Fixing FTS update trigger');
119
+ // Drop old update trigger
120
+ db.exec(`DROP TRIGGER IF EXISTS memories_au`);
121
+ // Recreate with correct DELETE+INSERT pattern for external content FTS5
122
+ // External content FTS5 tables don't support UPDATE, must DELETE+INSERT
123
+ db.exec(`
124
+ CREATE TRIGGER memories_au AFTER UPDATE ON memories BEGIN
125
+ DELETE FROM memories_fts WHERE rowid = old.id;
126
+ INSERT INTO memories_fts (rowid, content) VALUES (new.id, new.content);
127
+ END;
128
+ `);
129
+ debugLog('Migration 4: FTS update trigger fixed');
130
+ }
131
+ },
132
+ {
133
+ version: 5,
134
+ description: 'Drop deprecated tags column from memories table',
135
+ up: (db) => {
136
+ debugLog('Migration 5: Dropping deprecated tags column');
137
+ // SQLite doesn't support DROP COLUMN directly, so we need to:
138
+ // 1. Create a new table without the tags column
139
+ // 2. Copy data from old table to new table
140
+ // 3. Drop old table
141
+ // 4. Rename new table to old name
142
+ // Create new memories table without tags column
143
+ db.exec(`
144
+ CREATE TABLE memories_new (
145
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
146
+ content TEXT NOT NULL,
147
+ created_at TEXT,
148
+ hash TEXT UNIQUE
149
+ )
150
+ `);
151
+ // Copy all data from old table to new table
152
+ db.exec(`
153
+ INSERT INTO memories_new (id, content, created_at, hash)
154
+ SELECT id, content, created_at, hash FROM memories
155
+ `);
156
+ // Drop triggers that reference the old table
157
+ db.exec(`DROP TRIGGER IF EXISTS memories_ai`);
158
+ db.exec(`DROP TRIGGER IF EXISTS memories_au`);
159
+ db.exec(`DROP TRIGGER IF EXISTS memories_ad`);
160
+ // Drop old table
161
+ db.exec(`DROP TABLE memories`);
162
+ // Rename new table to original name
163
+ db.exec(`ALTER TABLE memories_new RENAME TO memories`);
164
+ // Recreate triggers for the new table
165
+ db.exec(`
166
+ CREATE TRIGGER memories_ai AFTER INSERT ON memories BEGIN
167
+ INSERT INTO memories_fts (rowid, content)
168
+ VALUES (new.id, new.content);
169
+ END;
170
+ `);
171
+ db.exec(`
172
+ CREATE TRIGGER memories_au AFTER UPDATE ON memories BEGIN
173
+ DELETE FROM memories_fts WHERE rowid = old.id;
174
+ INSERT INTO memories_fts (rowid, content) VALUES (new.id, new.content);
175
+ END;
176
+ `);
177
+ db.exec(`
178
+ CREATE TRIGGER memories_ad AFTER DELETE ON memories BEGIN
179
+ DELETE FROM memories_fts WHERE rowid = old.id;
180
+ END;
181
+ `);
182
+ // Recreate indexes
183
+ db.exec(`
184
+ CREATE INDEX IF NOT EXISTS idx_memories_created_at ON memories(created_at DESC);
185
+ CREATE INDEX IF NOT EXISTS idx_memories_hash ON memories(hash);
186
+ `);
187
+ // Run ANALYZE to update query planner statistics
188
+ db.exec('ANALYZE');
189
+ debugLog('Migration 5: Deprecated tags column dropped successfully');
190
+ }
191
+ }
192
+ // Future migrations go here - just add to the array!
193
+ ];
194
+ /**
195
+ * Create backup before running migrations
196
+ */
197
+ function createBackup(dbPath) {
198
+ if (!existsSync(dbPath))
199
+ return;
200
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
201
+ const backupPath = `${dbPath}.backup-${timestamp}`;
202
+ try {
203
+ copyFileSync(dbPath, backupPath);
204
+ debugLog(`Backup created: ${backupPath}`);
205
+ }
206
+ catch (error) {
207
+ debugLog(`Warning: Could not create backup: ${error.message}`);
208
+ }
209
+ }
210
+ /**
211
+ * Run all pending migrations
212
+ * This is the only function you need to call - it handles everything
213
+ */
214
+ export function runMigrations(db, dbPath) {
215
+ // Ensure migration tracking table exists
216
+ db.exec(`
217
+ CREATE TABLE IF NOT EXISTS schema_migrations (
218
+ version INTEGER PRIMARY KEY,
219
+ description TEXT NOT NULL,
220
+ applied_at TEXT NOT NULL
221
+ )
222
+ `);
223
+ // Get current version
224
+ const result = db.prepare('SELECT MAX(version) as version FROM schema_migrations').get();
225
+ const currentVersion = result?.version || 0;
226
+ // Check if this is a fresh database (no migrations recorded)
227
+ const isFreshDatabase = currentVersion === 0;
228
+ // Find pending migrations
229
+ const pendingMigrations = migrations.filter(m => m.version > currentVersion);
230
+ if (pendingMigrations.length === 0) {
231
+ debugLog('Database schema is up to date');
232
+ return;
233
+ }
234
+ // For fresh databases, mark as current version without running migrations
235
+ // since initDb() already creates the latest schema
236
+ if (isFreshDatabase) {
237
+ const latestVersion = Math.max(...migrations.map(m => m.version));
238
+ debugLog(`Fresh database detected - marking as schema version ${latestVersion}`);
239
+ const recordMigration = db.prepare('INSERT INTO schema_migrations (version, description, applied_at) VALUES (?, ?, ?)');
240
+ const markAsCurrent = db.transaction(() => {
241
+ for (const migration of migrations) {
242
+ recordMigration.run(migration.version, migration.description + ' (baseline)', new Date().toISOString());
243
+ }
244
+ });
245
+ markAsCurrent();
246
+ debugLog('Database schema initialized at latest version');
247
+ return;
248
+ }
249
+ // For existing databases, run actual migrations
250
+ debugLog(`Found ${pendingMigrations.length} pending migration(s) for existing database`);
251
+ // Create backup before any changes (only for existing databases)
252
+ createBackup(dbPath);
253
+ // Record migration in tracking table
254
+ const recordMigration = db.prepare('INSERT INTO schema_migrations (version, description, applied_at) VALUES (?, ?, ?)');
255
+ // Run each pending migration in a transaction
256
+ for (const migration of pendingMigrations) {
257
+ debugLog(`Applying migration ${migration.version}: ${migration.description}`);
258
+ try {
259
+ const runMigration = db.transaction(() => {
260
+ migration.up(db);
261
+ recordMigration.run(migration.version, migration.description, new Date().toISOString());
262
+ });
263
+ runMigration();
264
+ debugLog(`āœ… Migration ${migration.version} completed successfully`);
265
+ }
266
+ catch (error) {
267
+ debugLog(`āŒ Migration ${migration.version} failed: ${error.message}`);
268
+ throw error; // Let it fail - backup exists for recovery
269
+ }
270
+ }
271
+ debugLog('All migrations completed successfully');
272
+ }
273
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/services/migrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=backup-export-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-export-test.d.ts","sourceRoot":"","sources":["../../src/tests/backup-export-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Test backup service with JSON export functionality
3
+ */
4
+ import { MemoryService } from '../services/memory-service.js';
5
+ import { unlinkSync, existsSync, readFileSync, readdirSync, rmdirSync } from 'fs';
6
+ import { join } from 'path';
7
+ const TEST_DB = './test-backup-export.db';
8
+ const BACKUP_DIR = './test-backup-exports';
9
+ // Clean up test files
10
+ function cleanup() {
11
+ try {
12
+ if (existsSync(TEST_DB))
13
+ unlinkSync(TEST_DB);
14
+ if (existsSync(TEST_DB + '-wal'))
15
+ unlinkSync(TEST_DB + '-wal');
16
+ if (existsSync(TEST_DB + '-shm'))
17
+ unlinkSync(TEST_DB + '-shm');
18
+ // Clean backup directory
19
+ if (existsSync(BACKUP_DIR)) {
20
+ const files = readdirSync(BACKUP_DIR);
21
+ for (const file of files) {
22
+ unlinkSync(join(BACKUP_DIR, file));
23
+ }
24
+ rmdirSync(BACKUP_DIR);
25
+ }
26
+ }
27
+ catch (error) {
28
+ // Ignore cleanup errors
29
+ }
30
+ }
31
+ async function testBackupExport() {
32
+ console.log('\n🧪 Testing Backup Service with JSON Export...\n');
33
+ cleanup();
34
+ // Set environment variables for backup
35
+ process.env.MEMORY_DB = TEST_DB;
36
+ process.env.MEMORY_BACKUP_PATH = BACKUP_DIR;
37
+ process.env.MEMORY_BACKUP_INTERVAL = '0'; // Backup on every write
38
+ try {
39
+ const memoryService = new MemoryService(TEST_DB);
40
+ memoryService.initialize();
41
+ console.log('āœ… Memory service initialized with backup enabled');
42
+ // Store some test memories
43
+ console.log('\nšŸ“ Storing test memories...');
44
+ const hash1 = memoryService.store('Test memory 1', ['test', 'backup']);
45
+ console.log(` Stored memory 1: ${hash1}`);
46
+ const hash2 = memoryService.store('Test memory 2 with more content', ['test', 'export']);
47
+ console.log(` Stored memory 2: ${hash2}`);
48
+ const hash3 = memoryService.store('Test memory 3 for relationships', ['test']);
49
+ console.log(` Stored memory 3: ${hash3}`);
50
+ // Add a relationship
51
+ memoryService.linkMemories(hash1, hash2, 'related');
52
+ console.log(' Added relationship between memory 1 and 2');
53
+ // Check if backup files were created
54
+ console.log('\nšŸ“ Checking backup directory...');
55
+ if (!existsSync(BACKUP_DIR)) {
56
+ console.error('āŒ Backup directory does not exist!');
57
+ process.exit(1);
58
+ }
59
+ const backupFiles = readdirSync(BACKUP_DIR).filter(f => f.endsWith('.json') && f.startsWith('smem_'));
60
+ console.log(` Found ${backupFiles.length} backup files`);
61
+ if (backupFiles.length === 0) {
62
+ console.error('āŒ No backup files created!');
63
+ process.exit(1);
64
+ }
65
+ // Read the most recent backup
66
+ const latestBackup = backupFiles.sort().reverse()[0];
67
+ console.log(` Latest backup: ${latestBackup}`);
68
+ const backupPath = join(BACKUP_DIR, latestBackup);
69
+ const backupContent = readFileSync(backupPath, 'utf-8');
70
+ const backupData = JSON.parse(backupContent);
71
+ console.log('\nšŸ” Validating backup content...');
72
+ console.log(` Export version: ${backupData.exportVersion}`);
73
+ console.log(` Total memories: ${backupData.totalMemories}`);
74
+ console.log(` Memories array length: ${backupData.memories?.length}`);
75
+ // Validate backup structure
76
+ if (!backupData.exportedAt) {
77
+ console.error('āŒ Missing exportedAt field');
78
+ process.exit(1);
79
+ }
80
+ if (!backupData.exportVersion) {
81
+ console.error('āŒ Missing exportVersion field');
82
+ process.exit(1);
83
+ }
84
+ if (backupData.totalMemories !== 3) {
85
+ console.error(`āŒ Expected 3 memories, got ${backupData.totalMemories}`);
86
+ process.exit(1);
87
+ }
88
+ if (!Array.isArray(backupData.memories)) {
89
+ console.error('āŒ Memories is not an array');
90
+ process.exit(1);
91
+ }
92
+ if (backupData.memories.length !== 3) {
93
+ console.error(`āŒ Expected 3 memories in array, got ${backupData.memories.length}`);
94
+ process.exit(1);
95
+ }
96
+ // Validate each memory has required fields
97
+ for (const memory of backupData.memories) {
98
+ if (!memory.id) {
99
+ console.error('āŒ Memory missing id field');
100
+ process.exit(1);
101
+ }
102
+ if (!memory.content) {
103
+ console.error('āŒ Memory missing content field');
104
+ process.exit(1);
105
+ }
106
+ if (!memory.hash) {
107
+ console.error('āŒ Memory missing hash field');
108
+ process.exit(1);
109
+ }
110
+ if (!Array.isArray(memory.tags)) {
111
+ console.error('āŒ Memory tags is not an array');
112
+ process.exit(1);
113
+ }
114
+ if (!memory.createdAt) {
115
+ console.error('āŒ Memory missing createdAt field');
116
+ process.exit(1);
117
+ }
118
+ }
119
+ // Check for relationships in backup
120
+ const memoryWithRelationship = backupData.memories.find((m) => m.hash === hash1 || m.hash === hash2);
121
+ if (memoryWithRelationship && memoryWithRelationship.relationships) {
122
+ console.log(` āœ… Relationships preserved in backup`);
123
+ }
124
+ else {
125
+ console.log(` āš ļø No relationships found in backup (this might be expected)`);
126
+ }
127
+ console.log('\nšŸ“Š Backup content sample:');
128
+ console.log(JSON.stringify(backupData.memories[0], null, 2));
129
+ // Test manual backup
130
+ console.log('\nšŸ’¾ Testing manual backup...');
131
+ const manualBackupPath = memoryService.createBackup('manual-test');
132
+ if (manualBackupPath) {
133
+ console.log(` āœ… Manual backup created: ${manualBackupPath}`);
134
+ const manualContent = readFileSync(manualBackupPath, 'utf-8');
135
+ const manualData = JSON.parse(manualContent);
136
+ if (manualData.totalMemories !== 3) {
137
+ console.error(`āŒ Manual backup has wrong count: ${manualData.totalMemories}`);
138
+ process.exit(1);
139
+ }
140
+ }
141
+ else {
142
+ console.error('āŒ Manual backup failed');
143
+ process.exit(1);
144
+ }
145
+ memoryService.close();
146
+ console.log('\nāœ… All backup export tests passed!');
147
+ console.log('šŸŽ‰ Backup service is correctly exporting to JSON format\n');
148
+ }
149
+ catch (error) {
150
+ console.error('\nāŒ Test failed:', error.message);
151
+ console.error(error.stack);
152
+ process.exit(1);
153
+ }
154
+ finally {
155
+ cleanup();
156
+ delete process.env.MEMORY_DB;
157
+ delete process.env.MEMORY_BACKUP_PATH;
158
+ delete process.env.MEMORY_BACKUP_INTERVAL;
159
+ }
160
+ }
161
+ testBackupExport();
162
+ //# sourceMappingURL=backup-export-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-export-test.js","sourceRoot":"","sources":["../../src/tests/backup-export-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Backup Service Test Suite
3
+ *
4
+ * Tests the backup service which now exports memories as JSON files:
5
+ * - Automatic backup on write operations
6
+ * - Backup throttling (interval-based)
7
+ * - Backup file cleanup (max backups)
8
+ * - JSON export format validation
9
+ * - Source identifier support
10
+ * - Manual backup creation
11
+ */
12
+ declare function runTests(): Promise<void>;
13
+ export { runTests };
14
+ //# sourceMappingURL=backup-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-test.d.ts","sourceRoot":"","sources":["../../src/tests/backup-test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+FH,iBAAe,QAAQ,kBA+ItB;AAeD,OAAO,EAAE,QAAQ,EAAE,CAAC"}