@openclaw/matrix 2026.10.1-beta.2 → 2026.10.5-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 (306) hide show
  1. package/dist/.setup/{account-selection-BDeeqwwR.mjs → account-selection-Bs_jCAaG.mjs} +3 -5
  2. package/dist/.setup/{approval-handler.runtime-QkHLH2az.mjs → approval-handler.runtime-rxLn8CbP.mjs} +60 -83
  3. package/dist/.setup/{channel-CeRXEAEP.mjs → channel-By05lEQz.mjs} +92 -120
  4. package/dist/.setup/{channel.runtime-DBQA2y1F.mjs → channel.runtime-wcXWqpVP.mjs} +7 -7
  5. package/dist/.setup/{channel.setup-DC2t7_PK.mjs → channel.setup-CwuYD_CT.mjs} +2 -3
  6. package/dist/.setup/{cli-Be8tdNw8.mjs → cli-mbL9jCro.mjs} +80 -120
  7. package/dist/.setup/{cli-metadata-CtcjBFhc.mjs → cli-metadata-6MOGuyHq.mjs} +1 -1
  8. package/dist/.setup/{client-DY3HExqI.mjs → client-BlTvpEWC.mjs} +2 -2
  9. package/dist/.setup/{client-bootstrap-CZvJjr29.mjs → client-bootstrap-D05xy1HB.mjs} +2 -3
  10. package/dist/.setup/{client-support-D7BlioUb.mjs → client-support-D-xHScuo.mjs} +1 -1
  11. package/dist/.setup/{client-kmih04ng.mjs → client-vPPbaxNp.mjs} +14 -24
  12. package/dist/.setup/{create-client-CbJVyFDy.mjs → create-client-CroC4BVc.mjs} +4 -4
  13. package/dist/.setup/{credentials-C2dvc_kB.mjs → credentials-Bf9PQ7xs.mjs} +4 -18
  14. package/dist/.setup/{crypto-runtime-B2AjWo-i.mjs → crypto-runtime-CpJ0b7vY.mjs} +80 -123
  15. package/dist/.setup/{deps-CFNl7tQo.mjs → deps-L_1bUAGL.mjs} +20 -37
  16. package/dist/.setup/{direct-management-DJtQhLKH.mjs → direct-management-B3wYhx_M.mjs} +25 -51
  17. package/dist/.setup/{directory-live-DW5UykLL.mjs → directory-live-B1WbfSHo.mjs} +3 -3
  18. package/dist/.setup/{draft-stream-B87DfA6a.mjs → draft-stream-Bdrh7dRt.mjs} +2 -3
  19. package/dist/.setup/{encryption-guidance-BEjKbiMR.mjs → encryption-guidance-D5_IsDIy.mjs} +1 -1
  20. package/dist/.setup/{env-vars-dGqak9dN.mjs → env-vars-aEBngJPa.mjs} +2 -17
  21. package/dist/.setup/{event-helpers-CspuhE9k.mjs → event-helpers-CxNgMQqH.mjs} +5 -7
  22. package/dist/.setup/{exec-approvals-BLDAMyHs.mjs → exec-approvals-BgNWWJg1.mjs} +6 -12
  23. package/dist/.setup/{file-sync-store-Clc9iEdn.mjs → file-sync-store-BdKx_gMi.mjs} +2 -5
  24. package/dist/.setup/{http-client-DfJY5Ck0.mjs → http-client-ByR4STVQ.mjs} +55 -59
  25. package/dist/.setup/{messages-uCbwLRKS.mjs → messages-B1CZqU8u.mjs} +4 -16
  26. package/dist/.setup/{monitor-skIntQVG.mjs → monitor-C9Azqr9G.mjs} +176 -232
  27. package/dist/.setup/{onboarding-Cm_tOJxs.mjs → onboarding-CrSexor_.mjs} +33 -50
  28. package/dist/.setup/{outbound-CqQou3ny.mjs → outbound-BUUQaZ6A.mjs} +2 -2
  29. package/dist/.setup/{profile-update-C1n8SRqH.mjs → profile-update-C7bjaGR6.mjs} +2 -3
  30. package/dist/.setup/{reaction-events-Cqq46xsG.mjs → reaction-events-D2lfkfaX.mjs} +4 -4
  31. package/dist/.setup/{resolve-targets-DFeU1Ww6.mjs → resolve-targets-BVVbbvP6.mjs} +15 -21
  32. package/dist/.setup/{retired-state-BXUQ2I-C.mjs → retired-state-DW5pLH05.mjs} +22 -3
  33. package/dist/.setup/{room-info-BPMbwe8I.mjs → room-info-9Uqlpt1V.mjs} +4 -4
  34. package/dist/.setup/{sdk-CgQGkCsS.mjs → sdk-Cfc6m7fY.mjs} +115 -195
  35. package/dist/.setup/{secret-contract-JlB6VmI3.mjs → secret-contract-DSBRvhdZ.mjs} +1 -1
  36. package/dist/.setup/{secret-contract-api-B-iJoQEv.mjs → secret-contract-api-DzEJ-X7n.mjs} +1 -1
  37. package/dist/.setup/{send-B1Y2L4wj.mjs → send-LCOuTVc1.mjs} +10 -30
  38. package/dist/.setup/{setup-bootstrap-UNIGyKnk.mjs → setup-bootstrap-CV-hHBXu.mjs} +2 -2
  39. package/dist/.setup/setup-core-CKnNTfgD.mjs +673 -0
  40. package/dist/.setup/{setup-plugin-api-BRs9bcp4.mjs → setup-plugin-api-BDAYk1a5.mjs} +1 -1
  41. package/dist/.setup/{startup-verification-D00eUt74.mjs → startup-verification-CgfUb4yJ.mjs} +3 -3
  42. package/dist/.setup/{storage-D7agewjH.mjs → storage-DkC6bHgA.mjs} +24 -49
  43. package/dist/.setup/{subagent-hooks-D5kd_kzN.mjs → subagent-hooks-D8jyeQsO.mjs} +1 -1
  44. package/dist/.setup/{sync-cache-state-C2z64uyk.mjs → sync-cache-state-D4G-fi3t.mjs} +20 -33
  45. package/dist/.setup/{target-ids-Nwx7cMVE.mjs → target-ids-HhcaKX1n.mjs} +15 -1
  46. package/dist/.setup/{thread-binding-api-DRMC62cs.mjs → thread-binding-api-BvuaKpd0.mjs} +1 -1
  47. package/dist/.setup/{thread-bindings-DveHVZqN.mjs → thread-bindings-CT4P-OSZ.mjs} +38 -58
  48. package/dist/.setup/{thread-bindings-shared-hxKkYC1W.mjs → thread-bindings-shared-CbsFNbAY.mjs} +19 -37
  49. package/dist/.setup/{tool-actions-BqlK2ilM.mjs → tool-actions-DZvYw1pP.mjs} +17 -18
  50. package/dist/.setup/{verification-kMlFYUn0.mjs → verification-B3VswneT.mjs} +15 -21
  51. package/dist/api.js +7 -7
  52. package/dist/channel-plugin-api.js +1 -1
  53. package/dist/cli-metadata.js +1 -1
  54. package/dist/contract-api.js +2 -2
  55. package/dist/doctor-contract-api.js +13 -22
  56. package/dist/helper-api.js +2 -2
  57. package/dist/index.js +1 -1
  58. package/dist/plugin-entry.handlers.runtime.js +2 -2
  59. package/dist/runtime-api.js +4 -4
  60. package/dist/secret-contract-api.js +1 -1
  61. package/dist/session-binding-contract-api.js +1 -1
  62. package/dist/setup-entry.js +2 -2
  63. package/dist/setup-plugin-api.js +1 -1
  64. package/dist/subagent-hooks-api.js +1 -1
  65. package/dist/thread-binding-api.js +1 -1
  66. package/dist/thread-bindings-runtime.js +1 -1
  67. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/package.json +1 -1
  68. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm.d.ts +129 -129
  69. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.cjs +688 -688
  70. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.js +512 -512
  71. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm +0 -0
  72. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm.d.ts +84 -84
  73. package/node_modules/@openclaw/fs-safe/CHANGELOG.md +91 -0
  74. package/node_modules/@openclaw/fs-safe/README.md +1 -1
  75. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +1 -0
  76. package/node_modules/@openclaw/fs-safe/dist/advanced.js +1 -0
  77. package/node_modules/@openclaw/fs-safe/dist/archive-durability.js +1 -1
  78. package/node_modules/@openclaw/fs-safe/dist/archive-entry.js +7 -3
  79. package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +4 -4
  80. package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
  81. package/node_modules/@openclaw/fs-safe/dist/archive-read.js +5 -4
  82. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +1 -1
  83. package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +22 -38
  84. package/node_modules/@openclaw/fs-safe/dist/copy-path-admission.d.ts +17 -0
  85. package/node_modules/@openclaw/fs-safe/dist/copy-path-admission.js +117 -0
  86. package/node_modules/@openclaw/fs-safe/dist/copy-root-file-sync.d.ts +38 -0
  87. package/node_modules/@openclaw/fs-safe/dist/copy-root-file-sync.js +195 -0
  88. package/node_modules/@openclaw/fs-safe/dist/create.d.ts +1 -0
  89. package/node_modules/@openclaw/fs-safe/dist/create.js +4 -1
  90. package/node_modules/@openclaw/fs-safe/dist/entry-publication.js +3 -1
  91. package/node_modules/@openclaw/fs-safe/dist/errors.d.ts +2 -0
  92. package/node_modules/@openclaw/fs-safe/dist/errors.js +5 -0
  93. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.d.ts +3 -0
  94. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.js +57 -11
  95. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.js +5 -5
  96. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +52 -5
  97. package/node_modules/@openclaw/fs-safe/dist/guest.js +1 -1
  98. package/node_modules/@openclaw/fs-safe/dist/index.d.ts +1 -1
  99. package/node_modules/@openclaw/fs-safe/dist/index.js +1 -1
  100. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +4 -0
  101. package/node_modules/@openclaw/fs-safe/dist/native-move-fallback.d.ts +3 -0
  102. package/node_modules/@openclaw/fs-safe/dist/native-move-fallback.js +54 -0
  103. package/node_modules/@openclaw/fs-safe/dist/native-noreplace.d.ts +8 -0
  104. package/node_modules/@openclaw/fs-safe/dist/native-noreplace.js +55 -0
  105. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts +0 -1
  106. package/node_modules/@openclaw/fs-safe/dist/native-operations.js +22 -26
  107. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.js +5 -1
  108. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.d.ts +1 -1
  109. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +12 -2
  110. package/node_modules/@openclaw/fs-safe/dist/native-rename-outcome.js +3 -1
  111. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts +1 -1
  112. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +52 -6
  113. package/node_modules/@openclaw/fs-safe/dist/permission-exec.js +2 -1
  114. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.d.ts +2 -0
  115. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.js +17 -0
  116. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts +6 -1
  117. package/node_modules/@openclaw/fs-safe/dist/pinned-write.js +1 -1
  118. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.js +2 -2
  119. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.d.ts +5 -0
  120. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.js +1 -0
  121. package/node_modules/@openclaw/fs-safe/dist/publish-file.d.ts +2 -0
  122. package/node_modules/@openclaw/fs-safe/dist/publish-file.js +35 -2
  123. package/node_modules/@openclaw/fs-safe/dist/replace-directory.js +6 -5
  124. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +1 -4
  125. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.js +6 -0
  126. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts +15 -1
  127. package/node_modules/@openclaw/fs-safe/dist/root-create-input.js +4 -0
  128. package/node_modules/@openclaw/fs-safe/dist/root-directory-entry.js +1 -1
  129. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +0 -1
  130. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +6 -12
  131. package/node_modules/@openclaw/fs-safe/dist/root-errors.js +25 -4
  132. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +18 -18
  133. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +4 -2
  134. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +13 -17
  135. package/node_modules/@openclaw/fs-safe/dist/root-paths.js +1 -1
  136. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +4 -4
  137. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.d.ts +10 -1
  138. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.js +20 -0
  139. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.js +19 -7
  140. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.js +18 -3
  141. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +25 -3
  142. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission.d.ts +2 -0
  143. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-retained.d.ts +14 -0
  144. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-retained.js +187 -0
  145. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +15 -1
  146. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.js +4 -1
  147. package/node_modules/@openclaw/fs-safe/dist/temp-directory-diagnostics.d.ts +10 -0
  148. package/node_modules/@openclaw/fs-safe/dist/temp-directory-diagnostics.js +29 -0
  149. package/node_modules/@openclaw/fs-safe/dist/temp-target.js +1 -1
  150. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +6 -6
  151. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +4 -4
  152. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +17 -16
  153. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +20 -28
  154. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts +1 -0
  155. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +27 -4
  156. package/node_modules/@openclaw/fs-safe/dist/walk.js +2 -13
  157. package/node_modules/@openclaw/fs-safe/dist/watch-native.d.ts +2 -2
  158. package/node_modules/@openclaw/fs-safe/dist/watch-native.js +3 -1
  159. package/node_modules/@openclaw/fs-safe/dist/watch-rescan.js +3 -9
  160. package/node_modules/@openclaw/fs-safe/dist/watch.js +2 -3
  161. package/node_modules/@openclaw/fs-safe/docs/advanced.md +1 -0
  162. package/node_modules/@openclaw/fs-safe/docs/archive.md +5 -1
  163. package/node_modules/@openclaw/fs-safe/docs/atomic.md +11 -3
  164. package/node_modules/@openclaw/fs-safe/docs/contributing.md +1 -1
  165. package/node_modules/@openclaw/fs-safe/docs/copy.md +109 -1
  166. package/node_modules/@openclaw/fs-safe/docs/durability.md +50 -5
  167. package/node_modules/@openclaw/fs-safe/docs/errors.md +37 -0
  168. package/node_modules/@openclaw/fs-safe/docs/guest.md +21 -4
  169. package/node_modules/@openclaw/fs-safe/docs/native-helper.md +5 -3
  170. package/node_modules/@openclaw/fs-safe/docs/native.md +39 -6
  171. package/node_modules/@openclaw/fs-safe/docs/path-scope.md +4 -0
  172. package/node_modules/@openclaw/fs-safe/docs/public-api.md +3 -1
  173. package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +46 -8
  174. package/node_modules/@openclaw/fs-safe/docs/staged-file.md +10 -3
  175. package/node_modules/@openclaw/fs-safe/docs/temp.md +12 -0
  176. package/node_modules/@openclaw/fs-safe/docs/watch.md +6 -3
  177. package/node_modules/@openclaw/fs-safe/docs/writing.md +40 -11
  178. package/node_modules/@openclaw/fs-safe/package.json +16 -16
  179. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  180. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +1 -1
  181. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  182. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +1 -1
  183. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  184. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +1 -1
  185. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  186. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +1 -1
  187. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  188. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +1 -1
  189. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  190. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +1 -1
  191. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  192. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +1 -1
  193. package/node_modules/music-metadata/README.md +35 -32
  194. package/node_modules/music-metadata/lib/ParserFactory.d.ts +1 -1
  195. package/node_modules/music-metadata/lib/ParserFactory.js +17 -13
  196. package/node_modules/music-metadata/lib/aiff/AiffParser.js +19 -12
  197. package/node_modules/music-metadata/lib/aiff/AiffToken.d.ts +1 -1
  198. package/node_modules/music-metadata/lib/aiff/AiffToken.js +2 -1
  199. package/node_modules/music-metadata/lib/apev2/APEv2Parser.d.ts +4 -3
  200. package/node_modules/music-metadata/lib/apev2/APEv2Parser.js +59 -16
  201. package/node_modules/music-metadata/lib/apev2/APEv2TagMapper.js +1 -0
  202. package/node_modules/music-metadata/lib/apev2/APEv2Token.d.ts +1 -1
  203. package/node_modules/music-metadata/lib/apev2/APEv2Token.js +1 -1
  204. package/node_modules/music-metadata/lib/asf/AsfGuid.js +56 -50
  205. package/node_modules/music-metadata/lib/asf/AsfObject.d.ts +1 -1
  206. package/node_modules/music-metadata/lib/asf/AsfObject.js +3 -2
  207. package/node_modules/music-metadata/lib/asf/AsfParser.js +15 -7
  208. package/node_modules/music-metadata/lib/asf/AsfTagMapper.d.ts +3 -2
  209. package/node_modules/music-metadata/lib/asf/AsfTagMapper.js +21 -4
  210. package/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.d.ts +1 -1
  211. package/node_modules/music-metadata/lib/common/CombinedTagMapper.d.ts +2 -2
  212. package/node_modules/music-metadata/lib/common/CombinedTagMapper.js +6 -6
  213. package/node_modules/music-metadata/lib/common/FourCC.js +3 -2
  214. package/node_modules/music-metadata/lib/common/GenericTagMapper.d.ts +1 -1
  215. package/node_modules/music-metadata/lib/common/GenericTagTypes.js +1 -1
  216. package/node_modules/music-metadata/lib/common/MetadataCollector.d.ts +3 -1
  217. package/node_modules/music-metadata/lib/common/MetadataCollector.js +28 -9
  218. package/node_modules/music-metadata/lib/common/Util.js +25 -17
  219. package/node_modules/music-metadata/lib/core.d.ts +4 -4
  220. package/node_modules/music-metadata/lib/core.js +18 -11
  221. package/node_modules/music-metadata/lib/dsdiff/DsdiffParser.js +29 -16
  222. package/node_modules/music-metadata/lib/dsf/DsfChunk.d.ts +1 -1
  223. package/node_modules/music-metadata/lib/dsf/DsfParser.js +3 -5
  224. package/node_modules/music-metadata/lib/ebml/EbmlIterator.d.ts +1 -1
  225. package/node_modules/music-metadata/lib/ebml/EbmlIterator.js +35 -6
  226. package/node_modules/music-metadata/lib/ebml/types.d.ts +1 -1
  227. package/node_modules/music-metadata/lib/ebml/types.js +1 -1
  228. package/node_modules/music-metadata/lib/flac/FlacParser.d.ts +1 -1
  229. package/node_modules/music-metadata/lib/flac/FlacParser.js +6 -5
  230. package/node_modules/music-metadata/lib/flac/FlacToken.d.ts +1 -1
  231. package/node_modules/music-metadata/lib/flac/FlacToken.js +1 -1
  232. package/node_modules/music-metadata/lib/id3v1/ID3v1Parser.d.ts +1 -1
  233. package/node_modules/music-metadata/lib/id3v1/ID3v1Parser.js +212 -42
  234. package/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.js +5 -5
  235. package/node_modules/music-metadata/lib/id3v2/FrameHeader.d.ts +1 -1
  236. package/node_modules/music-metadata/lib/id3v2/FrameHeader.js +8 -5
  237. package/node_modules/music-metadata/lib/id3v2/FrameParser.d.ts +2 -1
  238. package/node_modules/music-metadata/lib/id3v2/FrameParser.js +54 -23
  239. package/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.d.ts +1 -1
  240. package/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js +1 -1
  241. package/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js +3 -3
  242. package/node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.js +2 -2
  243. package/node_modules/music-metadata/lib/id3v2/ID3v2Parser.d.ts +1 -1
  244. package/node_modules/music-metadata/lib/id3v2/ID3v2Parser.js +32 -16
  245. package/node_modules/music-metadata/lib/id3v2/ID3v2Token.d.ts +2 -2
  246. package/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +2 -3
  247. package/node_modules/music-metadata/lib/index.js +6 -3
  248. package/node_modules/music-metadata/lib/lrc/LyricsParser.js +3 -5
  249. package/node_modules/music-metadata/lib/matroska/MatroskaDtd.js +7 -3
  250. package/node_modules/music-metadata/lib/matroska/MatroskaParser.js +22 -11
  251. package/node_modules/music-metadata/lib/matroska/types.d.ts +2 -2
  252. package/node_modules/music-metadata/lib/mp4/Atom.d.ts +4 -3
  253. package/node_modules/music-metadata/lib/mp4/Atom.js +44 -11
  254. package/node_modules/music-metadata/lib/mp4/AtomToken.d.ts +1 -1
  255. package/node_modules/music-metadata/lib/mp4/AtomToken.js +30 -8
  256. package/node_modules/music-metadata/lib/mp4/MP4Parser.d.ts +2 -0
  257. package/node_modules/music-metadata/lib/mp4/MP4Parser.js +79 -54
  258. package/node_modules/music-metadata/lib/mp4/MP4TagMapper.d.ts +2 -2
  259. package/node_modules/music-metadata/lib/mpeg/MpegLoader.js +1 -1
  260. package/node_modules/music-metadata/lib/mpeg/MpegParser.js +41 -19
  261. package/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.d.ts +2 -2
  262. package/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.js +1 -1
  263. package/node_modules/music-metadata/lib/mpeg/XingTag.d.ts +1 -1
  264. package/node_modules/music-metadata/lib/musepack/MusepackParser.js +2 -2
  265. package/node_modules/music-metadata/lib/musepack/sv7/BitReader.js +1 -1
  266. package/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js +4 -3
  267. package/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js +3 -3
  268. package/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js +7 -5
  269. package/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js +2 -2
  270. package/node_modules/music-metadata/lib/ogg/OggParser.js +23 -13
  271. package/node_modules/music-metadata/lib/ogg/OggToken.d.ts +2 -0
  272. package/node_modules/music-metadata/lib/ogg/OggToken.js +1 -1
  273. package/node_modules/music-metadata/lib/ogg/flac/FlacStream.d.ts +2 -2
  274. package/node_modules/music-metadata/lib/ogg/flac/FlacStream.js +2 -2
  275. package/node_modules/music-metadata/lib/ogg/opus/OpusStream.d.ts +2 -2
  276. package/node_modules/music-metadata/lib/ogg/opus/OpusStream.js +8 -4
  277. package/node_modules/music-metadata/lib/ogg/speex/SpeexStream.d.ts +2 -2
  278. package/node_modules/music-metadata/lib/ogg/speex/SpeexStream.js +2 -1
  279. package/node_modules/music-metadata/lib/ogg/theora/TheoraStream.d.ts +2 -2
  280. package/node_modules/music-metadata/lib/ogg/vorbis/Vorbis.d.ts +1 -1
  281. package/node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.js +1 -1
  282. package/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.d.ts +4 -3
  283. package/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.js +16 -9
  284. package/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js +4 -0
  285. package/node_modules/music-metadata/lib/riff/RiffChunk.d.ts +3 -1
  286. package/node_modules/music-metadata/lib/riff/RiffChunk.js +3 -2
  287. package/node_modules/music-metadata/lib/riff/RiffInfoTagMap.d.ts +1 -1
  288. package/node_modules/music-metadata/lib/type.d.ts +3 -3
  289. package/node_modules/music-metadata/lib/type.js +1 -1
  290. package/node_modules/music-metadata/lib/wav/WaveChunk.d.ts +1 -1
  291. package/node_modules/music-metadata/lib/wav/WaveChunk.js +3 -2
  292. package/node_modules/music-metadata/lib/wav/WaveParser.d.ts +6 -2
  293. package/node_modules/music-metadata/lib/wav/WaveParser.js +75 -22
  294. package/node_modules/music-metadata/lib/wavpack/WavPackParser.js +22 -13
  295. package/node_modules/music-metadata/lib/wavpack/WavPackToken.js +3 -2
  296. package/node_modules/music-metadata/package.json +3 -2
  297. package/package.json +7 -7
  298. package/dist/.setup/accounts-C_r0UlEm.mjs +0 -138
  299. package/dist/.setup/config-update-CZndPxNd.mjs +0 -102
  300. package/dist/.setup/profile-DS0xdJAi.mjs +0 -80
  301. package/dist/.setup/setup-core-6DppLENo.mjs +0 -377
  302. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.d.ts +0 -17
  303. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.js +0 -66
  304. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts +0 -7
  305. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.js +0 -16
  306. package/dist/.setup/{errors-DKVS3_DO.mjs → errors-Bw4EHwKX.mjs} +1 -1
@@ -12,6 +12,7 @@ export const __wbg_checkcode_free: (a: number, b: number) => void;
12
12
  export const __wbg_collectstrategy_free: (a: number, b: number) => void;
13
13
  export const __wbg_crosssigningbootstraprequests_free: (a: number, b: number) => void;
14
14
  export const __wbg_crosssigningkeyexport_free: (a: number, b: number) => void;
15
+ export const __wbg_crosssigningstatus_free: (a: number, b: number) => void;
15
16
  export const __wbg_curve25519publickey_free: (a: number, b: number) => void;
16
17
  export const __wbg_curve25519secretkey_free: (a: number, b: number) => void;
17
18
  export const __wbg_decryptedroomevent_free: (a: number, b: number) => void;
@@ -34,14 +35,18 @@ export const __wbg_encryptedattachment_free: (a: number, b: number) => void;
34
35
  export const __wbg_encryptioninfo_free: (a: number, b: number) => void;
35
36
  export const __wbg_encryptionsettings_free: (a: number, b: number) => void;
36
37
  export const __wbg_establishedecies_free: (a: number, b: number) => void;
38
+ export const __wbg_eventid_free: (a: number, b: number) => void;
37
39
  export const __wbg_get_backupkeys_backupVersion: (a: number) => [number, number];
38
40
  export const __wbg_get_backupkeys_decryptionKey: (a: number) => number;
39
41
  export const __wbg_get_backupsecretsbundle_backup_version: (a: number) => [number, number];
40
42
  export const __wbg_get_backupsecretsbundle_key: (a: number) => [number, number];
43
+ export const __wbg_get_base64encodedpkmessage_ciphertext: (a: number) => [number, number];
41
44
  export const __wbg_get_base64encodedpkmessage_ephemeralKey: (a: number) => [number, number];
45
+ export const __wbg_get_base64encodedpkmessage_mac: (a: number) => [number, number];
42
46
  export const __wbg_get_basemigrationdata_backupRecoveryKey: (a: number) => [number, number];
43
47
  export const __wbg_get_basemigrationdata_backupVersion: (a: number) => [number, number];
44
48
  export const __wbg_get_basemigrationdata_deviceId: (a: number) => number;
49
+ export const __wbg_get_basemigrationdata_pickledAccount: (a: number) => [number, number];
45
50
  export const __wbg_get_basemigrationdata_privateCrossSigningMasterKey: (a: number) => [number, number];
46
51
  export const __wbg_get_basemigrationdata_privateCrossSigningSelfSigningKey: (a: number) => [number, number];
47
52
  export const __wbg_get_basemigrationdata_privateCrossSigningUserSigningKey: (a: number) => [number, number];
@@ -56,6 +61,8 @@ export const __wbg_get_decryptionsettings_sender_device_trust_requirement: (a: n
56
61
  export const __wbg_get_encryptioninfo_forwarder: (a: number) => number;
57
62
  export const __wbg_get_encryptioninfo_forwarderDevice: (a: number) => number;
58
63
  export const __wbg_get_encryptioninfo_sender: (a: number) => number;
64
+ export const __wbg_get_encryptioninfo_senderClaimedEd25519Key: (a: number) => [number, number];
65
+ export const __wbg_get_encryptioninfo_senderCurve25519Key: (a: number) => [number, number];
59
66
  export const __wbg_get_encryptioninfo_senderDevice: (a: number) => number;
60
67
  export const __wbg_get_encryptionsettings_algorithm: (a: number) => number;
61
68
  export const __wbg_get_encryptionsettings_encryptStateEvents: (a: number) => number;
@@ -66,16 +73,37 @@ export const __wbg_get_encryptionsettings_sharingStrategy: (a: number) => number
66
73
  export const __wbg_get_identitykeys_curve25519: (a: number) => number;
67
74
  export const __wbg_get_identitykeys_ed25519: (a: number) => number;
68
75
  export const __wbg_get_inboundcreationresult_channel: (a: number) => number;
76
+ export const __wbg_get_inboundcreationresult_message: (a: number) => [number, number];
69
77
  export const __wbg_get_invalidtodeviceevent_rawEvent: (a: number) => any;
70
78
  export const __wbg_get_keysbackuprequest_body: (a: number) => any;
79
+ export const __wbg_get_keysbackuprequest_id: (a: number) => any;
71
80
  export const __wbg_get_keysbackuprequest_version: (a: number) => any;
81
+ export const __wbg_get_keysclaimrequest_body: (a: number) => any;
82
+ export const __wbg_get_keysclaimrequest_id: (a: number) => any;
83
+ export const __wbg_get_keysqueryrequest_body: (a: number) => any;
84
+ export const __wbg_get_keysqueryrequest_id: (a: number) => any;
85
+ export const __wbg_get_keysuploadrequest_body: (a: number) => any;
86
+ export const __wbg_get_keysuploadrequest_id: (a: number) => any;
72
87
  export const __wbg_get_megolmdecryptionerror_code: (a: number) => number;
88
+ export const __wbg_get_megolmdecryptionerror_description: (a: number) => any;
89
+ export const __wbg_get_msc4108intentdata_rendezvousUrl: (a: number) => [number, number];
90
+ export const __wbg_get_msc4108intentdata_serverName: (a: number) => [number, number];
91
+ export const __wbg_get_msc4388intentdata_baseUrl: (a: number) => [number, number];
92
+ export const __wbg_get_msc4388intentdata_rendezvousId: (a: number) => [number, number];
93
+ export const __wbg_get_outboundcreationresult_channel: (a: number) => number;
94
+ export const __wbg_get_outboundcreationresult_initial_message: (a: number) => [number, number];
73
95
  export const __wbg_get_pickledinboundgroupsession_backedUp: (a: number) => number;
74
96
  export const __wbg_get_pickledinboundgroupsession_imported: (a: number) => number;
97
+ export const __wbg_get_pickledinboundgroupsession_pickle: (a: number) => [number, number];
75
98
  export const __wbg_get_pickledinboundgroupsession_roomId: (a: number) => number;
99
+ export const __wbg_get_pickledinboundgroupsession_senderKey: (a: number) => [number, number];
100
+ export const __wbg_get_pickledinboundgroupsession_senderSigningKey: (a: number) => [number, number];
76
101
  export const __wbg_get_pickledsession_createdUsingFallbackKey: (a: number) => number;
77
102
  export const __wbg_get_pickledsession_creationTime: (a: number) => any;
78
103
  export const __wbg_get_pickledsession_lastUseTime: (a: number) => any;
104
+ export const __wbg_get_pickledsession_pickle: (a: number) => [number, number];
105
+ export const __wbg_get_pickledsession_senderKey: (a: number) => [number, number];
106
+ export const __wbg_get_plaintexttodeviceevent_rawEvent: (a: number) => any;
79
107
  export const __wbg_get_putdehydrateddevicerequest_body: (a: number) => any;
80
108
  export const __wbg_get_qrcodeintentdata_msc4108: (a: number) => number;
81
109
  export const __wbg_get_qrcodeintentdata_msc4388: (a: number) => number;
@@ -84,6 +112,10 @@ export const __wbg_get_roomkeycounts_total: (a: number) => number;
84
112
  export const __wbg_get_roomkeyimportresult_importedCount: (a: number) => number;
85
113
  export const __wbg_get_roomkeyimportresult_totalCount: (a: number) => number;
86
114
  export const __wbg_get_roommessagerequest_body: (a: number) => any;
115
+ export const __wbg_get_roommessagerequest_event_type: (a: number) => any;
116
+ export const __wbg_get_roommessagerequest_id: (a: number) => any;
117
+ export const __wbg_get_roommessagerequest_room_id: (a: number) => any;
118
+ export const __wbg_get_roommessagerequest_txn_id: (a: number) => any;
87
119
  export const __wbg_get_roomsettings_algorithm: (a: number) => number;
88
120
  export const __wbg_get_roomsettings_encryptStateEvents: (a: number) => number;
89
121
  export const __wbg_get_roomsettings_onlyAllowTrustedDevices: (a: number) => number;
@@ -91,30 +123,47 @@ export const __wbg_get_roomsettings_sessionRotationPeriodMessages: (a: number) =
91
123
  export const __wbg_get_roomsettings_sessionRotationPeriodMs: (a: number) => [number, number];
92
124
  export const __wbg_get_shieldstate_code: (a: number) => number;
93
125
  export const __wbg_get_shieldstate_color: (a: number) => number;
126
+ export const __wbg_get_signatureuploadrequest_body: (a: number) => any;
94
127
  export const __wbg_get_signatureuploadrequest_id: (a: number) => any;
95
128
  export const __wbg_get_todeviceencryptioninfo_sender: (a: number) => number;
129
+ export const __wbg_get_todeviceencryptioninfo_senderCurve25519Key: (a: number) => [number, number];
96
130
  export const __wbg_get_todeviceencryptioninfo_senderDevice: (a: number) => number;
131
+ export const __wbg_get_todevicerequest_body: (a: number) => any;
132
+ export const __wbg_get_todevicerequest_event_type: (a: number) => any;
133
+ export const __wbg_get_todevicerequest_id: (a: number) => any;
134
+ export const __wbg_get_todevicerequest_txn_id: (a: number) => any;
97
135
  export const __wbg_get_todeviceunabletodecryptinfo_reason: (a: number) => number;
136
+ export const __wbg_get_uploadsigningkeysrequest_body: (a: number) => any;
137
+ export const __wbg_get_utdtodeviceevent_rawEvent: (a: number) => any;
98
138
  export const __wbg_get_utdtodeviceevent_utdInfo: (a: number) => number;
139
+ export const __wbg_get_versions_git_description: (a: number) => any;
140
+ export const __wbg_get_versions_git_sha: (a: number) => any;
141
+ export const __wbg_get_versions_matrix_sdk_crypto: (a: number) => any;
142
+ export const __wbg_get_versions_vodozemac: (a: number) => any;
99
143
  export const __wbg_identitykeys_free: (a: number, b: number) => void;
100
144
  export const __wbg_inboundcreationresult_free: (a: number, b: number) => void;
101
145
  export const __wbg_inboundgroupsession_free: (a: number, b: number) => void;
102
146
  export const __wbg_invalidtodeviceevent_free: (a: number, b: number) => void;
103
147
  export const __wbg_keysbackuprequest_free: (a: number, b: number) => void;
104
148
  export const __wbg_keysclaimrequest_free: (a: number, b: number) => void;
149
+ export const __wbg_keysqueryrequest_free: (a: number, b: number) => void;
150
+ export const __wbg_keysuploadrequest_free: (a: number, b: number) => void;
105
151
  export const __wbg_maybesignature_free: (a: number, b: number) => void;
106
152
  export const __wbg_megolmdecryptionerror_free: (a: number, b: number) => void;
107
153
  export const __wbg_megolmv1backupkey_free: (a: number, b: number) => void;
154
+ export const __wbg_migration_free: (a: number, b: number) => void;
108
155
  export const __wbg_msc4108intentdata_free: (a: number, b: number) => void;
109
156
  export const __wbg_msc4388intentdata_free: (a: number, b: number) => void;
110
157
  export const __wbg_olmmachine_free: (a: number, b: number) => void;
111
158
  export const __wbg_otheruseridentity_free: (a: number, b: number) => void;
159
+ export const __wbg_outboundcreationresult_free: (a: number, b: number) => void;
112
160
  export const __wbg_ownuseridentity_free: (a: number, b: number) => void;
113
161
  export const __wbg_pickledinboundgroupsession_free: (a: number, b: number) => void;
114
162
  export const __wbg_pickledsession_free: (a: number, b: number) => void;
115
163
  export const __wbg_pkdecryption_free: (a: number, b: number) => void;
116
164
  export const __wbg_pkencryption_free: (a: number, b: number) => void;
117
165
  export const __wbg_pkmessage_free: (a: number, b: number) => void;
166
+ export const __wbg_plaintexttodeviceevent_free: (a: number, b: number) => void;
118
167
  export const __wbg_putdehydrateddevicerequest_free: (a: number, b: number) => void;
119
168
  export const __wbg_qr_free: (a: number, b: number) => void;
120
169
  export const __wbg_qrcode_free: (a: number, b: number) => void;
@@ -122,6 +171,7 @@ export const __wbg_qrcodedata_free: (a: number, b: number) => void;
122
171
  export const __wbg_qrcodeintentdata_free: (a: number, b: number) => void;
123
172
  export const __wbg_qrcodescan_free: (a: number, b: number) => void;
124
173
  export const __wbg_rehydrateddevice_free: (a: number, b: number) => void;
174
+ export const __wbg_roomid_free: (a: number, b: number) => void;
125
175
  export const __wbg_roomkeycounts_free: (a: number, b: number) => void;
126
176
  export const __wbg_roomkeyimportresult_free: (a: number, b: number) => void;
127
177
  export const __wbg_roomkeyinfo_free: (a: number, b: number) => void;
@@ -131,14 +181,18 @@ export const __wbg_roompendingkeybundledetails_free: (a: number, b: number) => v
131
181
  export const __wbg_roomsettings_free: (a: number, b: number) => void;
132
182
  export const __wbg_sas_free: (a: number, b: number) => void;
133
183
  export const __wbg_secretsbundle_free: (a: number, b: number) => void;
184
+ export const __wbg_servername_free: (a: number, b: number) => void;
134
185
  export const __wbg_set_backupkeys_backupVersion: (a: number, b: number, c: number) => void;
135
186
  export const __wbg_set_backupkeys_decryptionKey: (a: number, b: number) => void;
136
187
  export const __wbg_set_backupsecretsbundle_backup_version: (a: number, b: number, c: number) => void;
137
188
  export const __wbg_set_backupsecretsbundle_key: (a: number, b: number, c: number) => void;
189
+ export const __wbg_set_base64encodedpkmessage_ciphertext: (a: number, b: number, c: number) => void;
138
190
  export const __wbg_set_base64encodedpkmessage_ephemeralKey: (a: number, b: number, c: number) => void;
191
+ export const __wbg_set_base64encodedpkmessage_mac: (a: number, b: number, c: number) => void;
139
192
  export const __wbg_set_basemigrationdata_backupRecoveryKey: (a: number, b: number, c: number) => void;
140
193
  export const __wbg_set_basemigrationdata_backupVersion: (a: number, b: number, c: number) => void;
141
194
  export const __wbg_set_basemigrationdata_deviceId: (a: number, b: number) => void;
195
+ export const __wbg_set_basemigrationdata_pickledAccount: (a: number, b: number, c: number) => void;
142
196
  export const __wbg_set_basemigrationdata_privateCrossSigningMasterKey: (a: number, b: number, c: number) => void;
143
197
  export const __wbg_set_basemigrationdata_privateCrossSigningSelfSigningKey: (a: number, b: number, c: number) => void;
144
198
  export const __wbg_set_basemigrationdata_privateCrossSigningUserSigningKey: (a: number, b: number, c: number) => void;
@@ -147,6 +201,8 @@ export const __wbg_set_decryptionsettings_sender_device_trust_requirement: (a: n
147
201
  export const __wbg_set_encryptioninfo_forwarder: (a: number, b: number) => void;
148
202
  export const __wbg_set_encryptioninfo_forwarderDevice: (a: number, b: number) => void;
149
203
  export const __wbg_set_encryptioninfo_sender: (a: number, b: number) => void;
204
+ export const __wbg_set_encryptioninfo_senderClaimedEd25519Key: (a: number, b: number, c: number) => void;
205
+ export const __wbg_set_encryptioninfo_senderCurve25519Key: (a: number, b: number, c: number) => void;
150
206
  export const __wbg_set_encryptioninfo_senderDevice: (a: number, b: number) => void;
151
207
  export const __wbg_set_encryptionsettings_algorithm: (a: number, b: number) => void;
152
208
  export const __wbg_set_encryptionsettings_encryptStateEvents: (a: number, b: number) => void;
@@ -157,12 +213,24 @@ export const __wbg_set_encryptionsettings_sharingStrategy: (a: number, b: number
157
213
  export const __wbg_set_identitykeys_curve25519: (a: number, b: number) => void;
158
214
  export const __wbg_set_identitykeys_ed25519: (a: number, b: number) => void;
159
215
  export const __wbg_set_inboundcreationresult_channel: (a: number, b: number) => void;
216
+ export const __wbg_set_inboundcreationresult_message: (a: number, b: number, c: number) => void;
217
+ export const __wbg_set_msc4108intentdata_rendezvousUrl: (a: number, b: number, c: number) => void;
218
+ export const __wbg_set_msc4108intentdata_serverName: (a: number, b: number, c: number) => void;
219
+ export const __wbg_set_msc4388intentdata_baseUrl: (a: number, b: number, c: number) => void;
220
+ export const __wbg_set_msc4388intentdata_rendezvousId: (a: number, b: number, c: number) => void;
221
+ export const __wbg_set_outboundcreationresult_channel: (a: number, b: number) => void;
222
+ export const __wbg_set_outboundcreationresult_initial_message: (a: number, b: number, c: number) => void;
160
223
  export const __wbg_set_pickledinboundgroupsession_backedUp: (a: number, b: number) => void;
161
224
  export const __wbg_set_pickledinboundgroupsession_imported: (a: number, b: number) => void;
225
+ export const __wbg_set_pickledinboundgroupsession_pickle: (a: number, b: number, c: number) => void;
162
226
  export const __wbg_set_pickledinboundgroupsession_roomId: (a: number, b: number) => void;
227
+ export const __wbg_set_pickledinboundgroupsession_senderKey: (a: number, b: number, c: number) => void;
228
+ export const __wbg_set_pickledinboundgroupsession_senderSigningKey: (a: number, b: number, c: number) => void;
163
229
  export const __wbg_set_pickledsession_createdUsingFallbackKey: (a: number, b: number) => void;
164
230
  export const __wbg_set_pickledsession_creationTime: (a: number, b: any) => void;
165
231
  export const __wbg_set_pickledsession_lastUseTime: (a: number, b: any) => void;
232
+ export const __wbg_set_pickledsession_pickle: (a: number, b: number, c: number) => void;
233
+ export const __wbg_set_pickledsession_senderKey: (a: number, b: number, c: number) => void;
166
234
  export const __wbg_set_qrcodeintentdata_msc4108: (a: number, b: number) => void;
167
235
  export const __wbg_set_qrcodeintentdata_msc4388: (a: number, b: number) => void;
168
236
  export const __wbg_set_roomkeycounts_backedUp: (a: number, b: number) => void;
@@ -175,6 +243,7 @@ export const __wbg_set_roomsettings_sessionRotationPeriodMs: (a: number, b: numb
175
243
  export const __wbg_set_shieldstate_code: (a: number, b: number) => void;
176
244
  export const __wbg_set_shieldstate_color: (a: number, b: number) => void;
177
245
  export const __wbg_set_todeviceencryptioninfo_sender: (a: number, b: number) => void;
246
+ export const __wbg_set_todeviceencryptioninfo_senderCurve25519Key: (a: number, b: number, c: number) => void;
178
247
  export const __wbg_set_todeviceencryptioninfo_senderDevice: (a: number, b: number) => void;
179
248
  export const __wbg_set_todeviceunabletodecryptinfo_reason: (a: number, b: number) => void;
180
249
  export const __wbg_shieldstate_free: (a: number, b: number) => void;
@@ -188,7 +257,9 @@ export const __wbg_todeviceencryptioninfo_free: (a: number, b: number) => void;
188
257
  export const __wbg_todevicerequest_free: (a: number, b: number) => void;
189
258
  export const __wbg_todeviceunabletodecryptinfo_free: (a: number, b: number) => void;
190
259
  export const __wbg_tracing_free: (a: number, b: number) => void;
260
+ export const __wbg_uploadsigningkeysrequest_free: (a: number, b: number) => void;
191
261
  export const __wbg_userdevices_free: (a: number, b: number) => void;
262
+ export const __wbg_userid_free: (a: number, b: number) => void;
192
263
  export const __wbg_utdtodeviceevent_free: (a: number, b: number) => void;
193
264
  export const __wbg_verificationrequest_free: (a: number, b: number) => void;
194
265
  export const __wbg_versions_free: (a: number, b: number) => void;
@@ -240,6 +311,7 @@ export const decryptedtodeviceevent_type: (a: number) => number;
240
311
  export const decryptionsettings_new: (a: number) => number;
241
312
  export const dehydrateddevice_keysForUpload: (a: number, b: any, c: number) => any;
242
313
  export const dehydrateddevicekey_createKeyFromArray: (a: any) => [number, number, number];
314
+ export const dehydrateddevicekey_createRandomKey: () => number;
243
315
  export const dehydrateddevicekey_toBase64: (a: number) => any;
244
316
  export const dehydrateddevices_create: (a: number) => any;
245
317
  export const dehydrateddevices_deleteDehydratedDeviceKey: (a: number) => any;
@@ -308,6 +380,7 @@ export const establishedecies_public_key: (a: number) => number;
308
380
  export const eventid_localpart: (a: number) => [number, number];
309
381
  export const eventid_new: (a: number, b: number) => [number, number, number];
310
382
  export const eventid_serverName: (a: number) => number;
383
+ export const eventid_toString: (a: number) => [number, number];
311
384
  export const getVersions: () => number;
312
385
  export const inboundgroupsession_hasBeenImported: (a: number) => number;
313
386
  export const inboundgroupsession_roomId: (a: number) => number;
@@ -318,7 +391,9 @@ export const keysbackuprequest_new: (a: any, b: any, c: any) => number;
318
391
  export const keysbackuprequest_type: (a: number) => number;
319
392
  export const keysclaimrequest_new: (a: any, b: any) => number;
320
393
  export const keysclaimrequest_type: (a: number) => number;
394
+ export const keysqueryrequest_new: (a: any, b: any) => number;
321
395
  export const keysqueryrequest_type: (a: number) => number;
396
+ export const keysuploadrequest_new: (a: any, b: any) => number;
322
397
  export const keysuploadrequest_type: (a: number) => number;
323
398
  export const maybesignature_invalidSignatureSource: (a: number) => [number, number];
324
399
  export const maybesignature_isInvalid: (a: number) => number;
@@ -486,6 +561,7 @@ export const qrcodedata_toBytes: (a: number) => [number, number];
486
561
  export const qrcodescan_fromBytes: (a: any) => [number, number, number];
487
562
  export const rehydrateddevice_receiveEvents: (a: number, b: number, c: number, d: number) => any;
488
563
  export const roomid_new: (a: number, b: number) => [number, number, number];
564
+ export const roomid_toString: (a: number) => [number, number];
489
565
  export const roomkeyimportresult_keys: (a: number) => any;
490
566
  export const roomkeyinfo_algorithm: (a: number) => number;
491
567
  export const roomkeyinfo_roomId: (a: number) => number;
@@ -528,6 +604,7 @@ export const sas_timedOut: (a: number) => number;
528
604
  export const sas_userId: (a: number) => number;
529
605
  export const sas_weStarted: (a: number) => number;
530
606
  export const secretsbundle_backupBundle: (a: number) => number;
607
+ export const ring_core_0_17_14__bn_mul_mont: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
531
608
  export const secretsbundle_from_json: (a: any) => [number, number, number];
532
609
  export const secretsbundle_masterKey: (a: number) => [number, number];
533
610
  export const secretsbundle_selfSigningKey: (a: number) => [number, number];
@@ -568,6 +645,7 @@ export const tracing_new: (a: number) => [number, number, number];
568
645
  export const tracing_set_minLevel: (a: number, b: number) => [number, number];
569
646
  export const tracing_turnOff: (a: number) => [number, number];
570
647
  export const tracing_turnOn: (a: number) => [number, number];
648
+ export const uploadsigningkeysrequest_new: (a: any) => number;
571
649
  export const userdevices_devices: (a: number) => any;
572
650
  export const userdevices_get: (a: number, b: number) => number;
573
651
  export const userdevices_isAnyVerified: (a: number) => number;
@@ -577,6 +655,7 @@ export const userid_isHistorical: (a: number) => number;
577
655
  export const userid_localpart: (a: number) => [number, number];
578
656
  export const userid_new: (a: number, b: number) => [number, number, number];
579
657
  export const userid_serverName: (a: number) => number;
658
+ export const userid_toString: (a: number) => [number, number];
580
659
  export const utdtodeviceevent_type: (a: number) => number;
581
660
  export const verificationrequest_accept: (a: number) => [number, number, number];
582
661
  export const verificationrequest_acceptWithMethods: (a: number, b: number, c: number) => [number, number, number];
@@ -604,90 +683,11 @@ export const verificationrequest_theirSupportedMethods: (a: number) => [number,
604
683
  export const verificationrequest_timeRemainingMillis: (a: number) => number;
605
684
  export const verificationrequest_timedOut: (a: number) => number;
606
685
  export const verificationrequest_weStarted: (a: number) => number;
607
- export const ring_core_0_17_14__bn_mul_mont: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
608
- export const uploadsigningkeysrequest_new: (a: any) => number;
609
- export const dehydrateddevicekey_createRandomKey: () => number;
610
- export const __wbg_get_base64encodedpkmessage_ciphertext: (a: number) => [number, number];
611
- export const __wbg_get_base64encodedpkmessage_mac: (a: number) => [number, number];
612
- export const __wbg_get_basemigrationdata_pickledAccount: (a: number) => [number, number];
613
- export const __wbg_get_encryptioninfo_senderCurve25519Key: (a: number) => [number, number];
614
- export const __wbg_get_inboundcreationresult_message: (a: number) => [number, number];
615
- export const __wbg_get_msc4108intentdata_rendezvousUrl: (a: number) => [number, number];
616
- export const __wbg_get_msc4388intentdata_baseUrl: (a: number) => [number, number];
617
- export const __wbg_get_msc4388intentdata_rendezvousId: (a: number) => [number, number];
618
- export const __wbg_get_outboundcreationresult_initial_message: (a: number) => [number, number];
619
- export const __wbg_get_pickledinboundgroupsession_pickle: (a: number) => [number, number];
620
- export const __wbg_get_pickledinboundgroupsession_senderKey: (a: number) => [number, number];
621
- export const __wbg_get_pickledsession_pickle: (a: number) => [number, number];
622
- export const __wbg_get_pickledsession_senderKey: (a: number) => [number, number];
623
- export const __wbg_get_todeviceencryptioninfo_senderCurve25519Key: (a: number) => [number, number];
624
- export const __wbg_set_outboundcreationresult_channel: (a: number, b: number) => void;
625
- export const __wbg_migration_free: (a: number, b: number) => void;
626
- export const __wbg_get_uploadsigningkeysrequest_body: (a: number) => any;
627
- export const __wbg_get_pickledinboundgroupsession_senderSigningKey: (a: number) => [number, number];
628
- export const __wbg_get_msc4108intentdata_serverName: (a: number) => [number, number];
629
- export const __wbg_get_encryptioninfo_senderClaimedEd25519Key: (a: number) => [number, number];
630
- export const __wbg_get_outboundcreationresult_channel: (a: number) => number;
631
- export const keysuploadrequest_new: (a: any, b: any) => number;
632
- export const keysqueryrequest_new: (a: any, b: any) => number;
633
- export const __wbg_set_pickledsession_pickle: (a: number, b: number, c: number) => void;
634
- export const __wbg_set_pickledinboundgroupsession_senderSigningKey: (a: number, b: number, c: number) => void;
635
- export const __wbg_set_pickledsession_senderKey: (a: number, b: number, c: number) => void;
636
- export const __wbg_set_pickledinboundgroupsession_pickle: (a: number, b: number, c: number) => void;
637
- export const __wbg_set_basemigrationdata_pickledAccount: (a: number, b: number, c: number) => void;
638
- export const __wbg_set_pickledinboundgroupsession_senderKey: (a: number, b: number, c: number) => void;
639
- export const __wbg_set_msc4108intentdata_serverName: (a: number, b: number, c: number) => void;
640
- export const __wbg_set_msc4108intentdata_rendezvousUrl: (a: number, b: number, c: number) => void;
641
- export const __wbg_set_msc4388intentdata_rendezvousId: (a: number, b: number, c: number) => void;
642
- export const __wbg_set_msc4388intentdata_baseUrl: (a: number, b: number, c: number) => void;
643
- export const __wbg_set_encryptioninfo_senderCurve25519Key: (a: number, b: number, c: number) => void;
644
- export const __wbg_set_encryptioninfo_senderClaimedEd25519Key: (a: number, b: number, c: number) => void;
645
- export const __wbg_set_todeviceencryptioninfo_senderCurve25519Key: (a: number, b: number, c: number) => void;
646
- export const __wbg_set_base64encodedpkmessage_mac: (a: number, b: number, c: number) => void;
647
- export const __wbg_set_base64encodedpkmessage_ciphertext: (a: number, b: number, c: number) => void;
648
- export const __wbg_set_inboundcreationresult_message: (a: number, b: number, c: number) => void;
649
- export const __wbg_set_outboundcreationresult_initial_message: (a: number, b: number, c: number) => void;
650
- export const __wbg_servername_free: (a: number, b: number) => void;
651
- export const __wbg_eventid_free: (a: number, b: number) => void;
652
- export const __wbg_get_versions_git_description: (a: number) => any;
653
- export const __wbg_get_versions_vodozemac: (a: number) => any;
654
- export const __wbg_get_utdtodeviceevent_rawEvent: (a: number) => any;
655
- export const __wbg_get_plaintexttodeviceevent_rawEvent: (a: number) => any;
656
- export const __wbg_get_versions_git_sha: (a: number) => any;
657
- export const __wbg_get_todevicerequest_id: (a: number) => any;
658
- export const __wbg_get_versions_matrix_sdk_crypto: (a: number) => any;
659
- export const __wbg_get_todevicerequest_body: (a: number) => any;
660
- export const __wbg_get_keysclaimrequest_id: (a: number) => any;
661
- export const __wbg_get_todevicerequest_event_type: (a: number) => any;
662
- export const __wbg_keysqueryrequest_free: (a: number, b: number) => void;
663
- export const __wbg_get_keysqueryrequest_id: (a: number) => any;
664
- export const __wbg_get_keysqueryrequest_body: (a: number) => any;
665
- export const __wbg_get_todevicerequest_txn_id: (a: number) => any;
666
- export const __wbg_get_keysbackuprequest_id: (a: number) => any;
667
- export const __wbg_get_keysclaimrequest_body: (a: number) => any;
668
- export const __wbg_keysuploadrequest_free: (a: number, b: number) => void;
669
- export const __wbg_get_keysuploadrequest_id: (a: number) => any;
670
- export const __wbg_get_keysuploadrequest_body: (a: number) => any;
671
- export const __wbg_get_roommessagerequest_txn_id: (a: number) => any;
672
- export const __wbg_get_roommessagerequest_room_id: (a: number) => any;
673
- export const __wbg_get_roommessagerequest_id: (a: number) => any;
674
- export const __wbg_get_roommessagerequest_event_type: (a: number) => any;
675
- export const __wbg_get_signatureuploadrequest_body: (a: number) => any;
676
- export const __wbg_uploadsigningkeysrequest_free: (a: number, b: number) => void;
677
- export const __wbg_get_megolmdecryptionerror_description: (a: number) => any;
678
- export const __wbg_crosssigningstatus_free: (a: number, b: number) => void;
679
- export const __wbg_plaintexttodeviceevent_free: (a: number, b: number) => void;
680
- export const userid_toString: (a: number) => [number, number];
681
- export const __wbg_userid_free: (a: number, b: number) => void;
682
- export const roomid_toString: (a: number) => [number, number];
683
- export const eventid_toString: (a: number) => [number, number];
684
- export const __wbg_roomid_free: (a: number, b: number) => void;
685
- export const __wbg_outboundcreationresult_free: (a: number, b: number) => void;
686
- export const wasm_bindgen_ff9af61e2d43a78a___convert__closures_____invoke___wasm_bindgen_ff9af61e2d43a78a___JsValue__core_ed718c3d60ebd546___result__Result_____wasm_bindgen_ff9af61e2d43a78a___JsError___true_: (a: number, b: number, c: any) => [number, number];
687
- export const wasm_bindgen_ff9af61e2d43a78a___convert__closures_____invoke___wasm_bindgen_ff9af61e2d43a78a___JsValue__core_ed718c3d60ebd546___result__Result_____wasm_bindgen_ff9af61e2d43a78a___JsError___true__2: (a: number, b: number, c: any) => [number, number];
688
- export const wasm_bindgen_ff9af61e2d43a78a___convert__closures_____invoke___js_sys_8badcad5ae9f3759___Function_fn_wasm_bindgen_ff9af61e2d43a78a___JsValue_____wasm_bindgen_ff9af61e2d43a78a___sys__Undefined___js_sys_8badcad5ae9f3759___Function_fn_wasm_bindgen_ff9af61e2d43a78a___JsValue_____wasm_bindgen_ff9af61e2d43a78a___sys__Undefined_______true_: (a: number, b: number, c: any, d: any) => void;
689
- export const wasm_bindgen_ff9af61e2d43a78a___convert__closures_____invoke___web_sys_4ec35d1b8222c725___features__gen_Event__Event______true_: (a: number, b: number, c: any) => void;
690
- export const wasm_bindgen_ff9af61e2d43a78a___convert__closures_____invoke_______true_: (a: number, b: number) => void;
686
+ export const wasm_bindgen_49b719dbd852acb8___convert__closures_____invoke___js_sys_2784ec704a33ecc8___Function_fn_wasm_bindgen_49b719dbd852acb8___JsValue_____wasm_bindgen_49b719dbd852acb8___sys__Undefined___js_sys_2784ec704a33ecc8___Function_fn_wasm_bindgen_49b719dbd852acb8___JsValue_____wasm_bindgen_49b719dbd852acb8___sys__Undefined_______true_: (a: number, b: number, c: any, d: any) => void;
687
+ export const wasm_bindgen_49b719dbd852acb8___convert__closures_____invoke___wasm_bindgen_49b719dbd852acb8___JsValue__core_ed718c3d60ebd546___result__Result_____wasm_bindgen_49b719dbd852acb8___JsError___true_: (a: number, b: number, c: any) => [number, number];
688
+ export const wasm_bindgen_49b719dbd852acb8___convert__closures_____invoke___wasm_bindgen_49b719dbd852acb8___JsValue__core_ed718c3d60ebd546___result__Result_____wasm_bindgen_49b719dbd852acb8___JsError___true__590: (a: number, b: number, c: any) => [number, number];
689
+ export const wasm_bindgen_49b719dbd852acb8___convert__closures_____invoke___web_sys_fe02f73cbd69cc6___features__gen_Event__Event______true_: (a: number, b: number, c: any) => void;
690
+ export const wasm_bindgen_49b719dbd852acb8___convert__closures_____invoke_______true_: (a: number, b: number) => void;
691
691
  export const __wbindgen_malloc: (a: number, b: number) => number;
692
692
  export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
693
693
  export const __wbindgen_exn_store: (a: number) => void;
@@ -2,6 +2,97 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.25.0 - 2026-10-08
6
+
7
+ ### Highlights
8
+
9
+ - **Faster synchronous plugin captures:** 16% faster than pre-change main on a measured 6,000-file tree; the new `createRootFileCopyBatchSync` API on `advanced` also reuses directory admissions across copies. ([#878](https://github.com/openclaw/fs-safe/pull/878), [#849](https://github.com/openclaw/fs-safe/pull/849))
10
+ - **Guest workspace publication:** works on gVisor and other Linux filesystems that reject `RENAME_NOREPLACE`. ([#876](https://github.com/openclaw/fs-safe/pull/876))
11
+ - **Root-backed sidecar locks:** native asynchronous release and exit cleanup no longer strand locks after their Root moves. ([#879](https://github.com/openclaw/fs-safe/pull/879))
12
+ - **Guest cross-device moves:** preserve the admitted file permissions. ([#869](https://github.com/openclaw/fs-safe/pull/869))
13
+
14
+ ### Features
15
+
16
+ - **Guarded copy batches:** `createRootFileCopyBatchSync` on `advanced` reuses directory admissions across synchronous copies on canonical POSIX paths while rechecking ancestor and file identities for every copy; single-file copies also reuse admission within the operation. ([#849](https://github.com/openclaw/fs-safe/pull/849))
17
+
18
+ ### Fixes
19
+
20
+ - **Root-backed file locks:** native asynchronous release and exit cleanup follow the created lock's retained identity after its Root moves, preserving replacement files and reporting ownership mismatches. ([#879](https://github.com/openclaw/fs-safe/pull/879)) Thanks @axiom-ncis.
21
+ - **Temp directory diagnostics:** name rejected roots and ancestors, explain ownership, mode, or symlink failures, and provide safe recovery guidance, including for root-run appliances. Thanks @joequant. ([#877](https://github.com/openclaw/fs-safe/pull/877))
22
+ - **Guest directory publication:** publish staged workspaces when Linux filesystems reject `RENAME_NOREPLACE`, with checked file link/unlink fallback and directory rename that can only replace a concurrently created empty directory. ([#876](https://github.com/openclaw/fs-safe/pull/876)) Thanks @valkyriweb.
23
+ - **Guest cross-device moves:** preserve the admitted source file's permissions instead of leaving the destination with a broader default mode. ([#869](https://github.com/openclaw/fs-safe/pull/869))
24
+ - **Move receipts:** publication receipts capture the source identity after synchronous authorization callbacks return, so a source replaced during authorization is reported accurately. ([#868](https://github.com/openclaw/fs-safe/pull/868))
25
+ - **Atomic copy fallback:** report a failed restoration as a failure even when the underlying error carries a restored receipt. ([#851](https://github.com/openclaw/fs-safe/pull/851))
26
+ - **Archive read limits:** keep the validated entry-read byte limit fixed when callers mutate the options during a read. ([#852](https://github.com/openclaw/fs-safe/pull/852))
27
+ - **Watch on macOS:** reconcile notifications for changes to the watched Root itself immediately instead of waiting for the periodic scan. ([#858](https://github.com/openclaw/fs-safe/pull/858))
28
+ - **`pathScope` tilde names:** keep literal `~` directory names inside scoped file and existing-path lookups instead of expanding them. ([#856](https://github.com/openclaw/fs-safe/pull/856))
29
+
30
+ ### Performance
31
+
32
+ - **Guarded file copies:** reuse checked canonical POSIX roots during initial path admission, reducing repeated path-resolution work in synchronous plugin source captures without changing per-file identity or race checks.
33
+ - **Root walks:** reuse normalized directory prefixes, cutting a 50k-file walk by 5.6% and its sampled allocation by about 9% while keeping every filesystem and identity check. ([#870](https://github.com/openclaw/fs-safe/pull/870))
34
+ - **Atomic writes:** non-durable async POSIX writes skip a redundant mode change when the staged file already has the requested permissions. ([#871](https://github.com/openclaw/fs-safe/pull/871))
35
+ - **Guarded mutations:** fewer promise allocations around synchronous guard checks, with directory identity checks unchanged. ([#857](https://github.com/openclaw/fs-safe/pull/857))
36
+ - **Archive publication:** fewer promise allocations in archive guard checks, without removing identity or containment checks. ([#864](https://github.com/openclaw/fs-safe/pull/864))
37
+ - **Watch:** Linux and Windows watch passes skip macOS stream-path preparation. ([#860](https://github.com/openclaw/fs-safe/pull/860))
38
+ - **Permission diagnostics:** bound escaping work for large error messages without changing the displayed excerpts. ([#859](https://github.com/openclaw/fs-safe/pull/859))
39
+
40
+ ## 0.24.2 - 2026-10-07
41
+
42
+ ### Fixes
43
+
44
+ - **Linux exclusive publication:** `publishFileExclusive` with `rename-noreplace` uses the identity-checked link/unlink move fallback in native `auto` when `RENAME_NOREPLACE` is unsupported, consumes the source on success, and reports `fallback: "link-unlink"` plus precise partial-failure receipts; native `require` stays fail-closed. Link/unlink is not crash-atomic. ([#843](https://github.com/openclaw/fs-safe/pull/843), [openclaw#166246](https://github.com/openclaw/openclaw/issues/166246)) Thanks @MertBasar0.
45
+ - **Native clone descriptors:** native file copies return read-write descriptors, so Linux clones can be read immediately and macOS clones can be written while preserving read-only source modes. ([#844](https://github.com/openclaw/fs-safe/pull/844))
46
+
47
+ ## 0.24.1 - 2026-10-06
48
+
49
+ ### Features
50
+
51
+ - **Pinned source copies:** `copyRootFileSync` accepts `expectedSourceIdentity` to reject a replaced source before destination creation and returns the verified `sourceIdentity` for every copy method. This refines the `copyRootFileSync` API introduced in 0.24.0. ([#841](https://github.com/openclaw/fs-safe/pull/841))
52
+
53
+ ## 0.24.0 - 2026-10-06
54
+
55
+ ### Highlights
56
+
57
+ - **No-replace moves on more Linux filesystems:** when filesystems reject `renameat2` with `RENAME_NOREPLACE`, including reported QNAP ZFS shares and some overlay mounts, `auto` falls back safely: directories use plain rename that can at most replace an empty directory, and files use identity-checked link/unlink that cannot overwrite a target. Native `require` fails closed. ([#838](https://github.com/openclaw/fs-safe/pull/838), fixes [openclaw#165617](https://github.com/openclaw/openclaw/issues/165617)) Thanks @StarGazer1995, original reporter @bbs2i58, and @MertBasar0.
58
+ - **Synchronous guarded copies:** new `copyRootFileSync` on `advanced` supports APFS cloning, reflinks, `copy_file_range`, and guarded byte fallback, returning an owned destination descriptor for synchronous capture hashes. ([#839](https://github.com/openclaw/fs-safe/pull/839))
59
+ - **Public capability classification:** new `isNoReplaceUnsupported(error)` identifies unavailable no-replace rename support without matching internal native error codes. ([#838](https://github.com/openclaw/fs-safe/pull/838))
60
+
61
+ ### Features
62
+
63
+ - **Synchronous root-to-root copy:** `copyRootFileSync` exclusively creates an absent destination under its admitted root, bounds the copy with `maxBytes`, verifies source and destination identities, and returns a disposable descriptor with copy-method and byte-count receipts. ([#839](https://github.com/openclaw/fs-safe/pull/839))
64
+ - **No-replace error classifier:** export `isNoReplaceUnsupported(error)` from the root package and `errors` subpath for stable `helper-unavailable` capability diagnostics. ([#838](https://github.com/openclaw/fs-safe/pull/838))
65
+
66
+ ### Fixes
67
+
68
+ - **Linux no-replace moves:** `Root.move()` uses retained-parent file link/unlink or directory rename when `RENAME_NOREPLACE` is unsupported in `auto`, rejects file collisions, and preserves publication/source-removal details after partial failures. ([#838](https://github.com/openclaw/fs-safe/pull/838)) Thanks @StarGazer1995, @bbs2i58, and @MertBasar0.
69
+
70
+ ### Performance
71
+
72
+ - **Synchronous copy acceleration:** reuse the native bounded copy engine for APFS clones, Linux reflinks, and `copy_file_range` before byte copying when `copyRootFileSync` is called with `clone: "auto"`. ([#839](https://github.com/openclaw/fs-safe/pull/839))
73
+
74
+ ### Compatibility
75
+
76
+ - **Move fallback limits:** native `require` keeps refusing unsupported no-replace moves. In `auto`, the directory fallback can replace a concurrently created empty directory; nonempty directories and non-directory competitors reject. File fallback requires hard-link support and fails closed if links are denied or unsupported. ([#838](https://github.com/openclaw/fs-safe/pull/838))
77
+ - **Synchronous copy contract:** `copyRootFileSync` defaults to `clone: "never"`, requires existing parents and an absent destination, and performs direct exclusive creation. Use a private capture directory; it does not promise atomic publication, crash durability, or a coherent snapshot of concurrent in-place edits. ([#839](https://github.com/openclaw/fs-safe/pull/839))
78
+
79
+ ## 0.23.1 - 2026-10-04
80
+
81
+ ### Highlights
82
+
83
+ - **gVisor and 9p file creation:** `create()` and other no-replace publication fall back in `auto` mode on filesystems that reject `renameat2` with `RENAME_NOREPLACE`; `require` mode fails closed. ([#834](https://github.com/openclaw/fs-safe/pull/834), fixes [#828](https://github.com/openclaw/fs-safe/issues/828)) Thanks @vishnukool.
84
+ - **Container copy compatibility:** seccomp or LSM policies denying `FICLONE` no longer break `clone: "auto"` copies, for both single files and `copyTree`. ([#829](https://github.com/openclaw/fs-safe/pull/829), [#835](https://github.com/openclaw/fs-safe/pull/835)) Thanks @Mohl, with co-author credit to @foxsky.
85
+ - **macOS watching:** a FIFO at a watched name no longer freezes watching across the process. ([#830](https://github.com/openclaw/fs-safe/pull/830)) Thanks @SebTardif.
86
+
87
+ ### Fixes
88
+
89
+ - **gVisor file creation:** fall back safely when the filesystem rejects native no-replace publication, clean unpublished stages, and report the missing capability in native-required mode. ([#834](https://github.com/openclaw/fs-safe/pull/834)) Thanks @vishnukool.
90
+ - **ZIP collision checks:** reject directory and file names that differ only by case, Unicode normalization, or a trailing separator before extraction or bounded reads. ([#832](https://github.com/openclaw/fs-safe/pull/832)) Thanks @SebTardif.
91
+ - **macOS entry watch:** prevent a FIFO at a watched name from blocking every watcher in the process. ([#830](https://github.com/openclaw/fs-safe/pull/830)) Thanks @SebTardif.
92
+ - **Disk-full diagnostics:** preserve disk-full (`ENOSPC`) diagnostics and cleanup receipts through combined write and disposal failures instead of reporting a misleading file-type error. ([#833](https://github.com/openclaw/fs-safe/pull/833)) Thanks @steipete.
93
+ - **Linux clone fallback:** copies with `clone: "auto"` fall back to guarded byte copying when container seccomp or LSM policy denies `FICLONE`; `clone: "always"` reports `unsupported-platform` and removes its stage. ([#829](https://github.com/openclaw/fs-safe/pull/829)) Thanks @Mohl, with co-author credit to @foxsky.
94
+ - **Linux tree clone fallback:** `copyTree` with `clone: "auto"` copies bytes when XFS/ZFS file reflinks are unavailable or denied by container policy; `"always"` reports `unsupported-platform` after partial-tree cleanup. ([#835](https://github.com/openclaw/fs-safe/pull/835)) Thanks @steipete.
95
+
5
96
  ## 0.23.0 - 2026-10-02
6
97
 
7
98
  ### Highlights
@@ -22,7 +22,7 @@ await fs.write("../escape.txt", "x"); // throws FsSafeError("outside-
22
22
 
23
23
  That's the whole pitch. `root()` is the product; the rest of the package — JSON stores, atomic writes, secret files, archive extraction, temp workspaces — is supporting cast for the same boundary.
24
24
 
25
- Full docs and reference at **[fs-safe.io](https://fs-safe.io)**.
25
+ Full docs and reference at **[fs-safe.io](https://fs-safe.io)**. For synchronous plugin captures, [guarded file copies and batches](docs/copy.md#synchronous-guarded-file-copies) return owned destination descriptors while preserving per-file checks.
26
26
 
27
27
  ## Contents
28
28
 
@@ -1,3 +1,4 @@
1
+ export { copyRootFileSync, createRootFileCopyBatchSync, type RootFileCopyBatchSync, type CopyRootFileSyncOptions, type CopiedRootFileSync } from "./copy-root-file-sync.js";
1
2
  export { createAsyncLock } from "./async-lock.js";
2
3
  export { createDirectory, createDirectorySync, createFileSync, type CreateDirectoryOptions, type CreateFileOptions, type OwnedFileDescriptorSync, } from "./create.js";
3
4
  export { copyFileHandle, copyFileDescriptorSync, type CopyFileHandleOptions } from "./file-handle-transfer.js";
@@ -1,3 +1,4 @@
1
+ export { copyRootFileSync, createRootFileCopyBatchSync } from "./copy-root-file-sync.js";
1
2
  // Advanced composition surface. These exports are less stable than the focused
2
3
  // public subpaths; prefer root/json/store/temp/archive unless you are building a
3
4
  // higher-level primitive.
@@ -65,7 +65,7 @@ export async function finalizeArchivePublication(params) {
65
65
  const check = () => params.deadline?.check();
66
66
  const assertGuards = async (guards) => {
67
67
  for (const guard of [params.destinationGuard, ...guards, params.sourceGuard]) {
68
- await assertDirectoryIdentityGuard(guard);
68
+ assertDirectoryIdentityGuard(guard);
69
69
  check();
70
70
  }
71
71
  };
@@ -63,13 +63,17 @@ export function stripArchivePath(entryPath, stripComponents) {
63
63
  export function createArchiveOutputPathTracker() {
64
64
  const seen = new Set();
65
65
  return (entryPath, originalPath) => {
66
- const normalized = path.posix.normalize(normalizeArchiveEntryPath(entryPath));
66
+ // Extraction passes stripArchivePath output. Native manifests and physical
67
+ // admission pass raw names, and path.posix.normalize keeps a directory's
68
+ // trailing slash, so "A/" and "a" would not share a key.
69
+ const canonical = stripArchivePath(entryPath, 0)
70
+ ?? path.posix.normalize(normalizeArchiveEntryPath(entryPath));
67
71
  // Archive policy must not depend on the destination volume's case or
68
72
  // Unicode-normalization behavior. Otherwise the JavaScript and native
69
73
  // writers can disagree about which of two colliding entries wins.
70
- const collisionKey = lowerCaseNfc(normalized);
74
+ const collisionKey = lowerCaseNfc(canonical);
71
75
  if (seen.has(collisionKey)) {
72
- throw new ArchiveSecurityError("entry-path", `archive entries collide at output path ${formatErrorDetail(normalized)}: ${formatErrorDetail(originalPath)}`);
76
+ throw new ArchiveSecurityError("entry-path", `archive entries collide at output path ${formatErrorDetail(canonical)}: ${formatErrorDetail(originalPath)}`);
73
77
  }
74
78
  seen.add(collisionKey);
75
79
  };
@@ -98,15 +98,15 @@ async function mergeTree(params, publication, durable = true, entryUmask = 0) {
98
98
  assertSourceDirectory(ancestor);
99
99
  };
100
100
  const assertGuards = async () => {
101
- await assertDirectoryIdentityGuard(destinationGuard);
101
+ assertDirectoryIdentityGuard(destinationGuard);
102
102
  check();
103
103
  for (const ancestor of ancestors) {
104
- await assertDirectoryIdentityGuard(ancestor.guard);
104
+ assertDirectoryIdentityGuard(ancestor.guard);
105
105
  check();
106
106
  await ancestor.owner.verify(check);
107
107
  check();
108
108
  }
109
- await assertDirectoryIdentityGuard(sourceGuard);
109
+ assertDirectoryIdentityGuard(sourceGuard);
110
110
  check();
111
111
  };
112
112
  const walk = async (sourceDir) => {
@@ -184,7 +184,7 @@ async function mergeTree(params, publication, durable = true, entryUmask = 0) {
184
184
  await owner.apply(mode, { check, beforeChmod: async () => {
185
185
  await assertGuards();
186
186
  assertSourceAncestors();
187
- await assertDirectoryIdentityGuard(guard);
187
+ assertDirectoryIdentityGuard(guard);
188
188
  check();
189
189
  await assertResolvedInsideDestination({
190
190
  destinationRealDir, targetPath: destinationPath, originalPath,
@@ -213,7 +213,8 @@ async function readNativeBufferEntry(native, buffer, kind, requested, displayPat
213
213
  }
214
214
  }
215
215
  export async function readArchiveEntry(archivePath, entryPath, options) {
216
- if (!Number.isSafeInteger(options.maxBytes) || options.maxBytes < 0) {
216
+ const maxBytes = options.maxBytes;
217
+ if (!Number.isSafeInteger(maxBytes) || maxBytes < 0) {
217
218
  throw new RangeError("maxBytes must be a non-negative safe integer");
218
219
  }
219
220
  const kind = options.kind ?? resolveArchiveKind(archivePath);
@@ -228,7 +229,7 @@ export async function readArchiveEntry(archivePath, entryPath, options) {
228
229
  admitZipBuffer(buffer, resolveExtractLimits(), entry => { zipEntries.push(entry); });
229
230
  const native = getNativeBinding();
230
231
  if (native)
231
- return await readNativeBufferEntry(native, buffer, kind, requestedEntry, entryPath, options.maxBytes, zipEntries);
232
- return kind === "zip" ? await readZipEntry(buffer, requestedEntry, options.maxBytes, zipEntries)
233
- : await readTarEntry(buffer, requestedEntry, options.maxBytes, kind);
232
+ return await readNativeBufferEntry(native, buffer, kind, requestedEntry, entryPath, maxBytes, zipEntries);
233
+ return kind === "zip" ? await readZipEntry(buffer, requestedEntry, maxBytes, zipEntries)
234
+ : await readTarEntry(buffer, requestedEntry, maxBytes, kind);
234
235
  }
@@ -5,7 +5,7 @@ import { ArchiveSecurityError } from "./archive-errors.js";
5
5
  export type ArchiveDirectoryGuard = AsyncDirectoryGuard<BigIntStats>;
6
6
  export declare function createArchiveSymlinkTraversalError(originalPath: string): ArchiveSecurityError;
7
7
  export declare function createDirectoryIdentityGuard(dir: string): Promise<ArchiveDirectoryGuard>;
8
- export declare function assertDirectoryIdentityGuard(guard: ArchiveDirectoryGuard): Promise<void>;
8
+ export declare function assertDirectoryIdentityGuard(guard: ArchiveDirectoryGuard): void;
9
9
  export declare function prepareArchiveDestinationGuard(destDir: string): Promise<ArchiveDirectoryGuard>;
10
10
  export declare function prepareArchiveDestinationDir(destDir: string): Promise<string>;
11
11
  export declare function assertResolvedInsideDestination(params: {