@wecom/wecom-openclaw-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +88 -0
  2. package/dist/commands/doctor.d.ts +7 -0
  3. package/dist/commands/doctor.d.ts.map +1 -0
  4. package/dist/commands/doctor.js +209 -0
  5. package/dist/commands/doctor.js.map +1 -0
  6. package/dist/commands/info.d.ts +7 -0
  7. package/dist/commands/info.d.ts.map +1 -0
  8. package/dist/commands/info.js +123 -0
  9. package/dist/commands/info.js.map +1 -0
  10. package/dist/commands/install.d.ts +7 -0
  11. package/dist/commands/install.d.ts.map +1 -0
  12. package/dist/commands/install.js +155 -0
  13. package/dist/commands/install.js.map +1 -0
  14. package/dist/commands/update.d.ts +7 -0
  15. package/dist/commands/update.d.ts.map +1 -0
  16. package/dist/commands/update.js +98 -0
  17. package/dist/commands/update.js.map +1 -0
  18. package/dist/index.d.ts +2 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +53 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/package.json.js +79 -0
  23. package/dist/package.json.js.map +1 -0
  24. package/dist/utils/config.d.ts +24 -0
  25. package/dist/utils/config.d.ts.map +1 -0
  26. package/dist/utils/config.js +80 -0
  27. package/dist/utils/config.js.map +1 -0
  28. package/dist/utils/constants.d.ts +15 -0
  29. package/dist/utils/constants.d.ts.map +1 -0
  30. package/dist/utils/constants.js +50 -0
  31. package/dist/utils/constants.js.map +1 -0
  32. package/dist/utils/plugin.d.ts +20 -0
  33. package/dist/utils/plugin.d.ts.map +1 -0
  34. package/dist/utils/plugin.js +121 -0
  35. package/dist/utils/plugin.js.map +1 -0
  36. package/dist/utils/prompts.d.ts +20 -0
  37. package/dist/utils/prompts.d.ts.map +1 -0
  38. package/dist/utils/prompts.js +73 -0
  39. package/dist/utils/prompts.js.map +1 -0
  40. package/dist/utils/system.d.ts +30 -0
  41. package/dist/utils/system.d.ts.map +1 -0
  42. package/dist/utils/system.js +91 -0
  43. package/dist/utils/system.js.map +1 -0
  44. package/package.json +46 -0
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var inquirer = require('inquirer');
4
+
5
+ /**
6
+ * 同时提示输入 botId 和 secret
7
+ */
8
+ async function promptBotIdSecret() {
9
+ return inquirer.prompt([
10
+ {
11
+ type: 'input',
12
+ name: 'botId',
13
+ message: '请输入企业微信机器人 Bot ID:',
14
+ validate: (input) => (input ? true : 'Bot ID 不能为空'),
15
+ },
16
+ {
17
+ type: 'password',
18
+ name: 'secret',
19
+ message: '请输入企业微信机器人 Secret:',
20
+ mask: '*',
21
+ validate: (input) => (input ? true : 'Secret 不能为空'),
22
+ },
23
+ ]);
24
+ }
25
+ /**
26
+ * 确认是否使用已有的 botId
27
+ */
28
+ async function promptConfirmBotId(currentBotId) {
29
+ const answer = await inquirer.prompt([
30
+ {
31
+ type: 'confirm',
32
+ name: 'confirm',
33
+ message: `当前企业微信机器人 Bot ID 为 ${currentBotId},是否继续使用?`,
34
+ default: true,
35
+ },
36
+ ]);
37
+ return answer.confirm;
38
+ }
39
+ /**
40
+ * 单独提示输入 botId
41
+ */
42
+ async function promptBotId() {
43
+ const answer = await inquirer.prompt([
44
+ {
45
+ type: 'input',
46
+ name: 'botId',
47
+ message: '请输入企业微信机器人 Bot ID:',
48
+ validate: (input) => (input ? true : 'Bot ID 不能为空'),
49
+ },
50
+ ]);
51
+ return answer.botId;
52
+ }
53
+ /**
54
+ * 单独提示输入 secret
55
+ */
56
+ async function promptSecret() {
57
+ const answer = await inquirer.prompt([
58
+ {
59
+ type: 'password',
60
+ name: 'secret',
61
+ message: '请输入企业微信机器人 Secret:',
62
+ mask: '*',
63
+ validate: (input) => (input ? true : 'Secret 不能为空'),
64
+ },
65
+ ]);
66
+ return answer.secret;
67
+ }
68
+
69
+ exports.promptBotId = promptBotId;
70
+ exports.promptBotIdSecret = promptBotIdSecret;
71
+ exports.promptConfirmBotId = promptConfirmBotId;
72
+ exports.promptSecret = promptSecret;
73
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sources":["../../src/utils/prompts.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAEA;;AAEG;AACI,eAAe,iBAAiB,GAAA;IACrC,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,QAAQ,EAAE,CAAC,KAAa,MAAM,KAAK,GAAG,IAAI,GAAG,aAAa,CAAC;AAC5D,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,QAAQ,EAAE,CAAC,KAAa,MAAM,KAAK,GAAG,IAAI,GAAG,aAAa,CAAC;AAC5D,SAAA;AACF,KAAA,CAAC;AACJ;AAEA;;AAEG;AACI,eAAe,kBAAkB,CAAC,YAAoB,EAAA;AAC3D,IAAA,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;AACnC,QAAA;AACE,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAA,mBAAA,EAAsB,YAAY,CAAA,QAAA,CAAU;AACrD,YAAA,OAAO,EAAE,IAAI;AACd,SAAA;AACF,KAAA,CAAC;IACF,OAAO,MAAM,CAAC,OAAO;AACvB;AAEA;;AAEG;AACI,eAAe,WAAW,GAAA;AAC/B,IAAA,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;AACnC,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,QAAQ,EAAE,CAAC,KAAa,MAAM,KAAK,GAAG,IAAI,GAAG,aAAa,CAAC;AAC5D,SAAA;AACF,KAAA,CAAC;IACF,OAAO,MAAM,CAAC,KAAK;AACrB;AAEA;;AAEG;AACI,eAAe,YAAY,GAAA;AAChC,IAAA,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;AACnC,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,QAAQ,EAAE,CAAC,KAAa,MAAM,KAAK,GAAG,IAAI,GAAG,aAAa,CAAC;AAC5D,SAAA;AACF,KAAA,CAAC;IACF,OAAO,MAAM,CAAC,MAAM;AACtB;;;;;;;"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 判断当前是否为 Windows 平台
3
+ */
4
+ export declare function isWindows(): boolean;
5
+ /**
6
+ * 获取平台对应的命令名
7
+ * 通过指定 shell 执行命令时,Windows 会自动解析 .cmd 后缀,
8
+ * 无需手动添加后缀,直接返回命令名即可。
9
+ */
10
+ export declare function getPlatformCommand(command: string): string;
11
+ /**
12
+ * 运行命令(继承标准输入输出)
13
+ * 通过指定 shell 确保在 Windows/macOS/Linux 上都能正确执行
14
+ */
15
+ export declare function runCommand(command: string, options?: {
16
+ cwd?: string;
17
+ }): void;
18
+ /**
19
+ * 静默运行命令并返回输出
20
+ * 通过指定 shell 确保在 Windows/macOS/Linux 上都能正确执行
21
+ */
22
+ export declare function runCommandQuiet(command: string, options?: {
23
+ cwd?: string;
24
+ }): string;
25
+ /**
26
+ * 校验版本号格式是否合法,防止命令注入
27
+ * 只允许数字、点、连字符和字母(如 1.0.0、1.0.0-beta.1)
28
+ */
29
+ export declare function validateVersion(version: string): boolean;
30
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/utils/system.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAUD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAUhF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAUvF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD"}
@@ -0,0 +1,91 @@
1
+ 'use strict';
2
+
3
+ var os = require('os');
4
+ var child_process = require('child_process');
5
+
6
+ function _interopNamespaceDefault(e) {
7
+ var n = Object.create(null);
8
+ if (e) {
9
+ Object.keys(e).forEach(function (k) {
10
+ if (k !== 'default') {
11
+ var d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: function () { return e[k]; }
15
+ });
16
+ }
17
+ });
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
+ }
22
+
23
+ var os__namespace = /*#__PURE__*/_interopNamespaceDefault(os);
24
+
25
+ /**
26
+ * 判断当前是否为 Windows 平台
27
+ */
28
+ function isWindows() {
29
+ return os__namespace.platform() === 'win32';
30
+ }
31
+ /**
32
+ * 获取当前平台的默认 shell 路径
33
+ * Windows 下使用 cmd.exe,macOS/Linux 下使用 /bin/sh
34
+ */
35
+ function getShell() {
36
+ return isWindows() ? 'cmd.exe' : '/bin/sh';
37
+ }
38
+ /**
39
+ * 获取平台对应的命令名
40
+ * 通过指定 shell 执行命令时,Windows 会自动解析 .cmd 后缀,
41
+ * 无需手动添加后缀,直接返回命令名即可。
42
+ */
43
+ function getPlatformCommand(command) {
44
+ return command;
45
+ }
46
+ /**
47
+ * 运行命令(继承标准输入输出)
48
+ * 通过指定 shell 确保在 Windows/macOS/Linux 上都能正确执行
49
+ */
50
+ function runCommand(command, options = {}) {
51
+ try {
52
+ child_process.execSync(command, {
53
+ stdio: 'inherit',
54
+ cwd: options.cwd,
55
+ shell: getShell(),
56
+ });
57
+ }
58
+ catch (error) {
59
+ throw new Error(`命令执行失败: ${command}`);
60
+ }
61
+ }
62
+ /**
63
+ * 静默运行命令并返回输出
64
+ * 通过指定 shell 确保在 Windows/macOS/Linux 上都能正确执行
65
+ */
66
+ function runCommandQuiet(command, options = {}) {
67
+ try {
68
+ return child_process.execSync(command, {
69
+ encoding: 'utf-8',
70
+ cwd: options.cwd,
71
+ shell: getShell(),
72
+ }).trim();
73
+ }
74
+ catch (error) {
75
+ throw new Error(`命令执行失败: ${command}`);
76
+ }
77
+ }
78
+ /**
79
+ * 校验版本号格式是否合法,防止命令注入
80
+ * 只允许数字、点、连字符和字母(如 1.0.0、1.0.0-beta.1)
81
+ */
82
+ function validateVersion(version) {
83
+ return /^[a-zA-Z0-9.\-]+$/.test(version);
84
+ }
85
+
86
+ exports.getPlatformCommand = getPlatformCommand;
87
+ exports.isWindows = isWindows;
88
+ exports.runCommand = runCommand;
89
+ exports.runCommandQuiet = runCommandQuiet;
90
+ exports.validateVersion = validateVersion;
91
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sources":["../../src/utils/system.ts"],"sourcesContent":[null],"names":["os","execSync"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAEG;SACa,SAAS,GAAA;AACvB,IAAA,OAAOA,aAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;AAClC;AAEA;;;AAGG;AACH,SAAS,QAAQ,GAAA;IACf,OAAO,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS;AAC5C;AAEA;;;;AAIG;AACG,SAAU,kBAAkB,CAAC,OAAe,EAAA;AAChD,IAAA,OAAO,OAAO;AAChB;AAEA;;;AAGG;SACa,UAAU,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAA;AACxE,IAAA,IAAI;QACFC,sBAAQ,CAAC,OAAO,EAAE;AAChB,YAAA,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ,EAAE;AAClB,SAAA,CAAC;IACJ;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAA,CAAE,CAAC;IACvC;AACF;AAEA;;;AAGG;SACa,eAAe,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAA;AAC7E,IAAA,IAAI;QACF,OAAOA,sBAAQ,CAAC,OAAO,EAAE;AACvB,YAAA,QAAQ,EAAE,OAAO;YACjB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ,EAAE;SAClB,CAAC,CAAC,IAAI,EAAE;IACX;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAA,CAAE,CAAC;IACvC;AACF;AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,OAAe,EAAA;AAC7C,IAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1C;;;;;;;;"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@wecom/wecom-openclaw-cli",
3
+ "version": "1.0.0",
4
+ "description": "CLI for managing WeCom official plugin for OpenClaw",
5
+ "main": "dist/index.js",
6
+ "type": "commonjs",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "bin": {
11
+ "wecom-openclaw-cli": "./dist/index.js"
12
+ },
13
+ "scripts": {
14
+ "clean": "rimraf dist",
15
+ "build": "npm run clean && rollup -c",
16
+ "prepublishOnly": "npm run build",
17
+ "test": "echo \"Error: no test specified\" && exit 1"
18
+ },
19
+ "keywords": [
20
+ "wecom",
21
+ "openclaw",
22
+ "cli",
23
+ "plugin"
24
+ ],
25
+ "author": "",
26
+ "license": "ISC",
27
+ "devDependencies": {
28
+ "@rollup/plugin-commonjs": "^28.0.0",
29
+ "@rollup/plugin-json": "^6.1.0",
30
+ "@rollup/plugin-node-resolve": "^16.0.0",
31
+ "@rollup/plugin-typescript": "^12.1.0",
32
+ "@types/fs-extra": "^11.0.4",
33
+ "@types/inquirer": "^9.0.9",
34
+ "@types/node": "^22.0.0",
35
+ "rimraf": "^6.0.0",
36
+ "rollup": "^4.28.0",
37
+ "tslib": "^2.8.0",
38
+ "typescript": "^5.7.0"
39
+ },
40
+ "dependencies": {
41
+ "chalk": "^4.1.2",
42
+ "commander": "^14.0.3",
43
+ "fs-extra": "^11.3.3",
44
+ "inquirer": "^8.2.7"
45
+ }
46
+ }