@j0hanz/memory-mcp 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/completions/index.d.ts +1 -0
- package/dist/completions/index.d.ts.map +1 -0
- package/dist/db/index.d.ts +1 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +10 -8
- package/dist/db/typed.d.ts +1 -0
- package/dist/db/typed.d.ts.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/lib/errors.d.ts +1 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/hash.d.ts +1 -0
- package/dist/lib/hash.d.ts.map +1 -0
- package/dist/lib/instructions.d.ts +1 -0
- package/dist/lib/instructions.d.ts.map +1 -0
- package/dist/lib/json-schema.d.ts +1 -0
- package/dist/lib/json-schema.d.ts.map +1 -0
- package/dist/lib/mcp-utils.d.ts +1 -0
- package/dist/lib/mcp-utils.d.ts.map +1 -0
- package/dist/lib/pagination.d.ts +1 -0
- package/dist/lib/pagination.d.ts.map +1 -0
- package/dist/lib/search-cursor.d.ts +1 -0
- package/dist/lib/search-cursor.d.ts.map +1 -0
- package/dist/lib/search.d.ts +1 -0
- package/dist/lib/search.d.ts.map +1 -0
- package/dist/lib/search.js +31 -23
- package/dist/lib/sql.d.ts +1 -0
- package/dist/lib/sql.d.ts.map +1 -0
- package/dist/lib/tool-contracts.d.ts +1 -0
- package/dist/lib/tool-contracts.d.ts.map +1 -0
- package/dist/lib/tool-contracts.js +65 -93
- package/dist/lib/tool-execution.d.ts +13 -0
- package/dist/lib/tool-execution.d.ts.map +1 -0
- package/dist/lib/tool-execution.js +28 -0
- package/dist/lib/tool-response.d.ts +1 -0
- package/dist/lib/tool-response.d.ts.map +1 -0
- package/dist/lib/types.d.ts +1 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/prompts/index.d.ts +1 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +12 -8
- package/dist/resources/index.d.ts +1 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +65 -38
- package/dist/resources/instructions.d.ts +1 -0
- package/dist/resources/instructions.d.ts.map +1 -0
- package/dist/resources/instructions.js +44 -37
- package/dist/resources/server-config.d.ts +1 -0
- package/dist/resources/server-config.d.ts.map +1 -0
- package/dist/resources/server-config.js +33 -22
- package/dist/resources/tool-catalog.d.ts +1 -0
- package/dist/resources/tool-catalog.d.ts.map +1 -0
- package/dist/resources/tool-catalog.js +10 -5
- package/dist/resources/tool-info.d.ts +1 -0
- package/dist/resources/tool-info.d.ts.map +1 -0
- package/dist/resources/tool-info.js +17 -8
- package/dist/resources/workflows.d.ts +1 -0
- package/dist/resources/workflows.d.ts.map +1 -0
- package/dist/resources/workflows.js +69 -40
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/inputs.d.ts +1 -0
- package/dist/schemas/inputs.d.ts.map +1 -0
- package/dist/schemas/inputs.js +14 -10
- package/dist/schemas/outputs.d.ts +7 -6
- package/dist/schemas/outputs.d.ts.map +1 -0
- package/dist/schemas/outputs.js +7 -6
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +11 -4
- package/dist/tools/create-relationship.d.ts +1 -0
- package/dist/tools/create-relationship.d.ts.map +1 -0
- package/dist/tools/create-relationship.js +14 -19
- package/dist/tools/delete-memories.d.ts +1 -0
- package/dist/tools/delete-memories.d.ts.map +1 -0
- package/dist/tools/delete-memories.js +27 -37
- package/dist/tools/delete-memory.d.ts +1 -0
- package/dist/tools/delete-memory.d.ts.map +1 -0
- package/dist/tools/delete-memory.js +9 -15
- package/dist/tools/delete-relationship.d.ts +1 -0
- package/dist/tools/delete-relationship.d.ts.map +1 -0
- package/dist/tools/delete-relationship.js +7 -12
- package/dist/tools/get-memory.d.ts +1 -0
- package/dist/tools/get-memory.d.ts.map +1 -0
- package/dist/tools/get-memory.js +9 -14
- package/dist/tools/get-relationships.d.ts +1 -0
- package/dist/tools/get-relationships.d.ts.map +1 -0
- package/dist/tools/get-relationships.js +12 -17
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/memory-stats.d.ts +1 -0
- package/dist/tools/memory-stats.d.ts.map +1 -0
- package/dist/tools/memory-stats.js +22 -28
- package/dist/tools/progress.d.ts +1 -0
- package/dist/tools/progress.d.ts.map +1 -0
- package/dist/tools/progress.js +30 -23
- package/dist/tools/recall.d.ts +1 -0
- package/dist/tools/recall.d.ts.map +1 -0
- package/dist/tools/recall.js +77 -48
- package/dist/tools/register-contract.d.ts +1 -0
- package/dist/tools/register-contract.d.ts.map +1 -0
- package/dist/tools/result.d.ts +1 -0
- package/dist/tools/result.d.ts.map +1 -0
- package/dist/tools/retrieve-context.d.ts +1 -0
- package/dist/tools/retrieve-context.d.ts.map +1 -0
- package/dist/tools/retrieve-context.js +47 -33
- package/dist/tools/search-memories.d.ts +1 -0
- package/dist/tools/search-memories.d.ts.map +1 -0
- package/dist/tools/search-memories.js +24 -30
- package/dist/tools/store-memories.d.ts +1 -0
- package/dist/tools/store-memories.d.ts.map +1 -0
- package/dist/tools/store-memories.js +32 -42
- package/dist/tools/store-memory.d.ts +1 -0
- package/dist/tools/store-memory.d.ts.map +1 -0
- package/dist/tools/store-memory.js +12 -18
- package/dist/tools/update-memory.d.ts +1 -0
- package/dist/tools/update-memory.d.ts.map +1 -0
- package/dist/tools/update-memory.js +41 -46
- package/package.json +2 -2
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { E_CONFLICT, E_NOT_FOUND
|
|
1
|
+
import { E_CONFLICT, E_NOT_FOUND } from '../lib/errors.js';
|
|
2
2
|
import { computeMemoryHash } from '../lib/hash.js';
|
|
3
3
|
import { logToolEvent, notifyMemoryResourceUpdated } from '../lib/mcp-utils.js';
|
|
4
4
|
import { SELECT_MEMORY_BY_HASH_SQL, SELECT_MEMORY_HASH_SQL, } from '../lib/sql.js';
|
|
5
|
+
import { executeToolSafely } from '../lib/tool-execution.js';
|
|
5
6
|
import { createErrorResponse, createToolResponse, } from '../lib/tool-response.js';
|
|
6
7
|
import { parseTags } from '../lib/types.js';
|
|
7
8
|
import { UpdateMemoryInputSchema } from '../schemas/inputs.js';
|
|
@@ -19,57 +20,51 @@ async function notifyUpdatedMemoryResources(server, oldHash, newHash) {
|
|
|
19
20
|
await Promise.allSettled(notifications);
|
|
20
21
|
}
|
|
21
22
|
export function registerUpdateMemory(server, db) {
|
|
22
|
-
registerToolWithContract(server, 'update_memory', UpdateMemoryInputSchema, UpdateResultSchema, wrapToolHandler(async (params) => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
registerToolWithContract(server, 'update_memory', UpdateMemoryInputSchema, UpdateResultSchema, wrapToolHandler(async (params) => executeToolSafely(async () => {
|
|
24
|
+
// All reads and the write are inside a single IMMEDIATE transaction
|
|
25
|
+
// to prevent TOCTOU between existence/collision checks and UPDATE.
|
|
26
|
+
const txResult = db.transaction(() => {
|
|
27
|
+
const existing = db
|
|
28
|
+
.prepareOnce(SELECT_MEMORY_BY_HASH_SQL)
|
|
29
|
+
.get(params.hash);
|
|
30
|
+
if (!existing) {
|
|
31
|
+
return {
|
|
32
|
+
ok: false,
|
|
33
|
+
code: E_NOT_FOUND,
|
|
34
|
+
message: `Memory not found: ${params.hash}`,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const newTags = params.tags ?? parseTags(existing.tags);
|
|
38
|
+
const newHash = computeMemoryHash(params.content, newTags);
|
|
39
|
+
if (newHash !== params.hash) {
|
|
40
|
+
const collision = db
|
|
41
|
+
.prepareOnce(SELECT_MEMORY_HASH_SQL)
|
|
42
|
+
.get(newHash);
|
|
43
|
+
if (collision) {
|
|
31
44
|
return {
|
|
32
45
|
ok: false,
|
|
33
|
-
code:
|
|
34
|
-
message: `Memory
|
|
46
|
+
code: E_CONFLICT,
|
|
47
|
+
message: `Memory already exists for target content/tags: ${newHash}`,
|
|
35
48
|
};
|
|
36
49
|
}
|
|
37
|
-
const newTags = params.tags ?? parseTags(existing.tags);
|
|
38
|
-
const newHash = computeMemoryHash(params.content, newTags);
|
|
39
|
-
if (newHash !== params.hash) {
|
|
40
|
-
const collision = db
|
|
41
|
-
.prepareOnce(SELECT_MEMORY_HASH_SQL)
|
|
42
|
-
.get(newHash);
|
|
43
|
-
if (collision) {
|
|
44
|
-
return {
|
|
45
|
-
ok: false,
|
|
46
|
-
code: E_CONFLICT,
|
|
47
|
-
message: `Memory already exists for target content/tags: ${newHash}`,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
const now = new Date().toISOString();
|
|
52
|
-
db.prepareOnce(UPDATE_MEMORY_SQL).run(newHash, params.content, JSON.stringify(newTags), now, params.hash);
|
|
53
|
-
return { ok: true, oldHash: params.hash, newHash };
|
|
54
|
-
});
|
|
55
|
-
if (!txResult.ok) {
|
|
56
|
-
return createErrorResponse(txResult.code, txResult.message);
|
|
57
50
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return
|
|
64
|
-
old_hash: txResult.oldHash,
|
|
65
|
-
new_hash: txResult.newHash,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
catch (err) {
|
|
69
|
-
rethrowMcpError(err);
|
|
70
|
-
return createErrorResponse(E_UNKNOWN, getErrorMessage(err));
|
|
51
|
+
const now = new Date().toISOString();
|
|
52
|
+
db.prepareOnce(UPDATE_MEMORY_SQL).run(newHash, params.content, JSON.stringify(newTags), now, params.hash);
|
|
53
|
+
return { ok: true, oldHash: params.hash, newHash };
|
|
54
|
+
});
|
|
55
|
+
if (!txResult.ok) {
|
|
56
|
+
return createErrorResponse(txResult.code, txResult.message);
|
|
71
57
|
}
|
|
72
|
-
|
|
58
|
+
await logToolEvent(server, 'update', {
|
|
59
|
+
oldHash: txResult.oldHash,
|
|
60
|
+
newHash: txResult.newHash,
|
|
61
|
+
});
|
|
62
|
+
await notifyUpdatedMemoryResources(server, txResult.oldHash, txResult.newHash);
|
|
63
|
+
return createToolResponse({
|
|
64
|
+
old_hash: txResult.oldHash,
|
|
65
|
+
new_hash: txResult.newHash,
|
|
66
|
+
});
|
|
67
|
+
}), {
|
|
73
68
|
progressMessage: (params) => `⊜ update_memory: ${params.hash.slice(0, 12)}... [replace content]`,
|
|
74
69
|
}));
|
|
75
70
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@j0hanz/memory-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"mcpName": "io.github.j0hanz/memory-mcp",
|
|
5
5
|
"author": "Johanz",
|
|
6
6
|
"license": "MIT",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"url": "https://github.com/j0hanz/memory-mcp.git"
|
|
10
10
|
},
|
|
11
11
|
"homepage": "https://github.com/j0hanz/memory-mcp#readme",
|
|
12
|
-
"description": "
|
|
12
|
+
"description": "SQLite-backed MCP server for persistent memory, full-text retrieval, and graph traversal.",
|
|
13
13
|
"type": "module",
|
|
14
14
|
"main": "dist/index.js",
|
|
15
15
|
"types": "dist/index.d.ts",
|