@fractalizer/mcp-cli 0.3.17 → 1.0.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 (120) hide show
  1. package/README.md +158 -266
  2. package/dist/commands/connect.command.d.ts +18 -15
  3. package/dist/commands/connect.command.d.ts.map +1 -1
  4. package/dist/commands/connect.command.js +66 -40
  5. package/dist/commands/connect.command.js.map +1 -1
  6. package/dist/commands/disconnect.command.d.ts +5 -17
  7. package/dist/commands/disconnect.command.d.ts.map +1 -1
  8. package/dist/commands/disconnect.command.js +4 -15
  9. package/dist/commands/disconnect.command.js.map +1 -1
  10. package/dist/commands/doctor.command.d.ts +34 -0
  11. package/dist/commands/doctor.command.d.ts.map +1 -0
  12. package/dist/commands/doctor.command.js +321 -0
  13. package/dist/commands/doctor.command.js.map +1 -0
  14. package/dist/commands/index.d.ts +1 -0
  15. package/dist/commands/index.d.ts.map +1 -1
  16. package/dist/commands/index.js +2 -0
  17. package/dist/commands/index.js.map +1 -1
  18. package/dist/commands/list.command.d.ts +4 -9
  19. package/dist/commands/list.command.d.ts.map +1 -1
  20. package/dist/commands/list.command.js +1 -5
  21. package/dist/commands/list.command.js.map +1 -1
  22. package/dist/commands/status.command.d.ts +6 -13
  23. package/dist/commands/status.command.d.ts.map +1 -1
  24. package/dist/commands/status.command.js +15 -12
  25. package/dist/commands/status.command.js.map +1 -1
  26. package/dist/commands/validate.command.d.ts +6 -11
  27. package/dist/commands/validate.command.d.ts.map +1 -1
  28. package/dist/commands/validate.command.js +15 -19
  29. package/dist/commands/validate.command.js.map +1 -1
  30. package/dist/connectors/base/base-connector.d.ts +31 -55
  31. package/dist/connectors/base/base-connector.d.ts.map +1 -1
  32. package/dist/connectors/base/base-connector.js +71 -57
  33. package/dist/connectors/base/base-connector.js.map +1 -1
  34. package/dist/connectors/base/configurable-connector.d.ts +89 -24
  35. package/dist/connectors/base/configurable-connector.d.ts.map +1 -1
  36. package/dist/connectors/base/configurable-connector.js +266 -23
  37. package/dist/connectors/base/configurable-connector.js.map +1 -1
  38. package/dist/connectors/base/connector.interface.d.ts +29 -20
  39. package/dist/connectors/base/connector.interface.d.ts.map +1 -1
  40. package/dist/connectors/base/index.d.ts +0 -1
  41. package/dist/connectors/base/index.d.ts.map +1 -1
  42. package/dist/connectors/base/index.js +0 -1
  43. package/dist/connectors/base/index.js.map +1 -1
  44. package/dist/connectors/claude-code/claude-code.connector.d.ts +100 -21
  45. package/dist/connectors/claude-code/claude-code.connector.d.ts.map +1 -1
  46. package/dist/connectors/claude-code/claude-code.connector.js +221 -40
  47. package/dist/connectors/claude-code/claude-code.connector.js.map +1 -1
  48. package/dist/connectors/connector-factory.d.ts +15 -15
  49. package/dist/connectors/connector-factory.d.ts.map +1 -1
  50. package/dist/connectors/connector-factory.js +61 -18
  51. package/dist/connectors/connector-factory.js.map +1 -1
  52. package/dist/connectors/index.d.ts +0 -4
  53. package/dist/connectors/index.d.ts.map +1 -1
  54. package/dist/connectors/index.js +2 -8
  55. package/dist/connectors/index.js.map +1 -1
  56. package/dist/connectors/registry.d.ts +20 -27
  57. package/dist/connectors/registry.d.ts.map +1 -1
  58. package/dist/connectors/registry.js +34 -34
  59. package/dist/connectors/registry.js.map +1 -1
  60. package/dist/tsconfig.tsbuildinfo +1 -1
  61. package/dist/types/{base.types.d.ts → client.types.d.ts} +30 -30
  62. package/dist/types/client.types.d.ts.map +1 -0
  63. package/dist/types/client.types.js +6 -0
  64. package/dist/types/client.types.js.map +1 -0
  65. package/dist/types/doctor.types.d.ts +91 -0
  66. package/dist/types/doctor.types.d.ts.map +1 -0
  67. package/dist/types/doctor.types.js +12 -0
  68. package/dist/types/doctor.types.js.map +1 -0
  69. package/dist/types/launch.types.d.ts +59 -0
  70. package/dist/types/launch.types.d.ts.map +1 -0
  71. package/dist/types/launch.types.js +6 -0
  72. package/dist/types/launch.types.js.map +1 -0
  73. package/dist/types.d.ts +23 -14
  74. package/dist/types.d.ts.map +1 -1
  75. package/dist/types.js +9 -2
  76. package/dist/types.js.map +1 -1
  77. package/dist/utils/command-executor.d.ts +39 -3
  78. package/dist/utils/command-executor.d.ts.map +1 -1
  79. package/dist/utils/command-executor.js +95 -8
  80. package/dist/utils/command-executor.js.map +1 -1
  81. package/dist/utils/config-manager.d.ts +25 -42
  82. package/dist/utils/config-manager.d.ts.map +1 -1
  83. package/dist/utils/config-manager.js +21 -49
  84. package/dist/utils/config-manager.js.map +1 -1
  85. package/dist/utils/index.d.ts +1 -0
  86. package/dist/utils/index.d.ts.map +1 -1
  87. package/dist/utils/index.js +1 -0
  88. package/dist/utils/index.js.map +1 -1
  89. package/dist/utils/interactive-prompter.d.ts +16 -64
  90. package/dist/utils/interactive-prompter.d.ts.map +1 -1
  91. package/dist/utils/interactive-prompter.js +12 -65
  92. package/dist/utils/interactive-prompter.js.map +1 -1
  93. package/dist/utils/launch-spec-helpers.d.ts +38 -0
  94. package/dist/utils/launch-spec-helpers.d.ts.map +1 -0
  95. package/dist/utils/launch-spec-helpers.js +131 -0
  96. package/dist/utils/launch-spec-helpers.js.map +1 -0
  97. package/package.json +2 -2
  98. package/dist/connectors/base/file-based-connector.d.ts +0 -97
  99. package/dist/connectors/base/file-based-connector.d.ts.map +0 -1
  100. package/dist/connectors/base/file-based-connector.js +0 -185
  101. package/dist/connectors/base/file-based-connector.js.map +0 -1
  102. package/dist/connectors/claude-desktop/claude-desktop.connector.d.ts +0 -38
  103. package/dist/connectors/claude-desktop/claude-desktop.connector.d.ts.map +0 -1
  104. package/dist/connectors/claude-desktop/claude-desktop.connector.js +0 -68
  105. package/dist/connectors/claude-desktop/claude-desktop.connector.js.map +0 -1
  106. package/dist/connectors/codex/codex.connector.d.ts +0 -51
  107. package/dist/connectors/codex/codex.connector.d.ts.map +0 -1
  108. package/dist/connectors/codex/codex.connector.js +0 -76
  109. package/dist/connectors/codex/codex.connector.js.map +0 -1
  110. package/dist/connectors/gemini/gemini.connector.d.ts +0 -41
  111. package/dist/connectors/gemini/gemini.connector.d.ts.map +0 -1
  112. package/dist/connectors/gemini/gemini.connector.js +0 -61
  113. package/dist/connectors/gemini/gemini.connector.js.map +0 -1
  114. package/dist/connectors/qwen/qwen.connector.d.ts +0 -41
  115. package/dist/connectors/qwen/qwen.connector.d.ts.map +0 -1
  116. package/dist/connectors/qwen/qwen.connector.js +0 -61
  117. package/dist/connectors/qwen/qwen.connector.js.map +0 -1
  118. package/dist/types/base.types.d.ts.map +0 -1
  119. package/dist/types/base.types.js +0 -6
  120. package/dist/types/base.types.js.map +0 -1
@@ -1,20 +1,66 @@
1
1
  /**
2
- * Фабрика коннекторов для известных MCP клиентов
2
+ * Фабрика коннекторов для известных MCP клиентов.
3
3
  *
4
4
  * Централизует конфигурацию клиентов и устраняет дублирование кода.
5
5
  */
6
6
  import * as os from 'node:os';
7
7
  import * as path from 'node:path';
8
8
  import { ConfigurableConnector, } from './base/configurable-connector.js';
9
+ /**
10
+ * Platform-aware путь к конфигу Claude Desktop.
11
+ *
12
+ * Вычисляется лениво (через функцию), чтобы избежать обращений к `os.platform()`
13
+ * при импорте модуля и упростить тестирование.
14
+ *
15
+ * Win32: предпочтительно используем `%APPDATA%`. Если переменная не задана
16
+ * (нестандартное окружение, CI без полного user profile, WSL fallback) —
17
+ * используем `~/AppData/Roaming/Claude/...`, что является каноническим путём
18
+ * для современных Windows-систем.
19
+ */
20
+ function claudeDesktopConfigPath() {
21
+ const platform = os.platform();
22
+ if (platform === 'darwin') {
23
+ return path.join(os.homedir(), 'Library/Application Support/Claude/claude_desktop_config.json');
24
+ }
25
+ if (platform === 'linux') {
26
+ return path.join(os.homedir(), '.config/claude/claude_desktop_config.json');
27
+ }
28
+ // win32 и прочие
29
+ const appData = process.env['APPDATA'] ?? path.join(os.homedir(), 'AppData/Roaming');
30
+ return path.join(appData, 'Claude/claude_desktop_config.json');
31
+ }
32
+ /**
33
+ * Lazy paths для остальных клиентов — единообразие с claudeDesktopConfigPath
34
+ * и устойчивость к подмене `HOME`/`USERPROFILE` в runtime (важно для тестов
35
+ * и кастомных окружений).
36
+ */
37
+ function geminiConfigPath() {
38
+ return path.join(os.homedir(), '.gemini/settings.json');
39
+ }
40
+ function qwenConfigPath() {
41
+ return path.join(os.homedir(), '.qwen/settings.json');
42
+ }
43
+ function codexConfigPath() {
44
+ return path.join(os.homedir(), '.codex/config.toml');
45
+ }
9
46
  /**
10
47
  * Конфигурации известных клиентов
11
48
  */
12
49
  const CLIENT_CONFIGS = {
50
+ 'claude-desktop': {
51
+ name: 'claude-desktop',
52
+ displayName: 'Claude Desktop',
53
+ description: 'Официальное десктопное приложение Claude от Anthropic',
54
+ configPath: claudeDesktopConfigPath,
55
+ platforms: ['darwin', 'linux', 'win32'],
56
+ serverKey: 'mcpServers',
57
+ configFormat: 'json',
58
+ },
13
59
  gemini: {
14
60
  name: 'gemini',
15
61
  displayName: 'Gemini CLI',
16
62
  description: 'Gemini CLI для разработки с MCP серверами',
17
- configPath: path.join(os.homedir(), '.gemini/settings.json'),
63
+ configPath: geminiConfigPath,
18
64
  platforms: ['darwin', 'linux', 'win32'],
19
65
  serverKey: 'mcpServers',
20
66
  configFormat: 'json',
@@ -23,7 +69,7 @@ const CLIENT_CONFIGS = {
23
69
  name: 'qwen',
24
70
  displayName: 'Qwen Code',
25
71
  description: 'Qwen Code для разработки с MCP серверами',
26
- configPath: path.join(os.homedir(), '.qwen/settings.json'),
72
+ configPath: qwenConfigPath,
27
73
  platforms: ['darwin', 'linux', 'win32'],
28
74
  serverKey: 'mcpServers',
29
75
  configFormat: 'json',
@@ -32,7 +78,7 @@ const CLIENT_CONFIGS = {
32
78
  name: 'codex',
33
79
  displayName: 'Codex',
34
80
  description: 'CLI инструмент Codex от OpenAI',
35
- configPath: path.join(os.homedir(), '.codex/config.toml'),
81
+ configPath: codexConfigPath,
36
82
  platforms: ['darwin', 'linux', 'win32'],
37
83
  checkCommand: 'codex --version',
38
84
  serverKey: 'mcp_servers',
@@ -40,40 +86,37 @@ const CLIENT_CONFIGS = {
40
86
  },
41
87
  };
42
88
  /**
43
- * Создать коннектор для известного клиента
89
+ * Создать коннектор для известного клиента.
44
90
  *
45
91
  * @param client - Имя известного клиента
46
- * @param serverName - Имя MCP сервера
47
- * @param entryPoint - Относительный путь к точке входа сервера
92
+ * @param serverName - Имя MCP сервера для записи в конфиг
48
93
  *
49
94
  * @example
50
95
  * ```typescript
51
- * const geminiConnector = createConnector('gemini', 'mcp-server-yandex-tracker', 'dist/yandex-tracker.bundle.cjs');
52
- * const qwenConnector = createConnector('qwen', 'mcp-server-yandex-tracker', 'dist/yandex-tracker.bundle.cjs');
96
+ * const gemini = createConnector('gemini', 'mcp-server-yandex-tracker');
97
+ * const desktop = createConnector('claude-desktop', 'mcp-server-yandex-tracker');
53
98
  * ```
54
99
  */
55
- export function createConnector(client, serverName, entryPoint) {
56
- const config = CLIENT_CONFIGS[client];
57
- return new ConfigurableConnector(serverName, entryPoint, config);
100
+ export function createConnector(client, serverName) {
101
+ return new ConfigurableConnector(serverName, CLIENT_CONFIGS[client]);
58
102
  }
59
103
  /**
60
- * Создать коннектор с кастомной конфигурацией
104
+ * Создать коннектор с произвольной конфигурацией клиента.
61
105
  *
62
106
  * @param serverName - Имя MCP сервера
63
- * @param entryPoint - Относительный путь к точке входа сервера
64
107
  * @param clientConfig - Конфигурация клиента
65
108
  */
66
- export function createCustomConnector(serverName, entryPoint, clientConfig) {
67
- return new ConfigurableConnector(serverName, entryPoint, clientConfig);
109
+ export function createCustomConnector(serverName, clientConfig) {
110
+ return new ConfigurableConnector(serverName, clientConfig);
68
111
  }
69
112
  /**
70
- * Получить конфигурацию известного клиента
113
+ * Получить конфигурацию известного клиента (копию).
71
114
  */
72
115
  export function getClientConfig(client) {
73
116
  return { ...CLIENT_CONFIGS[client] };
74
117
  }
75
118
  /**
76
- * Получить список всех известных клиентов
119
+ * Получить список всех известных клиентов.
77
120
  */
78
121
  export function getKnownClients() {
79
122
  return Object.keys(CLIENT_CONFIGS);
@@ -1 +1 @@
1
- {"version":3,"file":"connector-factory.js","sourceRoot":"","sources":["../../src/connectors/connector-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,qBAAqB,GAEtB,MAAM,kCAAkC,CAAC;AAQ1C;;GAEG;AACH,MAAM,cAAc,GAA+C;IACjE,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,2CAA2C;QACxD,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,uBAAuB,CAAC;QAC5D,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;QACvC,SAAS,EAAE,YAAY;QACvB,YAAY,EAAE,MAAM;KACrB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,0CAA0C;QACvD,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC;QAC1D,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;QACvC,SAAS,EAAE,YAAY;QACvB,YAAY,EAAE,MAAM;KACrB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,gCAAgC;QAC7C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,oBAAoB,CAAC;QACzD,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;QACvC,YAAY,EAAE,iBAAiB;QAC/B,SAAS,EAAE,aAAa;QACxB,YAAY,EAAE,MAAM;KACrB;CACF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,UAAkB,EAClB,UAAkB;IAElB,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,IAAI,qBAAqB,CAAU,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,UAAkB,EAClB,YAAmC;IAEnC,OAAO,IAAI,qBAAqB,CAAU,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAkB,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"connector-factory.js","sourceRoot":"","sources":["../../src/connectors/connector-factory.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,6 @@
4
4
  */
5
5
  export * from './base/index.js';
6
6
  export * from './connector-factory.js';
7
- export * from './claude-desktop/claude-desktop.connector.js';
8
7
  export * from './claude-code/claude-code.connector.js';
9
- export * from './codex/codex.connector.js';
10
- export * from './gemini/gemini.connector.js';
11
- export * from './qwen/qwen.connector.js';
12
8
  export * from './registry.js';
13
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,iBAAiB,CAAC;AAGhC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,wCAAwC,CAAC;AAIvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AAGzC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,iBAAiB,CAAC;AAGhC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,wCAAwC,CAAC;AAGvD,cAAc,eAAe,CAAC"}
@@ -4,16 +4,10 @@
4
4
  */
5
5
  // Base connector types and classes
6
6
  export * from './base/index.js';
7
- // Connector factory (recommended for new code)
7
+ // Connector factory (для файл-ориентированных клиентов)
8
8
  export * from './connector-factory.js';
9
- // Specific client connectors
10
- export * from './claude-desktop/claude-desktop.connector.js';
9
+ // Claude Code (управляется командами, не файлом)
11
10
  export * from './claude-code/claude-code.connector.js';
12
- // Legacy connectors (use createConnector() factory instead)
13
- // Kept for backwards compatibility
14
- export * from './codex/codex.connector.js';
15
- export * from './gemini/gemini.connector.js';
16
- export * from './qwen/qwen.connector.js';
17
11
  // Registry
18
12
  export * from './registry.js';
19
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mCAAmC;AACnC,cAAc,iBAAiB,CAAC;AAEhC,+CAA+C;AAC/C,cAAc,wBAAwB,CAAC;AAEvC,6BAA6B;AAC7B,cAAc,8CAA8C,CAAC;AAC7D,cAAc,wCAAwC,CAAC;AAEvD,4DAA4D;AAC5D,mCAAmC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AAEzC,WAAW;AACX,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mCAAmC;AACnC,cAAc,iBAAiB,CAAC;AAEhC,wDAAwD;AACxD,cAAc,wBAAwB,CAAC;AAEvC,iDAAiD;AACjD,cAAc,wCAAwC,CAAC;AAEvD,WAAW;AACX,cAAc,eAAe,CAAC"}
@@ -2,53 +2,46 @@
2
2
  * Реестр MCP коннекторов
3
3
  */
4
4
  import type { MCPConnector } from './base/connector.interface.js';
5
- import type { BaseMCPServerConfig, ConnectionStatus, IConnectorRegistry } from '../types.js';
5
+ import type { ConnectionStatus, IConnectorRegistry } from '../types.js';
6
6
  /**
7
- * Реестр MCP коннекторов
8
- * Управляет коллекцией доступных коннекторов и предоставляет методы для работы с ними
9
- *
10
- * @template TConfig - Тип конфигурации MCP сервера
7
+ * Реестр MCP коннекторов.
8
+ * Управляет коллекцией доступных коннекторов и предоставляет методы для работы с ними.
11
9
  *
12
10
  * @example
13
11
  * ```typescript
14
- * const registry = new ConnectorRegistry<MyServerConfig>();
15
- * registry.register(new ClaudeDesktopConnector('my-server', 'dist/index.js'));
16
- * registry.register(new ClaudeCodeConnector('my-server', 'dist/index.js'));
12
+ * const registry = new ConnectorRegistry();
13
+ * registry.register(createConnector('claude-desktop', 'my-server'));
14
+ * registry.register(new ClaudeCodeConnector('my-server'));
17
15
  *
18
16
  * const installed = await registry.findInstalled();
19
17
  * const claudeDesktop = registry.get('claude-desktop');
20
18
  * ```
21
19
  */
22
- export declare class ConnectorRegistry<TConfig extends BaseMCPServerConfig = BaseMCPServerConfig> implements IConnectorRegistry<TConfig> {
20
+ export declare class ConnectorRegistry implements IConnectorRegistry {
23
21
  private connectors;
24
22
  /**
25
- * Зарегистрировать коннектор
26
- * @param connector - Коннектор для регистрации
23
+ * Зарегистрировать коннектор.
27
24
  */
28
- register(connector: MCPConnector<TConfig>): void;
25
+ register(connector: MCPConnector): void;
29
26
  /**
30
- * Получить коннектор по имени
31
- * @param name - Имя клиента (например, 'claude-desktop')
32
- * @returns Коннектор или undefined если не найден
27
+ * Получить коннектор по имени.
33
28
  */
34
- get(name: string): MCPConnector<TConfig> | undefined;
29
+ get(name: string): MCPConnector | undefined;
35
30
  /**
36
- * Получить все зарегистрированные коннекторы
37
- * @returns Массив всех коннекторов
31
+ * Получить все зарегистрированные коннекторы.
38
32
  */
39
- getAll(): MCPConnector<TConfig>[];
33
+ getAll(): MCPConnector[];
40
34
  /**
41
- * Найти установленные клиенты
42
- * Проверяет каждый коннектор на наличие в системе
43
- *
44
- * @returns Массив установленных коннекторов
35
+ * Найти установленные клиенты.
36
+ * Проверка `isInstalled()` выполняется параллельно.
45
37
  */
46
- findInstalled(): Promise<MCPConnector<TConfig>[]>;
38
+ findInstalled(): Promise<MCPConnector[]>;
47
39
  /**
48
- * Проверить статус всех клиентов
49
- * Возвращает Map с именем клиента и его статусом
40
+ * Проверить статус всех клиентов параллельно через `Promise.allSettled`.
50
41
  *
51
- * @returns Map<имя клиента, статус подключения>
42
+ * Возвращает Map с именем клиента и его статусом. При ошибке `getStatus()`
43
+ * для конкретного коннектора — записывается `connected: false` с сообщением
44
+ * об ошибке (не пробрасывается, чтобы не падать на одном проблемном клиенте).
52
45
  */
53
46
  checkAllStatuses(): Promise<Map<string, ConnectionStatus>>;
54
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/connectors/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,iBAAiB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CACtF,YAAW,kBAAkB,CAAC,OAAO,CAAC;IAEtC,OAAO,CAAC,UAAU,CAAiD;IAEnE;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAKhD;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS;IAIpD;;;OAGG;IACH,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE;IAIjC;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;IAYvD;;;;;OAKG;IACG,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAUjE"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/connectors/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;;;;;;;;;GAaG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,UAAU,CAAwC;IAE1D;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAKvC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C;;OAEG;IACH,MAAM,IAAI,YAAY,EAAE;IAIxB;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAM9C;;;;;;OAMG;IACG,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAkBjE"}
@@ -2,16 +2,14 @@
2
2
  * Реестр MCP коннекторов
3
3
  */
4
4
  /**
5
- * Реестр MCP коннекторов
6
- * Управляет коллекцией доступных коннекторов и предоставляет методы для работы с ними
7
- *
8
- * @template TConfig - Тип конфигурации MCP сервера
5
+ * Реестр MCP коннекторов.
6
+ * Управляет коллекцией доступных коннекторов и предоставляет методы для работы с ними.
9
7
  *
10
8
  * @example
11
9
  * ```typescript
12
- * const registry = new ConnectorRegistry<MyServerConfig>();
13
- * registry.register(new ClaudeDesktopConnector('my-server', 'dist/index.js'));
14
- * registry.register(new ClaudeCodeConnector('my-server', 'dist/index.js'));
10
+ * const registry = new ConnectorRegistry();
11
+ * registry.register(createConnector('claude-desktop', 'my-server'));
12
+ * registry.register(new ClaudeCodeConnector('my-server'));
15
13
  *
16
14
  * const installed = await registry.findInstalled();
17
15
  * const claudeDesktop = registry.get('claude-desktop');
@@ -20,56 +18,58 @@
20
18
  export class ConnectorRegistry {
21
19
  connectors = new Map();
22
20
  /**
23
- * Зарегистрировать коннектор
24
- * @param connector - Коннектор для регистрации
21
+ * Зарегистрировать коннектор.
25
22
  */
26
23
  register(connector) {
27
24
  const info = connector.getClientInfo();
28
25
  this.connectors.set(info.name, connector);
29
26
  }
30
27
  /**
31
- * Получить коннектор по имени
32
- * @param name - Имя клиента (например, 'claude-desktop')
33
- * @returns Коннектор или undefined если не найден
28
+ * Получить коннектор по имени.
34
29
  */
35
30
  get(name) {
36
31
  return this.connectors.get(name);
37
32
  }
38
33
  /**
39
- * Получить все зарегистрированные коннекторы
40
- * @returns Массив всех коннекторов
34
+ * Получить все зарегистрированные коннекторы.
41
35
  */
42
36
  getAll() {
43
37
  return Array.from(this.connectors.values());
44
38
  }
45
39
  /**
46
- * Найти установленные клиенты
47
- * Проверяет каждый коннектор на наличие в системе
48
- *
49
- * @returns Массив установленных коннекторов
40
+ * Найти установленные клиенты.
41
+ * Проверка `isInstalled()` выполняется параллельно.
50
42
  */
51
43
  async findInstalled() {
52
- const installed = [];
53
- for (const connector of this.connectors.values()) {
54
- if (await connector.isInstalled()) {
55
- installed.push(connector);
56
- }
57
- }
58
- return installed;
44
+ const all = Array.from(this.connectors.values());
45
+ const checks = await Promise.all(all.map(async (c) => ({ c, ok: await c.isInstalled() })));
46
+ return checks.filter((x) => x.ok).map((x) => x.c);
59
47
  }
60
48
  /**
61
- * Проверить статус всех клиентов
62
- * Возвращает Map с именем клиента и его статусом
49
+ * Проверить статус всех клиентов параллельно через `Promise.allSettled`.
63
50
  *
64
- * @returns Map<имя клиента, статус подключения>
51
+ * Возвращает Map с именем клиента и его статусом. При ошибке `getStatus()`
52
+ * для конкретного коннектора — записывается `connected: false` с сообщением
53
+ * об ошибке (не пробрасывается, чтобы не падать на одном проблемном клиенте).
65
54
  */
66
55
  async checkAllStatuses() {
67
- const statuses = new Map();
68
- for (const [name, connector] of this.connectors) {
69
- const status = await connector.getStatus();
70
- statuses.set(name, status);
71
- }
72
- return statuses;
56
+ const entries = Array.from(this.connectors.entries());
57
+ const settled = await Promise.allSettled(entries.map(([, c]) => c.getStatus()));
58
+ const result = new Map();
59
+ settled.forEach((res, i) => {
60
+ const name = entries[i]?.[0];
61
+ if (name === undefined)
62
+ return;
63
+ if (res.status === 'fulfilled') {
64
+ result.set(name, res.value);
65
+ }
66
+ else {
67
+ const reason = res.reason;
68
+ const message = reason instanceof Error ? reason.message : String(reason);
69
+ result.set(name, { connected: false, error: `Ошибка проверки статуса: ${message}` });
70
+ }
71
+ });
72
+ return result;
73
73
  }
74
74
  }
75
75
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/connectors/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,iBAAiB;IAGpB,UAAU,GAAuC,IAAI,GAAG,EAAE,CAAC;IAEnE;;;OAGG;IACH,QAAQ,CAAC,SAAgC;QACvC,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,SAAS,GAA4B,EAAE,CAAC;QAE9C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,IAAI,MAAM,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;gBAClC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;QAErD,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;YAC3C,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/connectors/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,iBAAiB;IACpB,UAAU,GAA8B,IAAI,GAAG,EAAE,CAAC;IAE1D;;OAEG;IACH,QAAQ,CAAC,SAAuB;QAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;QACnD,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO;YAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,GAAG,CAAC,MAAiB,CAAC;gBACrC,MAAM,OAAO,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1E,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,OAAO,EAAE,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}