kemdicode-mcp 1.17.0 → 1.19.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/README.md +189 -203
- package/dist/ai/execute.d.ts.map +1 -1
- package/dist/ai/execute.js +11 -1
- package/dist/ai/execute.js.map +1 -1
- package/dist/context/agent-monitor.d.ts +3 -3
- package/dist/context/agent-monitor.d.ts.map +1 -1
- package/dist/context/agent-monitor.js +15 -9
- package/dist/context/agent-monitor.js.map +1 -1
- package/dist/context/storage.d.ts.map +1 -1
- package/dist/context/storage.js +18 -2
- package/dist/context/storage.js.map +1 -1
- package/dist/kanban/kanban-store.d.ts +0 -18
- package/dist/kanban/kanban-store.d.ts.map +1 -1
- package/dist/kanban/kanban-store.js +99 -80
- package/dist/kanban/kanban-store.js.map +1 -1
- package/dist/recursive/tool-invoker.d.ts.map +1 -1
- package/dist/recursive/tool-invoker.js +40 -9
- package/dist/recursive/tool-invoker.js.map +1 -1
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +10 -3
- package/dist/session/manager.js.map +1 -1
- package/dist/tools/agents/agent-alert.tool.d.ts.map +1 -1
- package/dist/tools/agents/agent-alert.tool.js +7 -21
- package/dist/tools/agents/agent-alert.tool.js.map +1 -1
- package/dist/tools/agents/agent-inject.tool.d.ts.map +1 -1
- package/dist/tools/agents/agent-inject.tool.js +11 -23
- package/dist/tools/agents/agent-inject.tool.js.map +1 -1
- package/dist/tools/agents/agent-register.tool.d.ts.map +1 -1
- package/dist/tools/agents/agent-register.tool.js +1 -1
- package/dist/tools/agents/agent-register.tool.js.map +1 -1
- package/dist/tools/agents/queue-message.tool.js +2 -2
- package/dist/tools/agents/queue-message.tool.js.map +1 -1
- package/dist/tools/file/file-diff.tool.d.ts.map +1 -1
- package/dist/tools/file/file-diff.tool.js +86 -72
- package/dist/tools/file/file-diff.tool.js.map +1 -1
- package/dist/tools/file/file-read.tool.d.ts.map +1 -1
- package/dist/tools/file/file-read.tool.js +100 -123
- package/dist/tools/file/file-read.tool.js.map +1 -1
- package/dist/tools/file/file-tree.tool.js +1 -1
- package/dist/tools/file/file-tree.tool.js.map +1 -1
- package/dist/tools/file/file-write.tool.d.ts.map +1 -1
- package/dist/tools/file/file-write.tool.js +96 -102
- package/dist/tools/file/file-write.tool.js.map +1 -1
- package/dist/tools/git/git-log.tool.d.ts.map +1 -1
- package/dist/tools/git/git-log.tool.js +4 -1
- package/dist/tools/git/git-log.tool.js.map +1 -1
- package/dist/tools/kanban/board-create.tool.d.ts.map +1 -1
- package/dist/tools/kanban/board-create.tool.js +44 -35
- package/dist/tools/kanban/board-create.tool.js.map +1 -1
- package/dist/tools/kanban/board-invite.tool.d.ts.map +1 -1
- package/dist/tools/kanban/board-invite.tool.js +52 -42
- package/dist/tools/kanban/board-invite.tool.js.map +1 -1
- package/dist/tools/kanban/board-members.tool.d.ts.map +1 -1
- package/dist/tools/kanban/board-members.tool.js +123 -97
- package/dist/tools/kanban/board-members.tool.js.map +1 -1
- package/dist/tools/kanban/board-share.tool.d.ts.map +1 -1
- package/dist/tools/kanban/board-share.tool.js +48 -38
- package/dist/tools/kanban/board-share.tool.js.map +1 -1
- package/dist/tools/kanban/workspace-create.tool.d.ts.map +1 -1
- package/dist/tools/kanban/workspace-create.tool.js +41 -30
- package/dist/tools/kanban/workspace-create.tool.js.map +1 -1
- package/dist/tools/memory/checkpoint-restore.tool.d.ts.map +1 -1
- package/dist/tools/memory/checkpoint-restore.tool.js +1 -9
- package/dist/tools/memory/checkpoint-restore.tool.js.map +1 -1
- package/dist/tools/memory/checkpoint-save.tool.d.ts.map +1 -1
- package/dist/tools/memory/checkpoint-save.tool.js +2 -28
- package/dist/tools/memory/checkpoint-save.tool.js.map +1 -1
- package/dist/tools/memory/delete-memory.tool.d.ts.map +1 -1
- package/dist/tools/memory/delete-memory.tool.js +34 -35
- package/dist/tools/memory/delete-memory.tool.js.map +1 -1
- package/dist/tools/memory/edit-memory.tool.d.ts.map +1 -1
- package/dist/tools/memory/edit-memory.tool.js +89 -117
- package/dist/tools/memory/edit-memory.tool.js.map +1 -1
- package/dist/tools/memory/list-memories.tool.d.ts.map +1 -1
- package/dist/tools/memory/list-memories.tool.js +53 -46
- package/dist/tools/memory/list-memories.tool.js.map +1 -1
- package/dist/tools/memory/read-memory.tool.d.ts.map +1 -1
- package/dist/tools/memory/read-memory.tool.js +45 -39
- package/dist/tools/memory/read-memory.tool.js.map +1 -1
- package/dist/tools/memory/shared.d.ts +61 -0
- package/dist/tools/memory/shared.d.ts.map +1 -0
- package/dist/tools/memory/shared.js +63 -0
- package/dist/tools/memory/shared.js.map +1 -0
- package/dist/tools/memory/write-memory.tool.d.ts.map +1 -1
- package/dist/tools/memory/write-memory.tool.js +68 -107
- package/dist/tools/memory/write-memory.tool.js.map +1 -1
- package/dist/tools/multi-llm/consensus-prompt.tool.d.ts.map +1 -1
- package/dist/tools/multi-llm/consensus-prompt.tool.js +7 -3
- package/dist/tools/multi-llm/consensus-prompt.tool.js.map +1 -1
- package/dist/tools/registry.d.ts +13 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +25 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/session/session-create.tool.d.ts +8 -6
- package/dist/tools/session/session-create.tool.d.ts.map +1 -1
- package/dist/tools/session/session-create.tool.js +44 -34
- package/dist/tools/session/session-create.tool.js.map +1 -1
- package/dist/tools/session/session-delete.tool.d.ts +4 -2
- package/dist/tools/session/session-delete.tool.d.ts.map +1 -1
- package/dist/tools/session/session-delete.tool.js +51 -53
- package/dist/tools/session/session-delete.tool.js.map +1 -1
- package/dist/tools/specialized/code-review.tool.d.ts.map +1 -1
- package/dist/tools/specialized/code-review.tool.js +1 -0
- package/dist/tools/specialized/code-review.tool.js.map +1 -1
- package/dist/tools/system/config.tool.d.ts.map +1 -1
- package/dist/tools/system/config.tool.js +38 -5
- package/dist/tools/system/config.tool.js.map +1 -1
- package/dist/tools/system/shell-exec.tool.js +1 -1
- package/dist/tools/system/shell-exec.tool.js.map +1 -1
- package/dist/utils/format-helpers.d.ts +41 -0
- package/dist/utils/format-helpers.d.ts.map +1 -0
- package/dist/utils/format-helpers.js +76 -0
- package/dist/utils/format-helpers.js.map +1 -0
- package/dist/utils/projectContext.enhanced.d.ts.map +1 -1
- package/dist/utils/projectContext.enhanced.js +19 -4
- package/dist/utils/projectContext.enhanced.js.map +1 -1
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +11 -2
- package/dist/utils/security.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +2 -4
- package/dist/utils/validation.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -23,30 +23,18 @@
|
|
|
23
23
|
* @module tools/memory/read-memory
|
|
24
24
|
*/
|
|
25
25
|
import { z } from 'zod';
|
|
26
|
-
import { getSharedRedis } from '../../infrastructure/redis/connection.js';
|
|
27
|
-
import { createHash } from 'crypto';
|
|
28
26
|
import { Logger } from '../../utils/logger.js';
|
|
29
27
|
import { checkRateLimit } from '../../utils/validation.js';
|
|
30
|
-
|
|
31
|
-
const MEMORY_PREFIX = 'mcp:memory:';
|
|
32
|
-
const getRedis = getSharedRedis;
|
|
33
|
-
/**
|
|
34
|
-
* Generate project ID from current working directory
|
|
35
|
-
*/
|
|
36
|
-
function getProjectId() {
|
|
37
|
-
const cwd = process.cwd();
|
|
38
|
-
return createHash('sha256').update(cwd).digest('hex').slice(0, 16);
|
|
39
|
-
}
|
|
28
|
+
import { MEMORY_PREFIX, getRedis, getProjectId } from './shared.js';
|
|
40
29
|
const schema = z.object({
|
|
41
|
-
|
|
30
|
+
names: z.array(z.string().min(1)).min(1).max(20).describe('Memory names to retrieve (1-20)'),
|
|
42
31
|
});
|
|
43
32
|
export const readMemoryTool = {
|
|
44
33
|
name: 'read-memory',
|
|
45
|
-
description: 'Retrieve named
|
|
34
|
+
description: 'Retrieve 1-20 named memories from current project.',
|
|
46
35
|
zodSchema: schema,
|
|
47
36
|
execute: async (args) => {
|
|
48
|
-
const {
|
|
49
|
-
// Rate limit check
|
|
37
|
+
const { names } = args;
|
|
50
38
|
if (!checkRateLimit('memory-operations', { maxRequests: 200, windowMs: 60000 })) {
|
|
51
39
|
return JSON.stringify({
|
|
52
40
|
success: false,
|
|
@@ -55,33 +43,51 @@ export const readMemoryTool = {
|
|
|
55
43
|
});
|
|
56
44
|
}
|
|
57
45
|
const projectId = getProjectId();
|
|
58
|
-
const memoryKey = `${MEMORY_PREFIX}${projectId}:${name}`;
|
|
59
46
|
try {
|
|
60
47
|
const client = await getRedis();
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
projectId,
|
|
69
|
-
});
|
|
48
|
+
// Pipeline: fetch all memories at once
|
|
49
|
+
const getPipeline = client.pipeline();
|
|
50
|
+
const ttlPipeline = client.pipeline();
|
|
51
|
+
for (const name of names) {
|
|
52
|
+
const memoryKey = `${MEMORY_PREFIX}${projectId}:${name}`;
|
|
53
|
+
getPipeline.get(memoryKey);
|
|
54
|
+
ttlPipeline.ttl(memoryKey);
|
|
70
55
|
}
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
|
|
56
|
+
const getResults = await getPipeline.exec();
|
|
57
|
+
const ttlResults = await ttlPipeline.exec();
|
|
58
|
+
const results = names.map((name, i) => {
|
|
59
|
+
const data = getResults?.[i]?.[1];
|
|
60
|
+
const ttl = ttlResults?.[i]?.[1] ?? -1;
|
|
61
|
+
if (!data) {
|
|
62
|
+
return {
|
|
63
|
+
name,
|
|
64
|
+
success: false,
|
|
65
|
+
error: `Memory '${name}' not found`,
|
|
66
|
+
code: 'MEMORY_NOT_FOUND',
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const memory = JSON.parse(data);
|
|
70
|
+
Logger.debug(`read-memory: retrieved '${name}' for project ${projectId}`);
|
|
71
|
+
return {
|
|
72
|
+
name: memory.name,
|
|
73
|
+
success: true,
|
|
74
|
+
content: memory.content,
|
|
75
|
+
contentLength: memory.content.length,
|
|
76
|
+
tags: memory.tags,
|
|
77
|
+
createdAt: memory.createdAt,
|
|
78
|
+
updatedAt: memory.updatedAt,
|
|
79
|
+
ttlSeconds: ttl > 0 ? ttl : null,
|
|
80
|
+
ttlDays: ttl > 0 ? Math.round(ttl / 86400) : null,
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
const successful = results.filter((r) => r.success);
|
|
84
|
+
const failed = results.filter((r) => !r.success);
|
|
74
85
|
return JSON.stringify({
|
|
75
|
-
success:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
tags: memory.tags,
|
|
81
|
-
createdAt: memory.createdAt,
|
|
82
|
-
updatedAt: memory.updatedAt,
|
|
83
|
-
ttlSeconds: ttl > 0 ? ttl : null,
|
|
84
|
-
ttlDays: ttl > 0 ? Math.round(ttl / 86400) : null,
|
|
86
|
+
success: failed.length === 0,
|
|
87
|
+
projectId,
|
|
88
|
+
found: successful.length,
|
|
89
|
+
notFound: failed.length,
|
|
90
|
+
results,
|
|
85
91
|
});
|
|
86
92
|
}
|
|
87
93
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-memory.tool.js","sourceRoot":"","sources":["../../../src/tools/memory/read-memory.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"read-memory.tool.js","sourceRoot":"","sources":["../../../src/tools/memory/read-memory.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KemdiCode MCP Server
|
|
3
|
+
* Copyright (C) 2025-2026 Kemdi Sp. z o.o.
|
|
4
|
+
*
|
|
5
|
+
* This program is free software: you can redistribute it and/or modify
|
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
|
7
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
* (at your option) any later version.
|
|
9
|
+
*
|
|
10
|
+
* This program is distributed in the hope that it will be useful,
|
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
* GNU General Public License for more details.
|
|
14
|
+
*
|
|
15
|
+
* You should have received a copy of the GNU General Public License
|
|
16
|
+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
18
|
+
import { getSharedRedis } from '../../infrastructure/redis/connection.js';
|
|
19
|
+
import type { Redis } from 'ioredis';
|
|
20
|
+
/** Memory entry structure */
|
|
21
|
+
export interface ProjectMemory {
|
|
22
|
+
name: string;
|
|
23
|
+
projectId: string;
|
|
24
|
+
content: string;
|
|
25
|
+
createdAt: number;
|
|
26
|
+
updatedAt: number;
|
|
27
|
+
tags: string[];
|
|
28
|
+
}
|
|
29
|
+
/** Checkpoint entry structure */
|
|
30
|
+
export interface Checkpoint {
|
|
31
|
+
name: string;
|
|
32
|
+
projectId: string;
|
|
33
|
+
content: string;
|
|
34
|
+
createdAt: number;
|
|
35
|
+
updatedAt: number;
|
|
36
|
+
tags: string[];
|
|
37
|
+
}
|
|
38
|
+
/** Redis key prefixes */
|
|
39
|
+
export declare const MEMORY_PREFIX = "mcp:memory:";
|
|
40
|
+
export declare const MEMORY_INDEX_PREFIX = "mcp:memory:index:";
|
|
41
|
+
export declare const CHECKPOINT_PREFIX = "mcp:checkpoint:";
|
|
42
|
+
export declare const CHECKPOINT_INDEX_PREFIX = "mcp:checkpoint:index:";
|
|
43
|
+
/** Maximum content size: 1MB */
|
|
44
|
+
export declare const MAX_CONTENT_SIZE: number;
|
|
45
|
+
/** Default TTL: 30 days in seconds */
|
|
46
|
+
export declare const DEFAULT_MEMORY_TTL: number;
|
|
47
|
+
/** Default checkpoint TTL: 7 days in seconds */
|
|
48
|
+
export declare const DEFAULT_CHECKPOINT_TTL: number;
|
|
49
|
+
/** Shared Redis getter */
|
|
50
|
+
export declare const getRedis: typeof getSharedRedis;
|
|
51
|
+
/**
|
|
52
|
+
* Generate a unique project identifier from current working directory.
|
|
53
|
+
* Creates a SHA-256 hash of the CWD, truncated to 16 characters.
|
|
54
|
+
*/
|
|
55
|
+
export declare function getProjectId(): string;
|
|
56
|
+
/**
|
|
57
|
+
* Retrieve the original creation timestamp of an existing entry.
|
|
58
|
+
* Used when overwriting to preserve the original createdAt.
|
|
59
|
+
*/
|
|
60
|
+
export declare function getExistingCreatedAt(client: Redis, key: string): Promise<number | null>;
|
|
61
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,6BAA6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,iCAAiC;AACjC,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,yBAAyB;AACzB,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAC3C,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AACnD,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAE/D,gCAAgC;AAChC,eAAO,MAAM,gBAAgB,QAAc,CAAC;AAE5C,sCAAsC;AACtC,eAAO,MAAM,kBAAkB,QAAoB,CAAC;AAEpD,gDAAgD;AAChD,eAAO,MAAM,sBAAsB,QAAmB,CAAC;AAEvD,0BAA0B;AAC1B,eAAO,MAAM,QAAQ,uBAAiB,CAAC;AAEvC;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW7F"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KemdiCode MCP Server
|
|
3
|
+
* Copyright (C) 2025-2026 Kemdi Sp. z o.o.
|
|
4
|
+
*
|
|
5
|
+
* This program is free software: you can redistribute it and/or modify
|
|
6
|
+
* it under the terms of the GNU General Public License as published by
|
|
7
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
* (at your option) any later version.
|
|
9
|
+
*
|
|
10
|
+
* This program is distributed in the hope that it will be useful,
|
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
* GNU General Public License for more details.
|
|
14
|
+
*
|
|
15
|
+
* You should have received a copy of the GNU General Public License
|
|
16
|
+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Shared types and utilities for memory and checkpoint tools.
|
|
20
|
+
*
|
|
21
|
+
* @module tools/memory/shared
|
|
22
|
+
*/
|
|
23
|
+
import { createHash } from 'crypto';
|
|
24
|
+
import { getSharedRedis } from '../../infrastructure/redis/connection.js';
|
|
25
|
+
/** Redis key prefixes */
|
|
26
|
+
export const MEMORY_PREFIX = 'mcp:memory:';
|
|
27
|
+
export const MEMORY_INDEX_PREFIX = 'mcp:memory:index:';
|
|
28
|
+
export const CHECKPOINT_PREFIX = 'mcp:checkpoint:';
|
|
29
|
+
export const CHECKPOINT_INDEX_PREFIX = 'mcp:checkpoint:index:';
|
|
30
|
+
/** Maximum content size: 1MB */
|
|
31
|
+
export const MAX_CONTENT_SIZE = 1024 * 1024;
|
|
32
|
+
/** Default TTL: 30 days in seconds */
|
|
33
|
+
export const DEFAULT_MEMORY_TTL = 30 * 24 * 60 * 60;
|
|
34
|
+
/** Default checkpoint TTL: 7 days in seconds */
|
|
35
|
+
export const DEFAULT_CHECKPOINT_TTL = 7 * 24 * 60 * 60;
|
|
36
|
+
/** Shared Redis getter */
|
|
37
|
+
export const getRedis = getSharedRedis;
|
|
38
|
+
/**
|
|
39
|
+
* Generate a unique project identifier from current working directory.
|
|
40
|
+
* Creates a SHA-256 hash of the CWD, truncated to 16 characters.
|
|
41
|
+
*/
|
|
42
|
+
export function getProjectId() {
|
|
43
|
+
const cwd = process.cwd();
|
|
44
|
+
return createHash('sha256').update(cwd).digest('hex').slice(0, 16);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Retrieve the original creation timestamp of an existing entry.
|
|
48
|
+
* Used when overwriting to preserve the original createdAt.
|
|
49
|
+
*/
|
|
50
|
+
export async function getExistingCreatedAt(client, key) {
|
|
51
|
+
try {
|
|
52
|
+
const data = await client.get(key);
|
|
53
|
+
if (data) {
|
|
54
|
+
const entry = JSON.parse(data);
|
|
55
|
+
return entry.createdAt;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Ignore parse errors
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/tools/memory/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAuB1E,yBAAyB;AACzB,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AACnD,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,gCAAgC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,sCAAsC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEpD,gDAAgD;AAChD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEvD,0BAA0B;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAa,EAAE,GAAW;IACnE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA0B,CAAC;YACxD,OAAO,KAAK,CAAC,SAAS,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-memory.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/write-memory.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"write-memory.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/write-memory.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAYH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAiC7C,eAAO,MAAM,eAAe,EAAE,WA0F7B,CAAC"}
|
|
@@ -24,49 +24,30 @@
|
|
|
24
24
|
* @module tools/memory/write-memory
|
|
25
25
|
*/
|
|
26
26
|
import { z } from 'zod';
|
|
27
|
-
import { getSharedRedis } from '../../infrastructure/redis/connection.js';
|
|
28
|
-
import { createHash } from 'crypto';
|
|
29
27
|
import { Logger } from '../../utils/logger.js';
|
|
30
28
|
import { checkRateLimit } from '../../utils/validation.js';
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
const MEMORY_INDEX_PREFIX = 'mcp:memory:index:';
|
|
34
|
-
/** Default TTL: 30 days in seconds */
|
|
35
|
-
const DEFAULT_TTL = 30 * 24 * 60 * 60;
|
|
36
|
-
/** Maximum memory content size: 1MB */
|
|
37
|
-
const MAX_CONTENT_SIZE = 1024 * 1024;
|
|
38
|
-
const getRedis = getSharedRedis;
|
|
39
|
-
/**
|
|
40
|
-
* Generate a unique project identifier from current working directory
|
|
41
|
-
*
|
|
42
|
-
* @description Creates a SHA-256 hash of the CWD, truncated to 16 characters.
|
|
43
|
-
* This ensures memories are scoped to specific projects.
|
|
44
|
-
* @returns {string} 16-character hex string project identifier
|
|
45
|
-
* @internal
|
|
46
|
-
*/
|
|
47
|
-
function getProjectId() {
|
|
48
|
-
const cwd = process.cwd();
|
|
49
|
-
return createHash('sha256').update(cwd).digest('hex').slice(0, 16);
|
|
50
|
-
}
|
|
51
|
-
const schema = z.object({
|
|
29
|
+
import { MEMORY_PREFIX, MEMORY_INDEX_PREFIX, DEFAULT_MEMORY_TTL, MAX_CONTENT_SIZE, getRedis, getProjectId, getExistingCreatedAt, } from './shared.js';
|
|
30
|
+
const memoryItemSchema = z.object({
|
|
52
31
|
name: z
|
|
53
32
|
.string()
|
|
54
33
|
.min(1)
|
|
55
34
|
.max(100)
|
|
56
35
|
.regex(/^[a-zA-Z0-9_-]+$/, 'Name must be alphanumeric with dashes/underscores')
|
|
57
|
-
.describe('Memory name
|
|
36
|
+
.describe('Memory name'),
|
|
58
37
|
content: z.string().min(1).describe('Content to store'),
|
|
59
38
|
tags: z.array(z.string()).default([]).describe('Tags for categorization'),
|
|
60
39
|
overwrite: z.boolean().default(false).describe('Overwrite if exists'),
|
|
61
|
-
ttlDays: z.number().min(1).max(365).default(30).describe('
|
|
40
|
+
ttlDays: z.number().min(1).max(365).default(30).describe('TTL in days'),
|
|
41
|
+
});
|
|
42
|
+
const schema = z.object({
|
|
43
|
+
memories: z.array(memoryItemSchema).min(1).max(20).describe('Memories to store (1-20)'),
|
|
62
44
|
});
|
|
63
45
|
export const writeMemoryTool = {
|
|
64
46
|
name: 'write-memory',
|
|
65
|
-
description: 'Store named
|
|
47
|
+
description: 'Store 1-20 named memories for current project. Returns results.',
|
|
66
48
|
zodSchema: schema,
|
|
67
49
|
execute: async (args) => {
|
|
68
|
-
const {
|
|
69
|
-
// Rate limit check
|
|
50
|
+
const { memories } = args;
|
|
70
51
|
if (!checkRateLimit('memory-operations', { maxRequests: 100, windowMs: 60000 })) {
|
|
71
52
|
return JSON.stringify({
|
|
72
53
|
success: false,
|
|
@@ -74,89 +55,69 @@ export const writeMemoryTool = {
|
|
|
74
55
|
code: 'RATE_LIMIT_EXCEEDED',
|
|
75
56
|
});
|
|
76
57
|
}
|
|
77
|
-
// Check content size
|
|
78
|
-
if (content.length > MAX_CONTENT_SIZE) {
|
|
79
|
-
return JSON.stringify({
|
|
80
|
-
success: false,
|
|
81
|
-
error: `Content too large: ${content.length} bytes (max: ${MAX_CONTENT_SIZE} bytes)`,
|
|
82
|
-
code: 'CONTENT_TOO_LARGE',
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
58
|
const projectId = getProjectId();
|
|
86
|
-
const memoryKey = `${MEMORY_PREFIX}${projectId}:${name}`;
|
|
87
59
|
const indexKey = `${MEMORY_INDEX_PREFIX}${projectId}`;
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
60
|
+
const results = await Promise.all(memories.map(async (item) => {
|
|
61
|
+
try {
|
|
62
|
+
if (item.content.length > MAX_CONTENT_SIZE) {
|
|
63
|
+
return {
|
|
64
|
+
name: item.name,
|
|
65
|
+
success: false,
|
|
66
|
+
error: `Content too large: ${item.content.length} bytes`,
|
|
67
|
+
code: 'CONTENT_TOO_LARGE',
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const memoryKey = `${MEMORY_PREFIX}${projectId}:${item.name}`;
|
|
71
|
+
const client = await getRedis();
|
|
72
|
+
const existing = await client.exists(memoryKey);
|
|
73
|
+
if (existing && !item.overwrite) {
|
|
74
|
+
return {
|
|
75
|
+
name: item.name,
|
|
76
|
+
success: false,
|
|
77
|
+
error: `Memory '${item.name}' already exists`,
|
|
78
|
+
code: 'MEMORY_EXISTS',
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const now = Date.now();
|
|
82
|
+
const memory = {
|
|
83
|
+
name: item.name,
|
|
98
84
|
projectId,
|
|
99
|
-
|
|
85
|
+
content: item.content,
|
|
86
|
+
createdAt: existing ? ((await getExistingCreatedAt(client, memoryKey)) ?? now) : now,
|
|
87
|
+
updatedAt: now,
|
|
88
|
+
tags: item.tags,
|
|
89
|
+
};
|
|
90
|
+
const ttl = item.ttlDays * 24 * 60 * 60;
|
|
91
|
+
await client.setex(memoryKey, ttl, JSON.stringify(memory));
|
|
92
|
+
await client.sadd(indexKey, item.name);
|
|
93
|
+
await client.expire(indexKey, DEFAULT_MEMORY_TTL);
|
|
94
|
+
Logger.debug(`write-memory: stored '${item.name}' for project ${projectId}`);
|
|
95
|
+
return {
|
|
96
|
+
name: item.name,
|
|
97
|
+
success: true,
|
|
98
|
+
contentLength: item.content.length,
|
|
99
|
+
tags: item.tags,
|
|
100
|
+
ttlDays: item.ttlDays,
|
|
101
|
+
overwritten: existing > 0,
|
|
102
|
+
};
|
|
100
103
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
success: true,
|
|
119
|
-
name,
|
|
120
|
-
projectId,
|
|
121
|
-
contentLength: content.length,
|
|
122
|
-
tags,
|
|
123
|
-
ttlDays,
|
|
124
|
-
overwritten: existing > 0,
|
|
125
|
-
createdAt: memory.createdAt,
|
|
126
|
-
updatedAt: memory.updatedAt,
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
catch (error) {
|
|
130
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
131
|
-
Logger.error(`write-memory error: ${errorMessage}`);
|
|
132
|
-
return JSON.stringify({
|
|
133
|
-
success: false,
|
|
134
|
-
error: errorMessage,
|
|
135
|
-
code: 'STORAGE_ERROR',
|
|
136
|
-
});
|
|
137
|
-
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
return {
|
|
106
|
+
name: item.name,
|
|
107
|
+
success: false,
|
|
108
|
+
error: error instanceof Error ? error.message : String(error),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}));
|
|
112
|
+
const successful = results.filter((r) => r.success);
|
|
113
|
+
const failed = results.filter((r) => !r.success);
|
|
114
|
+
return JSON.stringify({
|
|
115
|
+
success: failed.length === 0,
|
|
116
|
+
projectId,
|
|
117
|
+
stored: successful.length,
|
|
118
|
+
failed: failed.length,
|
|
119
|
+
results,
|
|
120
|
+
});
|
|
138
121
|
},
|
|
139
122
|
};
|
|
140
|
-
/**
|
|
141
|
-
* Retrieve the original creation timestamp of an existing memory
|
|
142
|
-
*
|
|
143
|
-
* @description Used when overwriting a memory to preserve the original createdAt
|
|
144
|
-
* @param {Redis} client - Redis client instance
|
|
145
|
-
* @param {string} key - Redis key for the memory
|
|
146
|
-
* @returns {Promise<number | null>} Original createdAt timestamp or null
|
|
147
|
-
* @internal
|
|
148
|
-
*/
|
|
149
|
-
async function getExistingCreatedAt(client, key) {
|
|
150
|
-
try {
|
|
151
|
-
const data = await client.get(key);
|
|
152
|
-
if (data) {
|
|
153
|
-
const memory = JSON.parse(data);
|
|
154
|
-
return memory.createdAt;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
catch {
|
|
158
|
-
// Ignore parse errors
|
|
159
|
-
}
|
|
160
|
-
return null;
|
|
161
|
-
}
|
|
162
123
|
//# sourceMappingURL=write-memory.tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-memory.tool.js","sourceRoot":"","sources":["../../../src/tools/memory/write-memory.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"write-memory.tool.js","sourceRoot":"","sources":["../../../src/tools/memory/write-memory.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consensus-prompt.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-llm/consensus-prompt.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"consensus-prompt.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/multi-llm/consensus-prompt.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA4LlD,eAAO,MAAM,mBAAmB,EAAE,WAOjC,CAAC"}
|
|
@@ -127,9 +127,13 @@ async function execute(args) {
|
|
|
127
127
|
return output.join('\n');
|
|
128
128
|
}
|
|
129
129
|
const template = synthesisPrompt || DEFAULT_SYNTHESIS_PROMPT;
|
|
130
|
+
// Replace placeholders in safe order: board_responses first (cannot be user-controlled),
|
|
131
|
+
// then original_prompt. This prevents user prompt containing '{board_responses}' from
|
|
132
|
+
// being expanded into actual board data (template injection).
|
|
133
|
+
const boardResponsesContent = boardResponsesXml.join('\n\n');
|
|
130
134
|
const ceoPrompt = template
|
|
131
|
-
.replaceAll('{
|
|
132
|
-
.replaceAll('{
|
|
135
|
+
.replaceAll('{board_responses}', boardResponsesContent)
|
|
136
|
+
.replaceAll('{original_prompt}', prompt);
|
|
133
137
|
output.push('---\n');
|
|
134
138
|
output.push('## CEO Decision\n');
|
|
135
139
|
try {
|
|
@@ -139,7 +143,7 @@ async function execute(args) {
|
|
|
139
143
|
model: ceoModel,
|
|
140
144
|
messages: ceoMessages,
|
|
141
145
|
temperature: 0.7,
|
|
142
|
-
maxTokens: maxTokens ? maxTokens * 2 : 16384, // CEO gets more tokens
|
|
146
|
+
maxTokens: maxTokens ? Math.min(maxTokens * 2, 32768) : 16384, // CEO gets more tokens, capped at 32K
|
|
143
147
|
stream: false,
|
|
144
148
|
});
|
|
145
149
|
const ceoDuration = Date.now() - ceoStart;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consensus-prompt.tool.js","sourceRoot":"","sources":["../../../src/tools/multi-llm/consensus-prompt.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"consensus-prompt.tool.js","sourceRoot":"","sources":["../../../src/tools/multi-llm/consensus-prompt.tool.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -75,6 +75,17 @@ export type ToolExecutor<T = ToolArguments> = (args: T, onProgress?: ProgressCal
|
|
|
75
75
|
* };
|
|
76
76
|
* ```
|
|
77
77
|
*/
|
|
78
|
+
/** Tool category for discovery and grouping */
|
|
79
|
+
export type ToolCategory = 'code' | 'edit' | 'file' | 'git' | 'kanban' | 'context' | 'agents' | 'project' | 'system' | 'specialized' | 'recursive' | 'multi-llm' | 'memory';
|
|
80
|
+
/** Tool metadata for discovery, categorization and search */
|
|
81
|
+
export interface ToolMetadata {
|
|
82
|
+
/** Tool category for grouping */
|
|
83
|
+
category: ToolCategory;
|
|
84
|
+
/** Searchable tags */
|
|
85
|
+
tags?: string[];
|
|
86
|
+
/** Whether this tool is long-running (useful for progress reporting) */
|
|
87
|
+
longRunning?: boolean;
|
|
88
|
+
}
|
|
78
89
|
export interface UnifiedTool<TSchema extends ZodSchema = ZodSchema> {
|
|
79
90
|
/** Unique tool name (used in MCP protocol) */
|
|
80
91
|
name: string;
|
|
@@ -88,6 +99,8 @@ export interface UnifiedTool<TSchema extends ZodSchema = ZodSchema> {
|
|
|
88
99
|
};
|
|
89
100
|
/** Set to true to skip auto-sharing context for this tool */
|
|
90
101
|
skipContextShare?: boolean;
|
|
102
|
+
/** Tool metadata for discovery and categorization */
|
|
103
|
+
metadata?: ToolMetadata;
|
|
91
104
|
/**
|
|
92
105
|
* Tool execution function
|
|
93
106
|
* When TSchema is explicitly provided, args is typed as z.infer<TSchema>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,CAAC,EAAY,MAAM,KAAK,CAAC;AAKlC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC;AA2C9C,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,KAAK,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,aAAa,IAAI,CAC5C,IAAI,EAAE,CAAC,EACP,UAAU,CAAC,EAAE,gBAAgB,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,SAAS,GAAG,SAAS;IAChE,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,gEAAgE;IAChE,MAAM,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,OAAO,EAAE,OAAO,SAAS,SAAS,GAC9B,YAAY,CACV,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,OAAO,SAAS,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC,GAAG,aAAa,CAC3F,GACD,YAAY,CAAC,aAAa,CAAC,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,GAC/B,WAAW,CAAC,OAAO,CAAC,CAEtB;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|