@vectorx/xhs-cloud-cli 0.0.0-beta-20260108133839 → 0.0.0-beta-20260320063305

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/bin/rcb.js +47 -157
  2. package/lib/commands/agent/dev.js +42 -7
  3. package/lib/commands/agent/index.js +2 -0
  4. package/lib/commands/agent/info.js +107 -0
  5. package/lib/commands/agent/list.js +95 -0
  6. package/lib/commands/agent/new.js +32 -6
  7. package/lib/commands/auth/login.js +63 -35
  8. package/lib/commands/env/create.js +156 -0
  9. package/lib/commands/env/index.js +20 -0
  10. package/lib/commands/env/info.js +108 -0
  11. package/lib/commands/env/list.js +93 -0
  12. package/lib/commands/env/set.js +131 -0
  13. package/lib/commands/fun/deploy.js +184 -0
  14. package/lib/commands/fun/dev.js +189 -0
  15. package/lib/commands/fun/index.js +20 -0
  16. package/lib/commands/fun/list.js +77 -0
  17. package/lib/commands/fun/new.js +151 -0
  18. package/lib/commands/index.js +2 -0
  19. package/lib/constants/cmd.js +9 -9
  20. package/lib/core/base.js +83 -1
  21. package/lib/decorators/auth.js +8 -1
  22. package/lib/decorators/captureError.js +1 -0
  23. package/lib/main.js +8 -0
  24. package/lib/utils/agent-check.js +158 -0
  25. package/lib/utils/templates.js +75 -0
  26. package/package.json +12 -9
  27. package/templates/cloud-agents/agent-base-template/project.config.json +6 -0
  28. package/templates/{chatbox-agent → cloud-agents/agent-base-template}/src/index.js +0 -1
  29. package/templates/cloud-agents/agent-doc-template/.env.template +1 -0
  30. package/templates/cloud-agents/agent-doc-template/agent-cloudbase-functions.json +11 -0
  31. package/templates/cloud-agents/agent-doc-template/package.json +11 -0
  32. package/templates/cloud-agents/agent-doc-template/project.config.json +6 -0
  33. package/templates/cloud-agents/agent-doc-template/src/index.js +68 -0
  34. package/templates/cloud-agents/agent-image-template/.env.template +1 -0
  35. package/templates/cloud-agents/agent-image-template/agent-cloudbase-functions.json +11 -0
  36. package/templates/cloud-agents/agent-image-template/package.json +11 -0
  37. package/templates/cloud-agents/agent-image-template/project.config.json +6 -0
  38. package/templates/cloud-agents/agent-image-template/src/index.js +56 -0
  39. package/templates/cloud-agents/agent-text-template/.env.template +1 -0
  40. package/templates/cloud-agents/agent-text-template/agent-cloudbase-functions.json +11 -0
  41. package/templates/cloud-agents/agent-text-template/package.json +11 -0
  42. package/templates/cloud-agents/agent-text-template/project.config.json +6 -0
  43. package/templates/cloud-agents/agent-text-template/src/index.js +38 -0
  44. package/templates/cloud-agents/agent-voice-template/.env.template +1 -0
  45. package/templates/cloud-agents/agent-voice-template/agent-cloudbase-functions.json +11 -0
  46. package/templates/cloud-agents/agent-voice-template/package.json +11 -0
  47. package/templates/cloud-agents/agent-voice-template/project.config.json +6 -0
  48. package/templates/cloud-agents/agent-voice-template/src/index.js +81 -0
  49. package/templates/cloud-agents/templates.json +9 -0
  50. package/templates/cloud-dev/cloudfunction-route-template/.env.template +1 -0
  51. package/templates/cloud-dev/cloudfunction-route-template/README.md +277 -0
  52. package/templates/cloud-dev/cloudfunction-route-template/agent-cloudbase-functions.json +83 -0
  53. package/templates/cloud-dev/cloudfunction-route-template/package.json +10 -0
  54. package/templates/cloud-dev/cloudfunction-route-template/src/binary/index.js +207 -0
  55. package/templates/cloud-dev/cloudfunction-route-template/src/context/context-service.js +94 -0
  56. package/templates/cloud-dev/cloudfunction-route-template/src/context/index.js +57 -0
  57. package/templates/cloud-dev/cloudfunction-route-template/src/env/index.js +264 -0
  58. package/templates/cloud-dev/cloudfunction-route-template/src/form/index.js +138 -0
  59. package/templates/cloud-dev/cloudfunction-route-template/src/index.js +0 -0
  60. package/templates/cloud-dev/cloudfunction-route-template/src/json/index.js +194 -0
  61. package/templates/cloud-dev/cloudfunction-route-template/src/multipart/index.js +189 -0
  62. package/templates/cloud-dev/cloudfunction-route-template/src/text/index.js +319 -0
  63. package/templates/cloud-dev/cloudfunction-route-template/src/user/index.js +82 -0
  64. package/templates/cloud-dev/cloudfunction-template/.env.template +2 -0
  65. package/templates/cloud-dev/cloudfunction-template/agent-cloudbase-functions.json +17 -0
  66. package/templates/cloud-dev/cloudfunction-template/package.json +11 -0
  67. package/templates/cloud-dev/cloudfunction-template/src/echo.js +27 -0
  68. package/templates/cloud-dev/cloudfunction-template/src/index.js +34 -0
  69. package/templates/cloud-dev/templates.json +6 -0
  70. package/types/commands/agent/index.d.ts +2 -0
  71. package/types/commands/agent/info.d.ts +14 -0
  72. package/types/commands/agent/list.d.ts +14 -0
  73. package/types/commands/auth/login.d.ts +2 -0
  74. package/types/commands/env/create.d.ts +19 -0
  75. package/types/commands/env/index.d.ts +4 -0
  76. package/types/commands/env/info.d.ts +14 -0
  77. package/types/commands/env/list.d.ts +11 -0
  78. package/types/commands/env/set.d.ts +14 -0
  79. package/types/commands/fun/deploy.d.ts +14 -0
  80. package/types/commands/fun/dev.d.ts +14 -0
  81. package/types/commands/fun/index.d.ts +4 -0
  82. package/types/commands/fun/list.d.ts +14 -0
  83. package/types/commands/fun/new.d.ts +16 -0
  84. package/types/commands/index.d.ts +2 -0
  85. package/types/utils/agent-check.d.ts +1 -0
  86. package/types/utils/templates.d.ts +17 -0
  87. package/templates/weather-agent/index.js +0 -92
  88. package/templates/weather-agent/project.config.json +0 -4
  89. /package/templates/{chatbox-agent → cloud-agents/agent-base-template}/.env.template +0 -0
  90. /package/templates/{chatbox-agent → cloud-agents/agent-base-template}/agent-cloudbase-functions.json +0 -0
  91. /package/templates/{chatbox-agent → cloud-agents/agent-base-template}/package.json +0 -0
  92. /package/templates/{chatbox-agent → cloud-dev/cloudfunction-template}/project.config.json +0 -0
@@ -29,24 +29,24 @@ let LoginCommand = class LoginCommand extends base_1.Command {
29
29
  constructor() {
30
30
  super();
31
31
  this.authService = cloud_toolkit_1.container.get(cloud_toolkit_1.SERVICE_IDENTIFIERS.AuthService);
32
+ this.cloudDevService = cloud_toolkit_1.container.get(cloud_toolkit_1.SERVICE_IDENTIFIERS.CloudDevService);
32
33
  }
33
34
  execute(ctx) {
34
35
  return __awaiter(this, void 0, void 0, function* () {
36
+ var _a, _b;
35
37
  try {
36
38
  const existingLoginInfo = yield this.authService.getLoginInfo();
37
39
  if (existingLoginInfo) {
38
- cloud_toolkit_1.logger.warn("检测到您已经登录,如需切换登录信息,请先退出登录");
40
+ cloud_toolkit_1.logger.warn("检测到您已登录且 Token 尚未过期,继续操作将使用新的密钥覆盖当前登录信息");
39
41
  cloud_toolkit_1.logger.breakLine();
40
42
  console.log(chalk_1.default.bold.blue("📋 当前登录信息"));
41
43
  console.log(chalk_1.default.gray("─".repeat(40)));
42
- console.log(chalk_1.default.bold("Token: ") + chalk_1.default.green("●".repeat(8) + existingLoginInfo.cli_token.slice(-8)));
44
+ console.log(chalk_1.default.bold("Token: ") +
45
+ chalk_1.default.green("●".repeat(8) + existingLoginInfo.cli_token.slice(-8)));
43
46
  console.log(chalk_1.default.bold("过期时间: ") +
44
47
  chalk_1.default.yellow(new Date(existingLoginInfo.create_at + existingLoginInfo.expire_in_sec * 1000).toLocaleString("zh-CN")));
45
48
  console.log(chalk_1.default.gray("─".repeat(40)));
46
49
  cloud_toolkit_1.logger.breakLine();
47
- console.log(chalk_1.default.yellow("💡 提示:如需重新登录,请先执行退出登录命令"));
48
- console.log(chalk_1.default.gray(" 使用命令: ") + chalk_1.default.cyan("rcb logout"));
49
- return;
50
50
  }
51
51
  const { secretId, secretKey } = ctx.options;
52
52
  if (!secretId || !secretKey) {
@@ -60,23 +60,6 @@ let LoginCommand = class LoginCommand extends base_1.Command {
60
60
  cloud_toolkit_1.logger.breakLine();
61
61
  process.exit(1);
62
62
  }
63
- let loginInfo = null;
64
- if (this.authService.hasLogin()) {
65
- loginInfo = yield this.authService.getLoginInfo();
66
- }
67
- if (loginInfo) {
68
- cloud_toolkit_1.logger.error("检测到您已经登录,如需切换登录信息,请先退出登录");
69
- cloud_toolkit_1.logger.breakLine();
70
- console.log(chalk_1.default.bold.blue("📋 当前登录信息"));
71
- console.log(chalk_1.default.gray("─".repeat(40)));
72
- console.log(chalk_1.default.bold("Token: ") + chalk_1.default.green("●".repeat(8) + loginInfo.cli_token.slice(-8)));
73
- console.log(chalk_1.default.bold("过期时间: ") + chalk_1.default.yellow(new Date(loginInfo.expire_in_sec).toLocaleString("zh-CN")));
74
- console.log(chalk_1.default.gray("─".repeat(40)));
75
- cloud_toolkit_1.logger.breakLine();
76
- console.log(chalk_1.default.yellow("💡 提示:如需重新登录,请先执行退出登录命令"));
77
- console.log(chalk_1.default.gray(" 使用命令: ") + chalk_1.default.cyan("rcb logout"));
78
- return;
79
- }
80
63
  const spinner = require("ora")("正在验证小红书云服务密钥信息...").start();
81
64
  try {
82
65
  const nonce = (0, cloud_toolkit_1.getNonce)();
@@ -90,13 +73,14 @@ let LoginCommand = class LoginCommand extends base_1.Command {
90
73
  cloud_toolkit_1.logger.error(`密钥验证失败,请检查密钥是否正确或终端网络是否可用: ${msg}`);
91
74
  process.exit(1);
92
75
  }
76
+ const loginInfo = {
77
+ secret_id: secretId,
78
+ cli_token: cliToken,
79
+ create_at: Date.now(),
80
+ expire_in_sec: data.expire_in_sec,
81
+ };
93
82
  try {
94
- yield this.authService.saveLoginInfo({
95
- secret_id: secretId,
96
- cli_token: cliToken,
97
- create_at: Date.now(),
98
- expire_in_sec: data.expire_in_sec,
99
- });
83
+ yield this.authService.saveLoginInfo(loginInfo);
100
84
  }
101
85
  catch (error) {
102
86
  cloud_toolkit_1.logger.error(`保存登录信息失败: ${error.message}`);
@@ -104,11 +88,22 @@ let LoginCommand = class LoginCommand extends base_1.Command {
104
88
  }
105
89
  spinner.succeed();
106
90
  cloud_toolkit_1.logger.breakLine();
91
+ let userInfo = null;
92
+ try {
93
+ userInfo = yield this.cloudDevService.getUserInfo({
94
+ secret_id: secretId,
95
+ cli_token: cliToken,
96
+ });
97
+ yield this.authService.saveLoginInfo(Object.assign(Object.assign({}, loginInfo), { userInfo }));
98
+ }
99
+ catch (_c) {
100
+ }
107
101
  const expireTime = new Date(Date.now() + data.expire_in_sec * 1000);
108
- cloud_toolkit_1.logger.info(`获取 access_token 成功: ${chalk_1.default.green(data.cli_token)}`);
109
- cloud_toolkit_1.logger.info(`access_token 过期时间: ${chalk_1.default.yellow(expireTime.toLocaleString("zh-CN"))}`);
110
- cloud_toolkit_1.logger.breakLine();
111
- cloud_toolkit_1.logger.success("🎉 登录成功!欢迎使用小红书云服务 CLI");
102
+ const nick = (_b = (_a = userInfo === null || userInfo === void 0 ? void 0 : userInfo.nick) !== null && _a !== void 0 ? _a : userInfo === null || userInfo === void 0 ? void 0 : userInfo.nickname) !== null && _b !== void 0 ? _b : "用户";
103
+ const tokenShort = "●".repeat(8) + data.cli_token.slice(-8);
104
+ console.log(chalk_1.default.cyan(`👤 ${nick},欢迎你登录小红书云开发!`));
105
+ cloud_toolkit_1.logger.success("🎉 登录成功!");
106
+ console.log(chalk_1.default.gray(` Token: ${chalk_1.default.green(tokenShort)} 过期: ${chalk_1.default.yellow(expireTime.toLocaleString("zh-CN"))}`));
112
107
  }
113
108
  catch (error) {
114
109
  spinner.fail("登录验证失败");
@@ -152,25 +147,58 @@ exports.LoginCommand = LoginCommand = __decorate([
152
147
  let GetLoginInfoCommand = class GetLoginInfoCommand extends base_1.Command {
153
148
  constructor() {
154
149
  super();
155
- this.authService = new cloud_toolkit_1.AuthService();
150
+ this.authService = cloud_toolkit_1.container.get(cloud_toolkit_1.SERVICE_IDENTIFIERS.AuthService);
151
+ this.cloudDevService = cloud_toolkit_1.container.get(cloud_toolkit_1.SERVICE_IDENTIFIERS.CloudDevService);
156
152
  }
157
153
  execute(ctx) {
158
154
  return __awaiter(this, void 0, void 0, function* () {
155
+ var _a, _b, _c;
159
156
  try {
160
- const loginInfo = yield this.authService.getLoginInfo();
157
+ let loginInfo = yield this.authService.getLoginInfo();
161
158
  if (!loginInfo) {
162
159
  cloud_toolkit_1.logger.error("未登录或登录已过期");
163
160
  cloud_toolkit_1.logger.breakLine();
164
161
  console.log(chalk_1.default.yellow("💡 提示:请先执行登录命令"));
165
- console.log(chalk_1.default.gray(" 使用命令: ") + chalk_1.default.cyan("rcb login --secretId <secretId> --secretKey <secretKey>"));
162
+ console.log(chalk_1.default.gray(" 使用命令: ") +
163
+ chalk_1.default.cyan("rcb login --secretId <secretId> --secretKey <secretKey>"));
166
164
  process.exit(1);
167
165
  }
166
+ if (!loginInfo.userInfo) {
167
+ try {
168
+ const userInfo = yield this.cloudDevService.getUserInfo({
169
+ secret_id: loginInfo.secret_id,
170
+ cli_token: loginInfo.cli_token,
171
+ });
172
+ yield this.authService.saveLoginInfo(Object.assign(Object.assign({}, loginInfo), { userInfo }));
173
+ loginInfo = Object.assign(Object.assign({}, loginInfo), { userInfo });
174
+ }
175
+ catch (_d) {
176
+ }
177
+ }
168
178
  cloud_toolkit_1.logger.breakLine();
179
+ if (loginInfo.userInfo) {
180
+ const nick = (_b = (_a = loginInfo.userInfo.nick) !== null && _a !== void 0 ? _a : loginInfo.userInfo.nickname) !== null && _b !== void 0 ? _b : "用户";
181
+ console.log(chalk_1.default.cyan(`👤 ${nick},欢迎你登录小红书云开发!`));
182
+ cloud_toolkit_1.logger.breakLine();
183
+ }
169
184
  console.log(chalk_1.default.bold.blue("📋 当前登录信息"));
170
185
  console.log(chalk_1.default.gray("─".repeat(40)));
171
186
  console.log(chalk_1.default.bold("Token: ") + chalk_1.default.green("●".repeat(8) + loginInfo.cli_token.slice(-8)));
172
187
  console.log(chalk_1.default.bold("过期时间: ") +
173
188
  chalk_1.default.yellow(new Date(loginInfo.create_at + loginInfo.expire_in_sec * 1000).toLocaleString("zh-CN")));
189
+ if ((_c = loginInfo.cloudEnvInfo) === null || _c === void 0 ? void 0 : _c.cloud_env_id) {
190
+ const env = loginInfo.cloudEnvInfo;
191
+ console.log(chalk_1.default.bold("云服务环境信息: ") +
192
+ chalk_1.default.cyan(env.cloud_env_name ? `${env.cloud_env_name} (${env.cloud_env_id})` : env.cloud_env_id));
193
+ console.log(chalk_1.default.gray(" 当前 env 已生效,后续命令将默认使用该云环境。") +
194
+ chalk_1.default.gray(" 如需修改,可执行: ") +
195
+ chalk_1.default.cyan("rcb env set -e <envId>"));
196
+ }
197
+ else {
198
+ console.log(chalk_1.default.bold("云服务环境信息: ") + chalk_1.default.gray("暂未指定 env Id"));
199
+ console.log(chalk_1.default.gray(" 可通过以下命令为 CLI 选择默认云环境: ") +
200
+ chalk_1.default.cyan("rcb env set -e <envId>"));
201
+ }
174
202
  console.log(chalk_1.default.gray("─".repeat(40)));
175
203
  cloud_toolkit_1.logger.breakLine();
176
204
  }
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ var __importDefault = (this && this.__importDefault) || function (mod) {
24
+ return (mod && mod.__esModule) ? mod : { "default": mod };
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.EnvCreateCommand = void 0;
28
+ const cloud_toolkit_1 = require("@vectorx/cloud-toolkit");
29
+ const chalk_1 = __importDefault(require("chalk"));
30
+ const inquirer_1 = __importDefault(require("inquirer"));
31
+ const base_1 = require("../../core/base");
32
+ const decorators_1 = require("../../decorators");
33
+ const auth_1 = require("../../decorators/auth");
34
+ const prefix = chalk_1.default.bgBlueBright(" 🌐 [rcb-env] ");
35
+ const CLOUD_ENV_NAME_REGEX = /^[A-Za-z0-9_]+$/;
36
+ let EnvCreateCommand = class EnvCreateCommand extends base_1.Command {
37
+ execute(rawOptions, log) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ var _a;
40
+ let { name, description } = rawOptions;
41
+ const questions = [];
42
+ if (!name) {
43
+ questions.push({
44
+ type: "input",
45
+ name: "name",
46
+ message: "请输入云环境名称 (cloud_env_name):",
47
+ validate: (input) => {
48
+ const trimmed = (input || "").trim();
49
+ if (!trimmed) {
50
+ return "云环境名称不能为空";
51
+ }
52
+ if (trimmed.length > 64) {
53
+ return "云环境名称长度请不要超过 64 个字符";
54
+ }
55
+ if (!CLOUD_ENV_NAME_REGEX.test(trimmed)) {
56
+ return "云环境名称仅支持英文、数字、下划线";
57
+ }
58
+ return true;
59
+ },
60
+ });
61
+ }
62
+ if (typeof description === "undefined") {
63
+ questions.push({
64
+ type: "input",
65
+ name: "description",
66
+ message: "请输入云环境描述(可选,可留空):",
67
+ default: "",
68
+ });
69
+ }
70
+ if (questions.length > 0) {
71
+ const answers = yield inquirer_1.default.prompt(questions);
72
+ if (!name) {
73
+ name = answers.name;
74
+ }
75
+ if (typeof description === "undefined") {
76
+ description = answers.description;
77
+ }
78
+ }
79
+ const cloudEnvName = (name || "").trim();
80
+ const cloudEnvDesc = (description || "").trim();
81
+ if (!cloudEnvName) {
82
+ log.error(`${prefix} 云环境名称不能为空,请重试`);
83
+ log.breakLine();
84
+ process.exit(1);
85
+ }
86
+ if (!CLOUD_ENV_NAME_REGEX.test(cloudEnvName)) {
87
+ log.error(`${prefix} 云环境名称仅支持英文、数字、下划线,请重试`);
88
+ log.breakLine();
89
+ process.exit(1);
90
+ }
91
+ const spinner = log.spinner(`${prefix} 正在创建云环境:${chalk_1.default.bold(cloudEnvName)} ...`);
92
+ try {
93
+ const env = yield (0, cloud_toolkit_1.createCloudEnvironment)({
94
+ cloud_env_name: cloudEnvName,
95
+ description: cloudEnvDesc,
96
+ });
97
+ spinner.succeed(`${prefix} 云环境创建成功`);
98
+ log.breakLine();
99
+ log.info(`${prefix} 新建云环境详情如下:`);
100
+ log.breakLine();
101
+ (0, cloud_toolkit_1.printHorizontalTable)([chalk_1.default.gray("字段"), chalk_1.default.gray("值")], [
102
+ [chalk_1.default.gray("名称"), chalk_1.default.bold(env.cloud_env_name)],
103
+ [chalk_1.default.gray("ID"), chalk_1.default.cyan(env.cloud_env_id)],
104
+ [
105
+ chalk_1.default.gray("状态"),
106
+ env.status === 1
107
+ ? chalk_1.default.green("启用")
108
+ : env.status === 0
109
+ ? chalk_1.default.blue("初始化")
110
+ : chalk_1.default.yellow(`停用/未知 (${(_a = env.status) !== null && _a !== void 0 ? _a : "N/A"})`),
111
+ ],
112
+ [chalk_1.default.gray("描述"), env.description || "-"],
113
+ [chalk_1.default.gray("创建时间"), env.create_time || "-"],
114
+ [chalk_1.default.gray("更新时间"), env.update_time || "-"],
115
+ ]);
116
+ log.breakLine();
117
+ }
118
+ catch (error) {
119
+ spinner.fail(`${prefix} 云环境创建失败`);
120
+ log.error(`${prefix} 错误信息: ${(error === null || error === void 0 ? void 0 : error.message) || error}`);
121
+ log.breakLine();
122
+ process.exit(1);
123
+ }
124
+ });
125
+ }
126
+ get options() {
127
+ return {
128
+ cmd: "env",
129
+ childCmd: "create",
130
+ desc: "创建一个新的云环境",
131
+ options: [
132
+ {
133
+ flags: "-n, --name <name>",
134
+ desc: "云环境名称 (cloud_env_name)",
135
+ },
136
+ {
137
+ flags: "-d, --description <description>",
138
+ desc: "云环境描述(可选)",
139
+ },
140
+ ],
141
+ };
142
+ }
143
+ };
144
+ exports.EnvCreateCommand = EnvCreateCommand;
145
+ __decorate([
146
+ (0, decorators_1.InjectParams)(),
147
+ __param(0, (0, decorators_1.ArgsOptions)()),
148
+ __param(1, (0, decorators_1.Log)()),
149
+ __metadata("design:type", Function),
150
+ __metadata("design:paramtypes", [Object, Function]),
151
+ __metadata("design:returntype", Promise)
152
+ ], EnvCreateCommand.prototype, "execute", null);
153
+ exports.EnvCreateCommand = EnvCreateCommand = __decorate([
154
+ (0, auth_1.AuthGuard)(),
155
+ (0, base_1.ICommand)()
156
+ ], EnvCreateCommand);
@@ -0,0 +1,20 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./list"), exports);
18
+ __exportStar(require("./info"), exports);
19
+ __exportStar(require("./set"), exports);
20
+ __exportStar(require("./create"), exports);
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ var __importDefault = (this && this.__importDefault) || function (mod) {
24
+ return (mod && mod.__esModule) ? mod : { "default": mod };
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.EnvInfoCommand = void 0;
28
+ const cloud_toolkit_1 = require("@vectorx/cloud-toolkit");
29
+ const chalk_1 = __importDefault(require("chalk"));
30
+ const base_1 = require("../../core/base");
31
+ const decorators_1 = require("../../decorators");
32
+ const auth_1 = require("../../decorators/auth");
33
+ const prefix = chalk_1.default.bgBlueBright(" 🌐 [rcb-env] ");
34
+ let EnvInfoCommand = class EnvInfoCommand extends base_1.Command {
35
+ execute(options, log) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ var _a;
38
+ const envId = options.envId;
39
+ if (!envId) {
40
+ log.error(`${prefix} 请通过 -e, --envId 指定要查询的云环境 Id`);
41
+ log.breakLine();
42
+ console.log(chalk_1.default.gray("示例: "));
43
+ console.log(chalk_1.default.cyan(" rcb env info -e env-7k2m9n4p"));
44
+ log.breakLine();
45
+ process.exit(1);
46
+ }
47
+ const spinner = log.spinner(`${prefix} 正在查询云环境详情(envId=${envId})...`);
48
+ try {
49
+ const env = yield (0, cloud_toolkit_1.getCloudEnvironment)(envId);
50
+ spinner.succeed(`${prefix} 云环境详情查询完成`);
51
+ log.breakLine();
52
+ if (!env) {
53
+ log.warn(`${prefix} 未找到 Id 为 ${envId} 的云环境`);
54
+ log.breakLine();
55
+ return;
56
+ }
57
+ log.info(`${prefix} 云环境详情:`);
58
+ log.breakLine();
59
+ (0, cloud_toolkit_1.printHorizontalTable)([chalk_1.default.gray("字段"), chalk_1.default.gray("值")], [
60
+ [chalk_1.default.gray("名称"), chalk_1.default.bold(env.cloud_env_name)],
61
+ [chalk_1.default.gray("ID"), chalk_1.default.cyan(env.cloud_env_id)],
62
+ [
63
+ chalk_1.default.gray("状态"),
64
+ env.status === 1
65
+ ? chalk_1.default.green("启用")
66
+ : chalk_1.default.yellow(`停用/未知 (${(_a = env.status) !== null && _a !== void 0 ? _a : "N/A"})`),
67
+ ],
68
+ [chalk_1.default.gray("描述"), env.description || "-"],
69
+ [chalk_1.default.gray("创建时间"), env.create_time || "-"],
70
+ [chalk_1.default.gray("更新时间"), env.update_time || "-"],
71
+ ]);
72
+ log.breakLine();
73
+ }
74
+ catch (error) {
75
+ spinner.fail(`${prefix} 云环境详情查询失败`);
76
+ log.error(`${prefix} 错误信息: ${(error === null || error === void 0 ? void 0 : error.message) || error}`);
77
+ log.breakLine();
78
+ process.exit(1);
79
+ }
80
+ });
81
+ }
82
+ get options() {
83
+ return {
84
+ cmd: "env",
85
+ childCmd: "info",
86
+ desc: "查看指定云环境的详情信息",
87
+ options: [
88
+ {
89
+ flags: "-e, --envId <envId>",
90
+ desc: "云环境 Id(cloud_env_id)",
91
+ },
92
+ ],
93
+ };
94
+ }
95
+ };
96
+ exports.EnvInfoCommand = EnvInfoCommand;
97
+ __decorate([
98
+ (0, decorators_1.InjectParams)(),
99
+ __param(0, (0, decorators_1.ArgsOptions)()),
100
+ __param(1, (0, decorators_1.Log)()),
101
+ __metadata("design:type", Function),
102
+ __metadata("design:paramtypes", [Object, Function]),
103
+ __metadata("design:returntype", Promise)
104
+ ], EnvInfoCommand.prototype, "execute", null);
105
+ exports.EnvInfoCommand = EnvInfoCommand = __decorate([
106
+ (0, auth_1.AuthGuard)(),
107
+ (0, base_1.ICommand)()
108
+ ], EnvInfoCommand);
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ var __importDefault = (this && this.__importDefault) || function (mod) {
24
+ return (mod && mod.__esModule) ? mod : { "default": mod };
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.EnvListCommand = void 0;
28
+ const cloud_toolkit_1 = require("@vectorx/cloud-toolkit");
29
+ const chalk_1 = __importDefault(require("chalk"));
30
+ const base_1 = require("../../core/base");
31
+ const decorators_1 = require("../../decorators");
32
+ const auth_1 = require("../../decorators/auth");
33
+ const prefix = chalk_1.default.bgBlueBright(" 🌐 [rcb-env] ");
34
+ let EnvListCommand = class EnvListCommand extends base_1.Command {
35
+ execute(_options, log) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ const spinner = log.spinner(`${prefix} 正在查询云环境列表...`);
38
+ try {
39
+ const envs = yield (0, cloud_toolkit_1.getCloudEnvironments)();
40
+ spinner.succeed(`${prefix} 云环境列表查询完成`);
41
+ log.breakLine();
42
+ if (!envs || envs.length === 0) {
43
+ log.info(`${prefix} 当前账号下暂未配置任何云环境`);
44
+ log.breakLine();
45
+ return;
46
+ }
47
+ log.info(`${prefix} 共查询到 ${envs.length} 个云环境:`);
48
+ log.breakLine();
49
+ (0, cloud_toolkit_1.printHorizontalTable)(["云环境 ID", "名称", "状态", "创建时间", "更新时间"], envs.map((env) => {
50
+ var _a;
51
+ return [
52
+ env.cloud_env_id,
53
+ chalk_1.default.bold(env.cloud_env_name),
54
+ env.status === 1
55
+ ? chalk_1.default.green("启用")
56
+ : env.status === 0
57
+ ? chalk_1.default.blue("初始化")
58
+ : chalk_1.default.yellow(`停用/未知 (${(_a = env.status) !== null && _a !== void 0 ? _a : "N/A"})`),
59
+ env.create_time || "-",
60
+ env.update_time || "-",
61
+ ];
62
+ }));
63
+ }
64
+ catch (error) {
65
+ spinner.fail(`${prefix} 云环境列表查询失败`);
66
+ log.error(`${prefix} 错误信息: ${(error === null || error === void 0 ? void 0 : error.message) || error}`);
67
+ log.breakLine();
68
+ process.exit(1);
69
+ }
70
+ });
71
+ }
72
+ get options() {
73
+ return {
74
+ cmd: "env",
75
+ childCmd: "list",
76
+ desc: "查看当前账号下的云环境列表",
77
+ options: [],
78
+ };
79
+ }
80
+ };
81
+ exports.EnvListCommand = EnvListCommand;
82
+ __decorate([
83
+ (0, decorators_1.InjectParams)(),
84
+ __param(0, (0, decorators_1.ArgsOptions)()),
85
+ __param(1, (0, decorators_1.Log)()),
86
+ __metadata("design:type", Function),
87
+ __metadata("design:paramtypes", [Object, Function]),
88
+ __metadata("design:returntype", Promise)
89
+ ], EnvListCommand.prototype, "execute", null);
90
+ exports.EnvListCommand = EnvListCommand = __decorate([
91
+ (0, auth_1.AuthGuard)(),
92
+ (0, base_1.ICommand)()
93
+ ], EnvListCommand);