@openclaw/whatsapp 2026.9.2 → 2026.9.3
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 +3 -3
- package/dist/{approval-handler.runtime-C2cpkbpY.js → approval-handler.runtime-DGJEaoqh.js} +1 -1
- package/dist/{approval-reactions-DrZe-NmN.js → approval-reactions-DSFH6Mtx.js} +20 -53
- package/dist/{channel-dwfgnadr.js → channel-BeBrHPVa.js} +3 -3
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.runtime-Bn3K5Ygb.js → channel.runtime-qi6Zbi9p.js} +2 -2
- package/dist/{channel.setup-DckQm9ma.js → channel.setup-DhuZ51Kg.js} +1 -1
- package/dist/{monitor-Bc6DC5jl.js → monitor-DNGfO3k0.js} +33 -23
- package/dist/runtime-api.js +1 -1
- package/dist/{setup-finalize-gLmc3FTV.js → setup-finalize-Bp-4QnVw.js} +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-twIi4TdN.js → setup-surface-B5UnuLT_.js} +1 -1
- package/dist/{shared-ByeKDmh0.js → shared-D6cUWXiq.js} +2 -2
- package/openclaw.plugin.json +5 -1
- package/package.json +4 -4
package/dist/api.js
CHANGED
|
@@ -4,10 +4,10 @@ import { a as normalizeWhatsAppAllowFromEntries, c as normalizeWhatsAppTarget, i
|
|
|
4
4
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-1GqbT1uX.js";
|
|
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 "./targets-runtime-RBjx3pg_.js";
|
|
6
6
|
import { n as resolveUserPath, t as normalizeE164 } from "./text-runtime-DyfmcATV.js";
|
|
7
|
-
import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS, t as whatsappPlugin } from "./channel-
|
|
8
|
-
import { a as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupToolPolicy } from "./shared-
|
|
7
|
+
import { n as WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS, t as whatsappPlugin } from "./channel-BeBrHPVa.js";
|
|
8
|
+
import { a as resolveWhatsAppGroupRequireMention, o as resolveWhatsAppGroupToolPolicy } from "./shared-D6cUWXiq.js";
|
|
9
9
|
import { t as whatsappCommandPolicy } from "./command-policy-BIOSHySD.js";
|
|
10
|
-
import { t as whatsappSetupPlugin } from "./channel.setup-
|
|
10
|
+
import { t as whatsappSetupPlugin } from "./channel.setup-DhuZ51Kg.js";
|
|
11
11
|
import { t as DEFAULT_WEB_MEDIA_BYTES } from "./constants-C7m81BNe.js";
|
|
12
12
|
import { a as waitForWaConnection, o as DEFAULT_WHATSAPP_SOCKET_TIMING, r as createWaSocket, s as createWhatsAppSocketOperationTimeoutAdapter } from "./socket-close-B3X9uerq.js";
|
|
13
13
|
import { n as getStatusCode, t as formatError } from "./session-errors-JuazczrA.js";
|
|
@@ -4,7 +4,7 @@ import { s as normalizeWhatsAppMessagingTarget } from "./normalize-target-CugRyO
|
|
|
4
4
|
import { i as sendTypingWhatsApp, t as sendMessageWhatsApp } from "./send-BDDGPxav.js";
|
|
5
5
|
import { i as getWhatsAppRuntime } from "./runtime-BLlToOi6.js";
|
|
6
6
|
import "./normalize-C7Hkc_vE.js";
|
|
7
|
-
import { i as unregisterWhatsAppApprovalReactionTarget, r as registerWhatsAppApprovalReactionTarget } from "./approval-reactions-
|
|
7
|
+
import { i as unregisterWhatsAppApprovalReactionTarget, r as registerWhatsAppApprovalReactionTarget } from "./approval-reactions-DSFH6Mtx.js";
|
|
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";
|
|
@@ -2,9 +2,8 @@ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
|
2
2
|
import { a as resolveWhatsAppAccount } from "./accounts-CiKHiuEe.js";
|
|
3
3
|
import { n as getOptionalWhatsAppRuntime } from "./runtime-BLlToOi6.js";
|
|
4
4
|
import { c as getWhatsAppApprovalApprovers, l as whatsappApprovalAuth } from "./group-session-key-BmVDSPr1.js";
|
|
5
|
-
import { isApprovalNotFoundError } from "openclaw/plugin-sdk/error-runtime";
|
|
6
5
|
import { createLazyRuntimeSurface } from "openclaw/plugin-sdk/lazy-runtime";
|
|
7
|
-
import { approvalReactionDecisionSetsMatch, buildApprovalReactionDeliveredBindingMarker, createApprovalReactionTargetStore, listApprovalReactionBindings, readApprovalReactionDecisionList, readApprovalReactionDeliveredBinding, readApprovalReactionPresentationBinding, resolveTypedApprovalReactionTarget } from "openclaw/plugin-sdk/approval-reaction-runtime";
|
|
6
|
+
import { approvalReactionDecisionSetsMatch, buildApprovalReactionDeliveredBindingMarker, createApprovalReactionTargetStore, listApprovalReactionBindings, readApprovalReactionDecisionList, readApprovalReactionDeliveredBinding, readApprovalReactionPresentationBinding, readApprovalReactionTargetRecord, resolveTypedApprovalReactionTarget, settleApprovalReaction } from "openclaw/plugin-sdk/approval-reaction-runtime";
|
|
8
7
|
import { createPluginStateErrorReporter } from "openclaw/plugin-sdk/plugin-state-runtime";
|
|
9
8
|
//#region extensions/whatsapp/src/approval-reactions.ts
|
|
10
9
|
var approval_reactions_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -28,7 +27,7 @@ const whatsappApprovalReactionTargets = createApprovalReactionTargetStore({
|
|
|
28
27
|
defaultTtlMs: DEFAULT_REACTION_TARGET_TTL_MS,
|
|
29
28
|
openStore: (storeParams) => getOptionalWhatsAppRuntime()?.state.openKeyedStore(storeParams),
|
|
30
29
|
logPersistentError: reportPersistentApprovalReactionError,
|
|
31
|
-
readPersistedTarget
|
|
30
|
+
readPersistedTarget: readApprovalReactionTargetRecord
|
|
32
31
|
});
|
|
33
32
|
function buildReactionTargetKey(params) {
|
|
34
33
|
const accountId = params.accountId.trim();
|
|
@@ -52,17 +51,6 @@ function reportApprovalBindingCorrelationMismatch(binding) {
|
|
|
52
51
|
});
|
|
53
52
|
} catch {}
|
|
54
53
|
}
|
|
55
|
-
function readPersistedTarget(target) {
|
|
56
|
-
const value = target;
|
|
57
|
-
if (!value || typeof value.approvalId !== "string" || value.approvalKind !== "exec" && value.approvalKind !== "plugin") return null;
|
|
58
|
-
const allowedDecisions = readApprovalReactionDecisionList(value.allowedDecisions);
|
|
59
|
-
if (!allowedDecisions) return null;
|
|
60
|
-
return {
|
|
61
|
-
approvalId: value.approvalId,
|
|
62
|
-
approvalKind: value.approvalKind,
|
|
63
|
-
allowedDecisions
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
54
|
const APPROVAL_ID_LINE_RE = /^\s*ID:\s*(\S(?:.*\S)?)\s*$/i;
|
|
67
55
|
const APPROVAL_KIND_LINE_RE = /^\s*(?:\S+\s+)?(Exec|Plugin) approval required\s*$/i;
|
|
68
56
|
function visibleApprovalBindingMatches(text, binding) {
|
|
@@ -264,26 +252,8 @@ async function maybeResolveWhatsAppApprovalReaction(params) {
|
|
|
264
252
|
params.logVerboseMessage?.(`whatsapp: approval reaction ignored for ${target.approvalId}; missing actor identity`);
|
|
265
253
|
return true;
|
|
266
254
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
accountId: params.accountId
|
|
270
|
-
}).length === 0) {
|
|
271
|
-
params.logVerboseMessage?.(`whatsapp: approval reaction denied id=${target.approvalId}; reactions require explicit approvers`);
|
|
272
|
-
return true;
|
|
273
|
-
}
|
|
274
|
-
if (!whatsappApprovalAuth.authorizeActorAction({
|
|
275
|
-
cfg: params.cfg,
|
|
276
|
-
accountId: params.accountId,
|
|
277
|
-
senderId: actorId,
|
|
278
|
-
action: "approve",
|
|
279
|
-
approvalKind: target.approvalKind
|
|
280
|
-
}).authorized) {
|
|
281
|
-
params.logVerboseMessage?.(`whatsapp: approval reaction denied id=${target.approvalId} sender=${actorId}`);
|
|
282
|
-
return true;
|
|
283
|
-
}
|
|
284
|
-
const resolveApprovalOverGateway = await loadResolveApprovalOverGateway();
|
|
285
|
-
try {
|
|
286
|
-
const result = await resolveApprovalOverGateway({
|
|
255
|
+
await settleApprovalReaction({
|
|
256
|
+
request: {
|
|
287
257
|
cfg: params.cfg,
|
|
288
258
|
approvalId: target.approvalId,
|
|
289
259
|
approvalKind: target.approvalKind,
|
|
@@ -292,28 +262,25 @@ async function maybeResolveWhatsAppApprovalReaction(params) {
|
|
|
292
262
|
accountId: params.accountId,
|
|
293
263
|
senderId: actorId,
|
|
294
264
|
gatewayUrl: params.gatewayUrl
|
|
295
|
-
}
|
|
296
|
-
|
|
265
|
+
},
|
|
266
|
+
approvers: getWhatsAppApprovalApprovers({
|
|
267
|
+
cfg: params.cfg,
|
|
268
|
+
accountId: params.accountId
|
|
269
|
+
}),
|
|
270
|
+
authorizeActorAction: (input) => whatsappApprovalAuth.authorizeActorAction(input),
|
|
271
|
+
loadResolver: loadResolveApprovalOverGateway,
|
|
272
|
+
clearTarget: () => unregisterWhatsAppApprovalReactionTarget({
|
|
297
273
|
accountId: params.accountId,
|
|
298
274
|
remoteJid: target.remoteJid,
|
|
299
275
|
messageId: event.messageId
|
|
300
|
-
})
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
remoteJid: target.remoteJid,
|
|
309
|
-
messageId: event.messageId
|
|
310
|
-
});
|
|
311
|
-
params.logVerboseMessage?.(`whatsapp: approval reaction ignored for expired approval id=${target.approvalId} sender=${actorId}`);
|
|
312
|
-
return true;
|
|
313
|
-
}
|
|
314
|
-
params.logVerboseMessage?.(`whatsapp: approval reaction failed id=${target.approvalId} sender=${actorId}: ${String(error)}`);
|
|
315
|
-
return true;
|
|
316
|
-
}
|
|
276
|
+
}),
|
|
277
|
+
onResolved: (result) => {
|
|
278
|
+
const canonicalDecision = "decision" in result.approval ? ` decision=${result.approval.decision}` : "";
|
|
279
|
+
params.logVerboseMessage?.(result.applied ? `whatsapp: approval reaction applied id=${target.approvalId} sender=${actorId} status=${result.approval.status}${canonicalDecision}` : `whatsapp: approval reaction already resolved id=${target.approvalId} sender=${actorId} status=${result.approval.status}${canonicalDecision}`);
|
|
280
|
+
},
|
|
281
|
+
logVerboseMessage: params.logVerboseMessage
|
|
282
|
+
});
|
|
283
|
+
return true;
|
|
317
284
|
}
|
|
318
285
|
function clearWhatsAppApprovalReactionTargetsForTest() {
|
|
319
286
|
whatsappApprovalReactionTargets.clearForTest();
|
|
@@ -8,7 +8,7 @@ import "./normalize-C7Hkc_vE.js";
|
|
|
8
8
|
import { c as toWhatsappJid } from "./targets-runtime-RBjx3pg_.js";
|
|
9
9
|
import "./text-runtime-DyfmcATV.js";
|
|
10
10
|
import { c as getWhatsAppApprovalApprovers, l as whatsappApprovalAuth, s as lookupInboundMessageMetaForTarget, t as resolveWhatsAppGroupSessionKey } from "./group-session-key-BmVDSPr1.js";
|
|
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-
|
|
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-D6cUWXiq.js";
|
|
12
12
|
import { t as whatsappCommandPolicy } from "./command-policy-BIOSHySD.js";
|
|
13
13
|
import { f as readWebAuthExistsForDecision, n as WHATSAPP_AUTH_UNSTABLE_CODE } from "./auth-store-ZWaclAbd.js";
|
|
14
14
|
import { createActionGate as createActionGate$1 } from "openclaw/plugin-sdk/channel-actions";
|
|
@@ -82,7 +82,7 @@ const whatsappApproval = createApproverRestrictedNativeApprovalCapabilityFromFor
|
|
|
82
82
|
approvalKind,
|
|
83
83
|
request
|
|
84
84
|
}),
|
|
85
|
-
load: async () => (await import("./approval-handler.runtime-
|
|
85
|
+
load: async () => (await import("./approval-handler.runtime-DGJEaoqh.js")).whatsappApprovalNativeRuntime
|
|
86
86
|
})
|
|
87
87
|
});
|
|
88
88
|
function buildWhatsAppPendingPayload(params, approvalKind) {
|
|
@@ -250,7 +250,7 @@ function createWhatsAppOutboundBase({ sendMessageWhatsApp, sendPollWhatsApp, sho
|
|
|
250
250
|
}
|
|
251
251
|
//#endregion
|
|
252
252
|
//#region extensions/whatsapp/src/channel-outbound.ts
|
|
253
|
-
const loadWhatsAppApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-
|
|
253
|
+
const loadWhatsAppApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-DSFH6Mtx.js").then((n) => n.t));
|
|
254
254
|
const loadWhatsAppQuestionReactionsModule = createLazyRuntimeModule(() => import("./question-reactions-bbe0Qnjn.js").then((n) => n.n));
|
|
255
255
|
function normalizeWhatsAppChannelPayloadText(text) {
|
|
256
256
|
return normalizeWhatsAppPayloadTextPreservingIndentation(text);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as whatsappPlugin } from "./channel-
|
|
1
|
+
import { t as whatsappPlugin } from "./channel-BeBrHPVa.js";
|
|
2
2
|
export { whatsappPlugin };
|
|
@@ -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-ZWaclAbd.js";
|
|
3
3
|
import { t as getActiveWebListener$1 } from "./active-listener-BEjWsCNM.js";
|
|
4
|
-
import { t as monitorWebChannel$1 } from "./monitor-
|
|
4
|
+
import { t as monitorWebChannel$1 } from "./monitor-DNGfO3k0.js";
|
|
5
5
|
import { t as loginWeb$1 } from "./login-6j2iP9nR.js";
|
|
6
|
-
import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-
|
|
6
|
+
import { whatsappSetupWizard as whatsappSetupWizard$1 } from "./setup-surface-B5UnuLT_.js";
|
|
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-
|
|
1
|
+
import { a as resolveWhatsAppGroupRequireMention, i as whatsappSetupContract, l as readWhatsAppAccountLinkState, n as whatsappSetupWizardProxy, o as resolveWhatsAppGroupToolPolicy, t as createWhatsAppPluginBase } from "./shared-D6cUWXiq.js";
|
|
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-Nsqaehbd.js";
|
|
|
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-C_Zn4Ij-.js";
|
|
14
14
|
import { t as resolveWhatsAppRuntimeGroupPolicy } from "./runtime-group-policy-DeSRFXEV.js";
|
|
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-DNp6U1NN.js";
|
|
16
|
-
import { n as maybeResolveWhatsAppApprovalReaction } from "./approval-reactions-
|
|
16
|
+
import { n as maybeResolveWhatsAppApprovalReaction } from "./approval-reactions-DSFH6Mtx.js";
|
|
17
17
|
import { t as maybeResolveWhatsAppQuestionReaction } from "./question-reactions-bbe0Qnjn.js";
|
|
18
18
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
19
19
|
import { createAckReactionHandle, createStatusReactionController, logAckFailure, removeAckReactionHandleAfterReply, shouldAckReaction } from "openclaw/plugin-sdk/channel-feedback";
|
|
@@ -1342,6 +1342,16 @@ function createWhatsAppMessageDeliveryCoordinator(options) {
|
|
|
1342
1342
|
const preparation = durableId ? preparedInboundByDurableId.get(durableId) : void 0;
|
|
1343
1343
|
if (durableId) preparedInboundByDurableId.delete(durableId);
|
|
1344
1344
|
if (context.skipRecentOutboundEcho === true) return "completed";
|
|
1345
|
+
if (await maybeResolveWhatsAppApprovalReaction({
|
|
1346
|
+
cfg: options.loadConfig?.() ?? options.cfg,
|
|
1347
|
+
accountId: options.accountId,
|
|
1348
|
+
msg,
|
|
1349
|
+
selfJid: self.jid,
|
|
1350
|
+
selfLid: self.lid,
|
|
1351
|
+
resolveInboundJid,
|
|
1352
|
+
resolveReactionTargetJids,
|
|
1353
|
+
logVerboseMessage: (message) => logWhatsAppVerbose$1(options.verbose, message)
|
|
1354
|
+
})) return "completed";
|
|
1345
1355
|
const prepared = await preparation;
|
|
1346
1356
|
if (prepared === null) return "completed";
|
|
1347
1357
|
const inbound = prepared ?? await normalizeInboundMessage(msg);
|
|
@@ -1394,16 +1404,22 @@ function createWhatsAppMessageDeliveryCoordinator(options) {
|
|
|
1394
1404
|
for (const msg of upsert.messages ?? []) {
|
|
1395
1405
|
rememberBaileysMessage(msg.key?.remoteJid, msg.key?.id, msg.message);
|
|
1396
1406
|
const receiveOrder = nextReceiveOrder++;
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
+
let approvalReactionResolved = false;
|
|
1408
|
+
try {
|
|
1409
|
+
approvalReactionResolved = await maybeResolveWhatsAppApprovalReaction({
|
|
1410
|
+
cfg: options.loadConfig?.() ?? options.cfg,
|
|
1411
|
+
accountId: options.accountId,
|
|
1412
|
+
msg,
|
|
1413
|
+
selfJid: self.jid,
|
|
1414
|
+
selfLid: self.lid,
|
|
1415
|
+
resolveInboundJid,
|
|
1416
|
+
resolveReactionTargetJids,
|
|
1417
|
+
logVerboseMessage: (message) => logWhatsAppVerbose$1(options.verbose, message)
|
|
1418
|
+
});
|
|
1419
|
+
} catch (error) {
|
|
1420
|
+
inboundLogger.warn({ error: formatError(error) }, "whatsapp approval reaction resolution failed; admitting reaction for durable replay");
|
|
1421
|
+
}
|
|
1422
|
+
if (approvalReactionResolved) continue;
|
|
1407
1423
|
const receivedAt = Date.now();
|
|
1408
1424
|
const skipStaleAppend = shouldSkipStaleAppend(msg, upsert.type);
|
|
1409
1425
|
const skipRecentOutboundEcho = shouldSkipRecentOutboundEcho(msg);
|
|
@@ -2574,21 +2590,15 @@ function resolvePeerId(msg) {
|
|
|
2574
2590
|
}
|
|
2575
2591
|
//#endregion
|
|
2576
2592
|
//#region extensions/whatsapp/src/system-prompt.ts
|
|
2593
|
+
function resolveWhatsAppSystemPrompt(prompts, targetId) {
|
|
2594
|
+
if (!targetId) return;
|
|
2595
|
+
return (prompts?.[targetId]?.systemPrompt ?? prompts?.["*"]?.systemPrompt)?.trim() || void 0;
|
|
2596
|
+
}
|
|
2577
2597
|
function resolveWhatsAppGroupSystemPrompt(params) {
|
|
2578
|
-
|
|
2579
|
-
const groups = params.accountConfig?.groups;
|
|
2580
|
-
const specific = groups?.[params.groupId];
|
|
2581
|
-
if (specific != null && specific.systemPrompt != null) return specific.systemPrompt.trim() || void 0;
|
|
2582
|
-
const wildcard = groups?.["*"]?.systemPrompt;
|
|
2583
|
-
return wildcard != null ? wildcard.trim() || void 0 : void 0;
|
|
2598
|
+
return resolveWhatsAppSystemPrompt(params.accountConfig?.groups, params.groupId);
|
|
2584
2599
|
}
|
|
2585
2600
|
function resolveWhatsAppDirectSystemPrompt(params) {
|
|
2586
|
-
|
|
2587
|
-
const direct = params.accountConfig?.direct;
|
|
2588
|
-
const specific = direct?.[params.peerId];
|
|
2589
|
-
if (specific != null && specific.systemPrompt != null) return specific.systemPrompt.trim() || void 0;
|
|
2590
|
-
const wildcard = direct?.["*"]?.systemPrompt;
|
|
2591
|
-
return wildcard != null ? wildcard.trim() || void 0 : void 0;
|
|
2601
|
+
return resolveWhatsAppSystemPrompt(params.accountConfig?.direct, params.peerId);
|
|
2592
2602
|
}
|
|
2593
2603
|
//#endregion
|
|
2594
2604
|
//#region extensions/whatsapp/src/outbound-retry.ts
|
package/dist/runtime-api.js
CHANGED
|
@@ -10,7 +10,7 @@ import { n as resolveWebAccountId, t as getActiveWebListener } from "./active-li
|
|
|
10
10
|
import { a as waitForWaConnection, i as newConnectionId, r as createWaSocket } from "./socket-close-B3X9uerq.js";
|
|
11
11
|
import { n as getStatusCode, t as formatError } from "./session-errors-JuazczrA.js";
|
|
12
12
|
import { p as extractText, s as extractContactContext, u as extractLocationData } from "./send-api-C_Zn4Ij-.js";
|
|
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 "./monitor-
|
|
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 "./monitor-DNGfO3k0.js";
|
|
14
14
|
import { t as loginWeb } from "./login-6j2iP9nR.js";
|
|
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 };
|
|
@@ -2,7 +2,7 @@ import { a as resolveWhatsAppAccount, o as resolveWhatsAppAuthDir } from "./acco
|
|
|
2
2
|
import { r as resolveDefaultWhatsAppAccountId } from "./account-ids-CB5SOWjc.js";
|
|
3
3
|
import { r as hasWebCredsSync } from "./creds-files-Drg3usj1.js";
|
|
4
4
|
import { a as normalizeWhatsAppAllowFromEntries, o as normalizeWhatsAppAllowFromEntry } from "./normalize-target-CugRyONv.js";
|
|
5
|
-
import { r as whatsappSetupAdapter } from "./shared-
|
|
5
|
+
import { r as whatsappSetupAdapter } from "./shared-D6cUWXiq.js";
|
|
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
|
package/dist/setup-plugin-api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as whatsappSetupPlugin } from "./channel.setup-
|
|
1
|
+
import { t as whatsappSetupPlugin } from "./channel.setup-DhuZ51Kg.js";
|
|
2
2
|
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-
|
|
39
|
+
finalize: async (params) => await (await import("./setup-finalize-Bp-4QnVw.js")).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-
|
|
30
|
+
return await import("./channel.runtime-qi6Zbi9p.js");
|
|
31
31
|
});
|
|
32
32
|
//#endregion
|
|
33
33
|
//#region extensions/whatsapp/src/config-accessors.ts
|
|
@@ -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-
|
|
119
|
+
return await import("./setup-surface-B5UnuLT_.js");
|
|
120
120
|
}
|
|
121
121
|
const whatsappSetupWizardProxy = createWhatsAppSetupWizardProxy(async () => (await loadWhatsAppSetupSurface()).whatsappSetupWizard);
|
|
122
122
|
const whatsappConfigAdapter = createScopedChannelConfigAdapter({
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
"id": "whatsapp",
|
|
3
3
|
"doctorContract": {
|
|
4
4
|
"configRepair": true,
|
|
5
|
-
"stateMigrations":
|
|
5
|
+
"stateMigrations": [
|
|
6
|
+
{
|
|
7
|
+
"id": "whatsapp-legacy-state"
|
|
8
|
+
}
|
|
9
|
+
]
|
|
6
10
|
},
|
|
7
11
|
"name": "WhatsApp",
|
|
8
12
|
"description": "OpenClaw WhatsApp channel plugin for WhatsApp Web chats.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/whatsapp",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.3",
|
|
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.18"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
|
-
"openclaw": ">=2026.9.
|
|
16
|
+
"openclaw": ">=2026.9.3"
|
|
17
17
|
},
|
|
18
18
|
"peerDependenciesMeta": {
|
|
19
19
|
"openclaw": {
|
|
@@ -65,11 +65,11 @@
|
|
|
65
65
|
"minHostVersion": ">=2026.4.25"
|
|
66
66
|
},
|
|
67
67
|
"compat": {
|
|
68
|
-
"pluginApi": ">=2026.9.
|
|
68
|
+
"pluginApi": ">=2026.9.3"
|
|
69
69
|
},
|
|
70
70
|
"build": {
|
|
71
71
|
"bundledDist": false,
|
|
72
|
-
"openclawVersion": "2026.9.
|
|
72
|
+
"openclawVersion": "2026.9.3"
|
|
73
73
|
},
|
|
74
74
|
"release": {
|
|
75
75
|
"publishToClawHub": true,
|