@everstateai/mcp 1.2.1 → 1.3.1

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/setup.js ADDED
@@ -0,0 +1,520 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Everstate Setup Command
5
+ *
6
+ * Usage:
7
+ * npx @everstateai/mcp setup ck_YOUR_API_KEY
8
+ * npx @everstateai/mcp setup ck_YOUR_API_KEY --project-dir /path/to/project
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.runSetup = runSetup;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const os = __importStar(require("os"));
48
+ const https = __importStar(require("https"));
49
+ // Colors for terminal output
50
+ const colors = {
51
+ reset: "\x1b[0m",
52
+ red: "\x1b[31m",
53
+ green: "\x1b[32m",
54
+ yellow: "\x1b[33m",
55
+ blue: "\x1b[34m",
56
+ cyan: "\x1b[36m",
57
+ bold: "\x1b[1m",
58
+ };
59
+ const supportsColor = process.stdout.isTTY &&
60
+ process.env.FORCE_COLOR !== "0" &&
61
+ (process.platform !== "win32" ||
62
+ process.env.TERM === "xterm-256color" ||
63
+ process.env.WT_SESSION);
64
+ function c(color, text) {
65
+ return supportsColor ? `${colors[color]}${text}${colors.reset}` : text;
66
+ }
67
+ function log(message) {
68
+ console.log(message);
69
+ }
70
+ function logSuccess(message) {
71
+ console.log(c("green", "✓ ") + message);
72
+ }
73
+ function logError(message) {
74
+ console.error(c("red", "✗ ") + message);
75
+ }
76
+ function logInfo(message) {
77
+ console.log(c("blue", "→ ") + message);
78
+ }
79
+ function logWarning(message) {
80
+ console.log(c("yellow", "! ") + message);
81
+ }
82
+ function parseArgs(argv) {
83
+ const result = {
84
+ apiKey: null,
85
+ projectDir: process.cwd(),
86
+ help: false,
87
+ projectId: null,
88
+ skipHooks: false,
89
+ };
90
+ for (let i = 0; i < argv.length; i++) {
91
+ const arg = argv[i];
92
+ if (arg === "--help" || arg === "-h") {
93
+ result.help = true;
94
+ }
95
+ else if (arg === "--project-dir" || arg === "-d") {
96
+ result.projectDir = argv[++i];
97
+ }
98
+ else if (arg === "--project-id") {
99
+ result.projectId = argv[++i];
100
+ }
101
+ else if (arg === "--skip-hooks") {
102
+ result.skipHooks = true;
103
+ }
104
+ else if (arg.startsWith("ck_")) {
105
+ result.apiKey = arg;
106
+ }
107
+ else if (!arg.startsWith("-") && arg !== "setup") {
108
+ result.apiKey = arg;
109
+ }
110
+ }
111
+ return result;
112
+ }
113
+ function showHelp() {
114
+ console.log(`
115
+ ${c("cyan", "╔═══════════════════════════════════════════════════════════╗")}
116
+ ${c("cyan", "║")} ${c("bold", "Everstate Setup - AI Session Persistence")} ${c("cyan", "║")}
117
+ ${c("cyan", "╚═══════════════════════════════════════════════════════════╝")}
118
+
119
+ ${c("bold", "USAGE:")}
120
+ npx @everstateai/mcp setup <API_KEY> [options]
121
+
122
+ ${c("bold", "ARGUMENTS:")}
123
+ <API_KEY> Your Everstate API key (starts with ck_)
124
+ Get one at: https://www.everstate.ai
125
+
126
+ ${c("bold", "OPTIONS:")}
127
+ -d, --project-dir Project directory (default: current directory)
128
+ --project-id Link to existing project ID
129
+ --skip-hooks Skip installing Claude Code hooks
130
+ -h, --help Show this help message
131
+
132
+ ${c("bold", "EXAMPLES:")}
133
+ npx @everstateai/mcp setup ck_abc123def456
134
+ npx @everstateai/mcp setup ck_abc123 --project-dir ./my-project
135
+
136
+ ${c("bold", "WHAT THIS DOES:")}
137
+ 1. Configures Claude Code to use Everstate
138
+ 2. Creates .everstate.json in your project
139
+ 3. Sets up session persistence hooks
140
+
141
+ ${c("cyan", "Docs:")} https://www.everstate.ai/docs
142
+ `);
143
+ }
144
+ function validateApiKey(apiKey) {
145
+ if (!apiKey)
146
+ return { valid: false, error: "API key is required" };
147
+ if (!apiKey.startsWith("ck_"))
148
+ return { valid: false, error: 'API key must start with "ck_"' };
149
+ if (apiKey.length < 20)
150
+ return { valid: false, error: "API key appears too short" };
151
+ return { valid: true };
152
+ }
153
+ function getHomeDir() {
154
+ return os.homedir();
155
+ }
156
+ function getEverstateDir() {
157
+ return path.join(getHomeDir(), ".everstate");
158
+ }
159
+ function ensureDir(dirPath) {
160
+ if (!fs.existsSync(dirPath)) {
161
+ fs.mkdirSync(dirPath, { recursive: true });
162
+ }
163
+ }
164
+ function readJsonFile(filePath) {
165
+ try {
166
+ if (!fs.existsSync(filePath))
167
+ return null;
168
+ return JSON.parse(fs.readFileSync(filePath, "utf8"));
169
+ }
170
+ catch {
171
+ return null;
172
+ }
173
+ }
174
+ function writeJsonFile(filePath, data) {
175
+ ensureDir(path.dirname(filePath));
176
+ if (fs.existsSync(filePath)) {
177
+ fs.copyFileSync(filePath, `${filePath}.backup`);
178
+ }
179
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n");
180
+ }
181
+ function configureMcp(apiKey) {
182
+ const claudeConfigPath = path.join(getHomeDir(), ".claude.json");
183
+ logInfo("Configuring Claude Code (global)...");
184
+ let config = readJsonFile(claudeConfigPath) || {};
185
+ if (!config.mcpServers)
186
+ config.mcpServers = {};
187
+ // Use npx to run the package - simpler and always up to date
188
+ config.mcpServers.everstate = {
189
+ command: "npx",
190
+ args: ["-y", "@everstateai/mcp"],
191
+ env: {
192
+ EVERSTATE_API_KEY: apiKey,
193
+ },
194
+ };
195
+ writeJsonFile(claudeConfigPath, config);
196
+ logSuccess("Claude Code MCP configured (global)");
197
+ }
198
+ function writeApiKeyFile(apiKey) {
199
+ const everstateDir = getEverstateDir();
200
+ const keyFilePath = path.join(everstateDir, "api-key");
201
+ ensureDir(everstateDir);
202
+ fs.writeFileSync(keyFilePath, apiKey, { mode: 0o600 });
203
+ logSuccess("API key stored securely");
204
+ }
205
+ async function downloadFile(url) {
206
+ return new Promise((resolve, reject) => {
207
+ const urlObj = new URL(url);
208
+ const req = https.request({
209
+ hostname: urlObj.hostname,
210
+ port: 443,
211
+ path: urlObj.pathname,
212
+ method: "GET",
213
+ headers: { "User-Agent": "everstate-setup/1.0" },
214
+ }, (res) => {
215
+ if (res.statusCode !== 200) {
216
+ reject(new Error(`HTTP ${res.statusCode}`));
217
+ return;
218
+ }
219
+ let data = "";
220
+ res.on("data", (chunk) => (data += chunk));
221
+ res.on("end", () => resolve(data));
222
+ });
223
+ req.on("error", reject);
224
+ req.setTimeout(10000, () => {
225
+ req.destroy();
226
+ reject(new Error("Download timeout"));
227
+ });
228
+ req.end();
229
+ });
230
+ }
231
+ async function installHooks(projectDir) {
232
+ const hooksDir = path.join(projectDir, ".claude", "hooks");
233
+ ensureDir(hooksDir);
234
+ logInfo("Installing session hooks...");
235
+ const keyFilePath = path.join(getEverstateDir(), "api-key");
236
+ // Session start hook
237
+ const sessionStartHook = `#!/bin/bash
238
+ # Everstate Session Start Hook
239
+ EVERSTATE_API_KEY=""
240
+ if [ -f "${keyFilePath}" ]; then
241
+ EVERSTATE_API_KEY=$(cat "${keyFilePath}" 2>/dev/null)
242
+ fi
243
+ if [ -z "$EVERSTATE_API_KEY" ]; then exit 0; fi
244
+
245
+ CONTEXT=$(curl -s -X POST "https://www.everstate.ai/api/context/handoff" \\
246
+ -H "Content-Type: application/json" \\
247
+ -H "Authorization: Bearer $EVERSTATE_API_KEY" \\
248
+ -d '{"sections": "essential"}' 2>/dev/null)
249
+
250
+ if [ -n "$CONTEXT" ] && [ "$CONTEXT" != "null" ] && [ "$CONTEXT" != "{}" ]; then
251
+ echo "## Everstate Session Context"
252
+ echo ""
253
+ echo "$CONTEXT" | head -100
254
+ fi
255
+ `;
256
+ // Session stop hook
257
+ const sessionStopHook = `#!/bin/bash
258
+ # Everstate Session Stop Hook
259
+ EVERSTATE_API_KEY=""
260
+ if [ -f "${keyFilePath}" ]; then
261
+ EVERSTATE_API_KEY=$(cat "${keyFilePath}" 2>/dev/null)
262
+ fi
263
+ if [ -z "$EVERSTATE_API_KEY" ]; then exit 0; fi
264
+
265
+ curl -s --max-time 5 -X POST "https://www.everstate.ai/api/session/end" \\
266
+ -H "Content-Type: application/json" \\
267
+ -H "Authorization: Bearer $EVERSTATE_API_KEY" \\
268
+ -d '{}' 2>/dev/null || true
269
+ `;
270
+ // Try to download the latest sync-todos hook from the server
271
+ let syncTodosHook;
272
+ try {
273
+ logInfo("Downloading latest sync-todos hook...");
274
+ syncTodosHook = await downloadFile("https://www.everstate.ai/hooks/sync-todos.js");
275
+ logSuccess("Downloaded sync-todos.js from server");
276
+ }
277
+ catch {
278
+ logWarning("Could not download sync-todos.js, using embedded fallback");
279
+ // Fallback to simplified embedded version
280
+ syncTodosHook = `#!/usr/bin/env node
281
+ const https = require('https');
282
+ const fs = require('fs');
283
+ const path = require('path');
284
+
285
+ let input = '';
286
+ process.stdin.setEncoding('utf8');
287
+ process.stdin.on('data', chunk => input += chunk);
288
+ process.stdin.on('end', async () => {
289
+ try {
290
+ const data = JSON.parse(input);
291
+ const todos = data.tool_input?.todos || [];
292
+ if (!todos.length) return;
293
+
294
+ const keyPath = '${keyFilePath}';
295
+ if (!fs.existsSync(keyPath)) return;
296
+ const apiKey = fs.readFileSync(keyPath, 'utf8').trim();
297
+
298
+ let dir = process.cwd();
299
+ let projectId = null;
300
+ while (dir !== path.parse(dir).root) {
301
+ const configPath = path.join(dir, '.everstate.json');
302
+ if (fs.existsSync(configPath)) {
303
+ try {
304
+ projectId = JSON.parse(fs.readFileSync(configPath, 'utf8')).projectId;
305
+ break;
306
+ } catch {}
307
+ }
308
+ dir = path.dirname(dir);
309
+ }
310
+ if (!projectId) return;
311
+
312
+ for (const todo of todos) {
313
+ const req = https.request({
314
+ hostname: 'www.everstate.ai', port: 443, method: 'POST',
315
+ path: '/api/session/sync-todo',
316
+ headers: { 'Authorization': 'Bearer ' + apiKey, 'Content-Type': 'application/json' }
317
+ });
318
+ req.write(JSON.stringify({ projectId, title: todo.content, status: todo.status }));
319
+ req.end();
320
+ }
321
+ } catch {}
322
+ });
323
+ `;
324
+ }
325
+ // Write hook files with everstate- prefix to avoid conflicts
326
+ const startHookPath = path.join(hooksDir, "everstate-session-start.sh");
327
+ const stopHookPath = path.join(hooksDir, "everstate-session-stop.sh");
328
+ const syncTodosPath = path.join(hooksDir, "everstate-sync-todos.js");
329
+ fs.writeFileSync(startHookPath, sessionStartHook, { mode: 0o755 });
330
+ fs.writeFileSync(stopHookPath, sessionStopHook, { mode: 0o755 });
331
+ fs.writeFileSync(syncTodosPath, syncTodosHook, { mode: 0o755 });
332
+ // Configure hooks in settings.local.json - MERGE with existing hooks
333
+ const settingsPath = path.join(projectDir, ".claude", "settings.local.json");
334
+ let settings = readJsonFile(settingsPath) || {};
335
+ if (!settings.hooks)
336
+ settings.hooks = {};
337
+ // Helper to add a hook without duplicating or overwriting user hooks
338
+ function addHookIfNotExists(hookType, matcher, command) {
339
+ if (!settings.hooks[hookType]) {
340
+ settings.hooks[hookType] = [];
341
+ }
342
+ // Check if this exact hook already exists
343
+ const exists = settings.hooks[hookType].some((entry) => {
344
+ if (entry.matcher !== matcher)
345
+ return false;
346
+ return entry.hooks && entry.hooks.some((h) => h.command === command);
347
+ });
348
+ if (!exists) {
349
+ // Find existing entry with same matcher to add to, or create new
350
+ let matcherEntry = settings.hooks[hookType].find((e) => e.matcher === matcher);
351
+ if (matcherEntry) {
352
+ if (!matcherEntry.hooks)
353
+ matcherEntry.hooks = [];
354
+ matcherEntry.hooks.push({ type: "command", command });
355
+ }
356
+ else {
357
+ settings.hooks[hookType].push({
358
+ matcher,
359
+ hooks: [{ type: "command", command }],
360
+ });
361
+ }
362
+ return true;
363
+ }
364
+ return false;
365
+ }
366
+ // Add Everstate hooks (merging with any existing user hooks)
367
+ const added = {
368
+ sessionStart: addHookIfNotExists("SessionStart", "*", startHookPath),
369
+ stop: addHookIfNotExists("Stop", "*", stopHookPath),
370
+ todoWrite: addHookIfNotExists("PostToolUse", "TodoWrite", syncTodosPath),
371
+ };
372
+ writeJsonFile(settingsPath, settings);
373
+ const addedCount = Object.values(added).filter(Boolean).length;
374
+ if (addedCount > 0) {
375
+ logSuccess(`Added ${addedCount} Everstate hooks (merged with existing hooks)`);
376
+ }
377
+ else {
378
+ logSuccess("Everstate hooks already configured");
379
+ }
380
+ }
381
+ async function createProjectConfig(projectDir, apiKey, existingProjectId) {
382
+ const configPath = path.join(projectDir, ".everstate.json");
383
+ logInfo("Creating project configuration...");
384
+ // Check existing config
385
+ const existingConfig = readJsonFile(configPath);
386
+ if (existingConfig?.projectId && !existingProjectId) {
387
+ logInfo(`Using existing project: ${existingConfig.projectName || existingConfig.projectId}`);
388
+ return existingConfig;
389
+ }
390
+ const projectName = path.basename(projectDir);
391
+ let projectId = existingProjectId;
392
+ // Create project via API if no existing ID
393
+ if (!projectId) {
394
+ try {
395
+ const response = await httpPost("https://www.everstate.ai/api/projects", { name: projectName, description: "Created via npx @everstateai/mcp setup" }, apiKey);
396
+ if (response?.projectId) {
397
+ projectId = response.projectId;
398
+ }
399
+ }
400
+ catch (error) {
401
+ logWarning("Could not create project via API, creating local config");
402
+ }
403
+ }
404
+ const config = {
405
+ projectId: projectId || `proj_${Date.now()}`,
406
+ projectName,
407
+ createdAt: new Date().toISOString(),
408
+ version: "1.0.0",
409
+ };
410
+ writeJsonFile(configPath, config);
411
+ logSuccess(`Project configured: ${config.projectName}`);
412
+ return config;
413
+ }
414
+ function httpPost(url, data, apiKey) {
415
+ return new Promise((resolve, reject) => {
416
+ const urlObj = new URL(url);
417
+ const postData = JSON.stringify(data);
418
+ const req = https.request({
419
+ hostname: urlObj.hostname,
420
+ port: 443,
421
+ path: urlObj.pathname,
422
+ method: "POST",
423
+ headers: {
424
+ "Content-Type": "application/json",
425
+ "Content-Length": Buffer.byteLength(postData),
426
+ Authorization: `Bearer ${apiKey}`,
427
+ },
428
+ }, (res) => {
429
+ let body = "";
430
+ res.on("data", (chunk) => (body += chunk));
431
+ res.on("end", () => {
432
+ try {
433
+ resolve(JSON.parse(body));
434
+ }
435
+ catch {
436
+ resolve({ raw: body });
437
+ }
438
+ });
439
+ });
440
+ req.on("error", reject);
441
+ req.setTimeout(10000, () => {
442
+ req.destroy();
443
+ reject(new Error("Timeout"));
444
+ });
445
+ req.write(postData);
446
+ req.end();
447
+ });
448
+ }
449
+ function updateGitignore(projectDir) {
450
+ const gitignorePath = path.join(projectDir, ".gitignore");
451
+ const entries = ["# Everstate", ".claude/settings.local.json", ".claude/hooks/"];
452
+ let content = fs.existsSync(gitignorePath) ? fs.readFileSync(gitignorePath, "utf8") : "";
453
+ const toAdd = entries.filter((e) => !content.includes(e.replace("# Everstate", "")));
454
+ if (toAdd.length > 0) {
455
+ fs.writeFileSync(gitignorePath, content.trimEnd() + "\n\n" + toAdd.join("\n") + "\n");
456
+ logSuccess("Updated .gitignore");
457
+ }
458
+ }
459
+ async function runSetup(argv) {
460
+ const args = parseArgs(argv);
461
+ console.log("");
462
+ console.log(c("cyan", "╔═══════════════════════════════════════════════════════════╗"));
463
+ console.log(c("cyan", "║") + " " + c("bold", "Everstate Setup") + " " + c("cyan", "║"));
464
+ console.log(c("cyan", "╚═══════════════════════════════════════════════════════════╝"));
465
+ console.log("");
466
+ if (args.help) {
467
+ showHelp();
468
+ process.exit(0);
469
+ }
470
+ const validation = validateApiKey(args.apiKey);
471
+ if (!validation.valid) {
472
+ logError("API key required");
473
+ console.log("");
474
+ console.log(c("cyan", "Get your API key:"));
475
+ console.log(` 1. Visit ${c("bold", "https://www.everstate.ai")}`);
476
+ console.log(" 2. Sign up and create an API key");
477
+ console.log(" 3. Run: npx @everstateai/mcp setup ck_YOUR_API_KEY");
478
+ console.log("");
479
+ process.exit(1);
480
+ }
481
+ const apiKey = args.apiKey;
482
+ const projectDir = path.resolve(args.projectDir);
483
+ if (!fs.existsSync(projectDir)) {
484
+ logError(`Project directory not found: ${projectDir}`);
485
+ process.exit(1);
486
+ }
487
+ logInfo(`Project directory: ${projectDir}`);
488
+ console.log("");
489
+ try {
490
+ // Step 1: Configure Claude Code MCP
491
+ configureMcp(apiKey);
492
+ // Step 2: Store API key for hooks
493
+ writeApiKeyFile(apiKey);
494
+ // Step 3: Create project config
495
+ const projectConfig = await createProjectConfig(projectDir, apiKey, args.projectId);
496
+ // Step 4: Install hooks
497
+ if (!args.skipHooks) {
498
+ await installHooks(projectDir);
499
+ }
500
+ // Step 5: Update .gitignore
501
+ updateGitignore(projectDir);
502
+ // Success!
503
+ console.log("");
504
+ console.log(c("green", "╔═══════════════════════════════════════════════════════════╗"));
505
+ console.log(c("green", "║") + " " + c("bold", "Everstate Setup Complete!") + " " + c("green", "║"));
506
+ console.log(c("green", "╚═══════════════════════════════════════════════════════════╝"));
507
+ console.log("");
508
+ console.log(c("cyan", "Next steps:"));
509
+ console.log("");
510
+ console.log(" 1. Restart Claude Code to load the new configuration");
511
+ console.log(" 2. Start a new session - Everstate will load automatically");
512
+ console.log(" 3. View your dashboard at: https://www.everstate.ai");
513
+ console.log("");
514
+ }
515
+ catch (error) {
516
+ logError(`Setup failed: ${error.message}`);
517
+ process.exit(1);
518
+ }
519
+ }
520
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,18 @@
1
1
  {
2
2
  "name": "@everstateai/mcp",
3
- "version": "1.2.1",
4
- "description": "Everstate MCP server - persistent AI coding memory",
3
+ "version": "1.3.1",
4
+ "description": "Everstate MCP server - persistent AI coding memory. Run 'npx @everstateai/mcp setup' to configure.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "bin": {
8
- "everstate-mcp": "dist/index.js"
8
+ "everstate-mcp": "dist/index.js",
9
+ "everstate": "dist/index.js"
9
10
  },
10
11
  "scripts": {
11
12
  "build": "tsc",
12
13
  "start": "node dist/index.js",
13
- "dev": "ts-node src/index.ts"
14
+ "dev": "ts-node src/index.ts",
15
+ "setup": "node dist/index.js setup"
14
16
  },
15
17
  "keywords": [
16
18
  "mcp",
@@ -20,7 +22,7 @@
20
22
  "memory",
21
23
  "context"
22
24
  ],
23
- "author": "Everstate.ai",
25
+ "author": "Everstate.ai <support@everstate.ai>",
24
26
  "license": "MIT",
25
27
  "repository": {
26
28
  "type": "git",