@redonvn/cli 0.1.0 → 0.1.2

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/README.md CHANGED
@@ -21,10 +21,33 @@ Yêu cầu Node.js ≥ 18.17.
21
21
  Tạo API key trên dashboard RedAI với permission `cli:connect`, sau đó:
22
22
 
23
23
  ```bash
24
- redai login
24
+ redai login # Mặc định = env baked vào build (xem dưới)
25
+ redai login --env prod # Force PROD
26
+ redai login --env dev # Force DEV
25
27
  # Paste API key khi prompt
26
28
  ```
27
29
 
30
+ #### Môi trường
31
+
32
+ | Env | API base | WebSocket |
33
+ |---|---|---|
34
+ | `dev` | `https://v2.redai.vn` | `wss://v2.redai.vn` |
35
+ | `prod` | `https://app.redai.vn` | `wss://socket.redai.vn` |
36
+
37
+ **Mặc định khi cài:**
38
+
39
+ | Bản | Default env | Lệnh cài |
40
+ |---|---|---|
41
+ | `latest` (prod release) | **prod** | `npm i -g @redonvn/cli` |
42
+ | `dev` tag | **dev** | `npm i -g @redonvn/cli@dev` |
43
+
44
+ → User chỉ cần `redai login`, không cần truyền `--env`. Cần switch tạm: dùng `--env dev` hoặc `REDAI_ENV=dev`.
45
+
46
+ Override URL custom (cho dev backend local):
47
+ ```bash
48
+ redai login --api-url http://localhost:3000 --ws-url ws://localhost:3000
49
+ ```
50
+
28
51
  ### 2. (Tuỳ chọn) Đăng nhập OAuth provider để dùng quota của bạn
29
52
 
30
53
  ```bash
@@ -1,4 +1,7 @@
1
+ import { RedaiEnv } from '../config';
1
2
  export interface RedaiCliConfig {
3
+ /** Môi trường lúc login: 'dev' hoặc 'prod'. */
4
+ env: RedaiEnv;
2
5
  cliToken: string;
3
6
  clientId: string;
4
7
  wsUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":";;;;;AAuBA,gCAQC;AAED,gCAMC;AAED,kCAIC;AA7CD,4CAAoB;AACpB,sCAAgE;AAgBhE,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":";;;;;AAyBA,gCAQC;AAED,gCAMC;AAED,kCAIC;AA/CD,4CAAoB;AACpB,sCAA0E;AAkB1E,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"}
@@ -0,0 +1,4 @@
1
+ /** Env baked at build time. Runtime flag `--env` / `REDAI_ENV` vẫn override được. */
2
+ export declare const BUILD_ENV: 'dev' | 'prod';
3
+ /** ISO timestamp lúc build (informational). */
4
+ export declare const BUILD_TIME = "2026-05-18T04:35:20.866Z";
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ // AUTO-GENERATED by scripts/write-build-info.cjs — DO NOT EDIT.
3
+ // Regenerated every build. Run `npm run build:prod` or `npm run build:dev` to switch.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.BUILD_TIME = exports.BUILD_ENV = void 0;
6
+ /** Env baked at build time. Runtime flag `--env` / `REDAI_ENV` vẫn override được. */
7
+ exports.BUILD_ENV = 'dev';
8
+ /** ISO timestamp lúc build (informational). */
9
+ exports.BUILD_TIME = '2026-05-18T04:35:20.866Z';
10
+ //# sourceMappingURL=build-info.js.map
@@ -0,0 +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,+CAA+C;AAClC,QAAA,UAAU,GAAG,0BAA0B,CAAC"}
@@ -1,6 +1,9 @@
1
1
  interface LoginOptions {
2
2
  apiKey?: string;
3
3
  apiUrl?: string;
4
+ wsUrl?: string;
5
+ /** 'dev' | 'prod' — chọn preset endpoint. */
6
+ env?: string;
4
7
  }
5
8
  export declare function loginCommand(options?: LoginOptions): Promise<void>;
6
9
  export {};
@@ -13,13 +13,15 @@ const client_id_1 = require("../../auth/client-id");
13
13
  const store_1 = require("../../auth/store");
14
14
  const detect_1 = require("../../cli-router/detect");
15
15
  async function loginCommand(options = {}) {
16
- const apiBaseUrl = (options.apiUrl ?? config_1.DEFAULT_API_BASE_URL).replace(/\/+$/, '');
16
+ const env = (0, config_1.resolveEnv)(options.env);
17
+ const apiBaseUrl = (0, config_1.resolveApiBaseUrl)({ env, apiUrlOverride: options.apiUrl }).replace(/\/+$/, '');
18
+ const wsFallbackBase = (0, config_1.resolveWsBaseUrl)({ env, wsUrlOverride: options.wsUrl });
17
19
  let apiKey = options.apiKey;
18
20
  if (!apiKey) {
19
21
  const response = await (0, prompts_1.default)({
20
22
  type: 'password',
21
23
  name: 'apiKey',
22
- message: 'Paste your RedAI API key (with permission "cli:connect"):',
24
+ message: `Paste your RedAI API key for ${chalk_1.default.cyan(env.toUpperCase())} (permission "cli:connect"):`,
23
25
  validate: (v) => typeof v === 'string' && v.trim().length >= 8 ? true : 'API key looks too short',
24
26
  });
25
27
  apiKey = response.apiKey?.trim();
@@ -30,7 +32,7 @@ async function loginCommand(options = {}) {
30
32
  }
31
33
  const clientId = (0, client_id_1.loadOrCreateClientId)();
32
34
  const { capabilities, cliDetected } = (0, detect_1.detectCapabilities)();
33
- console.log(chalk_1.default.cyan('→ Verifying API key with'), apiBaseUrl);
35
+ console.log(chalk_1.default.cyan(`→ Verifying API key against ${env.toUpperCase()}:`), apiBaseUrl);
34
36
  let result;
35
37
  try {
36
38
  const res = await axios_1.default.post(`${apiBaseUrl}/cli/auth/verify`, {
@@ -57,10 +59,15 @@ async function loginCommand(options = {}) {
57
59
  process.exit(1);
58
60
  return;
59
61
  }
62
+ // BE thường trả wsUrl đầy đủ. Nếu thiếu (BE version cũ), CLI tự build từ preset.
63
+ const wsUrl = result.wsUrl && result.wsUrl.trim()
64
+ ? result.wsUrl
65
+ : `${wsFallbackBase}/redai-cli`;
60
66
  (0, store_1.saveConfig)({
67
+ env,
61
68
  cliToken: result.cliToken,
62
69
  clientId: result.clientId,
63
- wsUrl: result.wsUrl,
70
+ wsUrl,
64
71
  apiBaseUrl,
65
72
  userId: result.user.id,
66
73
  userEmail: result.user.email,
@@ -71,6 +78,9 @@ async function loginCommand(options = {}) {
71
78
  });
72
79
  console.log();
73
80
  console.log(chalk_1.default.green('✓ Logged in.'));
81
+ console.log(` ${chalk_1.default.gray('Env :')} ${env.toUpperCase()}`);
82
+ console.log(` ${chalk_1.default.gray('API :')} ${apiBaseUrl}`);
83
+ console.log(` ${chalk_1.default.gray('WS :')} ${wsUrl}`);
74
84
  console.log(` ${chalk_1.default.gray('User :')} ${result.user.name ?? result.user.email ?? result.user.id}`);
75
85
  console.log(` ${chalk_1.default.gray('Client ID :')} ${result.clientId}`);
76
86
  console.log(` ${chalk_1.default.gray('Schema :')} ${result.projectSchemaId}`);
@@ -78,5 +88,9 @@ async function loginCommand(options = {}) {
78
88
  console.log(` ${chalk_1.default.gray('Expires :')} ${new Date(result.expiresAt).toISOString()}`);
79
89
  console.log();
80
90
  console.log(chalk_1.default.dim('Next: run `redai start` to keep this machine connected.'));
91
+ // Hint nếu user chọn dev/prod khác mặc định
92
+ if (env === 'prod') {
93
+ console.log(chalk_1.default.dim(`Tip: PROD preset = ${config_1.REDAI_ENV_PRESETS.prod.apiBaseUrl} + ${config_1.REDAI_ENV_PRESETS.prod.wsBaseUrl}`));
94
+ }
81
95
  }
82
96
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ async function statusCommand() {
18
18
  }
19
19
  console.log(chalk_1.default.cyan('RedAI CLI'), chalk_1.default.dim(`v${config_1.CLI_VERSION}`));
20
20
  console.log();
21
+ console.log(` ${chalk_1.default.gray('Env :')} ${(cfg.env ?? 'dev').toUpperCase()}`);
21
22
  console.log(` ${chalk_1.default.gray('User :')} ${cfg.userName ?? cfg.userEmail ?? cfg.userId}`);
22
23
  console.log(` ${chalk_1.default.gray('Client ID :')} ${cfg.clientId}`);
23
24
  console.log(` ${chalk_1.default.gray('API :')} ${cfg.apiBaseUrl}`);
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -36,12 +36,16 @@ function printHelp() {
36
36
  console.log(`${chalk_1.default.cyan('redai')} ${chalk_1.default.dim(`v${config_1.CLI_VERSION}`)}`);
37
37
  console.log();
38
38
  console.log('Usage:');
39
- console.log(' redai login [--api-key <key>] [--api-url <url>] Login by pasting your RedAI API key');
39
+ console.log(' redai login [--env dev|prod] [--api-key <k>] [--api-url <url>] Login RedAI');
40
40
  console.log(' redai status Show current login + capabilities');
41
41
  console.log(' redai start Connect WS, keep tools online');
42
42
  console.log(' redai serve [--port 8317] [--api-key <k>] HTTP server expose /v1/messages /v1/chat/completions /v1beta');
43
43
  console.log(' redai logout Remove local RedAI token');
44
44
  console.log();
45
+ console.log('Environments (preset via --env or REDAI_ENV):');
46
+ console.log(' dev → https://v2.redai.vn + wss://v2.redai.vn (default)');
47
+ console.log(' prod → https://app.redai.vn + wss://socket.redai.vn');
48
+ console.log();
45
49
  console.log('LLM proxy (OAuth providers):');
46
50
  console.log(' redai oauth claude [--account <name>] Login Claude Code (PKCE)');
47
51
  console.log(' redai oauth codex [--account <name>] Sign in with ChatGPT');
@@ -62,8 +66,10 @@ async function main() {
62
66
  switch (command) {
63
67
  case 'login':
64
68
  await (0, login_1.loginCommand)({
69
+ env: typeof flags['env'] === 'string' ? flags['env'] : undefined,
65
70
  apiKey: typeof flags['api-key'] === 'string' ? flags['api-key'] : undefined,
66
71
  apiUrl: typeof flags['api-url'] === 'string' ? flags['api-url'] : undefined,
72
+ wsUrl: typeof flags['ws-url'] === 'string' ? flags['ws-url'] : undefined,
67
73
  });
68
74
  return;
69
75
  case 'logout':
@@ -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,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,yFAAyF,CAAC,CAAC;IACvG,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,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,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,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;iBACxF,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,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,12 +1,49 @@
1
+ import { BUILD_ENV, BUILD_TIME } from './build-info';
1
2
  export declare const CLI_PACKAGE_NAME = "@redonvn/cli";
2
3
  export declare const CLI_VERSION = "0.1.0";
4
+ /** Re-export build metadata cho status command. */
5
+ export { BUILD_ENV, BUILD_TIME };
3
6
  export declare const REDAI_CONFIG_DIR: string;
4
7
  export declare const REDAI_CONFIG_FILE: string;
5
8
  export declare const REDAI_CLIENT_ID_FILE: string;
6
9
  export declare const REDAI_LOG_FILE: string;
7
- export declare const DEFAULT_API_BASE_URL: string;
8
- /** WS URLbackend sẽ trả về wsUrl trong response /cli/auth/verify, đây chỉ là fallback. */
9
- export declare const DEFAULT_WS_URL: string;
10
+ /**
11
+ * Environment presets chọn bằng `--env` flag hoặc `REDAI_ENV`.
12
+ * PROD WS host tách riêng socket.redai.vn (khác API host).
13
+ */
14
+ export type RedaiEnv = 'dev' | 'prod';
15
+ export interface RedaiEnvConfig {
16
+ apiBaseUrl: string;
17
+ wsBaseUrl: string;
18
+ }
19
+ export declare const REDAI_ENV_PRESETS: Record<RedaiEnv, RedaiEnvConfig>;
20
+ /**
21
+ * Resolve môi trường theo độ ưu tiên:
22
+ * 1. arg flag `--env dev|prod` (caller truyền vào)
23
+ * 2. ENV var REDAI_ENV
24
+ * 3. BUILD_ENV — bake vào lúc build (`npm run build:prod` set 'prod', mặc định 'dev')
25
+ */
26
+ export declare function resolveEnv(envFlag?: string): RedaiEnv;
27
+ /**
28
+ * Resolve API base URL theo độ ưu tiên:
29
+ * 1. `--api-url` flag (caller truyền)
30
+ * 2. ENV `REDAI_API_URL`
31
+ * 3. Preset theo env (dev/prod)
32
+ */
33
+ export declare function resolveApiBaseUrl(opts: {
34
+ env: RedaiEnv;
35
+ apiUrlOverride?: string;
36
+ }): string;
37
+ /**
38
+ * Resolve WebSocket base URL — backend trả về sau khi verify, đây chỉ là fallback.
39
+ * 1. `--ws-url` flag
40
+ * 2. ENV `REDAI_WS_URL`
41
+ * 3. Preset theo env (dev/prod)
42
+ */
43
+ export declare function resolveWsBaseUrl(opts: {
44
+ env: RedaiEnv;
45
+ wsUrlOverride?: string;
46
+ }): string;
10
47
  export declare const HEARTBEAT_INTERVAL_MS = 25000;
11
48
  export declare const RECONNECT_BASE_DELAY_MS = 2000;
12
49
  export declare const RECONNECT_MAX_DELAY_MS = 30000;
package/dist/config.js CHANGED
@@ -3,21 +3,71 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.RECONNECT_MAX_DELAY_MS = exports.RECONNECT_BASE_DELAY_MS = exports.HEARTBEAT_INTERVAL_MS = exports.DEFAULT_WS_URL = exports.DEFAULT_API_BASE_URL = exports.REDAI_LOG_FILE = exports.REDAI_CLIENT_ID_FILE = exports.REDAI_CONFIG_FILE = exports.REDAI_CONFIG_DIR = exports.CLI_VERSION = exports.CLI_PACKAGE_NAME = void 0;
6
+ exports.RECONNECT_MAX_DELAY_MS = exports.RECONNECT_BASE_DELAY_MS = exports.HEARTBEAT_INTERVAL_MS = exports.REDAI_ENV_PRESETS = exports.REDAI_LOG_FILE = exports.REDAI_CLIENT_ID_FILE = exports.REDAI_CONFIG_FILE = exports.REDAI_CONFIG_DIR = exports.BUILD_TIME = exports.BUILD_ENV = exports.CLI_VERSION = exports.CLI_PACKAGE_NAME = void 0;
7
+ exports.resolveEnv = resolveEnv;
8
+ exports.resolveApiBaseUrl = resolveApiBaseUrl;
9
+ exports.resolveWsBaseUrl = resolveWsBaseUrl;
7
10
  const os_1 = __importDefault(require("os"));
8
11
  const path_1 = __importDefault(require("path"));
12
+ const build_info_1 = require("./build-info");
13
+ Object.defineProperty(exports, "BUILD_ENV", { enumerable: true, get: function () { return build_info_1.BUILD_ENV; } });
14
+ Object.defineProperty(exports, "BUILD_TIME", { enumerable: true, get: function () { return build_info_1.BUILD_TIME; } });
9
15
  exports.CLI_PACKAGE_NAME = '@redonvn/cli';
10
16
  exports.CLI_VERSION = '0.1.0';
11
17
  exports.REDAI_CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.redai');
12
18
  exports.REDAI_CONFIG_FILE = path_1.default.join(exports.REDAI_CONFIG_DIR, 'config.json');
13
19
  exports.REDAI_CLIENT_ID_FILE = path_1.default.join(exports.REDAI_CONFIG_DIR, 'client.id');
14
20
  exports.REDAI_LOG_FILE = path_1.default.join(exports.REDAI_CONFIG_DIR, 'daemon.log');
15
- exports.DEFAULT_API_BASE_URL = process.env.REDAI_API_URL || 'https://redai-erp.io.vn';
16
- /** WS URL — backend sẽ trả về wsUrl trong response /cli/auth/verify, đây chỉ là fallback. */
17
- exports.DEFAULT_WS_URL = process.env.REDAI_WS_URL ||
18
- (exports.DEFAULT_API_BASE_URL.startsWith('https')
19
- ? exports.DEFAULT_API_BASE_URL.replace('https', 'wss')
20
- : exports.DEFAULT_API_BASE_URL.replace('http', 'ws')) + '/redai-cli';
21
+ exports.REDAI_ENV_PRESETS = {
22
+ dev: {
23
+ apiBaseUrl: 'https://v2.redai.vn',
24
+ wsBaseUrl: 'wss://v2.redai.vn',
25
+ },
26
+ prod: {
27
+ apiBaseUrl: 'https://app.redai.vn',
28
+ wsBaseUrl: 'wss://socket.redai.vn',
29
+ },
30
+ };
31
+ /**
32
+ * Resolve môi trường theo độ ưu tiên:
33
+ * 1. arg flag `--env dev|prod` (caller truyền vào)
34
+ * 2. ENV var REDAI_ENV
35
+ * 3. BUILD_ENV — bake vào lúc build (`npm run build:prod` set 'prod', mặc định 'dev')
36
+ */
37
+ function resolveEnv(envFlag) {
38
+ const v = (envFlag || process.env.REDAI_ENV || '').toLowerCase().trim();
39
+ if (v === 'prod' || v === 'production')
40
+ return 'prod';
41
+ if (v === 'dev' || v === 'development')
42
+ return 'dev';
43
+ return build_info_1.BUILD_ENV;
44
+ }
45
+ /**
46
+ * Resolve API base URL theo độ ưu tiên:
47
+ * 1. `--api-url` flag (caller truyền)
48
+ * 2. ENV `REDAI_API_URL`
49
+ * 3. Preset theo env (dev/prod)
50
+ */
51
+ function resolveApiBaseUrl(opts) {
52
+ if (opts.apiUrlOverride && opts.apiUrlOverride.trim())
53
+ return opts.apiUrlOverride.trim();
54
+ if (process.env.REDAI_API_URL)
55
+ return process.env.REDAI_API_URL;
56
+ return exports.REDAI_ENV_PRESETS[opts.env].apiBaseUrl;
57
+ }
58
+ /**
59
+ * Resolve WebSocket base URL — backend trả về sau khi verify, đây chỉ là fallback.
60
+ * 1. `--ws-url` flag
61
+ * 2. ENV `REDAI_WS_URL`
62
+ * 3. Preset theo env (dev/prod)
63
+ */
64
+ function resolveWsBaseUrl(opts) {
65
+ if (opts.wsUrlOverride && opts.wsUrlOverride.trim())
66
+ return opts.wsUrlOverride.trim();
67
+ if (process.env.REDAI_WS_URL)
68
+ return process.env.REDAI_WS_URL;
69
+ return exports.REDAI_ENV_PRESETS[opts.env].wsBaseUrl;
70
+ }
21
71
  exports.HEARTBEAT_INTERVAL_MS = 25000;
22
72
  exports.RECONNECT_BASE_DELAY_MS = 2000;
23
73
  exports.RECONNECT_MAX_DELAY_MS = 30000;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAEX,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAClC,QAAA,WAAW,GAAG,OAAO,CAAC;AAEtB,QAAA,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD,QAAA,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,aAAa,CAAC,CAAC;AAC/D,QAAA,oBAAoB,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,WAAW,CAAC,CAAC;AAChE,QAAA,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,YAAY,CAAC,CAAC;AAE3D,QAAA,oBAAoB,GAC/B,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,yBAAyB,CAAC;AAEzD,6FAA6F;AAChF,QAAA,cAAc,GACzB,OAAO,CAAC,GAAG,CAAC,YAAY;IACxB,CAAC,4BAAoB,CAAC,UAAU,CAAC,OAAO,CAAC;QACvC,CAAC,CAAC,4BAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;QAC9C,CAAC,CAAC,4BAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC;AAEpD,QAAA,qBAAqB,GAAG,KAAM,CAAC;AAC/B,QAAA,uBAAuB,GAAG,IAAK,CAAC;AAChC,QAAA,sBAAsB,GAAG,KAAM,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AA2CA,gCAKC;AAQD,8CAIC;AAQD,4CAIC;AAxED,4CAAoB;AACpB,gDAAwB;AACxB,6CAAqD;AAM5C,0FANA,sBAAS,OAMA;AAAE,2FANA,uBAAU,OAMA;AAJjB,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAClC,QAAA,WAAW,GAAG,OAAO,CAAC;AAKtB,QAAA,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrD,QAAA,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,aAAa,CAAC,CAAC;AAC/D,QAAA,oBAAoB,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,WAAW,CAAC,CAAC;AAChE,QAAA,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,YAAY,CAAC,CAAC;AAa3D,QAAA,iBAAiB,GAAqC;IACjE,GAAG,EAAE;QACH,UAAU,EAAE,qBAAqB;QACjC,SAAS,EAAE,mBAAmB;KAC/B;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,sBAAsB;QAClC,SAAS,EAAE,uBAAuB;KACnC;CACF,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,OAAgB;IACzC,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IACxE,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC;IACtD,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,aAAa;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,sBAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,IAAgD;IAChF,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACzF,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAChE,OAAO,yBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,IAA+C;IAC9E,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACtF,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC9D,OAAO,yBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAEY,QAAA,qBAAqB,GAAG,KAAM,CAAC;AAC/B,QAAA,uBAAuB,GAAG,IAAK,CAAC;AAChC,QAAA,sBAAsB,GAAG,KAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redonvn/cli",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
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"
@@ -16,11 +16,23 @@
16
16
  "node": ">=18.17.0"
17
17
  },
18
18
  "scripts": {
19
+ "prebuild": "node scripts/write-build-info.cjs",
19
20
  "build": "tsc -p tsconfig.json",
21
+ "build:dev": "cross-env BUILD_ENV=dev npm run -s clean && cross-env BUILD_ENV=dev node scripts/write-build-info.cjs && tsc -p tsconfig.json",
22
+ "build:prod": "cross-env BUILD_ENV=prod npm run -s clean && cross-env BUILD_ENV=prod node scripts/write-build-info.cjs && tsc -p tsconfig.json",
23
+ "build:watch": "tsc -p tsconfig.json --watch",
20
24
  "dev": "ts-node --transpile-only src/cli/index.ts",
25
+ "dev:login": "ts-node --transpile-only src/cli/index.ts login --env dev",
26
+ "dev:start": "ts-node --transpile-only src/cli/index.ts start",
27
+ "dev:serve": "ts-node --transpile-only src/cli/index.ts serve --port 8317",
28
+ "prod:login": "node ./bin/redai.js login --env prod",
29
+ "prod:start": "node ./bin/redai.js start",
30
+ "prod:serve": "node ./bin/redai.js serve --port 8317",
21
31
  "start": "node ./bin/redai.js",
22
32
  "clean": "rimraf dist",
23
- "prepublishOnly": "npm run clean && npm run build"
33
+ "publish:dev": "npm run build:dev && cross-env SKIP_PREPUBLISH_GUARD=1 npm publish --access public --tag dev",
34
+ "publish:prod": "npm run build:prod && cross-env SKIP_PREPUBLISH_GUARD=1 npm publish --access public",
35
+ "prepublishOnly": "node -e \"if(!process.env.SKIP_PREPUBLISH_GUARD){console.error('\\nUse `npm run publish:prod` or `npm run publish:dev` to ensure correct BUILD_ENV is baked.\\nIf you really want to publish directly, set SKIP_PREPUBLISH_GUARD=1.\\n');process.exit(1)}\""
24
36
  },
25
37
  "keywords": [
26
38
  "redai",
@@ -44,7 +56,7 @@
44
56
  },
45
57
  "homepage": "https://github.com/redonvn/redai-cli#readme",
46
58
  "dependencies": {
47
- "@redonvn/cli-protocol": "^0.1.0",
59
+ "@redonvn/cli-protocol": "^0.1.2",
48
60
  "@vscode/ripgrep": "^1.15.9",
49
61
  "axios": "^1.7.7",
50
62
  "chalk": "^4.1.2",
@@ -57,6 +69,7 @@
57
69
  "devDependencies": {
58
70
  "@types/node": "^20.14.0",
59
71
  "@types/prompts": "^2.4.9",
72
+ "cross-env": "^7.0.3",
60
73
  "rimraf": "^5.0.5",
61
74
  "ts-node": "^10.9.2",
62
75
  "typescript": "^5.5.4"
@@ -64,4 +77,4 @@
64
77
  "publishConfig": {
65
78
  "access": "public"
66
79
  }
67
- }
80
+ }