@solongate/proxy 0.26.2 → 0.26.4

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/dist/init.js CHANGED
@@ -4,8 +4,40 @@
4
4
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
5
5
  import { resolve, join, dirname } from "path";
6
6
  import { fileURLToPath } from "url";
7
- import { execSync } from "child_process";
7
+ import { execFileSync } from "child_process";
8
8
  import { createInterface } from "readline";
9
+
10
+ // src/cli-utils.ts
11
+ var c = {
12
+ reset: "\x1B[0m",
13
+ bold: "\x1B[1m",
14
+ dim: "\x1B[2m",
15
+ italic: "\x1B[3m",
16
+ white: "\x1B[97m",
17
+ gray: "\x1B[90m",
18
+ blue1: "\x1B[38;2;20;50;160m",
19
+ blue2: "\x1B[38;2;40;80;190m",
20
+ blue3: "\x1B[38;2;60;110;215m",
21
+ blue4: "\x1B[38;2;90;140;230m",
22
+ blue5: "\x1B[38;2;130;170;240m",
23
+ blue6: "\x1B[38;2;170;200;250m",
24
+ green: "\x1B[38;2;80;200;120m",
25
+ red: "\x1B[38;2;220;80;80m",
26
+ cyan: "\x1B[38;2;100;200;220m",
27
+ yellow: "\x1B[38;2;220;200;80m",
28
+ bgBlue: "\x1B[48;2;20;50;160m"
29
+ };
30
+ var BANNER_FULL = [
31
+ " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557",
32
+ " \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D",
33
+ " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2557 ",
34
+ " \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u255D ",
35
+ " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557",
36
+ " \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D"
37
+ ];
38
+ var BANNER_COLORS = [c.blue1, c.blue2, c.blue3, c.blue4, c.blue5, c.blue6];
39
+
40
+ // src/init.ts
9
41
  var SEARCH_PATHS = [
10
42
  ".mcp.json",
11
43
  "mcp.json",
@@ -177,19 +209,19 @@ function unlockProtectedDirs() {
177
209
  try {
178
210
  if (process.platform === "win32") {
179
211
  try {
180
- execSync(`powershell.exe -Command "icacls '${fullDir}' /remove:d '*S-1-1-0' /T /Q"`, { stdio: "ignore" });
212
+ execFileSync("icacls", [fullDir, "/remove:d", "*S-1-1-0", "/T", "/Q"], { stdio: "ignore" });
181
213
  } catch {
182
214
  }
183
215
  try {
184
- execSync(`attrib -R /S /D "${fullDir}"`, { stdio: "ignore" });
216
+ execFileSync("attrib", ["-R", "/S", "/D", fullDir], { stdio: "ignore" });
185
217
  } catch {
186
218
  }
187
219
  } else {
188
220
  try {
189
- execSync(`chattr -i -R "${fullDir}"`, { stdio: "ignore" });
221
+ execFileSync("chattr", ["-i", "-R", fullDir], { stdio: "ignore" });
190
222
  } catch {
191
223
  }
192
- execSync(`chmod -R u+w "${fullDir}"`, { stdio: "ignore" });
224
+ execFileSync("chmod", ["-R", "u+w", fullDir], { stdio: "ignore" });
193
225
  }
194
226
  } catch {
195
227
  }
@@ -201,19 +233,19 @@ function unlockProtectedDirs() {
201
233
  try {
202
234
  if (process.platform === "win32") {
203
235
  try {
204
- execSync(`powershell.exe -Command "icacls '${fullPath}' /remove:d '*S-1-1-0' /Q"`, { stdio: "ignore" });
236
+ execFileSync("icacls", [fullPath, "/remove:d", "*S-1-1-0", "/Q"], { stdio: "ignore" });
205
237
  } catch {
206
238
  }
207
239
  try {
208
- execSync(`attrib -R "${fullPath}"`, { stdio: "ignore" });
240
+ execFileSync("attrib", ["-R", fullPath], { stdio: "ignore" });
209
241
  } catch {
210
242
  }
211
243
  } else {
212
244
  try {
213
- execSync(`chattr -i "${fullPath}"`, { stdio: "ignore" });
245
+ execFileSync("chattr", ["-i", fullPath], { stdio: "ignore" });
214
246
  } catch {
215
247
  }
216
- execSync(`chmod u+w "${fullPath}"`, { stdio: "ignore" });
248
+ execFileSync("chmod", ["u+w", fullPath], { stdio: "ignore" });
217
249
  }
218
250
  } catch {
219
251
  }
@@ -257,7 +289,7 @@ function installHooks(selectedTools = []) {
257
289
  { name: "OpenClaw", dir: ".openclaw", key: "openclaw" },
258
290
  { name: "Perplexity", dir: ".perplexity", key: "perplexity" }
259
291
  ];
260
- const clients = selectedTools.length > 0 ? allClients.filter((c) => selectedTools.includes(c.key)) : allClients;
292
+ const clients = selectedTools.length > 0 ? allClients.filter((c2) => selectedTools.includes(c2.key)) : allClients;
261
293
  const activatedNames = [];
262
294
  for (const client of clients) {
263
295
  const clientDir = resolve(client.dir);
@@ -320,26 +352,7 @@ GROQ_API_KEY=gsk_your_groq_key_here
320
352
  }
321
353
  async function main() {
322
354
  const options = parseInitArgs(process.argv);
323
- const _c = {
324
- reset: "\x1B[0m",
325
- bold: "\x1B[1m",
326
- dim: "\x1B[2m",
327
- italic: "\x1B[3m",
328
- blue1: "\x1B[38;2;20;50;160m",
329
- blue2: "\x1B[38;2;40;80;190m",
330
- blue3: "\x1B[38;2;60;110;215m",
331
- blue4: "\x1B[38;2;90;140;230m",
332
- blue5: "\x1B[38;2;130;170;240m",
333
- blue6: "\x1B[38;2;170;200;250m"
334
- };
335
- const fullBanner = [
336
- " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557",
337
- " \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D",
338
- " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2557 ",
339
- " \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u255D ",
340
- " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557",
341
- " \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D"
342
- ];
355
+ const fullBanner = BANNER_FULL;
343
356
  const mediumBanner = [
344
357
  " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2557",
345
358
  " \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551",
@@ -366,13 +379,13 @@ async function main() {
366
379
  ];
367
380
  const cols = process.stdout.columns || 80;
368
381
  const bannerLines = cols >= 82 ? fullBanner : cols >= 50 ? mediumBanner : smallBanner;
369
- const bannerColors = [_c.blue1, _c.blue2, _c.blue3, _c.blue4, _c.blue5, _c.blue6];
382
+ const bannerColors = BANNER_COLORS;
370
383
  console.log("");
371
384
  for (let i = 0; i < bannerLines.length; i++) {
372
- console.log(`${_c.bold}${bannerColors[i % bannerColors.length]}${bannerLines[i]}${_c.reset}`);
385
+ console.log(`${c.bold}${bannerColors[i % bannerColors.length]}${bannerLines[i]}${c.reset}`);
373
386
  }
374
387
  console.log("");
375
- console.log(` ${_c.dim}${_c.italic}Init Setup${_c.reset}`);
388
+ console.log(` ${c.dim}${c.italic}Init Setup${c.reset}`);
376
389
  console.log("");
377
390
  await sleep(400);
378
391
  const configInfo = findConfigFile(options.configPath, true);
package/dist/inject.js CHANGED
@@ -4,6 +4,50 @@
4
4
  import { readFileSync, writeFileSync, existsSync, copyFileSync } from "fs";
5
5
  import { resolve } from "path";
6
6
  import { execSync } from "child_process";
7
+
8
+ // src/cli-utils.ts
9
+ var c = {
10
+ reset: "\x1B[0m",
11
+ bold: "\x1B[1m",
12
+ dim: "\x1B[2m",
13
+ italic: "\x1B[3m",
14
+ white: "\x1B[97m",
15
+ gray: "\x1B[90m",
16
+ blue1: "\x1B[38;2;20;50;160m",
17
+ blue2: "\x1B[38;2;40;80;190m",
18
+ blue3: "\x1B[38;2;60;110;215m",
19
+ blue4: "\x1B[38;2;90;140;230m",
20
+ blue5: "\x1B[38;2;130;170;240m",
21
+ blue6: "\x1B[38;2;170;200;250m",
22
+ green: "\x1B[38;2;80;200;120m",
23
+ red: "\x1B[38;2;220;80;80m",
24
+ cyan: "\x1B[38;2;100;200;220m",
25
+ yellow: "\x1B[38;2;220;200;80m",
26
+ bgBlue: "\x1B[48;2;20;50;160m"
27
+ };
28
+ function log(msg) {
29
+ process.stderr.write(msg + "\n");
30
+ }
31
+ var BANNER_FULL = [
32
+ " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557",
33
+ " \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D",
34
+ " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2557 ",
35
+ " \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u255D ",
36
+ " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557",
37
+ " \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D"
38
+ ];
39
+ var BANNER_COLORS = [c.blue1, c.blue2, c.blue3, c.blue4, c.blue5, c.blue6];
40
+ function printBanner(subtitle) {
41
+ log("");
42
+ for (let i = 0; i < BANNER_FULL.length; i++) {
43
+ log(`${c.bold}${BANNER_COLORS[i]}${BANNER_FULL[i]}${c.reset}`);
44
+ }
45
+ log("");
46
+ log(` ${c.dim}${c.italic}${subtitle}${c.reset}`);
47
+ log("");
48
+ }
49
+
50
+ // src/inject.ts
7
51
  function parseInjectArgs(argv) {
8
52
  const args = argv.slice(2);
9
53
  const opts = {
@@ -58,41 +102,6 @@ WHAT IT DOES
58
102
  All tool() calls are automatically protected by SolonGate.
59
103
  `);
60
104
  }
61
- function log(msg) {
62
- process.stderr.write(msg + "\n");
63
- }
64
- var c = {
65
- reset: "\x1B[0m",
66
- bold: "\x1B[1m",
67
- dim: "\x1B[2m",
68
- italic: "\x1B[3m",
69
- green: "\x1B[38;2;80;200;120m",
70
- red: "\x1B[38;2;220;80;80m",
71
- blue1: "\x1B[38;2;20;50;160m",
72
- blue2: "\x1B[38;2;40;80;190m",
73
- blue3: "\x1B[38;2;60;110;215m",
74
- blue4: "\x1B[38;2;90;140;230m",
75
- blue5: "\x1B[38;2;130;170;240m",
76
- blue6: "\x1B[38;2;170;200;250m"
77
- };
78
- function printBanner(subtitle) {
79
- const lines = [
80
- " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557",
81
- " \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D",
82
- " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2557 ",
83
- " \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u255D ",
84
- " \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557",
85
- " \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D"
86
- ];
87
- const colors = [c.blue1, c.blue2, c.blue3, c.blue4, c.blue5, c.blue6];
88
- log("");
89
- for (let i = 0; i < lines.length; i++) {
90
- log(`${c.bold}${colors[i]}${lines[i]}${c.reset}`);
91
- }
92
- log("");
93
- log(` ${c.dim}${c.italic}${subtitle}${c.reset}`);
94
- log("");
95
- }
96
105
  function detectProject() {
97
106
  if (!existsSync(resolve("package.json"))) return false;
98
107
  try {
@@ -128,8 +137,8 @@ function findTsEntryFile() {
128
137
  "server.ts",
129
138
  "main.ts"
130
139
  ];
131
- for (const c2 of candidates) {
132
- const full = resolve(c2);
140
+ for (const c3 of candidates) {
141
+ const full = resolve(c3);
133
142
  if (existsSync(full)) {
134
143
  try {
135
144
  const content = readFileSync(full, "utf-8");
@@ -140,8 +149,8 @@ function findTsEntryFile() {
140
149
  }
141
150
  }
142
151
  }
143
- for (const c2 of candidates) {
144
- if (existsSync(resolve(c2))) return resolve(c2);
152
+ for (const c3 of candidates) {
153
+ if (existsSync(resolve(c3))) return resolve(c3);
145
154
  }
146
155
  return null;
147
156
  }
@@ -154,21 +163,21 @@ function installSdk() {
154
163
  try {
155
164
  const pkg = JSON.parse(readFileSync(resolve("package.json"), "utf-8"));
156
165
  const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
157
- if (allDeps["@solongate/sdk"]) {
158
- log(" @solongate/sdk already installed");
166
+ if (allDeps["@solongate/proxy"]) {
167
+ log(" @solongate/proxy already installed");
159
168
  return true;
160
169
  }
161
170
  } catch {
162
171
  }
163
172
  const pm = detectPackageManager();
164
- const cmd = pm === "yarn" ? "yarn add @solongate/sdk" : `${pm} install @solongate/sdk`;
165
- log(` Installing @solongate/sdk via ${pm}...`);
173
+ const cmd = pm === "yarn" ? "yarn add @solongate/proxy" : `${pm} install @solongate/proxy`;
174
+ log(` Installing @solongate/proxy via ${pm}...`);
166
175
  try {
167
176
  execSync(cmd, { stdio: "pipe", cwd: process.cwd() });
168
177
  return true;
169
178
  } catch (err) {
170
179
  log(` Failed to install: ${err instanceof Error ? err.message : String(err)}`);
171
- log(" You can install manually: npm install @solongate/sdk");
180
+ log(" You can install manually: npm install @solongate/proxy");
172
181
  return false;
173
182
  }
174
183
  }
@@ -195,18 +204,18 @@ function injectTypeScript(filePath) {
195
204
  if (importNames.length === 1 && importNames[0] === "McpServer") {
196
205
  modified = modified.replace(
197
206
  importLine,
198
- `import { SecureMcpServer } from '@solongate/sdk'`
207
+ `import { SecureMcpServer } from '@solongate/proxy'`
199
208
  );
200
- changes.push("Replaced McpServer import with SecureMcpServer from @solongate/sdk");
209
+ changes.push("Replaced McpServer import with SecureMcpServer from @solongate/proxy");
201
210
  } else {
202
211
  const otherImports = importNames.filter((n) => n !== "McpServer");
203
212
  const fromModule = importLine.match(/from\s*['"]([^'"]+)['"]/)?.[1] ?? "";
204
213
  modified = modified.replace(
205
214
  importLine,
206
215
  `import { ${otherImports.join(", ")} } from '${fromModule}';
207
- import { SecureMcpServer } from '@solongate/sdk'`
216
+ import { SecureMcpServer } from '@solongate/proxy'`
208
217
  );
209
- changes.push("Removed McpServer from existing import, added SecureMcpServer import from @solongate/sdk");
218
+ changes.push("Removed McpServer from existing import, added SecureMcpServer import from @solongate/proxy");
210
219
  }
211
220
  importReplaced = true;
212
221
  break;
@@ -214,9 +223,9 @@ import { SecureMcpServer } from '@solongate/sdk'`
214
223
  }
215
224
  if (!importReplaced) {
216
225
  const insertPos = findImportInsertPosition(modified);
217
- modified = modified.slice(0, insertPos) + `import { SecureMcpServer } from '@solongate/sdk';
226
+ modified = modified.slice(0, insertPos) + `import { SecureMcpServer } from '@solongate/proxy';
218
227
  ` + modified.slice(insertPos);
219
- changes.push("Added SecureMcpServer import from @solongate/sdk");
228
+ changes.push("Added SecureMcpServer import from @solongate/proxy");
220
229
  }
221
230
  const constructorPattern = /new\s+McpServer\s*\(/g;
222
231
  const constructorCount = (modified.match(constructorPattern) || []).length;