@fractalizer/mcp-cli 0.3.18 → 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.
- package/README.md +158 -266
- package/dist/commands/connect.command.d.ts +18 -15
- package/dist/commands/connect.command.d.ts.map +1 -1
- package/dist/commands/connect.command.js +66 -40
- package/dist/commands/connect.command.js.map +1 -1
- package/dist/commands/disconnect.command.d.ts +5 -17
- package/dist/commands/disconnect.command.d.ts.map +1 -1
- package/dist/commands/disconnect.command.js +4 -15
- package/dist/commands/disconnect.command.js.map +1 -1
- package/dist/commands/doctor.command.d.ts +34 -0
- package/dist/commands/doctor.command.d.ts.map +1 -0
- package/dist/commands/doctor.command.js +321 -0
- package/dist/commands/doctor.command.js.map +1 -0
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/list.command.d.ts +4 -9
- package/dist/commands/list.command.d.ts.map +1 -1
- package/dist/commands/list.command.js +1 -5
- package/dist/commands/list.command.js.map +1 -1
- package/dist/commands/status.command.d.ts +6 -13
- package/dist/commands/status.command.d.ts.map +1 -1
- package/dist/commands/status.command.js +15 -12
- package/dist/commands/status.command.js.map +1 -1
- package/dist/commands/validate.command.d.ts +6 -11
- package/dist/commands/validate.command.d.ts.map +1 -1
- package/dist/commands/validate.command.js +15 -19
- package/dist/commands/validate.command.js.map +1 -1
- package/dist/connectors/base/base-connector.d.ts +31 -55
- package/dist/connectors/base/base-connector.d.ts.map +1 -1
- package/dist/connectors/base/base-connector.js +71 -57
- package/dist/connectors/base/base-connector.js.map +1 -1
- package/dist/connectors/base/configurable-connector.d.ts +89 -24
- package/dist/connectors/base/configurable-connector.d.ts.map +1 -1
- package/dist/connectors/base/configurable-connector.js +266 -23
- package/dist/connectors/base/configurable-connector.js.map +1 -1
- package/dist/connectors/base/connector.interface.d.ts +29 -20
- package/dist/connectors/base/connector.interface.d.ts.map +1 -1
- package/dist/connectors/base/index.d.ts +0 -1
- package/dist/connectors/base/index.d.ts.map +1 -1
- package/dist/connectors/base/index.js +0 -1
- package/dist/connectors/base/index.js.map +1 -1
- package/dist/connectors/claude-code/claude-code.connector.d.ts +100 -21
- package/dist/connectors/claude-code/claude-code.connector.d.ts.map +1 -1
- package/dist/connectors/claude-code/claude-code.connector.js +221 -40
- package/dist/connectors/claude-code/claude-code.connector.js.map +1 -1
- package/dist/connectors/connector-factory.d.ts +15 -15
- package/dist/connectors/connector-factory.d.ts.map +1 -1
- package/dist/connectors/connector-factory.js +61 -18
- package/dist/connectors/connector-factory.js.map +1 -1
- package/dist/connectors/index.d.ts +0 -4
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +2 -8
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/registry.d.ts +20 -27
- package/dist/connectors/registry.d.ts.map +1 -1
- package/dist/connectors/registry.js +34 -34
- package/dist/connectors/registry.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/{base.types.d.ts → client.types.d.ts} +30 -30
- package/dist/types/client.types.d.ts.map +1 -0
- package/dist/types/client.types.js +6 -0
- package/dist/types/client.types.js.map +1 -0
- package/dist/types/doctor.types.d.ts +91 -0
- package/dist/types/doctor.types.d.ts.map +1 -0
- package/dist/types/doctor.types.js +12 -0
- package/dist/types/doctor.types.js.map +1 -0
- package/dist/types/launch.types.d.ts +59 -0
- package/dist/types/launch.types.d.ts.map +1 -0
- package/dist/types/launch.types.js +6 -0
- package/dist/types/launch.types.js.map +1 -0
- package/dist/types.d.ts +23 -14
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +9 -2
- package/dist/types.js.map +1 -1
- package/dist/utils/command-executor.d.ts +39 -3
- package/dist/utils/command-executor.d.ts.map +1 -1
- package/dist/utils/command-executor.js +95 -8
- package/dist/utils/command-executor.js.map +1 -1
- package/dist/utils/config-manager.d.ts +25 -42
- package/dist/utils/config-manager.d.ts.map +1 -1
- package/dist/utils/config-manager.js +21 -49
- package/dist/utils/config-manager.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/interactive-prompter.d.ts +16 -64
- package/dist/utils/interactive-prompter.d.ts.map +1 -1
- package/dist/utils/interactive-prompter.js +12 -65
- package/dist/utils/interactive-prompter.js.map +1 -1
- package/dist/utils/launch-spec-helpers.d.ts +38 -0
- package/dist/utils/launch-spec-helpers.d.ts.map +1 -0
- package/dist/utils/launch-spec-helpers.js +131 -0
- package/dist/utils/launch-spec-helpers.js.map +1 -0
- package/package.json +2 -2
- package/dist/connectors/base/file-based-connector.d.ts +0 -97
- package/dist/connectors/base/file-based-connector.d.ts.map +0 -1
- package/dist/connectors/base/file-based-connector.js +0 -185
- package/dist/connectors/base/file-based-connector.js.map +0 -1
- package/dist/connectors/claude-desktop/claude-desktop.connector.d.ts +0 -38
- package/dist/connectors/claude-desktop/claude-desktop.connector.d.ts.map +0 -1
- package/dist/connectors/claude-desktop/claude-desktop.connector.js +0 -68
- package/dist/connectors/claude-desktop/claude-desktop.connector.js.map +0 -1
- package/dist/connectors/codex/codex.connector.d.ts +0 -51
- package/dist/connectors/codex/codex.connector.d.ts.map +0 -1
- package/dist/connectors/codex/codex.connector.js +0 -76
- package/dist/connectors/codex/codex.connector.js.map +0 -1
- package/dist/connectors/gemini/gemini.connector.d.ts +0 -41
- package/dist/connectors/gemini/gemini.connector.d.ts.map +0 -1
- package/dist/connectors/gemini/gemini.connector.js +0 -61
- package/dist/connectors/gemini/gemini.connector.js.map +0 -1
- package/dist/connectors/qwen/qwen.connector.d.ts +0 -41
- package/dist/connectors/qwen/qwen.connector.d.ts.map +0 -1
- package/dist/connectors/qwen/qwen.connector.js +0 -61
- package/dist/connectors/qwen/qwen.connector.js.map +0 -1
- package/dist/types/base.types.d.ts.map +0 -1
- package/dist/types/base.types.js +0 -6
- package/dist/types/base.types.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.command.js","sourceRoot":"","sources":["../../src/commands/doctor.command.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,qBAAqB,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -10,4 +10,6 @@ export * from './disconnect.command.js';
|
|
|
10
10
|
export * from './connect.command.js';
|
|
11
11
|
// Validate command (Stage 4.3)
|
|
12
12
|
export * from './validate.command.js';
|
|
13
|
+
// Doctor command (Stage 1.3 — self-diagnostics)
|
|
14
|
+
export * from './doctor.command.js';
|
|
13
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6BAA6B;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AAExC,8BAA8B;AAC9B,cAAc,sBAAsB,CAAC;AAErC,+BAA+B;AAC/B,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6BAA6B;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AAExC,8BAA8B;AAC9B,cAAc,sBAAsB,CAAC;AAErC,+BAA+B;AAC/B,cAAc,uBAAuB,CAAC;AAEtC,gDAAgD;AAChD,cAAc,qBAAqB,CAAC"}
|
|
@@ -1,23 +1,18 @@
|
|
|
1
1
|
import type { ConnectorRegistry } from '../connectors/registry.js';
|
|
2
|
-
import type { BaseMCPServerConfig } from '../types.js';
|
|
3
2
|
/**
|
|
4
3
|
* Опции для команды list
|
|
5
4
|
*/
|
|
6
|
-
export interface ListCommandOptions
|
|
5
|
+
export interface ListCommandOptions {
|
|
7
6
|
/** Реестр MCP коннекторов */
|
|
8
|
-
registry: ConnectorRegistry
|
|
7
|
+
registry: ConnectorRegistry;
|
|
9
8
|
}
|
|
10
9
|
/**
|
|
11
|
-
* Команда для отображения списка всех поддерживаемых MCP
|
|
12
|
-
*
|
|
13
|
-
* @param options - Опции команды
|
|
10
|
+
* Команда для отображения списка всех поддерживаемых MCP клиентов.
|
|
14
11
|
*
|
|
15
12
|
* @example
|
|
16
13
|
* ```typescript
|
|
17
|
-
* const registry = new ConnectorRegistry<YourConfig>();
|
|
18
|
-
* // регистрация коннекторов...
|
|
19
14
|
* await listCommand({ registry });
|
|
20
15
|
* ```
|
|
21
16
|
*/
|
|
22
|
-
export declare function listCommand
|
|
17
|
+
export declare function listCommand(options: ListCommandOptions): Promise<void>;
|
|
23
18
|
//# sourceMappingURL=list.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.command.d.ts","sourceRoot":"","sources":["../../src/commands/list.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"list.command.d.ts","sourceRoot":"","sources":["../../src/commands/list.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB5E"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { Logger } from '../utils/logger.js';
|
|
2
2
|
/**
|
|
3
|
-
* Команда для отображения списка всех поддерживаемых MCP
|
|
4
|
-
*
|
|
5
|
-
* @param options - Опции команды
|
|
3
|
+
* Команда для отображения списка всех поддерживаемых MCP клиентов.
|
|
6
4
|
*
|
|
7
5
|
* @example
|
|
8
6
|
* ```typescript
|
|
9
|
-
* const registry = new ConnectorRegistry<YourConfig>();
|
|
10
|
-
* // регистрация коннекторов...
|
|
11
7
|
* await listCommand({ registry });
|
|
12
8
|
* ```
|
|
13
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.command.js","sourceRoot":"","sources":["../../src/commands/list.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.command.js","sourceRoot":"","sources":["../../src/commands/list.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAU5C;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE7B,MAAM,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,EAAE,CAAC;IAEjB,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IAErC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,gBAAgB,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChF,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
import type { ConnectorRegistry } from '../connectors/registry.js';
|
|
2
|
-
import type { BaseMCPServerConfig } from '../types.js';
|
|
3
2
|
/**
|
|
4
3
|
* Опции для команды status
|
|
5
4
|
*/
|
|
6
|
-
export interface StatusCommandOptions
|
|
5
|
+
export interface StatusCommandOptions {
|
|
7
6
|
/** Реестр MCP коннекторов */
|
|
8
|
-
registry: ConnectorRegistry
|
|
7
|
+
registry: ConnectorRegistry;
|
|
9
8
|
}
|
|
10
9
|
/**
|
|
11
|
-
* Команда для отображения статуса всех MCP
|
|
10
|
+
* Команда для отображения статуса всех MCP подключений.
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* const registry = new ConnectorRegistry<YourConfig>();
|
|
18
|
-
* // регистрация коннекторов...
|
|
19
|
-
* await statusCommand({ registry });
|
|
20
|
-
* ```
|
|
12
|
+
* Сбор статусов выполняется параллельно через {@link ConnectorRegistry.checkAllStatuses},
|
|
13
|
+
* рендеринг — последовательно в детерминированном порядке регистрации.
|
|
21
14
|
*/
|
|
22
|
-
export declare function statusCommand
|
|
15
|
+
export declare function statusCommand(options: StatusCommandOptions): Promise<void>;
|
|
23
16
|
//# sourceMappingURL=status.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.command.d.ts","sourceRoot":"","sources":["../../src/commands/status.command.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"status.command.d.ts","sourceRoot":"","sources":["../../src/commands/status.command.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAInE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AA2CD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhF"}
|
|
@@ -23,36 +23,39 @@ async function displayConnectorStatus(connector, status) {
|
|
|
23
23
|
if (status.connected) {
|
|
24
24
|
Logger.success(`${info.displayName}: ✅ Подключен`);
|
|
25
25
|
displayConnectionDetails(status);
|
|
26
|
+
if (status.error) {
|
|
27
|
+
Logger.warn(` └─ ${status.error}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else if (status.error) {
|
|
31
|
+
Logger.error(`${info.displayName}: ❗ Ошибка`);
|
|
32
|
+
Logger.error(` └─ ${status.error}`);
|
|
26
33
|
}
|
|
27
34
|
else {
|
|
28
35
|
Logger.warn(`${info.displayName}: ⭕ Не подключен`);
|
|
29
36
|
}
|
|
30
37
|
}
|
|
31
38
|
/**
|
|
32
|
-
* Команда для отображения статуса всех MCP
|
|
33
|
-
*
|
|
34
|
-
* @param options - Опции команды
|
|
39
|
+
* Команда для отображения статуса всех MCP подключений.
|
|
35
40
|
*
|
|
36
|
-
* @
|
|
37
|
-
*
|
|
38
|
-
* const registry = new ConnectorRegistry<YourConfig>();
|
|
39
|
-
* // регистрация коннекторов...
|
|
40
|
-
* await statusCommand({ registry });
|
|
41
|
-
* ```
|
|
41
|
+
* Сбор статусов выполняется параллельно через {@link ConnectorRegistry.checkAllStatuses},
|
|
42
|
+
* рендеринг — последовательно в детерминированном порядке регистрации.
|
|
42
43
|
*/
|
|
43
44
|
export async function statusCommand(options) {
|
|
44
45
|
const { registry } = options;
|
|
45
46
|
Logger.header('📊 Статус MCP подключений');
|
|
46
47
|
Logger.newLine();
|
|
47
48
|
const statuses = await registry.checkAllStatuses();
|
|
49
|
+
const connectors = registry.getAll();
|
|
48
50
|
if (statuses.size === 0) {
|
|
49
51
|
Logger.warn('Нет зарегистрированных MCP клиентов');
|
|
50
52
|
Logger.newLine();
|
|
51
53
|
return;
|
|
52
54
|
}
|
|
53
|
-
for (const
|
|
54
|
-
const
|
|
55
|
-
|
|
55
|
+
for (const connector of connectors) {
|
|
56
|
+
const name = connector.getClientInfo().name;
|
|
57
|
+
const status = statuses.get(name);
|
|
58
|
+
if (!status)
|
|
56
59
|
continue;
|
|
57
60
|
await displayConnectorStatus(connector, status);
|
|
58
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.command.js","sourceRoot":"","sources":["../../src/commands/status.command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAU5C;;GAEG;AACH,SAAS,wBAAwB,CAAC,MAAwB;IACxD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO;IAE5B,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,sBAAsB,CACnC,
|
|
1
|
+
{"version":3,"file":"status.command.js","sourceRoot":"","sources":["../../src/commands/status.command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAU5C;;GAEG;AACH,SAAS,wBAAwB,CAAC,MAAwB;IACxD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO;IAE5B,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,sBAAsB,CACnC,SAAuB,EACvB,MAAwB;IAExB,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;IAElD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,mBAAmB,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,eAAe,CAAC,CAAC;QACnD,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,YAAY,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,kBAAkB,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE7B,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;IAEjB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IAErC,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -1,25 +1,20 @@
|
|
|
1
1
|
import type { ConnectorRegistry } from '../connectors/registry.js';
|
|
2
|
-
import type { BaseMCPServerConfig } from '../types.js';
|
|
3
2
|
/**
|
|
4
3
|
* Опции для команды validate
|
|
5
4
|
*/
|
|
6
|
-
export interface ValidateCommandOptions
|
|
5
|
+
export interface ValidateCommandOptions {
|
|
7
6
|
/** Реестр MCP коннекторов */
|
|
8
|
-
registry: ConnectorRegistry
|
|
7
|
+
registry: ConnectorRegistry;
|
|
9
8
|
}
|
|
10
9
|
/**
|
|
11
|
-
* Команда для валидации конфигураций MCP
|
|
12
|
-
* Проверяет корректность всех подключенных
|
|
13
|
-
* Завершается с кодом 1 если обнаружены
|
|
14
|
-
*
|
|
15
|
-
* @param options - Опции команды
|
|
10
|
+
* Команда для валидации конфигураций MCP клиентов.
|
|
11
|
+
* Проверяет корректность всех подключенных конфигураций.
|
|
12
|
+
* Завершается с кодом 1 если обнаружены ошибки.
|
|
16
13
|
*
|
|
17
14
|
* @example
|
|
18
15
|
* ```typescript
|
|
19
|
-
* const registry = new ConnectorRegistry<YourConfig>();
|
|
20
|
-
* // регистрация коннекторов...
|
|
21
16
|
* await validateCommand({ registry });
|
|
22
17
|
* ```
|
|
23
18
|
*/
|
|
24
|
-
export declare function validateCommand
|
|
19
|
+
export declare function validateCommand(options: ValidateCommandOptions): Promise<void>;
|
|
25
20
|
//# sourceMappingURL=validate.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.command.d.ts","sourceRoot":"","sources":["../../src/commands/validate.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.command.d.ts","sourceRoot":"","sources":["../../src/commands/validate.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDpF"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { Logger } from '../utils/logger.js';
|
|
2
2
|
/**
|
|
3
|
-
* Команда для валидации конфигураций MCP
|
|
4
|
-
* Проверяет корректность всех подключенных
|
|
5
|
-
* Завершается с кодом 1 если обнаружены
|
|
6
|
-
*
|
|
7
|
-
* @param options - Опции команды
|
|
3
|
+
* Команда для валидации конфигураций MCP клиентов.
|
|
4
|
+
* Проверяет корректность всех подключенных конфигураций.
|
|
5
|
+
* Завершается с кодом 1 если обнаружены ошибки.
|
|
8
6
|
*
|
|
9
7
|
* @example
|
|
10
8
|
* ```typescript
|
|
11
|
-
* const registry = new ConnectorRegistry<YourConfig>();
|
|
12
|
-
* // регистрация коннекторов...
|
|
13
9
|
* await validateCommand({ registry });
|
|
14
10
|
* ```
|
|
15
11
|
*/
|
|
@@ -21,9 +17,11 @@ export async function validateCommand(options) {
|
|
|
21
17
|
spinner.stop();
|
|
22
18
|
let hasErrors = false;
|
|
23
19
|
let connectedCount = 0;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
// Детерминированный порядок: по списку getAll()
|
|
21
|
+
for (const connector of registry.getAll()) {
|
|
22
|
+
const name = connector.getClientInfo().name;
|
|
23
|
+
const status = statuses.get(name);
|
|
24
|
+
if (!status)
|
|
27
25
|
continue;
|
|
28
26
|
const info = connector.getClientInfo();
|
|
29
27
|
const isInstalled = await connector.isInstalled();
|
|
@@ -38,19 +36,17 @@ export async function validateCommand(options) {
|
|
|
38
36
|
Logger.info(` Файл: ${status.details.configPath}`);
|
|
39
37
|
}
|
|
40
38
|
}
|
|
39
|
+
else if (status.error) {
|
|
40
|
+
Logger.error(`${info.displayName}: ошибка в конфигурации`);
|
|
41
|
+
Logger.error(` ${status.error}`);
|
|
42
|
+
hasErrors = true;
|
|
43
|
+
}
|
|
41
44
|
else {
|
|
42
|
-
|
|
43
|
-
Logger.error(`${info.displayName}: ошибка в конфигурации`);
|
|
44
|
-
Logger.error(` ${status.error}`);
|
|
45
|
-
hasErrors = true;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
Logger.info(`${info.displayName}: не подключен`);
|
|
49
|
-
}
|
|
45
|
+
Logger.info(`${info.displayName}: не подключен`);
|
|
50
46
|
}
|
|
51
47
|
}
|
|
52
48
|
Logger.newLine();
|
|
53
|
-
Logger.info(`Итого: ${connectedCount} валидных конфигураций из ${statuses.size} проверенных`);
|
|
49
|
+
Logger.info(`Итого: ${String(connectedCount)} валидных конфигураций из ${String(statuses.size)} проверенных`);
|
|
54
50
|
if (hasErrors) {
|
|
55
51
|
process.exit(1);
|
|
56
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.command.js","sourceRoot":"","sources":["../../src/commands/validate.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.command.js","sourceRoot":"","sources":["../../src/commands/validate.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAU5C;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA+B;IACnE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE7B,MAAM,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IACnD,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,gDAAgD;IAChD,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;QAElD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,wBAAwB,CAAC,CAAC;YACzD,SAAS;QACX,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,cAAc,EAAE,CAAC;YACjB,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,wBAAwB,CAAC,CAAC;YAC5D,IAAI,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,yBAAyB,CAAC,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAClC,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,gBAAgB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CACT,UAAU,MAAM,CAAC,cAAc,CAAC,6BAA6B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CACjG,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -4,80 +4,56 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import * as os from 'node:os';
|
|
6
6
|
import type { MCPConnector } from './connector.interface.js';
|
|
7
|
-
import type {
|
|
7
|
+
import type { ConnectionStatus, MCPClientInfo } from '../../types/client.types.js';
|
|
8
|
+
import type { ServerLaunchSpec } from '../../types/launch.types.js';
|
|
8
9
|
/**
|
|
9
10
|
* Абстрактный базовый класс для всех MCP коннекторов
|
|
10
|
-
* Предоставляет общую функциональность и utility
|
|
11
|
-
*
|
|
12
|
-
* @template TConfig - Тип конфигурации MCP сервера
|
|
11
|
+
* Предоставляет общую функциональность и utility методы.
|
|
13
12
|
*
|
|
14
13
|
* @example
|
|
15
14
|
* ```typescript
|
|
16
|
-
* class MyConnector extends BaseConnector
|
|
17
|
-
* getClientInfo(): MCPClientInfo {
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* description: 'My MCP Client',
|
|
22
|
-
* configPath: '/path/to/config',
|
|
23
|
-
* platforms: ['darwin', 'linux'],
|
|
24
|
-
* };
|
|
25
|
-
* }
|
|
26
|
-
*
|
|
27
|
-
* async isInstalled(): Promise<boolean> {
|
|
28
|
-
* // implementation
|
|
29
|
-
* }
|
|
30
|
-
*
|
|
31
|
-
* // ... other methods
|
|
15
|
+
* class MyConnector extends BaseConnector {
|
|
16
|
+
* getClientInfo(): MCPClientInfo { ... }
|
|
17
|
+
* async isInstalled(): Promise<boolean> { ... }
|
|
18
|
+
* async connect(spec: ServerLaunchSpec): Promise<void> { ... }
|
|
19
|
+
* // ... остальные методы
|
|
32
20
|
* }
|
|
33
21
|
* ```
|
|
34
22
|
*/
|
|
35
|
-
export declare abstract class BaseConnector
|
|
23
|
+
export declare abstract class BaseConnector implements MCPConnector {
|
|
36
24
|
/**
|
|
37
25
|
* Абстрактные методы - должны быть реализованы наследниками
|
|
38
26
|
*/
|
|
39
|
-
abstract getClientInfo():
|
|
40
|
-
abstract isInstalled():
|
|
41
|
-
abstract getStatus():
|
|
42
|
-
abstract connect(
|
|
43
|
-
abstract disconnect():
|
|
27
|
+
abstract getClientInfo(): MCPClientInfo;
|
|
28
|
+
abstract isInstalled(): Promise<boolean>;
|
|
29
|
+
abstract getStatus(): Promise<ConnectionStatus>;
|
|
30
|
+
abstract connect(spec: ServerLaunchSpec): Promise<void>;
|
|
31
|
+
abstract disconnect(): Promise<void>;
|
|
32
|
+
abstract getLaunchSpec(): Promise<ServerLaunchSpec | null>;
|
|
44
33
|
/**
|
|
45
|
-
* Базовая валидация
|
|
46
|
-
*
|
|
34
|
+
* Базовая валидация спецификации запуска.
|
|
35
|
+
* Наследники могут переопределить метод, вызвав `super.validateLaunchSpec(spec)`
|
|
36
|
+
* для сохранения базовых проверок.
|
|
47
37
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
38
|
+
* Проверки:
|
|
39
|
+
* - `spec.command` непустой.
|
|
40
|
+
* - Если `spec.command` — абсолютный путь, проверяется существование файла.
|
|
41
|
+
* - Если `spec.command === 'node'`, ищется первый абсолютный путь в `spec.args`
|
|
42
|
+
* (учитывая возможные Node-флаги типа `--no-warnings`) и проверяется его существование.
|
|
43
|
+
* - Значения `spec.env` обязаны быть строками (runtime-проверка для JS-вызовов).
|
|
44
|
+
* - Если задан `spec.cwd` — путь должен быть абсолютным и существовать.
|
|
50
45
|
*
|
|
51
|
-
* @param
|
|
46
|
+
* @param spec - Спецификация для валидации
|
|
52
47
|
* @returns Массив ошибок валидации (пустой если валидация успешна)
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```typescript
|
|
56
|
-
* async validateConfig(config: MyServerConfig): Promise<string[]> {
|
|
57
|
-
* const errors = await super.validateConfig(config);
|
|
58
|
-
*
|
|
59
|
-
* if (!config.apiKey) {
|
|
60
|
-
* errors.push('API ключ обязателен');
|
|
61
|
-
* }
|
|
62
|
-
*
|
|
63
|
-
* return errors;
|
|
64
|
-
* }
|
|
65
|
-
* ```
|
|
66
48
|
*/
|
|
67
|
-
|
|
49
|
+
validateLaunchSpec(spec: ServerLaunchSpec): Promise<string[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Проверка существования файла без выброса исключений.
|
|
52
|
+
*/
|
|
53
|
+
private fileExists;
|
|
68
54
|
/**
|
|
69
55
|
* Проверить поддержку текущей платформы
|
|
70
56
|
* @returns true если текущая платформа поддерживается клиентом
|
|
71
|
-
*
|
|
72
|
-
* @example
|
|
73
|
-
* ```typescript
|
|
74
|
-
* async connect(config: TConfig): Promise<void> {
|
|
75
|
-
* if (!this.isPlatformSupported()) {
|
|
76
|
-
* throw new Error(`Платформа ${this.getCurrentPlatform()} не поддерживается`);
|
|
77
|
-
* }
|
|
78
|
-
* // ... rest of connect logic
|
|
79
|
-
* }
|
|
80
|
-
* ```
|
|
81
57
|
*/
|
|
82
58
|
protected isPlatformSupported(): boolean;
|
|
83
59
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-connector.d.ts","sourceRoot":"","sources":["../../../src/connectors/base/base-connector.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"base-connector.d.ts","sourceRoot":"","sources":["../../../src/connectors/base/base-connector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE;;;;;;;;;;;;;GAaG;AACH,8BAAsB,aAAc,YAAW,YAAY;IACzD;;OAEG;IACH,QAAQ,CAAC,aAAa,IAAI,aAAa;IACvC,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IACxC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IACvD,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACpC,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAE1D;;;;;;;;;;;;;;;OAeG;IACG,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA+CnE;;OAEG;YACW,UAAU;IASxB;;;OAGG;IACH,SAAS,CAAC,mBAAmB,IAAI,OAAO;IAMxC;;;OAGG;IACH,SAAS,CAAC,kBAAkB,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;CAG/D"}
|
|
@@ -2,86 +2,100 @@
|
|
|
2
2
|
* Base connector implementation for MCP clients
|
|
3
3
|
* @packageDocumentation
|
|
4
4
|
*/
|
|
5
|
+
import * as fs from 'node:fs/promises';
|
|
5
6
|
import * as os from 'node:os';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
import { resolveExecutablePath } from '../../utils/launch-spec-helpers.js';
|
|
6
9
|
/**
|
|
7
10
|
* Абстрактный базовый класс для всех MCP коннекторов
|
|
8
|
-
* Предоставляет общую функциональность и utility
|
|
9
|
-
*
|
|
10
|
-
* @template TConfig - Тип конфигурации MCP сервера
|
|
11
|
+
* Предоставляет общую функциональность и utility методы.
|
|
11
12
|
*
|
|
12
13
|
* @example
|
|
13
14
|
* ```typescript
|
|
14
|
-
* class MyConnector extends BaseConnector
|
|
15
|
-
* getClientInfo(): MCPClientInfo {
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* description: 'My MCP Client',
|
|
20
|
-
* configPath: '/path/to/config',
|
|
21
|
-
* platforms: ['darwin', 'linux'],
|
|
22
|
-
* };
|
|
23
|
-
* }
|
|
24
|
-
*
|
|
25
|
-
* async isInstalled(): Promise<boolean> {
|
|
26
|
-
* // implementation
|
|
27
|
-
* }
|
|
28
|
-
*
|
|
29
|
-
* // ... other methods
|
|
15
|
+
* class MyConnector extends BaseConnector {
|
|
16
|
+
* getClientInfo(): MCPClientInfo { ... }
|
|
17
|
+
* async isInstalled(): Promise<boolean> { ... }
|
|
18
|
+
* async connect(spec: ServerLaunchSpec): Promise<void> { ... }
|
|
19
|
+
* // ... остальные методы
|
|
30
20
|
* }
|
|
31
21
|
* ```
|
|
32
22
|
*/
|
|
33
23
|
export class BaseConnector {
|
|
34
24
|
/**
|
|
35
|
-
* Базовая валидация
|
|
36
|
-
*
|
|
25
|
+
* Базовая валидация спецификации запуска.
|
|
26
|
+
* Наследники могут переопределить метод, вызвав `super.validateLaunchSpec(spec)`
|
|
27
|
+
* для сохранения базовых проверок.
|
|
37
28
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
29
|
+
* Проверки:
|
|
30
|
+
* - `spec.command` непустой.
|
|
31
|
+
* - Если `spec.command` — абсолютный путь, проверяется существование файла.
|
|
32
|
+
* - Если `spec.command === 'node'`, ищется первый абсолютный путь в `spec.args`
|
|
33
|
+
* (учитывая возможные Node-флаги типа `--no-warnings`) и проверяется его существование.
|
|
34
|
+
* - Значения `spec.env` обязаны быть строками (runtime-проверка для JS-вызовов).
|
|
35
|
+
* - Если задан `spec.cwd` — путь должен быть абсолютным и существовать.
|
|
40
36
|
*
|
|
41
|
-
* @param
|
|
37
|
+
* @param spec - Спецификация для валидации
|
|
42
38
|
* @returns Массив ошибок валидации (пустой если валидация успешна)
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
* ```typescript
|
|
46
|
-
* async validateConfig(config: MyServerConfig): Promise<string[]> {
|
|
47
|
-
* const errors = await super.validateConfig(config);
|
|
48
|
-
*
|
|
49
|
-
* if (!config.apiKey) {
|
|
50
|
-
* errors.push('API ключ обязателен');
|
|
51
|
-
* }
|
|
52
|
-
*
|
|
53
|
-
* return errors;
|
|
54
|
-
* }
|
|
55
|
-
* ```
|
|
56
39
|
*/
|
|
57
|
-
|
|
40
|
+
async validateLaunchSpec(spec) {
|
|
58
41
|
const errors = [];
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
errors
|
|
42
|
+
if (!spec.command || spec.command.trim().length === 0) {
|
|
43
|
+
errors.push('Команда запуска (command) обязательна');
|
|
44
|
+
return errors;
|
|
45
|
+
}
|
|
46
|
+
if (path.isAbsolute(spec.command)) {
|
|
47
|
+
const ok = await this.fileExists(spec.command);
|
|
48
|
+
if (!ok) {
|
|
49
|
+
errors.push(`Файл команды не найден: ${spec.command}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (spec.command === 'node') {
|
|
53
|
+
const scriptPath = resolveExecutablePath(spec);
|
|
54
|
+
if (!scriptPath) {
|
|
55
|
+
errors.push('Для команды `node` не найден абсолютный путь к скрипту в args');
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const ok = await this.fileExists(scriptPath);
|
|
59
|
+
if (!ok) {
|
|
60
|
+
errors.push(`Скрипт не найден: ${scriptPath}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (spec.env && typeof spec.env === 'object') {
|
|
65
|
+
for (const [key, value] of Object.entries(spec.env)) {
|
|
66
|
+
if (typeof value !== 'string') {
|
|
67
|
+
errors.push(`Значение env.${key} должно быть строкой, получено: ${typeof value}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
62
70
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (!validLevels.includes(config.logLevel)) {
|
|
67
|
-
errors.push(`Неверный уровень логирования: ${config.logLevel}. Допустимые: ${validLevels.join(', ')}`);
|
|
71
|
+
if (spec.cwd !== undefined) {
|
|
72
|
+
if (!path.isAbsolute(spec.cwd)) {
|
|
73
|
+
errors.push(`Рабочая директория (cwd) должна быть абсолютным путём: ${spec.cwd}`);
|
|
68
74
|
}
|
|
75
|
+
else {
|
|
76
|
+
const ok = await this.fileExists(spec.cwd);
|
|
77
|
+
if (!ok) {
|
|
78
|
+
errors.push(`Рабочая директория (cwd) не найдена: ${spec.cwd}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return errors;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Проверка существования файла без выброса исключений.
|
|
86
|
+
*/
|
|
87
|
+
async fileExists(filePath) {
|
|
88
|
+
try {
|
|
89
|
+
await fs.access(filePath);
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return false;
|
|
69
94
|
}
|
|
70
|
-
return Promise.resolve(errors);
|
|
71
95
|
}
|
|
72
96
|
/**
|
|
73
97
|
* Проверить поддержку текущей платформы
|
|
74
98
|
* @returns true если текущая платформа поддерживается клиентом
|
|
75
|
-
*
|
|
76
|
-
* @example
|
|
77
|
-
* ```typescript
|
|
78
|
-
* async connect(config: TConfig): Promise<void> {
|
|
79
|
-
* if (!this.isPlatformSupported()) {
|
|
80
|
-
* throw new Error(`Платформа ${this.getCurrentPlatform()} не поддерживается`);
|
|
81
|
-
* }
|
|
82
|
-
* // ... rest of connect logic
|
|
83
|
-
* }
|
|
84
|
-
* ```
|
|
85
99
|
*/
|
|
86
100
|
isPlatformSupported() {
|
|
87
101
|
const platform = os.platform();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-connector.js","sourceRoot":"","sources":["../../../src/connectors/base/base-connector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"base-connector.js","sourceRoot":"","sources":["../../../src/connectors/base/base-connector.ts"],"names":[],"mappings":"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"}
|