@j0hanz/memdb 1.0.7 → 1.0.9

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 (142) hide show
  1. package/README.md +55 -26
  2. package/package.json +5 -6
  3. package/dist/core/database.d.ts +0 -4
  4. package/dist/core/database.d.ts.map +0 -1
  5. package/dist/core/database.js +0 -81
  6. package/dist/core/database.js.map +0 -1
  7. package/dist/core/db-helpers.d.ts +0 -10
  8. package/dist/core/db-helpers.d.ts.map +0 -1
  9. package/dist/core/db-helpers.js +0 -17
  10. package/dist/core/db-helpers.js.map +0 -1
  11. package/dist/core/db-worker-client.d.ts +0 -8
  12. package/dist/core/db-worker-client.d.ts.map +0 -1
  13. package/dist/core/db-worker-client.js +0 -67
  14. package/dist/core/db-worker-client.js.map +0 -1
  15. package/dist/core/db-worker-protocol.d.ts +0 -77
  16. package/dist/core/db-worker-protocol.d.ts.map +0 -1
  17. package/dist/core/db-worker-protocol.js +0 -2
  18. package/dist/core/db-worker-protocol.js.map +0 -1
  19. package/dist/core/db-worker.d.ts +0 -2
  20. package/dist/core/db-worker.d.ts.map +0 -1
  21. package/dist/core/db-worker.js +0 -73
  22. package/dist/core/db-worker.js.map +0 -1
  23. package/dist/core/memory-helpers.d.ts +0 -3
  24. package/dist/core/memory-helpers.d.ts.map +0 -1
  25. package/dist/core/memory-helpers.js +0 -18
  26. package/dist/core/memory-helpers.js.map +0 -1
  27. package/dist/core/memory-mappers.d.ts +0 -11
  28. package/dist/core/memory-mappers.d.ts.map +0 -1
  29. package/dist/core/memory-mappers.js +0 -52
  30. package/dist/core/memory-mappers.js.map +0 -1
  31. package/dist/core/memory-search.d.ts +0 -9
  32. package/dist/core/memory-search.d.ts.map +0 -1
  33. package/dist/core/memory-search.js +0 -46
  34. package/dist/core/memory-search.js.map +0 -1
  35. package/dist/core/memory-service-core.d.ts +0 -9
  36. package/dist/core/memory-service-core.d.ts.map +0 -1
  37. package/dist/core/memory-service-core.js +0 -229
  38. package/dist/core/memory-service-core.js.map +0 -1
  39. package/dist/core/memory-service.d.ts +0 -11
  40. package/dist/core/memory-service.d.ts.map +0 -1
  41. package/dist/core/memory-service.js +0 -83
  42. package/dist/core/memory-service.js.map +0 -1
  43. package/dist/core/memory-stats.d.ts +0 -3
  44. package/dist/core/memory-stats.d.ts.map +0 -1
  45. package/dist/core/memory-stats.js +0 -44
  46. package/dist/core/memory-stats.js.map +0 -1
  47. package/dist/core/memory-types.d.ts +0 -18
  48. package/dist/core/memory-types.d.ts.map +0 -1
  49. package/dist/core/memory-types.js +0 -2
  50. package/dist/core/memory-types.js.map +0 -1
  51. package/dist/core/memory-updates.d.ts +0 -11
  52. package/dist/core/memory-updates.d.ts.map +0 -1
  53. package/dist/core/memory-updates.js +0 -102
  54. package/dist/core/memory-updates.js.map +0 -1
  55. package/dist/core/relation-queries.d.ts +0 -8
  56. package/dist/core/relation-queries.d.ts.map +0 -1
  57. package/dist/core/relation-queries.js +0 -107
  58. package/dist/core/relation-queries.js.map +0 -1
  59. package/dist/core/row-mappers.d.ts +0 -7
  60. package/dist/core/row-mappers.d.ts.map +0 -1
  61. package/dist/core/row-mappers.js +0 -52
  62. package/dist/core/row-mappers.js.map +0 -1
  63. package/dist/core/search-errors.d.ts +0 -2
  64. package/dist/core/search-errors.d.ts.map +0 -1
  65. package/dist/core/search-errors.js +0 -21
  66. package/dist/core/search-errors.js.map +0 -1
  67. package/dist/core/search.d.ts +0 -9
  68. package/dist/core/search.d.ts.map +0 -1
  69. package/dist/core/search.js +0 -57
  70. package/dist/core/search.js.map +0 -1
  71. package/dist/core/tag-helpers.d.ts +0 -2
  72. package/dist/core/tag-helpers.d.ts.map +0 -1
  73. package/dist/core/tag-helpers.js +0 -22
  74. package/dist/core/tag-helpers.js.map +0 -1
  75. package/dist/index.d.ts +0 -3
  76. package/dist/index.d.ts.map +0 -1
  77. package/dist/index.js +0 -131
  78. package/dist/index.js.map +0 -1
  79. package/dist/lib/errors.d.ts +0 -20
  80. package/dist/lib/errors.d.ts.map +0 -1
  81. package/dist/lib/errors.js +0 -20
  82. package/dist/lib/errors.js.map +0 -1
  83. package/dist/lib/tool_response.d.ts +0 -5
  84. package/dist/lib/tool_response.d.ts.map +0 -1
  85. package/dist/lib/tool_response.js +0 -7
  86. package/dist/lib/tool_response.js.map +0 -1
  87. package/dist/schemas/inputs.d.ts +0 -52
  88. package/dist/schemas/inputs.d.ts.map +0 -1
  89. package/dist/schemas/inputs.js +0 -134
  90. package/dist/schemas/inputs.js.map +0 -1
  91. package/dist/schemas/outputs.d.ts +0 -10
  92. package/dist/schemas/outputs.d.ts.map +0 -1
  93. package/dist/schemas/outputs.js +0 -30
  94. package/dist/schemas/outputs.js.map +0 -1
  95. package/dist/tools/delete-memory.d.ts +0 -3
  96. package/dist/tools/delete-memory.d.ts.map +0 -1
  97. package/dist/tools/delete-memory.js +0 -32
  98. package/dist/tools/delete-memory.js.map +0 -1
  99. package/dist/tools/get-memory.d.ts +0 -3
  100. package/dist/tools/get-memory.d.ts.map +0 -1
  101. package/dist/tools/get-memory.js +0 -32
  102. package/dist/tools/get-memory.js.map +0 -1
  103. package/dist/tools/get-related.d.ts +0 -3
  104. package/dist/tools/get-related.d.ts.map +0 -1
  105. package/dist/tools/get-related.js +0 -29
  106. package/dist/tools/get-related.js.map +0 -1
  107. package/dist/tools/index.d.ts +0 -3
  108. package/dist/tools/index.d.ts.map +0 -1
  109. package/dist/tools/index.js +0 -147
  110. package/dist/tools/index.js.map +0 -1
  111. package/dist/tools/link-memories.d.ts +0 -3
  112. package/dist/tools/link-memories.d.ts.map +0 -1
  113. package/dist/tools/link-memories.js +0 -29
  114. package/dist/tools/link-memories.js.map +0 -1
  115. package/dist/tools/memory-stats.d.ts +0 -3
  116. package/dist/tools/memory-stats.d.ts.map +0 -1
  117. package/dist/tools/memory-stats.js +0 -28
  118. package/dist/tools/memory-stats.js.map +0 -1
  119. package/dist/tools/search-memories.d.ts +0 -3
  120. package/dist/tools/search-memories.d.ts.map +0 -1
  121. package/dist/tools/search-memories.js +0 -29
  122. package/dist/tools/search-memories.js.map +0 -1
  123. package/dist/tools/store-memory.d.ts +0 -3
  124. package/dist/tools/store-memory.d.ts.map +0 -1
  125. package/dist/tools/store-memory.js +0 -29
  126. package/dist/tools/store-memory.js.map +0 -1
  127. package/dist/types/index.d.ts +0 -38
  128. package/dist/types/index.d.ts.map +0 -1
  129. package/dist/types/index.js +0 -2
  130. package/dist/types/index.js.map +0 -1
  131. package/dist/utils/config.d.ts +0 -10
  132. package/dist/utils/config.d.ts.map +0 -1
  133. package/dist/utils/config.js +0 -75
  134. package/dist/utils/config.js.map +0 -1
  135. package/dist/utils/logger.d.ts +0 -10
  136. package/dist/utils/logger.d.ts.map +0 -1
  137. package/dist/utils/logger.js +0 -21
  138. package/dist/utils/logger.js.map +0 -1
  139. package/dist/utils/protocol.d.ts +0 -2
  140. package/dist/utils/protocol.d.ts.map +0 -1
  141. package/dist/utils/protocol.js +0 -7
  142. package/dist/utils/protocol.js.map +0 -1
@@ -1,102 +0,0 @@
1
- import { db } from './database.js';
2
- import { executeAll, executeRun, withImmediateTransaction, } from './db-helpers.js';
3
- import { findMemoryIdByHash, insertTags } from './memory-helpers.js';
4
- import { normalizeTags } from './tag-helpers.js';
5
- const MAX_TAGS = 100;
6
- const loadTagsForMemory = (memoryId) => {
7
- const rows = executeAll(db.prepare('SELECT tag FROM tags WHERE memory_id = ?'), memoryId);
8
- const tags = new Set();
9
- for (const row of rows) {
10
- if (typeof row.tag !== 'string') {
11
- throw new Error('Invalid tag');
12
- }
13
- tags.add(row.tag);
14
- }
15
- return tags;
16
- };
17
- const updateMetadataFields = (memoryId, options) => {
18
- if (options.importance === undefined && options.memoryType === undefined) {
19
- return;
20
- }
21
- const updates = [];
22
- const params = [];
23
- if (options.importance !== undefined) {
24
- updates.push('importance = ?');
25
- params.push(options.importance);
26
- }
27
- if (options.memoryType !== undefined) {
28
- updates.push('memory_type = ?');
29
- params.push(options.memoryType);
30
- }
31
- params.push(memoryId);
32
- executeRun(db.prepare(`UPDATE memories SET ${updates.join(', ')} WHERE id = ?`), ...params);
33
- };
34
- const replaceTags = (memoryId, tags) => {
35
- executeRun(db.prepare('DELETE FROM tags WHERE memory_id = ?'), memoryId);
36
- insertTags(memoryId, normalizeTags(tags, MAX_TAGS));
37
- };
38
- const filterTagsToInsert = (tags, removeTags) => {
39
- if (removeTags.length === 0)
40
- return [...tags];
41
- const removeSet = new Set(removeTags);
42
- return tags.filter((tag) => !removeSet.has(tag));
43
- };
44
- const removeTagsFromSet = (tags, tagSet) => {
45
- for (const tag of tags) {
46
- tagSet.delete(tag);
47
- }
48
- };
49
- const enforceTagLimit = (existingTags, tagsToInsert, maxTags) => {
50
- let projectedCount = existingTags.size;
51
- for (const tag of tagsToInsert) {
52
- if (existingTags.has(tag))
53
- continue;
54
- projectedCount += 1;
55
- if (projectedCount > maxTags) {
56
- throw new Error('Too many tags (max ' + String(maxTags) + ')');
57
- }
58
- existingTags.add(tag);
59
- }
60
- };
61
- const addTagsToMemory = (memoryId, tags, removeTags = []) => {
62
- if (tags.length === 0)
63
- return;
64
- const normalizedTags = normalizeTags(tags, MAX_TAGS);
65
- const tagsToInsert = filterTagsToInsert(normalizedTags, removeTags);
66
- if (tagsToInsert.length === 0)
67
- return;
68
- const existingTags = loadTagsForMemory(memoryId);
69
- removeTagsFromSet(removeTags, existingTags);
70
- enforceTagLimit(existingTags, tagsToInsert, MAX_TAGS);
71
- insertTags(memoryId, tagsToInsert);
72
- };
73
- const removeTagsFromMemory = (memoryId, tags) => {
74
- if (tags.length === 0)
75
- return;
76
- const placeholders = tags.map(() => '?').join(', ');
77
- const stmt = db.prepare(`DELETE FROM tags WHERE memory_id = ? AND tag IN (${placeholders})`);
78
- executeRun(stmt, memoryId, ...tags);
79
- };
80
- const updateTags = (memoryId, options) => {
81
- if (options.tags !== undefined) {
82
- replaceTags(memoryId, options.tags);
83
- return;
84
- }
85
- if (options.addTags !== undefined) {
86
- addTagsToMemory(memoryId, options.addTags, options.removeTags ?? []);
87
- }
88
- if (options.removeTags !== undefined) {
89
- removeTagsFromMemory(memoryId, options.removeTags);
90
- }
91
- };
92
- export const updateMemory = (hash, options) => {
93
- const memoryId = findMemoryIdByHash(hash);
94
- if (memoryId === undefined)
95
- throw new Error('Memory not found');
96
- return withImmediateTransaction(() => {
97
- updateMetadataFields(memoryId, options);
98
- updateTags(memoryId, options);
99
- return { updated: true, hash };
100
- });
101
- };
102
- //# sourceMappingURL=memory-updates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-updates.js","sourceRoot":"","sources":["../../src/core/memory-updates.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { RelatedMemory } from '../types/index.js';
2
- export declare const queryOutgoingDirect: (memoryId: number, relationType?: string) => RelatedMemory[];
3
- export declare const queryIncomingDirect: (memoryId: number, relationType?: string) => RelatedMemory[];
4
- export declare const queryBothDirect: (memoryId: number, relationType?: string) => RelatedMemory[];
5
- export declare const queryOutgoingRecursive: (memoryId: number, relationType: string | undefined, maxDepth: number) => RelatedMemory[];
6
- export declare const queryIncomingRecursive: (memoryId: number, relationType: string | undefined, maxDepth: number) => RelatedMemory[];
7
- export declare const deduplicateByHash: (memories: RelatedMemory[]) => RelatedMemory[];
8
- //# sourceMappingURL=relation-queries.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relation-queries.d.ts","sourceRoot":"","sources":["../../src/core/relation-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAiBvD,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,EAChB,eAAe,MAAM,KACpB,aAAa,EAUf,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,EAChB,eAAe,MAAM,KACpB,aAAa,EAUf,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,eAAe,MAAM,KACpB,aAAa,EAef,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAChB,cAAc,MAAM,GAAG,SAAS,EAChC,UAAU,MAAM,KACf,aAAa,EAwBf,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAChB,cAAc,MAAM,GAAG,SAAS,EAChC,UAAU,MAAM,KACf,aAAa,EAwBf,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,aAAa,EAAE,KACxB,aAAa,EAWf,CAAC"}
@@ -1,107 +0,0 @@
1
- import { db } from './database.js';
2
- import { mapRowToRelatedMemory } from './row-mappers.js';
3
- const typeFilter = (relationType) => relationType
4
- ? { clause: ' AND r.relation_type = ?', params: [relationType] }
5
- : { clause: '', params: [] };
6
- const run = (sql, params) => db.prepare(sql).all(...params).map((row) => mapRowToRelatedMemory(row));
7
- export const queryOutgoingDirect = (memoryId, relationType) => {
8
- const { clause, params } = typeFilter(relationType);
9
- const sql = `
10
- SELECT m.*, r.relation_type as relation_type, 1 as depth
11
- FROM memories m
12
- JOIN relationships r ON m.id = r.to_memory_id
13
- WHERE r.from_memory_id = ?${clause}
14
- LIMIT 1000
15
- `;
16
- return run(sql, [memoryId, ...params]);
17
- };
18
- export const queryIncomingDirect = (memoryId, relationType) => {
19
- const { clause, params } = typeFilter(relationType);
20
- const sql = `
21
- SELECT m.*, r.relation_type as relation_type, 1 as depth
22
- FROM memories m
23
- JOIN relationships r ON m.id = r.from_memory_id
24
- WHERE r.to_memory_id = ?${clause}
25
- LIMIT 1000
26
- `;
27
- return run(sql, [memoryId, ...params]);
28
- };
29
- export const queryBothDirect = (memoryId, relationType) => {
30
- const { clause, params } = typeFilter(relationType);
31
- const sql = `
32
- SELECT m.*, r.relation_type as relation_type, 1 as depth
33
- FROM memories m
34
- JOIN relationships r ON m.id = r.to_memory_id
35
- WHERE r.from_memory_id = ?${clause}
36
- UNION
37
- SELECT m.*, r.relation_type as relation_type, 1 as depth
38
- FROM memories m
39
- JOIN relationships r ON m.id = r.from_memory_id
40
- WHERE r.to_memory_id = ?${clause}
41
- LIMIT 1000
42
- `;
43
- return run(sql, [memoryId, ...params, memoryId, ...params]);
44
- };
45
- export const queryOutgoingRecursive = (memoryId, relationType, maxDepth) => {
46
- const { clause, params } = typeFilter(relationType);
47
- const sql = `
48
- WITH RECURSIVE rels(depth, from_id, to_id, relation_type) AS (
49
- SELECT 1, r.from_memory_id, r.to_memory_id, r.relation_type
50
- FROM relationships r
51
- WHERE r.from_memory_id = ?${clause}
52
- UNION ALL
53
- SELECT rels.depth + 1, r.from_memory_id, r.to_memory_id, r.relation_type
54
- FROM relationships r
55
- JOIN rels ON r.from_memory_id = rels.to_id
56
- WHERE rels.depth < ?${clause}
57
- )
58
- SELECT m.*, rels.relation_type as relation_type, MIN(rels.depth) as depth
59
- FROM rels
60
- JOIN memories m ON m.id = rels.to_id
61
- GROUP BY m.id, rels.relation_type
62
- ORDER BY depth, m.id
63
- LIMIT 1000
64
- `;
65
- const sqlParams = relationType
66
- ? [memoryId, ...params, maxDepth, ...params]
67
- : [memoryId, maxDepth];
68
- return run(sql, sqlParams);
69
- };
70
- export const queryIncomingRecursive = (memoryId, relationType, maxDepth) => {
71
- const { clause, params } = typeFilter(relationType);
72
- const sql = `
73
- WITH RECURSIVE rels(depth, from_id, to_id, relation_type) AS (
74
- SELECT 1, r.from_memory_id, r.to_memory_id, r.relation_type
75
- FROM relationships r
76
- WHERE r.to_memory_id = ?${clause}
77
- UNION ALL
78
- SELECT rels.depth + 1, r.from_memory_id, r.to_memory_id, r.relation_type
79
- FROM relationships r
80
- JOIN rels ON r.to_memory_id = rels.from_id
81
- WHERE rels.depth < ?${clause}
82
- )
83
- SELECT m.*, rels.relation_type as relation_type, MIN(rels.depth) as depth
84
- FROM rels
85
- JOIN memories m ON m.id = rels.from_id
86
- GROUP BY m.id, rels.relation_type
87
- ORDER BY depth, m.id
88
- LIMIT 1000
89
- `;
90
- const sqlParams = relationType
91
- ? [memoryId, ...params, maxDepth, ...params]
92
- : [memoryId, maxDepth];
93
- return run(sql, sqlParams);
94
- };
95
- export const deduplicateByHash = (memories) => {
96
- const seen = new Map();
97
- for (const mem of memories) {
98
- const existing = seen.get(mem.hash);
99
- if (!existing || mem.depth < existing.depth) {
100
- seen.set(mem.hash, mem);
101
- }
102
- }
103
- return [...seen.values()]
104
- .sort((a, b) => a.depth - b.depth || a.id - b.id)
105
- .slice(0, 1000);
106
- };
107
- //# sourceMappingURL=relation-queries.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relation-queries.js","sourceRoot":"","sources":["../../src/core/relation-queries.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { Memory, RelatedMemory, SearchResult } from '../types/index.js';
2
- export type DbRow = Record<string, unknown>;
3
- export declare const toSafeInteger: (value: unknown, field: string) => number;
4
- export declare const mapRowToMemory: (row: DbRow) => Memory;
5
- export declare const mapRowToSearchResult: (row: DbRow) => SearchResult;
6
- export declare const mapRowToRelatedMemory: (row: DbRow) => RelatedMemory;
7
- //# sourceMappingURL=row-mappers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"row-mappers.d.ts","sourceRoot":"","sources":["../../src/core/row-mappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE7E,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAW5C,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,EAAE,OAAO,MAAM,KAAG,MAM7D,CAAC;AAuBF,eAAO,MAAM,cAAc,GAAI,KAAK,KAAK,KAAG,MAS1C,CAAC;AAEH,eAAO,MAAM,oBAAoB,GAAI,KAAK,KAAK,KAAG,YAGhD,CAAC;AAEH,eAAO,MAAM,qBAAqB,GAAI,KAAK,KAAK,KAAG,aAIjD,CAAC"}
@@ -1,52 +0,0 @@
1
- const toNumber = (value, field) => {
2
- if (typeof value === 'number' && Number.isFinite(value))
3
- return value;
4
- if (typeof value === 'bigint') {
5
- const numeric = Number(value);
6
- if (Number.isFinite(numeric))
7
- return numeric;
8
- }
9
- throw new Error(`Invalid ${field}`);
10
- };
11
- export const toSafeInteger = (value, field) => {
12
- const numeric = toNumber(value, field);
13
- if (!Number.isSafeInteger(numeric)) {
14
- throw new Error(`Invalid ${field}`);
15
- }
16
- return numeric;
17
- };
18
- const toString = (value, field) => {
19
- if (typeof value === 'string')
20
- return value;
21
- throw new Error(`Invalid ${field}`);
22
- };
23
- const toOptionalString = (value, field) => {
24
- if (value === null || value === undefined)
25
- return undefined;
26
- return toString(value, field);
27
- };
28
- const toOptionalNumber = (value, field) => {
29
- if (value === null || value === undefined)
30
- return undefined;
31
- return toNumber(value, field);
32
- };
33
- export const mapRowToMemory = (row) => ({
34
- id: toSafeInteger(row.id, 'id'),
35
- content: toString(row.content, 'content'),
36
- summary: toOptionalString(row.summary, 'summary'),
37
- importance: toSafeInteger(row.importance, 'importance'),
38
- memory_type: toString(row.memory_type, 'memory_type'),
39
- created_at: toString(row.created_at, 'created_at'),
40
- accessed_at: toString(row.accessed_at, 'accessed_at'),
41
- hash: toString(row.hash, 'hash'),
42
- });
43
- export const mapRowToSearchResult = (row) => ({
44
- ...mapRowToMemory(row),
45
- relevance: toOptionalNumber(row.relevance, 'relevance') ?? 0,
46
- });
47
- export const mapRowToRelatedMemory = (row) => ({
48
- ...mapRowToMemory(row),
49
- relation_type: toString(row.relation_type, 'relation_type'),
50
- depth: toSafeInteger(row.depth, 'depth'),
51
- });
52
- //# sourceMappingURL=row-mappers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"row-mappers.js","sourceRoot":"","sources":["../../src/core/row-mappers.ts"],"names":[],"mappings":"AAIA,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,KAAa,EAAU,EAAE;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;IAC/C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAE,KAAa,EAAU,EAAE;IACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,KAAa,EAAU,EAAE;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,KAAc,EACd,KAAa,EACO,EAAE;IACtB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,KAAc,EACd,KAAa,EACO,EAAE;IACtB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAU,EAAU,EAAE,CAAC,CAAC;IACrD,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;IAC/B,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC;IACzC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC;IACjD,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC;IACvD,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC;IACrD,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC;IAClD,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC;IACrD,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAU,EAAgB,EAAE,CAAC,CAAC;IACjE,GAAG,cAAc,CAAC,GAAG,CAAC;IACtB,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAU,EAAiB,EAAE,CAAC,CAAC;IACnE,GAAG,cAAc,CAAC,GAAG,CAAC;IACtB,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC;IAC3D,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC;CACzC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const toSearchError: (err: unknown) => Error | undefined;
2
- //# sourceMappingURL=search-errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-errors.d.ts","sourceRoot":"","sources":["../../src/core/search-errors.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,aAAa,GAAI,KAAK,OAAO,KAAG,KAAK,GAAG,SAgBpD,CAAC"}
@@ -1,21 +0,0 @@
1
- const INDEX_MISSING_TOKENS = [
2
- 'no such module: fts5',
3
- 'no such table: memories_fts',
4
- ];
5
- const QUERY_INVALID_TOKENS = ['fts5', 'syntax error'];
6
- const isSearchIndexMissing = (message) => INDEX_MISSING_TOKENS.some((token) => message.includes(token));
7
- const isSearchQueryInvalid = (message) => QUERY_INVALID_TOKENS.some((token) => message.includes(token));
8
- export const toSearchError = (err) => {
9
- const message = err instanceof Error ? err.message : String(err);
10
- if (isSearchIndexMissing(message)) {
11
- return new Error('Search index unavailable. Ensure FTS5 is enabled and the index is ' +
12
- 'initialized.');
13
- }
14
- if (isSearchQueryInvalid(message)) {
15
- return new Error('Invalid search query syntax. Check for unbalanced quotes or special ' +
16
- 'characters. ' +
17
- `Details: ${message}`);
18
- }
19
- return undefined;
20
- };
21
- //# sourceMappingURL=search-errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-errors.js","sourceRoot":"","sources":["../../src/core/search-errors.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GAAG;IAC3B,sBAAsB;IACtB,6BAA6B;CAC9B,CAAC;AACF,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAEtD,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAW,EAAE,CACxD,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAEhE,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAW,EAAE,CACxD,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAY,EAAqB,EAAE;IAC/D,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,KAAK,CACd,oEAAoE;YAClE,cAAc,CACjB,CAAC;IACJ,CAAC;IACD,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,KAAK,CACd,sEAAsE;YACpE,cAAc;YACd,YAAY,OAAO,EAAE,CACxB,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { DbRow } from './row-mappers.js';
2
- interface SearchQuery {
3
- sql: string;
4
- params: (number | string)[];
5
- }
6
- export declare const buildSearchQuery: (query: string, limit: number, tags: readonly string[], minRelevance?: number, offset?: number) => SearchQuery;
7
- export declare const executeSearch: (sql: string, params: (number | string)[]) => DbRow[];
8
- export {};
9
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7B;AAWD,eAAO,MAAM,gBAAgB,GAC3B,OAAO,MAAM,EACb,OAAO,MAAM,EACb,MAAM,SAAS,MAAM,EAAE,EACvB,eAAe,MAAM,EACrB,SAAS,MAAM,KACd,WAuCF,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,KAAK,MAAM,EACX,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAC1B,KAAK,EAWP,CAAC"}
@@ -1,57 +0,0 @@
1
- import { db } from './database.js';
2
- import { executeAll } from './db-helpers.js';
3
- import { toSearchError } from './search-errors.js';
4
- const tokenizeQuery = (query) => {
5
- const tokens = query
6
- .trim()
7
- .split(/\s+/)
8
- .filter((w) => w.length > 0)
9
- .map((t) => `"${t.replace(/"/g, '""')}"`);
10
- return tokens.length > 0 ? tokens.join(' OR ') : '""';
11
- };
12
- export const buildSearchQuery = (query, limit, tags, minRelevance, offset) => {
13
- const sanitizedQuery = tokenizeQuery(query);
14
- const relevanceExpr = '1.0 / (1.0 + abs(bm25(memories_fts)))';
15
- const whereParts = ['memories_fts MATCH ?'];
16
- const params = [sanitizedQuery];
17
- if (tags.length > 0) {
18
- whereParts.push(`m.id IN (SELECT memory_id FROM tags WHERE tag IN (${tags
19
- .map(() => '?')
20
- .join(', ')}))`);
21
- params.push(...tags);
22
- }
23
- let sql = `
24
- WITH ranked AS (
25
- SELECT m.*, ${relevanceExpr} as relevance
26
- FROM memories m
27
- JOIN memories_fts fts ON m.id = fts.rowid
28
- WHERE ${whereParts.join(' AND ')}
29
- )
30
- SELECT * FROM ranked
31
- `;
32
- if (minRelevance !== undefined) {
33
- sql += ' WHERE relevance >= ?';
34
- params.push(minRelevance);
35
- }
36
- sql += ' ORDER BY relevance DESC LIMIT ?';
37
- params.push(limit);
38
- if (offset !== undefined && offset > 0) {
39
- sql += ' OFFSET ?';
40
- params.push(offset);
41
- }
42
- return { sql, params };
43
- };
44
- export const executeSearch = (sql, params) => {
45
- try {
46
- const stmt = db.prepare(sql);
47
- return executeAll(stmt, ...params);
48
- }
49
- catch (err) {
50
- const mappedError = toSearchError(err);
51
- if (mappedError) {
52
- throw mappedError;
53
- }
54
- throw err;
55
- }
56
- };
57
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE;IAC9C,MAAM,MAAM,GAAG,KAAK;SACjB,IAAI,EAAE;SACN,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,KAAa,EACb,KAAa,EACb,IAAuB,EACvB,YAAqB,EACrB,MAAe,EACF,EAAE;IACf,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,uCAAuC,CAAC;IAC9D,MAAM,UAAU,GAAa,CAAC,sBAAsB,CAAC,CAAC;IACtD,MAAM,MAAM,GAAwB,CAAC,cAAc,CAAC,CAAC;IAErD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,UAAU,CAAC,IAAI,CACb,qDAAqD,IAAI;aACtD,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;aACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAClB,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,GAAG,GAAG;;oBAEQ,aAAa;;;cAGnB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;;GAGnC,CAAC;IAEF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,GAAG,IAAI,uBAAuB,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,IAAI,kCAAkC,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEnB,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,GAAG,IAAI,WAAW,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAW,EACX,MAA2B,EAClB,EAAE;IACX,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC;QACpB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const normalizeTags: (tags: readonly string[], maxTags: number) => string[];
2
- //# sourceMappingURL=tag-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tag-helpers.d.ts","sourceRoot":"","sources":["../../src/core/tag-helpers.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,aAAa,GACxB,MAAM,SAAS,MAAM,EAAE,EACvB,SAAS,MAAM,KACd,MAAM,EAWR,CAAC"}
@@ -1,22 +0,0 @@
1
- const validateTag = (tag) => {
2
- if (tag.length === 0) {
3
- throw new Error('Tag must be at least 1 character');
4
- }
5
- if (tag.length > 50) {
6
- throw new Error('Tag exceeds 50 characters');
7
- }
8
- };
9
- export const normalizeTags = (tags, maxTags) => {
10
- if (tags.length === 0)
11
- return [];
12
- if (tags.length > maxTags) {
13
- throw new Error('Too many tags (max ' + String(maxTags) + ')');
14
- }
15
- const seen = new Set();
16
- for (const tag of tags) {
17
- validateTag(tag);
18
- seen.add(tag);
19
- }
20
- return [...seen];
21
- };
22
- //# sourceMappingURL=tag-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tag-helpers.js","sourceRoot":"","sources":["../../src/core/tag-helpers.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,CAAC,GAAW,EAAQ,EAAE;IACxC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAuB,EACvB,OAAe,EACL,EAAE;IACZ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js DELETED
@@ -1,131 +0,0 @@
1
- #!/usr/bin/env node
2
- import { readFile } from 'node:fs/promises';
3
- import process from 'node:process';
4
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
6
- import { ErrorCode, InitializeRequestSchema, isJSONRPCRequest, } from '@modelcontextprotocol/sdk/types.js';
7
- import { closeDb } from './core/database.js';
8
- import { createErrorResponse } from './lib/errors.js';
9
- import { registerAllTools } from './tools/index.js';
10
- import { config } from './utils/config.js';
11
- import { logger } from './utils/logger.js';
12
- import { assertSupportedProtocolVersion } from './utils/protocol.js';
13
- const packageJson = JSON.parse(await readFile(new URL('../package.json', import.meta.url), 'utf-8'));
14
- const server = new McpServer({ name: 'memdb', version: packageJson.version ?? '0.0.0' }, {
15
- instructions: 'A Memory MCP Server for AI Assistants using node:sqlite',
16
- capabilities: { logging: {} },
17
- });
18
- let hasInitialized = false;
19
- const sendInitRequiredError = (inner, message, guarded) => {
20
- void inner
21
- .send({
22
- jsonrpc: '2.0',
23
- id: message.id,
24
- error: {
25
- code: ErrorCode.InvalidRequest,
26
- message: 'Initialize must be the first request.',
27
- },
28
- })
29
- .catch((error) => {
30
- const err = error instanceof Error ? error : new Error(String(error));
31
- guarded.onerror?.(err);
32
- });
33
- };
34
- const handleInitGuardMessage = (message, isInitialized, inner, guarded) => {
35
- if (!isInitialized() && isJSONRPCRequest(message)) {
36
- if (message.method !== 'initialize') {
37
- sendInitRequiredError(inner, message, guarded);
38
- return;
39
- }
40
- }
41
- guarded.onmessage?.(message);
42
- };
43
- const createInitGuardTransport = (inner, isInitialized) => {
44
- const guarded = {
45
- onmessage: () => undefined,
46
- start: async () => inner.start(),
47
- send: async (message) => inner.send(message),
48
- close: async () => inner.close(),
49
- };
50
- inner.onmessage = (message) => {
51
- handleInitGuardMessage(message, isInitialized, inner, guarded);
52
- };
53
- inner.onerror = (error) => {
54
- guarded.onerror?.(error);
55
- };
56
- inner.onclose = () => {
57
- guarded.onclose?.();
58
- };
59
- return guarded;
60
- };
61
- // HACK: Accessing internal _oninitialize to intercept protocol version validation.
62
- // This is necessary because the MCP SDK doesn't expose a public hook for this.
63
- // Tested with @modelcontextprotocol/sdk ^1.25.1. May break on major SDK updates.
64
- // Runtime check below ensures graceful failure if SDK internals change.
65
- const serverCore = server.server;
66
- const onInitialize = serverCore._oninitialize;
67
- if (!onInitialize) {
68
- throw new Error('MCP SDK server initialize handler is unavailable');
69
- }
70
- server.server.setRequestHandler(InitializeRequestSchema, async (request) => {
71
- assertSupportedProtocolVersion(request.params.protocolVersion);
72
- const result = await onInitialize.call(server.server, request);
73
- hasInitialized = true;
74
- return result;
75
- });
76
- const serverWithToolError = server;
77
- serverWithToolError.createToolError = (message) => createErrorResponse('E_TOOL_ERROR', message);
78
- registerAllTools(server);
79
- let transport;
80
- let shuttingDown = false;
81
- async function shutdown(signal) {
82
- if (shuttingDown)
83
- return;
84
- shuttingDown = true;
85
- logger.info(`Received ${signal}, shutting down gracefully...`);
86
- const forceExitTimer = setTimeout(() => {
87
- logger.warn('Shutdown timeout exceeded, forcing exit');
88
- process.exit(1);
89
- }, config.shutdownTimeout);
90
- const exit = (code) => {
91
- clearTimeout(forceExitTimer);
92
- process.exit(code);
93
- };
94
- try {
95
- closeDb();
96
- if (transport) {
97
- await transport.close();
98
- }
99
- exit(0);
100
- }
101
- catch (err) {
102
- logger.error('Error during shutdown:', err);
103
- exit(1);
104
- }
105
- }
106
- async function main() {
107
- try {
108
- const stdio = new StdioServerTransport();
109
- const guardedTransport = createInitGuardTransport(stdio, () => hasInitialized);
110
- transport = guardedTransport;
111
- await server.connect(guardedTransport);
112
- logger.info('Memory MCP Server running on stdio');
113
- }
114
- catch (error) {
115
- logger.error('Failed to start server', error);
116
- process.exit(1);
117
- }
118
- }
119
- void main();
120
- process.on('SIGTERM', () => void shutdown('SIGTERM'));
121
- process.on('SIGINT', () => void shutdown('SIGINT'));
122
- process.on('SIGBREAK', () => void shutdown('SIGBREAK'));
123
- process.on('uncaughtException', (err, origin) => {
124
- logger.error(`Uncaught exception (${origin}):`, err);
125
- process.exit(1);
126
- });
127
- process.on('unhandledRejection', (reason) => {
128
- logger.error('Unhandled rejection:', reason);
129
- process.exit(1);
130
- });
131
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
- type ErrorResponse = CallToolResult & {
3
- content: {
4
- type: 'text';
5
- text: string;
6
- }[];
7
- structuredContent: {
8
- ok: false;
9
- error: {
10
- code: string;
11
- message: string;
12
- };
13
- result?: unknown;
14
- };
15
- isError: true;
16
- };
17
- export declare function getErrorMessage(error: unknown): string;
18
- export declare function createErrorResponse(code: string, message: string, result?: unknown): ErrorResponse;
19
- export {};
20
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,KAAK,aAAa,GAAG,cAAc,GAAG;IACpC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,iBAAiB,EAAE;QACjB,EAAE,EAAE,KAAK,CAAC;QACV,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAItD;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,GACf,aAAa,CAWf"}