@openclaw/imessage 2026.10.10 → 2026.11.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.
@@ -1,7 +1,7 @@
1
1
  import { c as parseIMessageTarget } from "./targets-CIx4BKqL.mjs";
2
2
  import { l as resolveIMessageRemoteHost, n as hasExclusiveIMessageLocalDatabase, o as resolveIMessageAccount, u as expandIMessageUserPath } from "./accounts-BH0coL46.mjs";
3
3
  import { a as setCachedIMessagePrivateApiStatus, n as getCachedIMessagePrivateApiStatus, o as IMESSAGE_ACTIONS, r as imessageRpcSupportsMethod, s as IMESSAGE_ACTION_NAMES, t as describeIMessageMessageTool } from "./message-tool-api-CxSY_rh7.mjs";
4
- import { a as isIMessageCurrentMessageInChatAsync, i as findLatestIMessageEntryForChat, n as createIMessageRpcClient, s as rememberIMessageReplyCache, y as chatContextFromIMessageTarget } from "./client-C3e7ZLqA.mjs";
4
+ import { a as isIMessageCurrentMessageInChatAsync, i as findLatestIMessageEntryForChat, n as createIMessageRpcClient, s as rememberIMessageReplyCache, y as chatContextFromIMessageTarget } from "./client-CKDbW7i2.mjs";
5
5
  import { l as isAutoManagedIMessageCliPath, n as IMESSAGE_UPDATE_COMMAND, t as IMESSAGE_INSTALL_COMMAND } from "./setup-core-BWnW0czE.mjs";
6
6
  import { filterStringEntries, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
@@ -257,7 +257,7 @@ async function probeIMessage(timeoutMs, opts = {}) {
257
257
  }
258
258
  }
259
259
  // extensions/imessage/src/actions.ts
260
- const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-B2ZHQ3TJ.mjs"), "imessageActionsRuntime");
260
+ const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-Cv8J2DCK.mjs"), "imessageActionsRuntime");
261
261
  const log = createSubsystemLogger("channels/imessage");
262
262
  const providerId = "imessage";
263
263
  const SUPPORTED_ACTIONS = /* @__PURE__ */ new Set([...IMESSAGE_ACTION_NAMES, "upload-file"]);
@@ -1,6 +1,6 @@
1
- import { l as resolveIMessageMessageId, n as createIMessageRpcClient, r as runIMessageCliJsonCommand, x as normalizeDirectChatIdentifier } from "./client-C3e7ZLqA.mjs";
1
+ import { l as resolveIMessageMessageId, n as createIMessageRpcClient, r as runIMessageCliJsonCommand, x as normalizeDirectChatIdentifier } from "./client-CKDbW7i2.mjs";
2
2
  import { n as sanitizeIMessageFinalOutboundText } from "./sanitize-outbound-C02fJrn6.mjs";
3
- import { n as authorizeIMessageResourceReference, t as withIMessageRemoteFile } from "./remote-file-CCgMYZ-u.mjs";
3
+ import { n as authorizeIMessageResourceReference, t as withIMessageRemoteFile } from "./remote-file-C3WVb0XZ.mjs";
4
4
  import { isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { basename, parse, win32 } from "node:path";
6
6
  import { parseStrictInteger } from "openclaw/plugin-sdk/number-runtime";
@@ -1,9 +1,9 @@
1
1
  import "./targets-CIx4BKqL.mjs";
2
2
  import "./accounts-BH0coL46.mjs";
3
3
  import "./message-tool-api-CxSY_rh7.mjs";
4
- import "./actions-CW7XYYF4.mjs";
4
+ import "./actions-CI-2gslW.mjs";
5
5
  import { s as imessageSetupContract } from "./setup-core-BWnW0czE.mjs";
6
- import { n as createIMessagePluginBase, r as imessageSetupWizard } from "./channel-6kcKpSRw.mjs";
6
+ import { n as createIMessagePluginBase, r as imessageSetupWizard } from "./channel-DLQr-Gbj.mjs";
7
7
  import "./conversation-bindings-vZFn6sN2.mjs";
8
8
  import { createAllowedChatSenderMatcher as createAllowedChatSenderMatcher$1, parseChatAllowTargetPrefixes, parseChatTargetPrefixesOrThrow as parseChatTargetPrefixesOrThrow$1, resolveServicePrefixedAllowTarget, resolveServicePrefixedChatTarget as resolveServicePrefixedChatTarget$1, resolveServicePrefixedOrChatAllowTarget as resolveServicePrefixedOrChatAllowTarget$1, resolveServicePrefixedTarget } from "openclaw/plugin-sdk/channel-targets";
9
9
  // extensions/imessage/src/channel.setup.ts
@@ -1,10 +1,10 @@
1
1
  import { a as looksLikeIMessageExplicitTargetId, c as parseIMessageTarget, d as normalizeIMessageMessagingTarget, i as isAllowedIMessageSender, n as inferIMessageTargetChatType, o as normalizeIMessageHandle, s as parseIMessageAllowTarget, t as formatIMessageChatTarget, u as looksLikeIMessageTargetId } from "./targets-CIx4BKqL.mjs";
2
2
  import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, r as listEnabledIMessageAccounts } from "./accounts-BH0coL46.mjs";
3
3
  import { o as IMESSAGE_ACTIONS, s as IMESSAGE_ACTION_NAMES } from "./message-tool-api-CxSY_rh7.mjs";
4
- import { _ as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./client-C3e7ZLqA.mjs";
5
- import { n as probeIMessage } from "./actions-CW7XYYF4.mjs";
6
- import { c as matchIMessageAcpConversation, i as resolveIMessageGroupRequireMention, l as normalizeIMessageAcpConversationId, o as resolveIMessageGroupToolPolicy, s as resolveIMessageInboundConversationId, t as imessagePlugin, u as resolveIMessageConversationIdFromTarget } from "./channel-6kcKpSRw.mjs";
4
+ import { _ as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./client-CKDbW7i2.mjs";
5
+ import { n as probeIMessage } from "./actions-CI-2gslW.mjs";
6
+ import { c as matchIMessageAcpConversation, i as resolveIMessageGroupRequireMention, l as normalizeIMessageAcpConversationId, o as resolveIMessageGroupToolPolicy, s as resolveIMessageInboundConversationId, t as imessagePlugin, u as resolveIMessageConversationIdFromTarget } from "./channel-DLQr-Gbj.mjs";
7
7
  import { n as createIMessageConversationBindingManagerV2, t as createIMessageConversationBindingManager } from "./conversation-bindings-vZFn6sN2.mjs";
8
- import { a as resolveServicePrefixedChatTarget, c as imessageSetupPlugin, i as resolveServicePrefixedAllowTarget, n as parseChatAllowTargetPrefixes, o as resolveServicePrefixedOrChatAllowTarget, r as parseChatTargetPrefixesOrThrow, s as resolveServicePrefixedTarget, t as createAllowedChatSenderMatcher } from "./api-6xi-NBrt.mjs";
8
+ import { a as resolveServicePrefixedChatTarget, c as imessageSetupPlugin, i as resolveServicePrefixedAllowTarget, n as parseChatAllowTargetPrefixes, o as resolveServicePrefixedOrChatAllowTarget, r as parseChatTargetPrefixesOrThrow, s as resolveServicePrefixedTarget, t as createAllowedChatSenderMatcher } from "./api-DomgyOq_.mjs";
9
9
  import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./outbound-send-deps-_da8jqeo.mjs";
10
10
  export { DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, IMESSAGE_ACTIONS, IMESSAGE_ACTION_NAMES, IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS, createAllowedChatSenderMatcher, createIMessageConversationBindingManager, createIMessageConversationBindingManagerV2, formatIMessageChatTarget, imessagePlugin, imessageSetupPlugin, inferIMessageTargetChatType, isAllowedIMessageSender, listEnabledIMessageAccounts, listIMessageAccountIds, looksLikeIMessageExplicitTargetId, looksLikeIMessageTargetId, matchIMessageAcpConversation, normalizeIMessageAcpConversationId, normalizeIMessageHandle, normalizeIMessageMessagingTarget, parseChatAllowTargetPrefixes, parseChatTargetPrefixesOrThrow, parseIMessageAllowTarget, parseIMessageTarget, probeIMessage, resolveDefaultIMessageAccountId, resolveIMessageAccount, resolveIMessageConversationIdFromTarget, resolveIMessageGroupRequireMention, resolveIMessageGroupToolPolicy, resolveIMessageInboundConversationId, resolveServicePrefixedAllowTarget, resolveServicePrefixedChatTarget, resolveServicePrefixedOrChatAllowTarget, resolveServicePrefixedTarget };
@@ -1,11 +1,11 @@
1
1
  import { c as parseIMessageTarget, d as normalizeIMessageMessagingTarget } from "./targets-CIx4BKqL.mjs";
2
2
  import { o as resolveIMessageAccount } from "./accounts-BH0coL46.mjs";
3
3
  import { n as getCachedIMessagePrivateApiStatus } from "./message-tool-api-CxSY_rh7.mjs";
4
- import { a as normalizeIMessageMessageId } from "./actions-CW7XYYF4.mjs";
5
- import { d as getIMessageApprovalApprovers } from "./channel-6kcKpSRw.mjs";
4
+ import { a as normalizeIMessageMessageId } from "./actions-CI-2gslW.mjs";
5
+ import { d as getIMessageApprovalApprovers } from "./channel-DLQr-Gbj.mjs";
6
6
  import { i as extractMarkdownFormatRuns } from "./sanitize-outbound-C02fJrn6.mjs";
7
- import { a as unregisterIMessageApprovalReactionTarget, c as buildIMessageApprovalConversationKeyForTarget, i as registerIMessageApprovalReactionTarget } from "./approval-reactions-B9CJS0NT.mjs";
8
- import { a as iMessageApprovalPollTargets, i as buildApprovalPollOptions, o as mapSentPollOptionsToDecisions, t as sendMessageIMessage } from "./send-D98hQFdv.mjs";
7
+ import { a as unregisterIMessageApprovalReactionTarget, c as buildIMessageApprovalConversationKeyForTarget, i as registerIMessageApprovalReactionTarget } from "./approval-reactions-U8Ku77_2.mjs";
8
+ import { a as iMessageApprovalPollTargets, i as buildApprovalPollOptions, o as mapSentPollOptionsToDecisions, t as sendMessageIMessage } from "./send-COiAb1TU.mjs";
9
9
  import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
10
10
  import { createActionGate } from "openclaw/plugin-sdk/channel-actions";
11
11
  import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
@@ -15,7 +15,7 @@ import { setTimeout } from "node:timers/promises";
15
15
  import { buildChannelApprovalExpiredText, buildChannelApprovalResolvedText, createChannelApprovalNativeRuntimeAdapterAsync, resolvePreparedApprovalAccountId } from "openclaw/plugin-sdk/approval-handler-runtime";
16
16
  // extensions/imessage/src/approval-handler.runtime.ts
17
17
  const log = createSubsystemLogger("imessage/approvals");
18
- const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-B2ZHQ3TJ.mjs"), "imessageActionsRuntime");
18
+ const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-Cv8J2DCK.mjs"), "imessageActionsRuntime");
19
19
  const DEFAULT_PROBE_TIMEOUT_MS = 5e3;
20
20
  const APPROVAL_POLL_ORDERING_DELAY_MS = 1100;
21
21
  function classifyIMessageApprovalTargetTransport(params) {
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-782esTHO.mjs";
2
2
  import { c as parseIMessageTarget, o as normalizeIMessageHandle } from "./targets-CIx4BKqL.mjs";
3
- import { i as normalizeIMessageGuid } from "./actions-CW7XYYF4.mjs";
3
+ import { i as normalizeIMessageGuid } from "./actions-CI-2gslW.mjs";
4
4
  import { n as getOptionalIMessageRuntime } from "./runtime-BRQCPuAD.mjs";
5
- import { d as getIMessageApprovalApprovers, f as imessageApprovalAuth } from "./channel-6kcKpSRw.mjs";
6
- import { t as resolveIMessageReactionContext } from "./reaction-context-Bw00FkmU.mjs";
5
+ import { d as getIMessageApprovalApprovers, f as imessageApprovalAuth } from "./channel-DLQr-Gbj.mjs";
6
+ import { t as resolveIMessageReactionContext } from "./reaction-context-k7ftOZLV.mjs";
7
7
  import { asOptionalRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { createLazyRuntimeSurface } from "openclaw/plugin-sdk/lazy-runtime";
9
9
  import { asDateTimestampMs, isFutureDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
@@ -1,7 +1,7 @@
1
1
  import { a as looksLikeIMessageExplicitTargetId, c as parseIMessageTarget, d as normalizeIMessageMessagingTarget, f as isIMessagePhoneLikeHandle, n as inferIMessageTargetChatType, o as normalizeIMessageHandle } from "./targets-CIx4BKqL.mjs";
2
2
  import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, t as collectIMessageDuplicateAccountSourceWarnings } from "./accounts-BH0coL46.mjs";
3
- import { S as resolveIMessageDirectChatService } from "./client-C3e7ZLqA.mjs";
4
- import { t as imessageMessageActions } from "./actions-CW7XYYF4.mjs";
3
+ import { S as resolveIMessageDirectChatService } from "./client-CKDbW7i2.mjs";
4
+ import { t as imessageMessageActions } from "./actions-CI-2gslW.mjs";
5
5
  import { i as createIMessageSetupWizardProxy, s as imessageSetupContract } from "./setup-core-BWnW0czE.mjs";
6
6
  import { n as createIMessageConversationBindingManagerV2 } from "./conversation-bindings-vZFn6sN2.mjs";
7
7
  import { n as sanitizeIMessageFinalOutboundText, r as sanitizeOutboundText } from "./sanitize-outbound-C02fJrn6.mjs";
@@ -116,7 +116,7 @@ const imessageApproval = createApproverRestrictedNativeApprovalCapabilityFromFor
116
116
  approvalKind,
117
117
  request
118
118
  }),
119
- load: async () => (await import("./approval-handler.runtime-BKmqba3L.mjs")).imessageApprovalNativeRuntime
119
+ load: async () => (await import("./approval-handler.runtime-J_1w5ZFh.mjs")).imessageApprovalNativeRuntime
120
120
  })
121
121
  });
122
122
  const imessageApprovalRouting = imessageApproval.routing;
@@ -363,7 +363,7 @@ function createIMessagePluginBase(params) {
363
363
  };
364
364
  }
365
365
  // extensions/imessage/src/channel.ts
366
- const loadIMessageChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-BW4A0m4h.mjs"));
366
+ const loadIMessageChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-PU6bZMXQ.mjs"));
367
367
  async function sendIMessageOutbound(ctx, kind, options = {}) {
368
368
  return await (await loadIMessageChannelRuntime()).sendIMessageOutbound({
369
369
  cfg: ctx.cfg,
@@ -399,8 +399,8 @@ function toIMessageMessageSendResult(result, kind, replyToId) {
399
399
  ...result.meta && Object.keys(result.meta).length > 0 ? { meta: result.meta } : {}
400
400
  };
401
401
  }
402
- const loadIMessageApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-B9CJS0NT.mjs").then((n) => n.t));
403
- const loadIMessageQuestionReactionsModule = createLazyRuntimeModule(() => import("./question-reactions-DTj-VH3N.mjs").then((n) => n.r));
402
+ const loadIMessageApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-U8Ku77_2.mjs").then((n) => n.t));
403
+ const loadIMessageQuestionReactionsModule = createLazyRuntimeModule(() => import("./question-reactions-CggXC4jv.mjs").then((n) => n.r));
404
404
  const imessageMessageAdapter = defineChannelMessageAdapter({
405
405
  id: "imessage",
406
406
  durableFinal: { capabilities: {
@@ -1,18 +1,18 @@
1
1
  import { c as parseIMessageTarget, o as normalizeIMessageHandle, r as isAllowedIMessageReplyContextSender, s as parseIMessageAllowTarget, t as formatIMessageChatTarget } from "./targets-CIx4BKqL.mjs";
2
2
  import { d as resolveIMessageChatDbLookupPath, f as resolveIMessageHomeDir, l as resolveIMessageRemoteHost, o as resolveIMessageAccount, r as listEnabledIMessageAccounts, s as resolveIMessageDuplicateSourceOwner } from "./accounts-BH0coL46.mjs";
3
3
  import { r as imessageRpcSupportsMethod } from "./message-tool-api-CxSY_rh7.mjs";
4
- import { S as resolveIMessageDirectChatService, h as resolveIMessageEchoMediaKey, m as resolveIMessageCatchupCursorKey, n as createIMessageRpcClient, o as isKnownFromMeIMessageTarget, p as capFailureRetriesMap, s as rememberIMessageReplyCache, u as IMESSAGE_CATCHUP_CURSOR_NAMESPACE } from "./client-C3e7ZLqA.mjs";
5
- import { a as normalizeIMessageMessageId, i as normalizeIMessageGuid, n as probeIMessage, r as probeIMessagePrivateApi } from "./actions-CW7XYYF4.mjs";
4
+ import { S as resolveIMessageDirectChatService, h as resolveIMessageEchoMediaKey, m as resolveIMessageCatchupCursorKey, n as createIMessageRpcClient, o as isKnownFromMeIMessageTarget, p as capFailureRetriesMap, s as rememberIMessageReplyCache, u as IMESSAGE_CATCHUP_CURSOR_NAMESPACE } from "./client-CKDbW7i2.mjs";
5
+ import { a as normalizeIMessageMessageId, i as normalizeIMessageGuid, n as probeIMessage, r as probeIMessagePrivateApi } from "./actions-CI-2gslW.mjs";
6
6
  import { t as getIMessageRuntime } from "./runtime-BRQCPuAD.mjs";
7
- import { a as resolveIMessageGroupSystemPrompt, s as resolveIMessageInboundConversationId } from "./channel-6kcKpSRw.mjs";
7
+ import { a as resolveIMessageGroupSystemPrompt, s as resolveIMessageInboundConversationId } from "./channel-DLQr-Gbj.mjs";
8
8
  import { r as sanitizeOutboundText } from "./sanitize-outbound-C02fJrn6.mjs";
9
9
  import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots } from "./media-contract-CoixpXRX.mjs";
10
10
  import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./outbound-send-deps-_da8jqeo.mjs";
11
- import { i as resolveIMessageStartupRowidWatermark } from "./remote-file-CCgMYZ-u.mjs";
12
- import { i as registerIMessageApprovalReactionTarget, n as handleIMessageApprovalReaction, o as listPendingIMessageApprovalReactionPollTargets, r as maybeResolveIMessageApprovalReaction } from "./approval-reactions-B9CJS0NT.mjs";
13
- import { n as hasPersistedIMessageEcho, r as normalizeIMessageEchoText, s as maybeResolveIMessageApprovalPollVote, t as sendMessageIMessage } from "./send-D98hQFdv.mjs";
14
- import { t as resolveIMessageReactionContext } from "./reaction-context-Bw00FkmU.mjs";
15
- import { n as maybeResolveIMessageQuestionReaction, t as hasIMessageQuestionReactionTarget } from "./question-reactions-DTj-VH3N.mjs";
11
+ import { i as resolveIMessageStartupRowidWatermark } from "./remote-file-C3WVb0XZ.mjs";
12
+ import { i as registerIMessageApprovalReactionTarget, n as handleIMessageApprovalReaction, o as listPendingIMessageApprovalReactionPollTargets, r as maybeResolveIMessageApprovalReaction } from "./approval-reactions-U8Ku77_2.mjs";
13
+ import { n as hasPersistedIMessageEcho, r as normalizeIMessageEchoText, s as maybeResolveIMessageApprovalPollVote, t as sendMessageIMessage } from "./send-COiAb1TU.mjs";
14
+ import { t as resolveIMessageReactionContext } from "./reaction-context-k7ftOZLV.mjs";
15
+ import { n as maybeResolveIMessageQuestionReaction, t as hasIMessageQuestionReactionTarget } from "./question-reactions-CggXC4jv.mjs";
16
16
  import { imessageSetupWizard } from "./setup-surface-aRZhAzzQ.mjs";
17
17
  import { asSafeIntegerInRange, hasNonEmptyString, isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeStringEntries, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
18
18
  import { normalizeChannelDmPolicy } from "openclaw/plugin-sdk/channel-config-helpers";
@@ -2311,6 +2311,9 @@ function resolveIMessageRecoveryCursorDbIdentity(params) {
2311
2311
  return `local:cli:${cliPath}`;
2312
2312
  }
2313
2313
  function recoveryCursorStoreKey(accountId, dbIdentity) {
2314
+ return createHash("sha256").update(JSON.stringify([accountId, dbIdentity]), "utf8").digest("hex").slice(0, 32);
2315
+ }
2316
+ function legacyNulRecoveryCursorStoreKey(accountId, dbIdentity) {
2314
2317
  return `${accountId}\u0000${dbIdentity}`;
2315
2318
  }
2316
2319
  function decideRecoveryCursorUpdate(current, update) {
@@ -2337,7 +2340,9 @@ async function readRecoveryCursor(accountId, dbIdentity) {
2337
2340
  const key = recoveryCursorStoreKey(accountId, dbIdentity);
2338
2341
  const value = await store.lookup(key);
2339
2342
  if (value) return Number.isFinite(value.lastRowid) ? value.lastRowid : null;
2340
- const legacy = await store.consume(accountId);
2343
+ const nulKey = legacyNulRecoveryCursorStoreKey(accountId, dbIdentity);
2344
+ const hasNulKey = (await store.entries()).some((entry) => entry.key === nulKey);
2345
+ const legacy = await store.consume(hasNulKey ? nulKey : accountId);
2341
2346
  if (legacy && Number.isFinite(legacy.lastRowid)) {
2342
2347
  await store.registerIfAbsent(key, { lastRowid: legacy.lastRowid });
2343
2348
  const adopted = await store.lookup(key);
@@ -1,7 +1,7 @@
1
1
  import { u as expandIMessageUserPath } from "./accounts-BH0coL46.mjs";
2
2
  import { i as invalidateCachedIMessagePrivateApiStatus } from "./message-tool-api-CxSY_rh7.mjs";
3
3
  import { t as getIMessageRuntime } from "./runtime-BRQCPuAD.mjs";
4
- import { asNullableRecord, isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
+ import { asNullableRecord, asOptionalRecord, isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { normalizeE164 } from "openclaw/plugin-sdk/account-resolution";
6
6
  import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
7
7
  import { createHash } from "node:crypto";
@@ -441,6 +441,16 @@ function recoverIMessageBridge(cliPath) {
441
441
  recoveries.set(cliPath, recovery);
442
442
  return recovery;
443
443
  }
444
+ // extensions/imessage/src/process-diagnostics.ts
445
+ function describeIMessageAutomationFailure(data, remoteHost) {
446
+ const failure = asOptionalRecord(data);
447
+ if (failure?.transport !== "applescript" || typeof failure.detail !== "string") return;
448
+ const code = /^Messages automation failed with AppleScript error (-1712|-1743)\.$/u.exec(failure.detail)?.[1];
449
+ if (!code) return;
450
+ const reason = code === "-1743" ? "Messages Automation was denied." : "Messages Automation timed out. A missing Automation grant is one possible cause.";
451
+ const context = remoteHost ? "Check System Settings > Privacy & Security > Automation for the SSH/wrapper process on the Messages Mac, not this Gateway's local runtime or Terminal." : "Check System Settings > Privacy & Security > Automation for the Gateway/launcher on the Messages Mac. Local Gateway runtime: " + JSON.stringify(process.execPath) + ". An app update that switches Node to Bun or moves the Gateway to a new runtime path needs this grant once; review the process macOS identifies, not just Terminal or OpenClaw.app.";
452
+ return reason + " " + context + " Channel probes do not verify sending.";
453
+ }
444
454
  // extensions/imessage/src/client.ts
445
455
  const IMSG_APPLE_FRAMEWORK_STDERR_PATTERN = /^(?:\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+ imsg\[\d+:\d+\] )?Could not fetch group for change type \d+ with identifier [^:]+:ABGroup, making it a delete change type\.$/u;
446
456
  var IMessageRpcRequestError = class extends Error {
@@ -512,7 +522,8 @@ var IMessageRpcClient = class {
512
522
  this.configuredCliPath = opts.cliPath?.trim() || "imsg";
513
523
  this.cliPath = expandIMessageUserPath(this.configuredCliPath);
514
524
  const dbPath = opts.dbPath?.trim();
515
- this.dbPath = dbPath ? opts.remoteHost?.trim() ? dbPath : resolveUserPath(dbPath) : void 0;
525
+ this.remoteHost = opts.remoteHost?.trim();
526
+ this.dbPath = dbPath ? this.remoteHost ? dbPath : resolveUserPath(dbPath) : void 0;
516
527
  this.runtime = opts.runtime;
517
528
  this.onNotification = opts.onNotification;
518
529
  this.terminal = new Promise((resolve) => {
@@ -689,7 +700,8 @@ var IMessageRpcClient = class {
689
700
  if (detailText) suffixes.push(detailText);
690
701
  }
691
702
  const msg = suffixes.length > 0 ? `${baseMessage}: ${suffixes.join(" ")}` : baseMessage;
692
- pending.reject(new IMessageRpcRequestError(msg, typeof code === "number" ? code : void 0, details));
703
+ const guidance = describeIMessageAutomationFailure(details, this.remoteHost);
704
+ pending.reject(new IMessageRpcRequestError(guidance ? `${msg} ${guidance}` : msg, typeof code === "number" ? code : void 0, details));
693
705
  return;
694
706
  }
695
707
  pending.resolve(parsed.result);
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-782esTHO.mjs";
2
- import { i as normalizeIMessageGuid } from "./actions-CW7XYYF4.mjs";
3
- import { t as resolveIMessageReactionContext } from "./reaction-context-Bw00FkmU.mjs";
2
+ import { i as normalizeIMessageGuid } from "./actions-CI-2gslW.mjs";
3
+ import { t as resolveIMessageReactionContext } from "./reaction-context-k7ftOZLV.mjs";
4
4
  import { createQuestionReactionTargetStore, questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
5
5
  // extensions/imessage/src/question-reactions.ts
6
6
  var question_reactions_exports = /* @__PURE__ */ __exportAll({
@@ -1,4 +1,4 @@
1
- import { i as normalizeIMessageGuid } from "./actions-CW7XYYF4.mjs";
1
+ import { i as normalizeIMessageGuid } from "./actions-CI-2gslW.mjs";
2
2
  // extensions/imessage/src/monitor/reaction-context.ts
3
3
  const TAPBACK_TEXT_PATTERNS = [
4
4
  {
@@ -1,5 +1,5 @@
1
1
  import { p as resolveLocalIMessageChatDbPath } from "./accounts-BH0coL46.mjs";
2
- import { b as isIMessageEmailChatIdentifier, c as resolveIMessageCachedResourceBinding, l as resolveIMessageMessageId, y as chatContextFromIMessageTarget } from "./client-C3e7ZLqA.mjs";
2
+ import { b as isIMessageEmailChatIdentifier, c as resolveIMessageCachedResourceBinding, l as resolveIMessageMessageId, y as chatContextFromIMessageTarget } from "./client-CKDbW7i2.mjs";
3
3
  import path from "node:path";
4
4
  import { normalizeScpRemoteHost } from "openclaw/plugin-sdk/host-runtime";
5
5
  import { createActionGate } from "openclaw/plugin-sdk/channel-actions";
@@ -1,12 +1,12 @@
1
1
  import { c as parseIMessageTarget, o as normalizeIMessageHandle, t as formatIMessageChatTarget } from "./targets-CIx4BKqL.mjs";
2
2
  import { d as resolveIMessageChatDbLookupPath, l as resolveIMessageRemoteHost, n as hasExclusiveIMessageLocalDatabase, o as resolveIMessageAccount } from "./accounts-BH0coL46.mjs";
3
- import { S as resolveIMessageDirectChatService, d as IMESSAGE_SENT_ECHOES_NAMESPACE, f as IMESSAGE_SENT_ECHOES_TTL_MS, g as resolveIMessageSentEchoEntryKey, h as resolveIMessageEchoMediaKey, n as createIMessageRpcClient, r as runIMessageCliJsonCommand, s as rememberIMessageReplyCache, t as IMessageRpcRequestError, y as chatContextFromIMessageTarget } from "./client-C3e7ZLqA.mjs";
4
- import { a as normalizeIMessageMessageId, i as normalizeIMessageGuid } from "./actions-CW7XYYF4.mjs";
3
+ import { S as resolveIMessageDirectChatService, d as IMESSAGE_SENT_ECHOES_NAMESPACE, f as IMESSAGE_SENT_ECHOES_TTL_MS, g as resolveIMessageSentEchoEntryKey, h as resolveIMessageEchoMediaKey, n as createIMessageRpcClient, r as runIMessageCliJsonCommand, s as rememberIMessageReplyCache, t as IMessageRpcRequestError, y as chatContextFromIMessageTarget } from "./client-CKDbW7i2.mjs";
4
+ import { a as normalizeIMessageMessageId, i as normalizeIMessageGuid } from "./actions-CI-2gslW.mjs";
5
5
  import { n as getOptionalIMessageRuntime, t as getIMessageRuntime } from "./runtime-BRQCPuAD.mjs";
6
- import { d as getIMessageApprovalApprovers, f as imessageApprovalAuth } from "./channel-6kcKpSRw.mjs";
6
+ import { d as getIMessageApprovalApprovers, f as imessageApprovalAuth } from "./channel-DLQr-Gbj.mjs";
7
7
  import { n as sanitizeIMessageFinalOutboundText, t as protectIMessageFencedRoleMarkers } from "./sanitize-outbound-C02fJrn6.mjs";
8
- import { a as withIMessageReceiptGuidReader, r as resolveAuthorizedIMessageReplyReference, t as withIMessageRemoteFile } from "./remote-file-CCgMYZ-u.mjs";
9
- import { d as resolveIMessageApprovalControlActor, i as registerIMessageApprovalReactionTarget, l as enumerateApprovalTargetKeys, s as buildIMessageApprovalConversationKeyForInbound, u as normalizeConversationKey } from "./approval-reactions-B9CJS0NT.mjs";
8
+ import { a as withIMessageReceiptGuidReader, r as resolveAuthorizedIMessageReplyReference, t as withIMessageRemoteFile } from "./remote-file-C3WVb0XZ.mjs";
9
+ import { d as resolveIMessageApprovalControlActor, i as registerIMessageApprovalReactionTarget, l as enumerateApprovalTargetKeys, s as buildIMessageApprovalConversationKeyForInbound, u as normalizeConversationKey } from "./approval-reactions-U8Ku77_2.mjs";
10
10
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
11
11
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
12
12
  import { createLazyRuntimeSurface } from "openclaw/plugin-sdk/lazy-runtime";
@@ -1 +1 @@
1
- {"version":3,"entries":[{"output":"api.js","source":"extensions/imessage/api.ts"},{"output":"channel-config-api.js","source":"extensions/imessage/channel-config-api.ts"},{"output":"channel-plugin-api.js","source":"extensions/imessage/channel-plugin-api.ts"},{"output":"contract-api.js","source":"extensions/imessage/contract-api.ts"},{"output":"doctor-contract-api.js","source":"extensions/imessage/doctor-contract-api.ts"},{"output":"index.js","source":"extensions/imessage/index.ts"},{"output":"media-contract-api.js","source":"extensions/imessage/media-contract-api.ts"},{"output":"message-tool-api.js","source":"extensions/imessage/message-tool-api.ts"},{"output":"runtime-api.js","source":"extensions/imessage/runtime-api.ts"},{"output":"secret-contract-api.js","source":"extensions/imessage/secret-contract-api.ts"},{"output":"session-binding-contract-api.js","source":"extensions/imessage/session-binding-contract-api.ts"},{"output":"setup-entry.js","source":"extensions/imessage/setup-entry.ts"},{"output":"src/chat-db.worker.js","source":"extensions/imessage/src/chat-db.worker.ts"}],"chunks":[{"output":".setup/accounts-BH0coL46.mjs","sha256":"3d3a95861f02157e10959e531084678dbf3e084e62e0eb588bbf9e893bef0910","facadeSource":null,"sources":["extensions/imessage/src/accounts.ts","extensions/imessage/src/cli-path.ts","extensions/imessage/src/remote-host.ts"]},{"output":".setup/actions-CW7XYYF4.mjs","sha256":"57302e8e72b5b972a111b4f2b9b893262836d17d606805a256037af124706a5b","facadeSource":null,"sources":["extensions/imessage/src/actions.ts","extensions/imessage/src/message-action-reference.ts","extensions/imessage/src/message-guid.ts","extensions/imessage/src/probe.ts"]},{"output":".setup/actions.runtime-B2ZHQ3TJ.mjs","sha256":"ffa16f4aa9d4cd430715ba1fb57da7dc04f92336e1cb75775d24aa9846f4d520","facadeSource":"extensions/imessage/src/actions.runtime.ts","sources":["extensions/imessage/src/actions-chat-guid.ts","extensions/imessage/src/actions-transport.ts","extensions/imessage/src/actions.runtime.ts"]},{"output":".setup/api-6xi-NBrt.mjs","sha256":"6a059097cb1a0fe7991c680e17f40e0269e73fb7d145239df1cadc9e6311733e","facadeSource":null,"sources":["extensions/imessage/src/channel.setup.ts"]},{"output":".setup/api-B0ih8Iof.mjs","sha256":"45789fb9fd83094cecf5cc9738b841326d18ae1611aadc583382298993a5ac07","facadeSource":"extensions/imessage/api.ts","sources":[]},{"output":".setup/approval-handler.runtime-BKmqba3L.mjs","sha256":"1e1bd107b8241bfe9e61d4370b398392293a61edba51864192bd090694ec7224","facadeSource":"extensions/imessage/src/approval-handler.runtime.ts","sources":["extensions/imessage/src/approval-handler.runtime.ts"]},{"output":".setup/approval-reactions-B9CJS0NT.mjs","sha256":"16e0cbe21ce32f99d04882559a57a7706b18f936d8f25609fca0d5d2fb9d89ec","facadeSource":null,"sources":["extensions/imessage/src/approval-reaction-poll-targets.ts","extensions/imessage/src/approval-reactions.ts","extensions/imessage/src/approval-target-keys.ts"]},{"output":".setup/channel-6kcKpSRw.mjs","sha256":"f19d3bcb6c71cc1a204d40264d6be014e0c09161984d36a5e3568413030e5eb9","facadeSource":null,"sources":["extensions/imessage/src/approval-auth.ts","extensions/imessage/src/approval-native.ts","extensions/imessage/src/approval-text.ts","extensions/imessage/src/channel.ts","extensions/imessage/src/conversation-id-core.ts","extensions/imessage/src/conversation-id.ts","extensions/imessage/src/doctor.ts","extensions/imessage/src/group-policy.ts","extensions/imessage/src/shared.ts"]},{"output":".setup/channel.runtime-BW4A0m4h.mjs","sha256":"75cebfee1133be34062e38b1f40679c2ada7954d2bc9da63867b4002df01efa1","facadeSource":"extensions/imessage/src/channel.runtime.ts","sources":["extensions/imessage/src/approval-reaction-poller.ts","extensions/imessage/src/channel.runtime.ts","extensions/imessage/src/chat.ts","extensions/imessage/src/conversation-route.ts","extensions/imessage/src/monitor/abort-handler.ts","extensions/imessage/src/monitor/catchup-bridge.ts","extensions/imessage/src/monitor/catchup.ts","extensions/imessage/src/monitor/coalesce.ts","extensions/imessage/src/monitor/conversation-repair.ts","extensions/imessage/src/monitor/deliver.ts","extensions/imessage/src/monitor/dm-history.ts","extensions/imessage/src/monitor/drop-diagnostic-cache.ts","extensions/imessage/src/monitor/echo-cache.ts","extensions/imessage/src/monitor/group-allowlist-warnings.ts","extensions/imessage/src/monitor/inbound-dedupe.ts","extensions/imessage/src/monitor/inbound-processing.ts","extensions/imessage/src/monitor/ingress.ts","extensions/imessage/src/monitor/loop-rate-limiter.ts","extensions/imessage/src/monitor/media-staging.ts","extensions/imessage/src/monitor/mention-policy.ts","extensions/imessage/src/monitor/monitor-provider.ts","extensions/imessage/src/monitor/parse-notification.ts","extensions/imessage/src/monitor/poll-comment.ts","extensions/imessage/src/monitor/poll-render.ts","extensions/imessage/src/monitor/reaction-system-event.ts","extensions/imessage/src/monitor/recovery-cursor.ts","extensions/imessage/src/monitor/reflection-guard.ts","extensions/imessage/src/monitor/self-chat-cache.ts","extensions/imessage/src/monitor/strip-imsg-length-prefixed-text.ts","extensions/imessage/src/monitor/watch-error-log.ts","src/channels/mention-gating.ts"]},{"output":".setup/client-C3e7ZLqA.mjs","sha256":"f965627433495be9225b6ab97ccdaf2e36aa20a9a54e63233068a205b85ff270","facadeSource":null,"sources":["extensions/imessage/src/bridge-recovery.ts","extensions/imessage/src/chat-context.ts","extensions/imessage/src/cli-output.ts","extensions/imessage/src/client.ts","extensions/imessage/src/constants.ts","extensions/imessage/src/monitor-reply-cache.ts","extensions/imessage/src/state-contract.ts"]},{"output":".setup/config-schema-DRkdRC21.mjs","sha256":"758a3d4a6eff932ccc536a60da0f338b4608d6d0e02e5e7ea1994719a648dcc2","facadeSource":null,"sources":["extensions/imessage/src/config-schema.ts","extensions/imessage/src/config-ui-hints.ts"]},{"output":".setup/conversation-bindings-vZFn6sN2.mjs","sha256":"8b47df14a6b3d90dec4812a1cf971f72825fdcb9bb642dd94e247de63298d943","facadeSource":null,"sources":["extensions/imessage/src/conversation-bindings.ts"]},{"output":".setup/media-contract-CoixpXRX.mjs","sha256":"edf68fa0002fb3c11e28318a274422b7ff7902bc5f6937d4438f93c36a7bf5cb","facadeSource":null,"sources":["extensions/imessage/src/media-contract.ts"]},{"output":".setup/message-tool-api-CxSY_rh7.mjs","sha256":"194ae5f7aea08cdc0772597ef129d08b02d9f0b1e03932a800819eb824315f1e","facadeSource":null,"sources":["extensions/imessage/src/actions-contract.ts","extensions/imessage/src/message-tool-api.ts","extensions/imessage/src/private-api-status.ts"]},{"output":".setup/outbound-send-deps-_da8jqeo.mjs","sha256":"0635bb28f7b137bbf61e085d3470d925c60d6057c0a4e67282546a70d2ec6341","facadeSource":null,"sources":["extensions/imessage/src/outbound-send-deps.ts"]},{"output":".setup/question-reactions-DTj-VH3N.mjs","sha256":"540778353803526006a920bf292efb7e172f7bb8bfdfe2614be349993073494c","facadeSource":null,"sources":["extensions/imessage/src/question-reactions.ts"]},{"output":".setup/reaction-context-Bw00FkmU.mjs","sha256":"6364fad7355a5bcce217a8596203f29ed8a789a63be4230ee1ba644bad3b6d9f","facadeSource":null,"sources":["extensions/imessage/src/monitor/reaction-context.ts"]},{"output":".setup/remote-file-CCgMYZ-u.mjs","sha256":"851cc7fb12e5fb18033a0aeb5e245a4a862044dde39a0018355a549894807dd2","facadeSource":null,"sources":["extensions/imessage/src/chat-db.ts","extensions/imessage/src/message-resource-db.ts","extensions/imessage/src/message-resource.ts","extensions/imessage/src/remote-file.ts"]},{"output":".setup/rolldown-runtime-782esTHO.mjs","sha256":"5ee95aea427a7c3b63d18f4d901f7c824b836077e85aee06ae7d598c1974e2a6","facadeSource":null,"sources":[]},{"output":".setup/runtime-BRQCPuAD.mjs","sha256":"7cd8a481a241c3ffbe6a21ca6bad5c58418b0d4f36a710738b34611559bb384e","facadeSource":null,"sources":["extensions/imessage/src/runtime.ts"]},{"output":".setup/sanitize-outbound-C02fJrn6.mjs","sha256":"f158f744cf9b677e2664bca61a83455ada01a67b113af783278e4a0e57e9eace","facadeSource":null,"sources":["extensions/imessage/src/markdown-format.ts","extensions/imessage/src/monitor/sanitize-outbound.ts"]},{"output":".setup/send-D98hQFdv.mjs","sha256":"bd04afe09bc720540f0b7bc5b665830382f47a88c22d2b9bfd7541d2c1fe309d","facadeSource":null,"sources":["extensions/imessage/src/approval-polls.ts","extensions/imessage/src/monitor/echo-text-corruption.ts","extensions/imessage/src/monitor/persisted-echo-cache.ts","extensions/imessage/src/send-transport.ts","extensions/imessage/src/send.ts"]},{"output":".setup/setup-core-BWnW0czE.mjs","sha256":"72aec986e4a413ca891c37d67b29a5d953bb0800dd9ad28c1c255b67dfa25ebc","facadeSource":null,"sources":["extensions/imessage/src/setup-core.ts"]},{"output":".setup/setup-surface-aRZhAzzQ.mjs","sha256":"d7665d3c25ac3e4b184f7639246ac26e8c1a3c94afb47ec34132d799736743ef","facadeSource":"extensions/imessage/src/setup-surface.ts","sources":["extensions/imessage/src/install-imsg.ts","extensions/imessage/src/setup-surface.ts"]},{"output":".setup/targets-CIx4BKqL.mjs","sha256":"7c27b2a688288ca7889fd597eecaf9c3f992f5945b9edc7862d4384d0d456d78","facadeSource":null,"sources":["extensions/imessage/src/normalize.ts","extensions/imessage/src/target-identifiers.ts","extensions/imessage/src/targets.ts"]},{"output":"api.js","sha256":"0e35c62f018c982cd041074df55154a7085268cb53ab3a01e5e9adcbd2c62e21","facadeSource":"extensions/imessage/api.ts","sources":[]},{"output":"channel-config-api.js","sha256":"d1ff3745e8e128801438000b659a374343a9957296644d063b1e43cc6cb1da4e","facadeSource":"extensions/imessage/channel-config-api.ts","sources":[]},{"output":"channel-plugin-api.js","sha256":"2d9fc032675ca9039675862bb248da4b83b98f9e6731523d669b9593563d341f","facadeSource":"extensions/imessage/channel-plugin-api.ts","sources":[]},{"output":"contract-api.js","sha256":"c7d2cf6c04e05d4ecd00a81b59ea70a3a06a0eeb422ae59af6d379cb91813d04","facadeSource":"extensions/imessage/contract-api.ts","sources":[]},{"output":"doctor-contract-api.js","sha256":"a9cbc5e727b821983de78d1bdf9b863859b14c86a1c6b8f70fd7b05b9547f36a","facadeSource":"extensions/imessage/doctor-contract-api.ts","sources":["extensions/imessage/config-doctor-api.ts","extensions/imessage/doctor-contract-api.ts","packages/normalization-core/src/record-coerce.ts","src/config/channel-config-normalization.ts","src/plugin-sdk/legacy-webhook-listener-migration.ts"]},{"output":"index.js","sha256":"e3fcf6fd886eaf196d9e38f504ba3cbc46345d5c21c86c1090dea834b3020ce4","facadeSource":"extensions/imessage/index.ts","sources":["extensions/imessage/index.ts"]},{"output":"media-contract-api.js","sha256":"849952bc416cd8ff2cbf658ea635bc89c40baae72f5730a063d3a9e20c847b81","facadeSource":"extensions/imessage/media-contract-api.ts","sources":[]},{"output":"message-tool-api.js","sha256":"d1eeccc3d9c13e88c6bf665c22133ff9e7fc8eb973a6a250396b37c087f1c724","facadeSource":"extensions/imessage/message-tool-api.ts","sources":[]},{"output":"runtime-api.js","sha256":"b7f190944cbbf44698a58da859f53ff3b92285416ea62de2d369609623846e20","facadeSource":"extensions/imessage/runtime-api.ts","sources":[]},{"output":"secret-contract-api.js","sha256":"5a5d910629d837d8176ce71f084a37ea874acef6d27935d5a8ec2d9d855a83db","facadeSource":"extensions/imessage/secret-contract-api.ts","sources":["extensions/imessage/secret-contract-api.ts"]},{"output":"session-binding-contract-api.js","sha256":"01a67d0e9e4d6509375b44b407157bf99d81731f80a6eb6edd2cf0a32e344317","facadeSource":"extensions/imessage/session-binding-contract-api.ts","sources":[]},{"output":"setup-entry.js","sha256":"76b8bdb2ad750e8eb958fb8ec3d4d562b2daa2164ec8de1937774f24e3cadb10","facadeSource":"extensions/imessage/setup-entry.ts","sources":["extensions/imessage/setup-entry.ts"]},{"output":"src/chat-db.worker.js","sha256":"35a50828aa3ad3704dd0edccece494e156ff211293dc7dbe09474df88ce59d63","facadeSource":"extensions/imessage/src/chat-db.worker.ts","sources":["extensions/imessage/src/chat-db.worker.ts"]}],"unrenderedSources":["extensions/imessage/api.ts","extensions/imessage/channel-config-api.ts","extensions/imessage/channel-plugin-api.ts","extensions/imessage/contract-api.ts","extensions/imessage/media-contract-api.ts","extensions/imessage/message-tool-api.ts","extensions/imessage/runtime-api.ts","extensions/imessage/session-binding-contract-api.ts","extensions/imessage/src/monitor.ts"]}
1
+ {"version":3,"entries":[{"output":"api.js","source":"extensions/imessage/api.ts"},{"output":"channel-config-api.js","source":"extensions/imessage/channel-config-api.ts"},{"output":"channel-plugin-api.js","source":"extensions/imessage/channel-plugin-api.ts"},{"output":"contract-api.js","source":"extensions/imessage/contract-api.ts"},{"output":"doctor-contract-api.js","source":"extensions/imessage/doctor-contract-api.ts"},{"output":"index.js","source":"extensions/imessage/index.ts"},{"output":"media-contract-api.js","source":"extensions/imessage/media-contract-api.ts"},{"output":"message-tool-api.js","source":"extensions/imessage/message-tool-api.ts"},{"output":"runtime-api.js","source":"extensions/imessage/runtime-api.ts"},{"output":"secret-contract-api.js","source":"extensions/imessage/secret-contract-api.ts"},{"output":"session-binding-contract-api.js","source":"extensions/imessage/session-binding-contract-api.ts"},{"output":"setup-entry.js","source":"extensions/imessage/setup-entry.ts"},{"output":"src/chat-db.worker.js","source":"extensions/imessage/src/chat-db.worker.ts"}],"chunks":[{"output":".setup/accounts-BH0coL46.mjs","sha256":"3d3a95861f02157e10959e531084678dbf3e084e62e0eb588bbf9e893bef0910","facadeSource":null,"sources":["extensions/imessage/src/accounts.ts","extensions/imessage/src/cli-path.ts","extensions/imessage/src/remote-host.ts"]},{"output":".setup/actions-CI-2gslW.mjs","sha256":"c117a2a6f5de418321186254e2a4bf1eb4c10ff28a6ccdca94b3b9fffc5616aa","facadeSource":null,"sources":["extensions/imessage/src/actions.ts","extensions/imessage/src/message-action-reference.ts","extensions/imessage/src/message-guid.ts","extensions/imessage/src/probe.ts"]},{"output":".setup/actions.runtime-Cv8J2DCK.mjs","sha256":"e650378f33070a15aa772f4418ac8447fe8d9dfb5cc94766d4559d22803092fa","facadeSource":"extensions/imessage/src/actions.runtime.ts","sources":["extensions/imessage/src/actions-chat-guid.ts","extensions/imessage/src/actions-transport.ts","extensions/imessage/src/actions.runtime.ts"]},{"output":".setup/api-DomgyOq_.mjs","sha256":"7ef2ff0bcc00786473cda2a1a7b05f2d239ba57d0588d2e5c05a092bf74226a7","facadeSource":null,"sources":["extensions/imessage/src/channel.setup.ts"]},{"output":".setup/api-LHNeKI7K.mjs","sha256":"45bb48f756a6f7f19b0a1fe510af139d1f95c9071aba9cf85ca6846701a40786","facadeSource":"extensions/imessage/api.ts","sources":[]},{"output":".setup/approval-handler.runtime-J_1w5ZFh.mjs","sha256":"d371ff9aa4d15862d400e117fbc60de32a287d3d575ff240ad8ac89023bb73fc","facadeSource":"extensions/imessage/src/approval-handler.runtime.ts","sources":["extensions/imessage/src/approval-handler.runtime.ts"]},{"output":".setup/approval-reactions-U8Ku77_2.mjs","sha256":"df681d0f3a57a9167991203dd4befbaaaa6e9920cb07b2ae756737391dd19116","facadeSource":null,"sources":["extensions/imessage/src/approval-reaction-poll-targets.ts","extensions/imessage/src/approval-reactions.ts","extensions/imessage/src/approval-target-keys.ts"]},{"output":".setup/channel-DLQr-Gbj.mjs","sha256":"df3d4ecfd20e84f639e6b560070afa0a840cbe4bedffeb8f388fe6d489b04691","facadeSource":null,"sources":["extensions/imessage/src/approval-auth.ts","extensions/imessage/src/approval-native.ts","extensions/imessage/src/approval-text.ts","extensions/imessage/src/channel.ts","extensions/imessage/src/conversation-id-core.ts","extensions/imessage/src/conversation-id.ts","extensions/imessage/src/doctor.ts","extensions/imessage/src/group-policy.ts","extensions/imessage/src/shared.ts"]},{"output":".setup/channel.runtime-PU6bZMXQ.mjs","sha256":"97fae4e8672774af1669fd8275c2d1e6c2857961554d16269524e0d351b9f770","facadeSource":"extensions/imessage/src/channel.runtime.ts","sources":["extensions/imessage/src/approval-reaction-poller.ts","extensions/imessage/src/channel.runtime.ts","extensions/imessage/src/chat.ts","extensions/imessage/src/conversation-route.ts","extensions/imessage/src/monitor/abort-handler.ts","extensions/imessage/src/monitor/catchup-bridge.ts","extensions/imessage/src/monitor/catchup.ts","extensions/imessage/src/monitor/coalesce.ts","extensions/imessage/src/monitor/conversation-repair.ts","extensions/imessage/src/monitor/deliver.ts","extensions/imessage/src/monitor/dm-history.ts","extensions/imessage/src/monitor/drop-diagnostic-cache.ts","extensions/imessage/src/monitor/echo-cache.ts","extensions/imessage/src/monitor/group-allowlist-warnings.ts","extensions/imessage/src/monitor/inbound-dedupe.ts","extensions/imessage/src/monitor/inbound-processing.ts","extensions/imessage/src/monitor/ingress.ts","extensions/imessage/src/monitor/loop-rate-limiter.ts","extensions/imessage/src/monitor/media-staging.ts","extensions/imessage/src/monitor/mention-policy.ts","extensions/imessage/src/monitor/monitor-provider.ts","extensions/imessage/src/monitor/parse-notification.ts","extensions/imessage/src/monitor/poll-comment.ts","extensions/imessage/src/monitor/poll-render.ts","extensions/imessage/src/monitor/reaction-system-event.ts","extensions/imessage/src/monitor/recovery-cursor.ts","extensions/imessage/src/monitor/reflection-guard.ts","extensions/imessage/src/monitor/self-chat-cache.ts","extensions/imessage/src/monitor/strip-imsg-length-prefixed-text.ts","extensions/imessage/src/monitor/watch-error-log.ts","src/channels/mention-gating.ts"]},{"output":".setup/client-CKDbW7i2.mjs","sha256":"de3764fc1e304f0acf5fb3113ee734b5d00c0c725f03e1b2cf6c9738b37df72f","facadeSource":null,"sources":["extensions/imessage/src/bridge-recovery.ts","extensions/imessage/src/chat-context.ts","extensions/imessage/src/cli-output.ts","extensions/imessage/src/client.ts","extensions/imessage/src/constants.ts","extensions/imessage/src/monitor-reply-cache.ts","extensions/imessage/src/process-diagnostics.ts","extensions/imessage/src/state-contract.ts"]},{"output":".setup/config-schema-DRkdRC21.mjs","sha256":"758a3d4a6eff932ccc536a60da0f338b4608d6d0e02e5e7ea1994719a648dcc2","facadeSource":null,"sources":["extensions/imessage/src/config-schema.ts","extensions/imessage/src/config-ui-hints.ts"]},{"output":".setup/conversation-bindings-vZFn6sN2.mjs","sha256":"8b47df14a6b3d90dec4812a1cf971f72825fdcb9bb642dd94e247de63298d943","facadeSource":null,"sources":["extensions/imessage/src/conversation-bindings.ts"]},{"output":".setup/media-contract-CoixpXRX.mjs","sha256":"edf68fa0002fb3c11e28318a274422b7ff7902bc5f6937d4438f93c36a7bf5cb","facadeSource":null,"sources":["extensions/imessage/src/media-contract.ts"]},{"output":".setup/message-tool-api-CxSY_rh7.mjs","sha256":"194ae5f7aea08cdc0772597ef129d08b02d9f0b1e03932a800819eb824315f1e","facadeSource":null,"sources":["extensions/imessage/src/actions-contract.ts","extensions/imessage/src/message-tool-api.ts","extensions/imessage/src/private-api-status.ts"]},{"output":".setup/outbound-send-deps-_da8jqeo.mjs","sha256":"0635bb28f7b137bbf61e085d3470d925c60d6057c0a4e67282546a70d2ec6341","facadeSource":null,"sources":["extensions/imessage/src/outbound-send-deps.ts"]},{"output":".setup/question-reactions-CggXC4jv.mjs","sha256":"3ee4942309cd7229fac1cfd861a96fcbca2fd4f1abfd3faf29b1b571f3c1ccea","facadeSource":null,"sources":["extensions/imessage/src/question-reactions.ts"]},{"output":".setup/reaction-context-k7ftOZLV.mjs","sha256":"8b22c0d5c7e6b1f58d6f3a5b3c716ffe6a8b094f7837ecab9d42448c3a1dd2c8","facadeSource":null,"sources":["extensions/imessage/src/monitor/reaction-context.ts"]},{"output":".setup/remote-file-C3WVb0XZ.mjs","sha256":"26d992662619f3cf8b8de85e6e21e909acf76f1bbbf62b9a1cf1d79c6383047a","facadeSource":null,"sources":["extensions/imessage/src/chat-db.ts","extensions/imessage/src/message-resource-db.ts","extensions/imessage/src/message-resource.ts","extensions/imessage/src/remote-file.ts"]},{"output":".setup/rolldown-runtime-782esTHO.mjs","sha256":"5ee95aea427a7c3b63d18f4d901f7c824b836077e85aee06ae7d598c1974e2a6","facadeSource":null,"sources":[]},{"output":".setup/runtime-BRQCPuAD.mjs","sha256":"7cd8a481a241c3ffbe6a21ca6bad5c58418b0d4f36a710738b34611559bb384e","facadeSource":null,"sources":["extensions/imessage/src/runtime.ts"]},{"output":".setup/sanitize-outbound-C02fJrn6.mjs","sha256":"f158f744cf9b677e2664bca61a83455ada01a67b113af783278e4a0e57e9eace","facadeSource":null,"sources":["extensions/imessage/src/markdown-format.ts","extensions/imessage/src/monitor/sanitize-outbound.ts"]},{"output":".setup/send-COiAb1TU.mjs","sha256":"32d6bee39d57e9fc8eb007bf1ecfb210c220d9e20fce8ab4f3c2418e6398e023","facadeSource":null,"sources":["extensions/imessage/src/approval-polls.ts","extensions/imessage/src/monitor/echo-text-corruption.ts","extensions/imessage/src/monitor/persisted-echo-cache.ts","extensions/imessage/src/send-transport.ts","extensions/imessage/src/send.ts"]},{"output":".setup/setup-core-BWnW0czE.mjs","sha256":"72aec986e4a413ca891c37d67b29a5d953bb0800dd9ad28c1c255b67dfa25ebc","facadeSource":null,"sources":["extensions/imessage/src/setup-core.ts"]},{"output":".setup/setup-surface-aRZhAzzQ.mjs","sha256":"d7665d3c25ac3e4b184f7639246ac26e8c1a3c94afb47ec34132d799736743ef","facadeSource":"extensions/imessage/src/setup-surface.ts","sources":["extensions/imessage/src/install-imsg.ts","extensions/imessage/src/setup-surface.ts"]},{"output":".setup/targets-CIx4BKqL.mjs","sha256":"7c27b2a688288ca7889fd597eecaf9c3f992f5945b9edc7862d4384d0d456d78","facadeSource":null,"sources":["extensions/imessage/src/normalize.ts","extensions/imessage/src/target-identifiers.ts","extensions/imessage/src/targets.ts"]},{"output":"api.js","sha256":"8d8caeb2a7f18d042476a801fc0864b832441cda244a7d136cd93321da974e52","facadeSource":"extensions/imessage/api.ts","sources":[]},{"output":"channel-config-api.js","sha256":"d1ff3745e8e128801438000b659a374343a9957296644d063b1e43cc6cb1da4e","facadeSource":"extensions/imessage/channel-config-api.ts","sources":[]},{"output":"channel-plugin-api.js","sha256":"073ca903a0090ff7179bb2f78a03d19f1c89fe1565e223fcf6e385dfbd91110a","facadeSource":"extensions/imessage/channel-plugin-api.ts","sources":[]},{"output":"contract-api.js","sha256":"c7d2cf6c04e05d4ecd00a81b59ea70a3a06a0eeb422ae59af6d379cb91813d04","facadeSource":"extensions/imessage/contract-api.ts","sources":[]},{"output":"doctor-contract-api.js","sha256":"a9cbc5e727b821983de78d1bdf9b863859b14c86a1c6b8f70fd7b05b9547f36a","facadeSource":"extensions/imessage/doctor-contract-api.ts","sources":["extensions/imessage/config-doctor-api.ts","extensions/imessage/doctor-contract-api.ts","packages/normalization-core/src/record-coerce.ts","src/config/channel-config-normalization.ts","src/plugin-sdk/legacy-webhook-listener-migration.ts"]},{"output":"index.js","sha256":"e3fcf6fd886eaf196d9e38f504ba3cbc46345d5c21c86c1090dea834b3020ce4","facadeSource":"extensions/imessage/index.ts","sources":["extensions/imessage/index.ts"]},{"output":"media-contract-api.js","sha256":"849952bc416cd8ff2cbf658ea635bc89c40baae72f5730a063d3a9e20c847b81","facadeSource":"extensions/imessage/media-contract-api.ts","sources":[]},{"output":"message-tool-api.js","sha256":"d1eeccc3d9c13e88c6bf665c22133ff9e7fc8eb973a6a250396b37c087f1c724","facadeSource":"extensions/imessage/message-tool-api.ts","sources":[]},{"output":"runtime-api.js","sha256":"95438d8e9df4832fc3e6bbc053fcf03d4d1c3700afbd7d1ecaf845a026b87ca2","facadeSource":"extensions/imessage/runtime-api.ts","sources":[]},{"output":"secret-contract-api.js","sha256":"5a5d910629d837d8176ce71f084a37ea874acef6d27935d5a8ec2d9d855a83db","facadeSource":"extensions/imessage/secret-contract-api.ts","sources":["extensions/imessage/secret-contract-api.ts"]},{"output":"session-binding-contract-api.js","sha256":"01a67d0e9e4d6509375b44b407157bf99d81731f80a6eb6edd2cf0a32e344317","facadeSource":"extensions/imessage/session-binding-contract-api.ts","sources":[]},{"output":"setup-entry.js","sha256":"cbf7075397317e1798d9b8b4d106776bf2192f7960e3c2d614691eb70448a91b","facadeSource":"extensions/imessage/setup-entry.ts","sources":["extensions/imessage/setup-entry.ts"]},{"output":"src/chat-db.worker.js","sha256":"35a50828aa3ad3704dd0edccece494e156ff211293dc7dbe09474df88ce59d63","facadeSource":"extensions/imessage/src/chat-db.worker.ts","sources":["extensions/imessage/src/chat-db.worker.ts"]}],"unrenderedSources":["extensions/imessage/api.ts","extensions/imessage/channel-config-api.ts","extensions/imessage/channel-plugin-api.ts","extensions/imessage/contract-api.ts","extensions/imessage/media-contract-api.ts","extensions/imessage/message-tool-api.ts","extensions/imessage/runtime-api.ts","extensions/imessage/session-binding-contract-api.ts","extensions/imessage/src/monitor.ts"]}
package/dist/api.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { a as looksLikeIMessageExplicitTargetId, c as parseIMessageTarget, d as normalizeIMessageMessagingTarget, i as isAllowedIMessageSender, n as inferIMessageTargetChatType, o as normalizeIMessageHandle, s as parseIMessageAllowTarget, t as formatIMessageChatTarget, u as looksLikeIMessageTargetId } from "./.setup/targets-CIx4BKqL.mjs";
2
2
  import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, r as listEnabledIMessageAccounts } from "./.setup/accounts-BH0coL46.mjs";
3
3
  import { o as IMESSAGE_ACTIONS, s as IMESSAGE_ACTION_NAMES } from "./.setup/message-tool-api-CxSY_rh7.mjs";
4
- import { _ as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./.setup/client-C3e7ZLqA.mjs";
5
- import { n as probeIMessage } from "./.setup/actions-CW7XYYF4.mjs";
6
- import { c as matchIMessageAcpConversation, i as resolveIMessageGroupRequireMention, l as normalizeIMessageAcpConversationId, o as resolveIMessageGroupToolPolicy, s as resolveIMessageInboundConversationId, t as imessagePlugin, u as resolveIMessageConversationIdFromTarget } from "./.setup/channel-6kcKpSRw.mjs";
4
+ import { _ as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./.setup/client-CKDbW7i2.mjs";
5
+ import { n as probeIMessage } from "./.setup/actions-CI-2gslW.mjs";
6
+ import { c as matchIMessageAcpConversation, i as resolveIMessageGroupRequireMention, l as normalizeIMessageAcpConversationId, o as resolveIMessageGroupToolPolicy, s as resolveIMessageInboundConversationId, t as imessagePlugin, u as resolveIMessageConversationIdFromTarget } from "./.setup/channel-DLQr-Gbj.mjs";
7
7
  import { n as createIMessageConversationBindingManagerV2, t as createIMessageConversationBindingManager } from "./.setup/conversation-bindings-vZFn6sN2.mjs";
8
- import { a as resolveServicePrefixedChatTarget, c as imessageSetupPlugin, i as resolveServicePrefixedAllowTarget, n as parseChatAllowTargetPrefixes, o as resolveServicePrefixedOrChatAllowTarget, r as parseChatTargetPrefixesOrThrow, s as resolveServicePrefixedTarget, t as createAllowedChatSenderMatcher } from "./.setup/api-6xi-NBrt.mjs";
8
+ import { a as resolveServicePrefixedChatTarget, c as imessageSetupPlugin, i as resolveServicePrefixedAllowTarget, n as parseChatAllowTargetPrefixes, o as resolveServicePrefixedOrChatAllowTarget, r as parseChatTargetPrefixesOrThrow, s as resolveServicePrefixedTarget, t as createAllowedChatSenderMatcher } from "./.setup/api-DomgyOq_.mjs";
9
9
  import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./.setup/outbound-send-deps-_da8jqeo.mjs";
10
10
  export { DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, IMESSAGE_ACTIONS, IMESSAGE_ACTION_NAMES, IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS, createAllowedChatSenderMatcher, createIMessageConversationBindingManager, createIMessageConversationBindingManagerV2, formatIMessageChatTarget, imessagePlugin, imessageSetupPlugin, inferIMessageTargetChatType, isAllowedIMessageSender, listEnabledIMessageAccounts, listIMessageAccountIds, looksLikeIMessageExplicitTargetId, looksLikeIMessageTargetId, matchIMessageAcpConversation, normalizeIMessageAcpConversationId, normalizeIMessageHandle, normalizeIMessageMessagingTarget, parseChatAllowTargetPrefixes, parseChatTargetPrefixesOrThrow, parseIMessageAllowTarget, parseIMessageTarget, probeIMessage, resolveDefaultIMessageAccountId, resolveIMessageAccount, resolveIMessageConversationIdFromTarget, resolveIMessageGroupRequireMention, resolveIMessageGroupToolPolicy, resolveIMessageInboundConversationId, resolveServicePrefixedAllowTarget, resolveServicePrefixedChatTarget, resolveServicePrefixedOrChatAllowTarget, resolveServicePrefixedTarget };
@@ -1 +1 @@
1
- export { t as imessagePlugin } from "./.setup/channel-6kcKpSRw.mjs";
1
+ export { t as imessagePlugin } from "./.setup/channel-DLQr-Gbj.mjs";
@@ -1,3 +1,3 @@
1
- import { t as imessageMessageActions } from "./.setup/actions-CW7XYYF4.mjs";
1
+ import { t as imessageMessageActions } from "./.setup/actions-CI-2gslW.mjs";
2
2
  import { r as setIMessageRuntime } from "./.setup/runtime-BRQCPuAD.mjs";
3
3
  export { imessageMessageActions, setIMessageRuntime };
@@ -4,7 +4,7 @@ import { fileURLToPath } from "node:url";
4
4
  var setup_entry_default = defineBundledChannelSetupEntry({
5
5
  importMetaUrl: import.meta.url,
6
6
  plugin: {
7
- specifier: fileURLToPath(new URL(".setup/api-B0ih8Iof.mjs", import.meta.url).href),
7
+ specifier: fileURLToPath(new URL(".setup/api-LHNeKI7K.mjs", import.meta.url).href),
8
8
  exportName: "imessageSetupPlugin"
9
9
  }
10
10
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/imessage",
3
- "version": "2026.10.10",
3
+ "version": "2026.11.1",
4
4
  "description": "OpenClaw iMessage channel plugin using imsg on a signed-in Mac",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  "zod": "4.6.5"
13
13
  },
14
14
  "peerDependencies": {
15
- "openclaw": ">=2026.10.10"
15
+ "openclaw": ">=2026.11.1"
16
16
  },
17
17
  "peerDependenciesMeta": {
18
18
  "openclaw": {
@@ -92,10 +92,10 @@
92
92
  "allowInvalidConfigRecovery": true
93
93
  },
94
94
  "compat": {
95
- "pluginApi": ">=2026.10.10"
95
+ "pluginApi": ">=2026.11.1"
96
96
  },
97
97
  "build": {
98
- "openclawVersion": "2026.10.10",
98
+ "openclawVersion": "2026.11.1",
99
99
  "bundledDist": false,
100
100
  "workerEntries": [
101
101
  "./src/chat-db.worker.ts"