@openclaw/matrix 2026.10.1 → 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 (271) 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 +35 -0
  74. package/node_modules/@openclaw/fs-safe/README.md +1 -1
  75. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +1 -1
  76. package/node_modules/@openclaw/fs-safe/dist/advanced.js +1 -1
  77. package/node_modules/@openclaw/fs-safe/dist/archive-durability.js +1 -1
  78. package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +4 -4
  79. package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
  80. package/node_modules/@openclaw/fs-safe/dist/archive-read.js +5 -4
  81. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +1 -1
  82. package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +22 -38
  83. package/node_modules/@openclaw/fs-safe/dist/copy-path-admission.d.ts +17 -0
  84. package/node_modules/@openclaw/fs-safe/dist/copy-path-admission.js +117 -0
  85. package/node_modules/@openclaw/fs-safe/dist/copy-root-file-sync.d.ts +8 -5
  86. package/node_modules/@openclaw/fs-safe/dist/copy-root-file-sync.js +27 -50
  87. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.d.ts +3 -0
  88. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.js +57 -11
  89. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.js +5 -5
  90. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +52 -5
  91. package/node_modules/@openclaw/fs-safe/dist/guest.js +1 -1
  92. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +1 -0
  93. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts +0 -1
  94. package/node_modules/@openclaw/fs-safe/dist/native-operations.js +22 -26
  95. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.js +5 -1
  96. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +4 -1
  97. package/node_modules/@openclaw/fs-safe/dist/permission-exec.js +2 -1
  98. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts +6 -1
  99. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.js +2 -2
  100. package/node_modules/@openclaw/fs-safe/dist/publish-file.js +34 -7
  101. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +1 -4
  102. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.js +6 -0
  103. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts +15 -1
  104. package/node_modules/@openclaw/fs-safe/dist/root-create-input.js +4 -0
  105. package/node_modules/@openclaw/fs-safe/dist/root-directory-entry.js +1 -1
  106. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +0 -1
  107. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +6 -12
  108. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +15 -15
  109. package/node_modules/@openclaw/fs-safe/dist/root-paths.js +1 -1
  110. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +4 -4
  111. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.d.ts +10 -1
  112. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.js +20 -0
  113. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.js +19 -7
  114. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +25 -3
  115. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission.d.ts +2 -0
  116. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-retained.d.ts +14 -0
  117. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-retained.js +187 -0
  118. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +15 -1
  119. package/node_modules/@openclaw/fs-safe/dist/temp-directory-diagnostics.d.ts +10 -0
  120. package/node_modules/@openclaw/fs-safe/dist/temp-directory-diagnostics.js +29 -0
  121. package/node_modules/@openclaw/fs-safe/dist/temp-target.js +1 -1
  122. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +6 -6
  123. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +4 -4
  124. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +17 -16
  125. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +20 -28
  126. package/node_modules/@openclaw/fs-safe/dist/walk.js +2 -13
  127. package/node_modules/@openclaw/fs-safe/dist/watch-native.d.ts +2 -2
  128. package/node_modules/@openclaw/fs-safe/dist/watch-native.js +3 -1
  129. package/node_modules/@openclaw/fs-safe/dist/watch-rescan.js +3 -9
  130. package/node_modules/@openclaw/fs-safe/dist/watch.js +2 -3
  131. package/node_modules/@openclaw/fs-safe/docs/advanced.md +1 -1
  132. package/node_modules/@openclaw/fs-safe/docs/archive.md +3 -0
  133. package/node_modules/@openclaw/fs-safe/docs/atomic.md +11 -3
  134. package/node_modules/@openclaw/fs-safe/docs/contributing.md +1 -1
  135. package/node_modules/@openclaw/fs-safe/docs/copy.md +48 -0
  136. package/node_modules/@openclaw/fs-safe/docs/guest.md +21 -4
  137. package/node_modules/@openclaw/fs-safe/docs/path-scope.md +4 -0
  138. package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +46 -8
  139. package/node_modules/@openclaw/fs-safe/docs/temp.md +12 -0
  140. package/node_modules/@openclaw/fs-safe/docs/watch.md +3 -2
  141. package/node_modules/@openclaw/fs-safe/package.json +15 -15
  142. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  143. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +1 -1
  144. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  145. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +1 -1
  146. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  147. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +1 -1
  148. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  149. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +1 -1
  150. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  151. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +1 -1
  152. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  153. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +1 -1
  154. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  155. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +1 -1
  156. package/node_modules/music-metadata/README.md +35 -32
  157. package/node_modules/music-metadata/lib/ParserFactory.d.ts +1 -1
  158. package/node_modules/music-metadata/lib/ParserFactory.js +17 -13
  159. package/node_modules/music-metadata/lib/aiff/AiffParser.js +19 -12
  160. package/node_modules/music-metadata/lib/aiff/AiffToken.d.ts +1 -1
  161. package/node_modules/music-metadata/lib/aiff/AiffToken.js +2 -1
  162. package/node_modules/music-metadata/lib/apev2/APEv2Parser.d.ts +4 -3
  163. package/node_modules/music-metadata/lib/apev2/APEv2Parser.js +59 -16
  164. package/node_modules/music-metadata/lib/apev2/APEv2TagMapper.js +1 -0
  165. package/node_modules/music-metadata/lib/apev2/APEv2Token.d.ts +1 -1
  166. package/node_modules/music-metadata/lib/apev2/APEv2Token.js +1 -1
  167. package/node_modules/music-metadata/lib/asf/AsfGuid.js +56 -50
  168. package/node_modules/music-metadata/lib/asf/AsfObject.d.ts +1 -1
  169. package/node_modules/music-metadata/lib/asf/AsfObject.js +3 -2
  170. package/node_modules/music-metadata/lib/asf/AsfParser.js +15 -7
  171. package/node_modules/music-metadata/lib/asf/AsfTagMapper.d.ts +3 -2
  172. package/node_modules/music-metadata/lib/asf/AsfTagMapper.js +21 -4
  173. package/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.d.ts +1 -1
  174. package/node_modules/music-metadata/lib/common/CombinedTagMapper.d.ts +2 -2
  175. package/node_modules/music-metadata/lib/common/CombinedTagMapper.js +6 -6
  176. package/node_modules/music-metadata/lib/common/FourCC.js +3 -2
  177. package/node_modules/music-metadata/lib/common/GenericTagMapper.d.ts +1 -1
  178. package/node_modules/music-metadata/lib/common/GenericTagTypes.js +1 -1
  179. package/node_modules/music-metadata/lib/common/MetadataCollector.d.ts +3 -1
  180. package/node_modules/music-metadata/lib/common/MetadataCollector.js +28 -9
  181. package/node_modules/music-metadata/lib/common/Util.js +25 -17
  182. package/node_modules/music-metadata/lib/core.d.ts +4 -4
  183. package/node_modules/music-metadata/lib/core.js +18 -11
  184. package/node_modules/music-metadata/lib/dsdiff/DsdiffParser.js +29 -16
  185. package/node_modules/music-metadata/lib/dsf/DsfChunk.d.ts +1 -1
  186. package/node_modules/music-metadata/lib/dsf/DsfParser.js +3 -5
  187. package/node_modules/music-metadata/lib/ebml/EbmlIterator.d.ts +1 -1
  188. package/node_modules/music-metadata/lib/ebml/EbmlIterator.js +35 -6
  189. package/node_modules/music-metadata/lib/ebml/types.d.ts +1 -1
  190. package/node_modules/music-metadata/lib/ebml/types.js +1 -1
  191. package/node_modules/music-metadata/lib/flac/FlacParser.d.ts +1 -1
  192. package/node_modules/music-metadata/lib/flac/FlacParser.js +6 -5
  193. package/node_modules/music-metadata/lib/flac/FlacToken.d.ts +1 -1
  194. package/node_modules/music-metadata/lib/flac/FlacToken.js +1 -1
  195. package/node_modules/music-metadata/lib/id3v1/ID3v1Parser.d.ts +1 -1
  196. package/node_modules/music-metadata/lib/id3v1/ID3v1Parser.js +212 -42
  197. package/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.js +5 -5
  198. package/node_modules/music-metadata/lib/id3v2/FrameHeader.d.ts +1 -1
  199. package/node_modules/music-metadata/lib/id3v2/FrameHeader.js +8 -5
  200. package/node_modules/music-metadata/lib/id3v2/FrameParser.d.ts +2 -1
  201. package/node_modules/music-metadata/lib/id3v2/FrameParser.js +54 -23
  202. package/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.d.ts +1 -1
  203. package/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js +1 -1
  204. package/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js +3 -3
  205. package/node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.js +2 -2
  206. package/node_modules/music-metadata/lib/id3v2/ID3v2Parser.d.ts +1 -1
  207. package/node_modules/music-metadata/lib/id3v2/ID3v2Parser.js +32 -16
  208. package/node_modules/music-metadata/lib/id3v2/ID3v2Token.d.ts +2 -2
  209. package/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +2 -3
  210. package/node_modules/music-metadata/lib/index.js +6 -3
  211. package/node_modules/music-metadata/lib/lrc/LyricsParser.js +3 -5
  212. package/node_modules/music-metadata/lib/matroska/MatroskaDtd.js +7 -3
  213. package/node_modules/music-metadata/lib/matroska/MatroskaParser.js +22 -11
  214. package/node_modules/music-metadata/lib/matroska/types.d.ts +2 -2
  215. package/node_modules/music-metadata/lib/mp4/Atom.d.ts +4 -3
  216. package/node_modules/music-metadata/lib/mp4/Atom.js +44 -11
  217. package/node_modules/music-metadata/lib/mp4/AtomToken.d.ts +1 -1
  218. package/node_modules/music-metadata/lib/mp4/AtomToken.js +30 -8
  219. package/node_modules/music-metadata/lib/mp4/MP4Parser.d.ts +2 -0
  220. package/node_modules/music-metadata/lib/mp4/MP4Parser.js +79 -54
  221. package/node_modules/music-metadata/lib/mp4/MP4TagMapper.d.ts +2 -2
  222. package/node_modules/music-metadata/lib/mpeg/MpegLoader.js +1 -1
  223. package/node_modules/music-metadata/lib/mpeg/MpegParser.js +41 -19
  224. package/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.d.ts +2 -2
  225. package/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.js +1 -1
  226. package/node_modules/music-metadata/lib/mpeg/XingTag.d.ts +1 -1
  227. package/node_modules/music-metadata/lib/musepack/MusepackParser.js +2 -2
  228. package/node_modules/music-metadata/lib/musepack/sv7/BitReader.js +1 -1
  229. package/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js +4 -3
  230. package/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js +3 -3
  231. package/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js +7 -5
  232. package/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js +2 -2
  233. package/node_modules/music-metadata/lib/ogg/OggParser.js +23 -13
  234. package/node_modules/music-metadata/lib/ogg/OggToken.d.ts +2 -0
  235. package/node_modules/music-metadata/lib/ogg/OggToken.js +1 -1
  236. package/node_modules/music-metadata/lib/ogg/flac/FlacStream.d.ts +2 -2
  237. package/node_modules/music-metadata/lib/ogg/flac/FlacStream.js +2 -2
  238. package/node_modules/music-metadata/lib/ogg/opus/OpusStream.d.ts +2 -2
  239. package/node_modules/music-metadata/lib/ogg/opus/OpusStream.js +8 -4
  240. package/node_modules/music-metadata/lib/ogg/speex/SpeexStream.d.ts +2 -2
  241. package/node_modules/music-metadata/lib/ogg/speex/SpeexStream.js +2 -1
  242. package/node_modules/music-metadata/lib/ogg/theora/TheoraStream.d.ts +2 -2
  243. package/node_modules/music-metadata/lib/ogg/vorbis/Vorbis.d.ts +1 -1
  244. package/node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.js +1 -1
  245. package/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.d.ts +4 -3
  246. package/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.js +16 -9
  247. package/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js +4 -0
  248. package/node_modules/music-metadata/lib/riff/RiffChunk.d.ts +3 -1
  249. package/node_modules/music-metadata/lib/riff/RiffChunk.js +3 -2
  250. package/node_modules/music-metadata/lib/riff/RiffInfoTagMap.d.ts +1 -1
  251. package/node_modules/music-metadata/lib/type.d.ts +3 -3
  252. package/node_modules/music-metadata/lib/type.js +1 -1
  253. package/node_modules/music-metadata/lib/wav/WaveChunk.d.ts +1 -1
  254. package/node_modules/music-metadata/lib/wav/WaveChunk.js +3 -2
  255. package/node_modules/music-metadata/lib/wav/WaveParser.d.ts +6 -2
  256. package/node_modules/music-metadata/lib/wav/WaveParser.js +75 -22
  257. package/node_modules/music-metadata/lib/wavpack/WavPackParser.js +22 -13
  258. package/node_modules/music-metadata/lib/wavpack/WavPackToken.js +3 -2
  259. package/node_modules/music-metadata/package.json +3 -2
  260. package/package.json +7 -7
  261. package/dist/.setup/accounts-C_r0UlEm.mjs +0 -138
  262. package/dist/.setup/config-update-CZndPxNd.mjs +0 -102
  263. package/dist/.setup/profile-DS0xdJAi.mjs +0 -80
  264. package/dist/.setup/setup-core-6DppLENo.mjs +0 -377
  265. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.d.ts +0 -17
  266. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.js +0 -66
  267. package/node_modules/@openclaw/fs-safe/dist/publish-file-native.d.ts +0 -4
  268. package/node_modules/@openclaw/fs-safe/dist/publish-file-native.js +0 -35
  269. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts +0 -7
  270. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.js +0 -16
  271. package/dist/.setup/{errors-DKVS3_DO.mjs → errors-Bw4EHwKX.mjs} +1 -1
@@ -18,12 +18,14 @@ const vorbisTagMap = {
18
18
  ORIGINALYEAR: 'originalyear',
19
19
  RELEASEDATE: 'releasedate',
20
20
  COMMENT: 'comment',
21
+ DESCRIPTION: 'comment',
21
22
  TRACKNUMBER: 'track',
22
23
  DISCNUMBER: 'disk',
23
24
  GENRE: 'genre',
24
25
  METADATA_BLOCK_PICTURE: 'picture',
25
26
  COMPOSER: 'composer',
26
27
  LYRICS: 'lyrics',
28
+ UNSYNCEDLYRICS: 'lyrics',
27
29
  ALBUMSORT: 'albumsort',
28
30
  TITLESORT: 'titlesort',
29
31
  WORK: 'work',
@@ -41,6 +43,8 @@ const vorbisTagMap = {
41
43
  DJMIXER: 'djmixer',
42
44
  MIXER: 'mixer',
43
45
  LABEL: 'label',
46
+ ORGANIZATION: 'label',
47
+ PUBLISHER: 'label',
44
48
  GROUPING: 'grouping',
45
49
  SUBTITLE: 'subtitle',
46
50
  DISCSUBTITLE: 'discsubtitle',
@@ -1,3 +1,4 @@
1
+ import type { SupportedEncoding } from '@borewit/text-codec';
1
2
  import type { IGetToken } from 'strtok3';
2
3
  import type { IChunkHeader } from '../iff/index.js';
3
4
  export type { IChunkHeader } from '../iff/index.js';
@@ -9,8 +10,9 @@ export declare const Header: IGetToken<IChunkHeader>;
9
10
  * Token to parse RIFF-INFO tag value
10
11
  */
11
12
  export declare class ListInfoTagValue implements IGetToken<string> {
13
+ private readonly encoding;
12
14
  len: number;
13
15
  private tagHeader;
14
- constructor(tagHeader: IChunkHeader);
16
+ constructor(tagHeader: IChunkHeader, encoding?: SupportedEncoding);
15
17
  get(buf: Uint8Array, off: number): string;
16
18
  }
@@ -17,12 +17,13 @@ export const Header = {
17
17
  * Token to parse RIFF-INFO tag value
18
18
  */
19
19
  export class ListInfoTagValue {
20
- constructor(tagHeader) {
20
+ constructor(tagHeader, encoding = 'latin1') {
21
+ this.encoding = encoding;
21
22
  this.tagHeader = tagHeader;
22
23
  this.len = tagHeader.chunkSize;
23
24
  this.len += this.len & 1; // if it is an odd length, round up to even
24
25
  }
25
26
  get(buf, off) {
26
- return new Token.StringType(this.tagHeader.chunkSize, 'utf8').get(buf, off);
27
+ return new Token.StringType(this.tagHeader.chunkSize, this.encoding).get(buf, off).split('\0', 1)[0];
27
28
  }
28
29
  }
@@ -1,5 +1,5 @@
1
- import type { INativeTagMap } from '../common/GenericTagTypes.js';
2
1
  import { CommonTagMapper } from '../common/GenericTagMapper.js';
2
+ import type { INativeTagMap } from '../common/GenericTagTypes.js';
3
3
  /**
4
4
  * RIFF Info Tags; part of the EXIF 2.3
5
5
  * Ref: http://owl.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info
@@ -1,9 +1,9 @@
1
- import type { TagType } from './common/GenericTagTypes.js';
2
1
  import type { IFooter } from './apev2/APEv2Token.js';
3
- import type { TrackType } from './matroska/types.js';
2
+ import type { TagType } from './common/GenericTagTypes.js';
4
3
  import type { LyricsContentType, TimestampFormat } from './id3v2/ID3v2Token.js';
5
- export { TrackType, TrackTypeValueToKeyMap } from './matroska/types.js';
4
+ import type { TrackType } from './matroska/types.js';
6
5
  export { LyricsContentType, TimestampFormat } from './id3v2/ID3v2Token.js';
6
+ export { TrackType, TrackTypeValueToKeyMap } from './matroska/types.js';
7
7
  export type AnyTagValue = unknown;
8
8
  /**
9
9
  * Attached picture, typically used for cover art
@@ -1,2 +1,2 @@
1
- export { TrackType, TrackTypeValueToKeyMap } from './matroska/types.js';
2
1
  export { LyricsContentType, TimestampFormat } from './id3v2/ID3v2Token.js';
2
+ export { TrackType, TrackTypeValueToKeyMap } from './matroska/types.js';
@@ -37,7 +37,7 @@ export declare const WaveFormat: {
37
37
  MPEG: number;
38
38
  MPEGLAYER3: number;
39
39
  };
40
- export type WaveFormat = typeof WaveFormat[keyof typeof WaveFormat];
40
+ export type WaveFormat = (typeof WaveFormat)[keyof typeof WaveFormat];
41
41
  export declare const WaveFormatNameMap: {
42
42
  [WaveFormat.PCM]: string;
43
43
  [WaveFormat.ADPCM]: string;
@@ -16,7 +16,7 @@ export const WaveFormat = {
16
16
  // MPEG-4 and AAC Audio Types
17
17
  MPEG_ADTS_AAC: 0x1600,
18
18
  MPEG_LOAS: 0x1602,
19
- RAW_AAC1: 0x00FF,
19
+ RAW_AAC1: 0x00ff,
20
20
  // Dolby Audio Types
21
21
  DOLBY_AC3_SPDIF: 0x0092,
22
22
  DVM: 0x2000,
@@ -53,8 +53,9 @@ export const WaveFormatNameMap = {
53
53
  */
54
54
  export class Format {
55
55
  constructor(header) {
56
- if (header.chunkSize < 16)
56
+ if (header.chunkSize < 16) {
57
57
  throw new WaveContentError('Invalid chunk size');
58
+ }
58
59
  this.len = header.chunkSize;
59
60
  }
60
61
  get(buf, off) {
@@ -1,5 +1,5 @@
1
- import * as riff from '../riff/RiffChunk.js';
2
1
  import { BasicParser } from '../common/BasicParser.js';
2
+ import * as riff from '../riff/RiffChunk.js';
3
3
  /**
4
4
  * Resource Interchange File Format (RIFF) Parser
5
5
  *
@@ -12,6 +12,8 @@ import { BasicParser } from '../common/BasicParser.js';
12
12
  * ToDo: Split WAVE part from RIFF parser
13
13
  */
14
14
  export declare class WaveParser extends BasicParser {
15
+ private codePage;
16
+ private readonly pendingInfoTags;
15
17
  private fact;
16
18
  private blockAlign;
17
19
  private avgBytesPerSec;
@@ -21,5 +23,7 @@ export declare class WaveParser extends BasicParser {
21
23
  readWaveChunk(remaining: number): Promise<void>;
22
24
  parseListTag(listHeader: riff.IChunkHeader): Promise<void>;
23
25
  private parseRiffInfoTags;
24
- private addTag;
26
+ private addInfoTag;
27
+ private flushInfoTags;
28
+ private getInfoEncoding;
25
29
  }
@@ -1,13 +1,12 @@
1
+ import initDebug from 'debug';
1
2
  import * as strtok3 from 'strtok3';
2
3
  import * as Token from 'token-types';
3
- import initDebug from 'debug';
4
- import * as riff from '../riff/RiffChunk.js';
5
- import * as WaveChunk from './WaveChunk.js';
6
- import { ID3v2Parser } from '../id3v2/ID3v2Parser.js';
7
- import * as util from '../common/Util.js';
8
- import { FourCcToken } from '../common/FourCC.js';
9
4
  import { BasicParser } from '../common/BasicParser.js';
5
+ import { FourCcToken } from '../common/FourCC.js';
6
+ import { ID3v2Parser } from '../id3v2/ID3v2Parser.js';
7
+ import * as riff from '../riff/RiffChunk.js';
10
8
  import { BroadcastAudioExtensionChunk } from './BwfChunk.js';
9
+ import * as WaveChunk from './WaveChunk.js';
11
10
  import { WaveContentError } from './WaveChunk.js';
12
11
  const debug = initDebug('music-metadata:parser:RIFF');
13
12
  /**
@@ -24,20 +23,23 @@ const debug = initDebug('music-metadata:parser:RIFF');
24
23
  export class WaveParser extends BasicParser {
25
24
  constructor() {
26
25
  super(...arguments);
26
+ this.pendingInfoTags = [];
27
27
  this.blockAlign = 0;
28
28
  this.avgBytesPerSec = 0;
29
29
  }
30
30
  async parse() {
31
31
  const riffHeader = await this.tokenizer.readToken(riff.Header);
32
32
  debug(`pos=${this.tokenizer.position}, parse: chunkID=${riffHeader.chunkID}`);
33
- if (riffHeader.chunkID !== 'RIFF')
33
+ if (riffHeader.chunkID !== 'RIFF') {
34
34
  return; // Not RIFF format
35
+ }
35
36
  this.metadata.setAudioOnly();
36
- return this.parseRiffChunk(riffHeader.chunkSize).catch(err => {
37
+ await this.parseRiffChunk(riffHeader.chunkSize).catch(err => {
37
38
  if (!(err instanceof strtok3.EndOfStreamError)) {
38
39
  throw err;
39
40
  }
40
41
  });
42
+ await this.flushInfoTags();
41
43
  }
42
44
  async parseRiffChunk(chunkSize) {
43
45
  const type = await this.tokenizer.readToken(FourCcToken);
@@ -59,6 +61,18 @@ export class WaveParser extends BasicParser {
59
61
  this.header = header;
60
62
  debug(`pos=${this.tokenizer.position}, readChunk: chunkID=RIFF/WAVE/${header.chunkID}`);
61
63
  switch (header.chunkID) {
64
+ case 'CSET': {
65
+ if (header.chunkSize < 8) {
66
+ throw new WaveContentError('CSET chunk must contain at least 8 bytes');
67
+ }
68
+ const cset = await this.tokenizer.readToken(new Token.Uint8ArrayType(header.chunkSize));
69
+ this.codePage = Token.UINT16_LE.get(cset, 0);
70
+ if (!this.getInfoEncoding()) {
71
+ this.metadata.addWarning(`Unsupported RIFF CSET code page: ${this.codePage}; LIST/INFO tags will be omitted`);
72
+ }
73
+ await this.flushInfoTags();
74
+ break;
75
+ }
62
76
  case 'LIST':
63
77
  await this.parseListTag(header);
64
78
  break;
@@ -66,7 +80,8 @@ export class WaveParser extends BasicParser {
66
80
  this.metadata.setFormat('lossless', false);
67
81
  this.fact = await this.tokenizer.readToken(new WaveChunk.FactChunk(header));
68
82
  break;
69
- case 'fmt ': { // The Util Chunk, non-PCM Formats
83
+ case 'fmt ': {
84
+ // The Util Chunk, non-PCM Formats
70
85
  const fmt = await this.tokenizer.readToken(new WaveChunk.Format(header));
71
86
  let subFormat = WaveChunk.WaveFormatNameMap[fmt.wFormatTag];
72
87
  if (!subFormat) {
@@ -82,13 +97,15 @@ export class WaveParser extends BasicParser {
82
97
  break;
83
98
  }
84
99
  case 'id3 ': // The way Picard, FooBar currently stores, ID3 meta-data
85
- case 'ID3 ': { // The way Mp3Tags stores ID3 meta-data
100
+ case 'ID3 ': {
101
+ // The way Mp3Tags stores ID3 meta-data
86
102
  const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(header.chunkSize));
87
103
  const rst = strtok3.fromBuffer(id3_data);
88
104
  await new ID3v2Parser().parse(this.metadata, rst, this.options);
89
105
  break;
90
106
  }
91
- case 'data': { // PCM-data
107
+ case 'data': {
108
+ // PCM-data
92
109
  if (this.metadata.format.lossless !== false) {
93
110
  this.metadata.setFormat('lossless', true);
94
111
  }
@@ -100,7 +117,11 @@ export class WaveParser extends BasicParser {
100
117
  chunkSize = calcRemaining;
101
118
  }
102
119
  }
103
- const numberOfSamples = this.fact ? this.fact.dwSampleLength : (chunkSize === 0xffffffff ? undefined : chunkSize / this.blockAlign);
120
+ const numberOfSamples = this.fact
121
+ ? this.fact.dwSampleLength
122
+ : chunkSize === 0xffffffff
123
+ ? undefined
124
+ : chunkSize / this.blockAlign;
104
125
  if (numberOfSamples) {
105
126
  this.metadata.setFormat('numberOfSamples', numberOfSamples);
106
127
  if (this.metadata.format.sampleRate) {
@@ -111,16 +132,17 @@ export class WaveParser extends BasicParser {
111
132
  this.metadata.setFormat('bitrate', this.avgBytesPerSec * 8);
112
133
  }
113
134
  else if (this.metadata.format.duration) {
114
- this.metadata.setFormat('bitrate', chunkSize * 8 / this.metadata.format.duration);
135
+ this.metadata.setFormat('bitrate', (chunkSize * 8) / this.metadata.format.duration);
115
136
  }
116
137
  await this.tokenizer.ignore(header.chunkSize);
117
138
  break;
118
139
  }
119
- case 'bext': { // Broadcast Audio Extension chunk https://tech.ebu.ch/docs/tech/tech3285.pdf
140
+ case 'bext': {
141
+ // Broadcast Audio Extension chunk https://tech.ebu.ch/docs/tech/tech3285.pdf
120
142
  const bext = await this.tokenizer.readToken(BroadcastAudioExtensionChunk);
121
- Object.keys(bext).forEach(key => {
122
- this.metadata.addTag('exif', `bext.${key}`, bext[key]);
123
- });
143
+ for (const key of Object.keys(bext)) {
144
+ await this.metadata.addTag('exif', `bext.${key}`, bext[key]);
145
+ }
124
146
  const bextRemaining = header.chunkSize - BroadcastAudioExtensionChunk.len;
125
147
  await this.tokenizer.ignore(bextRemaining);
126
148
  break;
@@ -157,15 +179,46 @@ export class WaveParser extends BasicParser {
157
179
  while (chunkSize >= 8) {
158
180
  const header = await this.tokenizer.readToken(riff.Header);
159
181
  const valueToken = new riff.ListInfoTagValue(header);
160
- const value = await this.tokenizer.readToken(valueToken);
161
- this.addTag(header.chunkID, util.stripNulls(value));
162
- chunkSize -= (8 + valueToken.len);
182
+ const bytes = await this.tokenizer.readToken(new Token.Uint8ArrayType(valueToken.len));
183
+ if (this.codePage === undefined) {
184
+ this.metadata.registerTagType('exif');
185
+ this.pendingInfoTags.push({ header, bytes });
186
+ }
187
+ else {
188
+ await this.addInfoTag(header, bytes);
189
+ }
190
+ chunkSize -= 8 + valueToken.len;
163
191
  }
164
192
  if (chunkSize !== 0) {
165
193
  throw new WaveContentError(`Illegal remaining size: ${chunkSize}`);
166
194
  }
167
195
  }
168
- addTag(id, value) {
169
- this.metadata.addTag('exif', id, value);
196
+ async addInfoTag(header, bytes) {
197
+ const encoding = this.getInfoEncoding();
198
+ if (encoding) {
199
+ const value = new riff.ListInfoTagValue(header, encoding).get(bytes, 0);
200
+ await this.metadata.addTag('exif', header.chunkID, value);
201
+ }
202
+ }
203
+ async flushInfoTags() {
204
+ for (const { header, bytes } of this.pendingInfoTags.splice(0)) {
205
+ await this.addInfoTag(header, bytes);
206
+ }
207
+ }
208
+ getInfoEncoding() {
209
+ // RIFF CSET: absent/zero means ISO 8859-1, not Windows-1252.
210
+ // https://www.robotplanet.dk/audio/wav_meta_data/riff_mci.pdf#page=25
211
+ switch (this.codePage) {
212
+ case undefined:
213
+ case 0:
214
+ case 28591:
215
+ return 'latin1';
216
+ case 1252:
217
+ return 'windows-1252';
218
+ case 65001:
219
+ return 'utf-8';
220
+ default:
221
+ return undefined;
222
+ }
170
223
  }
171
224
  }
@@ -1,11 +1,11 @@
1
+ import initDebug from 'debug';
1
2
  import * as Token from 'token-types';
3
+ import { uint8ArrayToHex } from 'uint8array-extras';
2
4
  import { tryParseApeHeader } from '../apev2/APEv2Parser.js';
3
- import { FourCcToken } from '../common/FourCC.js';
4
5
  import { BasicParser } from '../common/BasicParser.js';
5
- import { BlockHeaderToken, MetadataIdToken } from './WavPackToken.js';
6
- import initDebug from 'debug';
7
- import { uint8ArrayToHex } from 'uint8array-extras';
6
+ import { FourCcToken } from '../common/FourCC.js';
8
7
  import { makeUnexpectedFileContentError } from '../ParseError.js';
8
+ import { BlockHeaderToken, MetadataIdToken } from './WavPackToken.js';
9
9
  const debug = initDebug('music-metadata:parser:WavPack');
10
10
  export class WavPackContentError extends makeUnexpectedFileContentError('WavPack') {
11
11
  }
@@ -28,11 +28,13 @@ export class WavPackParser extends BasicParser {
28
28
  async parseWavPackBlocks() {
29
29
  do {
30
30
  const blockId = await this.tokenizer.peekToken(FourCcToken);
31
- if (blockId !== 'wvpk')
31
+ if (blockId !== 'wvpk') {
32
32
  break;
33
+ }
33
34
  const header = await this.tokenizer.readToken(BlockHeaderToken);
34
- if (header.BlockID !== 'wvpk')
35
+ if (header.BlockID !== 'wvpk') {
35
36
  throw new WavPackContentError('Invalid WavPack Block-ID');
37
+ }
36
38
  debug(`WavPack header blockIndex=${header.blockIndex}, len=${BlockHeaderToken.len}`);
37
39
  if (header.blockIndex === 0 && !this.metadata.format.container) {
38
40
  this.metadata.setFormat('container', 'WavPack');
@@ -49,13 +51,16 @@ export class WavPackParser extends BasicParser {
49
51
  this.metadata.setFormat('codec', header.flags.isDSD ? 'DSD' : 'PCM');
50
52
  }
51
53
  const ignoreBytes = header.blockSize - (BlockHeaderToken.len - 8);
52
- await (header.blockIndex === 0 ? this.parseMetadataSubBlock(header, ignoreBytes) : this.tokenizer.ignore(ignoreBytes));
54
+ await (header.blockIndex === 0
55
+ ? this.parseMetadataSubBlock(header, ignoreBytes)
56
+ : this.tokenizer.ignore(ignoreBytes));
53
57
  if (header.blockSamples > 0) {
54
58
  this.audioDataSize += header.blockSize; // Count audio data for bit-rate calculation
55
59
  }
56
- } while (!this.tokenizer.fileInfo.size || this.tokenizer.fileInfo.size - this.tokenizer.position >= BlockHeaderToken.len);
60
+ } while (!this.tokenizer.fileInfo.size ||
61
+ this.tokenizer.fileInfo.size - this.tokenizer.position >= BlockHeaderToken.len);
57
62
  if (this.metadata.format.duration) {
58
- this.metadata.setFormat('bitrate', this.audioDataSize * 8 / this.metadata.format.duration);
63
+ this.metadata.setFormat('bitrate', (this.audioDataSize * 8) / this.metadata.format.duration);
59
64
  }
60
65
  }
61
66
  /**
@@ -74,13 +79,15 @@ export class WavPackParser extends BasicParser {
74
79
  switch (id.functionId) {
75
80
  case 0x0: // ID_DUMMY: could be used to pad WavPack blocks
76
81
  break;
77
- case 0xe: { // ID_DSD_BLOCK
82
+ case 0xe: {
83
+ // ID_DSD_BLOCK
78
84
  debug('ID_DSD_BLOCK');
79
85
  // https://github.com/dbry/WavPack/issues/71#issuecomment-483094813
80
86
  const mp = 1 << Token.UINT8.get(data, 0);
81
87
  const samplingRate = header.flags.samplingRate * mp * 8; // ToDo: second factor should be read from DSD-metadata block https://github.com/dbry/WavPack/issues/71#issuecomment-483094813
82
- if (!header.flags.isDSD)
88
+ if (!header.flags.isDSD) {
83
89
  throw new WavPackContentError('Only expect DSD block if DSD-flag is set');
90
+ }
84
91
  this.metadata.setFormat('sampleRate', samplingRate);
85
92
  this.metadata.setFormat('duration', header.totalSamples / samplingRate);
86
93
  break;
@@ -100,10 +107,12 @@ export class WavPackParser extends BasicParser {
100
107
  }
101
108
  remaining -= MetadataIdToken.len + (id.largeBlock ? Token.UINT24_LE.len : Token.UINT8.len) + dataSizeInWords * 2;
102
109
  debug(`remainingLength=${remaining}`);
103
- if (id.isOddSize)
110
+ if (id.isOddSize) {
104
111
  this.tokenizer.ignore(1);
112
+ }
105
113
  }
106
- if (remaining !== 0)
114
+ if (remaining !== 0) {
107
115
  throw new WavPackContentError('metadata-sub-block should fit it remaining length');
116
+ }
108
117
  }
109
118
  }
@@ -1,7 +1,8 @@
1
1
  import * as Token from 'token-types';
2
2
  import { FourCcToken } from '../common/FourCC.js';
3
- const SampleRates = [6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100,
4
- 48000, 64000, 88200, 96000, 192000, -1];
3
+ const SampleRates = [
4
+ 6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000, 192000, -1
5
+ ];
5
6
  /**
6
7
  * WavPack Block Header
7
8
  *
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "music-metadata",
3
3
  "description": "Music metadata parser for Node.js, supporting virtual any audio and tag format.",
4
- "version": "11.15.0",
4
+ "version": "11.16.1",
5
5
  "author": {
6
6
  "name": "Borewit",
7
7
  "url": "https://github.com/Borewit"
@@ -98,6 +98,7 @@
98
98
  "compile:dev": "yarn run compile-src:dev && yarn compile-test && yarn compile-doc",
99
99
  "compile:prod": "yarn run compile-src:prod && yarn compile-test && yarn compile-doc",
100
100
  "lint:ts": "biome check",
101
+ "lint:ts:fix": "biome check --write",
101
102
  "lint:md": "yarn run remark -u remark-preset-lint-consistent .",
102
103
  "lint": "yarn run lint:ts && yarn run lint:md",
103
104
  "test": "mocha",
@@ -152,5 +153,5 @@
152
153
  "bugs": {
153
154
  "url": "https://github.com/Borewit/music-metadata/issues"
154
155
  },
155
- "packageManager": "yarn@4.9.2"
156
+ "packageManager": "yarn@4.18.0"
156
157
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/matrix",
3
- "version": "2026.10.1",
3
+ "version": "2026.10.5-beta.1",
4
4
  "description": "OpenClaw Matrix channel plugin for rooms and direct messages.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,17 +9,17 @@
9
9
  "type": "module",
10
10
  "dependencies": {
11
11
  "@matrix-org/matrix-sdk-crypto-nodejs": "0.6.6",
12
- "@matrix-org/matrix-sdk-crypto-wasm": "18.8.0",
13
- "@openclaw/fs-safe": "0.24.2",
12
+ "@matrix-org/matrix-sdk-crypto-wasm": "18.9.0",
13
+ "@openclaw/fs-safe": "0.25.0",
14
14
  "fake-indexeddb": "6.2.5",
15
15
  "markdown-it": "15.0.2",
16
16
  "matrix-js-sdk": "42.4.0",
17
- "music-metadata": "11.15.0",
17
+ "music-metadata": "11.16.1",
18
18
  "typebox": "1.3.34",
19
19
  "zod": "4.6.5"
20
20
  },
21
21
  "peerDependencies": {
22
- "openclaw": ">=2026.10.1"
22
+ "openclaw": ">=2026.10.5-beta.1"
23
23
  },
24
24
  "peerDependenciesMeta": {
25
25
  "openclaw": {
@@ -169,11 +169,11 @@
169
169
  "allowInvalidConfigRecovery": true
170
170
  },
171
171
  "compat": {
172
- "pluginApi": ">=2026.10.1"
172
+ "pluginApi": ">=2026.10.5-beta.1"
173
173
  },
174
174
  "build": {
175
175
  "bundledDist": false,
176
- "openclawVersion": "2026.10.1"
176
+ "openclawVersion": "2026.10.5-beta.1"
177
177
  },
178
178
  "release": {
179
179
  "publishToClawHub": true,
@@ -1,138 +0,0 @@
1
- import { a as resolveConfiguredMatrixAccountIds, d as resolveScopedMatrixEnvConfig, f as resolveMatrixAccountStringValues, l as resolveGlobalMatrixEnvConfig, s as resolveMatrixDefaultOrOnlyAccountId } from "./account-selection-BDeeqwwR.mjs";
2
- import { a as resolveMatrixAccountConfig, o as resolveMatrixBaseConfig, t as findMatrixAccountConfig } from "./account-config-CRsKoMqJ.mjs";
3
- import { a as loadMatrixCredentials, o as loadMatrixCredentialsAsync, r as credentialsMatchConfig, t as captureMatrixCredentialsEnv } from "./credentials-read-CqRiEAQa.mjs";
4
- import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
5
- import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
- import { hasConfiguredSecretInput } from "openclaw/plugin-sdk/secret-input";
7
- //#region extensions/matrix/src/matrix/accounts.ts
8
- function clean(value) {
9
- return normalizeOptionalString(value) ?? "";
10
- }
11
- function resolveMatrixAccountAuthView(params) {
12
- const normalizedAccountId = normalizeAccountId(params.accountId);
13
- const matrix = resolveMatrixBaseConfig(params.cfg);
14
- const account = findMatrixAccountConfig(params.cfg, normalizedAccountId) ?? {};
15
- const resolvedStrings = resolveMatrixAccountStringValues({
16
- accountId: normalizedAccountId,
17
- account: {
18
- homeserver: clean(account.homeserver),
19
- userId: clean(account.userId),
20
- accessToken: typeof account.accessToken === "string" ? clean(account.accessToken) : "",
21
- password: typeof account.password === "string" ? clean(account.password) : "",
22
- deviceId: clean(account.deviceId),
23
- deviceName: clean(account.deviceName)
24
- },
25
- scopedEnv: resolveScopedMatrixEnvConfig(normalizedAccountId, params.env),
26
- channel: {
27
- homeserver: clean(matrix.homeserver),
28
- userId: clean(matrix.userId),
29
- accessToken: typeof matrix.accessToken === "string" ? clean(matrix.accessToken) : "",
30
- password: typeof matrix.password === "string" ? clean(matrix.password) : "",
31
- deviceId: clean(matrix.deviceId),
32
- deviceName: clean(matrix.deviceName)
33
- },
34
- globalEnv: resolveGlobalMatrixEnvConfig(params.env)
35
- });
36
- return {
37
- homeserver: resolvedStrings.homeserver,
38
- userId: resolvedStrings.userId,
39
- accessToken: resolvedStrings.accessToken || void 0,
40
- password: resolvedStrings.password || void 0
41
- };
42
- }
43
- function resolveMatrixAccountUserId(authView, stored) {
44
- const configuredUserId = authView.userId.trim();
45
- if (configuredUserId) return configuredUserId;
46
- if (!stored) return null;
47
- if (authView.homeserver && stored.homeserver !== authView.homeserver) return null;
48
- if (authView.accessToken && stored.accessToken !== authView.accessToken) return null;
49
- return stored.userId.trim() || null;
50
- }
51
- function listMatrixAccountIds(cfg) {
52
- const ids = resolveConfiguredMatrixAccountIds(cfg, process.env);
53
- return ids.length > 0 ? ids : [DEFAULT_ACCOUNT_ID];
54
- }
55
- function resolveDefaultMatrixAccountId(cfg, env = process.env) {
56
- return normalizeAccountId(resolveMatrixDefaultOrOnlyAccountId(cfg, env));
57
- }
58
- async function resolveConfiguredMatrixBotUserIds(params) {
59
- const env = params.env ?? process.env;
60
- const currentAccountId = normalizeAccountId(params.accountId);
61
- const accounts = [.../* @__PURE__ */ new Set([...resolveConfiguredMatrixAccountIds(params.cfg, env), DEFAULT_ACCOUNT_ID])].filter((accountId) => normalizeAccountId(accountId) !== currentAccountId).map((accountId) => prepareMatrixAccount({
62
- cfg: params.cfg,
63
- accountId,
64
- env
65
- }));
66
- const ids = /* @__PURE__ */ new Set();
67
- if (accounts.length === 0 || params.abortSignal?.aborted) return ids;
68
- const credentialsEnv = captureMatrixCredentialsEnv(env);
69
- for (const prepared of accounts) {
70
- if (params.abortSignal?.aborted) break;
71
- const stored = await loadMatrixCredentialsAsync(credentialsEnv, prepared.account.accountId);
72
- if (!isMatrixAccountConfigured(prepared, stored)) continue;
73
- const userId = resolveMatrixAccountUserId(prepared.authView, stored);
74
- if (userId) ids.add(userId);
75
- }
76
- return ids;
77
- }
78
- function prepareMatrixAccount(params) {
79
- const env = params.env ?? process.env;
80
- const accountId = normalizeAccountId(params.accountId ?? resolveDefaultMatrixAccountId(params.cfg, env));
81
- const matrixBase = resolveMatrixBaseConfig(params.cfg);
82
- const base = resolveMatrixAccountConfig({
83
- cfg: params.cfg,
84
- accountId,
85
- env
86
- });
87
- const explicitAuthConfig = accountId === DEFAULT_ACCOUNT_ID ? base : findMatrixAccountConfig(params.cfg, accountId) ?? {};
88
- const enabled = base.enabled !== false && matrixBase.enabled !== false;
89
- const authView = resolveMatrixAccountAuthView({
90
- cfg: params.cfg,
91
- accountId,
92
- env
93
- });
94
- const hasHomeserver = Boolean(authView.homeserver);
95
- const hasUserId = Boolean(authView.userId);
96
- const hasAccessToken = Boolean(authView.accessToken) || hasConfiguredSecretInput(explicitAuthConfig.accessToken);
97
- const hasPassword = Boolean(authView.password);
98
- const hasPasswordAuth = hasUserId && (hasPassword || hasConfiguredSecretInput(explicitAuthConfig.password));
99
- return {
100
- authView,
101
- hasHomeserver,
102
- hasConfiguredAuth: hasAccessToken || hasPasswordAuth,
103
- account: {
104
- accountId,
105
- enabled,
106
- name: normalizeOptionalString(base.name),
107
- homeserver: authView.homeserver || void 0,
108
- userId: authView.userId || void 0,
109
- config: base
110
- }
111
- };
112
- }
113
- function isMatrixAccountConfigured(prepared, stored) {
114
- const { authView } = prepared;
115
- const hasStored = stored && authView.homeserver ? credentialsMatchConfig(stored, {
116
- homeserver: authView.homeserver,
117
- userId: authView.userId || ""
118
- }) : false;
119
- return prepared.hasHomeserver && (prepared.hasConfiguredAuth || hasStored);
120
- }
121
- function resolveMatrixAccount(params) {
122
- const prepared = prepareMatrixAccount(params);
123
- const stored = prepared.hasHomeserver && !prepared.hasConfiguredAuth ? loadMatrixCredentials(params.env ?? process.env, prepared.account.accountId) : null;
124
- return {
125
- ...prepared.account,
126
- configured: isMatrixAccountConfigured(prepared, stored)
127
- };
128
- }
129
- async function resolveMatrixAccountAsync(params) {
130
- const prepared = prepareMatrixAccount(params);
131
- const stored = prepared.hasHomeserver && !prepared.hasConfiguredAuth ? await loadMatrixCredentialsAsync(captureMatrixCredentialsEnv(params.env ?? process.env), prepared.account.accountId) : null;
132
- return {
133
- ...prepared.account,
134
- configured: isMatrixAccountConfigured(prepared, stored)
135
- };
136
- }
137
- //#endregion
138
- export { resolveMatrixAccountAsync as a, resolveMatrixAccount as i, resolveConfiguredMatrixBotUserIds as n, resolveDefaultMatrixAccountId as r, listMatrixAccountIds as t };