@openclaw/zalo 2026.7.2-beta.1 → 2026.7.2-beta.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 +1 -1
- package/dist/{channel-C_73K8pR.js → channel-DikWJ2TC.js} +12 -12
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.runtime-DiilvQ99.js → channel.runtime-DrCGqgEo.js} +2 -2
- package/dist/{monitor-alx9kzIY.js → monitor-oEpn3pC7.js} +15 -16
- package/dist/{monitor.webhook-AYcIUBBP.js → monitor.webhook-CiT0mp4W.js} +23 -25
- package/dist/{runtime-api-CAA4ZtqF.js → runtime-api-B53PGWBW.js} +1 -2
- package/dist/runtime-api.js +2 -2
- package/npm-shrinkwrap.json +3 -3
- package/package.json +4 -4
package/dist/api.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as zaloDmPolicy, r as zaloSetupAdapter, t as createZaloSetupWizardProxy } from "./setup-core-fwCh0QUi.js";
|
|
2
|
-
import { t as zaloPlugin } from "./channel-
|
|
2
|
+
import { t as zaloPlugin } from "./channel-DikWJ2TC.js";
|
|
3
3
|
import { n as resolveZaloRuntimeGroupPolicy } from "./group-access-8qHRzDHx.js";
|
|
4
4
|
import { zaloSetupWizard } from "./setup-api.js";
|
|
5
5
|
export { createZaloSetupWizardProxy, resolveZaloRuntimeGroupPolicy, zaloDmPolicy, zaloPlugin, zaloSetupAdapter, zaloSetupWizard };
|
|
@@ -13,19 +13,20 @@ import { createStaticReplyToModeResolver } from "openclaw/plugin-sdk/conversatio
|
|
|
13
13
|
import { createChannelDirectoryAdapter, listResolvedDirectoryUserEntriesFromAllowFrom } from "openclaw/plugin-sdk/directory-runtime";
|
|
14
14
|
import { createLazyRuntimeModule, createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
|
|
15
15
|
import { sendPayloadWithChunkedTextAndMedia } from "openclaw/plugin-sdk/reply-payload";
|
|
16
|
-
import { createComputedAccountStatusAdapter, createDefaultChannelRuntimeState } from "openclaw/plugin-sdk/status-helpers";
|
|
16
|
+
import { createComputedAccountStatusAdapter, createDefaultChannelRuntimeState, standardDmPolicyOpenIssue } from "openclaw/plugin-sdk/status-helpers";
|
|
17
17
|
import { chunkTextForOutbound } from "openclaw/plugin-sdk/text-chunking";
|
|
18
18
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
19
19
|
import { buildChannelOutboundSessionRoute, stripChannelTargetPrefix, stripTargetKindPrefix } from "openclaw/plugin-sdk/core";
|
|
20
20
|
import { jsonResult, readStringParam } from "openclaw/plugin-sdk/channel-actions";
|
|
21
21
|
import { extractToolSend } from "openclaw/plugin-sdk/tool-send";
|
|
22
22
|
import { createChannelApprovalAuth } from "openclaw/plugin-sdk/approval-auth-runtime";
|
|
23
|
-
import { AllowFromListSchema, DmPolicySchema, GroupPolicySchema, MarkdownConfigSchema,
|
|
23
|
+
import { AllowFromListSchema, DmPolicySchema, GroupPolicySchema, MarkdownConfigSchema, buildMultiAccountChannelSchema } from "openclaw/plugin-sdk/channel-config-schema";
|
|
24
24
|
import { z } from "zod";
|
|
25
25
|
import { coerceStatusIssueAccountId, readStatusIssueFields } from "openclaw/plugin-sdk/extension-shared";
|
|
26
26
|
//#region extensions/zalo/src/actions.ts
|
|
27
27
|
const loadZaloActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-OmfJFYZn.js"), "zaloActionsRuntime");
|
|
28
28
|
const providerId = "zalo";
|
|
29
|
+
const ZALO_ACTIONS = /* @__PURE__ */ new Set(["send"]);
|
|
29
30
|
function listEnabledAccounts(cfg, accountId) {
|
|
30
31
|
return (accountId ? [resolveZaloAccount({
|
|
31
32
|
cfg,
|
|
@@ -35,12 +36,12 @@ function listEnabledAccounts(cfg, accountId) {
|
|
|
35
36
|
const zaloMessageActions = {
|
|
36
37
|
describeMessageTool: ({ cfg, accountId }) => {
|
|
37
38
|
if (listEnabledAccounts(cfg, accountId).length === 0) return null;
|
|
38
|
-
const actions = /* @__PURE__ */ new Set(["send"]);
|
|
39
39
|
return {
|
|
40
|
-
actions: Array.from(
|
|
40
|
+
actions: Array.from(ZALO_ACTIONS),
|
|
41
41
|
capabilities: []
|
|
42
42
|
};
|
|
43
43
|
},
|
|
44
|
+
supportsAction: ({ action }) => ZALO_ACTIONS.has(action),
|
|
44
45
|
extractToolSend: ({ args }) => extractToolSend(args, "sendMessage"),
|
|
45
46
|
handleAction: async ({ action, params, cfg, accountId }) => {
|
|
46
47
|
if (action === "send") {
|
|
@@ -85,7 +86,7 @@ const zaloApprovalAuth = createChannelApprovalAuth({
|
|
|
85
86
|
},
|
|
86
87
|
normalizeApprover: normalizeZaloApproverId
|
|
87
88
|
}).approvalAuth;
|
|
88
|
-
const ZaloConfigSchema =
|
|
89
|
+
const ZaloConfigSchema = buildMultiAccountChannelSchema(z.object({
|
|
89
90
|
name: z.string().optional(),
|
|
90
91
|
enabled: z.boolean().optional(),
|
|
91
92
|
markdown: MarkdownConfigSchema,
|
|
@@ -101,7 +102,7 @@ const ZaloConfigSchema = buildCatchallMultiAccountChannelSchema(z.object({
|
|
|
101
102
|
mediaMaxMb: z.number().optional(),
|
|
102
103
|
proxy: z.string().optional(),
|
|
103
104
|
responsePrefix: z.string().optional()
|
|
104
|
-
}));
|
|
105
|
+
}), { accountsMode: "catchall" });
|
|
105
106
|
//#endregion
|
|
106
107
|
//#region extensions/zalo/src/session-route.ts
|
|
107
108
|
function resolveZaloOutboundSessionRoute(params) {
|
|
@@ -144,13 +145,12 @@ function collectZaloStatusIssues(accounts) {
|
|
|
144
145
|
const enabled = account.enabled !== false;
|
|
145
146
|
const configured = account.configured === true;
|
|
146
147
|
if (!enabled || !configured) continue;
|
|
147
|
-
if (account.dmPolicy === "open") issues.push({
|
|
148
|
+
if (account.dmPolicy === "open") issues.push(standardDmPolicyOpenIssue({
|
|
148
149
|
channel: "zalo",
|
|
149
150
|
accountId,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
});
|
|
151
|
+
channelLabel: "Zalo",
|
|
152
|
+
configPath: "channels.zalo"
|
|
153
|
+
}));
|
|
154
154
|
}
|
|
155
155
|
return issues;
|
|
156
156
|
}
|
|
@@ -176,7 +176,7 @@ function looksLikeZaloChatId(raw, normalized) {
|
|
|
176
176
|
const target = normalizeZaloMessagingTarget(normalized ?? raw);
|
|
177
177
|
return Boolean(target);
|
|
178
178
|
}
|
|
179
|
-
const loadZaloChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-
|
|
179
|
+
const loadZaloChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-DrCGqgEo.js"));
|
|
180
180
|
const zaloSetupWizard = createZaloSetupWizardProxy(async () => (await import("./setup-surface-8eRimod9.js")).zaloSetupWizard);
|
|
181
181
|
const zaloTextChunkLimit = 2e3;
|
|
182
182
|
async function sendZaloDelivery(ctx) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as zaloPlugin } from "./channel-
|
|
1
|
+
import { t as zaloPlugin } from "./channel-DikWJ2TC.js";
|
|
2
2
|
export { zaloPlugin };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as normalizeSecretInputString } from "./setup-core-fwCh0QUi.js";
|
|
2
|
-
import { i as PAIRING_APPROVED_MESSAGE } from "./runtime-api-
|
|
2
|
+
import { i as PAIRING_APPROVED_MESSAGE } from "./runtime-api-B53PGWBW.js";
|
|
3
3
|
import { a as getMe, n as resolveZaloProxyFetch, r as ZaloApiError, t as sendMessageZalo } from "./send-9sVVxyap.js";
|
|
4
4
|
import { createAccountStatusSink } from "openclaw/plugin-sdk/channel-outbound";
|
|
5
5
|
//#region extensions/zalo/src/probe.ts
|
|
@@ -86,7 +86,7 @@ async function startZaloGatewayAccount(ctx) {
|
|
|
86
86
|
setStatus: ctx.setStatus
|
|
87
87
|
});
|
|
88
88
|
ctx.log?.info(`[${account.accountId}] starting provider${zaloBotLabel} mode=${mode}`);
|
|
89
|
-
const { monitorZaloProvider } = await import("./monitor-
|
|
89
|
+
const { monitorZaloProvider } = await import("./monitor-oEpn3pC7.js");
|
|
90
90
|
return monitorZaloProvider({
|
|
91
91
|
token,
|
|
92
92
|
account,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as resolveZaloRuntimeGroupPolicy, t as normalizeZaloAllowEntry } from "./group-access-8qHRzDHx.js";
|
|
2
|
-
import { t as getZaloRuntime } from "./runtime-api-
|
|
2
|
+
import { t as getZaloRuntime } from "./runtime-api-B53PGWBW.js";
|
|
3
3
|
import { c as sendChatAction, d as setWebhook, i as deleteWebhook, l as sendMessage, n as resolveZaloProxyFetch, o as getUpdates, r as ZaloApiError, s as getWebhookInfo, u as sendPhoto } from "./send-9sVVxyap.js";
|
|
4
4
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
5
5
|
import { deliverTextOrMediaReply, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
|
|
@@ -7,13 +7,13 @@ import { normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtim
|
|
|
7
7
|
import { resolveDefaultGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce } from "openclaw/plugin-sdk/runtime-group-policy";
|
|
8
8
|
import { createChannelPairingController } from "openclaw/plugin-sdk/channel-pairing";
|
|
9
9
|
import { logTypingFailure } from "openclaw/plugin-sdk/channel-feedback";
|
|
10
|
-
import { resolveInboundRouteEnvelopeBuilderWithRuntime } from "openclaw/plugin-sdk/inbound-envelope";
|
|
11
10
|
import { registerPluginHttpRoute, resolveWebhookPath } from "openclaw/plugin-sdk/webhook-ingress";
|
|
12
11
|
import { asDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
|
|
13
|
-
import { formatInboundMediaUnavailableText } from "openclaw/plugin-sdk/channel-inbound";
|
|
12
|
+
import { formatInboundMediaUnavailableText, resolveChannelInboundRouteEnvelope } from "openclaw/plugin-sdk/channel-inbound";
|
|
14
13
|
import { resolveStableChannelMessageIngress } from "openclaw/plugin-sdk/channel-ingress-runtime";
|
|
15
14
|
import { sleepWithAbort, waitForAbortSignal } from "openclaw/plugin-sdk/runtime-env";
|
|
16
15
|
import { createHostedOutboundMediaStore } from "openclaw/plugin-sdk/outbound-media";
|
|
16
|
+
import { safeEqualSecret } from "openclaw/plugin-sdk/security-runtime";
|
|
17
17
|
//#region extensions/zalo/src/monitor-durable.ts
|
|
18
18
|
function prepareZaloDurableReplyPayload(params) {
|
|
19
19
|
if (!params.payload.text) return params.payload;
|
|
@@ -129,7 +129,7 @@ async function tryHandleHostedZaloMediaRequest(req, res) {
|
|
|
129
129
|
res.end("Expired");
|
|
130
130
|
return true;
|
|
131
131
|
}
|
|
132
|
-
if (url.searchParams.get("token")
|
|
132
|
+
if (!safeEqualSecret(url.searchParams.get("token"), entry.metadata.token)) {
|
|
133
133
|
res.statusCode = 401;
|
|
134
134
|
res.end("Unauthorized");
|
|
135
135
|
return true;
|
|
@@ -164,7 +164,7 @@ function resolveZaloTimestampMs(date) {
|
|
|
164
164
|
if (!date) return;
|
|
165
165
|
return date >= UNIX_MILLISECONDS_THRESHOLD ? date : date * 1e3;
|
|
166
166
|
}
|
|
167
|
-
const loadZaloWebhookModule = createLazyRuntimeModule(() => import("./monitor.webhook-
|
|
167
|
+
const loadZaloWebhookModule = createLazyRuntimeModule(() => import("./monitor.webhook-CiT0mp4W.js"));
|
|
168
168
|
function releaseSharedHostedMediaRouteRef(routePath) {
|
|
169
169
|
const current = hostedMediaRouteRefs.get(routePath);
|
|
170
170
|
if (!current) return;
|
|
@@ -478,16 +478,14 @@ async function processMessageWithPipeline(params) {
|
|
|
478
478
|
if (!authorization) return;
|
|
479
479
|
const { isGroup, chatId, senderId, senderName, rawBody, commandAuthorized } = authorization;
|
|
480
480
|
const agentBody = agentBodyOverride ?? rawBody;
|
|
481
|
-
const { route, buildEnvelope } =
|
|
481
|
+
const { route, buildEnvelope } = resolveChannelInboundRouteEnvelope({
|
|
482
482
|
cfg: config,
|
|
483
483
|
channel: "zalo",
|
|
484
484
|
accountId: account.accountId,
|
|
485
485
|
peer: {
|
|
486
486
|
kind: isGroup ? "group" : "direct",
|
|
487
487
|
id: chatId
|
|
488
|
-
}
|
|
489
|
-
runtime: core.channel,
|
|
490
|
-
sessionStore: config.session?.store
|
|
488
|
+
}
|
|
491
489
|
});
|
|
492
490
|
if (isGroup && core.channel.commands.isControlCommandMessage(rawBody, config) && commandAuthorized !== true) {
|
|
493
491
|
logVerbose(core, runtime, `zalo: drop control command from unauthorized sender ${senderId}`);
|
|
@@ -495,7 +493,7 @@ async function processMessageWithPipeline(params) {
|
|
|
495
493
|
}
|
|
496
494
|
const fromLabel = isGroup ? `group:${chatId}` : senderName || `user:${senderId}`;
|
|
497
495
|
const timestamp = resolveZaloTimestampMs(date);
|
|
498
|
-
const
|
|
496
|
+
const body = buildEnvelope({
|
|
499
497
|
channel: "Zalo",
|
|
500
498
|
from: fromLabel,
|
|
501
499
|
timestamp,
|
|
@@ -518,6 +516,7 @@ async function processMessageWithPipeline(params) {
|
|
|
518
516
|
},
|
|
519
517
|
route: {
|
|
520
518
|
agentId: route.agentId,
|
|
519
|
+
dmScope: route.dmScope,
|
|
521
520
|
accountId: route.accountId,
|
|
522
521
|
routeSessionKey: route.sessionKey
|
|
523
522
|
},
|
|
@@ -543,16 +542,16 @@ async function processMessageWithPipeline(params) {
|
|
|
543
542
|
channel: "zalo",
|
|
544
543
|
accountId: account.accountId
|
|
545
544
|
});
|
|
546
|
-
await core.channel.inbound.
|
|
545
|
+
await core.channel.inbound.dispatch({
|
|
547
546
|
cfg: config,
|
|
548
547
|
channel: "zalo",
|
|
549
548
|
accountId: account.accountId,
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
549
|
+
route: {
|
|
550
|
+
agentId: route.agentId,
|
|
551
|
+
dmScope: route.dmScope,
|
|
552
|
+
sessionKey: route.sessionKey
|
|
553
|
+
},
|
|
553
554
|
ctxPayload,
|
|
554
|
-
recordInboundSession: core.channel.session.recordInboundSession,
|
|
555
|
-
dispatchReplyWithBufferedBlockDispatcher: core.channel.reply.dispatchReplyWithBufferedBlockDispatcher,
|
|
556
555
|
delivery: {
|
|
557
556
|
preparePayload: (payload) => prepareZaloDurableReplyPayload({
|
|
558
557
|
payload,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { B as registerWebhookTargetWithPluginRoute,
|
|
2
|
-
import { createClaimableDedupe } from "openclaw/plugin-sdk/persistent-dedupe";
|
|
1
|
+
import { B as registerWebhookTargetWithPluginRoute, G as resolveWebhookTargetWithAuthOrRejectSync, I as readJsonWebhookBodyOrReject, V as resolveClientIp, Z as withResolvedWebhookRequestPipeline, a as WEBHOOK_ANOMALY_COUNTER_DEFAULTS, b as createFixedWindowRateLimiter, l as applyBasicWebhookRequestGuards, o as WEBHOOK_RATE_LIMIT_DEFAULTS, x as createWebhookAnomalyTracker, z as registerWebhookTarget } from "./runtime-api-B53PGWBW.js";
|
|
3
2
|
import { safeEqualSecret } from "openclaw/plugin-sdk/security-runtime";
|
|
3
|
+
import { createChannelReplayGuard } from "openclaw/plugin-sdk/persistent-dedupe";
|
|
4
|
+
import { runDetachedWebhookWork } from "openclaw/plugin-sdk/webhook-request-guards";
|
|
4
5
|
//#region extensions/zalo/src/monitor.webhook.ts
|
|
5
6
|
const ZALO_WEBHOOK_REPLAY_WINDOW_MS = 5 * 6e4;
|
|
6
7
|
const webhookTargets = /* @__PURE__ */ new Map();
|
|
@@ -9,10 +10,6 @@ const webhookRateLimiter = createFixedWindowRateLimiter({
|
|
|
9
10
|
maxRequests: WEBHOOK_RATE_LIMIT_DEFAULTS.maxRequests,
|
|
10
11
|
maxTrackedKeys: WEBHOOK_RATE_LIMIT_DEFAULTS.maxTrackedKeys
|
|
11
12
|
});
|
|
12
|
-
const recentWebhookEvents = createClaimableDedupe({
|
|
13
|
-
ttlMs: ZALO_WEBHOOK_REPLAY_WINDOW_MS,
|
|
14
|
-
memoryMaxSize: 5e3
|
|
15
|
-
});
|
|
16
13
|
const webhookAnomalyTracker = createWebhookAnomalyTracker({
|
|
17
14
|
maxTrackedKeys: WEBHOOK_ANOMALY_COUNTER_DEFAULTS.maxTrackedKeys,
|
|
18
15
|
ttlMs: WEBHOOK_ANOMALY_COUNTER_DEFAULTS.ttlMs,
|
|
@@ -43,6 +40,13 @@ function buildReplayEventCacheKey(target, update) {
|
|
|
43
40
|
messageId
|
|
44
41
|
]);
|
|
45
42
|
}
|
|
43
|
+
const recentWebhookEvents = createChannelReplayGuard({
|
|
44
|
+
dedupe: {
|
|
45
|
+
ttlMs: ZALO_WEBHOOK_REPLAY_WINDOW_MS,
|
|
46
|
+
memoryMaxSize: 5e3
|
|
47
|
+
},
|
|
48
|
+
buildReplayKey: ({ target, update }) => buildReplayEventCacheKey(target, update)
|
|
49
|
+
});
|
|
46
50
|
var ZaloRetryableWebhookError = class extends Error {
|
|
47
51
|
constructor(message, options) {
|
|
48
52
|
super(message, options);
|
|
@@ -50,23 +54,17 @@ var ZaloRetryableWebhookError = class extends Error {
|
|
|
50
54
|
}
|
|
51
55
|
};
|
|
52
56
|
async function processZaloReplayGuardedUpdate(params) {
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
await params.processUpdate(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return "processed";
|
|
65
|
-
} catch (error) {
|
|
66
|
-
if (replayEventKey) if (error instanceof ZaloRetryableWebhookError) recentWebhookEvents.release(replayEventKey, { error });
|
|
67
|
-
else await recentWebhookEvents.commit(replayEventKey);
|
|
68
|
-
throw error;
|
|
69
|
-
}
|
|
57
|
+
const event = {
|
|
58
|
+
target: params.target,
|
|
59
|
+
update: params.update
|
|
60
|
+
};
|
|
61
|
+
return (await recentWebhookEvents.processGuarded(event, async () => {
|
|
62
|
+
params.target.statusSink?.({ lastInboundAt: Date.now() });
|
|
63
|
+
await params.processUpdate(event);
|
|
64
|
+
}, {
|
|
65
|
+
dedupe: { now: params.nowMs },
|
|
66
|
+
onError: (error) => error instanceof ZaloRetryableWebhookError ? "release" : "commit"
|
|
67
|
+
})).kind === "processed" ? "processed" : "duplicate";
|
|
70
68
|
}
|
|
71
69
|
function recordWebhookStatus(runtime, path, statusCode) {
|
|
72
70
|
webhookAnomalyTracker.record({
|
|
@@ -154,12 +152,12 @@ async function handleZaloWebhookRequest(req, res, processUpdate) {
|
|
|
154
152
|
recordWebhookStatus(target.runtime, path, res.statusCode);
|
|
155
153
|
return true;
|
|
156
154
|
}
|
|
157
|
-
processZaloReplayGuardedUpdate({
|
|
155
|
+
runDetachedWebhookWork(() => processZaloReplayGuardedUpdate({
|
|
158
156
|
target,
|
|
159
157
|
update,
|
|
160
158
|
processUpdate,
|
|
161
159
|
nowMs
|
|
162
|
-
}).catch((err) => {
|
|
160
|
+
})).catch((err) => {
|
|
163
161
|
target.runtime.error?.(`[${target.account.accountId}] Zalo webhook failed: ${String(err)}`);
|
|
164
162
|
});
|
|
165
163
|
res.statusCode = 200;
|
|
@@ -10,7 +10,6 @@ import { addWildcardAllowFrom as addWildcardAllowFrom$1, applyAccountNameToChann
|
|
|
10
10
|
import { resolveDefaultGroupPolicy as resolveDefaultGroupPolicy$1, resolveOpenProviderRuntimeGroupPolicy as resolveOpenProviderRuntimeGroupPolicy$1, warnMissingProviderGroupPolicyFallbackOnce as warnMissingProviderGroupPolicyFallbackOnce$1 } from "openclaw/plugin-sdk/runtime-group-policy";
|
|
11
11
|
import { createChannelPairingController as createChannelPairingController$1 } from "openclaw/plugin-sdk/channel-pairing";
|
|
12
12
|
import { logTypingFailure as logTypingFailure$1 } from "openclaw/plugin-sdk/channel-feedback";
|
|
13
|
-
import { resolveInboundRouteEnvelopeBuilderWithRuntime as resolveInboundRouteEnvelopeBuilderWithRuntime$1 } from "openclaw/plugin-sdk/inbound-envelope";
|
|
14
13
|
import { waitForAbortSignal } from "openclaw/plugin-sdk/runtime";
|
|
15
14
|
import { WEBHOOK_ANOMALY_COUNTER_DEFAULTS, WEBHOOK_RATE_LIMIT_DEFAULTS, applyBasicWebhookRequestGuards, createFixedWindowRateLimiter, createWebhookAnomalyTracker, readJsonWebhookBodyOrReject, registerPluginHttpRoute as registerPluginHttpRoute$1, registerWebhookTarget, registerWebhookTargetWithPluginRoute, resolveWebhookPath as resolveWebhookPath$1, resolveWebhookTargetWithAuthOrRejectSync, withResolvedWebhookRequestPipeline } from "openclaw/plugin-sdk/webhook-ingress";
|
|
16
15
|
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
|
|
@@ -20,4 +19,4 @@ const { setRuntime: setZaloRuntime, getRuntime: getZaloRuntime } = createPluginR
|
|
|
20
19
|
errorMessage: "Zalo runtime not initialized"
|
|
21
20
|
});
|
|
22
21
|
//#endregion
|
|
23
|
-
export { mergeAllowFromEntries$1 as A, registerWebhookTargetWithPluginRoute as B, formatAllowFromLowercase$1 as C, isNumericTargetId as D, isNormalizedSenderAllowed as E, promptSingleChannelSecretInput$1 as F,
|
|
22
|
+
export { mergeAllowFromEntries$1 as A, registerWebhookTargetWithPluginRoute as B, formatAllowFromLowercase$1 as C, isNumericTargetId as D, isNormalizedSenderAllowed as E, promptSingleChannelSecretInput$1 as F, resolveWebhookTargetWithAuthOrRejectSync as G, resolveDefaultGroupPolicy$1 as H, readJsonWebhookBodyOrReject as I, setTopLevelChannelDmPolicyWithAllowFrom as J, runSingleChannelSecretStep$1 as K, readStringParam as L, normalizeAccountId$1 as M, normalizeResolvedSecretInputString as N, jsonResult as O, normalizeSecretInputString as P, registerPluginHttpRoute$1 as R, deliverTextOrMediaReply$1 as S, hasConfiguredSecretInput$1 as T, resolveOpenProviderRuntimeGroupPolicy$1 as U, resolveClientIp as V, resolveWebhookPath$1 as W, warnMissingProviderGroupPolicyFallbackOnce$1 as X, waitForAbortSignal as Y, withResolvedWebhookRequestPipeline as Z, createChannelMessageReplyPipeline as _, WEBHOOK_ANOMALY_COUNTER_DEFAULTS as a, createFixedWindowRateLimiter as b, applyAccountNameToChannelSection as c, buildBaseAccountStatusSnapshot as d, buildChannelConfigSchema as f, chunkTextForOutbound$1 as g, buildTokenChannelStatusSummary$1 as h, PAIRING_APPROVED_MESSAGE as i, migrateBaseNameToDefaultAccount as j, logTypingFailure$1 as k, applyBasicWebhookRequestGuards as l, buildSingleChannelSecretPromptState$1 as m, setZaloRuntime as n, WEBHOOK_RATE_LIMIT_DEFAULTS as o, buildSecretInputSchema as p, sendPayloadWithChunkedTextAndMedia$1 as q, DEFAULT_ACCOUNT_ID$1 as r, addWildcardAllowFrom$1 as s, getZaloRuntime as t, applySetupAccountConfigPatch as u, createChannelPairingController$1 as v, formatPairingApproveHint as w, createWebhookAnomalyTracker as x, createDedupeCache as y, registerWebhookTarget as z };
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as mergeAllowFromEntries, B as registerWebhookTargetWithPluginRoute, C as formatAllowFromLowercase, D as isNumericTargetId, E as isNormalizedSenderAllowed, F as promptSingleChannelSecretInput, G as
|
|
2
|
-
export { DEFAULT_ACCOUNT_ID, PAIRING_APPROVED_MESSAGE, WEBHOOK_ANOMALY_COUNTER_DEFAULTS, WEBHOOK_RATE_LIMIT_DEFAULTS, addWildcardAllowFrom, applyAccountNameToChannelSection, applyBasicWebhookRequestGuards, applySetupAccountConfigPatch, buildBaseAccountStatusSnapshot, buildChannelConfigSchema, buildSecretInputSchema, buildSingleChannelSecretPromptState, buildTokenChannelStatusSummary, chunkTextForOutbound, createChannelMessageReplyPipeline, createChannelPairingController, createDedupeCache, createFixedWindowRateLimiter, createWebhookAnomalyTracker, deliverTextOrMediaReply, formatAllowFromLowercase, formatPairingApproveHint, hasConfiguredSecretInput, isNormalizedSenderAllowed, isNumericTargetId, jsonResult, logTypingFailure, mergeAllowFromEntries, migrateBaseNameToDefaultAccount, normalizeAccountId, normalizeResolvedSecretInputString, normalizeSecretInputString, promptSingleChannelSecretInput, readJsonWebhookBodyOrReject, readStringParam, registerPluginHttpRoute, registerWebhookTarget, registerWebhookTargetWithPluginRoute, resolveClientIp, resolveDefaultGroupPolicy,
|
|
1
|
+
import { A as mergeAllowFromEntries, B as registerWebhookTargetWithPluginRoute, C as formatAllowFromLowercase, D as isNumericTargetId, E as isNormalizedSenderAllowed, F as promptSingleChannelSecretInput, G as resolveWebhookTargetWithAuthOrRejectSync, H as resolveDefaultGroupPolicy, I as readJsonWebhookBodyOrReject, J as setTopLevelChannelDmPolicyWithAllowFrom, K as runSingleChannelSecretStep, L as readStringParam, M as normalizeAccountId, N as normalizeResolvedSecretInputString, O as jsonResult, P as normalizeSecretInputString, R as registerPluginHttpRoute, S as deliverTextOrMediaReply, T as hasConfiguredSecretInput, U as resolveOpenProviderRuntimeGroupPolicy, V as resolveClientIp, W as resolveWebhookPath, X as warnMissingProviderGroupPolicyFallbackOnce, Y as waitForAbortSignal, Z as withResolvedWebhookRequestPipeline, _ as createChannelMessageReplyPipeline, a as WEBHOOK_ANOMALY_COUNTER_DEFAULTS, b as createFixedWindowRateLimiter, c as applyAccountNameToChannelSection, d as buildBaseAccountStatusSnapshot, f as buildChannelConfigSchema, g as chunkTextForOutbound, h as buildTokenChannelStatusSummary, i as PAIRING_APPROVED_MESSAGE, j as migrateBaseNameToDefaultAccount, k as logTypingFailure, l as applyBasicWebhookRequestGuards, m as buildSingleChannelSecretPromptState, n as setZaloRuntime, o as WEBHOOK_RATE_LIMIT_DEFAULTS, p as buildSecretInputSchema, q as sendPayloadWithChunkedTextAndMedia, r as DEFAULT_ACCOUNT_ID, s as addWildcardAllowFrom, u as applySetupAccountConfigPatch, v as createChannelPairingController, w as formatPairingApproveHint, x as createWebhookAnomalyTracker, y as createDedupeCache, z as registerWebhookTarget } from "./runtime-api-B53PGWBW.js";
|
|
2
|
+
export { DEFAULT_ACCOUNT_ID, PAIRING_APPROVED_MESSAGE, WEBHOOK_ANOMALY_COUNTER_DEFAULTS, WEBHOOK_RATE_LIMIT_DEFAULTS, addWildcardAllowFrom, applyAccountNameToChannelSection, applyBasicWebhookRequestGuards, applySetupAccountConfigPatch, buildBaseAccountStatusSnapshot, buildChannelConfigSchema, buildSecretInputSchema, buildSingleChannelSecretPromptState, buildTokenChannelStatusSummary, chunkTextForOutbound, createChannelMessageReplyPipeline, createChannelPairingController, createDedupeCache, createFixedWindowRateLimiter, createWebhookAnomalyTracker, deliverTextOrMediaReply, formatAllowFromLowercase, formatPairingApproveHint, hasConfiguredSecretInput, isNormalizedSenderAllowed, isNumericTargetId, jsonResult, logTypingFailure, mergeAllowFromEntries, migrateBaseNameToDefaultAccount, normalizeAccountId, normalizeResolvedSecretInputString, normalizeSecretInputString, promptSingleChannelSecretInput, readJsonWebhookBodyOrReject, readStringParam, registerPluginHttpRoute, registerWebhookTarget, registerWebhookTargetWithPluginRoute, resolveClientIp, resolveDefaultGroupPolicy, resolveOpenProviderRuntimeGroupPolicy, resolveWebhookPath, resolveWebhookTargetWithAuthOrRejectSync, runSingleChannelSecretStep, sendPayloadWithChunkedTextAndMedia, setTopLevelChannelDmPolicyWithAllowFrom, setZaloRuntime, waitForAbortSignal, warnMissingProviderGroupPolicyFallbackOnce, withResolvedWebhookRequestPipeline };
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/zalo",
|
|
3
|
-
"version": "2026.7.2-beta.
|
|
3
|
+
"version": "2026.7.2-beta.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@openclaw/zalo",
|
|
9
|
-
"version": "2026.7.2-beta.
|
|
9
|
+
"version": "2026.7.2-beta.3",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"zod": "4.4.3"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"openclaw": ">=2026.7.2-beta.
|
|
14
|
+
"openclaw": ">=2026.7.2-beta.3"
|
|
15
15
|
},
|
|
16
16
|
"peerDependenciesMeta": {
|
|
17
17
|
"openclaw": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/zalo",
|
|
3
|
-
"version": "2026.7.2-beta.
|
|
3
|
+
"version": "2026.7.2-beta.3",
|
|
4
4
|
"description": "OpenClaw Zalo channel plugin for bot and webhook chats.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
10
|
"peerDependencies": {
|
|
11
|
-
"openclaw": ">=2026.7.2-beta.
|
|
11
|
+
"openclaw": ">=2026.7.2-beta.3"
|
|
12
12
|
},
|
|
13
13
|
"peerDependenciesMeta": {
|
|
14
14
|
"openclaw": {
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
"minHostVersion": ">=2026.4.10"
|
|
40
40
|
},
|
|
41
41
|
"compat": {
|
|
42
|
-
"pluginApi": ">=2026.7.2-beta.
|
|
42
|
+
"pluginApi": ">=2026.7.2-beta.3"
|
|
43
43
|
},
|
|
44
44
|
"build": {
|
|
45
|
-
"openclawVersion": "2026.7.2-beta.
|
|
45
|
+
"openclawVersion": "2026.7.2-beta.3"
|
|
46
46
|
},
|
|
47
47
|
"release": {
|
|
48
48
|
"publishToClawHub": true,
|