@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,311 @@
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.oauthCommand = oauthCommand;
7
+ exports.oauthListCommand = oauthListCommand;
8
+ exports.oauthLogoutCommand = oauthLogoutCommand;
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const prompts_1 = __importDefault(require("prompts"));
11
+ const claude_oauth_1 = require("../../llm/oauth/claude-oauth");
12
+ const codex_oauth_1 = require("../../llm/oauth/codex-oauth");
13
+ const gemini_oauth_1 = require("../../llm/oauth/gemini-oauth");
14
+ const antigravity_oauth_1 = require("../../llm/oauth/antigravity-oauth");
15
+ const qwen_oauth_1 = require("../../llm/oauth/qwen-oauth");
16
+ const kimi_oauth_1 = require("../../llm/oauth/kimi-oauth");
17
+ const iflow_oauth_1 = require("../../llm/oauth/iflow-oauth");
18
+ const xai_oauth_1 = require("../../llm/oauth/xai-oauth");
19
+ const callback_server_1 = require("../../llm/oauth/callback-server");
20
+ const open_browser_1 = require("../../llm/oauth/open-browser");
21
+ const store_1 = require("../../llm/oauth/store");
22
+ const SUPPORTED_PROVIDERS = [
23
+ 'claude',
24
+ 'codex',
25
+ 'gemini',
26
+ 'antigravity',
27
+ 'qwen',
28
+ 'kimi',
29
+ 'iflow',
30
+ 'xai',
31
+ ];
32
+ const CLAUDE_CALLBACK_PORT = 54545;
33
+ const CODEX_CALLBACK_PORT = 1455;
34
+ const CODEX_CALLBACK_PATH = '/auth/callback';
35
+ async function oauthCommand(options) {
36
+ const provider = options.provider;
37
+ if (!SUPPORTED_PROVIDERS.includes(provider)) {
38
+ console.error(chalk_1.default.red(`Unsupported provider: ${provider}.`), `Supported: ${SUPPORTED_PROVIDERS.join(', ')}`);
39
+ process.exit(1);
40
+ }
41
+ const account = options.account?.trim() || 'default';
42
+ const noBrowser = options.noBrowser ?? false;
43
+ switch (provider) {
44
+ case 'claude':
45
+ return loginClaude(account, noBrowser);
46
+ case 'codex':
47
+ return loginCodex(account, noBrowser);
48
+ case 'gemini':
49
+ return loginGemini(account, noBrowser);
50
+ case 'antigravity':
51
+ return loginAntigravity(account, noBrowser);
52
+ case 'qwen':
53
+ return loginQwen(account, noBrowser);
54
+ case 'kimi':
55
+ return loginKimi(account, noBrowser);
56
+ case 'iflow':
57
+ return loginIFlow(account, noBrowser, options.cookie);
58
+ case 'xai':
59
+ return loginXAI(account, noBrowser);
60
+ }
61
+ }
62
+ async function loginClaude(account, noBrowser) {
63
+ const session = (0, claude_oauth_1.startClaudeAuth)();
64
+ const callback = (0, callback_server_1.waitForCallback)({
65
+ port: CLAUDE_CALLBACK_PORT,
66
+ pathname: '/callback',
67
+ timeoutMs: 5 * 60 * 1000,
68
+ });
69
+ showAuthUrl('Claude Code OAuth', session.authUrl, claude_oauth_1.CLAUDE_REDIRECT_URI, noBrowser);
70
+ const result = await waitOrExit(callback.promise);
71
+ if (result.state && result.state !== session.state)
72
+ return abortCsrf();
73
+ try {
74
+ const token = await (0, claude_oauth_1.exchangeCodeForTokens)(result.code, session.pkce, session.state, account);
75
+ (0, store_1.saveToken)('claude', token);
76
+ printLoginSummary('Claude', token);
77
+ }
78
+ catch (err) {
79
+ return handleExchangeError(err);
80
+ }
81
+ }
82
+ async function loginCodex(account, noBrowser) {
83
+ const session = (0, codex_oauth_1.startCodexAuth)();
84
+ const callback = (0, callback_server_1.waitForCallback)({
85
+ port: CODEX_CALLBACK_PORT,
86
+ pathname: CODEX_CALLBACK_PATH,
87
+ timeoutMs: 5 * 60 * 1000,
88
+ });
89
+ showAuthUrl('Sign in with ChatGPT', session.authUrl, codex_oauth_1.CODEX_REDIRECT_URI, noBrowser);
90
+ const result = await waitOrExit(callback.promise);
91
+ if (result.state && result.state !== session.state)
92
+ return abortCsrf();
93
+ try {
94
+ const token = await (0, codex_oauth_1.exchangeCodexCodeForTokens)(result.code, session.pkce, account);
95
+ (0, store_1.saveToken)('codex', token);
96
+ printLoginSummary('Codex', token);
97
+ }
98
+ catch (err) {
99
+ return handleExchangeError(err);
100
+ }
101
+ }
102
+ async function loginGemini(account, noBrowser) {
103
+ const session = (0, gemini_oauth_1.startGeminiAuth)(gemini_oauth_1.GEMINI_DEFAULT_CALLBACK_PORT);
104
+ const callback = (0, callback_server_1.waitForCallback)({
105
+ port: gemini_oauth_1.GEMINI_DEFAULT_CALLBACK_PORT,
106
+ pathname: '/oauth2callback',
107
+ timeoutMs: 5 * 60 * 1000,
108
+ });
109
+ showAuthUrl('Gemini Code Assist (Google)', session.authUrl, session.redirectUri, noBrowser);
110
+ const result = await waitOrExit(callback.promise);
111
+ if (result.state && result.state !== session.state)
112
+ return abortCsrf();
113
+ try {
114
+ const token = await (0, gemini_oauth_1.exchangeGeminiCodeForTokens)(result.code, session.redirectUri, account);
115
+ (0, store_1.saveToken)('gemini', token);
116
+ printLoginSummary('Gemini', token);
117
+ }
118
+ catch (err) {
119
+ return handleExchangeError(err);
120
+ }
121
+ }
122
+ async function loginAntigravity(account, noBrowser) {
123
+ const session = (0, antigravity_oauth_1.startAntigravityAuth)(antigravity_oauth_1.ANTIGRAVITY_DEFAULT_CALLBACK_PORT);
124
+ const callback = (0, callback_server_1.waitForCallback)({
125
+ port: antigravity_oauth_1.ANTIGRAVITY_DEFAULT_CALLBACK_PORT,
126
+ pathname: '/oauth2callback',
127
+ timeoutMs: 5 * 60 * 1000,
128
+ });
129
+ showAuthUrl('Antigravity (Google)', session.authUrl, session.redirectUri, noBrowser);
130
+ const result = await waitOrExit(callback.promise);
131
+ if (result.state && result.state !== session.state)
132
+ return abortCsrf();
133
+ try {
134
+ const token = await (0, antigravity_oauth_1.exchangeAntigravityCodeForTokens)(result.code, session.redirectUri, account);
135
+ (0, store_1.saveToken)('antigravity', token);
136
+ printLoginSummary('Antigravity', token);
137
+ }
138
+ catch (err) {
139
+ return handleExchangeError(err);
140
+ }
141
+ }
142
+ async function loginQwen(account, noBrowser) {
143
+ console.log(chalk_1.default.cyan('Requesting Qwen device code...'));
144
+ const device = await (0, qwen_oauth_1.requestQwenDeviceCode)();
145
+ showDeviceCode('Qwen', device.userCode, device.verificationUriComplete ?? device.verificationUri, noBrowser);
146
+ try {
147
+ const token = await (0, qwen_oauth_1.pollQwenToken)(device, account);
148
+ (0, store_1.saveToken)('qwen', token);
149
+ printLoginSummary('Qwen', token);
150
+ }
151
+ catch (err) {
152
+ return handleExchangeError(err);
153
+ }
154
+ }
155
+ async function loginKimi(account, noBrowser) {
156
+ console.log(chalk_1.default.cyan('Requesting Kimi device code...'));
157
+ const device = await (0, kimi_oauth_1.requestKimiDeviceCode)();
158
+ showDeviceCode('Kimi', device.userCode, device.verificationUriComplete ?? device.verificationUri, noBrowser);
159
+ try {
160
+ const token = await (0, kimi_oauth_1.pollKimiToken)(device, account);
161
+ (0, store_1.saveToken)('kimi', token);
162
+ printLoginSummary('Kimi', token);
163
+ }
164
+ catch (err) {
165
+ return handleExchangeError(err);
166
+ }
167
+ }
168
+ async function loginIFlow(account, noBrowser, cookieArg) {
169
+ let cookie = cookieArg;
170
+ if (!cookie) {
171
+ const response = await (0, prompts_1.default)({
172
+ type: 'select',
173
+ name: 'mode',
174
+ message: 'iFlow login mode:',
175
+ choices: [
176
+ { title: 'OAuth (browser)', value: 'oauth' },
177
+ { title: 'Paste cookie (BXAuth)', value: 'cookie' },
178
+ ],
179
+ });
180
+ if (response.mode === 'cookie') {
181
+ const c = await (0, prompts_1.default)({
182
+ type: 'password',
183
+ name: 'cookie',
184
+ message: 'Paste your iflow.cn cookie (must contain BXAuth):',
185
+ });
186
+ cookie = c.cookie;
187
+ }
188
+ }
189
+ if (cookie) {
190
+ try {
191
+ const token = await (0, iflow_oauth_1.exchangeIFlowCookieForApiKey)(cookie, account);
192
+ (0, store_1.saveToken)('iflow', token);
193
+ printLoginSummary('iFlow (cookie mode)', token);
194
+ return;
195
+ }
196
+ catch (err) {
197
+ return handleExchangeError(err);
198
+ }
199
+ }
200
+ const session = (0, iflow_oauth_1.startIFlowAuth)(iflow_oauth_1.IFLOW_DEFAULT_CALLBACK_PORT);
201
+ const callback = (0, callback_server_1.waitForCallback)({
202
+ port: iflow_oauth_1.IFLOW_DEFAULT_CALLBACK_PORT,
203
+ pathname: '/callback',
204
+ timeoutMs: 5 * 60 * 1000,
205
+ });
206
+ showAuthUrl('iFlow OAuth', session.authUrl, session.redirectUri, noBrowser);
207
+ const result = await waitOrExit(callback.promise);
208
+ if (result.state && result.state !== session.state)
209
+ return abortCsrf();
210
+ try {
211
+ const token = await (0, iflow_oauth_1.exchangeIFlowCodeForTokens)(result.code, session.pkce, session.redirectUri, account);
212
+ (0, store_1.saveToken)('iflow', token);
213
+ printLoginSummary('iFlow', token);
214
+ }
215
+ catch (err) {
216
+ return handleExchangeError(err);
217
+ }
218
+ }
219
+ async function loginXAI(account, noBrowser) {
220
+ console.log(chalk_1.default.cyan('Fetching xAI OIDC discovery...'));
221
+ const session = await (0, xai_oauth_1.startXAIAuth)(xai_oauth_1.XAI_DEFAULT_CALLBACK_PORT);
222
+ const callback = (0, callback_server_1.waitForCallback)({
223
+ port: xai_oauth_1.XAI_DEFAULT_CALLBACK_PORT,
224
+ pathname: xai_oauth_1.XAI_CALLBACK_PATH,
225
+ timeoutMs: 5 * 60 * 1000,
226
+ });
227
+ showAuthUrl('xAI Grok OAuth', session.authUrl, session.redirectUri, noBrowser);
228
+ const result = await waitOrExit(callback.promise);
229
+ if (result.state && result.state !== session.state)
230
+ return abortCsrf();
231
+ try {
232
+ const token = await (0, xai_oauth_1.exchangeXAICodeForTokens)(result.code, session.pkce, session.redirectUri, session.discovery.tokenEndpoint, account);
233
+ (0, store_1.saveToken)('xai', token);
234
+ printLoginSummary('xAI Grok', token);
235
+ }
236
+ catch (err) {
237
+ return handleExchangeError(err);
238
+ }
239
+ }
240
+ function showAuthUrl(label, url, callback, noBrowser) {
241
+ console.log();
242
+ console.log(chalk_1.default.cyan(`Open this URL to authorize ${label}:`));
243
+ console.log(` ${url}`);
244
+ console.log();
245
+ console.log(chalk_1.default.dim(`Waiting for callback on ${callback} ...`));
246
+ if (!noBrowser)
247
+ (0, open_browser_1.openBrowser)(url);
248
+ }
249
+ function showDeviceCode(label, userCode, url, noBrowser) {
250
+ console.log();
251
+ console.log(chalk_1.default.cyan(`${label} device flow:`));
252
+ console.log(` Open: ${chalk_1.default.bold(url)}`);
253
+ console.log(` Code: ${chalk_1.default.bold(userCode)}`);
254
+ console.log();
255
+ console.log(chalk_1.default.dim('Polling for token...'));
256
+ if (!noBrowser)
257
+ (0, open_browser_1.openBrowser)(url);
258
+ }
259
+ async function waitOrExit(p) {
260
+ try {
261
+ return await p;
262
+ }
263
+ catch (err) {
264
+ console.error(chalk_1.default.red('✗ OAuth flow failed:'), err instanceof Error ? err.message : err);
265
+ process.exit(1);
266
+ }
267
+ }
268
+ function abortCsrf() {
269
+ console.error(chalk_1.default.red('✗ State mismatch — possible CSRF. Aborting.'));
270
+ process.exit(1);
271
+ }
272
+ function handleExchangeError(err) {
273
+ console.error(chalk_1.default.red('✗ Token exchange failed:'), err instanceof Error ? err.message : err);
274
+ process.exit(1);
275
+ }
276
+ function printLoginSummary(providerLabel, token) {
277
+ console.log();
278
+ console.log(chalk_1.default.green(`✓ ${providerLabel} logged in.`));
279
+ console.log(` ${chalk_1.default.gray('Account :')} ${token.account}`);
280
+ if (token.email)
281
+ console.log(` ${chalk_1.default.gray('Email :')} ${token.email}`);
282
+ console.log(` ${chalk_1.default.gray('Expires :')} ${new Date(token.expiresAt).toISOString()}`);
283
+ console.log();
284
+ console.log(chalk_1.default.dim('This machine can now serve LLMRequest tool calls for AI agents on RedAI cloud.'));
285
+ }
286
+ async function oauthListCommand() {
287
+ let any = false;
288
+ for (const provider of SUPPORTED_PROVIDERS) {
289
+ const accounts = (0, store_1.listAccounts)(provider);
290
+ if (!accounts.length)
291
+ continue;
292
+ any = true;
293
+ console.log(chalk_1.default.cyan(provider));
294
+ for (const account of accounts) {
295
+ const token = (0, store_1.loadToken)(provider, account);
296
+ if (!token)
297
+ continue;
298
+ const status = token.expiresAt < Date.now() ? chalk_1.default.red('EXPIRED') : chalk_1.default.green('active');
299
+ console.log(` ${account} ${status} ${chalk_1.default.dim(token.email ?? '')} ` +
300
+ chalk_1.default.dim(`exp=${new Date(token.expiresAt).toISOString()}`));
301
+ }
302
+ }
303
+ if (!any) {
304
+ console.log(chalk_1.default.yellow('No OAuth accounts. Run `redai oauth <provider>` to login.'));
305
+ }
306
+ }
307
+ async function oauthLogoutCommand(provider, account = 'default') {
308
+ (0, store_1.deleteToken)(provider, account);
309
+ console.log(chalk_1.default.green(`✓ Removed ${provider}:${account}`));
310
+ }
311
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/cli/commands/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface ServeOptions {
2
+ port?: number;
3
+ host?: string;
4
+ apiKey?: string;
5
+ }
6
+ export declare function serveCommand(opts?: ServeOptions): Promise<void>;
7
+ export {};
@@ -0,0 +1,24 @@
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.serveCommand = serveCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const http_server_1 = require("../../server/http-server");
9
+ async function serveCommand(opts = {}) {
10
+ const port = opts.port ?? 8317;
11
+ const host = opts.host ?? '127.0.0.1';
12
+ const apiKey = opts.apiKey?.trim() || (0, http_server_1.generateApiKey)();
13
+ if (!opts.apiKey) {
14
+ console.log();
15
+ console.log(chalk_1.default.yellow('⚠ Generated random API key (not persisted):'));
16
+ console.log(` ${apiKey}`);
17
+ console.log(chalk_1.default.dim(' Pass --api-key <yours> to override.'));
18
+ console.log();
19
+ }
20
+ (0, http_server_1.startHttpServer)({ port, host, apiKey });
21
+ // Keep process alive
22
+ await new Promise(() => undefined);
23
+ }
24
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":";;;;;AASA,oCAiBC;AA1BD,kDAA0B;AAC1B,0DAA2E;AAQpE,KAAK,UAAU,YAAY,CAAC,OAAqB,EAAE;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,IAAA,4BAAc,GAAE,CAAC;IAEvD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAA,6BAAe,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAExC,qBAAqB;IACrB,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function startCommand(): Promise<void>;
@@ -0,0 +1,26 @@
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.startCommand = startCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const store_1 = require("../../auth/store");
9
+ const tunnel_1 = require("../../daemon/tunnel");
10
+ async function startCommand() {
11
+ const cfg = (0, store_1.loadConfig)();
12
+ if (!cfg) {
13
+ console.error(chalk_1.default.red('Not logged in. Run `redai login` first.'));
14
+ process.exit(1);
15
+ }
16
+ if (cfg.expiresAt < Date.now()) {
17
+ console.error(chalk_1.default.red('cliToken expired. Run `redai login` again.'));
18
+ process.exit(1);
19
+ }
20
+ console.log(chalk_1.default.cyan('Starting RedAI CLI daemon...'));
21
+ console.log(chalk_1.default.dim(` WS: ${cfg.wsUrl}`));
22
+ console.log(chalk_1.default.dim(` Client ID: ${cfg.clientId}`));
23
+ console.log(chalk_1.default.dim('Press Ctrl-C to stop.\n'));
24
+ await (0, tunnel_1.startDaemon)(cfg);
25
+ }
26
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":";;;;;AAIA,oCAiBC;AArBD,kDAA0B;AAC1B,4CAA8C;AAC9C,gDAAkD;AAE3C,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,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"}
@@ -0,0 +1 @@
1
+ export declare function statusCommand(): Promise<void>;
@@ -0,0 +1,51 @@
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.statusCommand = statusCommand;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const config_1 = require("../../config");
10
+ const store_1 = require("../../auth/store");
11
+ const detect_1 = require("../../cli-router/detect");
12
+ async function statusCommand() {
13
+ const cfg = (0, store_1.loadConfig)();
14
+ if (!cfg) {
15
+ console.log(chalk_1.default.yellow('Not logged in.'));
16
+ console.log(chalk_1.default.dim('Run `redai login` first.'));
17
+ return;
18
+ }
19
+ console.log(chalk_1.default.cyan('RedAI CLI'), chalk_1.default.dim(`v${config_1.CLI_VERSION}`));
20
+ console.log();
21
+ console.log(` ${chalk_1.default.gray('User :')} ${cfg.userName ?? cfg.userEmail ?? cfg.userId}`);
22
+ console.log(` ${chalk_1.default.gray('Client ID :')} ${cfg.clientId}`);
23
+ console.log(` ${chalk_1.default.gray('API :')} ${cfg.apiBaseUrl}`);
24
+ console.log(` ${chalk_1.default.gray('WS :')} ${cfg.wsUrl}`);
25
+ console.log(` ${chalk_1.default.gray('Schema :')} ${cfg.projectSchemaId}`);
26
+ console.log(` ${chalk_1.default.gray('Tools :')} ${cfg.registeredTools.join(', ') || '(none)'}`);
27
+ console.log(` ${chalk_1.default.gray('Expires :')} ${new Date(cfg.expiresAt).toISOString()} ${cfg.expiresAt < Date.now() ? chalk_1.default.red('(EXPIRED — run `redai login`)') : ''}`);
28
+ const { capabilities, cliDetected } = (0, detect_1.detectCapabilities)();
29
+ console.log(` ${chalk_1.default.gray('Caps :')} ${capabilities.join(', ')}`);
30
+ for (const [name, version] of Object.entries(cliDetected)) {
31
+ console.log(` ${chalk_1.default.gray(` ↳ ${name}`)} ${version}`);
32
+ }
33
+ console.log();
34
+ console.log(chalk_1.default.dim('Pinging backend...'));
35
+ try {
36
+ const res = await axios_1.default.get(`${cfg.apiBaseUrl}/cli/auth/me`, {
37
+ headers: { Authorization: `Bearer ${cfg.cliToken}` },
38
+ timeout: 8000,
39
+ });
40
+ console.log(chalk_1.default.green('✓ Token valid.'), chalk_1.default.dim(JSON.stringify(res.data)));
41
+ }
42
+ catch (err) {
43
+ if (axios_1.default.isAxiosError(err) && err.response) {
44
+ console.log(chalk_1.default.red('✗ Token check failed:'), err.response.status, err.response.data);
45
+ }
46
+ else {
47
+ console.log(chalk_1.default.red('✗ Token check failed:'), err instanceof Error ? err.message : err);
48
+ }
49
+ }
50
+ }
51
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,127 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const config_1 = require("../config");
9
+ const login_1 = require("./commands/login");
10
+ const logout_1 = require("./commands/logout");
11
+ const oauth_1 = require("./commands/oauth");
12
+ const serve_1 = require("./commands/serve");
13
+ const start_1 = require("./commands/start");
14
+ const status_1 = require("./commands/status");
15
+ function parseArgs(argv) {
16
+ const args = argv.slice(2);
17
+ const command = args[0] ?? 'help';
18
+ const flags = {};
19
+ for (let i = 1; i < args.length; i++) {
20
+ const token = args[i];
21
+ if (!token.startsWith('--'))
22
+ continue;
23
+ const key = token.slice(2);
24
+ const next = args[i + 1];
25
+ if (next && !next.startsWith('--')) {
26
+ flags[key] = next;
27
+ i++;
28
+ }
29
+ else {
30
+ flags[key] = true;
31
+ }
32
+ }
33
+ return { command, flags };
34
+ }
35
+ function printHelp() {
36
+ console.log(`${chalk_1.default.cyan('redai')} ${chalk_1.default.dim(`v${config_1.CLI_VERSION}`)}`);
37
+ console.log();
38
+ console.log('Usage:');
39
+ console.log(' redai login [--api-key <key>] [--api-url <url>] Login by pasting your RedAI API key');
40
+ console.log(' redai status Show current login + capabilities');
41
+ console.log(' redai start Connect WS, keep tools online');
42
+ console.log(' redai serve [--port 8317] [--api-key <k>] HTTP server expose /v1/messages /v1/chat/completions /v1beta');
43
+ console.log(' redai logout Remove local RedAI token');
44
+ console.log();
45
+ console.log('LLM proxy (OAuth providers):');
46
+ console.log(' redai oauth claude [--account <name>] Login Claude Code (PKCE)');
47
+ console.log(' redai oauth codex [--account <name>] Sign in with ChatGPT');
48
+ console.log(' redai oauth gemini [--account <name>] Gemini Code Assist (Google)');
49
+ console.log(' redai oauth antigravity [--account <name>] Antigravity (Google)');
50
+ console.log(' redai oauth qwen [--account <name>] Qwen (device flow)');
51
+ console.log(' redai oauth kimi [--account <name>] Kimi (device flow)');
52
+ console.log(' redai oauth iflow [--cookie <c>] iFlow (OAuth or cookie)');
53
+ console.log(' redai oauth xai [--account <name>] xAI Grok (PKCE + OIDC)');
54
+ console.log(' redai oauth list List all OAuth accounts');
55
+ console.log(' redai oauth logout <provider> [<account>] Remove a provider login');
56
+ console.log();
57
+ console.log(' redai help Show this help');
58
+ }
59
+ async function main() {
60
+ const { command, flags } = parseArgs(process.argv);
61
+ try {
62
+ switch (command) {
63
+ case 'login':
64
+ await (0, login_1.loginCommand)({
65
+ apiKey: typeof flags['api-key'] === 'string' ? flags['api-key'] : undefined,
66
+ apiUrl: typeof flags['api-url'] === 'string' ? flags['api-url'] : undefined,
67
+ });
68
+ return;
69
+ case 'logout':
70
+ await (0, logout_1.logoutCommand)();
71
+ return;
72
+ case 'status':
73
+ await (0, status_1.statusCommand)();
74
+ return;
75
+ case 'start':
76
+ await (0, start_1.startCommand)();
77
+ return;
78
+ case 'serve':
79
+ await (0, serve_1.serveCommand)({
80
+ port: typeof flags['port'] === 'string' ? parseInt(flags['port'], 10) : undefined,
81
+ host: typeof flags['host'] === 'string' ? flags['host'] : undefined,
82
+ apiKey: typeof flags['api-key'] === 'string' ? flags['api-key'] : undefined,
83
+ });
84
+ return;
85
+ case 'oauth': {
86
+ const sub = process.argv[3];
87
+ if (!sub) {
88
+ console.error(chalk_1.default.red('Usage: redai oauth <provider> | list | logout <provider> [<account>]'));
89
+ process.exit(1);
90
+ }
91
+ if (sub === 'list') {
92
+ await (0, oauth_1.oauthListCommand)();
93
+ return;
94
+ }
95
+ if (sub === 'logout') {
96
+ const prov = process.argv[4];
97
+ const acc = process.argv[5] ?? 'default';
98
+ if (!prov) {
99
+ console.error(chalk_1.default.red('Usage: redai oauth logout <provider> [<account>]'));
100
+ process.exit(1);
101
+ }
102
+ await (0, oauth_1.oauthLogoutCommand)(prov, acc);
103
+ return;
104
+ }
105
+ await (0, oauth_1.oauthCommand)({
106
+ provider: sub,
107
+ account: typeof flags['account'] === 'string' ? flags['account'] : undefined,
108
+ noBrowser: flags['no-browser'] === true,
109
+ cookie: typeof flags['cookie'] === 'string' ? flags['cookie'] : undefined,
110
+ });
111
+ return;
112
+ }
113
+ case 'help':
114
+ case '--help':
115
+ case '-h':
116
+ default:
117
+ printHelp();
118
+ return;
119
+ }
120
+ }
121
+ catch (err) {
122
+ console.error(chalk_1.default.red('Error:'), err instanceof Error ? err.message : err);
123
+ process.exitCode = 1;
124
+ }
125
+ }
126
+ void main();
127
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Capability } from '@redonvn/cli-protocol';
2
+ /**
3
+ * Detect AI-Agent CLI có sẵn trên máy. Trả:
4
+ * - capabilities: tổng hợp gồm 3 nhóm:
5
+ * 1. Tool runtime cơ bản: fs / bash / grep / glob / webfetch (luôn có)
6
+ * 2. Spawn CLI: claude / codex / gemini (có nếu binary cài sẵn)
7
+ * 3. LLM proxy: llm-claude / llm-codex / llm-gemini (có nếu user `redai oauth <provider>`)
8
+ * - cliDetected: { claude:'1.0.5', ... } cho dashboard hiển thị
9
+ */
10
+ export declare function detectCapabilities(): {
11
+ capabilities: Capability[];
12
+ cliDetected: Record<string, string>;
13
+ };