@cg3/equip 0.2.23 → 0.4.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/LICENSE +1 -1
- package/README.md +26 -10
- package/bin/equip.js +159 -68
- package/demo/README.md +1 -1
- package/dist/index.d.ts +76 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +177 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cli.d.ts +22 -0
- package/dist/lib/cli.d.ts.map +1 -0
- package/dist/lib/cli.js +148 -0
- package/dist/lib/cli.js.map +1 -0
- package/dist/lib/commands/doctor.d.ts +2 -0
- package/dist/lib/commands/doctor.d.ts.map +1 -0
- package/dist/lib/commands/doctor.js +162 -0
- package/dist/lib/commands/doctor.js.map +1 -0
- package/dist/lib/commands/status.d.ts +2 -0
- package/dist/lib/commands/status.d.ts.map +1 -0
- package/dist/lib/commands/status.js +134 -0
- package/dist/lib/commands/status.js.map +1 -0
- package/dist/lib/commands/update.d.ts +2 -0
- package/dist/lib/commands/update.d.ts.map +1 -0
- package/dist/lib/commands/update.js +93 -0
- package/dist/lib/commands/update.js.map +1 -0
- package/dist/lib/detect.d.ts +12 -0
- package/dist/lib/detect.d.ts.map +1 -0
- package/dist/lib/detect.js +109 -0
- package/dist/lib/detect.js.map +1 -0
- package/dist/lib/hooks.d.ts +40 -0
- package/dist/lib/hooks.d.ts.map +1 -0
- package/dist/lib/hooks.js +226 -0
- package/dist/lib/hooks.js.map +1 -0
- package/dist/lib/mcp.d.ts +73 -0
- package/dist/lib/mcp.d.ts.map +1 -0
- package/dist/lib/mcp.js +418 -0
- package/dist/lib/mcp.js.map +1 -0
- package/dist/lib/platforms.d.ts +67 -0
- package/dist/lib/platforms.d.ts.map +1 -0
- package/dist/lib/platforms.js +353 -0
- package/dist/lib/platforms.js.map +1 -0
- package/dist/lib/rules.d.ts +35 -0
- package/dist/lib/rules.d.ts.map +1 -0
- package/dist/lib/rules.js +161 -0
- package/dist/lib/rules.js.map +1 -0
- package/dist/lib/state.d.ts +33 -0
- package/dist/lib/state.d.ts.map +1 -0
- package/dist/lib/state.js +130 -0
- package/dist/lib/state.js.map +1 -0
- package/package.json +19 -13
- package/registry.json +9 -0
- package/index.js +0 -245
- package/lib/cli.js +0 -99
- package/lib/detect.js +0 -242
- package/lib/hooks.js +0 -238
- package/lib/mcp.js +0 -503
- package/lib/platforms.js +0 -210
- package/lib/rules.js +0 -170
package/dist/lib/mcp.js
ADDED
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// MCP config read/write/merge/uninstall.
|
|
3
|
+
// Handles all platform-specific config format differences.
|
|
4
|
+
// Zero dependencies.
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.parseTomlServerEntry = parseTomlServerEntry;
|
|
40
|
+
exports.parseTomlSubTables = parseTomlSubTables;
|
|
41
|
+
exports.buildTomlEntry = buildTomlEntry;
|
|
42
|
+
exports.removeTomlEntry = removeTomlEntry;
|
|
43
|
+
exports.readMcpEntry = readMcpEntry;
|
|
44
|
+
exports.buildHttpConfig = buildHttpConfig;
|
|
45
|
+
exports.buildHttpConfigWithAuth = buildHttpConfigWithAuth;
|
|
46
|
+
exports.buildStdioConfig = buildStdioConfig;
|
|
47
|
+
exports.installMcp = installMcp;
|
|
48
|
+
exports.installMcpJson = installMcpJson;
|
|
49
|
+
exports.installMcpToml = installMcpToml;
|
|
50
|
+
exports.uninstallMcp = uninstallMcp;
|
|
51
|
+
exports.updateMcpKey = updateMcpKey;
|
|
52
|
+
const fs = __importStar(require("fs"));
|
|
53
|
+
const path = __importStar(require("path"));
|
|
54
|
+
const child_process_1 = require("child_process");
|
|
55
|
+
const platforms_1 = require("./platforms");
|
|
56
|
+
// ─── TOML Helpers (minimal, zero-dep) ───────────────────────
|
|
57
|
+
/**
|
|
58
|
+
* Parse a TOML table entry for [mcp_servers.<name>].
|
|
59
|
+
* Returns key-value pairs as a plain object. Supports string, number, boolean, arrays.
|
|
60
|
+
* This is NOT a full TOML parser — only handles flat tables needed for MCP config.
|
|
61
|
+
*/
|
|
62
|
+
function parseTomlServerEntry(tomlContent, rootKey, serverName) {
|
|
63
|
+
const tableHeader = `[${rootKey}.${serverName}]`;
|
|
64
|
+
const idx = tomlContent.indexOf(tableHeader);
|
|
65
|
+
if (idx === -1)
|
|
66
|
+
return null;
|
|
67
|
+
const afterHeader = tomlContent.slice(idx + tableHeader.length);
|
|
68
|
+
const nextTable = afterHeader.search(/\n\[(?!\[)/);
|
|
69
|
+
const block = nextTable === -1 ? afterHeader : afterHeader.slice(0, nextTable);
|
|
70
|
+
const result = {};
|
|
71
|
+
for (const line of block.split("\n")) {
|
|
72
|
+
const trimmed = line.trim();
|
|
73
|
+
if (!trimmed || trimmed.startsWith("#") || trimmed.startsWith("["))
|
|
74
|
+
continue;
|
|
75
|
+
const eq = trimmed.indexOf("=");
|
|
76
|
+
if (eq === -1)
|
|
77
|
+
continue;
|
|
78
|
+
const key = trimmed.slice(0, eq).trim();
|
|
79
|
+
const val = trimmed.slice(eq + 1).trim();
|
|
80
|
+
if (val.startsWith('"') && val.endsWith('"')) {
|
|
81
|
+
result[key] = val.slice(1, -1);
|
|
82
|
+
}
|
|
83
|
+
else if (val === "true") {
|
|
84
|
+
result[key] = true;
|
|
85
|
+
}
|
|
86
|
+
else if (val === "false") {
|
|
87
|
+
result[key] = false;
|
|
88
|
+
}
|
|
89
|
+
else if (!isNaN(Number(val)) && val !== "") {
|
|
90
|
+
result[key] = Number(val);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
result[key] = val;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return Object.keys(result).length > 0 ? result : null;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Parse nested TOML sub-tables (e.g., [mcp_servers.prior.env]).
|
|
100
|
+
*/
|
|
101
|
+
function parseTomlSubTables(tomlContent, rootKey, serverName) {
|
|
102
|
+
const prefix = `[${rootKey}.${serverName}.`;
|
|
103
|
+
const result = {};
|
|
104
|
+
let idx = 0;
|
|
105
|
+
while ((idx = tomlContent.indexOf(prefix, idx)) !== -1) {
|
|
106
|
+
const lineEnd = tomlContent.indexOf("\n", idx);
|
|
107
|
+
const header = tomlContent.slice(idx, lineEnd === -1 ? undefined : lineEnd).trim();
|
|
108
|
+
const subName = header.slice(prefix.length, -1);
|
|
109
|
+
if (!subName || subName.includes(".")) {
|
|
110
|
+
idx++;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const afterHeader = tomlContent.slice(lineEnd === -1 ? tomlContent.length : lineEnd);
|
|
114
|
+
const nextTable = afterHeader.search(/\n\[(?!\[)/);
|
|
115
|
+
const block = nextTable === -1 ? afterHeader : afterHeader.slice(0, nextTable);
|
|
116
|
+
const sub = {};
|
|
117
|
+
for (const line of block.split("\n")) {
|
|
118
|
+
const t = line.trim();
|
|
119
|
+
if (!t || t.startsWith("#") || t.startsWith("["))
|
|
120
|
+
continue;
|
|
121
|
+
const eq = t.indexOf("=");
|
|
122
|
+
if (eq === -1)
|
|
123
|
+
continue;
|
|
124
|
+
const k = t.slice(0, eq).trim();
|
|
125
|
+
const v = t.slice(eq + 1).trim();
|
|
126
|
+
if (v.startsWith('"') && v.endsWith('"'))
|
|
127
|
+
sub[k] = v.slice(1, -1);
|
|
128
|
+
else
|
|
129
|
+
sub[k] = v;
|
|
130
|
+
}
|
|
131
|
+
if (Object.keys(sub).length > 0)
|
|
132
|
+
result[subName] = sub;
|
|
133
|
+
idx++;
|
|
134
|
+
}
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Build TOML text for a server entry.
|
|
139
|
+
*/
|
|
140
|
+
function buildTomlEntry(rootKey, serverName, config) {
|
|
141
|
+
const lines = [`[${rootKey}.${serverName}]`];
|
|
142
|
+
const subTables = {};
|
|
143
|
+
for (const [k, v] of Object.entries(config)) {
|
|
144
|
+
if (typeof v === "object" && v !== null && !Array.isArray(v)) {
|
|
145
|
+
subTables[k] = v;
|
|
146
|
+
}
|
|
147
|
+
else if (typeof v === "string") {
|
|
148
|
+
lines.push(`${k} = "${v}"`);
|
|
149
|
+
}
|
|
150
|
+
else if (typeof v === "boolean" || typeof v === "number") {
|
|
151
|
+
lines.push(`${k} = ${v}`);
|
|
152
|
+
}
|
|
153
|
+
else if (Array.isArray(v)) {
|
|
154
|
+
lines.push(`${k} = [${v.map(x => typeof x === "string" ? `"${x}"` : x).join(", ")}]`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
for (const [subName, subObj] of Object.entries(subTables)) {
|
|
158
|
+
lines.push("", `[${rootKey}.${serverName}.${subName}]`);
|
|
159
|
+
for (const [k, v] of Object.entries(subObj)) {
|
|
160
|
+
if (typeof v === "string")
|
|
161
|
+
lines.push(`${k} = "${v}"`);
|
|
162
|
+
else
|
|
163
|
+
lines.push(`${k} = ${v}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return lines.join("\n");
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Remove a TOML server entry block from content.
|
|
170
|
+
*/
|
|
171
|
+
function removeTomlEntry(tomlContent, rootKey, serverName) {
|
|
172
|
+
const mainHeader = `[${rootKey}.${serverName}]`;
|
|
173
|
+
const subPrefix = `[${rootKey}.${serverName}.`;
|
|
174
|
+
const lines = tomlContent.split("\n");
|
|
175
|
+
const result = [];
|
|
176
|
+
let inEntry = false;
|
|
177
|
+
for (const line of lines) {
|
|
178
|
+
const trimmed = line.trim();
|
|
179
|
+
if (trimmed === mainHeader || trimmed.startsWith(subPrefix)) {
|
|
180
|
+
inEntry = true;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (inEntry && trimmed.startsWith("[") && !trimmed.startsWith(subPrefix)) {
|
|
184
|
+
inEntry = false;
|
|
185
|
+
}
|
|
186
|
+
if (!inEntry) {
|
|
187
|
+
result.push(line);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return result.join("\n").replace(/\n{3,}/g, "\n\n").trim() + "\n";
|
|
191
|
+
}
|
|
192
|
+
// ─── Read ────────────────────────────────────────────────────
|
|
193
|
+
/**
|
|
194
|
+
* Read an MCP server entry from a config file (JSON or TOML).
|
|
195
|
+
*/
|
|
196
|
+
function readMcpEntry(configPath, rootKey, serverName, configFormat = "json") {
|
|
197
|
+
try {
|
|
198
|
+
let raw = fs.readFileSync(configPath, "utf-8");
|
|
199
|
+
if (raw.charCodeAt(0) === 0xFEFF)
|
|
200
|
+
raw = raw.slice(1);
|
|
201
|
+
if (configFormat === "toml") {
|
|
202
|
+
const entry = parseTomlServerEntry(raw, rootKey, serverName);
|
|
203
|
+
if (!entry)
|
|
204
|
+
return null;
|
|
205
|
+
const subs = parseTomlSubTables(raw, rootKey, serverName);
|
|
206
|
+
return { ...entry, ...subs };
|
|
207
|
+
}
|
|
208
|
+
const data = JSON.parse(raw);
|
|
209
|
+
return data?.[rootKey]?.[serverName] || null;
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// ─── Config Builders ─────────────────────────────────────────
|
|
216
|
+
function _fileExists(p) {
|
|
217
|
+
try {
|
|
218
|
+
return fs.statSync(p).isFile();
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Build HTTP MCP config for a platform.
|
|
226
|
+
* Uses the platform registry to determine field names.
|
|
227
|
+
*/
|
|
228
|
+
function buildHttpConfig(serverUrl, platform) {
|
|
229
|
+
const def = platforms_1.PLATFORM_REGISTRY.get(platform);
|
|
230
|
+
if (!def)
|
|
231
|
+
return { url: serverUrl };
|
|
232
|
+
const result = { [def.httpShape.urlField]: serverUrl };
|
|
233
|
+
if (def.httpShape.typeField)
|
|
234
|
+
result.type = def.httpShape.typeField;
|
|
235
|
+
return result;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Build HTTP MCP config with auth headers.
|
|
239
|
+
*/
|
|
240
|
+
function buildHttpConfigWithAuth(serverUrl, apiKey, platform, extraHeaders) {
|
|
241
|
+
const base = buildHttpConfig(serverUrl, platform);
|
|
242
|
+
const def = platforms_1.PLATFORM_REGISTRY.get(platform);
|
|
243
|
+
const headersField = def?.httpShape.headersField ?? "headers";
|
|
244
|
+
return {
|
|
245
|
+
...base,
|
|
246
|
+
[headersField]: {
|
|
247
|
+
Authorization: `Bearer ${apiKey}`,
|
|
248
|
+
...extraHeaders,
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Build stdio MCP config.
|
|
254
|
+
*/
|
|
255
|
+
function buildStdioConfig(command, args, env) {
|
|
256
|
+
if (process.platform === "win32") {
|
|
257
|
+
return { command: "cmd", args: ["/c", command, ...args], env };
|
|
258
|
+
}
|
|
259
|
+
return { command, args, env };
|
|
260
|
+
}
|
|
261
|
+
// ─── Install ─────────────────────────────────────────────────
|
|
262
|
+
/**
|
|
263
|
+
* Install MCP config for a platform.
|
|
264
|
+
* Tries platform CLI first (if available), falls back to file write.
|
|
265
|
+
*/
|
|
266
|
+
function installMcp(platform, serverName, mcpEntry, options = {}) {
|
|
267
|
+
const { dryRun = false } = options;
|
|
268
|
+
const def = platforms_1.PLATFORM_REGISTRY.get(platform.platform);
|
|
269
|
+
// Try CLI install first
|
|
270
|
+
if (def?.cliInstall && platform.hasCli) {
|
|
271
|
+
const cliArgs = def.cliInstall.buildArgs(serverName, mcpEntry);
|
|
272
|
+
if (cliArgs) {
|
|
273
|
+
try {
|
|
274
|
+
if (!dryRun) {
|
|
275
|
+
const cliCmd = def.detection.cli;
|
|
276
|
+
(0, child_process_1.execSync)(`${cliCmd} ${cliArgs.map(a => a.includes(" ") ? `"${a}"` : a).join(" ")}`, {
|
|
277
|
+
encoding: "utf-8", timeout: 15000, stdio: "pipe",
|
|
278
|
+
});
|
|
279
|
+
const check = readMcpEntry(platform.configPath, platform.rootKey, serverName, platform.configFormat);
|
|
280
|
+
if (check)
|
|
281
|
+
return { success: true, method: "cli" };
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
return { success: true, method: "cli" };
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
catch { /* fall through to file write */ }
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
// File write
|
|
291
|
+
if (platform.configFormat === "toml") {
|
|
292
|
+
return installMcpToml(platform, serverName, mcpEntry, dryRun);
|
|
293
|
+
}
|
|
294
|
+
return installMcpJson(platform, serverName, mcpEntry, dryRun);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Write MCP config directly to JSON file.
|
|
298
|
+
*/
|
|
299
|
+
function installMcpJson(platform, serverName, mcpEntry, dryRun) {
|
|
300
|
+
const { configPath, rootKey } = platform;
|
|
301
|
+
let existing = {};
|
|
302
|
+
try {
|
|
303
|
+
let raw = fs.readFileSync(configPath, "utf-8");
|
|
304
|
+
if (raw.charCodeAt(0) === 0xFEFF)
|
|
305
|
+
raw = raw.slice(1);
|
|
306
|
+
existing = JSON.parse(raw);
|
|
307
|
+
if (typeof existing !== "object" || existing === null)
|
|
308
|
+
existing = {};
|
|
309
|
+
}
|
|
310
|
+
catch { /* start fresh */ }
|
|
311
|
+
if (!existing[rootKey])
|
|
312
|
+
existing[rootKey] = {};
|
|
313
|
+
existing[rootKey][serverName] = mcpEntry;
|
|
314
|
+
if (!dryRun) {
|
|
315
|
+
const dir = path.dirname(configPath);
|
|
316
|
+
if (!fs.existsSync(dir))
|
|
317
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
318
|
+
if (_fileExists(configPath)) {
|
|
319
|
+
try {
|
|
320
|
+
fs.copyFileSync(configPath, configPath + ".bak");
|
|
321
|
+
}
|
|
322
|
+
catch { }
|
|
323
|
+
}
|
|
324
|
+
fs.writeFileSync(configPath, JSON.stringify(existing, null, 2) + "\n");
|
|
325
|
+
}
|
|
326
|
+
return { success: true, method: "json" };
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Write MCP config to TOML file (Codex).
|
|
330
|
+
*/
|
|
331
|
+
function installMcpToml(platform, serverName, mcpEntry, dryRun) {
|
|
332
|
+
const { configPath, rootKey } = platform;
|
|
333
|
+
let existing = "";
|
|
334
|
+
try {
|
|
335
|
+
existing = fs.readFileSync(configPath, "utf-8");
|
|
336
|
+
}
|
|
337
|
+
catch { /* start fresh */ }
|
|
338
|
+
const tableHeader = `[${rootKey}.${serverName}]`;
|
|
339
|
+
if (existing.includes(tableHeader)) {
|
|
340
|
+
existing = removeTomlEntry(existing, rootKey, serverName);
|
|
341
|
+
}
|
|
342
|
+
const newBlock = buildTomlEntry(rootKey, serverName, mcpEntry);
|
|
343
|
+
if (!dryRun) {
|
|
344
|
+
const dir = path.dirname(configPath);
|
|
345
|
+
if (!fs.existsSync(dir))
|
|
346
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
347
|
+
if (_fileExists(configPath)) {
|
|
348
|
+
try {
|
|
349
|
+
fs.copyFileSync(configPath, configPath + ".bak");
|
|
350
|
+
}
|
|
351
|
+
catch { }
|
|
352
|
+
}
|
|
353
|
+
const sep = existing && !existing.endsWith("\n\n") ? (existing.endsWith("\n") ? "\n" : "\n\n") : "";
|
|
354
|
+
fs.writeFileSync(configPath, existing + sep + newBlock + "\n");
|
|
355
|
+
}
|
|
356
|
+
return { success: true, method: "toml" };
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Remove an MCP server entry from a platform config.
|
|
360
|
+
*/
|
|
361
|
+
function uninstallMcp(platform, serverName, dryRun = false) {
|
|
362
|
+
const { configPath, rootKey } = platform;
|
|
363
|
+
if (!_fileExists(configPath))
|
|
364
|
+
return false;
|
|
365
|
+
if (platform.configFormat === "toml") {
|
|
366
|
+
try {
|
|
367
|
+
const content = fs.readFileSync(configPath, "utf-8");
|
|
368
|
+
const tableHeader = `[${rootKey}.${serverName}]`;
|
|
369
|
+
if (!content.includes(tableHeader))
|
|
370
|
+
return false;
|
|
371
|
+
if (!dryRun) {
|
|
372
|
+
fs.copyFileSync(configPath, configPath + ".bak");
|
|
373
|
+
const cleaned = removeTomlEntry(content, rootKey, serverName);
|
|
374
|
+
if (cleaned.trim()) {
|
|
375
|
+
fs.writeFileSync(configPath, cleaned);
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
fs.unlinkSync(configPath);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return true;
|
|
382
|
+
}
|
|
383
|
+
catch {
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
try {
|
|
388
|
+
const data = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
389
|
+
if (!data?.[rootKey]?.[serverName])
|
|
390
|
+
return false;
|
|
391
|
+
delete data[rootKey][serverName];
|
|
392
|
+
if (Object.keys(data[rootKey]).length === 0)
|
|
393
|
+
delete data[rootKey];
|
|
394
|
+
if (!dryRun) {
|
|
395
|
+
fs.copyFileSync(configPath, configPath + ".bak");
|
|
396
|
+
if (Object.keys(data).length === 0) {
|
|
397
|
+
fs.unlinkSync(configPath);
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
fs.writeFileSync(configPath, JSON.stringify(data, null, 2) + "\n");
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return true;
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
return false;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Update API key in existing MCP config.
|
|
411
|
+
*/
|
|
412
|
+
function updateMcpKey(platform, serverName, mcpEntry) {
|
|
413
|
+
if (platform.configFormat === "toml") {
|
|
414
|
+
return installMcpToml(platform, serverName, mcpEntry, false);
|
|
415
|
+
}
|
|
416
|
+
return installMcpJson(platform, serverName, mcpEntry, false);
|
|
417
|
+
}
|
|
418
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/lib/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export interface PlatformHttpShape {
|
|
2
|
+
/** Field name for the server URL */
|
|
3
|
+
urlField: "url" | "serverUrl" | "httpUrl";
|
|
4
|
+
/** Optional type field value (e.g., "http", "streamable-http") */
|
|
5
|
+
typeField?: string;
|
|
6
|
+
/** Key name for auth headers */
|
|
7
|
+
headersField: "headers" | "http_headers";
|
|
8
|
+
}
|
|
9
|
+
export interface PlatformDetection {
|
|
10
|
+
/** CLI command name to check with `which` */
|
|
11
|
+
cli: string | null;
|
|
12
|
+
/** Directories whose existence indicates the platform is installed */
|
|
13
|
+
dirs: (() => string)[];
|
|
14
|
+
/** Files whose existence indicates the platform is installed */
|
|
15
|
+
files: (() => string)[];
|
|
16
|
+
/** Custom version detection function (overrides default `cli --version`) */
|
|
17
|
+
versionFn?: () => string | null;
|
|
18
|
+
}
|
|
19
|
+
export interface PlatformHookCapabilities {
|
|
20
|
+
settingsPath: () => string;
|
|
21
|
+
events: string[];
|
|
22
|
+
format: string;
|
|
23
|
+
}
|
|
24
|
+
export interface PlatformCliInstall {
|
|
25
|
+
/** Build CLI install command args. Returns null if CLI doesn't support this transport. */
|
|
26
|
+
buildArgs: (serverName: string, mcpEntry: Record<string, unknown>) => string[] | null;
|
|
27
|
+
}
|
|
28
|
+
export interface PlatformDefinition {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
aliases: string[];
|
|
32
|
+
configPath: () => string;
|
|
33
|
+
rulesPath: (() => string) | null;
|
|
34
|
+
rootKey: string;
|
|
35
|
+
configFormat: "json" | "toml";
|
|
36
|
+
httpShape: PlatformHttpShape;
|
|
37
|
+
detection: PlatformDetection;
|
|
38
|
+
hooks: PlatformHookCapabilities | null;
|
|
39
|
+
cliInstall: PlatformCliInstall | null;
|
|
40
|
+
}
|
|
41
|
+
/** The shape returned by detect() and createManualPlatform() */
|
|
42
|
+
export interface DetectedPlatform {
|
|
43
|
+
platform: string;
|
|
44
|
+
version: string;
|
|
45
|
+
configPath: string;
|
|
46
|
+
rulesPath: string | null;
|
|
47
|
+
existingMcp: Record<string, unknown> | null;
|
|
48
|
+
hasCli: boolean;
|
|
49
|
+
rootKey: string;
|
|
50
|
+
configFormat: "json" | "toml";
|
|
51
|
+
}
|
|
52
|
+
export declare const PLATFORM_REGISTRY: ReadonlyMap<string, PlatformDefinition>;
|
|
53
|
+
export declare const KNOWN_PLATFORMS: string[];
|
|
54
|
+
export declare function platformName(id: string): string;
|
|
55
|
+
export declare function resolvePlatformId(input: string): string;
|
|
56
|
+
export declare function getPlatform(id: string): PlatformDefinition;
|
|
57
|
+
export declare function createManualPlatform(platformId: string): DetectedPlatform;
|
|
58
|
+
export declare function getVsCodeUserDir(): string;
|
|
59
|
+
export declare function getVsCodeMcpPath(): string;
|
|
60
|
+
export declare function getClineConfigPath(): string;
|
|
61
|
+
export declare function getRooConfigPath(): string;
|
|
62
|
+
export declare function getCodexConfigPath(): string;
|
|
63
|
+
export declare function getGeminiSettingsPath(): string;
|
|
64
|
+
export declare function getJunieMcpPath(): string;
|
|
65
|
+
export declare function getCopilotJetBrainsMcpPath(): string;
|
|
66
|
+
export declare function getCopilotCliMcpPath(): string;
|
|
67
|
+
//# sourceMappingURL=platforms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platforms.d.ts","sourceRoot":"","sources":["../../src/lib/platforms.ts"],"names":[],"mappings":"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"}
|