@openclaw/signal 2026.9.6 → 2026.9.7

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 (279) hide show
  1. package/assets/icon.png +0 -0
  2. package/dist/.setup/{accounts-BV6tDOTc.mjs → accounts-DMtj2E-4.mjs} +6 -35
  3. package/dist/.setup/api-DEB0Obj8.mjs +16 -0
  4. package/dist/.setup/{api-CGh4eWR8.mjs → api-DmCb6e7E.mjs} +10 -10
  5. package/dist/.setup/{approval-auth-BBI9BTRm.mjs → approval-auth-CszS7gwf.mjs} +7 -13
  6. package/dist/.setup/{approval-handler.runtime-C3vN5OWd.mjs → approval-handler.runtime-D9ofZcZW.mjs} +10 -29
  7. package/dist/.setup/{approval-reactions-DDQvPP_z.mjs → approval-reactions-BKkjIAoi.mjs} +25 -36
  8. package/dist/.setup/{channel-DhzTcFsK.mjs → channel-DrUxv5cf.mjs} +567 -136
  9. package/dist/.setup/{client-BseAt7F7.mjs → client-AXcDteBZ.mjs} +63 -152
  10. package/dist/.setup/client-adapter-c_O1ouxZ.mjs +30 -0
  11. package/dist/.setup/{config-schema-aQwwMGUj.mjs → config-schema-DvxZ18SD.mjs} +3 -13
  12. package/dist/.setup/{doctor-contract-api-Rbq_sRTI.mjs → doctor-contract-api-Db9V9gsY.mjs} +212 -91
  13. package/dist/.setup/{identity-YXPmgFMu.mjs → identity-B3JyPqGO.mjs} +2 -6
  14. package/dist/.setup/{install-signal-cli-BDbzFcU2.mjs → install-signal-cli-ChvjzM6X.mjs} +0 -4
  15. package/dist/.setup/legacy-transport-QIpaMNST.mjs +18 -0
  16. package/dist/.setup/{monitor-Dnz6Ygz5.mjs → monitor-BfwQr78f.mjs} +95 -124
  17. package/dist/.setup/{probe-DXT2eLnw.mjs → probe-BYLzra6D.mjs} +9 -9
  18. package/dist/.setup/{reaction-runtime-api-BnQGHcrB.mjs → reaction-runtime-api-DDi5x2wC.mjs} +3 -17
  19. package/dist/.setup/{question-reactions-C8cSEjVf.mjs → reaction-targets-CEdyjtrC.mjs} +11 -8
  20. package/dist/.setup/{rpc-context-CwwADZ1b.mjs → rpc-context-D26RxFIm.mjs} +1 -1
  21. package/dist/.setup/runtime-8sxUF217.mjs +8 -0
  22. package/dist/.setup/{send-B78M_eFp.mjs → send-DEjrbpIC.mjs} +25 -55
  23. package/dist/.setup/{channel.runtime-CG79z_Vy.mjs → setup-surface-Drt-4t3R.mjs} +4 -6
  24. package/dist/.setup/transport-detection-BVUDE42e.mjs +25 -0
  25. package/dist/.setup/{transport-policy-5VSnj5ma.mjs → transport-policy-B6C_LogW.mjs} +19 -1
  26. package/dist/.setup/transport-probes.runtime-DwXEHnXr.mjs +2 -0
  27. package/dist/api.js +10 -10
  28. package/dist/channel-config-api.js +1 -1
  29. package/dist/channel-plugin-api.js +1 -1
  30. package/dist/contract-api.js +2 -2
  31. package/dist/doctor-contract-api.js +1 -1
  32. package/dist/reaction-runtime-api.js +1 -1
  33. package/dist/runtime-api.js +2 -19
  34. package/dist/setup-entry.js +1 -1
  35. package/node_modules/@openclaw/fs-safe/CHANGELOG.md +102 -0
  36. package/node_modules/@openclaw/fs-safe/README.md +24 -6
  37. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +6 -1
  38. package/node_modules/@openclaw/fs-safe/dist/advanced.js +3 -1
  39. package/node_modules/@openclaw/fs-safe/dist/archive-durability.js +1 -1
  40. package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +1 -2
  41. package/node_modules/@openclaw/fs-safe/dist/archive-plan.d.ts +2 -7
  42. package/node_modules/@openclaw/fs-safe/dist/archive-read.js +9 -18
  43. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +1 -2
  44. package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +3 -3
  45. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.js +4 -0
  46. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.d.ts +11 -11
  47. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.js +3 -35
  48. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.d.ts +2 -2
  49. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.js +2 -12
  50. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts +7 -3
  51. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.js +13 -10
  52. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.js +3 -1
  53. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts +2 -3
  54. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.js +16 -8
  55. package/node_modules/@openclaw/fs-safe/dist/archive.d.ts +6 -3
  56. package/node_modules/@openclaw/fs-safe/dist/archive.js +22 -19
  57. package/node_modules/@openclaw/fs-safe/dist/atomic.d.ts +1 -1
  58. package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts +1 -3
  59. package/node_modules/@openclaw/fs-safe/dist/copy-publication.js +2 -6
  60. package/node_modules/@openclaw/fs-safe/dist/deny-mutation-match.d.ts +2 -0
  61. package/node_modules/@openclaw/fs-safe/dist/deny-mutation-match.js +71 -0
  62. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.js +4 -3
  63. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts +0 -1
  64. package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +0 -3
  65. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts +20 -2
  66. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.js +77 -1
  67. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.js +5 -7
  68. package/node_modules/@openclaw/fs-safe/dist/effective-uid.js +1 -4
  69. package/node_modules/@openclaw/fs-safe/dist/errors.d.ts +3 -1
  70. package/node_modules/@openclaw/fs-safe/dist/errors.js +3 -2
  71. package/node_modules/@openclaw/fs-safe/dist/file-identity.js +10 -2
  72. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-acquisition.js +1 -1
  73. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.js +5 -1
  74. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.d.ts +4 -11
  75. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.js +1 -4
  76. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.d.ts +3 -6
  77. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.js +1 -1
  78. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-options.d.ts +2 -10
  79. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.d.ts +2 -4
  80. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +2 -2
  81. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts +3 -7
  82. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.js +7 -10
  83. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.js +7 -6
  84. package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts +4 -7
  85. package/node_modules/@openclaw/fs-safe/dist/file-store.js +19 -21
  86. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +23 -31
  87. package/node_modules/@openclaw/fs-safe/dist/guest.js +21 -12
  88. package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts +4 -9
  89. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts +1 -5
  90. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts +0 -1
  91. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.js +2 -7
  92. package/node_modules/@openclaw/fs-safe/dist/local-file-access.js +2 -5
  93. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts +2 -5
  94. package/node_modules/@openclaw/fs-safe/dist/local-roots.d.ts +2 -7
  95. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.js +4 -4
  96. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.js +5 -0
  97. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +51 -14
  98. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +8 -2
  99. package/node_modules/@openclaw/fs-safe/dist/native-staged-symlink.d.ts +13 -0
  100. package/node_modules/@openclaw/fs-safe/dist/native-staged-symlink.js +303 -0
  101. package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch-worker.d.ts +1 -0
  102. package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch-worker.js +54 -0
  103. package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch.d.ts +5 -0
  104. package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch.js +64 -0
  105. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.d.ts +2 -0
  106. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.js +3 -0
  107. package/node_modules/@openclaw/fs-safe/dist/path.js +17 -1
  108. package/node_modules/@openclaw/fs-safe/dist/permission-exec.d.ts +6 -0
  109. package/node_modules/@openclaw/fs-safe/dist/permission-exec.js +3 -6
  110. package/node_modules/@openclaw/fs-safe/dist/permissions-public.d.ts +3 -1
  111. package/node_modules/@openclaw/fs-safe/dist/permissions-public.js +1 -0
  112. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts +3 -6
  113. package/node_modules/@openclaw/fs-safe/dist/permissions.d.ts +3 -10
  114. package/node_modules/@openclaw/fs-safe/dist/permissions.js +0 -1
  115. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts +0 -1
  116. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.js +4 -2
  117. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts +2 -8
  118. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts +1 -1
  119. package/node_modules/@openclaw/fs-safe/dist/pinned-open.js +2 -3
  120. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +4 -0
  121. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.d.ts +2 -5
  122. package/node_modules/@openclaw/fs-safe/dist/regular-file.js +3 -3
  123. package/node_modules/@openclaw/fs-safe/dist/replace-directory.js +5 -17
  124. package/node_modules/@openclaw/fs-safe/dist/replace-file-buffer.d.ts +4 -0
  125. package/node_modules/@openclaw/fs-safe/dist/replace-file-buffer.js +36 -0
  126. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts +4 -10
  127. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +66 -38
  128. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.d.ts +7 -11
  129. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.js +10 -2
  130. package/node_modules/@openclaw/fs-safe/dist/replace-file-destination.d.ts +21 -0
  131. package/node_modules/@openclaw/fs-safe/dist/replace-file-destination.js +123 -0
  132. package/node_modules/@openclaw/fs-safe/dist/replace-file-mutation.d.ts +26 -0
  133. package/node_modules/@openclaw/fs-safe/dist/replace-file-mutation.js +47 -0
  134. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts +2 -2
  135. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.js +16 -4
  136. package/node_modules/@openclaw/fs-safe/dist/replace-file-types.d.ts +55 -0
  137. package/node_modules/@openclaw/fs-safe/dist/replace-file-types.js +1 -0
  138. package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts +3 -55
  139. package/node_modules/@openclaw/fs-safe/dist/replace-file.js +31 -11
  140. package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.d.ts +1 -0
  141. package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.js +1 -1
  142. package/node_modules/@openclaw/fs-safe/dist/retained-file-types.d.ts +50 -0
  143. package/node_modules/@openclaw/fs-safe/dist/retained-file-types.js +1 -0
  144. package/node_modules/@openclaw/fs-safe/dist/retained-file.d.ts +3 -0
  145. package/node_modules/@openclaw/fs-safe/dist/retained-file.js +121 -0
  146. package/node_modules/@openclaw/fs-safe/dist/root-context.js +3 -2
  147. package/node_modules/@openclaw/fs-safe/dist/root-directory-entry.d.ts +9 -0
  148. package/node_modules/@openclaw/fs-safe/dist/root-directory-entry.js +28 -0
  149. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +9 -1
  150. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +88 -37
  151. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts +1 -1
  152. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.js +1 -6
  153. package/node_modules/@openclaw/fs-safe/dist/root-file.js +2 -5
  154. package/node_modules/@openclaw/fs-safe/dist/root-handle-context.d.ts +4 -0
  155. package/node_modules/@openclaw/fs-safe/dist/root-handle-context.js +12 -0
  156. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts +3 -3
  157. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +8 -5
  158. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +2 -7
  159. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +3 -3
  160. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts +0 -1
  161. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.js +0 -3
  162. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts +4 -11
  163. package/node_modules/@openclaw/fs-safe/dist/root-path.js +7 -10
  164. package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts +2 -6
  165. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts +1 -3
  166. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts +19 -12
  167. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +56 -20
  168. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +1 -6
  169. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts +2 -0
  170. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.js +1 -1
  171. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts +1 -0
  172. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.js +8 -2
  173. package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts +6 -2
  174. package/node_modules/@openclaw/fs-safe/dist/secret-file.js +12 -16
  175. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.js +1 -1
  176. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.js +5 -14
  177. package/node_modules/@openclaw/fs-safe/dist/secure-file.js +3 -2
  178. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.js +2 -7
  179. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +4 -4
  180. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-parser.d.ts +1 -2
  181. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.d.ts +2 -8
  182. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts +2 -7
  183. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts +2 -2
  184. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +11 -12
  185. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-stale-admission.d.ts +1 -5
  186. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +9 -7
  187. package/node_modules/@openclaw/fs-safe/dist/staged-symlink-types.d.ts +39 -0
  188. package/node_modules/@openclaw/fs-safe/dist/staged-symlink-types.js +1 -0
  189. package/node_modules/@openclaw/fs-safe/dist/stat-observation.js +3 -10
  190. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.d.ts +2 -0
  191. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.js +6 -6
  192. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.js +58 -7
  193. package/node_modules/@openclaw/fs-safe/dist/temp-target.js +8 -10
  194. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +28 -33
  195. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +1 -1
  196. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +16 -17
  197. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +1 -2
  198. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +4 -9
  199. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-ownership.d.ts +8 -0
  200. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-ownership.js +52 -0
  201. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts +5 -1
  202. package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts +2 -1
  203. package/node_modules/@openclaw/fs-safe/dist/text-atomic.js +2 -0
  204. package/node_modules/@openclaw/fs-safe/dist/trash.js +27 -1
  205. package/node_modules/@openclaw/fs-safe/dist/walk.d.ts +2 -5
  206. package/node_modules/@openclaw/fs-safe/dist/watch-alias.d.ts +6 -0
  207. package/node_modules/@openclaw/fs-safe/dist/watch-alias.js +88 -0
  208. package/node_modules/@openclaw/fs-safe/dist/watch-hints.d.ts +9 -0
  209. package/node_modules/@openclaw/fs-safe/dist/watch-hints.js +93 -0
  210. package/node_modules/@openclaw/fs-safe/dist/watch-native.d.ts +36 -0
  211. package/node_modules/@openclaw/fs-safe/dist/watch-native.js +73 -0
  212. package/node_modules/@openclaw/fs-safe/dist/watch-scan.d.ts +28 -0
  213. package/node_modules/@openclaw/fs-safe/dist/watch-scan.js +300 -0
  214. package/node_modules/@openclaw/fs-safe/dist/watch-stream.d.ts +8 -0
  215. package/node_modules/@openclaw/fs-safe/dist/watch-stream.js +32 -0
  216. package/node_modules/@openclaw/fs-safe/dist/watch-types.d.ts +60 -0
  217. package/node_modules/@openclaw/fs-safe/dist/watch-types.js +1 -0
  218. package/node_modules/@openclaw/fs-safe/dist/watch.d.ts +5 -0
  219. package/node_modules/@openclaw/fs-safe/dist/watch.js +530 -0
  220. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts +3 -7
  221. package/node_modules/@openclaw/fs-safe/dist/windows-owner.js +0 -1
  222. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.cs +6 -6
  223. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.ps1 +78 -3
  224. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.d.ts +8 -0
  225. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.js +66 -15
  226. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.d.ts +4 -0
  227. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.js +6 -2
  228. package/node_modules/@openclaw/fs-safe/docs/advanced.md +4 -2
  229. package/node_modules/@openclaw/fs-safe/docs/archive.md +16 -0
  230. package/node_modules/@openclaw/fs-safe/docs/atomic.md +93 -3
  231. package/node_modules/@openclaw/fs-safe/docs/contributing.md +102 -4
  232. package/node_modules/@openclaw/fs-safe/docs/copy.md +2 -0
  233. package/node_modules/@openclaw/fs-safe/docs/durability.md +7 -0
  234. package/node_modules/@openclaw/fs-safe/docs/file-store.md +5 -0
  235. package/node_modules/@openclaw/fs-safe/docs/guest.md +7 -1
  236. package/node_modules/@openclaw/fs-safe/docs/index.md +1 -0
  237. package/node_modules/@openclaw/fs-safe/docs/install.md +30 -0
  238. package/node_modules/@openclaw/fs-safe/docs/native-helper.md +20 -4
  239. package/node_modules/@openclaw/fs-safe/docs/native.md +63 -1
  240. package/node_modules/@openclaw/fs-safe/docs/permissions.md +66 -0
  241. package/node_modules/@openclaw/fs-safe/docs/public-api.md +30 -3
  242. package/node_modules/@openclaw/fs-safe/docs/retained-file.md +115 -0
  243. package/node_modules/@openclaw/fs-safe/docs/root.md +35 -9
  244. package/node_modules/@openclaw/fs-safe/docs/secret-file.md +19 -0
  245. package/node_modules/@openclaw/fs-safe/docs/security-model.md +4 -1
  246. package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +5 -1
  247. package/node_modules/@openclaw/fs-safe/docs/staged-symlink.md +124 -0
  248. package/node_modules/@openclaw/fs-safe/docs/store.md +3 -1
  249. package/node_modules/@openclaw/fs-safe/docs/temp.md +24 -4
  250. package/node_modules/@openclaw/fs-safe/docs/testing.md +210 -0
  251. package/node_modules/@openclaw/fs-safe/docs/types.md +6 -0
  252. package/node_modules/@openclaw/fs-safe/docs/walk.md +34 -1
  253. package/node_modules/@openclaw/fs-safe/docs/watch.md +251 -0
  254. package/node_modules/@openclaw/fs-safe/docs/writing.md +21 -0
  255. package/node_modules/@openclaw/fs-safe/package.json +13 -9
  256. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  257. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +1 -1
  258. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  259. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +1 -1
  260. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  261. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +1 -1
  262. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  263. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +1 -1
  264. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  265. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +1 -1
  266. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  267. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +1 -1
  268. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  269. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +1 -1
  270. package/package.json +5 -5
  271. package/dist/.setup/api-B9-B1L7Q.mjs +0 -17
  272. package/dist/.setup/client-adapter-dvFa47YL.mjs +0 -63
  273. package/dist/.setup/rolldown-runtime-8H4AJuhK.mjs +0 -14
  274. package/dist/.setup/send.runtime-CLnCWvrM.mjs +0 -2
  275. package/dist/.setup/transport-detection-CoiRl7Gx.mjs +0 -576
  276. package/dist/.setup/transport-detection.runtime-Tlhuv3T_.mjs +0 -2
  277. package/dist/.setup/transport-probes.runtime-WprAyBbL.mjs +0 -2
  278. package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.d.ts +0 -20
  279. package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.js +0 -78
@@ -1,10 +1,10 @@
1
1
  import { createRequire } from "node:module";
2
2
  import { fileURLToPath } from "node:url";
3
- import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
3
+ import { isRecord, normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import net, { createConnection } from "node:net";
5
5
  import path from "node:path";
6
6
  import { detectMime, extractOriginalFilename, parseMediaContentLength } from "openclaw/plugin-sdk/media-runtime";
7
- import { parseStrictNonNegativeInteger, resolvePositiveTimerTimeoutMs, resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
7
+ import { asNonNegativeFiniteNumber, asPositiveFiniteNumber, parseStrictNonNegativeInteger, resolvePositiveTimerTimeoutMs, resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
8
8
  import { coerceErrorMessage, formatErrorMessage, toErrorObject } from "openclaw/plugin-sdk/error-runtime";
9
9
  import { resolveFetch } from "openclaw/plugin-sdk/fetch-runtime";
10
10
  import { readResponseTextPrefix, readResponseWithLimit } from "openclaw/plugin-sdk/response-limit-runtime";
@@ -23,13 +23,6 @@ const require = createRequire(import.meta.url);
23
23
  const WebSocket = require(path.join(path.dirname(require.resolve("ws/package.json")), "index.js"));
24
24
  //#endregion
25
25
  //#region extensions/signal/src/client-container.ts
26
- /**
27
- * Signal client for bbernhard/signal-cli-rest-api container.
28
- * Uses WebSocket for receiving messages and REST API for sending.
29
- *
30
- * This is a separate implementation from client.ts (native signal-cli)
31
- * to keep the two modes cleanly isolated.
32
- */
33
26
  const DEFAULT_TIMEOUT_MS$2 = 1e4;
34
27
  const DEFAULT_ATTACHMENT_RESPONSE_MAX_BYTES = 1048576;
35
28
  const SIGNAL_REST_ERROR_RESPONSE_MAX_BYTES = 16384;
@@ -92,13 +85,6 @@ async function fetchWithTimeout(url, init, timeoutMs) {
92
85
  signal
93
86
  }));
94
87
  }
95
- function normalizeMaxResponseBytes(value) {
96
- if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) return DEFAULT_ATTACHMENT_RESPONSE_MAX_BYTES;
97
- return Math.floor(value);
98
- }
99
- function readContentLength(res) {
100
- return parseMediaContentLength(res.headers?.get("content-length") ?? null) ?? void 0;
101
- }
102
88
  function signalRestIdleTimeoutError({ chunkTimeoutMs }) {
103
89
  return /* @__PURE__ */ new Error(`Signal REST response body stalled after ${chunkTimeoutMs}ms`);
104
90
  }
@@ -124,8 +110,8 @@ async function readSignalRestErrorText(res, bodyIdleTimeoutMs, bodyTimeoutMs) {
124
110
  })).text;
125
111
  }
126
112
  async function readCappedResponseBuffer(res, maxResponseBytes, bodyIdleTimeoutMs, bodyTimeoutMs) {
127
- const contentLength = readContentLength(res);
128
- if (contentLength !== void 0 && contentLength > maxResponseBytes) throw new Error("Signal REST attachment exceeded size limit");
113
+ const contentLength = parseMediaContentLength(res.headers?.get("content-length") ?? null);
114
+ if (contentLength !== null && contentLength > maxResponseBytes) throw new Error("Signal REST attachment exceeded size limit");
129
115
  return await readResponseWithLimit(res, maxResponseBytes, {
130
116
  chunkTimeoutMs: bodyIdleTimeoutMs,
131
117
  onIdleTimeout: signalAttachmentIdleTimeoutError,
@@ -137,9 +123,6 @@ async function readCappedResponseBuffer(res, maxResponseBytes, bodyIdleTimeoutMs
137
123
  async function releaseUnreadResponseBody(res) {
138
124
  if (res?.bodyUsed !== true) await res?.body?.cancel().catch(() => void 0);
139
125
  }
140
- /**
141
- * Check if bbernhard container REST API is available.
142
- */
143
126
  async function containerCheck(baseUrl, timeoutMs = DEFAULT_TIMEOUT_MS$2, account) {
144
127
  const normalized = normalizeBaseUrl$1(baseUrl);
145
128
  let res;
@@ -231,9 +214,6 @@ function containerReceiveCheck(normalizedBaseUrl, account, timeoutMs) {
231
214
  });
232
215
  });
233
216
  }
234
- /**
235
- * Make a REST API request to bbernhard container.
236
- */
237
217
  async function containerRestRequest(endpoint, opts, method = "GET", body) {
238
218
  const url = `${normalizeBaseUrl$1(opts.baseUrl)}${endpoint}`;
239
219
  const init = {
@@ -270,9 +250,6 @@ async function containerRestRequest(endpoint, opts, method = "GET", body) {
270
250
  }
271
251
  });
272
252
  }
273
- /**
274
- * Fetch attachment binary from bbernhard container.
275
- */
276
253
  async function containerFetchAttachment(attachmentId, opts) {
277
254
  const url = `${normalizeBaseUrl$1(opts.baseUrl)}/v1/attachments/${encodeURIComponent(attachmentId)}`;
278
255
  const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS$2;
@@ -288,7 +265,7 @@ async function containerFetchAttachment(attachmentId, opts) {
288
265
  });
289
266
  res = fetched;
290
267
  if (!fetched.ok) return null;
291
- return await readCappedResponseBuffer(fetched, normalizeMaxResponseBytes(opts.maxResponseBytes), bodyIdleTimeoutMs, bodyTimeoutMs);
268
+ return await readCappedResponseBuffer(fetched, Math.floor(asPositiveFiniteNumber(opts.maxResponseBytes) ?? DEFAULT_ATTACHMENT_RESPONSE_MAX_BYTES), bodyIdleTimeoutMs, bodyTimeoutMs);
292
269
  } finally {
293
270
  await releaseUnreadResponseBody(res);
294
271
  }
@@ -457,70 +434,6 @@ function parseContainerSendTimestamp(raw) {
457
434
  if (timestamp === void 0) throw new Error("Signal REST send returned invalid timestamp");
458
435
  return timestamp;
459
436
  }
460
- function normalizeContainerQuoteTimestamp(raw) {
461
- return parseStrictNonNegativeInteger(raw) ?? void 0;
462
- }
463
- function normalizeContainerQuoteText(raw) {
464
- return typeof raw === "string" ? raw : void 0;
465
- }
466
- /**
467
- * Send message via bbernhard container REST API.
468
- */
469
- async function containerSendMessage(params) {
470
- const payload = {
471
- message: params.message,
472
- number: params.account,
473
- recipients: params.recipients
474
- };
475
- if (params.textStyles && params.textStyles.length > 0) {
476
- payload.message = renderContainerStyledText(params.message, params.textStyles);
477
- payload["text_mode"] = "styled";
478
- }
479
- if (params.attachments && params.attachments.length > 0) {
480
- const configuredMaxBytes = params.maxAttachmentBytes;
481
- const maxAttachmentBytes = typeof configuredMaxBytes === "number" && Number.isFinite(configuredMaxBytes) && configuredMaxBytes >= 0 ? Math.floor(configuredMaxBytes) : DEFAULT_SIGNAL_CONTAINER_MAX_ATTACHMENT_BYTES;
482
- payload.base64_attachments = await filesToBase64DataUris(params.attachments, maxAttachmentBytes);
483
- }
484
- if (params.quoteTimestamp !== void 0 && params.quoteAuthor) {
485
- payload.quote_timestamp = params.quoteTimestamp;
486
- payload.quote_author = params.quoteAuthor;
487
- payload.quote_message = params.quoteMessage ?? "";
488
- }
489
- const timestamp = parseContainerSendTimestamp((await containerRestRequest("/v2/send", params, "POST", payload))?.timestamp);
490
- return timestamp === void 0 ? {} : { timestamp };
491
- }
492
- /**
493
- * Send typing indicator via bbernhard container REST API.
494
- */
495
- async function containerSendTyping(params) {
496
- const method = params.stop ? "DELETE" : "PUT";
497
- await containerRestRequest(`/v1/typing-indicator/${encodeURIComponent(params.account)}`, params, method, { recipient: params.recipient });
498
- return true;
499
- }
500
- /**
501
- * Send read receipt via bbernhard container REST API.
502
- */
503
- async function containerSendReceipt(params) {
504
- await containerRestRequest(`/v1/receipts/${encodeURIComponent(params.account)}`, params, "POST", {
505
- recipient: params.recipient,
506
- timestamp: params.timestamp,
507
- receipt_type: params.type ?? "read"
508
- });
509
- return true;
510
- }
511
- /**
512
- * Add or remove a message reaction via the bbernhard container REST API.
513
- */
514
- async function containerSendReaction(params) {
515
- const payload = {
516
- recipient: params.recipient,
517
- reaction: params.emoji,
518
- target_author: params.targetAuthor,
519
- timestamp: params.targetTimestamp
520
- };
521
- if (params.groupId) payload.group_id = params.groupId;
522
- return await containerRestRequest(`/v1/reactions/${encodeURIComponent(params.account)}`, params, params.remove ? "DELETE" : "POST", payload) ?? {};
523
- }
524
437
  /**
525
438
  * Strip the "uuid:" prefix that native signal-cli accepts but the container API rejects.
526
439
  */
@@ -559,56 +472,55 @@ async function containerRpcRequest(method, params, opts) {
559
472
  style
560
473
  }];
561
474
  });
562
- const quoteTimestamp = normalizeContainerQuoteTimestamp(p.quoteTimestamp ?? p["quote-timestamp"]);
563
- const quoteAuthor = normalizeContainerQuoteText(p.quoteAuthor ?? p["quote-author"]);
564
- return await containerSendMessage({
565
- ...opts,
566
- account: p.account ?? "",
567
- recipients: finalRecipients,
568
- message: p.message ?? "",
569
- textStyles,
570
- attachments: p.attachments,
571
- quoteTimestamp,
572
- quoteAuthor: quoteAuthor ? stripUuidPrefix(quoteAuthor) : void 0,
573
- quoteMessage: normalizeContainerQuoteText(p.quoteMessage ?? p["quote-message"])
574
- });
475
+ const message = p.message ?? "";
476
+ const payload = {
477
+ message,
478
+ number: p.account ?? "",
479
+ recipients: finalRecipients
480
+ };
481
+ if (textStyles?.length) {
482
+ payload.message = renderContainerStyledText(message, textStyles);
483
+ payload.text_mode = "styled";
484
+ }
485
+ const attachments = p.attachments;
486
+ if (attachments?.length) payload.base64_attachments = await filesToBase64DataUris(attachments, Math.floor(asNonNegativeFiniteNumber(opts.maxAttachmentBytes) ?? DEFAULT_SIGNAL_CONTAINER_MAX_ATTACHMENT_BYTES));
487
+ const quoteTimestamp = parseStrictNonNegativeInteger(p.quoteTimestamp ?? p["quote-timestamp"]);
488
+ const quoteAuthor = p.quoteAuthor ?? p["quote-author"];
489
+ if (quoteTimestamp !== void 0 && typeof quoteAuthor === "string" && quoteAuthor) {
490
+ const author = stripUuidPrefix(quoteAuthor);
491
+ if (author) {
492
+ const quoteMessage = p.quoteMessage ?? p["quote-message"];
493
+ payload.quote_timestamp = quoteTimestamp;
494
+ payload.quote_author = author;
495
+ payload.quote_message = typeof quoteMessage === "string" ? quoteMessage : "";
496
+ }
497
+ }
498
+ const timestamp = parseContainerSendTimestamp((await containerRestRequest("/v2/send", opts, "POST", payload))?.timestamp);
499
+ return timestamp === void 0 ? {} : { timestamp };
575
500
  }
576
501
  case "sendTyping": {
577
502
  const recipient = stripUuidPrefix(p.recipient?.[0] ?? (p.groupId ? formatGroupIdForContainer(p.groupId) : ""));
578
- await containerSendTyping({
579
- ...opts,
580
- account: p.account ?? "",
581
- recipient,
582
- stop: p.stop
583
- });
503
+ await containerRestRequest(`/v1/typing-indicator/${encodeURIComponent(p.account ?? "")}`, opts, p.stop ? "DELETE" : "PUT", { recipient });
584
504
  return;
585
505
  }
586
- case "sendReceipt": {
587
- const recipient = stripUuidPrefix(p.recipient?.[0] ?? "");
588
- await containerSendReceipt({
589
- ...opts,
590
- account: p.account ?? "",
591
- recipient,
506
+ case "sendReceipt":
507
+ await containerRestRequest(`/v1/receipts/${encodeURIComponent(p.account ?? "")}`, opts, "POST", {
508
+ recipient: stripUuidPrefix(p.recipient?.[0] ?? ""),
592
509
  timestamp: p.targetTimestamp,
593
- type: p.type
510
+ receipt_type: p.type ?? "read"
594
511
  });
595
512
  return;
596
- }
597
513
  case "sendReaction": {
598
514
  const recipient = stripUuidPrefix(p.recipients?.[0] ?? "");
599
- const groupId = p.groupIds?.[0] ?? void 0;
515
+ const groupId = p.groupIds?.[0];
600
516
  const formattedGroupId = groupId ? formatGroupIdForContainer(groupId) : void 0;
601
- const effectiveRecipient = formattedGroupId || recipient || "";
602
- return await containerSendReaction({
603
- ...opts,
604
- account: p.account ?? "",
605
- recipient: effectiveRecipient,
606
- emoji: p.emoji ?? "",
607
- targetAuthor: stripUuidPrefix(p.targetAuthor ?? recipient),
608
- targetTimestamp: p.targetTimestamp,
609
- groupId: formattedGroupId,
610
- remove: Boolean(p.remove)
611
- });
517
+ return await containerRestRequest(`/v1/reactions/${encodeURIComponent(p.account ?? "")}`, opts, p.remove ? "DELETE" : "POST", {
518
+ recipient: formattedGroupId || recipient || "",
519
+ reaction: p.emoji ?? "",
520
+ target_author: stripUuidPrefix(p.targetAuthor ?? recipient),
521
+ timestamp: p.targetTimestamp,
522
+ ...formattedGroupId ? { group_id: formattedGroupId } : {}
523
+ }) ?? {};
612
524
  }
613
525
  case "getAttachment": {
614
526
  const attachmentId = p.id;
@@ -628,6 +540,23 @@ async function containerRpcRequest(method, params, opts) {
628
540
  }
629
541
  }
630
542
  //#endregion
543
+ //#region extensions/signal/src/quote-rejection.ts
544
+ function isSignalQuoteMetadataRejection(error) {
545
+ const message = error instanceof Error ? error.message : String(error);
546
+ const normalized = normalizeLowercaseStringOrEmpty(message);
547
+ const rpcCode = /^signal rpc (-?\d+):/u.exec(normalized)?.[1];
548
+ if (rpcCode !== void 0) {
549
+ if (rpcCode !== "-32602") return false;
550
+ } else {
551
+ const restStatusText = /^signal rest (\d{3}):/u.exec(normalized)?.[1];
552
+ if (!restStatusText) return false;
553
+ const restStatus = Number(restStatusText);
554
+ if (restStatus < 400 || restStatus >= 500 || restStatus === 408 || restStatus === 429) return false;
555
+ }
556
+ if (!normalized.includes("quote")) return false;
557
+ return normalized.includes("reject") || normalized.includes("invalid") || normalized.includes("unrecognized") || normalized.includes("unsupported") || normalized.includes("not found") || normalized.includes("no such") || normalized.includes("unknown");
558
+ }
559
+ //#endregion
631
560
  //#region extensions/signal/src/socket-path.ts
632
561
  const execFileAsync = promisify(execFile);
633
562
  function socketOwner(socketPath) {
@@ -804,26 +733,12 @@ async function* messages(socket, maxBytes = MAX_FRAME_BYTES) {
804
733
  }
805
734
  if (pending.length) throw new Error("Signal UNIX RPC closed with an incomplete frame");
806
735
  }
807
- const QUOTE_REJECTION_WORDS = [
808
- "reject",
809
- "invalid",
810
- "unrecognized",
811
- "unsupported",
812
- "not found",
813
- "no such",
814
- "unknown"
815
- ];
816
- function isQuoteMetadataRejection(code, rawMessage) {
817
- if (code !== -32602) return false;
818
- const normalized = rawMessage.toLowerCase();
819
- return normalized.includes("quote") && QUOTE_REJECTION_WORDS.some((word) => normalized.includes(word));
820
- }
821
736
  function result(message) {
822
737
  if (message.jsonrpc !== "2.0" || !Object.hasOwn(message, "result") && !message.error) throw new Error("Signal UNIX RPC returned invalid response envelope");
823
738
  if (message.error) {
824
739
  const error = isRecord(message.error) ? message.error : {};
825
740
  const code = typeof error.code === "number" ? error.code : "unknown";
826
- if (typeof error.message === "string" && isQuoteMetadataRejection(code, error.message)) throw new Error(`Signal RPC ${code}: quote metadata rejected (redacted)`);
741
+ if (typeof error.message === "string" && isSignalQuoteMetadataRejection(`Signal RPC ${code}: ${error.message}`)) throw new Error(`Signal RPC ${code}: quote metadata rejected (redacted)`);
827
742
  throw new Error(`Signal RPC ${code}: remote error`);
828
743
  }
829
744
  return message.result;
@@ -942,10 +857,6 @@ function parseSignalRpcResponse(text, status) {
942
857
  function assertSignalHttpProtocol(url, label) {
943
858
  if (url.protocol !== "http:" && url.protocol !== "https:") throw new Error(`Signal ${label} unsupported protocol: ${url.protocol}`);
944
859
  }
945
- function normalizeSignalHttpResponseMaxBytes(value) {
946
- if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) return DEFAULT_SIGNAL_HTTP_RESPONSE_MAX_BYTES;
947
- return Math.floor(value);
948
- }
949
860
  function normalizeSignalSseTimeoutMs(timeoutMs) {
950
861
  if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) return null;
951
862
  return resolveTimerTimeoutMs(timeoutMs, DEFAULT_TIMEOUT_MS);
@@ -977,7 +888,7 @@ function requestSignalHttp(url, options) {
977
888
  cleanup();
978
889
  resolve(response);
979
890
  };
980
- const maxResponseBytes = normalizeSignalHttpResponseMaxBytes(options.maxResponseBytes);
891
+ const maxResponseBytes = Math.floor(asPositiveFiniteNumber(options.maxResponseBytes) ?? DEFAULT_SIGNAL_HTTP_RESPONSE_MAX_BYTES);
981
892
  const request = client.request(url, {
982
893
  method: options.method,
983
894
  headers: options.headers
@@ -1209,4 +1120,4 @@ async function streamSignalEvents(params) {
1209
1120
  await flushEvent();
1210
1121
  }
1211
1122
  //#endregion
1212
- export { prepareSignalSocketPath as a, streamContainerEvents as c, streamSignalEvents as i, signalCheck as n, containerCheck as o, signalRpcRequest as r, containerRpcRequest as s, SignalSseRejectionError as t };
1123
+ export { prepareSignalSocketPath as a, containerRpcRequest as c, streamSignalEvents as i, streamContainerEvents as l, signalCheck as n, isSignalQuoteMetadataRejection as o, signalRpcRequest as r, containerCheck as s, SignalSseRejectionError as t };
@@ -0,0 +1,30 @@
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-AXcDteBZ.mjs";
2
+ import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
3
+ //#region extensions/signal/src/client-adapter.ts
4
+ const DEFAULT_TIMEOUT_MS = 1e4;
5
+ async function signalRpcRequest(method, params, opts) {
6
+ return opts.transportKind === "container" ? containerRpcRequest(method, params, opts) : signalRpcRequest$1(method, params, opts);
7
+ }
8
+ async function signalCheck(baseUrl, timeoutMs = DEFAULT_TIMEOUT_MS, options = {}) {
9
+ try {
10
+ return options.transportKind === "container" ? await containerCheck(baseUrl, timeoutMs, options.account) : await signalCheck$1(baseUrl, timeoutMs);
11
+ } catch (error) {
12
+ return {
13
+ ok: false,
14
+ status: null,
15
+ error: formatErrorMessage(error)
16
+ };
17
+ }
18
+ }
19
+ async function streamSignalEvents(params) {
20
+ if (params.transportKind === "container") return streamContainerEvents({
21
+ ...params,
22
+ onEvent: (event) => params.onEvent({
23
+ event: "receive",
24
+ data: JSON.stringify(event)
25
+ })
26
+ });
27
+ return streamSignalEvents$1(params);
28
+ }
29
+ //#endregion
30
+ export { signalRpcRequest as n, streamSignalEvents as r, signalCheck as t };
@@ -1,4 +1,5 @@
1
1
  import { o as resolveSignalAccountEntry, t as assertSignalSocketTransport } from "./transport-url-CAC0JcuI.mjs";
2
+ import { t as LEGACY_SIGNAL_TRANSPORT_FIELDS } from "./legacy-transport-QIpaMNST.mjs";
2
3
  import { createChannelConfigUiHints } from "openclaw/plugin-sdk/channel-core";
3
4
  import { isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
5
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
@@ -52,18 +53,7 @@ const signalChannelConfigUiHints = {
52
53
  };
53
54
  //#endregion
54
55
  //#region extensions/signal/src/config-schema.ts
55
- const SIGNAL_RETIRED_TRANSPORT_KEYS = [
56
- "apiMode",
57
- "configPath",
58
- "httpUrl",
59
- "httpHost",
60
- "httpPort",
61
- "cliPath",
62
- "autoStart",
63
- "startupTimeoutMs",
64
- "receiveMode",
65
- "ignoreStories"
66
- ];
56
+ const SIGNAL_RETIRED_TRANSPORT_KEYS = ["apiMode", ...LEGACY_SIGNAL_TRANSPORT_FIELDS];
67
57
  const SignalTransportUrlSchema = z.string().url().regex(/^[Hh][Tt][Tt][Pp][Ss]?:\/\/(?![^/?#]*@)/, "Expected http:// or https:// URL without embedded credentials");
68
58
  function projectSignalConfigForUpdateValidation(value) {
69
59
  if (process.env.OPENCLAW_UPDATE_IN_PROGRESS !== "1" || !isRecord(value)) return value;
@@ -206,4 +196,4 @@ const CanonicalSignalConfigSchema = SignalConfigSchemaBase.superRefine((value, c
206
196
  const SignalConfigSchema = z.preprocess(projectSignalConfigForUpdateValidation, CanonicalSignalConfigSchema);
207
197
  const SignalChannelConfigSchema = buildChannelConfigSchema(SignalConfigSchema, { uiHints: signalChannelConfigUiHints });
208
198
  //#endregion
209
- export { SignalConfigSchema as n, SignalChannelConfigSchema as t };
199
+ export { SignalChannelConfigSchema as t };