@openclaw/matrix 2026.9.8 → 2026.10.1-beta.2

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 (278) hide show
  1. package/dist/.setup/{account-selection-B7axQ80R.mjs → account-selection-BDeeqwwR.mjs} +1 -1
  2. package/dist/.setup/{accounts-WkgrIxMt.mjs → accounts-C_r0UlEm.mjs} +2 -2
  3. package/dist/.setup/{approval-handler.runtime-C-pw3NvY.mjs → approval-handler.runtime-QkHLH2az.mjs} +14 -19
  4. package/dist/.setup/{approval-reactions-BrS5ECU0.mjs → approval-reactions-DhB6gNPU.mjs} +11 -25
  5. package/dist/.setup/{channel-DXenXmj0.mjs → channel-CeRXEAEP.mjs} +17 -46
  6. package/dist/.setup/{channel.runtime-BXUawOno.mjs → channel.runtime-DBQA2y1F.mjs} +6 -6
  7. package/dist/.setup/{channel.setup-DWfLaXqT.mjs → channel.setup-DC2t7_PK.mjs} +12 -26
  8. package/dist/.setup/{cli-IhZO2OEj.mjs → cli-Be8tdNw8.mjs} +24 -45
  9. package/dist/.setup/{cli-metadata-nowEgdY0.mjs → cli-metadata-CtcjBFhc.mjs} +1 -1
  10. package/dist/.setup/{client-BXATebyo.mjs → client-DY3HExqI.mjs} +3 -3
  11. package/dist/.setup/{client-bootstrap-BiHX55is.mjs → client-bootstrap-CZvJjr29.mjs} +1 -1
  12. package/dist/.setup/{client-Ccv77kwh.mjs → client-kmih04ng.mjs} +21 -40
  13. package/dist/.setup/{client-support-Bn9Bk0-H.mjs → client-support-D7BlioUb.mjs} +14 -23
  14. package/dist/.setup/{config-update-5m1Un5gJ.mjs → config-update-CZndPxNd.mjs} +29 -72
  15. package/dist/.setup/{create-client-DRZ580E3.mjs → create-client-CbJVyFDy.mjs} +5 -5
  16. package/dist/.setup/{credentials-C9qDO5-2.mjs → credentials-C2dvc_kB.mjs} +1 -1
  17. package/dist/.setup/{credentials-read-KD4o5biZ.mjs → credentials-read-CqRiEAQa.mjs} +1 -1
  18. package/dist/.setup/{crypto-runtime-DPjIDF8H.mjs → crypto-runtime-B2AjWo-i.mjs} +223 -79
  19. package/dist/.setup/{deps-CLQ4EOq7.mjs → deps-CFNl7tQo.mjs} +14 -39
  20. package/dist/.setup/{device-health-U-yoVjPw.mjs → device-health-Be60VF1w.mjs} +1 -1
  21. package/dist/.setup/{direct-management-Cn2t8n1V.mjs → direct-management-DJtQhLKH.mjs} +4 -8
  22. package/dist/.setup/{directory-live-_sw-Q7KO.mjs → directory-live-DW5UykLL.mjs} +3 -3
  23. package/dist/.setup/{doctor-contract-De6geW0h.mjs → doctor-contract-CsTNmbMa.mjs} +10 -133
  24. package/dist/.setup/{draft-stream-CdVMstpR.mjs → draft-stream-B87DfA6a.mjs} +4 -8
  25. package/dist/.setup/{encryption-guidance-B6797jNA.mjs → encryption-guidance-BEjKbiMR.mjs} +1 -1
  26. package/dist/.setup/{exec-approvals-fsiMQ1ce.mjs → exec-approvals-BLDAMyHs.mjs} +6 -19
  27. package/dist/.setup/{file-sync-store-B-9bMb_O.mjs → file-sync-store-Clc9iEdn.mjs} +3 -3
  28. package/dist/.setup/{http-client-C1XvVD3K.mjs → http-client-DfJY5Ck0.mjs} +8 -29
  29. package/dist/.setup/{inbound-dedupe-BGrMrTTu.mjs → inbound-dedupe-C-EBGY0B.mjs} +1 -1
  30. package/dist/.setup/{joined-room-encryption-TZoOKXgh.mjs → joined-room-encryption-BAD70N5n.mjs} +1 -1
  31. package/dist/.setup/logger-CXQnpXCt.mjs +44 -0
  32. package/dist/.setup/{logging-mhnFQGzB.mjs → logging-BKV8TYQq.mjs} +7 -32
  33. package/dist/.setup/{messages-Buz27pi5.mjs → messages-uCbwLRKS.mjs} +5 -8
  34. package/dist/.setup/{monitor-BBg5qgov.mjs → monitor-skIntQVG.mjs} +109 -180
  35. package/dist/.setup/{onboarding-hJaieQj5.mjs → onboarding-Cm_tOJxs.mjs} +12 -19
  36. package/dist/.setup/{outbound-C9vBijaH.mjs → outbound-CqQou3ny.mjs} +16 -22
  37. package/dist/.setup/{profile-B3DD2jYa.mjs → profile-DS0xdJAi.mjs} +11 -31
  38. package/dist/.setup/{profile-update-CmxIAd4c.mjs → profile-update-C1n8SRqH.mjs} +3 -3
  39. package/dist/.setup/{reaction-events-mnzc_JvP.mjs → reaction-events-Cqq46xsG.mjs} +5 -5
  40. package/dist/.setup/{resolve-targets-BFq3q4c9.mjs → resolve-targets-DFeU1Ww6.mjs} +2 -2
  41. package/dist/.setup/retired-state-BXUQ2I-C.mjs +91 -0
  42. package/dist/.setup/{room-info-BbTGRJcR.mjs → room-info-BPMbwe8I.mjs} +33 -50
  43. package/dist/.setup/{sdk-DmRVM0VA.mjs → sdk-CgQGkCsS.mjs} +226 -182
  44. package/dist/.setup/{send-GOF64QRc.mjs → send-B1Y2L4wj.mjs} +19 -68
  45. package/dist/.setup/{setup-bootstrap-AzalcuCW.mjs → setup-bootstrap-UNIGyKnk.mjs} +2 -2
  46. package/dist/.setup/{setup-core-BeifoeL4.mjs → setup-core-6DppLENo.mjs} +5 -5
  47. package/dist/.setup/{setup-plugin-api-Bsbdw41x.mjs → setup-plugin-api-BRs9bcp4.mjs} +1 -1
  48. package/dist/.setup/startup-verification-D00eUt74.mjs +122 -0
  49. package/dist/.setup/storage-D7agewjH.mjs +464 -0
  50. package/dist/.setup/{sync-cache-state-C6sEmvJK.mjs → sync-cache-state-C2z64uyk.mjs} +10 -24
  51. package/dist/.setup/{thread-bindings-jXu_9cHE.mjs → thread-bindings-DveHVZqN.mjs} +13 -71
  52. package/dist/.setup/{tool-actions-Ce7Okg6m.mjs → tool-actions-BqlK2ilM.mjs} +51 -73
  53. package/dist/.setup/{verification-C45rOZkM.mjs → verification-kMlFYUn0.mjs} +10 -27
  54. package/dist/api.js +5 -5
  55. package/dist/channel-plugin-api.js +1 -1
  56. package/dist/cli-metadata.js +1 -1
  57. package/dist/contract-api.js +2 -2
  58. package/dist/doctor-contract-api.js +48 -201
  59. package/dist/helper-api.js +1 -1
  60. package/dist/index.js +1 -1
  61. package/dist/plugin-entry.handlers.runtime.js +1 -1
  62. package/dist/runtime-api.js +3 -3
  63. package/dist/session-binding-contract-api.js +1 -1
  64. package/dist/setup-entry.js +1 -1
  65. package/dist/setup-plugin-api.js +1 -1
  66. package/node_modules/@openclaw/fs-safe/CHANGELOG.md +95 -0
  67. package/node_modules/@openclaw/fs-safe/README.md +70 -379
  68. package/node_modules/@openclaw/fs-safe/dist/absolute-path.js +35 -51
  69. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +2 -0
  70. package/node_modules/@openclaw/fs-safe/dist/advanced.js +1 -0
  71. package/node_modules/@openclaw/fs-safe/dist/archive-input.js +2 -0
  72. package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
  73. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +1 -1
  74. package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +9 -10
  75. package/node_modules/@openclaw/fs-safe/dist/archive.js +2 -5
  76. package/node_modules/@openclaw/fs-safe/dist/atomic-io.d.ts +51 -0
  77. package/node_modules/@openclaw/fs-safe/dist/atomic-io.js +242 -0
  78. package/node_modules/@openclaw/fs-safe/dist/config.d.ts +1 -1
  79. package/node_modules/@openclaw/fs-safe/dist/config.js +1 -1
  80. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts +1 -1
  81. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.js +2 -2
  82. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.js +2 -0
  83. package/node_modules/@openclaw/fs-safe/dist/create.js +12 -5
  84. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts +11 -0
  85. package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +4 -7
  86. package/node_modules/@openclaw/fs-safe/dist/entry-publication-types.d.ts +55 -0
  87. package/node_modules/@openclaw/fs-safe/dist/entry-publication-types.js +1 -0
  88. package/node_modules/@openclaw/fs-safe/dist/entry-publication.d.ts +8 -0
  89. package/node_modules/@openclaw/fs-safe/dist/entry-publication.js +262 -0
  90. package/node_modules/@openclaw/fs-safe/dist/exclusive-create.d.ts +3 -0
  91. package/node_modules/@openclaw/fs-safe/dist/exclusive-create.js +22 -0
  92. package/node_modules/@openclaw/fs-safe/dist/file-cleanup.d.ts +1 -6
  93. package/node_modules/@openclaw/fs-safe/dist/file-cleanup.js +3 -6
  94. package/node_modules/@openclaw/fs-safe/dist/file-identity.js +3 -6
  95. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.js +2 -2
  96. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-mutation.js +9 -0
  97. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.js +4 -6
  98. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-stale-admission.js +1 -1
  99. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +8 -0
  100. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.js +2 -0
  101. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.js +20 -18
  102. package/node_modules/@openclaw/fs-safe/dist/file-store.js +4 -10
  103. package/node_modules/@openclaw/fs-safe/dist/fs.d.ts +2 -10
  104. package/node_modules/@openclaw/fs-safe/dist/fs.js +2 -10
  105. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts +3 -4
  106. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.js +6 -18
  107. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.js +1 -1
  108. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +0 -2
  109. package/node_modules/@openclaw/fs-safe/dist/guest.js +3 -9
  110. package/node_modules/@openclaw/fs-safe/dist/index.d.ts +1 -1
  111. package/node_modules/@openclaw/fs-safe/dist/index.js +1 -1
  112. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.js +1 -5
  113. package/node_modules/@openclaw/fs-safe/dist/json.js +19 -37
  114. package/node_modules/@openclaw/fs-safe/dist/move-path.js +2 -0
  115. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts +1 -0
  116. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.js +9 -1
  117. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +47 -2
  118. package/node_modules/@openclaw/fs-safe/dist/native-config.d.ts +1 -9
  119. package/node_modules/@openclaw/fs-safe/dist/native-config.js +6 -40
  120. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts +2 -0
  121. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.js +5 -2
  122. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +11 -316
  123. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent-windows.d.ts +7 -7
  124. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent-windows.js +28 -175
  125. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent.d.ts +15 -0
  126. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent.js +418 -0
  127. package/node_modules/@openclaw/fs-safe/dist/native-rename-outcome.js +9 -4
  128. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +17 -13
  129. package/node_modules/@openclaw/fs-safe/dist/native-staged-symlink.js +6 -24
  130. package/node_modules/@openclaw/fs-safe/dist/native.js +5 -1
  131. package/node_modules/@openclaw/fs-safe/dist/path-case.js +10 -9
  132. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.js +4 -1
  133. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts +1 -0
  134. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.js +3 -0
  135. package/node_modules/@openclaw/fs-safe/dist/path.js +4 -1
  136. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts +0 -1
  137. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.js +1 -3
  138. package/node_modules/@openclaw/fs-safe/dist/pinned-write-staged.js +2 -0
  139. package/node_modules/@openclaw/fs-safe/dist/pinned-write.js +9 -10
  140. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.js +3 -6
  141. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +2 -2
  142. package/node_modules/@openclaw/fs-safe/dist/publish-file.js +4 -3
  143. package/node_modules/@openclaw/fs-safe/dist/replace-file-buffer.d.ts +3 -4
  144. package/node_modules/@openclaw/fs-safe/dist/replace-file-buffer.js +18 -32
  145. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts +5 -17
  146. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +92 -230
  147. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.d.ts +4 -15
  148. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.js +22 -63
  149. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.d.ts +9 -34
  150. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.js +78 -83
  151. package/node_modules/@openclaw/fs-safe/dist/replace-file-destination.d.ts +18 -20
  152. package/node_modules/@openclaw/fs-safe/dist/replace-file-destination.js +64 -98
  153. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts +16 -33
  154. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.js +61 -200
  155. package/node_modules/@openclaw/fs-safe/dist/replace-file-types.d.ts +1 -6
  156. package/node_modules/@openclaw/fs-safe/dist/replace-file.js +76 -216
  157. package/node_modules/@openclaw/fs-safe/dist/root-boundary.js +14 -24
  158. package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts +1 -4
  159. package/node_modules/@openclaw/fs-safe/dist/root-context.js +4 -19
  160. package/node_modules/@openclaw/fs-safe/dist/root-create-native.d.ts +52 -0
  161. package/node_modules/@openclaw/fs-safe/dist/root-create-native.js +350 -0
  162. package/node_modules/@openclaw/fs-safe/dist/root-directory-list-types.d.ts +35 -0
  163. package/node_modules/@openclaw/fs-safe/dist/root-directory-list-types.js +1 -0
  164. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +2 -27
  165. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +31 -28
  166. package/node_modules/@openclaw/fs-safe/dist/root-directory.js +1 -4
  167. package/node_modules/@openclaw/fs-safe/dist/root-errors.js +34 -0
  168. package/node_modules/@openclaw/fs-safe/dist/root-file.js +9 -21
  169. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +105 -37
  170. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +7 -2
  171. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +67 -38
  172. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts +1 -1
  173. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.js +0 -2
  174. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts +2 -3
  175. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.js +3 -1
  176. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.js +68 -85
  177. package/node_modules/@openclaw/fs-safe/dist/root-path.js +6 -1
  178. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts +4 -0
  179. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.js +1 -1
  180. package/node_modules/@openclaw/fs-safe/dist/root-paths.js +4 -9
  181. package/node_modules/@openclaw/fs-safe/dist/root-remove-native.d.ts +4 -0
  182. package/node_modules/@openclaw/fs-safe/dist/root-remove-native.js +311 -0
  183. package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts +11 -0
  184. package/node_modules/@openclaw/fs-safe/dist/root-remove.js +3 -1
  185. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts +2 -2
  186. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +1 -3
  187. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts +3 -3
  188. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +8 -10
  189. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts +0 -1
  190. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.js +0 -4
  191. package/node_modules/@openclaw/fs-safe/dist/secret-file.js +12 -9
  192. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts +0 -2
  193. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.js +2 -0
  194. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.js +7 -4
  195. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +13 -6
  196. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts +0 -3
  197. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +5 -23
  198. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.d.ts +2 -1
  199. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.js +11 -6
  200. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.js +1 -8
  201. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +1 -1
  202. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +2 -9
  203. package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts +1 -6
  204. package/node_modules/@openclaw/fs-safe/dist/trash.js +6 -2
  205. package/node_modules/@openclaw/fs-safe/dist/walk.js +100 -46
  206. package/node_modules/@openclaw/fs-safe/dist/watch-hints.d.ts +7 -0
  207. package/node_modules/@openclaw/fs-safe/dist/watch-hints.js +235 -19
  208. package/node_modules/@openclaw/fs-safe/dist/watch-native.d.ts +21 -2
  209. package/node_modules/@openclaw/fs-safe/dist/watch-native.js +21 -3
  210. package/node_modules/@openclaw/fs-safe/dist/watch-rescan.d.ts +6 -0
  211. package/node_modules/@openclaw/fs-safe/dist/watch-rescan.js +111 -0
  212. package/node_modules/@openclaw/fs-safe/dist/watch-scan.d.ts +13 -0
  213. package/node_modules/@openclaw/fs-safe/dist/watch-scan.js +27 -4
  214. package/node_modules/@openclaw/fs-safe/dist/watch-stream.js +2 -0
  215. package/node_modules/@openclaw/fs-safe/dist/watch.js +131 -40
  216. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts +8 -0
  217. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.js +24 -6
  218. package/node_modules/@openclaw/fs-safe/dist/windows-path-syntax.d.ts +13 -0
  219. package/node_modules/@openclaw/fs-safe/dist/windows-path-syntax.js +51 -0
  220. package/node_modules/@openclaw/fs-safe/docs/advanced.md +4 -0
  221. package/node_modules/@openclaw/fs-safe/docs/atomic.md +4 -1
  222. package/node_modules/@openclaw/fs-safe/docs/config.md +6 -14
  223. package/node_modules/@openclaw/fs-safe/docs/contributing.md +4 -14
  224. package/node_modules/@openclaw/fs-safe/docs/durability.md +6 -29
  225. package/node_modules/@openclaw/fs-safe/docs/entry-publication.md +146 -0
  226. package/node_modules/@openclaw/fs-safe/docs/errors.md +16 -0
  227. package/node_modules/@openclaw/fs-safe/docs/file-store.md +28 -5
  228. package/node_modules/@openclaw/fs-safe/docs/index.md +2 -31
  229. package/node_modules/@openclaw/fs-safe/docs/install.md +10 -31
  230. package/node_modules/@openclaw/fs-safe/docs/json.md +1 -1
  231. package/node_modules/@openclaw/fs-safe/docs/local-roots.md +0 -1
  232. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.5.md +12 -12
  233. package/node_modules/@openclaw/fs-safe/docs/native-helper.md +35 -96
  234. package/node_modules/@openclaw/fs-safe/docs/native.md +22 -20
  235. package/node_modules/@openclaw/fs-safe/docs/path.md +1 -1
  236. package/node_modules/@openclaw/fs-safe/docs/permissions.md +1 -2
  237. package/node_modules/@openclaw/fs-safe/docs/public-api.md +1 -2
  238. package/node_modules/@openclaw/fs-safe/docs/reading.md +1 -2
  239. package/node_modules/@openclaw/fs-safe/docs/root.md +26 -184
  240. package/node_modules/@openclaw/fs-safe/docs/secret-file.md +1 -1
  241. package/node_modules/@openclaw/fs-safe/docs/security-model.md +115 -3
  242. package/node_modules/@openclaw/fs-safe/docs/store.md +2 -2
  243. package/node_modules/@openclaw/fs-safe/docs/temp.md +29 -65
  244. package/node_modules/@openclaw/fs-safe/docs/testing.md +90 -58
  245. package/node_modules/@openclaw/fs-safe/docs/types.md +3 -16
  246. package/node_modules/@openclaw/fs-safe/docs/walk.md +33 -5
  247. package/node_modules/@openclaw/fs-safe/docs/watch.md +96 -14
  248. package/node_modules/@openclaw/fs-safe/docs/writing.md +172 -16
  249. package/node_modules/@openclaw/fs-safe/package.json +10 -10
  250. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  251. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +1 -1
  252. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  253. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +1 -1
  254. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  255. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +1 -1
  256. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  257. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +1 -1
  258. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  259. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +1 -1
  260. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  261. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +1 -1
  262. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  263. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +1 -1
  264. package/openclaw.plugin.json +0 -9
  265. package/package.json +5 -5
  266. package/dist/.setup/crypto-snapshot-doctor.runtime-44FrCPR7.mjs +0 -91
  267. package/dist/.setup/doctor-DMvEBx6o.mjs +0 -49
  268. package/dist/.setup/idb-persistence-DBvfre1X.mjs +0 -227
  269. package/dist/.setup/idb-persistence-lock-D_mDu4Cf.mjs +0 -27
  270. package/dist/.setup/logger-CVv56jzH.mjs +0 -74
  271. package/dist/.setup/startup-verification-Aiy_xVdI.mjs +0 -204
  272. package/dist/.setup/storage-BXS2cB2i.mjs +0 -288
  273. package/dist/.setup/storage-metadata-BDRZ7vpX.mjs +0 -371
  274. package/node_modules/@openclaw/fs-safe/dist/watch-alias.d.ts +0 -6
  275. package/node_modules/@openclaw/fs-safe/dist/watch-alias.js +0 -88
  276. package/node_modules/@openclaw/fs-safe/docs/mutation-policy-proof.md +0 -69
  277. package/node_modules/@openclaw/fs-safe/docs/private-file-store.md +0 -68
  278. package/node_modules/@openclaw/fs-safe/docs/test-hooks.md +0 -110
@@ -1,4 +1,4 @@
1
- import { i as __exportAll } from "./doctor-contract-De6geW0h.mjs";
1
+ import { i as __exportAll } from "./doctor-contract-CsTNmbMa.mjs";
2
2
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  //#region extensions/matrix/src/matrix/profile.ts
4
4
  var profile_exports = /* @__PURE__ */ __exportAll({
@@ -16,42 +16,22 @@ function isMatrixHttpAvatarUri(value) {
16
16
  function isSupportedMatrixAvatarSource(value) {
17
17
  return isMatrixMxcUri(value) || isMatrixHttpAvatarUri(value);
18
18
  }
19
- async function uploadAvatarMedia(params) {
20
- const media = await params.loadAvatar(params.avatarSource, params.avatarMaxBytes);
21
- return await params.client.uploadContent(media.buffer, media.contentType, media.fileName || "avatar");
22
- }
23
19
  async function resolveAvatarUrl(params) {
24
20
  const avatarPath = normalizeOptionalString(params.avatarPath) ?? null;
25
- if (avatarPath) {
26
- if (!params.loadAvatarFromPath) throw new Error("Matrix avatar path upload requires a media loader.");
27
- return {
28
- resolvedAvatarUrl: await uploadAvatarMedia({
29
- client: params.client,
30
- avatarSource: avatarPath,
31
- avatarMaxBytes: params.avatarMaxBytes,
32
- loadAvatar: params.loadAvatarFromPath
33
- }),
34
- uploadedAvatarSource: "path",
35
- convertedAvatarFromHttp: false
36
- };
37
- }
38
- const avatarUrl = normalizeOptionalString(params.avatarUrl) ?? null;
39
- if (!avatarUrl || isMatrixMxcUri(avatarUrl)) return {
40
- resolvedAvatarUrl: avatarUrl,
21
+ const avatarSource = avatarPath ?? normalizeOptionalString(params.avatarUrl) ?? null;
22
+ if (!avatarSource || !avatarPath && isMatrixMxcUri(avatarSource)) return {
23
+ resolvedAvatarUrl: avatarSource,
41
24
  uploadedAvatarSource: null,
42
25
  convertedAvatarFromHttp: false
43
26
  };
44
- if (!isMatrixHttpAvatarUri(avatarUrl)) throw new Error("Matrix avatar URL must be an mxc:// URI or an http(s) URL.");
45
- if (!params.loadAvatarFromUrl) throw new Error("Matrix avatar URL conversion requires a media loader.");
27
+ if (!avatarPath && !isMatrixHttpAvatarUri(avatarSource)) throw new Error("Matrix avatar URL must be an mxc:// URI or an http(s) URL.");
28
+ const loadAvatar = avatarPath ? params.loadAvatarFromPath : params.loadAvatarFromUrl;
29
+ if (!loadAvatar) throw new Error(avatarPath ? "Matrix avatar path upload requires a media loader." : "Matrix avatar URL conversion requires a media loader.");
30
+ const media = await loadAvatar(avatarSource, params.avatarMaxBytes);
46
31
  return {
47
- resolvedAvatarUrl: await uploadAvatarMedia({
48
- client: params.client,
49
- avatarSource: avatarUrl,
50
- avatarMaxBytes: params.avatarMaxBytes,
51
- loadAvatar: params.loadAvatarFromUrl
52
- }),
53
- uploadedAvatarSource: "http",
54
- convertedAvatarFromHttp: true
32
+ resolvedAvatarUrl: await params.client.uploadContent(media.buffer, media.contentType, media.fileName || "avatar"),
33
+ uploadedAvatarSource: avatarPath ? "path" : "http",
34
+ convertedAvatarFromHttp: !avatarPath
55
35
  };
56
36
  }
57
37
  async function syncMatrixOwnProfile(params) {
@@ -1,8 +1,8 @@
1
1
  import { t as getMatrixRuntime } from "./runtime-1kn1P6io.mjs";
2
2
  import { n as resolveMatrixConfigPath } from "./config-paths-CnREYb1Y.mjs";
3
- import { n as updateMatrixAccountConfig } from "./config-update-5m1Un5gJ.mjs";
4
- import { r as syncMatrixOwnProfile } from "./profile-B3DD2jYa.mjs";
5
- import { n as withResolvedActionClient } from "./client-BXATebyo.mjs";
3
+ import { n as updateMatrixAccountConfig } from "./config-update-CZndPxNd.mjs";
4
+ import { r as syncMatrixOwnProfile } from "./profile-DS0xdJAi.mjs";
5
+ import { n as withResolvedActionClient } from "./client-DY3HExqI.mjs";
6
6
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
7
7
  //#region extensions/matrix/src/matrix/actions/profile.ts
8
8
  async function updateMatrixOwnProfile(opts = {}) {
@@ -1,16 +1,16 @@
1
1
  import { a as resolveMatrixAccountConfig } from "./account-config-CRsKoMqJ.mjs";
2
- import { a as resolveMatrixThreadRouting, i as resolveMatrixInboundRoute } from "./channel-DXenXmj0.mjs";
2
+ import { a as resolveMatrixThreadRouting, i as resolveMatrixInboundRoute } from "./channel-CeRXEAEP.mjs";
3
3
  import { c as extractMatrixReactionAnnotation } from "./send-currentness-C2rMVVIQ.mjs";
4
- import { p as resolveMatrixThreadRootId } from "./direct-management-Cn2t8n1V.mjs";
5
- import { i as resolveMatrixApprovalReactionTargetWithPersistence, o as unregisterMatrixApprovalReactionTargetsForApproval } from "./approval-reactions-BrS5ECU0.mjs";
4
+ import { p as resolveMatrixThreadRootId } from "./direct-management-DJtQhLKH.mjs";
5
+ import { i as resolveMatrixApprovalReactionTargetWithPersistence, o as unregisterMatrixApprovalReactionTargetsForApproval } from "./approval-reactions-DhB6gNPU.mjs";
6
6
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
7
7
  import { isApprovalNotFoundError } from "openclaw/plugin-sdk/error-runtime";
8
8
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
9
9
  import { getSessionBindingService } from "openclaw/plugin-sdk/session-binding-runtime";
10
10
  //#region extensions/matrix/src/matrix/monitor/reaction-events.ts
11
- const loadApprovalReactionAuth = createLazyRuntimeModule(() => import("./channel-DXenXmj0.mjs").then((n) => n.s));
11
+ const loadApprovalReactionAuth = createLazyRuntimeModule(() => import("./channel-CeRXEAEP.mjs").then((n) => n.s));
12
12
  const loadExecApprovalResolver = createLazyRuntimeModule(() => import("openclaw/plugin-sdk/approval-gateway-runtime"));
13
- const loadMatrixSend = createLazyRuntimeModule(() => import("./send-GOF64QRc.mjs").then((n) => n.s));
13
+ const loadMatrixSend = createLazyRuntimeModule(() => import("./send-B1Y2L4wj.mjs").then((n) => n.s));
14
14
  function buildMatrixApprovalTerminalText(result) {
15
15
  const approval = result.approval;
16
16
  const terminalLabel = approval.status === "allowed" ? approval.decision === "allow-always" ? "Allowed always" : "Allowed once" : approval.status === "denied" ? "Denied" : approval.status === "expired" ? "Expired" : "Cancelled";
@@ -1,6 +1,6 @@
1
- import { i as __exportAll } from "./doctor-contract-De6geW0h.mjs";
1
+ import { i as __exportAll } from "./doctor-contract-CsTNmbMa.mjs";
2
2
  import { r as normalizeMatrixMessagingTarget, t as isMatrixQualifiedUserId } from "./target-ids-Nwx7cMVE.mjs";
3
- import { n as listMatrixDirectoryGroupsLive, r as listMatrixDirectoryPeersLive } from "./directory-live-_sw-Q7KO.mjs";
3
+ import { n as listMatrixDirectoryGroupsLive, r as listMatrixDirectoryPeersLive } from "./directory-live-DW5UykLL.mjs";
4
4
  import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  //#region extensions/matrix/src/resolve-targets.ts
6
6
  var resolve_targets_exports = /* @__PURE__ */ __exportAll({ resolveMatrixTargets: () => resolveMatrixTargets });
@@ -0,0 +1,91 @@
1
+ import { t as getMatrixRuntime } from "./runtime-1kn1P6io.mjs";
2
+ import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
3
+ import path from "node:path";
4
+ import { extractErrorCode } from "openclaw/plugin-sdk/error-runtime";
5
+ import os from "node:os";
6
+ import fs from "node:fs/promises";
7
+ //#region extensions/matrix/src/matrix/chunked-state.ts
8
+ function chunkMatrixStateJson(value, maxBytes, maxChunks, limitMessage) {
9
+ const chunks = [];
10
+ const pushChunk = (chunk) => {
11
+ if (chunks.length >= maxChunks) throw new Error(limitMessage);
12
+ chunks.push(chunk);
13
+ };
14
+ let current = "";
15
+ let currentBytes = 0;
16
+ for (const char of value) {
17
+ const charBytes = Buffer.byteLength(char, "utf8");
18
+ if (current && currentBytes + charBytes > maxBytes) {
19
+ pushChunk(current);
20
+ current = "";
21
+ currentBytes = 0;
22
+ }
23
+ current += char;
24
+ currentBytes += charBytes;
25
+ }
26
+ if (current) pushChunk(current);
27
+ return chunks;
28
+ }
29
+ async function readMatrixStateChunks(store, keys, kind) {
30
+ const records = await store.lookupMany?.(keys);
31
+ const chunks = [];
32
+ for (let index = 0; index < keys.length; index += 1) {
33
+ const result = records?.[index];
34
+ if (result && !result.ok) throw result.error;
35
+ const chunk = records ? result?.value : await store.lookup(keys[index]);
36
+ if (!isRecord(chunk) || chunk.kind !== kind || chunk.index !== index || typeof chunk.data !== "string") return null;
37
+ chunks.push(chunk.data);
38
+ }
39
+ return chunks;
40
+ }
41
+ async function writeMatrixStateChunks(store, rows, chunkKeyPrefix) {
42
+ for (const row of rows.chunks) await store.register(row.key, row.value);
43
+ await store.register(rows.meta.key, rows.meta.value);
44
+ for (const row of await store.entries()) if (row.key.startsWith(chunkKeyPrefix) && !rows.nextChunkKeys.has(row.key)) await store.delete(row.key);
45
+ }
46
+ //#endregion
47
+ //#region extensions/matrix/src/matrix/sqlite-state.ts
48
+ function resolveStateDirOverride(options) {
49
+ if (!options) return;
50
+ return options.stateDir || options.stateRootDir || getMatrixRuntime().state.resolveStateDir(options.env ?? process.env, os.homedir);
51
+ }
52
+ function resolveMatrixSqliteStateKey(options) {
53
+ return resolveStateDirOverride(options) ?? "";
54
+ }
55
+ function resolveMatrixSqliteStateEnv(options) {
56
+ const stateDir = resolveStateDirOverride(options);
57
+ if (!stateDir) return options?.env;
58
+ return {
59
+ ...options?.env ?? process.env,
60
+ OPENCLAW_STATE_DIR: stateDir
61
+ };
62
+ }
63
+ //#endregion
64
+ //#region extensions/matrix/src/matrix/retired-state.ts
65
+ const RETIRED_MATRIX_STATE_FILENAMES = /* @__PURE__ */ new Set([
66
+ "thread-bindings.json",
67
+ "startup-verification.json",
68
+ "recovery-key.json",
69
+ "legacy-crypto-migration.json",
70
+ "crypto-idb-snapshot.json",
71
+ "storage-meta.json",
72
+ "inbound-dedupe.json"
73
+ ]);
74
+ async function assertMatrixSupportedStateRoot(rootDir) {
75
+ for (const filename of RETIRED_MATRIX_STATE_FILENAMES) await assertMatrixSupportedStateFile(path.join(rootDir, filename));
76
+ }
77
+ const RETIRED_MATRIX_STATE_REMEDIATION = "Install OpenClaw 2026.9.5, run \"openclaw doctor --fix\", and start the Matrix channel once to migrate it, then upgrade to latest.";
78
+ function describeRetiredMatrixState(filePath) {
79
+ return `Retired pre-July Matrix state at ${filePath} was left unchanged. ${RETIRED_MATRIX_STATE_REMEDIATION} See https://docs.openclaw.ai/channels/matrix-migration.`;
80
+ }
81
+ async function assertMatrixSupportedStateFile(filePath) {
82
+ try {
83
+ await fs.lstat(filePath);
84
+ } catch (error) {
85
+ if (extractErrorCode(error) === "ENOENT") return;
86
+ throw error;
87
+ }
88
+ throw new Error(describeRetiredMatrixState(filePath));
89
+ }
90
+ //#endregion
91
+ export { describeRetiredMatrixState as a, chunkMatrixStateJson as c, assertMatrixSupportedStateRoot as i, readMatrixStateChunks as l, RETIRED_MATRIX_STATE_REMEDIATION as n, resolveMatrixSqliteStateEnv as o, assertMatrixSupportedStateFile as r, resolveMatrixSqliteStateKey as s, RETIRED_MATRIX_STATE_FILENAMES as t, writeMatrixStateChunks as u };
@@ -1,12 +1,11 @@
1
- import { D as setBoundedMap, E as resolveMatrixRoomId } from "./send-GOF64QRc.mjs";
2
- import { c as EventType } from "./messages-Buz27pi5.mjs";
3
- import { n as withResolvedActionClient, r as withResolvedRoomAction } from "./client-BXATebyo.mjs";
1
+ import { w as setBoundedMap } from "./send-B1Y2L4wj.mjs";
2
+ import { c as EventType } from "./messages-uCbwLRKS.mjs";
3
+ import { r as withResolvedRoomAction } from "./client-DY3HExqI.mjs";
4
4
  import { n as isMatrixNotFoundError } from "./errors-DKVS3_DO.mjs";
5
5
  import { filterStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  //#region extensions/matrix/src/matrix/actions/room.ts
7
7
  async function getMatrixMemberInfo(userId, opts) {
8
- return await withResolvedActionClient(opts, async (client) => {
9
- const roomId = await resolveMatrixRoomId(client, opts.roomId);
8
+ return await withResolvedRoomAction(opts.roomId, opts, async (client, roomId) => {
10
9
  if (!(await client.getJoinedRoomMembers(roomId)).includes(userId)) throw new Error(`User ${userId} is not a member of room ${roomId}`);
11
10
  const profile = await client.getUserProfile(userId);
12
11
  return {
@@ -48,63 +47,47 @@ async function getMatrixRoomInfo(roomId, opts = {}) {
48
47
  const MAX_ROOM_INFO = 1024;
49
48
  const MAX_MEMBER_DISPLAY_NAMES = 4096;
50
49
  function createMatrixRoomInfoResolver(client) {
51
- const roomNameCache = /* @__PURE__ */ new Map();
52
- const roomAliasCache = /* @__PURE__ */ new Map();
53
50
  const memberDisplayNameCache = /* @__PURE__ */ new Map();
54
- const getRoomName = async (roomId) => {
55
- const cached = roomNameCache.get(roomId);
56
- if (cached) return cached;
57
- let name;
58
- let nameResolved = false;
59
- try {
60
- const nameState = await client.getRoomStateEvent(roomId, "m.room.name", "");
61
- nameResolved = true;
62
- if (nameState && typeof nameState.name === "string") name = nameState.name;
63
- } catch (err) {
64
- if (isMatrixNotFoundError(err)) nameResolved = true;
65
- }
66
- const info = {
67
- name,
68
- nameResolved
51
+ function createRoomStateResolver(eventType, project) {
52
+ const cache = /* @__PURE__ */ new Map();
53
+ return async (roomId) => {
54
+ const cached = cache.get(roomId);
55
+ if (cached) return cached;
56
+ let state;
57
+ let resolved;
58
+ try {
59
+ state = await client.getRoomStateEvent(roomId, eventType, "");
60
+ resolved = true;
61
+ } catch (err) {
62
+ resolved = isMatrixNotFoundError(err);
63
+ }
64
+ const info = {
65
+ value: project(state),
66
+ resolved
67
+ };
68
+ if (resolved) setBoundedMap(cache, roomId, info, MAX_ROOM_INFO);
69
+ return info;
69
70
  };
70
- if (nameResolved) setBoundedMap(roomNameCache, roomId, info, MAX_ROOM_INFO);
71
- return info;
72
- };
73
- const getRoomAliases = async (roomId) => {
74
- const cached = roomAliasCache.get(roomId);
75
- if (cached) return cached;
76
- let canonicalAlias;
77
- let altAliases = [];
78
- let aliasesResolved = false;
79
- try {
80
- const aliasState = await client.getRoomStateEvent(roomId, "m.room.canonical_alias", "");
81
- aliasesResolved = true;
82
- if (aliasState && typeof aliasState.alias === "string") canonicalAlias = aliasState.alias;
83
- const rawAliases = aliasState?.alt_aliases;
84
- if (Array.isArray(rawAliases)) altAliases = rawAliases.filter((entry) => typeof entry === "string");
85
- } catch (err) {
86
- if (isMatrixNotFoundError(err)) aliasesResolved = true;
87
- }
88
- const info = {
89
- canonicalAlias,
90
- altAliases,
91
- aliasesResolved
92
- };
93
- if (aliasesResolved) setBoundedMap(roomAliasCache, roomId, info, MAX_ROOM_INFO);
94
- return info;
95
- };
71
+ }
72
+ const getRoomName = createRoomStateResolver("m.room.name", (state) => typeof state?.name === "string" ? state.name : void 0);
73
+ const getRoomAliases = createRoomStateResolver("m.room.canonical_alias", (state) => ({
74
+ canonicalAlias: typeof state?.alias === "string" ? state.alias : void 0,
75
+ altAliases: Array.isArray(state?.alt_aliases) ? state.alt_aliases.filter((entry) => typeof entry === "string") : []
76
+ }));
96
77
  const getRoomInfo = async (roomId, opts = {}) => {
97
- const { name, nameResolved } = await getRoomName(roomId);
78
+ const { value: name, resolved: nameResolved } = await getRoomName(roomId);
98
79
  if (!opts.includeAliases) return {
99
80
  name,
100
81
  altAliases: [],
101
82
  nameResolved,
102
83
  aliasesResolved: false
103
84
  };
85
+ const { value: aliases, resolved: aliasesResolved } = await getRoomAliases(roomId);
104
86
  return {
105
87
  name,
106
88
  nameResolved,
107
- ...await getRoomAliases(roomId)
89
+ ...aliases,
90
+ aliasesResolved
108
91
  };
109
92
  };
110
93
  const getMemberDisplayName = async (roomId, userId) => {