@openclaw/imessage 2026.10.10 → 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-CW7XYYF4.mjs → actions-FOjSVXxg.mjs} +63 -13
  3. package/dist/.setup/{actions.runtime-B2ZHQ3TJ.mjs → actions.runtime-Mh1ED1Pq.mjs} +9 -6
  4. package/dist/.setup/{api-B0ih8Iof.mjs → api-BpfhqSA4.mjs} +9 -9
  5. package/dist/.setup/{api-6xi-NBrt.mjs → api-BvfhvRlZ.mjs} +9 -8
  6. package/dist/.setup/{approval-handler.runtime-BKmqba3L.mjs → approval-handler.runtime-Bes82dAn.mjs} +11 -10
  7. package/dist/.setup/{approval-reactions-B9CJS0NT.mjs → approval-reactions-g1TDaSN2.mjs} +12 -9
  8. package/dist/.setup/{channel-6kcKpSRw.mjs → channel-BtDnHgzF.mjs} +34 -23
  9. package/dist/.setup/{channel.runtime-BW4A0m4h.mjs → channel.runtime-BomnjKt2.mjs} +86 -58
  10. package/dist/.setup/{client-C3e7ZLqA.mjs → client-DlNC08mM.mjs} +39 -14
  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-DTj-VH3N.mjs → question-reactions-CgZKeyy3.mjs} +5 -4
  17. package/dist/.setup/{reaction-context-Bw00FkmU.mjs → reaction-context-7yLnHd5m.mjs} +3 -2
  18. package/dist/.setup/{remote-file-CCgMYZ-u.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-D98hQFdv.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
@@ -8,7 +8,7 @@ import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
8
8
  import os from "node:os";
9
9
  import fs from "node:fs/promises";
10
10
  import { normalizeScpRemoteHost } from "openclaw/plugin-sdk/host-runtime";
11
- // extensions/imessage/src/cli-path.ts
11
+ //#region extensions/imessage/src/cli-path.ts
12
12
  const localCliPathCache = /* @__PURE__ */ new Map();
13
13
  const MACH_O_MAGICS = /* @__PURE__ */ new Set([
14
14
  "feedface",
@@ -101,7 +101,8 @@ function resolveLocalIMessageChatDbPath(params) {
101
101
  const configured = params.dbPath?.trim();
102
102
  return configured ? expandIMessageUserPath(configured) : defaultMessagesDbPath();
103
103
  }
104
- // extensions/imessage/src/remote-host.ts
104
+ //#endregion
105
+ //#region extensions/imessage/src/remote-host.ts
105
106
  const ambiguousSshWrapper = Symbol("ambiguous-ssh-wrapper");
106
107
  const detectedRemoteHosts = /* @__PURE__ */ new Map();
107
108
  const remoteHostLookups = /* @__PURE__ */ new Map();
@@ -178,7 +179,8 @@ async function resolveIMessageRemoteHost(params) {
178
179
  remoteHostLookups.set(key, lookup);
179
180
  return await lookup;
180
181
  }
181
- // extensions/imessage/src/accounts.ts
182
+ //#endregion
183
+ //#region extensions/imessage/src/accounts.ts
182
184
  const { listAccountIds, resolveDefaultAccountId, resolveAccountConfig: resolveMergedIMessageAccountConfig } = createAccountListHelpers("imessage", { implicitDefaultAccount: { channelKeys: ["cliPath", "dbPath"] } });
183
185
  const listIMessageAccountIds = listAccountIds;
184
186
  const resolveDefaultIMessageAccountId = resolveDefaultAccountId;
@@ -330,4 +332,5 @@ function collectIMessageDuplicateAccountSourceWarnings(params) {
330
332
  }
331
333
  return warnings;
332
334
  }
335
+ //#endregion
333
336
  export { resolveDefaultIMessageAccountId as a, getCachedIMessageRemoteHost as c, resolveIMessageChatDbLookupPath as d, resolveIMessageHomeDir as f, listIMessageAccountIds as i, resolveIMessageRemoteHost as l, hasExclusiveIMessageLocalDatabase as n, resolveIMessageAccount as o, resolveLocalIMessageChatDbPath as p, listEnabledIMessageAccounts as r, resolveIMessageDuplicateSourceOwner as s, collectIMessageDuplicateAccountSourceWarnings as t, expandIMessageUserPath as u };
@@ -1,8 +1,9 @@
1
- import { c as parseIMessageTarget } from "./targets-CIx4BKqL.mjs";
2
- import { l as resolveIMessageRemoteHost, n as hasExclusiveIMessageLocalDatabase, o as resolveIMessageAccount, u as expandIMessageUserPath } from "./accounts-BH0coL46.mjs";
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";
5
- import { l as isAutoManagedIMessageCliPath, n as IMESSAGE_UPDATE_COMMAND, t as IMESSAGE_INSTALL_COMMAND } from "./setup-core-BWnW0czE.mjs";
1
+ import { c as parseIMessageTarget } from "./targets-B4oU7n-v.mjs";
2
+ import { l as resolveIMessageRemoteHost, n as hasExclusiveIMessageLocalDatabase, o as resolveIMessageAccount, u as expandIMessageUserPath } from "./accounts-DacCvDBt.mjs";
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-B5NfPnFL.mjs";
4
+ import { a as findLatestIMessageEntryForChat, b as chatContextFromIMessageTarget, c as rememberIMessageReplyCache, n as createIMessageRpcClient, o as isIMessageCurrentMessageInChatAsync, r as normalizeIMessageAutomationError } from "./client-DlNC08mM.mjs";
5
+ import { n as getOptionalIMessageRuntime } from "./runtime-Cza4CY5T.mjs";
6
+ import { l as isAutoManagedIMessageCliPath, n as IMESSAGE_UPDATE_COMMAND, t as IMESSAGE_INSTALL_COMMAND } from "./setup-core-BHyLkAEJ.mjs";
6
7
  import { filterStringEntries, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
7
8
  import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
8
9
  import path from "node:path";
@@ -17,7 +18,7 @@ import { runCommandWithTimeout } from "openclaw/plugin-sdk/process-runtime";
17
18
  import { captureRuntimeConfigAsyncReader } from "openclaw/plugin-sdk/runtime-config-snapshot";
18
19
  import { detectBinary } from "openclaw/plugin-sdk/setup";
19
20
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
20
- // extensions/imessage/src/message-action-reference.ts
21
+ //#region extensions/imessage/src/message-action-reference.ts
21
22
  async function resolveAuthorizedIMessageActionReference(params) {
22
23
  const options = {
23
24
  requireKnownShortId: true,
@@ -44,7 +45,8 @@ async function resolveAuthorizedIMessageActionReference(params) {
44
45
  chatGuid
45
46
  };
46
47
  }
47
- // extensions/imessage/src/message-guid.ts
48
+ //#endregion
49
+ //#region extensions/imessage/src/message-guid.ts
48
50
  /** Strip the `p:<n>/` part prefix Messages puts on some GUIDs so keys match. */
49
51
  function normalizeIMessageGuid(value) {
50
52
  return value.trim().replace(/^p:\d+\//iu, "");
@@ -54,7 +56,8 @@ function normalizeIMessageMessageId(value) {
54
56
  const id = value?.trim();
55
57
  return id && id !== "ok" && id !== "unknown" ? id : void 0;
56
58
  }
57
- // extensions/imessage/src/probe.ts
59
+ //#endregion
60
+ //#region extensions/imessage/src/probe.ts
58
61
  const RPC_SUPPORT_CACHE_TTL_MS = 3e5;
59
62
  const PRIVATE_API_NEGATIVE_TTL_MS = 1e4;
60
63
  const rpcSupportCache = /* @__PURE__ */ new Map();
@@ -256,8 +259,53 @@ async function probeIMessage(timeoutMs, opts = {}) {
256
259
  await client.stop();
257
260
  }
258
261
  }
259
- // extensions/imessage/src/actions.ts
260
- const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-B2ZHQ3TJ.mjs"), "imessageActionsRuntime");
262
+ //#endregion
263
+ //#region extensions/imessage/src/send-status.ts
264
+ const SEND_STATUS_CAPABILITY = "imessage-send-status";
265
+ function registerIMessageSendStatus(ctx) {
266
+ return ctx.channelRuntime?.runtimeContexts.register({
267
+ channelId: "imessage",
268
+ accountId: ctx.accountId,
269
+ capability: SEND_STATUS_CAPABILITY,
270
+ context: {
271
+ getStatus: ctx.getStatus,
272
+ setStatus: ctx.setStatus
273
+ },
274
+ abortSignal: ctx.abortSignal
275
+ });
276
+ }
277
+ function getSendStatus(accountId) {
278
+ return getOptionalIMessageRuntime()?.channel.runtimeContexts.get({
279
+ channelId: "imessage",
280
+ accountId,
281
+ capability: SEND_STATUS_CAPABILITY
282
+ });
283
+ }
284
+ function recordIMessageSendFailure(accountId, error) {
285
+ const guidance = error instanceof Error ? normalizeIMessageAutomationError(error.message) : void 0;
286
+ if (guidance) getSendStatus(accountId)?.setStatus({
287
+ accountId,
288
+ lastError: guidance
289
+ });
290
+ }
291
+ async function withIMessageSendFailureStatus(accountId, send) {
292
+ try {
293
+ return await send();
294
+ } catch (error) {
295
+ recordIMessageSendFailure(accountId, error);
296
+ throw error;
297
+ }
298
+ }
299
+ function clearIMessageSendFailure(accountId) {
300
+ const status = getSendStatus(accountId);
301
+ if (status && normalizeIMessageAutomationError(status.getStatus().lastError ?? "")) status.setStatus({
302
+ accountId,
303
+ lastError: null
304
+ });
305
+ }
306
+ //#endregion
307
+ //#region extensions/imessage/src/actions.ts
308
+ const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-Mh1ED1Pq.mjs"), "imessageActionsRuntime");
261
309
  const log = createSubsystemLogger("channels/imessage");
262
310
  const providerId = "imessage";
263
311
  const SUPPORTED_ACTIONS = /* @__PURE__ */ new Set([...IMESSAGE_ACTION_NAMES, "upload-file"]);
@@ -559,6 +607,7 @@ const imessageMessageActions = {
559
607
  timestamp: Date.now(),
560
608
  isFromMe: true
561
609
  });
610
+ if (result.messageId !== "unknown") clearIMessageSendFailure(account.accountId);
562
611
  return jsonResult({
563
612
  ok: true,
564
613
  messageId: result.messageId,
@@ -718,13 +767,13 @@ const imessageMessageActions = {
718
767
  const filename = readStringParam(params, "filename", { required: true });
719
768
  const asVoice = readBooleanParam(params, "asVoice");
720
769
  const resolvedChatGuid = await chatGuid();
721
- return await completeOutboundBridgeMessage(await runtime.sendAttachment({
770
+ return await completeOutboundBridgeMessage(await withIMessageSendFailureStatus(account.accountId, () => runtime.sendAttachment({
722
771
  chatGuid: resolvedChatGuid,
723
772
  buffer: decodeBase64Buffer(params, action),
724
773
  filename,
725
774
  asVoice: asVoice ?? void 0,
726
775
  options: opts
727
- }), resolvedChatGuid);
776
+ })), resolvedChatGuid);
728
777
  }
729
778
  if (action === "poll") {
730
779
  if (privateApiStatus?.selectors?.pollPayloadMessage !== true) await probePrivateApiStatus(true);
@@ -773,4 +822,5 @@ const imessageMessageActions = {
773
822
  throw new Error(`Action ${action} is not supported for provider ${providerId}.`);
774
823
  }
775
824
  };
776
- export { normalizeIMessageMessageId as a, normalizeIMessageGuid as i, probeIMessage as n, probeIMessagePrivateApi as r, imessageMessageActions as t };
825
+ //#endregion
826
+ export { probeIMessage as a, normalizeIMessageMessageId as c, withIMessageSendFailureStatus as i, clearIMessageSendFailure as n, probeIMessagePrivateApi as o, registerIMessageSendStatus as r, normalizeIMessageGuid as s, imessageMessageActions as t };
@@ -1,6 +1,6 @@
1
- import { l as resolveIMessageMessageId, n as createIMessageRpcClient, r as runIMessageCliJsonCommand, x as normalizeDirectChatIdentifier } from "./client-C3e7ZLqA.mjs";
2
- import { n as sanitizeIMessageFinalOutboundText } from "./sanitize-outbound-C02fJrn6.mjs";
3
- import { n as authorizeIMessageResourceReference, t as withIMessageRemoteFile } from "./remote-file-CCgMYZ-u.mjs";
1
+ import { S as normalizeDirectChatIdentifier, i as runIMessageCliJsonCommand, n as createIMessageRpcClient, u as resolveIMessageMessageId } from "./client-DlNC08mM.mjs";
2
+ import { n as sanitizeIMessageFinalOutboundText } from "./sanitize-outbound-BtEY324R.mjs";
3
+ import { n as authorizeIMessageResourceReference, t as withIMessageRemoteFile } from "./remote-file-D8UX85bK.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";
@@ -8,7 +8,7 @@ import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
8
8
  import { captureChannelReadAuthority, captureEffectAuthority } from "openclaw/plugin-sdk/fetch-runtime";
9
9
  import { sanitizeUntrustedFileName } from "openclaw/plugin-sdk/security-runtime";
10
10
  import { resolvePreferredOpenClawTmpDir, withTempWorkspace } from "openclaw/plugin-sdk/temp-path";
11
- // extensions/imessage/src/actions-chat-guid.ts
11
+ //#region extensions/imessage/src/actions-chat-guid.ts
12
12
  const CHAT_LIST_CACHE_TTL_MS = 3e4;
13
13
  const chatListCache = /* @__PURE__ */ new Map();
14
14
  function numberFromUnknown(value) {
@@ -50,7 +50,8 @@ async function resolveIMessageActionChatGuid(params) {
50
50
  await client.stop();
51
51
  }
52
52
  }
53
- // extensions/imessage/src/actions-transport.ts
53
+ //#endregion
54
+ //#region extensions/imessage/src/actions-transport.ts
54
55
  var IMessageRemoteUnsupportedError = class extends Error {
55
56
  constructor(message) {
56
57
  super(message);
@@ -85,7 +86,8 @@ async function runIMessageAction(options, method, params, args) {
85
86
  await client.stop();
86
87
  }
87
88
  }
88
- // extensions/imessage/src/actions.runtime.ts
89
+ //#endregion
90
+ //#region extensions/imessage/src/actions.runtime.ts
89
91
  /**
90
92
  * Messages mints the option UUIDs, so the send response is the only place they
91
93
  * appear before someone votes. Approval bindings key decisions off these ids
@@ -328,4 +330,5 @@ const imessageActionsRuntime = {
328
330
  });
329
331
  }
330
332
  };
333
+ //#endregion
331
334
  export { imessageActionsRuntime };
@@ -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 "./targets-CIx4BKqL.mjs";
2
- import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, r as listEnabledIMessageAccounts } from "./accounts-BH0coL46.mjs";
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";
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";
9
- import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./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 "./targets-B4oU7n-v.mjs";
2
+ import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, r as listEnabledIMessageAccounts } from "./accounts-DacCvDBt.mjs";
3
+ import { o as IMESSAGE_ACTIONS, s as IMESSAGE_ACTION_NAMES } from "./message-tool-api-B5NfPnFL.mjs";
4
+ import { v as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./client-DlNC08mM.mjs";
5
+ import { a as probeIMessage } from "./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 "./channel-BtDnHgzF.mjs";
7
+ import { n as createIMessageConversationBindingManagerV2, t as createIMessageConversationBindingManager } from "./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 "./api-BvfhvRlZ.mjs";
9
+ import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./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,14 +1,15 @@
1
- import "./targets-CIx4BKqL.mjs";
2
- import "./accounts-BH0coL46.mjs";
3
- import "./message-tool-api-CxSY_rh7.mjs";
4
- import "./actions-CW7XYYF4.mjs";
5
- import { s as imessageSetupContract } from "./setup-core-BWnW0czE.mjs";
6
- import { n as createIMessagePluginBase, r as imessageSetupWizard } from "./channel-6kcKpSRw.mjs";
7
- import "./conversation-bindings-vZFn6sN2.mjs";
1
+ import "./targets-B4oU7n-v.mjs";
2
+ import "./accounts-DacCvDBt.mjs";
3
+ import "./message-tool-api-B5NfPnFL.mjs";
4
+ import "./actions-FOjSVXxg.mjs";
5
+ import { s as imessageSetupContract } from "./setup-core-BHyLkAEJ.mjs";
6
+ import { n as createIMessagePluginBase, r as imessageSetupWizard } from "./channel-BtDnHgzF.mjs";
7
+ import "./conversation-bindings-DR-dbHjs.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
- // extensions/imessage/src/channel.setup.ts
9
+ //#region extensions/imessage/src/channel.setup.ts
10
10
  const imessageSetupPlugin = createIMessagePluginBase({
11
11
  setupWizard: imessageSetupWizard,
12
12
  setupContract: imessageSetupContract
13
13
  });
14
+ //#endregion
14
15
  export { resolveServicePrefixedChatTarget$1 as a, imessageSetupPlugin as c, resolveServicePrefixedAllowTarget as i, parseChatAllowTargetPrefixes as n, resolveServicePrefixedOrChatAllowTarget$1 as o, parseChatTargetPrefixesOrThrow$1 as r, resolveServicePrefixedTarget as s, createAllowedChatSenderMatcher$1 as t };
@@ -1,11 +1,11 @@
1
- import { c as parseIMessageTarget, d as normalizeIMessageMessagingTarget } from "./targets-CIx4BKqL.mjs";
2
- import { o as resolveIMessageAccount } from "./accounts-BH0coL46.mjs";
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";
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";
1
+ import { c as parseIMessageTarget, d as normalizeIMessageMessagingTarget } from "./targets-B4oU7n-v.mjs";
2
+ import { o as resolveIMessageAccount } from "./accounts-DacCvDBt.mjs";
3
+ import { n as getCachedIMessagePrivateApiStatus } from "./message-tool-api-B5NfPnFL.mjs";
4
+ import { c as normalizeIMessageMessageId } from "./actions-FOjSVXxg.mjs";
5
+ import { d as getIMessageApprovalApprovers } from "./channel-BtDnHgzF.mjs";
6
+ import { i as extractMarkdownFormatRuns } from "./sanitize-outbound-BtEY324R.mjs";
7
+ import { a as unregisterIMessageApprovalReactionTarget, c as buildIMessageApprovalConversationKeyForTarget, i as registerIMessageApprovalReactionTarget } from "./approval-reactions-g1TDaSN2.mjs";
8
+ import { a as iMessageApprovalPollTargets, i as buildApprovalPollOptions, o as mapSentPollOptionsToDecisions, t as sendMessageIMessage } from "./send-D44ovNNq.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";
@@ -13,9 +13,9 @@ import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approva
13
13
  import { buildApprovalNativeControlsPromptText, buildApprovalReactionPendingContent } from "openclaw/plugin-sdk/approval-reaction-runtime";
14
14
  import { setTimeout } from "node:timers/promises";
15
15
  import { buildChannelApprovalExpiredText, buildChannelApprovalResolvedText, createChannelApprovalNativeRuntimeAdapterAsync, resolvePreparedApprovalAccountId } from "openclaw/plugin-sdk/approval-handler-runtime";
16
- // extensions/imessage/src/approval-handler.runtime.ts
16
+ //#region 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-Mh1ED1Pq.mjs"), "imessageActionsRuntime");
19
19
  const DEFAULT_PROBE_TIMEOUT_MS = 5e3;
20
20
  const APPROVAL_POLL_ORDERING_DELAY_MS = 1100;
21
21
  function classifyIMessageApprovalTargetTransport(params) {
@@ -363,4 +363,5 @@ const imessageApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapterA
363
363
  log.error(`imessage approvals: failed to send request ${request.id}: ${String(error)}`);
364
364
  } }
365
365
  });
366
+ //#endregion
366
367
  export { imessageApprovalNativeRuntime };
@@ -1,15 +1,15 @@
1
- import { t as __exportAll } from "./rolldown-runtime-782esTHO.mjs";
2
- import { c as parseIMessageTarget, o as normalizeIMessageHandle } from "./targets-CIx4BKqL.mjs";
3
- import { i as normalizeIMessageGuid } from "./actions-CW7XYYF4.mjs";
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";
1
+ import { t as __exportAll } from "./rolldown-runtime-BBjsoOtd.mjs";
2
+ import { c as parseIMessageTarget, o as normalizeIMessageHandle } from "./targets-B4oU7n-v.mjs";
3
+ import { s as normalizeIMessageGuid } from "./actions-FOjSVXxg.mjs";
4
+ import { n as getOptionalIMessageRuntime } from "./runtime-Cza4CY5T.mjs";
5
+ import { d as getIMessageApprovalApprovers, f as imessageApprovalAuth } from "./channel-BtDnHgzF.mjs";
6
+ import { t as resolveIMessageReactionContext } from "./reaction-context-7yLnHd5m.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";
10
10
  import { addApprovalReactionHintToText, approvalReactionDecisionSetsMatch, buildApprovalReactionDeliveredBindingMarker, buildApprovalReactionHint, createApprovalReactionTargetStore, listApprovalReactionBindings, normalizeApprovalReactionDecision, readApprovalReactionDecisionList, readApprovalReactionDeliveredBinding, readApprovalReactionPresentationBinding, readApprovalReactionTargetRecord, resolveTypedApprovalReactionTarget, settleApprovalReaction } from "openclaw/plugin-sdk/approval-reaction-runtime";
11
11
  import { createPluginStateErrorReporter } from "openclaw/plugin-sdk/plugin-state-runtime";
12
- // extensions/imessage/src/approval-target-keys.ts
12
+ //#region extensions/imessage/src/approval-target-keys.ts
13
13
  function chatIdToKeyValue(chatId) {
14
14
  if (chatId == null || chatId === "") return null;
15
15
  if (typeof chatId === "number") return Number.isFinite(chatId) && chatId > 0 ? String(chatId) : null;
@@ -69,7 +69,8 @@ function resolveIMessageApprovalControlActor(message) {
69
69
  const destination = normalizeIMessageHandle(message.destination_caller_id ?? "");
70
70
  return (message.is_from_me !== true && Boolean(sender) && sender === destination ? "" : sender) || (message.is_from_me === true ? destination : "");
71
71
  }
72
- // extensions/imessage/src/approval-reaction-poll-targets.ts
72
+ //#endregion
73
+ //#region extensions/imessage/src/approval-reaction-poll-targets.ts
73
74
  const PERSISTENT_POLL_TARGET_NAMESPACE = "imessage.approval-reaction-poll-targets";
74
75
  const PERSISTENT_MAX_ENTRIES$1 = 1e3;
75
76
  const DEFAULT_REACTION_TARGET_TTL_MS$1 = 864e5;
@@ -209,7 +210,8 @@ function clearIMessageApprovalReactionPollTargetsForTest() {
209
210
  pendingReactionPollTargets.clear();
210
211
  pendingReactionPollTargetStore = void 0;
211
212
  }
212
- // extensions/imessage/src/approval-reactions.ts
213
+ //#endregion
214
+ //#region extensions/imessage/src/approval-reactions.ts
213
215
  var approval_reactions_exports = /* @__PURE__ */ __exportAll({
214
216
  addIMessageApprovalReactionHintToStructuredPayload: () => addIMessageApprovalReactionHintToStructuredPayload,
215
217
  buildIMessageApprovalConversationKeyForTarget: () => buildIMessageApprovalConversationKeyForTarget,
@@ -507,4 +509,5 @@ function clearIMessageApprovalReactionTargetsForTest() {
507
509
  clearIMessageApprovalReactionPollTargetsForTest();
508
510
  loadResolveApprovalOverGateway.clear();
509
511
  }
512
+ //#endregion
510
513
  export { unregisterIMessageApprovalReactionTarget as a, buildIMessageApprovalConversationKeyForTarget as c, resolveIMessageApprovalControlActor as d, registerIMessageApprovalReactionTarget as i, enumerateApprovalTargetKeys as l, handleIMessageApprovalReaction as n, listPendingIMessageApprovalReactionPollTargets as o, maybeResolveIMessageApprovalReaction as r, buildIMessageApprovalConversationKeyForInbound as s, approval_reactions_exports as t, normalizeConversationKey as u };
@@ -1,12 +1,12 @@
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
- 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";
5
- import { i as createIMessageSetupWizardProxy, s as imessageSetupContract } from "./setup-core-BWnW0czE.mjs";
6
- import { n as createIMessageConversationBindingManagerV2 } from "./conversation-bindings-vZFn6sN2.mjs";
7
- import { n as sanitizeIMessageFinalOutboundText, r as sanitizeOutboundText } from "./sanitize-outbound-C02fJrn6.mjs";
8
- import { t as IMessageChannelConfigSchema } from "./config-schema-DRkdRC21.mjs";
9
- import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots } from "./media-contract-CoixpXRX.mjs";
1
+ import { a as looksLikeIMessageExplicitTargetId, c as parseIMessageTarget, d as normalizeIMessageMessagingTarget, f as isIMessagePhoneLikeHandle, n as inferIMessageTargetChatType, o as normalizeIMessageHandle } from "./targets-B4oU7n-v.mjs";
2
+ import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, t as collectIMessageDuplicateAccountSourceWarnings } from "./accounts-DacCvDBt.mjs";
3
+ import { C as resolveIMessageDirectChatService } from "./client-DlNC08mM.mjs";
4
+ import { r as registerIMessageSendStatus, t as imessageMessageActions } from "./actions-FOjSVXxg.mjs";
5
+ import { i as createIMessageSetupWizardProxy, s as imessageSetupContract } from "./setup-core-BHyLkAEJ.mjs";
6
+ import { n as createIMessageConversationBindingManagerV2 } from "./conversation-bindings-DR-dbHjs.mjs";
7
+ import { n as sanitizeIMessageFinalOutboundText, r as sanitizeOutboundText } from "./sanitize-outbound-BtEY324R.mjs";
8
+ import { t as IMessageChannelConfigSchema } from "./config-schema-DXwa_3V5.mjs";
9
+ import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots } from "./media-contract-BwWs5PM7.mjs";
10
10
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
11
11
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
12
12
  import { buildDmGroupAccountAllowlistAdapter } from "openclaw/plugin-sdk/allowlist-config-edit";
@@ -30,7 +30,7 @@ import { getExecApprovalReplyMetadata, resolveExecApprovalCommandDisplay, resolv
30
30
  import { createChannelApprovalAuth } from "openclaw/plugin-sdk/approval-auth-runtime";
31
31
  import { buildChannelGroupsScopeTree, createRestrictSendersChannelSecurity, resolveScopeRequireMention, resolveScopeToolsPolicy } from "openclaw/plugin-sdk/channel-policy";
32
32
  import { createChannelPluginBase, getChatChannelMeta } from "openclaw/plugin-sdk/core";
33
- // extensions/imessage/src/approval-auth.ts
33
+ //#region extensions/imessage/src/approval-auth.ts
34
34
  function normalizeIMessageApproverId(value) {
35
35
  const normalized = normalizeIMessageHandle(String(value));
36
36
  if (!normalized || normalized.startsWith("chat_id:") || normalized.startsWith("chat_guid:") || normalized.startsWith("chat_identifier:")) return;
@@ -53,11 +53,13 @@ const imessageApproval$1 = createChannelApprovalAuth({
53
53
  });
54
54
  const getIMessageApprovalApprovers = imessageApproval$1.resolveApprovers;
55
55
  const imessageApprovalAuth = imessageApproval$1.approvalAuth;
56
- // extensions/imessage/src/approval-text.ts
56
+ //#endregion
57
+ //#region extensions/imessage/src/approval-text.ts
57
58
  function replaceApprovalIdPlaceholder(text, approvalId) {
58
59
  return (text ?? "").replace(/\/approve\s+<id>/g, () => `/approve ${approvalId}`);
59
60
  }
60
- // extensions/imessage/src/approval-native.ts
61
+ //#endregion
62
+ //#region extensions/imessage/src/approval-native.ts
61
63
  const DEFAULT_PLUGIN_APPROVAL_DECISIONS = [
62
64
  "allow-once",
63
65
  "allow-always",
@@ -116,7 +118,7 @@ const imessageApproval = createApproverRestrictedNativeApprovalCapabilityFromFor
116
118
  approvalKind,
117
119
  request
118
120
  }),
119
- load: async () => (await import("./approval-handler.runtime-BKmqba3L.mjs")).imessageApprovalNativeRuntime
121
+ load: async () => (await import("./approval-handler.runtime-Bes82dAn.mjs")).imessageApprovalNativeRuntime
120
122
  })
121
123
  });
122
124
  const imessageApprovalRouting = imessageApproval.routing;
@@ -215,7 +217,8 @@ function buildIMessagePluginPendingPayload(params) {
215
217
  };
216
218
  }
217
219
  const imessageApprovalCapability = imessageApproval.capability;
218
- // extensions/imessage/src/conversation-id-core.ts
220
+ //#endregion
221
+ //#region extensions/imessage/src/conversation-id-core.ts
219
222
  function normalizeIMessageAcpConversationId(conversationId) {
220
223
  const trimmed = conversationId.trim();
221
224
  if (!trimmed) return null;
@@ -246,17 +249,20 @@ function matchIMessageAcpConversation(params) {
246
249
  function resolveIMessageConversationIdFromTarget(target) {
247
250
  return normalizeIMessageAcpConversationId(target)?.conversationId;
248
251
  }
249
- // extensions/imessage/src/conversation-id.ts
252
+ //#endregion
253
+ //#region extensions/imessage/src/conversation-id.ts
250
254
  function resolveIMessageInboundConversationId(params) {
251
255
  if (params.isGroup) return params.chatId != null && Number.isFinite(params.chatId) ? String(params.chatId) : void 0;
252
256
  return normalizeIMessageHandle(params.sender) || void 0;
253
257
  }
254
- // extensions/imessage/src/doctor.ts
258
+ //#endregion
259
+ //#region extensions/imessage/src/doctor.ts
255
260
  const imessageDoctor = {
256
261
  groupAllowFromFallbackToAllowFrom: false,
257
262
  collectPreviewWarnings: ({ cfg }) => collectIMessageDuplicateAccountSourceWarnings({ cfg })
258
263
  };
259
- // extensions/imessage/src/group-policy.ts
264
+ //#endregion
265
+ //#region extensions/imessage/src/group-policy.ts
260
266
  function resolveScopePath(params) {
261
267
  return params.groupId ? [params.groupId] : [];
262
268
  }
@@ -278,9 +284,10 @@ function resolveIMessageGroupSystemPrompt(params) {
278
284
  const prompt = params.groupConfig?.systemPrompt ?? params.defaultConfig?.systemPrompt;
279
285
  return typeof prompt === "string" ? prompt.trim() || void 0 : void 0;
280
286
  }
281
- // extensions/imessage/src/shared.ts
287
+ //#endregion
288
+ //#region extensions/imessage/src/shared.ts
282
289
  const IMESSAGE_CHANNEL = "imessage";
283
- const imessageSetupWizard = createIMessageSetupWizardProxy(async () => (await import("./setup-surface-aRZhAzzQ.mjs")).imessageSetupWizard);
290
+ const imessageSetupWizard = createIMessageSetupWizardProxy(async () => (await import("./setup-surface-DPqiLGy0.mjs")).imessageSetupWizard);
284
291
  const imessageConfigAdapter = createScopedChannelConfigAdapter({
285
292
  sectionKey: IMESSAGE_CHANNEL,
286
293
  listAccountIds: listIMessageAccountIds,
@@ -362,8 +369,9 @@ function createIMessagePluginBase(params) {
362
369
  }
363
370
  };
364
371
  }
365
- // extensions/imessage/src/channel.ts
366
- const loadIMessageChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-BW4A0m4h.mjs"));
372
+ //#endregion
373
+ //#region extensions/imessage/src/channel.ts
374
+ const loadIMessageChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-BomnjKt2.mjs"));
367
375
  async function sendIMessageOutbound(ctx, kind, options = {}) {
368
376
  return await (await loadIMessageChannelRuntime()).sendIMessageOutbound({
369
377
  cfg: ctx.cfg,
@@ -399,8 +407,8 @@ function toIMessageMessageSendResult(result, kind, replyToId) {
399
407
  ...result.meta && Object.keys(result.meta).length > 0 ? { meta: result.meta } : {}
400
408
  };
401
409
  }
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));
410
+ const loadIMessageApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-g1TDaSN2.mjs").then((n) => n.t));
411
+ const loadIMessageQuestionReactionsModule = createLazyRuntimeModule(() => import("./question-reactions-CgZKeyy3.mjs").then((n) => n.r));
404
412
  const imessageMessageAdapter = defineChannelMessageAdapter({
405
413
  id: "imessage",
406
414
  durableFinal: { capabilities: {
@@ -573,9 +581,11 @@ const imessagePlugin = createChatChannelPlugin({
573
581
  cfg: ctx.cfg,
574
582
  accountId: ctx.accountId
575
583
  });
584
+ const sendStatus = registerIMessageSendStatus(ctx);
576
585
  try {
577
586
  return await (await loadIMessageChannelRuntime()).startIMessageGatewayAccount(ctx);
578
587
  } finally {
588
+ sendStatus?.dispose();
579
589
  conversationBindings.stop();
580
590
  }
581
591
  }
@@ -667,4 +677,5 @@ const imessagePlugin = createChatChannelPlugin({
667
677
  }
668
678
  }
669
679
  });
680
+ //#endregion
670
681
  export { resolveIMessageGroupSystemPrompt as a, matchIMessageAcpConversation as c, getIMessageApprovalApprovers as d, imessageApprovalAuth as f, resolveIMessageGroupRequireMention as i, normalizeIMessageAcpConversationId as l, createIMessagePluginBase as n, resolveIMessageGroupToolPolicy as o, imessageSetupWizard as r, resolveIMessageInboundConversationId as s, imessagePlugin as t, resolveIMessageConversationIdFromTarget as u };