cc-memory 2.0.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/tools.js ADDED
@@ -0,0 +1,259 @@
1
+ // cc-memory v2 tools - MCP tool definitions and handlers
2
+ import { z } from "zod";
3
+ import { checkStorePermission, checkReadPermission, getAgentRole, AuthError } from "./auth.js";
4
+ const DEFAULT_PROJECT = "default";
5
+ // Tool schemas
6
+ export const schemas = {
7
+ memory_store: z.object({
8
+ scope: z.enum(["shared", "personal"]),
9
+ agent_id: z.string(),
10
+ content: z.string(),
11
+ tags: z.array(z.string()).optional(),
12
+ project_id: z.string().optional(),
13
+ }),
14
+ memory_recall: z.object({
15
+ scope: z.enum(["shared", "personal", "all"]),
16
+ agent_id: z.string().optional(),
17
+ caller_id: z.string().optional(),
18
+ query: z.string(),
19
+ project_id: z.string().optional(),
20
+ limit: z.number().int().min(1).max(100).optional(),
21
+ }),
22
+ memory_list: z.object({
23
+ scope: z.enum(["shared", "personal"]),
24
+ agent_id: z.string().optional(),
25
+ project_id: z.string().optional(),
26
+ }),
27
+ memory_delete: z.object({
28
+ memory_id: z.string(),
29
+ caller_id: z.string().optional(),
30
+ project_id: z.string().optional(),
31
+ }),
32
+ project_create: z.object({
33
+ project_id: z.string(),
34
+ description: z.string(),
35
+ }),
36
+ project_list: z.object({}),
37
+ agent_register: z.object({
38
+ project_id: z.string(),
39
+ agent_id: z.string(),
40
+ role: z.enum(["manager", "worker"]),
41
+ }),
42
+ agent_list: z.object({
43
+ project_id: z.string(),
44
+ }),
45
+ };
46
+ // Tool definitions for MCP
47
+ export const toolDefinitions = [
48
+ {
49
+ name: "memory_store",
50
+ description: "Store a memory. Shared scope requires manager role. Personal scope stores for the given agent.",
51
+ inputSchema: {
52
+ type: "object",
53
+ properties: {
54
+ scope: { type: "string", enum: ["shared", "personal"], description: "Memory scope" },
55
+ agent_id: { type: "string", description: "Agent ID (caller)" },
56
+ content: { type: "string", description: "Memory content" },
57
+ tags: { type: "array", items: { type: "string" }, description: "Optional tags" },
58
+ project_id: { type: "string", description: "Project ID (default: 'default')" },
59
+ },
60
+ required: ["scope", "agent_id", "content"],
61
+ },
62
+ },
63
+ {
64
+ name: "memory_recall",
65
+ description: "Search memories by query. Returns matching memories ranked by relevance.",
66
+ inputSchema: {
67
+ type: "object",
68
+ properties: {
69
+ scope: { type: "string", enum: ["shared", "personal", "all"], description: "Search scope" },
70
+ agent_id: { type: "string", description: "Filter by agent ID" },
71
+ caller_id: { type: "string", description: "Caller agent ID for permission checks" },
72
+ query: { type: "string", description: "Search query" },
73
+ project_id: { type: "string", description: "Project ID" },
74
+ limit: { type: "number", description: "Max results (default: 10)" },
75
+ },
76
+ required: ["scope", "query"],
77
+ },
78
+ },
79
+ {
80
+ name: "memory_list",
81
+ description: "List all memories in a scope.",
82
+ inputSchema: {
83
+ type: "object",
84
+ properties: {
85
+ scope: { type: "string", enum: ["shared", "personal"], description: "Memory scope" },
86
+ agent_id: { type: "string", description: "Filter by agent ID" },
87
+ project_id: { type: "string", description: "Project ID" },
88
+ },
89
+ required: ["scope"],
90
+ },
91
+ },
92
+ {
93
+ name: "memory_delete",
94
+ description: "Delete a memory by ID. Only the owner or a manager can delete.",
95
+ inputSchema: {
96
+ type: "object",
97
+ properties: {
98
+ memory_id: { type: "string", description: "Memory ID to delete" },
99
+ caller_id: { type: "string", description: "Caller agent ID for permission checks" },
100
+ project_id: { type: "string", description: "Project ID" },
101
+ },
102
+ required: ["memory_id"],
103
+ },
104
+ },
105
+ {
106
+ name: "project_create",
107
+ description: "Create a new project.",
108
+ inputSchema: {
109
+ type: "object",
110
+ properties: {
111
+ project_id: { type: "string", description: "Project ID" },
112
+ description: { type: "string", description: "Project description" },
113
+ },
114
+ required: ["project_id", "description"],
115
+ },
116
+ },
117
+ {
118
+ name: "project_list",
119
+ description: "List all projects.",
120
+ inputSchema: { type: "object", properties: {} },
121
+ },
122
+ {
123
+ name: "agent_register",
124
+ description: "Register an agent to a project with a role.",
125
+ inputSchema: {
126
+ type: "object",
127
+ properties: {
128
+ project_id: { type: "string", description: "Project ID" },
129
+ agent_id: { type: "string", description: "Agent ID" },
130
+ role: { type: "string", enum: ["manager", "worker"], description: "Agent role" },
131
+ },
132
+ required: ["project_id", "agent_id", "role"],
133
+ },
134
+ },
135
+ {
136
+ name: "agent_list",
137
+ description: "List all agents in a project.",
138
+ inputSchema: {
139
+ type: "object",
140
+ properties: {
141
+ project_id: { type: "string", description: "Project ID" },
142
+ },
143
+ required: ["project_id"],
144
+ },
145
+ },
146
+ ];
147
+ // Handler
148
+ export function createToolHandler(storage) {
149
+ return async (name, args) => {
150
+ try {
151
+ switch (name) {
152
+ case "memory_store": {
153
+ const input = schemas.memory_store.parse(args);
154
+ const projectId = input.project_id ?? DEFAULT_PROJECT;
155
+ checkStorePermission(storage, projectId, input.agent_id, input.scope);
156
+ const agentId = input.scope === "personal" ? input.agent_id : null;
157
+ const memory = storage.storeMemory(projectId, input.scope, agentId, input.content, input.tags ?? null, input.agent_id);
158
+ return JSON.stringify({ ok: true, memory });
159
+ }
160
+ case "memory_recall": {
161
+ const input = schemas.memory_recall.parse(args);
162
+ const projectId = input.project_id ?? DEFAULT_PROJECT;
163
+ const callerId = input.caller_id;
164
+ // Auth check - caller_id required for access control
165
+ if (!callerId) {
166
+ throw new AuthError("caller_id is required for memory_recall");
167
+ }
168
+ {
169
+ if (input.scope === "personal") {
170
+ checkReadPermission(storage, projectId, callerId, "personal", input.agent_id);
171
+ }
172
+ else if (input.scope === "all") {
173
+ // For "all" scope, worker can only see shared + own personal
174
+ const role = getAgentRole(storage, projectId, callerId);
175
+ if (role === "worker") {
176
+ // Search shared + own personal separately and merge
177
+ const shared = storage.searchMemories(input.query, "shared", projectId, undefined, input.limit ?? 10);
178
+ const personal = storage.searchMemories(input.query, "personal", projectId, callerId, input.limit ?? 10);
179
+ const merged = [...shared, ...personal]
180
+ .sort((a, b) => b.updated_at.localeCompare(a.updated_at))
181
+ .slice(0, input.limit ?? 10);
182
+ return JSON.stringify({ ok: true, count: merged.length, memories: merged });
183
+ }
184
+ // manager can see all - fall through
185
+ }
186
+ // shared: everyone can read - no check needed
187
+ }
188
+ const memories = storage.searchMemories(input.query, input.scope, projectId, input.agent_id, input.limit ?? 10);
189
+ return JSON.stringify({ ok: true, count: memories.length, memories });
190
+ }
191
+ case "memory_list": {
192
+ const input = schemas.memory_list.parse(args);
193
+ const memories = storage.listMemories(input.scope, input.project_id, input.agent_id);
194
+ return JSON.stringify({ ok: true, count: memories.length, memories });
195
+ }
196
+ case "memory_delete": {
197
+ const input = schemas.memory_delete.parse(args);
198
+ // Auth check - caller_id required for access control
199
+ if (!input.caller_id) {
200
+ throw new AuthError("caller_id is required for memory_delete");
201
+ }
202
+ {
203
+ const projectId = input.project_id ?? DEFAULT_PROJECT;
204
+ const memory = storage.getMemory(input.memory_id);
205
+ if (memory) {
206
+ const role = getAgentRole(storage, projectId, input.caller_id);
207
+ if (!role) {
208
+ throw new AuthError(`Agent "${input.caller_id}" is not registered in project "${projectId}"`);
209
+ }
210
+ // Only owner or manager can delete
211
+ const isOwner = memory.agent_id === input.caller_id || memory.created_by === input.caller_id;
212
+ if (!isOwner && role !== "manager") {
213
+ throw new AuthError("Only the memory owner or a manager can delete memories");
214
+ }
215
+ }
216
+ }
217
+ const deleted = storage.deleteMemory(input.memory_id);
218
+ return JSON.stringify({ ok: deleted, message: deleted ? "Deleted" : "Not found" });
219
+ }
220
+ case "project_create": {
221
+ const input = schemas.project_create.parse(args);
222
+ const project = storage.createProject(input.project_id, input.description);
223
+ return JSON.stringify({ ok: true, project });
224
+ }
225
+ case "project_list": {
226
+ const projects = storage.listProjects();
227
+ return JSON.stringify({ ok: true, count: projects.length, projects });
228
+ }
229
+ case "agent_register": {
230
+ const input = schemas.agent_register.parse(args);
231
+ // Verify project exists
232
+ const project = storage.getProject(input.project_id);
233
+ if (!project) {
234
+ return JSON.stringify({ ok: false, error: `Project "${input.project_id}" not found` });
235
+ }
236
+ const agent = storage.registerAgent(input.project_id, input.agent_id, input.role);
237
+ return JSON.stringify({ ok: true, agent });
238
+ }
239
+ case "agent_list": {
240
+ const input = schemas.agent_list.parse(args);
241
+ const agents = storage.listAgents(input.project_id);
242
+ return JSON.stringify({ ok: true, count: agents.length, agents });
243
+ }
244
+ default:
245
+ return JSON.stringify({ ok: false, error: `Unknown tool: ${name}` });
246
+ }
247
+ }
248
+ catch (err) {
249
+ if (err instanceof AuthError) {
250
+ return JSON.stringify({ ok: false, error: err.message });
251
+ }
252
+ if (err instanceof z.ZodError) {
253
+ return JSON.stringify({ ok: false, error: "Invalid input", details: err.errors });
254
+ }
255
+ throw err;
256
+ }
257
+ };
258
+ }
259
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ export type Scope = "shared" | "personal";
2
+ export type Role = "manager" | "worker";
3
+ export interface Memory {
4
+ id: string;
5
+ project_id: string;
6
+ scope: Scope;
7
+ agent_id: string | null;
8
+ content: string;
9
+ tags: string[] | null;
10
+ created_by: string | null;
11
+ created_at: string;
12
+ updated_at: string;
13
+ }
14
+ export interface Project {
15
+ id: string;
16
+ description: string | null;
17
+ created_at: string;
18
+ }
19
+ export interface Agent {
20
+ project_id: string;
21
+ agent_id: string;
22
+ role: Role;
23
+ created_at: string;
24
+ }
25
+ export interface MemoryStoreInput {
26
+ scope: Scope;
27
+ agent_id: string;
28
+ content: string;
29
+ tags?: string[];
30
+ project_id?: string;
31
+ }
32
+ export interface MemoryRecallInput {
33
+ scope: Scope | "all";
34
+ agent_id?: string;
35
+ caller_id?: string;
36
+ query: string;
37
+ project_id?: string;
38
+ limit?: number;
39
+ }
40
+ export interface MemoryListInput {
41
+ scope: Scope;
42
+ agent_id?: string;
43
+ project_id?: string;
44
+ }
45
+ export interface MemoryDeleteInput {
46
+ memory_id: string;
47
+ caller_id?: string;
48
+ project_id?: string;
49
+ }
50
+ export interface ProjectCreateInput {
51
+ project_id: string;
52
+ description: string;
53
+ }
54
+ export interface AgentRegisterInput {
55
+ project_id: string;
56
+ agent_id: string;
57
+ role: Role;
58
+ }
59
+ export interface AgentListInput {
60
+ project_id: string;
61
+ }
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC1C,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExC,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ // cc-memory v2 types
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,qBAAqB"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "cc-memory",
3
+ "version": "2.0.0",
4
+ "description": "Multi-agent memory server with scope-based access control - MCP Server",
5
+ "main": "dist/server.js",
6
+ "bin": {
7
+ "cc-memory": "dist/cli.js"
8
+ },
9
+ "files": ["dist"],
10
+ "type": "module",
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "start": "node dist/server.js",
14
+ "dev": "tsc --watch",
15
+ "test": "vitest run",
16
+ "test:watch": "vitest",
17
+ "clean": "rm -rf dist"
18
+ },
19
+ "keywords": ["mcp", "claude", "memory", "ai", "multi-agent"],
20
+ "author": "",
21
+ "license": "MIT",
22
+ "dependencies": {
23
+ "@modelcontextprotocol/sdk": "^1.0.0",
24
+ "better-sqlite3": "^11.0.0",
25
+ "zod": "^3.23.0"
26
+ },
27
+ "devDependencies": {
28
+ "@types/better-sqlite3": "^7.6.0",
29
+ "@types/node": "^22.0.0",
30
+ "typescript": "^5.5.0",
31
+ "vitest": "^2.0.0"
32
+ },
33
+ "engines": {
34
+ "node": ">=18.0.0"
35
+ }
36
+ }