@openclaw/imessage 2026.9.4 → 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 (703) hide show
  1. package/assets/activity.svg +40 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/{accounts-CCirBEIm.js → .setup/accounts-CUxZrTcY.mjs} +3 -3
  4. package/dist/{actions.runtime-CzvR20qT.js → .setup/actions.runtime-D0zG_96v.mjs} +106 -176
  5. package/dist/.setup/api-RZv6yXul.mjs +14 -0
  6. package/dist/.setup/api-VLVcFh7r.mjs +10 -0
  7. package/dist/{approval-handler.runtime-B6JGnxQf.js → .setup/approval-handler.runtime-Bv5_XgNr.mjs} +28 -28
  8. package/dist/{approval-reactions-BM_AwHPq.js → .setup/approval-reactions-D6RFg6lU.mjs} +32 -32
  9. package/dist/{channel-BwKxE8Ge.js → .setup/channel-BLTaKdSK.mjs} +38 -17
  10. package/dist/{channel.runtime-BGwNkU9Z.js → .setup/channel.runtime---s2k4YN.mjs} +7 -5
  11. package/dist/{group-policy-Duro87b4.js → .setup/group-policy-Cjztkquv.mjs} +52 -76
  12. package/dist/{media-contract-pns3TSS5.js → .setup/media-contract-DKJK7rh3.mjs} +1 -1
  13. package/dist/.setup/message-tool-api-pvlcOJPG.mjs +148 -0
  14. package/dist/{monitor-xaD-9h0b.js → .setup/monitor-BJ3Ozi6I.mjs} +247 -213
  15. package/dist/{question-reactions-9tBYB1_F.js → .setup/question-reactions-lm8OxWbb.mjs} +2 -2
  16. package/dist/{remote-file-5n5LznCa.js → .setup/remote-file-Bye99O-C.mjs} +12 -9
  17. package/dist/{sanitize-outbound-C6UF2cvr.js → .setup/sanitize-outbound-sJPF2DVM.mjs} +83 -47
  18. package/dist/{send-CIHiLtcY.js → .setup/send-odAfTQ2J.mjs} +178 -175
  19. package/dist/{state-migrations-D-fyHVcb.js → .setup/state-migrations-DIDzI99d.mjs} +3 -3
  20. package/dist/{message-tool-api-CUoFESHj.js → .setup/targets-Cc9vthzI.mjs} +53 -155
  21. package/dist/api.js +9 -14
  22. package/dist/channel-config-api.js +1 -1
  23. package/dist/channel-plugin-api.js +1 -1
  24. package/dist/contract-api.js +1 -1
  25. package/dist/doctor-contract-api.js +1 -1
  26. package/dist/media-contract-api.js +1 -1
  27. package/dist/message-tool-api.js +1 -1
  28. package/dist/runtime-api.js +7 -6
  29. package/dist/session-binding-contract-api.js +1 -1
  30. package/dist/setup-entry.js +2 -1
  31. package/dist/src/chat-db.worker.js +40 -0
  32. package/node_modules/typebox/build/compile/validator.d.mts +1 -1
  33. package/node_modules/typebox/build/compile/validator.mjs +1 -1
  34. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +7 -5
  35. package/node_modules/typebox/build/format/iri.mjs +5 -1
  36. package/node_modules/typebox/build/guard/emit.mjs +2 -4
  37. package/node_modules/typebox/build/guard/guard.mjs +6 -18
  38. package/node_modules/typebox/build/guard/string.mjs +16 -24
  39. package/node_modules/typebox/build/schema/build.mjs +2 -2
  40. package/node_modules/typebox/build/schema/check.mjs +1 -1
  41. package/node_modules/typebox/build/schema/compile.d.mts +3 -2
  42. package/node_modules/typebox/build/schema/compile.mjs +8 -8
  43. package/node_modules/typebox/build/schema/engine/_context.d.mts +6 -7
  44. package/node_modules/typebox/build/schema/engine/_context.mjs +23 -15
  45. package/node_modules/typebox/build/schema/engine/_functions.d.mts +2 -2
  46. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
  47. package/node_modules/typebox/build/schema/engine/_reducer.d.mts +3 -3
  48. package/node_modules/typebox/build/schema/engine/_refine.d.mts +5 -5
  49. package/node_modules/typebox/build/schema/engine/_refine.mjs +4 -7
  50. package/node_modules/typebox/build/schema/engine/_stack.d.mts +34 -16
  51. package/node_modules/typebox/build/schema/engine/_stack.mjs +148 -104
  52. package/node_modules/typebox/build/schema/engine/additionalItems.d.mts +4 -4
  53. package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +8 -8
  54. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +26 -18
  55. package/node_modules/typebox/build/schema/engine/allOf.d.mts +4 -4
  56. package/node_modules/typebox/build/schema/engine/allOf.mjs +3 -3
  57. package/node_modules/typebox/build/schema/engine/anyOf.d.mts +4 -4
  58. package/node_modules/typebox/build/schema/engine/anyOf.mjs +5 -10
  59. package/node_modules/typebox/build/schema/engine/boolean.d.mts +4 -4
  60. package/node_modules/typebox/build/schema/engine/boolean.mjs +2 -6
  61. package/node_modules/typebox/build/schema/engine/const.d.mts +4 -4
  62. package/node_modules/typebox/build/schema/engine/const.mjs +2 -6
  63. package/node_modules/typebox/build/schema/engine/contains.d.mts +4 -4
  64. package/node_modules/typebox/build/schema/engine/contains.mjs +2 -6
  65. package/node_modules/typebox/build/schema/engine/dependencies.d.mts +4 -4
  66. package/node_modules/typebox/build/schema/engine/dependencies.mjs +3 -6
  67. package/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +4 -4
  68. package/node_modules/typebox/build/schema/engine/dependentRequired.mjs +2 -6
  69. package/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +4 -4
  70. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +4 -4
  71. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +11 -7
  72. package/node_modules/typebox/build/schema/engine/enum.d.mts +4 -4
  73. package/node_modules/typebox/build/schema/engine/enum.mjs +2 -6
  74. package/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +4 -4
  75. package/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +2 -6
  76. package/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +4 -4
  77. package/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +2 -6
  78. package/node_modules/typebox/build/schema/engine/format.d.mts +4 -4
  79. package/node_modules/typebox/build/schema/engine/format.mjs +2 -6
  80. package/node_modules/typebox/build/schema/engine/if.d.mts +4 -4
  81. package/node_modules/typebox/build/schema/engine/if.mjs +7 -15
  82. package/node_modules/typebox/build/schema/engine/items.d.mts +4 -4
  83. package/node_modules/typebox/build/schema/engine/items.mjs +1 -1
  84. package/node_modules/typebox/build/schema/engine/maxContains.d.mts +4 -4
  85. package/node_modules/typebox/build/schema/engine/maxContains.mjs +2 -6
  86. package/node_modules/typebox/build/schema/engine/maxItems.d.mts +4 -4
  87. package/node_modules/typebox/build/schema/engine/maxItems.mjs +2 -6
  88. package/node_modules/typebox/build/schema/engine/maxLength.d.mts +4 -4
  89. package/node_modules/typebox/build/schema/engine/maxLength.mjs +2 -6
  90. package/node_modules/typebox/build/schema/engine/maxProperties.d.mts +4 -4
  91. package/node_modules/typebox/build/schema/engine/maxProperties.mjs +2 -6
  92. package/node_modules/typebox/build/schema/engine/maximum.d.mts +4 -4
  93. package/node_modules/typebox/build/schema/engine/maximum.mjs +2 -6
  94. package/node_modules/typebox/build/schema/engine/minContains.d.mts +4 -4
  95. package/node_modules/typebox/build/schema/engine/minContains.mjs +2 -6
  96. package/node_modules/typebox/build/schema/engine/minItems.d.mts +5 -5
  97. package/node_modules/typebox/build/schema/engine/minItems.mjs +2 -6
  98. package/node_modules/typebox/build/schema/engine/minLength.d.mts +4 -4
  99. package/node_modules/typebox/build/schema/engine/minLength.mjs +2 -6
  100. package/node_modules/typebox/build/schema/engine/minProperties.d.mts +4 -4
  101. package/node_modules/typebox/build/schema/engine/minProperties.mjs +2 -6
  102. package/node_modules/typebox/build/schema/engine/minimum.d.mts +4 -4
  103. package/node_modules/typebox/build/schema/engine/minimum.mjs +2 -6
  104. package/node_modules/typebox/build/schema/engine/multipleOf.d.mts +4 -4
  105. package/node_modules/typebox/build/schema/engine/multipleOf.mjs +2 -6
  106. package/node_modules/typebox/build/schema/engine/not.d.mts +4 -4
  107. package/node_modules/typebox/build/schema/engine/not.mjs +4 -8
  108. package/node_modules/typebox/build/schema/engine/oneOf.d.mts +4 -4
  109. package/node_modules/typebox/build/schema/engine/oneOf.mjs +6 -11
  110. package/node_modules/typebox/build/schema/engine/pattern.d.mts +4 -4
  111. package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -7
  112. package/node_modules/typebox/build/schema/engine/patternProperties.d.mts +4 -4
  113. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +1 -1
  114. package/node_modules/typebox/build/schema/engine/prefixItems.d.mts +4 -4
  115. package/node_modules/typebox/build/schema/engine/prefixItems.mjs +1 -1
  116. package/node_modules/typebox/build/schema/engine/properties.d.mts +4 -4
  117. package/node_modules/typebox/build/schema/engine/properties.mjs +1 -1
  118. package/node_modules/typebox/build/schema/engine/propertyNames.d.mts +4 -4
  119. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +4 -10
  120. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +4 -4
  121. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +11 -7
  122. package/node_modules/typebox/build/schema/engine/ref.d.mts +4 -4
  123. package/node_modules/typebox/build/schema/engine/ref.mjs +19 -15
  124. package/node_modules/typebox/build/schema/engine/required.d.mts +4 -4
  125. package/node_modules/typebox/build/schema/engine/required.mjs +2 -6
  126. package/node_modules/typebox/build/schema/engine/schema.d.mts +7 -7
  127. package/node_modules/typebox/build/schema/engine/schema.mjs +137 -133
  128. package/node_modules/typebox/build/schema/engine/type.d.mts +4 -4
  129. package/node_modules/typebox/build/schema/engine/type.mjs +2 -6
  130. package/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +4 -4
  131. package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +5 -9
  132. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +4 -4
  133. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +5 -9
  134. package/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +4 -4
  135. package/node_modules/typebox/build/schema/engine/uniqueItems.mjs +2 -6
  136. package/node_modules/typebox/build/schema/errors.d.mts +2 -2
  137. package/node_modules/typebox/build/schema/errors.mjs +8 -14
  138. package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
  139. package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
  140. package/node_modules/typebox/build/schema/intern/intern.d.mts +11 -0
  141. package/node_modules/typebox/build/schema/intern/intern.mjs +293 -0
  142. package/node_modules/typebox/build/schema/meta/draft_2019_09.d.mts +2 -0
  143. package/node_modules/typebox/build/schema/meta/draft_2019_09.mjs +288 -0
  144. package/node_modules/typebox/build/schema/meta/draft_2020_12.d.mts +2 -0
  145. package/node_modules/typebox/build/schema/meta/draft_2020_12.mjs +300 -0
  146. package/node_modules/typebox/build/schema/meta/draft_3.d.mts +2 -0
  147. package/node_modules/typebox/build/schema/meta/draft_3.mjs +143 -0
  148. package/node_modules/typebox/build/schema/meta/draft_4.d.mts +2 -0
  149. package/node_modules/typebox/build/schema/meta/draft_4.mjs +149 -0
  150. package/node_modules/typebox/build/schema/meta/draft_6.d.mts +2 -0
  151. package/node_modules/typebox/build/schema/meta/draft_6.mjs +155 -0
  152. package/node_modules/typebox/build/schema/meta/draft_7.d.mts +2 -0
  153. package/node_modules/typebox/build/schema/meta/draft_7.mjs +172 -0
  154. package/node_modules/typebox/build/schema/meta/index.d.mts +2 -0
  155. package/node_modules/typebox/build/schema/meta/index.mjs +2 -0
  156. package/node_modules/typebox/build/schema/meta/meta.d.mts +9 -0
  157. package/node_modules/typebox/build/schema/meta/meta.mjs +15 -0
  158. package/node_modules/typebox/build/schema/meta/schema.d.mts +6 -0
  159. package/node_modules/typebox/build/schema/meta/schema.mjs +1 -0
  160. package/node_modules/typebox/build/schema/parse.d.mts +1 -0
  161. package/node_modules/typebox/build/schema/parse.mjs +10 -5
  162. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +8 -3
  163. package/node_modules/typebox/build/schema/resolve/resolve.mjs +268 -139
  164. package/node_modules/typebox/build/schema/schema.d.mts +2 -0
  165. package/node_modules/typebox/build/schema/schema.mjs +2 -0
  166. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -12
  167. package/node_modules/typebox/build/value/errors/errors.mjs +2 -7
  168. package/node_modules/typebox/package.json +1 -1
  169. package/node_modules/typebox/readme.md +59 -89
  170. package/node_modules/zod/README.md +29 -2
  171. package/node_modules/zod/compile.cjs +96 -0
  172. package/node_modules/zod/compile.d.cts +1 -0
  173. package/node_modules/zod/compile.d.ts +1 -0
  174. package/node_modules/zod/compile.js +52 -0
  175. package/node_modules/zod/index.cjs +21 -2
  176. package/node_modules/zod/index.d.cts +1 -2
  177. package/node_modules/zod/index.d.ts +1 -2
  178. package/node_modules/zod/index.js +5 -2
  179. package/node_modules/zod/locales/index.cjs +19 -0
  180. package/node_modules/zod/mini/index.cjs +19 -0
  181. package/node_modules/zod/package.json +20 -8
  182. package/node_modules/zod/src/compile.ts +56 -0
  183. package/node_modules/zod/src/index.ts +5 -2
  184. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  185. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  186. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  187. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  188. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  189. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  190. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  191. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  192. package/node_modules/zod/src/v3/types.ts +5 -5
  193. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  194. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  195. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  196. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  197. package/node_modules/zod/src/v4/classic/external.ts +14 -9
  198. package/node_modules/zod/src/v4/classic/from-json-schema.ts +363 -78
  199. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  200. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  201. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  202. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  203. package/node_modules/zod/src/v4/classic/schemas.ts +640 -375
  204. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  205. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  206. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +186 -0
  207. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +36 -1
  208. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  209. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  210. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  211. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +3 -3
  212. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  213. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +985 -0
  214. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  215. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  216. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  217. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  218. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  219. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  220. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +261 -13
  221. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +20 -0
  222. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  223. package/node_modules/zod/src/v4/classic/tests/error.test.ts +403 -6
  224. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +582 -10
  225. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  226. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  227. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  228. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  229. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  230. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  231. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +319 -0
  232. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +67 -0
  233. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  234. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +215 -0
  235. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  236. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  237. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  238. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  239. package/node_modules/zod/src/v4/classic/tests/number.test.ts +85 -9
  240. package/node_modules/zod/src/v4/classic/tests/object.test.ts +301 -12
  241. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +235 -0
  242. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  243. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  244. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  245. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  246. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  247. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  248. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  249. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +79 -3
  250. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  251. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  252. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  253. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  254. package/node_modules/zod/src/v4/classic/tests/string.test.ts +222 -6
  255. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  256. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +44 -3
  257. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1812 -204
  258. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  259. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  260. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +645 -0
  261. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  262. package/node_modules/zod/src/v4/core/api.ts +87 -35
  263. package/node_modules/zod/src/v4/core/checks.ts +119 -146
  264. package/node_modules/zod/src/v4/core/compile.ts +2313 -0
  265. package/node_modules/zod/src/v4/core/core.ts +99 -22
  266. package/node_modules/zod/src/v4/core/doc.ts +17 -9
  267. package/node_modules/zod/src/v4/core/errors.ts +113 -25
  268. package/node_modules/zod/src/v4/core/index.ts +3 -0
  269. package/node_modules/zod/src/v4/core/json-schema-generator.ts +8 -3
  270. package/node_modules/zod/src/v4/core/json-schema-processors.ts +424 -156
  271. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  272. package/node_modules/zod/src/v4/core/memoizer.ts +331 -0
  273. package/node_modules/zod/src/v4/core/parse.ts +164 -50
  274. package/node_modules/zod/src/v4/core/regexes.ts +42 -15
  275. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  276. package/node_modules/zod/src/v4/core/schemas.ts +1000 -538
  277. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  278. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +1004 -0
  279. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  280. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  281. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  282. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  283. package/node_modules/zod/src/v4/core/tests/compile.test.ts +2036 -0
  284. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  285. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  286. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  287. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  288. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  289. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  290. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  291. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  292. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  293. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +133 -0
  294. package/node_modules/zod/src/v4/core/to-json-schema.ts +283 -48
  295. package/node_modules/zod/src/v4/core/util.ts +454 -157
  296. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  297. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  298. package/node_modules/zod/src/v4/index.ts +3 -3
  299. package/node_modules/zod/src/v4/locales/ar.ts +5 -0
  300. package/node_modules/zod/src/v4/locales/az.ts +5 -0
  301. package/node_modules/zod/src/v4/locales/be.ts +12 -0
  302. package/node_modules/zod/src/v4/locales/bg.ts +5 -0
  303. package/node_modules/zod/src/v4/locales/bn.ts +123 -0
  304. package/node_modules/zod/src/v4/locales/ca.ts +5 -0
  305. package/node_modules/zod/src/v4/locales/ckb.ts +140 -0
  306. package/node_modules/zod/src/v4/locales/cs.ts +5 -0
  307. package/node_modules/zod/src/v4/locales/da.ts +7 -2
  308. package/node_modules/zod/src/v4/locales/de.ts +5 -0
  309. package/node_modules/zod/src/v4/locales/el.ts +3 -0
  310. package/node_modules/zod/src/v4/locales/en.ts +17 -4
  311. package/node_modules/zod/src/v4/locales/eo.ts +5 -0
  312. package/node_modules/zod/src/v4/locales/es.ts +4 -0
  313. package/node_modules/zod/src/v4/locales/fa.ts +5 -0
  314. package/node_modules/zod/src/v4/locales/fi.ts +5 -0
  315. package/node_modules/zod/src/v4/locales/fr-CA.ts +5 -0
  316. package/node_modules/zod/src/v4/locales/fr.ts +21 -14
  317. package/node_modules/zod/src/v4/locales/gu.ts +123 -0
  318. package/node_modules/zod/src/v4/locales/he.ts +8 -1
  319. package/node_modules/zod/src/v4/locales/hi.ts +126 -0
  320. package/node_modules/zod/src/v4/locales/hr.ts +4 -0
  321. package/node_modules/zod/src/v4/locales/hu.ts +5 -0
  322. package/node_modules/zod/src/v4/locales/hy.ts +11 -0
  323. package/node_modules/zod/src/v4/locales/id.ts +5 -0
  324. package/node_modules/zod/src/v4/locales/index.ts +11 -0
  325. package/node_modules/zod/src/v4/locales/is.ts +5 -0
  326. package/node_modules/zod/src/v4/locales/it.ts +5 -0
  327. package/node_modules/zod/src/v4/locales/ja.ts +5 -0
  328. package/node_modules/zod/src/v4/locales/ka.ts +5 -0
  329. package/node_modules/zod/src/v4/locales/km.ts +5 -0
  330. package/node_modules/zod/src/v4/locales/kn.ts +126 -0
  331. package/node_modules/zod/src/v4/locales/ko.ts +5 -0
  332. package/node_modules/zod/src/v4/locales/lt.ts +4 -0
  333. package/node_modules/zod/src/v4/locales/mk.ts +5 -0
  334. package/node_modules/zod/src/v4/locales/ms.ts +5 -0
  335. package/node_modules/zod/src/v4/locales/ne.ts +128 -0
  336. package/node_modules/zod/src/v4/locales/nl.ts +5 -0
  337. package/node_modules/zod/src/v4/locales/nn.ts +121 -0
  338. package/node_modules/zod/src/v4/locales/no.ts +7 -2
  339. package/node_modules/zod/src/v4/locales/ota.ts +5 -0
  340. package/node_modules/zod/src/v4/locales/pl.ts +5 -0
  341. package/node_modules/zod/src/v4/locales/ps.ts +5 -0
  342. package/node_modules/zod/src/v4/locales/pt-BR.ts +161 -0
  343. package/node_modules/zod/src/v4/locales/pt.ts +101 -58
  344. package/node_modules/zod/src/v4/locales/ro.ts +3 -0
  345. package/node_modules/zod/src/v4/locales/ru.ts +12 -0
  346. package/node_modules/zod/src/v4/locales/sk.ts +123 -0
  347. package/node_modules/zod/src/v4/locales/sl.ts +5 -0
  348. package/node_modules/zod/src/v4/locales/sv.ts +7 -2
  349. package/node_modules/zod/src/v4/locales/ta.ts +5 -0
  350. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  351. package/node_modules/zod/src/v4/locales/th.ts +5 -0
  352. package/node_modules/zod/src/v4/locales/tk.ts +113 -0
  353. package/node_modules/zod/src/v4/locales/tr.ts +5 -0
  354. package/node_modules/zod/src/v4/locales/uk.ts +5 -0
  355. package/node_modules/zod/src/v4/locales/ur.ts +5 -0
  356. package/node_modules/zod/src/v4/locales/uz.ts +3 -0
  357. package/node_modules/zod/src/v4/locales/vi.ts +5 -0
  358. package/node_modules/zod/src/v4/locales/yo.ts +5 -0
  359. package/node_modules/zod/src/v4/locales/zh-CN.ts +5 -0
  360. package/node_modules/zod/src/v4/locales/zh-TW.ts +5 -0
  361. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  362. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  363. package/node_modules/zod/src/v4/mini/external.ts +12 -1
  364. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  365. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  366. package/node_modules/zod/src/v4/mini/schemas.ts +167 -63
  367. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  368. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  369. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  370. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  371. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  372. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  373. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  374. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  375. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  376. package/node_modules/zod/src/v4/mini/tests/index.test.ts +158 -5
  377. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  378. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  379. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  380. package/node_modules/zod/src/v4/mini/tests/string.test.ts +44 -0
  381. package/node_modules/zod/v3/ZodError.cjs +41 -12
  382. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  383. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  384. package/node_modules/zod/v3/ZodError.js +22 -12
  385. package/node_modules/zod/v3/errors.cjs +19 -0
  386. package/node_modules/zod/v3/external.cjs +19 -0
  387. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  388. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  389. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  390. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  391. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  392. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  393. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  394. package/node_modules/zod/v3/index.cjs +19 -0
  395. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  396. package/node_modules/zod/v3/types.cjs +26 -5
  397. package/node_modules/zod/v3/types.js +7 -5
  398. package/node_modules/zod/v4/classic/checks.cjs +21 -1
  399. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  400. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  401. package/node_modules/zod/v4/classic/checks.js +1 -1
  402. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  403. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  404. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  405. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  406. package/node_modules/zod/v4/classic/deep-partial.cjs +58 -0
  407. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  408. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  409. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  410. package/node_modules/zod/v4/classic/errors.cjs +62 -34
  411. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  412. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  413. package/node_modules/zod/v4/classic/errors.js +43 -34
  414. package/node_modules/zod/v4/classic/external.cjs +51 -27
  415. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  416. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  417. package/node_modules/zod/v4/classic/external.js +5 -8
  418. package/node_modules/zod/v4/classic/from-json-schema.cjs +376 -75
  419. package/node_modules/zod/v4/classic/from-json-schema.js +357 -75
  420. package/node_modules/zod/v4/classic/in-out.cjs +82 -0
  421. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  422. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  423. package/node_modules/zod/v4/classic/in-out.js +36 -0
  424. package/node_modules/zod/v4/classic/index.cjs +21 -2
  425. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  426. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  427. package/node_modules/zod/v4/classic/index.js +2 -2
  428. package/node_modules/zod/v4/classic/iso.cjs +30 -22
  429. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  430. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  431. package/node_modules/zod/v4/classic/iso.js +2 -17
  432. package/node_modules/zod/v4/classic/parse.cjs +23 -1
  433. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  434. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  435. package/node_modules/zod/v4/classic/parse.js +1 -0
  436. package/node_modules/zod/v4/classic/schemas.cjs +591 -426
  437. package/node_modules/zod/v4/classic/schemas.d.cts +68 -19
  438. package/node_modules/zod/v4/classic/schemas.d.ts +68 -19
  439. package/node_modules/zod/v4/classic/schemas.js +564 -424
  440. package/node_modules/zod/v4/core/api.cjs +66 -24
  441. package/node_modules/zod/v4/core/api.d.cts +22 -12
  442. package/node_modules/zod/v4/core/api.d.ts +22 -12
  443. package/node_modules/zod/v4/core/api.js +44 -24
  444. package/node_modules/zod/v4/core/checks.cjs +88 -128
  445. package/node_modules/zod/v4/core/checks.d.cts +29 -13
  446. package/node_modules/zod/v4/core/checks.d.ts +29 -13
  447. package/node_modules/zod/v4/core/checks.js +68 -127
  448. package/node_modules/zod/v4/core/compile.cjs +1908 -0
  449. package/node_modules/zod/v4/core/compile.d.cts +65 -0
  450. package/node_modules/zod/v4/core/compile.d.ts +65 -0
  451. package/node_modules/zod/v4/core/compile.js +1858 -0
  452. package/node_modules/zod/v4/core/core.cjs +101 -19
  453. package/node_modules/zod/v4/core/core.d.cts +16 -4
  454. package/node_modules/zod/v4/core/core.d.ts +16 -4
  455. package/node_modules/zod/v4/core/core.js +83 -20
  456. package/node_modules/zod/v4/core/doc.cjs +31 -9
  457. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  458. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  459. package/node_modules/zod/v4/core/doc.js +12 -9
  460. package/node_modules/zod/v4/core/errors.cjs +126 -25
  461. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  462. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  463. package/node_modules/zod/v4/core/errors.js +107 -25
  464. package/node_modules/zod/v4/core/index.cjs +24 -1
  465. package/node_modules/zod/v4/core/index.d.cts +3 -0
  466. package/node_modules/zod/v4/core/index.d.ts +3 -0
  467. package/node_modules/zod/v4/core/index.js +3 -0
  468. package/node_modules/zod/v4/core/json-schema-generator.cjs +24 -1
  469. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  470. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  471. package/node_modules/zod/v4/core/json-schema-generator.js +6 -2
  472. package/node_modules/zod/v4/core/json-schema-processors.cjs +441 -156
  473. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  474. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  475. package/node_modules/zod/v4/core/json-schema-processors.js +400 -158
  476. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  477. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  478. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  479. package/node_modules/zod/v4/core/memoizer.cjs +360 -0
  480. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  481. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  482. package/node_modules/zod/v4/core/memoizer.js +311 -0
  483. package/node_modules/zod/v4/core/parse.cjs +148 -46
  484. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  485. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  486. package/node_modules/zod/v4/core/parse.js +127 -45
  487. package/node_modules/zod/v4/core/regexes.cjs +54 -17
  488. package/node_modules/zod/v4/core/regexes.d.cts +5 -0
  489. package/node_modules/zod/v4/core/regexes.d.ts +5 -0
  490. package/node_modules/zod/v4/core/regexes.js +32 -15
  491. package/node_modules/zod/v4/core/registries.cjs +19 -0
  492. package/node_modules/zod/v4/core/registries.js +2 -2
  493. package/node_modules/zod/v4/core/schemas.cjs +785 -386
  494. package/node_modules/zod/v4/core/schemas.d.cts +123 -34
  495. package/node_modules/zod/v4/core/schemas.d.ts +123 -34
  496. package/node_modules/zod/v4/core/schemas.js +753 -386
  497. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  498. package/node_modules/zod/v4/core/to-json-schema.cjs +269 -45
  499. package/node_modules/zod/v4/core/to-json-schema.d.cts +45 -5
  500. package/node_modules/zod/v4/core/to-json-schema.d.ts +45 -5
  501. package/node_modules/zod/v4/core/to-json-schema.js +247 -44
  502. package/node_modules/zod/v4/core/util.cjs +372 -157
  503. package/node_modules/zod/v4/core/util.d.cts +79 -1
  504. package/node_modules/zod/v4/core/util.d.ts +79 -1
  505. package/node_modules/zod/v4/core/util.js +341 -156
  506. package/node_modules/zod/v4/core/versions.cjs +21 -2
  507. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  508. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  509. package/node_modules/zod/v4/core/versions.js +2 -2
  510. package/node_modules/zod/v4/core/visit.cjs +214 -0
  511. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  512. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  513. package/node_modules/zod/v4/core/visit.js +169 -0
  514. package/node_modules/zod/v4/index.cjs +34 -5
  515. package/node_modules/zod/v4/index.d.cts +2 -2
  516. package/node_modules/zod/v4/index.d.ts +2 -2
  517. package/node_modules/zod/v4/index.js +3 -2
  518. package/node_modules/zod/v4/locales/ar.cjs +5 -0
  519. package/node_modules/zod/v4/locales/ar.js +5 -0
  520. package/node_modules/zod/v4/locales/az.cjs +5 -0
  521. package/node_modules/zod/v4/locales/az.js +5 -0
  522. package/node_modules/zod/v4/locales/be.cjs +12 -0
  523. package/node_modules/zod/v4/locales/be.js +12 -0
  524. package/node_modules/zod/v4/locales/bg.cjs +5 -0
  525. package/node_modules/zod/v4/locales/bg.js +5 -0
  526. package/node_modules/zod/v4/locales/bn.cjs +140 -0
  527. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  528. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  529. package/node_modules/zod/v4/locales/bn.js +113 -0
  530. package/node_modules/zod/v4/locales/ca.cjs +5 -0
  531. package/node_modules/zod/v4/locales/ca.js +5 -0
  532. package/node_modules/zod/v4/locales/ckb.cjs +160 -0
  533. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  534. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  535. package/node_modules/zod/v4/locales/ckb.js +133 -0
  536. package/node_modules/zod/v4/locales/cs.cjs +5 -0
  537. package/node_modules/zod/v4/locales/cs.js +5 -0
  538. package/node_modules/zod/v4/locales/da.cjs +7 -2
  539. package/node_modules/zod/v4/locales/da.js +7 -2
  540. package/node_modules/zod/v4/locales/de.cjs +5 -0
  541. package/node_modules/zod/v4/locales/de.js +5 -0
  542. package/node_modules/zod/v4/locales/el.cjs +3 -0
  543. package/node_modules/zod/v4/locales/el.js +3 -0
  544. package/node_modules/zod/v4/locales/en.cjs +16 -4
  545. package/node_modules/zod/v4/locales/en.js +16 -4
  546. package/node_modules/zod/v4/locales/eo.cjs +5 -0
  547. package/node_modules/zod/v4/locales/eo.js +5 -0
  548. package/node_modules/zod/v4/locales/es.cjs +4 -0
  549. package/node_modules/zod/v4/locales/es.js +4 -0
  550. package/node_modules/zod/v4/locales/fa.cjs +5 -0
  551. package/node_modules/zod/v4/locales/fa.js +5 -0
  552. package/node_modules/zod/v4/locales/fi.cjs +5 -0
  553. package/node_modules/zod/v4/locales/fi.js +5 -0
  554. package/node_modules/zod/v4/locales/fr-CA.cjs +5 -0
  555. package/node_modules/zod/v4/locales/fr-CA.js +5 -0
  556. package/node_modules/zod/v4/locales/fr.cjs +18 -14
  557. package/node_modules/zod/v4/locales/fr.js +18 -14
  558. package/node_modules/zod/v4/locales/gu.cjs +140 -0
  559. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  560. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  561. package/node_modules/zod/v4/locales/gu.js +113 -0
  562. package/node_modules/zod/v4/locales/he.cjs +7 -0
  563. package/node_modules/zod/v4/locales/he.js +7 -0
  564. package/node_modules/zod/v4/locales/hi.cjs +138 -0
  565. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  566. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  567. package/node_modules/zod/v4/locales/hi.js +111 -0
  568. package/node_modules/zod/v4/locales/hr.cjs +4 -0
  569. package/node_modules/zod/v4/locales/hr.js +4 -0
  570. package/node_modules/zod/v4/locales/hu.cjs +5 -0
  571. package/node_modules/zod/v4/locales/hu.js +5 -0
  572. package/node_modules/zod/v4/locales/hy.cjs +11 -0
  573. package/node_modules/zod/v4/locales/hy.js +11 -0
  574. package/node_modules/zod/v4/locales/id.cjs +5 -0
  575. package/node_modules/zod/v4/locales/id.js +5 -0
  576. package/node_modules/zod/v4/locales/index.cjs +43 -2
  577. package/node_modules/zod/v4/locales/index.d.cts +11 -0
  578. package/node_modules/zod/v4/locales/index.d.ts +11 -0
  579. package/node_modules/zod/v4/locales/index.js +11 -0
  580. package/node_modules/zod/v4/locales/is.cjs +5 -0
  581. package/node_modules/zod/v4/locales/is.js +5 -0
  582. package/node_modules/zod/v4/locales/it.cjs +5 -0
  583. package/node_modules/zod/v4/locales/it.js +5 -0
  584. package/node_modules/zod/v4/locales/ja.cjs +5 -0
  585. package/node_modules/zod/v4/locales/ja.js +5 -0
  586. package/node_modules/zod/v4/locales/ka.cjs +5 -0
  587. package/node_modules/zod/v4/locales/ka.js +5 -0
  588. package/node_modules/zod/v4/locales/km.cjs +5 -0
  589. package/node_modules/zod/v4/locales/km.js +5 -0
  590. package/node_modules/zod/v4/locales/kn.cjs +143 -0
  591. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  592. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  593. package/node_modules/zod/v4/locales/kn.js +116 -0
  594. package/node_modules/zod/v4/locales/ko.cjs +5 -0
  595. package/node_modules/zod/v4/locales/ko.js +5 -0
  596. package/node_modules/zod/v4/locales/lt.cjs +4 -0
  597. package/node_modules/zod/v4/locales/lt.js +4 -0
  598. package/node_modules/zod/v4/locales/mk.cjs +5 -0
  599. package/node_modules/zod/v4/locales/mk.js +5 -0
  600. package/node_modules/zod/v4/locales/ms.cjs +5 -0
  601. package/node_modules/zod/v4/locales/ms.js +5 -0
  602. package/node_modules/zod/v4/locales/ne.cjs +138 -0
  603. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  604. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  605. package/node_modules/zod/v4/locales/ne.js +111 -0
  606. package/node_modules/zod/v4/locales/nl.cjs +5 -0
  607. package/node_modules/zod/v4/locales/nl.js +5 -0
  608. package/node_modules/zod/v4/locales/nn.cjs +140 -0
  609. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  610. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  611. package/node_modules/zod/v4/locales/nn.js +113 -0
  612. package/node_modules/zod/v4/locales/no.cjs +7 -2
  613. package/node_modules/zod/v4/locales/no.js +7 -2
  614. package/node_modules/zod/v4/locales/ota.cjs +5 -0
  615. package/node_modules/zod/v4/locales/ota.js +5 -0
  616. package/node_modules/zod/v4/locales/pl.cjs +5 -0
  617. package/node_modules/zod/v4/locales/pl.js +5 -0
  618. package/node_modules/zod/v4/locales/ps.cjs +5 -0
  619. package/node_modules/zod/v4/locales/ps.js +5 -0
  620. package/node_modules/zod/v4/locales/pt-BR.cjs +170 -0
  621. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  622. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  623. package/node_modules/zod/v4/locales/pt-BR.js +143 -0
  624. package/node_modules/zod/v4/locales/pt.cjs +89 -55
  625. package/node_modules/zod/v4/locales/pt.js +89 -55
  626. package/node_modules/zod/v4/locales/ro.cjs +3 -0
  627. package/node_modules/zod/v4/locales/ro.js +3 -0
  628. package/node_modules/zod/v4/locales/ru.cjs +12 -0
  629. package/node_modules/zod/v4/locales/ru.js +12 -0
  630. package/node_modules/zod/v4/locales/sk.cjs +143 -0
  631. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  632. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  633. package/node_modules/zod/v4/locales/sk.js +116 -0
  634. package/node_modules/zod/v4/locales/sl.cjs +5 -0
  635. package/node_modules/zod/v4/locales/sl.js +5 -0
  636. package/node_modules/zod/v4/locales/sv.cjs +7 -2
  637. package/node_modules/zod/v4/locales/sv.js +7 -2
  638. package/node_modules/zod/v4/locales/ta.cjs +5 -0
  639. package/node_modules/zod/v4/locales/ta.js +5 -0
  640. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  641. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  642. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  643. package/node_modules/zod/v4/locales/tg.js +117 -0
  644. package/node_modules/zod/v4/locales/th.cjs +5 -0
  645. package/node_modules/zod/v4/locales/th.js +5 -0
  646. package/node_modules/zod/v4/locales/tk.cjs +134 -0
  647. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  648. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  649. package/node_modules/zod/v4/locales/tk.js +107 -0
  650. package/node_modules/zod/v4/locales/tr.cjs +5 -0
  651. package/node_modules/zod/v4/locales/tr.js +5 -0
  652. package/node_modules/zod/v4/locales/uk.cjs +5 -0
  653. package/node_modules/zod/v4/locales/uk.js +5 -0
  654. package/node_modules/zod/v4/locales/ur.cjs +5 -0
  655. package/node_modules/zod/v4/locales/ur.js +5 -0
  656. package/node_modules/zod/v4/locales/uz.cjs +3 -0
  657. package/node_modules/zod/v4/locales/uz.js +3 -0
  658. package/node_modules/zod/v4/locales/vi.cjs +5 -0
  659. package/node_modules/zod/v4/locales/vi.js +5 -0
  660. package/node_modules/zod/v4/locales/yo.cjs +5 -0
  661. package/node_modules/zod/v4/locales/yo.js +5 -0
  662. package/node_modules/zod/v4/locales/zh-CN.cjs +5 -0
  663. package/node_modules/zod/v4/locales/zh-CN.js +5 -0
  664. package/node_modules/zod/v4/locales/zh-TW.cjs +5 -0
  665. package/node_modules/zod/v4/locales/zh-TW.js +5 -0
  666. package/node_modules/zod/v4/mini/checks.cjs +21 -1
  667. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  668. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  669. package/node_modules/zod/v4/mini/checks.js +1 -1
  670. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  671. package/node_modules/zod/v4/mini/deep-partial.cjs +58 -0
  672. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  673. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  674. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  675. package/node_modules/zod/v4/mini/external.cjs +33 -1
  676. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  677. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  678. package/node_modules/zod/v4/mini/external.js +3 -1
  679. package/node_modules/zod/v4/mini/in-out.cjs +82 -0
  680. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  681. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  682. package/node_modules/zod/v4/mini/in-out.js +36 -0
  683. package/node_modules/zod/v4/mini/index.cjs +19 -0
  684. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  685. package/node_modules/zod/v4/mini/parse.cjs +22 -1
  686. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  687. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  688. package/node_modules/zod/v4/mini/parse.js +1 -1
  689. package/node_modules/zod/v4/mini/schemas.cjs +117 -53
  690. package/node_modules/zod/v4/mini/schemas.d.cts +49 -14
  691. package/node_modules/zod/v4/mini/schemas.d.ts +49 -14
  692. package/node_modules/zod/v4/mini/schemas.js +92 -51
  693. package/node_modules/zod/v4-mini/index.cjs +19 -0
  694. package/openclaw.plugin.json +12 -28
  695. package/package.json +12 -7
  696. package/node_modules/zod/src/v4/core/config.ts +0 -15
  697. /package/dist/{config-schema-CCbTcJEV.js → .setup/config-schema-CCbTcJEV.mjs} +0 -0
  698. /package/dist/{conversation-bindings-GDQ_Laxj.js → .setup/conversation-bindings-GDQ_Laxj.mjs} +0 -0
  699. /package/dist/{outbound-send-deps-B-QEsLSM.js → .setup/outbound-send-deps-B-QEsLSM.mjs} +0 -0
  700. /package/dist/{reaction-context-Br-vAJFp.js → .setup/reaction-context-Br-vAJFp.mjs} +0 -0
  701. /package/dist/{rolldown-runtime-D7D4PA-g.js → .setup/rolldown-runtime-D7D4PA-g.mjs} +0 -0
  702. /package/dist/{runtime-Cza4CY5T.js → .setup/runtime-Cza4CY5T.mjs} +0 -0
  703. /package/dist/{state-contract-DvahEY4X.js → .setup/state-contract-DvahEY4X.mjs} +0 -0
@@ -1,8 +1,8 @@
1
- import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount } from "./accounts-CCirBEIm.js";
2
- import { a as IMESSAGE_REPLY_CACHE_NAMESPACE, c as IMESSAGE_SENT_ECHOES_TTL_MS, f as resolveIMessageReplyCacheEntryKey, i as IMESSAGE_REPLY_CACHE_MAX_ENTRIES, l as capFailureRetriesMap, n as IMESSAGE_REPLY_CACHE_COUNTER_KEY, o as IMESSAGE_REPLY_CACHE_TTL_MS, p as resolveIMessageSentEchoEntryKey, r as IMESSAGE_REPLY_CACHE_COUNTER_NAMESPACE, s as IMESSAGE_SENT_ECHOES_NAMESPACE, t as IMESSAGE_CATCHUP_CURSOR_NAMESPACE, u as resolveIMessageCatchupCursorKey } from "./state-contract-DvahEY4X.js";
1
+ import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount } from "./accounts-CUxZrTcY.mjs";
2
+ import { a as IMESSAGE_REPLY_CACHE_NAMESPACE, c as IMESSAGE_SENT_ECHOES_TTL_MS, f as resolveIMessageReplyCacheEntryKey, i as IMESSAGE_REPLY_CACHE_MAX_ENTRIES, l as capFailureRetriesMap, n as IMESSAGE_REPLY_CACHE_COUNTER_KEY, o as IMESSAGE_REPLY_CACHE_TTL_MS, p as resolveIMessageSentEchoEntryKey, r as IMESSAGE_REPLY_CACHE_COUNTER_NAMESPACE, s as IMESSAGE_SENT_ECHOES_NAMESPACE, t as IMESSAGE_CATCHUP_CURSOR_NAMESPACE, u as resolveIMessageCatchupCursorKey } from "./state-contract-DvahEY4X.mjs";
3
+ import { asFiniteNumber, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
3
4
  import fs from "node:fs";
4
5
  import path from "node:path";
5
- import { asFiniteNumber, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { createHash } from "node:crypto";
7
7
  import { fileExists } from "openclaw/plugin-sdk/file-access-runtime";
8
8
  import { resolveStateDir } from "openclaw/plugin-sdk/state-paths";
@@ -1,83 +1,6 @@
1
- import { c as getCachedIMessageRemoteHost, o as resolveIMessageAccount } from "./accounts-CCirBEIm.js";
2
- import { normalizeE164 } from "openclaw/plugin-sdk/account-resolution";
3
- import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
4
- import { createActionGate } from "openclaw/plugin-sdk/channel-actions";
5
- import { Type } from "typebox";
6
- import { asDateTimestampMs } from "openclaw/plugin-sdk/number-runtime";
7
1
  import { createAllowedChatSenderMatcher, parseChatTargetPrefixesOrThrow, resolveServicePrefixedChatTarget, resolveServicePrefixedOrChatAllowTarget } from "openclaw/plugin-sdk/channel-targets";
8
- //#region extensions/imessage/src/actions-contract.ts
9
- const IMESSAGE_ACTIONS = {
10
- react: { gate: "reactions" },
11
- edit: { gate: "edit" },
12
- unsend: { gate: "unsend" },
13
- reply: { gate: "reply" },
14
- sendWithEffect: { gate: "sendWithEffect" },
15
- renameGroup: {
16
- gate: "renameGroup",
17
- groupOnly: true
18
- },
19
- setGroupIcon: {
20
- gate: "setGroupIcon",
21
- groupOnly: true
22
- },
23
- addParticipant: {
24
- gate: "addParticipant",
25
- groupOnly: true
26
- },
27
- removeParticipant: {
28
- gate: "removeParticipant",
29
- groupOnly: true
30
- },
31
- leaveGroup: {
32
- gate: "leaveGroup",
33
- groupOnly: true
34
- },
35
- sendAttachment: { gate: "sendAttachment" },
36
- poll: { gate: "polls" },
37
- "poll-vote": { gate: "polls" }
38
- };
39
- const IMESSAGE_ACTION_NAMES = Object.keys(IMESSAGE_ACTIONS);
40
- //#endregion
41
- //#region extensions/imessage/src/private-api-status.ts
42
- const FOUNDATIONAL_RPC_METHODS = /* @__PURE__ */ new Set([
43
- "chats.list",
44
- "messages.history",
45
- "watch.subscribe",
46
- "watch.unsubscribe",
47
- "send"
48
- ]);
49
- const bridgeStatusCache = /* @__PURE__ */ new Map();
50
- function normalizeCliPath(cliPath) {
51
- return cliPath?.trim() || "imsg";
52
- }
53
- function imessageRpcSupportsMethod(status, method) {
54
- if (!status?.available) return false;
55
- if (status.rpcMethods.length === 0) return FOUNDATIONAL_RPC_METHODS.has(method);
56
- return status.rpcMethods.includes(method);
57
- }
58
- function getCachedIMessagePrivateApiStatus(cliPath) {
59
- const key = normalizeCliPath(cliPath);
60
- const entry = bridgeStatusCache.get(key);
61
- if (!entry) return;
62
- if (entry.expiresAt === 0) return entry.status;
63
- const now = asDateTimestampMs(Date.now());
64
- if (now === void 0 || entry.expiresAt <= now) {
65
- bridgeStatusCache.delete(key);
66
- return;
67
- }
68
- return entry.status;
69
- }
70
- function invalidateCachedIMessagePrivateApiStatus(cliPath) {
71
- bridgeStatusCache.delete(normalizeCliPath(cliPath));
72
- }
73
- function setCachedIMessagePrivateApiStatus(cliPath, status, expiresAt = 0) {
74
- if (expiresAt !== 0 && asDateTimestampMs(expiresAt) === void 0) return;
75
- bridgeStatusCache.set(normalizeCliPath(cliPath), {
76
- status,
77
- expiresAt
78
- });
79
- }
80
- //#endregion
2
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
+ import { normalizeE164 } from "openclaw/plugin-sdk/account-resolution";
81
4
  //#region extensions/imessage/src/target-identifiers.ts
82
5
  const BARE_CHAT_IDENTIFIER_RE = /^[0-9a-f]{32}$/i;
83
6
  function isIMessagePhoneLikeHandle(raw) {
@@ -89,6 +12,55 @@ function normalizeBareIMessageChatIdentifier(raw) {
89
12
  return trimmed.toLowerCase();
90
13
  }
91
14
  //#endregion
15
+ //#region extensions/imessage/src/normalize.ts
16
+ const SERVICE_PREFIXES$1 = [
17
+ "imessage:",
18
+ "sms:",
19
+ "auto:"
20
+ ];
21
+ const CHAT_TARGET_PREFIX_RE = /^(chat_id:|chatid:|chat:|chat_guid:|chatguid:|guid:|chat_identifier:|chatidentifier:|chatident:)/i;
22
+ function normalizeIMessageHandleValue(trimmed) {
23
+ if (trimmed.includes("@")) return normalizeLowercaseStringOrEmpty(trimmed);
24
+ const bareChatIdentifier = normalizeBareIMessageChatIdentifier(trimmed);
25
+ if (bareChatIdentifier) return `chat_identifier:${bareChatIdentifier}`;
26
+ const normalized = isIMessagePhoneLikeHandle(trimmed) ? normalizeE164(trimmed) : "";
27
+ if (normalized) return normalized;
28
+ }
29
+ function normalizeIMessageHandle$1(raw, allowContactName = false) {
30
+ const trimmed = raw.trim();
31
+ if (!trimmed) return "";
32
+ const lowered = normalizeLowercaseStringOrEmpty(trimmed);
33
+ if (lowered.startsWith("imessage:")) return normalizeIMessageHandle$1(trimmed.slice(9));
34
+ if (lowered.startsWith("sms:")) return normalizeIMessageHandle$1(trimmed.slice(4));
35
+ if (lowered.startsWith("auto:")) return normalizeIMessageHandle$1(trimmed.slice(5));
36
+ if (CHAT_TARGET_PREFIX_RE.test(trimmed)) {
37
+ const prefix = trimmed.match(CHAT_TARGET_PREFIX_RE)?.[0];
38
+ if (!prefix) return "";
39
+ const value = trimmed.slice(prefix.length).trim();
40
+ return `${normalizeLowercaseStringOrEmpty(prefix)}${value}`;
41
+ }
42
+ return normalizeIMessageHandleValue(trimmed) ?? (allowContactName ? trimmed.replace(/\s+/g, "") : "");
43
+ }
44
+ function normalizeIMessageMessagingTarget(raw) {
45
+ const trimmed = normalizeOptionalString(raw);
46
+ if (!trimmed) return;
47
+ const lower = normalizeLowercaseStringOrEmpty(trimmed);
48
+ for (const prefix of SERVICE_PREFIXES$1) if (lower.startsWith(prefix)) {
49
+ const normalizedHandle = normalizeIMessageHandle$1(trimmed.slice(prefix.length).trim(), true);
50
+ if (!normalizedHandle) return;
51
+ if (CHAT_TARGET_PREFIX_RE.test(normalizedHandle)) return normalizedHandle;
52
+ return `${prefix}${normalizedHandle}`;
53
+ }
54
+ return normalizeIMessageHandle$1(trimmed) || void 0;
55
+ }
56
+ function looksLikeIMessageTargetId(raw) {
57
+ const trimmed = normalizeOptionalString(raw);
58
+ if (!trimmed) return false;
59
+ if (CHAT_TARGET_PREFIX_RE.test(trimmed)) return true;
60
+ if (normalizeBareIMessageChatIdentifier(trimmed)) return true;
61
+ return /^(imessage:|sms:|auto:)/i.test(trimmed) || trimmed.includes("@") || isIMessagePhoneLikeHandle(trimmed) && Boolean(normalizeE164(trimmed));
62
+ }
63
+ //#endregion
92
64
  //#region extensions/imessage/src/targets.ts
93
65
  const CHAT_ID_PREFIXES = [
94
66
  "chat_id:",
@@ -139,12 +111,7 @@ function normalizeIMessageHandle(raw) {
139
111
  for (const prefix of CHAT_ID_PREFIXES) if (lowered.startsWith(prefix)) return `chat_id:${trimmed.slice(prefix.length).trim()}`;
140
112
  for (const prefix of CHAT_GUID_PREFIXES) if (lowered.startsWith(prefix)) return `chat_guid:${trimmed.slice(prefix.length).trim()}`;
141
113
  for (const prefix of CHAT_IDENTIFIER_PREFIXES) if (lowered.startsWith(prefix)) return `chat_identifier:${trimmed.slice(prefix.length).trim()}`;
142
- if (trimmed.includes("@")) return normalizeLowercaseStringOrEmpty(trimmed);
143
- const bareChatIdentifier = normalizeBareIMessageChatIdentifier(trimmed);
144
- if (bareChatIdentifier) return `chat_identifier:${bareChatIdentifier}`;
145
- const normalized = isIMessagePhoneLikeHandle(trimmed) ? normalizeE164(trimmed) : "";
146
- if (normalized) return normalized;
147
- return trimmed.replace(/\s+/g, "");
114
+ return normalizeIMessageHandleValue(trimmed) ?? trimmed.replace(/\s+/g, "");
148
115
  }
149
116
  function parseIMessageTarget(raw) {
150
117
  const trimmed = raw.trim();
@@ -251,73 +218,4 @@ function formatIMessageChatTarget(chatId) {
251
218
  return `chat_id:${chatId}`;
252
219
  }
253
220
  //#endregion
254
- //#region extensions/imessage/src/message-tool-api.ts
255
- const PRIVATE_API_ACTIONS = /* @__PURE__ */ new Set([
256
- "react",
257
- "edit",
258
- "unsend",
259
- "reply",
260
- "sendWithEffect",
261
- "renameGroup",
262
- "setGroupIcon",
263
- "addParticipant",
264
- "removeParticipant",
265
- "leaveGroup",
266
- "sendAttachment",
267
- "poll",
268
- "poll-vote"
269
- ]);
270
- function isGroupTarget(raw, chatType) {
271
- if (chatType) return chatType !== "direct";
272
- if (!raw) return false;
273
- return inferIMessageTargetChatType(raw) === "group";
274
- }
275
- function describeIMessageMessageTool({ cfg, accountId, chatType, currentChannelId }) {
276
- const account = resolveIMessageAccount({
277
- cfg,
278
- accountId
279
- });
280
- if (!account.enabled || !account.configured) return null;
281
- const cliPath = account.config.cliPath?.trim() || "imsg";
282
- const privateApiStatus = getCachedIMessagePrivateApiStatus(cliPath);
283
- const remote = Boolean(getCachedIMessageRemoteHost({
284
- cliPath,
285
- remoteHost: account.config.remoteHost
286
- }));
287
- const gate = createActionGate(account.config.actions);
288
- const actions = /* @__PURE__ */ new Set();
289
- for (const action of IMESSAGE_ACTION_NAMES) {
290
- const spec = IMESSAGE_ACTIONS[action];
291
- if (!spec?.gate || !gate(spec.gate)) continue;
292
- if (privateApiStatus?.available === false && PRIVATE_API_ACTIONS.has(action)) continue;
293
- if (action === "edit" && privateApiStatus?.selectors && !privateApiStatus.selectors.editMessage && !privateApiStatus.selectors.editMessageItem) continue;
294
- if (action === "unsend" && privateApiStatus?.selectors?.retractMessagePart !== true) continue;
295
- if (action === "poll" && privateApiStatus?.selectors && !privateApiStatus.selectors.pollPayloadMessage) continue;
296
- if (action === "poll-vote" && privateApiStatus?.selectors && !privateApiStatus.selectors.pollVoteMessage) continue;
297
- if (action === "poll-vote" && privateApiStatus && !imessageRpcSupportsMethod(privateApiStatus, "poll.vote")) continue;
298
- actions.add(action);
299
- }
300
- if (!isGroupTarget(currentChannelId, chatType)) {
301
- for (const action of IMESSAGE_ACTION_NAMES) if ("groupOnly" in IMESSAGE_ACTIONS[action] && IMESSAGE_ACTIONS[action].groupOnly) actions.delete(action);
302
- }
303
- if (actions.delete("sendAttachment")) actions.add("upload-file");
304
- return {
305
- actions: Array.from(actions),
306
- ...actions.has("poll-vote") ? { schema: {
307
- properties: {
308
- ...remote ? {
309
- pollOptionId: Type.Optional(Type.String({ description: "Stable iMessage poll option id. Required for Remote Mac over SSH accounts; copy it from the inbound poll options." })),
310
- pollOptionIndex: Type.Optional(Type.Integer({
311
- minimum: 1,
312
- description: "Local iMessage accounts only. Remote Mac accounts must use pollOptionId."
313
- }))
314
- } : {},
315
- pollOptionText: Type.Optional(Type.String({ description: remote ? "Local iMessage accounts only. Remote Mac accounts must use pollOptionId." : "Exact iMessage poll option text." }))
316
- },
317
- actions: ["poll-vote"],
318
- visibility: "all-configured"
319
- } } : {}
320
- };
321
- }
322
- //#endregion
323
- export { IMESSAGE_ACTION_NAMES as _, isAllowedIMessageSender as a, parseIMessageAllowTarget as c, normalizeBareIMessageChatIdentifier as d, getCachedIMessagePrivateApiStatus as f, IMESSAGE_ACTIONS as g, setCachedIMessagePrivateApiStatus as h, isAllowedIMessageReplyContextSender as i, parseIMessageTarget as l, invalidateCachedIMessagePrivateApiStatus as m, formatIMessageChatTarget as n, looksLikeIMessageExplicitTargetId as o, imessageRpcSupportsMethod as p, inferIMessageTargetChatType as r, normalizeIMessageHandle as s, describeIMessageMessageTool as t, isIMessagePhoneLikeHandle as u };
221
+ export { looksLikeIMessageExplicitTargetId as a, parseIMessageTarget as c, isIMessagePhoneLikeHandle as d, isAllowedIMessageSender as i, looksLikeIMessageTargetId as l, inferIMessageTargetChatType as n, normalizeIMessageHandle as o, isAllowedIMessageReplyContextSender as r, parseIMessageAllowTarget as s, formatIMessageChatTarget as t, normalizeIMessageMessagingTarget as u };
package/dist/api.js CHANGED
@@ -1,15 +1,10 @@
1
- import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, r as listEnabledIMessageAccounts } from "./accounts-CCirBEIm.js";
2
- import { _ as IMESSAGE_ACTION_NAMES, a as isAllowedIMessageSender, c as parseIMessageAllowTarget, g as IMESSAGE_ACTIONS, l as parseIMessageTarget, n as formatIMessageChatTarget, o as looksLikeIMessageExplicitTargetId, r as inferIMessageTargetChatType, s as normalizeIMessageHandle } from "./message-tool-api-CUoFESHj.js";
3
- import { m as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./sanitize-outbound-C6UF2cvr.js";
4
- import { a as normalizeIMessageAcpConversationId, c as normalizeIMessageMessagingTarget, f as probeIMessage, i as matchIMessageAcpConversation, n as resolveIMessageGroupToolPolicy, o as resolveIMessageConversationIdFromTarget, r as resolveIMessageInboundConversationId, s as looksLikeIMessageTargetId, t as resolveIMessageGroupRequireMention, v as imessageSetupContract } from "./group-policy-Duro87b4.js";
5
- import { n as createIMessagePluginBase, r as imessageSetupWizard, t as imessagePlugin } from "./channel-BwKxE8Ge.js";
6
- import { t as createIMessageConversationBindingManager } from "./conversation-bindings-GDQ_Laxj.js";
7
- import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./outbound-send-deps-B-QEsLSM.js";
8
- import { createAllowedChatSenderMatcher, parseChatAllowTargetPrefixes, parseChatTargetPrefixesOrThrow, resolveServicePrefixedAllowTarget, resolveServicePrefixedChatTarget, resolveServicePrefixedOrChatAllowTarget, resolveServicePrefixedTarget } from "openclaw/plugin-sdk/channel-targets";
9
- //#region extensions/imessage/src/channel.setup.ts
10
- const imessageSetupPlugin = { ...createIMessagePluginBase({
11
- setupWizard: imessageSetupWizard,
12
- setupContract: imessageSetupContract
13
- }) };
14
- //#endregion
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 "./.setup/targets-Cc9vthzI.mjs";
2
+ import { a as resolveDefaultIMessageAccountId, i as listIMessageAccountIds, o as resolveIMessageAccount, r as listEnabledIMessageAccounts } from "./.setup/accounts-CUxZrTcY.mjs";
3
+ import { o as IMESSAGE_ACTIONS, s as IMESSAGE_ACTION_NAMES } from "./.setup/message-tool-api-pvlcOJPG.mjs";
4
+ import { h as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS } from "./.setup/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 "./.setup/group-policy-Cjztkquv.mjs";
6
+ import { t as imessagePlugin } from "./.setup/channel-BLTaKdSK.mjs";
7
+ import { t as createIMessageConversationBindingManager } from "./.setup/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 "./.setup/api-RZv6yXul.mjs";
9
+ import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./.setup/outbound-send-deps-B-QEsLSM.mjs";
15
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,2 +1,2 @@
1
- import { t as IMessageChannelConfigSchema } from "./config-schema-CCbTcJEV.js";
1
+ import { t as IMessageChannelConfigSchema } from "./.setup/config-schema-CCbTcJEV.mjs";
2
2
  export { IMessageChannelConfigSchema };
@@ -1,2 +1,2 @@
1
- import { t as imessagePlugin } from "./channel-BwKxE8Ge.js";
1
+ import { t as imessagePlugin } from "./.setup/channel-BLTaKdSK.mjs";
2
2
  export { imessagePlugin };
@@ -1,3 +1,3 @@
1
- import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots, t as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS } from "./media-contract-pns3TSS5.js";
1
+ import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots, t as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS } from "./.setup/media-contract-DKJK7rh3.mjs";
2
2
  import "./media-contract-api.js";
3
3
  export { DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, resolveIMessageAttachmentRoots, resolveIMessageAttachmentRoots as resolveInboundAttachmentRoots, resolveIMessageRemoteAttachmentRoots, resolveIMessageRemoteAttachmentRoots as resolveRemoteInboundAttachmentRoots };
@@ -76,7 +76,7 @@ const stateMigrations = [definePluginDoctorMigrationFromPlans({
76
76
  id: "imessage-legacy-state",
77
77
  label: "iMessage legacy state",
78
78
  resolvePlans: async (params) => {
79
- const { detectIMessageLegacyStateMigrations } = await import("./state-migrations-D-fyHVcb.js");
79
+ const { detectIMessageLegacyStateMigrations } = await import("./.setup/state-migrations-DIDzI99d.mjs");
80
80
  return detectIMessageLegacyStateMigrations(params);
81
81
  }
82
82
  })];
@@ -1,2 +1,2 @@
1
- import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots, t as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS } from "./media-contract-pns3TSS5.js";
1
+ import { n as resolveIMessageAttachmentRoots, r as resolveIMessageRemoteAttachmentRoots, t as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS } from "./.setup/media-contract-DKJK7rh3.mjs";
2
2
  export { DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, resolveIMessageAttachmentRoots, resolveIMessageAttachmentRoots as resolveInboundAttachmentRoots, resolveIMessageRemoteAttachmentRoots, resolveIMessageRemoteAttachmentRoots as resolveRemoteInboundAttachmentRoots };
@@ -1,2 +1,2 @@
1
- import { t as describeIMessageMessageTool } from "./message-tool-api-CUoFESHj.js";
1
+ import { t as describeIMessageMessageTool } from "./.setup/message-tool-api-pvlcOJPG.mjs";
2
2
  export { describeIMessageMessageTool as describeMessageTool };
@@ -1,9 +1,10 @@
1
- import { o as resolveIMessageAccount } from "./accounts-CCirBEIm.js";
2
- import { c as normalizeIMessageMessagingTarget, d as imessageMessageActions, f as probeIMessage, n as resolveIMessageGroupToolPolicy, s as looksLikeIMessageTargetId, t as resolveIMessageGroupRequireMention } from "./group-policy-Duro87b4.js";
3
- import { r as setIMessageRuntime } from "./runtime-Cza4CY5T.js";
4
- import { n as IMessageConfigSchema } from "./config-schema-CCbTcJEV.js";
5
- import { t as sendMessageIMessage } from "./send-CIHiLtcY.js";
6
- import { t as monitorIMessageProvider } from "./monitor-xaD-9h0b.js";
1
+ import { l as looksLikeIMessageTargetId, u as normalizeIMessageMessagingTarget } from "./.setup/targets-Cc9vthzI.mjs";
2
+ import { o as resolveIMessageAccount } from "./.setup/accounts-CUxZrTcY.mjs";
3
+ import { d as probeIMessage, r as resolveIMessageGroupToolPolicy, t as resolveIMessageGroupRequireMention, u as imessageMessageActions } from "./.setup/group-policy-Cjztkquv.mjs";
4
+ import { r as setIMessageRuntime } from "./.setup/runtime-Cza4CY5T.mjs";
5
+ import { n as IMessageConfigSchema } from "./.setup/config-schema-CCbTcJEV.mjs";
6
+ import { t as sendMessageIMessage } from "./.setup/send-odAfTQ2J.mjs";
7
+ import { t as monitorIMessageProvider } from "./.setup/monitor-BJ3Ozi6I.mjs";
7
8
  import { formatTrimmedAllowFromEntries } from "openclaw/plugin-sdk/channel-config-helpers";
8
9
  import { PAIRING_APPROVED_MESSAGE } from "openclaw/plugin-sdk/channel-status";
9
10
  import { buildComputedAccountStatusSnapshot, collectStatusIssuesFromLastError } from "openclaw/plugin-sdk/status-helpers";
@@ -1,2 +1,2 @@
1
- import { n as testing, t as createIMessageConversationBindingManager } from "./conversation-bindings-GDQ_Laxj.js";
1
+ import { n as testing, t as createIMessageConversationBindingManager } from "./.setup/conversation-bindings-GDQ_Laxj.mjs";
2
2
  export { createIMessageConversationBindingManager, testing as imessageConversationBindingTesting };
@@ -1,9 +1,10 @@
1
1
  import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entry-contract";
2
+ import { fileURLToPath } from "node:url";
2
3
  //#region extensions/imessage/setup-entry.ts
3
4
  var setup_entry_default = defineBundledChannelSetupEntry({
4
5
  importMetaUrl: import.meta.url,
5
6
  plugin: {
6
- specifier: "./api.js",
7
+ specifier: fileURLToPath(new URL(".setup/api-VLVcFh7r.mjs", import.meta.url).href),
7
8
  exportName: "imessageSetupPlugin"
8
9
  }
9
10
  });
@@ -0,0 +1,40 @@
1
+ import { o as normalizeIMessageHandle } from "../.setup/targets-Cc9vthzI.mjs";
2
+ import { executeSqliteQuerySync, executeSqliteQueryTakeFirstSync, getNodeSqliteKysely, openNodeSqliteDatabase } from "openclaw/plugin-sdk/sqlite-worker-runtime";
3
+ //#region extensions/imessage/src/chat-db.worker.ts
4
+ function appleMessageDateLowerBoundMs(sentAfterMs) {
5
+ if (typeof sentAfterMs !== "number" || !Number.isFinite(sentAfterMs)) return null;
6
+ return Math.max(0, Math.floor((sentAfterMs - 9783072e5 - 5e3) * 1e6));
7
+ }
8
+ function openExistingSqliteWorkerBackend(_input, context) {
9
+ const db = openNodeSqliteDatabase(context.databasePath, { readOnly: true });
10
+ return {
11
+ execute(command) {
12
+ const query = getNodeSqliteKysely(db);
13
+ if (command.type === "startupWatermark") {
14
+ const row = executeSqliteQueryTakeFirstSync(db, query.selectFrom("message").select((eb) => eb.fn.max("ROWID").as("maxRowid")));
15
+ if (typeof row?.maxRowid === "number" && Number.isFinite(row.maxRowid)) return row.maxRowid;
16
+ return row?.maxRowid === null ? 0 : null;
17
+ }
18
+ if (command.type === "messageGuid") {
19
+ const row = executeSqliteQueryTakeFirstSync(db, query.selectFrom("message").select("guid").where("ROWID", "=", command.input.messageId));
20
+ return typeof row?.guid === "string" ? row.guid : null;
21
+ }
22
+ const { target, text, sentAfterMs } = command.input;
23
+ let selection = query.selectFrom("message as m").leftJoin("chat_message_join as cmj", "cmj.message_id", "m.ROWID").leftJoin("chat as c", "c.ROWID", "cmj.chat_id").leftJoin("handle as h", "h.ROWID", "m.handle_id").select("m.guid").where("m.is_from_me", "=", 1);
24
+ if (text) selection = selection.where("m.text", "=", text);
25
+ const lowerBound = appleMessageDateLowerBoundMs(sentAfterMs);
26
+ if (lowerBound !== null) selection = selection.where("m.date", ">=", lowerBound);
27
+ if (target.kind === "chat_id") selection = selection.where("cmj.chat_id", "=", target.chatId);
28
+ else if (target.kind === "chat_guid") selection = selection.where("c.guid", "=", target.chatGuid);
29
+ else if (target.kind === "chat_identifier") selection = selection.where("c.chat_identifier", "=", target.chatIdentifier);
30
+ else selection = selection.where((eb) => eb.or([eb("h.id", "=", normalizeIMessageHandle(target.to)), eb("h.uncanonicalized_id", "=", target.to)]));
31
+ const rows = executeSqliteQuerySync(db, selection.orderBy("m.date", "desc").orderBy("m.ROWID", "desc").limit(10)).rows;
32
+ return typeof rows[0]?.guid === "string" ? rows[0].guid : null;
33
+ },
34
+ close() {
35
+ db.close();
36
+ }
37
+ };
38
+ }
39
+ //#endregion
40
+ export { openExistingSqliteWorkerBackend };
@@ -18,7 +18,7 @@ export declare class Validator<Context extends TProperties = TProperties, Type e
18
18
  Check(value: unknown): value is Encode;
19
19
  /** Validates a value and returns it. Will throw if invalid. */
20
20
  Parse(value: unknown): Encode;
21
- /** Inspects a value and returns a detailed list of validation errors. */
21
+ /** Returns an array of validation errors for the given value. */
22
22
  Errors(value: unknown): TLocalizedValidationError[];
23
23
  /** Cleans a value using the Validator type. */
24
24
  Clean(value: unknown): unknown;
@@ -53,7 +53,7 @@ export class Validator {
53
53
  return Parser(this.Context(), this.Type(), value);
54
54
  throw new ParseError(value, this.Errors(value));
55
55
  }
56
- /** Inspects a value and returns a detailed list of validation errors. */
56
+ /** Returns an array of validation errors for the given value. */
57
57
  Errors(value) {
58
58
  if (this.IsAccelerated() && this.Check(value))
59
59
  return [];
@@ -14,14 +14,16 @@ function IsLabel(value) {
14
14
  // ------------------------------------------------------------------
15
15
  // NormalizeHostname
16
16
  //
17
- // Normalizes a hostname for label validation. Normalizes for NFC
18
- // such that equivalent codepoint sequences can be uniformly
19
- // compared. It also removes codepoints that IDNA mapping ignores,
20
- // and converts full stop variants to ASCII '.' so the hostname can
21
- // be split into labels.
17
+ // Normalizes a hostname for label validation. Maps fullwidth
18
+ // codepoints to their ASCII equivalent (e.g. 'a' U+FF41 maps to
19
+ // 'a'), then normalizes for NFC such that equivalent codepoint
20
+ // sequences can be uniformly compared. It also removes codepoints
21
+ // that IDNA mapping ignores, and converts full stop variants to
22
+ // ASCII '.' so the hostname can be split into labels.
22
23
  // ------------------------------------------------------------------
23
24
  function NormalizeHostname(value) {
24
25
  return value
26
+ .replace(/[\uff01-\uff5e]/g, (char) => String.fromCharCode(char.charCodeAt(0) - 0xfee0)) // RE_FULLWIDTH_MAPPING
25
27
  .normalize('NFC')
26
28
  .replace(/[\u00ad\u034f\u180b-\u180d\u200b\ufe00-\ufe0f\u{e0100}-\u{e01ef}]/gu, '') // RE_IGNORED_MAPPING
27
29
  .replace(/[\u002E\u3002\uFF0E\uFF61]/g, '.'); // RE_FULL_STOP_MAPPING
@@ -2,6 +2,7 @@
2
2
  const IpvFutureMatchMaxLength = 2048;
3
3
  const IpvFutureMatch = /\[[vV][0-9a-fA-F]+\.[^\]]+\]/; // Guarded By IpvFutureMatchMaxLength
4
4
  const InvalidIriChars = /[\x00-\x20<>\^`{|}\\]/;
5
+ const InvalidPercentEncoding = /%(?![0-9a-fA-F]{2})/;
5
6
  // ------------------------------------------------------------------
6
7
  // NarrowIpvFuture
7
8
  //
@@ -26,6 +27,9 @@ export function IsIri(value) {
26
27
  // 1. Reject strings containing unencoded whitespace or illegal control characters.
27
28
  if (InvalidIriChars.test(value))
28
29
  return false;
29
- // 2. Delegate to the native URL parser, patching the IPvFuture edge case beforehand.
30
+ // 2. Reject malformed percent-encoding triplets.
31
+ if (InvalidPercentEncoding.test(value))
32
+ return false;
33
+ // 3. Delegate to the native URL parser, patching the IPvFuture edge case beforehand.
30
34
  return URL.canParse(NarrowIpvFuture(value));
31
35
  }
@@ -106,15 +106,13 @@ export function IsMaxLength(value, length) {
106
106
  // Array
107
107
  // --------------------------------------------------------------------------
108
108
  export function Every(value, offset, params, expression) {
109
- return G.IsEqual(offset, '0')
110
- ? `${value}.every((${params[0]}, ${params[1]}) => ${expression})`
111
- : `((value, callback) => { for(let index = ${offset}; index < value.length; index++) if (!callback(value[index], index)) return false; return true })(${value}, (${params[0]}, ${params[1]}) => ${expression})`;
109
+ return G.IsEqual(offset, '0') ? `${value}.every((${params[0]}, ${params[1]}) => (${expression}))` : `${value}.every((${params[0]}, ${params[1]}) => (${params[1]} < ${offset}) || (${expression}))`;
112
110
  }
113
111
  export function Some(value, params, expression) {
114
112
  return `${value}.some((${params[0]}, ${params[1]}) => ${expression})`;
115
113
  }
116
114
  export function SomeAll(value, params, expression) {
117
- return `((value, callback) => { let result = false; for(let index = 0; index < value.length; index++) if (callback(value[index], index)) result = true; return result })(${value}, (${params[0]}, ${params[1]}) => ${expression})`;
115
+ return `((value) => { let result = false; value.forEach((${params[0]}, ${params[1]}) => { if (${expression}) result = true }); return result })(${value})`;
118
116
  }
119
117
  export function Counted(value, params, expression) {
120
118
  return `${value}.reduce((result, ${params[0]}, ${params[1]}) => (${expression}) ? ++result : result, 0)`;
@@ -140,36 +140,24 @@ export function IsMinLength(value, length) {
140
140
  // --------------------------------------------------------------------------
141
141
  /** Returns true if every element from offset satisfies the callback, short-circuiting on the first failure */
142
142
  export function Every(value, offset, callback) {
143
- for (let index = offset; index < value.length; index++) {
144
- if (!callback(value[index], index))
145
- return false;
146
- }
147
- return true;
143
+ return value.every((item, index) => (index < offset) || callback(item, index));
148
144
  }
149
145
  /** Returns true if every element from offset satisfies the callback, using exhaustive enumeration */
150
146
  export function EveryAll(value, offset, callback) {
151
147
  let result = true;
152
- for (let index = offset; index < value.length; index++) {
153
- if (!callback(value[index], index))
154
- result = false;
155
- }
148
+ value.forEach((item, index) => { if ((index >= offset) && !callback(item, index))
149
+ result = false; });
156
150
  return result;
157
151
  }
158
152
  /** Returns true if some element satisfies the callback, short-circuiting on the first success */
159
153
  export function Some(value, callback) {
160
- for (let index = 0; index < value.length; index++) {
161
- if (callback(value[index], index))
162
- return true;
163
- }
164
- return false;
154
+ return value.some((value, index) => callback(value, index));
165
155
  }
166
156
  /** Returns true if some element satisfies the callback, using exhaustive enumeration */
167
157
  export function SomeAll(value, callback) {
168
158
  let result = false;
169
- for (let index = 0; index < value.length; index++) {
170
- if (callback(value[index], index))
171
- result = true;
172
- }
159
+ value.forEach((item, index) => { if (callback(item, index))
160
+ result = true; });
173
161
  return result;
174
162
  }
175
163
  /** Returns the count of elements that satisfy the callback */
@@ -84,10 +84,11 @@ function NextGraphemeClusterIndex(value, clusterStart) {
84
84
  // IsGraphemeCodePoint
85
85
  // --------------------------------------------------------------------------
86
86
  function IsGraphemeCodePoint(value) {
87
- return (IsHighSurrogate(value) ||
87
+ return ((value >= 0x0300) && ( // above special range
88
+ IsHighSurrogate(value) ||
88
89
  IsCombiningMark(value) ||
89
90
  IsVariationSelector(value) ||
90
- IsZeroWidthJoiner(value));
91
+ IsZeroWidthJoiner(value)));
91
92
  }
92
93
  // --------------------------------------------------------------------------
93
94
  // GraphemeCount
@@ -103,30 +104,22 @@ export function GraphemeCount(value) {
103
104
  return count;
104
105
  }
105
106
  // --------------------------------------------------------------------------
106
- // IsMinLength
107
+ // IsMinLengthSegmented
107
108
  // --------------------------------------------------------------------------
108
109
  /** Checks if a string has at least a minimum number of grapheme clusters */
109
110
  function IsMinLengthSegmented(value, minLength) {
110
- // ----------------------------------------------------------------
111
- // Inaccessible via public interface (review)
112
- //
113
- // deno-coverage-ignore-start
114
- // ----------------------------------------------------------------
115
- if (minLength === 0)
116
- return true; // 0-length
117
- // deno-coverage-ignore-stop
111
+ // if (minLength === 0) return true // 0-length (unreachable)
118
112
  let count = 0;
119
113
  let index = 0;
120
114
  while (index < value.length) {
121
115
  index = NextGraphemeClusterIndex(value, index);
122
- count++;
123
- if (count >= minLength)
116
+ if ((++count) >= minLength)
124
117
  return true;
125
118
  }
126
119
  return false;
127
120
  }
128
121
  // --------------------------------------------------------------------------
129
- // IsMaxLength
122
+ // IsMaxLengthSegmented
130
123
  // --------------------------------------------------------------------------
131
124
  /** Checks if a string has at most a maximum number of grapheme clusters */
132
125
  function IsMaxLengthSegmented(value, maxLength) {
@@ -134,8 +127,7 @@ function IsMaxLengthSegmented(value, maxLength) {
134
127
  let index = 0;
135
128
  while (index < value.length) {
136
129
  index = NextGraphemeClusterIndex(value, index);
137
- count++;
138
- if (count > maxLength)
130
+ if ((++count) > maxLength)
139
131
  return false;
140
132
  }
141
133
  return true;
@@ -147,30 +139,30 @@ function IsMaxLengthSegmented(value, maxLength) {
147
139
  export function IsMinLength(value, minLength) {
148
140
  if (minLength === 0)
149
141
  return true; // 0-length
142
+ if (value.length < minLength)
143
+ return false; // length is upper bound on grapheme count
150
144
  let index = 0;
151
- while (index < value.length) {
145
+ while (true) {
152
146
  if (IsGraphemeCodePoint(value.charCodeAt(index))) {
153
147
  return IsMinLengthSegmented(value, minLength);
154
148
  }
155
- index++;
156
- if (index >= minLength)
149
+ if ((++index) >= minLength)
157
150
  return true;
158
151
  }
159
- return false;
160
152
  }
161
153
  // --------------------------------------------------------------------------
162
154
  // IsMaxLengthFast
163
155
  // --------------------------------------------------------------------------
164
156
  /** Fast check for maximum grapheme length, falls back to full check if needed */
165
157
  export function IsMaxLength(value, maxLength) {
158
+ if (value.length <= maxLength)
159
+ return true; // length is upper bound on grapheme count
166
160
  let index = 0;
167
- while (index < value.length) {
161
+ while (true) {
168
162
  if (IsGraphemeCodePoint(value.charCodeAt(index))) {
169
163
  return IsMaxLengthSegmented(value, maxLength);
170
164
  }
171
- index++;
172
- if (index > maxLength)
165
+ if ((++index) > maxLength)
173
166
  return false;
174
167
  }
175
- return true;
176
168
  }