lightclawbot 1.0.4 → 1.0.6
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/dist/public/data/scripts/manifest.json +4 -14
- package/dist/public/data/scripts/{preflight.7c5a27cd.sh → preflight.78097a58.sh} +8 -0
- package/dist/public/data/scripts/preflight.sh +8 -0
- package/dist/src/config.d.ts +4 -4
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +1 -1
- package/dist/src/config.js.map +1 -1
- package/dist/src/download-tool.d.ts.map +1 -1
- package/dist/src/download-tool.js +0 -3
- package/dist/src/download-tool.js.map +1 -1
- package/dist/src/format-urls.d.ts +2 -2
- package/dist/src/format-urls.js +2 -2
- package/dist/src/gateway.d.ts.map +1 -1
- package/dist/src/gateway.js +55 -57
- package/dist/src/gateway.js.map +1 -1
- package/dist/src/socket-handlers.js +1 -1
- package/dist/src/socket-handlers.js.map +1 -1
- package/dist/src/upload-tool.d.ts.map +1 -1
- package/dist/src/upload-tool.js +0 -3
- package/dist/src/upload-tool.js.map +1 -1
- package/package.json +1 -1
- package/dist/public/data/scripts/check-update.9c4e848e.sh +0 -138
- package/dist/public/data/scripts/check-update.sh +0 -138
- package/dist/public/data/scripts/upgrade.bd220b70.sh +0 -214
- package/dist/public/data/scripts/upgrade.sh +0 -214
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-03-
|
|
2
|
+
"generatedAt": "2026-03-16T12:23:53.894Z",
|
|
3
3
|
"cdnBase": "https://cloudcache.tencent-cloud.com/qcloud/tea/app/data/scripts",
|
|
4
4
|
"files": {
|
|
5
5
|
"preflight.sh": {
|
|
6
|
-
"hashed": "preflight.
|
|
7
|
-
"hash": "
|
|
8
|
-
"size":
|
|
9
|
-
},
|
|
10
|
-
"check-update.sh": {
|
|
11
|
-
"hashed": "check-update.9c4e848e.sh",
|
|
12
|
-
"hash": "9c4e848e",
|
|
13
|
-
"size": 4422
|
|
14
|
-
},
|
|
15
|
-
"upgrade.sh": {
|
|
16
|
-
"hashed": "upgrade.bd220b70.sh",
|
|
17
|
-
"hash": "bd220b70",
|
|
18
|
-
"size": 8398
|
|
6
|
+
"hashed": "preflight.78097a58.sh",
|
|
7
|
+
"hash": "78097a58",
|
|
8
|
+
"size": 3474
|
|
19
9
|
}
|
|
20
10
|
}
|
|
21
11
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
# - 可用: RESULT:{"status":"ok","version":"x.y.z"}
|
|
7
7
|
# - 缺 openclaw: RESULT:{"status":"need_openclaw","reason":"..."}
|
|
8
8
|
# - 缺 lightclawbot:RESULT:{"status":"need_install","reason":"..."}
|
|
9
|
+
# - 缺 apiKey: RESULT:{"status":"need_apikey","reason":"apikeys_empty"}
|
|
9
10
|
#
|
|
10
11
|
# 使用方式:
|
|
11
12
|
# 本地执行: bash scripts/preflight.sh
|
|
@@ -79,6 +80,13 @@ if [ "$channel_enabled" != "true" ]; then
|
|
|
79
80
|
exit 1
|
|
80
81
|
fi
|
|
81
82
|
|
|
83
|
+
# 4d. channels 中 apiKeys 是否配置且非空
|
|
84
|
+
apikeys_count=$(jq -r ".channels.\"${id}\".apiKeys // [] | length" "$cfg" 2>/dev/null)
|
|
85
|
+
if [ "$apikeys_count" = "0" ] || [ -z "$apikeys_count" ]; then
|
|
86
|
+
echo "RESULT:{\"status\":\"need_install\",\"reason\":\"apikeys_empty\"}"
|
|
87
|
+
exit 1
|
|
88
|
+
fi
|
|
89
|
+
|
|
82
90
|
# ---------- 5. 全部通过,插件可用 ----------
|
|
83
91
|
|
|
84
92
|
version=$(jq -r '.version // "unknown"' "$plugin_dir/package.json")
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
# - 可用: RESULT:{"status":"ok","version":"x.y.z"}
|
|
7
7
|
# - 缺 openclaw: RESULT:{"status":"need_openclaw","reason":"..."}
|
|
8
8
|
# - 缺 lightclawbot:RESULT:{"status":"need_install","reason":"..."}
|
|
9
|
+
# - 缺 apiKey: RESULT:{"status":"need_apikey","reason":"apikeys_empty"}
|
|
9
10
|
#
|
|
10
11
|
# 使用方式:
|
|
11
12
|
# 本地执行: bash scripts/preflight.sh
|
|
@@ -79,6 +80,13 @@ if [ "$channel_enabled" != "true" ]; then
|
|
|
79
80
|
exit 1
|
|
80
81
|
fi
|
|
81
82
|
|
|
83
|
+
# 4d. channels 中 apiKeys 是否配置且非空
|
|
84
|
+
apikeys_count=$(jq -r ".channels.\"${id}\".apiKeys // [] | length" "$cfg" 2>/dev/null)
|
|
85
|
+
if [ "$apikeys_count" = "0" ] || [ -z "$apikeys_count" ]; then
|
|
86
|
+
echo "RESULT:{\"status\":\"need_install\",\"reason\":\"apikeys_empty\"}"
|
|
87
|
+
exit 1
|
|
88
|
+
fi
|
|
89
|
+
|
|
82
90
|
# ---------- 5. 全部通过,插件可用 ----------
|
|
83
91
|
|
|
84
92
|
version=$(jq -r '.version // "unknown"' "$plugin_dir/package.json")
|
package/dist/src/config.d.ts
CHANGED
|
@@ -19,13 +19,13 @@ import type { AssistantAccountConfig, ResolvedAssistantAccount } from "./types.j
|
|
|
19
19
|
export declare const CHANNEL_KEY = "lightclawbot";
|
|
20
20
|
export declare const DEFAULT_ACCOUNT_ID = "default";
|
|
21
21
|
/** 核心服务域名 */
|
|
22
|
-
export declare const DOMAIN = "lightai.
|
|
22
|
+
export declare const DOMAIN = "lightai.cloud.tencent.com";
|
|
23
23
|
/** WebSocket 连接地址 */
|
|
24
|
-
export declare const WS_URL = "wss://lightai.
|
|
24
|
+
export declare const WS_URL = "wss://lightai.cloud.tencent.com";
|
|
25
25
|
/** HTTP API 基础地址 */
|
|
26
|
-
export declare const API_BASE_URL = "https://lightai.
|
|
26
|
+
export declare const API_BASE_URL = "https://lightai.cloud.tencent.com";
|
|
27
27
|
/** COS 相关配置 */
|
|
28
|
-
export declare const COS_BASE_URL = "https://lightai.
|
|
28
|
+
export declare const COS_BASE_URL = "https://lightai.cloud.tencent.com";
|
|
29
29
|
/** Socket.IO 连接路径 */
|
|
30
30
|
export declare const SOCKET_PATH = "/claw-socket";
|
|
31
31
|
/** Socket.IO 重连策略 */
|
package/dist/src/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEnF,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAC1C,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAU5C,aAAa;AACb,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/src/config.js
CHANGED
|
@@ -23,7 +23,7 @@ const ENV_API_BASE_URL = "LIGHTCLAW_API_BASE_URL";
|
|
|
23
23
|
// 域名 & URL 配置
|
|
24
24
|
// ============================================================
|
|
25
25
|
/** 核心服务域名 */
|
|
26
|
-
export const DOMAIN = "lightai.
|
|
26
|
+
export const DOMAIN = "lightai.cloud.tencent.com";
|
|
27
27
|
/** WebSocket 连接地址 */
|
|
28
28
|
export const WS_URL = `wss://${DOMAIN}`;
|
|
29
29
|
/** HTTP API 基础地址 */
|
package/dist/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC;AAC1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAE5C,WAAW;AACX,MAAM,WAAW,GAAG,mBAAmB,CAAC;AACxC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAElD,+DAA+D;AAC/D,cAAc;AACd,+DAA+D;AAE/D,aAAa;AACb,MAAM,CAAC,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-tool.d.ts","sourceRoot":"","sources":["../../src/download-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,qBAAqB,CAAC;AAa3E,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;CA0B9B,CAAC;AAMF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"download-tool.d.ts","sourceRoot":"","sources":["../../src/download-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,qBAAqB,CAAC;AAa3E,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;CA0B9B,CAAC;AAMF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAmHjE"}
|
|
@@ -59,9 +59,6 @@ export function registerDownloadTool(api) {
|
|
|
59
59
|
"Note: For batch uploading files to share with users, prefer lightclaw_upload_file instead.",
|
|
60
60
|
parameters: downloadToolSchema,
|
|
61
61
|
async execute(_toolCallId, params) {
|
|
62
|
-
// 调试日志:打印原始 sessionKey,帮助排查多 key 模式下的 apiKey 选取
|
|
63
|
-
// 使用 warn 级别输出,确保终端可见
|
|
64
|
-
log.warn(`[lightclaw_get_file_url] sessionKey="${sessionKey}", accountId="${defaultAccountId}"`);
|
|
65
62
|
// 每次 execute 时动态解析 apiKey(多 key 模式下通过 sessionKey 直接获取)
|
|
66
63
|
const apiKey = resolveEffectiveApiKey({ sessionKey });
|
|
67
64
|
log.warn(`[lightclaw_get_file_url] resolved apiKey="${apiKey?.slice(0, 8)}..."`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-tool.js","sourceRoot":"","sources":["../../src/download-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,+DAA+D;AAC/D,cAAc;AACd,+DAA+D;AAE/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,QAAiB;IACvB,UAAU,EAAE;QACV,MAAM,EAAE;YACN,IAAI,EAAE,QAAiB;YACvB,IAAI,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,CAAC;YAC5D,WAAW,EACT,qBAAqB;gBACrB,4FAA4F;gBAC5F,qEAAqE;gBACrE,gFAAgF;SACnF;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAiB;YACvB,WAAW,EACT,2FAA2F;gBAC3F,0DAA0D;SAC7D;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAiB;YACvB,WAAW,EACT,iFAAiF;gBACjF,6DAA6D;SAChE;KACF;IACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAU;CAC1C,CAAC;AAEF,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAE/D,MAAM,UAAU,oBAAoB,CAAC,GAAsB;IACzD,qCAAqC;IACrC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAEvB,GAAG,CAAC,YAAY,CACd,CAAC,GAAG,EAAE,EAAE;QACN,MAAM,gBAAgB,GAAG,GAAG,CAAC,cAAc,CAAC;QAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAClC,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,WAAW,EACT,6CAA6C;gBAC7C,WAAW;gBACX,sGAAsG;gBACtG,qGAAqG;gBACrG,mGAAmG;gBACnG,4FAA4F;YAC9F,UAAU,EAAE,kBAAkB;YAE9B,KAAK,CAAC,OAAO,CACX,WAAmB,EACnB,MAA+D;gBAE/D,
|
|
1
|
+
{"version":3,"file":"download-tool.js","sourceRoot":"","sources":["../../src/download-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* LightClaw — COS URL 格式化
|
|
3
3
|
*
|
|
4
4
|
* 将消息文本中的裸 COS 下载链接自动转换为 Markdown 链接格式:
|
|
5
|
-
* 裸链接: https://lightai.
|
|
6
|
-
* Markdown: [report.pdf](https://lightai.
|
|
5
|
+
* 裸链接: https://lightai.cloud.tencent.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf
|
|
6
|
+
* Markdown: [report.pdf](https://lightai.cloud.tencent.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf)
|
|
7
7
|
*
|
|
8
8
|
* 使用场景:
|
|
9
9
|
* 1. gateway.ts sendReply / sendFiles — 兜底确保最终发出去的消息格式正确
|
package/dist/src/format-urls.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* LightClaw — COS URL 格式化
|
|
3
3
|
*
|
|
4
4
|
* 将消息文本中的裸 COS 下载链接自动转换为 Markdown 链接格式:
|
|
5
|
-
* 裸链接: https://lightai.
|
|
6
|
-
* Markdown: [report.pdf](https://lightai.
|
|
5
|
+
* 裸链接: https://lightai.cloud.tencent.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf
|
|
6
|
+
* Markdown: [report.pdf](https://lightai.cloud.tencent.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf)
|
|
7
7
|
*
|
|
8
8
|
* 使用场景:
|
|
9
9
|
* 1. gateway.ts sendReply / sendFiles — 兜底确保最终发出去的消息格式正确
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,YAAY,CAAC;AAsJpB,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiOrE"}
|
package/dist/src/gateway.js
CHANGED
|
@@ -35,65 +35,64 @@ async function resolveApiKeyIdentities(allApiKeys, log) {
|
|
|
35
35
|
const url = `${API_BASE_URL}${API_PATH_USER_CURRENT}`;
|
|
36
36
|
const apiKeyMap = new Map();
|
|
37
37
|
let botClientId = "";
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
38
|
+
// 并发请求所有 key
|
|
39
|
+
const results = await Promise.allSettled(allApiKeys.map(async (key) => {
|
|
40
|
+
const resp = await fetch(url, {
|
|
41
|
+
method: "GET",
|
|
42
|
+
headers: buildAuthHeaders(key),
|
|
43
|
+
});
|
|
44
|
+
if (!resp.ok) {
|
|
45
|
+
const body = await resp.text().catch(() => "");
|
|
46
|
+
throw new Error(`HTTP ${resp.status} ${resp.statusText}${body ? ` — ${body}` : ""}`);
|
|
47
|
+
}
|
|
48
|
+
const result = (await resp.json());
|
|
49
|
+
if (result.code !== 0) {
|
|
50
|
+
throw new Error(`code=${result.code}, message=${result.message ?? "unknown"}`);
|
|
51
|
+
}
|
|
52
|
+
return { key, result };
|
|
53
|
+
}));
|
|
54
|
+
// 按原始顺序处理结果
|
|
55
|
+
for (let i = 0; i < results.length; i++) {
|
|
56
|
+
const key = allApiKeys[i];
|
|
57
|
+
const settled = results[i];
|
|
58
|
+
if (settled.status === "rejected") {
|
|
59
|
+
log?.warn(`[${CHANNEL_KEY}] Failed to resolve uin for apiKey ***${key.slice(-4)}: ${settled.reason}`);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const { result } = settled.value;
|
|
63
|
+
// 提取 uin
|
|
64
|
+
const uin = result.data?.id;
|
|
65
|
+
if (!uin) {
|
|
66
|
+
log?.warn(`[${CHANNEL_KEY}] Missing data.id for apiKey ***${key.slice(-4)}`);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
// 提取 botId(只需从第一个成功的 key 中获取一次)
|
|
70
|
+
if (!botClientId) {
|
|
71
|
+
const extra = result.data?.client?.extra;
|
|
72
|
+
if (!extra) {
|
|
73
|
+
log?.warn(`[${CHANNEL_KEY}] Missing data.client.extra for apiKey ***${key.slice(-4)}`);
|
|
61
74
|
continue;
|
|
62
75
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
apiKeyMap.set(uin, key);
|
|
76
|
+
let parsed;
|
|
77
|
+
try {
|
|
78
|
+
parsed = JSON.parse(extra);
|
|
67
79
|
}
|
|
68
|
-
|
|
69
|
-
log?.warn(`[${CHANNEL_KEY}]
|
|
80
|
+
catch {
|
|
81
|
+
log?.warn(`[${CHANNEL_KEY}] data.client.extra is not valid JSON for apiKey ***${key.slice(-4)}: ${extra}`);
|
|
82
|
+
continue;
|
|
70
83
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (!extra) {
|
|
75
|
-
throw new Error("Invalid response: missing data.client.extra");
|
|
76
|
-
}
|
|
77
|
-
let parsed;
|
|
78
|
-
try {
|
|
79
|
-
parsed = JSON.parse(extra);
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
throw new Error(`Invalid response: data.client.extra is not valid JSON: ${extra}`);
|
|
83
|
-
}
|
|
84
|
-
if (!parsed.botId) {
|
|
85
|
-
throw new Error(`Invalid response: missing botId in data.client.extra: ${extra}`);
|
|
86
|
-
}
|
|
87
|
-
botClientId = parsed.botId;
|
|
84
|
+
if (!parsed.botId) {
|
|
85
|
+
log?.warn(`[${CHANNEL_KEY}] Missing botId in data.client.extra for apiKey ***${key.slice(-4)}: ${extra}`);
|
|
86
|
+
continue;
|
|
88
87
|
}
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
catch (err) {
|
|
92
|
-
// 如果还没拿到 botId,向上抛出
|
|
93
|
-
if (!botClientId)
|
|
94
|
-
throw err;
|
|
95
|
-
log?.warn(`[${CHANNEL_KEY}] Failed to resolve uin for apiKey ***${key.slice(-4)}: ${err}`);
|
|
88
|
+
botClientId = parsed.botId;
|
|
96
89
|
}
|
|
90
|
+
// uin 和 botClientId 都成功获取后,才加入映射
|
|
91
|
+
apiKeyMap.set(uin, key);
|
|
92
|
+
log?.info(`[${CHANNEL_KEY}] Mapped uin=${uin} → apiKey=***${key.slice(-4)}`);
|
|
93
|
+
}
|
|
94
|
+
if (!botClientId) {
|
|
95
|
+
throw new Error(`[${CHANNEL_KEY}] Failed to resolve botClientId from any apiKey`);
|
|
97
96
|
}
|
|
98
97
|
return { botClientId, apiKeyMap };
|
|
99
98
|
}
|
|
@@ -227,11 +226,10 @@ export async function startGateway(ctx) {
|
|
|
227
226
|
};
|
|
228
227
|
activeGateways.set(account.accountId, cleanup);
|
|
229
228
|
// ---- Socket.IO 连接 ----
|
|
230
|
-
|
|
229
|
+
const validApiKeys = [...apiKeyMap.values()];
|
|
230
|
+
log?.info(`[${CHANNEL_KEY}] Connecting to ${WS_URL},apiKey=${account.apiKey},apikeys=${validApiKeys.join(",")}`);
|
|
231
231
|
const socket = io(WS_URL, {
|
|
232
|
-
auth:
|
|
233
|
-
? buildMultiAuthHeaders(allApiKeys)
|
|
234
|
-
: buildAuthHeaders(account.apiKey),
|
|
232
|
+
auth: buildMultiAuthHeaders(validApiKeys),
|
|
235
233
|
path: SOCKET_PATH,
|
|
236
234
|
forceNew: true,
|
|
237
235
|
reconnection: true,
|
package/dist/src/gateway.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,EAAE,EAAe,MAAM,kBAAkB,CAAC;AAOnD,OAAO,EACL,WAAW,EACX,MAAM,EACN,YAAY,EACZ,WAAW,EACX,yBAAyB,EACzB,6BAA6B,EAC7B,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAsB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,+DAA+D;AAC/D,sCAAsC;AACtC,+DAA+D;AAE/D,mCAAmC;AACnC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAC;AA0BrD;;;;;;;GAOG;AACH,KAAK,UAAU,uBAAuB,CACpC,UAAoB,EACpB,GAA2B;IAE3B,MAAM,GAAG,GAAG,GAAG,YAAY,GAAG,qBAAqB,EAAE,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,7 @@ export function bindSocketHandlers(socket, deps) {
|
|
|
77
77
|
chatOnly: data.chatOnly ?? true,
|
|
78
78
|
includeCron: true,
|
|
79
79
|
});
|
|
80
|
-
log?.info(`[${CHANNEL_KEY}] History request: userId=${data.from} sessionKey=${sessionKey} found=${messages.length}
|
|
80
|
+
log?.info(`[${CHANNEL_KEY}] History request: userId=${data.from} sessionKey=${sessionKey} found=${messages.length}`);
|
|
81
81
|
socket.emit(EVENT_HISTORY_RESPONSE, {
|
|
82
82
|
msgId: generateMsgId(),
|
|
83
83
|
from: botClientId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-handlers.js","sourceRoot":"","sources":["../../src/socket-handlers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"socket-handlers.js","sourceRoot":"","sources":["../../src/socket-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-tool.d.ts","sourceRoot":"","sources":["../../src/upload-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,qBAAqB,CAAC;AAS3E,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;CAY5B,CAAC;AAMF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"upload-tool.d.ts","sourceRoot":"","sources":["../../src/upload-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,qBAAqB,CAAC;AAS3E,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;CAY5B,CAAC;AAMF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAqI/D"}
|
package/dist/src/upload-tool.js
CHANGED
|
@@ -45,9 +45,6 @@ export function registerUploadTool(api) {
|
|
|
45
45
|
"Supports up to 5 files at once. Returns a public download URL for each uploaded file.",
|
|
46
46
|
parameters: uploadToolSchema,
|
|
47
47
|
async execute(_toolCallId, params) {
|
|
48
|
-
// 调试日志:打印原始 sessionKey,帮助排查多 key 模式下的 apiKey 选取
|
|
49
|
-
// 使用 warn 级别输出,确保终端可见
|
|
50
|
-
log.warn(`[lightclaw_upload_file] sessionKey="${sessionKey}", accountId="${defaultAccountId}"`);
|
|
51
48
|
// 每次 execute 时动态解析 apiKey(多 key 模式下通过 sessionKey 直接获取)
|
|
52
49
|
const apiKey = resolveEffectiveApiKey({ sessionKey });
|
|
53
50
|
log.warn(`[lightclaw_upload_file] resolved apiKey="${apiKey?.slice(0, 8)}..."`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-tool.js","sourceRoot":"","sources":["../../src/upload-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,+DAA+D;AAC/D,8BAA8B;AAC9B,+DAA+D;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,QAAiB;IACvB,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE,OAAgB;YACtB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;YAClC,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,8BAA8B;SAC5C;KACF;IACD,QAAQ,EAAE,CAAC,OAAO,CAAU;CAC7B,CAAC;AAEF,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAE/D,MAAM,UAAU,kBAAkB,CAAC,GAAsB;IACvD,qCAAqC;IACrC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAEvB,GAAG,CAAC,YAAY,CACd,CAAC,GAAG,EAAE,EAAE;QACN,MAAM,gBAAgB,GAAG,GAAG,CAAC,cAAc,CAAC;QAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAClC,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,WAAW,EACT,gGAAgG;gBAChG,iGAAiG;gBACjG,6FAA6F;gBAC7F,uFAAuF;YACzF,UAAU,EAAE,gBAAgB;YAE5B,KAAK,CAAC,OAAO,CACX,WAAmB,EACnB,MAA2B;gBAE3B,
|
|
1
|
+
{"version":3,"file":"upload-tool.js","sourceRoot":"","sources":["../../src/upload-tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# ========== lightclawbot 插件升级检查脚本 ==========
|
|
4
|
-
# 用途:检查 lightclawbot 插件是否需要升级(只检查,不执行安装)
|
|
5
|
-
# 输出:最后一行固定为 RESULT:{...} JSON,供前端解析
|
|
6
|
-
#
|
|
7
|
-
# 状态说明:
|
|
8
|
-
# - 已是最新: RESULT:{"status":"up_to_date","local":"x.y.z","remote":"x.y.z"}
|
|
9
|
-
# - 需要升级: RESULT:{"status":"update_available","local":"x.y.z","remote":"x.y.z"}
|
|
10
|
-
# - 未安装: RESULT:{"status":"not_installed","remote":"x.y.z"}
|
|
11
|
-
# - 无法检查: RESULT:{"status":"error","error":"...","detail":"..."}
|
|
12
|
-
#
|
|
13
|
-
# 使用方式:
|
|
14
|
-
# 本地执行: bash scripts/check-update.sh
|
|
15
|
-
# CDN 执行: bash <(curl -fsSL https://your-cdn.com/check-update.sh)
|
|
16
|
-
#
|
|
17
|
-
# 环境变量:
|
|
18
|
-
# NPM_REGISTRY — npm 源地址(默认腾讯镜像)
|
|
19
|
-
# TIMEOUT — npm view 超时秒数(默认 10)
|
|
20
|
-
|
|
21
|
-
set -euo pipefail
|
|
22
|
-
|
|
23
|
-
# ========== 配置 ==========
|
|
24
|
-
|
|
25
|
-
NPM_REGISTRY="${NPM_REGISTRY:-https://mirrors.tencent.com/npm/}"
|
|
26
|
-
TIMEOUT="${TIMEOUT:-10}"
|
|
27
|
-
|
|
28
|
-
id="lightclawbot"
|
|
29
|
-
spec="lightclawbot"
|
|
30
|
-
plugin_dir="$HOME/.openclaw/extensions/${id}"
|
|
31
|
-
|
|
32
|
-
# ========== 环境加载 ==========
|
|
33
|
-
|
|
34
|
-
load_env() {
|
|
35
|
-
export NVM_DIR="$HOME/.nvm"
|
|
36
|
-
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
37
|
-
|
|
38
|
-
if [ -z "${PNPM_HOME:-}" ] && [ -d "$HOME/.local/share/pnpm" ]; then
|
|
39
|
-
export PNPM_HOME="$HOME/.local/share/pnpm"
|
|
40
|
-
export PATH="$PNPM_HOME:$PATH"
|
|
41
|
-
fi
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
load_env
|
|
45
|
-
|
|
46
|
-
# ========== 工具函数 ==========
|
|
47
|
-
|
|
48
|
-
# semver 比较:left < right 返回 0,否则返回 1,解析失败返回 2
|
|
49
|
-
version_lt() {
|
|
50
|
-
local left="$1"
|
|
51
|
-
local right="$2"
|
|
52
|
-
VERSION_LEFT="$left" VERSION_RIGHT="$right" node - <<'NODE'
|
|
53
|
-
function parseSemver(value) {
|
|
54
|
-
const match = String(value || "").trim().match(/^(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/);
|
|
55
|
-
if (!match) return null;
|
|
56
|
-
return [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
57
|
-
}
|
|
58
|
-
const left = parseSemver(process.env.VERSION_LEFT);
|
|
59
|
-
const right = parseSemver(process.env.VERSION_RIGHT);
|
|
60
|
-
if (!left || !right) process.exit(2);
|
|
61
|
-
for (let i = 0; i < 3; i++) {
|
|
62
|
-
if (left[i] < right[i]) process.exit(0);
|
|
63
|
-
if (left[i] > right[i]) process.exit(1);
|
|
64
|
-
}
|
|
65
|
-
process.exit(1);
|
|
66
|
-
NODE
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
# ========== 1. 检查前置依赖 ==========
|
|
70
|
-
|
|
71
|
-
if ! command -v npm &>/dev/null; then
|
|
72
|
-
echo "RESULT:{\"status\":\"error\",\"error\":\"missing_dependency\",\"detail\":\"npm not found\"}"
|
|
73
|
-
exit 1
|
|
74
|
-
fi
|
|
75
|
-
|
|
76
|
-
# ========== 2. 获取本地版本 ==========
|
|
77
|
-
|
|
78
|
-
local_version=""
|
|
79
|
-
if [ -d "$plugin_dir" ] && [ -f "$plugin_dir/package.json" ]; then
|
|
80
|
-
if command -v jq &>/dev/null; then
|
|
81
|
-
local_version=$(jq -r '.version // ""' "$plugin_dir/package.json" 2>/dev/null || true)
|
|
82
|
-
elif command -v node &>/dev/null; then
|
|
83
|
-
local_version=$(node -e "
|
|
84
|
-
try {
|
|
85
|
-
const p = require('$plugin_dir/package.json');
|
|
86
|
-
process.stdout.write(p.version || '');
|
|
87
|
-
} catch {}
|
|
88
|
-
" 2>/dev/null || true)
|
|
89
|
-
fi
|
|
90
|
-
fi
|
|
91
|
-
|
|
92
|
-
# ========== 3. 查询远程最新版本 ==========
|
|
93
|
-
|
|
94
|
-
remote_version=""
|
|
95
|
-
|
|
96
|
-
# 尝试腾讯镜像源
|
|
97
|
-
remote_version=$(timeout "$TIMEOUT" npm view "$spec" version --registry "$NPM_REGISTRY" 2>/dev/null || true)
|
|
98
|
-
|
|
99
|
-
# 回退到官方源
|
|
100
|
-
if [ -z "$remote_version" ]; then
|
|
101
|
-
remote_version=$(timeout "$TIMEOUT" npm view "$spec" version --registry https://registry.npmjs.org 2>/dev/null || true)
|
|
102
|
-
fi
|
|
103
|
-
|
|
104
|
-
if [ -z "$remote_version" ]; then
|
|
105
|
-
echo "RESULT:{\"status\":\"error\",\"error\":\"fetch_failed\",\"detail\":\"could not fetch remote version from any registry\"}"
|
|
106
|
-
exit 1
|
|
107
|
-
fi
|
|
108
|
-
|
|
109
|
-
# ========== 4. 比较版本 ==========
|
|
110
|
-
|
|
111
|
-
# 未安装
|
|
112
|
-
if [ -z "$local_version" ]; then
|
|
113
|
-
echo "RESULT:{\"status\":\"not_installed\",\"remote\":\"${remote_version}\"}"
|
|
114
|
-
exit 0
|
|
115
|
-
fi
|
|
116
|
-
|
|
117
|
-
# 版本相同
|
|
118
|
-
if [ "$local_version" = "$remote_version" ]; then
|
|
119
|
-
echo "RESULT:{\"status\":\"up_to_date\",\"local\":\"${local_version}\",\"remote\":\"${remote_version}\"}"
|
|
120
|
-
exit 0
|
|
121
|
-
fi
|
|
122
|
-
|
|
123
|
-
# semver 比较(需要 node)
|
|
124
|
-
if command -v node &>/dev/null; then
|
|
125
|
-
if version_lt "$local_version" "$remote_version"; then
|
|
126
|
-
# local < remote → 需要升级
|
|
127
|
-
echo "RESULT:{\"status\":\"update_available\",\"local\":\"${local_version}\",\"remote\":\"${remote_version}\"}"
|
|
128
|
-
exit 0
|
|
129
|
-
else
|
|
130
|
-
# local >= remote(可能是开发版本或降级场景)
|
|
131
|
-
echo "RESULT:{\"status\":\"up_to_date\",\"local\":\"${local_version}\",\"remote\":\"${remote_version}\"}"
|
|
132
|
-
exit 0
|
|
133
|
-
fi
|
|
134
|
-
fi
|
|
135
|
-
|
|
136
|
-
# 没有 node,只能做字符串不等判断
|
|
137
|
-
echo "RESULT:{\"status\":\"update_available\",\"local\":\"${local_version}\",\"remote\":\"${remote_version}\"}"
|
|
138
|
-
exit 0
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# ========== lightclawbot 插件升级检查脚本 ==========
|
|
4
|
-
# 用途:检查 lightclawbot 插件是否需要升级(只检查,不执行安装)
|
|
5
|
-
# 输出:最后一行固定为 RESULT:{...} JSON,供前端解析
|
|
6
|
-
#
|
|
7
|
-
# 状态说明:
|
|
8
|
-
# - 已是最新: RESULT:{"status":"up_to_date","local":"x.y.z","remote":"x.y.z"}
|
|
9
|
-
# - 需要升级: RESULT:{"status":"update_available","local":"x.y.z","remote":"x.y.z"}
|
|
10
|
-
# - 未安装: RESULT:{"status":"not_installed","remote":"x.y.z"}
|
|
11
|
-
# - 无法检查: RESULT:{"status":"error","error":"...","detail":"..."}
|
|
12
|
-
#
|
|
13
|
-
# 使用方式:
|
|
14
|
-
# 本地执行: bash scripts/check-update.sh
|
|
15
|
-
# CDN 执行: bash <(curl -fsSL https://your-cdn.com/check-update.sh)
|
|
16
|
-
#
|
|
17
|
-
# 环境变量:
|
|
18
|
-
# NPM_REGISTRY — npm 源地址(默认腾讯镜像)
|
|
19
|
-
# TIMEOUT — npm view 超时秒数(默认 10)
|
|
20
|
-
|
|
21
|
-
set -euo pipefail
|
|
22
|
-
|
|
23
|
-
# ========== 配置 ==========
|
|
24
|
-
|
|
25
|
-
NPM_REGISTRY="${NPM_REGISTRY:-https://mirrors.tencent.com/npm/}"
|
|
26
|
-
TIMEOUT="${TIMEOUT:-10}"
|
|
27
|
-
|
|
28
|
-
id="lightclawbot"
|
|
29
|
-
spec="lightclawbot"
|
|
30
|
-
plugin_dir="$HOME/.openclaw/extensions/${id}"
|
|
31
|
-
|
|
32
|
-
# ========== 环境加载 ==========
|
|
33
|
-
|
|
34
|
-
load_env() {
|
|
35
|
-
export NVM_DIR="$HOME/.nvm"
|
|
36
|
-
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
37
|
-
|
|
38
|
-
if [ -z "${PNPM_HOME:-}" ] && [ -d "$HOME/.local/share/pnpm" ]; then
|
|
39
|
-
export PNPM_HOME="$HOME/.local/share/pnpm"
|
|
40
|
-
export PATH="$PNPM_HOME:$PATH"
|
|
41
|
-
fi
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
load_env
|
|
45
|
-
|
|
46
|
-
# ========== 工具函数 ==========
|
|
47
|
-
|
|
48
|
-
# semver 比较:left < right 返回 0,否则返回 1,解析失败返回 2
|
|
49
|
-
version_lt() {
|
|
50
|
-
local left="$1"
|
|
51
|
-
local right="$2"
|
|
52
|
-
VERSION_LEFT="$left" VERSION_RIGHT="$right" node - <<'NODE'
|
|
53
|
-
function parseSemver(value) {
|
|
54
|
-
const match = String(value || "").trim().match(/^(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/);
|
|
55
|
-
if (!match) return null;
|
|
56
|
-
return [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
57
|
-
}
|
|
58
|
-
const left = parseSemver(process.env.VERSION_LEFT);
|
|
59
|
-
const right = parseSemver(process.env.VERSION_RIGHT);
|
|
60
|
-
if (!left || !right) process.exit(2);
|
|
61
|
-
for (let i = 0; i < 3; i++) {
|
|
62
|
-
if (left[i] < right[i]) process.exit(0);
|
|
63
|
-
if (left[i] > right[i]) process.exit(1);
|
|
64
|
-
}
|
|
65
|
-
process.exit(1);
|
|
66
|
-
NODE
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
# ========== 1. 检查前置依赖 ==========
|
|
70
|
-
|
|
71
|
-
if ! command -v npm &>/dev/null; then
|
|
72
|
-
echo "RESULT:{\"status\":\"error\",\"error\":\"missing_dependency\",\"detail\":\"npm not found\"}"
|
|
73
|
-
exit 1
|
|
74
|
-
fi
|
|
75
|
-
|
|
76
|
-
# ========== 2. 获取本地版本 ==========
|
|
77
|
-
|
|
78
|
-
local_version=""
|
|
79
|
-
if [ -d "$plugin_dir" ] && [ -f "$plugin_dir/package.json" ]; then
|
|
80
|
-
if command -v jq &>/dev/null; then
|
|
81
|
-
local_version=$(jq -r '.version // ""' "$plugin_dir/package.json" 2>/dev/null || true)
|
|
82
|
-
elif command -v node &>/dev/null; then
|
|
83
|
-
local_version=$(node -e "
|
|
84
|
-
try {
|
|
85
|
-
const p = require('$plugin_dir/package.json');
|
|
86
|
-
process.stdout.write(p.version || '');
|
|
87
|
-
} catch {}
|
|
88
|
-
" 2>/dev/null || true)
|
|
89
|
-
fi
|
|
90
|
-
fi
|
|
91
|
-
|
|
92
|
-
# ========== 3. 查询远程最新版本 ==========
|
|
93
|
-
|
|
94
|
-
remote_version=""
|
|
95
|
-
|
|
96
|
-
# 尝试腾讯镜像源
|
|
97
|
-
remote_version=$(timeout "$TIMEOUT" npm view "$spec" version --registry "$NPM_REGISTRY" 2>/dev/null || true)
|
|
98
|
-
|
|
99
|
-
# 回退到官方源
|
|
100
|
-
if [ -z "$remote_version" ]; then
|
|
101
|
-
remote_version=$(timeout "$TIMEOUT" npm view "$spec" version --registry https://registry.npmjs.org 2>/dev/null || true)
|
|
102
|
-
fi
|
|
103
|
-
|
|
104
|
-
if [ -z "$remote_version" ]; then
|
|
105
|
-
echo "RESULT:{\"status\":\"error\",\"error\":\"fetch_failed\",\"detail\":\"could not fetch remote version from any registry\"}"
|
|
106
|
-
exit 1
|
|
107
|
-
fi
|
|
108
|
-
|
|
109
|
-
# ========== 4. 比较版本 ==========
|
|
110
|
-
|
|
111
|
-
# 未安装
|
|
112
|
-
if [ -z "$local_version" ]; then
|
|
113
|
-
echo "RESULT:{\"status\":\"not_installed\",\"remote\":\"${remote_version}\"}"
|
|
114
|
-
exit 0
|
|
115
|
-
fi
|
|
116
|
-
|
|
117
|
-
# 版本相同
|
|
118
|
-
if [ "$local_version" = "$remote_version" ]; then
|
|
119
|
-
echo "RESULT:{\"status\":\"up_to_date\",\"local\":\"${local_version}\",\"remote\":\"${remote_version}\"}"
|
|
120
|
-
exit 0
|
|
121
|
-
fi
|
|
122
|
-
|
|
123
|
-
# semver 比较(需要 node)
|
|
124
|
-
if command -v node &>/dev/null; then
|
|
125
|
-
if version_lt "$local_version" "$remote_version"; then
|
|
126
|
-
# local < remote → 需要升级
|
|
127
|
-
echo "RESULT:{\"status\":\"update_available\",\"local\":\"${local_version}\",\"remote\":\"${remote_version}\"}"
|
|
128
|
-
exit 0
|
|
129
|
-
else
|
|
130
|
-
# local >= remote(可能是开发版本或降级场景)
|
|
131
|
-
echo "RESULT:{\"status\":\"up_to_date\",\"local\":\"${local_version}\",\"remote\":\"${remote_version}\"}"
|
|
132
|
-
exit 0
|
|
133
|
-
fi
|
|
134
|
-
fi
|
|
135
|
-
|
|
136
|
-
# 没有 node,只能做字符串不等判断
|
|
137
|
-
echo "RESULT:{\"status\":\"update_available\",\"local\":\"${local_version}\",\"remote\":\"${remote_version}\"}"
|
|
138
|
-
exit 0
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -e
|
|
3
|
-
|
|
4
|
-
# ========== lightclawbot 插件快速安装/升级脚本 ==========
|
|
5
|
-
# 用途:跳过 openclaw plugins install 的慢路径,直接安装/升级 lightclawbot 插件
|
|
6
|
-
# 前提:openclaw 已安装且可用,npm/pnpm/jq 已安装
|
|
7
|
-
# 支持:首次安装 / 重装 / 升级,自动保留已有的 channels 配置
|
|
8
|
-
#
|
|
9
|
-
# 使用方式:
|
|
10
|
-
# 本地执行: bash scripts/upgrade.sh
|
|
11
|
-
# CDN 执行: bash <(curl -fsSL https://your-cdn.com/upgrade.sh)
|
|
12
|
-
# 传入参数: APIKEY="sk-xxx" bash <(curl -fsSL https://your-cdn.com/upgrade.sh)
|
|
13
|
-
|
|
14
|
-
echo "=== lightclawbot Plugin Installer / Upgrader ==="
|
|
15
|
-
|
|
16
|
-
# ========== 配置(支持环境变量覆盖) ==========
|
|
17
|
-
|
|
18
|
-
# npm 源:使用腾讯镜像源(可通过 NPM_REGISTRY 环境变量覆盖)
|
|
19
|
-
NPM_REGISTRY="${NPM_REGISTRY:-https://mirrors.tencent.com/npm/}"
|
|
20
|
-
|
|
21
|
-
# API Key:优先读取环境变量,为空则保留配置文件中已有的值
|
|
22
|
-
# 用法:APIKEY="sk-xxx" bash <(curl -fsSL https://your-cdn.com/upgrade.sh)
|
|
23
|
-
APIKEY="${APIKEY:-}"
|
|
24
|
-
|
|
25
|
-
# ========== 环境加载 ==========
|
|
26
|
-
|
|
27
|
-
load_env() {
|
|
28
|
-
export NVM_DIR="$HOME/.nvm"
|
|
29
|
-
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
30
|
-
|
|
31
|
-
if [ -z "$PNPM_HOME" ] && [ -d "$HOME/.local/share/pnpm" ]; then
|
|
32
|
-
export PNPM_HOME="$HOME/.local/share/pnpm"
|
|
33
|
-
export PATH="$PNPM_HOME:$PATH"
|
|
34
|
-
fi
|
|
35
|
-
|
|
36
|
-
if [ ! -t 1 ]; then
|
|
37
|
-
export CI=true
|
|
38
|
-
fi
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
load_env
|
|
42
|
-
|
|
43
|
-
# 验证前置依赖
|
|
44
|
-
for cmd in npm jq openclaw; do
|
|
45
|
-
if ! command -v "$cmd" &>/dev/null; then
|
|
46
|
-
echo "Error: $cmd not found. Please install it first."
|
|
47
|
-
echo "RESULT:{\"status\":\"error\",\"error\":\"missing_dependency\",\"detail\":\"$cmd not found\"}"
|
|
48
|
-
exit 1
|
|
49
|
-
fi
|
|
50
|
-
done
|
|
51
|
-
|
|
52
|
-
# ========== 安装 / 升级 lightclawbot ==========
|
|
53
|
-
|
|
54
|
-
SCRIPT_START=$SECONDS
|
|
55
|
-
|
|
56
|
-
cfg="$HOME/.openclaw/openclaw.json"
|
|
57
|
-
id="lightclawbot"
|
|
58
|
-
spec="lightclawbot"
|
|
59
|
-
plugin_dir="$HOME/.openclaw/extensions/${id}"
|
|
60
|
-
|
|
61
|
-
# ---------- 检查是否已安装,获取本地版本 ----------
|
|
62
|
-
local_version=""
|
|
63
|
-
if [ -d "$plugin_dir" ] && [ -f "$plugin_dir/package.json" ]; then
|
|
64
|
-
local_version=$(jq -r '.version // ""' "$plugin_dir/package.json")
|
|
65
|
-
fi
|
|
66
|
-
|
|
67
|
-
# ---------- 查询远程最新版本 ----------
|
|
68
|
-
echo "Checking latest version from registry..."
|
|
69
|
-
remote_version=$(npm view "$spec" version --registry "$NPM_REGISTRY" 2>/dev/null || true)
|
|
70
|
-
|
|
71
|
-
if [ -z "$remote_version" ]; then
|
|
72
|
-
echo "Tencent mirror failed, retrying with official registry..."
|
|
73
|
-
remote_version=$(npm view "$spec" version --registry https://registry.npmjs.org 2>/dev/null || true)
|
|
74
|
-
fi
|
|
75
|
-
|
|
76
|
-
if [ -z "$remote_version" ]; then
|
|
77
|
-
echo "Warning: Could not fetch remote version, will proceed with install anyway"
|
|
78
|
-
fi
|
|
79
|
-
|
|
80
|
-
# ---------- 判断安装模式 ----------
|
|
81
|
-
install_mode="install"
|
|
82
|
-
if [ -n "$local_version" ]; then
|
|
83
|
-
if [ -n "$remote_version" ] && [ "$local_version" = "$remote_version" ]; then
|
|
84
|
-
install_mode="up-to-date"
|
|
85
|
-
else
|
|
86
|
-
install_mode="upgrade"
|
|
87
|
-
fi
|
|
88
|
-
fi
|
|
89
|
-
|
|
90
|
-
if [ "$install_mode" = "up-to-date" ]; then
|
|
91
|
-
echo "Plugin $id@$local_version is already up-to-date"
|
|
92
|
-
echo "Checking and updating configuration..."
|
|
93
|
-
# 即使版本一致,也要确保配置正确(后面会更新配置)
|
|
94
|
-
else
|
|
95
|
-
if [ "$install_mode" = "upgrade" ]; then
|
|
96
|
-
echo "Upgrading $id: $local_version -> ${remote_version:-latest}"
|
|
97
|
-
else
|
|
98
|
-
echo "Installing $id for the first time..."
|
|
99
|
-
fi
|
|
100
|
-
|
|
101
|
-
# ---------- 清理旧版本 ----------
|
|
102
|
-
echo "Cleaning up old installation..."
|
|
103
|
-
rm -rf "$plugin_dir"
|
|
104
|
-
|
|
105
|
-
# ---------- npm pack 下载 tgz ----------
|
|
106
|
-
tmp_dir=$(mktemp -d /tmp/openclaw-plugin-XXXXXX)
|
|
107
|
-
echo "Downloading $spec from Tencent mirror..."
|
|
108
|
-
|
|
109
|
-
tgz_file=$(cd "$tmp_dir" && npm pack "$spec" --registry "$NPM_REGISTRY" 2>/dev/null | tail -n1)
|
|
110
|
-
if [ -z "$tgz_file" ] || [ ! -f "$tmp_dir/$tgz_file" ]; then
|
|
111
|
-
echo "Tencent mirror failed, retrying with official registry..."
|
|
112
|
-
tgz_file=$(cd "$tmp_dir" && npm pack "$spec" --registry https://registry.npmjs.org 2>/dev/null | tail -n1)
|
|
113
|
-
fi
|
|
114
|
-
if [ -z "$tgz_file" ] || [ ! -f "$tmp_dir/$tgz_file" ]; then
|
|
115
|
-
echo "Error: failed to download $spec"
|
|
116
|
-
echo "RESULT:{\"status\":\"error\",\"error\":\"download_failed\",\"detail\":\"failed to download $spec\"}"
|
|
117
|
-
rm -rf "$tmp_dir"
|
|
118
|
-
exit 1
|
|
119
|
-
fi
|
|
120
|
-
|
|
121
|
-
# ---------- 解压到插件目录 ----------
|
|
122
|
-
mkdir -p "$plugin_dir"
|
|
123
|
-
tar -xzf "$tmp_dir/$tgz_file" -C "$plugin_dir" --strip-components=1
|
|
124
|
-
rm -rf "$tmp_dir"
|
|
125
|
-
|
|
126
|
-
# ---------- 安装生产依赖 ----------
|
|
127
|
-
# lightclawbot 声明了 bundledDependencies,npm pack 产出的 tgz 已包含所有依赖
|
|
128
|
-
has_unbundled_deps=false
|
|
129
|
-
if jq -e '.dependencies | length > 0' "$plugin_dir/package.json" > /dev/null 2>&1; then
|
|
130
|
-
bundled_count=$(jq -r '.bundledDependencies // .bundleDependencies // [] | length' "$plugin_dir/package.json")
|
|
131
|
-
dep_count=$(jq -r '.dependencies | length' "$plugin_dir/package.json")
|
|
132
|
-
if [ "$bundled_count" -lt "$dep_count" ]; then
|
|
133
|
-
has_unbundled_deps=true
|
|
134
|
-
fi
|
|
135
|
-
fi
|
|
136
|
-
|
|
137
|
-
if [ "$has_unbundled_deps" = true ]; then
|
|
138
|
-
echo "Installing dependencies for $id..."
|
|
139
|
-
(cd "$plugin_dir" && CI=true pnpm install --prod)
|
|
140
|
-
else
|
|
141
|
-
echo "All dependencies bundled for $id, skipping dependency install"
|
|
142
|
-
fi
|
|
143
|
-
fi
|
|
144
|
-
|
|
145
|
-
# ========== 更新配置文件 ==========
|
|
146
|
-
|
|
147
|
-
version=$(jq -r '.version // "unknown"' "$plugin_dir/package.json")
|
|
148
|
-
|
|
149
|
-
if [ -f "$cfg" ]; then
|
|
150
|
-
echo "Updating configuration..."
|
|
151
|
-
|
|
152
|
-
# 1) 基础配置:plugins.entries + plugins.installs
|
|
153
|
-
jq ".plugins.entries.\"${id}\" = {\"enabled\": true} | .plugins.installs.\"${id}\" = {\"source\": \"npm\", \"spec\": \"${spec}\", \"installPath\": \"${plugin_dir}\", \"version\": \"${version}\", \"installedAt\": \"$(date -u +%Y-%m-%dT%H:%M:%S.000Z)\"}" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
154
|
-
|
|
155
|
-
# 2) 确保插件在 allow 白名单中
|
|
156
|
-
if ! jq -e ".plugins.allow // [] | index(\"${id}\")" "$cfg" > /dev/null 2>&1; then
|
|
157
|
-
jq ".plugins.allow = ((.plugins.allow // []) + [\"${id}\"])" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
158
|
-
fi
|
|
159
|
-
|
|
160
|
-
# 3) channel 配置:智能合并,迁移 apiKey -> apiKeys(新版本只需要 apiKeys)
|
|
161
|
-
echo "Updating channel configuration for $id..."
|
|
162
|
-
|
|
163
|
-
# 读取现有的 channel 配置
|
|
164
|
-
existing_apikey=$(jq -r ".channels.\"${id}\".apiKey // \"\"" "$cfg" 2>/dev/null || echo "")
|
|
165
|
-
existing_apikeys=$(jq -c ".channels.\"${id}\".apiKeys // []" "$cfg" 2>/dev/null || echo "[]")
|
|
166
|
-
|
|
167
|
-
# 确保 channel 基础配置存在(enabled=true),并删除旧的 apiKey 字段
|
|
168
|
-
jq ".channels.\"${id}\" = ((.channels.\"${id}\" // {}) + {\"enabled\": true}) | del(.channels.\"${id}\".apiKey)" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
169
|
-
|
|
170
|
-
# 迁移:如果存在旧的 apiKey,将其加入 apiKeys 数组(去重)
|
|
171
|
-
if [ -n "$existing_apikey" ]; then
|
|
172
|
-
apikey_in_array=$(echo "$existing_apikeys" | jq --arg k "$existing_apikey" 'index($k)')
|
|
173
|
-
if [ "$apikey_in_array" = "null" ]; then
|
|
174
|
-
echo "Migrating existing apiKey to apiKeys array..."
|
|
175
|
-
jq --arg k "$existing_apikey" ".channels.\"${id}\".apiKeys = ((.channels.\"${id}\".apiKeys // []) + [\$k])" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
176
|
-
else
|
|
177
|
-
echo "Existing apiKey already in apiKeys array, skipping migration"
|
|
178
|
-
fi
|
|
179
|
-
fi
|
|
180
|
-
|
|
181
|
-
# 如果通过环境变量传入了 APIKEY,确保它在 apiKeys 数组中(去重)
|
|
182
|
-
if [ -n "$APIKEY" ]; then
|
|
183
|
-
apikey_exists=$(jq -r --arg k "$APIKEY" ".channels.\"${id}\".apiKeys // [] | index(\$k)" "$cfg" 2>/dev/null || echo "null")
|
|
184
|
-
if [ "$apikey_exists" = "null" ]; then
|
|
185
|
-
echo "Adding APIKEY to apiKeys array..."
|
|
186
|
-
jq --arg k "$APIKEY" ".channels.\"${id}\".apiKeys = ((.channels.\"${id}\".apiKeys // []) + [\$k])" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
187
|
-
else
|
|
188
|
-
echo "APIKEY already exists in apiKeys array"
|
|
189
|
-
fi
|
|
190
|
-
fi
|
|
191
|
-
|
|
192
|
-
# 确保 apiKeys 字段至少存在(即使为空数组)
|
|
193
|
-
jq ".channels.\"${id}\".apiKeys //= []" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
194
|
-
|
|
195
|
-
echo "Channel configuration updated successfully"
|
|
196
|
-
fi
|
|
197
|
-
|
|
198
|
-
# ========== 重启 Gateway ==========
|
|
199
|
-
|
|
200
|
-
echo "Restarting openclaw gateway..."
|
|
201
|
-
openclaw gateway restart >/dev/null 2>&1 || true
|
|
202
|
-
|
|
203
|
-
elapsed=$((SECONDS - SCRIPT_START))
|
|
204
|
-
echo ""
|
|
205
|
-
if [ "$install_mode" = "up-to-date" ]; then
|
|
206
|
-
echo "=== Plugin $id@$version config refreshed in ${elapsed}s ==="
|
|
207
|
-
elif [ "$install_mode" = "upgrade" ]; then
|
|
208
|
-
echo "=== Plugin $id upgraded to $version in ${elapsed}s ==="
|
|
209
|
-
else
|
|
210
|
-
echo "=== Plugin $id@$version installed in ${elapsed}s ==="
|
|
211
|
-
fi
|
|
212
|
-
|
|
213
|
-
# 结构化结果行,供前端程序解析(固定前缀 RESULT:)
|
|
214
|
-
echo "RESULT:{\"status\":\"success\",\"mode\":\"${install_mode}\",\"version\":\"${version}\",\"elapsed\":${elapsed}}"
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -e
|
|
3
|
-
|
|
4
|
-
# ========== lightclawbot 插件快速安装/升级脚本 ==========
|
|
5
|
-
# 用途:跳过 openclaw plugins install 的慢路径,直接安装/升级 lightclawbot 插件
|
|
6
|
-
# 前提:openclaw 已安装且可用,npm/pnpm/jq 已安装
|
|
7
|
-
# 支持:首次安装 / 重装 / 升级,自动保留已有的 channels 配置
|
|
8
|
-
#
|
|
9
|
-
# 使用方式:
|
|
10
|
-
# 本地执行: bash scripts/upgrade.sh
|
|
11
|
-
# CDN 执行: bash <(curl -fsSL https://your-cdn.com/upgrade.sh)
|
|
12
|
-
# 传入参数: APIKEY="sk-xxx" bash <(curl -fsSL https://your-cdn.com/upgrade.sh)
|
|
13
|
-
|
|
14
|
-
echo "=== lightclawbot Plugin Installer / Upgrader ==="
|
|
15
|
-
|
|
16
|
-
# ========== 配置(支持环境变量覆盖) ==========
|
|
17
|
-
|
|
18
|
-
# npm 源:使用腾讯镜像源(可通过 NPM_REGISTRY 环境变量覆盖)
|
|
19
|
-
NPM_REGISTRY="${NPM_REGISTRY:-https://mirrors.tencent.com/npm/}"
|
|
20
|
-
|
|
21
|
-
# API Key:优先读取环境变量,为空则保留配置文件中已有的值
|
|
22
|
-
# 用法:APIKEY="sk-xxx" bash <(curl -fsSL https://your-cdn.com/upgrade.sh)
|
|
23
|
-
APIKEY="${APIKEY:-}"
|
|
24
|
-
|
|
25
|
-
# ========== 环境加载 ==========
|
|
26
|
-
|
|
27
|
-
load_env() {
|
|
28
|
-
export NVM_DIR="$HOME/.nvm"
|
|
29
|
-
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
30
|
-
|
|
31
|
-
if [ -z "$PNPM_HOME" ] && [ -d "$HOME/.local/share/pnpm" ]; then
|
|
32
|
-
export PNPM_HOME="$HOME/.local/share/pnpm"
|
|
33
|
-
export PATH="$PNPM_HOME:$PATH"
|
|
34
|
-
fi
|
|
35
|
-
|
|
36
|
-
if [ ! -t 1 ]; then
|
|
37
|
-
export CI=true
|
|
38
|
-
fi
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
load_env
|
|
42
|
-
|
|
43
|
-
# 验证前置依赖
|
|
44
|
-
for cmd in npm jq openclaw; do
|
|
45
|
-
if ! command -v "$cmd" &>/dev/null; then
|
|
46
|
-
echo "Error: $cmd not found. Please install it first."
|
|
47
|
-
echo "RESULT:{\"status\":\"error\",\"error\":\"missing_dependency\",\"detail\":\"$cmd not found\"}"
|
|
48
|
-
exit 1
|
|
49
|
-
fi
|
|
50
|
-
done
|
|
51
|
-
|
|
52
|
-
# ========== 安装 / 升级 lightclawbot ==========
|
|
53
|
-
|
|
54
|
-
SCRIPT_START=$SECONDS
|
|
55
|
-
|
|
56
|
-
cfg="$HOME/.openclaw/openclaw.json"
|
|
57
|
-
id="lightclawbot"
|
|
58
|
-
spec="lightclawbot"
|
|
59
|
-
plugin_dir="$HOME/.openclaw/extensions/${id}"
|
|
60
|
-
|
|
61
|
-
# ---------- 检查是否已安装,获取本地版本 ----------
|
|
62
|
-
local_version=""
|
|
63
|
-
if [ -d "$plugin_dir" ] && [ -f "$plugin_dir/package.json" ]; then
|
|
64
|
-
local_version=$(jq -r '.version // ""' "$plugin_dir/package.json")
|
|
65
|
-
fi
|
|
66
|
-
|
|
67
|
-
# ---------- 查询远程最新版本 ----------
|
|
68
|
-
echo "Checking latest version from registry..."
|
|
69
|
-
remote_version=$(npm view "$spec" version --registry "$NPM_REGISTRY" 2>/dev/null || true)
|
|
70
|
-
|
|
71
|
-
if [ -z "$remote_version" ]; then
|
|
72
|
-
echo "Tencent mirror failed, retrying with official registry..."
|
|
73
|
-
remote_version=$(npm view "$spec" version --registry https://registry.npmjs.org 2>/dev/null || true)
|
|
74
|
-
fi
|
|
75
|
-
|
|
76
|
-
if [ -z "$remote_version" ]; then
|
|
77
|
-
echo "Warning: Could not fetch remote version, will proceed with install anyway"
|
|
78
|
-
fi
|
|
79
|
-
|
|
80
|
-
# ---------- 判断安装模式 ----------
|
|
81
|
-
install_mode="install"
|
|
82
|
-
if [ -n "$local_version" ]; then
|
|
83
|
-
if [ -n "$remote_version" ] && [ "$local_version" = "$remote_version" ]; then
|
|
84
|
-
install_mode="up-to-date"
|
|
85
|
-
else
|
|
86
|
-
install_mode="upgrade"
|
|
87
|
-
fi
|
|
88
|
-
fi
|
|
89
|
-
|
|
90
|
-
if [ "$install_mode" = "up-to-date" ]; then
|
|
91
|
-
echo "Plugin $id@$local_version is already up-to-date"
|
|
92
|
-
echo "Checking and updating configuration..."
|
|
93
|
-
# 即使版本一致,也要确保配置正确(后面会更新配置)
|
|
94
|
-
else
|
|
95
|
-
if [ "$install_mode" = "upgrade" ]; then
|
|
96
|
-
echo "Upgrading $id: $local_version -> ${remote_version:-latest}"
|
|
97
|
-
else
|
|
98
|
-
echo "Installing $id for the first time..."
|
|
99
|
-
fi
|
|
100
|
-
|
|
101
|
-
# ---------- 清理旧版本 ----------
|
|
102
|
-
echo "Cleaning up old installation..."
|
|
103
|
-
rm -rf "$plugin_dir"
|
|
104
|
-
|
|
105
|
-
# ---------- npm pack 下载 tgz ----------
|
|
106
|
-
tmp_dir=$(mktemp -d /tmp/openclaw-plugin-XXXXXX)
|
|
107
|
-
echo "Downloading $spec from Tencent mirror..."
|
|
108
|
-
|
|
109
|
-
tgz_file=$(cd "$tmp_dir" && npm pack "$spec" --registry "$NPM_REGISTRY" 2>/dev/null | tail -n1)
|
|
110
|
-
if [ -z "$tgz_file" ] || [ ! -f "$tmp_dir/$tgz_file" ]; then
|
|
111
|
-
echo "Tencent mirror failed, retrying with official registry..."
|
|
112
|
-
tgz_file=$(cd "$tmp_dir" && npm pack "$spec" --registry https://registry.npmjs.org 2>/dev/null | tail -n1)
|
|
113
|
-
fi
|
|
114
|
-
if [ -z "$tgz_file" ] || [ ! -f "$tmp_dir/$tgz_file" ]; then
|
|
115
|
-
echo "Error: failed to download $spec"
|
|
116
|
-
echo "RESULT:{\"status\":\"error\",\"error\":\"download_failed\",\"detail\":\"failed to download $spec\"}"
|
|
117
|
-
rm -rf "$tmp_dir"
|
|
118
|
-
exit 1
|
|
119
|
-
fi
|
|
120
|
-
|
|
121
|
-
# ---------- 解压到插件目录 ----------
|
|
122
|
-
mkdir -p "$plugin_dir"
|
|
123
|
-
tar -xzf "$tmp_dir/$tgz_file" -C "$plugin_dir" --strip-components=1
|
|
124
|
-
rm -rf "$tmp_dir"
|
|
125
|
-
|
|
126
|
-
# ---------- 安装生产依赖 ----------
|
|
127
|
-
# lightclawbot 声明了 bundledDependencies,npm pack 产出的 tgz 已包含所有依赖
|
|
128
|
-
has_unbundled_deps=false
|
|
129
|
-
if jq -e '.dependencies | length > 0' "$plugin_dir/package.json" > /dev/null 2>&1; then
|
|
130
|
-
bundled_count=$(jq -r '.bundledDependencies // .bundleDependencies // [] | length' "$plugin_dir/package.json")
|
|
131
|
-
dep_count=$(jq -r '.dependencies | length' "$plugin_dir/package.json")
|
|
132
|
-
if [ "$bundled_count" -lt "$dep_count" ]; then
|
|
133
|
-
has_unbundled_deps=true
|
|
134
|
-
fi
|
|
135
|
-
fi
|
|
136
|
-
|
|
137
|
-
if [ "$has_unbundled_deps" = true ]; then
|
|
138
|
-
echo "Installing dependencies for $id..."
|
|
139
|
-
(cd "$plugin_dir" && CI=true pnpm install --prod)
|
|
140
|
-
else
|
|
141
|
-
echo "All dependencies bundled for $id, skipping dependency install"
|
|
142
|
-
fi
|
|
143
|
-
fi
|
|
144
|
-
|
|
145
|
-
# ========== 更新配置文件 ==========
|
|
146
|
-
|
|
147
|
-
version=$(jq -r '.version // "unknown"' "$plugin_dir/package.json")
|
|
148
|
-
|
|
149
|
-
if [ -f "$cfg" ]; then
|
|
150
|
-
echo "Updating configuration..."
|
|
151
|
-
|
|
152
|
-
# 1) 基础配置:plugins.entries + plugins.installs
|
|
153
|
-
jq ".plugins.entries.\"${id}\" = {\"enabled\": true} | .plugins.installs.\"${id}\" = {\"source\": \"npm\", \"spec\": \"${spec}\", \"installPath\": \"${plugin_dir}\", \"version\": \"${version}\", \"installedAt\": \"$(date -u +%Y-%m-%dT%H:%M:%S.000Z)\"}" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
154
|
-
|
|
155
|
-
# 2) 确保插件在 allow 白名单中
|
|
156
|
-
if ! jq -e ".plugins.allow // [] | index(\"${id}\")" "$cfg" > /dev/null 2>&1; then
|
|
157
|
-
jq ".plugins.allow = ((.plugins.allow // []) + [\"${id}\"])" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
158
|
-
fi
|
|
159
|
-
|
|
160
|
-
# 3) channel 配置:智能合并,迁移 apiKey -> apiKeys(新版本只需要 apiKeys)
|
|
161
|
-
echo "Updating channel configuration for $id..."
|
|
162
|
-
|
|
163
|
-
# 读取现有的 channel 配置
|
|
164
|
-
existing_apikey=$(jq -r ".channels.\"${id}\".apiKey // \"\"" "$cfg" 2>/dev/null || echo "")
|
|
165
|
-
existing_apikeys=$(jq -c ".channels.\"${id}\".apiKeys // []" "$cfg" 2>/dev/null || echo "[]")
|
|
166
|
-
|
|
167
|
-
# 确保 channel 基础配置存在(enabled=true),并删除旧的 apiKey 字段
|
|
168
|
-
jq ".channels.\"${id}\" = ((.channels.\"${id}\" // {}) + {\"enabled\": true}) | del(.channels.\"${id}\".apiKey)" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
169
|
-
|
|
170
|
-
# 迁移:如果存在旧的 apiKey,将其加入 apiKeys 数组(去重)
|
|
171
|
-
if [ -n "$existing_apikey" ]; then
|
|
172
|
-
apikey_in_array=$(echo "$existing_apikeys" | jq --arg k "$existing_apikey" 'index($k)')
|
|
173
|
-
if [ "$apikey_in_array" = "null" ]; then
|
|
174
|
-
echo "Migrating existing apiKey to apiKeys array..."
|
|
175
|
-
jq --arg k "$existing_apikey" ".channels.\"${id}\".apiKeys = ((.channels.\"${id}\".apiKeys // []) + [\$k])" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
176
|
-
else
|
|
177
|
-
echo "Existing apiKey already in apiKeys array, skipping migration"
|
|
178
|
-
fi
|
|
179
|
-
fi
|
|
180
|
-
|
|
181
|
-
# 如果通过环境变量传入了 APIKEY,确保它在 apiKeys 数组中(去重)
|
|
182
|
-
if [ -n "$APIKEY" ]; then
|
|
183
|
-
apikey_exists=$(jq -r --arg k "$APIKEY" ".channels.\"${id}\".apiKeys // [] | index(\$k)" "$cfg" 2>/dev/null || echo "null")
|
|
184
|
-
if [ "$apikey_exists" = "null" ]; then
|
|
185
|
-
echo "Adding APIKEY to apiKeys array..."
|
|
186
|
-
jq --arg k "$APIKEY" ".channels.\"${id}\".apiKeys = ((.channels.\"${id}\".apiKeys // []) + [\$k])" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
187
|
-
else
|
|
188
|
-
echo "APIKEY already exists in apiKeys array"
|
|
189
|
-
fi
|
|
190
|
-
fi
|
|
191
|
-
|
|
192
|
-
# 确保 apiKeys 字段至少存在(即使为空数组)
|
|
193
|
-
jq ".channels.\"${id}\".apiKeys //= []" "$cfg" > "$cfg.tmp" && mv "$cfg.tmp" "$cfg"
|
|
194
|
-
|
|
195
|
-
echo "Channel configuration updated successfully"
|
|
196
|
-
fi
|
|
197
|
-
|
|
198
|
-
# ========== 重启 Gateway ==========
|
|
199
|
-
|
|
200
|
-
echo "Restarting openclaw gateway..."
|
|
201
|
-
openclaw gateway restart >/dev/null 2>&1 || true
|
|
202
|
-
|
|
203
|
-
elapsed=$((SECONDS - SCRIPT_START))
|
|
204
|
-
echo ""
|
|
205
|
-
if [ "$install_mode" = "up-to-date" ]; then
|
|
206
|
-
echo "=== Plugin $id@$version config refreshed in ${elapsed}s ==="
|
|
207
|
-
elif [ "$install_mode" = "upgrade" ]; then
|
|
208
|
-
echo "=== Plugin $id upgraded to $version in ${elapsed}s ==="
|
|
209
|
-
else
|
|
210
|
-
echo "=== Plugin $id@$version installed in ${elapsed}s ==="
|
|
211
|
-
fi
|
|
212
|
-
|
|
213
|
-
# 结构化结果行,供前端程序解析(固定前缀 RESULT:)
|
|
214
|
-
echo "RESULT:{\"status\":\"success\",\"mode\":\"${install_mode}\",\"version\":\"${version}\",\"elapsed\":${elapsed}}"
|