@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.
- package/README.md +88 -0
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +209 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/info.d.ts +7 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +123 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/install.d.ts +7 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +155 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/update.d.ts +7 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +98 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/package.json.js +79 -0
- package/dist/package.json.js.map +1 -0
- package/dist/utils/config.d.ts +24 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +80 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/constants.d.ts +15 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +50 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/plugin.d.ts +20 -0
- package/dist/utils/plugin.d.ts.map +1 -0
- package/dist/utils/plugin.js +121 -0
- package/dist/utils/plugin.js.map +1 -0
- package/dist/utils/prompts.d.ts +20 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +73 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/system.d.ts +30 -0
- package/dist/utils/system.d.ts.map +1 -0
- package/dist/utils/system.js +91 -0
- package/dist/utils/system.js.map +1 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# @wecom/wecom-openclaw-cli
|
|
2
|
+
|
|
3
|
+
企业微信(WeCom)OpenClaw 官方插件安装脚手架工具。帮助用户快速安装、配置、更新和诊断企业微信 OpenClaw 插件。
|
|
4
|
+
|
|
5
|
+
## 快速使用
|
|
6
|
+
|
|
7
|
+
### 通过 npx 执行(推荐,无需安装)
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx @wecom/wecom-openclaw-cli <command>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
例如:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# 安装插件
|
|
17
|
+
npx @wecom/wecom-openclaw-cli install
|
|
18
|
+
|
|
19
|
+
# 查看信息
|
|
20
|
+
npx @wecom/wecom-openclaw-cli info
|
|
21
|
+
|
|
22
|
+
# 诊断问题
|
|
23
|
+
npx @wecom/wecom-openclaw-cli doctor
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 全局安装
|
|
27
|
+
|
|
28
|
+
如果需要频繁使用,也可以全局安装:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install -g @wecom/wecom-openclaw-cli
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
安装完成后,可以直接使用 `wecom-openclaw-cli` 命令:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
wecom-openclaw-cli --help
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 命令
|
|
41
|
+
|
|
42
|
+
### `install` — 安装插件
|
|
43
|
+
|
|
44
|
+
安装并配置企业微信官方 OpenClaw 插件。安装过程中会交互式提示输入企业 ID(Corp ID)和应用密钥(Secret)。
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
wecom-openclaw-cli install
|
|
48
|
+
|
|
49
|
+
# 指定版本安装
|
|
50
|
+
wecom-openclaw-cli install --version 1.2.0
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### `update` — 更新插件
|
|
54
|
+
|
|
55
|
+
将已安装的企业微信插件更新到最新版本或指定版本。
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
wecom-openclaw-cli update
|
|
59
|
+
|
|
60
|
+
# 更新到指定版本
|
|
61
|
+
wecom-openclaw-cli update --version 1.3.0
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### `info` — 查看信息
|
|
65
|
+
|
|
66
|
+
显示 CLI 版本、OpenClaw 版本和插件版本等信息。
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
wecom-openclaw-cli info
|
|
70
|
+
|
|
71
|
+
# 显示完整配置详情
|
|
72
|
+
wecom-openclaw-cli info --all
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### `doctor` — 诊断问题
|
|
76
|
+
|
|
77
|
+
检查插件安装状态、依赖完整性和配置正确性。
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
wecom-openclaw-cli doctor
|
|
81
|
+
|
|
82
|
+
# 自动修复检测到的问题
|
|
83
|
+
wecom-openclaw-cli doctor --fix
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## License
|
|
87
|
+
|
|
88
|
+
ISC
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA2MrF"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
var chalk = require('chalk');
|
|
6
|
+
var config = require('../utils/config.js');
|
|
7
|
+
var prompts = require('../utils/prompts.js');
|
|
8
|
+
var system = require('../utils/system.js');
|
|
9
|
+
var constants = require('../utils/constants.js');
|
|
10
|
+
|
|
11
|
+
function _interopNamespaceDefault(e) {
|
|
12
|
+
var n = Object.create(null);
|
|
13
|
+
if (e) {
|
|
14
|
+
Object.keys(e).forEach(function (k) {
|
|
15
|
+
if (k !== 'default') {
|
|
16
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return e[k]; }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
n.default = e;
|
|
25
|
+
return Object.freeze(n);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);
|
|
29
|
+
var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* doctor 命令
|
|
33
|
+
*/
|
|
34
|
+
async function doctorCommand(options = {}) {
|
|
35
|
+
console.log(chalk.blue('正在运行诊断检查...'));
|
|
36
|
+
let checksPassed = true;
|
|
37
|
+
// 1. 检查插件目录
|
|
38
|
+
if (!(await fs__namespace.pathExists(constants.PLUGIN_PATH))) {
|
|
39
|
+
console.error(chalk.red(`[失败] 插件目录不存在: ${constants.PLUGIN_PATH}`));
|
|
40
|
+
console.warn(chalk.yellow('建议: 插件未安装,请使用 "wecom-openclaw-cli install" 命令进行安装。'));
|
|
41
|
+
// 插件未安装时无法继续后续检查,直接标记失败并跳过其他检查
|
|
42
|
+
checksPassed = false;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// 2. 检查 node_modules(仅在插件目录存在时检查)
|
|
46
|
+
if (!(await fs__namespace.pathExists(path__namespace.join(constants.PLUGIN_PATH, 'node_modules')))) {
|
|
47
|
+
console.error(chalk.red('[失败] 插件目录中缺少 node_modules'));
|
|
48
|
+
if (options.fix) {
|
|
49
|
+
console.log(chalk.blue('尝试修复: 正在运行 npm install...'));
|
|
50
|
+
try {
|
|
51
|
+
const npmCmd = system.getPlatformCommand('npm');
|
|
52
|
+
system.runCommand(`${npmCmd} install`, { cwd: constants.PLUGIN_PATH });
|
|
53
|
+
console.log(chalk.green('[已修复] npm install 完成。'));
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
console.error(chalk.red('[修复失败] 无法运行 npm install,请手动尝试。'));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
console.warn(chalk.yellow(`建议: 插件依赖未安装,请在 "${constants.PLUGIN_PATH}" 目录下运行 "npm install",或运行 "wecom-openclaw-cli doctor --fix"。`));
|
|
61
|
+
}
|
|
62
|
+
checksPassed = false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// 3. 检查配置 (plugins.allow)
|
|
66
|
+
let config$1;
|
|
67
|
+
try {
|
|
68
|
+
config$1 = await config.readConfig();
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
console.error(chalk.red('[失败] 配置文件读取失败或格式错误'));
|
|
72
|
+
if (options.fix) {
|
|
73
|
+
console.log(chalk.blue('尝试修复: 正在重建配置文件...'));
|
|
74
|
+
config$1 = {};
|
|
75
|
+
await config.writeConfig(config$1);
|
|
76
|
+
console.log(chalk.green('[已修复] 配置文件已重建为空配置。'));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.warn(chalk.yellow('建议: 配置文件可能已损坏,请运行 "wecom-openclaw-cli doctor --fix" 尝试修复。'));
|
|
80
|
+
// 没有有效配置,无法继续后续检查,直接返回失败
|
|
81
|
+
console.log(chalk.yellow('部分检查未通过,请使用 "wecom-openclaw-cli doctor --fix" 尝试自动修复。'));
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
checksPassed = false;
|
|
85
|
+
}
|
|
86
|
+
// 3.5 检查冲突插件
|
|
87
|
+
for (let i = 0; i < constants.CONFLICT_PLUGINS.length; i++) {
|
|
88
|
+
const conflictName = constants.CONFLICT_PLUGINS[i];
|
|
89
|
+
const conflictPath = constants.CONFLICT_PLUGIN_PATHS[i];
|
|
90
|
+
if (await fs__namespace.pathExists(conflictPath)) {
|
|
91
|
+
console.error(chalk.red(`[失败] 检测到冲突插件目录: ${conflictPath}`));
|
|
92
|
+
if (options.fix) {
|
|
93
|
+
console.log(chalk.blue(`尝试修复: 正在移除冲突插件目录 ${conflictPath}...`));
|
|
94
|
+
try {
|
|
95
|
+
await fs__namespace.remove(conflictPath);
|
|
96
|
+
console.log(chalk.green(`[已修复] 已移除冲突插件目录 ${conflictPath}。`));
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
console.error(chalk.red(`[修复失败] 无法移除 ${conflictPath},请手动删除。`));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
console.warn(chalk.yellow(`建议: 存在冲突插件 ${conflictName},请运行 "wecom-openclaw-cli doctor --fix" 自动移除。`));
|
|
104
|
+
}
|
|
105
|
+
checksPassed = false;
|
|
106
|
+
}
|
|
107
|
+
if (config$1?.plugins?.entries?.[conflictName]?.enabled) {
|
|
108
|
+
console.error(chalk.red(`[失败] 冲突插件 ${conflictName} 仍处于启用状态`));
|
|
109
|
+
if (options.fix) {
|
|
110
|
+
console.log(chalk.blue(`尝试修复: 正在禁用冲突插件 ${conflictName}...`));
|
|
111
|
+
try {
|
|
112
|
+
if (!config$1.plugins)
|
|
113
|
+
config$1.plugins = {};
|
|
114
|
+
if (!config$1.plugins.entries)
|
|
115
|
+
config$1.plugins.entries = {};
|
|
116
|
+
if (!config$1.plugins.entries[conflictName])
|
|
117
|
+
config$1.plugins.entries[conflictName] = { enabled: false };
|
|
118
|
+
config$1.plugins.entries[conflictName].enabled = false;
|
|
119
|
+
await config.writeConfig(config$1);
|
|
120
|
+
console.log(chalk.green(`[已修复] 冲突插件 ${conflictName} 已禁用。`));
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
console.error(chalk.red(`[修复失败] 无法禁用冲突插件 ${conflictName}。`));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
console.warn(chalk.yellow(`建议: 冲突插件 ${conflictName} 已启用,请运行 "wecom-openclaw-cli doctor --fix" 自动禁用。`));
|
|
128
|
+
}
|
|
129
|
+
checksPassed = false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (!config$1.plugins?.allow?.includes(constants.PLUGIN_NAME)) {
|
|
133
|
+
console.error(chalk.red('[失败] 插件未在 plugins.allow 中找到'));
|
|
134
|
+
if (options.fix) {
|
|
135
|
+
console.log(chalk.blue('尝试修复: 正在将插件添加到允许列表...'));
|
|
136
|
+
try {
|
|
137
|
+
if (!config$1.plugins)
|
|
138
|
+
config$1.plugins = {};
|
|
139
|
+
if (!config$1.plugins.allow)
|
|
140
|
+
config$1.plugins.allow = [];
|
|
141
|
+
config$1.plugins.allow.push(constants.PLUGIN_NAME);
|
|
142
|
+
await config.writeConfig(config$1);
|
|
143
|
+
console.log(chalk.green('[已修复] 插件已添加到允许列表。'));
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
console.error(chalk.red('[修复失败] 无法更新配置。'));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
console.warn(chalk.yellow('建议: 插件未在配置中被允许,请运行 "wecom-openclaw-cli doctor --fix" 自动添加。'));
|
|
151
|
+
}
|
|
152
|
+
checksPassed = false;
|
|
153
|
+
}
|
|
154
|
+
// 4. 检查 channel 配置
|
|
155
|
+
const wecomChannel = config$1.channels?.wecom;
|
|
156
|
+
let channelConfigValid = false;
|
|
157
|
+
if (wecomChannel && wecomChannel.botId && wecomChannel.secret) {
|
|
158
|
+
if (typeof wecomChannel.botId === 'string' &&
|
|
159
|
+
typeof wecomChannel.secret === 'string') {
|
|
160
|
+
channelConfigValid = true;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (!channelConfigValid) {
|
|
164
|
+
console.error(chalk.red('[失败] 企业微信 channel 配置缺失或不完整'));
|
|
165
|
+
if (options.fix) {
|
|
166
|
+
console.log(chalk.blue('尝试修复: 正在配置 Bot ID 和 Secret...'));
|
|
167
|
+
try {
|
|
168
|
+
if (!config$1.channels)
|
|
169
|
+
config$1.channels = {};
|
|
170
|
+
if (!config$1.channels.wecom) {
|
|
171
|
+
config$1.channels.wecom = {
|
|
172
|
+
enabled: true,
|
|
173
|
+
botId: '',
|
|
174
|
+
secret: '',
|
|
175
|
+
dmPolicy: 'pairing',
|
|
176
|
+
allowFrom: [],
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
const { botId, secret } = await prompts.promptBotIdSecret();
|
|
180
|
+
config$1.channels.wecom.botId = botId;
|
|
181
|
+
config$1.channels.wecom.secret = secret;
|
|
182
|
+
await config.writeConfig(config$1);
|
|
183
|
+
console.log(chalk.green('[已修复] channel 配置已更新。'));
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
console.error(chalk.red('[修复失败] 无法更新 channel 配置。'));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
console.warn(chalk.yellow('建议: Bot ID 或 Secret 缺失,请运行 "wecom-openclaw-cli doctor --fix" 进行配置。'));
|
|
191
|
+
}
|
|
192
|
+
checksPassed = false;
|
|
193
|
+
}
|
|
194
|
+
if (checksPassed) {
|
|
195
|
+
console.log(chalk.green('所有检查均已通过!'));
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
if (options.fix) {
|
|
199
|
+
console.log(chalk.blue('修复尝试已完成,请再次运行 doctor 命令进行验证。'));
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
console.log(chalk.yellow('部分检查未通过,请使用 "wecom-openclaw-cli doctor --fix" 尝试自动修复。'));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return checksPassed;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
exports.doctorCommand = doctorCommand;
|
|
209
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sources":["../../src/commands/doctor.ts"],"sourcesContent":[null],"names":["fs","PLUGIN_PATH","path","getPlatformCommand","runCommand","config","readConfig","writeConfig","CONFLICT_PLUGINS","CONFLICT_PLUGIN_PATHS","PLUGIN_NAME","promptBotIdSecret"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAuGhF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var os = require('os');
|
|
4
|
+
var fs = require('fs-extra');
|
|
5
|
+
var chalk = require('chalk');
|
|
6
|
+
var config = require('../utils/config.js');
|
|
7
|
+
var system = require('../utils/system.js');
|
|
8
|
+
var plugin = require('../utils/plugin.js');
|
|
9
|
+
var constants = require('../utils/constants.js');
|
|
10
|
+
var _package = require('../package.json.js');
|
|
11
|
+
|
|
12
|
+
function _interopNamespaceDefault(e) {
|
|
13
|
+
var n = Object.create(null);
|
|
14
|
+
if (e) {
|
|
15
|
+
Object.keys(e).forEach(function (k) {
|
|
16
|
+
if (k !== 'default') {
|
|
17
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return e[k]; }
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
n.default = e;
|
|
26
|
+
return Object.freeze(n);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var os__namespace = /*#__PURE__*/_interopNamespaceDefault(os);
|
|
30
|
+
var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* info 命令
|
|
34
|
+
*/
|
|
35
|
+
async function infoCommand(options = {}) {
|
|
36
|
+
try {
|
|
37
|
+
// 0. 获取 CLI 版本
|
|
38
|
+
const cliVersion = _package.default.version || 'Unknown';
|
|
39
|
+
console.log(chalk.bold('wecom-openclaw-cli: ') + chalk.green(cliVersion));
|
|
40
|
+
// 1. 获取 OpenClaw 版本
|
|
41
|
+
let openClawVersion = '未安装';
|
|
42
|
+
try {
|
|
43
|
+
const openclawCmd = system.getPlatformCommand('openclaw');
|
|
44
|
+
openClawVersion = system.runCommandQuiet(`${openclawCmd} --version`);
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
// openclaw not installed or error
|
|
48
|
+
}
|
|
49
|
+
console.log(chalk.bold('openclaw: ') +
|
|
50
|
+
(openClawVersion !== '未安装'
|
|
51
|
+
? chalk.green(openClawVersion)
|
|
52
|
+
: chalk.red(openClawVersion)));
|
|
53
|
+
// 2. 获取插件版本
|
|
54
|
+
const pluginVersion = (await plugin.getPluginVersion()) ?? '未安装';
|
|
55
|
+
console.log(chalk.bold('wecom-openclaw-plugin: ') +
|
|
56
|
+
(pluginVersion !== '未安装'
|
|
57
|
+
? chalk.green(pluginVersion)
|
|
58
|
+
: chalk.red(pluginVersion)));
|
|
59
|
+
// 3. 环境信息
|
|
60
|
+
console.log('');
|
|
61
|
+
console.log(chalk.bold.underline('环境信息:'));
|
|
62
|
+
console.log(chalk.bold('OS: ') +
|
|
63
|
+
chalk.green(`${os__namespace.platform()} ${os__namespace.release()} (${os__namespace.arch()})`));
|
|
64
|
+
console.log(chalk.bold('Node.js: ') + chalk.green(process.version));
|
|
65
|
+
console.log(chalk.bold('Shell: ') +
|
|
66
|
+
chalk.green(process.env.SHELL || process.env.ComSpec || 'Unknown'));
|
|
67
|
+
// 4. 如果指定 --all,显示更多详情
|
|
68
|
+
if (options.all) {
|
|
69
|
+
// 4.1 配置文件是否存在
|
|
70
|
+
console.log('');
|
|
71
|
+
console.log(chalk.bold.underline('配置状态:'));
|
|
72
|
+
const configPath = config.getConfigPath();
|
|
73
|
+
const configExists = await fs__namespace.pathExists(configPath);
|
|
74
|
+
console.log(chalk.bold('配置文件: ') +
|
|
75
|
+
(configExists
|
|
76
|
+
? chalk.green(`存在 (${configPath})`)
|
|
77
|
+
: chalk.red(`不存在 (${configPath})`)));
|
|
78
|
+
// 4.2 插件启用状态
|
|
79
|
+
const config$1 = await config.readConfig();
|
|
80
|
+
const pluginEntry = config$1.plugins?.entries?.[constants.PLUGIN_NAME];
|
|
81
|
+
const pluginEnabled = pluginEntry?.enabled === true;
|
|
82
|
+
console.log(chalk.bold('插件启用: ') +
|
|
83
|
+
(pluginEnabled ? chalk.green('✅ 已启用') : chalk.red('❌ 未启用')));
|
|
84
|
+
// 4.3 冲突插件状态(仅显示配置中存在的冲突插件)
|
|
85
|
+
for (const name of constants.CONFLICT_PLUGINS) {
|
|
86
|
+
const entry = config$1.plugins?.entries?.[name];
|
|
87
|
+
if (!entry)
|
|
88
|
+
continue; // 插件不存在于配置中,跳过
|
|
89
|
+
const enabled = entry.enabled === true;
|
|
90
|
+
console.log(chalk.bold(`冲突插件 ${name}: `) +
|
|
91
|
+
(enabled ? chalk.red('启用中 ⚠️') : chalk.green('已禁用')));
|
|
92
|
+
}
|
|
93
|
+
// 4.4 npm registry 可达性
|
|
94
|
+
// 注意:部分 npm 源(如腾讯内部源)不支持 `npm ping`,会返回 400
|
|
95
|
+
// 因此改用 `npm view npm version` 作为连通性检测手段
|
|
96
|
+
console.log('');
|
|
97
|
+
console.log(chalk.bold.underline('npm 源连通性:'));
|
|
98
|
+
for (const registry of constants.NPM_REGISTRIES) {
|
|
99
|
+
try {
|
|
100
|
+
system.runCommandQuiet(`npm view npm --registry ${registry} version`);
|
|
101
|
+
console.log(chalk.bold(`${registry} `) + chalk.green('✅ 可达'));
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
console.log(chalk.bold(`${registry} `) + chalk.red('❌ 不可达'));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// 4.5 配置详情(脱敏处理)
|
|
108
|
+
console.log('');
|
|
109
|
+
console.log(chalk.bold.underline('配置详情:'));
|
|
110
|
+
const sanitizedConfig = JSON.parse(JSON.stringify(config$1));
|
|
111
|
+
if (sanitizedConfig.channels?.wecom?.secret) {
|
|
112
|
+
sanitizedConfig.channels.wecom.secret = '******';
|
|
113
|
+
}
|
|
114
|
+
console.log(JSON.stringify(sanitizedConfig, null, 2));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
console.error(chalk.red('获取信息失败。'));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
exports.infoCommand = infoCommand;
|
|
123
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sources":["../../src/commands/info.ts"],"sourcesContent":[null],"names":["pkg","getPlatformCommand","runCommandQuiet","getPluginVersion","os","getConfigPath","fs","config","readConfig","PLUGIN_NAME","CONFLICT_PLUGINS","NPM_REGISTRIES"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AA4DA;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFjF"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
var chalk = require('chalk');
|
|
6
|
+
var system = require('../utils/system.js');
|
|
7
|
+
var config = require('../utils/config.js');
|
|
8
|
+
var prompts = require('../utils/prompts.js');
|
|
9
|
+
var update = require('./update.js');
|
|
10
|
+
var constants = require('../utils/constants.js');
|
|
11
|
+
var plugin = require('../utils/plugin.js');
|
|
12
|
+
|
|
13
|
+
function _interopNamespaceDefault(e) {
|
|
14
|
+
var n = Object.create(null);
|
|
15
|
+
if (e) {
|
|
16
|
+
Object.keys(e).forEach(function (k) {
|
|
17
|
+
if (k !== 'default') {
|
|
18
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
19
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return e[k]; }
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
n.default = e;
|
|
27
|
+
return Object.freeze(n);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);
|
|
31
|
+
var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* 确保 channel 配置正确
|
|
35
|
+
*/
|
|
36
|
+
async function ensureChannelConfig() {
|
|
37
|
+
console.log(chalk.blue('正在配置 channels...'));
|
|
38
|
+
const newConfig = await config.readConfig();
|
|
39
|
+
if (!newConfig.channels)
|
|
40
|
+
newConfig.channels = {};
|
|
41
|
+
if (!newConfig.channels.wecom) {
|
|
42
|
+
newConfig.channels.wecom = {
|
|
43
|
+
enabled: true,
|
|
44
|
+
botId: '',
|
|
45
|
+
secret: '',
|
|
46
|
+
dmPolicy: 'pairing',
|
|
47
|
+
allowFrom: [],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// 处理 botId
|
|
51
|
+
if (newConfig.channels.wecom.botId) {
|
|
52
|
+
const confirm = await prompts.promptConfirmBotId(newConfig.channels.wecom.botId);
|
|
53
|
+
if (!confirm) {
|
|
54
|
+
newConfig.channels.wecom.botId = await prompts.promptBotId();
|
|
55
|
+
// 如果 botId 变更,清除旧的 secret
|
|
56
|
+
delete newConfig.channels.wecom.secret;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
newConfig.channels.wecom.botId = await prompts.promptBotId();
|
|
61
|
+
}
|
|
62
|
+
// 处理 secret
|
|
63
|
+
if (!newConfig.channels.wecom.secret) {
|
|
64
|
+
newConfig.channels.wecom.secret = await prompts.promptSecret();
|
|
65
|
+
}
|
|
66
|
+
// // 确保 dmPolicy 设置正确
|
|
67
|
+
// if (!newConfig.channels.wecom.dmPolicy) {
|
|
68
|
+
// newConfig.channels.wecom.dmPolicy = 'pairing';
|
|
69
|
+
// }
|
|
70
|
+
// 更新 plugins.allow
|
|
71
|
+
if (!newConfig.plugins)
|
|
72
|
+
newConfig.plugins = {};
|
|
73
|
+
if (!newConfig.plugins.allow)
|
|
74
|
+
newConfig.plugins.allow = [];
|
|
75
|
+
if (!newConfig.plugins.allow.includes(constants.PLUGIN_NAME)) {
|
|
76
|
+
newConfig.plugins.allow.push(constants.PLUGIN_NAME);
|
|
77
|
+
}
|
|
78
|
+
await config.writeConfig(newConfig);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* install 命令
|
|
82
|
+
*/
|
|
83
|
+
async function installCommand(options) {
|
|
84
|
+
console.log(chalk.blue('开始安装...'));
|
|
85
|
+
// 1. 检查已有安装
|
|
86
|
+
if (await fs__namespace.pathExists(constants.PLUGIN_PATH)) {
|
|
87
|
+
console.log(chalk.yellow('插件已安装,开始更新流程...'));
|
|
88
|
+
const newVersion = await update.updateCommand(options, true);
|
|
89
|
+
// 更新后验证配置
|
|
90
|
+
await ensureChannelConfig();
|
|
91
|
+
if (newVersion) {
|
|
92
|
+
console.log(chalk.green(`更新完成!新版本: ${newVersion}`));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.log(chalk.green('更新完成!'));
|
|
96
|
+
}
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
// 2. 校验版本号参数
|
|
100
|
+
if (options.version && !system.validateVersion(options.version)) {
|
|
101
|
+
console.error(chalk.red('错误: 版本号格式不合法,只允许数字、点、连字符和字母。'));
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
// 3. 检查 openclaw 版本
|
|
105
|
+
try {
|
|
106
|
+
const openclawCmd = system.getPlatformCommand('openclaw');
|
|
107
|
+
const version = system.runCommandQuiet(`${openclawCmd} --version`);
|
|
108
|
+
if (plugin.compareVersions(version, '2026.2.13') < 0) {
|
|
109
|
+
console.error(chalk.red(`错误: OpenClaw 版本不匹配,需要 >= 2026.2.13,当前版本 ${version},请升级。`));
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
const isWin = process.platform === 'win32';
|
|
115
|
+
console.error(chalk.red('错误: OpenClaw 未安装或未添加到 PATH 环境变量。'));
|
|
116
|
+
if (isWin) {
|
|
117
|
+
console.error(chalk.yellow('提示: Windows 用户请确认已将 OpenClaw 安装目录添加到系统 PATH 中,安装后可能需要重启终端。'));
|
|
118
|
+
}
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
// 4. 禁用冲突插件
|
|
122
|
+
console.log(chalk.blue('正在禁用冲突插件...'));
|
|
123
|
+
await plugin.disableConflictPlugins();
|
|
124
|
+
// 5. 移除冲突目录
|
|
125
|
+
for (const conflictPath of constants.CONFLICT_PLUGIN_PATHS) {
|
|
126
|
+
if (await fs__namespace.pathExists(conflictPath)) {
|
|
127
|
+
console.log(chalk.blue(`正在移除冲突的插件目录: ${conflictPath}...`));
|
|
128
|
+
await fs__namespace.remove(conflictPath);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// 6. 安装官方插件
|
|
132
|
+
console.log(chalk.blue('正在安装官方 WeCom 插件...'));
|
|
133
|
+
const installed = plugin.installPluginFromRegistry(options.version);
|
|
134
|
+
if (!installed) {
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
// 7. 配置 channels
|
|
138
|
+
await ensureChannelConfig();
|
|
139
|
+
// 8. 最终验证
|
|
140
|
+
console.log(chalk.blue('正在验证安装...'));
|
|
141
|
+
const finalConfig = await config.readConfig();
|
|
142
|
+
const checks = [
|
|
143
|
+
finalConfig.plugins?.allow?.includes(constants.PLUGIN_NAME),
|
|
144
|
+
await fs__namespace.pathExists(path__namespace.join(constants.PLUGIN_PATH, 'node_modules')),
|
|
145
|
+
];
|
|
146
|
+
if (checks.every(Boolean)) {
|
|
147
|
+
console.log(chalk.green('安装完成!你现在可以运行 "openclaw gateway run"。'));
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
console.warn(chalk.yellow('安装已完成,但部分检查未通过。请运行 "doctor" 命令进行诊断。'));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
exports.installCommand = installCommand;
|
|
155
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sources":["../../src/commands/install.ts"],"sourcesContent":[null],"names":["readConfig","promptConfirmBotId","promptBotId","promptSecret","PLUGIN_NAME","writeConfig","fs","PLUGIN_PATH","updateCommand","validateVersion","getPlatformCommand","runCommandQuiet","compareVersions","disableConflictPlugins","CONFLICT_PLUGIN_PATHS","installPluginFromRegistry","path"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7B,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6E7B"}
|