@redonvn/cli 0.1.5 → 0.1.7
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/dist/auth/permissions.d.ts +20 -0
- package/dist/auth/permissions.js +73 -0
- package/dist/auth/permissions.js.map +1 -0
- package/dist/auth/store.d.ts +0 -3
- package/dist/auth/store.js.map +1 -1
- package/dist/build-info.d.ts +2 -2
- package/dist/build-info.js +2 -2
- package/dist/cli/commands/login.js +16 -9
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +20 -0
- package/dist/cli/commands/mcp.js +175 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/permission.d.ts +1 -0
- package/dist/cli/commands/permission.js +176 -0
- package/dist/cli/commands/permission.js.map +1 -0
- package/dist/cli/commands/start.js +11 -0
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.js +0 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/index.js +51 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli-router/detect.js +6 -0
- package/dist/cli-router/detect.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/daemon/tunnel.js +2 -0
- package/dist/daemon/tunnel.js.map +1 -1
- package/dist/mcp/client.d.ts +14 -0
- package/dist/mcp/client.js +51 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/config.d.ts +65 -0
- package/dist/mcp/config.js +132 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/tools/mcp-call.d.ts +1 -0
- package/dist/tools/mcp-call.js +20 -0
- package/dist/tools/mcp-call.js.map +1 -0
- package/dist/tools/mcp-list.d.ts +13 -0
- package/dist/tools/mcp-list.js +43 -0
- package/dist/tools/mcp-list.js.map +1 -0
- package/dist/tools/registry.d.ts +1 -1
- package/dist/tools/registry.js +9 -0
- package/dist/tools/registry.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":";;;;;AAKA,oCA8BC;AAnCD,kDAA0B;AAC1B,4CAA0D;AAC1D,gDAAkD;AAClD,yCAA6D;AAEtD,KAAK,UAAU,YAAY;IAChC,MAAM,GAAG,GAAG,IAAA,kBAAU,GAAE,CAAC;IACzB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gEAAgE;IAChE,mEAAmE;IACnE,4CAA4C;IAC5C,IAAI,qCAAqC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,0BAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,YAAY,CAAC;QACjE,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,MAAM,CAAC,oCAAoC,GAAG,CAAC,KAAK,qBAAqB,QAAQ,GAAG,CAAC,CAC5F,CAAC;QACF,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;QACrB,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAElD,MAAM,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -23,8 +23,6 @@ async function statusCommand() {
|
|
|
23
23
|
console.log(` ${chalk_1.default.gray('Client ID :')} ${cfg.clientId}`);
|
|
24
24
|
console.log(` ${chalk_1.default.gray('API :')} ${cfg.apiBaseUrl}`);
|
|
25
25
|
console.log(` ${chalk_1.default.gray('WS :')} ${cfg.wsUrl}`);
|
|
26
|
-
console.log(` ${chalk_1.default.gray('Schema :')} ${cfg.projectSchemaId}`);
|
|
27
|
-
console.log(` ${chalk_1.default.gray('Tools :')} ${cfg.registeredTools.join(', ') || '(none)'}`);
|
|
28
26
|
console.log(` ${chalk_1.default.gray('Expires :')} ${new Date(cfg.expiresAt).toISOString()} ${cfg.expiresAt < Date.now() ? chalk_1.default.red('(EXPIRED — run `redai login`)') : ''}`);
|
|
29
27
|
const { capabilities, cliDetected } = (0, detect_1.detectCapabilities)();
|
|
30
28
|
console.log(` ${chalk_1.default.gray('Caps :')} ${capabilities.join(', ')}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":";;;;;AAMA,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -9,6 +9,8 @@ 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 permission_1 = require("./commands/permission");
|
|
12
14
|
const serve_1 = require("./commands/serve");
|
|
13
15
|
const start_1 = require("./commands/start");
|
|
14
16
|
const status_1 = require("./commands/status");
|
|
@@ -58,6 +60,18 @@ function printHelp() {
|
|
|
58
60
|
console.log(' redai oauth list List all OAuth accounts');
|
|
59
61
|
console.log(' redai oauth logout <provider> [<account>] Remove a provider login');
|
|
60
62
|
console.log();
|
|
63
|
+
console.log();
|
|
64
|
+
console.log('MCP servers:');
|
|
65
|
+
console.log(' redai mcp list List configured MCP servers and their tools');
|
|
66
|
+
console.log(' redai mcp add [server] Add MCP server from catalog (interactive or by name)');
|
|
67
|
+
console.log(' redai mcp remove <server> Remove a configured MCP server');
|
|
68
|
+
console.log(' redai mcp test <server> Ping an MCP server, verify tools available');
|
|
69
|
+
console.log();
|
|
70
|
+
console.log('Local permissions:');
|
|
71
|
+
console.log(' redai permission list Show all tools and their enabled/disabled status');
|
|
72
|
+
console.log(' redai permission enable <tool> Allow a tool to run on this machine');
|
|
73
|
+
console.log(' redai permission disable <tool> Block a tool from running on this machine');
|
|
74
|
+
console.log();
|
|
61
75
|
console.log(' redai help Show this help');
|
|
62
76
|
}
|
|
63
77
|
async function main() {
|
|
@@ -116,6 +130,43 @@ async function main() {
|
|
|
116
130
|
});
|
|
117
131
|
return;
|
|
118
132
|
}
|
|
133
|
+
case 'permission': {
|
|
134
|
+
await (0, permission_1.permissionCommand)(process.argv.slice(3));
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
case 'mcp': {
|
|
138
|
+
const sub = process.argv[3];
|
|
139
|
+
if (!sub || sub === 'list') {
|
|
140
|
+
await (0, mcp_1.mcpListCommand)();
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (sub === 'add') {
|
|
144
|
+
const server = process.argv[4];
|
|
145
|
+
await (0, mcp_1.mcpAddCommand)(server);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (sub === 'remove') {
|
|
149
|
+
const server = process.argv[4];
|
|
150
|
+
if (!server) {
|
|
151
|
+
console.error(chalk_1.default.red('Usage: redai mcp remove <server>'));
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
await (0, mcp_1.mcpRemoveCommand)(server);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (sub === 'test') {
|
|
158
|
+
const server = process.argv[4];
|
|
159
|
+
if (!server) {
|
|
160
|
+
console.error(chalk_1.default.red('Usage: redai mcp test <server>'));
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
await (0, mcp_1.mcpTestCommand)(server);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
console.error(chalk_1.default.red(`Unknown mcp subcommand: ${sub}`));
|
|
167
|
+
console.error(chalk_1.default.dim('Usage: redai mcp [list|add|remove|test]'));
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
119
170
|
case 'help':
|
|
120
171
|
case '--help':
|
|
121
172
|
case '-h':
|
package/dist/cli/index.js.map
CHANGED
|
@@ -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":";;;;;;AACA,kDAA0B;AAC1B,sCAAwC;AACxC,4CAAgD;AAChD,8CAAkD;AAClD,4CAI0B;AAC1B,wCAAiG;AACjG,sDAA0D;AAC1D,4CAAgD;AAChD,4CAAgD;AAChD,8CAAkD;AAOlD,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAClC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,IAAI,oBAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;IACtG,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,CAAC,mHAAmH,CAAC,CAAC;IACjI,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,kGAAkG,CAAC,CAAC;IAChH,OAAO,CAAC,GAAG,CAAC,2GAA2G,CAAC,CAAC;IACzH,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,iGAAiG,CAAC,CAAC;IAC/G,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,uGAAuG,CAAC,CAAC;IACrH,OAAO,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAC;IACxG,OAAO,CAAC,GAAG,CAAC,gGAAgG,CAAC,CAAC;IAC9G,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;AACrF,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,OAAO;gBACV,MAAM,IAAA,oBAAY,EAAC;oBACjB,GAAG,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,KAAK,CAAY,CAAC,CAAC,CAAC,SAAS;oBAC5E,MAAM,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,SAAS,CAAY,CAAC,CAAC,CAAC,SAAS;oBACvF,MAAM,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,SAAS,CAAY,CAAC,CAAC,CAAC,SAAS;oBACvF,KAAK,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,QAAQ,CAAY,CAAC,CAAC,CAAC,SAAS;iBACrF,CAAC,CAAC;gBACH,OAAO;YAET,KAAK,QAAQ;gBACX,MAAM,IAAA,sBAAa,GAAE,CAAC;gBACtB,OAAO;YAET,KAAK,QAAQ;gBACX,MAAM,IAAA,sBAAa,GAAE,CAAC;gBACtB,OAAO;YAET,KAAK,OAAO;gBACV,MAAM,IAAA,oBAAY,GAAE,CAAC;gBACrB,OAAO;YAET,KAAK,OAAO;gBACV,MAAM,IAAA,oBAAY,EAAC;oBACjB,IAAI,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC3F,IAAI,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,MAAM,CAAY,CAAC,CAAC,CAAC,SAAS;oBAC/E,MAAM,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,SAAS,CAAY,CAAC,CAAC,CAAC,SAAS;iBACxF,CAAC,CAAC;gBACH,OAAO;YAET,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC,CAAC;oBACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACnB,MAAM,IAAA,wBAAgB,GAAE,CAAC;oBACzB,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;oBACzC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;wBAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;oBACD,MAAM,IAAA,0BAAkB,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACpC,OAAO;gBACT,CAAC;gBACD,MAAM,IAAA,oBAAY,EAAC;oBACjB,QAAQ,EAAE,GAAG;oBACb,OAAO,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,SAAS,CAAY,CAAC,CAAC,CAAC,SAAS;oBACxF,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI;oBACvC,MAAM,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,QAAQ,CAAY,CAAC,CAAC,CAAC,SAAS;iBACtF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,IAAA,8BAAiB,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YAED,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBAC3B,MAAM,IAAA,oBAAc,GAAE,CAAC;oBACvB,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;oBAClB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC/B,MAAM,IAAA,mBAAa,EAAC,MAAM,CAAC,CAAC;oBAC5B,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACrB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;wBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;oBACD,MAAM,IAAA,sBAAgB,EAAC,MAAM,CAAC,CAAC;oBAC/B,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACnB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;wBAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;oBACD,MAAM,IAAA,oBAAc,EAAC,MAAM,CAAC,CAAC;oBAC7B,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC3D,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI,CAAC;YACV;gBACE,SAAS,EAAE,CAAC;gBACZ,OAAO;QACX,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,KAAK,IAAI,EAAE,CAAC"}
|
|
@@ -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":";;
|
|
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.
|
|
4
|
+
export declare const CLI_VERSION = "0.1.7";
|
|
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;
|
package/dist/daemon/tunnel.js
CHANGED
|
@@ -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":";;;;;
|
|
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 {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mcpClientPool = void 0;
|
|
4
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
|
|
5
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
|
|
6
|
+
const config_1 = require("./config");
|
|
7
|
+
/**
|
|
8
|
+
* Singleton pool giữ kết nối MCP client cho từng server.
|
|
9
|
+
* Lazy spawn — chỉ connect khi có tool call đầu tiên đến server đó.
|
|
10
|
+
* Auto-reconnect: nếu transport bị đóng, xóa khỏi pool → lần sau sẽ spawn lại.
|
|
11
|
+
*/
|
|
12
|
+
class McpClientPool {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.pool = new Map();
|
|
15
|
+
}
|
|
16
|
+
async getClient(serverName) {
|
|
17
|
+
const existing = this.pool.get(serverName);
|
|
18
|
+
if (existing)
|
|
19
|
+
return existing.client;
|
|
20
|
+
const servers = (0, config_1.loadMcpConfig)();
|
|
21
|
+
const cfg = servers[serverName];
|
|
22
|
+
if (!cfg) {
|
|
23
|
+
throw new Error(`MCP server "${serverName}" not found in ~/.redai/mcp.json`);
|
|
24
|
+
}
|
|
25
|
+
const transport = new stdio_js_1.StdioClientTransport({
|
|
26
|
+
command: cfg.command,
|
|
27
|
+
args: cfg.args ?? [],
|
|
28
|
+
env: cfg.env
|
|
29
|
+
? Object.fromEntries(Object.entries({ ...process.env, ...cfg.env }).filter(([, v]) => v !== undefined))
|
|
30
|
+
: undefined,
|
|
31
|
+
});
|
|
32
|
+
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
|
|
35
|
+
transport.onclose = () => {
|
|
36
|
+
this.pool.delete(serverName);
|
|
37
|
+
};
|
|
38
|
+
this.pool.set(serverName, { client, transport });
|
|
39
|
+
return client;
|
|
40
|
+
}
|
|
41
|
+
async shutdown() {
|
|
42
|
+
const entries = [...this.pool.values()];
|
|
43
|
+
this.pool.clear();
|
|
44
|
+
await Promise.allSettled(entries.map((e) => e.client.close()));
|
|
45
|
+
}
|
|
46
|
+
listConnected() {
|
|
47
|
+
return [...this.pool.keys()];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.mcpClientPool = new McpClientPool();
|
|
51
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
declare const McpServerConfigSchema: z.ZodObject<{
|
|
3
|
+
command: z.ZodString;
|
|
4
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
5
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
6
|
+
transport: z.ZodLiteral<"stdio">;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
command: string;
|
|
9
|
+
transport: "stdio";
|
|
10
|
+
args?: string[] | undefined;
|
|
11
|
+
env?: Record<string, string> | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
command: string;
|
|
14
|
+
transport: "stdio";
|
|
15
|
+
args?: string[] | undefined;
|
|
16
|
+
env?: Record<string, string> | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
declare const McpConfigFileSchema: z.ZodObject<{
|
|
19
|
+
servers: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
20
|
+
command: z.ZodString;
|
|
21
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
22
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
23
|
+
transport: z.ZodLiteral<"stdio">;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
command: string;
|
|
26
|
+
transport: "stdio";
|
|
27
|
+
args?: string[] | undefined;
|
|
28
|
+
env?: Record<string, string> | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
command: string;
|
|
31
|
+
transport: "stdio";
|
|
32
|
+
args?: string[] | undefined;
|
|
33
|
+
env?: Record<string, string> | undefined;
|
|
34
|
+
}>>;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
servers: Record<string, {
|
|
37
|
+
command: string;
|
|
38
|
+
transport: "stdio";
|
|
39
|
+
args?: string[] | undefined;
|
|
40
|
+
env?: Record<string, string> | undefined;
|
|
41
|
+
}>;
|
|
42
|
+
}, {
|
|
43
|
+
servers: Record<string, {
|
|
44
|
+
command: string;
|
|
45
|
+
transport: "stdio";
|
|
46
|
+
args?: string[] | undefined;
|
|
47
|
+
env?: Record<string, string> | undefined;
|
|
48
|
+
}>;
|
|
49
|
+
}>;
|
|
50
|
+
export type McpServerConfig = z.infer<typeof McpServerConfigSchema>;
|
|
51
|
+
export type McpConfigFile = z.infer<typeof McpConfigFileSchema>;
|
|
52
|
+
export declare function loadMcpConfig(): Record<string, McpServerConfig>;
|
|
53
|
+
export declare function getMcpConfigPath(): string;
|
|
54
|
+
export declare function saveMcpConfig(servers: Record<string, McpServerConfig>): void;
|
|
55
|
+
export interface McpCatalogEntry {
|
|
56
|
+
/** Key sẽ dùng trong mcp.json */
|
|
57
|
+
name: string;
|
|
58
|
+
/** Mô tả ngắn cho user */
|
|
59
|
+
description: string;
|
|
60
|
+
/** Các tool nổi bật */
|
|
61
|
+
tools: string;
|
|
62
|
+
config: McpServerConfig;
|
|
63
|
+
}
|
|
64
|
+
export declare const MCP_CATALOG: McpCatalogEntry[];
|
|
65
|
+
export {};
|
|
@@ -0,0 +1,132 @@
|
|
|
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.MCP_CATALOG = void 0;
|
|
7
|
+
exports.loadMcpConfig = loadMcpConfig;
|
|
8
|
+
exports.getMcpConfigPath = getMcpConfigPath;
|
|
9
|
+
exports.saveMcpConfig = saveMcpConfig;
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const os_1 = __importDefault(require("os"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const zod_1 = require("zod");
|
|
14
|
+
const McpServerConfigSchema = zod_1.z.object({
|
|
15
|
+
command: zod_1.z.string(),
|
|
16
|
+
args: zod_1.z.array(zod_1.z.string()).optional(),
|
|
17
|
+
env: zod_1.z.record(zod_1.z.string()).optional(),
|
|
18
|
+
transport: zod_1.z.literal('stdio'),
|
|
19
|
+
});
|
|
20
|
+
const McpConfigFileSchema = zod_1.z.object({
|
|
21
|
+
servers: zod_1.z.record(McpServerConfigSchema),
|
|
22
|
+
});
|
|
23
|
+
const MCP_CONFIG_PATH = path_1.default.join(os_1.default.homedir(), '.redai', 'mcp.json');
|
|
24
|
+
function loadMcpConfig() {
|
|
25
|
+
try {
|
|
26
|
+
if (!fs_1.default.existsSync(MCP_CONFIG_PATH))
|
|
27
|
+
return {};
|
|
28
|
+
const raw = fs_1.default.readFileSync(MCP_CONFIG_PATH, 'utf-8');
|
|
29
|
+
const parsed = McpConfigFileSchema.safeParse(JSON.parse(raw));
|
|
30
|
+
if (!parsed.success)
|
|
31
|
+
return {};
|
|
32
|
+
return parsed.data.servers;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function getMcpConfigPath() {
|
|
39
|
+
return MCP_CONFIG_PATH;
|
|
40
|
+
}
|
|
41
|
+
function saveMcpConfig(servers) {
|
|
42
|
+
const dir = path_1.default.dirname(MCP_CONFIG_PATH);
|
|
43
|
+
if (!fs_1.default.existsSync(dir))
|
|
44
|
+
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
45
|
+
fs_1.default.writeFileSync(MCP_CONFIG_PATH, JSON.stringify({ servers }, null, 2), 'utf-8');
|
|
46
|
+
}
|
|
47
|
+
exports.MCP_CATALOG = [
|
|
48
|
+
{
|
|
49
|
+
name: 'chrome',
|
|
50
|
+
description: 'Chrome / Puppeteer — điều khiển trình duyệt, chụp screenshot, scrape web',
|
|
51
|
+
tools: 'puppeteer_navigate, puppeteer_screenshot, puppeteer_click, puppeteer_fill, ...',
|
|
52
|
+
config: {
|
|
53
|
+
command: 'npx',
|
|
54
|
+
args: ['-y', '@modelcontextprotocol/server-puppeteer'],
|
|
55
|
+
transport: 'stdio',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'filesystem',
|
|
60
|
+
description: 'Filesystem — đọc/ghi file với sandbox trong thư mục cho phép',
|
|
61
|
+
tools: 'read_file, write_file, list_directory, search_files, ...',
|
|
62
|
+
config: {
|
|
63
|
+
command: 'npx',
|
|
64
|
+
args: ['-y', '@modelcontextprotocol/server-filesystem', process.env['HOME'] ?? '.'],
|
|
65
|
+
transport: 'stdio',
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'postgres',
|
|
70
|
+
description: 'PostgreSQL — query database, describe schema',
|
|
71
|
+
tools: 'query, list_tables, describe_table',
|
|
72
|
+
config: {
|
|
73
|
+
command: 'npx',
|
|
74
|
+
args: ['-y', '@modelcontextprotocol/server-postgres', 'postgresql://localhost/mydb'],
|
|
75
|
+
transport: 'stdio',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: 'github',
|
|
80
|
+
description: 'GitHub — quản lý repo, PR, issues, search code',
|
|
81
|
+
tools: 'create_issue, list_pull_requests, search_repositories, get_file_contents, ...',
|
|
82
|
+
config: {
|
|
83
|
+
command: 'npx',
|
|
84
|
+
args: ['-y', '@modelcontextprotocol/server-github'],
|
|
85
|
+
env: { GITHUB_PERSONAL_ACCESS_TOKEN: '<your-token>' },
|
|
86
|
+
transport: 'stdio',
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'slack',
|
|
91
|
+
description: 'Slack — đọc/gửi message, list channels',
|
|
92
|
+
tools: 'post_message, list_channels, get_channel_history, ...',
|
|
93
|
+
config: {
|
|
94
|
+
command: 'npx',
|
|
95
|
+
args: ['-y', '@modelcontextprotocol/server-slack'],
|
|
96
|
+
env: { SLACK_BOT_TOKEN: '<your-token>', SLACK_TEAM_ID: '<team-id>' },
|
|
97
|
+
transport: 'stdio',
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'brave-search',
|
|
102
|
+
description: 'Brave Search — web search + local search qua Brave API',
|
|
103
|
+
tools: 'brave_web_search, brave_local_search',
|
|
104
|
+
config: {
|
|
105
|
+
command: 'npx',
|
|
106
|
+
args: ['-y', '@modelcontextprotocol/server-brave-search'],
|
|
107
|
+
env: { BRAVE_API_KEY: '<your-key>' },
|
|
108
|
+
transport: 'stdio',
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: 'memory',
|
|
113
|
+
description: 'Memory — lưu trữ knowledge graph persistent cho AI agent',
|
|
114
|
+
tools: 'create_entities, create_relations, search_nodes, read_graph, ...',
|
|
115
|
+
config: {
|
|
116
|
+
command: 'npx',
|
|
117
|
+
args: ['-y', '@modelcontextprotocol/server-memory'],
|
|
118
|
+
transport: 'stdio',
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: 'fetch',
|
|
123
|
+
description: 'Fetch — HTTP client: fetch URL, convert HTML sang markdown',
|
|
124
|
+
tools: 'fetch (GET/POST any URL)',
|
|
125
|
+
config: {
|
|
126
|
+
command: 'npx',
|
|
127
|
+
args: ['-y', '@modelcontextprotocol/server-fetch'],
|
|
128
|
+
transport: 'stdio',
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
];
|
|
132
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function mcpCallTool(input: unknown): Promise<unknown>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mcpCallTool = mcpCallTool;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const client_1 = require("../mcp/client");
|
|
6
|
+
const McpCallParamsSchema = zod_1.z.object({
|
|
7
|
+
server: zod_1.z.string().min(1),
|
|
8
|
+
tool: zod_1.z.string().min(1),
|
|
9
|
+
arguments: zod_1.z.record(zod_1.z.unknown()).optional().default({}),
|
|
10
|
+
});
|
|
11
|
+
async function mcpCallTool(input) {
|
|
12
|
+
const params = McpCallParamsSchema.parse(input);
|
|
13
|
+
const client = await client_1.mcpClientPool.getClient(params.server);
|
|
14
|
+
const response = await client.callTool({
|
|
15
|
+
name: params.tool,
|
|
16
|
+
arguments: params.arguments,
|
|
17
|
+
});
|
|
18
|
+
return response;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=mcp-call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-call.js","sourceRoot":"","sources":["../../src/tools/mcp-call.ts"],"names":[],"mappings":";;AASA,kCAUC;AAnBD,6BAAwB;AACxB,0CAA8C;AAE9C,MAAM,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACxD,CAAC,CAAC;AAEI,KAAK,UAAU,WAAW,CAAC,KAAc;IAC9C,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,sBAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface McpToolInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
inputSchema?: unknown;
|
|
5
|
+
}
|
|
6
|
+
interface McpListResult {
|
|
7
|
+
servers: Record<string, {
|
|
8
|
+
tools: McpToolInfo[];
|
|
9
|
+
error?: string;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export declare function mcpListTool(input: unknown): Promise<McpListResult>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mcpListTool = mcpListTool;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const config_1 = require("../mcp/config");
|
|
6
|
+
const client_1 = require("../mcp/client");
|
|
7
|
+
const McpListParamsSchema = zod_1.z.object({
|
|
8
|
+
server: zod_1.z.string().optional(),
|
|
9
|
+
});
|
|
10
|
+
async function mcpListTool(input) {
|
|
11
|
+
const params = McpListParamsSchema.parse(input);
|
|
12
|
+
const servers = (0, config_1.loadMcpConfig)();
|
|
13
|
+
const result = { servers: {} };
|
|
14
|
+
const targetServers = params.server
|
|
15
|
+
? params.server in servers
|
|
16
|
+
? [params.server]
|
|
17
|
+
: []
|
|
18
|
+
: Object.keys(servers);
|
|
19
|
+
if (params.server && !(params.server in servers)) {
|
|
20
|
+
throw new Error(`MCP server "${params.server}" not found in ~/.redai/mcp.json`);
|
|
21
|
+
}
|
|
22
|
+
await Promise.all(targetServers.map(async (name) => {
|
|
23
|
+
try {
|
|
24
|
+
const client = await client_1.mcpClientPool.getClient(name);
|
|
25
|
+
const { tools } = await client.listTools();
|
|
26
|
+
result.servers[name] = {
|
|
27
|
+
tools: tools.map((t) => ({
|
|
28
|
+
name: t.name,
|
|
29
|
+
description: t.description,
|
|
30
|
+
inputSchema: t.inputSchema,
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
result.servers[name] = {
|
|
36
|
+
tools: [],
|
|
37
|
+
error: err instanceof Error ? err.message : String(err),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}));
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=mcp-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-list.js","sourceRoot":"","sources":["../../src/tools/mcp-list.ts"],"names":[],"mappings":";;AAkBA,kCAqCC;AAvDD,6BAAwB;AACxB,0CAA8C;AAC9C,0CAA8C;AAE9C,MAAM,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAYI,KAAK,UAAU,WAAW,CAAC,KAAc;IAC9C,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAA,sBAAa,GAAE,CAAC;IAChC,MAAM,MAAM,GAAkB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAE9C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM;QACjC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO;YACxB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACjB,CAAC,CAAC,EAAE;QACN,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEzB,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,CAAC,MAAM,kCAAkC,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CACf,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC/B,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,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;gBACrB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACvB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;iBAC3B,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;gBACrB,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ToolName = 'Read' | 'Write' | 'Edit' | 'Bash' | 'Grep' | 'Glob' | 'WebFetch' | 'RunClaude' | 'RunCodex' | 'RunGemini' | 'LLMRequest';
|
|
1
|
+
export type ToolName = 'Read' | 'Write' | 'Edit' | 'Bash' | 'Grep' | 'Glob' | 'WebFetch' | 'RunClaude' | 'RunCodex' | 'RunGemini' | 'LLMRequest' | 'McpCall' | 'McpList';
|
|
2
2
|
export interface ToolContext {
|
|
3
3
|
timeoutMs?: number;
|
|
4
4
|
cwd?: string;
|
package/dist/tools/registry.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.runTool = runTool;
|
|
4
|
+
const permissions_1 = require("../auth/permissions");
|
|
4
5
|
const llm_request_1 = require("../llm/llm-request");
|
|
5
6
|
const bash_1 = require("./bash");
|
|
6
7
|
const edit_1 = require("./edit");
|
|
7
8
|
const glob_1 = require("./glob");
|
|
8
9
|
const grep_1 = require("./grep");
|
|
10
|
+
const mcp_call_1 = require("./mcp-call");
|
|
11
|
+
const mcp_list_1 = require("./mcp-list");
|
|
9
12
|
const read_1 = require("./read");
|
|
10
13
|
const run_cli_1 = require("./run-cli");
|
|
11
14
|
const webfetch_1 = require("./webfetch");
|
|
@@ -22,6 +25,8 @@ const HANDLERS = {
|
|
|
22
25
|
RunCodex: (p, ctx) => (0, run_cli_1.runCliTool)('codex', injectCwd(p, ctx.cwd)),
|
|
23
26
|
RunGemini: (p, ctx) => (0, run_cli_1.runCliTool)('gemini', injectCwd(p, ctx.cwd)),
|
|
24
27
|
LLMRequest: (p, ctx) => (0, llm_request_1.llmRequestTool)(p, { onStream: ctx.onStream }),
|
|
28
|
+
McpCall: (p) => (0, mcp_call_1.mcpCallTool)(p),
|
|
29
|
+
McpList: (p) => (0, mcp_list_1.mcpListTool)(p),
|
|
25
30
|
};
|
|
26
31
|
function injectCwd(params, cwd) {
|
|
27
32
|
if (!cwd)
|
|
@@ -38,6 +43,10 @@ async function runTool(name, params, ctx = {}) {
|
|
|
38
43
|
if (!handler) {
|
|
39
44
|
throw new Error(`Tool not supported on this CLI: ${name}`);
|
|
40
45
|
}
|
|
46
|
+
const perms = (0, permissions_1.loadPermissions)();
|
|
47
|
+
if (!(0, permissions_1.isToolAllowed)(name, perms)) {
|
|
48
|
+
throw new Error(`Tool '${name}' is disabled on this machine. Run \`redai permission enable ${name}\` to allow it.`);
|
|
49
|
+
}
|
|
41
50
|
return handler(params, ctx);
|
|
42
51
|
}
|
|
43
52
|
//# sourceMappingURL=registry.js.map
|