@redonvn/cli 0.1.7 → 0.1.10

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.
@@ -10,6 +10,7 @@ export interface RedaiCliConfig {
10
10
  userEmail: string | null;
11
11
  userName: string | null;
12
12
  expiresAt: number;
13
+ workspaceId?: string | null;
13
14
  }
14
15
  export declare function loadConfig(): RedaiCliConfig | null;
15
16
  export declare function saveConfig(cfg: RedaiCliConfig): void;
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":";;;;;AAsBA,gCAQC;AAED,gCAMC;AAED,kCAIC;AA5CD,4CAAoB;AACpB,sCAA0E;AAe1E,SAAS,SAAS;IAChB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,yBAAgB,CAAC,EAAE,CAAC;QACrC,YAAE,CAAC,SAAS,CAAC,yBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,SAAgB,UAAU;IACxB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,0BAAiB,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,0BAAiB,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,UAAU,CAAC,GAAmB;IAC5C,SAAS,EAAE,CAAC;IACZ,YAAE,CAAC,aAAa,CAAC,0BAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAChE,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,WAAW;IACzB,IAAI,YAAE,CAAC,UAAU,CAAC,0BAAiB,CAAC,EAAE,CAAC;QACrC,YAAE,CAAC,UAAU,CAAC,0BAAiB,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":";;;;;AAuBA,gCAQC;AAED,gCAMC;AAED,kCAIC;AA7CD,4CAAoB;AACpB,sCAA0E;AAgB1E,SAAS,SAAS;IAChB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,yBAAgB,CAAC,EAAE,CAAC;QACrC,YAAE,CAAC,SAAS,CAAC,yBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,SAAgB,UAAU;IACxB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,0BAAiB,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,0BAAiB,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,UAAU,CAAC,GAAmB;IAC5C,SAAS,EAAE,CAAC;IACZ,YAAE,CAAC,aAAa,CAAC,0BAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAChE,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,WAAW;IACzB,IAAI,YAAE,CAAC,UAAU,CAAC,0BAAiB,CAAC,EAAE,CAAC;QACrC,YAAE,CAAC,UAAU,CAAC,0BAAiB,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /** Env baked at build time. Runtime flag `--env` / `REDAI_ENV` vẫn override được. */
2
2
  export declare const BUILD_ENV: 'dev' | 'prod';
3
3
  /** Package version đọc từ package.json lúc build. Đồng bộ với npm version. */
4
- export declare const PKG_VERSION = "0.1.7";
4
+ export declare const PKG_VERSION = "0.1.10";
5
5
  /** ISO timestamp lúc build (informational). */
6
- export declare const BUILD_TIME = "2026-05-18T09:38:01.024Z";
6
+ export declare const BUILD_TIME = "2026-05-18T10:33:48.764Z";
@@ -6,7 +6,7 @@ exports.BUILD_TIME = exports.PKG_VERSION = exports.BUILD_ENV = void 0;
6
6
  /** Env baked at build time. Runtime flag `--env` / `REDAI_ENV` vẫn override được. */
7
7
  exports.BUILD_ENV = 'dev';
8
8
  /** Package version đọc từ package.json lúc build. Đồng bộ với npm version. */
9
- exports.PKG_VERSION = '0.1.7';
9
+ exports.PKG_VERSION = '0.1.10';
10
10
  /** ISO timestamp lúc build (informational). */
11
- exports.BUILD_TIME = '2026-05-18T09:38:01.024Z';
11
+ exports.BUILD_TIME = '2026-05-18T10:33:48.764Z';
12
12
  //# sourceMappingURL=build-info.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-info.js","sourceRoot":"","sources":["../src/build-info.ts"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,sFAAsF;;;AAEtF,qFAAqF;AACxE,QAAA,SAAS,GAAmB,KAAK,CAAC;AAE/C,8EAA8E;AACjE,QAAA,WAAW,GAAG,OAAO,CAAC;AAEnC,+CAA+C;AAClC,QAAA,UAAU,GAAG,0BAA0B,CAAC"}
1
+ {"version":3,"file":"build-info.js","sourceRoot":"","sources":["../src/build-info.ts"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,sFAAsF;;;AAEtF,qFAAqF;AACxE,QAAA,SAAS,GAAmB,KAAK,CAAC;AAE/C,8EAA8E;AACjE,QAAA,WAAW,GAAG,QAAQ,CAAC;AAEpC,+CAA+C;AAClC,QAAA,UAAU,GAAG,0BAA0B,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function askCommand(): Promise<void>;
@@ -0,0 +1,532 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.askCommand = askCommand;
40
+ /**
41
+ * `redai` (no args) — Interactive shell của RedAI.
42
+ *
43
+ * Gõ prompt tự do → gửi lên /user/chat (backend) → stream response về.
44
+ * Slash commands (/help, /agents, /permissions, ...) xử lý local.
45
+ */
46
+ const chalk_1 = __importDefault(require("chalk"));
47
+ const readline_1 = __importDefault(require("readline"));
48
+ const axios_1 = __importDefault(require("axios"));
49
+ const store_1 = require("../../auth/store");
50
+ const permissions_1 = require("../../auth/permissions");
51
+ const permissions_2 = require("../../auth/permissions");
52
+ const config_1 = require("../../config");
53
+ // ─── Session state ─────────────────────────────────────────────────────────────
54
+ let currentThreadId = null;
55
+ let currentAgentId = null;
56
+ let currentAgentName = 'RedAI';
57
+ // ─── Banner ────────────────────────────────────────────────────────────────────
58
+ const LOGO = [
59
+ ' ██████╗ ███████╗██████╗ █████╗ ██╗',
60
+ ' ██╔══██╗██╔════╝██╔══██╗██╔══██╗██║',
61
+ ' ██████╔╝█████╗ ██║ ██║███████║██║',
62
+ ' ██╔══██╗██╔══╝ ██║ ██║██╔══██║██║',
63
+ ' ██║ ██║███████╗██████╔╝██║ ██║██║',
64
+ ' ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═╝ ╚═╝╚═╝',
65
+ ];
66
+ function printBanner(cfg) {
67
+ console.log();
68
+ for (const line of LOGO) {
69
+ console.log(chalk_1.default.cyan(line));
70
+ }
71
+ console.log();
72
+ console.log(chalk_1.default.dim(' v' + config_1.CLI_VERSION) +
73
+ ' ' +
74
+ chalk_1.default.white(cfg.userName ?? cfg.userEmail ?? String(cfg.userId)));
75
+ console.log(chalk_1.default.dim(' Type / to see commands, Ctrl-C to exit.'));
76
+ console.log();
77
+ }
78
+ // ─── Slash command list ────────────────────────────────────────────────────────
79
+ const COMMANDS = [
80
+ { cmd: '/help', desc: 'Show all commands' },
81
+ { cmd: '/account', desc: 'Account info' },
82
+ { cmd: '/agents', desc: 'List AI agents — select default' },
83
+ { cmd: '/permissions', desc: 'View / toggle tool permissions on this machine' },
84
+ { cmd: '/mcps', desc: 'List configured MCP servers' },
85
+ { cmd: '/thread', desc: 'Show current conversation thread ID' },
86
+ { cmd: '/new', desc: 'Start a new conversation thread' },
87
+ { cmd: '/clear', desc: 'Clear screen' },
88
+ { cmd: '/exit', desc: 'Quit' },
89
+ ];
90
+ function printHelp() {
91
+ console.log();
92
+ console.log(chalk_1.default.bold(' Commands'));
93
+ console.log();
94
+ for (const { cmd, desc } of COMMANDS) {
95
+ console.log(` ${chalk_1.default.cyan(cmd.padEnd(16))} ${chalk_1.default.dim(desc)}`);
96
+ }
97
+ console.log();
98
+ console.log(chalk_1.default.dim(' Type anything else to chat with the current agent.'));
99
+ console.log();
100
+ }
101
+ // ─── /account ─────────────────────────────────────────────────────────────────
102
+ function printAccount(cfg) {
103
+ console.log();
104
+ console.log(chalk_1.default.bold(' Account'));
105
+ console.log(` ${chalk_1.default.dim('User ')} ${cfg.userName ?? '-'}`);
106
+ console.log(` ${chalk_1.default.dim('Email ')} ${cfg.userEmail ?? '-'}`);
107
+ console.log(` ${chalk_1.default.dim('Client ')} ${cfg.clientId}`);
108
+ console.log(` ${chalk_1.default.dim('Env ')} ${(cfg.env ?? 'dev').toUpperCase()}`);
109
+ console.log(` ${chalk_1.default.dim('Expires ')} ${new Date(cfg.expiresAt).toLocaleString()}` +
110
+ (cfg.expiresAt < Date.now() ? chalk_1.default.red(' (EXPIRED)') : ''));
111
+ console.log();
112
+ }
113
+ // ─── /agents ──────────────────────────────────────────────────────────────────
114
+ async function printAgentsInteractive(cfg) {
115
+ process.stdout.write(chalk_1.default.dim(' Loading agents...\r'));
116
+ let agents = [];
117
+ try {
118
+ const res = await axios_1.default.get(`${cfg.apiBaseUrl}/api/v1/user/agents?pageSize=50&active=true`, {
119
+ headers: buildHeaders(cfg),
120
+ timeout: 10000,
121
+ });
122
+ agents = res.data?.data?.items ?? [];
123
+ }
124
+ catch {
125
+ process.stdout.write(' \r');
126
+ console.log(chalk_1.default.red(' ✗ Could not fetch agents.'));
127
+ console.log();
128
+ return;
129
+ }
130
+ process.stdout.write(' \r');
131
+ if (agents.length === 0) {
132
+ console.log(chalk_1.default.dim(' No agents found.'));
133
+ console.log();
134
+ return;
135
+ }
136
+ console.log();
137
+ console.log(chalk_1.default.bold(` AI Agents (${agents.length})`));
138
+ console.log();
139
+ agents.forEach((a, i) => {
140
+ const current = a.id === currentAgentId;
141
+ const bullet = current ? chalk_1.default.green('●') : chalk_1.default.dim('○');
142
+ const name = current ? chalk_1.default.bold.green(a.name) : a.name;
143
+ const type = a.typeEnum ? chalk_1.default.dim(` [${a.typeEnum}]`) : '';
144
+ const active = a.active ? '' : chalk_1.default.red(' (inactive)');
145
+ console.log(` ${bullet} ${String(i + 1).padStart(2)}. ${name}${type}${active}`);
146
+ });
147
+ console.log();
148
+ console.log(chalk_1.default.dim(' Enter number to select agent, or press Enter to keep current.'));
149
+ const answer = await new Promise((resolve) => {
150
+ const tmp = readline_1.default.createInterface({ input: process.stdin, output: process.stdout, terminal: false });
151
+ process.stdout.write(chalk_1.default.dim(' › '));
152
+ tmp.once('line', (line) => { tmp.close(); resolve(line.trim()); });
153
+ });
154
+ if (!answer) {
155
+ console.log();
156
+ return;
157
+ }
158
+ const idx = parseInt(answer, 10) - 1;
159
+ if (isNaN(idx) || idx < 0 || idx >= agents.length) {
160
+ console.log(chalk_1.default.yellow(' Invalid selection.'));
161
+ console.log();
162
+ return;
163
+ }
164
+ const chosen = agents[idx];
165
+ currentAgentId = chosen.id;
166
+ currentAgentName = chosen.name;
167
+ console.log(chalk_1.default.green(`\n ✓ Agent set to: ${chalk_1.default.bold(chosen.name)}`));
168
+ console.log();
169
+ }
170
+ // ─── /permissions ─────────────────────────────────────────────────────────────
171
+ const TOOL_DESC = {
172
+ Read: 'Read files',
173
+ Write: 'Create/overwrite files',
174
+ Edit: 'Find-and-replace in files',
175
+ Grep: 'Search content (ripgrep)',
176
+ Glob: 'Find files by pattern',
177
+ Bash: 'Run shell commands ⚠',
178
+ WebFetch: 'Fetch URLs',
179
+ RunClaude: 'Spawn Claude Code',
180
+ RunCodex: 'Spawn Codex CLI',
181
+ RunGemini: 'Spawn Gemini CLI',
182
+ LLMRequest: 'Proxy LLM via OAuth',
183
+ McpCall: 'Call MCP tool',
184
+ McpList: 'List MCP tools',
185
+ };
186
+ function printPermissions() {
187
+ const perms = (0, permissions_1.loadPermissions)();
188
+ console.log();
189
+ console.log(chalk_1.default.bold(' Tool Permissions') + chalk_1.default.dim(' (edit: redai permission)'));
190
+ console.log();
191
+ for (const name of permissions_2.ALL_TOOL_NAMES) {
192
+ const off = perms[name] === false;
193
+ const icon = off ? chalk_1.default.red('✗ off') : chalk_1.default.green('✓ on ');
194
+ console.log(` ${icon} ${chalk_1.default.bold(name.padEnd(13))} ${chalk_1.default.dim(TOOL_DESC[name])}`);
195
+ }
196
+ console.log();
197
+ }
198
+ // ─── /mcps ────────────────────────────────────────────────────────────────────
199
+ function printMcps() {
200
+ try {
201
+ // lazy import to avoid hard dep at top level
202
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
203
+ const { loadMcpConfig } = require('../../mcp/config');
204
+ const servers = loadMcpConfig();
205
+ const names = Object.keys(servers);
206
+ console.log();
207
+ console.log(chalk_1.default.bold(' MCP Servers'));
208
+ console.log();
209
+ if (names.length === 0) {
210
+ console.log(chalk_1.default.dim(' No MCP servers configured.'));
211
+ console.log(chalk_1.default.dim(' Run `redai mcp add` to configure one.'));
212
+ }
213
+ else {
214
+ for (const name of names) {
215
+ console.log(` ${chalk_1.default.green('●')} ${name}`);
216
+ }
217
+ }
218
+ console.log();
219
+ }
220
+ catch {
221
+ console.log(chalk_1.default.dim(' (MCP config unavailable)'));
222
+ console.log();
223
+ }
224
+ }
225
+ // ─── /thread ──────────────────────────────────────────────────────────────────
226
+ function printThread() {
227
+ console.log();
228
+ if (currentThreadId) {
229
+ console.log(` ${chalk_1.default.dim('Thread ')} ${currentThreadId}`);
230
+ console.log(` ${chalk_1.default.dim('Agent ')} ${currentAgentName}`);
231
+ }
232
+ else {
233
+ console.log(chalk_1.default.dim(' No active thread. Send a message to create one.'));
234
+ }
235
+ console.log();
236
+ }
237
+ // ─── Create / reset thread ────────────────────────────────────────────────────
238
+ async function createThread(cfg, title) {
239
+ try {
240
+ const res = await axios_1.default.post(`${cfg.apiBaseUrl}/api/v1/user/chat/threads`, { title }, { headers: buildHeaders(cfg), timeout: 10000 });
241
+ return res.data?.data?.id ?? null;
242
+ }
243
+ catch {
244
+ return null;
245
+ }
246
+ }
247
+ // ─── Send message + stream response ───────────────────────────────────────────
248
+ async function sendMessage(cfg, prompt) {
249
+ // Ensure thread exists
250
+ if (!currentThreadId) {
251
+ process.stdout.write(chalk_1.default.dim(' Creating thread...'));
252
+ const tid = await createThread(cfg, prompt.slice(0, 80));
253
+ if (!tid) {
254
+ process.stdout.write('\r' + ' '.repeat(30) + '\r');
255
+ console.log(chalk_1.default.red(' ✗ Could not create thread. Check connection.'));
256
+ console.log();
257
+ return;
258
+ }
259
+ currentThreadId = tid;
260
+ process.stdout.write('\r' + ' '.repeat(30) + '\r');
261
+ }
262
+ // Send message → get runId
263
+ process.stdout.write(chalk_1.default.dim(` ⠸ ${currentAgentName}...`));
264
+ let runId = null;
265
+ try {
266
+ const body = {
267
+ contentBlocks: [{ type: 'text', text: prompt }],
268
+ agentMode: 'FAST',
269
+ };
270
+ if (currentAgentId)
271
+ body.agentId = currentAgentId;
272
+ const res = await axios_1.default.post(`${cfg.apiBaseUrl}/api/v1/user/chat/threads/${currentThreadId}/messages`, body, { headers: buildHeaders(cfg), timeout: 30000 });
273
+ runId = res.data?.data?.runId ?? null;
274
+ if (!runId)
275
+ throw new Error('No runId returned');
276
+ }
277
+ catch (err) {
278
+ process.stdout.write('\r' + ' '.repeat(40) + '\r');
279
+ const msg = axios_1.default.isAxiosError(err) && err.response
280
+ ? `${err.response.status}: ${JSON.stringify(err.response.data)}`
281
+ : err instanceof Error ? err.message : String(err);
282
+ console.log(chalk_1.default.red(` ✗ ${msg}`));
283
+ console.log();
284
+ return;
285
+ }
286
+ process.stdout.write('\r' + ' '.repeat(40) + '\r');
287
+ // Stream SSE response
288
+ console.log();
289
+ process.stdout.write(chalk_1.default.dim(' '));
290
+ try {
291
+ await streamResponse(cfg, currentThreadId, runId);
292
+ }
293
+ catch (err) {
294
+ console.log(chalk_1.default.red(`\n ✗ Stream error: ${err instanceof Error ? err.message : String(err)}`));
295
+ }
296
+ console.log('\n');
297
+ }
298
+ async function streamResponse(cfg, threadId, runId) {
299
+ const url = `${cfg.apiBaseUrl}/api/v1/user/chat/threads/${threadId}/stream/${runId}`;
300
+ // Use undici for proper SSE streaming
301
+ const { fetch: undiciFetch } = await Promise.resolve().then(() => __importStar(require('undici')));
302
+ const res = await undiciFetch(url, {
303
+ headers: { ...buildHeaders(cfg), Accept: 'text/event-stream' },
304
+ });
305
+ if (!res.body)
306
+ return;
307
+ const reader = res.body.getReader();
308
+ const decoder = new TextDecoder();
309
+ let buf = '';
310
+ let lastType = '';
311
+ while (true) {
312
+ const { done, value } = await reader.read();
313
+ if (done)
314
+ break;
315
+ buf += decoder.decode(value, { stream: true });
316
+ const lines = buf.split('\n');
317
+ buf = lines.pop() ?? '';
318
+ for (const line of lines) {
319
+ if (!line.startsWith('data: '))
320
+ continue;
321
+ const raw = line.slice(6).trim();
322
+ if (!raw || raw === '[DONE]')
323
+ continue;
324
+ try {
325
+ const evt = JSON.parse(raw);
326
+ // Text delta → print inline
327
+ const delta = evt.delta ?? evt.text ?? evt.content ?? '';
328
+ if (delta) {
329
+ // First chunk after non-text event → newline indent
330
+ if (lastType !== 'text')
331
+ process.stdout.write('\n ');
332
+ process.stdout.write(delta);
333
+ lastType = 'text';
334
+ }
335
+ else if (evt.type === 'done' || evt.status === 'completed') {
336
+ break;
337
+ }
338
+ else if (evt.error) {
339
+ console.log(chalk_1.default.red(`\n ✗ ${evt.error}`));
340
+ break;
341
+ }
342
+ }
343
+ catch {
344
+ // Non-JSON SSE line — ignore
345
+ }
346
+ }
347
+ }
348
+ reader.releaseLock();
349
+ }
350
+ // ─── Auth headers ─────────────────────────────────────────────────────────────
351
+ function buildHeaders(cfg) {
352
+ return {
353
+ Authorization: `Bearer ${cfg.cliToken}`,
354
+ 'Content-Type': 'application/json',
355
+ // workspace scope — required by guards
356
+ ...(cfg.workspaceId ? { 'x-workspace-id': cfg.workspaceId } : {}),
357
+ };
358
+ }
359
+ // ─── Inline suggestion bar ────────────────────────────────────────────────────
360
+ const CMD_NAMES = COMMANDS.map((c) => c.cmd); // ['/help', '/account', ...]
361
+ /**
362
+ * Xóa suggestion line hiện tại (1 dòng phía trên cursor) rồi in lại.
363
+ * Chỉ gọi khi đang trong slash-mode.
364
+ */
365
+ function renderSuggestions(typed) {
366
+ const query = typed.toLowerCase();
367
+ const matched = CMD_NAMES.filter((c) => c.startsWith(query));
368
+ // Xóa dòng suggestion cũ (cursor đang ở cuối prompt line → lên 1 dòng xóa)
369
+ process.stdout.write('\x1B[1A\x1B[2K'); // lên 1 dòng, xóa dòng
370
+ if (matched.length === 0) {
371
+ process.stdout.write(chalk_1.default.dim(' no matching command') + '\n');
372
+ }
373
+ else {
374
+ const parts = matched.map((c) => {
375
+ // Bold phần đã gõ, dim phần còn lại
376
+ const rest = c.slice(query.length);
377
+ return chalk_1.default.bold.cyan(query) + chalk_1.default.dim(rest);
378
+ });
379
+ process.stdout.write(' ' + parts.join(chalk_1.default.dim(' · ')) + '\n');
380
+ }
381
+ }
382
+ function clearSuggestions() {
383
+ process.stdout.write('\x1B[1A\x1B[2K'); // xóa dòng suggestion
384
+ }
385
+ // ─── Main REPL ────────────────────────────────────────────────────────────────
386
+ async function askCommand() {
387
+ const cfg = (0, store_1.loadConfig)();
388
+ if (!cfg) {
389
+ console.error(chalk_1.default.red('Not logged in. Run `redai login` first.'));
390
+ process.exit(1);
391
+ }
392
+ if (cfg.expiresAt < Date.now()) {
393
+ console.error(chalk_1.default.red('Session expired. Run `redai login` again.'));
394
+ process.exit(1);
395
+ }
396
+ process.stdout.write('\x1Bc');
397
+ printBanner(cfg);
398
+ // Enable keypress events trên stdin
399
+ readline_1.default.emitKeypressEvents(process.stdin);
400
+ if (process.stdin.isTTY)
401
+ process.stdin.setRawMode(true);
402
+ const PROMPT = '\n' + chalk_1.default.cyan('redai') + chalk_1.default.dim(' › ');
403
+ let buffer = ''; // ký tự user đang gõ
404
+ let slashMode = false; // đang trong chế độ gõ slash command
405
+ let busy = false; // đang xử lý async (gửi message)
406
+ // In 1 dòng trống làm chỗ cho suggestion, rồi in prompt
407
+ const printPromptWithSuggestionSlot = () => {
408
+ process.stdout.write('\n'); // dòng suggestion (trống ban đầu)
409
+ process.stdout.write(PROMPT);
410
+ };
411
+ printPromptWithSuggestionSlot();
412
+ process.stdin.on('keypress', async (char, key) => {
413
+ if (busy)
414
+ return;
415
+ // ── Ctrl-C / Ctrl-D → exit ───────────────────────────────────────────────
416
+ if (key?.ctrl && (key.name === 'c' || key.name === 'd')) {
417
+ console.log(chalk_1.default.dim('\n\n Bye!\n'));
418
+ process.exit(0);
419
+ }
420
+ // ── Backspace ────────────────────────────────────────────────────────────
421
+ if (key?.name === 'backspace') {
422
+ if (buffer.length === 0)
423
+ return;
424
+ buffer = buffer.slice(0, -1);
425
+ // Xóa 1 ký tự trên stdout
426
+ process.stdout.write('\b \b');
427
+ if (slashMode) {
428
+ if (buffer === '') {
429
+ slashMode = false;
430
+ clearSuggestions();
431
+ }
432
+ else {
433
+ renderSuggestions(buffer);
434
+ process.stdout.write(buffer); // reprint buffer sau khi render lại
435
+ }
436
+ }
437
+ return;
438
+ }
439
+ // ── Enter ────────────────────────────────────────────────────────────────
440
+ if (key?.name === 'return') {
441
+ const input = buffer.trim();
442
+ buffer = '';
443
+ slashMode = false;
444
+ process.stdout.write('\n'); // xuống dòng sau input
445
+ if (!input) {
446
+ printPromptWithSuggestionSlot();
447
+ return;
448
+ }
449
+ if (input.startsWith('/')) {
450
+ const cmd = input.split(' ')[0].toLowerCase();
451
+ busy = true;
452
+ switch (cmd) {
453
+ case '/':
454
+ case '/help':
455
+ printHelp();
456
+ break;
457
+ case '/account':
458
+ printAccount(cfg);
459
+ break;
460
+ case '/agents':
461
+ await printAgentsInteractive(cfg);
462
+ break;
463
+ case '/permissions':
464
+ printPermissions();
465
+ break;
466
+ case '/mcps':
467
+ printMcps();
468
+ break;
469
+ case '/thread':
470
+ printThread();
471
+ break;
472
+ case '/new':
473
+ currentThreadId = null;
474
+ console.log(chalk_1.default.dim('\n Thread reset — next message starts a new conversation.\n'));
475
+ break;
476
+ case '/clear':
477
+ process.stdout.write('\x1Bc');
478
+ printBanner(cfg);
479
+ break;
480
+ case '/exit':
481
+ case '/quit':
482
+ console.log(chalk_1.default.dim('\n Bye!\n'));
483
+ process.exit(0);
484
+ default:
485
+ console.log(chalk_1.default.yellow(`\n Unknown command: ${cmd}`));
486
+ console.log(chalk_1.default.dim(' Type / to see available commands.\n'));
487
+ }
488
+ busy = false;
489
+ printPromptWithSuggestionSlot();
490
+ return;
491
+ }
492
+ // Regular prompt → gửi lên backend
493
+ busy = true;
494
+ await sendMessage(cfg, input);
495
+ busy = false;
496
+ printPromptWithSuggestionSlot();
497
+ return;
498
+ }
499
+ // ── Tab → autocomplete lệnh đầu tiên match ───────────────────────────────
500
+ if (key?.name === 'tab' && slashMode) {
501
+ const query = buffer.toLowerCase();
502
+ const match = CMD_NAMES.find((c) => c.startsWith(query));
503
+ if (match) {
504
+ // Xóa buffer hiện tại trên stdout
505
+ process.stdout.write('\b \b'.repeat(buffer.length));
506
+ buffer = match;
507
+ clearSuggestions();
508
+ slashMode = false;
509
+ process.stdout.write(buffer);
510
+ }
511
+ return;
512
+ }
513
+ // ── Ký tự thường ─────────────────────────────────────────────────────────
514
+ if (!char || char.length !== 1)
515
+ return;
516
+ buffer += char;
517
+ process.stdout.write(char);
518
+ // Bắt đầu slash mode khi gõ '/' đầu tiên
519
+ if (buffer === '/') {
520
+ slashMode = true;
521
+ renderSuggestions('/');
522
+ process.stdout.write('/'); // reprint sau suggestion
523
+ return;
524
+ }
525
+ if (slashMode) {
526
+ renderSuggestions(buffer);
527
+ process.stdout.write(buffer); // reprint toàn bộ buffer sau suggestion
528
+ }
529
+ });
530
+ await new Promise(() => undefined);
531
+ }
532
+ //# sourceMappingURL=ask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/cli/commands/ask.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -10,13 +10,15 @@ const login_1 = require("./commands/login");
10
10
  const logout_1 = require("./commands/logout");
11
11
  const oauth_1 = require("./commands/oauth");
12
12
  const mcp_1 = require("./commands/mcp");
13
+ const ask_1 = require("./commands/ask");
13
14
  const permission_1 = require("./commands/permission");
14
15
  const serve_1 = require("./commands/serve");
15
16
  const start_1 = require("./commands/start");
16
17
  const status_1 = require("./commands/status");
17
18
  function parseArgs(argv) {
18
19
  const args = argv.slice(2);
19
- const command = args[0] ?? 'help';
20
+ // No argument enter interactive shell
21
+ const command = args[0] ?? '__shell__';
20
22
  const flags = {};
21
23
  for (let i = 1; i < args.length; i++) {
22
24
  const token = args[i];
@@ -38,6 +40,7 @@ function printHelp() {
38
40
  console.log(`${chalk_1.default.cyan('redai')} ${chalk_1.default.dim(`v${config_1.CLI_VERSION}`)}`);
39
41
  console.log();
40
42
  console.log('Usage:');
43
+ console.log(' redai Enter RedAI interactive shell');
41
44
  console.log(' redai login [--env dev|prod] [--api-key <k>] [--api-url <url>] Login RedAI');
42
45
  console.log(' redai status Show current login + capabilities');
43
46
  console.log(' redai start Connect WS, keep tools online');
@@ -78,6 +81,13 @@ async function main() {
78
81
  const { command, flags } = parseArgs(process.argv);
79
82
  try {
80
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;
81
91
  case 'login':
82
92
  await (0, login_1.loginCommand)({
83
93
  env: typeof flags['env'] === 'string' ? flags['env'] : undefined,
@@ -170,9 +180,13 @@ async function main() {
170
180
  case 'help':
171
181
  case '--help':
172
182
  case '-h':
173
- default:
174
183
  printHelp();
175
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;
176
190
  }
177
191
  }
178
192
  catch (err) {
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
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.7";
4
+ export declare const CLI_VERSION = "0.1.10";
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redonvn/cli",
3
- "version": "0.1.7",
3
+ "version": "0.1.10",
4
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
5
  "bin": {
6
6
  "redai": "./bin/redai.js"