@openclaw/whatsapp 2026.9.1-beta.1 → 2026.9.2
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/{accounts-BX2fZUyR.js → accounts-CiKHiuEe.js} +10 -27
- package/dist/{action-runtime-C075e6OP.js → action-runtime-CRZLhN3f.js} +2 -2
- package/dist/action-runtime-api.js +1 -1
- package/dist/action-runtime.runtime.js +1 -1
- package/dist/agent-tools-api.js +3 -3
- package/dist/api.js +10 -10
- package/dist/{approval-handler.runtime-CljxfPJz.js → approval-handler.runtime-C2cpkbpY.js} +8 -4
- package/dist/{approval-reactions-Jyr1JaAK.js → approval-reactions-DrZe-NmN.js} +7 -5
- package/dist/auth-presence.js +1 -1
- package/dist/{auth-store-CtpBqH5S.js → auth-store-ZWaclAbd.js} +8 -6
- package/dist/channel-config-api.js +1 -1
- package/dist/{channel-C4FMOZTE.js → channel-dwfgnadr.js} +56 -66
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-react-action-Bhp2BYRr.js → channel-react-action-CHeJSG9F.js} +3 -3
- package/dist/{channel.runtime-CrahUvcb.js → channel.runtime-Bn3K5Ygb.js} +4 -4
- package/dist/{channel.setup-CGcBvnpP.js → channel.setup-DckQm9ma.js} +1 -1
- package/dist/{config-schema-BQP5YCeK.js → config-schema-BYA6e_Ii.js} +6 -4
- package/dist/{connection-controller-CIYuBJrs.js → connection-controller-DNp6U1NN.js} +2 -2
- package/dist/{constants-HU41RHGI.js → constants-C7m81BNe.js} +1 -1
- package/dist/{creds-files-W6B3EMZ8.js → creds-files-Drg3usj1.js} +1 -1
- package/dist/{directory-config-P7_3U73Z.js → directory-config-CoWFw1zn.js} +3 -3
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-BPb-SjdE.js +65 -0
- package/dist/doctor-contract-api.js +21 -3
- package/dist/{group-session-key-DmFc_Cqi.js → group-session-key-BmVDSPr1.js} +11 -12
- package/dist/light-runtime-api.js +1 -1
- package/dist/{login-BkpKpndm.js → login-6j2iP9nR.js} +6 -5
- package/dist/{login-qr-DY4VFgOq.js → login-qr-DRFgI6k1.js} +9 -7
- package/dist/login-qr-runtime.js +1 -1
- package/dist/{monitor-C_Nw23PZ.js → monitor-Bc6DC5jl.js} +189 -156
- package/dist/{question-reactions-D3eAeB0i.js → question-reactions-bbe0Qnjn.js} +1 -1
- package/dist/runtime-api.js +9 -9
- package/dist/{send-DLMUc2uZ.js → send-BDDGPxav.js} +53 -28
- package/dist/{send-api-BtK45TmZ.js → send-api-C_Zn4Ij-.js} +48 -48
- package/dist/{setup-finalize-C1nij8NS.js → setup-finalize-gLmc3FTV.js} +7 -6
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-CjjqIxQP.js → setup-surface-twIi4TdN.js} +3 -3
- package/dist/{shared-BekHi69d.js → shared-ByeKDmh0.js} +13 -8
- package/dist/{socket-close-2T0_jZTN.js → socket-close-B3X9uerq.js} +10 -7
- package/dist/{targets-runtime-TMk0lGuy.js → targets-runtime-RBjx3pg_.js} +1 -2
- package/dist/{text-runtime-CaKLhowd.js → text-runtime-DyfmcATV.js} +1 -1
- package/node_modules/baileys/node_modules/process-warning/.github/dependabot.yml +42 -2
- package/node_modules/baileys/node_modules/process-warning/.github/workflows/ci.yml +12 -1
- package/node_modules/baileys/node_modules/process-warning/.github/workflows/lock-threads.yml +19 -0
- package/node_modules/baileys/node_modules/process-warning/LICENSE +1 -1
- package/node_modules/baileys/node_modules/process-warning/README.md +41 -2
- package/node_modules/baileys/node_modules/process-warning/index.js +85 -17
- package/node_modules/baileys/node_modules/process-warning/package.json +6 -7
- package/node_modules/baileys/node_modules/process-warning/test/emit-once-only.test.js +3 -3
- package/node_modules/baileys/node_modules/process-warning/test/emit-reset.test.js +4 -4
- package/node_modules/baileys/node_modules/process-warning/test/emit-unlimited.test.js +2 -2
- package/node_modules/baileys/node_modules/process-warning/test/spy-warning.test.js +143 -0
- package/node_modules/baileys/node_modules/process-warning/types/index.d.ts +15 -1
- package/node_modules/baileys/node_modules/process-warning/types/index.tst.ts +48 -0
- package/node_modules/baileys/node_modules/ws/lib/permessage-deflate.js +3 -1
- package/node_modules/baileys/node_modules/ws/package.json +1 -1
- package/node_modules/typebox/build/format/email.mjs +1 -1
- package/node_modules/typebox/build/format/idna/idn-hostname.mjs +19 -1
- package/node_modules/typebox/build/format/json_pointer.d.mts +2 -2
- package/node_modules/typebox/build/format/json_pointer.mjs +2 -2
- package/node_modules/typebox/build/format/json_pointer_uri_fragment.d.mts +2 -2
- package/node_modules/typebox/build/format/json_pointer_uri_fragment.mjs +2 -2
- package/node_modules/typebox/build/format/relative_json_pointer.d.mts +2 -2
- package/node_modules/typebox/build/format/relative_json_pointer.mjs +2 -2
- package/node_modules/typebox/build/system/memory/assign.mjs +2 -1
- package/node_modules/typebox/build/system/memory/create.mjs +3 -4
- package/node_modules/typebox/build/system/memory/discard.mjs +2 -2
- package/node_modules/typebox/build/system/memory/freeze.d.mts +4 -0
- package/node_modules/typebox/build/system/memory/freeze.mjs +6 -0
- package/node_modules/typebox/build/system/memory/update.mjs +3 -2
- package/node_modules/typebox/package.json +1 -1
- package/openclaw.plugin.json +0 -1
- package/package.json +7 -6
- package/dist/doctor-CwzVXKoE.js +0 -10
- package/node_modules/baileys/node_modules/process-warning/types/index.test-d.ts +0 -36
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { a as resolveWhatsAppAccount } from "./accounts-
|
|
2
|
+
import { a as resolveWhatsAppAccount } from "./accounts-CiKHiuEe.js";
|
|
3
3
|
import { createQuestionReactionTargetStore, questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
|
|
4
4
|
//#region extensions/whatsapp/src/question-reactions.ts
|
|
5
5
|
var question_reactions_exports = /* @__PURE__ */ __exportAll({
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { c as resolveWebCredsPath, r as hasWebCredsSync, s as resolveWebCredsBackupPath } from "./creds-files-
|
|
2
|
-
import { n as whatsAppActionRuntime, t as handleWhatsAppAction } from "./action-runtime-
|
|
3
|
-
import { i as sendTypingWhatsApp, n as sendPollWhatsApp, r as sendReactionWhatsApp, t as sendMessageWhatsApp } from "./send-
|
|
1
|
+
import { c as resolveWebCredsPath, r as hasWebCredsSync, s as resolveWebCredsBackupPath } from "./creds-files-Drg3usj1.js";
|
|
2
|
+
import { n as whatsAppActionRuntime, t as handleWhatsAppAction } from "./action-runtime-CRZLhN3f.js";
|
|
3
|
+
import { i as sendTypingWhatsApp, n as sendPollWhatsApp, r as sendReactionWhatsApp, t as sendMessageWhatsApp } from "./send-BDDGPxav.js";
|
|
4
4
|
import { a as setWhatsAppRuntime } from "./runtime-BLlToOi6.js";
|
|
5
5
|
import { startWebLoginWithQr, waitForWebLogin } from "./login-qr-runtime.js";
|
|
6
6
|
import { t as createWhatsAppLoginTool } from "./agent-tools-login-B-2qZPzc.js";
|
|
7
|
-
import { M as waitForCredsSaveQueueWithTimeout, N as writeCredsJsonAtomically, _ as readWebSelfIdentity, a as formatWhatsAppWebAuthStatusState, b as restoreCredsFromBackupIfNeeded, c as logoutWeb, d as readWebAuthExistsBestEffort, f as readWebAuthExistsForDecision, g as readWebSelfId, h as readWebAuthState, j as waitForCredsSaveQueue, l as pickWebChannel, m as readWebAuthSnapshotBestEffort, n as WHATSAPP_AUTH_UNSTABLE_CODE, o as getWebAuthAgeMs, p as readWebAuthSnapshot, r as WhatsAppAuthUnstableError, s as logWebSelfId, t as WA_WEB_AUTH_DIR, u as readCredsJsonRaw, v as readWebSelfIdentityForDecision, x as webAuthExists, y as resolveDefaultWebAuthDir } from "./auth-store-
|
|
8
|
-
import { t as DEFAULT_WEB_MEDIA_BYTES } from "./constants-
|
|
7
|
+
import { M as waitForCredsSaveQueueWithTimeout, N as writeCredsJsonAtomically, _ as readWebSelfIdentity, a as formatWhatsAppWebAuthStatusState, b as restoreCredsFromBackupIfNeeded, c as logoutWeb, d as readWebAuthExistsBestEffort, f as readWebAuthExistsForDecision, g as readWebSelfId, h as readWebAuthState, j as waitForCredsSaveQueue, l as pickWebChannel, m as readWebAuthSnapshotBestEffort, n as WHATSAPP_AUTH_UNSTABLE_CODE, o as getWebAuthAgeMs, p as readWebAuthSnapshot, r as WhatsAppAuthUnstableError, s as logWebSelfId, t as WA_WEB_AUTH_DIR, u as readCredsJsonRaw, v as readWebSelfIdentityForDecision, x as webAuthExists, y as resolveDefaultWebAuthDir } from "./auth-store-ZWaclAbd.js";
|
|
8
|
+
import { t as DEFAULT_WEB_MEDIA_BYTES } from "./constants-C7m81BNe.js";
|
|
9
9
|
import { n as resolveWebAccountId, t as getActiveWebListener } from "./active-listener-BEjWsCNM.js";
|
|
10
|
-
import { a as waitForWaConnection, i as newConnectionId, r as createWaSocket } from "./socket-close-
|
|
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
|
-
import { p as extractText, s as extractContactContext, u as extractLocationData } from "./send-api-
|
|
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-
|
|
14
|
-
import { t as loginWeb } from "./login-
|
|
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-Bc6DC5jl.js";
|
|
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 };
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { a as resolveWhatsAppAccount, c as resolveMergedWhatsAppAccountConfig, s as resolveWhatsAppMediaMaxBytes } from "./accounts-
|
|
1
|
+
import { a as resolveWhatsAppAccount, c as resolveMergedWhatsAppAccountConfig, s as resolveWhatsAppMediaMaxBytes } from "./accounts-CiKHiuEe.js";
|
|
2
2
|
import { r as resolveDefaultWhatsAppAccountId } from "./account-ids-CB5SOWjc.js";
|
|
3
3
|
import { n as isWhatsAppNewsletterJid } from "./normalize-target-CugRyONv.js";
|
|
4
4
|
import { r as getWhatsAppConnectionController } from "./connection-controller-runtime-context-DG0tuYuw.js";
|
|
5
5
|
import "./normalize-C7Hkc_vE.js";
|
|
6
|
-
import { a as markdownToWhatsAppChunks, c as toWhatsappJid } from "./targets-runtime-
|
|
7
|
-
import { a as stripToolCallXmlTags, i as sanitizeAssistantVisibleTextWithProfile, r as sanitizeAssistantVisibleText } from "./text-runtime-
|
|
6
|
+
import { a as markdownToWhatsAppChunks, c as toWhatsappJid } from "./targets-runtime-RBjx3pg_.js";
|
|
7
|
+
import { a as stripToolCallXmlTags, i as sanitizeAssistantVisibleTextWithProfile, r as sanitizeAssistantVisibleText } from "./text-runtime-DyfmcATV.js";
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
import { normalizeStringEntries, normalizeUniqueStringEntries, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
10
10
|
import { resolveReactionLevel } from "openclaw/plugin-sdk/status-helpers";
|
|
11
|
+
import { createMessageReceiptFromOutboundResults, createReplyToFanout, listMessageReceiptPlatformIds, sanitizeForPlainText } from "openclaw/plugin-sdk/channel-outbound";
|
|
11
12
|
import { formatCliCommand } from "openclaw/plugin-sdk/cli-runtime";
|
|
12
13
|
import { generateSecureUuid } from "openclaw/plugin-sdk/core";
|
|
13
14
|
import { PlatformMessageNotDispatchedError } from "openclaw/plugin-sdk/error-runtime";
|
|
@@ -22,17 +23,17 @@ import { extensionForMime, mediaKindFromMime, mimeTypeFromFilePath, normalizeMim
|
|
|
22
23
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
23
24
|
import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
|
|
24
25
|
import { createChannelPartialDeliveryError, isChannelPartialDeliveryError } from "openclaw/plugin-sdk/channel-inbound";
|
|
25
|
-
import { createMessageReceiptFromOutboundResults, listMessageReceiptPlatformIds, sanitizeForPlainText } from "openclaw/plugin-sdk/channel-outbound";
|
|
26
26
|
import { MEDIA_FFMPEG_MAX_AUDIO_DURATION_SECS, transcodeAudioBufferToOpus } from "openclaw/plugin-sdk/media-runtime";
|
|
27
27
|
import { resolveOutboundMediaUrls } from "openclaw/plugin-sdk/reply-payload";
|
|
28
28
|
//#region extensions/whatsapp/src/reaction-level.ts
|
|
29
29
|
/** Resolve the effective reaction level and its implications for WhatsApp. */
|
|
30
30
|
function resolveWhatsAppReactionLevel(params) {
|
|
31
|
+
const account = resolveMergedWhatsAppAccountConfig({
|
|
32
|
+
cfg: params.cfg,
|
|
33
|
+
accountId: params.accountId
|
|
34
|
+
});
|
|
31
35
|
return resolveReactionLevel({
|
|
32
|
-
value:
|
|
33
|
-
cfg: params.cfg,
|
|
34
|
-
accountId: params.accountId
|
|
35
|
-
}).reactionLevel,
|
|
36
|
+
value: account.reactionLevel,
|
|
36
37
|
defaultLevel: "minimal",
|
|
37
38
|
invalidFallback: "minimal"
|
|
38
39
|
});
|
|
@@ -494,8 +495,9 @@ async function sendMessageWhatsAppInActivityScope(to, body, options) {
|
|
|
494
495
|
accountId: resolvedAccountId ?? options.accountId
|
|
495
496
|
});
|
|
496
497
|
const accountIdForFormatting = resolvedAccountId ?? options.accountId;
|
|
497
|
-
const
|
|
498
|
-
const
|
|
498
|
+
const requestedLimit = options.formatting?.textLimit ?? Infinity;
|
|
499
|
+
const textLimit = Math.min(requestedLimit > 0 ? requestedLimit : Infinity, resolveTextChunkLimit(cfg, "whatsapp", accountIdForFormatting, { fallbackLimit: 4e3 }), 4096);
|
|
500
|
+
const textChunks = markdownToWhatsAppChunks(text, textLimit, tableMode, options.formatting?.chunkMode ?? resolveChunkMode(cfg, "whatsapp", accountIdForFormatting));
|
|
499
501
|
text = textChunks.shift() ?? text;
|
|
500
502
|
if (!text && !hasMedia) return {
|
|
501
503
|
messageId: "",
|
|
@@ -565,30 +567,52 @@ async function sendMessageWhatsAppInActivityScope(to, body, options) {
|
|
|
565
567
|
}
|
|
566
568
|
}
|
|
567
569
|
const accountId = Boolean(options.accountId?.trim()) ? resolvedAccountId : void 0;
|
|
568
|
-
const
|
|
570
|
+
const trailingTextChunks = [visibleTextAfterVoice, ...textChunks].filter((chunk) => Boolean(chunk));
|
|
571
|
+
const reportProgress = trailingTextChunks.length > 0 ? options.onDeliveryResult : void 0;
|
|
572
|
+
const sendOptions = options.gifPlayback || forceDocumentDelivery || accountId || documentFileName ? {
|
|
569
573
|
...options.gifPlayback ? { gifPlayback: true } : {},
|
|
570
574
|
...forceDocumentDelivery ? { asDocument: true } : {},
|
|
571
575
|
...documentFileName ? { fileName: documentFileName } : {},
|
|
572
|
-
...options.quotedMessageKey ? { quotedMessageKey: options.quotedMessageKey } : {},
|
|
573
576
|
accountId
|
|
574
577
|
} : void 0;
|
|
575
|
-
const
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
const
|
|
578
|
+
const quotedSendOptions = options.quotedMessageKey ? {
|
|
579
|
+
...sendOptions,
|
|
580
|
+
quotedMessageKey: options.quotedMessageKey
|
|
581
|
+
} : sendOptions;
|
|
582
|
+
const nextReplyToId = createReplyToFanout({
|
|
583
|
+
replyToId: options.quotedMessageKey?.id,
|
|
584
|
+
replyToIdSource: options.replyToIdSource,
|
|
585
|
+
replyToMode: options.replyToMode
|
|
586
|
+
});
|
|
587
|
+
const sendPart = async (part, buffer, mime) => {
|
|
588
|
+
await options.onPlatformSendDispatch?.();
|
|
589
|
+
const replyToId = nextReplyToId();
|
|
590
|
+
const partOptions = replyToId ? quotedSendOptions : sendOptions;
|
|
591
|
+
const accepted = requireWhatsAppAcceptedSendResult(partOptions ? await active.sendMessage(to, part, buffer, mime, partOptions) : await active.sendMessage(to, part, buffer, mime));
|
|
592
|
+
acceptedResults.push(accepted);
|
|
593
|
+
const result = {
|
|
594
|
+
messageId: accepted.messageId,
|
|
595
|
+
toJid: resolveActualSentRemoteJid(accepted, jid)
|
|
596
|
+
};
|
|
597
|
+
return {
|
|
598
|
+
...result,
|
|
599
|
+
...reportProgress ? { receipt: createMessageReceiptFromOutboundResults({
|
|
600
|
+
results: [{
|
|
601
|
+
channel: "whatsapp",
|
|
602
|
+
...result
|
|
603
|
+
}],
|
|
604
|
+
kind: buffer ? "media" : "text",
|
|
605
|
+
replyToId
|
|
606
|
+
}) } : {}
|
|
607
|
+
};
|
|
608
|
+
};
|
|
609
|
+
const result = await sendPart(text, mediaBuffer, mediaType);
|
|
610
|
+
const { messageId, toJid: sentRemoteJid } = result;
|
|
580
611
|
if (trailingTextChunks.length > 0) {
|
|
581
|
-
await
|
|
582
|
-
messageId,
|
|
583
|
-
toJid: sentRemoteJid
|
|
584
|
-
});
|
|
612
|
+
await reportProgress?.(result);
|
|
585
613
|
for (const trailingText of trailingTextChunks) {
|
|
586
|
-
const trailingResult =
|
|
587
|
-
|
|
588
|
-
await options.onDeliveryResult?.({
|
|
589
|
-
messageId: trailingResult.messageId,
|
|
590
|
-
toJid: resolveActualSentRemoteJid(trailingResult, jid)
|
|
591
|
-
});
|
|
614
|
+
const trailingResult = await sendPart(trailingText);
|
|
615
|
+
await reportProgress?.(trailingResult);
|
|
592
616
|
}
|
|
593
617
|
}
|
|
594
618
|
const durationMs = Date.now() - startedAt;
|
|
@@ -639,7 +663,8 @@ async function sendReactionWhatsApp(chatJid, messageId, emoji, options) {
|
|
|
639
663
|
messageId
|
|
640
664
|
});
|
|
641
665
|
try {
|
|
642
|
-
const
|
|
666
|
+
const jid = toWhatsappJid(chatJid);
|
|
667
|
+
const redactedJid = redactIdentifier(jid);
|
|
643
668
|
outboundLog.info(`Sending reaction "${emoji}" -> message ${messageId}`);
|
|
644
669
|
logger.info({
|
|
645
670
|
chatJid: redactedJid,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as isWhatsAppNewsletterJid } from "./normalize-target-CugRyONv.js";
|
|
2
|
-
import { _ as resolveWhatsAppDocumentFileName, f as mergeWhatsAppAcceptedSendError, m as rememberWhatsAppAcceptedSend, p as normalizeWhatsAppSendResult, u as combineWhatsAppSendResults } from "./send-
|
|
2
|
+
import { _ as resolveWhatsAppDocumentFileName, f as mergeWhatsAppAcceptedSendError, m as rememberWhatsAppAcceptedSend, p as normalizeWhatsAppSendResult, u as combineWhatsAppSendResults } from "./send-BDDGPxav.js";
|
|
3
3
|
import "./normalize-C7Hkc_vE.js";
|
|
4
|
-
import { c as toWhatsappJid, l as toWhatsappJidWithLid, r as jidToE164 } from "./targets-runtime-
|
|
5
|
-
import "./text-runtime-
|
|
6
|
-
import { i as buildQuotedMessageOptions } from "./group-session-key-
|
|
7
|
-
import { k as resolveComparableIdentity } from "./auth-store-
|
|
4
|
+
import { c as toWhatsappJid, l as toWhatsappJidWithLid, r as jidToE164 } from "./targets-runtime-RBjx3pg_.js";
|
|
5
|
+
import "./text-runtime-DyfmcATV.js";
|
|
6
|
+
import { i as buildQuotedMessageOptions } from "./group-session-key-BmVDSPr1.js";
|
|
7
|
+
import { k as resolveComparableIdentity } from "./auth-store-ZWaclAbd.js";
|
|
8
8
|
import { isRecord, normalizeLowercaseStringOrEmpty, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
9
9
|
import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
|
|
10
10
|
import { formatLocationText } from "openclaw/plugin-sdk/channel-inbound";
|
|
@@ -375,27 +375,25 @@ function hasInboundUserContent(source) {
|
|
|
375
375
|
const WHATSAPP_IMAGE_THUMBNAIL_SIDE = 32;
|
|
376
376
|
const WHATSAPP_IMAGE_THUMBNAIL_QUALITY = 50;
|
|
377
377
|
async function addWhatsAppImagePreviewFields(content) {
|
|
378
|
+
if (!("image" in content) || !Buffer.isBuffer(content.image)) return content;
|
|
378
379
|
const image = content.image;
|
|
379
|
-
|
|
380
|
-
const
|
|
381
|
-
const hasDimensions = typeof current.width === "number" && typeof current.height === "number";
|
|
382
|
-
const hasThumbnail = typeof current.jpegThumbnail === "string";
|
|
380
|
+
const hasDimensions = typeof content.width === "number" && typeof content.height === "number";
|
|
381
|
+
const hasThumbnail = typeof content.jpegThumbnail === "string";
|
|
383
382
|
if (hasDimensions && hasThumbnail) return content;
|
|
384
383
|
const metadata = hasDimensions ? null : await getImageMetadata(image).catch(() => null);
|
|
385
|
-
|
|
386
|
-
const thumbnail = hasThumbnail ? null : await resizeToJpeg({
|
|
384
|
+
const jpegThumbnail = hasThumbnail ? content.jpegThumbnail : await resizeToJpeg({
|
|
387
385
|
buffer: image,
|
|
388
386
|
maxSide: WHATSAPP_IMAGE_THUMBNAIL_SIDE,
|
|
389
387
|
quality: WHATSAPP_IMAGE_THUMBNAIL_QUALITY,
|
|
390
388
|
withoutEnlargement: true
|
|
391
|
-
}).catch(() =>
|
|
389
|
+
}).then((thumbnail) => thumbnail.toString("base64")).catch(() => "");
|
|
392
390
|
return {
|
|
393
391
|
...content,
|
|
394
392
|
...metadata ? {
|
|
395
393
|
width: metadata.width,
|
|
396
394
|
height: metadata.height
|
|
397
395
|
} : {},
|
|
398
|
-
|
|
396
|
+
jpegThumbnail
|
|
399
397
|
};
|
|
400
398
|
}
|
|
401
399
|
//#endregion
|
|
@@ -625,43 +623,44 @@ function createWebSendApi(params) {
|
|
|
625
623
|
text,
|
|
626
624
|
mentionedJids: []
|
|
627
625
|
} : await resolveMentions(jid, text);
|
|
628
|
-
if (mediaBuffer && mediaType)
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
fileName:
|
|
626
|
+
if (mediaBuffer && mediaType) {
|
|
627
|
+
if (sendOptions?.asDocument === true && supportsForcedDocumentMediaType(mediaType)) payload = {
|
|
628
|
+
document: mediaBuffer,
|
|
629
|
+
fileName: resolveWhatsAppDocumentFileName({
|
|
630
|
+
fileName: sendOptions?.fileName,
|
|
631
|
+
mimetype: mediaType
|
|
632
|
+
}),
|
|
633
|
+
caption: resolvedPayloadText.text || void 0,
|
|
632
634
|
mimetype: mediaType
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
};
|
|
637
|
-
else if (mediaType.startsWith("image/")) payload = await addWhatsAppImagePreviewFields({
|
|
638
|
-
image: mediaBuffer,
|
|
639
|
-
caption: resolvedPayloadText.text || void 0,
|
|
640
|
-
mimetype: mediaType
|
|
641
|
-
});
|
|
642
|
-
else if (mediaType.startsWith("audio/")) payload = {
|
|
643
|
-
audio: mediaBuffer,
|
|
644
|
-
ptt: true,
|
|
645
|
-
mimetype: mediaType
|
|
646
|
-
};
|
|
647
|
-
else if (mediaType.startsWith("video/")) {
|
|
648
|
-
const gifPlayback = sendOptions?.gifPlayback;
|
|
649
|
-
payload = {
|
|
650
|
-
video: mediaBuffer,
|
|
635
|
+
};
|
|
636
|
+
else if (mediaType.startsWith("image/")) payload = await addWhatsAppImagePreviewFields({
|
|
637
|
+
image: mediaBuffer,
|
|
651
638
|
caption: resolvedPayloadText.text || void 0,
|
|
652
|
-
mimetype: mediaType
|
|
653
|
-
|
|
639
|
+
mimetype: mediaType
|
|
640
|
+
});
|
|
641
|
+
else if (mediaType.startsWith("audio/")) payload = {
|
|
642
|
+
audio: mediaBuffer,
|
|
643
|
+
ptt: true,
|
|
644
|
+
mimetype: mediaType
|
|
654
645
|
};
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
646
|
+
else if (mediaType.startsWith("video/")) {
|
|
647
|
+
const gifPlayback = sendOptions?.gifPlayback;
|
|
648
|
+
payload = {
|
|
649
|
+
video: mediaBuffer,
|
|
650
|
+
caption: resolvedPayloadText.text || void 0,
|
|
651
|
+
mimetype: mediaType,
|
|
652
|
+
...gifPlayback ? { gifPlayback: true } : {}
|
|
653
|
+
};
|
|
654
|
+
} else payload = {
|
|
655
|
+
document: mediaBuffer,
|
|
656
|
+
fileName: resolveWhatsAppDocumentFileName({
|
|
657
|
+
fileName: sendOptions?.fileName,
|
|
658
|
+
mimetype: mediaType
|
|
659
|
+
}),
|
|
660
|
+
caption: resolvedPayloadText.text || void 0,
|
|
659
661
|
mimetype: mediaType
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
mimetype: mediaType
|
|
663
|
-
};
|
|
664
|
-
else payload = { text: resolvedPayloadText.text };
|
|
662
|
+
};
|
|
663
|
+
} else payload = { text: resolvedPayloadText.text };
|
|
665
664
|
payload = addWhatsAppOutboundMentionsToContent(payload, resolvedPayloadText.mentionedJids);
|
|
666
665
|
const quotedOpts = buildQuotedMessageOptions({
|
|
667
666
|
messageId: sendOptions?.quotedMessageKey?.id,
|
|
@@ -717,7 +716,7 @@ function createWebSendApi(params) {
|
|
|
717
716
|
},
|
|
718
717
|
sendReaction: async (chatJid, messageId, emoji, fromMe, participant) => {
|
|
719
718
|
const jid = resolveOutboundJid(chatJid);
|
|
720
|
-
|
|
719
|
+
const result = await params.sock.sendMessage(jid, { react: {
|
|
721
720
|
text: emoji,
|
|
722
721
|
key: {
|
|
723
722
|
remoteJid: jid,
|
|
@@ -725,7 +724,8 @@ function createWebSendApi(params) {
|
|
|
725
724
|
fromMe,
|
|
726
725
|
participant: participant ? toWhatsappJid(participant) : void 0
|
|
727
726
|
}
|
|
728
|
-
} })
|
|
727
|
+
} });
|
|
728
|
+
return normalizeWhatsAppSendResult(result, "reaction");
|
|
729
729
|
},
|
|
730
730
|
sendComposingTo: async (to) => {
|
|
731
731
|
const jid = resolveOutboundJid(to);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as resolveWhatsAppAccount, o as resolveWhatsAppAuthDir } from "./accounts-
|
|
1
|
+
import { a as resolveWhatsAppAccount, o as resolveWhatsAppAuthDir } from "./accounts-CiKHiuEe.js";
|
|
2
2
|
import { r as resolveDefaultWhatsAppAccountId } from "./account-ids-CB5SOWjc.js";
|
|
3
|
-
import { r as hasWebCredsSync } from "./creds-files-
|
|
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-ByeKDmh0.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
|
|
@@ -94,7 +94,7 @@ async function detectWhatsAppLinked(cfg, accountId) {
|
|
|
94
94
|
async function promptWhatsAppOwnerAllowFrom(params) {
|
|
95
95
|
const { prompter, existingAllowFrom } = params;
|
|
96
96
|
await prompter.note(t("wizard.whatsapp.ownerNumberNote"), t("wizard.whatsapp.numberTitle"));
|
|
97
|
-
const
|
|
97
|
+
const entry = await prompter.text({
|
|
98
98
|
message: t("wizard.whatsapp.personalNumberPrompt"),
|
|
99
99
|
placeholder: "+15555550123",
|
|
100
100
|
initialValue: existingAllowFrom[0],
|
|
@@ -103,7 +103,8 @@ async function promptWhatsAppOwnerAllowFrom(params) {
|
|
|
103
103
|
if (!raw) return t("common.required");
|
|
104
104
|
if (!normalizeWhatsAppAllowFromEntry(raw)) return `Invalid number: ${raw}`;
|
|
105
105
|
}
|
|
106
|
-
})
|
|
106
|
+
});
|
|
107
|
+
const normalized = normalizeWhatsAppAllowFromEntry(trimPromptText(entry));
|
|
107
108
|
if (!normalized) throw new Error("Invalid WhatsApp owner number (expected E.164 after validation).");
|
|
108
109
|
return {
|
|
109
110
|
normalized,
|
|
@@ -295,7 +296,7 @@ async function finalizeWhatsAppSetup(params) {
|
|
|
295
296
|
};
|
|
296
297
|
let loginWeb;
|
|
297
298
|
try {
|
|
298
|
-
({loginWeb} = await import("./login-
|
|
299
|
+
({loginWeb} = await import("./login-6j2iP9nR.js").then((n) => n.n));
|
|
299
300
|
} catch (error) {
|
|
300
301
|
await reportLoginFailure(error);
|
|
301
302
|
}
|
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-DckQm9ma.js";
|
|
2
2
|
export { whatsappSetupPlugin };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { o as resolveWhatsAppAuthDir } from "./accounts-
|
|
1
|
+
import { o as resolveWhatsAppAuthDir } from "./accounts-CiKHiuEe.js";
|
|
2
2
|
import { t as listAccountIds } from "./account-ids-CB5SOWjc.js";
|
|
3
|
-
import { a as formatWhatsAppWebAuthStatusState, h as readWebAuthState } from "./auth-store-
|
|
3
|
+
import { a as formatWhatsAppWebAuthStatusState, h as readWebAuthState } from "./auth-store-ZWaclAbd.js";
|
|
4
4
|
import { DEFAULT_ACCOUNT_ID, createSetupTranslator, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup";
|
|
5
5
|
//#region extensions/whatsapp/src/setup-surface.ts
|
|
6
6
|
const t = createSetupTranslator();
|
|
@@ -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-gLmc3FTV.js")).finalizeWhatsAppSetup(params),
|
|
40
40
|
disable: (cfg) => setSetupChannelEnabled(cfg, channel, false),
|
|
41
41
|
onAccountRecorded: (accountId, options) => {
|
|
42
42
|
options?.onAccountId?.(channel, accountId);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as resolveWhatsAppAccount, n as hasAnyWhatsAppAuth } from "./accounts-
|
|
1
|
+
import { a as resolveWhatsAppAccount, n as hasAnyWhatsAppAuth } from "./accounts-CiKHiuEe.js";
|
|
2
2
|
import { r as resolveDefaultWhatsAppAccountId, t as listAccountIds } from "./account-ids-CB5SOWjc.js";
|
|
3
3
|
import { a as normalizeWhatsAppAllowFromEntries } from "./normalize-target-CugRyONv.js";
|
|
4
|
-
import { t as WhatsAppChannelConfigSchema } from "./config-schema-
|
|
5
|
-
import { n as whatsappDoctor } from "./doctor-
|
|
4
|
+
import { t as WhatsAppChannelConfigSchema } from "./config-schema-BYA6e_Ii.js";
|
|
5
|
+
import { n as whatsappDoctor } from "./doctor-BPb-SjdE.js";
|
|
6
6
|
import { t as resolveWhatsAppConfigPath } from "./group-config-path-BGyzT9Lg.js";
|
|
7
7
|
import { t as resolveLegacyGroupSessionKey } from "./group-session-contract-DDnZSsJ1.js";
|
|
8
8
|
import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-nAzD945y.js";
|
|
@@ -20,14 +20,14 @@ import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter, createSco
|
|
|
20
20
|
import { createDelegatedSetupWizardProxy } from "openclaw/plugin-sdk/setup-runtime";
|
|
21
21
|
import { readChannelAllowFromStore } from "openclaw/plugin-sdk/channel-pairing";
|
|
22
22
|
//#region extensions/whatsapp/src/channel-runtime-loader.ts
|
|
23
|
-
const loadWhatsAppAuthStore = createLazyRuntimeModule(() => import("./auth-store-
|
|
23
|
+
const loadWhatsAppAuthStore = createLazyRuntimeModule(() => import("./auth-store-ZWaclAbd.js").then((n) => n.i));
|
|
24
24
|
async function readWhatsAppAccountLinkState(authDir) {
|
|
25
25
|
const state = await (await loadWhatsAppAuthStore()).readWebAuthState(authDir);
|
|
26
26
|
return state === "unstable" ? "unknown" : state;
|
|
27
27
|
}
|
|
28
28
|
const loadWhatsAppChannelRuntime = createLazyRuntimeModule(async () => {
|
|
29
29
|
await loadWhatsAppAuthStore();
|
|
30
|
-
return await import("./channel.runtime-
|
|
30
|
+
return await import("./channel.runtime-Bn3K5Ygb.js");
|
|
31
31
|
});
|
|
32
32
|
//#endregion
|
|
33
33
|
//#region extensions/whatsapp/src/config-accessors.ts
|
|
@@ -96,7 +96,8 @@ function applyGroupAllowFromFromStore(params) {
|
|
|
96
96
|
return changed ? next : params.cfg;
|
|
97
97
|
}
|
|
98
98
|
async function applyWhatsAppSecurityConfigFixes(params) {
|
|
99
|
-
const
|
|
99
|
+
const fromStore = await readChannelAllowFromStore("whatsapp", params.env, DEFAULT_ACCOUNT_ID).catch(() => []);
|
|
100
|
+
const normalized = normalizeUniqueStringEntries(fromStore);
|
|
100
101
|
if (normalized.length === 0) return {
|
|
101
102
|
config: params.cfg,
|
|
102
103
|
changes: []
|
|
@@ -115,7 +116,7 @@ async function applyWhatsAppSecurityConfigFixes(params) {
|
|
|
115
116
|
//#region extensions/whatsapp/src/shared.ts
|
|
116
117
|
const WHATSAPP_CHANNEL = "whatsapp";
|
|
117
118
|
async function loadWhatsAppSetupSurface() {
|
|
118
|
-
return await import("./setup-surface-
|
|
119
|
+
return await import("./setup-surface-twIi4TdN.js");
|
|
119
120
|
}
|
|
120
121
|
const whatsappSetupWizardProxy = createWhatsAppSetupWizardProxy(async () => (await loadWhatsAppSetupSurface()).whatsappSetupWizard);
|
|
121
122
|
const whatsappConfigAdapter = createScopedChannelConfigAdapter({
|
|
@@ -251,7 +252,11 @@ function createWhatsAppPluginBase(params) {
|
|
|
251
252
|
"channels.whatsapp.accounts",
|
|
252
253
|
"channels.whatsapp.selfChatMode"
|
|
253
254
|
],
|
|
254
|
-
noopPrefixes: [
|
|
255
|
+
noopPrefixes: [
|
|
256
|
+
"channels.whatsapp",
|
|
257
|
+
"messages.inbound",
|
|
258
|
+
"messages.ackReactionScope"
|
|
259
|
+
]
|
|
255
260
|
},
|
|
256
261
|
gatewayMethodDescriptors: [{ name: "web.login.start" }, { name: "web.login.wait" }],
|
|
257
262
|
configSchema: WhatsAppChannelConfigSchema,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as resolveWebCredsPath, s as resolveWebCredsBackupPath, t as assertWebCredsPathRegularFileOrMissing } from "./creds-files-
|
|
2
|
-
import { A as enqueueCredsSave, M as waitForCredsSaveQueueWithTimeout, N as writeCredsJsonAtomically, P as writeWebCredsRawAtomically, b as restoreCredsFromBackupIfNeeded, u as readCredsJsonRaw, y as resolveDefaultWebAuthDir } from "./auth-store-
|
|
1
|
+
import { c as resolveWebCredsPath, s as resolveWebCredsBackupPath, t as assertWebCredsPathRegularFileOrMissing } from "./creds-files-Drg3usj1.js";
|
|
2
|
+
import { A as enqueueCredsSave, M as waitForCredsSaveQueueWithTimeout, N as writeCredsJsonAtomically, P as writeWebCredsRawAtomically, b as restoreCredsFromBackupIfNeeded, u as readCredsJsonRaw, y as resolveDefaultWebAuthDir } from "./auth-store-ZWaclAbd.js";
|
|
3
3
|
import { n as getStatusCode } from "./session-errors-JuazczrA.js";
|
|
4
4
|
import { a as makeWASocket, i as makeCacheableSignalKeyStore, n as createBaileysSignalRepository, r as fetchLatestBaileysVersion, s as useMultiFileAuthState } from "./session.runtime-Nsqaehbd.js";
|
|
5
5
|
import { VERSION, formatCliCommand } from "openclaw/plugin-sdk/cli-runtime";
|
|
@@ -22,7 +22,7 @@ var WhatsAppConnectionOwnerBusyError = class extends Error {
|
|
|
22
22
|
this.name = "WhatsAppConnectionOwnerBusyError";
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
|
-
const OWNER_LOCK_STALE_MS =
|
|
25
|
+
const OWNER_LOCK_STALE_MS = 3e5;
|
|
26
26
|
const GATEWAY_LOCAL_OWNER_WAIT_MS = 15e4;
|
|
27
27
|
const processOwners = /* @__PURE__ */ new Map();
|
|
28
28
|
function ownershipCancelledError(signal) {
|
|
@@ -325,7 +325,8 @@ async function createWaSocket(printQr, verbose, opts = {}) {
|
|
|
325
325
|
return await createWaSocketInternal(printQr, verbose, opts, "normal");
|
|
326
326
|
}
|
|
327
327
|
async function createWaSocketInternal(printQr, verbose, opts, receiveMode) {
|
|
328
|
-
const
|
|
328
|
+
const baseLogger = getChildLogger({ module: "baileys" }, { level: verbose ? "info" : "silent" });
|
|
329
|
+
const logger = toPinoLikeLogger(baseLogger, verbose ? "info" : "silent");
|
|
329
330
|
const authDir = resolveUserPath(opts.authDir ?? resolveDefaultWebAuthDir());
|
|
330
331
|
await rejectUnsafeWebCredsPath(authDir);
|
|
331
332
|
await opts.beforeCredentialPersistence?.();
|
|
@@ -357,13 +358,14 @@ async function createWaSocketInternal(printQr, verbose, opts, receiveMode) {
|
|
|
357
358
|
else pendingSocketAbort = { error };
|
|
358
359
|
opts.onCredentialPersistenceError?.(error);
|
|
359
360
|
};
|
|
360
|
-
const
|
|
361
|
+
const persistedSignalKeys = opts.beforeCredentialPersistence ? {
|
|
361
362
|
...state.keys,
|
|
362
363
|
async set(data) {
|
|
363
364
|
await opts.beforeCredentialPersistence?.();
|
|
364
365
|
await state.keys.set(data);
|
|
365
366
|
}
|
|
366
|
-
} : state.keys
|
|
367
|
+
} : state.keys;
|
|
368
|
+
const cachedSignalKeys = makeCacheableSignalKeyStore(persistedSignalKeys, logger);
|
|
367
369
|
const signalKeys = opts.beforeCredentialPersistence ? {
|
|
368
370
|
...cachedSignalKeys,
|
|
369
371
|
get(type, ids) {
|
|
@@ -542,7 +544,8 @@ async function waitForWaConnection(sock, options = { timeout: "none" }) {
|
|
|
542
544
|
}
|
|
543
545
|
if (update.connection === "close") {
|
|
544
546
|
cleanup();
|
|
545
|
-
|
|
547
|
+
const disconnectError = update.lastDisconnect?.error ?? update.lastDisconnect;
|
|
548
|
+
reject(toErrorObject(disconnectError ?? /* @__PURE__ */ new Error("Connection closed"), "Non-Error rejection"));
|
|
546
549
|
}
|
|
547
550
|
};
|
|
548
551
|
sock.ev.on("connection.update", handler);
|
|
@@ -282,8 +282,7 @@ function markdownToWhatsAppChunks(text, limit, tableMode = "bullets", chunkMode
|
|
|
282
282
|
if (!text.trim()) return chunkMarkdownTextWithMode(text, limit, chunkMode);
|
|
283
283
|
const { ir, escapedMarkers } = prepareWhatsAppMarkdown(text, tableMode);
|
|
284
284
|
const render = (chunk) => renderWhatsAppMarkdownIR(chunk, escapedMarkers);
|
|
285
|
-
|
|
286
|
-
let chunks = ir.styles.length === 0 && ir.links.length === 0 ? chunkMarkdownTextWithMode(rendered, limit, chunkMode) : splitWhatsAppIRForChunkMode(ir, limit, chunkMode).flatMap((source) => renderMarkdownIRChunksWithinLimit({
|
|
285
|
+
let chunks = ir.styles.length === 0 && ir.links.length === 0 ? chunkMarkdownTextWithMode(render(ir), limit, chunkMode) : splitWhatsAppIRForChunkMode(ir, limit, chunkMode).flatMap((source) => renderMarkdownIRChunksWithinLimit({
|
|
287
286
|
ir: source,
|
|
288
287
|
limit,
|
|
289
288
|
renderChunk: render,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./targets-runtime-
|
|
1
|
+
import "./targets-runtime-RBjx3pg_.js";
|
|
2
2
|
import { sanitizeAssistantVisibleText, sanitizeAssistantVisibleTextWithProfile, stripToolCallXmlTags } from "openclaw/plugin-sdk/text-chunking";
|
|
3
3
|
import { normalizeE164, resolveUserPath as resolveUserPath$1 } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
4
4
|
export { stripToolCallXmlTags as a, sanitizeAssistantVisibleTextWithProfile as i, resolveUserPath$1 as n, sanitizeAssistantVisibleText as r, normalizeE164 as t };
|
|
@@ -2,12 +2,52 @@ version: 2
|
|
|
2
2
|
updates:
|
|
3
3
|
- package-ecosystem: "github-actions"
|
|
4
4
|
directory: "/"
|
|
5
|
+
commit-message:
|
|
6
|
+
# Prefix all commit messages with "chore: "
|
|
7
|
+
prefix: "chore"
|
|
5
8
|
schedule:
|
|
6
|
-
interval: "
|
|
9
|
+
interval: "weekly"
|
|
10
|
+
cooldown:
|
|
11
|
+
default-days: 7
|
|
12
|
+
allow:
|
|
13
|
+
- dependency-name: "*"
|
|
14
|
+
update-types:
|
|
15
|
+
- "version-update:semver-major"
|
|
7
16
|
open-pull-requests-limit: 10
|
|
8
17
|
|
|
9
18
|
- package-ecosystem: "npm"
|
|
10
19
|
directory: "/"
|
|
20
|
+
commit-message:
|
|
21
|
+
# Prefix all commit messages with "chore: "
|
|
22
|
+
prefix: "chore"
|
|
11
23
|
schedule:
|
|
12
|
-
interval: "
|
|
24
|
+
interval: "weekly"
|
|
25
|
+
cooldown:
|
|
26
|
+
default-days: 7
|
|
27
|
+
versioning-strategy: "increase-if-necessary"
|
|
28
|
+
allow:
|
|
29
|
+
- dependency-name: "*"
|
|
30
|
+
update-types:
|
|
31
|
+
- "version-update:semver-major"
|
|
32
|
+
ignore:
|
|
33
|
+
# TODO: remove ignore until neostandard support ESLint 10
|
|
34
|
+
- dependency-name: "eslint"
|
|
35
|
+
- dependency-name: "neostandard"
|
|
36
|
+
- dependency-name: "@stylistic/*"
|
|
13
37
|
open-pull-requests-limit: 10
|
|
38
|
+
groups:
|
|
39
|
+
# Production dependencies with breaking changes
|
|
40
|
+
dependencies:
|
|
41
|
+
dependency-type: "production"
|
|
42
|
+
# ESLint related dependencies
|
|
43
|
+
dev-dependencies-eslint:
|
|
44
|
+
patterns:
|
|
45
|
+
- "eslint"
|
|
46
|
+
- "neostandard"
|
|
47
|
+
- "@stylistic/*"
|
|
48
|
+
# TypeScript related dependencies
|
|
49
|
+
dev-dependencies-typescript:
|
|
50
|
+
patterns:
|
|
51
|
+
- "@types/*"
|
|
52
|
+
- "tstyche"
|
|
53
|
+
- "typescript"
|
|
@@ -14,9 +14,20 @@ on:
|
|
|
14
14
|
- 'docs/**'
|
|
15
15
|
- '*.md'
|
|
16
16
|
|
|
17
|
+
# This allows a subsequently queued workflow run to interrupt previous runs
|
|
18
|
+
concurrency:
|
|
19
|
+
group: "${{ github.workflow }}-${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
|
|
20
|
+
cancel-in-progress: true
|
|
21
|
+
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
|
|
17
25
|
jobs:
|
|
18
26
|
test:
|
|
19
|
-
|
|
27
|
+
permissions:
|
|
28
|
+
contents: write
|
|
29
|
+
pull-requests: write
|
|
30
|
+
uses: fastify/workflows/.github/workflows/plugins-ci.yml@2073dc8e1f9e172bf42daa3843c9dbd31af1e8cb # v6.0.0
|
|
20
31
|
with:
|
|
21
32
|
license-check: true
|
|
22
33
|
lint: true
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: Lock Threads
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: '0 0 1 * *'
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: lock
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
lock-threads:
|
|
16
|
+
permissions:
|
|
17
|
+
issues: write
|
|
18
|
+
pull-requests: write
|
|
19
|
+
uses: fastify/workflows/.github/workflows/lock-threads.yml@2073dc8e1f9e172bf42daa3843c9dbd31af1e8cb # v6.0.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) Fastify
|
|
3
|
+
Copyright (c) 2020-present The Fastify team <https://github.com/fastify/fastify#team>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|