@openclaw/imessage 2026.11.1 → 2026.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/.setup/{accounts-BH0coL46.mjs → accounts-DacCvDBt.mjs} +6 -3
  2. package/dist/.setup/{actions-CI-2gslW.mjs → actions-FOjSVXxg.mjs} +63 -13
  3. package/dist/.setup/{actions.runtime-Cv8J2DCK.mjs → actions.runtime-Mh1ED1Pq.mjs} +9 -6
  4. package/dist/.setup/{api-LHNeKI7K.mjs → api-BpfhqSA4.mjs} +9 -9
  5. package/dist/.setup/{api-DomgyOq_.mjs → api-BvfhvRlZ.mjs} +9 -8
  6. package/dist/.setup/{approval-handler.runtime-J_1w5ZFh.mjs → approval-handler.runtime-Bes82dAn.mjs} +11 -10
  7. package/dist/.setup/{approval-reactions-U8Ku77_2.mjs → approval-reactions-g1TDaSN2.mjs} +12 -9
  8. package/dist/.setup/{channel-DLQr-Gbj.mjs → channel-BtDnHgzF.mjs} +34 -23
  9. package/dist/.setup/{channel.runtime-PU6bZMXQ.mjs → channel.runtime-BomnjKt2.mjs} +80 -57
  10. package/dist/.setup/{client-CKDbW7i2.mjs → client-DlNC08mM.mjs} +25 -12
  11. package/dist/.setup/{config-schema-DRkdRC21.mjs → config-schema-DXwa_3V5.mjs} +4 -2
  12. package/dist/.setup/{conversation-bindings-vZFn6sN2.mjs → conversation-bindings-DR-dbHjs.mjs} +2 -1
  13. package/dist/.setup/{media-contract-CoixpXRX.mjs → media-contract-BwWs5PM7.mjs} +3 -2
  14. package/dist/.setup/{message-tool-api-CxSY_rh7.mjs → message-tool-api-B5NfPnFL.mjs} +8 -5
  15. package/dist/.setup/{outbound-send-deps-_da8jqeo.mjs → outbound-send-deps-B-QEsLSM.mjs} +2 -1
  16. package/dist/.setup/{question-reactions-CggXC4jv.mjs → question-reactions-CgZKeyy3.mjs} +5 -4
  17. package/dist/.setup/{reaction-context-k7ftOZLV.mjs → reaction-context-7yLnHd5m.mjs} +3 -2
  18. package/dist/.setup/{remote-file-C3WVb0XZ.mjs → remote-file-D8UX85bK.mjs} +10 -6
  19. package/dist/.setup/{rolldown-runtime-782esTHO.mjs → rolldown-runtime-BBjsoOtd.mjs} +2 -1
  20. package/dist/.setup/{runtime-BRQCPuAD.mjs → runtime-Cza4CY5T.mjs} +2 -1
  21. package/dist/.setup/{sanitize-outbound-C02fJrn6.mjs → sanitize-outbound-BtEY324R.mjs} +4 -2
  22. package/dist/.setup/{send-COiAb1TU.mjs → send-D44ovNNq.mjs} +24 -14
  23. package/dist/.setup/{setup-core-BWnW0czE.mjs → setup-core-BHyLkAEJ.mjs} +4 -3
  24. package/dist/.setup/{setup-surface-aRZhAzzQ.mjs → setup-surface-DPqiLGy0.mjs} +6 -4
  25. package/dist/.setup/{targets-CIx4BKqL.mjs → targets-B4oU7n-v.mjs} +6 -3
  26. package/dist/api.js +9 -9
  27. package/dist/channel-config-api.js +2 -1
  28. package/dist/channel-plugin-api.js +2 -1
  29. package/dist/contract-api.js +2 -1
  30. package/dist/doctor-contract-api.js +13 -7
  31. package/dist/index.js +2 -1
  32. package/dist/media-contract-api.js +2 -1
  33. package/dist/message-tool-api.js +2 -1
  34. package/dist/runtime-api.js +2 -2
  35. package/dist/secret-contract-api.js +2 -1
  36. package/dist/session-binding-contract-api.js +2 -1
  37. package/dist/setup-entry.js +3 -2
  38. package/dist/src/chat-db.worker.js +3 -2
  39. package/package.json +4 -4
  40. package/dist/.source-module-urls/929c518fa2986b0f85f66bceefead22868db0ab452dee914dc6a2bb86b2e60ad.json +0 -1
@@ -1,5 +1,5 @@
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-CKDbW7i2.mjs";
1
+ import { p as resolveLocalIMessageChatDbPath } from "./accounts-DacCvDBt.mjs";
2
+ import { b as chatContextFromIMessageTarget, l as resolveIMessageCachedResourceBinding, u as resolveIMessageMessageId, x as isIMessageEmailChatIdentifier } from "./client-DlNC08mM.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";
@@ -8,7 +8,7 @@ import { randomUUID } from "node:crypto";
8
8
  import { resolveRuntimeWorkerUrl, runCommandWithTimeout } from "openclaw/plugin-sdk/process-runtime";
9
9
  import { sanitizeTempFileName } from "openclaw/plugin-sdk/temp-path";
10
10
  import { openSqliteWorkerStore } from "openclaw/plugin-sdk/sqlite-runtime";
11
- // extensions/imessage/src/chat-db.ts
11
+ //#region extensions/imessage/src/chat-db.ts
12
12
  function openIMessageChatDbReader(databasePath) {
13
13
  return openSqliteWorkerStore({
14
14
  moduleUrl: resolveRuntimeWorkerUrl({
@@ -62,7 +62,8 @@ async function withIMessageReceiptGuidReader(databasePath, use) {
62
62
  } catch {}
63
63
  }
64
64
  }
65
- // extensions/imessage/src/message-resource-db.ts
65
+ //#endregion
66
+ //#region extensions/imessage/src/message-resource-db.ts
66
67
  function normalizeIMessageMessageGuidForLookup(messageId) {
67
68
  const trimmed = messageId.trim();
68
69
  const slash = trimmed.lastIndexOf("/");
@@ -134,7 +135,8 @@ async function checkIMessageResourceBinding(params) {
134
135
  } catch {}
135
136
  }
136
137
  }
137
- // extensions/imessage/src/message-resource.ts
138
+ //#endregion
139
+ //#region extensions/imessage/src/message-resource.ts
138
140
  const MAX_REPLY_TO_ID_LENGTH = 256;
139
141
  function sanitizeReplyToId(rawReplyToId) {
140
142
  const trimmed = rawReplyToId?.trim();
@@ -184,7 +186,8 @@ async function authorizeIMessageResourceReference(params) {
184
186
  if (params.conversationReadOrigin === "direct-operator") return;
185
187
  throw new Error("Delegated iMessage message references require a current same-account conversation binding when the Messages database is unavailable.");
186
188
  }
187
- // extensions/imessage/src/remote-file.ts
189
+ //#endregion
190
+ //#region extensions/imessage/src/remote-file.ts
188
191
  const SSH_OPTIONS = [
189
192
  "-o",
190
193
  "BatchMode=yes",
@@ -280,4 +283,5 @@ rm -rf -- ${remoteDir}
280
283
  }
281
284
  }
282
285
  }
286
+ //#endregion
283
287
  export { withIMessageReceiptGuidReader as a, resolveIMessageStartupRowidWatermark as i, authorizeIMessageResourceReference as n, resolveAuthorizedIMessageReplyReference as r, withIMessageRemoteFile as t };
@@ -1,4 +1,4 @@
1
- // \0rolldown/runtime.js
1
+ //#region \0rolldown/runtime.js
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -23,4 +23,5 @@ var __copyProps = (to, from, except, desc) => {
23
23
  return to;
24
24
  };
25
25
  var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
26
+ //#endregion
26
27
  export { __reExport as n, __exportAll as t };
@@ -1,7 +1,8 @@
1
1
  import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
2
- // extensions/imessage/src/runtime.ts
2
+ //#region extensions/imessage/src/runtime.ts
3
3
  const { getRuntime: getIMessageRuntime, setRuntime: setIMessageRuntime, tryGetRuntime: getOptionalIMessageRuntime } = createPluginRuntimeStore({
4
4
  pluginId: "imessage",
5
5
  errorMessage: "iMessage runtime not initialized"
6
6
  });
7
+ //#endregion
7
8
  export { getOptionalIMessageRuntime as n, setIMessageRuntime as r, getIMessageRuntime as t };
@@ -1,5 +1,5 @@
1
1
  import { FormatCapabilityProfile, applyMarkdownTextEdits, findCodeRegions, isInsideCode, markdownToIR, renderMarkdownWithAttributedRanges, sanitizeAssistantVisibleText, stripMarkdown, tokenizeHtmlTags } from "openclaw/plugin-sdk/text-chunking";
2
- // extensions/imessage/src/markdown-format.ts
2
+ //#region extensions/imessage/src/markdown-format.ts
3
3
  const IMESSAGE_FORMAT_PROFILE = FormatCapabilityProfile.define({
4
4
  mechanism: "ranges",
5
5
  constructs: {
@@ -85,7 +85,8 @@ function extractMarkdownFormatRuns(input) {
85
85
  styles: [style]
86
86
  })), codeRanges);
87
87
  }
88
- // extensions/imessage/src/monitor/sanitize-outbound.ts
88
+ //#endregion
89
+ //#region extensions/imessage/src/monitor/sanitize-outbound.ts
89
90
  /**
90
91
  * Patterns that indicate assistant-internal metadata leaked into text.
91
92
  * These must never reach a user-facing channel.
@@ -524,4 +525,5 @@ function sanitizeOutboundText(text) {
524
525
  cleaned = cleaned.replace(/\n{3,}/g, "\n\n").trim();
525
526
  return cleaned;
526
527
  }
528
+ //#endregion
527
529
  export { extractMarkdownFormatRuns as i, sanitizeIMessageFinalOutboundText as n, sanitizeOutboundText as r, protectIMessageFencedRoleMarkers as t };
@@ -1,12 +1,12 @@
1
- import { c as parseIMessageTarget, o as normalizeIMessageHandle, t as formatIMessageChatTarget } from "./targets-CIx4BKqL.mjs";
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-CKDbW7i2.mjs";
4
- import { a as normalizeIMessageMessageId, i as normalizeIMessageGuid } from "./actions-CI-2gslW.mjs";
5
- import { n as getOptionalIMessageRuntime, t as getIMessageRuntime } from "./runtime-BRQCPuAD.mjs";
6
- import { d as getIMessageApprovalApprovers, f as imessageApprovalAuth } from "./channel-DLQr-Gbj.mjs";
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-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";
1
+ import { c as parseIMessageTarget, o as normalizeIMessageHandle, t as formatIMessageChatTarget } from "./targets-B4oU7n-v.mjs";
2
+ import { d as resolveIMessageChatDbLookupPath, l as resolveIMessageRemoteHost, n as hasExclusiveIMessageLocalDatabase, o as resolveIMessageAccount } from "./accounts-DacCvDBt.mjs";
3
+ import { C as resolveIMessageDirectChatService, _ as resolveIMessageSentEchoEntryKey, b as chatContextFromIMessageTarget, c as rememberIMessageReplyCache, f as IMESSAGE_SENT_ECHOES_NAMESPACE, g as resolveIMessageEchoMediaKey, i as runIMessageCliJsonCommand, n as createIMessageRpcClient, p as IMESSAGE_SENT_ECHOES_TTL_MS, t as IMessageRpcRequestError } from "./client-DlNC08mM.mjs";
4
+ import { c as normalizeIMessageMessageId, i as withIMessageSendFailureStatus, n as clearIMessageSendFailure, s as normalizeIMessageGuid } from "./actions-FOjSVXxg.mjs";
5
+ import { n as getOptionalIMessageRuntime, t as getIMessageRuntime } from "./runtime-Cza4CY5T.mjs";
6
+ import { d as getIMessageApprovalApprovers, f as imessageApprovalAuth } from "./channel-BtDnHgzF.mjs";
7
+ import { n as sanitizeIMessageFinalOutboundText, t as protectIMessageFencedRoleMarkers } from "./sanitize-outbound-BtEY324R.mjs";
8
+ import { a as withIMessageReceiptGuidReader, r as resolveAuthorizedIMessageReplyReference, t as withIMessageRemoteFile } from "./remote-file-D8UX85bK.mjs";
9
+ import { d as resolveIMessageApprovalControlActor, i as registerIMessageApprovalReactionTarget, l as enumerateApprovalTargetKeys, s as buildIMessageApprovalConversationKeyForInbound, u as normalizeConversationKey } from "./approval-reactions-g1TDaSN2.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";
@@ -24,7 +24,7 @@ import { resolvePreferredOpenClawTmpDir, withTempWorkspace } from "openclaw/plug
24
24
  import { createPluginStateErrorReporter } from "openclaw/plugin-sdk/plugin-state-runtime";
25
25
  import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
26
26
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
27
- // extensions/imessage/src/approval-polls.ts
27
+ //#region extensions/imessage/src/approval-polls.ts
28
28
  const TARGET_NAMESPACE = "imessage.approval-polls";
29
29
  const TOMBSTONE_NAMESPACE = "imessage.approval-poll-tombstones";
30
30
  const MAX_ENTRIES = 1e3;
@@ -356,7 +356,8 @@ const iMessageApprovalPollTargets = {
356
356
  registerTombstone: registerIMessageApprovalPollTombstone,
357
357
  clearForTest: clearIMessageApprovalPollTargetsForTest
358
358
  };
359
- // extensions/imessage/src/monitor/echo-text-corruption.ts
359
+ //#endregion
360
+ //#region extensions/imessage/src/monitor/echo-text-corruption.ts
360
361
  function isLeadingEchoTextCorruptionMarker(code) {
361
362
  return code === 0 || code === 65279 || code === 65533 || code === 65534 || code === 65535;
362
363
  }
@@ -367,7 +368,8 @@ function normalizeIMessageEchoText(text) {
367
368
  while (offset < normalized.length && isLeadingEchoTextCorruptionMarker(normalized.charCodeAt(offset))) offset += 1;
368
369
  return normalized.slice(offset).trim() || void 0;
369
370
  }
370
- // extensions/imessage/src/monitor/persisted-echo-cache.ts
371
+ //#endregion
372
+ //#region extensions/imessage/src/monitor/persisted-echo-cache.ts
371
373
  let persistenceFailureLogged = false;
372
374
  function reportFailure(scope, err) {
373
375
  if (persistenceFailureLogged) return;
@@ -459,7 +461,8 @@ async function hasPersistedIMessageEcho(params) {
459
461
  }
460
462
  return false;
461
463
  }
462
- // extensions/imessage/src/send-transport.ts
464
+ //#endregion
465
+ //#region extensions/imessage/src/send-transport.ts
463
466
  function bindIMessageCliSend(handoff, options) {
464
467
  const effect = captureEffectAuthority();
465
468
  const assertReadAuthority = captureChannelReadAuthority();
@@ -491,7 +494,8 @@ async function requestIMessageRpcSend(client, method, params, timeoutMs, handoff
491
494
  throw normalizeIMessageRpcSendError(error);
492
495
  }
493
496
  }
494
- // extensions/imessage/src/send.ts
497
+ //#endregion
498
+ //#region extensions/imessage/src/send.ts
495
499
  const MIN_PENDING_PERSISTED_ECHO_TTL_MS = 6e4;
496
500
  const PENDING_PERSISTED_ECHO_GRACE_MS = 5e3;
497
501
  function resolveMessageId(result) {
@@ -628,6 +632,9 @@ async function sendMessageIMessage(to, text, opts) {
628
632
  cfg,
629
633
  accountId: opts.accountId
630
634
  });
635
+ return await withIMessageSendFailureStatus(account.accountId, () => sendMessageIMessageForAccount(to, text, opts, cfg, account));
636
+ }
637
+ async function sendMessageIMessageForAccount(to, text, opts, cfg, account) {
631
638
  const cliPath = opts.cliPath?.trim() || account.config.cliPath?.trim() || "imsg";
632
639
  const dbPath = opts.dbPath?.trim() || account.config.dbPath?.trim();
633
640
  const remoteHost = await resolveIMessageRemoteHost({
@@ -838,6 +845,7 @@ async function sendMessageIMessage(to, text, opts) {
838
845
  timestamp: Date.now(),
839
846
  isFromMe: true
840
847
  });
848
+ if (messageId !== "unknown") clearIMessageSendFailure(account.accountId);
841
849
  return {
842
850
  messageId,
843
851
  ...approvalBindingMessageId ? { guid: approvalBindingMessageId } : {},
@@ -1023,6 +1031,7 @@ async function sendMessageIMessage(to, text, opts) {
1023
1031
  allowedDecisions: opts.approvalPrompt.allowedDecisions
1024
1032
  });
1025
1033
  }
1034
+ if (messageId !== "unknown") clearIMessageSendFailure(account.accountId);
1026
1035
  return {
1027
1036
  messageId,
1028
1037
  ...approvalBindingMessageId ? { guid: approvalBindingMessageId } : {},
@@ -1045,4 +1054,5 @@ async function sendMessageIMessage(to, text, opts) {
1045
1054
  if (shouldClose) await client.stop();
1046
1055
  }
1047
1056
  }
1057
+ //#endregion
1048
1058
  export { iMessageApprovalPollTargets as a, buildApprovalPollOptions as i, hasPersistedIMessageEcho as n, mapSentPollOptionsToDecisions as o, normalizeIMessageEchoText as r, maybeResolveIMessageApprovalPollVote as s, sendMessageIMessage as t };
@@ -1,12 +1,12 @@
1
- import { l as IMESSAGE_CHAT_TARGET_PREFIX_RE, o as normalizeIMessageHandle } from "./targets-CIx4BKqL.mjs";
2
- import { a as resolveDefaultIMessageAccountId, o as resolveIMessageAccount } from "./accounts-BH0coL46.mjs";
1
+ import { l as IMESSAGE_CHAT_TARGET_PREFIX_RE, o as normalizeIMessageHandle } from "./targets-B4oU7n-v.mjs";
2
+ import { a as resolveDefaultIMessageAccountId, o as resolveIMessageAccount } from "./accounts-DacCvDBt.mjs";
3
3
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { parseAllowFromEntries } from "openclaw/plugin-sdk/allow-from";
5
5
  import { createChannelDmPolicy } from "openclaw/plugin-sdk/channel-dm-policy";
6
6
  import { defineChannelSetupContract } from "openclaw/plugin-sdk/channel-setup";
7
7
  import { createCliPathTextInput, createDelegatedSetupWizardProxy, createDelegatedTextInputShouldPrompt, createPatchedAccountSetupAdapter, createSetupTranslator, promptParsedAllowFromForAccount, setAccountAllowFromForChannel, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup-runtime";
8
8
  import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
9
- // extensions/imessage/src/setup-core.ts
9
+ //#region extensions/imessage/src/setup-core.ts
10
10
  const t = createSetupTranslator();
11
11
  const channel = "imessage";
12
12
  const IMESSAGE_INSTALL_COMMAND = "brew install steipete/tap/imsg";
@@ -191,4 +191,5 @@ function createIMessageSetupWizardProxy(loadWizard) {
191
191
  disable: (cfg) => setSetupChannelEnabled(cfg, channel, false)
192
192
  });
193
193
  }
194
+ //#endregion
194
195
  export { imessageCompletionNote as a, imessageSetupStatusBase as c, parseIMessageAllowFromEntries as d, createIMessageSetupWizardProxy as i, isAutoManagedIMessageCliPath as l, IMESSAGE_UPDATE_COMMAND as n, imessageDmPolicy as o, createIMessageCliPathTextInput as r, imessageSetupContract as s, IMESSAGE_INSTALL_COMMAND as t, normalizeIMessageCliPathForSetup as u };
@@ -1,5 +1,5 @@
1
- import { o as resolveIMessageAccount } from "./accounts-BH0coL46.mjs";
2
- import { a as imessageCompletionNote, c as imessageSetupStatusBase, l as isAutoManagedIMessageCliPath, o as imessageDmPolicy, r as createIMessageCliPathTextInput, t as IMESSAGE_INSTALL_COMMAND, u as normalizeIMessageCliPathForSetup } from "./setup-core-BWnW0czE.mjs";
1
+ import { o as resolveIMessageAccount } from "./accounts-DacCvDBt.mjs";
2
+ import { a as imessageCompletionNote, c as imessageSetupStatusBase, l as isAutoManagedIMessageCliPath, o as imessageDmPolicy, r as createIMessageCliPathTextInput, t as IMESSAGE_INSTALL_COMMAND, u as normalizeIMessageCliPathForSetup } from "./setup-core-BHyLkAEJ.mjs";
3
3
  import path from "node:path";
4
4
  import fs from "node:fs/promises";
5
5
  import { createDetectedBinaryStatus, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup";
@@ -7,7 +7,7 @@ import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
7
7
  import { detectBinary as detectBinary$1, resolveBrewExecutable } from "openclaw/plugin-sdk/setup-tools";
8
8
  import { isPathStrictlyInside } from "openclaw/plugin-sdk/file-access-runtime";
9
9
  import { runPluginCommandWithTimeout } from "openclaw/plugin-sdk/run-command";
10
- // extensions/imessage/src/install-imsg.ts
10
+ //#region extensions/imessage/src/install-imsg.ts
11
11
  const IMESSAGE_BREW_FORMULA = "steipete/tap/imsg";
12
12
  async function resolveBrewManagedIMessageCliPath(brewExe, cliPath) {
13
13
  try {
@@ -112,7 +112,8 @@ async function installIMessageCli(runtime, opts) {
112
112
  version
113
113
  };
114
114
  }
115
- // extensions/imessage/src/setup-surface.ts
115
+ //#endregion
116
+ //#region extensions/imessage/src/setup-surface.ts
116
117
  const channel = "imessage";
117
118
  const imessageDetectedBinaryStatus = createDetectedBinaryStatus({
118
119
  channelLabel: "iMessage",
@@ -179,4 +180,5 @@ const imessageSetupWizard = {
179
180
  dmPolicy: imessageDmPolicy,
180
181
  disable: (cfg) => setSetupChannelEnabled(cfg, channel, false)
181
182
  };
183
+ //#endregion
182
184
  export { imessageSetupWizard };
@@ -1,7 +1,7 @@
1
1
  import { createAllowedChatSenderMatcher, parseChatTargetPrefixesOrThrow, resolveServicePrefixedChatTarget, resolveServicePrefixedOrChatAllowTarget } from "openclaw/plugin-sdk/channel-targets";
2
2
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { normalizeE164 } from "openclaw/plugin-sdk/account-resolution";
4
- // extensions/imessage/src/target-identifiers.ts
4
+ //#region extensions/imessage/src/target-identifiers.ts
5
5
  const BARE_CHAT_IDENTIFIER_RE = /^[0-9a-f]{32}$/i;
6
6
  function isIMessagePhoneLikeHandle(raw) {
7
7
  return /^(?:tel:)?[+\d\s().-]+$/i.test(raw.trim());
@@ -11,7 +11,8 @@ function normalizeBareIMessageChatIdentifier(raw) {
11
11
  if (!BARE_CHAT_IDENTIFIER_RE.test(trimmed)) return;
12
12
  return trimmed.toLowerCase();
13
13
  }
14
- // extensions/imessage/src/normalize.ts
14
+ //#endregion
15
+ //#region extensions/imessage/src/normalize.ts
15
16
  const IMESSAGE_SERVICE_PREFIXES = [
16
17
  "imessage",
17
18
  "sms",
@@ -78,7 +79,8 @@ function looksLikeIMessageTargetId(raw) {
78
79
  if (normalizeBareIMessageChatIdentifier(trimmed)) return true;
79
80
  return /^(imessage:|sms:|auto:)/i.test(trimmed) || trimmed.includes("@") || isIMessagePhoneLikeHandle(trimmed) && Boolean(normalizeE164(trimmed));
80
81
  }
81
- // extensions/imessage/src/targets.ts
82
+ //#endregion
83
+ //#region extensions/imessage/src/targets.ts
82
84
  function parseServicePrefixedBareChatIdentifier(params) {
83
85
  for (const { prefix } of IMESSAGE_SERVICE_PREFIXES) {
84
86
  if (!params.lower.startsWith(prefix)) continue;
@@ -187,4 +189,5 @@ function formatIMessageChatTarget(chatId) {
187
189
  if (!chatId || !Number.isFinite(chatId)) return "";
188
190
  return `chat_id:${chatId}`;
189
191
  }
192
+ //#endregion
190
193
  export { looksLikeIMessageExplicitTargetId as a, parseIMessageTarget as c, normalizeIMessageMessagingTarget as d, isIMessagePhoneLikeHandle as f, isAllowedIMessageSender as i, IMESSAGE_CHAT_TARGET_PREFIX_RE as l, inferIMessageTargetChatType as n, normalizeIMessageHandle as o, isAllowedIMessageReplyContextSender as r, parseIMessageAllowTarget as s, formatIMessageChatTarget as t, looksLikeIMessageTargetId as u };
package/dist/api.js CHANGED
@@ -1,10 +1,10 @@
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
- import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, r as listEnabledIMessageAccounts } from "./.setup/accounts-BH0coL46.mjs";
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-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
- 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-DomgyOq_.mjs";
9
- import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./.setup/outbound-send-deps-_da8jqeo.mjs";
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-B4oU7n-v.mjs";
2
+ import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, r as listEnabledIMessageAccounts } from "./.setup/accounts-DacCvDBt.mjs";
3
+ import { o as IMESSAGE_ACTIONS, s as IMESSAGE_ACTION_NAMES } from "./.setup/message-tool-api-B5NfPnFL.mjs";
4
+ import { v as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./.setup/client-DlNC08mM.mjs";
5
+ import { a as probeIMessage } from "./.setup/actions-FOjSVXxg.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-BtDnHgzF.mjs";
7
+ import { n as createIMessageConversationBindingManagerV2, t as createIMessageConversationBindingManager } from "./.setup/conversation-bindings-DR-dbHjs.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-BvfhvRlZ.mjs";
9
+ import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./.setup/outbound-send-deps-B-QEsLSM.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,2 @@
1
- export { t as IMessageChannelConfigSchema } from "./.setup/config-schema-DRkdRC21.mjs";
1
+ import { t as IMessageChannelConfigSchema } from "./.setup/config-schema-DXwa_3V5.mjs";
2
+ export { IMessageChannelConfigSchema };
@@ -1 +1,2 @@
1
- export { t as imessagePlugin } from "./.setup/channel-DLQr-Gbj.mjs";
1
+ import { t as imessagePlugin } from "./.setup/channel-BtDnHgzF.mjs";
2
+ export { imessagePlugin };
@@ -1,2 +1,3 @@
1
- export { t as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, n as resolveIMessageAttachmentRoots, n as resolveInboundAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots, r as resolveRemoteInboundAttachmentRoots } from "./.setup/media-contract-CoixpXRX.mjs";
1
+ import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots, t as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS } from "./.setup/media-contract-BwWs5PM7.mjs";
2
2
  import "./media-contract-api.js";
3
+ export { DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, resolveIMessageAttachmentRoots, resolveIMessageAttachmentRoots as resolveInboundAttachmentRoots, resolveIMessageRemoteAttachmentRoots, resolveIMessageRemoteAttachmentRoots as resolveRemoteInboundAttachmentRoots };
@@ -1,7 +1,7 @@
1
- import { n as __reExport, t as __exportAll } from "./.setup/rolldown-runtime-782esTHO.mjs";
1
+ import { n as __reExport, t as __exportAll } from "./.setup/rolldown-runtime-BBjsoOtd.mjs";
2
2
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import path from "node:path";
4
- // packages/normalization-core/src/record-coerce.ts
4
+ //#region packages/normalization-core/src/record-coerce.ts
5
5
  /** Type guard for non-array object records at browser-safe boundaries. */
6
6
  function isRecord$1(value) {
7
7
  return value !== null && typeof value === "object" && !Array.isArray(value);
@@ -10,7 +10,8 @@ function isRecord$1(value) {
10
10
  function asNullableRecord$1(value) {
11
11
  return isRecord$1(value) ? value : null;
12
12
  }
13
- // src/config/channel-config-normalization.ts
13
+ //#endregion
14
+ //#region src/config/channel-config-normalization.ts
14
15
  /** Applies one channel-specific doctor migration to every object-shaped account. */
15
16
  function normalizeChannelAccounts(params) {
16
17
  const rawAccounts = asNullableRecord$1(params.entry.accounts);
@@ -86,7 +87,8 @@ function normalizeChannelConfigEntries$1(params) {
86
87
  changes
87
88
  };
88
89
  }
89
- // src/plugin-sdk/legacy-webhook-listener-migration.ts
90
+ //#endregion
91
+ //#region src/plugin-sdk/legacy-webhook-listener-migration.ts
90
92
  /** Preserve explicitly configured webhook listeners while moving ingress onto Gateway routes. */
91
93
  function createLegacyWebhookListenerDoctorContract(params) {
92
94
  const portKey = params.portKey ?? "webhookPort";
@@ -156,11 +158,13 @@ function createLegacyWebhookListenerDoctorContract(params) {
156
158
  }
157
159
  };
158
160
  }
159
- // \0openclaw:bundled-sdk:openclaw/plugin-sdk/runtime-doctor-migrations
161
+ //#endregion
162
+ //#region \0openclaw:bundled-sdk:openclaw/plugin-sdk/runtime-doctor-migrations
160
163
  var runtime_doctor_migrations_exports = /* @__PURE__ */ __exportAll({ createLegacyWebhookListenerDoctorContract: () => createLegacyWebhookListenerDoctorContract });
161
164
  import * as import_openclaw_plugin_sdk_runtime_doctor_migrations from "openclaw/plugin-sdk/runtime-doctor-migrations";
162
165
  __reExport(runtime_doctor_migrations_exports, import_openclaw_plugin_sdk_runtime_doctor_migrations);
163
- // extensions/imessage/config-doctor-api.ts
166
+ //#endregion
167
+ //#region extensions/imessage/config-doctor-api.ts
164
168
  function isEnabledCatchup(value) {
165
169
  return isRecord(value) && value.enabled === true;
166
170
  }
@@ -206,7 +210,8 @@ function normalizeCompatibilityConfig({ cfg }) {
206
210
  changes: catchup.changes
207
211
  });
208
212
  }
209
- // extensions/imessage/doctor-contract-api.ts
213
+ //#endregion
214
+ //#region extensions/imessage/doctor-contract-api.ts
210
215
  const stateMigrations = [(0, runtime_doctor_migrations_exports.defineRetiredPluginStateMigration)({
211
216
  id: "imessage-retired-state",
212
217
  label: "iMessage retired monitor state",
@@ -220,4 +225,5 @@ const stateMigrations = [(0, runtime_doctor_migrations_exports.defineRetiredPlug
220
225
  }
221
226
  ]
222
227
  })];
228
+ //#endregion
223
229
  export { legacyConfigRules, normalizeCompatibilityConfig, stateMigrations };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { defineBundledChannelEntry } from "openclaw/plugin-sdk/channel-entry-contract";
2
- // extensions/imessage/index.ts
2
+ //#region extensions/imessage/index.ts
3
3
  var imessage_default = defineBundledChannelEntry({
4
4
  id: "imessage",
5
5
  name: "iMessage",
@@ -14,4 +14,5 @@ var imessage_default = defineBundledChannelEntry({
14
14
  exportName: "setIMessageRuntime"
15
15
  }
16
16
  });
17
+ //#endregion
17
18
  export { imessage_default as default };
@@ -1 +1,2 @@
1
- export { t as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, n as resolveIMessageAttachmentRoots, n as resolveInboundAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots, r as resolveRemoteInboundAttachmentRoots } from "./.setup/media-contract-CoixpXRX.mjs";
1
+ import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots, t as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS } from "./.setup/media-contract-BwWs5PM7.mjs";
2
+ export { DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, resolveIMessageAttachmentRoots, resolveIMessageAttachmentRoots as resolveInboundAttachmentRoots, resolveIMessageRemoteAttachmentRoots, resolveIMessageRemoteAttachmentRoots as resolveRemoteInboundAttachmentRoots };
@@ -1 +1,2 @@
1
- export { t as describeMessageTool } from "./.setup/message-tool-api-CxSY_rh7.mjs";
1
+ import { t as describeIMessageMessageTool } from "./.setup/message-tool-api-B5NfPnFL.mjs";
2
+ export { describeIMessageMessageTool as describeMessageTool };
@@ -1,3 +1,3 @@
1
- import { t as imessageMessageActions } from "./.setup/actions-CI-2gslW.mjs";
2
- import { r as setIMessageRuntime } from "./.setup/runtime-BRQCPuAD.mjs";
1
+ import { t as imessageMessageActions } from "./.setup/actions-FOjSVXxg.mjs";
2
+ import { r as setIMessageRuntime } from "./.setup/runtime-Cza4CY5T.mjs";
3
3
  export { imessageMessageActions, setIMessageRuntime };
@@ -1,4 +1,5 @@
1
- // extensions/imessage/secret-contract-api.ts
1
+ //#region extensions/imessage/secret-contract-api.ts
2
2
  const secretTargetRegistryEntries = [];
3
3
  function collectRuntimeConfigAssignments() {}
4
+ //#endregion
4
5
  export { collectRuntimeConfigAssignments, secretTargetRegistryEntries };
@@ -1 +1,2 @@
1
- export { n as createIMessageConversationBindingManagerV2, r as imessageConversationBindingTesting } from "./.setup/conversation-bindings-vZFn6sN2.mjs";
1
+ import { n as createIMessageConversationBindingManagerV2, r as testing } from "./.setup/conversation-bindings-DR-dbHjs.mjs";
2
+ export { createIMessageConversationBindingManagerV2, testing as imessageConversationBindingTesting };
@@ -1,11 +1,12 @@
1
1
  import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entry-contract";
2
2
  import { fileURLToPath } from "node:url";
3
- // extensions/imessage/setup-entry.ts
3
+ //#region extensions/imessage/setup-entry.ts
4
4
  var setup_entry_default = defineBundledChannelSetupEntry({
5
5
  importMetaUrl: import.meta.url,
6
6
  plugin: {
7
- specifier: fileURLToPath(new URL(".setup/api-LHNeKI7K.mjs", import.meta.url).href),
7
+ specifier: fileURLToPath(new URL(".setup/api-BpfhqSA4.mjs", import.meta.url).href),
8
8
  exportName: "imessageSetupPlugin"
9
9
  }
10
10
  });
11
+ //#endregion
11
12
  export { setup_entry_default as default };
@@ -1,6 +1,6 @@
1
- import { o as normalizeIMessageHandle } from "../.setup/targets-CIx4BKqL.mjs";
1
+ import { o as normalizeIMessageHandle } from "../.setup/targets-B4oU7n-v.mjs";
2
2
  import { executeSqliteQuerySync, executeSqliteQueryTakeFirstSync, getNodeSqliteKysely, openNodeSqliteDatabase } from "openclaw/plugin-sdk/sqlite-worker-runtime";
3
- // extensions/imessage/src/chat-db.worker.ts
3
+ //#region extensions/imessage/src/chat-db.worker.ts
4
4
  function appleMessageDateLowerBoundMs(sentAfterMs) {
5
5
  if (typeof sentAfterMs !== "number" || !Number.isFinite(sentAfterMs)) return null;
6
6
  return Math.max(0, Math.floor((sentAfterMs - 9783072e5 - 5e3) * 1e6));
@@ -41,4 +41,5 @@ function openExistingSqliteWorkerBackend(_input, context) {
41
41
  }
42
42
  };
43
43
  }
44
+ //#endregion
44
45
  export { openExistingSqliteWorkerBackend };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/imessage",
3
- "version": "2026.11.1",
3
+ "version": "2026.11.2",
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.11.1"
15
+ "openclaw": ">=2026.11.2"
16
16
  },
17
17
  "peerDependenciesMeta": {
18
18
  "openclaw": {
@@ -92,10 +92,10 @@
92
92
  "allowInvalidConfigRecovery": true
93
93
  },
94
94
  "compat": {
95
- "pluginApi": ">=2026.11.1"
95
+ "pluginApi": ">=2026.11.2"
96
96
  },
97
97
  "build": {
98
- "openclawVersion": "2026.11.1",
98
+ "openclawVersion": "2026.11.2",
99
99
  "bundledDist": false,
100
100
  "workerEntries": [
101
101
  "./src/chat-db.worker.ts"
@@ -1 +0,0 @@
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"]}