@cecwxf/wtt 0.1.18 → 0.1.20
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 +9 -0
- package/README_CN.md +9 -0
- package/dist/commands/handlers.d.ts.map +1 -1
- package/dist/commands/handlers.js +2 -7
- package/dist/commands/handlers.js.map +1 -1
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +109 -0
- package/dist/commands/update.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,6 +20,15 @@ openclaw plugins enable wtt
|
|
|
20
20
|
openclaw gateway restart
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
### Option A-compat: one-shot installer (for OpenClaw versions with scoped clawhub install bug)
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
bash scripts/install-plugin.sh 0.1.19
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
This script tries `clawhub:@cecwxf/wtt@<version>` first, then auto-falls back to
|
|
30
|
+
`npm pack @cecwxf/wtt@<version> + openclaw plugins install <tgz>` when needed.
|
|
31
|
+
|
|
23
32
|
### Option B: local development link
|
|
24
33
|
|
|
25
34
|
```bash
|
package/README_CN.md
CHANGED
|
@@ -20,6 +20,15 @@ openclaw plugins enable wtt
|
|
|
20
20
|
openclaw gateway restart
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
### 方式 A-兼容:一键安装脚本(兼容部分 OpenClaw 版本的 scoped 安装问题)
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
bash scripts/install-plugin.sh 0.1.19
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
该脚本会优先尝试 `clawhub:@cecwxf/wtt@<version>`,若遇到 scoped zip 路径问题,
|
|
30
|
+
会自动回退到 `npm pack @cecwxf/wtt@<version> + openclaw plugins install <tgz>`。
|
|
31
|
+
|
|
23
32
|
### 方式 B:本地开发链接安装
|
|
24
33
|
|
|
25
34
|
```bash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/commands/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/commands/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAiBpB,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,GAAG,EAAE,0BAA0B,GAC9B,OAAO,CAAC,MAAM,CAAC,CAsFjB"}
|
|
@@ -5,6 +5,7 @@ import { handleSetupCommand } from "./setup.js";
|
|
|
5
5
|
import { handleTaskCommand } from "./task.js";
|
|
6
6
|
import { handlePipelineCommand } from "./pipeline.js";
|
|
7
7
|
import { handleDelegateCommand } from "./delegate.js";
|
|
8
|
+
import { handleUpdateCommand } from "./update.js";
|
|
8
9
|
export async function executeWTTCommand(command, client, ctx) {
|
|
9
10
|
switch (command.name) {
|
|
10
11
|
case "help":
|
|
@@ -20,13 +21,7 @@ export async function executeWTTCommand(command, client, ctx) {
|
|
|
20
21
|
case "setup":
|
|
21
22
|
return handleSetupCommand(command, ctx);
|
|
22
23
|
case "update":
|
|
23
|
-
return
|
|
24
|
-
"WTT 插件升级命令:",
|
|
25
|
-
"1) openclaw plugins install @cecwxf/wtt@latest",
|
|
26
|
-
"2) openclaw plugins enable wtt",
|
|
27
|
-
"3) openclaw gateway restart",
|
|
28
|
-
"4) openclaw status",
|
|
29
|
-
].join("\n");
|
|
24
|
+
return handleUpdateCommand(ctx);
|
|
30
25
|
case "task":
|
|
31
26
|
return handleTaskCommand(command, ctx);
|
|
32
27
|
case "pipeline":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/commands/handlers.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,UAAU,EACV,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/commands/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAkF7D,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C3F"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
async function runCommand(cmd, args, timeoutMs) {
|
|
3
|
+
return new Promise((resolve) => {
|
|
4
|
+
const child = spawn(cmd, args, {
|
|
5
|
+
env: process.env,
|
|
6
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
7
|
+
});
|
|
8
|
+
let stdout = "";
|
|
9
|
+
let stderr = "";
|
|
10
|
+
let finished = false;
|
|
11
|
+
child.stdout.on("data", (chunk) => {
|
|
12
|
+
stdout += String(chunk ?? "");
|
|
13
|
+
});
|
|
14
|
+
child.stderr.on("data", (chunk) => {
|
|
15
|
+
stderr += String(chunk ?? "");
|
|
16
|
+
});
|
|
17
|
+
const timer = setTimeout(() => {
|
|
18
|
+
if (finished)
|
|
19
|
+
return;
|
|
20
|
+
finished = true;
|
|
21
|
+
child.kill("SIGTERM");
|
|
22
|
+
resolve({ code: 124, stdout, stderr, timedOut: true });
|
|
23
|
+
}, timeoutMs);
|
|
24
|
+
child.on("error", (err) => {
|
|
25
|
+
if (finished)
|
|
26
|
+
return;
|
|
27
|
+
finished = true;
|
|
28
|
+
clearTimeout(timer);
|
|
29
|
+
resolve({ code: 1, stdout, stderr: `${stderr}\n${String(err?.message ?? err)}`.trim(), timedOut: false });
|
|
30
|
+
});
|
|
31
|
+
child.on("close", (code) => {
|
|
32
|
+
if (finished)
|
|
33
|
+
return;
|
|
34
|
+
finished = true;
|
|
35
|
+
clearTimeout(timer);
|
|
36
|
+
resolve({ code: code ?? 1, stdout, stderr, timedOut: false });
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function compactOutput(value, maxLen) {
|
|
41
|
+
const text = String(value || "").trim();
|
|
42
|
+
if (!text)
|
|
43
|
+
return "";
|
|
44
|
+
if (text.length <= maxLen)
|
|
45
|
+
return text;
|
|
46
|
+
return `${text.slice(0, maxLen - 1)}…`;
|
|
47
|
+
}
|
|
48
|
+
function scheduleGatewayRestart() {
|
|
49
|
+
// Delay a little so command response can be delivered before gateway restarts.
|
|
50
|
+
const script = "sleep 2; openclaw gateway restart >/tmp/wtt-plugin-update.log 2>&1";
|
|
51
|
+
const child = spawn("sh", ["-lc", script], {
|
|
52
|
+
detached: true,
|
|
53
|
+
stdio: "ignore",
|
|
54
|
+
env: process.env,
|
|
55
|
+
});
|
|
56
|
+
child.unref();
|
|
57
|
+
}
|
|
58
|
+
function outputOf(result) {
|
|
59
|
+
return `${result.stdout || ""}\n${result.stderr || ""}`.trim();
|
|
60
|
+
}
|
|
61
|
+
function hasUnknownWttChannelError(result) {
|
|
62
|
+
const text = outputOf(result).toLowerCase();
|
|
63
|
+
return text.includes("unknown channel id: wtt")
|
|
64
|
+
|| (text.includes("channels.wtt") && text.includes("invalid config"));
|
|
65
|
+
}
|
|
66
|
+
async function runInstall(cmd) {
|
|
67
|
+
return runCommand(cmd, ["plugins", "install", "@cecwxf/wtt@latest"], 180_000);
|
|
68
|
+
}
|
|
69
|
+
export async function handleUpdateCommand(_ctx) {
|
|
70
|
+
const cmd = process.env.OPENCLAW_BIN?.trim() || "openclaw";
|
|
71
|
+
let install = await runInstall(cmd);
|
|
72
|
+
// Some environments fail validation before plugin registry is hydrated,
|
|
73
|
+
// showing: channels.wtt unknown channel id: wtt.
|
|
74
|
+
// Auto-repair config then retry once.
|
|
75
|
+
if (install.code !== 0 && hasUnknownWttChannelError(install)) {
|
|
76
|
+
const repair = await runCommand(cmd, ["doctor", "--fix", "--non-interactive", "--yes"], 180_000);
|
|
77
|
+
if (repair.code !== 0) {
|
|
78
|
+
const detail = compactOutput(outputOf(repair), 800);
|
|
79
|
+
return [
|
|
80
|
+
"WTT 插件升级失败:自动修复配置未成功。",
|
|
81
|
+
detail ? `doctor 详情: ${detail}` : "doctor 详情: 无",
|
|
82
|
+
"请手动执行:openclaw doctor --fix,然后重试 /wtt update",
|
|
83
|
+
].join("\n");
|
|
84
|
+
}
|
|
85
|
+
install = await runInstall(cmd);
|
|
86
|
+
}
|
|
87
|
+
if (install.code !== 0) {
|
|
88
|
+
const reason = install.timedOut
|
|
89
|
+
? "超时(180s)"
|
|
90
|
+
: `退出码 ${install.code}`;
|
|
91
|
+
const detail = compactOutput(outputOf(install), 800);
|
|
92
|
+
return [
|
|
93
|
+
`WTT 插件升级失败:${reason}`,
|
|
94
|
+
detail ? `详情: ${detail}` : "详情: 无",
|
|
95
|
+
"你可以稍后重试:/wtt update",
|
|
96
|
+
].join("\n");
|
|
97
|
+
}
|
|
98
|
+
scheduleGatewayRestart();
|
|
99
|
+
const installSummary = compactOutput(outputOf(install), 260);
|
|
100
|
+
const lines = [
|
|
101
|
+
"WTT 插件已升级到 latest(自动执行)。",
|
|
102
|
+
"网关将在约 2 秒后自动重启。",
|
|
103
|
+
"重启期间短暂离线属正常,恢复后可用 /wtt help 验证。",
|
|
104
|
+
];
|
|
105
|
+
if (installSummary)
|
|
106
|
+
lines.push(`install: ${installSummary}`);
|
|
107
|
+
return lines.join("\n");
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|