@redonvn/cli 0.1.10 → 0.1.12

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 (52) hide show
  1. package/dist/api/agent.d.ts +7 -0
  2. package/dist/api/agent.js +18 -0
  3. package/dist/api/agent.js.map +1 -0
  4. package/dist/api/auth.d.ts +5 -0
  5. package/dist/api/auth.js +14 -0
  6. package/dist/api/auth.js.map +1 -0
  7. package/dist/api/chat.d.ts +22 -0
  8. package/dist/api/chat.js +231 -0
  9. package/dist/api/chat.js.map +1 -0
  10. package/dist/auth/store.d.ts +7 -0
  11. package/dist/auth/store.js +17 -0
  12. package/dist/auth/store.js.map +1 -1
  13. package/dist/build-info.d.ts +2 -2
  14. package/dist/build-info.js +3 -3
  15. package/dist/build-info.js.map +1 -1
  16. package/dist/cli/commands/ask.js +1066 -324
  17. package/dist/cli/commands/ask.js.map +1 -1
  18. package/dist/cli/commands/login.d.ts +0 -1
  19. package/dist/cli/commands/login.js +7 -18
  20. package/dist/cli/commands/login.js.map +1 -1
  21. package/dist/cli/commands/logs.d.ts +4 -0
  22. package/dist/cli/commands/logs.js +66 -0
  23. package/dist/cli/commands/logs.js.map +1 -0
  24. package/dist/cli/commands/mcp.d.ts +3 -16
  25. package/dist/cli/commands/mcp.js +191 -74
  26. package/dist/cli/commands/mcp.js.map +1 -1
  27. package/dist/cli/commands/start.d.ts +7 -1
  28. package/dist/cli/commands/start.js +61 -2
  29. package/dist/cli/commands/start.js.map +1 -1
  30. package/dist/cli/commands/status.js +3 -5
  31. package/dist/cli/commands/status.js.map +1 -1
  32. package/dist/cli/commands/stop.d.ts +1 -0
  33. package/dist/cli/commands/stop.js +53 -0
  34. package/dist/cli/commands/stop.js.map +1 -0
  35. package/dist/cli/index.js +42 -3
  36. package/dist/cli/index.js.map +1 -1
  37. package/dist/cli-router/detect.d.ts +2 -1
  38. package/dist/cli-router/detect.js +10 -3
  39. package/dist/cli-router/detect.js.map +1 -1
  40. package/dist/config.d.ts +1 -1
  41. package/dist/daemon/tunnel.js +4 -3
  42. package/dist/daemon/tunnel.js.map +1 -1
  43. package/dist/mcp/chrome-launcher.d.ts +14 -0
  44. package/dist/mcp/chrome-launcher.js +114 -0
  45. package/dist/mcp/chrome-launcher.js.map +1 -0
  46. package/dist/mcp/client.d.ts +1 -0
  47. package/dist/mcp/client.js +9 -2
  48. package/dist/mcp/client.js.map +1 -1
  49. package/dist/mcp/config.d.ts +17 -9
  50. package/dist/mcp/config.js +134 -23
  51. package/dist/mcp/config.js.map +1 -1
  52. package/package.json +4 -2
package/dist/cli/index.js CHANGED
@@ -15,6 +15,8 @@ const permission_1 = require("./commands/permission");
15
15
  const serve_1 = require("./commands/serve");
16
16
  const start_1 = require("./commands/start");
17
17
  const status_1 = require("./commands/status");
18
+ const logs_1 = require("./commands/logs");
19
+ const stop_1 = require("./commands/stop");
18
20
  function parseArgs(argv) {
19
21
  const args = argv.slice(2);
20
22
  // No argument → enter interactive shell
@@ -43,7 +45,10 @@ function printHelp() {
43
45
  console.log(' redai Enter RedAI interactive shell');
44
46
  console.log(' redai login [--env dev|prod] [--api-key <k>] [--api-url <url>] Login RedAI');
45
47
  console.log(' redai status Show current login + capabilities');
46
- console.log(' redai start Connect WS, keep tools online');
48
+ console.log(' redai start Connect WS, keep tools online (foreground)');
49
+ console.log(' redai start --daemon Chạy nền, ghi log vào ~/.redai/daemon.log');
50
+ console.log(' redai stop Dừng daemon đang chạy nền');
51
+ console.log(' redai logs [--follow] [--lines N] Xem log daemon (--follow/-f để stream)');
47
52
  console.log(' redai serve [--port 8317] [--api-key <k>] HTTP server expose /v1/messages /v1/chat/completions /v1beta');
48
53
  console.log(' redai logout Remove local RedAI token');
49
54
  console.log();
@@ -68,7 +73,10 @@ function printHelp() {
68
73
  console.log(' redai mcp list List configured MCP servers and their tools');
69
74
  console.log(' redai mcp add [server] Add MCP server from catalog (interactive or by name)');
70
75
  console.log(' redai mcp remove <server> Remove a configured MCP server');
76
+ console.log(' redai mcp enable <server> Enable a disabled MCP server');
77
+ console.log(' redai mcp disable <server> Disable an MCP server without removing it');
71
78
  console.log(' redai mcp test <server> Ping an MCP server, verify tools available');
79
+ console.log(' redai mcp chrome-start Launch Chrome with CDP debug profile (for chrome-devtools MCP)');
72
80
  console.log();
73
81
  console.log('Local permissions:');
74
82
  console.log(' redai permission list Show all tools and their enabled/disabled status');
@@ -103,7 +111,16 @@ async function main() {
103
111
  await (0, status_1.statusCommand)();
104
112
  return;
105
113
  case 'start':
106
- await (0, start_1.startCommand)();
114
+ await (0, start_1.startCommand)({ daemon: flags['daemon'] === true || flags['d'] === true });
115
+ return;
116
+ case 'stop':
117
+ (0, stop_1.stopCommand)();
118
+ return;
119
+ case 'logs':
120
+ (0, logs_1.logsCommand)({
121
+ follow: flags['follow'] === true || flags['f'] === true,
122
+ lines: typeof flags['lines'] === 'string' ? parseInt(flags['lines'], 10) : undefined,
123
+ });
107
124
  return;
108
125
  case 'serve':
109
126
  await (0, serve_1.serveCommand)({
@@ -173,8 +190,30 @@ async function main() {
173
190
  await (0, mcp_1.mcpTestCommand)(server);
174
191
  return;
175
192
  }
193
+ if (sub === 'enable') {
194
+ const server = process.argv[4];
195
+ if (!server) {
196
+ console.error(chalk_1.default.red('Usage: redai mcp enable <server>'));
197
+ process.exit(1);
198
+ }
199
+ await (0, mcp_1.mcpEnableCommand)(server);
200
+ return;
201
+ }
202
+ if (sub === 'disable') {
203
+ const server = process.argv[4];
204
+ if (!server) {
205
+ console.error(chalk_1.default.red('Usage: redai mcp disable <server>'));
206
+ process.exit(1);
207
+ }
208
+ await (0, mcp_1.mcpDisableCommand)(server);
209
+ return;
210
+ }
211
+ if (sub === 'chrome-start') {
212
+ await (0, mcp_1.mcpChromeStartCommand)();
213
+ return;
214
+ }
176
215
  console.error(chalk_1.default.red(`Unknown mcp subcommand: ${sub}`));
177
- console.error(chalk_1.default.dim('Usage: redai mcp [list|add|remove|test]'));
216
+ console.error(chalk_1.default.dim('Usage: redai mcp [list|add|remove|enable|disable|test|chrome-start]'));
178
217
  process.exit(1);
179
218
  }
180
219
  case 'help':
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Capability } from '@redonvn/cli-protocol';
1
+ import type { Capability, McpServerInfo } from '@redonvn/cli-protocol';
2
2
  /**
3
3
  * Detect AI-Agent CLI có sẵn trên máy. Trả:
4
4
  * - capabilities: tổng hợp gồm 3 nhóm:
@@ -10,4 +10,5 @@ import type { Capability } from '@redonvn/cli-protocol';
10
10
  export declare function detectCapabilities(): {
11
11
  capabilities: Capability[];
12
12
  cliDetected: Record<string, string>;
13
+ mcpServers: McpServerInfo[];
13
14
  };
@@ -39,11 +39,18 @@ function detectCapabilities() {
39
39
  }
40
40
  }
41
41
  // (4) MCP capabilities — phụ thuộc ~/.redai/mcp.json
42
- const mcpServers = (0, config_1.loadMcpConfig)();
43
- for (const serverName of Object.keys(mcpServers)) {
42
+ const mcpConfig = (0, config_1.loadMcpConfig)();
43
+ const mcpServers = [];
44
+ for (const [serverName, cfg] of Object.entries(mcpConfig)) {
44
45
  capabilities.push(`mcp-${serverName}`);
46
+ mcpServers.push({
47
+ name: serverName,
48
+ command: cfg.command,
49
+ args: cfg.args,
50
+ enabled: cfg.enabled !== false,
51
+ });
45
52
  }
46
- return { capabilities, cliDetected };
53
+ return { capabilities, cliDetected, mcpServers };
47
54
  }
48
55
  function sniffVersion(binary) {
49
56
  for (const arg of ['--version', '-v', 'version']) {
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/cli-router/detect.ts"],"names":[],"mappings":";;AAaA,gDAuCC;AApDD,iDAA0C;AAE1C,8CAAkD;AAClD,0CAA8C;AAE9C;;;;;;;GAOG;AACH,SAAgB,kBAAkB;IAIhC,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAE9E,wDAAwD;IACxD,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,OAAO,EAAE,CAAC;YACZ,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YAC3B,YAAY,CAAC,IAAI,CAAC,GAAiB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,KAAK,MAAM,QAAQ,IAAI;QACrB,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,aAAa;QACb,MAAM;QACN,MAAM;QACN,OAAO;QACP,KAAK;KACG,EAAE,CAAC;QACX,IAAI,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,OAAO,QAAQ,EAAgB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,MAAM,UAAU,GAAG,IAAA,sBAAa,GAAE,CAAC;IACnC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjD,YAAY,CAAC,IAAI,CAAC,OAAO,UAAU,EAAgB,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE;YACtC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAK;YACd,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvD,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;QACnE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/cli-router/detect.ts"],"names":[],"mappings":";;AAaA,gDA+CC;AA5DD,iDAA0C;AAE1C,8CAAkD;AAClD,0CAA8C;AAE9C;;;;;;;GAOG;AACH,SAAgB,kBAAkB;IAKhC,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAE9E,wDAAwD;IACxD,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,OAAO,EAAE,CAAC;YACZ,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YAC3B,YAAY,CAAC,IAAI,CAAC,GAAiB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,KAAK,MAAM,QAAQ,IAAI;QACrB,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,aAAa;QACb,MAAM;QACN,MAAM;QACN,OAAO;QACP,KAAK;KACG,EAAE,CAAC;QACX,IAAI,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,OAAO,QAAQ,EAAgB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,MAAM,SAAS,GAAG,IAAA,sBAAa,GAAE,CAAC;IAClC,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1D,YAAY,CAAC,IAAI,CAAC,OAAO,UAAU,EAAgB,CAAC,CAAC;QACrD,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,KAAK;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE;YACtC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAK;YACd,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvD,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;QACnE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/config.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { BUILD_ENV, BUILD_TIME, PKG_VERSION } from './build-info';
2
2
  export declare const CLI_PACKAGE_NAME = "@redonvn/cli";
3
3
  /** Version đồng bộ với `package.json` lúc build — KHÔNG hardcode. */
4
- export declare const CLI_VERSION = "0.1.10";
4
+ export declare const CLI_VERSION = "0.1.12";
5
5
  /** Re-export build metadata cho status command. */
6
6
  export { BUILD_ENV, BUILD_TIME, PKG_VERSION };
7
7
  export declare const REDAI_CONFIG_DIR: string;
@@ -25,7 +25,7 @@ let startedAt = 0;
25
25
  */
26
26
  async function startDaemon(cfg) {
27
27
  const wsUrl = cfg.wsUrl;
28
- const { capabilities, cliDetected } = (0, detect_1.detectCapabilities)();
28
+ const { capabilities, cliDetected, mcpServers } = (0, detect_1.detectCapabilities)();
29
29
  console.log(chalk_1.default.dim(`[ws] connecting to ${wsUrl}`));
30
30
  // socket.io-client gắn namespace ngay trong URL nếu URL có path. Vì wsUrl
31
31
  // server trả về dạng `wss://.../redai-cli` → tách host + namespace.
@@ -44,7 +44,7 @@ async function startDaemon(cfg) {
44
44
  startedAt = Date.now();
45
45
  socket.on('connect', () => {
46
46
  console.log(chalk_1.default.green('[ws] connected'), chalk_1.default.dim(`socket=${socket.id}`));
47
- sendHello(socket, cfg, capabilities, cliDetected);
47
+ sendHello(socket, cfg, capabilities, cliDetected, mcpServers);
48
48
  startHeartbeat(socket);
49
49
  });
50
50
  socket.on('disconnect', (reason) => {
@@ -74,7 +74,7 @@ async function startDaemon(cfg) {
74
74
  // Block forever — đợi shutdown
75
75
  await new Promise(() => undefined);
76
76
  }
77
- function sendHello(socket, cfg, capabilities, cliDetected) {
77
+ function sendHello(socket, cfg, capabilities, cliDetected, mcpServers) {
78
78
  socket.emit(cli_protocol_1.CLI_SOCKET_EVENTS.ENVELOPE, (0, cli_protocol_1.buildEnvelope)(cli_protocol_1.CLI_ENVELOPE_TYPES.HELLO, {
79
79
  clientId: cfg.clientId,
80
80
  hostname: os_1.default.hostname(),
@@ -82,6 +82,7 @@ function sendHello(socket, cfg, capabilities, cliDetected) {
82
82
  cliVersion: config_1.CLI_VERSION,
83
83
  capabilities,
84
84
  cliDetected,
85
+ mcpServers,
85
86
  }));
86
87
  }
87
88
  function startHeartbeat(socket) {
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/daemon/tunnel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/daemon/tunnel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type ChildProcess } from 'child_process';
2
+ declare const CDP_PORT = 9222;
3
+ declare const DEBUG_PROFILE_DIR: string;
4
+ export declare function findChromePath(): string | null;
5
+ export declare function isCdpAlive(port?: number): Promise<boolean>;
6
+ export interface LaunchResult {
7
+ ok: boolean;
8
+ alreadyRunning: boolean;
9
+ chromePath?: string;
10
+ process?: ChildProcess;
11
+ error?: string;
12
+ }
13
+ export declare function launchChromeForDebug(port?: number): Promise<LaunchResult>;
14
+ export { CDP_PORT, DEBUG_PROFILE_DIR };
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEBUG_PROFILE_DIR = exports.CDP_PORT = void 0;
7
+ exports.findChromePath = findChromePath;
8
+ exports.isCdpAlive = isCdpAlive;
9
+ exports.launchChromeForDebug = launchChromeForDebug;
10
+ const child_process_1 = require("child_process");
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const http_1 = __importDefault(require("http"));
13
+ const os_1 = __importDefault(require("os"));
14
+ const path_1 = __importDefault(require("path"));
15
+ const CDP_PORT = 9222;
16
+ exports.CDP_PORT = CDP_PORT;
17
+ const DEBUG_PROFILE_DIR = path_1.default.join(os_1.default.homedir(), '.redai', 'chrome-debug-profile');
18
+ exports.DEBUG_PROFILE_DIR = DEBUG_PROFILE_DIR;
19
+ // ─── Find Chrome executable ───────────────────────────────────────────────────
20
+ const CHROME_PATHS_WIN = [
21
+ 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
22
+ 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
23
+ process.env['LOCALAPPDATA'] && `${process.env['LOCALAPPDATA']}\\Google\\Chrome\\Application\\chrome.exe`,
24
+ 'C:\\Program Files\\Google\\Chrome Beta\\Application\\chrome.exe',
25
+ 'C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe',
26
+ 'C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe',
27
+ ].filter(Boolean);
28
+ const CHROME_PATHS_MAC = [
29
+ '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
30
+ '/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta',
31
+ '/Applications/Brave Browser.app/Contents/MacOS/Brave Browser',
32
+ '/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge',
33
+ ];
34
+ const CHROME_PATHS_LINUX = [
35
+ '/usr/bin/google-chrome',
36
+ '/usr/bin/google-chrome-stable',
37
+ '/usr/bin/chromium-browser',
38
+ '/usr/bin/chromium',
39
+ '/snap/bin/chromium',
40
+ ];
41
+ function findChromePath() {
42
+ const candidates = process.platform === 'win32' ? CHROME_PATHS_WIN
43
+ : process.platform === 'darwin' ? CHROME_PATHS_MAC
44
+ : CHROME_PATHS_LINUX;
45
+ for (const p of candidates) {
46
+ if (fs_1.default.existsSync(p))
47
+ return p;
48
+ }
49
+ return null;
50
+ }
51
+ // ─── Check if CDP port is already open ───────────────────────────────────────
52
+ function isCdpAlive(port = CDP_PORT) {
53
+ return new Promise((resolve) => {
54
+ const req = http_1.default.get(`http://127.0.0.1:${port}/json/version`, (res) => {
55
+ resolve(res.statusCode === 200);
56
+ res.resume();
57
+ });
58
+ req.on('error', () => resolve(false));
59
+ req.setTimeout(1500, () => { req.destroy(); resolve(false); });
60
+ });
61
+ }
62
+ // ─── Wait until CDP is ready ──────────────────────────────────────────────────
63
+ async function waitForCdp(port = CDP_PORT, timeoutMs = 10000) {
64
+ const deadline = Date.now() + timeoutMs;
65
+ while (Date.now() < deadline) {
66
+ if (await isCdpAlive(port))
67
+ return true;
68
+ await new Promise((r) => setTimeout(r, 300));
69
+ }
70
+ return false;
71
+ }
72
+ async function launchChromeForDebug(port = CDP_PORT) {
73
+ // Already running — nothing to do
74
+ if (await isCdpAlive(port)) {
75
+ return { ok: true, alreadyRunning: true };
76
+ }
77
+ const chromePath = findChromePath();
78
+ if (!chromePath) {
79
+ return {
80
+ ok: false,
81
+ alreadyRunning: false,
82
+ error: 'Chrome not found. Install Google Chrome or set path manually.',
83
+ };
84
+ }
85
+ // Ensure debug profile dir exists
86
+ if (!fs_1.default.existsSync(DEBUG_PROFILE_DIR)) {
87
+ fs_1.default.mkdirSync(DEBUG_PROFILE_DIR, { recursive: true });
88
+ }
89
+ const args = [
90
+ `--remote-debugging-port=${port}`,
91
+ `--user-data-dir=${DEBUG_PROFILE_DIR}`,
92
+ '--no-first-run',
93
+ '--no-default-browser-check',
94
+ '--disable-popup-blocking',
95
+ 'about:blank',
96
+ ];
97
+ const child = (0, child_process_1.spawn)(chromePath, args, {
98
+ detached: true,
99
+ stdio: 'ignore',
100
+ });
101
+ child.unref(); // don't keep Node alive waiting for it
102
+ const ready = await waitForCdp(port);
103
+ if (!ready) {
104
+ return {
105
+ ok: false,
106
+ alreadyRunning: false,
107
+ chromePath,
108
+ process: child,
109
+ error: `Chrome launched but CDP port ${port} not responding after 10s.`,
110
+ };
111
+ }
112
+ return { ok: true, alreadyRunning: false, chromePath, process: child };
113
+ }
114
+ //# sourceMappingURL=chrome-launcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-launcher.js","sourceRoot":"","sources":["../../src/mcp/chrome-launcher.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
3
3
  * Singleton pool giữ kết nối MCP client cho từng server.
4
4
  * Lazy spawn — chỉ connect khi có tool call đầu tiên đến server đó.
5
5
  * Auto-reconnect: nếu transport bị đóng, xóa khỏi pool → lần sau sẽ spawn lại.
6
+ * stderr của child process bị redirect về 'pipe' (không lộ ra terminal).
6
7
  */
7
8
  declare class McpClientPool {
8
9
  private pool;
@@ -4,10 +4,12 @@ exports.mcpClientPool = void 0;
4
4
  const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
5
5
  const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
6
6
  const config_1 = require("./config");
7
+ const CONNECT_TIMEOUT_MS = 15000;
7
8
  /**
8
9
  * Singleton pool giữ kết nối MCP client cho từng server.
9
10
  * Lazy spawn — chỉ connect khi có tool call đầu tiên đến server đó.
10
11
  * Auto-reconnect: nếu transport bị đóng, xóa khỏi pool → lần sau sẽ spawn lại.
12
+ * stderr của child process bị redirect về 'pipe' (không lộ ra terminal).
11
13
  */
12
14
  class McpClientPool {
13
15
  constructor() {
@@ -28,10 +30,15 @@ class McpClientPool {
28
30
  env: cfg.env
29
31
  ? Object.fromEntries(Object.entries({ ...process.env, ...cfg.env }).filter(([, v]) => v !== undefined))
30
32
  : undefined,
33
+ // Suppress npm warnings and child process noise from leaking to terminal
34
+ stderr: 'pipe',
31
35
  });
32
36
  const client = new index_js_1.Client({ name: 'redai-cli', version: '1.0.0' }, { capabilities: {} });
33
- await client.connect(transport);
34
- // Khi transport đóng bất ngờ → xóa khỏi pool để lần sau spawn lại
37
+ // Race connect against timeout so a hung server doesn't block the shell
38
+ await Promise.race([
39
+ client.connect(transport),
40
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`MCP server "${serverName}" timed out after ${CONNECT_TIMEOUT_MS / 1000}s`)), CONNECT_TIMEOUT_MS)),
41
+ ]);
35
42
  transport.onclose = () => {
36
43
  this.pool.delete(serverName);
37
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AACnE,wEAAiF;AACjF,qCAA+D;AAO/D;;;;GAIG;AACH,MAAM,aAAa;IAAnB;QACU,SAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;IA+C9C,CAAC;IA7CC,KAAK,CAAC,SAAS,CAAC,UAAkB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC;QAErC,MAAM,OAAO,GAAG,IAAA,sBAAa,GAAE,CAAC;QAChC,MAAM,GAAG,GAAgC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,kCAAkC,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,+BAAoB,CAAC;YACzC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;YACpB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACV,CAAC,CAAE,MAAM,CAAC,WAAW,CACjB,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CACvD;gBAC9B,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EACvC,EAAE,YAAY,EAAE,EAAE,EAAE,CACrB,CAAC;QAEF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,kEAAkE;QAClE,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC;CACF;AAEY,QAAA,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AACnE,wEAAiF;AACjF,qCAA+D;AAO/D,MAAM,kBAAkB,GAAG,KAAM,CAAC;AAElC;;;;;GAKG;AACH,MAAM,aAAa;IAAnB;QACU,SAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;IAsD9C,CAAC;IApDC,KAAK,CAAC,SAAS,CAAC,UAAkB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC;QAErC,MAAM,OAAO,GAAG,IAAA,sBAAa,GAAE,CAAC;QAChC,MAAM,GAAG,GAAgC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,kCAAkC,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,+BAAoB,CAAC;YACzC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;YACpB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACV,CAAC,CAAE,MAAM,CAAC,WAAW,CACjB,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CACvD;gBAC9B,CAAC,CAAC,SAAS;YACb,yEAAyE;YACzE,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EACvC,EAAE,YAAY,EAAE,EAAE,EAAE,CACrB,CAAC;QAEF,wEAAwE;QACxE,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YACzB,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,UAAU,qBAAqB,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC,CACpI;SACF,CAAC,CAAC;QAEH,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC;CACF;AAEY,QAAA,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
@@ -4,16 +4,19 @@ declare const McpServerConfigSchema: z.ZodObject<{
4
4
  args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
5
5
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
6
6
  transport: z.ZodLiteral<"stdio">;
7
+ enabled: z.ZodOptional<z.ZodBoolean>;
7
8
  }, "strip", z.ZodTypeAny, {
8
9
  command: string;
9
10
  transport: "stdio";
10
- args?: string[] | undefined;
11
11
  env?: Record<string, string> | undefined;
12
+ args?: string[] | undefined;
13
+ enabled?: boolean | undefined;
12
14
  }, {
13
15
  command: string;
14
16
  transport: "stdio";
15
- args?: string[] | undefined;
16
17
  env?: Record<string, string> | undefined;
18
+ args?: string[] | undefined;
19
+ enabled?: boolean | undefined;
17
20
  }>;
18
21
  declare const McpConfigFileSchema: z.ZodObject<{
19
22
  servers: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -21,30 +24,35 @@ declare const McpConfigFileSchema: z.ZodObject<{
21
24
  args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
22
25
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
23
26
  transport: z.ZodLiteral<"stdio">;
27
+ enabled: z.ZodOptional<z.ZodBoolean>;
24
28
  }, "strip", z.ZodTypeAny, {
25
29
  command: string;
26
30
  transport: "stdio";
27
- args?: string[] | undefined;
28
31
  env?: Record<string, string> | undefined;
32
+ args?: string[] | undefined;
33
+ enabled?: boolean | undefined;
29
34
  }, {
30
35
  command: string;
31
36
  transport: "stdio";
32
- args?: string[] | undefined;
33
37
  env?: Record<string, string> | undefined;
38
+ args?: string[] | undefined;
39
+ enabled?: boolean | undefined;
34
40
  }>>;
35
41
  }, "strip", z.ZodTypeAny, {
36
42
  servers: Record<string, {
37
43
  command: string;
38
44
  transport: "stdio";
39
- args?: string[] | undefined;
40
45
  env?: Record<string, string> | undefined;
46
+ args?: string[] | undefined;
47
+ enabled?: boolean | undefined;
41
48
  }>;
42
49
  }, {
43
50
  servers: Record<string, {
44
51
  command: string;
45
52
  transport: "stdio";
46
- args?: string[] | undefined;
47
53
  env?: Record<string, string> | undefined;
54
+ args?: string[] | undefined;
55
+ enabled?: boolean | undefined;
48
56
  }>;
49
57
  }>;
50
58
  export type McpServerConfig = z.infer<typeof McpServerConfigSchema>;
@@ -52,12 +60,12 @@ export type McpConfigFile = z.infer<typeof McpConfigFileSchema>;
52
60
  export declare function loadMcpConfig(): Record<string, McpServerConfig>;
53
61
  export declare function getMcpConfigPath(): string;
54
62
  export declare function saveMcpConfig(servers: Record<string, McpServerConfig>): void;
63
+ /** Returns true if server is installed and not explicitly disabled */
64
+ export declare function isMcpEnabled(cfg: McpServerConfig): boolean;
65
+ export declare function setMcpEnabled(serverName: string, enabled: boolean): void;
55
66
  export interface McpCatalogEntry {
56
- /** Key sẽ dùng trong mcp.json */
57
67
  name: string;
58
- /** Mô tả ngắn cho user */
59
68
  description: string;
60
- /** Các tool nổi bật */
61
69
  tools: string;
62
70
  config: McpServerConfig;
63
71
  }