@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.
- package/README.md +55 -26
- package/package.json +5 -6
- package/dist/core/database.d.ts +0 -4
- package/dist/core/database.d.ts.map +0 -1
- package/dist/core/database.js +0 -81
- package/dist/core/database.js.map +0 -1
- package/dist/core/db-helpers.d.ts +0 -10
- package/dist/core/db-helpers.d.ts.map +0 -1
- package/dist/core/db-helpers.js +0 -17
- package/dist/core/db-helpers.js.map +0 -1
- package/dist/core/db-worker-client.d.ts +0 -8
- package/dist/core/db-worker-client.d.ts.map +0 -1
- package/dist/core/db-worker-client.js +0 -67
- package/dist/core/db-worker-client.js.map +0 -1
- package/dist/core/db-worker-protocol.d.ts +0 -77
- package/dist/core/db-worker-protocol.d.ts.map +0 -1
- package/dist/core/db-worker-protocol.js +0 -2
- package/dist/core/db-worker-protocol.js.map +0 -1
- package/dist/core/db-worker.d.ts +0 -2
- package/dist/core/db-worker.d.ts.map +0 -1
- package/dist/core/db-worker.js +0 -73
- package/dist/core/db-worker.js.map +0 -1
- package/dist/core/memory-helpers.d.ts +0 -3
- package/dist/core/memory-helpers.d.ts.map +0 -1
- package/dist/core/memory-helpers.js +0 -18
- package/dist/core/memory-helpers.js.map +0 -1
- package/dist/core/memory-mappers.d.ts +0 -11
- package/dist/core/memory-mappers.d.ts.map +0 -1
- package/dist/core/memory-mappers.js +0 -52
- package/dist/core/memory-mappers.js.map +0 -1
- package/dist/core/memory-search.d.ts +0 -9
- package/dist/core/memory-search.d.ts.map +0 -1
- package/dist/core/memory-search.js +0 -46
- package/dist/core/memory-search.js.map +0 -1
- package/dist/core/memory-service-core.d.ts +0 -9
- package/dist/core/memory-service-core.d.ts.map +0 -1
- package/dist/core/memory-service-core.js +0 -229
- package/dist/core/memory-service-core.js.map +0 -1
- package/dist/core/memory-service.d.ts +0 -11
- package/dist/core/memory-service.d.ts.map +0 -1
- package/dist/core/memory-service.js +0 -83
- package/dist/core/memory-service.js.map +0 -1
- package/dist/core/memory-stats.d.ts +0 -3
- package/dist/core/memory-stats.d.ts.map +0 -1
- package/dist/core/memory-stats.js +0 -44
- package/dist/core/memory-stats.js.map +0 -1
- package/dist/core/memory-types.d.ts +0 -18
- package/dist/core/memory-types.d.ts.map +0 -1
- package/dist/core/memory-types.js +0 -2
- package/dist/core/memory-types.js.map +0 -1
- package/dist/core/memory-updates.d.ts +0 -11
- package/dist/core/memory-updates.d.ts.map +0 -1
- package/dist/core/memory-updates.js +0 -102
- package/dist/core/memory-updates.js.map +0 -1
- package/dist/core/relation-queries.d.ts +0 -8
- package/dist/core/relation-queries.d.ts.map +0 -1
- package/dist/core/relation-queries.js +0 -107
- package/dist/core/relation-queries.js.map +0 -1
- package/dist/core/row-mappers.d.ts +0 -7
- package/dist/core/row-mappers.d.ts.map +0 -1
- package/dist/core/row-mappers.js +0 -52
- package/dist/core/row-mappers.js.map +0 -1
- package/dist/core/search-errors.d.ts +0 -2
- package/dist/core/search-errors.d.ts.map +0 -1
- package/dist/core/search-errors.js +0 -21
- package/dist/core/search-errors.js.map +0 -1
- package/dist/core/search.d.ts +0 -9
- package/dist/core/search.d.ts.map +0 -1
- package/dist/core/search.js +0 -57
- package/dist/core/search.js.map +0 -1
- package/dist/core/tag-helpers.d.ts +0 -2
- package/dist/core/tag-helpers.d.ts.map +0 -1
- package/dist/core/tag-helpers.js +0 -22
- package/dist/core/tag-helpers.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -131
- package/dist/index.js.map +0 -1
- package/dist/lib/errors.d.ts +0 -20
- package/dist/lib/errors.d.ts.map +0 -1
- package/dist/lib/errors.js +0 -20
- package/dist/lib/errors.js.map +0 -1
- package/dist/lib/tool_response.d.ts +0 -5
- package/dist/lib/tool_response.d.ts.map +0 -1
- package/dist/lib/tool_response.js +0 -7
- package/dist/lib/tool_response.js.map +0 -1
- package/dist/schemas/inputs.d.ts +0 -52
- package/dist/schemas/inputs.d.ts.map +0 -1
- package/dist/schemas/inputs.js +0 -134
- package/dist/schemas/inputs.js.map +0 -1
- package/dist/schemas/outputs.d.ts +0 -10
- package/dist/schemas/outputs.d.ts.map +0 -1
- package/dist/schemas/outputs.js +0 -30
- package/dist/schemas/outputs.js.map +0 -1
- package/dist/tools/delete-memory.d.ts +0 -3
- package/dist/tools/delete-memory.d.ts.map +0 -1
- package/dist/tools/delete-memory.js +0 -32
- package/dist/tools/delete-memory.js.map +0 -1
- package/dist/tools/get-memory.d.ts +0 -3
- package/dist/tools/get-memory.d.ts.map +0 -1
- package/dist/tools/get-memory.js +0 -32
- package/dist/tools/get-memory.js.map +0 -1
- package/dist/tools/get-related.d.ts +0 -3
- package/dist/tools/get-related.d.ts.map +0 -1
- package/dist/tools/get-related.js +0 -29
- package/dist/tools/get-related.js.map +0 -1
- package/dist/tools/index.d.ts +0 -3
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -147
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/link-memories.d.ts +0 -3
- package/dist/tools/link-memories.d.ts.map +0 -1
- package/dist/tools/link-memories.js +0 -29
- package/dist/tools/link-memories.js.map +0 -1
- package/dist/tools/memory-stats.d.ts +0 -3
- package/dist/tools/memory-stats.d.ts.map +0 -1
- package/dist/tools/memory-stats.js +0 -28
- package/dist/tools/memory-stats.js.map +0 -1
- package/dist/tools/search-memories.d.ts +0 -3
- package/dist/tools/search-memories.d.ts.map +0 -1
- package/dist/tools/search-memories.js +0 -29
- package/dist/tools/search-memories.js.map +0 -1
- package/dist/tools/store-memory.d.ts +0 -3
- package/dist/tools/store-memory.d.ts.map +0 -1
- package/dist/tools/store-memory.js +0 -29
- package/dist/tools/store-memory.js.map +0 -1
- package/dist/types/index.d.ts +0 -38
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/utils/config.d.ts +0 -10
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -75
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -10
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -21
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/protocol.d.ts +0 -2
- package/dist/utils/protocol.d.ts.map +0 -1
- package/dist/utils/protocol.js +0 -7
- 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"}
|
package/dist/core/row-mappers.js
DELETED
|
@@ -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":"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"}
|
|
@@ -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"}
|
package/dist/core/search.d.ts
DELETED
|
@@ -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"}
|
package/dist/core/search.js
DELETED
|
@@ -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
|
package/dist/core/search.js.map
DELETED
|
@@ -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 +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"}
|
package/dist/core/tag-helpers.js
DELETED
|
@@ -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
package/dist/index.d.ts.map
DELETED
|
@@ -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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"}
|
package/dist/lib/errors.d.ts
DELETED
|
@@ -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
|
package/dist/lib/errors.d.ts.map
DELETED
|
@@ -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"}
|