elseid-mcp 1.0.8 → 1.0.11

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.
@@ -1,168 +1,80 @@
1
1
  #!/usr/bin/env node
2
2
  import fs from "fs";
3
+ import fsp from "fs/promises";
3
4
  import path from "path";
4
5
  import os from "os";
5
6
  import { select } from "@inquirer/prompts";
6
7
  import chalk from "chalk";
7
8
  import { fileURLToPath } from "url";
8
9
  import { spawn } from "child_process";
10
+ // ── Constants & Metadata ────────────────────────────────────────
9
11
  const DIM = chalk.gray;
10
12
  const GREEN = chalk.greenBright;
11
13
  const RED = chalk.red;
12
14
  const CYAN = chalk.cyan;
15
+ const BRAND = chalk.hex("#8B94FF");
16
+ const MCP_NAME = "elseid-mcp";
17
+ const GITHUB_REPO = "9Churze/ElseID";
18
+ // Dynamically resolve package version
19
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
20
+ function findPackageJson(startDir) {
21
+ let curr = startDir;
22
+ while (curr !== path.parse(curr).root) {
23
+ const pkgPath = path.join(curr, "package.json");
24
+ if (fs.existsSync(pkgPath)) {
25
+ return { ...JSON.parse(fs.readFileSync(pkgPath, "utf8")), __path: pkgPath };
26
+ }
27
+ curr = path.dirname(curr);
28
+ }
29
+ return {};
30
+ }
31
+ const pkg = findPackageJson(__dirname);
32
+ const VERSION = pkg.version || "1.0.0";
13
33
  // ── MCP Mode Detection ──────────────────────────────────────────
14
34
  if (process.argv.includes("--stdio")) {
15
- const __filename = fileURLToPath(import.meta.url);
16
- const __dirname = path.dirname(__filename);
17
- const serverPath = path.resolve(__dirname, "..", "src", "index.js");
35
+ const pkgData = findPackageJson(__dirname);
36
+ const projectRoot = pkgData.__path ? path.dirname(pkgData.__path) : path.resolve(__dirname, "..");
37
+ const serverPath = fs.existsSync(path.join(projectRoot, "dist/src/index.js"))
38
+ ? path.join(projectRoot, "dist/src/index.js")
39
+ : path.join(projectRoot, "src/index.js");
18
40
  const child = spawn("node", [serverPath, ...process.argv.slice(2)], { stdio: "inherit" });
19
41
  child.on("exit", (code) => process.exit(code ?? 0));
20
42
  }
21
43
  else {
22
- runCLI();
44
+ runCLI().catch((err) => {
45
+ console.error(RED(`\n Fatal error: ${err.message}`));
46
+ process.exit(1);
47
+ });
23
48
  }
24
- // ── Error Reporting ─────────────────────────────────────────────
25
- const GITHUB_REPO = "elseid-mcp/elseid-mcp"; // ← update to real repo slug
26
- /** Replace the real home dir with ~ so no username is transmitted. */
49
+ // ── Types ───────────────────────────────────────────────────────
50
+ import { getRegistry } from "./registry.js";
51
+ // ── Utils ───────────────────────────────────────────────────────
27
52
  function sanitisePath(p) {
28
53
  return p.replace(os.homedir(), "~");
29
54
  }
30
- /**
31
- * Open a pre-filled GitHub issue in the default browser.
32
- * Entirely opt-in — only called after explicit user consent.
33
- * Nothing is sent to any server by this function itself.
34
- */
35
- function openGitHubIssue(report) {
36
- const title = encodeURIComponent(`[auto] Install error — ${report.client} on ${report.platform}`);
37
- const body = encodeURIComponent(`**Client**: ${report.client}\n` +
38
- `**Platform**: ${report.platform}\n` +
39
- `**Error**: ${report.errorType}\n` +
40
- `**Message**: ${report.message}\n` +
41
- `**Installer version**: ${report.installerVersion}\n\n` +
42
- `*(Pre-filled by the installer. No config file contents or personal data included.)*`);
43
- const url = `https://github.com/${GITHUB_REPO}/issues/new` +
44
- `?title=${title}&body=${body}&labels=install-error`;
45
- const opener = process.platform === "darwin" ? "open" :
46
- process.platform === "win32" ? "start" : "xdg-open";
47
- spawn(opener, [url], { detached: true, stdio: "ignore" }).unref();
55
+ function escapeRegex(str) {
56
+ return str.replace(/[/\-\\^$*+?.()|[\]{}]/g, "\\$&");
48
57
  }
49
- // ── Client Registry ─────────────────────────────────────────────
50
- //
51
- // To add a new client: append one entry here. Zero engine changes required.
52
- function buildRegistry(cmd, args) {
53
- const H = os.homedir();
54
- const isMac = process.platform === "darwin";
55
- const isWin = process.platform === "win32";
56
- return [
57
- {
58
- id: "claude",
59
- label: "Claude Desktop",
60
- configPath: () => isMac
61
- ? path.join(H, "Library/Application Support/Claude/claude_desktop_config.json")
62
- : path.join(H, "AppData/Roaming/Claude/claude_desktop_config.json"),
63
- detectPaths: () => isMac
64
- ? ["/Applications/Claude.app", path.join(H, "Library/Application Support/Claude")]
65
- : [path.join(H, "AppData/Roaming/Claude")],
66
- format: "json-mcpServers",
67
- verifiedAt: "2026-05",
68
- },
69
- {
70
- id: "cursor",
71
- label: "Cursor",
72
- configPath: () => isMac ? path.join(H, ".cursor/mcp.json") :
73
- isWin ? path.join(H, "AppData/Roaming/Cursor/User/globalStorage/mcp.json")
74
- : path.join(H, ".config/Cursor/User/globalStorage/mcp.json"),
75
- detectPaths: () => isMac ? ["/Applications/Cursor.app", path.join(H, ".cursor")] :
76
- isWin ? [path.join(H, "AppData/Roaming/Cursor")]
77
- : [path.join(H, ".config/Cursor")],
78
- format: "json-mcpServers",
79
- requiresStdioType: true,
80
- verifiedAt: "2026-05",
81
- },
82
- {
83
- id: "windsurf",
84
- label: "Windsurf",
85
- configPath: () => isMac ? path.join(H, ".codeium/windsurf/mcp_config.json") :
86
- isWin ? path.join(H, "AppData/Roaming/Windsurf/mcp_config.json")
87
- : path.join(H, ".codeium/windsurf/mcp_config.json"),
88
- detectPaths: () => isMac ? ["/Applications/Windsurf.app", path.join(H, ".codeium/windsurf")] :
89
- isWin ? [path.join(H, "AppData/Roaming/Windsurf")]
90
- : [path.join(H, ".codeium/windsurf")],
91
- format: "json-mcpServers",
92
- verifiedAt: "2026-05",
93
- },
94
- {
95
- id: "opencode",
96
- label: "OpenCode",
97
- configPath: () => isWin ? "" : path.join(H, ".config/opencode/opencode.json"),
98
- detectPaths: () => isWin ? [] : [path.join(H, ".config/opencode")],
99
- format: "json-mcp-local",
100
- verifiedAt: "2025-05",
101
- },
102
- {
103
- id: "codex",
104
- label: "Codex",
105
- configPath: () => isWin ? "" : path.join(H, ".codex/config.toml"),
106
- detectPaths: () => isWin ? [] : [path.join(H, ".codex")],
107
- format: "toml-mcp",
108
- verifiedAt: "2025-05",
109
- },
110
- {
111
- id: "antigravity",
112
- label: "Antigravity",
113
- configPath: () => isWin ? "" : path.join(H, ".gemini/antigravity/mcp_config.json"),
114
- detectPaths: () => isWin ? [] : [
115
- "/Applications/Antigravity.app",
116
- path.join(H, "Library/Application Support/Antigravity"),
117
- ],
118
- format: "json-mcpServers",
119
- verifiedAt: "2025-05",
120
- },
121
- {
122
- id: "codebuddy",
123
- label: "CodeBuddy CN",
124
- configPath: () => isWin ? "" : path.join(H, ".codebuddy/mcp.json"),
125
- detectPaths: () => isWin ? [] : [
126
- "/Applications/CodeBuddy CN.app",
127
- path.join(H, "Library/Application Support/CodeBuddy CN"),
128
- ],
129
- format: "json-mcpServers",
130
- requiresStdioType: true,
131
- verifiedAt: "2025-05",
132
- },
133
- {
134
- id: "workbuddy",
135
- label: "WorkBuddy",
136
- configPath: () => isWin ? "" : path.join(H, ".workbuddy/mcp.json"),
137
- detectPaths: () => isWin ? [] : [
138
- "/Applications/WorkBuddy.app",
139
- path.join(H, "Library/Application Support/WorkBuddy"),
140
- ],
141
- format: "json-mcpServers",
142
- verifiedAt: "2025-05",
143
- },
144
- ];
145
- }
146
- /**
147
- * Check whether a client appears installed on this machine.
148
- * Never throws — returns "not-found" on any unexpected error.
149
- */
150
- function detectClient(client) {
58
+ async function detectClient(client) {
151
59
  if (client.unsupported)
152
- return "unsupported";
60
+ return false;
153
61
  try {
154
62
  const candidates = client.detectPaths
155
63
  ? client.detectPaths()
156
64
  : [path.dirname(client.configPath())];
157
- return candidates.some((p) => p && fs.existsSync(p)) ? "found" : "not-found";
65
+ const validPaths = candidates.filter(Boolean);
66
+ if (validPaths.length === 0)
67
+ return false;
68
+ for (const p of validPaths) {
69
+ if (fs.existsSync(p))
70
+ return true;
71
+ }
72
+ return false;
158
73
  }
159
74
  catch {
160
- return "not-found";
75
+ return false;
161
76
  }
162
77
  }
163
- // ── Config Write Engine ─────────────────────────────────────────
164
- const MCP_NAME = "elseid-mcp";
165
- /** Read a JSON file safely. Returns null if missing/empty; throws "malformed-json: …" on parse error. */
166
78
  function readJson(filePath) {
167
79
  if (!fs.existsSync(filePath))
168
80
  return null;
@@ -176,21 +88,12 @@ function readJson(filePath) {
176
88
  throw new Error(`malformed-json: ${err.message}`);
177
89
  }
178
90
  }
179
- /**
180
- * Write JSON atomically via a temp file.
181
- * A crash mid-write leaves the .tmp file, not a corrupted original.
182
- */
183
- function writeJsonAtomic(filePath, data) {
184
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
91
+ async function writeAtomic(filePath, content) {
92
+ await fsp.mkdir(path.dirname(filePath), { recursive: true });
185
93
  const tmp = filePath + ".tmp";
186
- fs.writeFileSync(tmp, JSON.stringify(data, null, 2) + "\n", "utf8");
187
- fs.renameSync(tmp, filePath);
94
+ await fsp.writeFile(tmp, content, "utf8");
95
+ await fsp.rename(tmp, filePath);
188
96
  }
189
- /**
190
- * Copy the file to <file>.bak before touching it.
191
- * Returns the backup path, or null if the file didn't exist yet.
192
- * Non-fatal on failure (backup is best-effort).
193
- */
194
97
  function backupIfExists(filePath) {
195
98
  try {
196
99
  if (!fs.existsSync(filePath))
@@ -203,42 +106,67 @@ function backupIfExists(filePath) {
203
106
  return null;
204
107
  }
205
108
  }
206
- function mergeJsonMcpServers(config, entry) {
207
- return { ...config, mcpServers: { ...(config.mcpServers ?? {}), [MCP_NAME]: entry } };
109
+ // ── Idempotency & Merging ────────────────────────────────────────
110
+ function areEntriesEqual(a, b) {
111
+ if (!a || !b)
112
+ return false;
113
+ return JSON.stringify(a) === JSON.stringify(b);
208
114
  }
209
- function mergeJsonMcp(config, entry) {
210
- return { ...config, mcp: { ...(config.mcp ?? {}), [MCP_NAME]: entry } };
115
+ function getMcpEntry(client, cmd, args) {
116
+ const entry = { command: cmd, args };
117
+ if (client.format === "json-mcp-local") {
118
+ // If it's a local development run, we use the passed cmd/args which point to local files.
119
+ // If it's a remote run (npx), we can use the specific type: "local" structure.
120
+ const isNpx = cmd === "npx";
121
+ if (isNpx) {
122
+ return { type: "local", command: ["npx", "-y", "elseid-mcp@latest", "--stdio"], enabled: true };
123
+ }
124
+ }
125
+ if (client.requiresStdioType) {
126
+ entry.type = "stdio";
127
+ }
128
+ return entry;
211
129
  }
212
- /** Upsert a TOML [mcp_servers."name"] block — only that block is touched. */
213
130
  function mergeTomlBlock(existing, cmd, args) {
131
+ const escapedName = escapeRegex(MCP_NAME);
214
132
  const block = `[mcp_servers."${MCP_NAME}"]\n` +
215
133
  `command = "${cmd}"\n` +
216
134
  `args = [${args.map((a) => `"${a}"`).join(", ")}]`;
217
- const pattern = new RegExp(`\\[mcp_servers\\."${MCP_NAME}"\\][\\s\\S]*?(?=\\n\\[|$)`, "g");
218
- return pattern.test(existing)
135
+ // Matches the block and any trailing whitespace until the next block or end of file
136
+ const pattern = new RegExp(`\\[mcp_servers\\."${escapedName}"\\][\\s\\S]*?(?=\\r?\\n\\s*\\[|$)`, "g");
137
+ const match = existing.match(pattern);
138
+ if (match && match[0].trim() === block.trim()) {
139
+ return { content: existing, changed: false };
140
+ }
141
+ const updated = match
219
142
  ? existing.replace(pattern, block)
220
- : existing.trimEnd() + "\n\n" + block + "\n";
143
+ : existing.trimEnd() + (existing.trim() ? "\n\n" : "") + block + "\n";
144
+ return { content: updated, changed: true };
221
145
  }
146
+ // ── Core Engine ──────────────────────────────────────────────────
222
147
  async function injectConfig(client, opts) {
223
148
  if (client.unsupported)
224
- return { ok: false, errorType: "unsupported" };
149
+ return { ok: false, status: "unsupported" };
225
150
  const configPath = client.configPath();
226
151
  if (!configPath)
227
- return { ok: false, errorType: "no-path" };
228
- const backupPath = backupIfExists(configPath) ?? undefined;
229
- // ── TOML ──────────────────────────────────────────────────────
152
+ return { ok: false, status: "error", errorType: "no-path" };
153
+ // ── TOML Flow ────────────────────────────────────────────────
230
154
  if (client.format === "toml-mcp") {
231
155
  try {
232
- fs.mkdirSync(path.dirname(configPath), { recursive: true });
233
- const raw = fs.existsSync(configPath) ? fs.readFileSync(configPath, "utf8") : "";
234
- fs.writeFileSync(configPath, mergeTomlBlock(raw, opts.cmd, opts.args), "utf8");
235
- return { ok: true, backupPath };
156
+ await fsp.mkdir(path.dirname(configPath), { recursive: true });
157
+ const raw = fs.existsSync(configPath) ? await fsp.readFile(configPath, "utf8") : "";
158
+ const { content, changed } = mergeTomlBlock(raw, opts.cmd, opts.args);
159
+ if (!changed)
160
+ return { ok: true, status: "skipped" };
161
+ const backupPath = backupIfExists(configPath) ?? undefined;
162
+ await writeAtomic(configPath, content);
163
+ return { ok: true, status: "updated", backupPath };
236
164
  }
237
165
  catch (err) {
238
- return { ok: false, errorType: "write-error", message: err.message, backupPath };
166
+ return { ok: false, status: "error", errorType: "write-error", message: err.message };
239
167
  }
240
168
  }
241
- // ── JSON ──────────────────────────────────────────────────────
169
+ // ── JSON Flow ────────────────────────────────────────────────
242
170
  let config;
243
171
  try {
244
172
  config = readJson(configPath) ?? {};
@@ -246,49 +174,61 @@ async function injectConfig(client, opts) {
246
174
  catch (err) {
247
175
  const msg = err.message;
248
176
  const errorType = msg.startsWith("malformed-json") ? "malformed-json" : "read-error";
249
- return { ok: false, errorType, message: msg, backupPath };
177
+ return { ok: false, status: "error", errorType, message: msg };
178
+ }
179
+ const newEntry = getMcpEntry(client, opts.cmd, opts.args);
180
+ const rootKey = (client.format === "json-mcp" || client.format === "json-mcp-local") ? "mcp" : "mcpServers";
181
+ const existingEntry = config[rootKey]?.[MCP_NAME];
182
+ // Idempotency check: Skip if already correctly configured
183
+ if (areEntriesEqual(existingEntry, newEntry)) {
184
+ return { ok: true, status: "skipped" };
250
185
  }
251
- const mcpEntry = client.format === "json-mcp-local"
252
- ? { type: "local", command: ["npx", "-y", "elseid-mcp", "--stdio"], enabled: true }
253
- : { command: opts.cmd, args: opts.args };
254
- let updated = client.format === "json-mcp" || client.format === "json-mcp-local"
255
- ? mergeJsonMcp(config, mcpEntry)
256
- : mergeJsonMcpServers(config, mcpEntry);
186
+ const backupPath = backupIfExists(configPath) ?? undefined;
187
+ const updatedConfig = {
188
+ ...config,
189
+ [rootKey]: {
190
+ ...(config[rootKey] ?? {}),
191
+ [MCP_NAME]: newEntry
192
+ }
193
+ };
257
194
  try {
258
- writeJsonAtomic(configPath, updated);
195
+ await writeAtomic(configPath, JSON.stringify(updatedConfig, null, 2) + "\n");
196
+ return { ok: true, status: "updated", backupPath };
259
197
  }
260
198
  catch (err) {
261
- return { ok: false, errorType: "write-error", message: err.message, backupPath };
199
+ return { ok: false, status: "error", errorType: "write-error", message: err.message, backupPath };
262
200
  }
263
- return { ok: true, backupPath };
264
201
  }
265
202
  // ── CLI UI ───────────────────────────────────────────────────────
266
- function friendlyError(errorType, backupPath) {
267
- const bak = backupPath
268
- ? `\n ${DIM("Backup saved at: " + sanitisePath(backupPath) + " — restore it manually if needed.")}`
269
- : "";
270
- switch (errorType) {
271
- case "malformed-json":
272
- return `Config file has a syntax error — likely from a previous manual edit.${bak}`;
273
- case "write-error":
274
- return `Could not write to config file. Check folder permissions.${bak}`;
275
- case "no-path":
276
- return `Platform not yet supported. See: https://docs.elseid.xyz/manual-install`;
277
- default:
278
- return `Unexpected error.${bak}`;
279
- }
203
+ function openGitHubIssue(report) {
204
+ const title = encodeURIComponent(`[auto] Install error — ${report.client} on ${report.platform}`);
205
+ const body = encodeURIComponent(`**Client**: ${report.client}\n` +
206
+ `**Platform**: ${report.platform}\n` +
207
+ `**Error**: ${report.errorType}\n` +
208
+ `**Message**: ${report.message}\n` +
209
+ `**Installer version**: ${report.installerVersion}\n\n` +
210
+ `*(Pre-filled by the installer. No personal data included.)*`);
211
+ const url = `https://github.com/${GITHUB_REPO}/issues/new?title=${title}&body=${body}&labels=install-error`;
212
+ const opener = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
213
+ spawn(opener, [url], { detached: true, stdio: "ignore" }).unref();
280
214
  }
281
215
  async function runCLI() {
282
- const __filename = fileURLToPath(import.meta.url);
283
- const __dirname = path.dirname(__filename);
284
216
  const isRemoteRun = __dirname.includes("node_modules") || __dirname.includes("_npx");
285
- const projectRoot = path.resolve(__dirname, "..");
217
+ const pkgData = findPackageJson(__dirname);
218
+ const projectRoot = pkgData.__path ? path.dirname(pkgData.__path) : path.resolve(__dirname, "..");
286
219
  const { cmd, args } = isRemoteRun
287
- ? { cmd: "npx", args: ["-y", "elseid-mcp", "--stdio"] }
288
- : { cmd: "node", args: [path.join(projectRoot, "dist/src/index.js"), "--stdio"] };
289
- const registry = buildRegistry(cmd, args);
220
+ ? { cmd: "npx", args: ["-y", "elseid-mcp@latest", "--stdio"] }
221
+ : {
222
+ cmd: "node",
223
+ args: [
224
+ fs.existsSync(path.join(projectRoot, "dist/src/index.js"))
225
+ ? path.join(projectRoot, "dist/src/index.js")
226
+ : path.join(projectRoot, "src/index.js"),
227
+ "--stdio"
228
+ ]
229
+ };
230
+ const registry = getRegistry();
290
231
  console.clear();
291
- const BRAND = chalk.hex("#8B94FF");
292
232
  console.log(`
293
233
  ${BRAND.bold("██████ ██ ██████ ███████ ██ ██████ ")}
294
234
  ${BRAND.bold("██ ██ ██ ██ ██ ██ ██ ")}
@@ -296,17 +236,16 @@ async function runCLI() {
296
236
  ${BRAND.bold("██ ██ ██ ██ ██ ██ ██ ")}
297
237
  ${BRAND.bold("███████ ███████ ██████ ███████ ██ ██████ ")}
298
238
 
299
- ${BRAND("Exile your digital soul")} ${DIM("|")} ${DIM("0x7E 0x1D")}
239
+ ${BRAND("Exile your digital soul")} ${DIM("|")} ${DIM("v" + VERSION)}
300
240
  `);
301
- // ── Step 1: Auto-detect ─────────────────────────────────────
302
241
  console.log(` ${CYAN("→")} Scanning for installed AI clients...\n`);
303
- const found = registry.filter((c) => detectClient(c) === "found");
304
- const notFound = registry.filter((c) => detectClient(c) === "not-found" && !c.unsupported);
305
- const unsupported = registry.filter((c) => c.unsupported);
242
+ const detectionResults = await Promise.all(registry.map(async (c) => ({ client: c, found: await detectClient(c) })));
243
+ const found = detectionResults.filter((r) => r.found).map((r) => r.client);
244
+ const notFound = registry.filter((c) => !found.includes(c) && !c.unsupported);
306
245
  if (found.length === 0) {
307
246
  console.log(chalk.yellow(" No supported AI clients detected on this machine.\n"));
308
- console.log(DIM(" Supported: Claude Desktop, Cursor, Windsurf, OpenCode, Codex"));
309
- console.log(DIM(" Manual setup: https://docs.elseid.xyz/manual-install\n"));
247
+ console.log(DIM(" Supported: Claude, Cursor, Windsurf, OpenCode, Codex, Antigravity"));
248
+ console.log(DIM(` Manual setup: https://github.com/${GITHUB_REPO}\n`));
310
249
  process.exit(0);
311
250
  }
312
251
  for (const c of found) {
@@ -315,14 +254,9 @@ async function runCLI() {
315
254
  if (notFound.length > 0) {
316
255
  console.log(` ${DIM("Not found: " + notFound.map((c) => c.label).join(", "))}`);
317
256
  }
318
- for (const c of unsupported) {
319
- console.log(` ${DIM("○ " + c.label + " — coming soon")}`);
320
- }
321
257
  console.log();
322
- // ── Step 2: Confirm ──────────────────────────────────────────
323
- const prefix = ` ${CYAN("λ")} ${chalk.bold("ELSEID")} ${DIM("»")}`;
324
258
  const confirm = await select({
325
- message: `${prefix} Configure ${found.map((c) => c.label).join(", ")}?`,
259
+ message: ` ${CYAN("λ")} ${chalk.bold("ELSEID")} ${DIM("»")} Configure detected clients?`,
326
260
  choices: [
327
261
  { name: "🚀 Yes, configure now", value: "go" },
328
262
  { name: "Cancel", value: "cancel" },
@@ -331,52 +265,35 @@ async function runCLI() {
331
265
  if (confirm === "cancel")
332
266
  process.exit(0);
333
267
  console.log();
334
- // ── Step 3: Write configs ────────────────────────────────────
335
268
  const errors = [];
336
269
  for (const client of found) {
337
270
  const result = await injectConfig(client, { cmd, args });
338
271
  if (result.ok) {
339
- console.log(` ${GREEN("✓")} ${chalk.bold(client.label)} configured`);
272
+ const statusIcon = result.status === "skipped" ? DIM("○") : GREEN("✓");
273
+ const statusText = result.status === "skipped" ? DIM("already configured") : "configured";
274
+ console.log(` ${statusIcon} ${chalk.bold(client.label)} ${statusText}`);
340
275
  }
341
276
  else {
342
- console.log(` ${RED("✗")} ${chalk.bold(client.label)} — ${friendlyError(result.errorType, result.backupPath)}`);
277
+ console.log(` ${RED("✗")} ${chalk.bold(client.label)} — ${RED(result.errorType)}`);
343
278
  errors.push({ client, result });
344
279
  }
345
280
  }
346
- // Unsupported: show manual links
347
- if (unsupported.length > 0) {
348
- console.log();
349
- for (const c of unsupported) {
350
- console.log(` ${DIM("○")} ${c.label} ${DIM("→ manual setup:")} ${c.manualUrl ?? "https://docs.elseid.xyz"}`);
351
- }
352
- }
353
- // ── Step 4: Error reporting (opt-in) ─────────────────────────
354
281
  if (errors.length > 0) {
355
- console.log();
356
- console.log(chalk.yellow(" Some clients could not be configured automatically.\n"));
357
- console.log(DIM(" Help us fix this — we'll open a pre-filled GitHub issue in your browser."));
358
- console.log(DIM(" Only the error type, client name, and platform are included. Nothing personal.\n"));
282
+ console.log(chalk.yellow("\n Some clients could not be configured automatically."));
359
283
  const report = await select({
360
- message: " Open a GitHub issue to report this?",
361
- choices: [
362
- { name: "Yes — open in browser", value: "yes" },
363
- { name: "No thanks", value: "no" },
364
- ],
284
+ message: " Report these errors to GitHub?",
285
+ choices: [{ name: "Yes", value: "yes" }, { name: "No", value: "no" }],
365
286
  });
366
287
  if (report === "yes") {
367
288
  for (const { client, result } of errors) {
368
289
  openGitHubIssue({
369
290
  client: client.label,
370
291
  platform: `${process.platform} / Node ${process.version}`,
371
- errorType: result.errorType ?? "unknown",
292
+ errorType: result.errorType,
372
293
  message: sanitisePath(result.message ?? ""),
373
- installerVersion: "1.0.0", // replace with auto-injected version at build time
294
+ installerVersion: VERSION,
374
295
  });
375
296
  }
376
- console.log(GREEN("\n Issue opened. Thank you!\n"));
377
- }
378
- else {
379
- console.log();
380
297
  }
381
298
  }
382
299
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../scripts/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../scripts/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type ConfigFormat = "json-mcpServers" | "json-mcp" | "json-mcp-local" | "toml-mcp";
2
+ export interface ClientDef {
3
+ id: string;
4
+ label: string;
5
+ configPath: () => string;
6
+ detectPaths?: () => string[];
7
+ format: ConfigFormat;
8
+ unsupported?: true;
9
+ manualUrl?: string;
10
+ requiresStdioType?: true;
11
+ }
12
+ /**
13
+ * Registry of supported AI clients and their configuration paths.
14
+ * To add a new client: append one entry here.
15
+ */
16
+ export declare function getRegistry(): ClientDef[];
@@ -0,0 +1,93 @@
1
+ import path from "path";
2
+ import os from "os";
3
+ /**
4
+ * Registry of supported AI clients and their configuration paths.
5
+ * To add a new client: append one entry here.
6
+ */
7
+ export function getRegistry() {
8
+ const H = os.homedir();
9
+ const isMac = process.platform === "darwin";
10
+ const isWin = process.platform === "win32";
11
+ return [
12
+ {
13
+ id: "claude",
14
+ label: "Claude Desktop",
15
+ configPath: () => isMac
16
+ ? path.join(H, "Library/Application Support/Claude/claude_desktop_config.json")
17
+ : path.join(H, "AppData/Roaming/Claude/claude_desktop_config.json"),
18
+ detectPaths: () => isMac
19
+ ? ["/Applications/Claude.app", path.join(H, "Library/Application Support/Claude")]
20
+ : [path.join(H, "AppData/Roaming/Claude")],
21
+ format: "json-mcpServers",
22
+ },
23
+ {
24
+ id: "cursor",
25
+ label: "Cursor",
26
+ configPath: () => isMac ? path.join(H, ".cursor/mcp.json") :
27
+ isWin ? path.join(H, "AppData/Roaming/Cursor/User/globalStorage/mcp.json")
28
+ : path.join(H, ".config/Cursor/User/globalStorage/mcp.json"),
29
+ detectPaths: () => isMac ? ["/Applications/Cursor.app", path.join(H, ".cursor")] :
30
+ isWin ? [path.join(H, "AppData/Roaming/Cursor")]
31
+ : [path.join(H, ".config/Cursor")],
32
+ format: "json-mcpServers",
33
+ requiresStdioType: true,
34
+ },
35
+ {
36
+ id: "windsurf",
37
+ label: "Windsurf",
38
+ configPath: () => isMac ? path.join(H, ".codeium/windsurf/mcp_config.json") :
39
+ isWin ? path.join(H, "AppData/Roaming/Windsurf/mcp_config.json")
40
+ : path.join(H, ".codeium/windsurf/mcp_config.json"),
41
+ detectPaths: () => isMac ? ["/Applications/Windsurf.app", path.join(H, ".codeium/windsurf")] :
42
+ isWin ? [path.join(H, "AppData/Roaming/Windsurf")]
43
+ : [path.join(H, ".codeium/windsurf")],
44
+ format: "json-mcpServers",
45
+ },
46
+ {
47
+ id: "opencode",
48
+ label: "OpenCode",
49
+ configPath: () => isWin ? "" : path.join(H, ".config/opencode/opencode.json"),
50
+ detectPaths: () => isWin ? [] : [path.join(H, ".config/opencode")],
51
+ format: "json-mcp-local",
52
+ },
53
+ {
54
+ id: "codex",
55
+ label: "Codex",
56
+ configPath: () => isWin ? "" : path.join(H, ".codex/config.toml"),
57
+ detectPaths: () => isWin ? [] : [path.join(H, ".codex")],
58
+ format: "toml-mcp",
59
+ },
60
+ {
61
+ id: "antigravity",
62
+ label: "Antigravity",
63
+ configPath: () => isWin ? "" : path.join(H, ".gemini/antigravity/mcp_config.json"),
64
+ detectPaths: () => isWin ? [] : [
65
+ "/Applications/Antigravity.app",
66
+ path.join(H, "Library/Application Support/Antigravity"),
67
+ ],
68
+ format: "json-mcpServers",
69
+ },
70
+ {
71
+ id: "codebuddy",
72
+ label: "CodeBuddy CN",
73
+ configPath: () => isWin ? "" : path.join(H, ".codebuddy/mcp.json"),
74
+ detectPaths: () => isWin ? [] : [
75
+ "/Applications/CodeBuddy CN.app",
76
+ path.join(H, "Library/Application Support/CodeBuddy CN"),
77
+ ],
78
+ format: "json-mcpServers",
79
+ requiresStdioType: true,
80
+ },
81
+ {
82
+ id: "workbuddy",
83
+ label: "WorkBuddy",
84
+ configPath: () => isWin ? "" : path.join(H, ".workbuddy/mcp.json"),
85
+ detectPaths: () => isWin ? [] : [
86
+ "/Applications/WorkBuddy.app",
87
+ path.join(H, "Library/Application Support/WorkBuddy"),
88
+ ],
89
+ format: "json-mcpServers",
90
+ },
91
+ ];
92
+ }
93
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../scripts/registry.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,18 @@ import fs from "fs";
4
4
  import path from "path";
5
5
  import os from "os";
6
6
  import { execSync } from "child_process";
7
- const CONFIG_PATH = path.join(os.homedir(), "Library/Application Support/Claude/claude_desktop_config.json");
7
+ const MCP_NAME = "elseid-mcp";
8
+ function getClaudeConfigPath() {
9
+ const H = os.homedir();
10
+ if (process.platform === "darwin") {
11
+ return path.join(H, "Library/Application Support/Claude/claude_desktop_config.json");
12
+ }
13
+ if (process.platform === "win32") {
14
+ return path.join(H, "AppData/Roaming/Claude/claude_desktop_config.json");
15
+ }
16
+ // Linux or other (Claude Desktop currently mainly on Mac/Win)
17
+ return "";
18
+ }
8
19
  async function setup() {
9
20
  console.log("🌊 Preparing ElseID signal connector (Zero-Config)...");
10
21
  const projectDir = process.cwd();
@@ -17,29 +28,46 @@ async function setup() {
17
28
  console.error("❌ Dependency installation failed. Please ensure Node.js and npm are installed.");
18
29
  return;
19
30
  }
20
- // Modify Claude Desktop configuration
21
- console.log(`> Injecting MCP configuration into: ${CONFIG_PATH}`);
22
- if (!fs.existsSync(CONFIG_PATH)) {
23
- console.log("ℹ️ Claude Desktop configuration file not found. Skipping auto-injection.");
31
+ const configPath = getClaudeConfigPath();
32
+ if (!configPath) {
33
+ console.log("ℹ️ Automatic configuration for Claude Desktop is not supported on this platform.");
34
+ console.log(" Please follow manual setup instructions in the README.");
24
35
  }
25
36
  else {
26
- try {
27
- const config = JSON.parse(fs.readFileSync(CONFIG_PATH, "utf-8"));
28
- if (!config.mcpServers)
29
- config.mcpServers = {};
30
- config.mcpServers.elseid = {
31
- command: "node",
32
- args: [
33
- "--import",
34
- "tsx/esm",
35
- path.join(projectDir, "src/index.ts")
36
- ]
37
- };
38
- fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2));
39
- console.log("✅ MCP configuration injected successfully!");
37
+ console.log(`> Injecting MCP configuration into: ${configPath}`);
38
+ if (!fs.existsSync(configPath)) {
39
+ console.log("ℹ️ Claude Desktop configuration file not found. Skipping auto-injection.");
40
40
  }
41
- catch (e) {
42
- console.error(`❌ Configuration file update failed: ${e.message}`);
41
+ else {
42
+ try {
43
+ const raw = fs.readFileSync(configPath, "utf-8");
44
+ const config = JSON.parse(raw);
45
+ if (!config.mcpServers)
46
+ config.mcpServers = {};
47
+ const entry = {
48
+ command: "node",
49
+ args: [
50
+ "--import",
51
+ "tsx/esm",
52
+ path.join(projectDir, "src/index.ts")
53
+ ]
54
+ };
55
+ // Idempotency check
56
+ if (JSON.stringify(config.mcpServers[MCP_NAME]) === JSON.stringify(entry)) {
57
+ console.log("✅ MCP configuration is already up to date.");
58
+ }
59
+ else {
60
+ config.mcpServers[MCP_NAME] = entry;
61
+ // Delete old key if exists from previous versions
62
+ if (config.mcpServers.elseid)
63
+ delete config.mcpServers.elseid;
64
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
65
+ console.log("✅ MCP configuration injected successfully!");
66
+ }
67
+ }
68
+ catch (e) {
69
+ console.error(`❌ Configuration file update failed: ${e.message}`);
70
+ }
43
71
  }
44
72
  }
45
73
  console.log("\n🎉 ElseID environment is ready! No API Key required.");
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../scripts/setup.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,sFAAsF;AAEtF,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAC3B,EAAE,CAAC,OAAO,EAAE,EACZ,+DAA+D,CAChE,CAAC;AAEF,KAAK,UAAU,KAAK;IAClB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IAErE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEjC,uBAAuB;IACvB,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,QAAQ,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;QAChG,OAAO;IACT,CAAC;IAED,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,uCAAuC,WAAW,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IAC3F,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAEjE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAAE,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;YAE/C,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG;gBACzB,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE;oBACJ,UAAU;oBACV,SAAS;oBACT,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;iBACtC;aACF,CAAC;YAEF,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CACT,mBAAmB,EACnB,uDAAuD,CACxD,CAAC;AACJ,CAAC;AAED,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../scripts/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elseid-mcp",
3
- "version": "1.0.8",
3
+ "version": "1.0.11",
4
4
  "description": "Zero-config decentralized AI drifter system over Nostr",
5
5
  "type": "module",
6
6
  "author": "ElseID Contributors",