@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.
- package/dist/auth/store.d.ts +1 -0
- 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/build-info.js.map +1 -1
- package/dist/cli/commands/ask.d.ts +1 -0
- package/dist/cli/commands/ask.js +532 -0
- package/dist/cli/commands/ask.js.map +1 -0
- package/dist/cli/index.js +16 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/package.json +1 -1
package/dist/auth/store.d.ts
CHANGED
|
@@ -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;
|
package/dist/auth/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":";;;;;
|
|
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"}
|
package/dist/build-info.d.ts
CHANGED
|
@@ -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.
|
|
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-
|
|
6
|
+
export declare const BUILD_TIME = "2026-05-18T10:33:48.764Z";
|
package/dist/build-info.js
CHANGED
|
@@ -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.
|
|
9
|
+
exports.PKG_VERSION = '0.1.10';
|
|
10
10
|
/** ISO timestamp lúc build (informational). */
|
|
11
|
-
exports.BUILD_TIME = '2026-05-
|
|
11
|
+
exports.BUILD_TIME = '2026-05-18T10:33:48.764Z';
|
|
12
12
|
//# sourceMappingURL=build-info.js.map
|
package/dist/build-info.js.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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) {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -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,
|
|
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.
|
|
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.
|
|
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"
|