unity-open-mcp 1.3.0 → 1.4.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.
@@ -0,0 +1,514 @@
1
+ // Surgical edits to a Codex `config.toml`.
2
+ //
3
+ // `setup --client codex` owns exactly one server entry: the
4
+ // `[mcp_servers.<key>]` table and its `.env` sub-table (or an inline
5
+ // `env = { … }`). Everything else in the file — other servers, their
6
+ // comments, API tokens, formatting — must survive byte for byte, so this is a
7
+ // line-level editor rather than a parse-and-reserialize: the package ships
8
+ // with one runtime dependency and a TOML serializer would reformat the whole
9
+ // file anyway.
10
+ //
11
+ // The editor recognizes the shapes Codex documents and the Hub / bridge
12
+ // window write: a `[mcp_servers.<key>]` header (bare or quoted segments), plain
13
+ // `key = value` lines (multi-line arrays and strings included), an `.env`
14
+ // sub-table or a one-line inline `env` table, comments, and CRLF files. Any
15
+ // other way of spelling the same entry (dotted keys from a parent table, an
16
+ // inline server table, arrays of tables) is refused with `CodexTomlError`
17
+ // instead of guessed at — a wrong guess would corrupt a file that usually
18
+ // holds credentials.
19
+ export class CodexTomlError extends Error {
20
+ code;
21
+ constructor(code, message) {
22
+ super(message);
23
+ this.code = code;
24
+ this.name = "CodexTomlError";
25
+ }
26
+ }
27
+ /**
28
+ * Merge `entry` into `body` under `[mcp_servers.<serverKey>]`. Keys the entry
29
+ * does not own (`enabled`, timeouts, extra env vars, `.tools.*` tables) are
30
+ * left exactly as they are. Idempotent: merging the result again returns it
31
+ * unchanged.
32
+ */
33
+ export function mergeCodexServer(body, serverKey, entry) {
34
+ const eol = body.includes("\r\n") ? "\r\n" : "\n";
35
+ const lines = body.split(/\r?\n/);
36
+ const items = scan(lines);
37
+ const main = ["mcp_servers", serverKey];
38
+ const envPath = [...main, "env"];
39
+ const label = `[${renderKeyPath(main)}]`;
40
+ for (const item of items) {
41
+ if (item.kind === "array-header" && startsWith(item.path, main)) {
42
+ throw refuse(label, "is declared as an array of tables");
43
+ }
44
+ if (item.kind === "kv") {
45
+ const full = [...item.table, ...item.key];
46
+ if (startsWith(full, main) && item.table.length < main.length) {
47
+ throw refuse(label, "is spelled with dotted keys or an inline table");
48
+ }
49
+ if (samePath(item.table, main) && item.key.length > 1 && item.key[0] === "env") {
50
+ throw refuse(label, "sets env through dotted keys");
51
+ }
52
+ }
53
+ }
54
+ const headers = items.filter((i) => i.kind === "header");
55
+ const mainHeaders = headers.filter((h) => samePath(h.path, main));
56
+ const envHeaders = headers.filter((h) => samePath(h.path, envPath));
57
+ if (mainHeaders.length > 1 || envHeaders.length > 1) {
58
+ throw refuse(label, "is declared more than once");
59
+ }
60
+ const mainHeader = mainHeaders[0];
61
+ const envHeader = envHeaders[0];
62
+ if (!mainHeader) {
63
+ if (envHeader)
64
+ throw refuse(label, "has an env table but no server table");
65
+ return appendBlock(body, eol, renderCodexServer(serverKey, entry, eol));
66
+ }
67
+ const edits = [];
68
+ const mainKvs = kvsIn(items, main);
69
+ const find = (key) => mainKvs.find((kv) => kv.key.length === 1 && kv.key[0] === key);
70
+ const missing = [];
71
+ for (const [key, rendered] of [
72
+ ["command", renderString(entry.command)],
73
+ ["args", renderStringArray(entry.args)],
74
+ ]) {
75
+ const kv = find(key);
76
+ if (!kv)
77
+ missing.push(`${key} = ${rendered}`);
78
+ else
79
+ replaceValue(edits, kv, rendered);
80
+ }
81
+ if (missing.length > 0)
82
+ edits.push({ start: mainHeader.line + 1, end: mainHeader.line, lines: missing });
83
+ const inlineEnv = find("env");
84
+ if (inlineEnv && envHeader)
85
+ throw refuse(label, "defines env both inline and as a table");
86
+ if (inlineEnv) {
87
+ if (inlineEnv.endLine !== inlineEnv.line)
88
+ throw refuse(label, "has a multi-line inline env table");
89
+ replaceValue(edits, inlineEnv, mergeInlineTable(inlineEnv.value, entry, label));
90
+ }
91
+ else if (envHeader) {
92
+ const envKvs = kvsIn(items, envPath);
93
+ const inserts = [];
94
+ for (const [key, value] of Object.entries(entry.env)) {
95
+ const kv = envKvs.find((e) => e.key.length === 1 && e.key[0] === key);
96
+ if (kv)
97
+ replaceValue(edits, kv, renderString(value));
98
+ else
99
+ inserts.push(`${renderKey(key)} = ${renderString(value)}`);
100
+ }
101
+ for (const key of entry.removeEnv) {
102
+ if (key in entry.env)
103
+ continue;
104
+ const kv = envKvs.find((e) => e.key.length === 1 && e.key[0] === key);
105
+ if (kv)
106
+ edits.push({ start: kv.line, end: kv.endLine, lines: [] });
107
+ }
108
+ if (inserts.length > 0)
109
+ edits.push({ start: envHeader.line + 1, end: envHeader.line, lines: inserts });
110
+ }
111
+ else if (Object.keys(entry.env).length > 0) {
112
+ // After the last line of the server table, before any `.tools.*` table.
113
+ const last = Math.max(mainHeader.line, ...mainKvs.map((kv) => kv.endLine));
114
+ edits.push({
115
+ start: last + 1,
116
+ end: last,
117
+ lines: ["", `[${renderKeyPath(envPath)}]`, ...envLines(entry.env)],
118
+ });
119
+ }
120
+ return applyEdits(lines, edits).join(eol);
121
+ }
122
+ /** A fresh `[mcp_servers.<key>]` block (plus `.env` when there is any). */
123
+ export function renderCodexServer(serverKey, entry, eol = "\n") {
124
+ const main = ["mcp_servers", serverKey];
125
+ const out = [
126
+ `[${renderKeyPath(main)}]`,
127
+ "enabled = true",
128
+ `command = ${renderString(entry.command)}`,
129
+ `args = ${renderStringArray(entry.args)}`,
130
+ ];
131
+ if (Object.keys(entry.env).length > 0) {
132
+ out.push("", `[${renderKeyPath([...main, "env"])}]`, ...envLines(entry.env));
133
+ }
134
+ return out.join(eol) + eol;
135
+ }
136
+ function scan(lines) {
137
+ const items = [];
138
+ let table = [];
139
+ for (let i = 0; i < lines.length; i++) {
140
+ const line = lines[i];
141
+ const trimmed = line.trimStart();
142
+ if (trimmed === "" || trimmed.startsWith("#"))
143
+ continue;
144
+ if (trimmed.startsWith("[")) {
145
+ const header = parseHeader(line);
146
+ if (header) {
147
+ items.push({ kind: header.array ? "array-header" : "header", line: i, path: header.path });
148
+ table = header.path;
149
+ continue;
150
+ }
151
+ }
152
+ const key = parseKeyPath(line, 0);
153
+ if (!key)
154
+ continue;
155
+ let pos = skipSpaces(line, key.end);
156
+ if (line[pos] !== "=")
157
+ continue;
158
+ pos = skipSpaces(line, pos + 1);
159
+ const end = scanValue(lines, i, pos);
160
+ const value = end.line === i
161
+ ? line.slice(pos, end.col)
162
+ : [line.slice(pos), ...lines.slice(i + 1, end.line), lines[end.line].slice(0, end.col)].join("\n");
163
+ items.push({
164
+ kind: "kv",
165
+ line: i,
166
+ endLine: end.line,
167
+ table,
168
+ key: key.path,
169
+ prefix: line.slice(0, pos),
170
+ value,
171
+ trailing: lines[end.line].slice(end.col),
172
+ });
173
+ i = end.line;
174
+ }
175
+ return items;
176
+ }
177
+ function parseHeader(line) {
178
+ let pos = skipSpaces(line, 0);
179
+ const array = line.startsWith("[[", pos);
180
+ pos += array ? 2 : 1;
181
+ const key = parseKeyPath(line, pos);
182
+ if (!key)
183
+ return null;
184
+ pos = skipSpaces(line, key.end);
185
+ if (!line.startsWith(array ? "]]" : "]", pos))
186
+ return null;
187
+ pos = skipSpaces(line, pos + (array ? 2 : 1));
188
+ if (pos < line.length && line[pos] !== "#")
189
+ return null;
190
+ return { path: key.path, array };
191
+ }
192
+ /** Dotted key (`a.b`, `"a b".c`, `'lit'`) starting at `start` (after spaces). */
193
+ function parseKeyPath(line, start) {
194
+ const path = [];
195
+ let pos = skipSpaces(line, start);
196
+ for (;;) {
197
+ const ch = line[pos];
198
+ let segment;
199
+ if (ch === '"') {
200
+ let out = "";
201
+ pos++;
202
+ while (pos < line.length && line[pos] !== '"') {
203
+ if (line[pos] === "\\" && pos + 1 < line.length) {
204
+ out += line[pos + 1];
205
+ pos += 2;
206
+ }
207
+ else {
208
+ out += line[pos++];
209
+ }
210
+ }
211
+ if (line[pos] !== '"')
212
+ return null;
213
+ pos++;
214
+ segment = out;
215
+ }
216
+ else if (ch === "'") {
217
+ const close = line.indexOf("'", pos + 1);
218
+ if (close < 0)
219
+ return null;
220
+ segment = line.slice(pos + 1, close);
221
+ pos = close + 1;
222
+ }
223
+ else {
224
+ const match = /^[A-Za-z0-9_-]+/.exec(line.slice(pos));
225
+ if (!match)
226
+ return null;
227
+ segment = match[0];
228
+ pos += segment.length;
229
+ }
230
+ path.push(segment);
231
+ const next = skipSpaces(line, pos);
232
+ if (line[next] !== ".")
233
+ return { path, end: pos };
234
+ pos = skipSpaces(line, next + 1);
235
+ }
236
+ }
237
+ /**
238
+ * Where the value that begins at (`line`, `col`) ends: strings (single and
239
+ * multi-line, basic and literal) and bracket nesting may carry it across
240
+ * lines. Returns the position just past the value on its last line, before
241
+ * any trailing spaces or comment.
242
+ */
243
+ function scanValue(lines, line, col) {
244
+ let state = "normal";
245
+ let depth = 0;
246
+ for (let l = line; l < lines.length; l++) {
247
+ const text = lines[l];
248
+ let lastValueEnd = l === line ? col : 0;
249
+ for (let c = l === line ? col : 0; c < text.length; c++) {
250
+ const ch = text[c];
251
+ if (state === "normal") {
252
+ if (ch === "#")
253
+ break;
254
+ if (text.startsWith('"""', c)) {
255
+ state = "ml-basic";
256
+ c += 2;
257
+ }
258
+ else if (text.startsWith("'''", c)) {
259
+ state = "ml-literal";
260
+ c += 2;
261
+ }
262
+ else if (ch === '"')
263
+ state = "basic";
264
+ else if (ch === "'")
265
+ state = "literal";
266
+ else if (ch === "[" || ch === "{")
267
+ depth++;
268
+ else if (ch === "]" || ch === "}")
269
+ depth--;
270
+ if (ch !== " " && ch !== "\t")
271
+ lastValueEnd = c + 1;
272
+ }
273
+ else if (state === "basic" || state === "ml-basic") {
274
+ if (ch === "\\") {
275
+ c++;
276
+ }
277
+ else if (state === "basic" && ch === '"') {
278
+ state = "normal";
279
+ }
280
+ else if (state === "ml-basic" && text.startsWith('"""', c)) {
281
+ state = "normal";
282
+ c += 2;
283
+ }
284
+ lastValueEnd = c + 1;
285
+ }
286
+ else {
287
+ if (state === "literal" && ch === "'")
288
+ state = "normal";
289
+ else if (state === "ml-literal" && text.startsWith("'''", c)) {
290
+ state = "normal";
291
+ c += 2;
292
+ }
293
+ lastValueEnd = c + 1;
294
+ }
295
+ }
296
+ // A single-line string cannot run past its line; treat it as closed.
297
+ if (state === "basic" || state === "literal")
298
+ state = "normal";
299
+ if (state === "normal" && depth <= 0)
300
+ return { line: l, col: lastValueEnd };
301
+ }
302
+ return { line: lines.length - 1, col: lines[lines.length - 1].length };
303
+ }
304
+ function replaceValue(edits, kv, rendered) {
305
+ if (kv.value === rendered)
306
+ return;
307
+ // Same strings spelled differently (a multi-line array, literal quotes):
308
+ // nothing to change, so the user's formatting stays.
309
+ const current = parseStrings(kv.value);
310
+ const next = parseStrings(rendered);
311
+ if (current && next && current.kind === next.kind && sameStrings(current.values, next.values))
312
+ return;
313
+ edits.push({ start: kv.line, end: kv.endLine, lines: [`${kv.prefix}${rendered}${kv.trailing}`] });
314
+ }
315
+ function applyEdits(lines, edits) {
316
+ const out = [...lines];
317
+ // Bottom-up so earlier line numbers stay valid; an insert at the same line
318
+ // as a replacement lands after it.
319
+ const ordered = [...edits].sort((a, b) => b.start - a.start || b.end - a.end);
320
+ for (const edit of ordered) {
321
+ out.splice(edit.start, Math.max(0, edit.end - edit.start + 1), ...edit.lines);
322
+ }
323
+ return out;
324
+ }
325
+ function appendBlock(body, eol, block) {
326
+ if (body.trim() === "")
327
+ return block;
328
+ let out = body.endsWith("\n") ? body : body + eol;
329
+ const lines = out.split(/\r?\n/);
330
+ const lastContent = lines.length >= 2 ? lines[lines.length - 2] : "";
331
+ if (lastContent.trim() !== "")
332
+ out += eol;
333
+ return out + block;
334
+ }
335
+ /** `{ A = "1", B = "2" }` with this run's keys set in place and removals dropped. */
336
+ function mergeInlineTable(raw, entry, label) {
337
+ const inner = raw.trim();
338
+ if (!inner.startsWith("{") || !inner.endsWith("}")) {
339
+ throw refuse(label, "has an env value that is not a table");
340
+ }
341
+ const pairs = splitTopLevel(inner.slice(1, -1));
342
+ const kept = [];
343
+ const seen = new Set();
344
+ for (const pair of pairs) {
345
+ const key = parseKeyPath(pair, 0);
346
+ if (!key)
347
+ throw refuse(label, "has an env table this editor cannot read");
348
+ const name = key.path.length === 1 ? key.path[0] : undefined;
349
+ if (name !== undefined && name in entry.env) {
350
+ kept.push(`${pair.slice(0, skipSpaces(pair, skipSpaces(pair, key.end) + 1))}${renderString(entry.env[name])}`);
351
+ seen.add(name);
352
+ }
353
+ else if (name !== undefined && entry.removeEnv.includes(name)) {
354
+ continue;
355
+ }
356
+ else {
357
+ kept.push(pair);
358
+ }
359
+ }
360
+ for (const [key, value] of Object.entries(entry.env)) {
361
+ if (!seen.has(key))
362
+ kept.push(`${renderKey(key)} = ${renderString(value)}`);
363
+ }
364
+ return kept.length === 0 ? "{}" : `{ ${kept.join(", ")} }`;
365
+ }
366
+ /** Split `a = 1, b = [2, 3]` on commas outside strings and brackets; trimmed, empties dropped. */
367
+ function splitTopLevel(text) {
368
+ const parts = [];
369
+ let depth = 0;
370
+ let quote = null;
371
+ let start = 0;
372
+ for (let i = 0; i < text.length; i++) {
373
+ const ch = text[i];
374
+ if (quote) {
375
+ if (quote === '"' && ch === "\\")
376
+ i++;
377
+ else if (ch === quote)
378
+ quote = null;
379
+ }
380
+ else if (ch === '"' || ch === "'")
381
+ quote = ch;
382
+ else if (ch === "[" || ch === "{")
383
+ depth++;
384
+ else if (ch === "]" || ch === "}")
385
+ depth--;
386
+ else if (ch === "," && depth === 0) {
387
+ parts.push(text.slice(start, i));
388
+ start = i + 1;
389
+ }
390
+ }
391
+ parts.push(text.slice(start));
392
+ return parts.map((p) => p.trim()).filter((p) => p.length > 0);
393
+ }
394
+ /**
395
+ * A string or an array of strings, read back from raw TOML; `null` for any
396
+ * other value. Only used to decide that a value is already what we would write.
397
+ */
398
+ function parseStrings(raw) {
399
+ const text = raw.trim();
400
+ const readString = (pos) => {
401
+ const quote = text[pos];
402
+ if (quote === "'") {
403
+ const close = text.indexOf("'", pos + 1);
404
+ return close < 0 ? null : { value: text.slice(pos + 1, close), end: close + 1 };
405
+ }
406
+ if (quote !== '"')
407
+ return null;
408
+ let value = "";
409
+ for (let i = pos + 1; i < text.length; i++) {
410
+ const ch = text[i];
411
+ if (ch === '"')
412
+ return { value, end: i + 1 };
413
+ if (ch !== "\\") {
414
+ value += ch;
415
+ continue;
416
+ }
417
+ const esc = text[++i];
418
+ const simple = { n: "\n", t: "\t", r: "\r", '"': '"', "\\": "\\" };
419
+ if (esc in simple)
420
+ value += simple[esc];
421
+ else if (esc === "u" || esc === "U") {
422
+ const len = esc === "u" ? 4 : 8;
423
+ value += String.fromCodePoint(parseInt(text.slice(i + 1, i + 1 + len), 16));
424
+ i += len;
425
+ }
426
+ else
427
+ return null;
428
+ }
429
+ return null;
430
+ };
431
+ if (!text.startsWith("[")) {
432
+ const single = readString(0);
433
+ return single && single.end === text.length ? { kind: "string", values: [single.value] } : null;
434
+ }
435
+ const values = [];
436
+ let pos = 1;
437
+ for (;;) {
438
+ while (pos < text.length && /[\s,]/.test(text[pos]))
439
+ pos++;
440
+ if (text[pos] === "#") {
441
+ while (pos < text.length && text[pos] !== "\n")
442
+ pos++;
443
+ continue;
444
+ }
445
+ if (text[pos] === "]")
446
+ return pos === text.length - 1 ? { kind: "array", values } : null;
447
+ const item = readString(pos);
448
+ if (!item)
449
+ return null;
450
+ values.push(item.value);
451
+ pos = item.end;
452
+ }
453
+ }
454
+ function sameStrings(a, b) {
455
+ return a.length === b.length && a.every((value, i) => value === b[i]);
456
+ }
457
+ // ---------------------------------------------------------------------------
458
+ // Rendering
459
+ // ---------------------------------------------------------------------------
460
+ function envLines(env) {
461
+ return Object.entries(env).map(([key, value]) => `${renderKey(key)} = ${renderString(value)}`);
462
+ }
463
+ function renderKey(key) {
464
+ return /^[A-Za-z0-9_-]+$/.test(key) ? key : renderString(key);
465
+ }
466
+ function renderKeyPath(path) {
467
+ return path.map(renderKey).join(".");
468
+ }
469
+ function renderStringArray(values) {
470
+ return `[${values.map(renderString).join(", ")}]`;
471
+ }
472
+ /** TOML basic string. */
473
+ export function renderString(value) {
474
+ let out = '"';
475
+ for (const ch of value) {
476
+ const code = ch.codePointAt(0);
477
+ if (ch === "\\")
478
+ out += "\\\\";
479
+ else if (ch === '"')
480
+ out += '\\"';
481
+ else if (ch === "\n")
482
+ out += "\\n";
483
+ else if (ch === "\r")
484
+ out += "\\r";
485
+ else if (ch === "\t")
486
+ out += "\\t";
487
+ else if (code < 0x20 || code === 0x7f)
488
+ out += `\\u${code.toString(16).padStart(4, "0")}`;
489
+ else
490
+ out += ch;
491
+ }
492
+ return out + '"';
493
+ }
494
+ // ---------------------------------------------------------------------------
495
+ // Helpers
496
+ // ---------------------------------------------------------------------------
497
+ function kvsIn(items, table) {
498
+ return items.filter((i) => i.kind === "kv" && samePath(i.table, table));
499
+ }
500
+ function samePath(a, b) {
501
+ return a.length === b.length && a.every((segment, i) => segment === b[i]);
502
+ }
503
+ function startsWith(path, prefix) {
504
+ return path.length >= prefix.length && prefix.every((segment, i) => path[i] === segment);
505
+ }
506
+ function skipSpaces(text, pos) {
507
+ while (pos < text.length && (text[pos] === " " || text[pos] === "\t"))
508
+ pos++;
509
+ return pos;
510
+ }
511
+ function refuse(label, why) {
512
+ return new CodexTomlError("unsupported_codex_config", `${label} ${why}; setup only edits the plain table form and leaves this file unchanged.`);
513
+ }
514
+ //# sourceMappingURL=codex-toml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-toml.js","sourceRoot":"","sources":["../../src/setup/codex-toml.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,6 @@ export interface PortableClientSupport {
17
17
  * table; a unit test keeps every setup-writer client present here.
18
18
  */
19
19
  export declare const PORTABLE_CLIENT_MATRIX: readonly PortableClientSupport[];
20
- export declare function catalogIdForSetupClient(setupClient: string): string;
21
20
  export declare function portableSupportFor(catalogId: string): PortableClientSupport | undefined;
22
21
  export interface PortableTargetOptions {
23
22
  layout: ProjectLayout;
@@ -15,7 +15,7 @@
15
15
  // client to spawn the server with cwd = workspace root.
16
16
  // wrapper a committed shell script resolves the path from its own
17
17
  // location and execs the server. For clients that support
18
- // neither of the above (Codex, ZCode).
18
+ // neither of the above (Codex).
19
19
  // absolute global/user-level config outside any workspace (Claude
20
20
  // Desktop, Cline, Antigravity): no portable form exists.
21
21
  import { readFileSync } from "node:fs";
@@ -126,9 +126,9 @@ export const PORTABLE_CLIENT_MATRIX = [
126
126
  {
127
127
  id: "zcode",
128
128
  label: "ZCode",
129
- configPath: ".zcode/cli/config.json",
130
- strategy: "wrapper",
131
- note: "No workspace interpolation; use the committed wrapper.",
129
+ configPath: ".zcode/config.json",
130
+ strategy: "args",
131
+ note: "Workspace config; stdio servers start in the session's working directory, and config files expand no ${...} templates.",
132
132
  },
133
133
  {
134
134
  id: "claude-desktop",
@@ -152,16 +152,6 @@ export const PORTABLE_CLIENT_MATRIX = [
152
152
  note: "Global MCP config — absolute path only.",
153
153
  },
154
154
  ];
155
- /** `setup --client <id>` → catalog id. */
156
- const SETUP_CLIENT_TO_CATALOG = {
157
- cursor: "cursor",
158
- claude: "claude-code",
159
- opencode: "opencode",
160
- agents: "agents",
161
- };
162
- export function catalogIdForSetupClient(setupClient) {
163
- return SETUP_CLIENT_TO_CATALOG[setupClient] ?? setupClient;
164
- }
165
155
  export function portableSupportFor(catalogId) {
166
156
  return PORTABLE_CLIENT_MATRIX.find((client) => client.id === catalogId);
167
157
  }
@@ -241,7 +231,9 @@ export function resolveWrapperTemplatePath() {
241
231
  throw new Error("The packaged MCP wrapper template could not be located. Reinstall unity-open-mcp and retry.");
242
232
  }
243
233
  function readWrapperTemplate() {
244
- return readFileSync(resolveWrapperTemplatePath(), "utf8");
234
+ // A CRLF checkout (Windows, core.autocrlf) must not leak into a bash
235
+ // script: bash rejects `set -euo pipefail\r`.
236
+ return readFileSync(resolveWrapperTemplatePath(), "utf8").replace(/\r\n/g, "\n");
245
237
  }
246
238
  function toPosix(relative) {
247
239
  return relative.split("\\").join("/");
@@ -1 +1 @@
1
- {"version":3,"file":"portable-config.js","sourceRoot":"","sources":["../../src/setup/portable-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portable-config.js","sourceRoot":"","sources":["../../src/setup/portable-config.ts"],"names":[],"mappings":"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"}
@@ -40,8 +40,6 @@ export const BUNDLED_MANIFEST = {
40
40
  roo: { relativePath: ".roo/skills/unity-open-mcp/SKILL.md" },
41
41
  agent: { relativePath: ".agent/skills/unity-open-mcp/SKILL.md" },
42
42
  junie: { relativePath: ".junie/skills/unity-open-mcp/SKILL.md" },
43
- vscode: { relativePath: ".vscode/skills/unity-open-mcp/SKILL.md" },
44
- vs: { relativePath: ".vs/skills/unity-open-mcp/SKILL.md" },
45
43
  github: { relativePath: ".github/skills/unity-open-mcp/SKILL.md" },
46
44
  },
47
45
  mcpClientMapping: {
@@ -61,8 +59,8 @@ export const BUNDLED_MANIFEST = {
61
59
  "kilo-code": ["kilocode"],
62
60
  rider: ["junie"],
63
61
  "unity-ai": [],
64
- "vscode-copilot": ["vscode"],
65
- "vs-copilot": ["vs"],
62
+ "vscode-copilot": ["github"],
63
+ "vs-copilot": ["github"],
66
64
  antigravity: ["agent"],
67
65
  custom: ["cursor", "claude", "opencode", "agents"],
68
66
  manual: ["cursor", "claude", "opencode", "agents"],