@redonvn/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README.md +99 -0
  2. package/bin/redai.js +22 -0
  3. package/dist/auth/client-id.d.ts +8 -0
  4. package/dist/auth/client-id.js +41 -0
  5. package/dist/auth/client-id.js.map +1 -0
  6. package/dist/auth/store.d.ts +16 -0
  7. package/dist/auth/store.js +39 -0
  8. package/dist/auth/store.js.map +1 -0
  9. package/dist/cli/commands/login.d.ts +6 -0
  10. package/dist/cli/commands/login.js +82 -0
  11. package/dist/cli/commands/login.js.map +1 -0
  12. package/dist/cli/commands/logout.d.ts +1 -0
  13. package/dist/cli/commands/logout.js +18 -0
  14. package/dist/cli/commands/logout.js.map +1 -0
  15. package/dist/cli/commands/oauth.d.ts +11 -0
  16. package/dist/cli/commands/oauth.js +311 -0
  17. package/dist/cli/commands/oauth.js.map +1 -0
  18. package/dist/cli/commands/serve.d.ts +7 -0
  19. package/dist/cli/commands/serve.js +24 -0
  20. package/dist/cli/commands/serve.js.map +1 -0
  21. package/dist/cli/commands/start.d.ts +1 -0
  22. package/dist/cli/commands/start.js +26 -0
  23. package/dist/cli/commands/start.js.map +1 -0
  24. package/dist/cli/commands/status.d.ts +1 -0
  25. package/dist/cli/commands/status.js +51 -0
  26. package/dist/cli/commands/status.js.map +1 -0
  27. package/dist/cli/index.d.ts +2 -0
  28. package/dist/cli/index.js +127 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/cli-router/detect.d.ts +13 -0
  31. package/dist/cli-router/detect.js +58 -0
  32. package/dist/cli-router/detect.js.map +1 -0
  33. package/dist/config.d.ts +12 -0
  34. package/dist/config.js +24 -0
  35. package/dist/config.js.map +1 -0
  36. package/dist/daemon/router.d.ts +17 -0
  37. package/dist/daemon/router.js +39 -0
  38. package/dist/daemon/router.js.map +1 -0
  39. package/dist/daemon/tunnel.d.ts +10 -0
  40. package/dist/daemon/tunnel.js +156 -0
  41. package/dist/daemon/tunnel.js.map +1 -0
  42. package/dist/llm/llm-request.d.ts +9 -0
  43. package/dist/llm/llm-request.js +98 -0
  44. package/dist/llm/llm-request.js.map +1 -0
  45. package/dist/llm/oauth/antigravity-oauth.d.ts +22 -0
  46. package/dist/llm/oauth/antigravity-oauth.js +128 -0
  47. package/dist/llm/oauth/antigravity-oauth.js.map +1 -0
  48. package/dist/llm/oauth/callback-server.d.ts +18 -0
  49. package/dist/llm/oauth/callback-server.js +78 -0
  50. package/dist/llm/oauth/callback-server.js.map +1 -0
  51. package/dist/llm/oauth/claude-oauth.d.ts +29 -0
  52. package/dist/llm/oauth/claude-oauth.js +115 -0
  53. package/dist/llm/oauth/claude-oauth.js.map +1 -0
  54. package/dist/llm/oauth/codex-oauth.d.ts +21 -0
  55. package/dist/llm/oauth/codex-oauth.js +137 -0
  56. package/dist/llm/oauth/codex-oauth.js.map +1 -0
  57. package/dist/llm/oauth/gemini-oauth.d.ts +26 -0
  58. package/dist/llm/oauth/gemini-oauth.js +132 -0
  59. package/dist/llm/oauth/gemini-oauth.js.map +1 -0
  60. package/dist/llm/oauth/iflow-oauth.d.ts +26 -0
  61. package/dist/llm/oauth/iflow-oauth.js +151 -0
  62. package/dist/llm/oauth/iflow-oauth.js.map +1 -0
  63. package/dist/llm/oauth/kimi-oauth.d.ts +16 -0
  64. package/dist/llm/oauth/kimi-oauth.js +126 -0
  65. package/dist/llm/oauth/kimi-oauth.js.map +1 -0
  66. package/dist/llm/oauth/open-browser.d.ts +5 -0
  67. package/dist/llm/oauth/open-browser.js +32 -0
  68. package/dist/llm/oauth/open-browser.js.map +1 -0
  69. package/dist/llm/oauth/pkce.d.ts +12 -0
  70. package/dist/llm/oauth/pkce.js +27 -0
  71. package/dist/llm/oauth/pkce.js.map +1 -0
  72. package/dist/llm/oauth/qwen-oauth.d.ts +27 -0
  73. package/dist/llm/oauth/qwen-oauth.js +138 -0
  74. package/dist/llm/oauth/qwen-oauth.js.map +1 -0
  75. package/dist/llm/oauth/store.d.ts +34 -0
  76. package/dist/llm/oauth/store.js +72 -0
  77. package/dist/llm/oauth/store.js.map +1 -0
  78. package/dist/llm/oauth/xai-oauth.d.ts +28 -0
  79. package/dist/llm/oauth/xai-oauth.js +132 -0
  80. package/dist/llm/oauth/xai-oauth.js.map +1 -0
  81. package/dist/llm/providers/antigravity.d.ts +23 -0
  82. package/dist/llm/providers/antigravity.js +103 -0
  83. package/dist/llm/providers/antigravity.js.map +1 -0
  84. package/dist/llm/providers/claude.d.ts +36 -0
  85. package/dist/llm/providers/claude.js +148 -0
  86. package/dist/llm/providers/claude.js.map +1 -0
  87. package/dist/llm/providers/codex.d.ts +23 -0
  88. package/dist/llm/providers/codex.js +122 -0
  89. package/dist/llm/providers/codex.js.map +1 -0
  90. package/dist/llm/providers/gemini.d.ts +23 -0
  91. package/dist/llm/providers/gemini.js +112 -0
  92. package/dist/llm/providers/gemini.js.map +1 -0
  93. package/dist/llm/providers/generic-client.d.ts +45 -0
  94. package/dist/llm/providers/generic-client.js +98 -0
  95. package/dist/llm/providers/generic-client.js.map +1 -0
  96. package/dist/llm/providers/iflow.d.ts +8 -0
  97. package/dist/llm/providers/iflow.js +15 -0
  98. package/dist/llm/providers/iflow.js.map +1 -0
  99. package/dist/llm/providers/kimi.d.ts +8 -0
  100. package/dist/llm/providers/kimi.js +16 -0
  101. package/dist/llm/providers/kimi.js.map +1 -0
  102. package/dist/llm/providers/qwen.d.ts +8 -0
  103. package/dist/llm/providers/qwen.js +15 -0
  104. package/dist/llm/providers/qwen.js.map +1 -0
  105. package/dist/llm/providers/xai.d.ts +8 -0
  106. package/dist/llm/providers/xai.js +15 -0
  107. package/dist/llm/providers/xai.js.map +1 -0
  108. package/dist/llm/selector.d.ts +14 -0
  109. package/dist/llm/selector.js +81 -0
  110. package/dist/llm/selector.js.map +1 -0
  111. package/dist/server/http-server.d.ts +22 -0
  112. package/dist/server/http-server.js +194 -0
  113. package/dist/server/http-server.js.map +1 -0
  114. package/dist/tools/bash.d.ts +7 -0
  115. package/dist/tools/bash.js +61 -0
  116. package/dist/tools/bash.js.map +1 -0
  117. package/dist/tools/edit.d.ts +4 -0
  118. package/dist/tools/edit.js +35 -0
  119. package/dist/tools/edit.js.map +1 -0
  120. package/dist/tools/glob.d.ts +5 -0
  121. package/dist/tools/glob.js +27 -0
  122. package/dist/tools/glob.js.map +1 -0
  123. package/dist/tools/grep.d.ts +5 -0
  124. package/dist/tools/grep.js +63 -0
  125. package/dist/tools/grep.js.map +1 -0
  126. package/dist/tools/read.d.ts +6 -0
  127. package/dist/tools/read.js +25 -0
  128. package/dist/tools/read.js.map +1 -0
  129. package/dist/tools/registry.d.ts +8 -0
  130. package/dist/tools/registry.js +43 -0
  131. package/dist/tools/registry.js.map +1 -0
  132. package/dist/tools/run-cli.d.ts +7 -0
  133. package/dist/tools/run-cli.js +83 -0
  134. package/dist/tools/run-cli.js.map +1 -0
  135. package/dist/tools/webfetch.d.ts +7 -0
  136. package/dist/tools/webfetch.js +26 -0
  137. package/dist/tools/webfetch.js.map +1 -0
  138. package/dist/tools/write.d.ts +5 -0
  139. package/dist/tools/write.js +29 -0
  140. package/dist/tools/write.js.map +1 -0
  141. package/package.json +67 -0
@@ -0,0 +1,83 @@
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.runCliTool = runCliTool;
7
+ const child_process_1 = require("child_process");
8
+ const os_1 = __importDefault(require("os"));
9
+ const cli_protocol_1 = require("@redonvn/cli-protocol");
10
+ /**
11
+ * Spawn các AI Agent CLI có sẵn (claude/codex/gemini) headless, gửi prompt qua
12
+ * argument hoặc stdin tuỳ theo CLI cụ thể. Cấu hình mặc định:
13
+ * - claude: `claude -p <prompt>` (non-interactive print mode)
14
+ * - codex: `codex --quiet <prompt>`
15
+ * - gemini: `gemini -p <prompt>`
16
+ *
17
+ * Output gom thành 1 lần trả về (chưa streaming). Streaming sẽ làm sau bằng
18
+ * TOOL_STREAM event. v0 đơn giản trước.
19
+ */
20
+ const PROFILES = {
21
+ claude: {
22
+ bin: 'claude',
23
+ args: (p, extra) => ['-p', p, ...extra],
24
+ },
25
+ codex: {
26
+ bin: 'codex',
27
+ args: (p, extra) => ['--quiet', ...extra, p],
28
+ },
29
+ gemini: {
30
+ bin: 'gemini',
31
+ args: (p, extra) => ['-p', p, ...extra],
32
+ },
33
+ };
34
+ const DEFAULT_TIMEOUT_MS = 5 * 60000;
35
+ async function runCliTool(cli, input) {
36
+ const params = cli_protocol_1.RunCliParamsSchema.parse(input);
37
+ const profile = PROFILES[cli];
38
+ if (!profile)
39
+ throw new Error(`Unknown CLI: ${cli}`);
40
+ const startedAt = Date.now();
41
+ return new Promise((resolve, reject) => {
42
+ const args = profile.args(params.prompt, params.extraArgs ?? []);
43
+ const child = (0, child_process_1.spawn)(profile.bin, args, {
44
+ cwd: params.cwd || os_1.default.homedir(),
45
+ env: process.env,
46
+ windowsHide: true,
47
+ });
48
+ let stdout = '';
49
+ let stderr = '';
50
+ const timer = setTimeout(() => {
51
+ child.kill('SIGTERM');
52
+ setTimeout(() => {
53
+ if (!child.killed)
54
+ child.kill('SIGKILL');
55
+ }, 2000);
56
+ }, DEFAULT_TIMEOUT_MS);
57
+ child.stdout.on('data', (c) => {
58
+ stdout += c.toString('utf8');
59
+ if (stdout.length > 500000)
60
+ stdout = stdout.slice(-500000);
61
+ });
62
+ child.stderr.on('data', (c) => {
63
+ stderr += c.toString('utf8');
64
+ if (stderr.length > 50000)
65
+ stderr = stderr.slice(-50000);
66
+ });
67
+ child.on('error', (err) => {
68
+ clearTimeout(timer);
69
+ reject(err);
70
+ });
71
+ child.on('close', (code) => {
72
+ clearTimeout(timer);
73
+ resolve({
74
+ cli,
75
+ exitCode: code ?? -1,
76
+ stdout,
77
+ stderr,
78
+ durationMs: Date.now() - startedAt,
79
+ });
80
+ });
81
+ });
82
+ }
83
+ //# sourceMappingURL=run-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../src/tools/run-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function webFetchTool(input: unknown): Promise<{
2
+ url: string;
3
+ status: number;
4
+ contentType: string | null;
5
+ text: string;
6
+ truncated: boolean;
7
+ }>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.webFetchTool = webFetchTool;
4
+ const undici_1 = require("undici");
5
+ const cli_protocol_1 = require("@redonvn/cli-protocol");
6
+ async function webFetchTool(input) {
7
+ const params = cli_protocol_1.WebFetchParamsSchema.parse(input);
8
+ const res = await (0, undici_1.request)(params.url, {
9
+ method: 'GET',
10
+ headersTimeout: 10000,
11
+ bodyTimeout: 20000,
12
+ maxRedirections: 3,
13
+ headers: { 'user-agent': 'redai-cli/0.1.0' },
14
+ });
15
+ const ct = res.headers['content-type'] ?? null;
16
+ const text = await res.body.text();
17
+ const LIMIT = 200000;
18
+ return {
19
+ url: params.url,
20
+ status: res.statusCode,
21
+ contentType: ct,
22
+ text: text.slice(0, LIMIT),
23
+ truncated: text.length > LIMIT,
24
+ };
25
+ }
26
+ //# sourceMappingURL=webfetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webfetch.js","sourceRoot":"","sources":["../../src/tools/webfetch.ts"],"names":[],"mappings":";;AAGA,oCAyBC;AA5BD,mCAAiC;AACjC,wDAA6E;AAEtE,KAAK,UAAU,YAAY,CAAC,KAAc;IAO/C,MAAM,MAAM,GAAmB,mCAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,IAAA,gBAAO,EAAC,MAAM,CAAC,GAAG,EAAE;QACpC,MAAM,EAAE,KAAK;QACb,cAAc,EAAE,KAAM;QACtB,WAAW,EAAE,KAAM;QACnB,eAAe,EAAE,CAAC;QAClB,OAAO,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE;KAC7C,CAAC,CAAC;IACH,MAAM,EAAE,GAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAY,IAAI,IAAI,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAO,CAAC;IACtB,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,MAAM,EAAE,GAAG,CAAC,UAAU;QACtB,WAAW,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;QAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK;KAC/B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function writeTool(input: unknown): Promise<{
2
+ file_path: string;
3
+ bytesWritten: number;
4
+ created: boolean;
5
+ }>;
@@ -0,0 +1,29 @@
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.writeTool = writeTool;
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const cli_protocol_1 = require("@redonvn/cli-protocol");
10
+ async function writeTool(input) {
11
+ const params = cli_protocol_1.WriteParamsSchema.parse(input);
12
+ const dir = path_1.default.dirname(params.file_path);
13
+ await promises_1.default.mkdir(dir, { recursive: true });
14
+ let created = true;
15
+ try {
16
+ await promises_1.default.access(params.file_path);
17
+ created = false;
18
+ }
19
+ catch {
20
+ created = true;
21
+ }
22
+ await promises_1.default.writeFile(params.file_path, params.content, 'utf8');
23
+ return {
24
+ file_path: params.file_path,
25
+ bytesWritten: Buffer.byteLength(params.content, 'utf8'),
26
+ created,
27
+ };
28
+ }
29
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":";;;;;AAIA,8BAqBC;AAzBD,2DAA6B;AAC7B,gDAAwB;AACxB,wDAAuE;AAEhE,KAAK,UAAU,SAAS,CAAC,KAAc;IAK5C,MAAM,MAAM,GAAgB,gCAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,kBAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,MAAM,kBAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7D,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;QACvD,OAAO;KACR,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@redonvn/cli",
3
+ "version": "0.1.0",
4
+ "description": "RedAI CLI — kết nối máy bạn với RedAI agent runtime. AI cloud agent có thể run tools (Read/Write/Edit/Bash/Grep/Glob/WebFetch), spawn code-CLI (Claude/Codex/Gemini), và proxy LLM request qua OAuth của bạn (Claude Code / ChatGPT / Gemini / Antigravity / Qwen / Kimi / iFlow / xAI).",
5
+ "bin": {
6
+ "redai": "./bin/redai.js"
7
+ },
8
+ "main": "dist/cli/index.js",
9
+ "files": [
10
+ "bin",
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "engines": {
16
+ "node": ">=18.17.0"
17
+ },
18
+ "scripts": {
19
+ "build": "tsc -p tsconfig.json",
20
+ "dev": "ts-node --transpile-only src/cli/index.ts",
21
+ "start": "node ./bin/redai.js",
22
+ "clean": "rimraf dist",
23
+ "prepublishOnly": "npm run clean && npm run build"
24
+ },
25
+ "keywords": [
26
+ "redai",
27
+ "cli",
28
+ "ai",
29
+ "claude",
30
+ "codex",
31
+ "gemini",
32
+ "oauth",
33
+ "llm",
34
+ "proxy",
35
+ "agent",
36
+ "tunnel"
37
+ ],
38
+ "author": "RedAI",
39
+ "license": "MIT",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "git+https://github.com/redonvn/redai-cli.git",
43
+ "directory": "redai-cli-app"
44
+ },
45
+ "homepage": "https://github.com/redonvn/redai-cli#readme",
46
+ "dependencies": {
47
+ "@redonvn/cli-protocol": "^0.1.0",
48
+ "@vscode/ripgrep": "^1.15.9",
49
+ "axios": "^1.7.7",
50
+ "chalk": "^4.1.2",
51
+ "fast-glob": "^3.3.2",
52
+ "prompts": "^2.4.2",
53
+ "socket.io-client": "^4.7.5",
54
+ "undici": "^6.19.7",
55
+ "zod": "^3.23.8"
56
+ },
57
+ "devDependencies": {
58
+ "@types/node": "^20.14.0",
59
+ "@types/prompts": "^2.4.9",
60
+ "rimraf": "^5.0.5",
61
+ "ts-node": "^10.9.2",
62
+ "typescript": "^5.5.4"
63
+ },
64
+ "publishConfig": {
65
+ "access": "public"
66
+ }
67
+ }