@openclaw/signal 2026.9.4 → 2026.9.5

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 (525) hide show
  1. package/assets/activity.svg +40 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/{accounts-DO4HMqaK.js → .setup/accounts-BV6tDOTc.mjs} +20 -5
  4. package/dist/.setup/api-Cu01dJRP.mjs +12 -0
  5. package/dist/.setup/api-DbdeJVQ8.mjs +17 -0
  6. package/dist/{approval-auth-pNCKKotV.js → .setup/approval-auth-BBI9BTRm.mjs} +3 -3
  7. package/dist/{approval-handler.runtime-DCPJkIqo.js → .setup/approval-handler.runtime-Clf_1IZj.mjs} +11 -11
  8. package/dist/{approval-reactions-CjhdkJ8P.js → .setup/approval-reactions-B25QoVJc.mjs} +14 -14
  9. package/dist/{channel-CyQvEuyA.js → .setup/channel-gMpZmqLx.mjs} +56 -33
  10. package/dist/{channel.runtime--koF_1H0.js → .setup/channel.runtime-Dqc18A1e.mjs} +3 -3
  11. package/dist/{client-B3C0ciqU.js → .setup/client-BseAt7F7.mjs} +311 -41
  12. package/dist/{client-adapter-CNc5wzzs.js → .setup/client-adapter-dvFa47YL.mjs} +1 -1
  13. package/dist/{config-schema-DfEbpMVQ.js → .setup/config-schema-aQwwMGUj.mjs} +19 -3
  14. package/dist/{doctor-contract-api-D0SnglP4.js → .setup/doctor-contract-api-Rbq_sRTI.mjs} +79 -15
  15. package/dist/{install-signal-cli-QlEIfWBv.js → .setup/install-signal-cli-bXeTrTyL.mjs} +3 -4
  16. package/dist/{monitor-BiNWxMB3.js → .setup/monitor-DAMQw1pZ.mjs} +32 -20
  17. package/dist/{probe-kOJqyjWz.js → .setup/probe-IKCS9D-z.mjs} +3 -3
  18. package/dist/{question-reactions-BFR9Mf-O.js → .setup/question-reactions-DSNAD0cd.mjs} +3 -3
  19. package/dist/{reaction-runtime-api-CWqDv5-q.js → .setup/reaction-runtime-api-BnQGHcrB.mjs} +6 -5
  20. package/dist/{rpc-context-dXSy4NtF.js → .setup/rpc-context-CwwADZ1b.mjs} +1 -1
  21. package/dist/{send-Bz0x0JC1.js → .setup/send-CcetN4rk.mjs} +7 -6
  22. package/dist/{send.runtime-CeV1p7Sq.js → .setup/send.runtime-B7C4IP23.mjs} +1 -1
  23. package/dist/{transport-detection-Do2pYMAH.js → .setup/transport-detection-CqyR2vG8.mjs} +50 -21
  24. package/dist/{transport-detection.runtime-QasZp3BE.js → .setup/transport-detection.runtime-CW1lp2d9.mjs} +1 -1
  25. package/dist/{transport-policy-DxvSMHp9.js → .setup/transport-policy-5VSnj5ma.mjs} +2 -33
  26. package/dist/.setup/transport-probes.runtime-WprAyBbL.mjs +2 -0
  27. package/dist/.setup/transport-url-CAC0JcuI.mjs +55 -0
  28. package/dist/api.js +11 -16
  29. package/dist/channel-config-api.js +1 -1
  30. package/dist/channel-plugin-api.js +1 -1
  31. package/dist/contract-api.js +4 -4
  32. package/dist/doctor-contract-api.js +1 -1
  33. package/dist/reaction-runtime-api.js +1 -1
  34. package/dist/runtime-api.js +9 -9
  35. package/dist/setup-entry.js +2 -1
  36. package/node_modules/zod/README.md +27 -0
  37. package/node_modules/zod/compile.cjs +77 -0
  38. package/node_modules/zod/compile.d.cts +1 -0
  39. package/node_modules/zod/compile.d.ts +1 -0
  40. package/node_modules/zod/compile.js +52 -0
  41. package/node_modules/zod/index.cjs +2 -2
  42. package/node_modules/zod/index.d.cts +1 -2
  43. package/node_modules/zod/index.d.ts +1 -2
  44. package/node_modules/zod/index.js +5 -2
  45. package/node_modules/zod/package.json +13 -2
  46. package/node_modules/zod/src/compile.ts +56 -0
  47. package/node_modules/zod/src/index.ts +5 -2
  48. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  49. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  50. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  51. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  52. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  53. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  54. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  55. package/node_modules/zod/src/v3/types.ts +5 -5
  56. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  57. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  58. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  59. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  60. package/node_modules/zod/src/v4/classic/external.ts +12 -9
  61. package/node_modules/zod/src/v4/classic/from-json-schema.ts +140 -78
  62. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  63. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  64. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  65. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  66. package/node_modules/zod/src/v4/classic/schemas.ts +452 -262
  67. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  68. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  69. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +135 -0
  70. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +30 -1
  71. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  72. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  73. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  74. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  75. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  76. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +720 -0
  77. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  78. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  79. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  80. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  81. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  82. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  83. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +155 -13
  84. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +11 -0
  85. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  86. package/node_modules/zod/src/v4/classic/tests/error.test.ts +274 -6
  87. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +425 -10
  88. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  89. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  90. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  91. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  92. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  93. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +281 -0
  94. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +47 -0
  95. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  96. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +183 -0
  97. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  98. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  99. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  100. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  101. package/node_modules/zod/src/v4/classic/tests/number.test.ts +46 -9
  102. package/node_modules/zod/src/v4/classic/tests/object.test.ts +245 -12
  103. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +234 -0
  104. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  105. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  106. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  107. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  108. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  109. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +33 -2
  110. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  111. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  112. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  113. package/node_modules/zod/src/v4/classic/tests/string.test.ts +127 -5
  114. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  115. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +11 -2
  116. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1585 -173
  117. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  118. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  119. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +76 -0
  120. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  121. package/node_modules/zod/src/v4/core/api.ts +48 -12
  122. package/node_modules/zod/src/v4/core/checks.ts +57 -44
  123. package/node_modules/zod/src/v4/core/compile.ts +2188 -0
  124. package/node_modules/zod/src/v4/core/core.ts +98 -19
  125. package/node_modules/zod/src/v4/core/doc.ts +11 -7
  126. package/node_modules/zod/src/v4/core/errors.ts +115 -24
  127. package/node_modules/zod/src/v4/core/index.ts +3 -0
  128. package/node_modules/zod/src/v4/core/json-schema-generator.ts +6 -1
  129. package/node_modules/zod/src/v4/core/json-schema-processors.ts +257 -93
  130. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  131. package/node_modules/zod/src/v4/core/memoizer.ts +284 -0
  132. package/node_modules/zod/src/v4/core/parse.ts +131 -38
  133. package/node_modules/zod/src/v4/core/regexes.ts +30 -13
  134. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  135. package/node_modules/zod/src/v4/core/schemas.ts +759 -461
  136. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +969 -0
  137. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  138. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  139. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  140. package/node_modules/zod/src/v4/core/tests/compile.test.ts +1639 -0
  141. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  142. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  143. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  144. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  145. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  146. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  147. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +31 -0
  148. package/node_modules/zod/src/v4/core/to-json-schema.ts +275 -42
  149. package/node_modules/zod/src/v4/core/util.ts +268 -42
  150. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  151. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  152. package/node_modules/zod/src/v4/index.ts +3 -3
  153. package/node_modules/zod/src/v4/locales/ar.ts +3 -0
  154. package/node_modules/zod/src/v4/locales/az.ts +3 -0
  155. package/node_modules/zod/src/v4/locales/be.ts +10 -0
  156. package/node_modules/zod/src/v4/locales/bg.ts +3 -0
  157. package/node_modules/zod/src/v4/locales/bn.ts +121 -0
  158. package/node_modules/zod/src/v4/locales/ca.ts +3 -0
  159. package/node_modules/zod/src/v4/locales/ckb.ts +138 -0
  160. package/node_modules/zod/src/v4/locales/cs.ts +3 -0
  161. package/node_modules/zod/src/v4/locales/da.ts +5 -2
  162. package/node_modules/zod/src/v4/locales/de.ts +3 -0
  163. package/node_modules/zod/src/v4/locales/el.ts +1 -0
  164. package/node_modules/zod/src/v4/locales/en.ts +15 -4
  165. package/node_modules/zod/src/v4/locales/eo.ts +3 -0
  166. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  167. package/node_modules/zod/src/v4/locales/fa.ts +3 -0
  168. package/node_modules/zod/src/v4/locales/fi.ts +3 -0
  169. package/node_modules/zod/src/v4/locales/fr-CA.ts +3 -0
  170. package/node_modules/zod/src/v4/locales/fr.ts +19 -14
  171. package/node_modules/zod/src/v4/locales/gu.ts +121 -0
  172. package/node_modules/zod/src/v4/locales/he.ts +6 -1
  173. package/node_modules/zod/src/v4/locales/hi.ts +124 -0
  174. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  175. package/node_modules/zod/src/v4/locales/hu.ts +3 -0
  176. package/node_modules/zod/src/v4/locales/hy.ts +9 -0
  177. package/node_modules/zod/src/v4/locales/id.ts +3 -0
  178. package/node_modules/zod/src/v4/locales/index.ts +10 -0
  179. package/node_modules/zod/src/v4/locales/is.ts +3 -0
  180. package/node_modules/zod/src/v4/locales/it.ts +3 -0
  181. package/node_modules/zod/src/v4/locales/ja.ts +3 -0
  182. package/node_modules/zod/src/v4/locales/ka.ts +3 -0
  183. package/node_modules/zod/src/v4/locales/km.ts +3 -0
  184. package/node_modules/zod/src/v4/locales/kn.ts +124 -0
  185. package/node_modules/zod/src/v4/locales/ko.ts +3 -0
  186. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  187. package/node_modules/zod/src/v4/locales/mk.ts +3 -0
  188. package/node_modules/zod/src/v4/locales/ms.ts +3 -0
  189. package/node_modules/zod/src/v4/locales/ne.ts +126 -0
  190. package/node_modules/zod/src/v4/locales/nl.ts +3 -0
  191. package/node_modules/zod/src/v4/locales/nn.ts +119 -0
  192. package/node_modules/zod/src/v4/locales/no.ts +5 -2
  193. package/node_modules/zod/src/v4/locales/ota.ts +3 -0
  194. package/node_modules/zod/src/v4/locales/pl.ts +3 -0
  195. package/node_modules/zod/src/v4/locales/ps.ts +3 -0
  196. package/node_modules/zod/src/v4/locales/pt-BR.ts +159 -0
  197. package/node_modules/zod/src/v4/locales/pt.ts +99 -58
  198. package/node_modules/zod/src/v4/locales/ro.ts +1 -0
  199. package/node_modules/zod/src/v4/locales/ru.ts +10 -0
  200. package/node_modules/zod/src/v4/locales/sk.ts +121 -0
  201. package/node_modules/zod/src/v4/locales/sl.ts +3 -0
  202. package/node_modules/zod/src/v4/locales/sv.ts +5 -2
  203. package/node_modules/zod/src/v4/locales/ta.ts +3 -0
  204. package/node_modules/zod/src/v4/locales/th.ts +3 -0
  205. package/node_modules/zod/src/v4/locales/tk.ts +111 -0
  206. package/node_modules/zod/src/v4/locales/tr.ts +3 -0
  207. package/node_modules/zod/src/v4/locales/uk.ts +3 -0
  208. package/node_modules/zod/src/v4/locales/ur.ts +3 -0
  209. package/node_modules/zod/src/v4/locales/uz.ts +1 -0
  210. package/node_modules/zod/src/v4/locales/vi.ts +3 -0
  211. package/node_modules/zod/src/v4/locales/yo.ts +3 -0
  212. package/node_modules/zod/src/v4/locales/zh-CN.ts +3 -0
  213. package/node_modules/zod/src/v4/locales/zh-TW.ts +3 -0
  214. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  215. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  216. package/node_modules/zod/src/v4/mini/external.ts +10 -1
  217. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  218. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  219. package/node_modules/zod/src/v4/mini/schemas.ts +135 -56
  220. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  221. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  222. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  223. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  224. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  225. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  226. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  227. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  228. package/node_modules/zod/src/v4/mini/tests/index.test.ts +72 -5
  229. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  230. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  231. package/node_modules/zod/src/v4/mini/tests/string.test.ts +21 -0
  232. package/node_modules/zod/v3/ZodError.cjs +22 -12
  233. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  234. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  235. package/node_modules/zod/v3/ZodError.js +22 -12
  236. package/node_modules/zod/v3/types.cjs +7 -5
  237. package/node_modules/zod/v3/types.js +7 -5
  238. package/node_modules/zod/v4/classic/checks.cjs +2 -1
  239. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  240. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  241. package/node_modules/zod/v4/classic/checks.js +1 -1
  242. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  243. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  244. package/node_modules/zod/v4/classic/deep-partial.cjs +39 -0
  245. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  246. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  247. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  248. package/node_modules/zod/v4/classic/errors.cjs +43 -34
  249. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  250. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  251. package/node_modules/zod/v4/classic/errors.js +43 -34
  252. package/node_modules/zod/v4/classic/external.cjs +30 -27
  253. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  254. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  255. package/node_modules/zod/v4/classic/external.js +5 -8
  256. package/node_modules/zod/v4/classic/from-json-schema.cjs +136 -75
  257. package/node_modules/zod/v4/classic/from-json-schema.js +136 -75
  258. package/node_modules/zod/v4/classic/in-out.cjs +63 -0
  259. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  260. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  261. package/node_modules/zod/v4/classic/in-out.js +36 -0
  262. package/node_modules/zod/v4/classic/index.cjs +2 -2
  263. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  264. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  265. package/node_modules/zod/v4/classic/index.js +2 -2
  266. package/node_modules/zod/v4/classic/iso.cjs +11 -22
  267. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  268. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  269. package/node_modules/zod/v4/classic/iso.js +2 -17
  270. package/node_modules/zod/v4/classic/parse.cjs +4 -1
  271. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  272. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  273. package/node_modules/zod/v4/classic/parse.js +1 -0
  274. package/node_modules/zod/v4/classic/schemas.cjs +498 -398
  275. package/node_modules/zod/v4/classic/schemas.d.cts +53 -18
  276. package/node_modules/zod/v4/classic/schemas.d.ts +53 -18
  277. package/node_modules/zod/v4/classic/schemas.js +492 -396
  278. package/node_modules/zod/v4/core/api.cjs +23 -4
  279. package/node_modules/zod/v4/core/api.d.cts +13 -9
  280. package/node_modules/zod/v4/core/api.d.ts +13 -9
  281. package/node_modules/zod/v4/core/api.js +21 -4
  282. package/node_modules/zod/v4/core/checks.cjs +37 -31
  283. package/node_modules/zod/v4/core/checks.d.cts +13 -13
  284. package/node_modules/zod/v4/core/checks.d.ts +13 -13
  285. package/node_modules/zod/v4/core/checks.js +37 -31
  286. package/node_modules/zod/v4/core/compile.cjs +1813 -0
  287. package/node_modules/zod/v4/core/compile.d.cts +51 -0
  288. package/node_modules/zod/v4/core/compile.d.ts +51 -0
  289. package/node_modules/zod/v4/core/compile.js +1783 -0
  290. package/node_modules/zod/v4/core/core.cjs +81 -18
  291. package/node_modules/zod/v4/core/core.d.cts +16 -4
  292. package/node_modules/zod/v4/core/core.d.ts +16 -4
  293. package/node_modules/zod/v4/core/core.js +82 -19
  294. package/node_modules/zod/v4/core/doc.cjs +5 -7
  295. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  296. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  297. package/node_modules/zod/v4/core/doc.js +5 -7
  298. package/node_modules/zod/v4/core/errors.cjs +110 -25
  299. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  300. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  301. package/node_modules/zod/v4/core/errors.js +110 -25
  302. package/node_modules/zod/v4/core/index.cjs +5 -1
  303. package/node_modules/zod/v4/core/index.d.cts +3 -0
  304. package/node_modules/zod/v4/core/index.d.ts +3 -0
  305. package/node_modules/zod/v4/core/index.js +3 -0
  306. package/node_modules/zod/v4/core/json-schema-generator.cjs +4 -0
  307. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  308. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  309. package/node_modules/zod/v4/core/json-schema-generator.js +4 -0
  310. package/node_modules/zod/v4/core/json-schema-processors.cjs +264 -95
  311. package/node_modules/zod/v4/core/json-schema-processors.js +243 -97
  312. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  313. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  314. package/node_modules/zod/v4/core/memoizer.cjs +272 -0
  315. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  316. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  317. package/node_modules/zod/v4/core/memoizer.js +265 -0
  318. package/node_modules/zod/v4/core/parse.cjs +96 -34
  319. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  320. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  321. package/node_modules/zod/v4/core/parse.js +94 -33
  322. package/node_modules/zod/v4/core/regexes.cjs +27 -15
  323. package/node_modules/zod/v4/core/regexes.d.cts +2 -0
  324. package/node_modules/zod/v4/core/regexes.d.ts +2 -0
  325. package/node_modules/zod/v4/core/regexes.js +24 -13
  326. package/node_modules/zod/v4/core/registries.js +2 -2
  327. package/node_modules/zod/v4/core/schemas.cjs +537 -326
  328. package/node_modules/zod/v4/core/schemas.d.cts +100 -31
  329. package/node_modules/zod/v4/core/schemas.d.ts +100 -31
  330. package/node_modules/zod/v4/core/schemas.js +526 -325
  331. package/node_modules/zod/v4/core/to-json-schema.cjs +242 -39
  332. package/node_modules/zod/v4/core/to-json-schema.d.cts +42 -3
  333. package/node_modules/zod/v4/core/to-json-schema.d.ts +42 -3
  334. package/node_modules/zod/v4/core/to-json-schema.js +241 -39
  335. package/node_modules/zod/v4/core/util.cjs +212 -31
  336. package/node_modules/zod/v4/core/util.d.cts +58 -1
  337. package/node_modules/zod/v4/core/util.d.ts +58 -1
  338. package/node_modules/zod/v4/core/util.js +202 -30
  339. package/node_modules/zod/v4/core/versions.cjs +2 -2
  340. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  341. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  342. package/node_modules/zod/v4/core/versions.js +2 -2
  343. package/node_modules/zod/v4/core/visit.cjs +195 -0
  344. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  345. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  346. package/node_modules/zod/v4/core/visit.js +169 -0
  347. package/node_modules/zod/v4/index.cjs +15 -5
  348. package/node_modules/zod/v4/index.d.cts +2 -2
  349. package/node_modules/zod/v4/index.d.ts +2 -2
  350. package/node_modules/zod/v4/index.js +3 -2
  351. package/node_modules/zod/v4/locales/ar.cjs +3 -0
  352. package/node_modules/zod/v4/locales/ar.js +3 -0
  353. package/node_modules/zod/v4/locales/az.cjs +3 -0
  354. package/node_modules/zod/v4/locales/az.js +3 -0
  355. package/node_modules/zod/v4/locales/be.cjs +10 -0
  356. package/node_modules/zod/v4/locales/be.js +10 -0
  357. package/node_modules/zod/v4/locales/bg.cjs +3 -0
  358. package/node_modules/zod/v4/locales/bg.js +3 -0
  359. package/node_modules/zod/v4/locales/bn.cjs +138 -0
  360. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  361. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  362. package/node_modules/zod/v4/locales/bn.js +111 -0
  363. package/node_modules/zod/v4/locales/ca.cjs +3 -0
  364. package/node_modules/zod/v4/locales/ca.js +3 -0
  365. package/node_modules/zod/v4/locales/ckb.cjs +158 -0
  366. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  367. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  368. package/node_modules/zod/v4/locales/ckb.js +131 -0
  369. package/node_modules/zod/v4/locales/cs.cjs +3 -0
  370. package/node_modules/zod/v4/locales/cs.js +3 -0
  371. package/node_modules/zod/v4/locales/da.cjs +5 -2
  372. package/node_modules/zod/v4/locales/da.js +5 -2
  373. package/node_modules/zod/v4/locales/de.cjs +3 -0
  374. package/node_modules/zod/v4/locales/de.js +3 -0
  375. package/node_modules/zod/v4/locales/el.cjs +1 -0
  376. package/node_modules/zod/v4/locales/el.js +1 -0
  377. package/node_modules/zod/v4/locales/en.cjs +14 -4
  378. package/node_modules/zod/v4/locales/en.js +14 -4
  379. package/node_modules/zod/v4/locales/eo.cjs +3 -0
  380. package/node_modules/zod/v4/locales/eo.js +3 -0
  381. package/node_modules/zod/v4/locales/es.cjs +2 -0
  382. package/node_modules/zod/v4/locales/es.js +2 -0
  383. package/node_modules/zod/v4/locales/fa.cjs +3 -0
  384. package/node_modules/zod/v4/locales/fa.js +3 -0
  385. package/node_modules/zod/v4/locales/fi.cjs +3 -0
  386. package/node_modules/zod/v4/locales/fi.js +3 -0
  387. package/node_modules/zod/v4/locales/fr-CA.cjs +3 -0
  388. package/node_modules/zod/v4/locales/fr-CA.js +3 -0
  389. package/node_modules/zod/v4/locales/fr.cjs +16 -14
  390. package/node_modules/zod/v4/locales/fr.js +16 -14
  391. package/node_modules/zod/v4/locales/gu.cjs +138 -0
  392. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  393. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  394. package/node_modules/zod/v4/locales/gu.js +111 -0
  395. package/node_modules/zod/v4/locales/he.cjs +5 -0
  396. package/node_modules/zod/v4/locales/he.js +5 -0
  397. package/node_modules/zod/v4/locales/hi.cjs +136 -0
  398. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  399. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  400. package/node_modules/zod/v4/locales/hi.js +109 -0
  401. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  402. package/node_modules/zod/v4/locales/hr.js +2 -0
  403. package/node_modules/zod/v4/locales/hu.cjs +3 -0
  404. package/node_modules/zod/v4/locales/hu.js +3 -0
  405. package/node_modules/zod/v4/locales/hy.cjs +9 -0
  406. package/node_modules/zod/v4/locales/hy.js +9 -0
  407. package/node_modules/zod/v4/locales/id.cjs +3 -0
  408. package/node_modules/zod/v4/locales/id.js +3 -0
  409. package/node_modules/zod/v4/locales/index.cjs +22 -2
  410. package/node_modules/zod/v4/locales/index.d.cts +10 -0
  411. package/node_modules/zod/v4/locales/index.d.ts +10 -0
  412. package/node_modules/zod/v4/locales/index.js +10 -0
  413. package/node_modules/zod/v4/locales/is.cjs +3 -0
  414. package/node_modules/zod/v4/locales/is.js +3 -0
  415. package/node_modules/zod/v4/locales/it.cjs +3 -0
  416. package/node_modules/zod/v4/locales/it.js +3 -0
  417. package/node_modules/zod/v4/locales/ja.cjs +3 -0
  418. package/node_modules/zod/v4/locales/ja.js +3 -0
  419. package/node_modules/zod/v4/locales/ka.cjs +3 -0
  420. package/node_modules/zod/v4/locales/ka.js +3 -0
  421. package/node_modules/zod/v4/locales/km.cjs +3 -0
  422. package/node_modules/zod/v4/locales/km.js +3 -0
  423. package/node_modules/zod/v4/locales/kn.cjs +141 -0
  424. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  425. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  426. package/node_modules/zod/v4/locales/kn.js +114 -0
  427. package/node_modules/zod/v4/locales/ko.cjs +3 -0
  428. package/node_modules/zod/v4/locales/ko.js +3 -0
  429. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  430. package/node_modules/zod/v4/locales/lt.js +2 -0
  431. package/node_modules/zod/v4/locales/mk.cjs +3 -0
  432. package/node_modules/zod/v4/locales/mk.js +3 -0
  433. package/node_modules/zod/v4/locales/ms.cjs +3 -0
  434. package/node_modules/zod/v4/locales/ms.js +3 -0
  435. package/node_modules/zod/v4/locales/ne.cjs +136 -0
  436. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  437. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  438. package/node_modules/zod/v4/locales/ne.js +109 -0
  439. package/node_modules/zod/v4/locales/nl.cjs +3 -0
  440. package/node_modules/zod/v4/locales/nl.js +3 -0
  441. package/node_modules/zod/v4/locales/nn.cjs +138 -0
  442. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  443. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  444. package/node_modules/zod/v4/locales/nn.js +111 -0
  445. package/node_modules/zod/v4/locales/no.cjs +5 -2
  446. package/node_modules/zod/v4/locales/no.js +5 -2
  447. package/node_modules/zod/v4/locales/ota.cjs +3 -0
  448. package/node_modules/zod/v4/locales/ota.js +3 -0
  449. package/node_modules/zod/v4/locales/pl.cjs +3 -0
  450. package/node_modules/zod/v4/locales/pl.js +3 -0
  451. package/node_modules/zod/v4/locales/ps.cjs +3 -0
  452. package/node_modules/zod/v4/locales/ps.js +3 -0
  453. package/node_modules/zod/v4/locales/pt-BR.cjs +168 -0
  454. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  455. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  456. package/node_modules/zod/v4/locales/pt-BR.js +141 -0
  457. package/node_modules/zod/v4/locales/pt.cjs +87 -55
  458. package/node_modules/zod/v4/locales/pt.js +87 -55
  459. package/node_modules/zod/v4/locales/ro.cjs +1 -0
  460. package/node_modules/zod/v4/locales/ro.js +1 -0
  461. package/node_modules/zod/v4/locales/ru.cjs +10 -0
  462. package/node_modules/zod/v4/locales/ru.js +10 -0
  463. package/node_modules/zod/v4/locales/sk.cjs +141 -0
  464. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  465. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  466. package/node_modules/zod/v4/locales/sk.js +114 -0
  467. package/node_modules/zod/v4/locales/sl.cjs +3 -0
  468. package/node_modules/zod/v4/locales/sl.js +3 -0
  469. package/node_modules/zod/v4/locales/sv.cjs +5 -2
  470. package/node_modules/zod/v4/locales/sv.js +5 -2
  471. package/node_modules/zod/v4/locales/ta.cjs +3 -0
  472. package/node_modules/zod/v4/locales/ta.js +3 -0
  473. package/node_modules/zod/v4/locales/th.cjs +3 -0
  474. package/node_modules/zod/v4/locales/th.js +3 -0
  475. package/node_modules/zod/v4/locales/tk.cjs +132 -0
  476. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  477. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  478. package/node_modules/zod/v4/locales/tk.js +105 -0
  479. package/node_modules/zod/v4/locales/tr.cjs +3 -0
  480. package/node_modules/zod/v4/locales/tr.js +3 -0
  481. package/node_modules/zod/v4/locales/uk.cjs +3 -0
  482. package/node_modules/zod/v4/locales/uk.js +3 -0
  483. package/node_modules/zod/v4/locales/ur.cjs +3 -0
  484. package/node_modules/zod/v4/locales/ur.js +3 -0
  485. package/node_modules/zod/v4/locales/uz.cjs +1 -0
  486. package/node_modules/zod/v4/locales/uz.js +1 -0
  487. package/node_modules/zod/v4/locales/vi.cjs +3 -0
  488. package/node_modules/zod/v4/locales/vi.js +3 -0
  489. package/node_modules/zod/v4/locales/yo.cjs +3 -0
  490. package/node_modules/zod/v4/locales/yo.js +3 -0
  491. package/node_modules/zod/v4/locales/zh-CN.cjs +3 -0
  492. package/node_modules/zod/v4/locales/zh-CN.js +3 -0
  493. package/node_modules/zod/v4/locales/zh-TW.cjs +3 -0
  494. package/node_modules/zod/v4/locales/zh-TW.js +3 -0
  495. package/node_modules/zod/v4/mini/checks.cjs +2 -1
  496. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  497. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  498. package/node_modules/zod/v4/mini/checks.js +1 -1
  499. package/node_modules/zod/v4/mini/deep-partial.cjs +39 -0
  500. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  501. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  502. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  503. package/node_modules/zod/v4/mini/external.cjs +12 -1
  504. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  505. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  506. package/node_modules/zod/v4/mini/external.js +3 -1
  507. package/node_modules/zod/v4/mini/in-out.cjs +63 -0
  508. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  509. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  510. package/node_modules/zod/v4/mini/in-out.js +36 -0
  511. package/node_modules/zod/v4/mini/parse.cjs +3 -1
  512. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  513. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  514. package/node_modules/zod/v4/mini/parse.js +1 -1
  515. package/node_modules/zod/v4/mini/schemas.cjs +75 -47
  516. package/node_modules/zod/v4/mini/schemas.d.cts +43 -13
  517. package/node_modules/zod/v4/mini/schemas.d.ts +43 -13
  518. package/node_modules/zod/v4/mini/schemas.js +71 -45
  519. package/openclaw.plugin.json +35 -42
  520. package/package.json +8 -6
  521. package/dist/transport-probes.runtime-DV7x4VWu.js +0 -2
  522. package/node_modules/zod/src/v4/core/config.ts +0 -15
  523. /package/dist/{identity-YXPmgFMu.js → .setup/identity-YXPmgFMu.mjs} +0 -0
  524. /package/dist/{normalize-l_b99hap.js → .setup/normalize-l_b99hap.mjs} +0 -0
  525. /package/dist/{rolldown-runtime-8H4AJuhK.js → .setup/rolldown-runtime-8H4AJuhK.mjs} +0 -0
@@ -1,5 +1,6 @@
1
- import { a as isSignalManagedNativeConnectionUrlForBind, c as buildSignalTransportHttpUrl, i as assignSignalManagedNativePort, o as isValidSignalManagedNativePort, r as allocateSignalManagedNativePort, s as resolveLocalSignalTransportPort, u as normalizeSignalTransportUrl } from "./transport-policy-DxvSMHp9.js";
2
- import { isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
1
+ import { a as normalizeSignalTransportUrl, r as buildSignalTransportHttpUrl, s as resolveSignalAccountKey, t as assertSignalSocketTransport } from "./transport-url-CAC0JcuI.mjs";
2
+ import { a as isSignalManagedNativeConnectionUrlForBind, i as assignSignalManagedNativePort, o as isValidSignalManagedNativePort, r as allocateSignalManagedNativePort, s as resolveLocalSignalTransportPort } from "./transport-policy-5VSnj5ma.mjs";
3
+ import { isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
4
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
4
5
  import { defineChannelAliasMigration } from "openclaw/plugin-sdk/runtime-doctor-migrations";
5
6
  //#region extensions/signal/src/config-compat.ts
@@ -22,6 +23,11 @@ const PENDING_LEGACY_CONTAINER_ACCOUNT_WARNING = "- channels.signal: legacy cont
22
23
  function isSignalTransportConfig(value) {
23
24
  if (!isRecord(value)) return false;
24
25
  if (value.kind === "managed-native") {
26
+ try {
27
+ assertSignalSocketTransport(value);
28
+ } catch {
29
+ return false;
30
+ }
25
31
  if (value.httpPort !== void 0 && !isValidSignalManagedNativePort(value.httpPort)) return false;
26
32
  if (value.url === void 0) return true;
27
33
  if (typeof value.url !== "string") return false;
@@ -173,13 +179,15 @@ function signalAccountIds(entries) {
173
179
  const accounts = isRecord(entries[0]?.accounts) ? entries[0].accounts : {};
174
180
  return Object.entries(accounts).filter(([, entry]) => isRecord(entry)).map(([accountId]) => accountId);
175
181
  }
182
+ function resolveNestedDefaultEntryIndex(entries) {
183
+ const accounts = isRecord(entries[0]?.accounts) ? entries[0].accounts : {};
184
+ const key = resolveSignalAccountKey(accounts, DEFAULT_ACCOUNT_ID);
185
+ const offset = signalAccountIds(entries).findIndex((accountId) => accountId === key);
186
+ return offset >= 0 ? offset + 1 : void 0;
187
+ }
176
188
  function isDefaultSignalAccountId(accountId) {
177
189
  return Boolean(accountId?.trim()) && normalizeAccountId(accountId) === DEFAULT_ACCOUNT_ID;
178
190
  }
179
- function resolveSignalAccountKey(accounts, accountId) {
180
- const normalizedAccountId = normalizeAccountId(accountId);
181
- return Object.keys(accounts).find((key) => Boolean(key.trim()) && normalizeAccountId(key) === normalizedAccountId);
182
- }
183
191
  function nestedDefaultOwnsEffectiveTransport(entries) {
184
192
  const accounts = isRecord(entries[0]?.accounts) ? entries[0].accounts : {};
185
193
  const nestedDefaultKey = resolveSignalAccountKey(accounts, DEFAULT_ACCOUNT_ID);
@@ -188,7 +196,7 @@ function nestedDefaultOwnsEffectiveTransport(entries) {
188
196
  }
189
197
  function isDiscardedTransportEntry(entries, index) {
190
198
  if (index === 0) return !hasRootSignalAccount(entries) || nestedDefaultOwnsEffectiveTransport(entries);
191
- return isDefaultSignalAccountId(signalAccountIds(entries)[index - 1]) && isSignalTransportConfig(entries[0]?.transport);
199
+ return index === resolveNestedDefaultEntryIndex(entries) && isSignalTransportConfig(entries[0]?.transport);
192
200
  }
193
201
  function shouldMaterializeTransport(entries, index) {
194
202
  if (isDiscardedTransportEntry(entries, index)) return false;
@@ -221,10 +229,11 @@ function clearLegacySignalTransportFieldsForAccount(params) {
221
229
  function allocateMigratedManagedPorts(params) {
222
230
  const reservedPorts = /* @__PURE__ */ new Set();
223
231
  const rootIsAccount = hasRootSignalAccount(params.entries);
224
- const nestedDefaultOffset = signalAccountIds(params.entries).findIndex((accountId) => isDefaultSignalAccountId(accountId));
225
- const canonicalDefaultIndex = isSignalTransportConfig(params.entries[0]?.transport) ? 0 : nestedDefaultOffset >= 0 ? nestedDefaultOffset + 1 : rootIsAccount ? 0 : void 0;
232
+ const nestedDefaultIndex = resolveNestedDefaultEntryIndex(params.entries);
233
+ const canonicalDefaultIndex = isSignalTransportConfig(params.entries[0]?.transport) ? 0 : nestedDefaultIndex !== void 0 ? nestedDefaultIndex : rootIsAccount ? 0 : void 0;
226
234
  for (const [index, transport] of params.transports.entries()) {
227
235
  if (!transport || index === 0 && canonicalDefaultIndex !== 0) continue;
236
+ if (transport.kind === "managed-native" && transport.socketPath !== void 0) continue;
228
237
  if (transport.kind !== "managed-native") {
229
238
  const localPort = resolveLocalSignalTransportPort(transport.url);
230
239
  if (localPort !== void 0) reservedPorts.add(localPort);
@@ -238,7 +247,7 @@ function allocateMigratedManagedPorts(params) {
238
247
  }
239
248
  return params.transports.map((transport, index) => {
240
249
  if (!transport || index === 0 && canonicalDefaultIndex !== 0) return transport;
241
- if (transport.kind !== "managed-native") return transport;
250
+ if (transport.kind !== "managed-native" || transport.socketPath !== void 0) return transport;
242
251
  if (isRecord(params.entries[index]?.transport) || index === canonicalDefaultIndex) return transport;
243
252
  const rawPreferredPort = params.entries[index]?.httpPort;
244
253
  const preferredPort = typeof rawPreferredPort === "number" ? rawPreferredPort : transport.httpPort;
@@ -254,13 +263,13 @@ function applyMigratedSignalTransports(params) {
254
263
  const next = structuredClone(params.cfg);
255
264
  const nextSignal = next.channels?.signal;
256
265
  if (!isRecord(nextSignal)) return;
257
- const accountIds = signalAccountIds(params.entries);
266
+ const nestedDefaultIndex = resolveNestedDefaultEntryIndex(params.entries);
258
267
  const nextAccounts = isRecord(nextSignal.accounts) ? nextSignal.accounts : {};
259
268
  const nextEntries = [nextSignal, ...Object.values(nextAccounts).filter(isRecord)];
260
269
  const rootIsAccount = hasRootSignalAccount(params.entries);
261
270
  const canonicalRootTransport = isSignalTransportConfig(params.entries[0]?.transport) ? params.entries[0].transport : void 0;
262
271
  for (const [index, entry] of nextEntries.entries()) {
263
- if (isDefaultSignalAccountId(index === 0 ? void 0 : accountIds[index - 1])) {
272
+ if (index === nestedDefaultIndex) {
264
273
  const defaultTransport = canonicalRootTransport ?? params.transports[index];
265
274
  if (defaultTransport) nextSignal.transport = defaultTransport;
266
275
  else delete nextSignal.transport;
@@ -306,6 +315,11 @@ function prepareLegacySignalTransportMigration(cfg) {
306
315
  };
307
316
  const apiMode = signal.apiMode;
308
317
  const entries = [signal, ...Object.values(accounts).filter(isRecord)];
318
+ if (entries.some((entry) => isRecord(entry.transport) && Object.hasOwn(entry.transport, "socketPath") && (entry.transport.kind !== "managed-native" || !isSignalTransportConfig(entry.transport)))) return {
319
+ config: cfg,
320
+ changes: [],
321
+ warnings: ["- channels.signal: invalid transport.socketPath configuration; correct the socket path and remove conflicting HTTP or receiveMode on-start options, then run openclaw doctor --fix."]
322
+ };
309
323
  const legacyResolutionEntries = entries.filter((_, index) => shouldMaterializeTransport(entries, index)).filter((entry) => !isSignalTransportConfig(entry.transport));
310
324
  const invalidDerivedEndpoint = findInvalidLegacyDerivedEndpoint(legacyResolutionEntries, signal);
311
325
  if (invalidDerivedEndpoint) return {
@@ -390,6 +404,51 @@ function migrateLegacySignalTransportConfigSync(cfg) {
390
404
  }));
391
405
  }
392
406
  //#endregion
407
+ //#region extensions/signal/src/account-key-repair.ts
408
+ function repairSignalAccountKeys({ cfg }) {
409
+ const signal = cfg.channels?.signal;
410
+ const accounts = signal?.accounts;
411
+ if (!accounts) return {
412
+ config: cfg,
413
+ changes: []
414
+ };
415
+ const groups = /* @__PURE__ */ new Map();
416
+ for (const key of Object.keys(accounts)) if (key) {
417
+ const id = normalizeAccountId(key);
418
+ groups.set(id, [...groups.get(id) ?? [], key]);
419
+ }
420
+ const moves = /* @__PURE__ */ new Map();
421
+ const warnings = [];
422
+ for (const [id, keys] of groups) {
423
+ if (keys.length > 1) {
424
+ warnings.push(`Signal account keys ${keys.map((key) => JSON.stringify(key)).join(", ")} resolve to "${id}". Doctor preserved them; rename them so each account has a unique normalized key.`);
425
+ continue;
426
+ }
427
+ for (const key of keys) if (normalizeLowercaseStringOrEmpty(key) !== id) {
428
+ if (resolveSignalAccountKey(accounts, id) !== key) {
429
+ warnings.push(`Signal account "${key}" is listed as "${id}" but currently uses the channel defaults. Doctor preserved it to avoid changing a working account; check its settings before renaming the key to "${id}".`);
430
+ continue;
431
+ }
432
+ moves.set(key, id);
433
+ }
434
+ }
435
+ const repaired = Object.fromEntries(Object.entries(accounts).map(([key, entry]) => [moves.get(key) ?? key, entry]));
436
+ return {
437
+ config: moves.size ? {
438
+ ...cfg,
439
+ channels: {
440
+ ...cfg.channels,
441
+ signal: {
442
+ ...signal,
443
+ accounts: repaired
444
+ }
445
+ }
446
+ } : cfg,
447
+ changes: [...moves].map(([from, to]) => `Moved Signal account "${from}" to channels.signal.accounts.${to}.`),
448
+ warnings
449
+ };
450
+ }
451
+ //#endregion
393
452
  //#region extensions/signal/config-doctor-api.ts
394
453
  const RETIRED_SIGNAL_ACCOUNT_TRANSPORT_FIELDS = [
395
454
  "configPath",
@@ -434,13 +493,18 @@ const legacyConfigRules = [
434
493
  }
435
494
  ];
436
495
  function normalizeCompatibilityConfig({ cfg }) {
437
- const streaming = streamingAliasMigration.normalizeChannelConfig({ cfg });
496
+ const accountKeys = repairSignalAccountKeys({ cfg });
497
+ const streaming = streamingAliasMigration.normalizeChannelConfig({ cfg: accountKeys.config });
438
498
  const transport = migrateLegacySignalTransportConfigSync(streaming.config);
439
499
  return {
440
500
  config: transport.config,
441
- changes: [...streaming.changes, ...transport.changes],
501
+ changes: [
502
+ ...accountKeys.changes,
503
+ ...streaming.changes,
504
+ ...transport.changes
505
+ ],
442
506
  ...transport.warnings?.length ? { warnings: transport.warnings } : {}
443
507
  };
444
508
  }
445
509
  //#endregion
446
- export { migrateLegacySignalTransportConfig as i, normalizeCompatibilityConfig as n, clearLegacySignalTransportFieldsForAccount as r, legacyConfigRules as t };
510
+ export { migrateLegacySignalTransportConfig as a, clearLegacySignalTransportFieldsForAccount as i, normalizeCompatibilityConfig as n, repairSignalAccountKeys as r, legacyConfigRules as t };
@@ -1,10 +1,10 @@
1
1
  import { isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
2
+ import path from "node:path";
2
3
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
3
4
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
4
- import path from "node:path";
5
+ import fs from "node:fs/promises";
5
6
  import { CONFIG_DIR, extractArchive, resolveBrewExecutable } from "openclaw/plugin-sdk/setup-tools";
6
7
  import { createWriteStream } from "node:fs";
7
- import fs from "node:fs/promises";
8
8
  import { Readable, Transform } from "node:stream";
9
9
  import { pipeline } from "node:stream/promises";
10
10
  import { readProviderJsonObjectResponse } from "openclaw/plugin-sdk/provider-http";
@@ -13,7 +13,6 @@ import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
13
13
  import { withTempDownloadPath } from "openclaw/plugin-sdk/temp-path";
14
14
  //#region extensions/signal/src/install-signal-cli.ts
15
15
  const MAX_SIGNAL_CLI_ARCHIVE_BYTES = 268435456;
16
- /** @internal Exported for testing. */
17
16
  const MAX_SIGNAL_CLI_EXTRACTED_BYTES = 402653184;
18
17
  const SIGNAL_CLI_DOWNLOAD_TIMEOUT_MS = 3e5;
19
18
  const SIGNAL_CLI_RELEASE_INFO_TIMEOUT_MS = 3e4;
@@ -290,4 +289,4 @@ async function installSignalCli(runtime) {
290
289
  return installSignalCliViaBrew(runtime);
291
290
  }
292
291
  //#endregion
293
- export { installSignalCliFromRelease as a, installSignalCli as i, downloadToFile as n, looksLikeArchive as o, extractSignalCliArchive as r, pickAsset as s, MAX_SIGNAL_CLI_EXTRACTED_BYTES as t };
292
+ export { looksLikeArchive as a, installSignalCliFromRelease as i, extractSignalCliArchive as n, pickAsset as o, installSignalCli as r, downloadToFile as t };
@@ -1,26 +1,28 @@
1
- import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { l as normalizeSignalTransportHost } from "./transport-policy-DxvSMHp9.js";
3
- import { i as resolveSignalAccount, o as resolveSignalReplyToMode } from "./accounts-DO4HMqaK.js";
4
- import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.js";
5
- import { a as normalizeSignalAllowRecipient, c as resolveSignalSender, i as isSignalSenderAllowed, l as looksLikeUuid, n as formatSignalSenderDisplay, o as resolveSignalPeerId, r as formatSignalSenderId, s as resolveSignalRecipient, t as formatSignalPairingIdLine } from "./identity-YXPmgFMu.js";
6
- import { c as resolveSignalReactionLevel, f as isSignalNativeApprovalHandlerConfigured, i as getOptionalSignalRuntime, l as formatSignalMediaText, n as registerSignalReplyContext, o as materializeSignalPresentationFallback } from "./transport-detection-Do2pYMAH.js";
7
- import { t as SignalSseRejectionError } from "./client-B3C0ciqU.js";
8
- import { n as signalRpcRequest, r as streamSignalEvents, t as signalCheck } from "./client-adapter-CNc5wzzs.js";
9
- import { n as sendReactionSignal } from "./reaction-runtime-api-CWqDv5-q.js";
10
- import { i as maybeResolveSignalApprovalReaction, o as registerSignalApprovalReactionTargetForDeliveredPayload, s as resolveSignalApprovalConversationKey, t as addSignalApprovalReactionHintToStructuredPayload } from "./approval-reactions-CjhdkJ8P.js";
11
- import { r as registerSignalQuestionReactionTargetForDeliveredPayload, t as maybeResolveSignalQuestionReaction } from "./question-reactions-BFR9Mf-O.js";
12
- import { n as sendReadReceiptSignal, r as sendTypingSignal, t as sendMessageSignal } from "./send-Bz0x0JC1.js";
1
+ import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
2
+ import { i as normalizeSignalTransportHost } from "./transport-url-CAC0JcuI.mjs";
3
+ import { i as resolveSignalAccount, o as resolveSignalReplyToMode } from "./accounts-BV6tDOTc.mjs";
4
+ import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.mjs";
5
+ import { a as normalizeSignalAllowRecipient, c as resolveSignalSender, i as isSignalSenderAllowed, l as looksLikeUuid, n as formatSignalSenderDisplay, o as resolveSignalPeerId, r as formatSignalSenderId, s as resolveSignalRecipient, t as formatSignalPairingIdLine } from "./identity-YXPmgFMu.mjs";
6
+ import { c as resolveSignalReactionLevel, f as isSignalNativeApprovalHandlerConfigured, i as getOptionalSignalRuntime, l as formatSignalMediaText, n as registerSignalReplyContext, o as materializeSignalPresentationFallback } from "./transport-detection-CqyR2vG8.mjs";
7
+ import { a as prepareSignalSocketPath, t as SignalSseRejectionError } from "./client-BseAt7F7.mjs";
8
+ import { n as signalRpcRequest, r as streamSignalEvents, t as signalCheck } from "./client-adapter-dvFa47YL.mjs";
9
+ import { n as sendReactionSignal } from "./reaction-runtime-api-BnQGHcrB.mjs";
10
+ import { i as maybeResolveSignalApprovalReaction, o as registerSignalApprovalReactionTargetForDeliveredPayload, s as resolveSignalApprovalConversationKey, t as addSignalApprovalReactionHintToStructuredPayload } from "./approval-reactions-B25QoVJc.mjs";
11
+ import { r as registerSignalQuestionReactionTargetForDeliveredPayload, t as maybeResolveSignalQuestionReaction } from "./question-reactions-DSNAD0cd.mjs";
12
+ import { n as sendReadReceiptSignal, r as sendTypingSignal, t as sendMessageSignal } from "./send-CcetN4rk.mjs";
13
13
  import { bindIngressLifecycleToReplyOptions, createChannelIngressError, createChannelIngressMonitor, createChannelMessageReplyPipeline, resolveChannelStreamingBlockEnabled } from "openclaw/plugin-sdk/channel-outbound";
14
14
  import { createChannelPairingChallengeIssuer } from "openclaw/plugin-sdk/channel-pairing";
15
15
  import { resolveAgentRoute, resolveInboundLastRouteSessionKey } from "openclaw/plugin-sdk/routing";
16
16
  import { asPositiveSafeInteger, isRecord, normalizeNullableString, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
17
+ import path from "node:path";
17
18
  import { CHANNEL_APPROVAL_NATIVE_RUNTIME_CONTEXT_CAPABILITY } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
18
19
  import { normalizeE164, truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
19
20
  import { buildChannelInboundEventContext, buildMentionRegexes, createChannelInboundDebouncer, filterChannelInboundQuoteContext, formatInboundEnvelope, formatInboundFromLabel, formatInboundMediaUnavailableText, hasVisibleInboundReplyDispatch, logInboundDrop, matchesMentionPatterns, readAgentRunTerminalOutcome, resolveEnvelopeFormatOptions, resolveInboundDebounceMs, resolveInboundMentionDecision, resolveInboundSupplementalSenderAllowed, runChannelInboundEvent, shouldDebounceTextInbound, toHistoryMediaEntries, toInboundMediaFactsWithMetadata } from "openclaw/plugin-sdk/channel-inbound";
20
21
  import { canonicalizeBase64, detectMime, estimateBase64DecodedBytes, kindFromMime, saveMediaBuffer } from "openclaw/plugin-sdk/media-runtime";
21
22
  import { collectErrorGraphCandidates, formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
22
23
  import { ensurePortAvailable, extractErrorCode, formatErrorMessage as formatErrorMessage$1, resolvePinnedMainDmOwnerFromAllowlist } from "openclaw/plugin-sdk/security-runtime";
23
- import path from "node:path";
24
+ import { spawn } from "node:child_process";
25
+ import os from "node:os";
24
26
  import { resolveChannelGroupPolicy, resolveChannelGroupRequireMention, resolveChannelGroups, resolveChannelGroupsConfigPath } from "openclaw/plugin-sdk/channel-policy";
25
27
  import { registerChannelRuntimeContext } from "openclaw/plugin-sdk/channel-runtime-context";
26
28
  import { DEFAULT_GROUP_HISTORY_LIMIT, createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
@@ -30,8 +32,6 @@ import { createRuntimeConfigReader, getRuntimeConfig } from "openclaw/plugin-sdk
30
32
  import { computeBackoff, createNonExitingRuntime, danger, logVerbose, shouldLogVerbose, sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
31
33
  import { resolveAllowlistProviderRuntimeGroupPolicy, resolveDefaultGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce } from "openclaw/plugin-sdk/runtime-group-policy";
32
34
  import { waitForTransportReady } from "openclaw/plugin-sdk/transport-ready-runtime";
33
- import { spawn } from "node:child_process";
34
- import os from "node:os";
35
35
  import { createInterface } from "node:readline";
36
36
  import { setTimeout as setTimeout$1 } from "node:timers/promises";
37
37
  import { resolveHumanDelayConfig } from "openclaw/plugin-sdk/agent-runtime";
@@ -56,6 +56,12 @@ function formatSignalDaemonEndpoint(httpHost, httpPort) {
56
56
  return `${httpHost.includes(":") ? `[${httpHost}]` : httpHost}:${httpPort}`;
57
57
  }
58
58
  async function assertSignalDaemonEndpointAvailable(params) {
59
+ if (params.socketPath) {
60
+ params.abortSignal?.throwIfAborted();
61
+ await prepareSignalSocketPath(params.socketPath, params.abortSignal);
62
+ params.abortSignal?.throwIfAborted();
63
+ return;
64
+ }
59
65
  try {
60
66
  await ensurePortAvailable(params.httpPort, params.httpHost, params.abortSignal);
61
67
  } catch (error) {
@@ -123,9 +129,11 @@ function buildDaemonArgs(opts) {
123
129
  if (opts.configPath?.trim()) args.push("--config", resolveSignalCliConfigPath(opts.configPath));
124
130
  if (opts.account) args.push("-a", opts.account);
125
131
  args.push("daemon");
126
- args.push("--http", `${opts.httpHost}:${opts.httpPort}`);
132
+ if (opts.socketPath) args.push("--socket", opts.socketPath);
133
+ else args.push("--http", `${opts.httpHost}:${opts.httpPort}`);
127
134
  args.push("--no-receive-stdout");
128
- if (opts.receiveMode) args.push("--receive-mode", opts.receiveMode);
135
+ if (opts.socketPath) args.push("--receive-mode", "manual");
136
+ else if (opts.receiveMode) args.push("--receive-mode", opts.receiveMode);
129
137
  if (opts.ignoreAttachments) args.push("--ignore-attachments");
130
138
  if (opts.ignoreStories) args.push("--ignore-stories");
131
139
  if (opts.sendReadReceipts) args.push("--send-read-receipts");
@@ -1559,9 +1567,9 @@ function createSignalEventHandler(deps) {
1559
1567
  }
1560
1568
  //#endregion
1561
1569
  //#region extensions/signal/src/reaction-targets.ts
1562
- function registerSignalReactionTargetsForDeliveredPayload(params) {
1570
+ async function registerSignalReactionTargetsForDeliveredPayload(params) {
1563
1571
  registerSignalQuestionReactionTargetForDeliveredPayload(params);
1564
- registerSignalApprovalReactionTargetForDeliveredPayload(params);
1572
+ await registerSignalApprovalReactionTargetForDeliveredPayload(params);
1565
1573
  }
1566
1574
  //#endregion
1567
1575
  //#region extensions/signal/src/signal-ingress.ts
@@ -1919,7 +1927,7 @@ async function deliverReplies(params) {
1919
1927
  sendText: send,
1920
1928
  sendMedia: ({ mediaUrl, caption }) => send(caption ?? "", mediaUrl)
1921
1929
  }) !== "empty") {
1922
- registerSignalReactionTargetsForDeliveredPayload({
1930
+ await registerSignalReactionTargetsForDeliveredPayload({
1923
1931
  cfg: params.cfg,
1924
1932
  target: {
1925
1933
  channel: "signal",
@@ -1968,6 +1976,8 @@ async function monitorSignalProvider(opts = {}) {
1968
1976
  const mediaMaxBytes = (opts.mediaMaxMb ?? accountInfo.config.mediaMaxMb ?? 8) * 1024 * 1024;
1969
1977
  const transportKind = accountInfo.transport.kind;
1970
1978
  const managedTransport = accountInfo.transport.kind === "managed-native" ? accountInfo.transport : void 0;
1979
+ const socketPath = managedTransport?.socketPath;
1980
+ if (socketPath && (opts.baseUrl !== void 0 || opts.httpHost !== void 0 || opts.httpPort !== void 0)) throw new Error("Signal socket transport cannot be combined with HTTP endpoint overrides");
1971
1981
  const ignoreAttachments = opts.ignoreAttachments ?? accountInfo.config.ignoreAttachments ?? false;
1972
1982
  const sendReadReceipts = Boolean(opts.sendReadReceipts ?? accountInfo.config.sendReadReceipts);
1973
1983
  const waitForTransportReadyFn = opts.waitForTransportReady ?? waitForTransportReady;
@@ -1990,6 +2000,7 @@ async function monitorSignalProvider(opts = {}) {
1990
2000
  await assertSignalDaemonEndpointAvailable({
1991
2001
  httpHost,
1992
2002
  httpPort,
2003
+ ...socketPath ? { socketPath } : {},
1993
2004
  abortSignal: endpointProbeSignal
1994
2005
  });
1995
2006
  } catch (error) {
@@ -2005,6 +2016,7 @@ async function monitorSignalProvider(opts = {}) {
2005
2016
  account,
2006
2017
  httpHost,
2007
2018
  httpPort,
2019
+ ...socketPath ? { socketPath } : {},
2008
2020
  receiveMode: opts.receiveMode ?? managedTransport?.receiveMode,
2009
2021
  ignoreAttachments: opts.ignoreAttachments ?? accountInfo.config.ignoreAttachments,
2010
2022
  ignoreStories: opts.ignoreStories ?? managedTransport?.ignoreStories,
@@ -1,6 +1,6 @@
1
- import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { t as detectSignalTransport } from "./transport-detection-Do2pYMAH.js";
3
- import { n as signalRpcRequest, t as signalCheck } from "./client-adapter-CNc5wzzs.js";
1
+ import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
2
+ import { t as detectSignalTransport } from "./transport-detection-CqyR2vG8.mjs";
3
+ import { n as signalRpcRequest, t as signalCheck } from "./client-adapter-dvFa47YL.mjs";
4
4
  import { runChannelProbe } from "openclaw/plugin-sdk/text-utility-runtime";
5
5
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
6
6
  //#region extensions/signal/src/probe.ts
@@ -1,6 +1,6 @@
1
- import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { i as resolveSignalDeliveredConversationKey } from "./approval-auth-pNCKKotV.js";
3
- import { c as resolveSignalApprovalTargetAuthorKeys } from "./approval-reactions-CjhdkJ8P.js";
1
+ import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
2
+ import { i as resolveSignalDeliveredConversationKey } from "./approval-auth-BBI9BTRm.mjs";
3
+ import { c as resolveSignalApprovalTargetAuthorKeys } from "./approval-reactions-B25QoVJc.mjs";
4
4
  import { createQuestionReactionTargetStore, questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
5
5
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
6
6
  //#region extensions/signal/src/question-reactions.ts
@@ -1,7 +1,7 @@
1
- import { i as resolveSignalAccount } from "./accounts-DO4HMqaK.js";
2
- import { r as normalizeSignalReactionRecipient } from "./normalize-l_b99hap.js";
3
- import { n as signalRpcRequest } from "./client-adapter-CNc5wzzs.js";
4
- import { t as resolveSignalRpcContext } from "./rpc-context-dXSy4NtF.js";
1
+ import { i as resolveSignalAccount } from "./accounts-BV6tDOTc.mjs";
2
+ import { r as normalizeSignalReactionRecipient } from "./normalize-l_b99hap.mjs";
3
+ import { n as signalRpcRequest } from "./client-adapter-dvFa47YL.mjs";
4
+ import { t as resolveSignalRpcContext } from "./rpc-context-CwwADZ1b.mjs";
5
5
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
6
6
  //#region extensions/signal/src/send-reactions.ts
7
7
  async function sendReactionSignalCore(params) {
@@ -38,7 +38,8 @@ async function sendReactionSignalCore(params) {
38
38
  timestamp: (await signalRpcRequest("sendReaction", requestParams, {
39
39
  baseUrl,
40
40
  timeoutMs: params.opts.timeoutMs,
41
- transportKind: params.opts.transportKind ?? accountInfo.transport.kind
41
+ transportKind: params.opts.transportKind ?? accountInfo.transport.kind,
42
+ assertDirectAdapterHandoff: params.opts.assertDirectAdapterHandoff
42
43
  }))?.timestamp
43
44
  };
44
45
  }
@@ -1,4 +1,4 @@
1
- import "./accounts-DO4HMqaK.js";
1
+ import "./accounts-BV6tDOTc.mjs";
2
2
  //#region extensions/signal/src/rpc-context.ts
3
3
  function resolveSignalRpcContext(opts, accountInfo) {
4
4
  const baseUrlOverride = opts.baseUrl?.trim();
@@ -1,8 +1,8 @@
1
- import { i as resolveSignalAccount } from "./accounts-DO4HMqaK.js";
2
- import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.js";
3
- import { n as registerSignalReplyContext, u as markdownToSignalText } from "./transport-detection-Do2pYMAH.js";
4
- import { n as signalRpcRequest } from "./client-adapter-CNc5wzzs.js";
5
- import { t as resolveSignalRpcContext } from "./rpc-context-dXSy4NtF.js";
1
+ import { i as resolveSignalAccount } from "./accounts-BV6tDOTc.mjs";
2
+ import { n as normalizeSignalMessagingTarget } from "./normalize-l_b99hap.mjs";
3
+ import { n as registerSignalReplyContext, u as markdownToSignalText } from "./transport-detection-CqyR2vG8.mjs";
4
+ import { n as signalRpcRequest } from "./client-adapter-dvFa47YL.mjs";
5
+ import { t as resolveSignalRpcContext } from "./rpc-context-CwwADZ1b.mjs";
6
6
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
7
7
  import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
8
8
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -189,7 +189,8 @@ async function sendMessageSignal(to, text, opts) {
189
189
  baseUrl,
190
190
  timeoutMs: opts.timeoutMs,
191
191
  transportKind: opts.transportKind ?? accountInfo.transport.kind,
192
- maxAttachmentBytes: maxBytes
192
+ maxAttachmentBytes: maxBytes,
193
+ assertDirectAdapterHandoff: opts.assertDirectAdapterHandoff
193
194
  };
194
195
  let nativeReplyStatus;
195
196
  let result;
@@ -1,2 +1,2 @@
1
- import { r as sendTypingSignal, t as sendMessageSignal } from "./send-Bz0x0JC1.js";
1
+ import { r as sendTypingSignal, t as sendMessageSignal } from "./send-CcetN4rk.mjs";
2
2
  export { sendMessageSignal, sendTypingSignal };
@@ -1,8 +1,8 @@
1
- import { u as normalizeSignalTransportUrl } from "./transport-policy-DxvSMHp9.js";
2
- import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-DO4HMqaK.js";
3
- import { n as normalizeSignalMessagingTarget, r as normalizeSignalReactionRecipient } from "./normalize-l_b99hap.js";
4
- import { n as signalApprovalAuth, t as getSignalApprovalApprovers } from "./approval-auth-pNCKKotV.js";
5
- import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-CWqDv5-q.js";
1
+ import { a as normalizeSignalTransportUrl } from "./transport-url-CAC0JcuI.mjs";
2
+ import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-BV6tDOTc.mjs";
3
+ import { n as normalizeSignalMessagingTarget, r as normalizeSignalReactionRecipient } from "./normalize-l_b99hap.mjs";
4
+ import { n as signalApprovalAuth, t as getSignalApprovalApprovers } from "./approval-auth-BBI9BTRm.mjs";
5
+ import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-BnQGHcrB.mjs";
6
6
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
7
7
  import { questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
8
8
  import { parseAgentSessionKey } from "openclaw/plugin-sdk/routing";
@@ -74,7 +74,7 @@ const signalApproval = createApproverRestrictedNativeApprovalCapabilityFromForwa
74
74
  approvalKind,
75
75
  request
76
76
  }),
77
- load: async () => (await import("./approval-handler.runtime-DCPJkIqo.js")).signalApprovalNativeRuntime
77
+ load: async () => (await import("./approval-handler.runtime-Clf_1IZj.mjs")).signalApprovalNativeRuntime
78
78
  })
79
79
  });
80
80
  const signalApprovalRouting = signalApproval.routing;
@@ -170,6 +170,7 @@ function markdownToSignalText(markdown, options = {}) {
170
170
  }
171
171
  function markdownToSignalTextChunks(markdown, limit, options = {}) {
172
172
  const ir = markdownToSignalIR(markdown, options);
173
+ if (ir.listItems && ir.text.length > limit) ir.listItems = ir.listItems.map((item) => ({ ...item }));
173
174
  return renderMarkdownIRChunksWithinLimit({
174
175
  ir,
175
176
  limit,
@@ -235,7 +236,8 @@ async function mutateSignalReaction(params) {
235
236
  accountId: params.accountId,
236
237
  groupId: params.target.groupId,
237
238
  targetAuthor: params.targetAuthor,
238
- targetAuthorUuid: params.targetAuthorUuid
239
+ targetAuthorUuid: params.targetAuthorUuid,
240
+ ...params.assertDirectAdapterHandoff ? { assertDirectAdapterHandoff: params.assertDirectAdapterHandoff } : {}
239
241
  };
240
242
  await (params.remove ? removeReactionSignal : sendReactionSignal)(params.target.recipient ?? "", params.timestamp, params.emoji, options);
241
243
  return jsonResult({
@@ -264,7 +266,7 @@ const signalMessageActions = {
264
266
  replyToId: normalizedReplyToId
265
267
  };
266
268
  },
267
- handleAction: async ({ action, params, cfg, accountId, toolContext }) => {
269
+ handleAction: async ({ action, params, cfg, accountId, toolContext, assertDirectAdapterHandoff }) => {
268
270
  if (action === "send") throw new Error("Send should be handled by outbound, not actions handler.");
269
271
  if (action === "react") {
270
272
  const account = resolveSignalAccount({
@@ -306,7 +308,8 @@ const signalMessageActions = {
306
308
  emoji,
307
309
  remove: Boolean(remove),
308
310
  targetAuthor,
309
- targetAuthorUuid
311
+ targetAuthorUuid,
312
+ assertDirectAdapterHandoff
310
313
  });
311
314
  }
312
315
  throw new Error(`Action ${action} not supported for ${providerId}.`);
@@ -405,6 +408,7 @@ function resolveSourceTimestamp(value) {
405
408
  function mergeReplyContext(current, next) {
406
409
  if (!current) return next;
407
410
  if (current.kind === "ambiguous") return current;
411
+ if (next.kind === "ambiguous") return next;
408
412
  if (current.author !== next.author) {
409
413
  const { author: _author, body: _body, media: _media, ...identity } = next;
410
414
  return {
@@ -450,7 +454,8 @@ async function registerSignalReplyContext(params) {
450
454
  pruneMemoryReplyContexts(registeredAt);
451
455
  return;
452
456
  }
453
- if (!store.update) {
457
+ const usesComparisons = Boolean(store.observe && store.compareAndApply);
458
+ if (!store.update && !usesComparisons) {
454
459
  const next = mergeReplyContext(memoryReplyContexts.get(key), record);
455
460
  memoryReplyContexts.set(key, {
456
461
  ...next,
@@ -464,18 +469,46 @@ async function registerSignalReplyContext(params) {
464
469
  }).warn("Signal persistent reply author state lacks atomic updates");
465
470
  return;
466
471
  }
472
+ const cachedBeforeUpdate = memoryReplyContexts.get(key);
473
+ const cacheReplyContext = (next) => {
474
+ const current = memoryReplyContexts.get(key);
475
+ const changedDuringUpdate = usesComparisons && current !== cachedBeforeUpdate;
476
+ if (!next) {
477
+ if (!changedDuringUpdate) memoryReplyContexts.delete(key);
478
+ return;
479
+ }
480
+ const concurrent = changedDuringUpdate && current && current.expiresAt > registeredAt ? current : void 0;
481
+ memoryReplyContexts.set(key, {
482
+ ...concurrent ? mergeReplyContext(concurrent, next) : next,
483
+ expiresAt: Math.max(expiresAt, concurrent?.expiresAt ?? expiresAt)
484
+ });
485
+ };
467
486
  let updateEvaluated = false;
468
487
  let nextRecord;
469
488
  try {
470
- if (await store.update(key, (current) => {
489
+ let updated = false;
490
+ if (store.observe && store.compareAndApply) {
491
+ let observation = await store.observe(key);
492
+ for (;;) {
493
+ updateEvaluated = true;
494
+ nextRecord = mergeReplyContext(observation.value, record);
495
+ const result = await store.compareAndApply(key, observation.comparison, {
496
+ operation: "update",
497
+ action: "set",
498
+ value: nextRecord
499
+ });
500
+ if (result.status !== "conflict") {
501
+ updated = result.status === "applied";
502
+ break;
503
+ }
504
+ observation = result.current;
505
+ }
506
+ } else if (store.update) updated = await store.update(key, (current) => {
471
507
  updateEvaluated = true;
472
508
  nextRecord = mergeReplyContext(current, record);
473
509
  return nextRecord;
474
- }) && nextRecord) memoryReplyContexts.set(key, {
475
- ...nextRecord,
476
- expiresAt
477
510
  });
478
- else memoryReplyContexts.delete(key);
511
+ cacheReplyContext(updated ? nextRecord : void 0);
479
512
  pruneMemoryReplyContexts(registeredAt);
480
513
  } catch (error) {
481
514
  if (!updateEvaluated) try {
@@ -484,11 +517,7 @@ async function registerSignalReplyContext(params) {
484
517
  nextRecord = void 0;
485
518
  }
486
519
  const next = nextRecord;
487
- if (next) memoryReplyContexts.set(key, {
488
- ...next,
489
- expiresAt
490
- });
491
- else if (updateEvaluated) memoryReplyContexts.delete(key);
520
+ if (next || updateEvaluated) cacheReplyContext(next);
492
521
  pruneMemoryReplyContexts(registeredAt);
493
522
  getOptionalSignalRuntime()?.logging.getChildLogger({
494
523
  plugin: "signal",
@@ -523,7 +552,7 @@ const DEFAULT_PROBE_TIMEOUT_MS = 1e4;
523
552
  async function detectSignalTransport(params) {
524
553
  const url = normalizeSignalTransportUrl(params.url);
525
554
  const timeoutMs = params.timeoutMs ?? DEFAULT_PROBE_TIMEOUT_MS;
526
- const probes = params.probeNative && params.probeContainer ? void 0 : await import("./transport-probes.runtime-DV7x4VWu.js");
555
+ const probes = params.probeNative && params.probeContainer ? void 0 : await import("./transport-probes.runtime-WprAyBbL.mjs");
527
556
  const probeNative = params.probeNative ?? probes?.nativeCheck;
528
557
  const probeContainer = params.probeContainer ?? probes?.containerCheck;
529
558
  if (!probeNative || !probeContainer) throw new Error("Signal transport probes are unavailable");
@@ -1,2 +1,2 @@
1
- import { t as detectSignalTransport } from "./transport-detection-Do2pYMAH.js";
1
+ import { t as detectSignalTransport } from "./transport-detection-CqyR2vG8.mjs";
2
2
  export { detectSignalTransport };
@@ -1,35 +1,4 @@
1
- import { isIP } from "node:net";
2
- //#region extensions/signal/src/transport-url.ts
3
- function normalizeSignalTransportUrl(value) {
4
- const trimmed = value.trim();
5
- if (!trimmed) throw new Error("Signal transport URL is required");
6
- if (/^https?:/i.test(trimmed) && !/^https?:\/\/[^/]/i.test(trimmed)) throw new Error("Signal transport URL has a malformed HTTP scheme");
7
- const explicitScheme = /^([a-z][a-z0-9+.-]*):\/\//i.exec(trimmed)?.[1]?.toLowerCase();
8
- if (explicitScheme && explicitScheme !== "http" && explicitScheme !== "https") throw new Error(`Signal transport URL unsupported protocol: ${explicitScheme}:`);
9
- const parsed = new URL(/^https?:\/\//i.test(trimmed) ? trimmed : `http://${trimmed}`);
10
- if (parsed.protocol !== "http:" && parsed.protocol !== "https:") throw new Error(`Signal transport URL unsupported protocol: ${parsed.protocol}`);
11
- if (parsed.username || parsed.password) throw new Error("Signal transport URL must not include credentials");
12
- const pathname = parsed.pathname === "/" ? "" : parsed.pathname.replace(/\/+$/, "");
13
- return `${parsed.protocol}//${parsed.host}${pathname}`;
14
- }
15
- function normalizeSignalTransportHost(host) {
16
- const trimmedHost = host.trim();
17
- const hasOpeningBracket = trimmedHost.startsWith("[");
18
- if (hasOpeningBracket !== trimmedHost.endsWith("]")) throw new Error("Signal transport host has mismatched IPv6 brackets");
19
- const normalizedHost = hasOpeningBracket ? trimmedHost.slice(1, -1) : trimmedHost;
20
- if (!normalizedHost || /[\s/\\?#@]/.test(normalizedHost)) throw new Error("Signal transport host must be a hostname or IP address");
21
- if (isIP(normalizedHost) === 0) {
22
- const hostname = normalizedHost.endsWith(".") ? normalizedHost.slice(0, -1) : normalizedHost;
23
- const labels = hostname.split(".");
24
- if (hostname.length > 253 || labels.some((label) => !label || label.length > 63 || !/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(label))) throw new Error("Signal transport host must be a hostname or IP address");
25
- }
26
- return normalizedHost;
27
- }
28
- function buildSignalTransportHttpUrl(host, port) {
29
- const normalizedHost = normalizeSignalTransportHost(host);
30
- return normalizeSignalTransportUrl(`http://${normalizedHost.includes(":") ? `[${normalizedHost}]` : normalizedHost}:${port}`);
31
- }
32
- //#endregion
1
+ import { a as normalizeSignalTransportUrl } from "./transport-url-CAC0JcuI.mjs";
33
2
  //#region extensions/signal/src/transport-policy.ts
34
3
  const DEFAULT_SIGNAL_MANAGED_NATIVE_PORT = 8080;
35
4
  const DEFAULT_SIGNAL_MANAGED_NATIVE_HOST = "127.0.0.1";
@@ -96,4 +65,4 @@ function assignSignalManagedNativePort(transport, httpPort) {
96
65
  };
97
66
  }
98
67
  //#endregion
99
- export { isSignalManagedNativeConnectionUrlForBind as a, buildSignalTransportHttpUrl as c, assignSignalManagedNativePort as i, normalizeSignalTransportHost as l, DEFAULT_SIGNAL_MANAGED_NATIVE_PORT as n, isValidSignalManagedNativePort as o, allocateSignalManagedNativePort as r, resolveLocalSignalTransportPort as s, DEFAULT_SIGNAL_MANAGED_NATIVE_HOST as t, normalizeSignalTransportUrl as u };
68
+ export { isSignalManagedNativeConnectionUrlForBind as a, assignSignalManagedNativePort as i, DEFAULT_SIGNAL_MANAGED_NATIVE_PORT as n, isValidSignalManagedNativePort as o, allocateSignalManagedNativePort as r, resolveLocalSignalTransportPort as s, DEFAULT_SIGNAL_MANAGED_NATIVE_HOST as t };
@@ -0,0 +1,2 @@
1
+ import { n as signalCheck, o as containerCheck } from "./client-BseAt7F7.mjs";
2
+ export { containerCheck, signalCheck as nativeCheck };