@prestyj/cli 4.12.0 → 4.13.3

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.
Files changed (111) hide show
  1. package/dist/app-sidecar.js +191 -39
  2. package/dist/app-sidecar.js.map +1 -1
  3. package/dist/core/encode-cwd.d.ts +25 -0
  4. package/dist/core/encode-cwd.d.ts.map +1 -0
  5. package/dist/core/encode-cwd.js +40 -0
  6. package/dist/core/encode-cwd.js.map +1 -0
  7. package/dist/core/encode-cwd.test.d.ts +2 -0
  8. package/dist/core/encode-cwd.test.d.ts.map +1 -0
  9. package/dist/core/encode-cwd.test.js +61 -0
  10. package/dist/core/encode-cwd.test.js.map +1 -0
  11. package/dist/core/mcp/client.d.ts +11 -0
  12. package/dist/core/mcp/client.d.ts.map +1 -1
  13. package/dist/core/mcp/client.js +87 -35
  14. package/dist/core/mcp/client.js.map +1 -1
  15. package/dist/core/mcp/defaults.d.ts +1 -1
  16. package/dist/core/mcp/defaults.d.ts.map +1 -1
  17. package/dist/core/mcp/defaults.js +9 -40
  18. package/dist/core/mcp/defaults.js.map +1 -1
  19. package/dist/core/mcp/loopback.d.ts +27 -0
  20. package/dist/core/mcp/loopback.d.ts.map +1 -0
  21. package/dist/core/mcp/loopback.js +66 -0
  22. package/dist/core/mcp/loopback.js.map +1 -0
  23. package/dist/core/mcp/loopback.test.d.ts +2 -0
  24. package/dist/core/mcp/loopback.test.d.ts.map +1 -0
  25. package/dist/core/mcp/loopback.test.js +87 -0
  26. package/dist/core/mcp/loopback.test.js.map +1 -0
  27. package/dist/core/mcp/parse-add-command.d.ts.map +1 -1
  28. package/dist/core/mcp/parse-add-command.js +1 -0
  29. package/dist/core/mcp/parse-add-command.js.map +1 -1
  30. package/dist/core/mcp/parse-add-command.test.js +8 -2
  31. package/dist/core/mcp/parse-add-command.test.js.map +1 -1
  32. package/dist/core/mcp/resolve-stdio.d.ts +27 -0
  33. package/dist/core/mcp/resolve-stdio.d.ts.map +1 -0
  34. package/dist/core/mcp/resolve-stdio.js +149 -0
  35. package/dist/core/mcp/resolve-stdio.js.map +1 -0
  36. package/dist/core/mcp/resolve-stdio.test.d.ts +2 -0
  37. package/dist/core/mcp/resolve-stdio.test.d.ts.map +1 -0
  38. package/dist/core/mcp/resolve-stdio.test.js +63 -0
  39. package/dist/core/mcp/resolve-stdio.test.js.map +1 -0
  40. package/dist/core/mcp/store.d.ts +4 -4
  41. package/dist/core/mcp/store.d.ts.map +1 -1
  42. package/dist/core/mcp/store.js +7 -1
  43. package/dist/core/mcp/store.js.map +1 -1
  44. package/dist/core/mcp/store.test.js +11 -2
  45. package/dist/core/mcp/store.test.js.map +1 -1
  46. package/dist/core/mcp/types.d.ts +5 -1
  47. package/dist/core/mcp/types.d.ts.map +1 -1
  48. package/dist/core/project-discovery.d.ts.map +1 -1
  49. package/dist/core/project-discovery.js +2 -9
  50. package/dist/core/project-discovery.js.map +1 -1
  51. package/dist/core/radio.d.ts +7 -2
  52. package/dist/core/radio.d.ts.map +1 -1
  53. package/dist/core/radio.js.map +1 -1
  54. package/dist/core/session-manager.d.ts.map +1 -1
  55. package/dist/core/session-manager.js +1 -3
  56. package/dist/core/session-manager.js.map +1 -1
  57. package/dist/session.d.ts.map +1 -1
  58. package/dist/session.js +1 -3
  59. package/dist/session.js.map +1 -1
  60. package/dist/system-prompt.d.ts.map +1 -1
  61. package/dist/system-prompt.js +9 -4
  62. package/dist/system-prompt.js.map +1 -1
  63. package/dist/system-prompt.test.js +2 -2
  64. package/dist/system-prompt.test.js.map +1 -1
  65. package/dist/tools/bash.d.ts.map +1 -1
  66. package/dist/tools/bash.js +10 -2
  67. package/dist/tools/bash.js.map +1 -1
  68. package/dist/tools/code-skeleton.d.ts +29 -0
  69. package/dist/tools/code-skeleton.d.ts.map +1 -0
  70. package/dist/tools/code-skeleton.js +115 -0
  71. package/dist/tools/code-skeleton.js.map +1 -0
  72. package/dist/tools/code-skeleton.test.d.ts +2 -0
  73. package/dist/tools/code-skeleton.test.d.ts.map +1 -0
  74. package/dist/tools/code-skeleton.test.js +115 -0
  75. package/dist/tools/code-skeleton.test.js.map +1 -0
  76. package/dist/tools/compress-integration.test.d.ts +2 -0
  77. package/dist/tools/compress-integration.test.d.ts.map +1 -0
  78. package/dist/tools/compress-integration.test.js +59 -0
  79. package/dist/tools/compress-integration.test.js.map +1 -0
  80. package/dist/tools/compress.d.ts +57 -0
  81. package/dist/tools/compress.d.ts.map +1 -0
  82. package/dist/tools/compress.js +181 -0
  83. package/dist/tools/compress.js.map +1 -0
  84. package/dist/tools/compress.test.d.ts +2 -0
  85. package/dist/tools/compress.test.d.ts.map +1 -0
  86. package/dist/tools/compress.test.js +60 -0
  87. package/dist/tools/compress.test.js.map +1 -0
  88. package/dist/tools/edit-diff.d.ts.map +1 -1
  89. package/dist/tools/edit-diff.js +25 -8
  90. package/dist/tools/edit-diff.js.map +1 -1
  91. package/dist/tools/ls.d.ts.map +1 -1
  92. package/dist/tools/ls.js +7 -4
  93. package/dist/tools/ls.js.map +1 -1
  94. package/dist/tools/task-output.d.ts.map +1 -1
  95. package/dist/tools/task-output.js +13 -3
  96. package/dist/tools/task-output.js.map +1 -1
  97. package/dist/ui/components/ChatScreen.d.ts +5 -5
  98. package/dist/ui/components/ChatScreen.d.ts.map +1 -1
  99. package/dist/ui/components/InputArea.d.ts +5 -5
  100. package/dist/ui/components/InputArea.d.ts.map +1 -1
  101. package/dist/ui/components/TaskPickerMenu.d.ts +2 -2
  102. package/dist/ui/components/TaskPickerMenu.d.ts.map +1 -1
  103. package/dist/ui/components/TaskPickerMenu.js.map +1 -1
  104. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  105. package/dist/ui/hooks/useAgentLoop.js +13 -4
  106. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  107. package/package.json +7 -6
  108. package/dist/core/tasks-store.d.ts +0 -24
  109. package/dist/core/tasks-store.d.ts.map +0 -1
  110. package/dist/core/tasks-store.js +0 -81
  111. package/dist/core/tasks-store.js.map +0 -1
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Encode a project cwd into a filesystem-safe session-directory name.
3
+ *
4
+ * This is the single source of truth for the cwd → folder-name mapping used by
5
+ * session persistence (`SessionManager`, legacy `session.ts`) and project
6
+ * discovery. Previously three copies drifted; the bug was repeated three times.
7
+ *
8
+ * ## Windows extended-length paths
9
+ *
10
+ * Windows canonicalizes working directories to extended-length form:
11
+ * `\\?\C:\Users\brams`. The `\\?\` prefix — and the `?` it introduces — are
12
+ * illegal in Windows folder names, so `mkdir` throws ENOENT and the sidecar
13
+ * dies on startup. We strip the prefix first so the encoded name is:
14
+ *
15
+ * 1. free of illegal characters, and
16
+ * 2. identical to what the plain (non-canonicalized) path produces.
17
+ *
18
+ * The UNC variant `\\?\UNC\server\share` is normalized to `\\server\share`
19
+ * so it matches a plain UNC path too.
20
+ *
21
+ * The encoding is intentionally one-way; display-time decoding
22
+ * (e.g. `serve-mode`) is best-effort.
23
+ */
24
+ export declare function encodeCwd(cwd: string): string;
25
+ //# sourceMappingURL=encode-cwd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-cwd.d.ts","sourceRoot":"","sources":["../../src/core/encode-cwd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiB7C"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Encode a project cwd into a filesystem-safe session-directory name.
3
+ *
4
+ * This is the single source of truth for the cwd → folder-name mapping used by
5
+ * session persistence (`SessionManager`, legacy `session.ts`) and project
6
+ * discovery. Previously three copies drifted; the bug was repeated three times.
7
+ *
8
+ * ## Windows extended-length paths
9
+ *
10
+ * Windows canonicalizes working directories to extended-length form:
11
+ * `\\?\C:\Users\brams`. The `\\?\` prefix — and the `?` it introduces — are
12
+ * illegal in Windows folder names, so `mkdir` throws ENOENT and the sidecar
13
+ * dies on startup. We strip the prefix first so the encoded name is:
14
+ *
15
+ * 1. free of illegal characters, and
16
+ * 2. identical to what the plain (non-canonicalized) path produces.
17
+ *
18
+ * The UNC variant `\\?\UNC\server\share` is normalized to `\\server\share`
19
+ * so it matches a plain UNC path too.
20
+ *
21
+ * The encoding is intentionally one-way; display-time decoding
22
+ * (e.g. `serve-mode`) is best-effort.
23
+ */
24
+ export function encodeCwd(cwd) {
25
+ return (cwd
26
+ // Normalize Windows extended-length prefixes so canonicalized and plain
27
+ // forms of the same path produce the same folder name.
28
+ // \\?\UNC\server\share → \\server\share
29
+ .replace(/^\\\\\?\\UNC\\/i, "\\\\")
30
+ // \\?\C:\… → C:\…
31
+ .replace(/^\\\\\?\\/i, "")
32
+ // Path separators → underscore
33
+ .replace(/[\\/]/g, "_")
34
+ // Strip every Windows-reserved character (<>:"|?*) — also covers the
35
+ // drive-letter colon on `C:\`.
36
+ .replace(/[<>:"|?*]/g, "")
37
+ // Drop a leading underscore left by a Unix root slash
38
+ .replace(/^_/, ""));
39
+ }
40
+ //# sourceMappingURL=encode-cwd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-cwd.js","sourceRoot":"","sources":["../../src/core/encode-cwd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,CACL,GAAG;QACD,wEAAwE;QACxE,uDAAuD;QACvD,4CAA4C;SAC3C,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,sBAAsB;SACrB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QAC1B,+BAA+B;SAC9B,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;QACvB,qEAAqE;QACrE,+BAA+B;SAC9B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QAC1B,sDAAsD;SACrD,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=encode-cwd.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-cwd.test.d.ts","sourceRoot":"","sources":["../../src/core/encode-cwd.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { encodeCwd } from "./encode-cwd.js";
3
+ describe("encodeCwd — Unix paths (unchanged behavior)", () => {
4
+ it("encodes a typical Unix project path", () => {
5
+ expect(encodeCwd("/Users/kenkai/Documents/ezcoder")).toBe("Users_kenkai_Documents_ezcoder");
6
+ });
7
+ it("drops only the leading slash, keeping interior underscores from the path", () => {
8
+ expect(encodeCwd("/home/user/project")).toBe("home_user_project");
9
+ });
10
+ it("encodes a Windows path with a drive letter (plain form)", () => {
11
+ expect(encodeCwd("C:\\Users\\brams")).toBe("C_Users_brams");
12
+ });
13
+ });
14
+ describe("encodeCwd — Windows extended-length prefix (the crash bug)", () => {
15
+ it("strips the \\\\?\\ prefix so ? never reaches the folder name", () => {
16
+ const encoded = encodeCwd("\\\\?\\C:\\Users\\brams");
17
+ // The whole point: no illegal characters survive.
18
+ expect(encoded).not.toMatch(/[<>:"|?*]/);
19
+ expect(encoded).toBe("C_Users_brams");
20
+ });
21
+ it("produces the SAME folder for canonicalized and plain Windows paths", () => {
22
+ const plain = encodeCwd("C:\\Users\\brams\\project");
23
+ const canonical = encodeCwd("\\\\?\\C:\\Users\\brams\\project");
24
+ expect(canonical).toBe(plain);
25
+ });
26
+ it("normalizes the UNC extended-length variant to match plain UNC", () => {
27
+ const plain = encodeCwd("\\\\server\\share\\project");
28
+ const canonical = encodeCwd("\\\\?\\UNC\\server\\share\\project");
29
+ expect(canonical).toBe(plain);
30
+ });
31
+ });
32
+ describe("encodeCwd — Windows-reserved characters are all stripped", () => {
33
+ // On Windows these characters are illegal in file/folder names:
34
+ // < > : " | ? *
35
+ // A path won't normally contain most of these, but the encoder must be a
36
+ // hard guarantee — `mkdir` will throw ENOENT/EINVAL if any survive.
37
+ const reserved = ["<", ">", ":", '"', "|", "?", "*"];
38
+ for (const ch of reserved) {
39
+ it(`strips "${ch}"`, () => {
40
+ const encoded = encodeCwd(`C:\\Users\\proj${ch}name`);
41
+ expect(encoded).not.toContain(ch);
42
+ });
43
+ }
44
+ });
45
+ describe("encodeCwd — produces a valid folder name (no mkdir failure)", () => {
46
+ it("never emits a name with a Windows-illegal character for realistic inputs", () => {
47
+ const inputs = [
48
+ "\\\\?\\C:\\Users\\brams",
49
+ "\\\\?\\C:\\Users\\brams\\gg-projects\\my-app",
50
+ "\\\\?\\UNC\\fileserver\\shared\\repo",
51
+ "/Users/kenkai/Documents/ezcoder",
52
+ "D:\\dev\\workspace",
53
+ ];
54
+ for (const input of inputs) {
55
+ const encoded = encodeCwd(input);
56
+ expect(encoded).toMatch(/^[^<>:"|?*\\/\s]+$/);
57
+ expect(encoded.length).toBeGreaterThan(0);
58
+ }
59
+ });
60
+ });
61
+ //# sourceMappingURL=encode-cwd.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-cwd.test.js","sourceRoot":"","sources":["../../src/core/encode-cwd.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC3D,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,OAAO,GAAG,SAAS,CAAC,yBAAyB,CAAC,CAAC;QACrD,kDAAkD;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,KAAK,GAAG,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAChE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,KAAK,GAAG,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAClE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0DAA0D,EAAE,GAAG,EAAE;IACxE,gEAAgE;IAChE,kBAAkB;IAClB,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAErD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE;YACxB,MAAM,OAAO,GAAG,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6DAA6D,EAAE,GAAG,EAAE;IAC3E,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,MAAM,GAAG;YACb,yBAAyB;YACzB,8CAA8C;YAC9C,sCAAsC;YACtC,iCAAiC;YACjC,oBAAoB;SACrB,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -45,6 +45,17 @@ export declare class MCPClientManager {
45
45
  */
46
46
  login(config: MCPServerConfig, onAuthorizationUrl: (url: string) => void, timeoutMs?: number): Promise<MCPLoginResult>;
47
47
  private connectServer;
48
+ /**
49
+ * Connect a single HTTP (Streamable HTTP or SSE) server and return the live
50
+ * client + transport. Transport selection:
51
+ * - `transport === "sse"` → legacy SSE directly (Playwright MCP `--port`).
52
+ * - otherwise → Streamable HTTP first, SSE fallback for older servers.
53
+ *
54
+ * An OAuth provider is attached only for REMOTE servers — localhost never
55
+ * needs OAuth and attaching it there is dead weight that can misdiagnose a
56
+ * protocol mismatch as a login requirement.
57
+ */
58
+ private connectHttp;
48
59
  dispose(): Promise<void>;
49
60
  }
50
61
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAelD,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;oFACgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAyB;IAElC,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKlE;;;;OAIG;IACG,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAuBjF;;;;OAIG;IACG,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoB/D;;;;;;;;;;OAUG;IACG,KAAK,CACT,MAAM,EAAE,eAAe,EACvB,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EACzC,SAAS,SAAU,GAClB,OAAO,CAAC,cAAc,CAAC;YAwHZ,aAAa;IA+HrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAU/B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAiBlD,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;oFACgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAyB;IAElC,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKlE;;;;OAIG;IACG,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAuBjF;;;;OAIG;IACG,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoB/D;;;;;;;;;;OAUG;IACG,KAAK,CACT,MAAM,EAAE,eAAe,EACvB,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EACzC,SAAS,SAAU,GAClB,OAAO,CAAC,cAAc,CAAC;YAwHZ,aAAa;IAgI3B;;;;;;;;;OASG;YACW,WAAW;IAiDnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAU/B"}
@@ -9,6 +9,8 @@ import os from "node:os";
9
9
  import { log } from "../logger.js";
10
10
  import { McpOAuthProvider, MCP_OAUTH_CALLBACK_PORT, MCP_OAUTH_CALLBACK_PATH, } from "./oauth-provider.js";
11
11
  import { McpOAuthStore } from "./oauth-store.js";
12
+ import { isLocalhost, alternateLoopback, isNetworkError } from "./loopback.js";
13
+ import { resolveStdioCommand } from "./resolve-stdio.js";
12
14
  export class MCPClientManager {
13
15
  servers = [];
14
16
  async connectAll(configs) {
@@ -201,9 +203,17 @@ export class MCPClientManager {
201
203
  // package.json names the same package as the MCP server makes
202
204
  // `npx -y <pkg>` self-resolve to the local source (no built bin
203
205
  // shim) and fail with "command not found".
206
+ //
207
+ // For an `npx -y <pkg>` of a package that ships as a ezcoder dependency
208
+ // (e.g. the default kencode-search), rewrite to a direct
209
+ // `node <binScript>` invocation. `npx` otherwise spawns a ~100 MB Node
210
+ // wrapper whose only job is to resolve+launch the real server, doubling
211
+ // memory per connection. Non-resolvable / non-npx commands pass through
212
+ // unchanged. Mirrors the LSP `process.execPath`+bin pattern.
213
+ const resolved = resolveStdioCommand(config.command, config.args);
204
214
  transport = new StdioClientTransport({
205
- command: config.command,
206
- args: config.args,
215
+ command: resolved.command,
216
+ args: resolved.args,
207
217
  env: { ...process.env, ...config.env },
208
218
  cwd: os.homedir(),
209
219
  stderr: "pipe",
@@ -229,38 +239,31 @@ export class MCPClientManager {
229
239
  }
230
240
  }
231
241
  else {
232
- // HTTP transport try StreamableHTTP first, fall back to SSE. An OAuth
233
- // provider (no `onRedirect`) is always attached: if the server has saved
234
- // tokens it connects/refreshes silently; if it needs auth the SDK throws
235
- // UnauthorizedError, which the caller maps to `requiresAuth`.
242
+ // HTTP transport (Streamable HTTP or SSE). See connectHttp for the
243
+ // transport-selection + auth logic.
236
244
  const url = new URL(config.url);
237
- const reqInit = config.headers ? { headers: config.headers } : undefined;
238
- const authProvider = new McpOAuthProvider({ serverName: config.name });
245
+ const isLocal = isLocalhost(url);
239
246
  try {
240
- transport = new StreamableHTTPClientTransport(url, {
241
- requestInit: reqInit,
242
- authProvider,
243
- });
244
- client = new Client({ name: "ezcoder", version: "1.0.0" });
245
- await client.connect(transport, { timeout });
247
+ const r = await this.connectHttp(url, config, isLocal, timeout);
248
+ client = r.client;
249
+ transport = r.transport;
246
250
  }
247
- catch (streamableErr) {
248
- // A 401 isn't a transport mismatch don't waste time on the SSE
249
- // fallback, just surface that login is required.
250
- if (isUnauthorized(streamableErr))
251
- throw streamableErr;
252
- log("INFO", "mcp", `StreamableHTTP failed for "${config.name}", trying SSE fallback`, {
253
- error: String(streamableErr),
254
- });
255
- transport = new SSEClientTransport(url, {
256
- eventSourceInit: config.headers
257
- ? { fetch: createHeaderFetch(config.headers) }
258
- : undefined,
259
- requestInit: reqInit,
260
- authProvider,
251
+ catch (err) {
252
+ // Windows 11 resolves `localhost` ::1 (IPv6) first; if the server
253
+ // binds IPv4-only (127.0.0.1) the first fetch gets ECONNREFUSED.
254
+ // Retry once with the alternate loopback hostname. macOS resolves
255
+ // both stacks so this only bites Windows/Linux in practice.
256
+ const alt = isLocal ? alternateLoopback(url.hostname) : undefined;
257
+ if (!alt || !isNetworkError(err))
258
+ throw err;
259
+ log("INFO", "mcp", `localhost connect failed for "${config.name}", retrying as ${alt}`, {
260
+ error: String(err),
261
261
  });
262
- client = new Client({ name: "ezcoder", version: "1.0.0" });
263
- await client.connect(transport, { timeout });
262
+ const altUrl = new URL(url);
263
+ altUrl.hostname = alt;
264
+ const r = await this.connectHttp(altUrl, config, isLocal, timeout);
265
+ client = r.client;
266
+ transport = r.transport;
264
267
  }
265
268
  }
266
269
  this.servers.push({ name: config.name, client, transport, lastCallTime: 0 });
@@ -309,6 +312,55 @@ export class MCPClientManager {
309
312
  };
310
313
  });
311
314
  }
315
+ /**
316
+ * Connect a single HTTP (Streamable HTTP or SSE) server and return the live
317
+ * client + transport. Transport selection:
318
+ * - `transport === "sse"` → legacy SSE directly (Playwright MCP `--port`).
319
+ * - otherwise → Streamable HTTP first, SSE fallback for older servers.
320
+ *
321
+ * An OAuth provider is attached only for REMOTE servers — localhost never
322
+ * needs OAuth and attaching it there is dead weight that can misdiagnose a
323
+ * protocol mismatch as a login requirement.
324
+ */
325
+ async connectHttp(url, config, isLocal, timeout) {
326
+ const reqInit = config.headers ? { headers: config.headers } : undefined;
327
+ const authProvider = isLocal ? undefined : new McpOAuthProvider({ serverName: config.name });
328
+ const sseTransport = () => new SSEClientTransport(url, {
329
+ eventSourceInit: config.headers ? { fetch: createHeaderFetch(config.headers) } : undefined,
330
+ requestInit: reqInit,
331
+ authProvider,
332
+ });
333
+ if (config.transport === "sse") {
334
+ const transport = sseTransport();
335
+ const client = new Client({ name: "ezcoder", version: "1.0.0" });
336
+ await client.connect(transport, { timeout });
337
+ return { client, transport };
338
+ }
339
+ try {
340
+ const transport = new StreamableHTTPClientTransport(url, {
341
+ requestInit: reqInit,
342
+ authProvider,
343
+ });
344
+ const client = new Client({ name: "ezcoder", version: "1.0.0" });
345
+ await client.connect(transport, { timeout });
346
+ return { client, transport };
347
+ }
348
+ catch (streamableErr) {
349
+ // For localhost, always try the SSE fallback — a 401 from localhost is
350
+ // almost certainly a protocol mismatch (e.g. Playwright MCP serves SSE),
351
+ // not an auth requirement. For remote servers, a 401 means OAuth is needed
352
+ // so skip the fallback and surface "requires login".
353
+ if (!isLocal && isUnauthorized(streamableErr))
354
+ throw streamableErr;
355
+ log("INFO", "mcp", `StreamableHTTP failed for "${config.name}", trying SSE fallback`, {
356
+ error: String(streamableErr),
357
+ });
358
+ const transport = sseTransport();
359
+ const client = new Client({ name: "ezcoder", version: "1.0.0" });
360
+ await client.connect(transport, { timeout });
361
+ return { client, transport };
362
+ }
363
+ }
312
364
  async dispose() {
313
365
  for (const server of this.servers) {
314
366
  try {
@@ -321,11 +373,6 @@ export class MCPClientManager {
321
373
  this.servers = [];
322
374
  }
323
375
  }
324
- /**
325
- * Create a custom fetch wrapper that injects extra headers into every request.
326
- * Used for SSEClientTransport's eventSourceInit to pass auth headers
327
- * on the initial SSE GET connection (which doesn't use requestInit).
328
- */
329
376
  /**
330
377
  * Turn a thrown connection error into a short human-readable string. Surfaces
331
378
  * the common rate-limit case explicitly; otherwise the underlying message.
@@ -359,6 +406,11 @@ function escapeHtml(value) {
359
406
  .replace(/>/g, "&gt;")
360
407
  .replace(/"/g, "&quot;");
361
408
  }
409
+ /**
410
+ * Create a custom fetch wrapper that injects extra headers into every request.
411
+ * Used for SSEClientTransport's eventSourceInit to pass auth headers
412
+ * on the initial SSE GET connection (which doesn't use requestInit).
413
+ */
362
414
  function createHeaderFetch(extraHeaders) {
363
415
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
364
416
  return (url, init) => {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/mcp/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/mcp/client.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export declare const DEFAULT_MCP_SERVERS: MCPServerConfig[];
8
8
  export declare function getMCPServers(provider: Provider, apiKey?: string): MCPServerConfig[];
9
9
  /**
10
10
  * Full startup set: provider defaults + user-configured servers from
11
- * ~/.ezcoder/mcp.json and ./.ezcoder/mcp.json. Provider defaults stay authoritative —
11
+ * ~/.ezcoder/mcp.json and ./.gg/mcp.json. Provider defaults stay authoritative —
12
12
  * a user server can only ADD a new name, never override a default like
13
13
  * `kencode-search`.
14
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8ClD,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAA6B,CAAC;AAE/E;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,CA4CpF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,eAAe,EAAE,CAAC,CAM5B"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAOhD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,CA4CpF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,eAAe,EAAE,CAAC,CAM5B"}
@@ -1,43 +1,12 @@
1
1
  import { loadServers } from "./store.js";
2
- import { createRequire } from "node:module";
3
- import { existsSync, readFileSync } from "node:fs";
4
- import path from "node:path";
5
- const KENCODE_PACKAGE = "@kenkaiiii/kencode-search";
6
- /**
7
- * Resolve the kencode-search MCP server config.
8
- *
9
- * Prefer the locally installed package (it's a hard dependency of `@prestyj/cli`)
10
- * and run its bin directly with the current Node binary. This avoids `npx`'s
11
- * registry resolution, which is slow on a cold cache and flaky under the
12
- * concurrency of many sub-agent/goal-worker child processes booting at once —
13
- * the root cause of the "Unknown tool: mcp__kencode-search__*" failures.
14
- *
15
- * `StdioClientTransport` forces the child's cwd to the user's homedir, so a
16
- * project-local `npx` wouldn't find the install anyway; resolving the absolute
17
- * bin path here works regardless of cwd. Falls back to `npx -y` only when the
18
- * package can't be resolved (e.g. a partial install).
19
- */
20
- function resolveKencodeServer() {
21
- try {
22
- const require = createRequire(import.meta.url);
23
- const pkgJsonPath = require.resolve(`${KENCODE_PACKAGE}/package.json`);
24
- const pkg = JSON.parse(readFileSync(pkgJsonPath, "utf8"));
25
- const binRel = typeof pkg.bin === "string"
26
- ? pkg.bin
27
- : (pkg.bin?.["kencode-search"] ?? Object.values(pkg.bin ?? {})[0] ?? pkg.main);
28
- if (binRel) {
29
- const binPath = path.join(path.dirname(pkgJsonPath), binRel);
30
- if (existsSync(binPath)) {
31
- return { name: "kencode-search", command: process.execPath, args: [binPath] };
32
- }
33
- }
34
- }
35
- catch {
36
- // Fall through to the npx fallback below.
37
- }
38
- return { name: "kencode-search", command: "npx", args: ["-y", KENCODE_PACKAGE] };
39
- }
40
- export const DEFAULT_MCP_SERVERS = [resolveKencodeServer()];
2
+ export const DEFAULT_MCP_SERVERS = [
3
+ // kencode-search ships as a ezcoder dependency, so `connectServer` rewrites
4
+ // this `npx -y` form to a direct `node <binScript>` invocation at connect
5
+ // time (see core/mcp/resolve-stdio.ts) — skipping the ~100 MB npx wrapper
6
+ // process. The `npx` form is kept here so it still works if the dependency
7
+ // is ever unavailable (graceful fallback to npx resolution).
8
+ { name: "kencode-search", command: "npx", args: ["-y", "@kenkaiiii/kencode-search"] },
9
+ ];
41
10
  /**
42
11
  * Get MCP servers for a specific provider.
43
12
  * GLM models get Z.AI MCP servers for vision, web search, web reading, and GitHub exploration.
@@ -83,7 +52,7 @@ export function getMCPServers(provider, apiKey) {
83
52
  }
84
53
  /**
85
54
  * Full startup set: provider defaults + user-configured servers from
86
- * ~/.ezcoder/mcp.json and ./.ezcoder/mcp.json. Provider defaults stay authoritative —
55
+ * ~/.ezcoder/mcp.json and ./.gg/mcp.json. Provider defaults stay authoritative —
87
56
  * a user server can only ADD a new name, never override a default like
88
57
  * `kencode-search`.
89
58
  */
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/core/mcp/defaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/core/mcp/defaults.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,2EAA2E;IAC3E,6DAA6D;IAC7D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,2BAA2B,CAAC,EAAE;CACtF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,MAAe;IAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC;IAEzC,IAAI,QAAQ,KAAK,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC;QAEtD,8CAA8C;QAC9C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC;YAChC,GAAG,EAAE;gBACH,YAAY,EAAE,MAAM;gBACpB,SAAS,EAAE,KAAK;aACjB;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,aAAa;QACb,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,GAAG,EAAE,+CAA+C;YACpD,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,4CAA4C;QAC5C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,GAAG,EAAE,yCAAyC;YAC9C,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,gCAAgC;QAChC,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,oCAAoC;YACzC,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAkB,EAClB,MAA0B,EAC1B,GAAW;IAEX,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,WAAW,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Localhost detection + loopback retry helpers for HTTP MCP connections.
3
+ *
4
+ * Extracted purely so the retry-decision logic is unit-testable on any platform
5
+ * (we have no Windows CI). Windows 11 resolves `localhost` → ::1 (IPv6) first,
6
+ * but many MCP servers (Playwright MCP `--port`, Node's default HTTP listen)
7
+ * bind to 127.0.0.1 (IPv4-only). The client's first `fetch` then hits a dead
8
+ * socket (ECONNREFUSED). These helpers decide whether a connect is local and,
9
+ * on failure, which alternate hostname to retry with.
10
+ */
11
+ /** Whether a URL points at the local machine (no OAuth, retry-eligible). */
12
+ export declare function isLocalhost(url: URL): boolean;
13
+ /**
14
+ * The alternate loopback hostname to try when a localhost connect fails, or
15
+ * `undefined` if the hostname isn't a known loopback (so a retry would be
16
+ * pointless). Maps between the IPv4 / IPv6 / name representations.
17
+ */
18
+ export declare function alternateLoopback(hostname: string): string | undefined;
19
+ /**
20
+ * Whether an error is a low-level network failure (worth a loopback retry) vs.
21
+ * a protocol/auth error (not — retrying won't help). Node's `fetch` surfaces
22
+ * these as `TypeError: fetch failed` wrapping a `cause` with a code like
23
+ * `ECONNREFUSED`; the SSE transport surfaces `SseError`. We check the message,
24
+ * the cause message, and the cause code.
25
+ */
26
+ export declare function isNetworkError(err: unknown): boolean;
27
+ //# sourceMappingURL=loopback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopback.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/loopback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAG7C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOtE;AAYD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAgBpD"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Localhost detection + loopback retry helpers for HTTP MCP connections.
3
+ *
4
+ * Extracted purely so the retry-decision logic is unit-testable on any platform
5
+ * (we have no Windows CI). Windows 11 resolves `localhost` → ::1 (IPv6) first,
6
+ * but many MCP servers (Playwright MCP `--port`, Node's default HTTP listen)
7
+ * bind to 127.0.0.1 (IPv4-only). The client's first `fetch` then hits a dead
8
+ * socket (ECONNREFUSED). These helpers decide whether a connect is local and,
9
+ * on failure, which alternate hostname to retry with.
10
+ */
11
+ /** Whether a URL points at the local machine (no OAuth, retry-eligible). */
12
+ export function isLocalhost(url) {
13
+ const h = normalizeHost(url.hostname);
14
+ return h === "localhost" || h === "127.0.0.1" || h === "::1" || h === "0.0.0.0";
15
+ }
16
+ /**
17
+ * The alternate loopback hostname to try when a localhost connect fails, or
18
+ * `undefined` if the hostname isn't a known loopback (so a retry would be
19
+ * pointless). Maps between the IPv4 / IPv6 / name representations.
20
+ */
21
+ export function alternateLoopback(hostname) {
22
+ const h = normalizeHost(hostname);
23
+ if (h === "localhost")
24
+ return "127.0.0.1";
25
+ if (h === "127.0.0.1")
26
+ return "localhost";
27
+ if (h === "::1")
28
+ return "127.0.0.1";
29
+ if (h === "0.0.0.0")
30
+ return "127.0.0.1";
31
+ return undefined;
32
+ }
33
+ /**
34
+ * Lowercase + strip the surrounding brackets Node's URL API keeps on IPv6
35
+ * hostnames (e.g. `[::1]` → `::1`) so comparisons are uniform.
36
+ */
37
+ function normalizeHost(hostname) {
38
+ let h = hostname.toLowerCase();
39
+ if (h.startsWith("[") && h.endsWith("]"))
40
+ h = h.slice(1, -1);
41
+ return h;
42
+ }
43
+ /**
44
+ * Whether an error is a low-level network failure (worth a loopback retry) vs.
45
+ * a protocol/auth error (not — retrying won't help). Node's `fetch` surfaces
46
+ * these as `TypeError: fetch failed` wrapping a `cause` with a code like
47
+ * `ECONNREFUSED`; the SSE transport surfaces `SseError`. We check the message,
48
+ * the cause message, and the cause code.
49
+ */
50
+ export function isNetworkError(err) {
51
+ if (err == null)
52
+ return false;
53
+ const msg = err instanceof Error ? err.message : String(err);
54
+ const cause = err.cause;
55
+ const text = `${msg} ${cause?.message ?? ""} ${cause?.code ?? ""}`.toLowerCase();
56
+ return (text.includes("econnrefused") ||
57
+ text.includes("econnreset") ||
58
+ text.includes("enotfound") ||
59
+ text.includes("eai_again") ||
60
+ text.includes("fetch failed") ||
61
+ text.includes("failed to fetch") ||
62
+ text.includes("connection refused") ||
63
+ text.includes("network request failed") ||
64
+ text.includes("sse error"));
65
+ }
66
+ //# sourceMappingURL=loopback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopback.js","sourceRoot":"","sources":["../../../src/core/mcp/loopback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4EAA4E;AAC5E,MAAM,UAAU,WAAW,CAAC,GAAQ;IAClC,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,SAAS,CAAC;AAClF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC1C,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC1C,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,WAAW,CAAC;IACpC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,QAAgB;IACrC,IAAI,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAI,GAAuD,CAAC,KAAK,CAAC;IAC7E,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,OAAO,IAAI,EAAE,IAAI,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IACjF,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loopback.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopback.test.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/loopback.test.ts"],"names":[],"mappings":""}