@openclaw/imessage 2026.9.5 → 2026.9.6

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 (381) hide show
  1. package/dist/.setup/{accounts-Dv0uksBG.mjs → accounts-CUxZrTcY.mjs} +1 -1
  2. package/dist/.setup/{actions.runtime-B-qGAkYG.mjs → actions.runtime-D0zG_96v.mjs} +2 -2
  3. package/dist/.setup/{api-_NoJAo2x.mjs → api-RZv6yXul.mjs} +4 -4
  4. package/dist/.setup/{api-DcUWvBmD.mjs → api-VLVcFh7r.mjs} +6 -6
  5. package/dist/.setup/{approval-handler.runtime-CkG235P7.mjs → approval-handler.runtime-Bv5_XgNr.mjs} +8 -8
  6. package/dist/.setup/{approval-reactions-CX1-6KeG.mjs → approval-reactions-D6RFg6lU.mjs} +1 -1
  7. package/dist/.setup/{channel-CCbYCQiN.mjs → channel-BLTaKdSK.mjs} +21 -8
  8. package/dist/.setup/{channel.runtime-Kw4iCQax.mjs → channel.runtime---s2k4YN.mjs} +4 -4
  9. package/dist/.setup/{group-policy-BoOAkmoQ.mjs → group-policy-Cjztkquv.mjs} +22 -6
  10. package/dist/.setup/{media-contract-BpPh5Oh1.mjs → media-contract-DKJK7rh3.mjs} +1 -1
  11. package/dist/.setup/{message-tool-api-DZSH-2gY.mjs → message-tool-api-pvlcOJPG.mjs} +1 -1
  12. package/dist/.setup/{monitor-CSeWJ3Qh.mjs → monitor-BJ3Ozi6I.mjs} +31 -71
  13. package/dist/.setup/{remote-file-4RbwiXYh.mjs → remote-file-Bye99O-C.mjs} +3 -3
  14. package/dist/.setup/{sanitize-outbound-o1ePXajW.mjs → sanitize-outbound-sJPF2DVM.mjs} +2 -2
  15. package/dist/.setup/{send-DXiUWygv.mjs → send-odAfTQ2J.mjs} +63 -44
  16. package/dist/.setup/{state-migrations-CIwg07l5.mjs → state-migrations-DIDzI99d.mjs} +1 -1
  17. package/dist/api.js +6 -6
  18. package/dist/channel-plugin-api.js +1 -1
  19. package/dist/contract-api.js +1 -1
  20. package/dist/doctor-contract-api.js +1 -1
  21. package/dist/media-contract-api.js +1 -1
  22. package/dist/message-tool-api.js +1 -1
  23. package/dist/runtime-api.js +4 -4
  24. package/dist/setup-entry.js +1 -1
  25. package/dist/src/{send-receipt-db.worker.js → chat-db.worker.js} +6 -1
  26. package/node_modules/zod/README.md +2 -2
  27. package/node_modules/zod/compile.cjs +19 -0
  28. package/node_modules/zod/index.cjs +19 -0
  29. package/node_modules/zod/locales/index.cjs +19 -0
  30. package/node_modules/zod/mini/index.cjs +19 -0
  31. package/node_modules/zod/package.json +8 -7
  32. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  33. package/node_modules/zod/src/v4/classic/external.ts +2 -0
  34. package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
  35. package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
  36. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
  37. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
  38. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  39. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
  40. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
  41. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
  42. package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
  43. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
  44. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  45. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
  46. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
  47. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
  48. package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
  49. package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
  50. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
  51. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  52. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  53. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
  54. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  55. package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
  56. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
  57. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
  58. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
  59. package/node_modules/zod/src/v4/core/api.ts +44 -28
  60. package/node_modules/zod/src/v4/core/checks.ts +62 -102
  61. package/node_modules/zod/src/v4/core/compile.ts +218 -93
  62. package/node_modules/zod/src/v4/core/core.ts +1 -3
  63. package/node_modules/zod/src/v4/core/doc.ts +6 -2
  64. package/node_modules/zod/src/v4/core/errors.ts +3 -6
  65. package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
  66. package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
  67. package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
  68. package/node_modules/zod/src/v4/core/parse.ts +37 -16
  69. package/node_modules/zod/src/v4/core/regexes.ts +14 -4
  70. package/node_modules/zod/src/v4/core/schemas.ts +296 -132
  71. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  72. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
  73. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  74. package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
  75. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  76. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  77. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  78. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
  79. package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
  80. package/node_modules/zod/src/v4/core/util.ts +218 -147
  81. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  82. package/node_modules/zod/src/v4/locales/ar.ts +2 -0
  83. package/node_modules/zod/src/v4/locales/az.ts +2 -0
  84. package/node_modules/zod/src/v4/locales/be.ts +2 -0
  85. package/node_modules/zod/src/v4/locales/bg.ts +2 -0
  86. package/node_modules/zod/src/v4/locales/bn.ts +2 -0
  87. package/node_modules/zod/src/v4/locales/ca.ts +2 -0
  88. package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
  89. package/node_modules/zod/src/v4/locales/cs.ts +2 -0
  90. package/node_modules/zod/src/v4/locales/da.ts +2 -0
  91. package/node_modules/zod/src/v4/locales/de.ts +2 -0
  92. package/node_modules/zod/src/v4/locales/el.ts +2 -0
  93. package/node_modules/zod/src/v4/locales/en.ts +2 -0
  94. package/node_modules/zod/src/v4/locales/eo.ts +2 -0
  95. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  96. package/node_modules/zod/src/v4/locales/fa.ts +2 -0
  97. package/node_modules/zod/src/v4/locales/fi.ts +2 -0
  98. package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
  99. package/node_modules/zod/src/v4/locales/fr.ts +2 -0
  100. package/node_modules/zod/src/v4/locales/gu.ts +2 -0
  101. package/node_modules/zod/src/v4/locales/he.ts +2 -0
  102. package/node_modules/zod/src/v4/locales/hi.ts +2 -0
  103. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  104. package/node_modules/zod/src/v4/locales/hu.ts +2 -0
  105. package/node_modules/zod/src/v4/locales/hy.ts +2 -0
  106. package/node_modules/zod/src/v4/locales/id.ts +2 -0
  107. package/node_modules/zod/src/v4/locales/index.ts +1 -0
  108. package/node_modules/zod/src/v4/locales/is.ts +2 -0
  109. package/node_modules/zod/src/v4/locales/it.ts +2 -0
  110. package/node_modules/zod/src/v4/locales/ja.ts +2 -0
  111. package/node_modules/zod/src/v4/locales/ka.ts +2 -0
  112. package/node_modules/zod/src/v4/locales/km.ts +2 -0
  113. package/node_modules/zod/src/v4/locales/kn.ts +2 -0
  114. package/node_modules/zod/src/v4/locales/ko.ts +2 -0
  115. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  116. package/node_modules/zod/src/v4/locales/mk.ts +2 -0
  117. package/node_modules/zod/src/v4/locales/ms.ts +2 -0
  118. package/node_modules/zod/src/v4/locales/ne.ts +2 -0
  119. package/node_modules/zod/src/v4/locales/nl.ts +2 -0
  120. package/node_modules/zod/src/v4/locales/nn.ts +2 -0
  121. package/node_modules/zod/src/v4/locales/no.ts +2 -0
  122. package/node_modules/zod/src/v4/locales/ota.ts +2 -0
  123. package/node_modules/zod/src/v4/locales/pl.ts +2 -0
  124. package/node_modules/zod/src/v4/locales/ps.ts +2 -0
  125. package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
  126. package/node_modules/zod/src/v4/locales/pt.ts +2 -0
  127. package/node_modules/zod/src/v4/locales/ro.ts +2 -0
  128. package/node_modules/zod/src/v4/locales/ru.ts +2 -0
  129. package/node_modules/zod/src/v4/locales/sk.ts +2 -0
  130. package/node_modules/zod/src/v4/locales/sl.ts +2 -0
  131. package/node_modules/zod/src/v4/locales/sv.ts +2 -0
  132. package/node_modules/zod/src/v4/locales/ta.ts +2 -0
  133. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  134. package/node_modules/zod/src/v4/locales/th.ts +2 -0
  135. package/node_modules/zod/src/v4/locales/tk.ts +2 -0
  136. package/node_modules/zod/src/v4/locales/tr.ts +2 -0
  137. package/node_modules/zod/src/v4/locales/uk.ts +2 -0
  138. package/node_modules/zod/src/v4/locales/ur.ts +2 -0
  139. package/node_modules/zod/src/v4/locales/uz.ts +2 -0
  140. package/node_modules/zod/src/v4/locales/vi.ts +2 -0
  141. package/node_modules/zod/src/v4/locales/yo.ts +2 -0
  142. package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
  143. package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
  144. package/node_modules/zod/src/v4/mini/external.ts +2 -0
  145. package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
  146. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
  147. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  148. package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
  149. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  150. package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
  151. package/node_modules/zod/v3/ZodError.cjs +19 -0
  152. package/node_modules/zod/v3/errors.cjs +19 -0
  153. package/node_modules/zod/v3/external.cjs +19 -0
  154. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  155. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  156. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  157. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  158. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  159. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  160. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  161. package/node_modules/zod/v3/index.cjs +19 -0
  162. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  163. package/node_modules/zod/v3/types.cjs +19 -0
  164. package/node_modules/zod/v4/classic/checks.cjs +19 -0
  165. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  166. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  167. package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
  168. package/node_modules/zod/v4/classic/errors.cjs +19 -0
  169. package/node_modules/zod/v4/classic/external.cjs +22 -1
  170. package/node_modules/zod/v4/classic/external.d.cts +1 -1
  171. package/node_modules/zod/v4/classic/external.d.ts +1 -1
  172. package/node_modules/zod/v4/classic/external.js +1 -1
  173. package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
  174. package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
  175. package/node_modules/zod/v4/classic/in-out.cjs +19 -0
  176. package/node_modules/zod/v4/classic/index.cjs +19 -0
  177. package/node_modules/zod/v4/classic/iso.cjs +19 -0
  178. package/node_modules/zod/v4/classic/parse.cjs +19 -0
  179. package/node_modules/zod/v4/classic/schemas.cjs +100 -35
  180. package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
  181. package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
  182. package/node_modules/zod/v4/classic/schemas.js +77 -33
  183. package/node_modules/zod/v4/core/api.cjs +45 -22
  184. package/node_modules/zod/v4/core/api.d.cts +12 -6
  185. package/node_modules/zod/v4/core/api.d.ts +12 -6
  186. package/node_modules/zod/v4/core/api.js +25 -22
  187. package/node_modules/zod/v4/core/checks.cjs +51 -97
  188. package/node_modules/zod/v4/core/checks.d.cts +17 -1
  189. package/node_modules/zod/v4/core/checks.d.ts +17 -1
  190. package/node_modules/zod/v4/core/checks.js +31 -96
  191. package/node_modules/zod/v4/core/compile.cjs +173 -78
  192. package/node_modules/zod/v4/core/compile.d.cts +18 -4
  193. package/node_modules/zod/v4/core/compile.d.ts +18 -4
  194. package/node_modules/zod/v4/core/compile.js +154 -79
  195. package/node_modules/zod/v4/core/core.cjs +20 -1
  196. package/node_modules/zod/v4/core/core.js +1 -1
  197. package/node_modules/zod/v4/core/doc.cjs +26 -2
  198. package/node_modules/zod/v4/core/doc.js +7 -2
  199. package/node_modules/zod/v4/core/errors.cjs +21 -5
  200. package/node_modules/zod/v4/core/errors.js +2 -5
  201. package/node_modules/zod/v4/core/index.cjs +19 -0
  202. package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
  203. package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
  204. package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
  205. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  206. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  207. package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
  208. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  209. package/node_modules/zod/v4/core/memoizer.cjs +111 -23
  210. package/node_modules/zod/v4/core/memoizer.js +69 -23
  211. package/node_modules/zod/v4/core/parse.cjs +56 -16
  212. package/node_modules/zod/v4/core/parse.js +37 -16
  213. package/node_modules/zod/v4/core/regexes.cjs +31 -6
  214. package/node_modules/zod/v4/core/regexes.d.cts +3 -0
  215. package/node_modules/zod/v4/core/regexes.d.ts +3 -0
  216. package/node_modules/zod/v4/core/regexes.js +10 -4
  217. package/node_modules/zod/v4/core/registries.cjs +19 -0
  218. package/node_modules/zod/v4/core/schemas.cjs +302 -114
  219. package/node_modules/zod/v4/core/schemas.d.cts +28 -8
  220. package/node_modules/zod/v4/core/schemas.d.ts +28 -8
  221. package/node_modules/zod/v4/core/schemas.js +279 -113
  222. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  223. package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
  224. package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
  225. package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
  226. package/node_modules/zod/v4/core/to-json-schema.js +7 -6
  227. package/node_modules/zod/v4/core/util.cjs +177 -143
  228. package/node_modules/zod/v4/core/util.d.cts +25 -4
  229. package/node_modules/zod/v4/core/util.d.ts +25 -4
  230. package/node_modules/zod/v4/core/util.js +156 -143
  231. package/node_modules/zod/v4/core/versions.cjs +21 -2
  232. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  233. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  234. package/node_modules/zod/v4/core/versions.js +2 -2
  235. package/node_modules/zod/v4/core/visit.cjs +19 -0
  236. package/node_modules/zod/v4/index.cjs +19 -0
  237. package/node_modules/zod/v4/locales/ar.cjs +2 -0
  238. package/node_modules/zod/v4/locales/ar.js +2 -0
  239. package/node_modules/zod/v4/locales/az.cjs +2 -0
  240. package/node_modules/zod/v4/locales/az.js +2 -0
  241. package/node_modules/zod/v4/locales/be.cjs +2 -0
  242. package/node_modules/zod/v4/locales/be.js +2 -0
  243. package/node_modules/zod/v4/locales/bg.cjs +2 -0
  244. package/node_modules/zod/v4/locales/bg.js +2 -0
  245. package/node_modules/zod/v4/locales/bn.cjs +2 -0
  246. package/node_modules/zod/v4/locales/bn.js +2 -0
  247. package/node_modules/zod/v4/locales/ca.cjs +2 -0
  248. package/node_modules/zod/v4/locales/ca.js +2 -0
  249. package/node_modules/zod/v4/locales/ckb.cjs +2 -0
  250. package/node_modules/zod/v4/locales/ckb.js +2 -0
  251. package/node_modules/zod/v4/locales/cs.cjs +2 -0
  252. package/node_modules/zod/v4/locales/cs.js +2 -0
  253. package/node_modules/zod/v4/locales/da.cjs +2 -0
  254. package/node_modules/zod/v4/locales/da.js +2 -0
  255. package/node_modules/zod/v4/locales/de.cjs +2 -0
  256. package/node_modules/zod/v4/locales/de.js +2 -0
  257. package/node_modules/zod/v4/locales/el.cjs +2 -0
  258. package/node_modules/zod/v4/locales/el.js +2 -0
  259. package/node_modules/zod/v4/locales/en.cjs +2 -0
  260. package/node_modules/zod/v4/locales/en.js +2 -0
  261. package/node_modules/zod/v4/locales/eo.cjs +2 -0
  262. package/node_modules/zod/v4/locales/eo.js +2 -0
  263. package/node_modules/zod/v4/locales/es.cjs +2 -0
  264. package/node_modules/zod/v4/locales/es.js +2 -0
  265. package/node_modules/zod/v4/locales/fa.cjs +2 -0
  266. package/node_modules/zod/v4/locales/fa.js +2 -0
  267. package/node_modules/zod/v4/locales/fi.cjs +2 -0
  268. package/node_modules/zod/v4/locales/fi.js +2 -0
  269. package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
  270. package/node_modules/zod/v4/locales/fr-CA.js +2 -0
  271. package/node_modules/zod/v4/locales/fr.cjs +2 -0
  272. package/node_modules/zod/v4/locales/fr.js +2 -0
  273. package/node_modules/zod/v4/locales/gu.cjs +2 -0
  274. package/node_modules/zod/v4/locales/gu.js +2 -0
  275. package/node_modules/zod/v4/locales/he.cjs +2 -0
  276. package/node_modules/zod/v4/locales/he.js +2 -0
  277. package/node_modules/zod/v4/locales/hi.cjs +2 -0
  278. package/node_modules/zod/v4/locales/hi.js +2 -0
  279. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  280. package/node_modules/zod/v4/locales/hr.js +2 -0
  281. package/node_modules/zod/v4/locales/hu.cjs +2 -0
  282. package/node_modules/zod/v4/locales/hu.js +2 -0
  283. package/node_modules/zod/v4/locales/hy.cjs +2 -0
  284. package/node_modules/zod/v4/locales/hy.js +2 -0
  285. package/node_modules/zod/v4/locales/id.cjs +2 -0
  286. package/node_modules/zod/v4/locales/id.js +2 -0
  287. package/node_modules/zod/v4/locales/index.cjs +22 -1
  288. package/node_modules/zod/v4/locales/index.d.cts +1 -0
  289. package/node_modules/zod/v4/locales/index.d.ts +1 -0
  290. package/node_modules/zod/v4/locales/index.js +1 -0
  291. package/node_modules/zod/v4/locales/is.cjs +2 -0
  292. package/node_modules/zod/v4/locales/is.js +2 -0
  293. package/node_modules/zod/v4/locales/it.cjs +2 -0
  294. package/node_modules/zod/v4/locales/it.js +2 -0
  295. package/node_modules/zod/v4/locales/ja.cjs +2 -0
  296. package/node_modules/zod/v4/locales/ja.js +2 -0
  297. package/node_modules/zod/v4/locales/ka.cjs +2 -0
  298. package/node_modules/zod/v4/locales/ka.js +2 -0
  299. package/node_modules/zod/v4/locales/km.cjs +2 -0
  300. package/node_modules/zod/v4/locales/km.js +2 -0
  301. package/node_modules/zod/v4/locales/kn.cjs +2 -0
  302. package/node_modules/zod/v4/locales/kn.js +2 -0
  303. package/node_modules/zod/v4/locales/ko.cjs +2 -0
  304. package/node_modules/zod/v4/locales/ko.js +2 -0
  305. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  306. package/node_modules/zod/v4/locales/lt.js +2 -0
  307. package/node_modules/zod/v4/locales/mk.cjs +2 -0
  308. package/node_modules/zod/v4/locales/mk.js +2 -0
  309. package/node_modules/zod/v4/locales/ms.cjs +2 -0
  310. package/node_modules/zod/v4/locales/ms.js +2 -0
  311. package/node_modules/zod/v4/locales/ne.cjs +2 -0
  312. package/node_modules/zod/v4/locales/ne.js +2 -0
  313. package/node_modules/zod/v4/locales/nl.cjs +2 -0
  314. package/node_modules/zod/v4/locales/nl.js +2 -0
  315. package/node_modules/zod/v4/locales/nn.cjs +2 -0
  316. package/node_modules/zod/v4/locales/nn.js +2 -0
  317. package/node_modules/zod/v4/locales/no.cjs +2 -0
  318. package/node_modules/zod/v4/locales/no.js +2 -0
  319. package/node_modules/zod/v4/locales/ota.cjs +2 -0
  320. package/node_modules/zod/v4/locales/ota.js +2 -0
  321. package/node_modules/zod/v4/locales/pl.cjs +2 -0
  322. package/node_modules/zod/v4/locales/pl.js +2 -0
  323. package/node_modules/zod/v4/locales/ps.cjs +2 -0
  324. package/node_modules/zod/v4/locales/ps.js +2 -0
  325. package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
  326. package/node_modules/zod/v4/locales/pt-BR.js +2 -0
  327. package/node_modules/zod/v4/locales/pt.cjs +2 -0
  328. package/node_modules/zod/v4/locales/pt.js +2 -0
  329. package/node_modules/zod/v4/locales/ro.cjs +2 -0
  330. package/node_modules/zod/v4/locales/ro.js +2 -0
  331. package/node_modules/zod/v4/locales/ru.cjs +2 -0
  332. package/node_modules/zod/v4/locales/ru.js +2 -0
  333. package/node_modules/zod/v4/locales/sk.cjs +2 -0
  334. package/node_modules/zod/v4/locales/sk.js +2 -0
  335. package/node_modules/zod/v4/locales/sl.cjs +2 -0
  336. package/node_modules/zod/v4/locales/sl.js +2 -0
  337. package/node_modules/zod/v4/locales/sv.cjs +2 -0
  338. package/node_modules/zod/v4/locales/sv.js +2 -0
  339. package/node_modules/zod/v4/locales/ta.cjs +2 -0
  340. package/node_modules/zod/v4/locales/ta.js +2 -0
  341. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  342. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  343. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  344. package/node_modules/zod/v4/locales/tg.js +117 -0
  345. package/node_modules/zod/v4/locales/th.cjs +2 -0
  346. package/node_modules/zod/v4/locales/th.js +2 -0
  347. package/node_modules/zod/v4/locales/tk.cjs +2 -0
  348. package/node_modules/zod/v4/locales/tk.js +2 -0
  349. package/node_modules/zod/v4/locales/tr.cjs +2 -0
  350. package/node_modules/zod/v4/locales/tr.js +2 -0
  351. package/node_modules/zod/v4/locales/uk.cjs +2 -0
  352. package/node_modules/zod/v4/locales/uk.js +2 -0
  353. package/node_modules/zod/v4/locales/ur.cjs +2 -0
  354. package/node_modules/zod/v4/locales/ur.js +2 -0
  355. package/node_modules/zod/v4/locales/uz.cjs +2 -0
  356. package/node_modules/zod/v4/locales/uz.js +2 -0
  357. package/node_modules/zod/v4/locales/vi.cjs +2 -0
  358. package/node_modules/zod/v4/locales/vi.js +2 -0
  359. package/node_modules/zod/v4/locales/yo.cjs +2 -0
  360. package/node_modules/zod/v4/locales/yo.js +2 -0
  361. package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
  362. package/node_modules/zod/v4/locales/zh-CN.js +2 -0
  363. package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
  364. package/node_modules/zod/v4/locales/zh-TW.js +2 -0
  365. package/node_modules/zod/v4/mini/checks.cjs +19 -0
  366. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  367. package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
  368. package/node_modules/zod/v4/mini/external.cjs +22 -1
  369. package/node_modules/zod/v4/mini/external.d.cts +1 -1
  370. package/node_modules/zod/v4/mini/external.d.ts +1 -1
  371. package/node_modules/zod/v4/mini/external.js +1 -1
  372. package/node_modules/zod/v4/mini/in-out.cjs +19 -0
  373. package/node_modules/zod/v4/mini/index.cjs +19 -0
  374. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  375. package/node_modules/zod/v4/mini/parse.cjs +19 -0
  376. package/node_modules/zod/v4/mini/schemas.cjs +44 -8
  377. package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
  378. package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
  379. package/node_modules/zod/v4/mini/schemas.js +21 -6
  380. package/node_modules/zod/v4-mini/index.cjs +19 -0
  381. package/package.json +6 -6
@@ -8,7 +8,6 @@ import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
8
8
  import os from "node:os";
9
9
  import fs$1 from "node:fs/promises";
10
10
  import { normalizeScpRemoteHost } from "openclaw/plugin-sdk/host-runtime";
11
- import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
12
11
  //#region extensions/imessage/src/cli-path.ts
13
12
  const localCliPathCache = /* @__PURE__ */ new Map();
14
13
  const MACH_O_MAGICS = /* @__PURE__ */ new Set([
@@ -151,6 +150,7 @@ function getCachedIMessageRemoteHost(params) {
151
150
  async function resolveIMessageRemoteHost(params) {
152
151
  const configured = normalizeScpRemoteHost(params.remoteHost);
153
152
  if (configured) return configured;
153
+ const { logVerbose } = await import("openclaw/plugin-sdk/runtime-env");
154
154
  if (params.remoteHost?.trim()) logVerbose("imessage: ignoring unsafe configured remoteHost value");
155
155
  const key = cacheKey(params.cliPath);
156
156
  if (detectedRemoteHosts.has(key)) {
@@ -1,5 +1,5 @@
1
- import { m as resolveIMessageMessageId, n as sanitizeIMessageFinalOutboundText, o as createIMessageRpcClient, s as runIMessageCliJsonCommand, y as normalizeDirectChatIdentifier } from "./sanitize-outbound-o1ePXajW.mjs";
2
- import { n as authorizeIMessageResourceReference, t as withIMessageRemoteFile } from "./remote-file-4RbwiXYh.mjs";
1
+ import { m as resolveIMessageMessageId, n as sanitizeIMessageFinalOutboundText, o as createIMessageRpcClient, s as runIMessageCliJsonCommand, y as normalizeDirectChatIdentifier } from "./sanitize-outbound-sJPF2DVM.mjs";
2
+ import { n as authorizeIMessageResourceReference, t as withIMessageRemoteFile } from "./remote-file-Bye99O-C.mjs";
3
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { basename, parse, win32 } from "node:path";
5
5
  import { asDateTimestampMs, parseStrictInteger, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
@@ -1,8 +1,8 @@
1
1
  import "./targets-Cc9vthzI.mjs";
2
- import "./accounts-Dv0uksBG.mjs";
3
- import "./message-tool-api-DZSH-2gY.mjs";
4
- import { _ as imessageSetupContract } from "./group-policy-BoOAkmoQ.mjs";
5
- import { n as createIMessagePluginBase, r as imessageSetupWizard } from "./channel-CCbYCQiN.mjs";
2
+ import "./accounts-CUxZrTcY.mjs";
3
+ import "./message-tool-api-pvlcOJPG.mjs";
4
+ import { v as imessageSetupContract } from "./group-policy-Cjztkquv.mjs";
5
+ import { n as createIMessagePluginBase, r as imessageSetupWizard } from "./channel-BLTaKdSK.mjs";
6
6
  import "./conversation-bindings-GDQ_Laxj.mjs";
7
7
  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";
8
8
  //#region extensions/imessage/src/channel.setup.ts
@@ -1,10 +1,10 @@
1
1
  import { a as looksLikeIMessageExplicitTargetId, c as parseIMessageTarget, i as isAllowedIMessageSender, l as looksLikeIMessageTargetId, n as inferIMessageTargetChatType, o as normalizeIMessageHandle, s as parseIMessageAllowTarget, t as formatIMessageChatTarget, u as normalizeIMessageMessagingTarget } from "./targets-Cc9vthzI.mjs";
2
- import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, r as listEnabledIMessageAccounts } from "./accounts-Dv0uksBG.mjs";
3
- import { o as IMESSAGE_ACTIONS, s as IMESSAGE_ACTION_NAMES } from "./message-tool-api-DZSH-2gY.mjs";
4
- import { h as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./sanitize-outbound-o1ePXajW.mjs";
5
- import { a as normalizeIMessageAcpConversationId, i as matchIMessageAcpConversation, n as resolveIMessageGroupToolPolicy, o as resolveIMessageConversationIdFromTarget, r as resolveIMessageInboundConversationId, t as resolveIMessageGroupRequireMention, u as probeIMessage } from "./group-policy-BoOAkmoQ.mjs";
6
- import { t as imessagePlugin } from "./channel-CCbYCQiN.mjs";
2
+ import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, r as listEnabledIMessageAccounts } from "./accounts-CUxZrTcY.mjs";
3
+ import { o as IMESSAGE_ACTIONS, s as IMESSAGE_ACTION_NAMES } from "./message-tool-api-pvlcOJPG.mjs";
4
+ import { h as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./sanitize-outbound-sJPF2DVM.mjs";
5
+ import { a as matchIMessageAcpConversation, d as probeIMessage, i as resolveIMessageInboundConversationId, o as normalizeIMessageAcpConversationId, r as resolveIMessageGroupToolPolicy, s as resolveIMessageConversationIdFromTarget, t as resolveIMessageGroupRequireMention } from "./group-policy-Cjztkquv.mjs";
6
+ import { t as imessagePlugin } from "./channel-BLTaKdSK.mjs";
7
7
  import { t as createIMessageConversationBindingManager } from "./conversation-bindings-GDQ_Laxj.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-_NoJAo2x.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-RZv6yXul.mjs";
9
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, 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,20 +1,20 @@
1
1
  import { c as parseIMessageTarget, u as normalizeIMessageMessagingTarget } from "./targets-Cc9vthzI.mjs";
2
- import { o as resolveIMessageAccount } from "./accounts-Dv0uksBG.mjs";
3
- import { n as getCachedIMessagePrivateApiStatus } from "./message-tool-api-DZSH-2gY.mjs";
4
- import { i as extractMarkdownFormatRuns } from "./sanitize-outbound-o1ePXajW.mjs";
5
- import { s as getIMessageApprovalApprovers } from "./group-policy-BoOAkmoQ.mjs";
6
- import { a as unregisterIMessageApprovalReactionTarget, c as buildIMessageApprovalConversationKeyForTarget, i as registerIMessageApprovalReactionTarget } from "./approval-reactions-CX1-6KeG.mjs";
7
- import { a as iMessageApprovalPollTargets, c as iMessageApprovalControlBindings, i as buildApprovalPollOptions, o as mapSentPollOptionsToDecisions, t as sendMessageIMessage } from "./send-DXiUWygv.mjs";
2
+ import { o as resolveIMessageAccount } from "./accounts-CUxZrTcY.mjs";
3
+ import { n as getCachedIMessagePrivateApiStatus } from "./message-tool-api-pvlcOJPG.mjs";
4
+ import { i as extractMarkdownFormatRuns } from "./sanitize-outbound-sJPF2DVM.mjs";
5
+ import { c as getIMessageApprovalApprovers } from "./group-policy-Cjztkquv.mjs";
6
+ import { a as unregisterIMessageApprovalReactionTarget, c as buildIMessageApprovalConversationKeyForTarget, i as registerIMessageApprovalReactionTarget } from "./approval-reactions-D6RFg6lU.mjs";
7
+ import { a as buildApprovalPollOptions, l as iMessageApprovalControlBindings, o as iMessageApprovalPollTargets, s as mapSentPollOptionsToDecisions, t as sendMessageIMessage } from "./send-odAfTQ2J.mjs";
8
8
  import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
9
- import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
10
9
  import { createActionGate } from "openclaw/plugin-sdk/channel-actions";
10
+ import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
11
11
  import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
12
12
  import { buildApprovalNativeControlsPromptText, buildApprovalReactionPendingContent } from "openclaw/plugin-sdk/approval-reaction-runtime";
13
13
  import { buildChannelApprovalExpiredText, buildChannelApprovalResolvedText, createChannelApprovalNativeRuntimeAdapter, resolvePreparedApprovalAccountId } from "openclaw/plugin-sdk/approval-handler-runtime";
14
14
  import { setTimeout } from "node:timers/promises";
15
15
  //#region extensions/imessage/src/approval-handler.runtime.ts
16
16
  const log = createSubsystemLogger("imessage/approvals");
17
- const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-B-qGAkYG.mjs"), "imessageActionsRuntime");
17
+ const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-D0zG_96v.mjs"), "imessageActionsRuntime");
18
18
  const DEFAULT_PROBE_TIMEOUT_MS = 5e3;
19
19
  const APPROVAL_POLL_ORDERING_DELAY_MS = 1100;
20
20
  function buildPendingPayload(params) {
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
2
  import { c as parseIMessageTarget, o as normalizeIMessageHandle } from "./targets-Cc9vthzI.mjs";
3
- import { c as imessageApprovalAuth, s as getIMessageApprovalApprovers } from "./group-policy-BoOAkmoQ.mjs";
3
+ import { c as getIMessageApprovalApprovers, l as imessageApprovalAuth } from "./group-policy-Cjztkquv.mjs";
4
4
  import { n as getOptionalIMessageRuntime } from "./runtime-Cza4CY5T.mjs";
5
5
  import { n as normalizeIMessageGuid, t as resolveIMessageReactionContext } from "./reaction-context-Br-vAJFp.mjs";
6
6
  import { asOptionalRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1,10 +1,10 @@
1
1
  import { a as looksLikeIMessageExplicitTargetId, c as parseIMessageTarget, d as isIMessagePhoneLikeHandle, n as inferIMessageTargetChatType, o as normalizeIMessageHandle, u as normalizeIMessageMessagingTarget } from "./targets-Cc9vthzI.mjs";
2
- import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, t as collectIMessageDuplicateAccountSourceWarnings } from "./accounts-Dv0uksBG.mjs";
3
- import { b as resolveIMessageDirectChatService, n as sanitizeIMessageFinalOutboundText, r as sanitizeOutboundText } from "./sanitize-outbound-o1ePXajW.mjs";
4
- import { _ as imessageSetupContract, a as normalizeIMessageAcpConversationId, c as imessageApprovalAuth, i as matchIMessageAcpConversation, l as imessageMessageActions, m as createIMessageSetupWizardProxy, n as resolveIMessageGroupToolPolicy, o as resolveIMessageConversationIdFromTarget, s as getIMessageApprovalApprovers, t as resolveIMessageGroupRequireMention } from "./group-policy-BoOAkmoQ.mjs";
2
+ import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, t as collectIMessageDuplicateAccountSourceWarnings } from "./accounts-CUxZrTcY.mjs";
3
+ import { b as resolveIMessageDirectChatService, n as sanitizeIMessageFinalOutboundText, r as sanitizeOutboundText } from "./sanitize-outbound-sJPF2DVM.mjs";
4
+ import { a as matchIMessageAcpConversation, c as getIMessageApprovalApprovers, h as createIMessageSetupWizardProxy, l as imessageApprovalAuth, o as normalizeIMessageAcpConversationId, r as resolveIMessageGroupToolPolicy, s as resolveIMessageConversationIdFromTarget, t as resolveIMessageGroupRequireMention, u as imessageMessageActions, v as imessageSetupContract } from "./group-policy-Cjztkquv.mjs";
5
5
  import { t as createIMessageConversationBindingManager } from "./conversation-bindings-GDQ_Laxj.mjs";
6
6
  import { t as IMessageChannelConfigSchema } from "./config-schema-CCbTcJEV.mjs";
7
- import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots } from "./media-contract-BpPh5Oh1.mjs";
7
+ import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots } from "./media-contract-DKJK7rh3.mjs";
8
8
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
10
10
  import { buildDmGroupAccountAllowlistAdapter } from "openclaw/plugin-sdk/allowlist-config-edit";
@@ -92,7 +92,7 @@ const imessageApproval = createApproverRestrictedNativeApprovalCapabilityFromFor
92
92
  approvalKind,
93
93
  request
94
94
  }),
95
- load: async () => (await import("./approval-handler.runtime-CkG235P7.mjs")).imessageApprovalNativeRuntime
95
+ load: async () => (await import("./approval-handler.runtime-Bv5_XgNr.mjs")).imessageApprovalNativeRuntime
96
96
  })
97
97
  });
98
98
  const imessageApprovalRouting = imessageApproval.routing;
@@ -207,7 +207,7 @@ const imessageDoctor = {
207
207
  //#region extensions/imessage/src/shared.ts
208
208
  const IMESSAGE_CHANNEL = "imessage";
209
209
  async function loadIMessageChannelRuntime$1() {
210
- return await import("./channel.runtime-Kw4iCQax.mjs");
210
+ return await import("./channel.runtime---s2k4YN.mjs");
211
211
  }
212
212
  const imessageSetupWizard = createIMessageSetupWizardProxy(async () => (await loadIMessageChannelRuntime$1()).imessageSetupWizard);
213
213
  const imessageConfigAdapter = createScopedChannelConfigAdapter({
@@ -309,7 +309,7 @@ async function probeIMessageStatusAccount(params) {
309
309
  }
310
310
  //#endregion
311
311
  //#region extensions/imessage/src/channel.ts
312
- const loadIMessageChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-Kw4iCQax.mjs"));
312
+ const loadIMessageChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime---s2k4YN.mjs"));
313
313
  function toIMessageMessageSendResult(result, kind, replyToId) {
314
314
  const receipt = result.receipt ?? createMessageReceiptFromOutboundResults({
315
315
  results: result.messageId ? [{
@@ -325,7 +325,7 @@ function toIMessageMessageSendResult(result, kind, replyToId) {
325
325
  ...result.meta && Object.keys(result.meta).length > 0 ? { meta: result.meta } : {}
326
326
  };
327
327
  }
328
- const loadIMessageApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-CX1-6KeG.mjs").then((n) => n.t));
328
+ const loadIMessageApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-D6RFg6lU.mjs").then((n) => n.t));
329
329
  const loadIMessageQuestionReactionsModule = createLazyRuntimeModule(() => import("./question-reactions-lm8OxWbb.mjs").then((n) => n.r));
330
330
  async function prepareForwardedIMessageApprovalPayload(params) {
331
331
  const prepared = (await loadIMessageApprovalReactionsModule()).addIMessageApprovalReactionHintToStructuredPayload(params);
@@ -576,6 +576,19 @@ const imessagePlugin = createChatChannelPlugin({
576
576
  }
577
577
  } },
578
578
  security: imessageSecurityAdapter,
579
+ threading: { resolveReplyTransport: ({ cfg, accountId, replyToId, currentMessageId, replyToCurrent, replyToIsExplicit, replyDelivery }) => {
580
+ if (resolveIMessageAccount({
581
+ cfg,
582
+ accountId
583
+ }).config.actions?.reply === false) return { replyToId: null };
584
+ const existingReplyToId = normalizeOptionalString(replyToId);
585
+ const explicitCurrentReply = replyToIsExplicit === true && replyToCurrent === true;
586
+ const implicitReplyToId = replyToCurrent === false || replyDelivery?.replyToMode === "off" && !explicitCurrentReply ? void 0 : normalizeOptionalString(currentMessageId);
587
+ return {
588
+ replyToId: existingReplyToId ?? implicitReplyToId ?? null,
589
+ ...!existingReplyToId && !explicitCurrentReply && implicitReplyToId ? { replyToIdSource: "implicit" } : {}
590
+ };
591
+ } },
579
592
  outbound: {
580
593
  base: {
581
594
  deliveryMode: "direct",
@@ -1,8 +1,8 @@
1
- import { l as resolveIMessageRemoteHost, o as resolveIMessageAccount, r as listEnabledIMessageAccounts, s as resolveIMessageDuplicateSourceOwner } from "./accounts-Dv0uksBG.mjs";
2
- import { b as normalizeIMessageCliPathForSetup, f as IMESSAGE_INSTALL_COMMAND, g as imessageDmPolicy, h as imessageCompletionNote, p as createIMessageCliPathTextInput, u as probeIMessage, v as imessageSetupStatusBase, y as isAutoManagedIMessageCliPath } from "./group-policy-BoOAkmoQ.mjs";
1
+ import { l as resolveIMessageRemoteHost, o as resolveIMessageAccount, r as listEnabledIMessageAccounts, s as resolveIMessageDuplicateSourceOwner } from "./accounts-CUxZrTcY.mjs";
2
+ import { _ as imessageDmPolicy, b as isAutoManagedIMessageCliPath, d as probeIMessage, g as imessageCompletionNote, m as createIMessageCliPathTextInput, p as IMESSAGE_INSTALL_COMMAND, x as normalizeIMessageCliPathForSetup, y as imessageSetupStatusBase } from "./group-policy-Cjztkquv.mjs";
3
3
  import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./outbound-send-deps-B-QEsLSM.mjs";
4
- import { t as sendMessageIMessage } from "./send-DXiUWygv.mjs";
5
- import { t as monitorIMessageProvider } from "./monitor-CSeWJ3Qh.mjs";
4
+ import { t as sendMessageIMessage } from "./send-odAfTQ2J.mjs";
5
+ import { t as monitorIMessageProvider } from "./monitor-BJ3Ozi6I.mjs";
6
6
  import { createAccountStatusSink, resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
7
7
  import path from "node:path";
8
8
  import { resolveChannelMediaMaxBytes } from "openclaw/plugin-sdk/account-helpers";
@@ -1,15 +1,15 @@
1
1
  import { c as parseIMessageTarget, o as normalizeIMessageHandle } from "./targets-Cc9vthzI.mjs";
2
- import { a as resolveDefaultIMessageAccountId, l as resolveIMessageRemoteHost, n as hasExclusiveIMessageLocalDatabase, o as resolveIMessageAccount, u as expandIMessageUserPath } from "./accounts-Dv0uksBG.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-DZSH-2gY.mjs";
4
- import { _ as chatContextFromIMessageTarget, c as findLatestIMessageEntryForChat, f as rememberIMessageReplyCache, l as isIMessageCurrentMessageInChat, o as createIMessageRpcClient, u as isIMessageCurrentMessageInChatAsync } from "./sanitize-outbound-o1ePXajW.mjs";
2
+ import { a as resolveDefaultIMessageAccountId, l as resolveIMessageRemoteHost, n as hasExclusiveIMessageLocalDatabase, o as resolveIMessageAccount, u as expandIMessageUserPath } from "./accounts-CUxZrTcY.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-pvlcOJPG.mjs";
4
+ import { _ as chatContextFromIMessageTarget, c as findLatestIMessageEntryForChat, f as rememberIMessageReplyCache, l as isIMessageCurrentMessageInChat, o as createIMessageRpcClient, u as isIMessageCurrentMessageInChatAsync } from "./sanitize-outbound-sJPF2DVM.mjs";
5
5
  import { filterStringEntries, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
7
7
  import path from "node:path";
8
- import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
9
8
  import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
10
9
  import { createActionGate, jsonResult, readNonNegativeIntegerParam, readPositiveIntegerParam, readReactionParams, readStringArrayParam, readStringParam } from "openclaw/plugin-sdk/channel-actions";
11
10
  import { canonicalizeBase64 } from "openclaw/plugin-sdk/media-runtime";
12
11
  import { normalizePollInput } from "openclaw/plugin-sdk/poll-runtime";
12
+ import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
13
13
  import { extractToolSend } from "openclaw/plugin-sdk/tool-send";
14
14
  import { asDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
15
15
  import { runCommandWithTimeout } from "openclaw/plugin-sdk/process-runtime";
@@ -519,7 +519,7 @@ async function probeIMessage(timeoutMs, opts = {}) {
519
519
  }
520
520
  //#endregion
521
521
  //#region extensions/imessage/src/actions.ts
522
- const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-B-qGAkYG.mjs"), "imessageActionsRuntime");
522
+ const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(() => import("./actions.runtime-D0zG_96v.mjs"), "imessageActionsRuntime");
523
523
  const log = createSubsystemLogger("channels/imessage");
524
524
  const providerId = "imessage";
525
525
  const SUPPORTED_ACTIONS = /* @__PURE__ */ new Set([...IMESSAGE_ACTION_NAMES, "upload-file"]);
@@ -1263,5 +1263,21 @@ function resolveIMessageGroupToolPolicy(params) {
1263
1263
  messageProvider: "imessage"
1264
1264
  });
1265
1265
  }
1266
+ /**
1267
+ * Per-group `systemPrompt` resolution. Mirrors `resolveWhatsAppGroupSystemPrompt`
1268
+ * in `extensions/whatsapp/src/system-prompt.ts`:
1269
+ *
1270
+ * 1. If the matched per-`chat_id` entry exists AND defines `systemPrompt` (key
1271
+ * is present, value is non-null), use it. Trim whitespace; if the trim
1272
+ * leaves an empty string, return `undefined` and DO NOT fall through to the
1273
+ * wildcard. This is how operators say "this specific group has no prompt"
1274
+ * without inheriting from `groups["*"]`.
1275
+ * 2. Otherwise, return the wildcard `groups["*"].systemPrompt` (trimmed; empty
1276
+ * after trim → `undefined`).
1277
+ */
1278
+ function resolveIMessageGroupSystemPrompt(params) {
1279
+ const prompt = params.groupConfig?.systemPrompt ?? params.defaultConfig?.systemPrompt;
1280
+ return typeof prompt === "string" ? prompt.trim() || void 0 : void 0;
1281
+ }
1266
1282
  //#endregion
1267
- export { imessageSetupContract as _, normalizeIMessageAcpConversationId as a, normalizeIMessageCliPathForSetup as b, imessageApprovalAuth as c, probeIMessagePrivateApi as d, IMESSAGE_INSTALL_COMMAND as f, imessageDmPolicy as g, imessageCompletionNote as h, matchIMessageAcpConversation as i, imessageMessageActions as l, createIMessageSetupWizardProxy as m, resolveIMessageGroupToolPolicy as n, resolveIMessageConversationIdFromTarget as o, createIMessageCliPathTextInput as p, resolveIMessageInboundConversationId as r, getIMessageApprovalApprovers as s, resolveIMessageGroupRequireMention as t, probeIMessage as u, imessageSetupStatusBase as v, isAutoManagedIMessageCliPath as y };
1283
+ export { imessageDmPolicy as _, matchIMessageAcpConversation as a, isAutoManagedIMessageCliPath as b, getIMessageApprovalApprovers as c, probeIMessage as d, probeIMessagePrivateApi as f, imessageCompletionNote as g, createIMessageSetupWizardProxy as h, resolveIMessageInboundConversationId as i, imessageApprovalAuth as l, createIMessageCliPathTextInput as m, resolveIMessageGroupSystemPrompt as n, normalizeIMessageAcpConversationId as o, IMESSAGE_INSTALL_COMMAND as p, resolveIMessageGroupToolPolicy as r, resolveIMessageConversationIdFromTarget as s, resolveIMessageGroupRequireMention as t, imessageMessageActions as u, imessageSetupContract as v, normalizeIMessageCliPathForSetup as x, imessageSetupStatusBase as y };
@@ -1,4 +1,4 @@
1
- import { o as resolveIMessageAccount } from "./accounts-Dv0uksBG.mjs";
1
+ import { o as resolveIMessageAccount } from "./accounts-CUxZrTcY.mjs";
2
2
  import { mergeInboundPathRoots } from "openclaw/plugin-sdk/channel-inbound";
3
3
  //#region extensions/imessage/src/media-contract.ts
4
4
  const DEFAULT_IMESSAGE_ATTACHMENT_ROOTS = ["/Users/*/Library/Messages/Attachments"];
@@ -1,5 +1,5 @@
1
1
  import { n as inferIMessageTargetChatType } from "./targets-Cc9vthzI.mjs";
2
- import { c as getCachedIMessageRemoteHost, o as resolveIMessageAccount } from "./accounts-Dv0uksBG.mjs";
2
+ import { c as getCachedIMessageRemoteHost, o as resolveIMessageAccount } from "./accounts-CUxZrTcY.mjs";
3
3
  import { createActionGate } from "openclaw/plugin-sdk/channel-actions";
4
4
  import { Type } from "typebox";
5
5
  import { asDateTimestampMs } from "openclaw/plugin-sdk/number-runtime";
@@ -1,13 +1,13 @@
1
1
  import { c as parseIMessageTarget, o as normalizeIMessageHandle, r as isAllowedIMessageReplyContextSender, s as parseIMessageAllowTarget, t as formatIMessageChatTarget } from "./targets-Cc9vthzI.mjs";
2
- import { d as resolveIMessageChatDbLookupPath, f as resolveIMessageHomeDir, l as resolveIMessageRemoteHost, o as resolveIMessageAccount } from "./accounts-Dv0uksBG.mjs";
3
- import { r as imessageRpcSupportsMethod } from "./message-tool-api-DZSH-2gY.mjs";
4
- import { b as resolveIMessageDirectChatService, d as isKnownFromMeIMessageMessageId, f as rememberIMessageReplyCache, o as createIMessageRpcClient, r as sanitizeOutboundText } from "./sanitize-outbound-o1ePXajW.mjs";
5
- import { d as probeIMessagePrivateApi, r as resolveIMessageInboundConversationId, u as probeIMessage } from "./group-policy-BoOAkmoQ.mjs";
2
+ import { d as resolveIMessageChatDbLookupPath, f as resolveIMessageHomeDir, l as resolveIMessageRemoteHost, o as resolveIMessageAccount } from "./accounts-CUxZrTcY.mjs";
3
+ import { r as imessageRpcSupportsMethod } from "./message-tool-api-pvlcOJPG.mjs";
4
+ import { b as resolveIMessageDirectChatService, d as isKnownFromMeIMessageMessageId, f as rememberIMessageReplyCache, o as createIMessageRpcClient, r as sanitizeOutboundText } from "./sanitize-outbound-sJPF2DVM.mjs";
5
+ import { d as probeIMessage, f as probeIMessagePrivateApi, i as resolveIMessageInboundConversationId, n as resolveIMessageGroupSystemPrompt } from "./group-policy-Cjztkquv.mjs";
6
6
  import { t as getIMessageRuntime } from "./runtime-Cza4CY5T.mjs";
7
7
  import { d as resolveIMessageEchoMediaKey, l as capFailureRetriesMap, t as IMESSAGE_CATCHUP_CURSOR_NAMESPACE, u as resolveIMessageCatchupCursorKey } from "./state-contract-DvahEY4X.mjs";
8
- import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots } from "./media-contract-BpPh5Oh1.mjs";
9
- import { i as registerIMessageApprovalReactionTarget, n as handleIMessageApprovalReaction, o as listPendingIMessageApprovalReactionPollTargets, r as maybeResolveIMessageApprovalReaction, s as buildIMessageApprovalConversationKeyForInbound } from "./approval-reactions-CX1-6KeG.mjs";
10
- import { c as iMessageApprovalControlBindings, n as hasPersistedIMessageEcho, r as stripLeadingEchoTextCorruptionMarkers, s as maybeResolveIMessageApprovalPollVote, t as sendMessageIMessage } from "./send-DXiUWygv.mjs";
8
+ import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots } from "./media-contract-DKJK7rh3.mjs";
9
+ import { i as registerIMessageApprovalReactionTarget, n as handleIMessageApprovalReaction, o as listPendingIMessageApprovalReactionPollTargets, r as maybeResolveIMessageApprovalReaction, s as buildIMessageApprovalConversationKeyForInbound } from "./approval-reactions-D6RFg6lU.mjs";
10
+ import { c as maybeResolveIMessageApprovalPollVote, i as resolveIMessageStartupRowidWatermark, l as iMessageApprovalControlBindings, n as hasPersistedIMessageEcho, r as stripLeadingEchoTextCorruptionMarkers, t as sendMessageIMessage } from "./send-odAfTQ2J.mjs";
11
11
  import { n as normalizeIMessageGuid, t as resolveIMessageReactionContext } from "./reaction-context-Br-vAJFp.mjs";
12
12
  import { n as maybeResolveIMessageQuestionReaction, t as hasIMessageQuestionReactionTarget } from "./question-reactions-lm8OxWbb.mjs";
13
13
  import { asSafeIntegerInRange, hasNonEmptyString, isRecord, normalizeOptionalString, normalizeStringEntries, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -17,9 +17,9 @@ import { resolveAgentRoute, resolveInboundLastRouteSessionKey } from "openclaw/p
17
17
  import path from "node:path";
18
18
  import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
19
19
  import fs from "node:fs/promises";
20
- import { createNonExitingRuntime, danger, logVerbose, shouldLogVerbose, warn } from "openclaw/plugin-sdk/runtime-env";
21
20
  import { isInboundPathAllowed, kindFromMime } from "openclaw/plugin-sdk/media-runtime";
22
- import { asDateTimestampMs, asPositiveFiniteNumber, parseDateStringTimestampMs, resolveIntegerOption, timestampMsToIsoString } from "openclaw/plugin-sdk/number-runtime";
21
+ import { createNonExitingRuntime, danger, logVerbose, shouldLogVerbose, warn } from "openclaw/plugin-sdk/runtime-env";
22
+ import { asDateTimestampMs, asPositiveFiniteNumber, parseDateStringTimestampMs, resolveIntegerOption, resolvePromptHistoryLimit, timestampMsToIsoString } from "openclaw/plugin-sdk/number-runtime";
23
23
  import { createHash } from "node:crypto";
24
24
  import { createRuntimeConfigReader, getRuntimeConfig } from "openclaw/plugin-sdk/runtime-config-snapshot";
25
25
  import { sliceUtf16Safe, truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
@@ -30,17 +30,15 @@ import { buildChannelInboundEventContext, buildMentionRegexes, createAcceptedCha
30
30
  import { resolveAgentConfig, resolveHumanDelayConfig } from "openclaw/plugin-sdk/agent-runtime";
31
31
  import { CHANNEL_APPROVAL_NATIVE_RUNTIME_CONTEXT_CAPABILITY } from "openclaw/plugin-sdk/approval-handler-runtime";
32
32
  import { logTypingFailure } from "openclaw/plugin-sdk/channel-feedback";
33
- import { createChannelIngressResolver, defineStableChannelIngressIdentity, fanInChannelIngressLifecycles } from "openclaw/plugin-sdk/channel-ingress-runtime";
33
+ import { defineStableChannelIngressIdentity, fanInChannelIngressLifecycles } from "openclaw/plugin-sdk/channel-ingress-runtime";
34
34
  import { createChannelPairingChallengeIssuer } from "openclaw/plugin-sdk/channel-pairing";
35
35
  import { registerChannelRuntimeContext } from "openclaw/plugin-sdk/channel-runtime-context";
36
36
  import { ensureConfiguredBindingRouteReady, readChannelAllowFromStore, resolveConfiguredBindingRoute, resolveRuntimeConversationBindingRoute, upsertChannelPairingRequest } from "openclaw/plugin-sdk/conversation-runtime";
37
37
  import { channelReadyPatch } from "openclaw/plugin-sdk/gateway-runtime";
38
38
  import { redactIdentifier } from "openclaw/plugin-sdk/logging-core";
39
- import { DEFAULT_GROUP_HISTORY_LIMIT, createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
40
39
  import { resolveDefaultGroupPolicy, resolveOpenProviderRuntimeGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce } from "openclaw/plugin-sdk/runtime-group-policy";
41
40
  import { FsSafeError, openLocalFileSafely, resolvePinnedMainDmOwnerFromAllowlist } from "openclaw/plugin-sdk/security-runtime";
42
41
  import { getSessionEntry, readSessionUpdatedAt, resolveSendPolicy, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
43
- import { openNodeSqliteDatabase } from "openclaw/plugin-sdk/sqlite-runtime";
44
42
  import { waitForTransportReady } from "openclaw/plugin-sdk/transport-ready-runtime";
45
43
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
46
44
  import { resolveMarkdownTableMode as resolveMarkdownTableMode$1 } from "openclaw/plugin-sdk/markdown-table-runtime";
@@ -51,11 +49,12 @@ import { chunkMarkdownTextWithMode as chunkTextWithMode, resolveChunkMode } from
51
49
  import { createDedupeCache } from "openclaw/plugin-sdk/dedupe-runtime";
52
50
  import { hasControlCommand } from "openclaw/plugin-sdk/command-auth-native";
53
51
  import { resolveChannelContextVisibilityMode } from "openclaw/plugin-sdk/context-visibility-runtime";
52
+ import { createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
54
53
  import { isRecord as isRecord$1 } from "openclaw/plugin-sdk/channel-secret-basic-runtime";
55
54
  import { readFileHandleBounded } from "openclaw/plugin-sdk/file-access-runtime";
56
55
  import { saveMediaBuffer } from "openclaw/plugin-sdk/media-store";
57
56
  import { loadWebMedia } from "openclaw/plugin-sdk/web-media";
58
- import { enqueueSystemEvent } from "openclaw/plugin-sdk/system-event-runtime";
57
+ import { enqueueRoutedSystemEvent } from "openclaw/plugin-sdk/system-event-runtime";
59
58
  //#region extensions/imessage/src/approval-reaction-poller.ts
60
59
  const RECENT_CHAT_LIMIT = 50;
61
60
  const PER_CHAT_HISTORY_LIMIT$1 = 30;
@@ -1480,12 +1479,7 @@ function describeReplyContext(message) {
1480
1479
  }
1481
1480
  function resolveInboundEchoMessageIds(message) {
1482
1481
  const values = [message.id != null ? String(message.id) : void 0, normalizeReplyField(message.guid)];
1483
- const ids = [];
1484
- for (const value of values) {
1485
- if (!value || ids.includes(value)) continue;
1486
- ids.push(value);
1487
- }
1488
- return ids;
1482
+ return uniqueStrings(values.filter((value) => Boolean(value)));
1489
1483
  }
1490
1484
  function rememberIMessageSkippedFromMeForSelfChatDedupe(params) {
1491
1485
  if (params.message.is_from_me !== true) return;
@@ -1543,24 +1537,6 @@ async function isKnownFromMeIMessageReactionTarget(params) {
1543
1537
  for (const messageId of params.messageIds) if (await isKnownFromMe(messageId, ctx)) return true;
1544
1538
  return false;
1545
1539
  }
1546
- /**
1547
- * Per-group `systemPrompt` resolution. Mirrors `resolveWhatsAppGroupSystemPrompt`
1548
- * in `extensions/whatsapp/src/system-prompt.ts`:
1549
- *
1550
- * 1. If the matched per-`chat_id` entry exists AND defines `systemPrompt` (key
1551
- * is present, value is non-null), use it. Trim whitespace; if the trim
1552
- * leaves an empty string, return `undefined` and DO NOT fall through to the
1553
- * wildcard. This is how operators say "this specific group has no prompt"
1554
- * without inheriting from `groups["*"]`.
1555
- * 2. Otherwise, return the wildcard `groups["*"].systemPrompt` (trimmed; empty
1556
- * after trim → `undefined`).
1557
- */
1558
- function resolveIMessageGroupSystemPrompt(params) {
1559
- const specific = params.groupConfig;
1560
- if (specific != null && specific.systemPrompt != null) return specific.systemPrompt.trim() || void 0;
1561
- const wildcard = params.defaultConfig?.systemPrompt;
1562
- return wildcard != null ? wildcard.trim() || void 0 : void 0;
1563
- }
1564
1540
  async function resolveIMessageInboundDecision(params) {
1565
1541
  const sender = (params.message.sender ?? "").trim();
1566
1542
  if (!sender) return {
@@ -1661,13 +1637,14 @@ async function resolveIMessageInboundDecision(params) {
1661
1637
  sender,
1662
1638
  chatId
1663
1639
  });
1664
- const accessDecision = await createChannelIngressResolver({
1640
+ const ingressResolver = getIMessageRuntime().channel.inbound.ingress.createResolver({
1665
1641
  channelId: "imessage",
1666
1642
  accountId: params.accountId,
1667
1643
  identity: imessageIngressIdentity,
1668
1644
  cfg: params.cfg,
1669
1645
  readStoreAllowFrom: async () => params.storeAllowFrom
1670
- }).message({
1646
+ });
1647
+ const resolveChannelIngress = (contextBinding) => ingressResolver.message({
1671
1648
  subject: {
1672
1649
  stableId: sender,
1673
1650
  aliases: {
@@ -1678,13 +1655,9 @@ async function resolveIMessageInboundDecision(params) {
1678
1655
  },
1679
1656
  conversation: {
1680
1657
  kind: isGroup ? "group" : "direct",
1681
- id: isGroup ? String(chatId ?? chatGuid ?? chatIdentifier ?? "unknown") : normalizeIMessageHandle(sender)
1658
+ id: chatId != null ? String(chatId) : sender
1682
1659
  },
1683
- ...reactionContext ? {} : { contextBinding: {
1684
- agentId: route.agentId,
1685
- sessionKey: route.sessionKey,
1686
- inboundEventKind: "user_request"
1687
- } },
1660
+ contextBinding,
1688
1661
  dmPolicy: normalizeDmPolicy(params.dmPolicy),
1689
1662
  groupPolicy: normalizeGroupPolicy(params.groupPolicy),
1690
1663
  policy: { groupAllowFromFallbackToAllowFrom: false },
@@ -1696,7 +1669,7 @@ async function resolveIMessageInboundDecision(params) {
1696
1669
  directGroupAllowFrom: "effective"
1697
1670
  }
1698
1671
  });
1699
- const { commandAccess, senderAccess } = accessDecision;
1672
+ const { commandAccess, senderAccess } = await resolveChannelIngress();
1700
1673
  const effectiveGroupAllowFrom = senderAccess.effectiveGroupAllowFrom;
1701
1674
  if (senderAccess.decision !== "allow") {
1702
1675
  if (isGroup) {
@@ -1941,7 +1914,7 @@ async function resolveIMessageInboundDecision(params) {
1941
1914
  }
1942
1915
  return {
1943
1916
  kind: "dispatch",
1944
- channelIngress: accessDecision,
1917
+ resolveChannelIngress,
1945
1918
  isGroup,
1946
1919
  chatId,
1947
1920
  chatGuid,
@@ -2032,9 +2005,15 @@ async function buildIMessageInboundContext(params) {
2032
2005
  ...entry,
2033
2006
  url: entry.url ?? entry.path
2034
2007
  })));
2008
+ const channelIngress = await decision.resolveChannelIngress({
2009
+ agentId: decision.route.agentId,
2010
+ sessionKey: decision.route.sessionKey,
2011
+ messageId: messageSid,
2012
+ inboundEventKind: "user_request"
2013
+ });
2035
2014
  return {
2036
- ctxPayload: (params.buildContext ?? buildChannelInboundEventContext)({
2037
- channelIngress: decision.channelIngress,
2015
+ ctxPayload: await (params.buildContext ?? buildChannelInboundEventContext)({
2016
+ channelIngress,
2038
2017
  channel: "imessage",
2039
2018
  supplemental: {
2040
2019
  quote: decision.replyContext ? {
@@ -2064,9 +2043,7 @@ async function buildIMessageInboundContext(params) {
2064
2043
  label: conversationName
2065
2044
  },
2066
2045
  route: {
2067
- agentId: decision.route.agentId,
2068
- dmScope: decision.route.dmScope,
2069
- accountId: decision.route.accountId,
2046
+ ...decision.route,
2070
2047
  routeSessionKey: decision.route.sessionKey
2071
2048
  },
2072
2049
  reply: { to: replyTarget },
@@ -2508,10 +2485,7 @@ function renderIMessagePollBody(poll, sender, renderOptions) {
2508
2485
  //#region extensions/imessage/src/monitor/reaction-system-event.ts
2509
2486
  function enqueueIMessageReactionSystemEvent(params) {
2510
2487
  const { decision, runtime } = params;
2511
- const queued = enqueueSystemEvent(decision.text, {
2512
- sessionKey: decision.route.sessionKey,
2513
- contextKey: decision.contextKey
2514
- });
2488
+ const queued = enqueueRoutedSystemEvent(decision.text, decision.route, { contextKey: decision.contextKey });
2515
2489
  runtime.log?.(`imessage: reaction system event ${queued ? "queued" : "deduped"} session=${decision.route.sessionKey} target=${decision.reaction.targetGuid ?? "unknown"} action=${decision.reaction.action} emoji=${decision.reaction.emoji}`);
2516
2490
  params.logVerbose?.(`imessage: reaction event enqueued: ${decision.text}`);
2517
2491
  return queued;
@@ -2835,20 +2809,6 @@ function formatIMessageInboundMediaBody(params) {
2835
2809
  function resolveIMessageWatchSourceDbPath(params) {
2836
2810
  return resolveIMessageChatDbLookupPath(params);
2837
2811
  }
2838
- async function resolveIMessageStartupRowidWatermark(dbPath) {
2839
- let database;
2840
- try {
2841
- database = openNodeSqliteDatabase(dbPath, { readOnly: true });
2842
- const row = database.prepare("SELECT MAX(ROWID) AS maxRowid FROM message").get();
2843
- if (typeof row?.maxRowid === "number" && Number.isFinite(row.maxRowid)) return row.maxRowid;
2844
- return row?.maxRowid === null ? 0 : null;
2845
- } catch (err) {
2846
- logVerbose(`imessage: startup rowid watermark unavailable for db=${dbPath}: ${String(err)}`);
2847
- return null;
2848
- } finally {
2849
- database?.close();
2850
- }
2851
- }
2852
2812
  const warnIfImsgUpgradeNeeded = (() => {
2853
2813
  let fired = false;
2854
2814
  return { fireOnce: (rpcMethods, runtime) => {
@@ -2915,7 +2875,7 @@ async function monitorIMessageProvider(opts = {}) {
2915
2875
  capability: CHANNEL_APPROVAL_GATEWAY_RUNTIME_CONTEXT_CAPABILITY
2916
2876
  });
2917
2877
  const imessageCfg = accountInfo.config;
2918
- const historyLimit = Math.max(0, imessageCfg.historyLimit ?? cfg.messages?.groupChat?.historyLimit ?? DEFAULT_GROUP_HISTORY_LIMIT);
2878
+ const historyLimit = resolvePromptHistoryLimit(imessageCfg.historyLimit ?? cfg.messages?.groupChat?.historyLimit);
2919
2879
  const groupHistories = /* @__PURE__ */ new Map();
2920
2880
  const sentMessageCache = createSentMessageCache();
2921
2881
  const selfChatCache = createSelfChatCache();
@@ -1,9 +1,9 @@
1
- import { p as resolveLocalIMessageChatDbPath } from "./accounts-Dv0uksBG.mjs";
2
- import { _ as chatContextFromIMessageTarget, m as resolveIMessageMessageId, p as resolveIMessageCachedResourceBinding, v as isIMessageEmailChatIdentifier } from "./sanitize-outbound-o1ePXajW.mjs";
1
+ import { p as resolveLocalIMessageChatDbPath } from "./accounts-CUxZrTcY.mjs";
2
+ import { _ as chatContextFromIMessageTarget, m as resolveIMessageMessageId, p as resolveIMessageCachedResourceBinding, v as isIMessageEmailChatIdentifier } from "./sanitize-outbound-sJPF2DVM.mjs";
3
3
  import path from "node:path";
4
4
  import { normalizeScpRemoteHost } from "openclaw/plugin-sdk/host-runtime";
5
- import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
6
5
  import { createActionGate } from "openclaw/plugin-sdk/channel-actions";
6
+ import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
7
7
  import { randomUUID } from "node:crypto";
8
8
  import { runCommandWithTimeout } from "openclaw/plugin-sdk/process-runtime";
9
9
  import { openNodeSqliteDatabase } from "openclaw/plugin-sdk/sqlite-runtime";
@@ -1,5 +1,5 @@
1
- import { u as expandIMessageUserPath } from "./accounts-Dv0uksBG.mjs";
2
- import { i as invalidateCachedIMessagePrivateApiStatus } from "./message-tool-api-DZSH-2gY.mjs";
1
+ import { u as expandIMessageUserPath } from "./accounts-CUxZrTcY.mjs";
2
+ import { i as invalidateCachedIMessagePrivateApiStatus } from "./message-tool-api-pvlcOJPG.mjs";
3
3
  import { t as getIMessageRuntime } from "./runtime-Cza4CY5T.mjs";
4
4
  import { a as IMESSAGE_REPLY_CACHE_NAMESPACE, f as resolveIMessageReplyCacheEntryKey, i as IMESSAGE_REPLY_CACHE_MAX_ENTRIES, n as IMESSAGE_REPLY_CACHE_COUNTER_KEY, o as IMESSAGE_REPLY_CACHE_TTL_MS, r as IMESSAGE_REPLY_CACHE_COUNTER_NAMESPACE } from "./state-contract-DvahEY4X.mjs";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";