@openclaw/signal 2026.10.5-beta.3 → 2026.10.10-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/dist/.setup/{accounts-DMtj2E-4.mjs → accounts-B0Pba1-q.mjs} +3 -2
  2. package/dist/.setup/{api-CfFaBHKY.mjs → api-CzKr1lQN.mjs} +8 -8
  3. package/dist/.setup/{api-oTYg1sqh.mjs → api-ylHKOSSq.mjs} +6 -6
  4. package/dist/.setup/{approval-auth-BITw96pZ.mjs → approval-auth-DhUKkSkA.mjs} +1 -1
  5. package/dist/.setup/{approval-handler.runtime-DzZCg6An.mjs → approval-handler.runtime-qDG12_4V.mjs} +6 -6
  6. package/dist/.setup/{approval-reactions-POBtr9RL.mjs → approval-reactions-JsqCEOHK.mjs} +3 -3
  7. package/dist/.setup/{channel-v_OVXflu.mjs → channel-guL6QH47.mjs} +66 -145
  8. package/dist/.setup/{client-DrPmUInx.mjs → client-Duwqbgqi.mjs} +7 -17
  9. package/dist/.setup/{client-adapter-C25_QRp1.mjs → client-adapter-Chnbch_z.mjs} +1 -1
  10. package/dist/.setup/{doctor-contract-api-CGS80vmV.mjs → doctor-contract-api-BIdVW0PF.mjs} +2 -2
  11. package/dist/.setup/{monitor-B2dIc7fW.mjs → monitor-DldFmVVK.mjs} +48 -106
  12. package/dist/.setup/{probe-D6n3Nkud.mjs → probe-CvYdLBHM.mjs} +3 -3
  13. package/dist/.setup/{reaction-runtime-api-BoF_xKQe.mjs → reaction-runtime-api-mdO4k0yv.mjs} +2 -2
  14. package/dist/.setup/{reaction-targets-Bw8pIemQ.mjs → reaction-targets-BgPLDHBf.mjs} +3 -3
  15. package/dist/.setup/{send-Da8lyyyC.mjs → send-BRjkYbdz.mjs} +10 -11
  16. package/dist/.setup/{setup-surface-D1IPnECU.mjs → setup-surface-CAnAkngR.mjs} +2 -2
  17. package/dist/.setup/{transport-detection-C7tIMlYW.mjs → transport-detection-SO-gF_og.mjs} +2 -2
  18. package/dist/.setup/transport-probes.runtime-D5HTmtuk.mjs +1 -0
  19. package/dist/api.js +8 -8
  20. package/dist/channel-config-api.js +1 -2
  21. package/dist/channel-plugin-api.js +1 -2
  22. package/dist/doctor-contract-api.js +1 -2
  23. package/dist/reaction-runtime-api.js +1 -2
  24. package/dist/runtime-api.js +1 -2
  25. package/dist/setup-entry.js +1 -1
  26. package/node_modules/@openclaw/fs-safe/CHANGELOG.md +148 -0
  27. package/node_modules/@openclaw/fs-safe/README.md +20 -4
  28. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +2 -1
  29. package/node_modules/@openclaw/fs-safe/dist/advanced.js +1 -0
  30. package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +28 -3
  31. package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
  32. package/node_modules/@openclaw/fs-safe/dist/archive-read.js +11 -5
  33. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.js +4 -2
  34. package/node_modules/@openclaw/fs-safe/dist/archive.js +2 -2
  35. package/node_modules/@openclaw/fs-safe/dist/atomic-io.js +2 -2
  36. package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts +1 -0
  37. package/node_modules/@openclaw/fs-safe/dist/bounded-read.js +9 -2
  38. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts +2 -0
  39. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.js +2 -1
  40. package/node_modules/@openclaw/fs-safe/dist/config.d.ts +6 -0
  41. package/node_modules/@openclaw/fs-safe/dist/config.js +5 -0
  42. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts +3 -1
  43. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.js +8 -7
  44. package/node_modules/@openclaw/fs-safe/dist/copy-link.d.ts +26 -0
  45. package/node_modules/@openclaw/fs-safe/dist/copy-link.js +170 -0
  46. package/node_modules/@openclaw/fs-safe/dist/copy-metadata.d.ts +9 -0
  47. package/node_modules/@openclaw/fs-safe/dist/copy-metadata.js +39 -0
  48. package/node_modules/@openclaw/fs-safe/dist/copy-path-admission.js +11 -2
  49. package/node_modules/@openclaw/fs-safe/dist/copy-root-file-sync.d.ts +2 -4
  50. package/node_modules/@openclaw/fs-safe/dist/copy-root-file-sync.js +4 -2
  51. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.js +3 -6
  52. package/node_modules/@openclaw/fs-safe/dist/copy.js +3 -3
  53. package/node_modules/@openclaw/fs-safe/dist/create.js +1 -1
  54. package/node_modules/@openclaw/fs-safe/dist/creation-boundary.js +7 -4
  55. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.d.ts +12 -0
  56. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.js +29 -0
  57. package/node_modules/@openclaw/fs-safe/dist/directory-durability.d.ts +7 -4
  58. package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +20 -5
  59. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts +3 -0
  60. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.js +27 -2
  61. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.d.ts +7 -7
  62. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.js +9 -4
  63. package/node_modules/@openclaw/fs-safe/dist/durability.d.ts +2 -1
  64. package/node_modules/@openclaw/fs-safe/dist/entry-publication.js +2 -2
  65. package/node_modules/@openclaw/fs-safe/dist/exact-identity.d.ts +17 -0
  66. package/node_modules/@openclaw/fs-safe/dist/exact-identity.js +29 -0
  67. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.js +4 -2
  68. package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts +1 -1
  69. package/node_modules/@openclaw/fs-safe/dist/file-hash.js +11 -9
  70. package/node_modules/@openclaw/fs-safe/dist/file-identity.d.ts +7 -1
  71. package/node_modules/@openclaw/fs-safe/dist/file-identity.js +27 -5
  72. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.js +1 -2
  73. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +8 -1
  74. package/node_modules/@openclaw/fs-safe/dist/file-lock.d.ts +1 -0
  75. package/node_modules/@openclaw/fs-safe/dist/file-lock.js +1 -0
  76. package/node_modules/@openclaw/fs-safe/dist/file-write-lease.d.ts +9 -0
  77. package/node_modules/@openclaw/fs-safe/dist/file-write-lease.js +42 -0
  78. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts +1 -0
  79. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.js +22 -15
  80. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +3 -0
  81. package/node_modules/@openclaw/fs-safe/dist/hardlink-fallback.d.ts +1 -0
  82. package/node_modules/@openclaw/fs-safe/dist/hardlink-fallback.js +5 -0
  83. package/node_modules/@openclaw/fs-safe/dist/index.d.ts +1 -0
  84. package/node_modules/@openclaw/fs-safe/dist/index.js +1 -0
  85. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.js +16 -3
  86. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.js +24 -13
  87. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +85 -18
  88. package/node_modules/@openclaw/fs-safe/dist/native-config.d.ts +5 -0
  89. package/node_modules/@openclaw/fs-safe/dist/native-config.js +11 -0
  90. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.js +6 -4
  91. package/node_modules/@openclaw/fs-safe/dist/native-fallback-warning.d.ts +2 -1
  92. package/node_modules/@openclaw/fs-safe/dist/native-fallback-warning.js +26 -2
  93. package/node_modules/@openclaw/fs-safe/dist/native-guidance.d.ts +3 -0
  94. package/node_modules/@openclaw/fs-safe/dist/native-guidance.js +21 -0
  95. package/node_modules/@openclaw/fs-safe/dist/native-move-fallback.d.ts +1 -1
  96. package/node_modules/@openclaw/fs-safe/dist/native-move-fallback.js +2 -0
  97. package/node_modules/@openclaw/fs-safe/dist/native-operations.js +8 -6
  98. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts +44 -4
  99. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.js +85 -15
  100. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts +3 -3
  101. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.js +33 -6
  102. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.d.ts +4 -1
  103. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +22 -3
  104. package/node_modules/@openclaw/fs-safe/dist/native-policy-directory-observation.js +4 -3
  105. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent.d.ts +1 -1
  106. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent.js +3 -0
  107. package/node_modules/@openclaw/fs-safe/dist/native-staged-file-metadata.d.ts +3 -0
  108. package/node_modules/@openclaw/fs-safe/dist/native-staged-file-metadata.js +16 -0
  109. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts +1 -1
  110. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +15 -5
  111. package/node_modules/@openclaw/fs-safe/dist/native-stat-identity.d.ts +3 -0
  112. package/node_modules/@openclaw/fs-safe/dist/native-stat-identity.js +7 -0
  113. package/node_modules/@openclaw/fs-safe/dist/native-status.d.ts +17 -0
  114. package/node_modules/@openclaw/fs-safe/dist/native-status.js +30 -0
  115. package/node_modules/@openclaw/fs-safe/dist/native.d.ts +31 -4
  116. package/node_modules/@openclaw/fs-safe/dist/native.js +107 -9
  117. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.js +9 -1
  118. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.js +4 -1
  119. package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch.js +1 -1
  120. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.js +1 -1
  121. package/node_modules/@openclaw/fs-safe/dist/permission-exec.js +9 -1
  122. package/node_modules/@openclaw/fs-safe/dist/permissions-public.d.ts +1 -0
  123. package/node_modules/@openclaw/fs-safe/dist/permissions-public.js +1 -0
  124. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.js +83 -47
  125. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts +2 -0
  126. package/node_modules/@openclaw/fs-safe/dist/pinned-open.js +8 -3
  127. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.js +13 -0
  128. package/node_modules/@openclaw/fs-safe/dist/pinned-write-staged.js +10 -8
  129. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts +2 -1
  130. package/node_modules/@openclaw/fs-safe/dist/pinned-write.js +7 -5
  131. package/node_modules/@openclaw/fs-safe/dist/pipe.d.ts +9 -0
  132. package/node_modules/@openclaw/fs-safe/dist/pipe.js +26 -0
  133. package/node_modules/@openclaw/fs-safe/dist/private-directory.js +1 -1
  134. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.js +2 -5
  135. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts +3 -2
  136. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.js +38 -10
  137. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +92 -10
  138. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.d.ts +3 -0
  139. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.js +3 -0
  140. package/node_modules/@openclaw/fs-safe/dist/publish-file.d.ts +5 -3
  141. package/node_modules/@openclaw/fs-safe/dist/publish-file.js +26 -20
  142. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.d.ts +2 -0
  143. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.js +3 -4
  144. package/node_modules/@openclaw/fs-safe/dist/realpath.js +32 -0
  145. package/node_modules/@openclaw/fs-safe/dist/regular-file.d.ts +4 -0
  146. package/node_modules/@openclaw/fs-safe/dist/regular-file.js +11 -15
  147. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.js +3 -2
  148. package/node_modules/@openclaw/fs-safe/dist/root-copy.d.ts +18 -0
  149. package/node_modules/@openclaw/fs-safe/dist/root-copy.js +128 -0
  150. package/node_modules/@openclaw/fs-safe/dist/root-create-native.d.ts +8 -13
  151. package/node_modules/@openclaw/fs-safe/dist/root-create-native.js +252 -27
  152. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.js +5 -1
  153. package/node_modules/@openclaw/fs-safe/dist/root-directory-list-types.d.ts +11 -8
  154. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +35 -13
  155. package/node_modules/@openclaw/fs-safe/dist/root-file-open-batch-sync.d.ts +8 -0
  156. package/node_modules/@openclaw/fs-safe/dist/root-file-open-batch-sync.js +108 -0
  157. package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts +7 -0
  158. package/node_modules/@openclaw/fs-safe/dist/root-file.js +15 -0
  159. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts +2 -0
  160. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +154 -175
  161. package/node_modules/@openclaw/fs-safe/dist/root-mkdir-native.d.ts +2 -0
  162. package/node_modules/@openclaw/fs-safe/dist/root-mkdir-native.js +239 -0
  163. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +37 -15
  164. package/node_modules/@openclaw/fs-safe/dist/root-native-creation-path.d.ts +32 -0
  165. package/node_modules/@openclaw/fs-safe/dist/root-native-creation-path.js +56 -0
  166. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts +2 -0
  167. package/node_modules/@openclaw/fs-safe/dist/root-public-types.d.ts +1 -0
  168. package/node_modules/@openclaw/fs-safe/dist/root-remove-native.js +95 -16
  169. package/node_modules/@openclaw/fs-safe/dist/root-remove.js +6 -4
  170. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +23 -19
  171. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +8 -6
  172. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.js +5 -1
  173. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.js +3 -1
  174. package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts +2 -0
  175. package/node_modules/@openclaw/fs-safe/dist/secure-file.js +10 -4
  176. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.js +1 -1
  177. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +2 -2
  178. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-retained.js +1 -1
  179. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-target.js +8 -1
  180. package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts +13 -0
  181. package/node_modules/@openclaw/fs-safe/dist/staged-directory.js +29 -0
  182. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +5 -3
  183. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts +8 -0
  184. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +13 -2
  185. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +71 -3
  186. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-ownership.d.ts +2 -1
  187. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-ownership.js +22 -0
  188. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts +3 -0
  189. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts +1 -0
  190. package/node_modules/@openclaw/fs-safe/dist/test-hooks.js +1 -0
  191. package/node_modules/@openclaw/fs-safe/dist/trash.js +2 -2
  192. package/node_modules/@openclaw/fs-safe/dist/types.d.ts +4 -0
  193. package/node_modules/@openclaw/fs-safe/dist/watch-native.js +2 -2
  194. package/node_modules/@openclaw/fs-safe/dist/windows-appcontainer.d.ts +5 -0
  195. package/node_modules/@openclaw/fs-safe/dist/windows-appcontainer.js +39 -0
  196. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts +1 -0
  197. package/node_modules/@openclaw/fs-safe/dist/windows-owner.js +25 -36
  198. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.js +24 -5
  199. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.d.ts +2 -1
  200. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.js +4 -0
  201. package/node_modules/@openclaw/fs-safe/dist/windows-security-helper.d.ts +2 -0
  202. package/node_modules/@openclaw/fs-safe/dist/windows-security-helper.exe +0 -0
  203. package/node_modules/@openclaw/fs-safe/dist/windows-security-helper.js +7 -0
  204. package/node_modules/@openclaw/fs-safe/dist/windows-test-hooks.d.ts +16 -0
  205. package/node_modules/@openclaw/fs-safe/dist/windows-test-hooks.js +51 -0
  206. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts +1 -0
  207. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.js +12 -10
  208. package/node_modules/@openclaw/fs-safe/docs/advanced.md +2 -1
  209. package/node_modules/@openclaw/fs-safe/docs/archive.md +16 -0
  210. package/node_modules/@openclaw/fs-safe/docs/config.md +71 -1
  211. package/node_modules/@openclaw/fs-safe/docs/contributing.md +45 -5
  212. package/node_modules/@openclaw/fs-safe/docs/copy.md +45 -5
  213. package/node_modules/@openclaw/fs-safe/docs/durability.md +34 -7
  214. package/node_modules/@openclaw/fs-safe/docs/errors.md +8 -0
  215. package/node_modules/@openclaw/fs-safe/docs/guest.md +2 -0
  216. package/node_modules/@openclaw/fs-safe/docs/install.md +47 -27
  217. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.5.md +6 -6
  218. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.6.md +1 -1
  219. package/node_modules/@openclaw/fs-safe/docs/native-helper.md +79 -6
  220. package/node_modules/@openclaw/fs-safe/docs/native.md +279 -8
  221. package/node_modules/@openclaw/fs-safe/docs/permissions.md +64 -15
  222. package/node_modules/@openclaw/fs-safe/docs/pipe.md +81 -0
  223. package/node_modules/@openclaw/fs-safe/docs/platform-capabilities.md +63 -0
  224. package/node_modules/@openclaw/fs-safe/docs/public-api.md +10 -0
  225. package/node_modules/@openclaw/fs-safe/docs/queue-link-free-design.md +237 -0
  226. package/node_modules/@openclaw/fs-safe/docs/quickstart.md +23 -3
  227. package/node_modules/@openclaw/fs-safe/docs/reading.md +56 -2
  228. package/node_modules/@openclaw/fs-safe/docs/regular-file.md +2 -0
  229. package/node_modules/@openclaw/fs-safe/docs/secret-file.md +5 -5
  230. package/node_modules/@openclaw/fs-safe/docs/secure-file.md +1 -1
  231. package/node_modules/@openclaw/fs-safe/docs/security-model.md +35 -0
  232. package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +31 -13
  233. package/node_modules/@openclaw/fs-safe/docs/staged-file.md +18 -0
  234. package/node_modules/@openclaw/fs-safe/docs/store.md +15 -0
  235. package/node_modules/@openclaw/fs-safe/docs/temp.md +39 -0
  236. package/node_modules/@openclaw/fs-safe/docs/testing.md +13 -0
  237. package/node_modules/@openclaw/fs-safe/docs/types.md +51 -81
  238. package/node_modules/@openclaw/fs-safe/docs/walk.md +4 -1
  239. package/node_modules/@openclaw/fs-safe/docs/watch.md +3 -2
  240. package/node_modules/@openclaw/fs-safe/docs/writing.md +121 -14
  241. package/node_modules/@openclaw/fs-safe/package.json +21 -12
  242. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  243. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +1 -1
  244. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  245. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +1 -1
  246. package/node_modules/@openclaw/fs-safe-freebsd-arm64/fs-safe-native.node +0 -0
  247. package/node_modules/@openclaw/fs-safe-freebsd-arm64/package.json +29 -0
  248. package/node_modules/@openclaw/fs-safe-freebsd-x64/fs-safe-native.node +0 -0
  249. package/node_modules/@openclaw/fs-safe-freebsd-x64/package.json +29 -0
  250. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  251. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +1 -1
  252. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  253. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +1 -1
  254. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  255. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +1 -1
  256. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  257. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +1 -1
  258. package/node_modules/@openclaw/fs-safe-win32-arm64-msvc/fs-safe-native.node +0 -0
  259. package/node_modules/@openclaw/fs-safe-win32-arm64-msvc/package.json +29 -0
  260. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  261. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +1 -1
  262. package/package.json +5 -5
  263. package/dist/.setup/transport-probes.runtime-CE-YN8v-.mjs +0 -2
  264. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.cs +0 -336
  265. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.ps1 +0 -90
@@ -51,8 +51,9 @@ function resolveSignalManagedNativePort(params) {
51
51
  if (!isSignalAccountConfigured(accountConfig) || !isSignalAccountEnabled(params.cfg, accountConfig)) continue;
52
52
  const transport = accountConfig.transport;
53
53
  if (transport?.kind === "managed-native" && transport.httpPort === explicitPort) throw new Error(`Signal managed native accounts "${params.accountId}" and "${accountId}" both bind port ${explicitPort}. Assign each account a distinct transport.httpPort.`);
54
- const independentLocalUrl = transport?.kind === "external-native" || transport?.kind === "container" || transport?.kind === "managed-native" && Boolean(transport.url) && !isSignalManagedNativeConnectionUrlForBind(transport) ? transport.url : void 0;
55
- if (independentLocalUrl && resolveLocalSignalTransportPort(independentLocalUrl) === explicitPort) throw new Error(`Signal managed native account "${params.accountId}" binds port ${explicitPort}, which conflicts with account "${accountId}" local transport endpoint. Assign a distinct transport.httpPort.`);
54
+ const siblingPorts = /* @__PURE__ */ new Set();
55
+ reserveSignalTransportPorts(transport, siblingPorts);
56
+ if (siblingPorts.has(explicitPort)) throw new Error(`Signal managed native account "${params.accountId}" binds port ${explicitPort}, which conflicts with account "${accountId}" local transport endpoint. Assign a distinct transport.httpPort.`);
56
57
  }
57
58
  return explicitPort;
58
59
  }
@@ -1,12 +1,12 @@
1
- import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-DMtj2E-4.mjs";
1
+ import { i as resolveSignalAccount, n as listSignalAccountIds, r as resolveDefaultSignalAccountId, t as listEnabledSignalAccounts } from "./accounts-B0Pba1-q.mjs";
2
2
  import { n as normalizeSignalMessagingTarget, t as looksLikeSignalTargetId } from "./normalize-D7kSomXt.mjs";
3
3
  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-B3JyPqGO.mjs";
4
- import { _ as resolveSignalReactionLevel, a as normalizeSignalAccountInput, b as markdownToSignalTextChunks, d as probeSignalTransport, f as writeSignalAccountTransport, g as signalMessageActions, h as resolveSignalOutboundTarget, t as signalPlugin, u as prepareSignalManagedNativeTransport, y as markdownToSignalText } from "./channel-v_OVXflu.mjs";
5
- import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-BoF_xKQe.mjs";
6
- import { t as detectSignalTransport } from "./transport-detection-C7tIMlYW.mjs";
7
- import { t as signalSetupPlugin } from "./api-oTYg1sqh.mjs";
4
+ import { _ as resolveSignalReactionLevel, a as normalizeSignalAccountInput, b as markdownToSignalTextChunks, d as probeSignalTransport, f as writeSignalAccountTransport, g as signalMessageActions, h as resolveSignalOutboundTarget, t as signalPlugin, u as prepareSignalManagedNativeTransport, y as markdownToSignalText } from "./channel-guL6QH47.mjs";
5
+ import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-mdO4k0yv.mjs";
6
+ import { t as detectSignalTransport } from "./transport-detection-SO-gF_og.mjs";
7
+ import { t as signalSetupPlugin } from "./api-ylHKOSSq.mjs";
8
8
  import { r as installSignalCli } from "./install-signal-cli-hYVLYGXe.mjs";
9
- import { t as monitorSignalProvider } from "./monitor-B2dIc7fW.mjs";
10
- import { n as sendReadReceiptSignal, r as sendTypingSignal, t as sendMessageSignal } from "./send-Da8lyyyC.mjs";
11
- import { t as probeSignal } from "./probe-D6n3Nkud.mjs";
9
+ import { t as monitorSignalProvider } from "./monitor-DldFmVVK.mjs";
10
+ import { n as sendReadReceiptSignal, r as sendTypingSignal, t as sendMessageSignal } from "./send-BRjkYbdz.mjs";
11
+ import { t as probeSignal } from "./probe-CvYdLBHM.mjs";
12
12
  export { detectSignalTransport, formatSignalPairingIdLine, formatSignalSenderDisplay, formatSignalSenderId, installSignalCli, isSignalSenderAllowed, listEnabledSignalAccounts, listSignalAccountIds, looksLikeSignalTargetId, looksLikeUuid, markdownToSignalText, markdownToSignalTextChunks, monitorSignalProvider, normalizeSignalAccountInput, normalizeSignalAllowRecipient, normalizeSignalMessagingTarget, prepareSignalManagedNativeTransport, probeSignal, probeSignalTransport, removeReactionSignal, resolveDefaultSignalAccountId, resolveSignalAccount, resolveSignalOutboundTarget, resolveSignalPeerId, resolveSignalReactionLevel, resolveSignalRecipient, resolveSignalSender, sendMessageSignal, sendReactionSignal, sendReadReceiptSignal, sendTypingSignal, signalMessageActions, signalPlugin, signalSetupPlugin, writeSignalAccountTransport };
@@ -1,12 +1,12 @@
1
- import "./accounts-DMtj2E-4.mjs";
1
+ import "./accounts-B0Pba1-q.mjs";
2
2
  import "./normalize-D7kSomXt.mjs";
3
3
  import "./identity-B3JyPqGO.mjs";
4
- import { l as signalSetupContract, n as createSignalPluginBase, r as signalSetupWizard } from "./channel-v_OVXflu.mjs";
5
- import "./reaction-runtime-api-BoF_xKQe.mjs";
4
+ import { l as signalSetupContract, n as createSignalPluginBase, r as signalSetupWizard } from "./channel-guL6QH47.mjs";
5
+ import "./reaction-runtime-api-mdO4k0yv.mjs";
6
6
  import "./install-signal-cli-hYVLYGXe.mjs";
7
- import "./monitor-B2dIc7fW.mjs";
8
- import "./send-Da8lyyyC.mjs";
9
- import "./probe-D6n3Nkud.mjs";
7
+ import "./monitor-DldFmVVK.mjs";
8
+ import "./send-BRjkYbdz.mjs";
9
+ import "./probe-CvYdLBHM.mjs";
10
10
  //#region extensions/signal/src/channel.setup.ts
11
11
  const signalSetupPlugin = createSignalPluginBase({
12
12
  setupWizard: signalSetupWizard,
@@ -1,4 +1,4 @@
1
- import { i as resolveSignalAccount } from "./accounts-DMtj2E-4.mjs";
1
+ import { i as resolveSignalAccount } from "./accounts-B0Pba1-q.mjs";
2
2
  import { n as normalizeSignalMessagingTarget, t as looksLikeSignalTargetId } from "./normalize-D7kSomXt.mjs";
3
3
  import { l as looksLikeUuid } from "./identity-B3JyPqGO.mjs";
4
4
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1,14 +1,14 @@
1
- import { r as resolveDefaultSignalAccountId } from "./accounts-DMtj2E-4.mjs";
1
+ import { r as resolveDefaultSignalAccountId } from "./accounts-B0Pba1-q.mjs";
2
2
  import { n as normalizeSignalMessagingTarget } from "./normalize-D7kSomXt.mjs";
3
- import { a as resolveSignalTarget } from "./approval-auth-BITw96pZ.mjs";
4
- import { a as registerSignalApprovalReactionTarget, c as resolveSignalApprovalTargetAuthorKeys, l as unregisterSignalApprovalReactionTarget, r as hasSignalApprovalReactionApprovers, s as resolveSignalApprovalConversationKey } from "./approval-reactions-POBtr9RL.mjs";
5
- import { r as sendTypingSignal, t as sendMessageSignal } from "./send-Da8lyyyC.mjs";
3
+ import { a as resolveSignalTarget } from "./approval-auth-DhUKkSkA.mjs";
4
+ import { a as registerSignalApprovalReactionTarget, c as resolveSignalApprovalTargetAuthorKeys, l as unregisterSignalApprovalReactionTarget, r as hasSignalApprovalReactionApprovers, s as resolveSignalApprovalConversationKey } from "./approval-reactions-JsqCEOHK.mjs";
5
+ import { r as sendTypingSignal, t as sendMessageSignal } from "./send-BRjkYbdz.mjs";
6
6
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
7
7
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
9
9
  import { buildApprovalReactionPendingContent } from "openclaw/plugin-sdk/approval-reaction-runtime";
10
10
  import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
11
- import { buildChannelApprovalExpiredText, buildChannelApprovalResolvedText, createChannelApprovalNativeRuntimeAdapter, resolvePreparedApprovalAccountId } from "openclaw/plugin-sdk/approval-handler-runtime";
11
+ import { buildChannelApprovalExpiredText, buildChannelApprovalResolvedText, createChannelApprovalNativeRuntimeAdapterAsync, resolvePreparedApprovalAccountId } from "openclaw/plugin-sdk/approval-handler-runtime";
12
12
  //#region extensions/signal/src/approval-handler.runtime.ts
13
13
  const log = createSubsystemLogger("signal/approvals");
14
14
  function readSignalApprovalRuntimeContext(context) {
@@ -19,7 +19,7 @@ function readSignalApprovalRuntimeContext(context) {
19
19
  accountUuid: normalizeOptionalString(value?.accountUuid)
20
20
  };
21
21
  }
22
- const signalApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapter({
22
+ const signalApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapterAsync({
23
23
  eventKinds: [
24
24
  "exec",
25
25
  "plugin",
@@ -1,6 +1,6 @@
1
- import { o as __exportAll } from "./doctor-contract-api-CGS80vmV.mjs";
1
+ import { o as __exportAll } from "./doctor-contract-api-BIdVW0PF.mjs";
2
2
  import { n as normalizeSignalMessagingTarget } from "./normalize-D7kSomXt.mjs";
3
- import { a as resolveSignalTarget, i as resolveSignalDeliveredConversationKey, n as signalApprovalAuth, t as getSignalApprovalApprovers } from "./approval-auth-BITw96pZ.mjs";
3
+ import { a as resolveSignalTarget, i as resolveSignalDeliveredConversationKey, n as signalApprovalAuth, t as getSignalApprovalApprovers } from "./approval-auth-DhUKkSkA.mjs";
4
4
  import { l as looksLikeUuid } from "./identity-B3JyPqGO.mjs";
5
5
  import { t as getOptionalSignalRuntime } from "./runtime-8sxUF217.mjs";
6
6
  import { createLazyRuntimeSurface } from "openclaw/plugin-sdk/lazy-runtime";
@@ -100,7 +100,7 @@ const signalApprovalReactionTargets = createApprovalReactionTargetStore({
100
100
  namespace: PERSISTENT_NAMESPACE,
101
101
  maxEntries: PERSISTENT_MAX_ENTRIES,
102
102
  defaultTtlMs: DEFAULT_REACTION_TARGET_TTL_MS,
103
- openStore: (storeParams) => getOptionalSignalRuntime()?.state.openKeyedStore(storeParams),
103
+ openStore: (storeParams) => getOptionalSignalRuntime()?.state.openKeyedStoreV2(storeParams),
104
104
  logPersistentError: reportPersistentApprovalReactionError,
105
105
  readPersistedTarget
106
106
  });
@@ -1,13 +1,13 @@
1
- import { a as migrateLegacySignalTransportConfig, i as clearLegacySignalTransportFieldsForAccount, n as normalizeCompatibilityConfig, r as repairSignalAccountKeys } from "./doctor-contract-api-CGS80vmV.mjs";
1
+ import { a as migrateLegacySignalTransportConfig, i as clearLegacySignalTransportFieldsForAccount, n as normalizeCompatibilityConfig, r as repairSignalAccountKeys } from "./doctor-contract-api-BIdVW0PF.mjs";
2
2
  import { a as normalizeSignalTransportUrl, i as normalizeSignalTransportHost, o as resolveSignalAccountEntry, s as resolveSignalAccountKey, t as assertSignalSocketTransport } from "./transport-url-CAC0JcuI.mjs";
3
3
  import { a as isSignalManagedNativeConnectionUrlForBind, c as resolveLocalSignalTransportPort, i as assignSignalManagedNativePort, o as isValidSignalManagedNativePort, r as allocateSignalManagedNativePort, s as reserveSignalTransportPorts } from "./transport-policy-B6C_LogW.mjs";
4
- import { a as resolveSignalAccountConfig, i as resolveSignalAccount, n as listSignalAccountIds, o as resolveSignalReplyToMode, r as resolveDefaultSignalAccountId, s as resolveSignalTransport, t as listEnabledSignalAccounts } from "./accounts-DMtj2E-4.mjs";
4
+ import { a as resolveSignalAccountConfig, i as resolveSignalAccount, n as listSignalAccountIds, o as resolveSignalReplyToMode, r as resolveDefaultSignalAccountId, s as resolveSignalTransport, t as listEnabledSignalAccounts } from "./accounts-B0Pba1-q.mjs";
5
5
  import { n as normalizeSignalMessagingTarget, r as normalizeSignalReactionRecipient, t as looksLikeSignalTargetId } from "./normalize-D7kSomXt.mjs";
6
- import { a as resolveSignalTarget, n as signalApprovalAuth, r as listSignalAliasDirectoryEntries, t as getSignalApprovalApprovers } from "./approval-auth-BITw96pZ.mjs";
6
+ import { a as resolveSignalTarget, n as signalApprovalAuth, r as listSignalAliasDirectoryEntries, t as getSignalApprovalApprovers } from "./approval-auth-DhUKkSkA.mjs";
7
7
  import { c as resolveSignalSender, l as looksLikeUuid, o as resolveSignalPeerId, s as resolveSignalRecipient } from "./identity-B3JyPqGO.mjs";
8
- import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-BoF_xKQe.mjs";
8
+ import { n as sendReactionSignal, t as removeReactionSignal } from "./reaction-runtime-api-mdO4k0yv.mjs";
9
9
  import { t as getOptionalSignalRuntime } from "./runtime-8sxUF217.mjs";
10
- import { t as detectSignalTransport } from "./transport-detection-C7tIMlYW.mjs";
10
+ import { t as detectSignalTransport } from "./transport-detection-SO-gF_og.mjs";
11
11
  import { t as SignalChannelConfigSchema } from "./config-schema-DvxZ18SD.mjs";
12
12
  import { describeAccountSnapshot, resolveChannelMediaMaxBytes } from "openclaw/plugin-sdk/account-helpers";
13
13
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
@@ -26,8 +26,8 @@ import { buildBaseChannelStatusSummary, collectStatusIssuesFromLastError, create
26
26
  import { asPositiveSafeInteger, normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeStringifiedEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
27
27
  import { FormatCapabilityProfile, markdownToIR, renderMarkdownIRChunksWithinLimit, renderMarkdownWithAttributedRanges, sanitizeAssistantVisibleText } from "openclaw/plugin-sdk/text-chunking";
28
28
  import { normalizeAccountId as normalizeAccountId$1 } from "openclaw/plugin-sdk/account-resolution";
29
- import { createApproverRestrictedNativeApprovalCapabilityFromForwardingRoutes } from "openclaw/plugin-sdk/approval-delivery-runtime";
30
- import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
29
+ import { createApproverRestrictedNativeApprovalCapabilityFromForwardingRoutesAsync } from "openclaw/plugin-sdk/approval-delivery-runtime";
30
+ import { createLazyChannelApprovalNativeRuntimeAdapterAsync } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
31
31
  import { shouldSuppressLocalNativeExecApprovalPrompt } from "openclaw/plugin-sdk/approval-native-runtime";
32
32
  import { buildApprovalReactionPendingContentForRequest } from "openclaw/plugin-sdk/approval-reaction-runtime";
33
33
  import { normalizeE164 } from "openclaw/plugin-sdk/text-utility-runtime";
@@ -40,6 +40,7 @@ import { parseAllowFromEntries } from "openclaw/plugin-sdk/allow-from";
40
40
  import { getExecApprovalReplyMetadata } from "openclaw/plugin-sdk/approval-reply-runtime";
41
41
  import { isMessagePresentationInteractiveBlock, normalizeMessagePresentation, renderMessagePresentationFallbackText } from "openclaw/plugin-sdk/interactive-runtime";
42
42
  import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
43
+ import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
43
44
  import { createChannelDmPolicy } from "openclaw/plugin-sdk/channel-dm-policy";
44
45
  import { defineChannelSetupContract } from "openclaw/plugin-sdk/channel-setup";
45
46
  import { patchTopLevelChannelConfigSection } from "openclaw/plugin-sdk/setup";
@@ -54,7 +55,7 @@ function isSignalApprovalTransportEnabled(params) {
54
55
  accountId: params.accountId
55
56
  }).enabled;
56
57
  }
57
- const signalApproval = createApproverRestrictedNativeApprovalCapabilityFromForwardingRoutes({
58
+ const signalApproval = createApproverRestrictedNativeApprovalCapabilityFromForwardingRoutesAsync({
58
59
  channel: "signal",
59
60
  channelLabel: "Signal",
60
61
  authorizeActorAction: (params) => signalApprovalAuth.authorizeActorAction(params),
@@ -84,7 +85,7 @@ const signalApproval = createApproverRestrictedNativeApprovalCapabilityFromForwa
84
85
  nowMs
85
86
  }).manualFallbackPayload }
86
87
  },
87
- createNativeRuntime: (routing) => createLazyChannelApprovalNativeRuntimeAdapter({
88
+ createNativeRuntime: (routing) => createLazyChannelApprovalNativeRuntimeAdapterAsync({
88
89
  capabilityBoundary: true,
89
90
  eventKinds: [
90
91
  "exec",
@@ -95,13 +96,13 @@ const signalApproval = createApproverRestrictedNativeApprovalCapabilityFromForwa
95
96
  cfg,
96
97
  accountId
97
98
  }),
98
- shouldHandle: ({ cfg, accountId, context, approvalKind, request }) => Boolean(context) && routing.shouldHandleApprovalRequest({
99
+ shouldHandle: async ({ cfg, accountId, context, approvalKind, request }) => Boolean(context) && routing.shouldHandleApprovalRequest({
99
100
  cfg,
100
101
  accountId,
101
102
  approvalKind,
102
103
  request
103
104
  }),
104
- load: async () => (await import("./approval-handler.runtime-DzZCg6An.mjs")).signalApprovalNativeRuntime
105
+ load: async () => (await import("./approval-handler.runtime-qDG12_4V.mjs")).signalApprovalNativeRuntime
105
106
  })
106
107
  });
107
108
  const signalApprovalRouting = signalApproval.routing;
@@ -389,27 +390,23 @@ function materializeSignalPresentationFallback(payload, presentationOverride) {
389
390
  }
390
391
  //#endregion
391
392
  //#region extensions/signal/src/reply-authors-state.ts
392
- const signalReplyAuthorState = {
393
- memoryReplyContexts: /* @__PURE__ */ new Map(),
394
- persistentStoreDisabled: false
395
- };
393
+ const signalReplyAuthorState = { memoryReplyContexts: /* @__PURE__ */ new Map() };
396
394
  //#endregion
397
395
  //#region extensions/signal/src/reply-authors.ts
398
396
  const PERSISTENT_NAMESPACE = "signal.reply-authors.v1";
399
397
  const PERSISTENT_MAX_ENTRIES = 5e3;
400
398
  const DEFAULT_REPLY_AUTHOR_TTL_MS = 6048e5;
401
399
  const { memoryReplyContexts } = signalReplyAuthorState;
400
+ const replyContextWrites = new KeyedAsyncQueue();
402
401
  function openSignalReplyAuthorStore() {
403
- if (signalReplyAuthorState.persistentStoreDisabled) return;
404
402
  const runtime = getOptionalSignalRuntime();
405
403
  try {
406
- return runtime?.state.openKeyedStore({
404
+ return runtime?.state.openKeyedStoreV2({
407
405
  namespace: PERSISTENT_NAMESPACE,
408
406
  maxEntries: PERSISTENT_MAX_ENTRIES,
409
407
  defaultTtlMs: DEFAULT_REPLY_AUTHOR_TTL_MS
410
408
  });
411
409
  } catch (error) {
412
- signalReplyAuthorState.persistentStoreDisabled = true;
413
410
  runtime?.logging.getChildLogger({
414
411
  plugin: "signal",
415
412
  feature: "reply-author-state"
@@ -482,77 +479,26 @@ async function registerSignalReplyContext(params) {
482
479
  registeredAt
483
480
  };
484
481
  const expiresAt = registeredAt + DEFAULT_REPLY_AUTHOR_TTL_MS;
485
- const usesComparisons = Boolean(store?.observe && store.compareAndApply);
486
- if (!store || !store.update && !usesComparisons) {
487
- const next = mergeReplyContext(memoryReplyContexts.get(key), record);
488
- memoryReplyContexts.set(key, {
489
- ...next,
490
- expiresAt
491
- });
492
- pruneMemoryReplyContexts(registeredAt);
493
- if (store) {
494
- signalReplyAuthorState.persistentStoreDisabled = true;
482
+ await replyContextWrites.enqueue(key, async () => {
483
+ const cached = memoryReplyContexts.get(key);
484
+ let next = mergeReplyContext(cached && cached.expiresAt > registeredAt ? cached : void 0, record);
485
+ try {
486
+ if (store) {
487
+ next = mergeReplyContext(await store.lookup(key), next);
488
+ await store.register(key, next);
489
+ }
490
+ } catch (error) {
495
491
  getOptionalSignalRuntime()?.logging.getChildLogger({
496
492
  plugin: "signal",
497
493
  feature: "reply-author-state"
498
- }).warn("Signal persistent reply author state lacks atomic updates");
494
+ }).warn("Signal persistent reply author state failed", { error: String(error) });
499
495
  }
500
- return;
501
- }
502
- const cachedBeforeUpdate = memoryReplyContexts.get(key);
503
- const cacheReplyContext = (next) => {
504
- const current = memoryReplyContexts.get(key);
505
- const changedDuringUpdate = usesComparisons && current !== cachedBeforeUpdate;
506
- if (!next) {
507
- if (!changedDuringUpdate) memoryReplyContexts.delete(key);
508
- return;
509
- }
510
- const concurrent = changedDuringUpdate && current && current.expiresAt > registeredAt ? current : void 0;
511
496
  memoryReplyContexts.set(key, {
512
- ...concurrent ? mergeReplyContext(concurrent, next) : next,
513
- expiresAt: Math.max(expiresAt, concurrent?.expiresAt ?? expiresAt)
514
- });
515
- };
516
- let updateEvaluated = false;
517
- let nextRecord;
518
- try {
519
- let updated = false;
520
- if (store.observe && store.compareAndApply) {
521
- let observation = await store.observe(key);
522
- for (;;) {
523
- updateEvaluated = true;
524
- nextRecord = mergeReplyContext(observation.value, record);
525
- const result = await store.compareAndApply(key, observation.comparison, {
526
- operation: "update",
527
- action: "set",
528
- value: nextRecord
529
- });
530
- if (result.status !== "conflict") {
531
- updated = result.status === "applied";
532
- break;
533
- }
534
- observation = result.current;
535
- }
536
- } else if (store.update) updated = await store.update(key, (current) => {
537
- updateEvaluated = true;
538
- nextRecord = mergeReplyContext(current, record);
539
- return nextRecord;
497
+ ...next,
498
+ expiresAt
540
499
  });
541
- cacheReplyContext(updated ? nextRecord : void 0);
542
- pruneMemoryReplyContexts(registeredAt);
543
- } catch (error) {
544
- if (!updateEvaluated) try {
545
- nextRecord = mergeReplyContext(await store.lookup(key), record);
546
- } catch {
547
- nextRecord = void 0;
548
- }
549
- if (nextRecord || updateEvaluated) cacheReplyContext(nextRecord);
550
500
  pruneMemoryReplyContexts(registeredAt);
551
- getOptionalSignalRuntime()?.logging.getChildLogger({
552
- plugin: "signal",
553
- feature: "reply-author-state"
554
- }).warn("Signal persistent reply author state failed", { error: String(error) });
555
- }
501
+ });
556
502
  }
557
503
  async function resolveSignalReplyContextWithPersistence(params) {
558
504
  const store = openSignalReplyAuthorStore();
@@ -573,10 +519,6 @@ async function resolveSignalReplyContextWithPersistence(params) {
573
519
  }
574
520
  //#endregion
575
521
  //#region extensions/signal/src/setup-transport.ts
576
- function managedTransportOptions(transport) {
577
- const { kind: _kind, ...options } = transport;
578
- return options;
579
- }
580
522
  function normalizeTransport(transport) {
581
523
  if (transport.kind === "managed-native") {
582
524
  assertSignalSocketTransport(transport);
@@ -703,11 +645,11 @@ async function probeSignalTransport(params) {
703
645
  const transport = params.transport.kind === "managed-native" ? prepareSignalManagedNativeTransport({
704
646
  cfg: params.cfg,
705
647
  accountId: params.accountId,
706
- overrides: managedTransportOptions(params.transport)
648
+ overrides: params.transport
707
649
  }) : params.transport;
708
650
  const resolved = resolveSignalTransport(transport);
709
- if (resolved.kind === "container") return (params.probeContainer ?? (await import("./transport-probes.runtime-CE-YN8v-.mjs")).containerCheck)(resolved.baseUrl, timeoutMs, params.account);
710
- return (params.probeNative ?? (await import("./transport-probes.runtime-CE-YN8v-.mjs")).nativeCheck)(resolved.baseUrl, timeoutMs);
651
+ if (resolved.kind === "container") return (params.probeContainer ?? (await import("./transport-probes.runtime-D5HTmtuk.mjs")).containerCheck)(resolved.baseUrl, timeoutMs, params.account);
652
+ return (params.probeNative ?? (await import("./transport-probes.runtime-D5HTmtuk.mjs")).nativeCheck)(resolved.baseUrl, timeoutMs);
711
653
  }
712
654
  function writeSignalAccountTransport(params) {
713
655
  const transport = normalizeTransport(params.transport);
@@ -1050,7 +992,7 @@ function createSignalSetupWizardProxy(loadWizard) {
1050
992
  const signalDoctor = {
1051
993
  normalizeCompatibilityConfig,
1052
994
  cleanStaleConfig: async ({ cfg }) => {
1053
- const { detectSignalTransport } = await import("./transport-detection-C7tIMlYW.mjs").then((n) => n.n);
995
+ const { detectSignalTransport } = await import("./transport-detection-SO-gF_og.mjs").then((n) => n.n);
1054
996
  const transport = await migrateLegacySignalTransportConfig({
1055
997
  cfg,
1056
998
  detect: detectSignalTransport
@@ -1064,7 +1006,7 @@ const signalDoctor = {
1064
1006
  //#endregion
1065
1007
  //#region extensions/signal/src/shared.ts
1066
1008
  const SIGNAL_CHANNEL = "signal";
1067
- const signalSetupWizard = createSignalSetupWizardProxy(async () => (await import("./setup-surface-D1IPnECU.mjs")).signalSetupWizard);
1009
+ const signalSetupWizard = createSignalSetupWizardProxy(async () => (await import("./setup-surface-CAnAkngR.mjs")).signalSetupWizard);
1068
1010
  const signalConfigAdapter = {
1069
1011
  ...createScopedChannelConfigAdapter({
1070
1012
  sectionKey: SIGNAL_CHANNEL,
@@ -1149,17 +1091,30 @@ function createSignalPluginBase(params) {
1149
1091
  }
1150
1092
  //#endregion
1151
1093
  //#region extensions/signal/src/channel.ts
1152
- const loadSignalMonitorModule = createLazyRuntimeModule(() => import("./monitor-B2dIc7fW.mjs").then((n) => n.n));
1153
- const loadSignalProbeModule = createLazyRuntimeModule(() => import("./probe-D6n3Nkud.mjs").then((n) => n.n));
1154
- const loadSignalSendRuntime = createLazyRuntimeModule(() => import("./send-Da8lyyyC.mjs").then((n) => n.i));
1155
- const loadSignalApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-POBtr9RL.mjs").then((n) => n.n));
1156
- async function resolveSignalSendContext(params) {
1157
- return {
1158
- send: resolveOutboundSendDep(params.deps, "signal") ?? (await loadSignalSendRuntime()).sendMessageSignal,
1159
- maxBytes: resolveChannelMediaMaxBytes({
1094
+ const loadSignalMonitorModule = createLazyRuntimeModule(() => import("./monitor-DldFmVVK.mjs").then((n) => n.n));
1095
+ const loadSignalProbeModule = createLazyRuntimeModule(() => import("./probe-CvYdLBHM.mjs").then((n) => n.n));
1096
+ const loadSignalSendRuntime = createLazyRuntimeModule(() => import("./send-BRjkYbdz.mjs").then((n) => n.i));
1097
+ const loadSignalApprovalReactionsModule = createLazyRuntimeModule(() => import("./approval-reactions-JsqCEOHK.mjs").then((n) => n.n));
1098
+ async function createSignalOutboundSender(params) {
1099
+ const send = resolveOutboundSendDep(params.deps, "signal") ?? (await loadSignalSendRuntime()).sendMessageSignal;
1100
+ const maxBytes = resolveChannelMediaMaxBytes({
1101
+ cfg: params.cfg,
1102
+ resolveChannelLimitMb: () => resolveSignalAccount(params).config.mediaMaxMb
1103
+ });
1104
+ return async (to, text, { replyToId, ...options }) => {
1105
+ const replyOptions = await resolveSignalReplyOptions({
1106
+ ...params,
1107
+ to,
1108
+ replyToId
1109
+ });
1110
+ return await send(to, text, {
1160
1111
  cfg: params.cfg,
1161
- resolveChannelLimitMb: () => resolveSignalAccount(params).config.mediaMaxMb
1162
- })
1112
+ ...options,
1113
+ maxBytes,
1114
+ accountId: params.accountId ?? void 0,
1115
+ assertDirectAdapterHandoff: params.assertDirectAdapterHandoff,
1116
+ ...replyOptions
1117
+ });
1163
1118
  };
1164
1119
  }
1165
1120
  function resolveSignalSendTarget(params) {
@@ -1170,25 +1125,12 @@ function resolveSignalSendTarget(params) {
1170
1125
  })?.to ?? params.to.trim();
1171
1126
  }
1172
1127
  async function sendSignalOutbound(params) {
1173
- const accountId = params.accountId ?? void 0;
1174
- const { send, maxBytes } = await resolveSignalSendContext(params);
1175
- const to = resolveSignalSendTarget(params);
1176
- const replyOptions = await resolveSignalReplyOptions({
1177
- cfg: params.cfg,
1178
- to,
1179
- accountId,
1180
- replyToId: params.replyToId
1181
- });
1182
- return await send(to, params.text, {
1183
- cfg: params.cfg,
1128
+ return await (await createSignalOutboundSender(params))(resolveSignalSendTarget(params), params.text, {
1129
+ replyToId: params.replyToId,
1184
1130
  ...params.mediaUrl ? { mediaUrl: params.mediaUrl } : {},
1185
1131
  ...params.mediaAccess ? { mediaAccess: params.mediaAccess } : {},
1186
1132
  ...params.mediaLocalRoots?.length ? { mediaLocalRoots: params.mediaLocalRoots } : {},
1187
- ...params.mediaReadFile ? { mediaReadFile: params.mediaReadFile } : {},
1188
- maxBytes,
1189
- accountId,
1190
- assertDirectAdapterHandoff: params.assertDirectAdapterHandoff,
1191
- ...replyOptions
1133
+ ...params.mediaReadFile ? { mediaReadFile: params.mediaReadFile } : {}
1192
1134
  });
1193
1135
  }
1194
1136
  async function resolveSignalReplyOptions(params) {
@@ -1263,7 +1205,7 @@ function resolveSignalOutboundSessionRoute(params) {
1263
1205
  };
1264
1206
  }
1265
1207
  async function sendFormattedSignalText(ctx) {
1266
- const { send, maxBytes } = await resolveSignalSendContext(ctx);
1208
+ const send = await createSignalOutboundSender(ctx);
1267
1209
  const limit = resolveTextChunkLimit(ctx.cfg, "signal", ctx.accountId ?? void 0, { fallbackLimit: 4e3 });
1268
1210
  const to = resolveSignalSendTarget(ctx);
1269
1211
  const tableMode = resolveMarkdownTableMode({
@@ -1289,21 +1231,10 @@ async function sendFormattedSignalText(ctx) {
1289
1231
  const results = [];
1290
1232
  for (const chunk of chunks) {
1291
1233
  ctx.abortSignal?.throwIfAborted();
1292
- const replyToId = nextReplyToId();
1293
- const replyOptions = await resolveSignalReplyOptions({
1294
- cfg: ctx.cfg,
1295
- to,
1296
- accountId: ctx.accountId,
1297
- replyToId
1298
- });
1299
1234
  const result = await send(to, chunk.text, {
1300
- cfg: ctx.cfg,
1301
- maxBytes,
1302
- accountId: ctx.accountId ?? void 0,
1235
+ replyToId: nextReplyToId(),
1303
1236
  textMode: "plain",
1304
- textStyles: chunk.styles,
1305
- assertDirectAdapterHandoff: ctx.assertDirectAdapterHandoff,
1306
- ...replyOptions
1237
+ textStyles: chunk.styles
1307
1238
  });
1308
1239
  const deliveryResult = attachChannelToResult("signal", attachSignalVisibleText(result, chunk.text));
1309
1240
  results.push(deliveryResult);
@@ -1313,7 +1244,7 @@ async function sendFormattedSignalText(ctx) {
1313
1244
  }
1314
1245
  async function sendFormattedSignalMedia(ctx) {
1315
1246
  ctx.abortSignal?.throwIfAborted();
1316
- const { send, maxBytes } = await resolveSignalSendContext(ctx);
1247
+ const send = await createSignalOutboundSender(ctx);
1317
1248
  const to = resolveSignalSendTarget(ctx);
1318
1249
  const tableMode = resolveMarkdownTableMode({
1319
1250
  cfg: ctx.cfg,
@@ -1324,24 +1255,14 @@ async function sendFormattedSignalMedia(ctx) {
1324
1255
  text: ctx.text,
1325
1256
  styles: []
1326
1257
  };
1327
- const replyOptions = await resolveSignalReplyOptions({
1328
- cfg: ctx.cfg,
1329
- to,
1330
- accountId: ctx.accountId,
1331
- replyToId: ctx.replyToId
1332
- });
1333
1258
  const result = await send(to, formatted.text, {
1334
- cfg: ctx.cfg,
1259
+ replyToId: ctx.replyToId,
1335
1260
  mediaUrl: ctx.mediaUrl,
1336
1261
  ...ctx.mediaAccess ? { mediaAccess: ctx.mediaAccess } : {},
1337
1262
  mediaLocalRoots: ctx.mediaLocalRoots,
1338
1263
  ...ctx.mediaReadFile ? { mediaReadFile: ctx.mediaReadFile } : {},
1339
- maxBytes,
1340
- accountId: ctx.accountId ?? void 0,
1341
1264
  textMode: "plain",
1342
- textStyles: formatted.styles,
1343
- assertDirectAdapterHandoff: ctx.assertDirectAdapterHandoff,
1344
- ...replyOptions
1265
+ textStyles: formatted.styles
1345
1266
  });
1346
1267
  return attachChannelToResult("signal", attachSignalVisibleText(result, formatted.text));
1347
1268
  }
@@ -1353,7 +1274,7 @@ async function registerDeliveredSignalApprovalPayloadForReactions(params) {
1353
1274
  const targetAuthor = normalizeOptionalString(account.config.account);
1354
1275
  const targetAuthorUuid = normalizeOptionalString(account.config.accountUuid);
1355
1276
  if (!targetAuthor && !targetAuthorUuid) return;
1356
- const { registerSignalReactionTargetsForDeliveredPayload } = await import("./reaction-targets-Bw8pIemQ.mjs").then((n) => n.t);
1277
+ const { registerSignalReactionTargetsForDeliveredPayload } = await import("./reaction-targets-BgPLDHBf.mjs").then((n) => n.t);
1357
1278
  await registerSignalReactionTargetsForDeliveredPayload({
1358
1279
  cfg: params.cfg,
1359
1280
  target: {
@@ -760,7 +760,6 @@ async function streamSignalUnixEvents(params) {
760
760
  timeoutMs: params.timeoutMs === 0 ? DEFAULT_TIMEOUT_MS$1 : params.timeoutMs
761
761
  }, params.abortSignal);
762
762
  const id = randomUUID();
763
- let subscribed = false;
764
763
  let subscription;
765
764
  try {
766
765
  connection.socket.write(`${JSON.stringify({
@@ -775,7 +774,6 @@ async function streamSignalUnixEvents(params) {
775
774
  const value = result(message);
776
775
  if (typeof value !== "number" || !Number.isInteger(value) || value < 0) throw new Error("Signal UNIX RPC returned invalid receive subscription");
777
776
  subscription = value;
778
- subscribed = true;
779
777
  connection.ready();
780
778
  params.onStreamOpen?.();
781
779
  continue;
@@ -792,7 +790,7 @@ async function streamSignalUnixEvents(params) {
792
790
  data: JSON.stringify(payload)
793
791
  });
794
792
  }
795
- if (!subscribed) throw new Error("Signal UNIX RPC closed before receive subscription");
793
+ if (subscription === void 0) throw new Error("Signal UNIX RPC closed before receive subscription");
796
794
  } finally {
797
795
  connection.close();
798
796
  }
@@ -862,7 +860,6 @@ function initiateSignalHttp(url, options) {
862
860
  const client = url.protocol === "https:" ? https : http;
863
861
  options.assertDirectAdapterHandoff?.();
864
862
  return new Promise((resolve, reject) => {
865
- let settled = false;
866
863
  const deadline = setTimeout(() => {
867
864
  request?.destroy(/* @__PURE__ */ new Error(`Signal HTTP exceeded deadline after ${timeoutMs}ms`));
868
865
  }, timeoutMs);
@@ -871,18 +868,10 @@ function initiateSignalHttp(url, options) {
871
868
  clearTimeout(deadline);
872
869
  request?.setTimeout(0);
873
870
  };
874
- const rejectOnce = (error) => {
875
- if (settled) return;
876
- settled = true;
871
+ const rejectResponse = (error) => {
877
872
  cleanup();
878
873
  reject(toErrorObject(error, "Non-Error rejection"));
879
874
  };
880
- const resolveOnce = (response) => {
881
- if (settled) return;
882
- settled = true;
883
- cleanup();
884
- resolve(response);
885
- };
886
875
  const maxResponseBytes = Math.floor(asPositiveFiniteNumber(options.maxResponseBytes) ?? DEFAULT_SIGNAL_HTTP_RESPONSE_MAX_BYTES);
887
876
  const request = client.request(url, {
888
877
  method: options.method,
@@ -897,14 +886,15 @@ function initiateSignalHttp(url, options) {
897
886
  const error = /* @__PURE__ */ new Error("Signal HTTP response exceeded size limit");
898
887
  request?.destroy(error);
899
888
  res.destroy(error);
900
- rejectOnce(error);
889
+ rejectResponse(error);
901
890
  return;
902
891
  }
903
892
  chunks.push(next);
904
893
  });
905
- res.on("error", rejectOnce);
894
+ res.on("error", rejectResponse);
906
895
  res.on("end", () => {
907
- resolveOnce({
896
+ cleanup();
897
+ resolve({
908
898
  status: res.statusCode ?? 0,
909
899
  body: Buffer$1.concat(chunks)
910
900
  });
@@ -913,7 +903,7 @@ function initiateSignalHttp(url, options) {
913
903
  request.setTimeout(timeoutMs, () => {
914
904
  request?.destroy(/* @__PURE__ */ new Error(`Signal HTTP timed out after ${timeoutMs}ms`));
915
905
  });
916
- request.on("error", rejectOnce);
906
+ request.on("error", rejectResponse);
917
907
  if (options.body !== void 0) request.write(options.body);
918
908
  request.end();
919
909
  });
@@ -1,4 +1,4 @@
1
- import { c as containerRpcRequest, i as streamSignalEvents$1, l as streamContainerEvents, n as signalCheck$1, r as signalRpcRequest$1, s as containerCheck } from "./client-DrPmUInx.mjs";
1
+ import { c as containerRpcRequest, i as streamSignalEvents$1, l as streamContainerEvents, n as signalCheck$1, r as signalRpcRequest$1, s as containerCheck } from "./client-Duwqbgqi.mjs";
2
2
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
3
3
  //#region extensions/signal/src/client-adapter.ts
4
4
  const DEFAULT_TIMEOUT_MS = 1e4;
@@ -197,8 +197,8 @@ function nestedDefaultOwnsEffectiveTransport(entries) {
197
197
  return isRecord(nestedDefault) && (isSignalTransportConfig(nestedDefault.transport) || hasLegacySignalTransportFields(nestedDefault));
198
198
  }
199
199
  function isDiscardedTransportEntry(entries, index) {
200
- if (index === 0) return !hasRootSignalAccount(entries) || nestedDefaultOwnsEffectiveTransport(entries);
201
- return index === resolveNestedDefaultEntryIndex(entries) && isSignalTransportConfig(entries[0]?.transport);
200
+ if (isSignalTransportConfig(entries[0]?.transport)) return index === resolveNestedDefaultEntryIndex(entries);
201
+ return index === 0 && (!hasRootSignalAccount(entries) || nestedDefaultOwnsEffectiveTransport(entries));
202
202
  }
203
203
  function shouldMaterializeTransport(entries, index) {
204
204
  if (isDiscardedTransportEntry(entries, index)) return false;