@openclaw/signal 2026.8.1-beta.2 → 2026.8.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.
Files changed (31) hide show
  1. package/dist/{accounts-DrStJjiK.js → accounts-DO4HMqaK.js} +2 -2
  2. package/dist/api.js +11 -10
  3. package/dist/{runtime-JPrGlV7h.js → approval-auth-BsYHLTHK.js} +4 -10
  4. package/dist/{approval-handler.runtime-Bi5yNhnj.js → approval-handler.runtime-PqC23XbY.js} +5 -5
  5. package/dist/{approval-reactions-BulCzhdB.js → approval-reactions-DB-86mqK.js} +63 -154
  6. package/dist/{channel-CzDJMDtX.js → channel-C4vwPXz8.js} +28 -23
  7. package/dist/channel-config-api.js +1 -1
  8. package/dist/channel-plugin-api.js +1 -1
  9. package/dist/{channel.runtime-D12iYzJB.js → channel.runtime-CSviXPlC.js} +2 -2
  10. package/dist/{config-schema-CkMIK7zp.js → config-schema-q_QuhDy2.js} +8 -7
  11. package/dist/contract-api.js +3 -2
  12. package/dist/{doctor-contract-api-Dnp5eQQJ.js → doctor-contract-api-C18u1hW0.js} +1 -1
  13. package/dist/doctor-contract-api.js +1 -1
  14. package/dist/{identity-BQ4OzXXk.js → identity-YXPmgFMu.js} +2 -47
  15. package/dist/{monitor-DiN2hKnG.js → monitor-fR9bCL2p.js} +188 -85
  16. package/dist/normalize-l_b99hap.js +51 -0
  17. package/dist/{probe-C_THuQzn.js → probe-D7BV0KJ5.js} +1 -1
  18. package/dist/{question-reactions-ByjH5qST.js → question-reactions-D04hVKsE.js} +2 -2
  19. package/dist/{reaction-runtime-api-Cf6QHcE5.js → reaction-runtime-api-Ch0dk2sh.js} +11 -36
  20. package/dist/reaction-runtime-api.js +1 -1
  21. package/dist/rpc-context-dXSy4NtF.js +15 -0
  22. package/dist/runtime-api.js +9 -10
  23. package/dist/{send-BvGgByMd.js → send-DO3rs413.js} +6 -24
  24. package/dist/{send.runtime-CtTBBrjL.js → send.runtime-FRY_sREg.js} +1 -1
  25. package/dist/{transport-detection-BItHawMq.js → transport-detection-BSXAOmuH.js} +19 -42
  26. package/dist/{transport-detection.runtime-DoiwPcrG.js → transport-detection.runtime-Cnykqcu0.js} +1 -1
  27. package/node_modules/ws/lib/permessage-deflate.js +3 -1
  28. package/node_modules/ws/package.json +1 -1
  29. package/openclaw.plugin.json +0 -6
  30. package/package.json +5 -5
  31. package/dist/rpc-context-CZUoE0-A.js +0 -17
@@ -1,15 +1,14 @@
1
- import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-DrStJjiK.js";
2
- import { d as normalizeSignalMessagingTarget, u as looksLikeSignalTargetId } from "./identity-BQ4OzXXk.js";
3
- import { n as setSignalRuntime } from "./runtime-JPrGlV7h.js";
4
- import { a as signalMessageActions, o as resolveSignalReactionLevel } from "./transport-detection-BItHawMq.js";
5
- import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-Cf6QHcE5.js";
6
- import { n as SignalConfigSchema } from "./config-schema-CkMIK7zp.js";
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 setSignalRuntime, c as resolveSignalReactionLevel, s as signalMessageActions } from "./transport-detection-BSXAOmuH.js";
4
+ import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-Ch0dk2sh.js";
5
+ import { n as SignalConfigSchema } from "./config-schema-q_QuhDy2.js";
7
6
  import { i as installSignalCli } from "./install-signal-cli-Cpiyk0k1.js";
8
- import { t as monitorSignalProvider } from "./monitor-DiN2hKnG.js";
9
- import { t as sendMessageSignal } from "./send-BvGgByMd.js";
10
- import { t as probeSignal } from "./probe-C_THuQzn.js";
7
+ import { t as monitorSignalProvider } from "./monitor-fR9bCL2p.js";
8
+ import { t as sendMessageSignal } from "./send-DO3rs413.js";
9
+ import { t as probeSignal } from "./probe-D7BV0KJ5.js";
10
+ import { resolveChannelMediaMaxBytes } from "openclaw/plugin-sdk/account-helpers";
11
11
  import { PAIRING_APPROVED_MESSAGE } from "openclaw/plugin-sdk/channel-status";
12
- import { resolveChannelMediaMaxBytes } from "openclaw/plugin-sdk/media-runtime";
13
12
  import { buildBaseAccountStatusSnapshot, buildBaseChannelStatusSummary, collectStatusIssuesFromLastError, createDefaultChannelRuntimeState } from "openclaw/plugin-sdk/status-helpers";
14
13
  import { normalizeE164 } from "openclaw/plugin-sdk/text-utility-runtime";
15
14
  import { DEFAULT_ACCOUNT_ID, applyAccountNameToChannelSection, deleteAccountFromConfigSection, emptyPluginConfigSchema, formatPairingApproveHint, getChatChannelMeta, migrateBaseNameToDefaultAccount, normalizeAccountId, setAccountEnabledInConfigSection } from "openclaw/plugin-sdk/core";
@@ -1,13 +1,12 @@
1
- import { i as resolveSignalAccount } from "./accounts-DrStJjiK.js";
2
- import { d as normalizeSignalMessagingTarget } from "./identity-BQ4OzXXk.js";
3
- import { c as markdownToSignalText, n as registerSignalReplyContext } from "./transport-detection-BItHawMq.js";
1
+ import { i as resolveSignalAccount } from "./accounts-DO4HMqaK.js";
2
+ import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.js";
3
+ import { n as registerSignalReplyContext, u as markdownToSignalText } from "./transport-detection-BSXAOmuH.js";
4
4
  import { n as signalRpcRequest } from "./client-adapter-D9SNPaNx.js";
5
- import { t as resolveSignalRpcContext } from "./rpc-context-CZUoE0-A.js";
6
- import { c as registerSignalApprovalReactionTargetForOutboundMessage, n as appendSignalApprovalReactionHintForOutboundMessage } from "./approval-reactions-BulCzhdB.js";
5
+ import { t as resolveSignalRpcContext } from "./rpc-context-dXSy4NtF.js";
7
6
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
8
7
  import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
9
- import { kindFromMime, resolveOutboundAttachmentFromUrl } from "openclaw/plugin-sdk/media-runtime";
10
8
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
+ import { kindFromMime, resolveOutboundAttachmentFromUrl } from "openclaw/plugin-sdk/media-runtime";
11
10
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
12
11
  //#region extensions/signal/src/send.ts
13
12
  function assertSignalRecipientDelivery(result, target) {
@@ -135,15 +134,7 @@ async function sendMessageSignal(to, text, opts) {
135
134
  const target = parseTarget(to);
136
135
  const targetAuthor = normalizeOptionalString(account);
137
136
  const targetAuthorUuid = normalizeOptionalString(accountInfo.config.accountUuid);
138
- const outboundText = appendSignalApprovalReactionHintForOutboundMessage({
139
- cfg,
140
- accountId: accountInfo.accountId,
141
- to,
142
- text: text ?? "",
143
- targetAuthor,
144
- targetAuthorUuid
145
- });
146
- let message = outboundText;
137
+ let message = text ?? "";
147
138
  let outboundMedia;
148
139
  let textStyles = [];
149
140
  const textMode = opts.textMode ?? "markdown";
@@ -223,15 +214,6 @@ async function sendMessageSignal(to, text, opts) {
223
214
  media: outboundMedia ? [outboundMedia] : void 0,
224
215
  sourceTimestamp: timestamp
225
216
  });
226
- registerSignalApprovalReactionTargetForOutboundMessage({
227
- cfg,
228
- accountId: accountInfo.accountId,
229
- to,
230
- messageId,
231
- text: outboundText,
232
- targetAuthor,
233
- targetAuthorUuid
234
- });
235
217
  return {
236
218
  messageId,
237
219
  timestamp,
@@ -1,2 +1,2 @@
1
- import { r as sendTypingSignal, t as sendMessageSignal } from "./send-BvGgByMd.js";
1
+ import { r as sendTypingSignal, t as sendMessageSignal } from "./send-DO3rs413.js";
2
2
  export { sendMessageSignal, sendTypingSignal };
@@ -1,10 +1,9 @@
1
1
  import { u as normalizeSignalTransportUrl } from "./transport-policy-DxvSMHp9.js";
2
- import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-DrStJjiK.js";
3
- import { d as normalizeSignalMessagingTarget } from "./identity-BQ4OzXXk.js";
4
- import { i as signalApprovalAuth, r as getSignalApprovalApprovers, t as getOptionalSignalRuntime } from "./runtime-JPrGlV7h.js";
5
- import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-Cf6QHcE5.js";
2
+ import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-DO4HMqaK.js";
3
+ import { n as normalizeSignalMessagingTarget, r as normalizeSignalReactionRecipient } from "./normalize-l_b99hap.js";
4
+ import { n as signalApprovalAuth, t as getSignalApprovalApprovers } from "./approval-auth-BsYHLTHK.js";
5
+ import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-Ch0dk2sh.js";
6
6
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
7
- import { kindFromMime } from "openclaw/plugin-sdk/media-runtime";
8
7
  import { questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
9
8
  import { parseAgentSessionKey } from "openclaw/plugin-sdk/routing";
10
9
  import { resolveReactionLevel } from "openclaw/plugin-sdk/status-helpers";
@@ -15,10 +14,12 @@ import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-s
15
14
  import { shouldSuppressLocalNativeExecApprovalPrompt } from "openclaw/plugin-sdk/approval-native-runtime";
16
15
  import { buildApprovalReactionPendingContentForRequest } from "openclaw/plugin-sdk/approval-reaction-runtime";
17
16
  import { formatMediaPlaceholderText } from "openclaw/plugin-sdk/channel-inbound";
17
+ import { kindFromMime } from "openclaw/plugin-sdk/media-runtime";
18
18
  import { createActionGate, jsonResult, readStringParam, resolveReactionMessageId } from "openclaw/plugin-sdk/channel-actions";
19
19
  import { parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
20
20
  import { getExecApprovalReplyMetadata } from "openclaw/plugin-sdk/approval-reply-runtime";
21
21
  import { isMessagePresentationInteractiveBlock, normalizeMessagePresentation, renderMessagePresentationFallbackText } from "openclaw/plugin-sdk/interactive-runtime";
22
+ import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
22
23
  //#region extensions/signal/src/approval-native.ts
23
24
  function isSignalApprovalTransportEnabled(params) {
24
25
  return resolveSignalAccount({
@@ -68,7 +69,7 @@ const signalApproval = createApproverRestrictedNativeApprovalCapabilityFromForwa
68
69
  approvalKind,
69
70
  request
70
71
  }),
71
- load: async () => (await import("./approval-handler.runtime-Bi5yNhnj.js")).signalApprovalNativeRuntime
72
+ load: async () => (await import("./approval-handler.runtime-PqC23XbY.js")).signalApprovalNativeRuntime
72
73
  })
73
74
  });
74
75
  const signalApprovalRouting = signalApproval.routing;
@@ -212,18 +213,8 @@ function resolveSignalReactionLevel(params) {
212
213
  //#region extensions/signal/src/message-actions.ts
213
214
  const providerId = "signal";
214
215
  const GROUP_PREFIX = "group:";
215
- function normalizeSignalReactionRecipient(raw) {
216
- const trimmed = raw.trim();
217
- if (!trimmed) return trimmed;
218
- const withoutSignal = trimmed.replace(/^signal:/i, "").trim();
219
- if (!withoutSignal) return withoutSignal;
220
- if (normalizeLowercaseStringOrEmpty(withoutSignal).startsWith("uuid:")) return withoutSignal.slice(5).trim();
221
- return withoutSignal;
222
- }
223
216
  function resolveSignalReactionTarget(raw) {
224
- const trimmed = raw.trim();
225
- if (!trimmed) return {};
226
- const withoutSignal = trimmed.replace(/^signal:/i, "").trim();
217
+ const withoutSignal = raw.trim().replace(/^signal:/i, "").trim();
227
218
  if (!withoutSignal) return {};
228
219
  if (normalizeLowercaseStringOrEmpty(withoutSignal).startsWith(GROUP_PREFIX)) {
229
220
  const groupId = withoutSignal.slice(6).trim();
@@ -239,17 +230,10 @@ async function mutateSignalReaction(params) {
239
230
  targetAuthor: params.targetAuthor,
240
231
  targetAuthorUuid: params.targetAuthorUuid
241
232
  };
242
- if (params.remove) {
243
- await removeReactionSignal(params.target.recipient ?? "", params.timestamp, params.emoji, options);
244
- return jsonResult({
245
- ok: true,
246
- removed: params.emoji
247
- });
248
- }
249
- await sendReactionSignal(params.target.recipient ?? "", params.timestamp, params.emoji, options);
233
+ await (params.remove ? removeReactionSignal : sendReactionSignal)(params.target.recipient ?? "", params.timestamp, params.emoji, options);
250
234
  return jsonResult({
251
235
  ok: true,
252
- added: params.emoji
236
+ [params.remove ? "removed" : "added"]: params.emoji
253
237
  });
254
238
  }
255
239
  const signalMessageActions = {
@@ -306,27 +290,14 @@ const signalMessageActions = {
306
290
  const remove = typeof params.remove === "boolean" ? params.remove : void 0;
307
291
  const timestamp = parseStrictNonNegativeInteger(messageId);
308
292
  if (timestamp === void 0) throw new Error(`Invalid messageId: ${messageId}. Expected numeric timestamp.`);
309
- if (remove) {
310
- if (!emoji) throw new Error("Emoji required to remove reaction.");
311
- return await mutateSignalReaction({
312
- cfg,
313
- accountId: account.accountId,
314
- target,
315
- timestamp,
316
- emoji,
317
- remove: true,
318
- targetAuthor,
319
- targetAuthorUuid
320
- });
321
- }
322
- if (!emoji) throw new Error("Emoji required to add reaction.");
293
+ if (!emoji) throw new Error(`Emoji required to ${remove ? "remove" : "add"} reaction.`);
323
294
  return await mutateSignalReaction({
324
295
  cfg,
325
296
  accountId: account.accountId,
326
297
  target,
327
298
  timestamp,
328
299
  emoji,
329
- remove: false,
300
+ remove: Boolean(remove),
330
301
  targetAuthor,
331
302
  targetAuthorUuid
332
303
  });
@@ -364,6 +335,12 @@ const signalReplyAuthorState = {
364
335
  persistentStoreDisabled: false
365
336
  };
366
337
  //#endregion
338
+ //#region extensions/signal/src/runtime.ts
339
+ const { setRuntime: setSignalRuntime, tryGetRuntime: getOptionalSignalRuntime } = createPluginRuntimeStore({
340
+ pluginId: "signal",
341
+ errorMessage: "Signal runtime not initialized"
342
+ });
343
+ //#endregion
367
344
  //#region extensions/signal/src/reply-authors.ts
368
345
  const PERSISTENT_NAMESPACE = "signal.reply-authors.v1";
369
346
  const PERSISTENT_MAX_ENTRIES = 5e3;
@@ -554,4 +531,4 @@ async function detectSignalTransport(params) {
554
531
  throw new Error(`Signal transport not reachable at ${url}`);
555
532
  }
556
533
  //#endregion
557
- export { signalMessageActions as a, markdownToSignalText as c, shouldSuppressLocalSignalExecApprovalPrompt as d, signalApprovalCapability as f, materializeSignalPresentationFallback as i, markdownToSignalTextChunks as l, registerSignalReplyContext as n, resolveSignalReactionLevel as o, resolveSignalReplyContextWithPersistence as r, formatSignalMediaText as s, detectSignalTransport as t, isSignalNativeApprovalHandlerConfigured as u };
534
+ export { setSignalRuntime as a, resolveSignalReactionLevel as c, markdownToSignalTextChunks as d, isSignalNativeApprovalHandlerConfigured as f, getOptionalSignalRuntime as i, formatSignalMediaText as l, signalApprovalCapability as m, registerSignalReplyContext as n, materializeSignalPresentationFallback as o, shouldSuppressLocalSignalExecApprovalPrompt as p, resolveSignalReplyContextWithPersistence as r, signalMessageActions as s, detectSignalTransport as t, markdownToSignalText as u };
@@ -1,2 +1,2 @@
1
- import { t as detectSignalTransport } from "./transport-detection-BItHawMq.js";
1
+ import { t as detectSignalTransport } from "./transport-detection-BSXAOmuH.js";
2
2
  export { detectSignalTransport };
@@ -167,7 +167,9 @@ class PerMessageDeflate {
167
167
  (typeof opts.serverMaxWindowBits === 'number' &&
168
168
  opts.serverMaxWindowBits > params.server_max_window_bits))) ||
169
169
  (typeof opts.clientMaxWindowBits === 'number' &&
170
- !params.client_max_window_bits)
170
+ (typeof params.client_max_window_bits === 'number'
171
+ ? opts.clientMaxWindowBits > params.client_max_window_bits
172
+ : !params.client_max_window_bits))
171
173
  ) {
172
174
  return false;
173
175
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ws",
3
- "version": "8.21.1",
3
+ "version": "8.21.3",
4
4
  "description": "Simple to use, blazing fast and thoroughly tested websocket client and server for Node.js",
5
5
  "keywords": [
6
6
  "HyBi",
@@ -543,7 +543,6 @@
543
543
  "type": "boolean"
544
544
  },
545
545
  "dmPolicy": {
546
- "default": "pairing",
547
546
  "type": "string",
548
547
  "enum": [
549
548
  "pairing",
@@ -582,7 +581,6 @@
582
581
  }
583
582
  },
584
583
  "groupPolicy": {
585
- "default": "allowlist",
586
584
  "type": "string",
587
585
  "enum": [
588
586
  "open",
@@ -996,10 +994,6 @@
996
994
  "additionalProperties": false
997
995
  }
998
996
  },
999
- "required": [
1000
- "dmPolicy",
1001
- "groupPolicy"
1002
- ],
1003
997
  "additionalProperties": false
1004
998
  }
1005
999
  },
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@openclaw/signal",
3
- "version": "2026.8.1-beta.2",
3
+ "version": "2026.8.1",
4
4
  "description": "OpenClaw Signal channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "ws": "8.21.1",
7
+ "ws": "8.21.3",
8
8
  "zod": "4.4.3"
9
9
  },
10
10
  "openclaw": {
@@ -93,10 +93,10 @@
93
93
  "allowInvalidConfigRecovery": true
94
94
  },
95
95
  "compat": {
96
- "pluginApi": ">=2026.8.1-beta.2"
96
+ "pluginApi": ">=2026.8.1"
97
97
  },
98
98
  "build": {
99
- "openclawVersion": "2026.8.1-beta.2",
99
+ "openclawVersion": "2026.8.1",
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.8.1-beta.2"
121
+ "openclaw": ">=2026.8.1"
122
122
  },
123
123
  "peerDependenciesMeta": {
124
124
  "openclaw": {
@@ -1,17 +0,0 @@
1
- import "./accounts-DrStJjiK.js";
2
- import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
- //#region extensions/signal/src/rpc-context.ts
4
- function resolveSignalRpcContext(opts, accountInfo) {
5
- const hasBaseUrl = Boolean(normalizeOptionalString(opts.baseUrl));
6
- const hasAccount = Boolean(normalizeOptionalString(opts.account));
7
- if ((!hasBaseUrl || !hasAccount) && !accountInfo) throw new Error("Signal account config is required when baseUrl or account is missing");
8
- const resolvedAccount = accountInfo;
9
- const baseUrl = normalizeOptionalString(opts.baseUrl) ?? resolvedAccount?.baseUrl;
10
- if (!baseUrl) throw new Error("Signal base URL is required");
11
- return {
12
- baseUrl,
13
- account: normalizeOptionalString(opts.account) ?? normalizeOptionalString(resolvedAccount?.config.account)
14
- };
15
- }
16
- //#endregion
17
- export { resolveSignalRpcContext as t };