@tostudy-ai/mcp-setup 1.0.2 → 1.1.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.
Files changed (47) hide show
  1. package/README.md +1 -1
  2. package/dist/__tests__/e2e-wizard-flow.test.d.ts.map +1 -1
  3. package/dist/__tests__/e2e-wizard-flow.test.js +128 -117
  4. package/dist/__tests__/e2e-wizard-flow.test.js.map +1 -1
  5. package/dist/__tests__/ide-handlers.test.js +15 -11
  6. package/dist/__tests__/ide-handlers.test.js.map +1 -1
  7. package/dist/__tests__/install-command.test.js +106 -95
  8. package/dist/__tests__/install-command.test.js.map +1 -1
  9. package/dist/config.d.ts +15 -4
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +79 -29
  12. package/dist/config.js.map +1 -1
  13. package/dist/diagnose.d.ts +1 -1
  14. package/dist/diagnose.d.ts.map +1 -1
  15. package/dist/diagnose.js +154 -164
  16. package/dist/diagnose.js.map +1 -1
  17. package/dist/ide-handlers/antigravity.js +1 -1
  18. package/dist/ide-handlers/antigravity.js.map +1 -1
  19. package/dist/ide-handlers/base.d.ts +8 -8
  20. package/dist/ide-handlers/base.d.ts.map +1 -1
  21. package/dist/ide-handlers/base.js +29 -4
  22. package/dist/ide-handlers/base.js.map +1 -1
  23. package/dist/ide-handlers/claude-code.js +1 -1
  24. package/dist/ide-handlers/claude-code.js.map +1 -1
  25. package/dist/ide-handlers/codex.js +1 -1
  26. package/dist/ide-handlers/codex.js.map +1 -1
  27. package/dist/ide-handlers/cursor.js +1 -1
  28. package/dist/ide-handlers/cursor.js.map +1 -1
  29. package/dist/ide-handlers/desktop.d.ts +3 -3
  30. package/dist/ide-handlers/desktop.d.ts.map +1 -1
  31. package/dist/ide-handlers/desktop.js +32 -8
  32. package/dist/ide-handlers/desktop.js.map +1 -1
  33. package/dist/ide-handlers/manual.js +1 -1
  34. package/dist/ide-handlers/manual.js.map +1 -1
  35. package/dist/ide-handlers/opencode.js +1 -1
  36. package/dist/ide-handlers/opencode.js.map +1 -1
  37. package/dist/ide-handlers/vscode.js +1 -1
  38. package/dist/ide-handlers/vscode.js.map +1 -1
  39. package/dist/ide-handlers/windsurf.js +1 -1
  40. package/dist/ide-handlers/windsurf.js.map +1 -1
  41. package/dist/index.js +198 -156
  42. package/dist/index.js.map +1 -1
  43. package/dist/repair.d.ts +1 -1
  44. package/dist/repair.d.ts.map +1 -1
  45. package/dist/repair.js +213 -168
  46. package/dist/repair.js.map +1 -1
  47. package/package.json +5 -5
@@ -35,7 +35,7 @@ export class AntigravityHandler {
35
35
  }
36
36
  }
37
37
  const mcpServers = config.mcpServers ?? {};
38
- mcpServers.tostudy = buildTostudyServerEntry(apiKey, mcpUrl);
38
+ mcpServers.tostudy = buildTostudyServerEntry(apiKey, mcpUrl, this.id);
39
39
  config.mcpServers = mcpServers;
40
40
  writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/ide-handlers/antigravity.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,kBAAkB;IAC7B,EAAE,GAAG,aAAa,CAAC;IACnB,IAAI,GAAG,aAAa,CAAC;IAErB,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YACrD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAI,MAAM,CAAC,UAAsC,IAAI,EAAE,CAAC;QACxE,UAAU,CAAC,OAAO,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAE/B,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/ide-handlers/antigravity.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,kBAAkB;IAC7B,EAAE,GAAG,aAAa,CAAC;IACnB,IAAI,GAAG,aAAa,CAAC;IAErB,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YACrD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAI,MAAM,CAAC,UAAsC,IAAI,EAAE,CAAC;QACxE,UAAU,CAAC,OAAO,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAE/B,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -1,9 +1,4 @@
1
- /**
2
- * IDE Handler Interface
3
- *
4
- * Each IDE has a handler that knows how to write MCP config
5
- * to the correct location in the correct format.
6
- */
1
+ type ClientOsHeader = 'macos' | 'windows' | 'linux';
7
2
  export interface IDEHandler {
8
3
  /** Handler identifier (matches IDEMethod type) */
9
4
  id: string;
@@ -21,16 +16,21 @@ export interface IDEHandler {
21
16
  /**
22
17
  * Build the mcp-remote args array used by most IDE handlers.
23
18
  */
24
- export declare function buildMcpRemoteArgs(apiKey: string, mcpUrl: string): string[];
19
+ export declare function buildMcpRemoteArgs(apiKey: string, mcpUrl: string, ide: string): string[];
25
20
  /**
26
21
  * Build the tostudy MCP server entry for stdio-based configs.
27
22
  */
28
- export declare function buildTostudyServerEntry(apiKey: string, mcpUrl: string): {
23
+ export declare function buildTostudyServerEntry(apiKey: string, mcpUrl: string, ide: string): {
29
24
  command: string;
30
25
  args: string[];
31
26
  };
27
+ /**
28
+ * Normalize current OS to the MCP metadata header format.
29
+ */
30
+ export declare function getClientOsHeaderValue(): ClientOsHeader;
32
31
  /**
33
32
  * Verify connection by hitting the platform heartbeat endpoint.
34
33
  */
35
34
  export declare function verifyHeartbeat(apiKey: string, platformUrl: string): Promise<boolean>;
35
+ export {};
36
36
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/ide-handlers/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,uCAAuC;IACvC,aAAa,IAAI,MAAM,CAAC;IACxB,0CAA0C;IAC1C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,sCAAsC;IACtC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;EAKrE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAc3F"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/ide-handlers/base.ts"],"names":[],"mappings":"AAQA,KAAK,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,uCAAuC;IACvC,aAAa,IAAI,MAAM,CAAC;IACxB,0CAA0C;IAC1C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,sCAAsC;IACtC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAcxF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;;;EAKlF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,cAAc,CASvD;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAc3F"}
@@ -4,21 +4,46 @@
4
4
  * Each IDE has a handler that knows how to write MCP config
5
5
  * to the correct location in the correct format.
6
6
  */
7
+ import { platform } from 'node:os';
7
8
  /**
8
9
  * Build the mcp-remote args array used by most IDE handlers.
9
10
  */
10
- export function buildMcpRemoteArgs(apiKey, mcpUrl) {
11
- return ['-y', 'mcp-remote', `${mcpUrl}/mcp`, '--header', `Authorization:Bearer ${apiKey}`];
11
+ export function buildMcpRemoteArgs(apiKey, mcpUrl, ide) {
12
+ const osHeader = getClientOsHeaderValue();
13
+ return [
14
+ '-y',
15
+ 'mcp-remote',
16
+ `${mcpUrl}/mcp`,
17
+ '--header',
18
+ `Authorization:Bearer ${apiKey}`,
19
+ '--header',
20
+ `X-Tostudy-Client-IDE:${ide}`,
21
+ '--header',
22
+ `X-Tostudy-Client-OS:${osHeader}`,
23
+ ];
12
24
  }
13
25
  /**
14
26
  * Build the tostudy MCP server entry for stdio-based configs.
15
27
  */
16
- export function buildTostudyServerEntry(apiKey, mcpUrl) {
28
+ export function buildTostudyServerEntry(apiKey, mcpUrl, ide) {
17
29
  return {
18
30
  command: 'npx',
19
- args: buildMcpRemoteArgs(apiKey, mcpUrl),
31
+ args: buildMcpRemoteArgs(apiKey, mcpUrl, ide),
20
32
  };
21
33
  }
34
+ /**
35
+ * Normalize current OS to the MCP metadata header format.
36
+ */
37
+ export function getClientOsHeaderValue() {
38
+ switch (platform()) {
39
+ case 'darwin':
40
+ return 'macos';
41
+ case 'win32':
42
+ return 'windows';
43
+ default:
44
+ return 'linux';
45
+ }
46
+ }
22
47
  /**
23
48
  * Verify connection by hitting the platform heartbeat endpoint.
24
49
  */
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/ide-handlers/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,MAAc;IAC/D,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,EAAE,UAAU,EAAE,wBAAwB,MAAM,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,MAAc;IACpE,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC;KACzC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,WAAmB;IACvE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,oBAAoB,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;gBACnC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;SAC9D,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/ide-handlers/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAmBnC;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,MAAc,EAAE,GAAW;IAC5E,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAE1C,OAAO;QACL,IAAI;QACJ,YAAY;QACZ,GAAG,MAAM,MAAM;QACf,UAAU;QACV,wBAAwB,MAAM,EAAE;QAChC,UAAU;QACV,wBAAwB,GAAG,EAAE;QAC7B,UAAU;QACV,uBAAuB,QAAQ,EAAE;KAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,MAAc,EAAE,GAAW;IACjF,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,QAAQ,QAAQ,EAAE,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,WAAmB;IACvE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,oBAAoB,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;gBACnC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;SAC9D,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -27,7 +27,7 @@ export class ClaudeCodeHandler {
27
27
  return 'Terminal (claude mcp add)';
28
28
  }
29
29
  async writeConfig(apiKey, mcpUrl) {
30
- const args = buildMcpRemoteArgs(apiKey, mcpUrl);
30
+ const args = buildMcpRemoteArgs(apiKey, mcpUrl, this.id);
31
31
  try {
32
32
  // First try to remove existing entry (ignore errors if it doesn't exist)
33
33
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/ide-handlers/claude-code.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAmB,kBAAkB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjF,MAAM,OAAO,iBAAiB;IAC5B,EAAE,GAAG,aAAa,CAAC;IACnB,IAAI,GAAG,aAAa,CAAC;IAErB,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACvD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,yEAAyE;YACzE,IAAI,CAAC;gBACH,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;YAED,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAChG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,6DAA6D;gBAC7D,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/ide-handlers/claude-code.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAmB,kBAAkB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjF,MAAM,OAAO,iBAAiB;IAC5B,EAAE,GAAG,aAAa,CAAC;IACnB,IAAI,GAAG,aAAa,CAAC;IAErB,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACvD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,yEAAyE;YACzE,IAAI,CAAC;gBACH,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;YAED,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAChG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,6DAA6D;gBAC7D,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -30,7 +30,7 @@ export class CodexHandler {
30
30
  return join(homedir(), '.codex', 'config.toml');
31
31
  }
32
32
  async writeConfig(apiKey, mcpUrl) {
33
- const args = buildMcpRemoteArgs(apiKey, mcpUrl);
33
+ const args = buildMcpRemoteArgs(apiKey, mcpUrl, this.id);
34
34
  try {
35
35
  // First try to remove existing entry (ignore errors if it doesn't exist)
36
36
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/ide-handlers/codex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAmB,kBAAkB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjF,MAAM,OAAO,YAAY;IACvB,EAAE,GAAG,OAAO,CAAC;IACb,IAAI,GAAG,OAAO,CAAC;IAEf,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,yEAAyE;YACzE,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3E,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;YAED,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,sDAAsD;gBACtD,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/ide-handlers/codex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAmB,kBAAkB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjF,MAAM,OAAO,YAAY;IACvB,EAAE,GAAG,OAAO,CAAC;IACb,IAAI,GAAG,OAAO,CAAC;IAEf,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,yEAAyE;YACzE,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3E,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;YAED,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,sDAAsD;gBACtD,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -50,7 +50,7 @@ export class CursorHandler {
50
50
  }
51
51
  // Merge - only update tostudy entry
52
52
  const mcpServers = config.mcpServers ?? {};
53
- mcpServers['tostudy'] = buildTostudyServerEntry(apiKey, mcpUrl);
53
+ mcpServers['tostudy'] = buildTostudyServerEntry(apiKey, mcpUrl, this.id);
54
54
  config.mcpServers = mcpServers;
55
55
  writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
56
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/ide-handlers/cursor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,aAAa;IACxB,EAAE,GAAG,QAAQ,CAAC;IACd,IAAI,GAAG,QAAQ,CAAC;IAEhB,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;QAEtB,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,QAAQ;gBACX,OAAO,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;oBACpD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;YACzD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAChF,OAAO,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;YAC5E,CAAC;YACD,KAAK,OAAO;gBACV,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YAC3C;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED,aAAa;QACX,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,0BAA0B;QAC1B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,iDAAiD;QACjD,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,MAAM,UAAU,GAAI,MAAM,CAAC,UAAsC,IAAI,EAAE,CAAC;QACxE,UAAU,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAE/B,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/ide-handlers/cursor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,aAAa;IACxB,EAAE,GAAG,QAAQ,CAAC;IACd,IAAI,GAAG,QAAQ,CAAC;IAEhB,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;QAEtB,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,QAAQ;gBACX,OAAO,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;oBACpD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;YACzD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAChF,OAAO,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;YAC5E,CAAC;YACD,KAAK,OAAO;gBACV,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YAC3C;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED,aAAa;QACX,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,0BAA0B;QAC1B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,iDAAiD;QACjD,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,MAAM,UAAU,GAAI,MAAM,CAAC,UAAsC,IAAI,EAAE,CAAC;QACxE,UAAU,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAE/B,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Claude Desktop IDE Handler
3
3
  *
4
- * Reuses existing addTostudyMcpServer() from config.ts which writes
5
- * to ~/Library/Application Support/Claude/claude_desktop_config.json
4
+ * Writes to ~/Library/Application Support/Claude/claude_desktop_config.json
5
+ * using stdio transport (command + args) via mcp-remote.
6
6
  */
7
- import { type IDEHandler } from './base.js';
7
+ import { type IDEHandler } from "./base.js";
8
8
  export declare class DesktopHandler implements IDEHandler {
9
9
  id: string;
10
10
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"desktop.d.ts","sourceRoot":"","sources":["../../src/ide-handlers/desktop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,WAAW,CAAC;AAO7D,qBAAa,cAAe,YAAW,UAAU;IAC/C,EAAE,SAAa;IACf,IAAI,SAAoB;IAElB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,aAAa,IAAI,MAAM;IAIjB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAG/D"}
1
+ {"version":3,"file":"desktop.d.ts","sourceRoot":"","sources":["../../src/ide-handlers/desktop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,KAAK,UAAU,EAA4C,MAAM,WAAW,CAAC;AAGtF,qBAAa,cAAe,YAAW,UAAU;IAC/C,EAAE,SAAa;IACf,IAAI,SAAoB;IAElB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,aAAa,IAAI,MAAM;IAIjB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B1D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAG/D"}
@@ -1,14 +1,16 @@
1
1
  /**
2
2
  * Claude Desktop IDE Handler
3
3
  *
4
- * Reuses existing addTostudyMcpServer() from config.ts which writes
5
- * to ~/Library/Application Support/Claude/claude_desktop_config.json
4
+ * Writes to ~/Library/Application Support/Claude/claude_desktop_config.json
5
+ * using stdio transport (command + args) via mcp-remote.
6
6
  */
7
- import { verifyHeartbeat } from './base.js';
8
- import { isClaudeInstalled, getClaudeConfigPath, addTostudyMcpServer, } from '../config.js';
7
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, copyFileSync } from "node:fs";
8
+ import { dirname } from "node:path";
9
+ import { buildTostudyServerEntry, verifyHeartbeat } from "./base.js";
10
+ import { isClaudeInstalled, getClaudeConfigPath } from "../config.js";
9
11
  export class DesktopHandler {
10
- id = 'desktop';
11
- name = 'Claude Desktop';
12
+ id = "desktop";
13
+ name = "Claude Desktop";
12
14
  async detect() {
13
15
  return isClaudeInstalled();
14
16
  }
@@ -16,8 +18,30 @@ export class DesktopHandler {
16
18
  return getClaudeConfigPath();
17
19
  }
18
20
  async writeConfig(apiKey, mcpUrl) {
19
- // Reuse existing config writer - it handles read-then-merge
20
- addTostudyMcpServer(apiKey, mcpUrl);
21
+ const configPath = this.getConfigPath();
22
+ const configDir = dirname(configPath);
23
+ // Ensure directory exists
24
+ if (!existsSync(configDir)) {
25
+ mkdirSync(configDir, { recursive: true });
26
+ }
27
+ // Read existing config to preserve other servers and preferences
28
+ let config = {};
29
+ if (existsSync(configPath)) {
30
+ try {
31
+ config = JSON.parse(readFileSync(configPath, "utf-8"));
32
+ }
33
+ catch {
34
+ // Start fresh if config is corrupted
35
+ }
36
+ // Backup existing config
37
+ const backupPath = `${configPath}.backup`;
38
+ copyFileSync(configPath, backupPath);
39
+ }
40
+ // Merge - only update tostudy entry using stdio transport (command + args)
41
+ const mcpServers = config.mcpServers ?? {};
42
+ mcpServers["tostudy"] = buildTostudyServerEntry(apiKey, mcpUrl, this.id);
43
+ config.mcpServers = mcpServers;
44
+ writeFileSync(configPath, JSON.stringify(config, null, 2), "utf-8");
21
45
  }
22
46
  async verify(apiKey, mcpUrl) {
23
47
  return verifyHeartbeat(apiKey, mcpUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../src/ide-handlers/desktop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAmB,eAAe,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,MAAM,OAAO,cAAc;IACzB,EAAE,GAAG,SAAS,CAAC;IACf,IAAI,GAAG,gBAAgB,CAAC;IAExB,KAAK,CAAC,MAAM;QACV,OAAO,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED,aAAa;QACX,OAAO,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,4DAA4D;QAC5D,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../src/ide-handlers/desktop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,OAAO,cAAc;IACzB,EAAE,GAAG,SAAS,CAAC;IACf,IAAI,GAAG,gBAAgB,CAAC;IAExB,KAAK,CAAC,MAAM;QACV,OAAO,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED,aAAa;QACX,OAAO,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,0BAA0B;QAC1B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,iEAAiE;QACjE,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;YAED,yBAAyB;YACzB,MAAM,UAAU,GAAG,GAAG,UAAU,SAAS,CAAC;YAC1C,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QAED,2EAA2E;QAC3E,MAAM,UAAU,GAAI,MAAM,CAAC,UAAsC,IAAI,EAAE,CAAC;QACxE,UAAU,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAE/B,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -18,7 +18,7 @@ export class ManualHandler {
18
18
  async writeConfig(apiKey, mcpUrl) {
19
19
  const config = {
20
20
  mcpServers: {
21
- tostudy: buildTostudyServerEntry(apiKey, mcpUrl),
21
+ tostudy: buildTostudyServerEntry(apiKey, mcpUrl, this.id),
22
22
  },
23
23
  };
24
24
  process.stdout.write('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/ide-handlers/manual.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,aAAa;IACxB,EAAE,GAAG,QAAQ,CAAC;IACd,IAAI,GAAG,QAAQ,CAAC;IAEhB,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,CAAC,mBAAmB;IAClC,CAAC;IAED,aAAa;QACX,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,MAAM,GAAG;YACb,UAAU,EAAE;gBACV,OAAO,EAAE,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC;aACjD;SACF,CAAC;QAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/ide-handlers/manual.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,aAAa;IACxB,EAAE,GAAG,QAAQ,CAAC;IACd,IAAI,GAAG,QAAQ,CAAC;IAEhB,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,CAAC,mBAAmB;IAClC,CAAC;IAED,aAAa;QACX,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,MAAM,GAAG;YACb,UAAU,EAAE;gBACV,OAAO,EAAE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;aAC1D;SACF,CAAC;QAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -46,7 +46,7 @@ export class OpenCodeHandler {
46
46
  }
47
47
  // OpenCode uses "mcp" key
48
48
  const mcp = config.mcp ?? {};
49
- mcp['tostudy'] = buildTostudyServerEntry(apiKey, mcpUrl);
49
+ mcp['tostudy'] = buildTostudyServerEntry(apiKey, mcpUrl, this.id);
50
50
  config.mcp = mcp;
51
51
  writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
52
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/ide-handlers/opencode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,eAAe;IAC1B,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,UAAU,CAAC;IAElB,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,GAAG,GAAI,MAAM,CAAC,GAA+B,IAAI,EAAE,CAAC;QAC1D,GAAG,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QAEjB,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/ide-handlers/opencode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,eAAe;IAC1B,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,UAAU,CAAC;IAElB,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,GAAG,GAAI,MAAM,CAAC,GAA+B,IAAI,EAAE,CAAC;QAC1D,GAAG,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QAEjB,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -51,7 +51,7 @@ export class VSCodeHandler {
51
51
  }
52
52
  // VS Code uses "servers" key
53
53
  const servers = config.servers ?? {};
54
- servers['tostudy'] = buildTostudyServerEntry(apiKey, mcpUrl);
54
+ servers['tostudy'] = buildTostudyServerEntry(apiKey, mcpUrl, this.id);
55
55
  config.servers = servers;
56
56
  writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
57
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../src/ide-handlers/vscode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../src/ide-handlers/vscode.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export class WindsurfHandler {
35
35
  }
36
36
  }
37
37
  const mcpServers = config.mcpServers ?? {};
38
- mcpServers.tostudy = buildTostudyServerEntry(apiKey, mcpUrl);
38
+ mcpServers.tostudy = buildTostudyServerEntry(apiKey, mcpUrl, this.id);
39
39
  config.mcpServers = mcpServers;
40
40
  writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"windsurf.js","sourceRoot":"","sources":["../../src/ide-handlers/windsurf.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,eAAe;IAC1B,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,UAAU,CAAC;IAElB,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACnD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAI,MAAM,CAAC,UAAsC,IAAI,EAAE,CAAC;QACxE,UAAU,CAAC,OAAO,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAE/B,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"windsurf.js","sourceRoot":"","sources":["../../src/ide-handlers/windsurf.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,eAAe;IAC1B,EAAE,GAAG,UAAU,CAAC;IAChB,IAAI,GAAG,UAAU,CAAC;IAElB,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACnD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAI,MAAM,CAAC,UAAsC,IAAI,EAAE,CAAC;QACxE,UAAU,CAAC,OAAO,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAE/B,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}