@openclaw/signal 2026.8.1-beta.2 → 2026.9.1-beta.1
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-DrStJjiK.js → accounts-DO4HMqaK.js} +2 -2
- package/dist/api.js +11 -10
- package/dist/{runtime-JPrGlV7h.js → approval-auth-BsYHLTHK.js} +4 -10
- package/dist/{approval-handler.runtime-Bi5yNhnj.js → approval-handler.runtime-COrjDqm1.js} +5 -5
- package/dist/{approval-reactions-BulCzhdB.js → approval-reactions-D8x4WFYZ.js} +62 -153
- package/dist/{channel-CzDJMDtX.js → channel-DBwSJm7U.js} +24 -17
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.runtime-D12iYzJB.js → channel.runtime-DvhLiRgJ.js} +2 -2
- package/dist/contract-api.js +3 -2
- package/dist/{identity-BQ4OzXXk.js → identity-YXPmgFMu.js} +2 -47
- package/dist/{monitor-DiN2hKnG.js → monitor-BIMAiZNm.js} +185 -82
- package/dist/normalize-l_b99hap.js +51 -0
- package/dist/{probe-C_THuQzn.js → probe-C2Z15YNS.js} +1 -1
- package/dist/{question-reactions-ByjH5qST.js → question-reactions-CkO8Q5i2.js} +2 -2
- package/dist/{reaction-runtime-api-Cf6QHcE5.js → reaction-runtime-api-Ch0dk2sh.js} +11 -36
- package/dist/reaction-runtime-api.js +1 -1
- package/dist/rpc-context-dXSy4NtF.js +15 -0
- package/dist/runtime-api.js +7 -8
- package/dist/{send-BvGgByMd.js → send-u8wH_fQM.js} +5 -23
- package/dist/{send.runtime-CtTBBrjL.js → send.runtime-DolSm_sS.js} +1 -1
- package/dist/{transport-detection-BItHawMq.js → transport-detection-B9TcrBCr.js} +18 -41
- package/dist/{transport-detection.runtime-DoiwPcrG.js → transport-detection.runtime-kDheC5_M.js} +1 -1
- package/node_modules/ws/lib/permessage-deflate.js +3 -1
- package/node_modules/ws/package.json +1 -1
- package/package.json +5 -5
- package/dist/rpc-context-CZUoE0-A.js +0 -17
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as isSignalManagedNativeConnectionUrlForBind, c as buildSignalTransportHttpUrl, i as assignSignalManagedNativePort, n as DEFAULT_SIGNAL_MANAGED_NATIVE_PORT, r as allocateSignalManagedNativePort, s as resolveLocalSignalTransportPort } from "./transport-policy-DxvSMHp9.js";
|
|
1
|
+
import { a as isSignalManagedNativeConnectionUrlForBind, c as buildSignalTransportHttpUrl, i as assignSignalManagedNativePort, l as normalizeSignalTransportHost, n as DEFAULT_SIGNAL_MANAGED_NATIVE_PORT, r as allocateSignalManagedNativePort, s as resolveLocalSignalTransportPort } from "./transport-policy-DxvSMHp9.js";
|
|
2
2
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
import { DEFAULT_ACCOUNT_ID, createAccountListHelpers, normalizeAccountId, resolveAccountEntry, resolveMergedAccountConfig } from "openclaw/plugin-sdk/account-resolution";
|
|
4
4
|
//#region extensions/signal/src/accounts.ts
|
|
@@ -80,7 +80,7 @@ function resolveSignalTransport(transport, managedNativePort = DEFAULT_SIGNAL_MA
|
|
|
80
80
|
baseUrl: transport.url.trim()
|
|
81
81
|
};
|
|
82
82
|
const managedTransport = transport?.kind === "managed-native" ? assignSignalManagedNativePort(transport, transport.httpPort ?? managedNativePort) : transport;
|
|
83
|
-
const httpHost = normalizeOptionalString(managedTransport?.httpHost) ?? "127.0.0.1";
|
|
83
|
+
const httpHost = normalizeSignalTransportHost(normalizeOptionalString(managedTransport?.httpHost) ?? "127.0.0.1");
|
|
84
84
|
const httpPort = managedTransport?.httpPort ?? managedNativePort;
|
|
85
85
|
const configPath = normalizeOptionalString(managedTransport?.configPath);
|
|
86
86
|
return {
|
package/dist/api.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-
|
|
2
|
-
import {
|
|
3
|
-
import { a as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { t as
|
|
1
|
+
import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-DO4HMqaK.js";
|
|
2
|
+
import { n as normalizeSignalMessagingTarget, t as looksLikeSignalTargetId } from "./normalize-l_b99hap.js";
|
|
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-B9TcrBCr.js";
|
|
5
|
+
import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-Ch0dk2sh.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-DBwSJm7U.js";
|
|
7
|
+
import { i as installSignalCli } from "./install-signal-cli-Cpiyk0k1.js";
|
|
8
|
+
import { t as monitorSignalProvider } from "./monitor-BIMAiZNm.js";
|
|
9
|
+
import { n as sendReadReceiptSignal, r as sendTypingSignal, t as sendMessageSignal } from "./send-u8wH_fQM.js";
|
|
10
|
+
import { t as probeSignal } from "./probe-C2Z15YNS.js";
|
|
10
11
|
//#region extensions/signal/src/channel.setup.ts
|
|
11
12
|
const signalSetupPlugin = { ...createSignalPluginBase({
|
|
12
13
|
setupWizard: signalSetupWizard,
|
|
13
14
|
setupContract: signalSetupContract
|
|
14
15
|
}) };
|
|
15
16
|
//#endregion
|
|
16
|
-
export { detectSignalTransport,
|
|
17
|
+
export { detectSignalTransport, formatSignalPairingIdLine, formatSignalSenderDisplay, formatSignalSenderId, installSignalCli, isSignalSenderAllowed, listEnabledSignalAccounts, listSignalAccountIds, looksLikeSignalTargetId, looksLikeUuid, markdownToSignalText, markdownToSignalTextChunks, monitorSignalProvider, normalizeSignalAccountInput, normalizeSignalAllowRecipient, normalizeSignalMessagingTarget, prepareSignalManagedNativeTransport, probeSignal, probeSignalTransport, removeReactionSignal, resolveDefaultSignalAccountId, resolveSignalAccount, resolveSignalOutboundTarget, resolveSignalPeerId, resolveSignalReactionLevel, resolveSignalRecipient, resolveSignalSender, sendMessageSignal, sendReactionSignal, sendReadReceiptSignal, sendTypingSignal, signalMessageActions, signalPlugin, signalSetupPlugin, writeSignalAccountTransport };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { i as resolveSignalAccount } from "./accounts-
|
|
2
|
-
import {
|
|
1
|
+
import { i as resolveSignalAccount } from "./accounts-DO4HMqaK.js";
|
|
2
|
+
import { n as normalizeSignalMessagingTarget, t as looksLikeSignalTargetId } from "./normalize-l_b99hap.js";
|
|
3
|
+
import { l as looksLikeUuid } from "./identity-YXPmgFMu.js";
|
|
3
4
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
5
|
import { createChannelApprovalAuth } from "openclaw/plugin-sdk/approval-auth-runtime";
|
|
5
6
|
import { normalizeE164 } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
6
|
-
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
|
|
7
7
|
//#region extensions/signal/src/aliases.ts
|
|
8
8
|
function normalizeAliasKey(raw) {
|
|
9
9
|
const trimmed = raw.trim();
|
|
@@ -152,10 +152,4 @@ const signalApproval = createChannelApprovalAuth({
|
|
|
152
152
|
const getSignalApprovalApprovers = signalApproval.resolveApprovers;
|
|
153
153
|
const signalApprovalAuth = signalApproval.approvalAuth;
|
|
154
154
|
//#endregion
|
|
155
|
-
|
|
156
|
-
const { setRuntime: setSignalRuntime, tryGetRuntime: getOptionalSignalRuntime } = createPluginRuntimeStore({
|
|
157
|
-
pluginId: "signal",
|
|
158
|
-
errorMessage: "Signal runtime not initialized"
|
|
159
|
-
});
|
|
160
|
-
//#endregion
|
|
161
|
-
export { listSignalAliasDirectoryEntries as a, signalApprovalAuth as i, setSignalRuntime as n, resolveSignalTarget as o, getSignalApprovalApprovers as r, getOptionalSignalRuntime as t };
|
|
155
|
+
export { resolveSignalTarget as i, signalApprovalAuth as n, listSignalAliasDirectoryEntries as r, getSignalApprovalApprovers as t };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { r as resolveDefaultSignalAccountId } from "./accounts-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { r as sendTypingSignal, t as sendMessageSignal } from "./send-
|
|
1
|
+
import { r as resolveDefaultSignalAccountId } from "./accounts-DO4HMqaK.js";
|
|
2
|
+
import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.js";
|
|
3
|
+
import { i as resolveSignalTarget } from "./approval-auth-BsYHLTHK.js";
|
|
4
|
+
import { a as registerSignalApprovalReactionTarget, c as resolveSignalApprovalTargetAuthorKeys, l as unregisterSignalApprovalReactionTarget, r as hasSignalApprovalReactionApprovers, s as resolveSignalApprovalConversationKey } from "./approval-reactions-D8x4WFYZ.js";
|
|
5
|
+
import { r as sendTypingSignal, t as sendMessageSignal } from "./send-u8wH_fQM.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,44 +1,18 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import {
|
|
3
|
-
import { i as
|
|
2
|
+
import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.js";
|
|
3
|
+
import { i as resolveSignalTarget, n as signalApprovalAuth, t as getSignalApprovalApprovers } from "./approval-auth-BsYHLTHK.js";
|
|
4
|
+
import { l as looksLikeUuid } from "./identity-YXPmgFMu.js";
|
|
5
|
+
import { i as getOptionalSignalRuntime } from "./transport-detection-B9TcrBCr.js";
|
|
4
6
|
import { createLazyRuntimeSurface } from "openclaw/plugin-sdk/lazy-runtime";
|
|
5
7
|
import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
|
|
6
8
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
|
-
import { addApprovalReactionHintToText,
|
|
9
|
+
import { addApprovalReactionHintToText, createApprovalReactionTargetStore, hasApprovalReactionHintText, listApprovalReactionBindings, readApprovalReactionDecisionList, resolveTypedApprovalReactionTarget } from "openclaw/plugin-sdk/approval-reaction-runtime";
|
|
8
10
|
import { normalizeE164 } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
9
11
|
import { isApprovalNotFoundError } from "openclaw/plugin-sdk/error-runtime";
|
|
10
12
|
import { getExecApprovalReplyMetadata } from "openclaw/plugin-sdk/approval-reply-runtime";
|
|
11
|
-
import { matchesApprovalRequestFilters } from "openclaw/plugin-sdk/approval-client-runtime";
|
|
12
13
|
import { createPluginStateErrorReporter } from "openclaw/plugin-sdk/plugin-state-runtime";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
addSignalApprovalReactionHintToStructuredPayload: () => addSignalApprovalReactionHintToStructuredPayload,
|
|
16
|
-
addSignalApprovalReactionHintToText: () => addSignalApprovalReactionHintToText,
|
|
17
|
-
appendSignalApprovalReactionHintForOutboundMessage: () => appendSignalApprovalReactionHintForOutboundMessage,
|
|
18
|
-
buildSignalApprovalReactionHint: () => buildSignalApprovalReactionHint,
|
|
19
|
-
clearSignalApprovalReactionTargetsForTest: () => clearSignalApprovalReactionTargetsForTest,
|
|
20
|
-
hasSignalApprovalReactionApprovers: () => hasSignalApprovalReactionApprovers,
|
|
21
|
-
maybeResolveSignalApprovalReaction: () => maybeResolveSignalApprovalReaction,
|
|
22
|
-
registerSignalApprovalReactionTarget: () => registerSignalApprovalReactionTarget,
|
|
23
|
-
registerSignalApprovalReactionTargetForDeliveredPayload: () => registerSignalApprovalReactionTargetForDeliveredPayload,
|
|
24
|
-
registerSignalApprovalReactionTargetForOutboundMessage: () => registerSignalApprovalReactionTargetForOutboundMessage,
|
|
25
|
-
resolveSignalApprovalConversationKey: () => resolveSignalApprovalConversationKey,
|
|
26
|
-
resolveSignalApprovalReactionTargetWithPersistence: () => resolveSignalApprovalReactionTargetWithPersistence,
|
|
27
|
-
resolveSignalApprovalTargetAuthorKeys: () => resolveSignalApprovalTargetAuthorKeys,
|
|
28
|
-
unregisterSignalApprovalReactionTarget: () => unregisterSignalApprovalReactionTarget
|
|
29
|
-
});
|
|
30
|
-
const PERSISTENT_NAMESPACE = "signal.approval-reactions.v2";
|
|
31
|
-
const PERSISTENT_MAX_ENTRIES = 1e3;
|
|
32
|
-
const DEFAULT_REACTION_TARGET_TTL_MS = 1440 * 60 * 1e3;
|
|
33
|
-
const loadResolveApprovalOverGateway = createLazyRuntimeSurface(() => import("openclaw/plugin-sdk/approval-gateway-runtime"), (runtime) => runtime.resolveApprovalOverGateway);
|
|
34
|
-
const signalApprovalReactionTargets = createApprovalReactionTargetStore({
|
|
35
|
-
namespace: PERSISTENT_NAMESPACE,
|
|
36
|
-
maxEntries: PERSISTENT_MAX_ENTRIES,
|
|
37
|
-
defaultTtlMs: DEFAULT_REACTION_TARGET_TTL_MS,
|
|
38
|
-
openStore: (storeParams) => getOptionalSignalRuntime()?.state.openKeyedStore(storeParams),
|
|
39
|
-
logPersistentError: createPluginStateErrorReporter(getOptionalSignalRuntime, "signal", "approval-reaction-state", "Signal persistent approval reaction state failed"),
|
|
40
|
-
readPersistedTarget
|
|
41
|
-
});
|
|
14
|
+
import { matchesApprovalRequestFilters } from "openclaw/plugin-sdk/approval-client-runtime";
|
|
15
|
+
//#region extensions/signal/src/approval-reaction-routes.ts
|
|
42
16
|
function resolveApprovalForwardingConfig(params) {
|
|
43
17
|
return params.approvalKind === "plugin" ? params.cfg.approvals?.plugin : params.cfg.approvals?.exec;
|
|
44
18
|
}
|
|
@@ -115,6 +89,54 @@ function isSignalApprovalReactionRouteStillEnabled(params) {
|
|
|
115
89
|
route: params.target.route
|
|
116
90
|
});
|
|
117
91
|
}
|
|
92
|
+
function buildTargetRoute(params) {
|
|
93
|
+
const to = resolveSignalApprovalRouteTarget({
|
|
94
|
+
cfg: params.cfg,
|
|
95
|
+
accountId: params.accountId,
|
|
96
|
+
to: params.to
|
|
97
|
+
});
|
|
98
|
+
if (!to) return null;
|
|
99
|
+
const route = {
|
|
100
|
+
deliveryMode: "target",
|
|
101
|
+
to,
|
|
102
|
+
...normalizeOptionalString(params.accountId) ? { accountId: normalizeOptionalString(params.accountId) } : {},
|
|
103
|
+
...normalizeOptionalString(params.agentId) ? { agentId: normalizeOptionalString(params.agentId) } : {},
|
|
104
|
+
...normalizeOptionalString(params.sessionKey) ? { sessionKey: normalizeOptionalString(params.sessionKey) } : {}
|
|
105
|
+
};
|
|
106
|
+
return isSignalApprovalReactionRouteStillEnabled({
|
|
107
|
+
cfg: params.cfg,
|
|
108
|
+
target: {
|
|
109
|
+
approvalKind: params.approvalKind,
|
|
110
|
+
route
|
|
111
|
+
}
|
|
112
|
+
}) ? route : null;
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region extensions/signal/src/approval-reactions.ts
|
|
116
|
+
var approval_reactions_exports = /* @__PURE__ */ __exportAll({
|
|
117
|
+
addSignalApprovalReactionHintToStructuredPayload: () => addSignalApprovalReactionHintToStructuredPayload,
|
|
118
|
+
clearSignalApprovalReactionTargetsForTest: () => clearSignalApprovalReactionTargetsForTest,
|
|
119
|
+
hasSignalApprovalReactionApprovers: () => hasSignalApprovalReactionApprovers,
|
|
120
|
+
maybeResolveSignalApprovalReaction: () => maybeResolveSignalApprovalReaction,
|
|
121
|
+
registerSignalApprovalReactionTarget: () => registerSignalApprovalReactionTarget,
|
|
122
|
+
registerSignalApprovalReactionTargetForDeliveredPayload: () => registerSignalApprovalReactionTargetForDeliveredPayload,
|
|
123
|
+
resolveSignalApprovalConversationKey: () => resolveSignalApprovalConversationKey,
|
|
124
|
+
resolveSignalApprovalReactionTargetWithPersistence: () => resolveSignalApprovalReactionTargetWithPersistence,
|
|
125
|
+
resolveSignalApprovalTargetAuthorKeys: () => resolveSignalApprovalTargetAuthorKeys,
|
|
126
|
+
unregisterSignalApprovalReactionTarget: () => unregisterSignalApprovalReactionTarget
|
|
127
|
+
});
|
|
128
|
+
const PERSISTENT_NAMESPACE = "signal.approval-reactions.v2";
|
|
129
|
+
const PERSISTENT_MAX_ENTRIES = 1e3;
|
|
130
|
+
const DEFAULT_REACTION_TARGET_TTL_MS = 1440 * 60 * 1e3;
|
|
131
|
+
const loadResolveApprovalOverGateway = createLazyRuntimeSurface(() => import("openclaw/plugin-sdk/approval-gateway-runtime"), (runtime) => runtime.resolveApprovalOverGateway);
|
|
132
|
+
const signalApprovalReactionTargets = createApprovalReactionTargetStore({
|
|
133
|
+
namespace: PERSISTENT_NAMESPACE,
|
|
134
|
+
maxEntries: PERSISTENT_MAX_ENTRIES,
|
|
135
|
+
defaultTtlMs: DEFAULT_REACTION_TARGET_TTL_MS,
|
|
136
|
+
openStore: (storeParams) => getOptionalSignalRuntime()?.state.openKeyedStore(storeParams),
|
|
137
|
+
logPersistentError: createPluginStateErrorReporter(getOptionalSignalRuntime, "signal", "approval-reaction-state", "Signal persistent approval reaction state failed"),
|
|
138
|
+
readPersistedTarget
|
|
139
|
+
});
|
|
118
140
|
function resolveSignalApprovalConversationKey(to) {
|
|
119
141
|
return normalizeSignalMessagingTarget(to) ?? null;
|
|
120
142
|
}
|
|
@@ -154,7 +176,9 @@ function buildReactionTargetKey(params) {
|
|
|
154
176
|
}
|
|
155
177
|
function readPersistedTarget(target) {
|
|
156
178
|
const value = target;
|
|
157
|
-
if (!value || typeof value.approvalId !== "string" || value.approvalKind !== "exec" && value.approvalKind !== "plugin" || !value.route || value.route.deliveryMode !== "session" && value.route.deliveryMode !== "target" || !Array.isArray(value.targetAuthorKeys)
|
|
179
|
+
if (!value || typeof value.approvalId !== "string" || value.approvalKind !== "exec" && value.approvalKind !== "plugin" || !value.route || value.route.deliveryMode !== "session" && value.route.deliveryMode !== "target" || !Array.isArray(value.targetAuthorKeys)) return null;
|
|
180
|
+
const allowedDecisions = readApprovalReactionDecisionList(value.allowedDecisions);
|
|
181
|
+
if (!allowedDecisions) return null;
|
|
158
182
|
const targetRouteTo = value.route.deliveryMode === "target" && typeof value.route.to === "string" ? normalizeSignalMessagingTarget(value.route.to) : null;
|
|
159
183
|
if (value.route.deliveryMode === "target" && !targetRouteTo) return null;
|
|
160
184
|
const route = value.route.deliveryMode === "target" ? {
|
|
@@ -171,89 +195,11 @@ function readPersistedTarget(target) {
|
|
|
171
195
|
return {
|
|
172
196
|
approvalId: value.approvalId,
|
|
173
197
|
approvalKind: value.approvalKind,
|
|
174
|
-
allowedDecisions
|
|
198
|
+
allowedDecisions,
|
|
175
199
|
targetAuthorKeys: value.targetAuthorKeys,
|
|
176
200
|
route
|
|
177
201
|
};
|
|
178
202
|
}
|
|
179
|
-
function listSignalApprovalReactionBindings(allowedDecisions) {
|
|
180
|
-
return listApprovalReactionBindings({ allowedDecisions });
|
|
181
|
-
}
|
|
182
|
-
function buildSignalApprovalReactionHint(allowedDecisions) {
|
|
183
|
-
return buildApprovalReactionHint({ allowedDecisions });
|
|
184
|
-
}
|
|
185
|
-
function addSignalApprovalReactionHintToText(params) {
|
|
186
|
-
return addApprovalReactionHintToText(params);
|
|
187
|
-
}
|
|
188
|
-
function resolveStandaloneApprovalPromptKind(text) {
|
|
189
|
-
const firstLine = text.split(/\r?\n/).map((line) => line.replace(/\*\*/g, "").trim()).find(Boolean);
|
|
190
|
-
if (/^(?:🔒\s*)?Exec approval required$/.test(firstLine ?? "")) return "exec";
|
|
191
|
-
if (/^(?:(?:🛡️|🛡|🚨|ℹ️|ℹ)\s*)?Plugin approval required$/.test(firstLine ?? "")) return "plugin";
|
|
192
|
-
return null;
|
|
193
|
-
}
|
|
194
|
-
function isStandaloneApprovalPromptText(text) {
|
|
195
|
-
return resolveStandaloneApprovalPromptKind(text) !== null;
|
|
196
|
-
}
|
|
197
|
-
function extractSignalApprovalPromptBinding(text) {
|
|
198
|
-
const approvalKind = resolveStandaloneApprovalPromptKind(text);
|
|
199
|
-
return approvalKind ? extractApprovalReactionPromptBinding({
|
|
200
|
-
text,
|
|
201
|
-
approvalKind,
|
|
202
|
-
replyInstructionOnly: true
|
|
203
|
-
}) : null;
|
|
204
|
-
}
|
|
205
|
-
function buildTargetRoute(params) {
|
|
206
|
-
const to = resolveSignalApprovalRouteTarget({
|
|
207
|
-
cfg: params.cfg,
|
|
208
|
-
accountId: params.accountId,
|
|
209
|
-
to: params.to
|
|
210
|
-
});
|
|
211
|
-
if (!to) return null;
|
|
212
|
-
const route = {
|
|
213
|
-
deliveryMode: "target",
|
|
214
|
-
to,
|
|
215
|
-
...normalizeOptionalString(params.accountId) ? { accountId: normalizeOptionalString(params.accountId) } : {},
|
|
216
|
-
...normalizeOptionalString(params.agentId) ? { agentId: normalizeOptionalString(params.agentId) } : {},
|
|
217
|
-
...normalizeOptionalString(params.sessionKey) ? { sessionKey: normalizeOptionalString(params.sessionKey) } : {}
|
|
218
|
-
};
|
|
219
|
-
return isSignalApprovalReactionRouteStillEnabled({
|
|
220
|
-
cfg: params.cfg,
|
|
221
|
-
target: {
|
|
222
|
-
approvalKind: params.approvalKind,
|
|
223
|
-
route
|
|
224
|
-
}
|
|
225
|
-
}) ? route : null;
|
|
226
|
-
}
|
|
227
|
-
function shouldAppendSignalApprovalReactionHintForOutboundMessage(params) {
|
|
228
|
-
const binding = extractSignalApprovalPromptBinding(params.text);
|
|
229
|
-
if (!binding) return false;
|
|
230
|
-
if (resolveSignalApprovalTargetAuthorKeys(params).length === 0) return false;
|
|
231
|
-
if (!hasSignalApprovalReactionApprovers({
|
|
232
|
-
cfg: params.cfg,
|
|
233
|
-
accountId: params.accountId
|
|
234
|
-
})) return false;
|
|
235
|
-
return Boolean(buildTargetRoute({
|
|
236
|
-
cfg: params.cfg,
|
|
237
|
-
accountId: params.accountId,
|
|
238
|
-
to: params.to,
|
|
239
|
-
approvalId: binding.approvalId,
|
|
240
|
-
approvalKind: binding.approvalKind,
|
|
241
|
-
agentId: params.agentId,
|
|
242
|
-
sessionKey: params.sessionKey
|
|
243
|
-
}));
|
|
244
|
-
}
|
|
245
|
-
function appendSignalApprovalReactionHintForOutboundMessage(params) {
|
|
246
|
-
if (!isStandaloneApprovalPromptText(params.text)) return params.text;
|
|
247
|
-
const binding = extractSignalApprovalPromptBinding(params.text);
|
|
248
|
-
if (!binding || !shouldAppendSignalApprovalReactionHintForOutboundMessage({
|
|
249
|
-
...params,
|
|
250
|
-
text: params.text
|
|
251
|
-
})) return params.text;
|
|
252
|
-
return addSignalApprovalReactionHintToText({
|
|
253
|
-
text: params.text,
|
|
254
|
-
allowedDecisions: binding.allowedDecisions
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
203
|
function hasSignalApprovalReactionApprovers(params) {
|
|
258
204
|
return getSignalApprovalApprovers(params).length > 0;
|
|
259
205
|
}
|
|
@@ -261,7 +207,7 @@ function registerSignalApprovalReactionTarget(params) {
|
|
|
261
207
|
const key = buildReactionTargetKey(params);
|
|
262
208
|
const approvalId = params.approvalId.trim();
|
|
263
209
|
const targetAuthorKeys = Array.from(new Set(params.targetAuthorKeys.map((entry) => normalizeSignalApprovalTargetAuthorKey(entry)).filter((entry) => Boolean(entry))));
|
|
264
|
-
const allowedDecisions =
|
|
210
|
+
const allowedDecisions = listApprovalReactionBindings({ allowedDecisions: params.allowedDecisions }).map((binding) => binding.decision);
|
|
265
211
|
if (!params.routeAllowed || params.approvalKind !== "exec" && params.approvalKind !== "plugin" || !key || !approvalId || allowedDecisions.length === 0) return null;
|
|
266
212
|
if (targetAuthorKeys.length === 0) return null;
|
|
267
213
|
const route = params.route.deliveryMode === "target" ? {
|
|
@@ -301,14 +247,13 @@ function addSignalApprovalReactionHintToStructuredPayload(params) {
|
|
|
301
247
|
cfg: params.cfg,
|
|
302
248
|
accountId: params.accountId,
|
|
303
249
|
to: params.to,
|
|
304
|
-
approvalId: metadata.approvalId,
|
|
305
250
|
approvalKind: metadata.approvalKind,
|
|
306
251
|
agentId: metadata.agentId,
|
|
307
252
|
sessionKey: metadata.sessionKey
|
|
308
253
|
}) || !params.payload.text) return null;
|
|
309
254
|
return {
|
|
310
255
|
...params.payload,
|
|
311
|
-
text:
|
|
256
|
+
text: addApprovalReactionHintToText({
|
|
312
257
|
text: params.payload.text,
|
|
313
258
|
allowedDecisions: metadata.allowedDecisions
|
|
314
259
|
})
|
|
@@ -345,7 +290,6 @@ function registerSignalApprovalReactionTargetForDeliveredPayload(params) {
|
|
|
345
290
|
cfg: params.cfg,
|
|
346
291
|
accountId: params.target.accountId,
|
|
347
292
|
to: params.target.to,
|
|
348
|
-
approvalId: metadata.approvalId,
|
|
349
293
|
approvalKind: metadata.approvalKind,
|
|
350
294
|
agentId: metadata.agentId,
|
|
351
295
|
sessionKey: metadata.sessionKey
|
|
@@ -371,41 +315,6 @@ function registerSignalApprovalReactionTargetForDeliveredPayload(params) {
|
|
|
371
315
|
})) || registered;
|
|
372
316
|
return registered;
|
|
373
317
|
}
|
|
374
|
-
function registerSignalApprovalReactionTargetForOutboundMessage(params) {
|
|
375
|
-
if (!isStandaloneApprovalPromptText(params.text)) return false;
|
|
376
|
-
const binding = extractSignalApprovalPromptBinding(params.text);
|
|
377
|
-
if (!binding) return false;
|
|
378
|
-
if (!hasSignalApprovalReactionApprovers({
|
|
379
|
-
cfg: params.cfg,
|
|
380
|
-
accountId: params.accountId
|
|
381
|
-
})) return false;
|
|
382
|
-
const targetAuthorKeys = resolveSignalApprovalTargetAuthorKeys(params);
|
|
383
|
-
if (targetAuthorKeys.length === 0) return false;
|
|
384
|
-
const conversationKey = resolveSignalApprovalConversationKey(params.to);
|
|
385
|
-
if (!conversationKey) return false;
|
|
386
|
-
const route = buildTargetRoute({
|
|
387
|
-
cfg: params.cfg,
|
|
388
|
-
accountId: params.accountId,
|
|
389
|
-
to: params.to,
|
|
390
|
-
approvalId: binding.approvalId,
|
|
391
|
-
approvalKind: binding.approvalKind,
|
|
392
|
-
agentId: params.agentId,
|
|
393
|
-
sessionKey: params.sessionKey
|
|
394
|
-
});
|
|
395
|
-
if (!route) return false;
|
|
396
|
-
return Boolean(registerSignalApprovalReactionTarget({
|
|
397
|
-
accountId: params.accountId,
|
|
398
|
-
conversationKey,
|
|
399
|
-
messageId: params.messageId,
|
|
400
|
-
approvalId: binding.approvalId,
|
|
401
|
-
approvalKind: binding.approvalKind,
|
|
402
|
-
allowedDecisions: binding.allowedDecisions,
|
|
403
|
-
targetAuthorKeys,
|
|
404
|
-
route,
|
|
405
|
-
routeAllowed: true,
|
|
406
|
-
ttlMs: params.ttlMs
|
|
407
|
-
}));
|
|
408
|
-
}
|
|
409
318
|
function unregisterSignalApprovalReactionTarget(params) {
|
|
410
319
|
const key = buildReactionTargetKey(params);
|
|
411
320
|
if (!key) return;
|
|
@@ -520,4 +429,4 @@ function clearSignalApprovalReactionTargetsForTest() {
|
|
|
520
429
|
loadResolveApprovalOverGateway.clear();
|
|
521
430
|
}
|
|
522
431
|
//#endregion
|
|
523
|
-
export {
|
|
432
|
+
export { registerSignalApprovalReactionTarget as a, resolveSignalApprovalTargetAuthorKeys as c, maybeResolveSignalApprovalReaction as i, unregisterSignalApprovalReactionTarget as l, approval_reactions_exports as n, registerSignalApprovalReactionTargetForDeliveredPayload as o, hasSignalApprovalReactionApprovers as r, resolveSignalApprovalConversationKey as s, addSignalApprovalReactionHintToStructuredPayload as t };
|
|
@@ -1,8 +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
|
-
import { a as resolveSignalAccountConfig, i as resolveSignalAccount, n as listSignalAccountIds, o as resolveSignalReplyToMode, r as resolveDefaultSignalAccountId, s as resolveSignalTransport } from "./accounts-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
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
|
+
import { n as normalizeSignalMessagingTarget, t as looksLikeSignalTargetId } from "./normalize-l_b99hap.js";
|
|
4
|
+
import { i as resolveSignalTarget, r as listSignalAliasDirectoryEntries } from "./approval-auth-BsYHLTHK.js";
|
|
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-B9TcrBCr.js";
|
|
6
7
|
import { i as migrateLegacySignalTransportConfig, n as normalizeCompatibilityConfig, r as clearLegacySignalTransportFieldsForAccount } from "./doctor-contract-api-Dnp5eQQJ.js";
|
|
7
8
|
import { t as SignalChannelConfigSchema } from "./config-schema-CkMIK7zp.js";
|
|
8
9
|
import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
|
|
@@ -570,7 +571,7 @@ function createSignalSetupWizardProxy(loadWizard) {
|
|
|
570
571
|
const signalDoctor = {
|
|
571
572
|
normalizeCompatibilityConfig,
|
|
572
573
|
cleanStaleConfig: async ({ cfg }) => {
|
|
573
|
-
const { detectSignalTransport } = await import("./transport-detection.runtime-
|
|
574
|
+
const { detectSignalTransport } = await import("./transport-detection.runtime-kDheC5_M.js");
|
|
574
575
|
return await migrateLegacySignalTransportConfig({
|
|
575
576
|
cfg,
|
|
576
577
|
detect: detectSignalTransport
|
|
@@ -581,7 +582,7 @@ const signalDoctor = {
|
|
|
581
582
|
//#region extensions/signal/src/shared.ts
|
|
582
583
|
const SIGNAL_CHANNEL = "signal";
|
|
583
584
|
async function loadSignalChannelRuntime() {
|
|
584
|
-
return await import("./channel.runtime-
|
|
585
|
+
return await import("./channel.runtime-DvhLiRgJ.js");
|
|
585
586
|
}
|
|
586
587
|
const signalSetupWizard = createSignalSetupWizardProxy(async () => (await loadSignalChannelRuntime()).signalSetupWizard);
|
|
587
588
|
const signalConfigAdapter = {
|
|
@@ -627,6 +628,7 @@ const signalSecurityAdapter = createRestrictSendersChannelSecurity({
|
|
|
627
628
|
groupPolicyPath: "channels.signal.groupPolicy",
|
|
628
629
|
groupAllowFromPath: "channels.signal.groupAllowFrom",
|
|
629
630
|
mentionGated: false,
|
|
631
|
+
findingTitle: "Signal security warning",
|
|
630
632
|
policyPathSuffix: "dmPolicy",
|
|
631
633
|
normalizeDmEntry: (raw) => normalizeE164(raw.replace(/^signal:/i, "").trim())
|
|
632
634
|
});
|
|
@@ -665,10 +667,10 @@ function createSignalPluginBase(params) {
|
|
|
665
667
|
}
|
|
666
668
|
//#endregion
|
|
667
669
|
//#region extensions/signal/src/channel.ts
|
|
668
|
-
const loadSignalMonitorModule = createLazyRuntimeModule(() => import("./monitor-
|
|
669
|
-
const loadSignalProbeModule = createLazyRuntimeModule(() => import("./probe-
|
|
670
|
-
const loadSignalSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-
|
|
671
|
-
const loadSignalApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-
|
|
670
|
+
const loadSignalMonitorModule = createLazyRuntimeModule(() => import("./monitor-BIMAiZNm.js").then((n) => n.n));
|
|
671
|
+
const loadSignalProbeModule = createLazyRuntimeModule(() => import("./probe-C2Z15YNS.js").then((n) => n.n));
|
|
672
|
+
const loadSignalSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-DolSm_sS.js"));
|
|
673
|
+
const loadSignalApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-D8x4WFYZ.js").then((n) => n.n));
|
|
672
674
|
async function resolveSignalSendContext(params) {
|
|
673
675
|
return {
|
|
674
676
|
send: resolveOutboundSendDep(params.deps, "signal") ?? (await loadSignalSendRuntime()).sendMessageSignal,
|
|
@@ -748,6 +750,7 @@ function attachSignalVisibleText(result, visibleText) {
|
|
|
748
750
|
...result,
|
|
749
751
|
meta: {
|
|
750
752
|
...meta,
|
|
753
|
+
visibleText,
|
|
751
754
|
signalVisibleText: visibleText
|
|
752
755
|
}
|
|
753
756
|
};
|
|
@@ -756,7 +759,10 @@ const signalMessageAdapter = defineChannelMessageAdapter({
|
|
|
756
759
|
id: "signal",
|
|
757
760
|
durableFinal: { capabilities: {
|
|
758
761
|
text: true,
|
|
759
|
-
media: true
|
|
762
|
+
media: true,
|
|
763
|
+
payload: true,
|
|
764
|
+
replyTo: true,
|
|
765
|
+
messageSendingHooks: true
|
|
760
766
|
} },
|
|
761
767
|
send: {
|
|
762
768
|
text: sendSignalOutbound,
|
|
@@ -810,14 +816,15 @@ async function sendFormattedSignalText(ctx) {
|
|
|
810
816
|
text: ctx.text,
|
|
811
817
|
styles: []
|
|
812
818
|
}];
|
|
819
|
+
const effectiveReplyToMode = ctx.replyToMode ?? resolveSignalReplyToMode({
|
|
820
|
+
cfg: ctx.cfg,
|
|
821
|
+
accountId: ctx.accountId,
|
|
822
|
+
chatType: inferSignalTargetChatType(to)
|
|
823
|
+
});
|
|
813
824
|
const nextReplyToId = createReplyToFanout({
|
|
814
825
|
replyToId: ctx.replyToId,
|
|
815
826
|
replyToIdSource: ctx.replyToIdSource,
|
|
816
|
-
replyToMode:
|
|
817
|
-
cfg: ctx.cfg,
|
|
818
|
-
accountId: ctx.accountId,
|
|
819
|
-
chatType: inferSignalTargetChatType(to)
|
|
820
|
-
})
|
|
827
|
+
replyToMode: effectiveReplyToMode
|
|
821
828
|
});
|
|
822
829
|
const results = [];
|
|
823
830
|
for (const chunk of chunks) {
|
|
@@ -890,7 +897,7 @@ async function registerDeliveredSignalApprovalPayloadForReactions(params) {
|
|
|
890
897
|
const targetAuthor = normalizeOptionalString(account.config.account);
|
|
891
898
|
const targetAuthorUuid = normalizeOptionalString(account.config.accountUuid);
|
|
892
899
|
if (!targetAuthor && !targetAuthorUuid) return;
|
|
893
|
-
const { registerSignalQuestionReactionTargetForDeliveredPayload } = await import("./question-reactions-
|
|
900
|
+
const { registerSignalQuestionReactionTargetForDeliveredPayload } = await import("./question-reactions-CkO8Q5i2.js").then((n) => n.n);
|
|
894
901
|
registerSignalQuestionReactionTargetForDeliveredPayload({
|
|
895
902
|
cfg: params.cfg,
|
|
896
903
|
target: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as signalPlugin } from "./channel-
|
|
1
|
+
import { t as signalPlugin } from "./channel-DBwSJm7U.js";
|
|
2
2
|
export { signalPlugin };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as resolveSignalAccount, n as listSignalAccountIds } from "./accounts-
|
|
2
|
-
import { c as signalNumberTextInput, i as createSignalCliPathTextInput, o as signalCompletionNote, s as signalDmPolicy } from "./channel-
|
|
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-DBwSJm7U.js";
|
|
3
3
|
import { i as installSignalCli } from "./install-signal-cli-Cpiyk0k1.js";
|
|
4
4
|
import { detectBinary } from "openclaw/plugin-sdk/setup-tools";
|
|
5
5
|
import { createDetectedBinaryStatus, createSetupTranslator, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup";
|
package/dist/contract-api.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as normalizeSignalMessagingTarget, r as normalizeSignalReactionRecipient, t as looksLikeSignalTargetId } from "./normalize-l_b99hap.js";
|
|
2
|
+
import { i as isSignalSenderAllowed } from "./identity-YXPmgFMu.js";
|
|
2
3
|
import { a as installSignalCliFromRelease, i as installSignalCli, n as downloadToFile, o as looksLikeArchive, r as extractSignalCliArchive, s as pickAsset, t as MAX_SIGNAL_CLI_EXTRACTED_BYTES } from "./install-signal-cli-Cpiyk0k1.js";
|
|
3
|
-
export { MAX_SIGNAL_CLI_EXTRACTED_BYTES, downloadToFile, extractSignalCliArchive, installSignalCli, installSignalCliFromRelease, isSignalSenderAllowed, looksLikeArchive, looksLikeSignalTargetId, normalizeSignalMessagingTarget, pickAsset };
|
|
4
|
+
export { MAX_SIGNAL_CLI_EXTRACTED_BYTES, downloadToFile, extractSignalCliArchive, installSignalCli, installSignalCliFromRelease, isSignalSenderAllowed, looksLikeArchive, looksLikeSignalTargetId, normalizeSignalMessagingTarget, normalizeSignalReactionRecipient, pickAsset };
|
|
@@ -1,51 +1,6 @@
|
|
|
1
|
-
import { normalizeLowercaseStringOrEmpty
|
|
1
|
+
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
2
2
|
import { normalizeE164 } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
3
3
|
import { resolveAllowlistMatchByCandidates } from "openclaw/plugin-sdk/allow-from";
|
|
4
|
-
//#region extensions/signal/src/normalize.ts
|
|
5
|
-
function normalizeSignalMessagingTarget(raw) {
|
|
6
|
-
const trimmed = raw.trim();
|
|
7
|
-
if (!trimmed) return;
|
|
8
|
-
let normalized = trimmed;
|
|
9
|
-
if (normalizeLowercaseStringOrEmpty(normalized).startsWith("signal:")) normalized = normalized.slice(7).trim();
|
|
10
|
-
if (!normalized) return;
|
|
11
|
-
const lower = normalizeLowercaseStringOrEmpty(normalized);
|
|
12
|
-
if (lower.startsWith("group:")) {
|
|
13
|
-
const id = normalized.slice(6).trim();
|
|
14
|
-
return id ? `group:${id}` : void 0;
|
|
15
|
-
}
|
|
16
|
-
if (lower.startsWith("username:")) {
|
|
17
|
-
const id = normalized.slice(9).trim();
|
|
18
|
-
return id ? normalizeLowercaseStringOrEmpty(`username:${id}`) : void 0;
|
|
19
|
-
}
|
|
20
|
-
if (lower.startsWith("u:")) {
|
|
21
|
-
const id = normalized.slice(2).trim();
|
|
22
|
-
return id ? normalizeLowercaseStringOrEmpty(`username:${id}`) : void 0;
|
|
23
|
-
}
|
|
24
|
-
if (lower.startsWith("uuid:")) {
|
|
25
|
-
const id = normalized.slice(5).trim();
|
|
26
|
-
return id ? normalizeLowercaseStringOrEmpty(id) : void 0;
|
|
27
|
-
}
|
|
28
|
-
return normalizeLowercaseStringOrEmpty(normalized);
|
|
29
|
-
}
|
|
30
|
-
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
31
|
-
const UUID_COMPACT_PATTERN = /^[0-9a-f]{32}$/i;
|
|
32
|
-
function looksLikeSignalTargetId(raw, normalized) {
|
|
33
|
-
const candidates = normalizeStringEntries([raw, normalized ?? ""]);
|
|
34
|
-
for (const candidate of candidates) {
|
|
35
|
-
if (/^(signal:)?(group:|username:|u:)/i.test(candidate)) return true;
|
|
36
|
-
if (/^(signal:)?uuid:/i.test(candidate)) {
|
|
37
|
-
const stripped = candidate.replace(/^signal:/i, "").replace(/^uuid:/i, "").trim();
|
|
38
|
-
if (!stripped) continue;
|
|
39
|
-
if (UUID_PATTERN.test(stripped) || UUID_COMPACT_PATTERN.test(stripped)) return true;
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
const withoutSignalPrefix = candidate.replace(/^signal:/i, "").trim();
|
|
43
|
-
if (UUID_PATTERN.test(withoutSignalPrefix) || UUID_COMPACT_PATTERN.test(withoutSignalPrefix)) return true;
|
|
44
|
-
if (/^\+?\d{3,}$/.test(withoutSignalPrefix)) return true;
|
|
45
|
-
}
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
//#endregion
|
|
49
4
|
//#region extensions/signal/src/uuid.ts
|
|
50
5
|
const UUID_HYPHENATED_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
51
6
|
const UUID_COMPACT_RE = /^[0-9a-f]{32}$/i;
|
|
@@ -143,4 +98,4 @@ function isSignalSenderAllowed(sender, allowFrom) {
|
|
|
143
98
|
}).allowed;
|
|
144
99
|
}
|
|
145
100
|
//#endregion
|
|
146
|
-
export { normalizeSignalAllowRecipient as a, resolveSignalSender as c,
|
|
101
|
+
export { normalizeSignalAllowRecipient as a, resolveSignalSender as c, isSignalSenderAllowed as i, looksLikeUuid as l, formatSignalSenderDisplay as n, resolveSignalPeerId as o, formatSignalSenderId as r, resolveSignalRecipient as s, formatSignalPairingIdLine as t };
|