@openclaw/imessage 2026.8.1-beta.2 → 2026.8.1-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,8 @@
1
- import { F as imessageMessageActions, H as imessageSetupContract, N as getIMessageApprovalApprovers, P as imessageApprovalAuth, a as normalizeIMessageAcpConversationId, d as formatTrimmedAllowFromEntries$1, f as getChatChannelMeta, g as addIMessageApprovalReactionHintToText, h as normalizeIMessageMessagingTarget, i as matchIMessageAcpConversation, n as resolveIMessageGroupToolPolicy, o as resolveIMessageConversationIdFromTarget, s as DEFAULT_ACCOUNT_ID, t as resolveIMessageGroupRequireMention, u as collectStatusIssuesFromLastError, z as createIMessageSetupWizardProxy } from "./group-policy-DF9xSdik.js";
2
1
  import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, t as collectIMessageDuplicateAccountSourceWarnings } from "./accounts-D00Njxg2.js";
3
- import { l as parseIMessageTarget, o as looksLikeIMessageExplicitTargetId, r as inferIMessageTargetChatType, s as normalizeIMessageHandle } from "./message-tool-api-CPDfJJoE.js";
4
- import { n as sanitizeIMessageFinalOutboundText, r as sanitizeOutboundText } from "./sanitize-outbound-CoTZLXMw.js";
2
+ import { _ as isIMessagePhoneLikeHandle, l as parseIMessageTarget, o as looksLikeIMessageExplicitTargetId, r as inferIMessageTargetChatType, s as normalizeIMessageHandle } from "./message-tool-api-TZiNYA17.js";
3
+ import { v as resolveIMessageDirectChatService } from "./monitor-reply-cache-BdeUQaHO.js";
4
+ import { n as sanitizeIMessageFinalOutboundText, r as sanitizeOutboundText } from "./sanitize-outbound-DaLmdkbf.js";
5
+ import { S as createIMessageSetupWizardProxy, T as imessageSetupContract, _ as imessageApprovalAuth, a as normalizeIMessageAcpConversationId, d as formatTrimmedAllowFromEntries$1, f as getChatChannelMeta, g as getIMessageApprovalApprovers, h as normalizeIMessageMessagingTarget, i as matchIMessageAcpConversation, n as resolveIMessageGroupToolPolicy, o as resolveIMessageConversationIdFromTarget, s as DEFAULT_ACCOUNT_ID, t as resolveIMessageGroupRequireMention, u as collectStatusIssuesFromLastError, v as imessageMessageActions } from "./group-policy-Ca3c5KES.js";
5
6
  import { t as createIMessageConversationBindingManager } from "./conversation-bindings-GDQ_Laxj.js";
6
7
  import { t as IMessageChannelConfigSchema } from "./config-schema-DV0KP5nC.js";
7
8
  import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots } from "./media-contract-BEgdvYhW.js";
@@ -19,6 +20,7 @@ import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "opencl
19
20
  import { createApproverRestrictedNativeApprovalCapabilityFromForwardingRoutes } from "openclaw/plugin-sdk/approval-delivery-runtime";
20
21
  import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
21
22
  import { shouldSuppressLocalNativeExecApprovalPrompt } from "openclaw/plugin-sdk/approval-native-runtime";
23
+ import { addApprovalReactionHintToText } from "openclaw/plugin-sdk/approval-reaction-runtime";
22
24
  import { buildTypedExecApprovalPendingReplyPayload, buildTypedPluginApprovalPendingReplyPayload } from "openclaw/plugin-sdk/approval-reply-runtime";
23
25
  import { getExecApprovalReplyMetadata, resolveExecApprovalCommandDisplay, resolveExecApprovalRequestAllowedDecisions } from "openclaw/plugin-sdk/approval-runtime";
24
26
  import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter, formatTrimmedAllowFromEntries } from "openclaw/plugin-sdk/channel-config-helpers";
@@ -84,7 +86,7 @@ const imessageApproval = createApproverRestrictedNativeApprovalCapabilityFromFor
84
86
  approvalKind,
85
87
  request
86
88
  }),
87
- load: async () => (await import("./approval-handler.runtime-BtLs4gho.js")).imessageApprovalNativeRuntime
89
+ load: async () => (await import("./approval-handler.runtime-BKku8aUf.js")).imessageApprovalNativeRuntime
88
90
  })
89
91
  });
90
92
  const imessageApprovalRouting = imessageApproval.routing;
@@ -139,7 +141,7 @@ function shouldSuppressLocalIMessageExecApprovalPrompt(params) {
139
141
  });
140
142
  }
141
143
  function appendIMessageReactionHint(params) {
142
- return addIMessageApprovalReactionHintToText({
144
+ return addApprovalReactionHintToText({
143
145
  text: params.text ?? "",
144
146
  allowedDecisions: params.allowedDecisions
145
147
  });
@@ -198,7 +200,7 @@ const imessageDoctor = {
198
200
  //#region extensions/imessage/src/shared.ts
199
201
  const IMESSAGE_CHANNEL = "imessage";
200
202
  async function loadIMessageChannelRuntime$1() {
201
- return await import("./channel.runtime-5wpCKQb7.js");
203
+ return await import("./channel.runtime-BjkXwX9_.js");
202
204
  }
203
205
  const imessageSetupWizard = createIMessageSetupWizardProxy(async () => (await loadIMessageChannelRuntime$1()).imessageSetupWizard);
204
206
  const imessageConfigAdapter = createScopedChannelConfigAdapter({
@@ -227,6 +229,7 @@ const imessageSecurityAdapter = createRestrictSendersChannelSecurity({
227
229
  groupPolicyPath: "channels.imessage.groupPolicy",
228
230
  groupAllowFromPath: "channels.imessage.groupAllowFrom",
229
231
  mentionGated: false,
232
+ findingTitle: "iMessage security warning",
230
233
  policyPathSuffix: "dmPolicy"
231
234
  });
232
235
  function createIMessagePluginBase(params) {
@@ -296,7 +299,7 @@ async function probeIMessageStatusAccount(params) {
296
299
  }
297
300
  //#endregion
298
301
  //#region extensions/imessage/src/channel.ts
299
- const loadIMessageChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-5wpCKQb7.js"));
302
+ const loadIMessageChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-BjkXwX9_.js"));
300
303
  function toIMessageMessageSendResult(result, kind, replyToId) {
301
304
  const receipt = result.receipt ?? createMessageReceiptFromOutboundResults({
302
305
  results: result.messageId ? [{
@@ -312,8 +315,8 @@ function toIMessageMessageSendResult(result, kind, replyToId) {
312
315
  ...result.meta && Object.keys(result.meta).length > 0 ? { meta: result.meta } : {}
313
316
  };
314
317
  }
315
- const loadIMessageApprovalReactionsModule = createLazyRuntimeModule(() => import("./group-policy-DF9xSdik.js").then((n) => n.v));
316
- const loadIMessageQuestionReactionsModule = createLazyRuntimeModule(() => import("./question-reactions-DVe50UhB.js").then((n) => n.r));
318
+ const loadIMessageApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-BME5eA6T.js").then((n) => n.t));
319
+ const loadIMessageQuestionReactionsModule = createLazyRuntimeModule(() => import("./question-reactions-to0i8vxE.js").then((n) => n.r));
317
320
  async function prepareForwardedIMessageApprovalPayload(params) {
318
321
  const prepared = (await loadIMessageApprovalReactionsModule()).addIMessageApprovalReactionHintToStructuredPayload(params);
319
322
  if (prepared) Object.assign(params.payload, prepared);
@@ -386,7 +389,7 @@ function buildIMessageBaseSessionKey(params) {
386
389
  function isCanonicalIMessageDirectHandle(raw, normalized) {
387
390
  const trimmed = raw.trim();
388
391
  if (!trimmed || !normalized) return false;
389
- if (normalized.startsWith("+")) return /^[+\d\s().-]+$/.test(trimmed);
392
+ if (normalized.startsWith("+")) return isIMessagePhoneLikeHandle(trimmed);
390
393
  return /^[^\s@<>()[\]`]+@[^\s@<>()[\]`]+\.[^\s@<>()[\]`]+$/.test(trimmed);
391
394
  }
392
395
  function resolveIMessageOutboundSessionRoute(params) {
@@ -398,7 +401,7 @@ function resolveIMessageOutboundSessionRoute(params) {
398
401
  cfg: params.cfg,
399
402
  accountId: params.accountId
400
403
  });
401
- const directTarget = `${parsed.serviceExplicit || parsed.service !== "auto" ? parsed.service : account.config.service === "sms" ? "sms" : "imessage"}:${handle}`;
404
+ const directTarget = `${resolveIMessageDirectChatService(parsed.serviceExplicit ? parsed.service : account.config.service) ?? "auto"}:${handle}`;
402
405
  const peer = {
403
406
  kind: "direct",
404
407
  id: handle
@@ -464,6 +467,7 @@ const imessagePlugin = createChatChannelPlugin({
464
467
  doctor: imessageDoctor,
465
468
  conversationBindings: {
466
469
  supportsCurrentConversationBinding: true,
470
+ bindingStore: "adapter",
467
471
  createManager: ({ cfg, accountId }) => createIMessageConversationBindingManager({
468
472
  cfg,
469
473
  accountId: accountId ?? void 0
@@ -486,9 +490,9 @@ const imessagePlugin = createChatChannelPlugin({
486
490
  resolveOutboundSessionRoute: (params) => resolveIMessageOutboundSessionRoute(params),
487
491
  targetResolver: {
488
492
  looksLikeId: looksLikeIMessageExplicitTargetId,
489
- hint: "<handle|chat_id:ID>",
490
- resolveTarget: async ({ normalized }) => {
491
- const to = normalized?.trim();
493
+ hint: "<phone|email|chat_id:ID|auto:contact|imessage:contact|sms:contact>",
494
+ resolveTarget: async ({ input }) => {
495
+ const to = normalizeIMessageMessagingTarget(input);
492
496
  if (!to) return null;
493
497
  const chatType = inferIMessageTargetChatType(to);
494
498
  if (!chatType) return null;
@@ -1,2 +1,2 @@
1
- import { t as imessagePlugin } from "./channel-lppmI51h.js";
1
+ import { t as imessagePlugin } from "./channel-BFQTpvrG.js";
2
2
  export { imessagePlugin };
@@ -1,8 +1,8 @@
1
- import { B as imessageCompletionNote, G as normalizeIMessageCliPathForSetup, I as probeIMessage, L as IMESSAGE_INSTALL_COMMAND, R as createIMessageCliPathTextInput, U as imessageSetupStatusBase, V as imessageDmPolicy, W as isAutoManagedIMessageCliPath, c as PAIRING_APPROVED_MESSAGE, p as resolveChannelMediaMaxBytes } from "./group-policy-DF9xSdik.js";
2
1
  import { l as resolveIMessageRemoteHost, o as resolveIMessageAccount, r as listEnabledIMessageAccounts, s as resolveIMessageDuplicateSourceOwner } from "./accounts-D00Njxg2.js";
2
+ import { C as imessageCompletionNote, D as isAutoManagedIMessageCliPath, E as imessageSetupStatusBase, O as normalizeIMessageCliPathForSetup, b as IMESSAGE_INSTALL_COMMAND, c as PAIRING_APPROVED_MESSAGE, p as resolveChannelMediaMaxBytes, w as imessageDmPolicy, x as createIMessageCliPathTextInput, y as probeIMessage } from "./group-policy-Ca3c5KES.js";
3
3
  import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./outbound-send-deps-B-QEsLSM.js";
4
- import { t as sendMessageIMessage } from "./send-BUXW76tw.js";
5
- import { t as monitorIMessageProvider } from "./monitor-DnxJ8pW9.js";
4
+ import { t as sendMessageIMessage } from "./send-Dake4Awx.js";
5
+ import { t as monitorIMessageProvider } from "./monitor-Uv5RaRTk.js";
6
6
  import { createAccountStatusSink, resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
7
7
  import path from "node:path";
8
8
  import fs from "node:fs/promises";
@@ -1,7 +1,7 @@
1
1
  import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount } from "./accounts-D00Njxg2.js";
2
- import { d as resolveIMessageReplyCacheEntryKey, i as IMESSAGE_REPLY_CACHE_NAMESPACE, n as IMESSAGE_REPLY_CACHE_COUNTER_NAMESPACE, r as IMESSAGE_REPLY_CACHE_MAX_ENTRIES, t as IMESSAGE_REPLY_CACHE_COUNTER_KEY } from "./monitor-reply-cache-DKlYGd5x.js";
3
- import { o as resolveIMessageCatchupCursorKey, r as capFailureRetriesMap, t as IMESSAGE_CATCHUP_CURSOR_NAMESPACE } from "./catchup-D32oYNxR.js";
4
- import { n as IMESSAGE_SENT_ECHOES_TTL_MS, s as resolveIMessageSentEchoEntryKey, t as IMESSAGE_SENT_ECHOES_NAMESPACE } from "./persisted-echo-cache-BPWGUK-L.js";
2
+ import { d as resolveIMessageReplyCacheEntryKey, i as IMESSAGE_REPLY_CACHE_NAMESPACE, n as IMESSAGE_REPLY_CACHE_COUNTER_NAMESPACE, r as IMESSAGE_REPLY_CACHE_MAX_ENTRIES, t as IMESSAGE_REPLY_CACHE_COUNTER_KEY } from "./monitor-reply-cache-BdeUQaHO.js";
3
+ import { o as resolveIMessageCatchupCursorKey, r as capFailureRetriesMap, t as IMESSAGE_CATCHUP_CURSOR_NAMESPACE } from "./catchup-Dh-Rv4Ur.js";
4
+ import { n as IMESSAGE_SENT_ECHOES_TTL_MS, s as resolveIMessageSentEchoEntryKey, t as IMESSAGE_SENT_ECHOES_NAMESPACE } from "./persisted-echo-cache-DGxy-J4t.js";
5
5
  import fs from "node:fs";
6
6
  import path from "node:path";
7
7
  import { asFiniteNumber, isRecord, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";