@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/README.md +141 -15
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +138 -132
- package/dist/index.js.map +1 -1
- package/dist/setup.d.ts +10 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +520 -0
- package/dist/setup.js.map +1 -0
- package/package.json +7 -5
- package/src/index.ts +164 -149
- package/src/setup.ts +546 -0
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.
|
|
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",
|