@openclaw/imessage 2026.10.10-beta.5 → 2026.11.5-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/.setup/{accounts-DacCvDBt.mjs → accounts-C1Ypv3Wn.mjs} +9 -13
  2. package/dist/.setup/{actions-762Azi-J.mjs → actions-qOuKy8To.mjs} +364 -116
  3. package/dist/.setup/{actions.runtime-DHiRiPHe.mjs → actions.runtime-Ccg9CARL.mjs} +12 -61
  4. package/dist/.setup/{api-Deyo8NDs.mjs → api-BXXuQQCS.mjs} +8 -9
  5. package/dist/.setup/{api-BFGXDHiC.mjs → api-DTbxSOPc.mjs} +9 -9
  6. package/dist/.setup/{approval-handler.runtime-fsSBf2jf.mjs → approval-handler.runtime-B6vrFfZx.mjs} +113 -133
  7. package/dist/.setup/{approval-reactions-CoAkCiwf.mjs → approval-reactions-DBBsqbRC.mjs} +156 -79
  8. package/dist/.setup/{channel-C61YdcZR.mjs → channel-CLaN4mQn.mjs} +151 -137
  9. package/dist/.setup/{channel.runtime-B5jle0g3.mjs → channel.runtime-XJGx1MIH.mjs} +236 -425
  10. package/dist/.setup/chat-context-fTfJVqAi.mjs +77 -0
  11. package/dist/.setup/chat-lookup-xtPsOBkl.mjs +50 -0
  12. package/dist/.setup/client-D_BaG8sC.mjs +367 -0
  13. package/dist/.setup/{config-schema-DXwa_3V5.mjs → config-schema-BjkQV5P5.mjs} +1 -4
  14. package/dist/.setup/{conversation-bindings-DR-dbHjs.mjs → conversation-bindings-8DjxoIYU.mjs} +10 -8
  15. package/dist/.setup/{media-contract-BwWs5PM7.mjs → media-contract-BErFBKV9.mjs} +2 -3
  16. package/dist/.setup/{message-tool-api-B5NfPnFL.mjs → message-tool-api-DtZ1wKbT.mjs} +6 -12
  17. package/dist/.setup/{outbound-send-deps-B-QEsLSM.mjs → outbound-send-deps-_da8jqeo.mjs} +1 -2
  18. package/dist/.setup/{remote-file-B94a787O.mjs → remote-file-DpK3GQFD.mjs} +12 -30
  19. package/dist/.setup/{rolldown-runtime-BBjsoOtd.mjs → rolldown-runtime-782esTHO.mjs} +1 -2
  20. package/dist/.setup/{sanitize-outbound-BtEY324R.mjs → sanitize-outbound-Dhjhz0a-.mjs} +25 -31
  21. package/dist/.setup/{send-BvxKNWzF.mjs → send-DhEW0gfe.mjs} +155 -236
  22. package/dist/.setup/{setup-core-BHyLkAEJ.mjs → setup-core-B1_P_t4T.mjs} +3 -4
  23. package/dist/.setup/{setup-surface-DPqiLGy0.mjs → setup-surface-CD28mXWK.mjs} +13 -29
  24. package/dist/.setup/{targets-B4oU7n-v.mjs → targets-C7CIWJ0k.mjs} +15 -9
  25. package/dist/.source-module-urls/929c518fa2986b0f85f66bceefead22868db0ab452dee914dc6a2bb86b2e60ad.json +1 -1
  26. package/dist/api.js +9 -9
  27. package/dist/channel-config-api.js +1 -1
  28. package/dist/channel-plugin-api.js +1 -1
  29. package/dist/contract-api.js +1 -1
  30. package/dist/doctor-contract-api.js +7 -13
  31. package/dist/index.js +1 -2
  32. package/dist/media-contract-api.js +1 -1
  33. package/dist/message-tool-api.js +1 -1
  34. package/dist/runtime-api.js +1 -3
  35. package/dist/secret-contract-api.js +1 -2
  36. package/dist/session-binding-contract-api.js +1 -1
  37. package/dist/setup-entry.js +2 -3
  38. package/dist/src/chat-db.worker.js +2 -3
  39. package/node_modules/typebox/build/format/duration.d.mts +2 -2
  40. package/node_modules/typebox/build/format/duration.mjs +2 -2
  41. package/node_modules/typebox/build/format/idn_email.d.mts +1 -0
  42. package/node_modules/typebox/build/format/idn_email.mjs +1 -0
  43. package/node_modules/typebox/build/format/idn_hostname.d.mts +1 -1
  44. package/node_modules/typebox/build/format/idn_hostname.mjs +1 -1
  45. package/node_modules/typebox/build/format/ipv4.d.mts +2 -2
  46. package/node_modules/typebox/build/format/ipv4.mjs +2 -2
  47. package/node_modules/typebox/build/format/ipv6.d.mts +1 -1
  48. package/node_modules/typebox/build/format/ipv6.mjs +1 -1
  49. package/node_modules/typebox/build/format/relative_json_pointer.d.mts +2 -2
  50. package/node_modules/typebox/build/format/relative_json_pointer.mjs +2 -2
  51. package/node_modules/typebox/build/schema/build.mjs +1 -0
  52. package/node_modules/typebox/build/schema/engine/_unique.d.mts +4 -2
  53. package/node_modules/typebox/build/schema/engine/_unique.mjs +7 -3
  54. package/node_modules/typebox/build/schema/engine/additionalItems.mjs +3 -3
  55. package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +0 -3
  56. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +15 -17
  57. package/node_modules/typebox/build/schema/engine/contains.mjs +3 -3
  58. package/node_modules/typebox/build/schema/engine/index.d.mts +1 -0
  59. package/node_modules/typebox/build/schema/engine/index.mjs +1 -0
  60. package/node_modules/typebox/build/schema/engine/items.mjs +7 -4
  61. package/node_modules/typebox/build/schema/engine/maxContains.mjs +2 -2
  62. package/node_modules/typebox/build/schema/engine/minContains.mjs +3 -3
  63. package/node_modules/typebox/build/schema/engine/oneOf.mjs +2 -2
  64. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +2 -2
  65. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -2
  66. package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +2 -2
  67. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +2 -2
  68. package/node_modules/typebox/build/system/hashing/hash.mjs +63 -34
  69. package/node_modules/typebox/build/system/locale/en_US.mjs +2 -1
  70. package/node_modules/typebox/build/system/memory/assign.d.mts +2 -8
  71. package/node_modules/typebox/build/system/memory/assign.mjs +13 -6
  72. package/node_modules/typebox/build/system/memory/clone.d.mts +4 -5
  73. package/node_modules/typebox/build/system/memory/clone.mjs +8 -96
  74. package/node_modules/typebox/build/system/memory/create.d.mts +1 -5
  75. package/node_modules/typebox/build/system/memory/create.mjs +18 -13
  76. package/node_modules/typebox/build/system/memory/deep.d.mts +2 -0
  77. package/node_modules/typebox/build/system/memory/deep.mjs +108 -0
  78. package/node_modules/typebox/build/system/memory/discard.d.mts +1 -1
  79. package/node_modules/typebox/build/system/memory/discard.mjs +9 -8
  80. package/node_modules/typebox/build/system/memory/finalize.d.mts +4 -0
  81. package/node_modules/typebox/build/system/memory/finalize.mjs +30 -0
  82. package/node_modules/typebox/build/system/memory/keys.d.mts +2 -0
  83. package/node_modules/typebox/build/system/memory/keys.mjs +8 -0
  84. package/node_modules/typebox/build/system/memory/update.d.mts +1 -4
  85. package/node_modules/typebox/build/system/memory/update.mjs +43 -16
  86. package/node_modules/typebox/build/type/engine/call/index.d.mts +1 -0
  87. package/node_modules/typebox/build/type/engine/call/index.mjs +1 -0
  88. package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +2 -24
  89. package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +2 -29
  90. package/node_modules/typebox/build/type/engine/evaluate/index.d.mts +1 -0
  91. package/node_modules/typebox/build/type/engine/evaluate/index.mjs +1 -0
  92. package/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +5 -1
  93. package/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +6 -1
  94. package/node_modules/typebox/build/type/engine/evaluate/property.d.mts +30 -0
  95. package/node_modules/typebox/build/type/engine/evaluate/property.mjs +29 -0
  96. package/node_modules/typebox/build/type/engine/immutable/instantiate_add.d.mts +1 -3
  97. package/node_modules/typebox/build/type/engine/immutable/instantiate_add.mjs +1 -4
  98. package/node_modules/typebox/build/type/engine/object/from_intersect.d.mts +2 -2
  99. package/node_modules/typebox/build/type/engine/object/from_intersect.mjs +2 -2
  100. package/node_modules/typebox/build/type/engine/object/from_union.d.mts +2 -2
  101. package/node_modules/typebox/build/type/engine/object/from_union.mjs +2 -2
  102. package/node_modules/typebox/build/type/engine/optional/instantiate_add.d.mts +1 -3
  103. package/node_modules/typebox/build/type/engine/optional/instantiate_add.mjs +1 -4
  104. package/node_modules/typebox/build/type/engine/readonly/instantiate_add.d.mts +1 -3
  105. package/node_modules/typebox/build/type/engine/readonly/instantiate_add.mjs +1 -4
  106. package/node_modules/typebox/build/type/engine/this/index.d.mts +1 -0
  107. package/node_modules/typebox/build/type/engine/this/index.mjs +1 -0
  108. package/node_modules/typebox/build/value/clone/clone.d.mts +4 -3
  109. package/node_modules/typebox/build/value/clone/clone.mjs +5 -7
  110. package/node_modules/typebox/build/value/repair/from_cyclic.d.mts +2 -0
  111. package/node_modules/typebox/build/value/repair/from_cyclic.mjs +6 -0
  112. package/node_modules/typebox/build/value/shared/union_priority_sort.mjs +25 -14
  113. package/node_modules/typebox/package.json +1 -1
  114. package/node_modules/typebox/readme.md +1 -1
  115. package/node_modules/zod/package.json +1 -1
  116. package/node_modules/zod/src/v4/classic/tests/array.test.ts +27 -0
  117. package/node_modules/zod/src/v4/classic/tests/map.test.ts +7 -0
  118. package/node_modules/zod/src/v4/classic/tests/set.test.ts +6 -0
  119. package/node_modules/zod/src/v4/core/compile.ts +9 -0
  120. package/node_modules/zod/src/v4/core/schemas.ts +35 -1
  121. package/node_modules/zod/src/v4/core/util.ts +13 -0
  122. package/node_modules/zod/src/v4/core/versions.ts +1 -1
  123. package/node_modules/zod/v4/core/compile.cjs +8 -0
  124. package/node_modules/zod/v4/core/compile.js +8 -0
  125. package/node_modules/zod/v4/core/schemas.cjs +30 -0
  126. package/node_modules/zod/v4/core/schemas.d.cts +3 -1
  127. package/node_modules/zod/v4/core/schemas.d.ts +3 -1
  128. package/node_modules/zod/v4/core/schemas.js +30 -0
  129. package/node_modules/zod/v4/core/util.cjs +15 -0
  130. package/node_modules/zod/v4/core/util.d.cts +2 -0
  131. package/node_modules/zod/v4/core/util.d.ts +2 -0
  132. package/node_modules/zod/v4/core/util.js +14 -0
  133. package/node_modules/zod/v4/core/versions.cjs +1 -1
  134. package/node_modules/zod/v4/core/versions.js +1 -1
  135. package/openclaw.plugin.json +0 -30
  136. package/package.json +6 -6
  137. package/dist/.setup/client-CcROCvRq.mjs +0 -746
  138. package/dist/.setup/question-reactions-BD06B1Lx.mjs +0 -68
  139. package/dist/.setup/reaction-context-Q26DYzQH.mjs +0 -106
  140. package/dist/.setup/runtime-Cza4CY5T.mjs +0 -8
  141. package/node_modules/typebox/build/system/memory/freeze.d.mts +0 -4
  142. package/node_modules/typebox/build/system/memory/freeze.mjs +0 -6
@@ -1,25 +1,18 @@
1
- import { p as resolveLocalIMessageChatDbPath } from "./accounts-DacCvDBt.mjs";
2
- import { b as isIMessageEmailChatIdentifier, c as resolveIMessageCachedResourceBinding, l as resolveIMessageMessageId, y as chatContextFromIMessageTarget } from "./client-CcROCvRq.mjs";
1
+ import { p as resolveLocalIMessageChatDbPath } from "./accounts-C1Ypv3Wn.mjs";
2
+ import { n as isIMessageEmailChatIdentifier, t as chatContextFromIMessageTarget } from "./chat-context-fTfJVqAi.mjs";
3
+ import { o as resolveIMessageCachedResourceBinding, s as resolveIMessageMessageId } from "./actions-qOuKy8To.mjs";
3
4
  import path from "node:path";
4
5
  import { normalizeScpRemoteHost } from "openclaw/plugin-sdk/host-runtime";
5
6
  import { createActionGate } from "openclaw/plugin-sdk/channel-actions";
6
7
  import { createSubsystemLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
7
8
  import { randomUUID } from "node:crypto";
8
- import { resolveRuntimeWorkerUrl, runCommandWithTimeout } from "openclaw/plugin-sdk/process-runtime";
9
+ import { createPluginRuntimeProcessEntrypoint, resolveRuntimeWorkerUrl, runCommandWithTimeout } from "openclaw/plugin-sdk/process-runtime";
9
10
  import { sanitizeTempFileName } from "openclaw/plugin-sdk/temp-path";
10
11
  import { openSqliteWorkerStore } from "openclaw/plugin-sdk/sqlite-runtime";
11
- //#region extensions/imessage/src/chat-db.ts
12
+ // extensions/imessage/src/chat-db.ts
12
13
  function openIMessageChatDbReader(databasePath) {
13
14
  return openSqliteWorkerStore({
14
- moduleUrl: resolveRuntimeWorkerUrl({
15
- currentModuleUrl: import.meta.url,
16
- sourceWorkerName: "chat-db.worker",
17
- distWorkerPath: "extensions/imessage/src/chat-db.worker.js",
18
- package: {
19
- name: "@openclaw/imessage",
20
- distWorkerPath: "src/chat-db.worker.js"
21
- }
22
- }),
15
+ moduleUrl: resolveRuntimeWorkerUrl(createPluginRuntimeProcessEntrypoint("iMessageChatDb", import.meta.url)),
23
16
  databasePath,
24
17
  existingOnly: true,
25
18
  input: void 0
@@ -62,8 +55,7 @@ async function withIMessageReceiptGuidReader(databasePath, use) {
62
55
  } catch {}
63
56
  }
64
57
  }
65
- //#endregion
66
- //#region extensions/imessage/src/message-resource-db.ts
58
+ // extensions/imessage/src/message-resource-db.ts
67
59
  function normalizeIMessageMessageGuidForLookup(messageId) {
68
60
  const trimmed = messageId.trim();
69
61
  const slash = trimmed.lastIndexOf("/");
@@ -135,8 +127,7 @@ async function checkIMessageResourceBinding(params) {
135
127
  } catch {}
136
128
  }
137
129
  }
138
- //#endregion
139
- //#region extensions/imessage/src/message-resource.ts
130
+ // extensions/imessage/src/message-resource.ts
140
131
  const MAX_REPLY_TO_ID_LENGTH = 256;
141
132
  function sanitizeReplyToId(rawReplyToId) {
142
133
  const trimmed = rawReplyToId?.trim();
@@ -154,10 +145,7 @@ async function resolveAuthorizedIMessageReplyReference(params) {
154
145
  const rawReplyToId = sanitizeReplyToId(params.replyToId);
155
146
  if (!rawReplyToId) return;
156
147
  const chatContext = chatContextFromIMessageTarget(params.target, params.service);
157
- const messageId = await resolveIMessageMessageId(rawReplyToId, {
158
- requireKnownShortId: true,
159
- chatContext
160
- });
148
+ const messageId = await resolveIMessageMessageId(rawReplyToId, { chatContext });
161
149
  await authorizeIMessageResourceReference({
162
150
  accountId: params.account.accountId,
163
151
  chatContext,
@@ -186,8 +174,7 @@ async function authorizeIMessageResourceReference(params) {
186
174
  if (params.conversationReadOrigin === "direct-operator") return;
187
175
  throw new Error("Delegated iMessage message references require a current same-account conversation binding when the Messages database is unavailable.");
188
176
  }
189
- //#endregion
190
- //#region extensions/imessage/src/remote-file.ts
177
+ // extensions/imessage/src/remote-file.ts
191
178
  const SSH_OPTIONS = [
192
179
  "-o",
193
180
  "BatchMode=yes",
@@ -248,8 +235,7 @@ rm -rf -- ${remoteDir}
248
235
  "sh -s"
249
236
  ], {
250
237
  input: createScript,
251
- timeoutMs: params.timeoutMs,
252
- signal: params.signal
238
+ timeoutMs: params.timeoutMs
253
239
  });
254
240
  params.assertDirectAdapterHandoff?.();
255
241
  await runChecked("iMessage remote file upload", [
@@ -258,10 +244,7 @@ rm -rf -- ${remoteDir}
258
244
  "--",
259
245
  params.localPath,
260
246
  `${remoteHost}:${remotePath}`
261
- ], {
262
- timeoutMs: params.timeoutMs,
263
- signal: params.signal
264
- });
247
+ ], { timeoutMs: params.timeoutMs });
265
248
  params.assertDirectAdapterHandoff?.();
266
249
  return await params.use(remotePath);
267
250
  } finally {
@@ -283,5 +266,4 @@ rm -rf -- ${remoteDir}
283
266
  }
284
267
  }
285
268
  }
286
- //#endregion
287
269
  export { withIMessageReceiptGuidReader as a, resolveIMessageStartupRowidWatermark as i, authorizeIMessageResourceReference as n, resolveAuthorizedIMessageReplyReference as r, withIMessageRemoteFile as t };
@@ -1,4 +1,4 @@
1
- //#region \0rolldown/runtime.js
1
+ // \0rolldown/runtime.js
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -23,5 +23,4 @@ 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
27
26
  export { __reExport as n, __exportAll 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
- //#region extensions/imessage/src/markdown-format.ts
2
+ // extensions/imessage/src/markdown-format.ts
3
3
  const IMESSAGE_FORMAT_PROFILE = FormatCapabilityProfile.define({
4
4
  mechanism: "ranges",
5
5
  constructs: {
@@ -35,11 +35,23 @@ const IMESSAGE_STYLE_MAP = {
35
35
  underline: "underline",
36
36
  strikethrough: "strikethrough"
37
37
  };
38
- function codeDelimiter(content) {
39
- const longestRun = Math.max(0, ...[...content.matchAll(/`+/gu)].map((match) => match[0].length));
40
- return "`".repeat(longestRun + 1);
41
- }
42
- function restoreCodeMarkers(text, ranges, codeRanges) {
38
+ function extractMarkdownFormatRuns(input) {
39
+ const ir = markdownToIR(input, {
40
+ autolink: false,
41
+ enableHtmlUnderline: true,
42
+ headingStyle: "rich",
43
+ linkify: false,
44
+ preserveDunderIdentifiers: true,
45
+ preserveSourceBlockSpacing: true
46
+ });
47
+ const rendered = renderMarkdownWithAttributedRanges(ir, { styleMap: IMESSAGE_STYLE_MAP }, IMESSAGE_FORMAT_PROFILE);
48
+ const codeRanges = ir.styles.some((span) => span.style === "code") ? renderMarkdownWithAttributedRanges(ir, { styleMap: { code: "code" } }, IMESSAGE_CODE_PROFILE).ranges : [];
49
+ const text = rendered.text;
50
+ const ranges = rendered.ranges.map(({ start, length, style }) => ({
51
+ start,
52
+ length,
53
+ styles: [style]
54
+ }));
43
55
  if (codeRanges.length === 0) return {
44
56
  text,
45
57
  ranges
@@ -47,7 +59,8 @@ function restoreCodeMarkers(text, ranges, codeRanges) {
47
59
  const edits = codeRanges.map((range) => {
48
60
  const end = range.start + range.length;
49
61
  const content = text.slice(range.start, end);
50
- const marker = codeDelimiter(content);
62
+ const longestRun = Math.max(0, ...[...content.matchAll(/`+/gu)].map((match) => match[0].length));
63
+ const marker = "`".repeat(longestRun + 1);
51
64
  const padding = content.startsWith("`") || content.endsWith("`") ? " " : "";
52
65
  return {
53
66
  start: range.start,
@@ -55,38 +68,20 @@ function restoreCodeMarkers(text, ranges, codeRanges) {
55
68
  text: `${marker}${padding}${content}${padding}${marker}`
56
69
  };
57
70
  });
58
- const { text: rendered, mapOffset } = applyMarkdownTextEdits(text, edits);
71
+ const { text: restoredText, mapOffset } = applyMarkdownTextEdits(text, edits);
59
72
  return {
60
- text: rendered,
73
+ text: restoredText,
61
74
  ranges: ranges.map((range) => {
62
75
  const start = mapOffset(range.start);
63
76
  return {
64
- ...range,
65
77
  start,
66
- length: mapOffset(range.start + range.length) - start
78
+ length: mapOffset(range.start + range.length) - start,
79
+ styles: range.styles
67
80
  };
68
81
  })
69
82
  };
70
83
  }
71
- function extractMarkdownFormatRuns(input) {
72
- const ir = markdownToIR(input, {
73
- autolink: false,
74
- enableHtmlUnderline: true,
75
- headingStyle: "rich",
76
- linkify: false,
77
- preserveDunderIdentifiers: true,
78
- preserveSourceBlockSpacing: true
79
- });
80
- const rendered = renderMarkdownWithAttributedRanges(ir, { styleMap: IMESSAGE_STYLE_MAP }, IMESSAGE_FORMAT_PROFILE);
81
- const codeRanges = ir.styles.some((span) => span.style === "code") ? renderMarkdownWithAttributedRanges(ir, { styleMap: { code: "code" } }, IMESSAGE_CODE_PROFILE).ranges : [];
82
- return restoreCodeMarkers(rendered.text, rendered.ranges.map(({ start, length, style }) => ({
83
- start,
84
- length,
85
- styles: [style]
86
- })), codeRanges);
87
- }
88
- //#endregion
89
- //#region extensions/imessage/src/monitor/sanitize-outbound.ts
84
+ // extensions/imessage/src/monitor/sanitize-outbound.ts
90
85
  /**
91
86
  * Patterns that indicate assistant-internal metadata leaked into text.
92
87
  * These must never reach a user-facing channel.
@@ -525,5 +520,4 @@ function sanitizeOutboundText(text) {
525
520
  cleaned = cleaned.replace(/\n{3,}/g, "\n\n").trim();
526
521
  return cleaned;
527
522
  }
528
- //#endregion
529
523
  export { extractMarkdownFormatRuns as i, sanitizeIMessageFinalOutboundText as n, sanitizeOutboundText as r, protectIMessageFencedRoleMarkers as t };