@wootsup/yt-builder-mcp 1.1.7 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/bin/yt-builder-mcp.js +55 -40
- package/dist/auth.d.ts +18 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +18 -0
- package/dist/auth.js.map +1 -1
- package/dist/cli/invocation-decision.d.ts +57 -0
- package/dist/cli/invocation-decision.d.ts.map +1 -0
- package/dist/cli/invocation-decision.js +86 -0
- package/dist/cli/invocation-decision.js.map +1 -0
- package/dist/client.d.ts +28 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +40 -1
- package/dist/client.js.map +1 -1
- package/dist/clients/claude-code.d.ts.map +1 -1
- package/dist/clients/claude-code.js +3 -1
- package/dist/clients/claude-code.js.map +1 -1
- package/dist/clients/claude-desktop.d.ts.map +1 -1
- package/dist/clients/claude-desktop.js +3 -1
- package/dist/clients/claude-desktop.js.map +1 -1
- package/dist/clients/cline.d.ts.map +1 -1
- package/dist/clients/cline.js +3 -1
- package/dist/clients/cline.js.map +1 -1
- package/dist/clients/codex-cli.d.ts +1 -1
- package/dist/clients/codex-cli.d.ts.map +1 -1
- package/dist/clients/codex-cli.js +98 -0
- package/dist/clients/codex-cli.js.map +1 -1
- package/dist/clients/continue.d.ts.map +1 -1
- package/dist/clients/continue.js +70 -1
- package/dist/clients/continue.js.map +1 -1
- package/dist/clients/cursor.d.ts.map +1 -1
- package/dist/clients/cursor.js +3 -1
- package/dist/clients/cursor.js.map +1 -1
- package/dist/clients/gemini-cli.d.ts.map +1 -1
- package/dist/clients/gemini-cli.js +3 -1
- package/dist/clients/gemini-cli.js.map +1 -1
- package/dist/clients/index.d.ts +104 -0
- package/dist/clients/index.d.ts.map +1 -1
- package/dist/clients/index.js +141 -0
- package/dist/clients/index.js.map +1 -1
- package/dist/clients/roo-code.d.ts.map +1 -1
- package/dist/clients/roo-code.js +3 -1
- package/dist/clients/roo-code.js.map +1 -1
- package/dist/clients/zed.d.ts.map +1 -1
- package/dist/clients/zed.js +3 -1
- package/dist/clients/zed.js.map +1 -1
- package/dist/gateway/essentials.d.ts +4 -4
- package/dist/gateway/essentials.d.ts.map +1 -1
- package/dist/gateway/essentials.js +19 -5
- package/dist/gateway/essentials.js.map +1 -1
- package/dist/gateway/test-support.d.ts +3 -3
- package/dist/gateway/test-support.js +3 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/install-skill.js +1 -1
- package/dist/server.d.ts +3 -3
- package/dist/server.js +3 -3
- package/dist/setup-cli.d.ts +41 -0
- package/dist/setup-cli.d.ts.map +1 -1
- package/dist/setup-cli.js +163 -1
- package/dist/setup-cli.js.map +1 -1
- package/dist/setup-prompts.d.ts +23 -0
- package/dist/setup-prompts.d.ts.map +1 -1
- package/dist/setup-prompts.js +76 -1
- package/dist/setup-prompts.js.map +1 -1
- package/dist/sites/bootstrap.d.ts +41 -0
- package/dist/sites/bootstrap.d.ts.map +1 -0
- package/dist/sites/bootstrap.js +58 -0
- package/dist/sites/bootstrap.js.map +1 -0
- package/dist/sites/client-pool.d.ts +33 -0
- package/dist/sites/client-pool.d.ts.map +1 -1
- package/dist/sites/client-pool.js +51 -1
- package/dist/sites/client-pool.js.map +1 -1
- package/dist/sites/tools/index.d.ts.map +1 -1
- package/dist/sites/tools/index.js +9 -1
- package/dist/sites/tools/index.js.map +1 -1
- package/dist/sites/tools/use-site.d.ts +47 -0
- package/dist/sites/tools/use-site.d.ts.map +1 -0
- package/dist/sites/tools/use-site.js +183 -0
- package/dist/sites/tools/use-site.js.map +1 -0
- package/dist/tools/elements/builders.d.ts.map +1 -1
- package/dist/tools/elements/builders.js +16 -7
- package/dist/tools/elements/builders.js.map +1 -1
- package/dist/tools/elements/handlers-write.d.ts +1 -1
- package/dist/tools/elements/handlers-write.d.ts.map +1 -1
- package/dist/tools/elements/handlers-write.js +202 -9
- package/dist/tools/elements/handlers-write.js.map +1 -1
- package/dist/tools/elements/handlers.d.ts.map +1 -1
- package/dist/tools/elements/handlers.js +3 -3
- package/dist/tools/elements/handlers.js.map +1 -1
- package/dist/tools/format/elements-format.d.ts.map +1 -1
- package/dist/tools/format/elements-format.js +10 -11
- package/dist/tools/format/elements-format.js.map +1 -1
- package/dist/tools/format/inspection-format.d.ts +11 -0
- package/dist/tools/format/inspection-format.d.ts.map +1 -1
- package/dist/tools/format/inspection-format.js +77 -21
- package/dist/tools/format/inspection-format.js.map +1 -1
- package/dist/tools/inspection.d.ts.map +1 -1
- package/dist/tools/inspection.js +194 -1
- package/dist/tools/inspection.js.map +1 -1
- package/dist/tools/multi-items/builders.d.ts.map +1 -1
- package/dist/tools/multi-items/builders.js +7 -1
- package/dist/tools/multi-items/builders.js.map +1 -1
- package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -1
- package/dist/tools/multi-items/clean-implode-handler.js +2 -2
- package/dist/tools/multi-items/clean-implode-handler.js.map +1 -1
- package/dist/tools/multi-items/format/inspection-format.d.ts +41 -0
- package/dist/tools/multi-items/format/inspection-format.d.ts.map +1 -0
- package/dist/tools/multi-items/format/inspection-format.js +64 -0
- package/dist/tools/multi-items/format/inspection-format.js.map +1 -0
- package/dist/tools/multi-items/inspect-handler.d.ts +37 -2
- package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -1
- package/dist/tools/multi-items/inspect-handler.js +93 -10
- package/dist/tools/multi-items/inspect-handler.js.map +1 -1
- package/dist/tools/multi-items/inspection-cache.d.ts +85 -0
- package/dist/tools/multi-items/inspection-cache.d.ts.map +1 -0
- package/dist/tools/multi-items/inspection-cache.js +126 -0
- package/dist/tools/multi-items/inspection-cache.js.map +1 -0
- package/dist/tools/pages/builders.d.ts +31 -2
- package/dist/tools/pages/builders.d.ts.map +1 -1
- package/dist/tools/pages/builders.js +102 -9
- package/dist/tools/pages/builders.js.map +1 -1
- package/dist/tools/pages/handlers-read.d.ts +1 -1
- package/dist/tools/pages/handlers-read.d.ts.map +1 -1
- package/dist/tools/pages/handlers-read.js +78 -21
- package/dist/tools/pages/handlers-read.js.map +1 -1
- package/dist/tools/pages/handlers-write.d.ts +48 -6
- package/dist/tools/pages/handlers-write.d.ts.map +1 -1
- package/dist/tools/pages/handlers-write.js +83 -8
- package/dist/tools/pages/handlers-write.js.map +1 -1
- package/dist/tools/pages/schemas.d.ts +112 -0
- package/dist/tools/pages/schemas.d.ts.map +1 -1
- package/dist/tools/pages/schemas.js +150 -0
- package/dist/tools/pages/schemas.js.map +1 -1
- package/dist/tools/shared-schemas.d.ts.map +1 -1
- package/dist/tools/shared-schemas.js +15 -2
- package/dist/tools/shared-schemas.js.map +1 -1
- package/dist/tools/sources/handlers-bind.d.ts.map +1 -1
- package/dist/tools/sources/handlers-bind.js +56 -4
- package/dist/tools/sources/handlers-bind.js.map +1 -1
- package/dist/tools/sources/handlers.d.ts.map +1 -1
- package/dist/tools/sources/handlers.js +2 -2
- package/dist/tools/sources/handlers.js.map +1 -1
- package/dist/uninstall-skill.d.ts +52 -0
- package/dist/uninstall-skill.d.ts.map +1 -0
- package/dist/uninstall-skill.js +146 -0
- package/dist/uninstall-skill.js.map +1 -0
- package/dist/uninstall.d.ts +73 -0
- package/dist/uninstall.d.ts.map +1 -0
- package/dist/uninstall.js +82 -0
- package/dist/uninstall.js.map +1 -0
- package/icon.png +0 -0
- package/manifest.json +10 -10
- package/package.json +4 -2
- package/skills/yt-builder-mcp/SKILL.md +30 -26
|
@@ -41,6 +41,7 @@ import { existsSync } from 'node:fs';
|
|
|
41
41
|
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
42
42
|
import { dirname, join } from 'node:path';
|
|
43
43
|
import { userHome } from './home.js';
|
|
44
|
+
import { KNOWN_SERVER_KEYS, PACKAGE_NAME, } from './index.js';
|
|
44
45
|
function configPath() {
|
|
45
46
|
return join(userHome(), '.codex', 'config.toml');
|
|
46
47
|
}
|
|
@@ -160,6 +161,68 @@ function stripExistingSection(body, serverName) {
|
|
|
160
161
|
function isDetected() {
|
|
161
162
|
return existsSync(join(userHome(), '.codex'));
|
|
162
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Split a TOML body into top-level `[mcp_servers.<name>]` sections, each
|
|
166
|
+
* spanning its header through (but not including) the next TOP-LEVEL
|
|
167
|
+
* server table or EOF — so a section absorbs its own
|
|
168
|
+
* `[mcp_servers.<name>.env]` sub-table. Lines BEFORE the first server
|
|
169
|
+
* table (preamble) and non-`mcp_servers` tables are not represented as
|
|
170
|
+
* sections; they survive a splice because removal only cuts matched
|
|
171
|
+
* section ranges.
|
|
172
|
+
*
|
|
173
|
+
* We match headers line-anchored. A header is "top-level" when the part
|
|
174
|
+
* after `mcp_servers.` is a single key (no second dot) — anything with a
|
|
175
|
+
* further dot is a sub-table and is folded into the current section.
|
|
176
|
+
*/
|
|
177
|
+
function scanServerSections(body) {
|
|
178
|
+
// Capture: server name (bare or quoted) + an optional sub-path.
|
|
179
|
+
const headerRe = /^\[mcp_servers\.((?:"(?:[^"\\]|\\.)*")|[A-Za-z0-9_-]+)((?:\.[^\]]+)?)\]/gm;
|
|
180
|
+
const raw = [];
|
|
181
|
+
let m;
|
|
182
|
+
while ((m = headerRe.exec(body)) !== null) {
|
|
183
|
+
const rawKey = m[1];
|
|
184
|
+
const subPath = m[2] ?? '';
|
|
185
|
+
const name = rawKey.startsWith('"')
|
|
186
|
+
? rawKey.slice(1, -1).replace(/\\(.)/g, '$1')
|
|
187
|
+
: rawKey;
|
|
188
|
+
raw.push({ name, isSub: subPath !== '', index: m.index });
|
|
189
|
+
}
|
|
190
|
+
// Top-level headers only define section boundaries; sub-tables are
|
|
191
|
+
// absorbed. Build sections from consecutive top-level headers.
|
|
192
|
+
const tops = raw.filter((h) => !h.isSub);
|
|
193
|
+
const sections = [];
|
|
194
|
+
for (let i = 0; i < tops.length; i++) {
|
|
195
|
+
const top = tops[i];
|
|
196
|
+
const end = i + 1 < tops.length ? tops[i + 1].index : body.length;
|
|
197
|
+
sections.push({ name: top.name, start: top.index, end });
|
|
198
|
+
}
|
|
199
|
+
return sections;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Which sections belong to yt-builder-mcp — by known key name OR by a
|
|
203
|
+
* package reference anywhere in the section's bytes.
|
|
204
|
+
*/
|
|
205
|
+
function matchingSections(body) {
|
|
206
|
+
return scanServerSections(body).filter((s) => KNOWN_SERVER_KEYS.includes(s.name) ||
|
|
207
|
+
body.slice(s.start, s.end).includes(PACKAGE_NAME));
|
|
208
|
+
}
|
|
209
|
+
/** Distinct top-level server names that belong to yt-builder-mcp. */
|
|
210
|
+
function findMatchingServerNames(body) {
|
|
211
|
+
return [...new Set(matchingSections(body).map((s) => s.name))];
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Splice out every matched section's byte range. Done right-to-left so
|
|
215
|
+
* earlier offsets stay valid. Then tidy: drop a leading blank run and
|
|
216
|
+
* collapse 3+ newlines the cut may have produced.
|
|
217
|
+
*/
|
|
218
|
+
function removeMatchingSections(body) {
|
|
219
|
+
const matched = matchingSections(body).slice().sort((a, b) => b.start - a.start);
|
|
220
|
+
let next = body;
|
|
221
|
+
for (const sec of matched) {
|
|
222
|
+
next = next.slice(0, sec.start) + next.slice(sec.end);
|
|
223
|
+
}
|
|
224
|
+
return next.replace(/^\n+/, '').replace(/\n{3,}/g, '\n\n');
|
|
225
|
+
}
|
|
163
226
|
export const codexCliClient = {
|
|
164
227
|
id: 'codex-cli',
|
|
165
228
|
label: 'Codex CLI',
|
|
@@ -190,5 +253,40 @@ export const codexCliClient = {
|
|
|
190
253
|
const next = prefix + block;
|
|
191
254
|
await writeFile(path, next, 'utf-8');
|
|
192
255
|
},
|
|
256
|
+
detect: async () => {
|
|
257
|
+
const path = configPath();
|
|
258
|
+
if (!existsSync(path)) {
|
|
259
|
+
return { present: false, configPath: path, matchedKeys: [] };
|
|
260
|
+
}
|
|
261
|
+
let body = '';
|
|
262
|
+
try {
|
|
263
|
+
body = await readFile(path, 'utf-8');
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return { present: false, configPath: path, matchedKeys: [] };
|
|
267
|
+
}
|
|
268
|
+
const matchedKeys = findMatchingServerNames(body);
|
|
269
|
+
return { present: matchedKeys.length > 0, configPath: path, matchedKeys };
|
|
270
|
+
},
|
|
271
|
+
remove: async () => {
|
|
272
|
+
const path = configPath();
|
|
273
|
+
if (!existsSync(path)) {
|
|
274
|
+
return { removed: false, configPath: path, removedKeys: [] };
|
|
275
|
+
}
|
|
276
|
+
let body = '';
|
|
277
|
+
try {
|
|
278
|
+
body = await readFile(path, 'utf-8');
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
return { removed: false, configPath: path, removedKeys: [] };
|
|
282
|
+
}
|
|
283
|
+
const removedKeys = findMatchingServerNames(body);
|
|
284
|
+
if (removedKeys.length === 0) {
|
|
285
|
+
return { removed: false, configPath: path, removedKeys: [] };
|
|
286
|
+
}
|
|
287
|
+
const next = removeMatchingSections(body);
|
|
288
|
+
await writeFile(path, next, 'utf-8');
|
|
289
|
+
return { removed: true, configPath: path, removedKeys };
|
|
290
|
+
},
|
|
193
291
|
};
|
|
194
292
|
//# sourceMappingURL=codex-cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli.js","sourceRoot":"","sources":["../../src/clients/codex-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-cli.js","sourceRoot":"","sources":["../../src/clients/codex-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACH,iBAAiB,EACjB,YAAY,GAKf,MAAM,YAAY,CAAC;AAEpB,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAa;IACnC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,EAAE,KAAK,IAAI;YAAE,GAAG,IAAI,MAAM,CAAC;aAC1B,IAAI,EAAE,KAAK,GAAG;YAAE,GAAG,IAAI,KAAK,CAAC;aAC7B,IAAI,EAAE,KAAK,IAAI;YAAE,GAAG,IAAI,KAAK,CAAC;aAC9B,IAAI,EAAE,KAAK,IAAI;YAAE,GAAG,IAAI,KAAK,CAAC;aAC9B,IAAI,EAAE,KAAK,IAAI;YAAE,GAAG,IAAI,KAAK,CAAC;aAC9B,IAAI,EAAE,KAAK,IAAI;YAAE,GAAG,IAAI,KAAK,CAAC;aAC9B,IAAI,EAAE,KAAK,IAAI;YAAE,GAAG,IAAI,KAAK,CAAC;aAC9B,IAAI,IAAI,GAAG,IAAI;YAChB,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;;YAC/D,GAAG,IAAI,EAAE,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,GAAW;IACxB,OAAO,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7E,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IAClC,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED,SAAS,eAAe,CAAC,MAAyB;IAC9C,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,UAAkB,EAAE,MAAuB;IAClE,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,GAAG,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,aAAa,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,UAAU,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,OAAO,CAAC,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS;QACpC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,UAAkB;IAC1D,mEAAmE;IACnE,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC;IACnD,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAEzD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;QAC9B,qEAAqE;QACrE,4DAA4D;QAC5D,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACtD,iEAAiE;QACjE,2DAA2D;QAC3D,uEAAuE;QACvE,oEAAoE;QACpE,4DAA4D;QAC5D,MAAM,EAAE,GAAG,IAAI,MAAM,CACjB,2BAA2B,IAAI,wCAAwC,EACvE,GAAG,CACN,CAAC;QACF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IACD,uEAAuE;IACvE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU;IACf,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClD,CAAC;AAYD;;;;;;;;;;;;GAYG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACpC,gEAAgE;IAChE,MAAM,QAAQ,GACV,2EAA2E,CAAC;IAMhF,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;YAC/B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC7C,CAAC,CAAC,MAAM,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,mEAAmE;IACnE,+DAA+D;IAC/D,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAY;IAClC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CACF,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CACxD,CAAC;AACN,CAAC;AAED,qEAAqE;AACrE,SAAS,uBAAuB,CAAC,IAAY;IACzC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACjF,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAiB;IACxC,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,WAAW;IAClB,UAAU;IACV,UAAU;IACV,KAAK,EAAE,KAAK,EAAE,UAAkB,EAAE,MAAuB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC;gBACD,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACL,QAAQ,GAAG,EAAE,CAAC;YAClB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5D,8DAA8D;QAC9D,mEAAmE;QACnE,IAAI,MAAM,GAAG,QAAQ,CAAC;QACtB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;QACrE,CAAC;QACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;QAC5B,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,EAAE,KAAK,IAA8B,EAAE;QACzC,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACjE,CAAC;QACD,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC;YACD,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACjE,CAAC;QACD,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM,EAAE,KAAK,IAA4B,EAAE;QACvC,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACjE,CAAC;QACD,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC;YACD,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACjE,CAAC;QACD,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACjE,CAAC;QACD,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC5D,CAAC;CACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/clients/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/clients/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EAOH,KAAK,YAAY,EAEpB,MAAM,YAAY,CAAC;AAsDpB,eAAO,MAAM,cAAc,EAAE,YAqE5B,CAAC"}
|
package/dist/clients/continue.js
CHANGED
|
@@ -9,12 +9,49 @@
|
|
|
9
9
|
* @license MIT
|
|
10
10
|
*/
|
|
11
11
|
import { existsSync } from 'node:fs';
|
|
12
|
+
import { writeFile } from 'node:fs/promises';
|
|
12
13
|
import { join } from 'node:path';
|
|
13
14
|
import { userHome } from './home.js';
|
|
14
|
-
import { patchJsonFile } from './index.js';
|
|
15
|
+
import { entryReferencesPackage, KNOWN_SERVER_KEYS, patchJsonFile, readJsonFileOrNull, } from './index.js';
|
|
15
16
|
function configPath() {
|
|
16
17
|
return join(userHome(), '.continue', 'config.json');
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Pull the (validated) Continue server-entry array out of a parsed
|
|
21
|
+
* config. Returns `null` when the experimental container or the array is
|
|
22
|
+
* absent / malformed, so detect / remove can treat that as a no-op.
|
|
23
|
+
*/
|
|
24
|
+
function readContinueList(current) {
|
|
25
|
+
if (current === null)
|
|
26
|
+
return null;
|
|
27
|
+
const experimental = current.experimental;
|
|
28
|
+
if (experimental === null || typeof experimental !== 'object' || Array.isArray(experimental)) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const rawList = experimental.modelContextProtocolServers;
|
|
32
|
+
return Array.isArray(rawList) ? rawList : null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* True when a Continue array-entry is one of ours — by its `name`
|
|
36
|
+
* (canonical or legacy key) OR by package reference.
|
|
37
|
+
*/
|
|
38
|
+
function continueEntryMatches(entry) {
|
|
39
|
+
if (entry !== null && typeof entry === 'object') {
|
|
40
|
+
const name = entry.name;
|
|
41
|
+
if (typeof name === 'string' && KNOWN_SERVER_KEYS.includes(name))
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return entryReferencesPackage(entry);
|
|
45
|
+
}
|
|
46
|
+
/** Best-effort `name` of a Continue entry, for the removedKeys summary. */
|
|
47
|
+
function continueEntryKey(entry) {
|
|
48
|
+
if (entry !== null && typeof entry === 'object') {
|
|
49
|
+
const name = entry.name;
|
|
50
|
+
if (typeof name === 'string')
|
|
51
|
+
return name;
|
|
52
|
+
}
|
|
53
|
+
return KNOWN_SERVER_KEYS[0];
|
|
54
|
+
}
|
|
18
55
|
export const continueClient = {
|
|
19
56
|
id: 'continue',
|
|
20
57
|
label: 'Continue',
|
|
@@ -48,5 +85,37 @@ export const continueClient = {
|
|
|
48
85
|
return { ...current, experimental };
|
|
49
86
|
});
|
|
50
87
|
},
|
|
88
|
+
detect: async () => {
|
|
89
|
+
const path = configPath();
|
|
90
|
+
const current = await readJsonFileOrNull(path);
|
|
91
|
+
const list = readContinueList(current);
|
|
92
|
+
if (list === null) {
|
|
93
|
+
return { present: false, configPath: path, matchedKeys: [] };
|
|
94
|
+
}
|
|
95
|
+
const matchedKeys = list.filter(continueEntryMatches).map(continueEntryKey);
|
|
96
|
+
return { present: matchedKeys.length > 0, configPath: path, matchedKeys };
|
|
97
|
+
},
|
|
98
|
+
remove: async () => {
|
|
99
|
+
const path = configPath();
|
|
100
|
+
const current = await readJsonFileOrNull(path);
|
|
101
|
+
const list = readContinueList(current);
|
|
102
|
+
if (current === null || list === null) {
|
|
103
|
+
return { removed: false, configPath: path, removedKeys: [] };
|
|
104
|
+
}
|
|
105
|
+
const removedKeys = list.filter(continueEntryMatches).map(continueEntryKey);
|
|
106
|
+
if (removedKeys.length === 0) {
|
|
107
|
+
return { removed: false, configPath: path, removedKeys: [] };
|
|
108
|
+
}
|
|
109
|
+
const kept = list.filter((e) => !continueEntryMatches(e));
|
|
110
|
+
// `experimental` is guaranteed an object here (readContinueList
|
|
111
|
+
// returned a non-null array out of it).
|
|
112
|
+
const experimental = {
|
|
113
|
+
...current.experimental,
|
|
114
|
+
modelContextProtocolServers: kept,
|
|
115
|
+
};
|
|
116
|
+
const next = { ...current, experimental };
|
|
117
|
+
await writeFile(path, JSON.stringify(next, null, 2) + '\n', 'utf-8');
|
|
118
|
+
return { removed: true, configPath: path, removedKeys };
|
|
119
|
+
},
|
|
51
120
|
};
|
|
52
121
|
//# sourceMappingURL=continue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/clients/continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/clients/continue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/clients/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/clients/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAIH,KAAK,YAAY,EAEpB,MAAM,YAAY,CAAC;AAMpB,eAAO,MAAM,YAAY,EAAE,YAuB1B,CAAC"}
|
package/dist/clients/cursor.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { existsSync } from 'node:fs';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
12
|
import { userHome } from './home.js';
|
|
13
|
-
import { patchJsonFile } from './index.js';
|
|
13
|
+
import { detectInServerMap, patchJsonFile, removeFromServerMap, } from './index.js';
|
|
14
14
|
function configPath() {
|
|
15
15
|
return join(userHome(), '.cursor', 'mcp.json');
|
|
16
16
|
}
|
|
@@ -34,5 +34,7 @@ export const cursorClient = {
|
|
|
34
34
|
return { ...current, mcpServers: servers };
|
|
35
35
|
});
|
|
36
36
|
},
|
|
37
|
+
detect: () => detectInServerMap(configPath(), 'mcpServers'),
|
|
38
|
+
remove: () => removeFromServerMap(configPath(), 'mcpServers'),
|
|
37
39
|
};
|
|
38
40
|
//# sourceMappingURL=cursor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/clients/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/clients/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GAGtB,MAAM,YAAY,CAAC;AAEpB,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAiB;IACtC,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,QAAQ;IACf,UAAU;IACV,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;IACzD,KAAK,EAAE,KAAK,EAAE,UAAkB,EAAE,MAAuB,EAAE,EAAE;QACzD,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,OAAO,GACT,OAAO,CAAC,UAAU,KAAK,IAAI;gBAC3B,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;gBACtC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC9B,CAAC,CAAC,EAAE,GAAI,OAAO,CAAC,UAAsC,EAAE;gBACxD,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,UAAU,CAAC,GAAG;gBAClB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;aAClB,CAAC;YACF,OAAO,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC;IAC3D,MAAM,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC;CAChE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-cli.d.ts","sourceRoot":"","sources":["../../src/clients/gemini-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,
|
|
1
|
+
{"version":3,"file":"gemini-cli.d.ts","sourceRoot":"","sources":["../../src/clients/gemini-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAIH,KAAK,YAAY,EAEpB,MAAM,YAAY,CAAC;AAMpB,eAAO,MAAM,eAAe,EAAE,YAuB7B,CAAC"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { existsSync } from 'node:fs';
|
|
17
17
|
import { join } from 'node:path';
|
|
18
18
|
import { userHome } from './home.js';
|
|
19
|
-
import { patchJsonFile } from './index.js';
|
|
19
|
+
import { detectInServerMap, patchJsonFile, removeFromServerMap, } from './index.js';
|
|
20
20
|
function configPath() {
|
|
21
21
|
return join(userHome(), '.gemini', 'settings.json');
|
|
22
22
|
}
|
|
@@ -40,5 +40,7 @@ export const geminiCliClient = {
|
|
|
40
40
|
return { ...current, mcpServers: servers };
|
|
41
41
|
});
|
|
42
42
|
},
|
|
43
|
+
detect: () => detectInServerMap(configPath(), 'mcpServers'),
|
|
44
|
+
remove: () => removeFromServerMap(configPath(), 'mcpServers'),
|
|
43
45
|
};
|
|
44
46
|
//# sourceMappingURL=gemini-cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-cli.js","sourceRoot":"","sources":["../../src/clients/gemini-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"gemini-cli.js","sourceRoot":"","sources":["../../src/clients/gemini-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GAGtB,MAAM,YAAY,CAAC;AAEpB,SAAS,UAAU;IACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAiB;IACzC,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;IACnB,UAAU;IACV,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;IACzD,KAAK,EAAE,KAAK,EAAE,UAAkB,EAAE,MAAuB,EAAE,EAAE;QACzD,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,OAAO,GACT,OAAO,CAAC,UAAU,KAAK,IAAI;gBAC3B,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;gBACtC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC9B,CAAC,CAAC,EAAE,GAAI,OAAO,CAAC,UAAsC,EAAE;gBACxD,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,UAAU,CAAC,GAAG;gBAClB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;aAClB,CAAC;YACF,OAAO,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC;IAC3D,MAAM,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC;CAChE,CAAC"}
|
package/dist/clients/index.d.ts
CHANGED
|
@@ -33,7 +33,88 @@ export interface ClientWriter {
|
|
|
33
33
|
isDetected: () => boolean;
|
|
34
34
|
/** Apply the MCP server config to the file. Creates the file if missing. */
|
|
35
35
|
apply: (serverName: string, config: McpServerConfig) => Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Inspect the config file for an existing yt-builder-mcp server entry.
|
|
38
|
+
* The inverse of {@link apply} — used by the `uninstall` subcommand to
|
|
39
|
+
* decide which clients to surface in the removal checklist.
|
|
40
|
+
*
|
|
41
|
+
* Matches by EITHER a known server key (`yt-builder-mcp` /
|
|
42
|
+
* `yootheme-builder`, see {@link KNOWN_SERVER_KEYS}) OR any entry whose
|
|
43
|
+
* command/args reference the `@wootsup/yt-builder-mcp` npm package —
|
|
44
|
+
* this catches legacy/renamed leftovers a user may have hand-edited or
|
|
45
|
+
* an older wizard version wrote under a different key.
|
|
46
|
+
*
|
|
47
|
+
* Never throws on a missing / malformed file; returns `present: false`.
|
|
48
|
+
*/
|
|
49
|
+
detect: () => Promise<ClientDetection>;
|
|
50
|
+
/**
|
|
51
|
+
* Remove the matched yt-builder-mcp server entry from the config file.
|
|
52
|
+
* Inverse of {@link apply}: atomic (read → mutate → write), preserves
|
|
53
|
+
* every other server + unrelated config, idempotent (a no-op when no
|
|
54
|
+
* matching entry exists), and never creates the file if it is missing.
|
|
55
|
+
*
|
|
56
|
+
* Returns the keys/names actually removed so the caller can render an
|
|
57
|
+
* accurate summary.
|
|
58
|
+
*/
|
|
59
|
+
remove: () => Promise<ClientRemoval>;
|
|
36
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Result of a {@link ClientWriter.detect} probe.
|
|
63
|
+
*/
|
|
64
|
+
export interface ClientDetection {
|
|
65
|
+
/** True when at least one matching server entry was found. */
|
|
66
|
+
readonly present: boolean;
|
|
67
|
+
/** Absolute config-file path that was inspected. */
|
|
68
|
+
readonly configPath: string;
|
|
69
|
+
/**
|
|
70
|
+
* The server keys/names that matched (e.g. `['yt-builder-mcp']`). For
|
|
71
|
+
* the Continue array-format this is the entry `name`s; for codex-cli it
|
|
72
|
+
* is the TOML table key. Empty when `present` is false.
|
|
73
|
+
*/
|
|
74
|
+
readonly matchedKeys: readonly string[];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Result of a {@link ClientWriter.remove} operation.
|
|
78
|
+
*/
|
|
79
|
+
export interface ClientRemoval {
|
|
80
|
+
/** True when one or more entries were removed from the file. */
|
|
81
|
+
readonly removed: boolean;
|
|
82
|
+
/** Absolute config-file path that was mutated (or inspected). */
|
|
83
|
+
readonly configPath: string;
|
|
84
|
+
/** The server keys/names actually removed. Empty on a no-op. */
|
|
85
|
+
readonly removedKeys: readonly string[];
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Canonical + legacy server keys the wizard has ever written. `detect` /
|
|
89
|
+
* `remove` match any of these by name, in addition to the
|
|
90
|
+
* package-reference heuristic. Ordered canonical-first.
|
|
91
|
+
*
|
|
92
|
+
* - `yt-builder-mcp` — current key (1.0.2 Wave-R Part 2, see setup-wizard.ts).
|
|
93
|
+
* - `yootheme-builder` — pre-1.0.1 key (alpha-tester only; no production installs).
|
|
94
|
+
*/
|
|
95
|
+
export declare const KNOWN_SERVER_KEYS: readonly string[];
|
|
96
|
+
/**
|
|
97
|
+
* The npm package name an AI-client server entry runs. Used by the
|
|
98
|
+
* package-reference heuristic in `detect` / `remove` so a hand-edited or
|
|
99
|
+
* differently-keyed leftover (e.g. `"yt-builder": { command: "npx", args:
|
|
100
|
+
* ["-y", "@wootsup/yt-builder-mcp"] }`) is still caught.
|
|
101
|
+
*/
|
|
102
|
+
export declare const PACKAGE_NAME = "@wootsup/yt-builder-mcp";
|
|
103
|
+
/**
|
|
104
|
+
* True when a JSON MCP-server entry references our npm package via its
|
|
105
|
+
* `command` / `args`. Defensive across shapes: an entry might be `{
|
|
106
|
+
* command: 'npx', args: ['-y', '@wootsup/yt-builder-mcp'] }`, or a
|
|
107
|
+
* Zed-style `{ command: { path, args } }`, or a Continue-style `{
|
|
108
|
+
* transport: { command, args } }`. We stringify the command+args island
|
|
109
|
+
* and substring-match the package name.
|
|
110
|
+
*/
|
|
111
|
+
export declare function entryReferencesPackage(entry: unknown): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Compute which keys of a JSON server-map (`mcpServers` /
|
|
114
|
+
* `context_servers`) match yt-builder-mcp — by known key name OR by
|
|
115
|
+
* package reference. Shared by the JSON-format clients' detect/remove.
|
|
116
|
+
*/
|
|
117
|
+
export declare function matchServerMapKeys(servers: Record<string, unknown>): string[];
|
|
37
118
|
export declare const ALL_CLIENTS: readonly ClientWriter[];
|
|
38
119
|
export interface DetectedClient {
|
|
39
120
|
readonly id: string;
|
|
@@ -48,5 +129,28 @@ export declare function findClient(id: string): ClientWriter | undefined;
|
|
|
48
129
|
* Creates parent directories if missing.
|
|
49
130
|
*/
|
|
50
131
|
export declare function patchJsonFile(path: string, mutator: (current: Record<string, unknown>) => Record<string, unknown>): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* Read a JSON config file WITHOUT creating it. Returns `null` when the
|
|
134
|
+
* file is missing or unparseable (the inverse-friendly read for detect /
|
|
135
|
+
* remove, which must be no-ops on absent config). On a parse error we
|
|
136
|
+
* return `null` rather than `{}` so callers can distinguish "no config to
|
|
137
|
+
* touch" from "empty object".
|
|
138
|
+
*/
|
|
139
|
+
export declare function readJsonFileOrNull(path: string): Promise<Record<string, unknown> | null>;
|
|
140
|
+
/**
|
|
141
|
+
* Detect helper for the JSON server-map clients (Claude Desktop / Code,
|
|
142
|
+
* Cursor, Cline, Roo Code, Gemini CLI use `mcpServers`; Zed uses
|
|
143
|
+
* `context_servers`). Reads the file, pulls the named map, and returns
|
|
144
|
+
* the matching keys.
|
|
145
|
+
*/
|
|
146
|
+
export declare function detectInServerMap(path: string, mapKey: 'mcpServers' | 'context_servers'): Promise<ClientDetection>;
|
|
147
|
+
/**
|
|
148
|
+
* Remove helper for the JSON server-map clients. Atomic read → delete →
|
|
149
|
+
* write, preserving every other key in the map AND every other top-level
|
|
150
|
+
* key in the file. No-op (no write) when nothing matches or the file is
|
|
151
|
+
* absent. When the map becomes empty it is dropped entirely so we don't
|
|
152
|
+
* leave a dangling `"mcpServers": {}` behind.
|
|
153
|
+
*/
|
|
154
|
+
export declare function removeFromServerMap(path: string, mapKey: 'mcpServers' | 'context_servers'): Promise<ClientRemoval>;
|
|
51
155
|
export { claudeCodeClient, claudeDesktopClient, clineClient, codexCliClient, continueClient, cursorClient, geminiCliClient, rooCodeClient, zedClient, };
|
|
52
156
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,sEAAsE;IACtE,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"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"}
|
package/dist/clients/index.js
CHANGED
|
@@ -22,6 +22,72 @@ import { cursorClient } from './cursor.js';
|
|
|
22
22
|
import { geminiCliClient } from './gemini-cli.js';
|
|
23
23
|
import { rooCodeClient } from './roo-code.js';
|
|
24
24
|
import { zedClient } from './zed.js';
|
|
25
|
+
/**
|
|
26
|
+
* Canonical + legacy server keys the wizard has ever written. `detect` /
|
|
27
|
+
* `remove` match any of these by name, in addition to the
|
|
28
|
+
* package-reference heuristic. Ordered canonical-first.
|
|
29
|
+
*
|
|
30
|
+
* - `yt-builder-mcp` — current key (1.0.2 Wave-R Part 2, see setup-wizard.ts).
|
|
31
|
+
* - `yootheme-builder` — pre-1.0.1 key (alpha-tester only; no production installs).
|
|
32
|
+
*/
|
|
33
|
+
export const KNOWN_SERVER_KEYS = ['yt-builder-mcp', 'yootheme-builder'];
|
|
34
|
+
/**
|
|
35
|
+
* The npm package name an AI-client server entry runs. Used by the
|
|
36
|
+
* package-reference heuristic in `detect` / `remove` so a hand-edited or
|
|
37
|
+
* differently-keyed leftover (e.g. `"yt-builder": { command: "npx", args:
|
|
38
|
+
* ["-y", "@wootsup/yt-builder-mcp"] }`) is still caught.
|
|
39
|
+
*/
|
|
40
|
+
export const PACKAGE_NAME = '@wootsup/yt-builder-mcp';
|
|
41
|
+
/**
|
|
42
|
+
* True when a JSON MCP-server entry references our npm package via its
|
|
43
|
+
* `command` / `args`. Defensive across shapes: an entry might be `{
|
|
44
|
+
* command: 'npx', args: ['-y', '@wootsup/yt-builder-mcp'] }`, or a
|
|
45
|
+
* Zed-style `{ command: { path, args } }`, or a Continue-style `{
|
|
46
|
+
* transport: { command, args } }`. We stringify the command+args island
|
|
47
|
+
* and substring-match the package name.
|
|
48
|
+
*/
|
|
49
|
+
export function entryReferencesPackage(entry) {
|
|
50
|
+
if (entry === null || typeof entry !== 'object')
|
|
51
|
+
return false;
|
|
52
|
+
const haystacks = [];
|
|
53
|
+
const rec = entry;
|
|
54
|
+
haystacks.push(rec.command, rec.args);
|
|
55
|
+
// Zed nests command under `command: { path, args }`.
|
|
56
|
+
if (rec.command !== null && typeof rec.command === 'object') {
|
|
57
|
+
const cmd = rec.command;
|
|
58
|
+
haystacks.push(cmd.path, cmd.args);
|
|
59
|
+
}
|
|
60
|
+
// Continue nests under `transport: { command, args }`.
|
|
61
|
+
if (rec.transport !== null && typeof rec.transport === 'object') {
|
|
62
|
+
const t = rec.transport;
|
|
63
|
+
haystacks.push(t.command, t.args);
|
|
64
|
+
}
|
|
65
|
+
for (const h of haystacks) {
|
|
66
|
+
if (typeof h === 'string' && h.includes(PACKAGE_NAME))
|
|
67
|
+
return true;
|
|
68
|
+
if (Array.isArray(h)) {
|
|
69
|
+
for (const v of h) {
|
|
70
|
+
if (typeof v === 'string' && v.includes(PACKAGE_NAME))
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Compute which keys of a JSON server-map (`mcpServers` /
|
|
79
|
+
* `context_servers`) match yt-builder-mcp — by known key name OR by
|
|
80
|
+
* package reference. Shared by the JSON-format clients' detect/remove.
|
|
81
|
+
*/
|
|
82
|
+
export function matchServerMapKeys(servers) {
|
|
83
|
+
const matched = [];
|
|
84
|
+
for (const [key, entry] of Object.entries(servers)) {
|
|
85
|
+
if (KNOWN_SERVER_KEYS.includes(key) || entryReferencesPackage(entry)) {
|
|
86
|
+
matched.push(key);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return matched;
|
|
90
|
+
}
|
|
25
91
|
export const ALL_CLIENTS = [
|
|
26
92
|
claudeDesktopClient,
|
|
27
93
|
claudeCodeClient,
|
|
@@ -68,5 +134,80 @@ export async function patchJsonFile(path, mutator) {
|
|
|
68
134
|
const next = mutator(current);
|
|
69
135
|
await writeFile(path, JSON.stringify(next, null, 2) + '\n', 'utf-8');
|
|
70
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Read a JSON config file WITHOUT creating it. Returns `null` when the
|
|
139
|
+
* file is missing or unparseable (the inverse-friendly read for detect /
|
|
140
|
+
* remove, which must be no-ops on absent config). On a parse error we
|
|
141
|
+
* return `null` rather than `{}` so callers can distinguish "no config to
|
|
142
|
+
* touch" from "empty object".
|
|
143
|
+
*/
|
|
144
|
+
export async function readJsonFileOrNull(path) {
|
|
145
|
+
if (!existsSync(path))
|
|
146
|
+
return null;
|
|
147
|
+
try {
|
|
148
|
+
const raw = await readFile(path, 'utf-8');
|
|
149
|
+
if (raw.trim() === '')
|
|
150
|
+
return null;
|
|
151
|
+
const parsed = JSON.parse(raw);
|
|
152
|
+
if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
153
|
+
return parsed;
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Detect helper for the JSON server-map clients (Claude Desktop / Code,
|
|
163
|
+
* Cursor, Cline, Roo Code, Gemini CLI use `mcpServers`; Zed uses
|
|
164
|
+
* `context_servers`). Reads the file, pulls the named map, and returns
|
|
165
|
+
* the matching keys.
|
|
166
|
+
*/
|
|
167
|
+
export async function detectInServerMap(path, mapKey) {
|
|
168
|
+
const current = await readJsonFileOrNull(path);
|
|
169
|
+
if (current === null) {
|
|
170
|
+
return { present: false, configPath: path, matchedKeys: [] };
|
|
171
|
+
}
|
|
172
|
+
const raw = current[mapKey];
|
|
173
|
+
if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
174
|
+
return { present: false, configPath: path, matchedKeys: [] };
|
|
175
|
+
}
|
|
176
|
+
const matched = matchServerMapKeys(raw);
|
|
177
|
+
return { present: matched.length > 0, configPath: path, matchedKeys: matched };
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Remove helper for the JSON server-map clients. Atomic read → delete →
|
|
181
|
+
* write, preserving every other key in the map AND every other top-level
|
|
182
|
+
* key in the file. No-op (no write) when nothing matches or the file is
|
|
183
|
+
* absent. When the map becomes empty it is dropped entirely so we don't
|
|
184
|
+
* leave a dangling `"mcpServers": {}` behind.
|
|
185
|
+
*/
|
|
186
|
+
export async function removeFromServerMap(path, mapKey) {
|
|
187
|
+
const current = await readJsonFileOrNull(path);
|
|
188
|
+
if (current === null) {
|
|
189
|
+
return { removed: false, configPath: path, removedKeys: [] };
|
|
190
|
+
}
|
|
191
|
+
const raw = current[mapKey];
|
|
192
|
+
if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
193
|
+
return { removed: false, configPath: path, removedKeys: [] };
|
|
194
|
+
}
|
|
195
|
+
const servers = { ...raw };
|
|
196
|
+
const matched = matchServerMapKeys(servers);
|
|
197
|
+
if (matched.length === 0) {
|
|
198
|
+
return { removed: false, configPath: path, removedKeys: [] };
|
|
199
|
+
}
|
|
200
|
+
for (const key of matched)
|
|
201
|
+
delete servers[key];
|
|
202
|
+
const next = { ...current };
|
|
203
|
+
if (Object.keys(servers).length === 0) {
|
|
204
|
+
delete next[mapKey];
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
next[mapKey] = servers;
|
|
208
|
+
}
|
|
209
|
+
await writeFile(path, JSON.stringify(next, null, 2) + '\n', 'utf-8');
|
|
210
|
+
return { removed: true, configPath: path, removedKeys: matched };
|
|
211
|
+
}
|
|
71
212
|
export { claudeCodeClient, claudeDesktopClient, clineClient, codexCliClient, continueClient, cursorClient, geminiCliClient, rooCodeClient, zedClient, };
|
|
72
213
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roo-code.d.ts","sourceRoot":"","sources":["../../src/clients/roo-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,
|
|
1
|
+
{"version":3,"file":"roo-code.d.ts","sourceRoot":"","sources":["../../src/clients/roo-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,EAIH,KAAK,YAAY,EAEpB,MAAM,YAAY,CAAC;AAkCpB,eAAO,MAAM,aAAa,EAAE,YAuB3B,CAAC"}
|
package/dist/clients/roo-code.js
CHANGED
|
@@ -22,7 +22,7 @@ import { existsSync } from 'node:fs';
|
|
|
22
22
|
import { platform } from 'node:os';
|
|
23
23
|
import { join } from 'node:path';
|
|
24
24
|
import { userHome } from './home.js';
|
|
25
|
-
import { patchJsonFile } from './index.js';
|
|
25
|
+
import { detectInServerMap, patchJsonFile, removeFromServerMap, } from './index.js';
|
|
26
26
|
const EXTENSION_ID = 'rooveterinaryinc.roo-cline';
|
|
27
27
|
const SETTINGS_FILENAME = 'mcp_settings.json';
|
|
28
28
|
function vsCodeUserDir() {
|
|
@@ -65,5 +65,7 @@ export const rooCodeClient = {
|
|
|
65
65
|
return { ...current, mcpServers: servers };
|
|
66
66
|
});
|
|
67
67
|
},
|
|
68
|
+
detect: () => detectInServerMap(configPath(), 'mcpServers'),
|
|
69
|
+
remove: () => removeFromServerMap(configPath(), 'mcpServers'),
|
|
68
70
|
};
|
|
69
71
|
//# sourceMappingURL=roo-code.js.map
|