@redonvn/cli 0.1.6 → 0.1.9

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 (39) hide show
  1. package/dist/auth/permissions.d.ts +20 -0
  2. package/dist/auth/permissions.js +73 -0
  3. package/dist/auth/permissions.js.map +1 -0
  4. package/dist/auth/store.d.ts +1 -0
  5. package/dist/auth/store.js.map +1 -1
  6. package/dist/build-info.d.ts +2 -2
  7. package/dist/build-info.js +2 -2
  8. package/dist/cli/commands/ask.d.ts +1 -0
  9. package/dist/cli/commands/ask.js +451 -0
  10. package/dist/cli/commands/ask.js.map +1 -0
  11. package/dist/cli/commands/mcp.d.ts +20 -0
  12. package/dist/cli/commands/mcp.js +175 -0
  13. package/dist/cli/commands/mcp.js.map +1 -0
  14. package/dist/cli/commands/permission.d.ts +1 -0
  15. package/dist/cli/commands/permission.js +176 -0
  16. package/dist/cli/commands/permission.js.map +1 -0
  17. package/dist/cli/index.js +67 -2
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli-router/detect.js +6 -0
  20. package/dist/cli-router/detect.js.map +1 -1
  21. package/dist/config.d.ts +1 -1
  22. package/dist/daemon/tunnel.js +2 -0
  23. package/dist/daemon/tunnel.js.map +1 -1
  24. package/dist/mcp/client.d.ts +14 -0
  25. package/dist/mcp/client.js +51 -0
  26. package/dist/mcp/client.js.map +1 -0
  27. package/dist/mcp/config.d.ts +65 -0
  28. package/dist/mcp/config.js +132 -0
  29. package/dist/mcp/config.js.map +1 -0
  30. package/dist/tools/mcp-call.d.ts +1 -0
  31. package/dist/tools/mcp-call.js +20 -0
  32. package/dist/tools/mcp-call.js.map +1 -0
  33. package/dist/tools/mcp-list.d.ts +13 -0
  34. package/dist/tools/mcp-list.js +43 -0
  35. package/dist/tools/mcp-list.js.map +1 -0
  36. package/dist/tools/registry.d.ts +1 -1
  37. package/dist/tools/registry.js +9 -0
  38. package/dist/tools/registry.js.map +1 -1
  39. package/package.json +2 -1
@@ -0,0 +1,175 @@
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.mcpListCommand = mcpListCommand;
7
+ exports.mcpAddCommand = mcpAddCommand;
8
+ exports.mcpRemoveCommand = mcpRemoveCommand;
9
+ exports.mcpTestCommand = mcpTestCommand;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const prompts_1 = __importDefault(require("prompts"));
12
+ const config_1 = require("../../mcp/config");
13
+ const client_1 = require("../../mcp/client");
14
+ /**
15
+ * redai mcp list
16
+ * List tất cả MCP server đã config và tool available của từng server.
17
+ */
18
+ async function mcpListCommand() {
19
+ const servers = (0, config_1.loadMcpConfig)();
20
+ const names = Object.keys(servers);
21
+ if (names.length === 0) {
22
+ console.log(chalk_1.default.yellow('No MCP servers configured.'));
23
+ console.log(chalk_1.default.dim(`Add servers to: ${(0, config_1.getMcpConfigPath)()}`));
24
+ console.log();
25
+ console.log(chalk_1.default.dim('Example ~/.redai/mcp.json:'));
26
+ console.log(chalk_1.default.dim(JSON.stringify({
27
+ servers: {
28
+ chrome: {
29
+ command: 'npx',
30
+ args: ['-y', '@modelcontextprotocol/server-puppeteer'],
31
+ transport: 'stdio',
32
+ },
33
+ },
34
+ }, null, 2)));
35
+ return;
36
+ }
37
+ console.log(chalk_1.default.cyan(`MCP servers (${names.length})`), chalk_1.default.dim((0, config_1.getMcpConfigPath)()));
38
+ console.log();
39
+ for (const name of names) {
40
+ const cfg = servers[name];
41
+ console.log(` ${chalk_1.default.bold(name)} ${chalk_1.default.dim(`${cfg.command} ${(cfg.args ?? []).join(' ')}`)}`);
42
+ try {
43
+ const client = await client_1.mcpClientPool.getClient(name);
44
+ const { tools } = await client.listTools();
45
+ if (tools.length === 0) {
46
+ console.log(chalk_1.default.dim(' (no tools)'));
47
+ }
48
+ else {
49
+ for (const t of tools) {
50
+ console.log(` ${chalk_1.default.green('✓')} ${t.name}${t.description ? chalk_1.default.dim(' — ' + t.description) : ''}`);
51
+ }
52
+ }
53
+ }
54
+ catch (err) {
55
+ console.log(` ${chalk_1.default.red('✗')} ${err instanceof Error ? err.message : String(err)}`);
56
+ }
57
+ console.log();
58
+ }
59
+ await client_1.mcpClientPool.shutdown();
60
+ }
61
+ /**
62
+ * redai mcp add [server]
63
+ * Thêm MCP server vào ~/.redai/mcp.json từ catalog hoặc theo tên trực tiếp.
64
+ */
65
+ async function mcpAddCommand(serverArg) {
66
+ const existing = (0, config_1.loadMcpConfig)();
67
+ // Direct add by name from catalog
68
+ if (serverArg) {
69
+ const entry = config_1.MCP_CATALOG.find((e) => e.name === serverArg);
70
+ if (!entry) {
71
+ console.error(chalk_1.default.red(`Server "${serverArg}" not found in catalog.`));
72
+ console.error(chalk_1.default.dim(`Available: ${config_1.MCP_CATALOG.map((e) => e.name).join(', ')}`));
73
+ process.exitCode = 1;
74
+ return;
75
+ }
76
+ if (existing[entry.name]) {
77
+ console.log(chalk_1.default.yellow(`"${entry.name}" is already configured. Use 'redai mcp remove ${entry.name}' first.`));
78
+ return;
79
+ }
80
+ existing[entry.name] = entry.config;
81
+ (0, config_1.saveMcpConfig)(existing);
82
+ console.log(chalk_1.default.green(`✓ Added "${entry.name}" to ${(0, config_1.getMcpConfigPath)()}`));
83
+ if (entry.config.env) {
84
+ const keys = Object.keys(entry.config.env);
85
+ console.log(chalk_1.default.yellow(` Set env vars: ${keys.join(', ')}`));
86
+ console.log(chalk_1.default.dim(` Edit ${(0, config_1.getMcpConfigPath)()} to fill in your credentials.`));
87
+ }
88
+ return;
89
+ }
90
+ // Interactive catalog picker
91
+ const choices = config_1.MCP_CATALOG.map((entry) => ({
92
+ title: chalk_1.default.bold(entry.name),
93
+ description: `${entry.description} · ${chalk_1.default.dim(entry.tools)}`,
94
+ value: entry.name,
95
+ disabled: !!existing[entry.name],
96
+ }));
97
+ const response = await (0, prompts_1.default)([
98
+ {
99
+ type: 'multiselect',
100
+ name: 'servers',
101
+ message: 'Select MCP servers to add (space to toggle, enter to confirm):',
102
+ choices,
103
+ hint: '(already added servers are disabled)',
104
+ },
105
+ ]);
106
+ if (!response.servers || response.servers.length === 0) {
107
+ console.log(chalk_1.default.dim('No servers selected.'));
108
+ return;
109
+ }
110
+ const selected = response.servers;
111
+ for (const name of selected) {
112
+ const entry = config_1.MCP_CATALOG.find((e) => e.name === name);
113
+ existing[name] = entry.config;
114
+ console.log(chalk_1.default.green(` ✓ ${name}`));
115
+ if (entry.config.env) {
116
+ const keys = Object.keys(entry.config.env);
117
+ console.log(chalk_1.default.yellow(` Set env vars: ${keys.join(', ')}`));
118
+ }
119
+ }
120
+ (0, config_1.saveMcpConfig)(existing);
121
+ console.log();
122
+ console.log(chalk_1.default.cyan(`Saved to ${(0, config_1.getMcpConfigPath)()}`));
123
+ if (selected.some((n) => config_1.MCP_CATALOG.find((e) => e.name === n)?.config.env)) {
124
+ console.log(chalk_1.default.dim(`Edit the file to fill in your API keys / tokens.`));
125
+ }
126
+ }
127
+ /**
128
+ * redai mcp remove <server>
129
+ * Xóa MCP server khỏi ~/.redai/mcp.json.
130
+ */
131
+ async function mcpRemoveCommand(serverName) {
132
+ const existing = (0, config_1.loadMcpConfig)();
133
+ if (!(serverName in existing)) {
134
+ console.error(chalk_1.default.red(`Server "${serverName}" not found in config.`));
135
+ console.error(chalk_1.default.dim(`Configured: ${Object.keys(existing).join(', ') || '(none)'}`));
136
+ process.exitCode = 1;
137
+ return;
138
+ }
139
+ delete existing[serverName];
140
+ (0, config_1.saveMcpConfig)(existing);
141
+ console.log(chalk_1.default.green(`✓ Removed "${serverName}" from ${(0, config_1.getMcpConfigPath)()}`));
142
+ }
143
+ /**
144
+ * redai mcp test <server>
145
+ * Ping 1 MCP server cụ thể — spawn, list tools, verify hoạt động.
146
+ */
147
+ async function mcpTestCommand(serverName) {
148
+ const servers = (0, config_1.loadMcpConfig)();
149
+ if (!(serverName in servers)) {
150
+ console.error(chalk_1.default.red(`Server "${serverName}" not found in ~/.redai/mcp.json`));
151
+ console.error(chalk_1.default.dim(`Available: ${Object.keys(servers).join(', ') || '(none)'}`));
152
+ process.exitCode = 1;
153
+ return;
154
+ }
155
+ const cfg = servers[serverName];
156
+ console.log(chalk_1.default.dim(`Testing MCP server: ${chalk_1.default.bold(serverName)}`));
157
+ console.log(chalk_1.default.dim(` command: ${cfg.command} ${(cfg.args ?? []).join(' ')}`));
158
+ console.log();
159
+ try {
160
+ const client = await client_1.mcpClientPool.getClient(serverName);
161
+ const { tools } = await client.listTools();
162
+ console.log(chalk_1.default.green(`✓ Connected. ${tools.length} tool(s) available:`));
163
+ for (const t of tools) {
164
+ console.log(` • ${chalk_1.default.bold(t.name)}${t.description ? chalk_1.default.dim(' — ' + t.description) : ''}`);
165
+ }
166
+ }
167
+ catch (err) {
168
+ console.error(chalk_1.default.red('✗ Failed:'), err instanceof Error ? err.message : String(err));
169
+ process.exitCode = 1;
170
+ }
171
+ finally {
172
+ await client_1.mcpClientPool.shutdown();
173
+ }
174
+ }
175
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":";;;;;AASA,wCAoDC;AAMD,sCAmEC;AAMD,4CAWC;AAMD,wCA4BC;AAzLD,kDAA0B;AAC1B,sDAA8B;AAC9B,6CAA+F;AAC/F,6CAAiD;AAEjD;;;GAGG;AACI,KAAK,UAAU,cAAc;IAClC,MAAM,OAAO,GAAG,IAAA,sBAAa,GAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mBAAmB,IAAA,yBAAgB,GAAE,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,GAAG,CACP,IAAI,CAAC,SAAS,CACZ;YACE,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,CAAC,IAAI,EAAE,wCAAwC,CAAC;oBACtD,SAAS,EAAE,OAAO;iBACnB;aACF;SACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,eAAK,CAAC,GAAG,CAAC,IAAA,yBAAgB,GAAE,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,sBAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5G,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,MAAM,sBAAa,CAAC,QAAQ,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,aAAa,CAAC,SAAkB;IACpD,MAAM,QAAQ,GAAG,IAAA,sBAAa,GAAE,CAAC;IAEjC,kCAAkC;IAClC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,oBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,SAAS,yBAAyB,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,oBAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,kDAAkD,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;YAChH,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACpC,IAAA,sBAAa,EAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,IAAI,QAAQ,IAAA,yBAAgB,GAAE,EAAE,CAAC,CAAC,CAAC;QAC7E,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,IAAA,yBAAgB,GAAE,+BAA+B,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,OAAO;IACT,CAAC;IAED,6BAA6B;IAC7B,MAAM,OAAO,GAAG,oBAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,KAAK,EAAE,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,MAAM,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC/D,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;KACjC,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAO,EAAC;QAC7B;YACE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,gEAAgE;YACzE,OAAO;YACP,IAAI,EAAE,sCAAsC;SAC7C;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAK,QAAQ,CAAC,OAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAmB,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,oBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAE,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,IAAA,sBAAa,EAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,IAAA,yBAAgB,GAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACvD,MAAM,QAAQ,GAAG,IAAA,sBAAa,GAAE,CAAC;IACjC,IAAI,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,UAAU,wBAAwB,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;QACxF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5B,IAAA,sBAAa,EAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,UAAU,UAAU,IAAA,yBAAgB,GAAE,EAAE,CAAC,CAAC,CAAC;AACnF,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,cAAc,CAAC,UAAkB;IACrD,MAAM,OAAO,GAAG,IAAA,sBAAa,GAAE,CAAC;IAEhC,IAAI,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,UAAU,kCAAkC,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,uBAAuB,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,sBAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,MAAM,qBAAqB,CAAC,CAAC,CAAC;QAC5E,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,MAAM,sBAAa,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function permissionCommand(argv: string[]): Promise<void>;
@@ -0,0 +1,176 @@
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.permissionCommand = permissionCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const prompts_1 = __importDefault(require("prompts"));
9
+ const permissions_1 = require("../../auth/permissions");
10
+ // ─── Group tools by category for a cleaner display ────────────────────────────
11
+ const TOOL_GROUPS = [
12
+ { label: 'File System', tools: ['Read', 'Write', 'Edit', 'Grep', 'Glob'] },
13
+ { label: 'Shell', tools: ['Bash'] },
14
+ { label: 'Network', tools: ['WebFetch'] },
15
+ { label: 'AI Agents', tools: ['RunClaude', 'RunCodex', 'RunGemini', 'LLMRequest'] },
16
+ { label: 'MCP', tools: ['McpCall', 'McpList'] },
17
+ ];
18
+ const TOOL_DESC = {
19
+ Read: 'Read file contents',
20
+ Write: 'Create / overwrite files',
21
+ Edit: 'Find-and-replace inside files',
22
+ Grep: 'Search file content (ripgrep)',
23
+ Glob: 'Find files by pattern',
24
+ Bash: 'Run shell commands ⚠ high-risk',
25
+ WebFetch: 'Fetch URLs from this machine',
26
+ RunClaude: 'Spawn Claude Code agent',
27
+ RunCodex: 'Spawn Codex CLI agent',
28
+ RunGemini: 'Spawn Gemini CLI agent',
29
+ LLMRequest: 'Proxy LLM API via OAuth token',
30
+ McpCall: 'Call MCP server tool',
31
+ McpList: 'List MCP server tools',
32
+ };
33
+ // ─── Plain list (non-interactive fallback) ─────────────────────────────────────
34
+ function printList() {
35
+ const perms = (0, permissions_1.loadPermissions)();
36
+ console.log();
37
+ console.log(chalk_1.default.bold.cyan(' RedAI CLI — Tool Permissions'));
38
+ console.log(chalk_1.default.dim(' ~/.redai/permissions.json'));
39
+ console.log();
40
+ for (const group of TOOL_GROUPS) {
41
+ console.log(chalk_1.default.bold(` ${group.label}`));
42
+ for (const name of group.tools) {
43
+ const disabled = perms[name] === false;
44
+ const badge = disabled
45
+ ? chalk_1.default.bgRed.white(' DISABLED ')
46
+ : chalk_1.default.bgGreen.black(' ENABLED ');
47
+ const desc = chalk_1.default.dim(TOOL_DESC[name]);
48
+ console.log(` ${badge} ${chalk_1.default.bold(name.padEnd(12))} ${desc}`);
49
+ }
50
+ console.log();
51
+ }
52
+ const disabledCount = permissions_1.ALL_TOOL_NAMES.filter((n) => perms[n] === false).length;
53
+ if (disabledCount > 0) {
54
+ console.log(chalk_1.default.yellow(` ${disabledCount} tool(s) disabled.`));
55
+ }
56
+ else {
57
+ console.log(chalk_1.default.green(' All tools enabled.'));
58
+ }
59
+ console.log();
60
+ console.log(chalk_1.default.dim(' Run `redai permission` (no args) for interactive mode.'));
61
+ console.log();
62
+ }
63
+ // ─── Interactive multi-select with checkboxes ─────────────────────────────────
64
+ async function interactiveMode() {
65
+ const perms = (0, permissions_1.loadPermissions)();
66
+ // Build choices: currently-enabled tools are pre-selected
67
+ const choices = permissions_1.ALL_TOOL_NAMES.map((name) => ({
68
+ title: `${chalk_1.default.bold(name.padEnd(14))} ${chalk_1.default.dim(TOOL_DESC[name])}`,
69
+ value: name,
70
+ selected: perms[name] !== false, // default = enabled
71
+ }));
72
+ console.log();
73
+ console.log(chalk_1.default.bold.cyan(' RedAI CLI — Tool Permissions'));
74
+ console.log(chalk_1.default.dim(' Use ↑↓ to move, Space to toggle, A to select all, Enter to save.\n'));
75
+ const response = await (0, prompts_1.default)({
76
+ type: 'multiselect',
77
+ name: 'enabled',
78
+ message: 'Select tools to ENABLE on this machine',
79
+ choices,
80
+ hint: '- Space to toggle, Enter to confirm',
81
+ instructions: false,
82
+ }, {
83
+ onCancel: () => {
84
+ console.log(chalk_1.default.yellow('\nCancelled — no changes saved.'));
85
+ process.exit(0);
86
+ },
87
+ });
88
+ // response.enabled = string[] of selected tool names
89
+ const enabledSet = new Set(response.enabled);
90
+ const newPerms = {};
91
+ for (const name of permissions_1.ALL_TOOL_NAMES) {
92
+ newPerms[name] = enabledSet.has(name);
93
+ }
94
+ (0, permissions_1.savePermissions)(newPerms);
95
+ // ── Summary ──────────────────────────────────────────────────────────────────
96
+ console.log();
97
+ const nowDisabled = permissions_1.ALL_TOOL_NAMES.filter((n) => newPerms[n] === false);
98
+ const nowEnabled = permissions_1.ALL_TOOL_NAMES.filter((n) => newPerms[n] !== false);
99
+ if (nowDisabled.length === 0) {
100
+ console.log(chalk_1.default.green(' ✓ All tools enabled. Permissions saved.'));
101
+ }
102
+ else {
103
+ console.log(chalk_1.default.green(` ✓ ${nowEnabled.length} enabled, ${nowDisabled.length} disabled. Permissions saved.`));
104
+ console.log();
105
+ console.log(chalk_1.default.yellow(' Disabled tools:'));
106
+ for (const name of nowDisabled) {
107
+ console.log(` ${chalk_1.default.red('✗')} ${name}`);
108
+ }
109
+ }
110
+ console.log();
111
+ }
112
+ // ─── Single-tool subcommands (non-interactive, scriptable) ────────────────────
113
+ function resolveToolName(input) {
114
+ const match = permissions_1.ALL_TOOL_NAMES.find((n) => n.toLowerCase() === input.toLowerCase());
115
+ if (!match) {
116
+ console.error(chalk_1.default.red(`Unknown tool: ${input}`));
117
+ console.error(chalk_1.default.dim(`Valid tools: ${permissions_1.ALL_TOOL_NAMES.join(', ')}`));
118
+ return null;
119
+ }
120
+ return match;
121
+ }
122
+ async function enableCommand(toolName) {
123
+ const tool = resolveToolName(toolName);
124
+ if (!tool) {
125
+ process.exitCode = 1;
126
+ return;
127
+ }
128
+ (0, permissions_1.setToolPermission)(tool, true);
129
+ console.log(chalk_1.default.green(`✓ ${tool} enabled`));
130
+ }
131
+ async function disableCommand(toolName) {
132
+ const tool = resolveToolName(toolName);
133
+ if (!tool) {
134
+ process.exitCode = 1;
135
+ return;
136
+ }
137
+ (0, permissions_1.setToolPermission)(tool, false);
138
+ console.log(chalk_1.default.yellow(`✗ ${tool} disabled`));
139
+ }
140
+ // ─── Entry point ──────────────────────────────────────────────────────────────
141
+ async function permissionCommand(argv) {
142
+ const sub = argv[0];
143
+ // No subcommand → interactive TUI
144
+ if (!sub) {
145
+ await interactiveMode();
146
+ return;
147
+ }
148
+ if (sub === 'list') {
149
+ printList();
150
+ return;
151
+ }
152
+ if (sub === 'enable') {
153
+ const tool = argv[1];
154
+ if (!tool) {
155
+ console.error(chalk_1.default.red('Usage: redai permission enable <tool>'));
156
+ process.exitCode = 1;
157
+ return;
158
+ }
159
+ await enableCommand(tool);
160
+ return;
161
+ }
162
+ if (sub === 'disable') {
163
+ const tool = argv[1];
164
+ if (!tool) {
165
+ console.error(chalk_1.default.red('Usage: redai permission disable <tool>'));
166
+ process.exitCode = 1;
167
+ return;
168
+ }
169
+ await disableCommand(tool);
170
+ return;
171
+ }
172
+ console.error(chalk_1.default.red(`Unknown subcommand: ${sub}`));
173
+ console.error(chalk_1.default.dim('Usage: redai permission [list | enable <tool> | disable <tool>]'));
174
+ process.exitCode = 1;
175
+ }
176
+ //# sourceMappingURL=permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.js","sourceRoot":"","sources":["../../../src/cli/commands/permission.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -9,12 +9,16 @@ const config_1 = require("../config");
9
9
  const login_1 = require("./commands/login");
10
10
  const logout_1 = require("./commands/logout");
11
11
  const oauth_1 = require("./commands/oauth");
12
+ const mcp_1 = require("./commands/mcp");
13
+ const ask_1 = require("./commands/ask");
14
+ const permission_1 = require("./commands/permission");
12
15
  const serve_1 = require("./commands/serve");
13
16
  const start_1 = require("./commands/start");
14
17
  const status_1 = require("./commands/status");
15
18
  function parseArgs(argv) {
16
19
  const args = argv.slice(2);
17
- const command = args[0] ?? 'help';
20
+ // No argument enter interactive shell
21
+ const command = args[0] ?? '__shell__';
18
22
  const flags = {};
19
23
  for (let i = 1; i < args.length; i++) {
20
24
  const token = args[i];
@@ -36,6 +40,7 @@ function printHelp() {
36
40
  console.log(`${chalk_1.default.cyan('redai')} ${chalk_1.default.dim(`v${config_1.CLI_VERSION}`)}`);
37
41
  console.log();
38
42
  console.log('Usage:');
43
+ console.log(' redai Enter RedAI interactive shell');
39
44
  console.log(' redai login [--env dev|prod] [--api-key <k>] [--api-url <url>] Login RedAI');
40
45
  console.log(' redai status Show current login + capabilities');
41
46
  console.log(' redai start Connect WS, keep tools online');
@@ -58,12 +63,31 @@ function printHelp() {
58
63
  console.log(' redai oauth list List all OAuth accounts');
59
64
  console.log(' redai oauth logout <provider> [<account>] Remove a provider login');
60
65
  console.log();
66
+ console.log();
67
+ console.log('MCP servers:');
68
+ console.log(' redai mcp list List configured MCP servers and their tools');
69
+ console.log(' redai mcp add [server] Add MCP server from catalog (interactive or by name)');
70
+ console.log(' redai mcp remove <server> Remove a configured MCP server');
71
+ console.log(' redai mcp test <server> Ping an MCP server, verify tools available');
72
+ console.log();
73
+ console.log('Local permissions:');
74
+ console.log(' redai permission list Show all tools and their enabled/disabled status');
75
+ console.log(' redai permission enable <tool> Allow a tool to run on this machine');
76
+ console.log(' redai permission disable <tool> Block a tool from running on this machine');
77
+ console.log();
61
78
  console.log(' redai help Show this help');
62
79
  }
63
80
  async function main() {
64
81
  const { command, flags } = parseArgs(process.argv);
65
82
  try {
66
83
  switch (command) {
84
+ // No command → enter RedAI interactive shell
85
+ case '__shell__':
86
+ await (0, ask_1.askCommand)();
87
+ return;
88
+ case 'ask':
89
+ await (0, ask_1.askCommand)();
90
+ return;
67
91
  case 'login':
68
92
  await (0, login_1.loginCommand)({
69
93
  env: typeof flags['env'] === 'string' ? flags['env'] : undefined,
@@ -116,12 +140,53 @@ async function main() {
116
140
  });
117
141
  return;
118
142
  }
143
+ case 'permission': {
144
+ await (0, permission_1.permissionCommand)(process.argv.slice(3));
145
+ return;
146
+ }
147
+ case 'mcp': {
148
+ const sub = process.argv[3];
149
+ if (!sub || sub === 'list') {
150
+ await (0, mcp_1.mcpListCommand)();
151
+ return;
152
+ }
153
+ if (sub === 'add') {
154
+ const server = process.argv[4];
155
+ await (0, mcp_1.mcpAddCommand)(server);
156
+ return;
157
+ }
158
+ if (sub === 'remove') {
159
+ const server = process.argv[4];
160
+ if (!server) {
161
+ console.error(chalk_1.default.red('Usage: redai mcp remove <server>'));
162
+ process.exit(1);
163
+ }
164
+ await (0, mcp_1.mcpRemoveCommand)(server);
165
+ return;
166
+ }
167
+ if (sub === 'test') {
168
+ const server = process.argv[4];
169
+ if (!server) {
170
+ console.error(chalk_1.default.red('Usage: redai mcp test <server>'));
171
+ process.exit(1);
172
+ }
173
+ await (0, mcp_1.mcpTestCommand)(server);
174
+ return;
175
+ }
176
+ console.error(chalk_1.default.red(`Unknown mcp subcommand: ${sub}`));
177
+ console.error(chalk_1.default.dim('Usage: redai mcp [list|add|remove|test]'));
178
+ process.exit(1);
179
+ }
119
180
  case 'help':
120
181
  case '--help':
121
182
  case '-h':
122
- default:
123
183
  printHelp();
124
184
  return;
185
+ default:
186
+ console.error(chalk_1.default.red(`Unknown command: ${command}`));
187
+ console.error(chalk_1.default.dim('Run `redai help` to see available commands.'));
188
+ process.exitCode = 1;
189
+ return;
125
190
  }
126
191
  }
127
192
  catch (err) {
@@ -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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"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.detectCapabilities = detectCapabilities;
4
4
  const child_process_1 = require("child_process");
5
5
  const store_1 = require("../llm/oauth/store");
6
+ const config_1 = require("../mcp/config");
6
7
  /**
7
8
  * Detect AI-Agent CLI có sẵn trên máy. Trả:
8
9
  * - capabilities: tổng hợp gồm 3 nhóm:
@@ -37,6 +38,11 @@ function detectCapabilities() {
37
38
  capabilities.push(`llm-${provider}`);
38
39
  }
39
40
  }
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)) {
44
+ capabilities.push(`mcp-${serverName}`);
45
+ }
40
46
  return { capabilities, cliDetected };
41
47
  }
42
48
  function sniffVersion(binary) {
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/cli-router/detect.ts"],"names":[],"mappings":";;AAYA,gDAiCC;AA7CD,iDAA0C;AAE1C,8CAAkD;AAElD;;;;;;;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,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,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"}
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.6";
4
+ export declare const CLI_VERSION = "0.1.9";
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;
@@ -10,6 +10,7 @@ const socket_io_client_1 = require("socket.io-client");
10
10
  const cli_protocol_1 = require("@redonvn/cli-protocol");
11
11
  const config_1 = require("../config");
12
12
  const detect_1 = require("../cli-router/detect");
13
+ const client_1 = require("../mcp/client");
13
14
  const router_1 = require("./router");
14
15
  let activeSocket = null;
15
16
  let heartbeatTimer = null;
@@ -151,6 +152,7 @@ async function shutdown(code) {
151
152
  }
152
153
  activeSocket = null;
153
154
  }
155
+ await client_1.mcpClientPool.shutdown();
154
156
  process.exit(code);
155
157
  }
156
158
  //# sourceMappingURL=tunnel.js.map
@@ -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 { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ /**
3
+ * Singleton pool giữ kết nối MCP client cho từng server.
4
+ * Lazy spawn — chỉ connect khi có tool call đầu tiên đến server đó.
5
+ * Auto-reconnect: nếu transport bị đóng, xóa khỏi pool → lần sau sẽ spawn lại.
6
+ */
7
+ declare class McpClientPool {
8
+ private pool;
9
+ getClient(serverName: string): Promise<Client>;
10
+ shutdown(): Promise<void>;
11
+ listConnected(): string[];
12
+ }
13
+ export declare const mcpClientPool: McpClientPool;
14
+ export {};