@openclaw/whatsapp 2026.8.33 → 2026.8.35

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.
@@ -4,7 +4,7 @@ import { s as normalizeWhatsAppMessagingTarget } from "./normalize-target-CugRyO
4
4
  import { i as sendTypingWhatsApp, t as sendMessageWhatsApp } from "./send-DhVkeVOL.mjs";
5
5
  import { i as getWhatsAppRuntime } from "./runtime-BLlToOi6.mjs";
6
6
  import "./normalize-B1wBftQ7.mjs";
7
- import { i as unregisterWhatsAppApprovalReactionTarget, r as registerWhatsAppApprovalReactionTarget } from "./approval-reactions-C9Nq1Mee.mjs";
7
+ import { i as unregisterWhatsAppApprovalReactionTarget, r as registerWhatsAppApprovalReactionTarget } from "./approval-reactions-S0t29Eux.mjs";
8
8
  import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
9
9
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
10
10
  import { buildApprovalReactionPendingContent } from "openclaw/plugin-sdk/approval-reaction-runtime";
@@ -16,7 +16,11 @@ function buildPendingPayload(params) {
16
16
  return buildApprovalReactionPendingContent(params);
17
17
  }
18
18
  const whatsappApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapter({
19
- eventKinds: ["exec", "plugin"],
19
+ eventKinds: [
20
+ "exec",
21
+ "plugin",
22
+ "system-agent"
23
+ ],
20
24
  availability: {
21
25
  isConfigured: ({ context }) => Boolean(context),
22
26
  shouldHandle: ({ context }) => Boolean(context)
@@ -54,7 +54,7 @@ function reportApprovalBindingCorrelationMismatch(binding) {
54
54
  }
55
55
  function readPersistedTarget(target) {
56
56
  const value = target;
57
- if (!value || typeof value.approvalId !== "string" || value.approvalKind !== "exec" && value.approvalKind !== "plugin") return null;
57
+ if (!value || typeof value.approvalId !== "string" || value.approvalKind !== "exec" && value.approvalKind !== "plugin" && value.approvalKind !== "system-agent") return null;
58
58
  const allowedDecisions = readApprovalReactionDecisionList(value.allowedDecisions);
59
59
  if (!allowedDecisions) return null;
60
60
  return {
@@ -114,7 +114,7 @@ function registerWhatsAppApprovalReactionTarget(params) {
114
114
  const key = buildReactionTargetKey(params);
115
115
  const approvalId = params.approvalId.trim();
116
116
  const allowedDecisions = listApprovalReactionBindings({ allowedDecisions: params.allowedDecisions }).map((binding) => binding.decision);
117
- if (!key || !approvalId || params.approvalKind !== "exec" && params.approvalKind !== "plugin" || allowedDecisions.length === 0) return null;
117
+ if (!key || !approvalId || params.approvalKind !== "exec" && params.approvalKind !== "plugin" && params.approvalKind !== "system-agent" || allowedDecisions.length === 0) return null;
118
118
  const target = {
119
119
  approvalId,
120
120
  approvalKind: params.approvalKind,
@@ -8,7 +8,7 @@ import "./normalize-B1wBftQ7.mjs";
8
8
  import { c as toWhatsappJid } from "./targets-runtime-RBjx3pg_.mjs";
9
9
  import "./text-runtime-CHl0iPYe.mjs";
10
10
  import { c as getWhatsAppApprovalApprovers, l as whatsappApprovalAuth, s as lookupInboundMessageMetaForTarget, t as resolveWhatsAppGroupSessionKey } from "./group-session-key-Bx_RT7LG.mjs";
11
- import { a as resolveWhatsAppGroupRequireMention, c as loadWhatsAppChannelRuntime, i as whatsappSetupContract, l as readWhatsAppAccountLinkState, n as whatsappSetupWizardProxy, o as resolveWhatsAppGroupToolPolicy, s as formatWhatsAppConfigAllowFromEntries, t as createWhatsAppPluginBase } from "./shared-BGXdIKoz.mjs";
11
+ import { a as resolveWhatsAppGroupRequireMention, c as loadWhatsAppChannelRuntime, i as whatsappSetupContract, l as readWhatsAppAccountLinkState, n as whatsappSetupWizardProxy, o as resolveWhatsAppGroupToolPolicy, s as formatWhatsAppConfigAllowFromEntries, t as createWhatsAppPluginBase } from "./shared-Bz5KSNaw.mjs";
12
12
  import { t as whatsappCommandPolicy } from "./command-policy-BIOSHySD.mjs";
13
13
  import { f as readWebAuthExistsForDecision, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-BLlwNwk9.mjs";
14
14
  import { createActionGate as createActionGate$1 } from "openclaw/plugin-sdk/channel-actions";
@@ -66,7 +66,11 @@ const whatsappApproval = createApproverRestrictedNativeApprovalCapabilityFromFor
66
66
  }, "plugin") }
67
67
  },
68
68
  createNativeRuntime: (routing) => createLazyChannelApprovalNativeRuntimeAdapter({
69
- eventKinds: ["exec", "plugin"],
69
+ eventKinds: [
70
+ "exec",
71
+ "plugin",
72
+ "system-agent"
73
+ ],
70
74
  isConfigured: ({ cfg, accountId, context }) => Boolean(context) && routing.canAnyApprovalPotentiallyRouteToChannel({
71
75
  cfg,
72
76
  accountId,
@@ -78,7 +82,7 @@ const whatsappApproval = createApproverRestrictedNativeApprovalCapabilityFromFor
78
82
  approvalKind,
79
83
  request
80
84
  }),
81
- load: async () => (await import("./approval-handler.runtime-CgvhxI9D.mjs")).whatsappApprovalNativeRuntime
85
+ load: async () => (await import("./approval-handler.runtime-Dkpo_P9l.mjs")).whatsappApprovalNativeRuntime
82
86
  })
83
87
  });
84
88
  function buildWhatsAppPendingPayload(params, approvalKind) {
@@ -264,7 +268,7 @@ function createWhatsAppOutboundBase({ sendMessageWhatsApp, sendPollWhatsApp, sho
264
268
  }
265
269
  //#endregion
266
270
  //#region extensions/whatsapp/src/channel-outbound.ts
267
- const loadWhatsAppApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-C9Nq1Mee.mjs").then((n) => n.t));
271
+ const loadWhatsAppApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-S0t29Eux.mjs").then((n) => n.t));
268
272
  const loadWhatsAppQuestionReactionsModule = createLazyRuntimeModule(() => import("./question-reactions-CP6JdAfC.mjs").then((n) => n.n));
269
273
  function normalizeWhatsAppChannelPayloadText(text) {
270
274
  return normalizeWhatsAppPayloadTextPreservingIndentation(text);
@@ -1,9 +1,9 @@
1
1
  import { startWebLoginWithQr as startWebLoginWithQr$1, waitForWebLogin as waitForWebLogin$1 } from "../login-qr-runtime.js";
2
2
  import { c as logoutWeb$1, d as readWebAuthExistsBestEffort$1, f as readWebAuthExistsForDecision$1, g as readWebSelfId$1, h as readWebAuthState$1, m as readWebAuthSnapshotBestEffort$1, o as getWebAuthAgeMs$1, p as readWebAuthSnapshot$1, s as logWebSelfId$1, x as webAuthExists$1 } from "./auth-store-BLlwNwk9.mjs";
3
3
  import { t as getActiveWebListener$1 } from "./active-listener-CDjoX9QR.mjs";
4
- import { t as monitorWebChannel$1 } from "./monitor-CZx0S7kj.mjs";
4
+ import { t as monitorWebChannel$1 } from "./monitor-BfbT-HY2.mjs";
5
5
  import { t as loginWeb$1 } from "./login-B6mR1G7c.mjs";
6
- import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-B51IvfDU.mjs";
6
+ import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-akF37VwD.mjs";
7
7
  //#region extensions/whatsapp/src/channel.runtime.ts
8
8
  function getActiveWebListener(...args) {
9
9
  return getActiveWebListener$1(...args);
@@ -1,4 +1,4 @@
1
- import { a as resolveWhatsAppGroupRequireMention, i as whatsappSetupContract, l as readWhatsAppAccountLinkState, n as whatsappSetupWizardProxy, o as resolveWhatsAppGroupToolPolicy, t as createWhatsAppPluginBase } from "./shared-BGXdIKoz.mjs";
1
+ import { a as resolveWhatsAppGroupRequireMention, i as whatsappSetupContract, l as readWhatsAppAccountLinkState, n as whatsappSetupWizardProxy, o as resolveWhatsAppGroupToolPolicy, t as createWhatsAppPluginBase } from "./shared-Bz5KSNaw.mjs";
2
2
  //#region extensions/whatsapp/src/channel.setup.ts
3
3
  const whatsappSetupPlugin = { ...createWhatsAppPluginBase({
4
4
  groups: {
@@ -13,7 +13,7 @@ import { t as BufferJSON } from "./session.runtime-DcJuO42v.mjs";
13
13
  import { _ as resolveInboundMediaMimetype, a as addWhatsAppImagePreviewFields, c as extractContextInfo, d as extractMediaKind, f as extractMentionedJids, g as projectWhatsAppInboundMessage, h as hasInboundUserContent, i as resolveWhatsAppOutboundMentions, l as extractExternalAdReplyContext, n as addWhatsAppOutboundMentionsToContent, o as describeReplyContext, p as extractText, r as mayContainWhatsAppOutboundMention, s as extractContactContext, t as createWebSendApi, u as extractLocationData } from "./send-api-BkGtYGVg.mjs";
14
14
  import { t as resolveWhatsAppRuntimeGroupPolicy } from "./runtime-group-policy-DeSRFXEV.mjs";
15
15
  import { c as computeBackoff, d as resolveReconnectPolicy, f as sleepWithAbort, l as newConnectionId, n as WHATSAPP_WATCHDOG_TIMEOUT_ERROR, r as WhatsAppConnectionController, s as DEFAULT_RECONNECT_POLICY, u as resolveHeartbeatSeconds } from "./connection-controller-DdJ3ZYk3.mjs";
16
- import { n as maybeResolveWhatsAppApprovalReaction } from "./approval-reactions-C9Nq1Mee.mjs";
16
+ import { n as maybeResolveWhatsAppApprovalReaction } from "./approval-reactions-S0t29Eux.mjs";
17
17
  import { t as maybeResolveWhatsAppQuestionReaction } from "./question-reactions-CP6JdAfC.mjs";
18
18
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
19
19
  import { filterSupplementalContextItems, resolvePinnedMainDmOwnerFromAllowlist } from "openclaw/plugin-sdk/security-runtime";
@@ -2,7 +2,7 @@ import { a as resolveWhatsAppAccount, o as resolveWhatsAppAuthDir } from "./acco
2
2
  import { r as resolveDefaultWhatsAppAccountId } from "./account-ids-CB5SOWjc.mjs";
3
3
  import { r as hasWebCredsSync } from "./creds-files-W6B3EMZ8.mjs";
4
4
  import { a as normalizeWhatsAppAllowFromEntries, o as normalizeWhatsAppAllowFromEntry } from "./normalize-target-CugRyONv.mjs";
5
- import { r as whatsappSetupAdapter } from "./shared-BGXdIKoz.mjs";
5
+ import { r as whatsappSetupAdapter } from "./shared-Bz5KSNaw.mjs";
6
6
  import { formatCliCommand, formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
7
7
  import { DEFAULT_ACCOUNT_ID, createSetupTranslator, splitSetupEntries } from "openclaw/plugin-sdk/setup";
8
8
  //#region extensions/whatsapp/src/setup-finalize.ts
@@ -0,0 +1,3 @@
1
+ import { t as whatsappSetupPlugin } from "./channel.setup-BhDdl2Ne.mjs";
2
+ import "../setup-plugin-api.js";
3
+ export { whatsappSetupPlugin };
@@ -36,7 +36,7 @@ const whatsappSetupWizard = {
36
36
  },
37
37
  resolveShouldPromptAccountIds: ({ shouldPromptAccountIds }) => shouldPromptAccountIds,
38
38
  credentials: [],
39
- finalize: async (params) => await (await import("./setup-finalize-CQGl6GiM.mjs")).finalizeWhatsAppSetup(params),
39
+ finalize: async (params) => await (await import("./setup-finalize-CEXYNKnx.mjs")).finalizeWhatsAppSetup(params),
40
40
  disable: (cfg) => setSetupChannelEnabled(cfg, channel, false),
41
41
  onAccountRecorded: (accountId, options) => {
42
42
  options?.onAccountId?.(channel, accountId);
@@ -27,7 +27,7 @@ async function readWhatsAppAccountLinkState(authDir) {
27
27
  }
28
28
  const loadWhatsAppChannelRuntime = createLazyRuntimeModule(async () => {
29
29
  await loadWhatsAppAuthStore();
30
- return await import("./channel.runtime-y-t7P-gt.mjs");
30
+ return await import("./channel.runtime-RzZe__SD.mjs");
31
31
  });
32
32
  //#endregion
33
33
  //#region extensions/whatsapp/src/config-accessors.ts
@@ -79,7 +79,7 @@ function applyGroupAllowFromFromStore(params) {
79
79
  if (!section || typeof section !== "object" || params.storeAllowFrom.length === 0) return params.cfg;
80
80
  let changed = false;
81
81
  const maybeApply = (prefix, holder) => {
82
- if (holder.groupPolicy !== "allowlist") return;
82
+ if (holder.groupPolicy !== "open") return;
83
83
  const allowFrom = Array.isArray(holder.allowFrom) ? holder.allowFrom : [];
84
84
  const groupAllowFrom = Array.isArray(holder.groupAllowFrom) ? holder.groupAllowFrom : [];
85
85
  if (allowFrom.length > 0 || groupAllowFrom.length > 0) return;
@@ -116,7 +116,7 @@ async function applyWhatsAppSecurityConfigFixes(params) {
116
116
  //#region extensions/whatsapp/src/shared.ts
117
117
  const WHATSAPP_CHANNEL = "whatsapp";
118
118
  async function loadWhatsAppSetupSurface() {
119
- return await import("./setup-surface-B51IvfDU.mjs");
119
+ return await import("./setup-surface-akF37VwD.mjs");
120
120
  }
121
121
  const whatsappSetupWizardProxy = createWhatsAppSetupWizardProxy(async () => (await loadWhatsAppSetupSurface()).whatsappSetupWizard);
122
122
  const whatsappConfigAdapter = createScopedChannelConfigAdapter({
package/dist/api.js CHANGED
@@ -4,10 +4,10 @@ import { a as normalizeWhatsAppAllowFromEntries, c as normalizeWhatsAppTarget, i
4
4
  import { t as resolveWhatsAppOutboundTarget } from "./.setup/resolve-outbound-target-CHYl534S.mjs";
5
5
  import { c as toWhatsappJid, i as markdownToWhatsApp, l as toWhatsappJidWithLid, n as isSelfChatMode, r as jidToE164, s as resolveJidToE164, t as assertWebChannel } from "./.setup/targets-runtime-RBjx3pg_.mjs";
6
6
  import { n as resolveUserPath, t as normalizeE164 } from "./.setup/text-runtime-CHl0iPYe.mjs";
7
- import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS, t as whatsappPlugin } from "./.setup/channel-Dhl5A0do.mjs";
8
- import { a as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupToolPolicy } from "./.setup/shared-BGXdIKoz.mjs";
7
+ import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS, t as whatsappPlugin } from "./.setup/channel-Bx4V4MFn.mjs";
8
+ import { a as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupToolPolicy } from "./.setup/shared-Bz5KSNaw.mjs";
9
9
  import { t as whatsappCommandPolicy } from "./.setup/command-policy-BIOSHySD.mjs";
10
- import { t as whatsappSetupPlugin } from "./.setup/channel.setup-DWNu3iNB.mjs";
10
+ import { t as whatsappSetupPlugin } from "./.setup/channel.setup-BhDdl2Ne.mjs";
11
11
  import { t as DEFAULT_WEB_MEDIA_BYTES } from "./.setup/constants-C7m81BNe.mjs";
12
12
  import { a as waitForWaConnection, o as DEFAULT_WHATSAPP_SOCKET_TIMING, r as createWaSocket, s as createWhatsAppSocketOperationTimeoutAdapter } from "./.setup/socket-close-Ci2nLeBQ.mjs";
13
13
  import { n as getStatusCode, t as formatError } from "./.setup/session-errors-JuazczrA.mjs";
@@ -1,2 +1,2 @@
1
- import { t as whatsappPlugin } from "./.setup/channel-Dhl5A0do.mjs";
1
+ import { t as whatsappPlugin } from "./.setup/channel-Bx4V4MFn.mjs";
2
2
  export { whatsappPlugin };
@@ -10,7 +10,7 @@ import { n as resolveWebAccountId, t as getActiveWebListener } from "./.setup/ac
10
10
  import { a as waitForWaConnection, i as newConnectionId, r as createWaSocket } from "./.setup/socket-close-Ci2nLeBQ.mjs";
11
11
  import { n as getStatusCode, t as formatError } from "./.setup/session-errors-JuazczrA.mjs";
12
12
  import { p as extractText, s as extractContactContext, u as extractLocationData } from "./.setup/send-api-BkGtYGVg.mjs";
13
- import { a as loadWebMediaRaw, c as monitorWebInbox, i as loadWebMedia, l as resetWebInboundDedupe, n as LocalMediaAccessError, o as optimizeImageToJpeg, r as getDefaultLocalRoots, s as optimizeImageToPng, t as monitorWebChannel } from "./.setup/monitor-CZx0S7kj.mjs";
13
+ import { a as loadWebMediaRaw, c as monitorWebInbox, i as loadWebMedia, l as resetWebInboundDedupe, n as LocalMediaAccessError, o as optimizeImageToJpeg, r as getDefaultLocalRoots, s as optimizeImageToPng, t as monitorWebChannel } from "./.setup/monitor-BfbT-HY2.mjs";
14
14
  import { t as loginWeb } from "./.setup/login-B6mR1G7c.mjs";
15
15
  import { HEARTBEAT_PROMPT, HEARTBEAT_TOKEN, SILENT_REPLY_TOKEN, stripHeartbeatToken } from "openclaw/plugin-sdk/reply-runtime";
16
16
  export { DEFAULT_WEB_MEDIA_BYTES, HEARTBEAT_PROMPT, HEARTBEAT_TOKEN, LocalMediaAccessError, SILENT_REPLY_TOKEN, WA_WEB_AUTH_DIR, WHATSAPP_AUTH_UNSTABLE_CODE, WhatsAppAuthUnstableError, createWaSocket, createWhatsAppLoginTool, extractContactContext, extractLocationData, extractText, formatError, formatWhatsAppWebAuthStatusState, getActiveWebListener, getDefaultLocalRoots, getStatusCode, getWebAuthAgeMs, handleWhatsAppAction, hasWebCredsSync, loadWebMedia, loadWebMediaRaw, logWebSelfId, loginWeb, logoutWeb, monitorWebChannel, monitorWebInbox, newConnectionId, optimizeImageToJpeg, optimizeImageToPng, pickWebChannel, readCredsJsonRaw, readWebAuthExistsBestEffort, readWebAuthExistsForDecision, readWebAuthSnapshot, readWebAuthSnapshotBestEffort, readWebAuthState, readWebSelfId, readWebSelfIdentity, readWebSelfIdentityForDecision, resetWebInboundDedupe, resolveDefaultWebAuthDir, resolveWebAccountId, resolveWebCredsBackupPath, resolveWebCredsPath, restoreCredsFromBackupIfNeeded, sendMessageWhatsApp, sendPollWhatsApp, sendReactionWhatsApp, sendTypingWhatsApp, setWhatsAppRuntime, startWebLoginWithQr, stripHeartbeatToken, waitForCredsSaveQueue, waitForCredsSaveQueueWithTimeout, waitForWaConnection, waitForWebLogin, webAuthExists, whatsAppActionRuntime, writeCredsJsonAtomically };
@@ -5,7 +5,7 @@ var setup_entry_default = defineBundledChannelSetupEntry({
5
5
  importMetaUrl: import.meta.url,
6
6
  features: { legacySessionSurfaces: true },
7
7
  plugin: {
8
- specifier: fileURLToPath(new URL(".setup/setup-plugin-api-CNoGyXrL.mjs", import.meta.url).href),
8
+ specifier: fileURLToPath(new URL(".setup/setup-plugin-api-Cza7x2wL.mjs", import.meta.url).href),
9
9
  exportName: "whatsappSetupPlugin"
10
10
  },
11
11
  legacySessionSurface: {
@@ -1,2 +1,2 @@
1
- import { t as whatsappSetupPlugin } from "./.setup/channel.setup-DWNu3iNB.mjs";
1
+ import { t as whatsappSetupPlugin } from "./.setup/channel.setup-BhDdl2Ne.mjs";
2
2
  export { whatsappSetupPlugin };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/whatsapp",
3
- "version": "2026.8.33",
3
+ "version": "2026.8.35",
4
4
  "description": "OpenClaw WhatsApp channel plugin for WhatsApp Web chats.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,7 +13,7 @@
13
13
  "typebox": "1.3.17"
14
14
  },
15
15
  "peerDependencies": {
16
- "openclaw": ">=2026.8.33"
16
+ "openclaw": ">=2026.8.35"
17
17
  },
18
18
  "peerDependenciesMeta": {
19
19
  "openclaw": {
@@ -65,10 +65,10 @@
65
65
  "minHostVersion": ">=2026.4.25"
66
66
  },
67
67
  "compat": {
68
- "pluginApi": ">=2026.8.33"
68
+ "pluginApi": ">=2026.8.35"
69
69
  },
70
70
  "build": {
71
- "openclawVersion": "2026.8.33"
71
+ "openclawVersion": "2026.8.35"
72
72
  },
73
73
  "release": {
74
74
  "publishToClawHub": true,
@@ -1,3 +0,0 @@
1
- import { t as whatsappSetupPlugin } from "./channel.setup-DWNu3iNB.mjs";
2
- import "../setup-plugin-api.js";
3
- export { whatsappSetupPlugin };