claude-code-memory 1.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/cli.js ADDED
@@ -0,0 +1,550 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const readline = __importStar(require("readline"));
40
+ const store_1 = require("./store");
41
+ const llm_1 = require("./llm");
42
+ // --- Colors (no dependencies) ---
43
+ const c = {
44
+ reset: "\x1b[0m",
45
+ bold: "\x1b[1m",
46
+ dim: "\x1b[2m",
47
+ green: "\x1b[32m",
48
+ yellow: "\x1b[33m",
49
+ blue: "\x1b[34m",
50
+ magenta: "\x1b[35m",
51
+ cyan: "\x1b[36m",
52
+ red: "\x1b[31m",
53
+ gray: "\x1b[90m",
54
+ };
55
+ function ok(msg) { console.log(` ${c.green}✓${c.reset} ${msg}`); }
56
+ function skip(msg) { console.log(` ${c.gray}·${c.reset} ${c.gray}${msg}${c.reset}`); }
57
+ function warn(msg) { console.log(` ${c.yellow}!${c.reset} ${msg}`); }
58
+ function err(msg) { console.error(` ${c.red}✗${c.reset} ${msg}`); }
59
+ function heading(msg) { console.log(`\n${c.bold}${msg}${c.reset}\n`); }
60
+ // --- Prompt ---
61
+ function ask(question) {
62
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
63
+ return new Promise((resolve) => {
64
+ rl.question(` ${question} `, (answer) => {
65
+ rl.close();
66
+ resolve(answer.trim());
67
+ });
68
+ });
69
+ }
70
+ async function confirm(question) {
71
+ const answer = await ask(`${question} (Y/n)`);
72
+ return answer === "" || answer.toLowerCase().startsWith("y");
73
+ }
74
+ // --- Paths ---
75
+ const HOME = process.env.HOME || "";
76
+ const MEMORY_MCP_DIR = path.resolve(__dirname, "..");
77
+ const EXTRACTOR_PATH = path.join(MEMORY_MCP_DIR, "dist", "extractor.js");
78
+ const SERVER_PATH = path.join(MEMORY_MCP_DIR, "dist", "index.js");
79
+ const GLOBAL_CONFIG_DIR = path.join(HOME, ".memory-mcp");
80
+ const GLOBAL_CONFIG_PATH = path.join(GLOBAL_CONFIG_DIR, "config.json");
81
+ const GLOBAL_CLAUDE_SETTINGS = path.join(HOME, ".claude", "settings.json");
82
+ // --- Config ---
83
+ function readGlobalConfig() {
84
+ if (fs.existsSync(GLOBAL_CONFIG_PATH)) {
85
+ try {
86
+ return JSON.parse(fs.readFileSync(GLOBAL_CONFIG_PATH, "utf-8"));
87
+ }
88
+ catch { }
89
+ }
90
+ return {};
91
+ }
92
+ function writeGlobalConfig(config) {
93
+ if (!fs.existsSync(GLOBAL_CONFIG_DIR))
94
+ fs.mkdirSync(GLOBAL_CONFIG_DIR, { recursive: true });
95
+ fs.writeFileSync(GLOBAL_CONFIG_PATH, JSON.stringify(config, null, 2));
96
+ }
97
+ function hasApiKey() {
98
+ if (process.env.ANTHROPIC_API_KEY)
99
+ return true;
100
+ const config = readGlobalConfig();
101
+ if (config.apiKey)
102
+ return true;
103
+ const candidates = [
104
+ path.join(HOME, ".config", "anthropic", "api_key"),
105
+ path.join(HOME, ".anthropic", "api_key"),
106
+ ];
107
+ return candidates.some((p) => fs.existsSync(p));
108
+ }
109
+ // --- Hook Installation ---
110
+ function installHooks(settingsPath) {
111
+ const dir = path.dirname(settingsPath);
112
+ if (!fs.existsSync(dir))
113
+ fs.mkdirSync(dir, { recursive: true });
114
+ let settings = {};
115
+ if (fs.existsSync(settingsPath)) {
116
+ try {
117
+ settings = JSON.parse(fs.readFileSync(settingsPath, "utf-8"));
118
+ }
119
+ catch {
120
+ settings = {};
121
+ }
122
+ }
123
+ if (!settings.hooks)
124
+ settings.hooks = {};
125
+ const hookEntry = {
126
+ hooks: [{ type: "command", command: `node ${EXTRACTOR_PATH}`, timeout: 30 }],
127
+ };
128
+ let added = 0;
129
+ for (const event of ["Stop", "PreCompact", "SessionEnd"]) {
130
+ if (!settings.hooks[event])
131
+ settings.hooks[event] = [];
132
+ const exists = settings.hooks[event].some((h) => h.hooks?.some((hh) => hh.command?.includes("memory-mcp")));
133
+ if (!exists) {
134
+ settings.hooks[event].push(hookEntry);
135
+ added++;
136
+ }
137
+ }
138
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
139
+ return { added };
140
+ }
141
+ // --- Commands ---
142
+ async function cmdSetup() {
143
+ console.log(`
144
+ ${c.bold}${c.magenta} memory-mcp${c.reset} ${c.dim}— persistent memory for Claude Code${c.reset}
145
+ `);
146
+ // 1. API Key
147
+ heading("Step 1: API Key");
148
+ if (hasApiKey()) {
149
+ ok("API key found");
150
+ }
151
+ else {
152
+ console.log(" The extractor needs an Anthropic API key to analyze transcripts.");
153
+ console.log(" It uses Haiku (very cheap — ~$0.001 per extraction).\n");
154
+ const key = await ask("Paste your ANTHROPIC_API_KEY:");
155
+ if (key) {
156
+ const config = readGlobalConfig();
157
+ config.apiKey = key;
158
+ writeGlobalConfig(config);
159
+ ok("API key saved to ~/.memory-mcp/config.json");
160
+ }
161
+ else {
162
+ warn("No key provided. Set ANTHROPIC_API_KEY env var or run: memory-mcp setup");
163
+ }
164
+ }
165
+ // 2. Install mode
166
+ heading("Step 2: Install hooks");
167
+ const global = await confirm("Install globally? (works for all projects)");
168
+ if (global) {
169
+ const { added } = installHooks(GLOBAL_CLAUDE_SETTINGS);
170
+ if (added > 0) {
171
+ ok(`Installed ${added} hooks in ~/.claude/settings.json`);
172
+ }
173
+ else {
174
+ skip("Hooks already installed globally");
175
+ }
176
+ }
177
+ else {
178
+ const projectDir = await ask("Project directory (or . for current):");
179
+ const absDir = path.resolve(projectDir || ".");
180
+ if (!fs.existsSync(absDir)) {
181
+ err(`Directory not found: ${absDir}`);
182
+ return;
183
+ }
184
+ const settingsPath = path.join(absDir, ".claude", "settings.json");
185
+ const { added } = installHooks(settingsPath);
186
+ if (added > 0) {
187
+ ok(`Installed ${added} hooks in ${settingsPath}`);
188
+ }
189
+ else {
190
+ skip("Hooks already installed");
191
+ }
192
+ // Also add MCP server
193
+ installMcpConfig(absDir);
194
+ // Also add .gitignore
195
+ installGitignore(absDir);
196
+ }
197
+ // 3. Done
198
+ heading("Setup complete");
199
+ console.log(` How it works:
200
+ ${c.cyan}1.${c.reset} Claude works normally — no commands needed
201
+ ${c.cyan}2.${c.reset} After each response, a hook silently extracts memories
202
+ ${c.cyan}3.${c.reset} Memories sync to CLAUDE.md automatically
203
+ ${c.cyan}4.${c.reset} New session → reads CLAUDE.md → instant context
204
+
205
+ To add MCP tools (search, ask) to a project:
206
+ ${c.bold}memory-mcp init ${c.dim}/path/to/project${c.reset}
207
+ `);
208
+ }
209
+ async function cmdInit(projectDir) {
210
+ const absDir = path.resolve(projectDir || ".");
211
+ if (!fs.existsSync(absDir)) {
212
+ err(`Directory not found: ${absDir}`);
213
+ process.exit(1);
214
+ }
215
+ heading(`Initializing memory-mcp for ${c.cyan}${absDir}${c.reset}`);
216
+ // .memory dir
217
+ const memDir = path.join(absDir, ".memory");
218
+ if (!fs.existsSync(memDir)) {
219
+ fs.mkdirSync(memDir, { recursive: true });
220
+ ok("Created .memory/");
221
+ }
222
+ else {
223
+ skip(".memory/ exists");
224
+ }
225
+ // Hooks
226
+ const settingsPath = path.join(absDir, ".claude", "settings.json");
227
+ const { added } = installHooks(settingsPath);
228
+ if (added > 0)
229
+ ok(`Installed ${added} hooks`);
230
+ else
231
+ skip("Hooks already installed");
232
+ // MCP config
233
+ installMcpConfig(absDir);
234
+ // .gitignore
235
+ installGitignore(absDir);
236
+ // Project name
237
+ const store = new store_1.MemoryStore(absDir);
238
+ const state = store.getState();
239
+ if (!state.description) {
240
+ const name = await ask(`Project name [${path.basename(absDir)}]:`);
241
+ const desc = await ask("Brief description:");
242
+ store.setProject(name || path.basename(absDir), desc || "");
243
+ ok("Project initialized");
244
+ }
245
+ else {
246
+ skip(`Project already named: ${state.project}`);
247
+ }
248
+ console.log(`
249
+ ${c.green}Done!${c.reset} MCP tools available next time Claude Code starts.
250
+ `);
251
+ }
252
+ function installMcpConfig(absDir) {
253
+ const mcpPath = path.join(absDir, ".mcp.json");
254
+ let mcpConfig = {};
255
+ if (fs.existsSync(mcpPath)) {
256
+ try {
257
+ mcpConfig = JSON.parse(fs.readFileSync(mcpPath, "utf-8"));
258
+ }
259
+ catch {
260
+ mcpConfig = {};
261
+ }
262
+ }
263
+ if (!mcpConfig.mcpServers)
264
+ mcpConfig.mcpServers = {};
265
+ if (!mcpConfig.mcpServers.memory) {
266
+ mcpConfig.mcpServers.memory = {
267
+ command: "node",
268
+ args: [SERVER_PATH, absDir],
269
+ };
270
+ fs.writeFileSync(mcpPath, JSON.stringify(mcpConfig, null, 2));
271
+ ok("Added MCP server to .mcp.json");
272
+ }
273
+ else {
274
+ skip("MCP server already in .mcp.json");
275
+ }
276
+ }
277
+ function installGitignore(absDir) {
278
+ const gitignorePath = path.join(absDir, ".gitignore");
279
+ if (fs.existsSync(gitignorePath)) {
280
+ const content = fs.readFileSync(gitignorePath, "utf-8");
281
+ if (!content.includes(".memory")) {
282
+ fs.appendFileSync(gitignorePath, "\n# Memory MCP\n.memory/\n");
283
+ ok("Added .memory/ to .gitignore");
284
+ }
285
+ else {
286
+ skip(".memory/ already in .gitignore");
287
+ }
288
+ }
289
+ else {
290
+ fs.writeFileSync(gitignorePath, "# Memory MCP\n.memory/\n");
291
+ ok("Created .gitignore");
292
+ }
293
+ }
294
+ async function cmdStatus(projectDir) {
295
+ const absDir = path.resolve(projectDir || ".");
296
+ const memDir = path.join(absDir, ".memory");
297
+ heading(`memory-mcp status`);
298
+ // Check components
299
+ const hasMemDir = fs.existsSync(memDir);
300
+ const hasState = fs.existsSync(path.join(memDir, "state.json"));
301
+ const hasMcp = fs.existsSync(path.join(absDir, ".mcp.json"));
302
+ const hasHooks = checkHooksInstalled(absDir);
303
+ const hasKey = hasApiKey();
304
+ const hasClaudeMd = fs.existsSync(path.join(absDir, "CLAUDE.md"));
305
+ console.log(` ${c.bold}Project:${c.reset} ${absDir}`);
306
+ console.log(` ${c.bold}.memory/:${c.reset} ${hasMemDir ? c.green + "exists" : c.red + "missing"}${c.reset}`);
307
+ console.log(` ${c.bold}State:${c.reset} ${hasState ? c.green + "exists" : c.yellow + "empty"}${c.reset}`);
308
+ console.log(` ${c.bold}.mcp.json:${c.reset} ${hasMcp ? c.green + "configured" : c.red + "missing"}${c.reset}`);
309
+ console.log(` ${c.bold}Hooks:${c.reset} ${hasHooks ? c.green + "installed" : c.red + "not installed"}${c.reset}`);
310
+ console.log(` ${c.bold}API key:${c.reset} ${hasKey ? c.green + "found" : c.red + "missing"}${c.reset}`);
311
+ console.log(` ${c.bold}CLAUDE.md:${c.reset} ${hasClaudeMd ? c.green + "exists" : c.yellow + "not yet created"}${c.reset}`);
312
+ if (hasState) {
313
+ const store = new store_1.MemoryStore(absDir);
314
+ const counts = store.getAllMemoryCount();
315
+ const state = store.getState();
316
+ console.log("");
317
+ console.log(` ${c.bold}Memories:${c.reset} ${c.cyan}${counts.active}${c.reset} active, ${c.gray}${counts.archived} archived, ${counts.superseded} superseded${c.reset}`);
318
+ console.log(` ${c.bold}Extractions:${c.reset} ${state.extractionCount}`);
319
+ console.log(` ${c.bold}Last update:${c.reset} ${state.lastUpdated}`);
320
+ console.log(` ${c.bold}Last consolidation:${c.reset} ${state.lastConsolidation || "never"}`);
321
+ }
322
+ if (!hasMemDir || !hasHooks || !hasKey) {
323
+ console.log(`\n Run ${c.bold}memory-mcp setup${c.reset} to fix missing components.`);
324
+ }
325
+ console.log("");
326
+ }
327
+ function checkHooksInstalled(absDir) {
328
+ // Check project-level
329
+ const projectSettings = path.join(absDir, ".claude", "settings.json");
330
+ if (checkHooksInFile(projectSettings))
331
+ return true;
332
+ // Check global
333
+ return checkHooksInFile(GLOBAL_CLAUDE_SETTINGS);
334
+ }
335
+ function checkHooksInFile(settingsPath) {
336
+ if (!fs.existsSync(settingsPath))
337
+ return false;
338
+ try {
339
+ const settings = JSON.parse(fs.readFileSync(settingsPath, "utf-8"));
340
+ return settings.hooks?.Stop?.some((h) => h.hooks?.some((hh) => hh.command?.includes("memory-mcp"))) ?? false;
341
+ }
342
+ catch {
343
+ return false;
344
+ }
345
+ }
346
+ async function cmdSearch(query, projectDir) {
347
+ const absDir = path.resolve(projectDir || ".");
348
+ const store = new store_1.MemoryStore(absDir);
349
+ const results = store.searchMemories(query, 20);
350
+ if (results.length === 0) {
351
+ console.log(` No memories matching "${query}".`);
352
+ return;
353
+ }
354
+ heading(`${results.length} results for "${query}"`);
355
+ for (const m of results) {
356
+ const tags = m.tags.length ? ` ${c.dim}[${m.tags.join(", ")}]${c.reset}` : "";
357
+ const conf = m.confidence < 1 ? ` ${c.yellow}(${Math.round(m.confidence * 100)}%)${c.reset}` : "";
358
+ console.log(` ${c.cyan}${m.type}${c.reset} ${m.content}${tags}${conf}`);
359
+ console.log(` ${c.gray}${m.id}${c.reset}`);
360
+ console.log("");
361
+ }
362
+ }
363
+ async function cmdAsk(question, projectDir) {
364
+ const absDir = path.resolve(projectDir || ".");
365
+ const store = new store_1.MemoryStore(absDir);
366
+ const results = store.searchMemories(question, 30);
367
+ if (results.length === 0) {
368
+ console.log(" No relevant memories found.");
369
+ return;
370
+ }
371
+ heading("Thinking...");
372
+ const prompt = (0, llm_1.buildAskPrompt)(question, results);
373
+ const answer = await (0, llm_1.callHaiku)(prompt, 1024);
374
+ if (answer) {
375
+ console.log(` ${answer}`);
376
+ }
377
+ else {
378
+ err("Could not reach LLM. Showing raw matches:");
379
+ for (const m of results.slice(0, 5)) {
380
+ console.log(` - (${m.type}) ${m.content}`);
381
+ }
382
+ }
383
+ console.log("");
384
+ }
385
+ async function cmdConsolidate(projectDir) {
386
+ const absDir = path.resolve(projectDir || ".");
387
+ const store = new store_1.MemoryStore(absDir);
388
+ const grouped = store.getMemoriesForConsolidation();
389
+ heading("Consolidating memories...");
390
+ let totalMerged = 0;
391
+ for (const [type, memories] of Object.entries(grouped)) {
392
+ if (memories.length < 3)
393
+ continue;
394
+ console.log(` ${c.cyan}${type}${c.reset}: ${memories.length} memories`);
395
+ const prompt = (0, llm_1.buildConsolidationPrompt)(type, memories);
396
+ const response = await (0, llm_1.callHaiku)(prompt, 2048);
397
+ if (!response) {
398
+ warn(` Failed for ${type}`);
399
+ continue;
400
+ }
401
+ try {
402
+ const jsonMatch = response.match(/\{[\s\S]*\}/);
403
+ if (!jsonMatch)
404
+ continue;
405
+ const result = JSON.parse(jsonMatch[0]);
406
+ if (result.keep && result.merge && result.drop) {
407
+ store.applyConsolidation(result);
408
+ const count = result.merge.length + result.drop.length;
409
+ totalMerged += count;
410
+ ok(`${count} merged/archived`);
411
+ }
412
+ }
413
+ catch {
414
+ warn(`Parse error for ${type}`);
415
+ }
416
+ }
417
+ // Sync CLAUDE.md
418
+ syncClaudeMd(absDir, store);
419
+ const counts = store.getAllMemoryCount();
420
+ console.log(`\n ${c.green}Done.${c.reset} ${totalMerged} memories consolidated. ${counts.active} active, ${counts.total} total.\n`);
421
+ }
422
+ function syncClaudeMd(projectDir, store) {
423
+ const claudeMdPath = path.join(projectDir, "CLAUDE.md");
424
+ const consciousness = store.generateConsciousness();
425
+ const marker = { start: "<!-- MEMORY:START -->", end: "<!-- MEMORY:END -->" };
426
+ const memoryBlock = `${marker.start}\n${consciousness}\n${marker.end}`;
427
+ if (fs.existsSync(claudeMdPath)) {
428
+ let existing = fs.readFileSync(claudeMdPath, "utf-8");
429
+ if (existing.includes(marker.start) && existing.includes(marker.end)) {
430
+ const regex = new RegExp(`${marker.start.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}[\\s\\S]*?${marker.end.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}`);
431
+ existing = existing.replace(regex, memoryBlock);
432
+ }
433
+ else {
434
+ existing = existing.trimEnd() + "\n\n" + memoryBlock + "\n";
435
+ }
436
+ fs.writeFileSync(claudeMdPath, existing);
437
+ }
438
+ else {
439
+ fs.writeFileSync(claudeMdPath, memoryBlock + "\n");
440
+ }
441
+ }
442
+ async function cmdKey(key) {
443
+ if (key) {
444
+ const config = readGlobalConfig();
445
+ config.apiKey = key;
446
+ writeGlobalConfig(config);
447
+ ok("API key saved to ~/.memory-mcp/config.json");
448
+ }
449
+ else if (hasApiKey()) {
450
+ ok("API key is configured");
451
+ }
452
+ else {
453
+ err("No API key found");
454
+ console.log(`\n Set it with: ${c.bold}memory-mcp key <your-api-key>${c.reset}`);
455
+ console.log(` Or set ANTHROPIC_API_KEY environment variable.\n`);
456
+ }
457
+ }
458
+ // --- Help ---
459
+ function printHelp() {
460
+ console.log(`
461
+ ${c.bold}${c.magenta}memory-mcp${c.reset} — persistent memory for Claude Code
462
+
463
+ ${c.bold}USAGE${c.reset}
464
+ memory-mcp <command> [options]
465
+
466
+ ${c.bold}COMMANDS${c.reset}
467
+ ${c.cyan}setup${c.reset} Interactive first-time setup (API key + hooks)
468
+ ${c.cyan}init${c.reset} [dir] Initialize memory for a project
469
+ ${c.cyan}status${c.reset} [dir] Show memory status and health
470
+ ${c.cyan}search${c.reset} <query> [dir] Search memories by keyword
471
+ ${c.cyan}ask${c.reset} <question> [dir] Ask a question, get answer from memory
472
+ ${c.cyan}consolidate${c.reset} [dir] Merge duplicates, prune stale memories
473
+ ${c.cyan}key${c.reset} [api-key] Set or check Anthropic API key
474
+ ${c.cyan}help${c.reset} Show this help
475
+
476
+ ${c.bold}EXAMPLES${c.reset}
477
+ ${c.dim}# First time setup${c.reset}
478
+ memory-mcp setup
479
+
480
+ ${c.dim}# Add memory to a project${c.reset}
481
+ memory-mcp init ~/Projects/my-app
482
+
483
+ ${c.dim}# Check what's remembered${c.reset}
484
+ memory-mcp search "auth flow"
485
+
486
+ ${c.dim}# Ask your project's memory a question${c.reset}
487
+ memory-mcp ask "how does billing work?"
488
+
489
+ ${c.bold}HOW IT WORKS${c.reset}
490
+ 1. Claude Code hooks silently capture what happens each session
491
+ 2. A fast LLM (Haiku) extracts important memories automatically
492
+ 3. Memories sync to CLAUDE.md — read on every new session
493
+ 4. MCP tools let Claude search/ask memory mid-conversation
494
+ `);
495
+ }
496
+ function printVersion() {
497
+ const pkg = JSON.parse(fs.readFileSync(path.join(MEMORY_MCP_DIR, "package.json"), "utf-8"));
498
+ console.log(`memory-mcp v${pkg.version}`);
499
+ }
500
+ // --- Main ---
501
+ async function main() {
502
+ const args = process.argv.slice(2);
503
+ const command = args[0];
504
+ switch (command) {
505
+ case "setup":
506
+ return cmdSetup();
507
+ case "init":
508
+ return cmdInit(args[1]);
509
+ case "status":
510
+ return cmdStatus(args[1]);
511
+ case "search":
512
+ if (!args[1]) {
513
+ err("Usage: memory-mcp search <query>");
514
+ process.exit(1);
515
+ }
516
+ return cmdSearch(args[1], args[2]);
517
+ case "ask":
518
+ if (!args[1]) {
519
+ err("Usage: memory-mcp ask <question>");
520
+ process.exit(1);
521
+ }
522
+ return cmdAsk(args[1], args[2]);
523
+ case "consolidate":
524
+ return cmdConsolidate(args[1]);
525
+ case "key":
526
+ return cmdKey(args[1]);
527
+ case "help":
528
+ case "--help":
529
+ case "-h":
530
+ return printHelp();
531
+ case "version":
532
+ case "--version":
533
+ case "-v":
534
+ return printVersion();
535
+ default:
536
+ if (!command) {
537
+ printHelp();
538
+ }
539
+ else {
540
+ err(`Unknown command: ${command}`);
541
+ console.log(` Run ${c.bold}memory-mcp help${c.reset} for usage.\n`);
542
+ process.exit(1);
543
+ }
544
+ }
545
+ }
546
+ main().catch((e) => {
547
+ err(e.message || String(e));
548
+ process.exit(1);
549
+ });
550
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * extractor.ts - The silent brain of memory-mcp
4
+ *
5
+ * Called by Claude Code hooks (Stop, PreCompact, SessionEnd).
6
+ * Reads the conversation transcript, extracts meaningful memories
7
+ * using Haiku, deduplicates, and syncs to CLAUDE.md.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}