@openclaw/qqbot 2026.5.10-beta.2 → 2026.5.10-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 CHANGED
@@ -1,9 +1,9 @@
1
- import { C as recordMessageReply, E as setOutboundAudioPort, S as getMessageReplyStats, T as OUTBOUND_ERROR_CODES, _ as sendVoice, a as sendText, b as checkMessageReplyLimit, d as buildMediaTarget, f as parseTarget, g as sendVideoMsg, h as sendPhoto, i as sendProactiveMessage, m as sendDocument, n as sendCronMessage, p as resolveOutboundMediaPath, r as sendMedia, v as resolveUserFacingMediaError, w as DEFAULT_MEDIA_SEND_ERROR, x as getMessageReplyConfig, y as MESSAGE_REPLY_LIMIT } from "./outbound-DL154TS6.js";
2
- import { a as resolveQQBotAccount, i as resolveDefaultQQBotAccountId, n as applyQQBotAccountConfig, r as listQQBotAccountIds, t as DEFAULT_ACCOUNT_ID } from "./config-BNAanXEH.js";
3
- import { t as qqbotPlugin } from "./channel-Cl-NJpPD.js";
4
- import { L as formatErrorMessage, S as debugLog, o as getAccessToken, x as debugError } from "./sender-C-TmIFow.js";
5
- import { t as qqbotSetupPlugin } from "./channel.setup-BDM8y3aD.js";
6
- import { r as getFrameworkCommands, t as getRequestContext } from "./request-context-Bn63CUkr.js";
1
+ import { C as recordMessageReply, E as setOutboundAudioPort, S as getMessageReplyStats, T as OUTBOUND_ERROR_CODES, _ as sendVoice, a as sendText, b as checkMessageReplyLimit, d as buildMediaTarget, f as parseTarget, g as sendVideoMsg, h as sendPhoto, i as sendProactiveMessage, m as sendDocument, n as sendCronMessage, p as resolveOutboundMediaPath, r as sendMedia, v as resolveUserFacingMediaError, w as DEFAULT_MEDIA_SEND_ERROR, x as getMessageReplyConfig, y as MESSAGE_REPLY_LIMIT } from "./outbound-BLWish89.js";
2
+ import { a as resolveQQBotAccount, i as resolveDefaultQQBotAccountId, n as applyQQBotAccountConfig, r as listQQBotAccountIds, t as DEFAULT_ACCOUNT_ID } from "./config-BT8KP_H1.js";
3
+ import { t as qqbotPlugin } from "./channel-CmK-n3Oz.js";
4
+ import { L as formatErrorMessage, S as debugLog, o as getAccessToken, x as debugError } from "./sender-BrpzCcXA.js";
5
+ import { t as qqbotSetupPlugin } from "./channel.setup-D_GS95Pk.js";
6
+ import { r as getFrameworkCommands, t as getRequestContext } from "./request-context-BwSBFANU.js";
7
7
  import { callGatewayTool } from "openclaw/plugin-sdk/agent-harness-runtime";
8
8
  //#region extensions/qqbot/src/engine/tools/channel-api.ts
9
9
  /**
@@ -1,18 +1,18 @@
1
- import { t as asOptionalObjectRecord } from "./string-normalize-BzzzPOeb.js";
2
- import { l as ensurePlatformAdapter, u as getBridgeLogger } from "./resolve-Cm33TWZp.js";
1
+ import { t as asOptionalObjectRecord } from "./string-normalize-C46CS-F1.js";
2
+ import { l as ensurePlatformAdapter, u as getBridgeLogger } from "./resolve-D3lCbUze.js";
3
3
  import { a as resolveApprovalTarget } from "./approval-cg0SVahb.js";
4
- import { a as resolveQQBotAccount, n as applyQQBotAccountConfig, t as DEFAULT_ACCOUNT_ID$1 } from "./config-BNAanXEH.js";
5
- import { a as resolveQQBotExecApprovalConfig, i as matchesQQBotApprovalAccount, n as isQQBotExecApprovalAuthorizedSender, o as shouldHandleQQBotExecApprovalRequest, r as isQQBotExecApprovalClientEnabled, t as isQQBotExecApprovalApprover } from "./exec-approvals-DgO1msIB.js";
6
- import { a as qqbotSetupAdapterShared, i as qqbotMeta, n as qqbotSetupWizard, r as qqbotConfigAdapter, t as qqbotChannelConfigSchema } from "./config-schema-BTV9NZbt.js";
4
+ import { a as resolveQQBotAccount, n as applyQQBotAccountConfig, t as DEFAULT_ACCOUNT_ID$1 } from "./config-BT8KP_H1.js";
5
+ import { a as resolveQQBotExecApprovalConfig, i as matchesQQBotApprovalAccount, n as isQQBotExecApprovalAuthorizedSender, o as shouldHandleQQBotExecApprovalRequest, r as isQQBotExecApprovalClientEnabled, t as isQQBotExecApprovalApprover } from "./exec-approvals-W4oL9R6C.js";
6
+ import { a as qqbotSetupAdapterShared, i as qqbotMeta, n as qqbotSetupWizard, r as qqbotConfigAdapter, t as qqbotChannelConfigSchema } from "./config-schema-BCxobX3l.js";
7
7
  import { n as writeOpenClawConfigThroughRuntime, t as toGatewayAccount } from "./narrowing-BoieBTIU.js";
8
- import { t as getQQBotRuntime } from "./runtime-CHGblcVc.js";
9
- import { n as normalizeTarget, s as getQQBotDataPath, t as looksLikeQQBotTarget } from "./target-parser-CTNFSKb1.js";
8
+ import { t as getQQBotRuntime } from "./runtime-CZyFkpnB.js";
9
+ import { n as normalizeTarget, s as getQQBotDataPath, t as looksLikeQQBotTarget } from "./target-parser-C8HaD-ik.js";
10
10
  import { getExecApprovalReplyMetadata } from "openclaw/plugin-sdk/approval-runtime";
11
11
  import { createMessageReceiptFromOutboundResults, defineChannelMessageAdapter } from "openclaw/plugin-sdk/channel-message";
12
12
  import { createChannelApprovalCapability } from "openclaw/plugin-sdk/approval-delivery-runtime";
13
13
  import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
14
14
  import { resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime";
15
- import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
15
+ import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
16
16
  import fs from "node:fs";
17
17
  import { replaceFileAtomicSync } from "openclaw/plugin-sdk/security-runtime";
18
18
  import path from "node:path";
@@ -156,7 +156,7 @@ function createQQBotApprovalCapability() {
156
156
  },
157
157
  load: async () => {
158
158
  ensurePlatformAdapter();
159
- return (await import("./handler-runtime-C9SrM2gR.js")).qqbotApprovalNativeRuntime;
159
+ return (await import("./handler-runtime-ZgvjnyoH.js")).qqbotApprovalNativeRuntime;
160
160
  }
161
161
  })
162
162
  });
@@ -345,7 +345,7 @@ function clearAccountCredentials(cfg, accountId) {
345
345
  //#region extensions/qqbot/src/channel.ts
346
346
  let gatewayModulePromise;
347
347
  function loadGatewayModule() {
348
- gatewayModulePromise ??= import("./gateway-OhbnW8Uq.js");
348
+ gatewayModulePromise ??= import("./gateway-Bbsd8-ne.js");
349
349
  return gatewayModulePromise;
350
350
  }
351
351
  function createQQBotSendReceipt(params) {
@@ -363,7 +363,7 @@ function createQQBotSendReceipt(params) {
363
363
  async function sendQQBotText(params) {
364
364
  await loadGatewayModule();
365
365
  const account = resolveQQBotAccount(params.cfg, params.accountId);
366
- const { sendText } = await import("./outbound-DL154TS6.js").then((n) => n.t);
366
+ const { sendText } = await import("./outbound-BLWish89.js").then((n) => n.t);
367
367
  const result = await sendText({
368
368
  to: params.to,
369
369
  text: params.text,
@@ -385,7 +385,7 @@ async function sendQQBotText(params) {
385
385
  async function sendQQBotMedia(params) {
386
386
  await loadGatewayModule();
387
387
  const account = resolveQQBotAccount(params.cfg, params.accountId);
388
- const { sendMedia } = await import("./outbound-DL154TS6.js").then((n) => n.t);
388
+ const { sendMedia } = await import("./outbound-BLWish89.js").then((n) => n.t);
389
389
  const result = await sendMedia({
390
390
  to: params.to,
391
391
  text: params.text ?? "",
@@ -1,2 +1,2 @@
1
- import { t as qqbotPlugin } from "./channel-Cl-NJpPD.js";
1
+ import { t as qqbotPlugin } from "./channel-CmK-n3Oz.js";
2
2
  export { qqbotPlugin };
@@ -1,5 +1,5 @@
1
- import "./resolve-Cm33TWZp.js";
2
- import { a as qqbotSetupAdapterShared, i as qqbotMeta, n as qqbotSetupWizard, r as qqbotConfigAdapter, t as qqbotChannelConfigSchema } from "./config-schema-BTV9NZbt.js";
1
+ import "./resolve-D3lCbUze.js";
2
+ import { a as qqbotSetupAdapterShared, i as qqbotMeta, n as qqbotSetupWizard, r as qqbotConfigAdapter, t as qqbotChannelConfigSchema } from "./config-schema-BCxobX3l.js";
3
3
  //#region extensions/qqbot/src/channel.setup.ts
4
4
  /**
5
5
  * Setup-only QQBot plugin — lightweight subset used during `openclaw onboard`
@@ -1,5 +1,5 @@
1
- import { c as getPlatformAdapter } from "./string-normalize-BzzzPOeb.js";
2
- import { c as resolveDefaultAccountId, n as applyAccountConfig, o as listAccountIds, s as resolveAccountBase, t as DEFAULT_ACCOUNT_ID$1 } from "./resolve-Cm33TWZp.js";
1
+ import { c as getPlatformAdapter } from "./string-normalize-C46CS-F1.js";
2
+ import { c as resolveDefaultAccountId, n as applyAccountConfig, o as listAccountIds, s as resolveAccountBase, t as DEFAULT_ACCOUNT_ID$1 } from "./resolve-D3lCbUze.js";
3
3
  import { coerceSecretRef, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
4
4
  import fs from "node:fs";
5
5
  import { resolveDefaultSecretProviderAlias } from "openclaw/plugin-sdk/provider-auth";
@@ -1,12 +1,12 @@
1
- import { n as normalizeLowercaseStringOrEmpty } from "./string-normalize-BzzzPOeb.js";
2
- import { a as isAccountConfigured, i as formatAllowFrom, n as applyAccountConfig, r as describeAccount } from "./resolve-Cm33TWZp.js";
3
- import { a as resolveQQBotAccount, i as resolveDefaultQQBotAccountId, n as applyQQBotAccountConfig, r as listQQBotAccountIds } from "./config-BNAanXEH.js";
1
+ import { n as normalizeLowercaseStringOrEmpty } from "./string-normalize-C46CS-F1.js";
2
+ import { a as isAccountConfigured, i as formatAllowFrom, n as applyAccountConfig, r as describeAccount } from "./resolve-D3lCbUze.js";
3
+ import { a as resolveQQBotAccount, i as resolveDefaultQQBotAccountId, n as applyQQBotAccountConfig, r as listQQBotAccountIds } from "./config-BT8KP_H1.js";
4
4
  import { buildSecretInputSchema } from "openclaw/plugin-sdk/secret-input";
5
5
  import { applyAccountNameToChannelSection, deleteAccountFromConfigSection, setAccountEnabledInConfigSection } from "openclaw/plugin-sdk/core";
6
6
  import { DEFAULT_ACCOUNT_ID, createStandardChannelSetupStatus, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup";
7
7
  import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
8
8
  import { AllowFromListSchema, buildChannelConfigSchema } from "openclaw/plugin-sdk/channel-config-schema";
9
- import { z } from "openclaw/plugin-sdk/zod";
9
+ import { z } from "zod";
10
10
  //#region extensions/qqbot/src/engine/config/setup-logic.ts
11
11
  /**
12
12
  * QQBot setup business logic (pure layer).
@@ -1,6 +1,6 @@
1
- import { a as resolveQQBotAccount, r as listQQBotAccountIds } from "./config-BNAanXEH.js";
1
+ import { a as resolveQQBotAccount, r as listQQBotAccountIds } from "./config-BT8KP_H1.js";
2
2
  import { resolveApprovalRequestChannelAccountId } from "openclaw/plugin-sdk/approval-native-runtime";
3
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
3
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
5
5
  import { createChannelExecApprovalProfile, isChannelExecApprovalClientEnabledFromConfig, matchesApprovalRequestFilters } from "openclaw/plugin-sdk/approval-client-runtime";
6
6
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
@@ -1,12 +1,12 @@
1
- import { E as setOutboundAudioPort, _ as sendVoice, c as isMediaPayload, g as sendVideoMsg, h as sendPhoto, l as parseQQBotPayload, m as sendDocument, o as encodePayloadForCron, r as sendMedia, s as isCronReminderPayload, u as normalizeMediaTags, v as resolveUserFacingMediaError, w as DEFAULT_MEDIA_SEND_ERROR } from "./outbound-DL154TS6.js";
2
- import { c as getPlatformAdapter, i as normalizeOptionalString, n as normalizeLowercaseStringOrEmpty, o as readStringField, s as sanitizeFileName, t as asOptionalObjectRecord } from "./string-normalize-BzzzPOeb.js";
3
- import { d as setBridgeLogger, l as ensurePlatformAdapter, s as resolveAccountBase } from "./resolve-Cm33TWZp.js";
1
+ import { E as setOutboundAudioPort, _ as sendVoice, c as isMediaPayload, g as sendVideoMsg, h as sendPhoto, l as parseQQBotPayload, m as sendDocument, o as encodePayloadForCron, r as sendMedia, s as isCronReminderPayload, u as normalizeMediaTags, v as resolveUserFacingMediaError, w as DEFAULT_MEDIA_SEND_ERROR } from "./outbound-BLWish89.js";
2
+ import { c as getPlatformAdapter, i as normalizeOptionalString, n as normalizeLowercaseStringOrEmpty, o as readStringField, s as sanitizeFileName, t as asOptionalObjectRecord } from "./string-normalize-C46CS-F1.js";
3
+ import { d as setBridgeLogger, l as ensurePlatformAdapter, s as resolveAccountBase } from "./resolve-D3lCbUze.js";
4
4
  import { i as parseApprovalButtonData } from "./approval-cg0SVahb.js";
5
5
  import { t as toGatewayAccount } from "./narrowing-BoieBTIU.js";
6
- import { B as StreamInputState, C as debugWarn, D as openLocalFile, I as formatDuration, L as formatErrorMessage, N as getImageMimeType, P as getMaxUploadSize, R as StreamContentType, S as debugLog, T as getNextMsgSeq, a as createRawInputNotifyFn, b as withTokenRetry, c as getMessageApi, d as initSender, f as onMessageSent, g as sendText, h as sendMedia$1, i as clearTokenCache, j as formatFileSize, k as downloadFile, l as getPluginUserAgent, m as sendInputNotify, n as acknowledgeInteraction, o as getAccessToken, p as registerAccount, r as buildDeliveryTarget, s as getGatewayUrl, t as accountToCreds, u as initApiConfig, v as startBackgroundTokenRefresh, x as debugError, y as stopBackgroundTokenRefresh, z as StreamInputMode } from "./sender-C-TmIFow.js";
7
- import { n as getQQBotRuntimeForEngine, t as getQQBotRuntime } from "./runtime-CHGblcVc.js";
8
- import { a as getHomeDir, c as getQQBotMediaDir, d as isLocalPath, f as isWindows, i as checkSilkWasmAvailable, m as resolveQQBotPayloadLocalFilePath, o as getQQBotDataDir, p as normalizePath$1, s as getQQBotDataPath, u as getTempDir } from "./target-parser-CTNFSKb1.js";
9
- import { a as getPluginVersion, i as getFrameworkVersion, n as runWithRequestContext, o as initCommands, s as matchSlashCommand } from "./request-context-Bn63CUkr.js";
6
+ import { B as StreamInputState, C as debugWarn, D as openLocalFile, I as formatDuration, L as formatErrorMessage, N as getImageMimeType, P as getMaxUploadSize, R as StreamContentType, S as debugLog, T as getNextMsgSeq, a as createRawInputNotifyFn, b as withTokenRetry, c as getMessageApi, d as initSender, f as onMessageSent, g as sendText, h as sendMedia$1, i as clearTokenCache, j as formatFileSize, k as downloadFile, l as getPluginUserAgent, m as sendInputNotify, n as acknowledgeInteraction, o as getAccessToken, p as registerAccount, r as buildDeliveryTarget, s as getGatewayUrl, t as accountToCreds, u as initApiConfig, v as startBackgroundTokenRefresh, x as debugError, y as stopBackgroundTokenRefresh, z as StreamInputMode } from "./sender-BrpzCcXA.js";
7
+ import { n as getQQBotRuntimeForEngine, t as getQQBotRuntime } from "./runtime-CZyFkpnB.js";
8
+ import { a as getHomeDir, c as getQQBotMediaDir, d as isLocalPath, f as isWindows, i as checkSilkWasmAvailable, m as resolveQQBotPayloadLocalFilePath, o as getQQBotDataDir, p as normalizePath$1, s as getQQBotDataPath, u as getTempDir } from "./target-parser-C8HaD-ik.js";
9
+ import { a as getPluginVersion, i as getFrameworkVersion, n as runWithRequestContext, o as initCommands, s as matchSlashCommand } from "./request-context-BwSBFANU.js";
10
10
  import * as fs$1 from "node:fs";
11
11
  import fs from "node:fs";
12
12
  import * as os$1 from "node:os";
@@ -17,6 +17,7 @@ import * as path$1 from "node:path";
17
17
  import path from "node:path";
18
18
  import { mimeTypeFromFilePath } from "openclaw/plugin-sdk/media-mime";
19
19
  import { resolveRuntimeServiceVersion } from "openclaw/plugin-sdk/cli-runtime";
20
+ import { getRuntimeConfig } from "openclaw/plugin-sdk/runtime-config-snapshot";
20
21
  import WebSocket from "ws";
21
22
  import { resolveAmbientNodeProxyAgent } from "openclaw/plugin-sdk/extension-shared";
22
23
  import { Buffer as Buffer$1 } from "node:buffer";
@@ -373,6 +374,25 @@ async function runDiagnostics() {
373
374
  return report;
374
375
  }
375
376
  //#endregion
377
+ //#region extensions/qqbot/src/engine/gateway/active-cfg.ts
378
+ function createActiveCfgProvider(options) {
379
+ const loader = options.load ?? defaultGatewayCfgLoader;
380
+ const fallback = options.fallback;
381
+ return { getActiveCfg() {
382
+ return resolveActiveCfg(loader, fallback);
383
+ } };
384
+ }
385
+ function resolveActiveCfg(loader, fallback) {
386
+ try {
387
+ return loader();
388
+ } catch {
389
+ return fallback;
390
+ }
391
+ }
392
+ function defaultGatewayCfgLoader() {
393
+ return getRuntimeConfig();
394
+ }
395
+ //#endregion
376
396
  //#region extensions/qqbot/src/engine/access/sender-match.ts
377
397
  /**
378
398
  * QQBot sender normalization and allowlist matching.
@@ -1400,7 +1420,7 @@ var ReconnectState = class {
1400
1420
  getNextDelay(customDelay) {
1401
1421
  const delay = customDelay ?? RECONNECT_DELAYS[Math.min(this.attempts, RECONNECT_DELAYS.length - 1)];
1402
1422
  this.attempts++;
1403
- this.log?.debug?.(`Reconnecting in ${delay}ms (attempt ${this.attempts})`);
1423
+ this.log?.debug?.(`Reconnecting ${this.accountId} in ${delay}ms (attempt ${this.attempts})`);
1404
1424
  return delay;
1405
1425
  }
1406
1426
  /**
@@ -1747,7 +1767,7 @@ var GatewayConnection = class {
1747
1767
  * OpenAI-compatible STT (Speech-to-Text) configuration and transcription.
1748
1768
  *
1749
1769
  * Migrated from `src/stt.ts` — uses core/utils/string-normalize instead
1750
- * of openclaw/plugin-sdk/text-runtime.
1770
+ * of broad SDK text barrels.
1751
1771
  */
1752
1772
  /** Resolve the STT configuration from the nested config object. */
1753
1773
  function resolveSTTConfig(cfg) {
@@ -5978,6 +5998,7 @@ async function startGateway$1(ctx) {
5978
5998
  const groupChatEnabled = groupOpts.enabled;
5979
5999
  const groupHistories = groupChatEnabled ? /* @__PURE__ */ new Map() : void 0;
5980
6000
  const sessionStoreReader = groupChatEnabled ? groupOpts.sessionStoreReader ?? createNodeSessionStoreReader() : void 0;
6001
+ const activeCfgProvider = createActiveCfgProvider({ fallback: ctx.cfg });
5981
6002
  const handleMessage = async (event) => {
5982
6003
  log?.info(`Processing message from ${event.senderId}: ${event.content}`, {
5983
6004
  accountId: account.accountId,
@@ -5991,9 +6012,10 @@ async function startGateway$1(ctx) {
5991
6012
  accountId: account.accountId,
5992
6013
  direction: "inbound"
5993
6014
  });
6015
+ const activeCfg = activeCfgProvider.getActiveCfg();
5994
6016
  const inbound = await buildInboundContext(event, {
5995
6017
  account,
5996
- cfg: ctx.cfg,
6018
+ cfg: activeCfg,
5997
6019
  log,
5998
6020
  runtime,
5999
6021
  startTyping: (ev) => startTypingForEvent(ev, account, log),
@@ -6031,7 +6053,7 @@ async function startGateway$1(ctx) {
6031
6053
  chatType: event.type
6032
6054
  }, () => dispatchOutbound(inbound, {
6033
6055
  runtime,
6034
- cfg: ctx.cfg,
6056
+ cfg: activeCfg,
6035
6057
  account,
6036
6058
  log
6037
6059
  }));
@@ -1,8 +1,8 @@
1
- import { l as ensurePlatformAdapter, u as getBridgeLogger } from "./resolve-Cm33TWZp.js";
1
+ import { l as ensurePlatformAdapter, u as getBridgeLogger } from "./resolve-D3lCbUze.js";
2
2
  import { a as resolveApprovalTarget, n as buildExecApprovalText, r as buildPluginApprovalText, t as buildApprovalKeyboard } from "./approval-cg0SVahb.js";
3
- import { a as resolveQQBotAccount } from "./config-BNAanXEH.js";
4
- import { a as resolveQQBotExecApprovalConfig, i as matchesQQBotApprovalAccount, o as shouldHandleQQBotExecApprovalRequest, r as isQQBotExecApprovalClientEnabled } from "./exec-approvals-DgO1msIB.js";
5
- import { c as getMessageApi, t as accountToCreds } from "./sender-C-TmIFow.js";
3
+ import { a as resolveQQBotAccount } from "./config-BT8KP_H1.js";
4
+ import { a as resolveQQBotExecApprovalConfig, i as matchesQQBotApprovalAccount, o as shouldHandleQQBotExecApprovalRequest, r as isQQBotExecApprovalClientEnabled } from "./exec-approvals-W4oL9R6C.js";
5
+ import { c as getMessageApi, t as accountToCreds } from "./sender-BrpzCcXA.js";
6
6
  import { resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime";
7
7
  import { createChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-runtime";
8
8
  //#region extensions/qqbot/src/bridge/approval/handler-runtime.ts
@@ -1,6 +1,6 @@
1
- import { i as normalizeOptionalString, n as normalizeLowercaseStringOrEmpty, s as sanitizeFileName } from "./string-normalize-BzzzPOeb.js";
2
- import { A as fileExistsAsync, C as debugWarn, E as UPLOAD_PREPARE_FALLBACK_CODE, F as readFileAsync, L as formatErrorMessage, M as getFileTypeName, N as getImageMimeType, O as checkFileSize, P as getMaxUploadSize, S as debugLog, g as sendText$1, h as sendMedia$1, j as formatFileSize, k as downloadFile, t as accountToCreds, u as initApiConfig, w as UploadDailyLimitExceededError, x as debugError } from "./sender-C-TmIFow.js";
3
- import { c as getQQBotMediaDir, d as isLocalPath, m as resolveQQBotPayloadLocalFilePath, o as getQQBotDataDir, p as normalizePath, r as parseTarget$1 } from "./target-parser-CTNFSKb1.js";
1
+ import { i as normalizeOptionalString, n as normalizeLowercaseStringOrEmpty, s as sanitizeFileName } from "./string-normalize-C46CS-F1.js";
2
+ import { A as fileExistsAsync, C as debugWarn, E as UPLOAD_PREPARE_FALLBACK_CODE, F as readFileAsync, L as formatErrorMessage, M as getFileTypeName, N as getImageMimeType, O as checkFileSize, P as getMaxUploadSize, S as debugLog, g as sendText$1, h as sendMedia$1, j as formatFileSize, k as downloadFile, t as accountToCreds, u as initApiConfig, w as UploadDailyLimitExceededError, x as debugError } from "./sender-BrpzCcXA.js";
3
+ import { c as getQQBotMediaDir, d as isLocalPath, m as resolveQQBotPayloadLocalFilePath, o as getQQBotDataDir, p as normalizePath, r as parseTarget$1 } from "./target-parser-C8HaD-ik.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 { S as debugLog } from "./sender-C-TmIFow.js";
2
- import { a as getHomeDir, f as isWindows, l as getQQBotMediaPath, o as getQQBotDataDir } from "./target-parser-CTNFSKb1.js";
1
+ import { S as debugLog } from "./sender-BrpzCcXA.js";
2
+ import { a as getHomeDir, f as isWindows, l as getQQBotMediaPath, o as getQQBotDataDir } from "./target-parser-C8HaD-ik.js";
3
3
  import fs from "node:fs";
4
4
  import path from "node:path";
5
5
  import { loadJsonFile } from "openclaw/plugin-sdk/json-store";
@@ -1,4 +1,4 @@
1
- import { a as normalizeStringifiedOptionalString, c as getPlatformAdapter, d as registerPlatformAdapterFactory, l as hasPlatformAdapter, o as readStringField, r as normalizeOptionalLowercaseString, t as asOptionalObjectRecord, u as registerPlatformAdapter } from "./string-normalize-BzzzPOeb.js";
1
+ import { a as normalizeStringifiedOptionalString, c as getPlatformAdapter, d as registerPlatformAdapterFactory, l as hasPlatformAdapter, o as readStringField, r as normalizeOptionalLowercaseString, t as asOptionalObjectRecord, u as registerPlatformAdapter } from "./string-normalize-C46CS-F1.js";
2
2
  import { hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
3
3
  import { resolvePreferredOpenClawTmpDir } from "openclaw/plugin-sdk/temp-path";
4
4
  //#region extensions/qqbot/src/bridge/logger.ts
@@ -1,4 +1,4 @@
1
- import { _ as setOpenClawVersion } from "./sender-C-TmIFow.js";
1
+ import { _ as setOpenClawVersion } from "./sender-BrpzCcXA.js";
2
2
  import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
3
3
  //#region extensions/qqbot/src/bridge/runtime.ts
4
4
  const { setRuntime: _setRuntime, getRuntime: getQQBotRuntime } = createPluginRuntimeStore({
@@ -1,2 +1,2 @@
1
- import { r as setQQBotRuntime, t as getQQBotRuntime } from "./runtime-CHGblcVc.js";
1
+ import { r as setQQBotRuntime, t as getQQBotRuntime } from "./runtime-CZyFkpnB.js";
2
2
  export { getQQBotRuntime, setQQBotRuntime };
@@ -1,4 +1,4 @@
1
- import { c as getPlatformAdapter, i as normalizeOptionalString, s as sanitizeFileName } from "./string-normalize-BzzzPOeb.js";
1
+ import { c as getPlatformAdapter, i as normalizeOptionalString, s as sanitizeFileName } from "./string-normalize-C46CS-F1.js";
2
2
  import * as fs$1 from "node:fs";
3
3
  import os from "node:os";
4
4
  import * as crypto$1 from "node:crypto";
@@ -1204,7 +1204,7 @@ var MessageApi = class {
1204
1204
  if (req.stream_msg_id) body.stream_msg_id = req.stream_msg_id;
1205
1205
  return this.client.request(token, "POST", path, body);
1206
1206
  }
1207
- async sendAndNotify(appId, accessToken, method, path, body, meta) {
1207
+ async sendAndNotify(_appId, accessToken, method, path, body, meta) {
1208
1208
  const result = await this.client.request(accessToken, method, path, body);
1209
1209
  if (result.ext_info?.ref_idx && this.messageSentHook) try {
1210
1210
  this.messageSentHook(result.ext_info.ref_idx, meta);
@@ -1,2 +1,2 @@
1
- import { t as qqbotSetupPlugin } from "./channel.setup-BDM8y3aD.js";
1
+ import { t as qqbotSetupPlugin } from "./channel.setup-D_GS95Pk.js";
2
2
  export { qqbotSetupPlugin };
@@ -21,8 +21,8 @@ function hasPlatformAdapter() {
21
21
  * String normalization and record-coercion helpers.
22
22
  *
23
23
  * These are self-contained re-implementations of the functions that
24
- * the plugin previously imported from `openclaw/plugin-sdk/text-runtime`
25
- * and `openclaw/plugin-sdk/text-runtime` (via record-coerce / string-coerce).
24
+ * the plugin previously imported from broad SDK text barrels
25
+ * and shared record/string coercion helpers.
26
26
  *
27
27
  * core/ modules use these instead of importing plugin-sdk, keeping the
28
28
  * shared layer portable between the built-in and standalone versions.
@@ -1,5 +1,5 @@
1
- import { c as getPlatformAdapter } from "./string-normalize-BzzzPOeb.js";
2
- import { C as debugWarn, L as formatErrorMessage, S as debugLog } from "./sender-C-TmIFow.js";
1
+ import { c as getPlatformAdapter } from "./string-normalize-C46CS-F1.js";
2
+ import { C as debugWarn, L as formatErrorMessage, S as debugLog } from "./sender-BrpzCcXA.js";
3
3
  import * as fs$1 from "node:fs";
4
4
  import * as os$1 from "node:os";
5
5
  import * as path$1 from "node:path";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/qqbot",
3
- "version": "2026.5.10-beta.2",
3
+ "version": "2026.5.10-beta.4",
4
4
  "private": false,
5
5
  "description": "OpenClaw QQ Bot channel plugin",
6
6
  "repository": {
@@ -12,7 +12,8 @@
12
12
  "@tencent-connect/qqbot-connector": "^1.1.0",
13
13
  "mpg123-decoder": "^1.0.3",
14
14
  "silk-wasm": "^3.7.1",
15
- "ws": "^8.20.0"
15
+ "ws": "^8.20.0",
16
+ "zod": "^4.4.3"
16
17
  },
17
18
  "devDependencies": {
18
19
  "@openclaw/plugin-sdk": "workspace:*",
@@ -20,7 +21,7 @@
20
21
  "openclaw": "workspace:*"
21
22
  },
22
23
  "peerDependencies": {
23
- "openclaw": ">=2026.5.10-beta.2"
24
+ "openclaw": ">=2026.5.10-beta.4"
24
25
  },
25
26
  "peerDependenciesMeta": {
26
27
  "openclaw": {
@@ -49,10 +50,10 @@
49
50
  "minHostVersion": ">=2026.4.10"
50
51
  },
51
52
  "compat": {
52
- "pluginApi": ">=2026.5.10-beta.2"
53
+ "pluginApi": ">=2026.5.10-beta.4"
53
54
  },
54
55
  "build": {
55
- "openclawVersion": "2026.5.10-beta.2"
56
+ "openclawVersion": "2026.5.10-beta.4"
56
57
  },
57
58
  "release": {
58
59
  "publishToClawHub": true,