@openclaw/signal 2026.9.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/api.js +5 -5
- package/dist/{approval-auth-CkljhI65.js → approval-auth-pNCKKotV.js} +12 -1
- package/dist/{approval-handler.runtime-DvZd_IWj.js → approval-handler.runtime-Dsg_GE8N.js} +3 -3
- package/dist/{approval-reactions-Cno-4mmH.js → approval-reactions-D-nkbsvm.js} +3 -14
- package/dist/{channel-sL5Cf1nT.js → channel-B-A_5_Vz.js} +13 -10
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.runtime-D2a4nSLo.js → channel.runtime-LfE0qPMj.js} +1 -1
- package/dist/{monitor-BPOcRufA.js → monitor-D7Slr0-A.js} +72 -58
- package/dist/{probe-Bjs1Yd79.js → probe-CtO2EIfg.js} +1 -1
- package/dist/{question-reactions-DJfSmeYo.js → question-reactions-CsVOpHg_.js} +3 -14
- package/dist/runtime-api.js +4 -4
- package/dist/{send-DF4T9tXZ.js → send-DuH2ntJt.js} +1 -1
- package/dist/{send.runtime-DHPi6R_z.js → send.runtime-BLiqhyHW.js} +1 -1
- package/dist/{transport-detection-CbPFIo0i.js → transport-detection-BcDiypLn.js} +2 -2
- package/dist/{transport-detection.runtime-B81flHI8.js → transport-detection.runtime-DYuvIa7s.js} +1 -1
- package/openclaw.plugin.json +2 -1
- package/package.json +4 -4
package/dist/api.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-DO4HMqaK.js";
|
|
2
2
|
import { n as normalizeSignalMessagingTarget, t as looksLikeSignalTargetId } from "./normalize-l_b99hap.js";
|
|
3
3
|
import { a as normalizeSignalAllowRecipient, c as resolveSignalSender, i as isSignalSenderAllowed, l as looksLikeUuid, n as formatSignalSenderDisplay, o as resolveSignalPeerId, r as formatSignalSenderId, s as resolveSignalRecipient, t as formatSignalPairingIdLine } from "./identity-YXPmgFMu.js";
|
|
4
|
-
import { c as resolveSignalReactionLevel, d as markdownToSignalTextChunks, s as signalMessageActions, t as detectSignalTransport, u as markdownToSignalText } from "./transport-detection-
|
|
4
|
+
import { c as resolveSignalReactionLevel, d as markdownToSignalTextChunks, s as signalMessageActions, t as detectSignalTransport, u as markdownToSignalText } from "./transport-detection-BcDiypLn.js";
|
|
5
5
|
import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-7FQFT_qb.js";
|
|
6
|
-
import { a as normalizeSignalAccountInput, d as probeSignalTransport, f as writeSignalAccountTransport, l as signalSetupContract, n as createSignalPluginBase, p as resolveSignalOutboundTarget, r as signalSetupWizard, t as signalPlugin, u as prepareSignalManagedNativeTransport } from "./channel-
|
|
6
|
+
import { a as normalizeSignalAccountInput, d as probeSignalTransport, f as writeSignalAccountTransport, l as signalSetupContract, n as createSignalPluginBase, p as resolveSignalOutboundTarget, r as signalSetupWizard, t as signalPlugin, u as prepareSignalManagedNativeTransport } from "./channel-B-A_5_Vz.js";
|
|
7
7
|
import { i as installSignalCli } from "./install-signal-cli-7tEL37_j.js";
|
|
8
|
-
import { t as monitorSignalProvider } from "./monitor-
|
|
9
|
-
import { n as sendReadReceiptSignal, r as sendTypingSignal, t as sendMessageSignal } from "./send-
|
|
10
|
-
import { t as probeSignal } from "./probe-
|
|
8
|
+
import { t as monitorSignalProvider } from "./monitor-D7Slr0-A.js";
|
|
9
|
+
import { n as sendReadReceiptSignal, r as sendTypingSignal, t as sendMessageSignal } from "./send-DuH2ntJt.js";
|
|
10
|
+
import { t as probeSignal } from "./probe-CtO2EIfg.js";
|
|
11
11
|
//#region extensions/signal/src/channel.setup.ts
|
|
12
12
|
const signalSetupPlugin = { ...createSignalPluginBase({
|
|
13
13
|
setupWizard: signalSetupWizard,
|
|
@@ -77,6 +77,17 @@ function resolveSignalTarget(params) {
|
|
|
77
77
|
};
|
|
78
78
|
return null;
|
|
79
79
|
}
|
|
80
|
+
function resolveSignalDeliveredConversationKey(params) {
|
|
81
|
+
try {
|
|
82
|
+
return resolveSignalTarget({
|
|
83
|
+
cfg: params.cfg,
|
|
84
|
+
accountId: params.accountId,
|
|
85
|
+
input: params.to
|
|
86
|
+
})?.to ?? normalizeSignalMessagingTarget(params.to) ?? null;
|
|
87
|
+
} catch {
|
|
88
|
+
return normalizeSignalMessagingTarget(params.to) ?? null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
80
91
|
function listSignalAliasDirectoryEntries(params) {
|
|
81
92
|
const aliases = resolveAliasMap(params);
|
|
82
93
|
const query = normalizeLowercaseStringOrEmpty(params.query);
|
|
@@ -153,4 +164,4 @@ const signalApproval = createChannelApprovalAuth({
|
|
|
153
164
|
const getSignalApprovalApprovers = signalApproval.resolveApprovers;
|
|
154
165
|
const signalApprovalAuth = signalApproval.approvalAuth;
|
|
155
166
|
//#endregion
|
|
156
|
-
export { resolveSignalTarget as i, signalApprovalAuth as n, listSignalAliasDirectoryEntries as r, getSignalApprovalApprovers as t };
|
|
167
|
+
export { resolveSignalTarget as a, resolveSignalDeliveredConversationKey as i, signalApprovalAuth as n, listSignalAliasDirectoryEntries as r, getSignalApprovalApprovers as t };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as resolveDefaultSignalAccountId } from "./accounts-DO4HMqaK.js";
|
|
2
2
|
import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.js";
|
|
3
|
-
import {
|
|
4
|
-
import { a as registerSignalApprovalReactionTarget, c as resolveSignalApprovalTargetAuthorKeys, l as unregisterSignalApprovalReactionTarget, r as hasSignalApprovalReactionApprovers, s as resolveSignalApprovalConversationKey } from "./approval-reactions-
|
|
5
|
-
import { r as sendTypingSignal, t as sendMessageSignal } from "./send-
|
|
3
|
+
import { a as resolveSignalTarget } from "./approval-auth-pNCKKotV.js";
|
|
4
|
+
import { a as registerSignalApprovalReactionTarget, c as resolveSignalApprovalTargetAuthorKeys, l as unregisterSignalApprovalReactionTarget, r as hasSignalApprovalReactionApprovers, s as resolveSignalApprovalConversationKey } from "./approval-reactions-D-nkbsvm.js";
|
|
5
|
+
import { r as sendTypingSignal, t as sendMessageSignal } from "./send-DuH2ntJt.js";
|
|
6
6
|
import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
|
|
7
7
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
8
8
|
import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
2
|
import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.js";
|
|
3
|
-
import {
|
|
3
|
+
import { a as resolveSignalTarget, i as resolveSignalDeliveredConversationKey, n as signalApprovalAuth, t as getSignalApprovalApprovers } from "./approval-auth-pNCKKotV.js";
|
|
4
4
|
import { l as looksLikeUuid } from "./identity-YXPmgFMu.js";
|
|
5
|
-
import { i as getOptionalSignalRuntime } from "./transport-detection-
|
|
5
|
+
import { i as getOptionalSignalRuntime } from "./transport-detection-BcDiypLn.js";
|
|
6
6
|
import { createLazyRuntimeSurface } from "openclaw/plugin-sdk/lazy-runtime";
|
|
7
7
|
import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
|
|
8
8
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
@@ -141,17 +141,6 @@ const signalApprovalReactionTargets = createApprovalReactionTargetStore({
|
|
|
141
141
|
function resolveSignalApprovalConversationKey(to) {
|
|
142
142
|
return normalizeSignalMessagingTarget(to) ?? null;
|
|
143
143
|
}
|
|
144
|
-
function resolveSignalApprovalConversationKeyForDeliveredTarget(params) {
|
|
145
|
-
try {
|
|
146
|
-
return resolveSignalTarget({
|
|
147
|
-
cfg: params.cfg,
|
|
148
|
-
accountId: params.accountId,
|
|
149
|
-
input: params.to
|
|
150
|
-
})?.to ?? resolveSignalApprovalConversationKey(params.to);
|
|
151
|
-
} catch {
|
|
152
|
-
return resolveSignalApprovalConversationKey(params.to);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
144
|
function normalizeSignalApprovalTargetAuthorKey(value) {
|
|
156
145
|
const normalized = normalizeOptionalString(value);
|
|
157
146
|
if (!normalized) return null;
|
|
@@ -281,7 +270,7 @@ function registerSignalApprovalReactionTargetForDeliveredPayload(params) {
|
|
|
281
270
|
cfg: params.cfg,
|
|
282
271
|
accountId: params.target.accountId
|
|
283
272
|
})) return false;
|
|
284
|
-
const conversationKey =
|
|
273
|
+
const conversationKey = resolveSignalDeliveredConversationKey({
|
|
285
274
|
cfg: params.cfg,
|
|
286
275
|
accountId: params.target.accountId,
|
|
287
276
|
to: params.target.to
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { a as isSignalManagedNativeConnectionUrlForBind, i as assignSignalManagedNativePort, l as normalizeSignalTransportHost, o as isValidSignalManagedNativePort, r as allocateSignalManagedNativePort, s as resolveLocalSignalTransportPort, u as normalizeSignalTransportUrl } from "./transport-policy-DxvSMHp9.js";
|
|
2
2
|
import { a as resolveSignalAccountConfig, i as resolveSignalAccount, n as listSignalAccountIds, o as resolveSignalReplyToMode, r as resolveDefaultSignalAccountId, s as resolveSignalTransport } from "./accounts-DO4HMqaK.js";
|
|
3
3
|
import { n as normalizeSignalMessagingTarget, t as looksLikeSignalTargetId } from "./normalize-l_b99hap.js";
|
|
4
|
-
import {
|
|
4
|
+
import { a as resolveSignalTarget, r as listSignalAliasDirectoryEntries } from "./approval-auth-pNCKKotV.js";
|
|
5
5
|
import { c as resolveSignalSender, l as looksLikeUuid, o as resolveSignalPeerId, s as resolveSignalRecipient } from "./identity-YXPmgFMu.js";
|
|
6
|
-
import { c as resolveSignalReactionLevel, d as markdownToSignalTextChunks, l as formatSignalMediaText, m as signalApprovalCapability, o as materializeSignalPresentationFallback, p as shouldSuppressLocalSignalExecApprovalPrompt, r as resolveSignalReplyContextWithPersistence, s as signalMessageActions, t as detectSignalTransport } from "./transport-detection-
|
|
6
|
+
import { c as resolveSignalReactionLevel, d as markdownToSignalTextChunks, l as formatSignalMediaText, m as signalApprovalCapability, o as materializeSignalPresentationFallback, p as shouldSuppressLocalSignalExecApprovalPrompt, r as resolveSignalReplyContextWithPersistence, s as signalMessageActions, t as detectSignalTransport } from "./transport-detection-BcDiypLn.js";
|
|
7
7
|
import { i as migrateLegacySignalTransportConfig, n as normalizeCompatibilityConfig, r as clearLegacySignalTransportFieldsForAccount } from "./doctor-contract-api-C18u1hW0.js";
|
|
8
8
|
import { t as SignalChannelConfigSchema } from "./config-schema-CHihQTOp.js";
|
|
9
9
|
import { describeAccountSnapshot, resolveChannelMediaMaxBytes } from "openclaw/plugin-sdk/account-helpers";
|
|
@@ -572,7 +572,7 @@ function createSignalSetupWizardProxy(loadWizard) {
|
|
|
572
572
|
const signalDoctor = {
|
|
573
573
|
normalizeCompatibilityConfig,
|
|
574
574
|
cleanStaleConfig: async ({ cfg }) => {
|
|
575
|
-
const { detectSignalTransport } = await import("./transport-detection.runtime-
|
|
575
|
+
const { detectSignalTransport } = await import("./transport-detection.runtime-DYuvIa7s.js");
|
|
576
576
|
return await migrateLegacySignalTransportConfig({
|
|
577
577
|
cfg,
|
|
578
578
|
detect: detectSignalTransport
|
|
@@ -583,7 +583,7 @@ const signalDoctor = {
|
|
|
583
583
|
//#region extensions/signal/src/shared.ts
|
|
584
584
|
const SIGNAL_CHANNEL = "signal";
|
|
585
585
|
async function loadSignalChannelRuntime() {
|
|
586
|
-
return await import("./channel.runtime-
|
|
586
|
+
return await import("./channel.runtime-LfE0qPMj.js");
|
|
587
587
|
}
|
|
588
588
|
const signalSetupWizard = createSignalSetupWizardProxy(async () => (await loadSignalChannelRuntime()).signalSetupWizard);
|
|
589
589
|
const signalConfigAdapter = {
|
|
@@ -648,7 +648,10 @@ function createSignalPluginBase(params) {
|
|
|
648
648
|
minChars: 1500,
|
|
649
649
|
idleMs: 1e3
|
|
650
650
|
} },
|
|
651
|
-
reload: {
|
|
651
|
+
reload: {
|
|
652
|
+
configPrefixes: ["channels.signal"],
|
|
653
|
+
noopPrefixes: ["messages.inbound", "messages.ackReactionScope"]
|
|
654
|
+
},
|
|
652
655
|
configSchema: SignalChannelConfigSchema,
|
|
653
656
|
doctor: signalDoctor,
|
|
654
657
|
config: {
|
|
@@ -668,10 +671,10 @@ function createSignalPluginBase(params) {
|
|
|
668
671
|
}
|
|
669
672
|
//#endregion
|
|
670
673
|
//#region extensions/signal/src/channel.ts
|
|
671
|
-
const loadSignalMonitorModule = createLazyRuntimeModule(() => import("./monitor-
|
|
672
|
-
const loadSignalProbeModule = createLazyRuntimeModule(() => import("./probe-
|
|
673
|
-
const loadSignalSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-
|
|
674
|
-
const loadSignalApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-
|
|
674
|
+
const loadSignalMonitorModule = createLazyRuntimeModule(() => import("./monitor-D7Slr0-A.js").then((n) => n.n));
|
|
675
|
+
const loadSignalProbeModule = createLazyRuntimeModule(() => import("./probe-CtO2EIfg.js").then((n) => n.n));
|
|
676
|
+
const loadSignalSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-BLiqhyHW.js"));
|
|
677
|
+
const loadSignalApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-D-nkbsvm.js").then((n) => n.n));
|
|
675
678
|
async function resolveSignalSendContext(params) {
|
|
676
679
|
return {
|
|
677
680
|
send: resolveOutboundSendDep(params.deps, "signal") ?? (await loadSignalSendRuntime()).sendMessageSignal,
|
|
@@ -899,7 +902,7 @@ async function registerDeliveredSignalApprovalPayloadForReactions(params) {
|
|
|
899
902
|
const targetAuthor = normalizeOptionalString(account.config.account);
|
|
900
903
|
const targetAuthorUuid = normalizeOptionalString(account.config.accountUuid);
|
|
901
904
|
if (!targetAuthor && !targetAuthorUuid) return;
|
|
902
|
-
const { registerSignalQuestionReactionTargetForDeliveredPayload } = await import("./question-reactions-
|
|
905
|
+
const { registerSignalQuestionReactionTargetForDeliveredPayload } = await import("./question-reactions-CsVOpHg_.js").then((n) => n.n);
|
|
903
906
|
registerSignalQuestionReactionTargetForDeliveredPayload({
|
|
904
907
|
cfg: params.cfg,
|
|
905
908
|
target: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as signalPlugin } from "./channel-
|
|
1
|
+
import { t as signalPlugin } from "./channel-B-A_5_Vz.js";
|
|
2
2
|
export { signalPlugin };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as resolveSignalAccount, n as listSignalAccountIds } from "./accounts-DO4HMqaK.js";
|
|
2
|
-
import { c as signalNumberTextInput, i as createSignalCliPathTextInput, o as signalCompletionNote, s as signalDmPolicy } from "./channel-
|
|
2
|
+
import { c as signalNumberTextInput, i as createSignalCliPathTextInput, o as signalCompletionNote, s as signalDmPolicy } from "./channel-B-A_5_Vz.js";
|
|
3
3
|
import { i as installSignalCli } from "./install-signal-cli-7tEL37_j.js";
|
|
4
4
|
import { detectBinary } from "openclaw/plugin-sdk/setup-tools";
|
|
5
5
|
import { createDetectedBinaryStatus, createSetupTranslator, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup";
|
|
@@ -3,30 +3,30 @@ import { l as normalizeSignalTransportHost } from "./transport-policy-DxvSMHp9.j
|
|
|
3
3
|
import { i as resolveSignalAccount, o as resolveSignalReplyToMode } from "./accounts-DO4HMqaK.js";
|
|
4
4
|
import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.js";
|
|
5
5
|
import { a as normalizeSignalAllowRecipient, c as resolveSignalSender, i as isSignalSenderAllowed, l as looksLikeUuid, n as formatSignalSenderDisplay, o as resolveSignalPeerId, r as formatSignalSenderId, s as resolveSignalRecipient, t as formatSignalPairingIdLine } from "./identity-YXPmgFMu.js";
|
|
6
|
-
import { c as resolveSignalReactionLevel, f as isSignalNativeApprovalHandlerConfigured, i as getOptionalSignalRuntime, l as formatSignalMediaText, n as registerSignalReplyContext, o as materializeSignalPresentationFallback } from "./transport-detection-
|
|
6
|
+
import { c as resolveSignalReactionLevel, f as isSignalNativeApprovalHandlerConfigured, i as getOptionalSignalRuntime, l as formatSignalMediaText, n as registerSignalReplyContext, o as materializeSignalPresentationFallback } from "./transport-detection-BcDiypLn.js";
|
|
7
7
|
import { t as SignalSseRejectionError } from "./client-BmpTN7R3.js";
|
|
8
8
|
import { n as signalRpcRequest, r as streamSignalEvents, t as signalCheck } from "./client-adapter-CDyW9LrQ.js";
|
|
9
9
|
import { n as sendReactionSignal } from "./reaction-runtime-api-7FQFT_qb.js";
|
|
10
|
-
import { i as maybeResolveSignalApprovalReaction, o as registerSignalApprovalReactionTargetForDeliveredPayload, s as resolveSignalApprovalConversationKey, t as addSignalApprovalReactionHintToStructuredPayload } from "./approval-reactions-
|
|
11
|
-
import { r as registerSignalQuestionReactionTargetForDeliveredPayload, t as maybeResolveSignalQuestionReaction } from "./question-reactions-
|
|
12
|
-
import { n as sendReadReceiptSignal, r as sendTypingSignal, t as sendMessageSignal } from "./send-
|
|
10
|
+
import { i as maybeResolveSignalApprovalReaction, o as registerSignalApprovalReactionTargetForDeliveredPayload, s as resolveSignalApprovalConversationKey, t as addSignalApprovalReactionHintToStructuredPayload } from "./approval-reactions-D-nkbsvm.js";
|
|
11
|
+
import { r as registerSignalQuestionReactionTargetForDeliveredPayload, t as maybeResolveSignalQuestionReaction } from "./question-reactions-CsVOpHg_.js";
|
|
12
|
+
import { n as sendReadReceiptSignal, r as sendTypingSignal, t as sendMessageSignal } from "./send-DuH2ntJt.js";
|
|
13
13
|
import { bindIngressLifecycleToReplyOptions, createChannelIngressError, createChannelIngressMonitor, createChannelMessageReplyPipeline, resolveChannelStreamingBlockEnabled } from "openclaw/plugin-sdk/channel-outbound";
|
|
14
14
|
import { createChannelPairingChallengeIssuer } from "openclaw/plugin-sdk/channel-pairing";
|
|
15
15
|
import { resolveAgentRoute, resolveInboundLastRouteSessionKey } from "openclaw/plugin-sdk/routing";
|
|
16
16
|
import { asPositiveSafeInteger, isRecord, normalizeNullableString, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
17
17
|
import { CHANNEL_APPROVAL_NATIVE_RUNTIME_CONTEXT_CAPABILITY } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
|
|
18
18
|
import { normalizeE164, truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
19
|
-
import { buildChannelInboundEventContext, buildMentionRegexes, createChannelInboundDebouncer, filterChannelInboundQuoteContext, formatInboundEnvelope, formatInboundFromLabel, formatInboundMediaUnavailableText, hasVisibleInboundReplyDispatch, logInboundDrop, matchesMentionPatterns, readAgentRunTerminalOutcome, resolveEnvelopeFormatOptions, resolveInboundMentionDecision, resolveInboundSupplementalSenderAllowed, runChannelInboundEvent, shouldDebounceTextInbound, toHistoryMediaEntries, toInboundMediaFactsWithMetadata } from "openclaw/plugin-sdk/channel-inbound";
|
|
19
|
+
import { buildChannelInboundEventContext, buildMentionRegexes, createChannelInboundDebouncer, filterChannelInboundQuoteContext, formatInboundEnvelope, formatInboundFromLabel, formatInboundMediaUnavailableText, hasVisibleInboundReplyDispatch, logInboundDrop, matchesMentionPatterns, readAgentRunTerminalOutcome, resolveEnvelopeFormatOptions, resolveInboundDebounceMs, resolveInboundMentionDecision, resolveInboundSupplementalSenderAllowed, runChannelInboundEvent, shouldDebounceTextInbound, toHistoryMediaEntries, toInboundMediaFactsWithMetadata } from "openclaw/plugin-sdk/channel-inbound";
|
|
20
20
|
import { canonicalizeBase64, detectMime, estimateBase64DecodedBytes, kindFromMime, saveMediaBuffer } from "openclaw/plugin-sdk/media-runtime";
|
|
21
21
|
import { collectErrorGraphCandidates, formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
22
22
|
import { ensurePortAvailable, extractErrorCode, formatErrorMessage as formatErrorMessage$1, resolvePinnedMainDmOwnerFromAllowlist } from "openclaw/plugin-sdk/security-runtime";
|
|
23
|
-
import { resolveChannelGroupPolicy, resolveChannelGroupRequireMention } from "openclaw/plugin-sdk/channel-policy";
|
|
23
|
+
import { resolveChannelGroupPolicy, resolveChannelGroupRequireMention, resolveChannelGroups, resolveChannelGroupsConfigPath } from "openclaw/plugin-sdk/channel-policy";
|
|
24
24
|
import path from "node:path";
|
|
25
25
|
import { registerChannelRuntimeContext } from "openclaw/plugin-sdk/channel-runtime-context";
|
|
26
26
|
import { DEFAULT_GROUP_HISTORY_LIMIT, createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
|
|
27
27
|
import { deliverTextOrMediaReply, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
|
|
28
28
|
import { chunkTextWithMode, createReplyReferencePlanner, resolveChunkMode, resolveTextChunkLimit } from "openclaw/plugin-sdk/reply-runtime";
|
|
29
|
-
import { getRuntimeConfig } from "openclaw/plugin-sdk/runtime-config-snapshot";
|
|
29
|
+
import { createRuntimeConfigReader, getRuntimeConfig } from "openclaw/plugin-sdk/runtime-config-snapshot";
|
|
30
30
|
import { computeBackoff, createNonExitingRuntime, danger, logVerbose, shouldLogVerbose, sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
|
|
31
31
|
import { resolveAllowlistProviderRuntimeGroupPolicy, resolveDefaultGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce } from "openclaw/plugin-sdk/runtime-group-policy";
|
|
32
32
|
import { waitForTransportReady } from "openclaw/plugin-sdk/transport-ready-runtime";
|
|
@@ -676,9 +676,17 @@ async function finalizeSignalStatusReaction(params) {
|
|
|
676
676
|
await params.controller.restoreInitial();
|
|
677
677
|
}
|
|
678
678
|
function createSignalEventHandler(deps) {
|
|
679
|
+
const readConfig = createRuntimeConfigReader(deps.cfg);
|
|
680
|
+
const groupsConfigPath = resolveChannelGroupsConfigPath({
|
|
681
|
+
cfg: deps.cfg,
|
|
682
|
+
channel: "signal",
|
|
683
|
+
accountId: deps.accountId,
|
|
684
|
+
groups: resolveChannelGroups(deps.cfg, "signal", deps.accountId)
|
|
685
|
+
});
|
|
679
686
|
const statusReactionTiming = deps.statusReactionTiming ?? DEFAULT_TIMING;
|
|
680
687
|
const activeEnqueueEntries = /* @__PURE__ */ new WeakSet();
|
|
681
688
|
async function handleSignalInboundMessage(entry) {
|
|
689
|
+
const { cfg } = entry;
|
|
682
690
|
const fromLabel = formatInboundFromLabel({
|
|
683
691
|
isGroup: entry.isGroup,
|
|
684
692
|
groupLabel: entry.groupName ?? void 0,
|
|
@@ -688,14 +696,14 @@ function createSignalEventHandler(deps) {
|
|
|
688
696
|
directId: entry.senderDisplay
|
|
689
697
|
});
|
|
690
698
|
const route = resolveSignalInboundRoute({
|
|
691
|
-
cfg
|
|
699
|
+
cfg,
|
|
692
700
|
accountId: deps.accountId,
|
|
693
701
|
isGroup: entry.isGroup,
|
|
694
702
|
groupId: entry.groupId,
|
|
695
703
|
senderPeerId: entry.senderPeerId
|
|
696
704
|
});
|
|
697
|
-
const storePath = resolveStorePath(
|
|
698
|
-
const envelopeOptions = resolveEnvelopeFormatOptions(
|
|
705
|
+
const storePath = resolveStorePath(cfg.session?.store, { agentId: route.agentId });
|
|
706
|
+
const envelopeOptions = resolveEnvelopeFormatOptions(cfg);
|
|
699
707
|
const previousTimestamp = readSessionUpdatedAt({
|
|
700
708
|
storePath,
|
|
701
709
|
sessionKey: route.sessionKey
|
|
@@ -736,7 +744,7 @@ function createSignalEventHandler(deps) {
|
|
|
736
744
|
limit: deps.historyLimit
|
|
737
745
|
}) : void 0;
|
|
738
746
|
const replyToMode = resolveSignalReplyToMode({
|
|
739
|
-
cfg
|
|
747
|
+
cfg,
|
|
740
748
|
accountId: deps.accountId,
|
|
741
749
|
chatType: entry.isGroup ? "group" : "direct"
|
|
742
750
|
});
|
|
@@ -798,17 +806,17 @@ function createSignalEventHandler(deps) {
|
|
|
798
806
|
logVerbose(`signal inbound: from=${ctxPayload.From} len=${body.length} preview="${preview}"`);
|
|
799
807
|
}
|
|
800
808
|
const statusReactionTimestamp = resolveSignalStatusReactionTimestamp(entry);
|
|
801
|
-
const statusReactionsConfig =
|
|
809
|
+
const statusReactionsConfig = cfg.messages?.statusReactions;
|
|
802
810
|
const signalReactionLevel = resolveSignalReactionLevel({
|
|
803
|
-
cfg
|
|
811
|
+
cfg,
|
|
804
812
|
accountId: route.accountId
|
|
805
813
|
});
|
|
806
|
-
const ackReaction = resolveAckReaction(
|
|
814
|
+
const ackReaction = resolveAckReaction(cfg, route.agentId, {
|
|
807
815
|
channel: "signal",
|
|
808
816
|
accountId: route.accountId
|
|
809
817
|
});
|
|
810
818
|
const shouldSendStatusReaction = Boolean(ackReaction && shouldAckReaction({
|
|
811
|
-
scope:
|
|
819
|
+
scope: cfg.messages?.ackReactionScope,
|
|
812
820
|
isDirect: !entry.isGroup,
|
|
813
821
|
isGroup: entry.isGroup,
|
|
814
822
|
isMentionableGroup: entry.isGroup,
|
|
@@ -817,7 +825,7 @@ function createSignalEventHandler(deps) {
|
|
|
817
825
|
}));
|
|
818
826
|
const statusReactionTarget = `${entry.groupId ?? entry.senderRecipient}/${statusReactionTimestamp ?? "unknown"}`;
|
|
819
827
|
const signalReactionOpts = {
|
|
820
|
-
cfg
|
|
828
|
+
cfg,
|
|
821
829
|
...deps.baseUrl ? { baseUrl: deps.baseUrl } : {},
|
|
822
830
|
...deps.account ? { account: deps.account } : {},
|
|
823
831
|
...deps.accountId ? { accountId: deps.accountId } : {},
|
|
@@ -846,7 +854,7 @@ function createSignalEventHandler(deps) {
|
|
|
846
854
|
}) : null;
|
|
847
855
|
if (statusReactionController) statusReactionController.setQueued();
|
|
848
856
|
const { onModelSelected, typingCallbacks, ...replyPipeline } = createChannelMessageReplyPipeline({
|
|
849
|
-
cfg
|
|
857
|
+
cfg,
|
|
850
858
|
agentId: route.agentId,
|
|
851
859
|
channel: "signal",
|
|
852
860
|
accountId: route.accountId,
|
|
@@ -854,7 +862,7 @@ function createSignalEventHandler(deps) {
|
|
|
854
862
|
start: async () => {
|
|
855
863
|
if (!ctxPayload.To) return;
|
|
856
864
|
await sendTypingSignal(ctxPayload.To, {
|
|
857
|
-
cfg
|
|
865
|
+
cfg,
|
|
858
866
|
baseUrl: deps.baseUrl,
|
|
859
867
|
account: deps.account,
|
|
860
868
|
accountId: deps.accountId
|
|
@@ -880,13 +888,13 @@ function createSignalEventHandler(deps) {
|
|
|
880
888
|
const dispatcherOptions = {
|
|
881
889
|
...replyPipeline,
|
|
882
890
|
propagateRetryableNoSendFailure: true,
|
|
883
|
-
humanDelay: resolveHumanDelayConfig(
|
|
891
|
+
humanDelay: resolveHumanDelayConfig(cfg, route.agentId),
|
|
884
892
|
typingCallbacks
|
|
885
893
|
};
|
|
886
894
|
const delivery = {
|
|
887
895
|
deliver: async (payload, _info) => {
|
|
888
896
|
await deps.deliverReplies({
|
|
889
|
-
cfg
|
|
897
|
+
cfg,
|
|
890
898
|
replies: [payload],
|
|
891
899
|
target: ctxPayload.To,
|
|
892
900
|
baseUrl: deps.baseUrl,
|
|
@@ -946,7 +954,7 @@ function createSignalEventHandler(deps) {
|
|
|
946
954
|
raw: entry
|
|
947
955
|
}),
|
|
948
956
|
resolveTurn: () => ({
|
|
949
|
-
cfg
|
|
957
|
+
cfg,
|
|
950
958
|
channel: "signal",
|
|
951
959
|
accountId: route.accountId,
|
|
952
960
|
route: {
|
|
@@ -964,7 +972,7 @@ function createSignalEventHandler(deps) {
|
|
|
964
972
|
mainDmOwnerPin: (() => {
|
|
965
973
|
if (inboundLastRouteSessionKey !== route.mainSessionKey) return;
|
|
966
974
|
const pinnedOwner = resolvePinnedMainDmOwnerFromAllowlist({
|
|
967
|
-
dmScope:
|
|
975
|
+
dmScope: cfg.session?.dmScope,
|
|
968
976
|
allowFrom: deps.allowFrom,
|
|
969
977
|
normalizeEntry: normalizeSignalAllowRecipient
|
|
970
978
|
});
|
|
@@ -1072,7 +1080,7 @@ function createSignalEventHandler(deps) {
|
|
|
1072
1080
|
async function resolveSignalBatchChannelIngress(entries, last) {
|
|
1073
1081
|
if (last.boundChannelIngress) return last.boundChannelIngress;
|
|
1074
1082
|
const route = resolveSignalInboundRoute({
|
|
1075
|
-
cfg:
|
|
1083
|
+
cfg: last.cfg,
|
|
1076
1084
|
accountId: deps.accountId,
|
|
1077
1085
|
isGroup: last.isGroup,
|
|
1078
1086
|
groupId: last.groupId,
|
|
@@ -1152,6 +1160,10 @@ function createSignalEventHandler(deps) {
|
|
|
1152
1160
|
const { debouncer } = createChannelInboundDebouncer({
|
|
1153
1161
|
cfg: deps.cfg,
|
|
1154
1162
|
channel: "signal",
|
|
1163
|
+
resolveDebounceMs: (entry) => resolveInboundDebounceMs({
|
|
1164
|
+
cfg: entry.cfg,
|
|
1165
|
+
channel: "signal"
|
|
1166
|
+
}),
|
|
1155
1167
|
buildKey: (entry) => resolveSignalInboundDebounceKey(deps.accountId, entry),
|
|
1156
1168
|
shouldDebounce: (entry) => shouldDebounceTextInbound({
|
|
1157
1169
|
text: entry.commandBody,
|
|
@@ -1183,7 +1195,7 @@ function createSignalEventHandler(deps) {
|
|
|
1183
1195
|
const messageId = params.reaction.targetSentTimestamp ? String(params.reaction.targetSentTimestamp) : "unknown";
|
|
1184
1196
|
const conversationKey = resolveSignalApprovalConversationKey(groupId ? `group:${groupId}` : `signal:${resolveSignalRecipient(params.sender)}`);
|
|
1185
1197
|
if (conversationKey && await maybeResolveSignalApprovalReaction({
|
|
1186
|
-
cfg:
|
|
1198
|
+
cfg: params.cfg,
|
|
1187
1199
|
accountId: deps.accountId,
|
|
1188
1200
|
conversationKey,
|
|
1189
1201
|
messageId,
|
|
@@ -1198,7 +1210,7 @@ function createSignalEventHandler(deps) {
|
|
|
1198
1210
|
return true;
|
|
1199
1211
|
}
|
|
1200
1212
|
if (conversationKey && await maybeResolveSignalQuestionReaction({
|
|
1201
|
-
cfg:
|
|
1213
|
+
cfg: params.cfg,
|
|
1202
1214
|
accountId: deps.accountId,
|
|
1203
1215
|
conversationKey,
|
|
1204
1216
|
messageId,
|
|
@@ -1220,7 +1232,7 @@ function createSignalEventHandler(deps) {
|
|
|
1220
1232
|
})) return true;
|
|
1221
1233
|
const senderPeerId = resolveSignalPeerId(params.sender);
|
|
1222
1234
|
const route = resolveSignalInboundRoute({
|
|
1223
|
-
cfg:
|
|
1235
|
+
cfg: params.cfg,
|
|
1224
1236
|
accountId: deps.accountId,
|
|
1225
1237
|
isGroup,
|
|
1226
1238
|
groupId,
|
|
@@ -1251,6 +1263,7 @@ function createSignalEventHandler(deps) {
|
|
|
1251
1263
|
}
|
|
1252
1264
|
return async (event, turnAdoptionLifecycle, preparedPayload) => {
|
|
1253
1265
|
if (event.event !== "receive" || !event.data) return;
|
|
1266
|
+
const cfg = readConfig();
|
|
1254
1267
|
let payload = preparedPayload ?? null;
|
|
1255
1268
|
if (!preparedPayload) try {
|
|
1256
1269
|
payload = JSON.parse(event.data);
|
|
@@ -1272,7 +1285,7 @@ function createSignalEventHandler(deps) {
|
|
|
1272
1285
|
const messageText = renderSignalMentions(rawMessage, dataMessage?.mentions).trim();
|
|
1273
1286
|
const groupId = dataMessage?.groupInfo?.groupId ?? reaction?.groupInfo?.groupId ?? void 0;
|
|
1274
1287
|
const isGroup = Boolean(groupId);
|
|
1275
|
-
const hasControlCommandInMessage = isControlCommandMessage(messageText,
|
|
1288
|
+
const hasControlCommandInMessage = isControlCommandMessage(messageText, cfg);
|
|
1276
1289
|
const senderDisplay = formatSignalSenderDisplay(sender);
|
|
1277
1290
|
const resolveChannelIngress = async (contextBinding) => await resolveSignalAccessState({
|
|
1278
1291
|
accountId: deps.accountId,
|
|
@@ -1283,14 +1296,14 @@ function createSignalEventHandler(deps) {
|
|
|
1283
1296
|
sender,
|
|
1284
1297
|
groupId,
|
|
1285
1298
|
isGroup,
|
|
1286
|
-
cfg
|
|
1299
|
+
cfg,
|
|
1287
1300
|
hasControlCommand: hasControlCommandInMessage,
|
|
1288
1301
|
contextBinding
|
|
1289
1302
|
});
|
|
1290
1303
|
const { senderAccess, commandAccess } = await resolveChannelIngress();
|
|
1291
1304
|
const quoteText = normalizeOptionalString(dataMessage?.quote?.text) ?? "";
|
|
1292
1305
|
const { contextVisibilityMode, quoteSenderAllowed, visibleQuoteText, visibleQuoteSender } = resolveSignalQuoteContext({
|
|
1293
|
-
cfg
|
|
1306
|
+
cfg,
|
|
1294
1307
|
accountId: deps.accountId,
|
|
1295
1308
|
isGroup,
|
|
1296
1309
|
dataMessage,
|
|
@@ -1299,6 +1312,7 @@ function createSignalEventHandler(deps) {
|
|
|
1299
1312
|
if (quoteText && !visibleQuoteText && isGroup) logVerbose(`signal: drop quote context (mode=${contextVisibilityMode}, sender_allowed=${quoteSenderAllowed ? "yes" : "no"})`);
|
|
1300
1313
|
const hasBodyContent = Boolean(messageText || visibleQuoteText) || Boolean(!reaction && dataMessage?.attachments?.length);
|
|
1301
1314
|
if (reaction && await handleReactionOnlyInbound({
|
|
1315
|
+
cfg,
|
|
1302
1316
|
envelope,
|
|
1303
1317
|
sender,
|
|
1304
1318
|
senderDisplay,
|
|
@@ -1324,7 +1338,7 @@ function createSignalEventHandler(deps) {
|
|
|
1324
1338
|
accountId: deps.accountId,
|
|
1325
1339
|
sendPairingReply: async (text) => {
|
|
1326
1340
|
await sendMessageSignal(`signal:${senderRecipient}`, text, {
|
|
1327
|
-
cfg
|
|
1341
|
+
cfg,
|
|
1328
1342
|
baseUrl: deps.baseUrl,
|
|
1329
1343
|
account: deps.account,
|
|
1330
1344
|
maxBytes: deps.mediaMaxBytes,
|
|
@@ -1353,7 +1367,7 @@ function createSignalEventHandler(deps) {
|
|
|
1353
1367
|
return;
|
|
1354
1368
|
}
|
|
1355
1369
|
const route = resolveSignalInboundRoute({
|
|
1356
|
-
cfg
|
|
1370
|
+
cfg,
|
|
1357
1371
|
accountId: deps.accountId,
|
|
1358
1372
|
isGroup,
|
|
1359
1373
|
groupId,
|
|
@@ -1365,12 +1379,12 @@ function createSignalEventHandler(deps) {
|
|
|
1365
1379
|
const replyToId = typeof nativeReplyTargetTimestamp === "number" ? String(nativeReplyTargetTimestamp) : void 0;
|
|
1366
1380
|
const signalToRaw = isGroup ? `group:${groupId}` : `signal:${senderRecipient}`;
|
|
1367
1381
|
const signalTo = normalizeSignalMessagingTarget(signalToRaw) ?? signalToRaw;
|
|
1368
|
-
const mentionRegexes = buildMentionRegexes(
|
|
1382
|
+
const mentionRegexes = buildMentionRegexes(cfg, route.agentId);
|
|
1369
1383
|
const textWasMentioned = isGroup && matchesMentionPatterns(messageText, mentionRegexes);
|
|
1370
1384
|
const nativeMentionFacts = resolveSignalMentionFacts(deps, rawMessage, dataMessage?.mentions);
|
|
1371
1385
|
const wasMentioned = isGroup && (textWasMentioned || nativeMentionFacts.mentionsBot);
|
|
1372
1386
|
const requireMention = isGroup && resolveChannelGroupRequireMention({
|
|
1373
|
-
cfg
|
|
1387
|
+
cfg,
|
|
1374
1388
|
channel: "signal",
|
|
1375
1389
|
groupId,
|
|
1376
1390
|
accountId: deps.accountId,
|
|
@@ -1395,10 +1409,12 @@ function createSignalEventHandler(deps) {
|
|
|
1395
1409
|
const effectiveWasMentioned = mentionDecision.effectiveWasMentioned;
|
|
1396
1410
|
if (isGroup && requireMention && canDetectMention && mentionDecision.shouldSkip) {
|
|
1397
1411
|
logInboundDrop({
|
|
1398
|
-
log:
|
|
1412
|
+
log: deps.runtime.log,
|
|
1399
1413
|
channel: "signal",
|
|
1400
1414
|
reason: "no mention",
|
|
1401
|
-
target:
|
|
1415
|
+
target: groupId,
|
|
1416
|
+
onceKey: JSON.stringify([deps.accountId, groupId]),
|
|
1417
|
+
hint: `Mention patterns can be derived from the agent identity name. Set ${groupsConfigPath}[${JSON.stringify(groupId)}].requireMention=false to process messages without a mention. Preserve existing groups entries; when adding the first groups map, include "*": {} to keep other chats admitted.`
|
|
1402
1418
|
});
|
|
1403
1419
|
const pendingMedia = (dataMessage.attachments ?? []).map((attachment) => {
|
|
1404
1420
|
const contentType = attachment?.contentType ?? void 0;
|
|
@@ -1431,32 +1447,29 @@ function createSignalEventHandler(deps) {
|
|
|
1431
1447
|
sourceTimestamp: inboundTimestamp
|
|
1432
1448
|
});
|
|
1433
1449
|
const signalGroupPolicy = resolveChannelGroupPolicy({
|
|
1434
|
-
cfg
|
|
1450
|
+
cfg,
|
|
1435
1451
|
channel: "signal",
|
|
1436
1452
|
groupId,
|
|
1437
1453
|
accountId: deps.accountId
|
|
1438
1454
|
});
|
|
1439
|
-
if ((signalGroupPolicy.groupConfig?.ingest ?? signalGroupPolicy.defaultConfig?.ingest) === true) {
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
groupId: canonicalGroupTarget
|
|
1458
|
-
}))), "signal: mention-skip message hook failed");
|
|
1459
|
-
}
|
|
1455
|
+
if ((signalGroupPolicy.groupConfig?.ingest ?? signalGroupPolicy.defaultConfig?.ingest) === true) fireAndForgetHook(triggerInternalHook(createInternalHookEvent("message", "received", route.sessionKey, toInternalMessageReceivedContext({
|
|
1456
|
+
from: `group:${groupId}`,
|
|
1457
|
+
to: signalTo,
|
|
1458
|
+
content: pendingBodyText,
|
|
1459
|
+
timestamp: envelope.timestamp ?? void 0,
|
|
1460
|
+
channelId: "signal",
|
|
1461
|
+
accountId: deps.accountId,
|
|
1462
|
+
conversationId: signalTo,
|
|
1463
|
+
messageId: typeof envelope.timestamp === "number" ? String(envelope.timestamp) : void 0,
|
|
1464
|
+
senderId: senderDisplay,
|
|
1465
|
+
senderName: envelope.sourceName ?? void 0,
|
|
1466
|
+
provider: "signal",
|
|
1467
|
+
surface: "signal",
|
|
1468
|
+
originatingChannel: "signal",
|
|
1469
|
+
originatingTo: signalTo,
|
|
1470
|
+
isGroup: true,
|
|
1471
|
+
groupId: signalTo
|
|
1472
|
+
}))), "signal: mention-skip message hook failed");
|
|
1460
1473
|
return;
|
|
1461
1474
|
}
|
|
1462
1475
|
const attachments = dataMessage.attachments ?? [];
|
|
@@ -1507,7 +1520,7 @@ function createSignalEventHandler(deps) {
|
|
|
1507
1520
|
if (!bodyText && mediaFacts.length === 0 && !visibleQuoteText) return;
|
|
1508
1521
|
if (deps.sendReadReceipts && !deps.readReceiptsViaDaemon && !isGroup && inboundTimestamp) try {
|
|
1509
1522
|
await sendReadReceiptSignal(`signal:${senderRecipient}`, inboundTimestamp, {
|
|
1510
|
-
cfg
|
|
1523
|
+
cfg,
|
|
1511
1524
|
baseUrl: deps.baseUrl,
|
|
1512
1525
|
account: deps.account,
|
|
1513
1526
|
accountId: deps.accountId
|
|
@@ -1527,6 +1540,7 @@ function createSignalEventHandler(deps) {
|
|
|
1527
1540
|
sourceTimestamp: inboundTimestamp
|
|
1528
1541
|
});
|
|
1529
1542
|
const entry = {
|
|
1543
|
+
cfg,
|
|
1530
1544
|
senderName,
|
|
1531
1545
|
senderDisplay,
|
|
1532
1546
|
senderRecipient,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { t as detectSignalTransport } from "./transport-detection-
|
|
2
|
+
import { t as detectSignalTransport } from "./transport-detection-BcDiypLn.js";
|
|
3
3
|
import { n as signalRpcRequest, t as signalCheck } from "./client-adapter-CDyW9LrQ.js";
|
|
4
4
|
import { runChannelProbe } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
5
5
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { i as
|
|
3
|
-
import { c as resolveSignalApprovalTargetAuthorKeys
|
|
2
|
+
import { i as resolveSignalDeliveredConversationKey } from "./approval-auth-pNCKKotV.js";
|
|
3
|
+
import { c as resolveSignalApprovalTargetAuthorKeys } from "./approval-reactions-D-nkbsvm.js";
|
|
4
4
|
import { createQuestionReactionTargetStore, questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
|
|
5
5
|
import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
|
|
6
6
|
//#region extensions/signal/src/question-reactions.ts
|
|
@@ -24,21 +24,10 @@ const questionReactionTargets = createQuestionReactionTargetStore({
|
|
|
24
24
|
registerChannelDelivery: questionGatewayRuntime.registerChannelDelivery,
|
|
25
25
|
resolveReaction: questionGatewayRuntime.resolveReaction
|
|
26
26
|
});
|
|
27
|
-
function resolveConversationKey(params) {
|
|
28
|
-
try {
|
|
29
|
-
return resolveSignalTarget({
|
|
30
|
-
cfg: params.cfg,
|
|
31
|
-
accountId: params.accountId,
|
|
32
|
-
input: params.to
|
|
33
|
-
})?.to ?? resolveSignalApprovalConversationKey(params.to);
|
|
34
|
-
} catch {
|
|
35
|
-
return resolveSignalApprovalConversationKey(params.to);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
27
|
function registerSignalQuestionReactionTargetForDeliveredPayload(params) {
|
|
39
28
|
const binding = questionGatewayRuntime.readReactionBinding(params.payload);
|
|
40
29
|
if (params.target.channel !== "signal" || !binding) return false;
|
|
41
|
-
const conversationKey =
|
|
30
|
+
const conversationKey = resolveSignalDeliveredConversationKey({
|
|
42
31
|
cfg: params.cfg,
|
|
43
32
|
...params.target
|
|
44
33
|
});
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-DO4HMqaK.js";
|
|
2
2
|
import { n as normalizeSignalMessagingTarget, t as looksLikeSignalTargetId } from "./normalize-l_b99hap.js";
|
|
3
|
-
import { a as setSignalRuntime, c as resolveSignalReactionLevel, s as signalMessageActions } from "./transport-detection-
|
|
3
|
+
import { a as setSignalRuntime, c as resolveSignalReactionLevel, s as signalMessageActions } from "./transport-detection-BcDiypLn.js";
|
|
4
4
|
import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-7FQFT_qb.js";
|
|
5
5
|
import { n as SignalConfigSchema } from "./config-schema-CHihQTOp.js";
|
|
6
6
|
import { i as installSignalCli } from "./install-signal-cli-7tEL37_j.js";
|
|
7
|
-
import { t as monitorSignalProvider } from "./monitor-
|
|
8
|
-
import { t as sendMessageSignal } from "./send-
|
|
9
|
-
import { t as probeSignal } from "./probe-
|
|
7
|
+
import { t as monitorSignalProvider } from "./monitor-D7Slr0-A.js";
|
|
8
|
+
import { t as sendMessageSignal } from "./send-DuH2ntJt.js";
|
|
9
|
+
import { t as probeSignal } from "./probe-CtO2EIfg.js";
|
|
10
10
|
import { resolveChannelMediaMaxBytes } from "openclaw/plugin-sdk/account-helpers";
|
|
11
11
|
import { PAIRING_APPROVED_MESSAGE } from "openclaw/plugin-sdk/channel-status";
|
|
12
12
|
import { buildBaseAccountStatusSnapshot, buildBaseChannelStatusSummary, collectStatusIssuesFromLastError, createDefaultChannelRuntimeState } from "openclaw/plugin-sdk/status-helpers";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as resolveSignalAccount } from "./accounts-DO4HMqaK.js";
|
|
2
2
|
import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.js";
|
|
3
|
-
import { n as registerSignalReplyContext, u as markdownToSignalText } from "./transport-detection-
|
|
3
|
+
import { n as registerSignalReplyContext, u as markdownToSignalText } from "./transport-detection-BcDiypLn.js";
|
|
4
4
|
import { n as signalRpcRequest } from "./client-adapter-CDyW9LrQ.js";
|
|
5
5
|
import { t as resolveSignalRpcContext } from "./rpc-context-dXSy4NtF.js";
|
|
6
6
|
import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { r as sendTypingSignal, t as sendMessageSignal } from "./send-
|
|
1
|
+
import { r as sendTypingSignal, t as sendMessageSignal } from "./send-DuH2ntJt.js";
|
|
2
2
|
export { sendMessageSignal, sendTypingSignal };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { u as normalizeSignalTransportUrl } from "./transport-policy-DxvSMHp9.js";
|
|
2
2
|
import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-DO4HMqaK.js";
|
|
3
3
|
import { n as normalizeSignalMessagingTarget, r as normalizeSignalReactionRecipient } from "./normalize-l_b99hap.js";
|
|
4
|
-
import { n as signalApprovalAuth, t as getSignalApprovalApprovers } from "./approval-auth-
|
|
4
|
+
import { n as signalApprovalAuth, t as getSignalApprovalApprovers } from "./approval-auth-pNCKKotV.js";
|
|
5
5
|
import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-7FQFT_qb.js";
|
|
6
6
|
import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
|
|
7
7
|
import { questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
|
|
@@ -73,7 +73,7 @@ const signalApproval = createApproverRestrictedNativeApprovalCapabilityFromForwa
|
|
|
73
73
|
approvalKind,
|
|
74
74
|
request
|
|
75
75
|
}),
|
|
76
|
-
load: async () => (await import("./approval-handler.runtime-
|
|
76
|
+
load: async () => (await import("./approval-handler.runtime-Dsg_GE8N.js")).signalApprovalNativeRuntime
|
|
77
77
|
})
|
|
78
78
|
});
|
|
79
79
|
const signalApprovalRouting = signalApproval.routing;
|
package/dist/{transport-detection.runtime-B81flHI8.js → transport-detection.runtime-DYuvIa7s.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as detectSignalTransport } from "./transport-detection-
|
|
1
|
+
import { t as detectSignalTransport } from "./transport-detection-BcDiypLn.js";
|
|
2
2
|
export { detectSignalTransport };
|
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/signal",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.2",
|
|
4
4
|
"description": "OpenClaw Signal channel plugin",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -93,10 +93,10 @@
|
|
|
93
93
|
"allowInvalidConfigRecovery": true
|
|
94
94
|
},
|
|
95
95
|
"compat": {
|
|
96
|
-
"pluginApi": ">=2026.9.
|
|
96
|
+
"pluginApi": ">=2026.9.2"
|
|
97
97
|
},
|
|
98
98
|
"build": {
|
|
99
|
-
"openclawVersion": "2026.9.
|
|
99
|
+
"openclawVersion": "2026.9.2",
|
|
100
100
|
"bundledDist": false
|
|
101
101
|
},
|
|
102
102
|
"release": {
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"README.md"
|
|
119
119
|
],
|
|
120
120
|
"peerDependencies": {
|
|
121
|
-
"openclaw": ">=2026.9.
|
|
121
|
+
"openclaw": ">=2026.9.2"
|
|
122
122
|
},
|
|
123
123
|
"peerDependenciesMeta": {
|
|
124
124
|
"openclaw": {
|