@openclaw/qqbot 2026.5.31-beta.3 → 2026.5.31-beta.4
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/api.js +6 -6
- package/dist/{channel-DsUMS0Az.js → channel-CELcXJfZ.js} +5 -5
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.setup-_OAH-xmU.js → channel.setup-xBlmSU4X.js} +1 -1
- package/dist/{config-schema-Bc-ArbIT.js → config-schema-BI7AYP6Q.js} +2 -2
- package/dist/{gateway-Bx-wZKqQ.js → gateway-Do-IrU8a.js} +39 -31
- package/dist/{handler-runtime-TwO5-5cH.js → handler-runtime-Blcp6PTS.js} +3 -3
- package/dist/{outbound-CgW0-dMd.js → outbound-BNWSEG_7.js} +2 -2
- package/dist/{request-context-DNbuU0Co.js → request-context-CDEdBceh.js} +2 -2
- package/dist/{runtime-DDu_1bny.js → runtime-CwW75z2d.js} +7 -3
- package/dist/runtime-api.js +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/npm-shrinkwrap.json +3 -3
- package/package.json +4 -4
package/dist/api.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { C as getMessageReplyStats, D as setOutboundAudioPort, E as OUTBOUND_ERROR_CODES, S as getMessageReplyConfig, T as DEFAULT_MEDIA_SEND_ERROR, _ as sendVideoMsg, a as sendText, b as MESSAGE_REPLY_LIMIT, f as buildMediaTarget, g as sendPhoto, h as sendDocument, i as sendProactiveMessage, m as resolveOutboundMediaPath, n as sendCronMessage, p as parseTarget, r as sendMedia, v as sendVoice, w as recordMessageReply, x as checkMessageReplyLimit, y as resolveUserFacingMediaError } from "./outbound-
|
|
2
|
-
import { c as listQQBotAccountIds, l as resolveDefaultQQBotAccountId, o as DEFAULT_ACCOUNT_ID, s as applyQQBotAccountConfig, u as resolveQQBotAccount } from "./config-schema-
|
|
3
|
-
import { t as qqbotPlugin } from "./channel-
|
|
4
|
-
import { C as debugError, l as getAccessToken, w as debugLog, z as formatErrorMessage } from "./runtime-
|
|
5
|
-
import { t as qqbotSetupPlugin } from "./channel.setup-
|
|
6
|
-
import { r as getFrameworkCommands, t as getRequestContext } from "./request-context-
|
|
1
|
+
import { C as getMessageReplyStats, D as setOutboundAudioPort, E as OUTBOUND_ERROR_CODES, S as getMessageReplyConfig, T as DEFAULT_MEDIA_SEND_ERROR, _ as sendVideoMsg, a as sendText, b as MESSAGE_REPLY_LIMIT, f as buildMediaTarget, g as sendPhoto, h as sendDocument, i as sendProactiveMessage, m as resolveOutboundMediaPath, n as sendCronMessage, p as parseTarget, r as sendMedia, v as sendVoice, w as recordMessageReply, x as checkMessageReplyLimit, y as resolveUserFacingMediaError } from "./outbound-BNWSEG_7.js";
|
|
2
|
+
import { c as listQQBotAccountIds, l as resolveDefaultQQBotAccountId, o as DEFAULT_ACCOUNT_ID, s as applyQQBotAccountConfig, u as resolveQQBotAccount } from "./config-schema-BI7AYP6Q.js";
|
|
3
|
+
import { t as qqbotPlugin } from "./channel-CELcXJfZ.js";
|
|
4
|
+
import { C as debugError, l as getAccessToken, w as debugLog, z as formatErrorMessage } from "./runtime-CwW75z2d.js";
|
|
5
|
+
import { t as qqbotSetupPlugin } from "./channel.setup-xBlmSU4X.js";
|
|
6
|
+
import { r as getFrameworkCommands, t as getRequestContext } from "./request-context-CDEdBceh.js";
|
|
7
7
|
import { resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
|
|
8
8
|
import { callGatewayTool } from "openclaw/plugin-sdk/agent-harness-runtime";
|
|
9
9
|
//#region extensions/qqbot/src/engine/tools/channel-api.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as getPlatformAdapter, t as asOptionalObjectRecord } from "./string-normalize-R_0cKO7Q.js";
|
|
2
|
-
import { a as qqbotSetupAdapterShared, c as listQQBotAccountIds, i as qqbotMeta, m as getBridgeLogger, n as qqbotSetupWizard, o as DEFAULT_ACCOUNT_ID$1, p as ensurePlatformAdapter, r as qqbotConfigAdapter, s as applyQQBotAccountConfig, t as qqbotChannelConfigSchema, u as resolveQQBotAccount } from "./config-schema-
|
|
3
|
-
import { T as debugWarn, t as getQQBotRuntime, w as debugLog, z as formatErrorMessage } from "./runtime-
|
|
2
|
+
import { a as qqbotSetupAdapterShared, c as listQQBotAccountIds, i as qqbotMeta, m as getBridgeLogger, n as qqbotSetupWizard, o as DEFAULT_ACCOUNT_ID$1, p as ensurePlatformAdapter, r as qqbotConfigAdapter, s as applyQQBotAccountConfig, t as qqbotChannelConfigSchema, u as resolveQQBotAccount } from "./config-schema-BI7AYP6Q.js";
|
|
3
|
+
import { T as debugWarn, t as getQQBotRuntime, w as debugLog, z as formatErrorMessage } from "./runtime-CwW75z2d.js";
|
|
4
4
|
import { getExecApprovalReplyMetadata } from "openclaw/plugin-sdk/approval-runtime";
|
|
5
5
|
import { createMessageReceiptFromOutboundResults, defineChannelMessageAdapter } from "openclaw/plugin-sdk/channel-outbound";
|
|
6
6
|
import { createChannelApprovalCapability } from "openclaw/plugin-sdk/approval-delivery-runtime";
|
|
@@ -374,7 +374,7 @@ function createQQBotApprovalCapability() {
|
|
|
374
374
|
},
|
|
375
375
|
load: async () => {
|
|
376
376
|
ensurePlatformAdapter();
|
|
377
|
-
return (await import("./handler-runtime-
|
|
377
|
+
return (await import("./handler-runtime-Blcp6PTS.js")).qqbotApprovalNativeRuntime;
|
|
378
378
|
}
|
|
379
379
|
})
|
|
380
380
|
});
|
|
@@ -868,12 +868,12 @@ function looksLikeQQBotTarget(id) {
|
|
|
868
868
|
//#region extensions/qqbot/src/channel.ts
|
|
869
869
|
let gatewayModulePromise;
|
|
870
870
|
function loadGatewayModule() {
|
|
871
|
-
gatewayModulePromise ??= import("./gateway-
|
|
871
|
+
gatewayModulePromise ??= import("./gateway-Do-IrU8a.js");
|
|
872
872
|
return gatewayModulePromise;
|
|
873
873
|
}
|
|
874
874
|
let outboundMessagingModulePromise;
|
|
875
875
|
function loadOutboundMessagingModule() {
|
|
876
|
-
outboundMessagingModulePromise ??= import("./outbound-
|
|
876
|
+
outboundMessagingModulePromise ??= import("./outbound-BNWSEG_7.js").then((n) => n.t);
|
|
877
877
|
return outboundMessagingModulePromise;
|
|
878
878
|
}
|
|
879
879
|
function createQQBotSendReceipt(params) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as qqbotPlugin } from "./channel-
|
|
1
|
+
import { t as qqbotPlugin } from "./channel-CELcXJfZ.js";
|
|
2
2
|
export { qqbotPlugin };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as qqbotSetupAdapterShared, i as qqbotMeta, n as qqbotSetupWizard, r as qqbotConfigAdapter, t as qqbotChannelConfigSchema } from "./config-schema-
|
|
1
|
+
import { a as qqbotSetupAdapterShared, i as qqbotMeta, n as qqbotSetupWizard, r as qqbotConfigAdapter, t as qqbotChannelConfigSchema } from "./config-schema-BI7AYP6Q.js";
|
|
2
2
|
//#region extensions/qqbot/src/channel.setup.ts
|
|
3
3
|
/**
|
|
4
4
|
* Setup-only QQBot plugin — lightweight subset used during `openclaw onboard`
|
|
@@ -198,8 +198,8 @@ function resolveDefaultAccountId(cfg) {
|
|
|
198
198
|
function resolveAccountBase(cfg, accountId) {
|
|
199
199
|
const resolvedAccountId = accountId ?? resolveDefaultAccountId(cfg);
|
|
200
200
|
const qqbot = readQQBotSection(cfg);
|
|
201
|
-
let accountConfig
|
|
202
|
-
let appId
|
|
201
|
+
let accountConfig;
|
|
202
|
+
let appId;
|
|
203
203
|
if (resolvedAccountId === "default") {
|
|
204
204
|
accountConfig = normalizeAccountConfig(asOptionalObjectRecord(qqbot));
|
|
205
205
|
appId = normalizeAppId(qqbot?.appId);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { D as setOutboundAudioPort, T as DEFAULT_MEDIA_SEND_ERROR, _ as sendVideoMsg, c as isCronReminderPayload, d as normalizeMediaTags, g as sendPhoto, h as sendDocument, l as isMediaPayload, o as decodeMediaPath, r as sendMedia, s as encodePayloadForCron, u as parseQQBotPayload, v as sendVoice, y as resolveUserFacingMediaError } from "./outbound-
|
|
1
|
+
import { D as setOutboundAudioPort, T as DEFAULT_MEDIA_SEND_ERROR, _ as sendVideoMsg, c as isCronReminderPayload, d as normalizeMediaTags, g as sendPhoto, h as sendDocument, l as isMediaPayload, o as decodeMediaPath, r as sendMedia, s as encodePayloadForCron, u as parseQQBotPayload, v as sendVoice, y as resolveUserFacingMediaError } from "./outbound-BNWSEG_7.js";
|
|
2
2
|
import { c as getPlatformAdapter, i as normalizeOptionalString$1, n as normalizeLowercaseStringOrEmpty$1, o as readStringField, s as sanitizeFileName, t as asOptionalObjectRecord } from "./string-normalize-R_0cKO7Q.js";
|
|
3
|
-
import { f as resolveAccountBase, h as setBridgeLogger, p as ensurePlatformAdapter } from "./config-schema-
|
|
4
|
-
import { C as parseApprovalButtonData, a as getQQBotDataDir, d as isWindows, f as normalizePath, h as authorizeQQBotApprovalAction, i as getHomeDir, l as getTempDir, m as toGatewayAccount, o as getQQBotDataPath, p as resolveQQBotPayloadLocalFilePath, r as checkSilkWasmAvailable, s as getQQBotMediaDir, u as isLocalPath } from "./channel-
|
|
5
|
-
import { B as StreamContentType, C as debugError, D as getNextMsgSeq, F as getImageMimeType, H as StreamInputState, I as getMaxUploadSize, N as formatFileSize, R as formatDuration, S as withTokenRetry, T as debugWarn, V as StreamInputMode, _ as sendInputNotify, a as acknowledgeInteraction, b as startBackgroundTokenRefresh, c as createRawInputNotifyFn, d as getMessageApi, f as getPluginUserAgent, g as registerAccount, h as onMessageSent, i as accountToCreds, j as downloadFile, k as openLocalFile, l as getAccessToken, m as initSender, n as getQQBotRuntimeForEngine, o as buildDeliveryTarget, p as initApiConfig, s as clearTokenCache, t as getQQBotRuntime, u as getGatewayUrl, v as sendMedia$1, w as debugLog, x as stopBackgroundTokenRefresh, y as sendText, z as formatErrorMessage } from "./runtime-
|
|
6
|
-
import { a as getPluginVersion, i as getFrameworkVersion, n as runWithRequestContext, o as initCommands, s as matchSlashCommand } from "./request-context-
|
|
3
|
+
import { f as resolveAccountBase, h as setBridgeLogger, p as ensurePlatformAdapter } from "./config-schema-BI7AYP6Q.js";
|
|
4
|
+
import { C as parseApprovalButtonData, a as getQQBotDataDir, d as isWindows, f as normalizePath, h as authorizeQQBotApprovalAction, i as getHomeDir, l as getTempDir, m as toGatewayAccount, o as getQQBotDataPath, p as resolveQQBotPayloadLocalFilePath, r as checkSilkWasmAvailable, s as getQQBotMediaDir, u as isLocalPath } from "./channel-CELcXJfZ.js";
|
|
5
|
+
import { B as StreamContentType, C as debugError, D as getNextMsgSeq, F as getImageMimeType, H as StreamInputState, I as getMaxUploadSize, N as formatFileSize, R as formatDuration, S as withTokenRetry, T as debugWarn, V as StreamInputMode, _ as sendInputNotify, a as acknowledgeInteraction, b as startBackgroundTokenRefresh, c as createRawInputNotifyFn, d as getMessageApi, f as getPluginUserAgent, g as registerAccount, h as onMessageSent, i as accountToCreds, j as downloadFile, k as openLocalFile, l as getAccessToken, m as initSender, n as getQQBotRuntimeForEngine, o as buildDeliveryTarget, p as initApiConfig, s as clearTokenCache, t as getQQBotRuntime, u as getGatewayUrl, v as sendMedia$1, w as debugLog, x as stopBackgroundTokenRefresh, y as sendText, z as formatErrorMessage } from "./runtime-CwW75z2d.js";
|
|
6
|
+
import { a as getPluginVersion, i as getFrameworkVersion, n as runWithRequestContext, o as initCommands, s as matchSlashCommand } from "./request-context-CDEdBceh.js";
|
|
7
7
|
import { asBoolean, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
8
8
|
import { isImplicitSameChatApprovalAuthorization } from "openclaw/plugin-sdk/approval-auth-runtime";
|
|
9
9
|
import * as fs$1 from "node:fs";
|
|
@@ -1367,7 +1367,7 @@ function createMessageQueue(ctx) {
|
|
|
1367
1367
|
};
|
|
1368
1368
|
const executeImmediate = (msg) => {
|
|
1369
1369
|
if (handleMessageFnRef) handleMessageFnRef(msg).catch((err) => {
|
|
1370
|
-
log?.error(`Immediate execution error: ${err}`);
|
|
1370
|
+
log?.error(`Immediate execution error: ${formatErrorMessage(err)}`);
|
|
1371
1371
|
});
|
|
1372
1372
|
};
|
|
1373
1373
|
return {
|
|
@@ -1661,7 +1661,7 @@ var GatewayConnection = class {
|
|
|
1661
1661
|
this.msgQueue.startProcessor(this.ctx.handleMessage);
|
|
1662
1662
|
startBackgroundTokenRefresh(account.appId, account.clientSecret, { log });
|
|
1663
1663
|
});
|
|
1664
|
-
ws.on("message",
|
|
1664
|
+
ws.on("message", (data) => {
|
|
1665
1665
|
try {
|
|
1666
1666
|
const rawData = decodeGatewayMessageData(data);
|
|
1667
1667
|
const { op, d, s, t } = JSON.parse(rawData);
|
|
@@ -3595,13 +3595,15 @@ async function sendVoiceWithTimeout(target, voicePath, account, mediaSender, log
|
|
|
3595
3595
|
};
|
|
3596
3596
|
}
|
|
3597
3597
|
return r;
|
|
3598
|
-
}), new Promise((resolve) =>
|
|
3599
|
-
|
|
3600
|
-
|
|
3601
|
-
|
|
3602
|
-
|
|
3603
|
-
|
|
3604
|
-
|
|
3598
|
+
}), new Promise((resolve) => {
|
|
3599
|
+
setTimeout(() => {
|
|
3600
|
+
ac.abort();
|
|
3601
|
+
resolve({
|
|
3602
|
+
channel: "qqbot",
|
|
3603
|
+
error: "Voice send timed out and was skipped"
|
|
3604
|
+
});
|
|
3605
|
+
}, voiceTimeout);
|
|
3606
|
+
})]);
|
|
3605
3607
|
if (result.error) log?.error(`sendVoice error: ${result.error}`);
|
|
3606
3608
|
} catch (err) {
|
|
3607
3609
|
log?.error(`sendVoice unexpected error: ${formatErrorMessage(err)}`);
|
|
@@ -4393,10 +4395,12 @@ async function executeSendQueue(queue, ctx, options = {}) {
|
|
|
4393
4395
|
const transcodeEnabled = account.config?.audioFormatPolicy?.transcodeEnabled !== false;
|
|
4394
4396
|
const voiceTimeout = 45e3;
|
|
4395
4397
|
try {
|
|
4396
|
-
const result = await Promise.race([sendVoice(mediaTarget, item.content, uploadFormats, transcodeEnabled), new Promise((resolve) =>
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4398
|
+
const result = await Promise.race([sendVoice(mediaTarget, item.content, uploadFormats, transcodeEnabled), new Promise((resolve) => {
|
|
4399
|
+
setTimeout(() => resolve({
|
|
4400
|
+
channel: "qqbot",
|
|
4401
|
+
error: "语音发送超时,已跳过"
|
|
4402
|
+
}), voiceTimeout);
|
|
4403
|
+
})]);
|
|
4400
4404
|
if (result.error) {
|
|
4401
4405
|
log?.error(`${prefix} sendVoice error: ${result.error}`);
|
|
4402
4406
|
await sendFallbackText(resolveUserFacingMediaError(result));
|
|
@@ -4623,7 +4627,9 @@ var FlushController = class {
|
|
|
4623
4627
|
/** 等待当前进行中的 flush 完成 */
|
|
4624
4628
|
waitForFlush() {
|
|
4625
4629
|
if (!this.flushInProgress) return Promise.resolve();
|
|
4626
|
-
return new Promise((resolve) =>
|
|
4630
|
+
return new Promise((resolve) => {
|
|
4631
|
+
this.flushResolvers.push(resolve);
|
|
4632
|
+
});
|
|
4627
4633
|
}
|
|
4628
4634
|
/** 取消所有 pending timer + 等待正在执行的 flush 完成,确保 flush 活动彻底停止 */
|
|
4629
4635
|
async cancelPendingAndWait() {
|
|
@@ -5480,7 +5486,9 @@ async function waitForFile(filePath, timeoutMs = 3e4, pollMs = 500) {
|
|
|
5480
5486
|
return 0;
|
|
5481
5487
|
}
|
|
5482
5488
|
}
|
|
5483
|
-
await new Promise((r) =>
|
|
5489
|
+
await new Promise((r) => {
|
|
5490
|
+
setTimeout(r, pollMs);
|
|
5491
|
+
});
|
|
5484
5492
|
}
|
|
5485
5493
|
try {
|
|
5486
5494
|
const finalStat = fs$1.statSync(filePath);
|
|
@@ -5755,13 +5763,15 @@ async function dispatchOutbound(inbound, deps) {
|
|
|
5755
5763
|
error: "suppressed"
|
|
5756
5764
|
};
|
|
5757
5765
|
return r;
|
|
5758
|
-
}), new Promise((resolve) =>
|
|
5759
|
-
|
|
5760
|
-
|
|
5761
|
-
|
|
5762
|
-
|
|
5763
|
-
|
|
5764
|
-
|
|
5766
|
+
}), new Promise((resolve) => {
|
|
5767
|
+
setTimeout(() => {
|
|
5768
|
+
ac.abort();
|
|
5769
|
+
resolve({
|
|
5770
|
+
channel: "qqbot",
|
|
5771
|
+
error: "timeout"
|
|
5772
|
+
});
|
|
5773
|
+
}, TOOL_MEDIA_SEND_TIMEOUT);
|
|
5774
|
+
})]);
|
|
5765
5775
|
if (result.error) log?.error(`Tool fallback error: ${result.error}`);
|
|
5766
5776
|
} catch (err) {
|
|
5767
5777
|
log?.error(`Tool fallback failed: ${String(err)}`);
|
|
@@ -5779,12 +5789,10 @@ async function dispatchOutbound(inbound, deps) {
|
|
|
5779
5789
|
clearTimeout(toolOnlyTimeoutId);
|
|
5780
5790
|
toolRenewalCount++;
|
|
5781
5791
|
}
|
|
5782
|
-
toolOnlyTimeoutId = setTimeout(
|
|
5792
|
+
toolOnlyTimeoutId = setTimeout(() => {
|
|
5783
5793
|
if (!hasBlockResponse && !toolFallbackSent) {
|
|
5784
5794
|
toolFallbackSent = true;
|
|
5785
|
-
|
|
5786
|
-
await sendToolFallback();
|
|
5787
|
-
} catch {}
|
|
5795
|
+
sendToolFallback().catch(() => {});
|
|
5788
5796
|
}
|
|
5789
5797
|
}, TOOL_ONLY_TIMEOUT);
|
|
5790
5798
|
return true;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { m as getBridgeLogger, p as ensurePlatformAdapter, u as resolveQQBotAccount } from "./config-schema-
|
|
2
|
-
import { S as buildPluginApprovalText, _ as matchesQQBotApprovalAccount, b as buildApprovalKeyboard, g as isQQBotExecApprovalClientEnabled, v as resolveQQBotExecApprovalConfig, w as resolveApprovalTarget, x as buildExecApprovalText, y as shouldHandleQQBotExecApprovalRequest } from "./channel-
|
|
3
|
-
import { d as getMessageApi, i as accountToCreds } from "./runtime-
|
|
1
|
+
import { m as getBridgeLogger, p as ensurePlatformAdapter, u as resolveQQBotAccount } from "./config-schema-BI7AYP6Q.js";
|
|
2
|
+
import { S as buildPluginApprovalText, _ as matchesQQBotApprovalAccount, b as buildApprovalKeyboard, g as isQQBotExecApprovalClientEnabled, v as resolveQQBotExecApprovalConfig, w as resolveApprovalTarget, x as buildExecApprovalText, y as shouldHandleQQBotExecApprovalRequest } from "./channel-CELcXJfZ.js";
|
|
3
|
+
import { d as getMessageApi, i as accountToCreds } from "./runtime-CwW75z2d.js";
|
|
4
4
|
import { resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
5
5
|
import { createChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-runtime";
|
|
6
6
|
//#region extensions/qqbot/src/bridge/approval/handler-runtime.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as normalizeOptionalString, n as normalizeLowercaseStringOrEmpty, s as sanitizeFileName } from "./string-normalize-R_0cKO7Q.js";
|
|
2
|
-
import { a as getQQBotDataDir, f as normalizePath$1, n as parseTarget$1, p as resolveQQBotPayloadLocalFilePath, s as getQQBotMediaDir, u as isLocalPath } from "./channel-
|
|
3
|
-
import { A as checkFileSize, C as debugError, E as UploadDailyLimitExceededError, F as getImageMimeType, I as getMaxUploadSize, L as readFileAsync, M as fileExistsAsync, N as formatFileSize, O as UPLOAD_PREPARE_FALLBACK_CODE, P as getFileTypeName, T as debugWarn, i as accountToCreds, j as downloadFile, p as initApiConfig, v as sendMedia$1, w as debugLog, y as sendText$1, z as formatErrorMessage } from "./runtime-
|
|
2
|
+
import { a as getQQBotDataDir, f as normalizePath$1, n as parseTarget$1, p as resolveQQBotPayloadLocalFilePath, s as getQQBotMediaDir, u as isLocalPath } from "./channel-CELcXJfZ.js";
|
|
3
|
+
import { A as checkFileSize, C as debugError, E as UploadDailyLimitExceededError, F as getImageMimeType, I as getMaxUploadSize, L as readFileAsync, M as fileExistsAsync, N as formatFileSize, O as UPLOAD_PREPARE_FALLBACK_CODE, P as getFileTypeName, T as debugWarn, i as accountToCreds, j as downloadFile, p as initApiConfig, v as sendMedia$1, w as debugLog, y as sendText$1, z as formatErrorMessage } from "./runtime-CwW75z2d.js";
|
|
4
4
|
import { pathExistsSync, resolveLocalPathFromRootsSync } from "openclaw/plugin-sdk/security-runtime";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { getFileExtension } from "openclaw/plugin-sdk/media-mime";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as getQQBotDataDir, c as getQQBotMediaPath, d as isWindows, i as getHomeDir } from "./channel-
|
|
2
|
-
import { w as debugLog } from "./runtime-
|
|
1
|
+
import { a as getQQBotDataDir, c as getQQBotMediaPath, d as isWindows, i as getHomeDir } from "./channel-CELcXJfZ.js";
|
|
2
|
+
import { w as debugLog } from "./runtime-CwW75z2d.js";
|
|
3
3
|
import { uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
@@ -540,7 +540,9 @@ async function persistentRetryLoop(fn, policy, logger) {
|
|
|
540
540
|
throw lastError ?? /* @__PURE__ */ new Error(`Persistent retry timed out (${policy.timeoutMs / 1e3}s)`);
|
|
541
541
|
}
|
|
542
542
|
function sleep$1(ms) {
|
|
543
|
-
return new Promise((resolve) =>
|
|
543
|
+
return new Promise((resolve) => {
|
|
544
|
+
setTimeout(resolve, ms);
|
|
545
|
+
});
|
|
544
546
|
}
|
|
545
547
|
/** Standard upload retry: exponential backoff, skip 400/401/timeout errors. */
|
|
546
548
|
const UPLOAD_RETRY_POLICY = {
|
|
@@ -985,7 +987,9 @@ async function runWithConcurrency(tasks, maxConcurrent) {
|
|
|
985
987
|
}
|
|
986
988
|
}
|
|
987
989
|
function sleep(ms) {
|
|
988
|
-
return new Promise((resolve) =>
|
|
990
|
+
return new Promise((resolve) => {
|
|
991
|
+
setTimeout(resolve, ms);
|
|
992
|
+
});
|
|
989
993
|
}
|
|
990
994
|
//#endregion
|
|
991
995
|
//#region extensions/qqbot/src/engine/api/token.ts
|
|
@@ -1107,7 +1111,7 @@ var TokenManager = class {
|
|
|
1107
1111
|
};
|
|
1108
1112
|
loop().catch((err) => {
|
|
1109
1113
|
this.refreshControllers.delete(appId);
|
|
1110
|
-
this.logger?.error?.(`[qqbot:token:${appId}] Background refresh crashed: ${err}`);
|
|
1114
|
+
this.logger?.error?.(`[qqbot:token:${appId}] Background refresh crashed: ${formatErrorMessage(err)}`);
|
|
1111
1115
|
});
|
|
1112
1116
|
}
|
|
1113
1117
|
/** Stop background refresh for one appId, or all. */
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { r as setQQBotRuntime, t as getQQBotRuntime } from "./runtime-
|
|
1
|
+
import { r as setQQBotRuntime, t as getQQBotRuntime } from "./runtime-CwW75z2d.js";
|
|
2
2
|
export { getQQBotRuntime, setQQBotRuntime };
|
package/dist/setup-plugin-api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as qqbotSetupPlugin } from "./channel.setup-
|
|
1
|
+
import { t as qqbotSetupPlugin } from "./channel.setup-xBlmSU4X.js";
|
|
2
2
|
export { qqbotSetupPlugin };
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/qqbot",
|
|
3
|
-
"version": "2026.5.31-beta.
|
|
3
|
+
"version": "2026.5.31-beta.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@openclaw/qqbot",
|
|
9
|
-
"version": "2026.5.31-beta.
|
|
9
|
+
"version": "2026.5.31-beta.4",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@tencent-connect/qqbot-connector": "1.1.0",
|
|
12
12
|
"mpg123-decoder": "1.0.3",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"zod": "4.4.3"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"openclaw": ">=2026.5.31-beta.
|
|
18
|
+
"openclaw": ">=2026.5.31-beta.4"
|
|
19
19
|
},
|
|
20
20
|
"peerDependenciesMeta": {
|
|
21
21
|
"openclaw": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/qqbot",
|
|
3
|
-
"version": "2026.5.31-beta.
|
|
3
|
+
"version": "2026.5.31-beta.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "OpenClaw QQ Bot channel plugin for group and direct-message workflows.",
|
|
6
6
|
"repository": {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"zod": "4.4.3"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"openclaw": ">=2026.5.31-beta.
|
|
19
|
+
"openclaw": ">=2026.5.31-beta.4"
|
|
20
20
|
},
|
|
21
21
|
"peerDependenciesMeta": {
|
|
22
22
|
"openclaw": {
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
"minHostVersion": ">=2026.4.10"
|
|
46
46
|
},
|
|
47
47
|
"compat": {
|
|
48
|
-
"pluginApi": ">=2026.5.31-beta.
|
|
48
|
+
"pluginApi": ">=2026.5.31-beta.4"
|
|
49
49
|
},
|
|
50
50
|
"build": {
|
|
51
|
-
"openclawVersion": "2026.5.31-beta.
|
|
51
|
+
"openclawVersion": "2026.5.31-beta.4"
|
|
52
52
|
},
|
|
53
53
|
"release": {
|
|
54
54
|
"publishToClawHub": true,
|