@openclaw/signal 2026.9.5 → 2026.9.6

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 (1140) hide show
  1. package/dist/.setup/{api-DbdeJVQ8.mjs → api-B9-B1L7Q.mjs} +6 -6
  2. package/dist/.setup/{api-Cu01dJRP.mjs → api-CGh4eWR8.mjs} +7 -7
  3. package/dist/.setup/{approval-handler.runtime-Clf_1IZj.mjs → approval-handler.runtime-C3vN5OWd.mjs} +2 -2
  4. package/dist/.setup/{approval-reactions-B25QoVJc.mjs → approval-reactions-DDQvPP_z.mjs} +1 -1
  5. package/dist/.setup/{channel-gMpZmqLx.mjs → channel-DhzTcFsK.mjs} +8 -8
  6. package/dist/.setup/{channel.runtime-Dqc18A1e.mjs → channel.runtime-CG79z_Vy.mjs} +2 -2
  7. package/dist/.setup/{install-signal-cli-bXeTrTyL.mjs → install-signal-cli-BDbzFcU2.mjs} +27 -57
  8. package/dist/.setup/{monitor-DAMQw1pZ.mjs → monitor-Dnz6Ygz5.mjs} +11 -10
  9. package/dist/.setup/{probe-IKCS9D-z.mjs → probe-DXT2eLnw.mjs} +1 -1
  10. package/dist/.setup/{question-reactions-DSNAD0cd.mjs → question-reactions-C8cSEjVf.mjs} +1 -1
  11. package/dist/.setup/{send-CcetN4rk.mjs → send-B78M_eFp.mjs} +1 -1
  12. package/dist/.setup/{send.runtime-B7C4IP23.mjs → send.runtime-CLnCWvrM.mjs} +1 -1
  13. package/dist/.setup/{transport-detection-CqyR2vG8.mjs → transport-detection-CoiRl7Gx.mjs} +11 -6
  14. package/dist/.setup/{transport-detection.runtime-CW1lp2d9.mjs → transport-detection.runtime-Tlhuv3T_.mjs} +1 -1
  15. package/dist/api.js +7 -7
  16. package/dist/channel-plugin-api.js +1 -1
  17. package/dist/contract-api.js +1 -1
  18. package/dist/runtime-api.js +5 -5
  19. package/dist/setup-entry.js +1 -1
  20. package/node_modules/@openclaw/fs-safe/CHANGELOG.md +1187 -0
  21. package/node_modules/@openclaw/fs-safe/LICENSE +22 -0
  22. package/node_modules/@openclaw/fs-safe/README.md +654 -0
  23. package/node_modules/@openclaw/fs-safe/SECURITY.md +45 -0
  24. package/node_modules/@openclaw/fs-safe/dist/absolute-path.d.ts +32 -0
  25. package/node_modules/@openclaw/fs-safe/dist/absolute-path.js +323 -0
  26. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +36 -0
  27. package/node_modules/@openclaw/fs-safe/dist/advanced.js +38 -0
  28. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.d.ts +1 -0
  29. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.js +19 -0
  30. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.d.ts +11 -0
  31. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.js +101 -0
  32. package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts +23 -0
  33. package/node_modules/@openclaw/fs-safe/dist/archive-durability.js +180 -0
  34. package/node_modules/@openclaw/fs-safe/dist/archive-entry.d.ts +13 -0
  35. package/node_modules/@openclaw/fs-safe/dist/archive-entry.js +85 -0
  36. package/node_modules/@openclaw/fs-safe/dist/archive-errors.d.ts +12 -0
  37. package/node_modules/@openclaw/fs-safe/dist/archive-errors.js +23 -0
  38. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts +20 -0
  39. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.js +99 -0
  40. package/node_modules/@openclaw/fs-safe/dist/archive-input.d.ts +18 -0
  41. package/node_modules/@openclaw/fs-safe/dist/archive-input.js +98 -0
  42. package/node_modules/@openclaw/fs-safe/dist/archive-kind.d.ts +7 -0
  43. package/node_modules/@openclaw/fs-safe/dist/archive-kind.js +71 -0
  44. package/node_modules/@openclaw/fs-safe/dist/archive-limits.d.ts +56 -0
  45. package/node_modules/@openclaw/fs-safe/dist/archive-limits.js +131 -0
  46. package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts +22 -0
  47. package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +283 -0
  48. package/node_modules/@openclaw/fs-safe/dist/archive-parser-errors.d.ts +1 -0
  49. package/node_modules/@openclaw/fs-safe/dist/archive-parser-errors.js +12 -0
  50. package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
  51. package/node_modules/@openclaw/fs-safe/dist/archive-plan.d.ts +90 -0
  52. package/node_modules/@openclaw/fs-safe/dist/archive-plan.js +119 -0
  53. package/node_modules/@openclaw/fs-safe/dist/archive-read.d.ts +5 -0
  54. package/node_modules/@openclaw/fs-safe/dist/archive-read.js +243 -0
  55. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +33 -0
  56. package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +308 -0
  57. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts +27 -0
  58. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.js +127 -0
  59. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.d.ts +29 -0
  60. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.js +203 -0
  61. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts +7 -0
  62. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.js +96 -0
  63. package/node_modules/@openclaw/fs-safe/dist/archive-zip-count.d.ts +1 -0
  64. package/node_modules/@openclaw/fs-safe/dist/archive-zip-count.js +160 -0
  65. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts +21 -0
  66. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.js +263 -0
  67. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.d.ts +24 -0
  68. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.js +42 -0
  69. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.d.ts +4 -0
  70. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.js +40 -0
  71. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts +8 -0
  72. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.js +147 -0
  73. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts +4 -0
  74. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.js +22 -0
  75. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts +17 -0
  76. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.js +149 -0
  77. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts +5 -0
  78. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.js +13 -0
  79. package/node_modules/@openclaw/fs-safe/dist/archive.d.ts +17 -0
  80. package/node_modules/@openclaw/fs-safe/dist/archive.js +329 -0
  81. package/node_modules/@openclaw/fs-safe/dist/async-lock.d.ts +1 -0
  82. package/node_modules/@openclaw/fs-safe/dist/async-lock.js +17 -0
  83. package/node_modules/@openclaw/fs-safe/dist/atomic.d.ts +6 -0
  84. package/node_modules/@openclaw/fs-safe/dist/atomic.js +4 -0
  85. package/node_modules/@openclaw/fs-safe/dist/bounded-read-stream.d.ts +2 -0
  86. package/node_modules/@openclaw/fs-safe/dist/bounded-read-stream.js +15 -0
  87. package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts +25 -0
  88. package/node_modules/@openclaw/fs-safe/dist/bounded-read.js +143 -0
  89. package/node_modules/@openclaw/fs-safe/dist/byte-budget.d.ts +3 -0
  90. package/node_modules/@openclaw/fs-safe/dist/byte-budget.js +9 -0
  91. package/node_modules/@openclaw/fs-safe/dist/byte-view.d.ts +2 -0
  92. package/node_modules/@openclaw/fs-safe/dist/byte-view.js +13 -0
  93. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts +19 -0
  94. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.js +36 -0
  95. package/node_modules/@openclaw/fs-safe/dist/config.d.ts +2 -0
  96. package/node_modules/@openclaw/fs-safe/dist/config.js +2 -0
  97. package/node_modules/@openclaw/fs-safe/dist/containment.d.ts +1 -0
  98. package/node_modules/@openclaw/fs-safe/dist/containment.js +1 -0
  99. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts +21 -0
  100. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.js +71 -0
  101. package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts +2 -0
  102. package/node_modules/@openclaw/fs-safe/dist/copy-policy.js +8 -0
  103. package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts +20 -0
  104. package/node_modules/@openclaw/fs-safe/dist/copy-publication.js +33 -0
  105. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts +8 -0
  106. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.js +245 -0
  107. package/node_modules/@openclaw/fs-safe/dist/copy.d.ts +15 -0
  108. package/node_modules/@openclaw/fs-safe/dist/copy.js +143 -0
  109. package/node_modules/@openclaw/fs-safe/dist/create-owned-file.d.ts +7 -0
  110. package/node_modules/@openclaw/fs-safe/dist/create-owned-file.js +16 -0
  111. package/node_modules/@openclaw/fs-safe/dist/create.d.ts +17 -0
  112. package/node_modules/@openclaw/fs-safe/dist/create.js +388 -0
  113. package/node_modules/@openclaw/fs-safe/dist/creation-boundary.d.ts +60 -0
  114. package/node_modules/@openclaw/fs-safe/dist/creation-boundary.js +371 -0
  115. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.d.ts +11 -0
  116. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.js +95 -0
  117. package/node_modules/@openclaw/fs-safe/dist/device-path.d.ts +14 -0
  118. package/node_modules/@openclaw/fs-safe/dist/device-path.js +139 -0
  119. package/node_modules/@openclaw/fs-safe/dist/directory-durability.d.ts +43 -0
  120. package/node_modules/@openclaw/fs-safe/dist/directory-durability.js +286 -0
  121. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts +2 -0
  122. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.js +21 -0
  123. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts +55 -0
  124. package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +179 -0
  125. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts +21 -0
  126. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.js +209 -0
  127. package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.d.ts +20 -0
  128. package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.js +78 -0
  129. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.d.ts +23 -0
  130. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.js +123 -0
  131. package/node_modules/@openclaw/fs-safe/dist/durability.d.ts +4 -0
  132. package/node_modules/@openclaw/fs-safe/dist/durability.js +3 -0
  133. package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts +1 -0
  134. package/node_modules/@openclaw/fs-safe/dist/effective-uid.js +25 -0
  135. package/node_modules/@openclaw/fs-safe/dist/error-detail.d.ts +2 -0
  136. package/node_modules/@openclaw/fs-safe/dist/error-detail.js +13 -0
  137. package/node_modules/@openclaw/fs-safe/dist/errors.d.ts +13 -0
  138. package/node_modules/@openclaw/fs-safe/dist/errors.js +26 -0
  139. package/node_modules/@openclaw/fs-safe/dist/file-cleanup.d.ts +19 -0
  140. package/node_modules/@openclaw/fs-safe/dist/file-cleanup.js +81 -0
  141. package/node_modules/@openclaw/fs-safe/dist/file-contents.d.ts +5 -0
  142. package/node_modules/@openclaw/fs-safe/dist/file-contents.js +40 -0
  143. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts +15 -0
  144. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.js +190 -0
  145. package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts +16 -0
  146. package/node_modules/@openclaw/fs-safe/dist/file-hash.js +296 -0
  147. package/node_modules/@openclaw/fs-safe/dist/file-identity.d.ts +7 -0
  148. package/node_modules/@openclaw/fs-safe/dist/file-identity.js +48 -0
  149. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-acquisition.d.ts +22 -0
  150. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-acquisition.js +98 -0
  151. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.d.ts +17 -0
  152. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.js +54 -0
  153. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.d.ts +3 -0
  154. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.js +303 -0
  155. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.d.ts +17 -0
  156. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.js +66 -0
  157. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.d.ts +32 -0
  158. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.js +395 -0
  159. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.d.ts +43 -0
  160. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.js +209 -0
  161. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-mutation.d.ts +16 -0
  162. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-mutation.js +275 -0
  163. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-options.d.ts +19 -0
  164. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-options.js +58 -0
  165. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-registration.d.ts +1 -0
  166. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-registration.js +90 -0
  167. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.d.ts +36 -0
  168. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.js +288 -0
  169. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-stale-admission.d.ts +19 -0
  170. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-stale-admission.js +199 -0
  171. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.d.ts +17 -0
  172. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +341 -0
  173. package/node_modules/@openclaw/fs-safe/dist/file-lock.d.ts +23 -0
  174. package/node_modules/@openclaw/fs-safe/dist/file-lock.js +66 -0
  175. package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts +8 -0
  176. package/node_modules/@openclaw/fs-safe/dist/file-observation.js +22 -0
  177. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts +38 -0
  178. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.js +177 -0
  179. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.d.ts +11 -0
  180. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.js +109 -0
  181. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts +15 -0
  182. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.js +319 -0
  183. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts +9 -0
  184. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.js +128 -0
  185. package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts +65 -0
  186. package/node_modules/@openclaw/fs-safe/dist/file-store.js +362 -0
  187. package/node_modules/@openclaw/fs-safe/dist/file-sync.d.ts +4 -0
  188. package/node_modules/@openclaw/fs-safe/dist/file-sync.js +19 -0
  189. package/node_modules/@openclaw/fs-safe/dist/filename.d.ts +8 -0
  190. package/node_modules/@openclaw/fs-safe/dist/filename.js +138 -0
  191. package/node_modules/@openclaw/fs-safe/dist/fs.d.ts +12 -0
  192. package/node_modules/@openclaw/fs-safe/dist/fs.js +30 -0
  193. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts +25 -0
  194. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.js +281 -0
  195. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts +32 -0
  196. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.js +81 -0
  197. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts +1 -0
  198. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.js +68 -0
  199. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts +3 -0
  200. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +135 -0
  201. package/node_modules/@openclaw/fs-safe/dist/guest.d.ts +8 -0
  202. package/node_modules/@openclaw/fs-safe/dist/guest.js +424 -0
  203. package/node_modules/@openclaw/fs-safe/dist/home-dir.d.ts +11 -0
  204. package/node_modules/@openclaw/fs-safe/dist/home-dir.js +149 -0
  205. package/node_modules/@openclaw/fs-safe/dist/index.d.ts +9 -0
  206. package/node_modules/@openclaw/fs-safe/dist/index.js +5 -0
  207. package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts +25 -0
  208. package/node_modules/@openclaw/fs-safe/dist/install-path.js +136 -0
  209. package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts +37 -0
  210. package/node_modules/@openclaw/fs-safe/dist/json-document-store.js +105 -0
  211. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.d.ts +14 -0
  212. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.js +154 -0
  213. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts +23 -0
  214. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.js +355 -0
  215. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts +5 -0
  216. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.js +65 -0
  217. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts +45 -0
  218. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.js +215 -0
  219. package/node_modules/@openclaw/fs-safe/dist/json-store.d.ts +8 -0
  220. package/node_modules/@openclaw/fs-safe/dist/json-store.js +15 -0
  221. package/node_modules/@openclaw/fs-safe/dist/json-stringify.d.ts +1 -0
  222. package/node_modules/@openclaw/fs-safe/dist/json-stringify.js +7 -0
  223. package/node_modules/@openclaw/fs-safe/dist/json.d.ts +49 -0
  224. package/node_modules/@openclaw/fs-safe/dist/json.js +323 -0
  225. package/node_modules/@openclaw/fs-safe/dist/local-file-access.d.ts +8 -0
  226. package/node_modules/@openclaw/fs-safe/dist/local-file-access.js +84 -0
  227. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts +16 -0
  228. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.js +84 -0
  229. package/node_modules/@openclaw/fs-safe/dist/local-roots.d.ts +25 -0
  230. package/node_modules/@openclaw/fs-safe/dist/local-roots.js +160 -0
  231. package/node_modules/@openclaw/fs-safe/dist/lock-config.d.ts +9 -0
  232. package/node_modules/@openclaw/fs-safe/dist/lock-config.js +12 -0
  233. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts +30 -0
  234. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.js +224 -0
  235. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts +7 -0
  236. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.js +56 -0
  237. package/node_modules/@openclaw/fs-safe/dist/move-path.d.ts +20 -0
  238. package/node_modules/@openclaw/fs-safe/dist/move-path.js +390 -0
  239. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts +8 -0
  240. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.js +36 -0
  241. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +162 -0
  242. package/node_modules/@openclaw/fs-safe/dist/native-binding.js +8 -0
  243. package/node_modules/@openclaw/fs-safe/dist/native-config.d.ts +16 -0
  244. package/node_modules/@openclaw/fs-safe/dist/native-config.js +71 -0
  245. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts +16 -0
  246. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.js +37 -0
  247. package/node_modules/@openclaw/fs-safe/dist/native-fallback-warning.d.ts +3 -0
  248. package/node_modules/@openclaw/fs-safe/dist/native-fallback-warning.js +11 -0
  249. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts +15 -0
  250. package/node_modules/@openclaw/fs-safe/dist/native-operations.js +111 -0
  251. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts +34 -0
  252. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.js +147 -0
  253. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts +6 -0
  254. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.js +252 -0
  255. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.d.ts +4 -0
  256. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +472 -0
  257. package/node_modules/@openclaw/fs-safe/dist/native-policy-directory-observation.d.ts +11 -0
  258. package/node_modules/@openclaw/fs-safe/dist/native-policy-directory-observation.js +61 -0
  259. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent-windows.d.ts +13 -0
  260. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent-windows.js +209 -0
  261. package/node_modules/@openclaw/fs-safe/dist/native-rename-outcome.d.ts +3 -0
  262. package/node_modules/@openclaw/fs-safe/dist/native-rename-outcome.js +8 -0
  263. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts +45 -0
  264. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +442 -0
  265. package/node_modules/@openclaw/fs-safe/dist/native.d.ts +13 -0
  266. package/node_modules/@openclaw/fs-safe/dist/native.js +209 -0
  267. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts +7 -0
  268. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.js +46 -0
  269. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.d.ts +15 -0
  270. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.js +102 -0
  271. package/node_modules/@openclaw/fs-safe/dist/output.d.ts +16 -0
  272. package/node_modules/@openclaw/fs-safe/dist/output.js +139 -0
  273. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts +7 -0
  274. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.js +46 -0
  275. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.d.ts +30 -0
  276. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.js +36 -0
  277. package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts +6 -0
  278. package/node_modules/@openclaw/fs-safe/dist/path-case.js +136 -0
  279. package/node_modules/@openclaw/fs-safe/dist/path-policy.d.ts +24 -0
  280. package/node_modules/@openclaw/fs-safe/dist/path-policy.js +49 -0
  281. package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts +6 -0
  282. package/node_modules/@openclaw/fs-safe/dist/path-prefix.js +104 -0
  283. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts +13 -0
  284. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.js +37 -0
  285. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts +6 -0
  286. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.js +24 -0
  287. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts +11 -0
  288. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.js +394 -0
  289. package/node_modules/@openclaw/fs-safe/dist/path.d.ts +20 -0
  290. package/node_modules/@openclaw/fs-safe/dist/path.js +169 -0
  291. package/node_modules/@openclaw/fs-safe/dist/permission-exec.d.ts +26 -0
  292. package/node_modules/@openclaw/fs-safe/dist/permission-exec.js +197 -0
  293. package/node_modules/@openclaw/fs-safe/dist/permissions-public.d.ts +3 -0
  294. package/node_modules/@openclaw/fs-safe/dist/permissions-public.js +3 -0
  295. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts +51 -0
  296. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.js +319 -0
  297. package/node_modules/@openclaw/fs-safe/dist/permissions.d.ts +59 -0
  298. package/node_modules/@openclaw/fs-safe/dist/permissions.js +132 -0
  299. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts +24 -0
  300. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.js +419 -0
  301. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts +38 -0
  302. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.js +205 -0
  303. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts +24 -0
  304. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.js +70 -0
  305. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts +30 -0
  306. package/node_modules/@openclaw/fs-safe/dist/pinned-open.js +99 -0
  307. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.d.ts +1 -0
  308. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.js +22 -0
  309. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.d.ts +3 -0
  310. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.js +35 -0
  311. package/node_modules/@openclaw/fs-safe/dist/pinned-write-mode.d.ts +4 -0
  312. package/node_modules/@openclaw/fs-safe/dist/pinned-write-mode.js +31 -0
  313. package/node_modules/@openclaw/fs-safe/dist/pinned-write-staged.d.ts +5 -0
  314. package/node_modules/@openclaw/fs-safe/dist/pinned-write-staged.js +185 -0
  315. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts +68 -0
  316. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.js +1 -0
  317. package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts +12 -0
  318. package/node_modules/@openclaw/fs-safe/dist/pinned-write.js +300 -0
  319. package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts +8 -0
  320. package/node_modules/@openclaw/fs-safe/dist/positional-read.js +36 -0
  321. package/node_modules/@openclaw/fs-safe/dist/private-directory.d.ts +4 -0
  322. package/node_modules/@openclaw/fs-safe/dist/private-directory.js +30 -0
  323. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff-sync.d.ts +3 -0
  324. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff-sync.js +72 -0
  325. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts +53 -0
  326. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.js +358 -0
  327. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts +7 -0
  328. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.js +341 -0
  329. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts +13 -0
  330. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +56 -0
  331. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.d.ts +27 -0
  332. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.js +22 -0
  333. package/node_modules/@openclaw/fs-safe/dist/publish-file.d.ts +19 -0
  334. package/node_modules/@openclaw/fs-safe/dist/publish-file.js +332 -0
  335. package/node_modules/@openclaw/fs-safe/dist/read-open-flags.d.ts +7 -0
  336. package/node_modules/@openclaw/fs-safe/dist/read-open-flags.js +13 -0
  337. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.d.ts +20 -0
  338. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.js +18 -0
  339. package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts +3 -0
  340. package/node_modules/@openclaw/fs-safe/dist/realpath.js +43 -0
  341. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts +2 -0
  342. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.js +8 -0
  343. package/node_modules/@openclaw/fs-safe/dist/regular-file.d.ts +37 -0
  344. package/node_modules/@openclaw/fs-safe/dist/regular-file.js +317 -0
  345. package/node_modules/@openclaw/fs-safe/dist/replace-directory.d.ts +6 -0
  346. package/node_modules/@openclaw/fs-safe/dist/replace-directory.js +287 -0
  347. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts +38 -0
  348. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +341 -0
  349. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.d.ts +20 -0
  350. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.js +101 -0
  351. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.d.ts +50 -0
  352. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.js +160 -0
  353. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts +2 -0
  354. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.js +10 -0
  355. package/node_modules/@openclaw/fs-safe/dist/replace-file-rename-policy.d.ts +5 -0
  356. package/node_modules/@openclaw/fs-safe/dist/replace-file-rename-policy.js +30 -0
  357. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts +49 -0
  358. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.js +356 -0
  359. package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts +58 -0
  360. package/node_modules/@openclaw/fs-safe/dist/replace-file.js +336 -0
  361. package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.d.ts +25 -0
  362. package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.js +193 -0
  363. package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts +29 -0
  364. package/node_modules/@openclaw/fs-safe/dist/root-boundary.js +186 -0
  365. package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts +43 -0
  366. package/node_modules/@openclaw/fs-safe/dist/root-context.js +232 -0
  367. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts +16 -0
  368. package/node_modules/@openclaw/fs-safe/dist/root-create-input.js +93 -0
  369. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts +12 -0
  370. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.js +225 -0
  371. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +38 -0
  372. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +382 -0
  373. package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts +22 -0
  374. package/node_modules/@openclaw/fs-safe/dist/root-directory.js +141 -0
  375. package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts +10 -0
  376. package/node_modules/@openclaw/fs-safe/dist/root-entries.js +61 -0
  377. package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts +16 -0
  378. package/node_modules/@openclaw/fs-safe/dist/root-errors.js +92 -0
  379. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts +20 -0
  380. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.js +86 -0
  381. package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts +46 -0
  382. package/node_modules/@openclaw/fs-safe/dist/root-file.js +208 -0
  383. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts +117 -0
  384. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +1443 -0
  385. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +15 -0
  386. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +205 -0
  387. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts +7 -0
  388. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.js +16 -0
  389. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts +8 -0
  390. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.js +93 -0
  391. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts +84 -0
  392. package/node_modules/@openclaw/fs-safe/dist/root-options.js +18 -0
  393. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts +12 -0
  394. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.js +22 -0
  395. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts +12 -0
  396. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.js +160 -0
  397. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts +62 -0
  398. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.js +180 -0
  399. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts +4 -0
  400. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.js +151 -0
  401. package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts +53 -0
  402. package/node_modules/@openclaw/fs-safe/dist/root-path.js +443 -0
  403. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts +8 -0
  404. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.js +22 -0
  405. package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts +62 -0
  406. package/node_modules/@openclaw/fs-safe/dist/root-paths.js +296 -0
  407. package/node_modules/@openclaw/fs-safe/dist/root-public-types.d.ts +11 -0
  408. package/node_modules/@openclaw/fs-safe/dist/root-public-types.js +1 -0
  409. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts +25 -0
  410. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.js +86 -0
  411. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts +14 -0
  412. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.js +87 -0
  413. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts +16 -0
  414. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.js +37 -0
  415. package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts +6 -0
  416. package/node_modules/@openclaw/fs-safe/dist/root-remove.js +464 -0
  417. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts +13 -0
  418. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.js +34 -0
  419. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts +41 -0
  420. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +198 -0
  421. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts +65 -0
  422. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +304 -0
  423. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts +11 -0
  424. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.js +23 -0
  425. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts +41 -0
  426. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.js +180 -0
  427. package/node_modules/@openclaw/fs-safe/dist/root-write-lock-binding.d.ts +14 -0
  428. package/node_modules/@openclaw/fs-safe/dist/root-write-lock-binding.js +162 -0
  429. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts +7 -0
  430. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.js +72 -0
  431. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts +23 -0
  432. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.js +85 -0
  433. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.d.ts +11 -0
  434. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.js +95 -0
  435. package/node_modules/@openclaw/fs-safe/dist/root.d.ts +2 -0
  436. package/node_modules/@openclaw/fs-safe/dist/root.js +1 -0
  437. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts +11 -0
  438. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.js +74 -0
  439. package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts +25 -0
  440. package/node_modules/@openclaw/fs-safe/dist/secret-file.js +337 -0
  441. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.d.ts +3 -0
  442. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.js +58 -0
  443. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.d.ts +20 -0
  444. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.js +68 -0
  445. package/node_modules/@openclaw/fs-safe/dist/secret.d.ts +3 -0
  446. package/node_modules/@openclaw/fs-safe/dist/secret.js +3 -0
  447. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts +10 -0
  448. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.js +88 -0
  449. package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts +31 -0
  450. package/node_modules/@openclaw/fs-safe/dist/secure-file.js +297 -0
  451. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts +29 -0
  452. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.js +181 -0
  453. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts +34 -0
  454. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.js +110 -0
  455. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts +17 -0
  456. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.js +301 -0
  457. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts +28 -0
  458. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.js +132 -0
  459. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts +4 -0
  460. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +442 -0
  461. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-context.d.ts +18 -0
  462. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-context.js +60 -0
  463. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-parser.d.ts +42 -0
  464. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-parser.js +113 -0
  465. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission.d.ts +31 -0
  466. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission.js +1 -0
  467. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.d.ts +26 -0
  468. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.js +48 -0
  469. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts +19 -0
  470. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.js +113 -0
  471. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts +67 -0
  472. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +375 -0
  473. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-registration.d.ts +13 -0
  474. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-registration.js +47 -0
  475. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.d.ts +2 -0
  476. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.js +79 -0
  477. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-stale-admission.d.ts +38 -0
  478. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-stale-admission.js +228 -0
  479. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-target.d.ts +7 -0
  480. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-target.js +55 -0
  481. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-types.d.ts +68 -0
  482. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-types.js +1 -0
  483. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.d.ts +13 -0
  484. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +280 -0
  485. package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts +27 -0
  486. package/node_modules/@openclaw/fs-safe/dist/staged-directory.js +148 -0
  487. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.d.ts +16 -0
  488. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.js +57 -0
  489. package/node_modules/@openclaw/fs-safe/dist/staged-file-types.d.ts +55 -0
  490. package/node_modules/@openclaw/fs-safe/dist/staged-file-types.js +1 -0
  491. package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts +10 -0
  492. package/node_modules/@openclaw/fs-safe/dist/stat-observation.js +64 -0
  493. package/node_modules/@openclaw/fs-safe/dist/store.d.ts +3 -0
  494. package/node_modules/@openclaw/fs-safe/dist/store.js +3 -0
  495. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.d.ts +5 -0
  496. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.js +88 -0
  497. package/node_modules/@openclaw/fs-safe/dist/string-coerce.d.ts +4 -0
  498. package/node_modules/@openclaw/fs-safe/dist/string-coerce.js +16 -0
  499. package/node_modules/@openclaw/fs-safe/dist/suppressed-error.d.ts +5 -0
  500. package/node_modules/@openclaw/fs-safe/dist/suppressed-error.js +15 -0
  501. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.d.ts +11 -0
  502. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.js +58 -0
  503. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.d.ts +13 -0
  504. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.js +88 -0
  505. package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts +31 -0
  506. package/node_modules/@openclaw/fs-safe/dist/temp-target.js +238 -0
  507. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts +14 -0
  508. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +392 -0
  509. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +23 -0
  510. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +151 -0
  511. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts +42 -0
  512. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +342 -0
  513. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts +24 -0
  514. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +403 -0
  515. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts +39 -0
  516. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.js +1 -0
  517. package/node_modules/@openclaw/fs-safe/dist/temp.d.ts +3 -0
  518. package/node_modules/@openclaw/fs-safe/dist/temp.js +2 -0
  519. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts +31 -0
  520. package/node_modules/@openclaw/fs-safe/dist/test-hooks.js +13 -0
  521. package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts +13 -0
  522. package/node_modules/@openclaw/fs-safe/dist/text-atomic.js +16 -0
  523. package/node_modules/@openclaw/fs-safe/dist/timing.d.ts +8 -0
  524. package/node_modules/@openclaw/fs-safe/dist/timing.js +59 -0
  525. package/node_modules/@openclaw/fs-safe/dist/trash.d.ts +4 -0
  526. package/node_modules/@openclaw/fs-safe/dist/trash.js +219 -0
  527. package/node_modules/@openclaw/fs-safe/dist/types.d.ts +22 -0
  528. package/node_modules/@openclaw/fs-safe/dist/types.js +1 -0
  529. package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts +2 -0
  530. package/node_modules/@openclaw/fs-safe/dist/unicode-path.js +16 -0
  531. package/node_modules/@openclaw/fs-safe/dist/walk.d.ts +40 -0
  532. package/node_modules/@openclaw/fs-safe/dist/walk.js +207 -0
  533. package/node_modules/@openclaw/fs-safe/dist/windows-command.d.ts +1 -0
  534. package/node_modules/@openclaw/fs-safe/dist/windows-command.js +34 -0
  535. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts +28 -0
  536. package/node_modules/@openclaw/fs-safe/dist/windows-owner.js +101 -0
  537. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts +39 -0
  538. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.js +122 -0
  539. package/node_modules/@openclaw/fs-safe/dist/windows-path-syntax.d.ts +5 -0
  540. package/node_modules/@openclaw/fs-safe/dist/windows-path-syntax.js +21 -0
  541. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.cs +336 -0
  542. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.ps1 +15 -0
  543. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.d.ts +25 -0
  544. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.js +363 -0
  545. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.d.ts +5 -0
  546. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.js +108 -0
  547. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts +13 -0
  548. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.js +49 -0
  549. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.d.ts +4 -0
  550. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.js +27 -0
  551. package/node_modules/@openclaw/fs-safe/dist/write-queue.d.ts +1 -0
  552. package/node_modules/@openclaw/fs-safe/dist/write-queue.js +15 -0
  553. package/node_modules/@openclaw/fs-safe/docs/advanced.md +269 -0
  554. package/node_modules/@openclaw/fs-safe/docs/archive.md +843 -0
  555. package/node_modules/@openclaw/fs-safe/docs/assets/readme-banner.jpg +0 -0
  556. package/node_modules/@openclaw/fs-safe/docs/atomic.md +521 -0
  557. package/node_modules/@openclaw/fs-safe/docs/config.md +136 -0
  558. package/node_modules/@openclaw/fs-safe/docs/contributing.md +262 -0
  559. package/node_modules/@openclaw/fs-safe/docs/copy.md +197 -0
  560. package/node_modules/@openclaw/fs-safe/docs/creation.md +132 -0
  561. package/node_modules/@openclaw/fs-safe/docs/directory-identity.md +85 -0
  562. package/node_modules/@openclaw/fs-safe/docs/durability.md +438 -0
  563. package/node_modules/@openclaw/fs-safe/docs/entries.md +109 -0
  564. package/node_modules/@openclaw/fs-safe/docs/errors.md +240 -0
  565. package/node_modules/@openclaw/fs-safe/docs/file-contents.md +68 -0
  566. package/node_modules/@openclaw/fs-safe/docs/file-store.md +364 -0
  567. package/node_modules/@openclaw/fs-safe/docs/filename.md +110 -0
  568. package/node_modules/@openclaw/fs-safe/docs/guest.md +146 -0
  569. package/node_modules/@openclaw/fs-safe/docs/in-place-write.md +81 -0
  570. package/node_modules/@openclaw/fs-safe/docs/index.md +86 -0
  571. package/node_modules/@openclaw/fs-safe/docs/install-path.md +216 -0
  572. package/node_modules/@openclaw/fs-safe/docs/install.md +222 -0
  573. package/node_modules/@openclaw/fs-safe/docs/json-store.md +240 -0
  574. package/node_modules/@openclaw/fs-safe/docs/json.md +225 -0
  575. package/node_modules/@openclaw/fs-safe/docs/local-roots.md +150 -0
  576. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.5.md +205 -0
  577. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.6.md +48 -0
  578. package/node_modules/@openclaw/fs-safe/docs/mutation-policy-proof.md +69 -0
  579. package/node_modules/@openclaw/fs-safe/docs/native-helper.md +177 -0
  580. package/node_modules/@openclaw/fs-safe/docs/native.md +289 -0
  581. package/node_modules/@openclaw/fs-safe/docs/output.md +193 -0
  582. package/node_modules/@openclaw/fs-safe/docs/path-case.md +64 -0
  583. package/node_modules/@openclaw/fs-safe/docs/path-prefix.md +74 -0
  584. package/node_modules/@openclaw/fs-safe/docs/path-scope.md +159 -0
  585. package/node_modules/@openclaw/fs-safe/docs/path-suffix-aliases.md +204 -0
  586. package/node_modules/@openclaw/fs-safe/docs/path.md +219 -0
  587. package/node_modules/@openclaw/fs-safe/docs/permissions.md +286 -0
  588. package/node_modules/@openclaw/fs-safe/docs/positional-read.md +63 -0
  589. package/node_modules/@openclaw/fs-safe/docs/private-file-store.md +68 -0
  590. package/node_modules/@openclaw/fs-safe/docs/public-api.md +161 -0
  591. package/node_modules/@openclaw/fs-safe/docs/quickstart.md +154 -0
  592. package/node_modules/@openclaw/fs-safe/docs/reading.md +196 -0
  593. package/node_modules/@openclaw/fs-safe/docs/regular-file.md +193 -0
  594. package/node_modules/@openclaw/fs-safe/docs/root.md +545 -0
  595. package/node_modules/@openclaw/fs-safe/docs/secret-file.md +299 -0
  596. package/node_modules/@openclaw/fs-safe/docs/secure-file.md +112 -0
  597. package/node_modules/@openclaw/fs-safe/docs/security-model.md +269 -0
  598. package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +595 -0
  599. package/node_modules/@openclaw/fs-safe/docs/staged-file.md +192 -0
  600. package/node_modules/@openclaw/fs-safe/docs/store.md +127 -0
  601. package/node_modules/@openclaw/fs-safe/docs/temp.md +760 -0
  602. package/node_modules/@openclaw/fs-safe/docs/test-hooks.md +110 -0
  603. package/node_modules/@openclaw/fs-safe/docs/testing.md +189 -0
  604. package/node_modules/@openclaw/fs-safe/docs/timing.md +123 -0
  605. package/node_modules/@openclaw/fs-safe/docs/types.md +211 -0
  606. package/node_modules/@openclaw/fs-safe/docs/walk.md +250 -0
  607. package/node_modules/@openclaw/fs-safe/docs/writing.md +641 -0
  608. package/node_modules/@openclaw/fs-safe/package.json +200 -0
  609. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  610. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +29 -0
  611. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  612. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +29 -0
  613. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  614. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +32 -0
  615. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  616. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +32 -0
  617. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  618. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +32 -0
  619. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  620. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +32 -0
  621. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  622. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +29 -0
  623. package/node_modules/core-util-is/LICENSE +19 -0
  624. package/node_modules/core-util-is/README.md +3 -0
  625. package/node_modules/core-util-is/lib/util.js +107 -0
  626. package/node_modules/core-util-is/package.json +38 -0
  627. package/node_modules/immediate/LICENSE.txt +20 -0
  628. package/node_modules/immediate/README.md +93 -0
  629. package/node_modules/immediate/dist/immediate.js +75 -0
  630. package/node_modules/immediate/dist/immediate.min.js +1 -0
  631. package/node_modules/immediate/lib/browser.js +69 -0
  632. package/node_modules/immediate/lib/index.js +73 -0
  633. package/node_modules/immediate/package.json +42 -0
  634. package/node_modules/inherits/LICENSE +16 -0
  635. package/node_modules/inherits/README.md +42 -0
  636. package/node_modules/inherits/inherits.js +9 -0
  637. package/node_modules/inherits/inherits_browser.js +27 -0
  638. package/node_modules/inherits/package.json +29 -0
  639. package/node_modules/isarray/.npmignore +1 -0
  640. package/node_modules/isarray/.travis.yml +4 -0
  641. package/node_modules/isarray/Makefile +6 -0
  642. package/node_modules/isarray/README.md +60 -0
  643. package/node_modules/isarray/component.json +19 -0
  644. package/node_modules/isarray/index.js +5 -0
  645. package/node_modules/isarray/package.json +45 -0
  646. package/node_modules/isarray/test.js +20 -0
  647. package/node_modules/jszip/.codeclimate.yml +16 -0
  648. package/node_modules/jszip/.editorconfig +8 -0
  649. package/node_modules/jszip/.eslintrc.js +43 -0
  650. package/node_modules/jszip/.github/FUNDING.yml +1 -0
  651. package/node_modules/jszip/.github/actions/setup/action.yml +23 -0
  652. package/node_modules/jszip/.github/workflows/benchmark.yml +38 -0
  653. package/node_modules/jszip/.github/workflows/main.yml +55 -0
  654. package/node_modules/jszip/CHANGES.md +210 -0
  655. package/node_modules/jszip/LICENSE.markdown +651 -0
  656. package/node_modules/jszip/README.markdown +33 -0
  657. package/node_modules/jszip/dist/jszip.js +11586 -0
  658. package/node_modules/jszip/dist/jszip.min.js +13 -0
  659. package/node_modules/jszip/index.d.ts +344 -0
  660. package/node_modules/jszip/lib/base64.js +106 -0
  661. package/node_modules/jszip/lib/compressedObject.js +74 -0
  662. package/node_modules/jszip/lib/compressions.js +14 -0
  663. package/node_modules/jszip/lib/crc32.js +77 -0
  664. package/node_modules/jszip/lib/defaults.js +11 -0
  665. package/node_modules/jszip/lib/external.js +18 -0
  666. package/node_modules/jszip/lib/flate.js +85 -0
  667. package/node_modules/jszip/lib/generate/ZipFileWorker.js +539 -0
  668. package/node_modules/jszip/lib/generate/index.js +57 -0
  669. package/node_modules/jszip/lib/index.js +55 -0
  670. package/node_modules/jszip/lib/license_header.js +11 -0
  671. package/node_modules/jszip/lib/load.js +88 -0
  672. package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +74 -0
  673. package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +42 -0
  674. package/node_modules/jszip/lib/nodejsUtils.js +57 -0
  675. package/node_modules/jszip/lib/object.js +384 -0
  676. package/node_modules/jszip/lib/readable-stream-browser.js +10 -0
  677. package/node_modules/jszip/lib/reader/ArrayReader.js +57 -0
  678. package/node_modules/jszip/lib/reader/DataReader.js +116 -0
  679. package/node_modules/jszip/lib/reader/NodeBufferReader.js +19 -0
  680. package/node_modules/jszip/lib/reader/StringReader.js +38 -0
  681. package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +22 -0
  682. package/node_modules/jszip/lib/reader/readerFor.js +28 -0
  683. package/node_modules/jszip/lib/signature.js +7 -0
  684. package/node_modules/jszip/lib/stream/ConvertWorker.js +26 -0
  685. package/node_modules/jszip/lib/stream/Crc32Probe.js +24 -0
  686. package/node_modules/jszip/lib/stream/DataLengthProbe.js +29 -0
  687. package/node_modules/jszip/lib/stream/DataWorker.js +116 -0
  688. package/node_modules/jszip/lib/stream/GenericWorker.js +263 -0
  689. package/node_modules/jszip/lib/stream/StreamHelper.js +214 -0
  690. package/node_modules/jszip/lib/support.js +38 -0
  691. package/node_modules/jszip/lib/utf8.js +275 -0
  692. package/node_modules/jszip/lib/utils.js +510 -0
  693. package/node_modules/jszip/lib/zipEntries.js +261 -0
  694. package/node_modules/jszip/lib/zipEntry.js +293 -0
  695. package/node_modules/jszip/lib/zipObject.js +133 -0
  696. package/node_modules/jszip/package.json +67 -0
  697. package/node_modules/jszip/sponsors.md +21 -0
  698. package/node_modules/jszip/tsconfig.json +101 -0
  699. package/node_modules/jszip/vendor/FileSaver.js +247 -0
  700. package/node_modules/lie/README.md +62 -0
  701. package/node_modules/lie/dist/lie.js +350 -0
  702. package/node_modules/lie/dist/lie.min.js +1 -0
  703. package/node_modules/lie/dist/lie.polyfill.js +358 -0
  704. package/node_modules/lie/dist/lie.polyfill.min.js +1 -0
  705. package/node_modules/lie/lib/browser.js +273 -0
  706. package/node_modules/lie/lib/index.js +298 -0
  707. package/node_modules/lie/license.md +7 -0
  708. package/node_modules/lie/lie.d.ts +244 -0
  709. package/node_modules/lie/package.json +69 -0
  710. package/node_modules/lie/polyfill.js +4 -0
  711. package/node_modules/pako/CHANGELOG.md +164 -0
  712. package/node_modules/pako/LICENSE +21 -0
  713. package/node_modules/pako/README.md +191 -0
  714. package/node_modules/pako/dist/pako.js +6818 -0
  715. package/node_modules/pako/dist/pako.min.js +1 -0
  716. package/node_modules/pako/dist/pako_deflate.js +3997 -0
  717. package/node_modules/pako/dist/pako_deflate.min.js +1 -0
  718. package/node_modules/pako/dist/pako_inflate.js +3300 -0
  719. package/node_modules/pako/dist/pako_inflate.min.js +1 -0
  720. package/node_modules/pako/index.js +14 -0
  721. package/node_modules/pako/lib/deflate.js +400 -0
  722. package/node_modules/pako/lib/inflate.js +423 -0
  723. package/node_modules/pako/lib/utils/common.js +105 -0
  724. package/node_modules/pako/lib/utils/strings.js +187 -0
  725. package/node_modules/pako/lib/zlib/README +59 -0
  726. package/node_modules/pako/lib/zlib/adler32.js +51 -0
  727. package/node_modules/pako/lib/zlib/constants.js +68 -0
  728. package/node_modules/pako/lib/zlib/crc32.js +59 -0
  729. package/node_modules/pako/lib/zlib/deflate.js +1874 -0
  730. package/node_modules/pako/lib/zlib/gzheader.js +58 -0
  731. package/node_modules/pako/lib/zlib/inffast.js +345 -0
  732. package/node_modules/pako/lib/zlib/inflate.js +1556 -0
  733. package/node_modules/pako/lib/zlib/inftrees.js +343 -0
  734. package/node_modules/pako/lib/zlib/messages.js +32 -0
  735. package/node_modules/pako/lib/zlib/trees.js +1222 -0
  736. package/node_modules/pako/lib/zlib/zstream.js +47 -0
  737. package/node_modules/pako/package.json +44 -0
  738. package/node_modules/process-nextick-args/index.js +45 -0
  739. package/node_modules/process-nextick-args/license.md +19 -0
  740. package/node_modules/process-nextick-args/package.json +25 -0
  741. package/node_modules/process-nextick-args/readme.md +18 -0
  742. package/node_modules/readable-stream/.travis.yml +34 -0
  743. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  744. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  745. package/node_modules/readable-stream/LICENSE +47 -0
  746. package/node_modules/readable-stream/README.md +58 -0
  747. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  748. package/node_modules/readable-stream/duplex-browser.js +1 -0
  749. package/node_modules/readable-stream/duplex.js +1 -0
  750. package/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  751. package/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  752. package/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  753. package/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  754. package/node_modules/readable-stream/lib/_stream_writable.js +685 -0
  755. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +78 -0
  756. package/node_modules/readable-stream/lib/internal/streams/destroy.js +84 -0
  757. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  758. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  759. package/node_modules/readable-stream/package.json +52 -0
  760. package/node_modules/readable-stream/passthrough.js +1 -0
  761. package/node_modules/readable-stream/readable-browser.js +7 -0
  762. package/node_modules/readable-stream/readable.js +19 -0
  763. package/node_modules/readable-stream/transform.js +1 -0
  764. package/node_modules/readable-stream/writable-browser.js +1 -0
  765. package/node_modules/readable-stream/writable.js +8 -0
  766. package/node_modules/safe-buffer/LICENSE +21 -0
  767. package/node_modules/safe-buffer/README.md +584 -0
  768. package/node_modules/safe-buffer/index.d.ts +187 -0
  769. package/node_modules/safe-buffer/index.js +62 -0
  770. package/node_modules/safe-buffer/package.json +37 -0
  771. package/node_modules/setimmediate/LICENSE.txt +20 -0
  772. package/node_modules/setimmediate/package.json +30 -0
  773. package/node_modules/setimmediate/setImmediate.js +186 -0
  774. package/node_modules/string_decoder/.travis.yml +50 -0
  775. package/node_modules/string_decoder/LICENSE +48 -0
  776. package/node_modules/string_decoder/README.md +47 -0
  777. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  778. package/node_modules/string_decoder/package.json +31 -0
  779. package/node_modules/util-deprecate/History.md +16 -0
  780. package/node_modules/util-deprecate/LICENSE +24 -0
  781. package/node_modules/util-deprecate/README.md +53 -0
  782. package/node_modules/util-deprecate/browser.js +67 -0
  783. package/node_modules/util-deprecate/node.js +6 -0
  784. package/node_modules/util-deprecate/package.json +27 -0
  785. package/node_modules/zod/README.md +2 -2
  786. package/node_modules/zod/compile.cjs +19 -0
  787. package/node_modules/zod/index.cjs +19 -0
  788. package/node_modules/zod/locales/index.cjs +19 -0
  789. package/node_modules/zod/mini/index.cjs +19 -0
  790. package/node_modules/zod/package.json +8 -7
  791. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  792. package/node_modules/zod/src/v4/classic/external.ts +2 -0
  793. package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
  794. package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
  795. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
  796. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
  797. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  798. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
  799. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
  800. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
  801. package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
  802. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
  803. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  804. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
  805. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
  806. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
  807. package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
  808. package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
  809. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
  810. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  811. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  812. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
  813. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  814. package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
  815. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
  816. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
  817. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
  818. package/node_modules/zod/src/v4/core/api.ts +44 -28
  819. package/node_modules/zod/src/v4/core/checks.ts +62 -102
  820. package/node_modules/zod/src/v4/core/compile.ts +218 -93
  821. package/node_modules/zod/src/v4/core/core.ts +1 -3
  822. package/node_modules/zod/src/v4/core/doc.ts +6 -2
  823. package/node_modules/zod/src/v4/core/errors.ts +3 -6
  824. package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
  825. package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
  826. package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
  827. package/node_modules/zod/src/v4/core/parse.ts +37 -16
  828. package/node_modules/zod/src/v4/core/regexes.ts +14 -4
  829. package/node_modules/zod/src/v4/core/schemas.ts +296 -132
  830. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  831. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
  832. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  833. package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
  834. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  835. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  836. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  837. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
  838. package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
  839. package/node_modules/zod/src/v4/core/util.ts +218 -147
  840. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  841. package/node_modules/zod/src/v4/locales/ar.ts +2 -0
  842. package/node_modules/zod/src/v4/locales/az.ts +2 -0
  843. package/node_modules/zod/src/v4/locales/be.ts +2 -0
  844. package/node_modules/zod/src/v4/locales/bg.ts +2 -0
  845. package/node_modules/zod/src/v4/locales/bn.ts +2 -0
  846. package/node_modules/zod/src/v4/locales/ca.ts +2 -0
  847. package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
  848. package/node_modules/zod/src/v4/locales/cs.ts +2 -0
  849. package/node_modules/zod/src/v4/locales/da.ts +2 -0
  850. package/node_modules/zod/src/v4/locales/de.ts +2 -0
  851. package/node_modules/zod/src/v4/locales/el.ts +2 -0
  852. package/node_modules/zod/src/v4/locales/en.ts +2 -0
  853. package/node_modules/zod/src/v4/locales/eo.ts +2 -0
  854. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  855. package/node_modules/zod/src/v4/locales/fa.ts +2 -0
  856. package/node_modules/zod/src/v4/locales/fi.ts +2 -0
  857. package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
  858. package/node_modules/zod/src/v4/locales/fr.ts +2 -0
  859. package/node_modules/zod/src/v4/locales/gu.ts +2 -0
  860. package/node_modules/zod/src/v4/locales/he.ts +2 -0
  861. package/node_modules/zod/src/v4/locales/hi.ts +2 -0
  862. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  863. package/node_modules/zod/src/v4/locales/hu.ts +2 -0
  864. package/node_modules/zod/src/v4/locales/hy.ts +2 -0
  865. package/node_modules/zod/src/v4/locales/id.ts +2 -0
  866. package/node_modules/zod/src/v4/locales/index.ts +1 -0
  867. package/node_modules/zod/src/v4/locales/is.ts +2 -0
  868. package/node_modules/zod/src/v4/locales/it.ts +2 -0
  869. package/node_modules/zod/src/v4/locales/ja.ts +2 -0
  870. package/node_modules/zod/src/v4/locales/ka.ts +2 -0
  871. package/node_modules/zod/src/v4/locales/km.ts +2 -0
  872. package/node_modules/zod/src/v4/locales/kn.ts +2 -0
  873. package/node_modules/zod/src/v4/locales/ko.ts +2 -0
  874. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  875. package/node_modules/zod/src/v4/locales/mk.ts +2 -0
  876. package/node_modules/zod/src/v4/locales/ms.ts +2 -0
  877. package/node_modules/zod/src/v4/locales/ne.ts +2 -0
  878. package/node_modules/zod/src/v4/locales/nl.ts +2 -0
  879. package/node_modules/zod/src/v4/locales/nn.ts +2 -0
  880. package/node_modules/zod/src/v4/locales/no.ts +2 -0
  881. package/node_modules/zod/src/v4/locales/ota.ts +2 -0
  882. package/node_modules/zod/src/v4/locales/pl.ts +2 -0
  883. package/node_modules/zod/src/v4/locales/ps.ts +2 -0
  884. package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
  885. package/node_modules/zod/src/v4/locales/pt.ts +2 -0
  886. package/node_modules/zod/src/v4/locales/ro.ts +2 -0
  887. package/node_modules/zod/src/v4/locales/ru.ts +2 -0
  888. package/node_modules/zod/src/v4/locales/sk.ts +2 -0
  889. package/node_modules/zod/src/v4/locales/sl.ts +2 -0
  890. package/node_modules/zod/src/v4/locales/sv.ts +2 -0
  891. package/node_modules/zod/src/v4/locales/ta.ts +2 -0
  892. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  893. package/node_modules/zod/src/v4/locales/th.ts +2 -0
  894. package/node_modules/zod/src/v4/locales/tk.ts +2 -0
  895. package/node_modules/zod/src/v4/locales/tr.ts +2 -0
  896. package/node_modules/zod/src/v4/locales/uk.ts +2 -0
  897. package/node_modules/zod/src/v4/locales/ur.ts +2 -0
  898. package/node_modules/zod/src/v4/locales/uz.ts +2 -0
  899. package/node_modules/zod/src/v4/locales/vi.ts +2 -0
  900. package/node_modules/zod/src/v4/locales/yo.ts +2 -0
  901. package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
  902. package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
  903. package/node_modules/zod/src/v4/mini/external.ts +2 -0
  904. package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
  905. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
  906. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  907. package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
  908. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  909. package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
  910. package/node_modules/zod/v3/ZodError.cjs +19 -0
  911. package/node_modules/zod/v3/errors.cjs +19 -0
  912. package/node_modules/zod/v3/external.cjs +19 -0
  913. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  914. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  915. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  916. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  917. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  918. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  919. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  920. package/node_modules/zod/v3/index.cjs +19 -0
  921. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  922. package/node_modules/zod/v3/types.cjs +19 -0
  923. package/node_modules/zod/v4/classic/checks.cjs +19 -0
  924. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  925. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  926. package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
  927. package/node_modules/zod/v4/classic/errors.cjs +19 -0
  928. package/node_modules/zod/v4/classic/external.cjs +22 -1
  929. package/node_modules/zod/v4/classic/external.d.cts +1 -1
  930. package/node_modules/zod/v4/classic/external.d.ts +1 -1
  931. package/node_modules/zod/v4/classic/external.js +1 -1
  932. package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
  933. package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
  934. package/node_modules/zod/v4/classic/in-out.cjs +19 -0
  935. package/node_modules/zod/v4/classic/index.cjs +19 -0
  936. package/node_modules/zod/v4/classic/iso.cjs +19 -0
  937. package/node_modules/zod/v4/classic/parse.cjs +19 -0
  938. package/node_modules/zod/v4/classic/schemas.cjs +100 -35
  939. package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
  940. package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
  941. package/node_modules/zod/v4/classic/schemas.js +77 -33
  942. package/node_modules/zod/v4/core/api.cjs +45 -22
  943. package/node_modules/zod/v4/core/api.d.cts +12 -6
  944. package/node_modules/zod/v4/core/api.d.ts +12 -6
  945. package/node_modules/zod/v4/core/api.js +25 -22
  946. package/node_modules/zod/v4/core/checks.cjs +51 -97
  947. package/node_modules/zod/v4/core/checks.d.cts +17 -1
  948. package/node_modules/zod/v4/core/checks.d.ts +17 -1
  949. package/node_modules/zod/v4/core/checks.js +31 -96
  950. package/node_modules/zod/v4/core/compile.cjs +173 -78
  951. package/node_modules/zod/v4/core/compile.d.cts +18 -4
  952. package/node_modules/zod/v4/core/compile.d.ts +18 -4
  953. package/node_modules/zod/v4/core/compile.js +154 -79
  954. package/node_modules/zod/v4/core/core.cjs +20 -1
  955. package/node_modules/zod/v4/core/core.js +1 -1
  956. package/node_modules/zod/v4/core/doc.cjs +26 -2
  957. package/node_modules/zod/v4/core/doc.js +7 -2
  958. package/node_modules/zod/v4/core/errors.cjs +21 -5
  959. package/node_modules/zod/v4/core/errors.js +2 -5
  960. package/node_modules/zod/v4/core/index.cjs +19 -0
  961. package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
  962. package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
  963. package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
  964. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  965. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  966. package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
  967. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  968. package/node_modules/zod/v4/core/memoizer.cjs +111 -23
  969. package/node_modules/zod/v4/core/memoizer.js +69 -23
  970. package/node_modules/zod/v4/core/parse.cjs +56 -16
  971. package/node_modules/zod/v4/core/parse.js +37 -16
  972. package/node_modules/zod/v4/core/regexes.cjs +31 -6
  973. package/node_modules/zod/v4/core/regexes.d.cts +3 -0
  974. package/node_modules/zod/v4/core/regexes.d.ts +3 -0
  975. package/node_modules/zod/v4/core/regexes.js +10 -4
  976. package/node_modules/zod/v4/core/registries.cjs +19 -0
  977. package/node_modules/zod/v4/core/schemas.cjs +302 -114
  978. package/node_modules/zod/v4/core/schemas.d.cts +28 -8
  979. package/node_modules/zod/v4/core/schemas.d.ts +28 -8
  980. package/node_modules/zod/v4/core/schemas.js +279 -113
  981. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  982. package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
  983. package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
  984. package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
  985. package/node_modules/zod/v4/core/to-json-schema.js +7 -6
  986. package/node_modules/zod/v4/core/util.cjs +177 -143
  987. package/node_modules/zod/v4/core/util.d.cts +25 -4
  988. package/node_modules/zod/v4/core/util.d.ts +25 -4
  989. package/node_modules/zod/v4/core/util.js +156 -143
  990. package/node_modules/zod/v4/core/versions.cjs +21 -2
  991. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  992. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  993. package/node_modules/zod/v4/core/versions.js +2 -2
  994. package/node_modules/zod/v4/core/visit.cjs +19 -0
  995. package/node_modules/zod/v4/index.cjs +19 -0
  996. package/node_modules/zod/v4/locales/ar.cjs +2 -0
  997. package/node_modules/zod/v4/locales/ar.js +2 -0
  998. package/node_modules/zod/v4/locales/az.cjs +2 -0
  999. package/node_modules/zod/v4/locales/az.js +2 -0
  1000. package/node_modules/zod/v4/locales/be.cjs +2 -0
  1001. package/node_modules/zod/v4/locales/be.js +2 -0
  1002. package/node_modules/zod/v4/locales/bg.cjs +2 -0
  1003. package/node_modules/zod/v4/locales/bg.js +2 -0
  1004. package/node_modules/zod/v4/locales/bn.cjs +2 -0
  1005. package/node_modules/zod/v4/locales/bn.js +2 -0
  1006. package/node_modules/zod/v4/locales/ca.cjs +2 -0
  1007. package/node_modules/zod/v4/locales/ca.js +2 -0
  1008. package/node_modules/zod/v4/locales/ckb.cjs +2 -0
  1009. package/node_modules/zod/v4/locales/ckb.js +2 -0
  1010. package/node_modules/zod/v4/locales/cs.cjs +2 -0
  1011. package/node_modules/zod/v4/locales/cs.js +2 -0
  1012. package/node_modules/zod/v4/locales/da.cjs +2 -0
  1013. package/node_modules/zod/v4/locales/da.js +2 -0
  1014. package/node_modules/zod/v4/locales/de.cjs +2 -0
  1015. package/node_modules/zod/v4/locales/de.js +2 -0
  1016. package/node_modules/zod/v4/locales/el.cjs +2 -0
  1017. package/node_modules/zod/v4/locales/el.js +2 -0
  1018. package/node_modules/zod/v4/locales/en.cjs +2 -0
  1019. package/node_modules/zod/v4/locales/en.js +2 -0
  1020. package/node_modules/zod/v4/locales/eo.cjs +2 -0
  1021. package/node_modules/zod/v4/locales/eo.js +2 -0
  1022. package/node_modules/zod/v4/locales/es.cjs +2 -0
  1023. package/node_modules/zod/v4/locales/es.js +2 -0
  1024. package/node_modules/zod/v4/locales/fa.cjs +2 -0
  1025. package/node_modules/zod/v4/locales/fa.js +2 -0
  1026. package/node_modules/zod/v4/locales/fi.cjs +2 -0
  1027. package/node_modules/zod/v4/locales/fi.js +2 -0
  1028. package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
  1029. package/node_modules/zod/v4/locales/fr-CA.js +2 -0
  1030. package/node_modules/zod/v4/locales/fr.cjs +2 -0
  1031. package/node_modules/zod/v4/locales/fr.js +2 -0
  1032. package/node_modules/zod/v4/locales/gu.cjs +2 -0
  1033. package/node_modules/zod/v4/locales/gu.js +2 -0
  1034. package/node_modules/zod/v4/locales/he.cjs +2 -0
  1035. package/node_modules/zod/v4/locales/he.js +2 -0
  1036. package/node_modules/zod/v4/locales/hi.cjs +2 -0
  1037. package/node_modules/zod/v4/locales/hi.js +2 -0
  1038. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  1039. package/node_modules/zod/v4/locales/hr.js +2 -0
  1040. package/node_modules/zod/v4/locales/hu.cjs +2 -0
  1041. package/node_modules/zod/v4/locales/hu.js +2 -0
  1042. package/node_modules/zod/v4/locales/hy.cjs +2 -0
  1043. package/node_modules/zod/v4/locales/hy.js +2 -0
  1044. package/node_modules/zod/v4/locales/id.cjs +2 -0
  1045. package/node_modules/zod/v4/locales/id.js +2 -0
  1046. package/node_modules/zod/v4/locales/index.cjs +22 -1
  1047. package/node_modules/zod/v4/locales/index.d.cts +1 -0
  1048. package/node_modules/zod/v4/locales/index.d.ts +1 -0
  1049. package/node_modules/zod/v4/locales/index.js +1 -0
  1050. package/node_modules/zod/v4/locales/is.cjs +2 -0
  1051. package/node_modules/zod/v4/locales/is.js +2 -0
  1052. package/node_modules/zod/v4/locales/it.cjs +2 -0
  1053. package/node_modules/zod/v4/locales/it.js +2 -0
  1054. package/node_modules/zod/v4/locales/ja.cjs +2 -0
  1055. package/node_modules/zod/v4/locales/ja.js +2 -0
  1056. package/node_modules/zod/v4/locales/ka.cjs +2 -0
  1057. package/node_modules/zod/v4/locales/ka.js +2 -0
  1058. package/node_modules/zod/v4/locales/km.cjs +2 -0
  1059. package/node_modules/zod/v4/locales/km.js +2 -0
  1060. package/node_modules/zod/v4/locales/kn.cjs +2 -0
  1061. package/node_modules/zod/v4/locales/kn.js +2 -0
  1062. package/node_modules/zod/v4/locales/ko.cjs +2 -0
  1063. package/node_modules/zod/v4/locales/ko.js +2 -0
  1064. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  1065. package/node_modules/zod/v4/locales/lt.js +2 -0
  1066. package/node_modules/zod/v4/locales/mk.cjs +2 -0
  1067. package/node_modules/zod/v4/locales/mk.js +2 -0
  1068. package/node_modules/zod/v4/locales/ms.cjs +2 -0
  1069. package/node_modules/zod/v4/locales/ms.js +2 -0
  1070. package/node_modules/zod/v4/locales/ne.cjs +2 -0
  1071. package/node_modules/zod/v4/locales/ne.js +2 -0
  1072. package/node_modules/zod/v4/locales/nl.cjs +2 -0
  1073. package/node_modules/zod/v4/locales/nl.js +2 -0
  1074. package/node_modules/zod/v4/locales/nn.cjs +2 -0
  1075. package/node_modules/zod/v4/locales/nn.js +2 -0
  1076. package/node_modules/zod/v4/locales/no.cjs +2 -0
  1077. package/node_modules/zod/v4/locales/no.js +2 -0
  1078. package/node_modules/zod/v4/locales/ota.cjs +2 -0
  1079. package/node_modules/zod/v4/locales/ota.js +2 -0
  1080. package/node_modules/zod/v4/locales/pl.cjs +2 -0
  1081. package/node_modules/zod/v4/locales/pl.js +2 -0
  1082. package/node_modules/zod/v4/locales/ps.cjs +2 -0
  1083. package/node_modules/zod/v4/locales/ps.js +2 -0
  1084. package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
  1085. package/node_modules/zod/v4/locales/pt-BR.js +2 -0
  1086. package/node_modules/zod/v4/locales/pt.cjs +2 -0
  1087. package/node_modules/zod/v4/locales/pt.js +2 -0
  1088. package/node_modules/zod/v4/locales/ro.cjs +2 -0
  1089. package/node_modules/zod/v4/locales/ro.js +2 -0
  1090. package/node_modules/zod/v4/locales/ru.cjs +2 -0
  1091. package/node_modules/zod/v4/locales/ru.js +2 -0
  1092. package/node_modules/zod/v4/locales/sk.cjs +2 -0
  1093. package/node_modules/zod/v4/locales/sk.js +2 -0
  1094. package/node_modules/zod/v4/locales/sl.cjs +2 -0
  1095. package/node_modules/zod/v4/locales/sl.js +2 -0
  1096. package/node_modules/zod/v4/locales/sv.cjs +2 -0
  1097. package/node_modules/zod/v4/locales/sv.js +2 -0
  1098. package/node_modules/zod/v4/locales/ta.cjs +2 -0
  1099. package/node_modules/zod/v4/locales/ta.js +2 -0
  1100. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  1101. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  1102. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  1103. package/node_modules/zod/v4/locales/tg.js +117 -0
  1104. package/node_modules/zod/v4/locales/th.cjs +2 -0
  1105. package/node_modules/zod/v4/locales/th.js +2 -0
  1106. package/node_modules/zod/v4/locales/tk.cjs +2 -0
  1107. package/node_modules/zod/v4/locales/tk.js +2 -0
  1108. package/node_modules/zod/v4/locales/tr.cjs +2 -0
  1109. package/node_modules/zod/v4/locales/tr.js +2 -0
  1110. package/node_modules/zod/v4/locales/uk.cjs +2 -0
  1111. package/node_modules/zod/v4/locales/uk.js +2 -0
  1112. package/node_modules/zod/v4/locales/ur.cjs +2 -0
  1113. package/node_modules/zod/v4/locales/ur.js +2 -0
  1114. package/node_modules/zod/v4/locales/uz.cjs +2 -0
  1115. package/node_modules/zod/v4/locales/uz.js +2 -0
  1116. package/node_modules/zod/v4/locales/vi.cjs +2 -0
  1117. package/node_modules/zod/v4/locales/vi.js +2 -0
  1118. package/node_modules/zod/v4/locales/yo.cjs +2 -0
  1119. package/node_modules/zod/v4/locales/yo.js +2 -0
  1120. package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
  1121. package/node_modules/zod/v4/locales/zh-CN.js +2 -0
  1122. package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
  1123. package/node_modules/zod/v4/locales/zh-TW.js +2 -0
  1124. package/node_modules/zod/v4/mini/checks.cjs +19 -0
  1125. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  1126. package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
  1127. package/node_modules/zod/v4/mini/external.cjs +22 -1
  1128. package/node_modules/zod/v4/mini/external.d.cts +1 -1
  1129. package/node_modules/zod/v4/mini/external.d.ts +1 -1
  1130. package/node_modules/zod/v4/mini/external.js +1 -1
  1131. package/node_modules/zod/v4/mini/in-out.cjs +19 -0
  1132. package/node_modules/zod/v4/mini/index.cjs +19 -0
  1133. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  1134. package/node_modules/zod/v4/mini/parse.cjs +19 -0
  1135. package/node_modules/zod/v4/mini/schemas.cjs +44 -8
  1136. package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
  1137. package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
  1138. package/node_modules/zod/v4/mini/schemas.js +21 -6
  1139. package/node_modules/zod/v4-mini/index.cjs +19 -0
  1140. package/package.json +7 -5
@@ -0,0 +1,222 @@
1
+ # Install
2
+
3
+ `fs-safe` is published to npm as `@openclaw/fs-safe`. It targets Node 22 or newer, ships ESM only, and works on macOS, Linux, and Windows.
4
+
5
+ ## Package managers
6
+
7
+ ```bash
8
+ pnpm add @openclaw/fs-safe
9
+ ```
10
+
11
+ ```bash
12
+ npm install @openclaw/fs-safe
13
+ ```
14
+
15
+ ```bash
16
+ yarn add @openclaw/fs-safe
17
+ ```
18
+
19
+ ```bash
20
+ bun add @openclaw/fs-safe
21
+ ```
22
+
23
+ ## Node version
24
+
25
+ Minimum **Node 22**. The package uses `fs.promises`, `fs.constants.O_NOFOLLOW` where available, and `node:stream/promises`. Earlier Node releases will fail at import time.
26
+
27
+ Verify the runtime:
28
+
29
+ ```bash
30
+ node --version
31
+ # v22.0.0 or newer
32
+ ```
33
+
34
+ ## Bun runtime
35
+
36
+ Bun 1.4.2 can run the same public APIs and load the matching native package.
37
+ On macOS and Linux, fs-safe uses its Rust N-API addon to call the system
38
+ `realpath` implementation for native resolution. Ordinary resolution follows
39
+ Node's component walk, including lexical normalization of expanded symlink
40
+ targets, in Rust, with a 1,024-link expansion limit that returns `ELOOP` for
41
+ excessive or cyclic expansion. This works around Bun path-resolution defects that
42
+ otherwise reject restrictive permissions and confuse literal POSIX backslashes
43
+ with directory separators. The OS still resolves symlinks and canonical file
44
+ names; fs-safe retains its confinement and file-identity checks.
45
+
46
+ This works with `bun --jitless` and needs no runtime FFI or JIT. Use native mode
47
+ `auto` or `require` with the matching addon installed. `FS_SAFE_NATIVE_MODE=off`
48
+ still disables all addon loading; `auto` without the addon falls back to Bun's
49
+ resolver. Those configurations retain Bun 1.4.2's limitations with restrictive
50
+ permissions, sockets, literal backslashes, and symlink/parent traversal. Use
51
+ Node if you need full compatibility without the addon. On Bun POSIX, `require`
52
+ also rejects canonicalization when the addon or its canonicalizer is unavailable.
53
+
54
+ Node and Windows use their existing runtime canonicalizers. On Windows, Bun's
55
+ recursive directory creation receives an absolute spelling that preserves raw
56
+ path components, working around its rejection of existing relative `.` and `..`
57
+ directories. Windows native descriptor-relative operations require Bun to expose
58
+ the paired libuv descriptor bridge from its host executable; a missing or partial
59
+ bridge fails explicitly with `ENOTSUP`. Public paths and caller-supplied filesystem
60
+ adapters remain unchanged.
61
+
62
+ The upstream fix is tracked in [Bun #42374](https://github.com/oven-sh/bun/pull/42374).
63
+ The adapter can be removed when the supported Bun baseline includes that fix.
64
+ Run native compatibility checks with `pnpm test:bun:native` after building the
65
+ package and addon. See [contributing](contributing.md) for the Node/pnpm toolchain
66
+ and the broader diagnostic suite.
67
+
68
+ ## TypeScript
69
+
70
+ Types ship with the package — no `@types/openclaw__fs-safe` needed. The `exports` map in `package.json` provides typed entries for every subpath:
71
+
72
+ ```ts
73
+ import { root, FsSafeError } from "@openclaw/fs-safe";
74
+ import { writeJson } from "@openclaw/fs-safe/json";
75
+ import { extractArchive } from "@openclaw/fs-safe/archive";
76
+ ```
77
+
78
+ A working `tsconfig.json` for consumers:
79
+
80
+ ```jsonc
81
+ {
82
+ "compilerOptions": {
83
+ "target": "es2022",
84
+ "module": "node18",
85
+ "moduleResolution": "node16",
86
+ "strict": true,
87
+ "esModuleInterop": true,
88
+ "skipLibCheck": true
89
+ }
90
+ }
91
+ ```
92
+
93
+ ## Subpath exports
94
+
95
+ Use the main entry for the common surface, or the focused subpaths when you want a leaner import or to depend on a narrower contract:
96
+
97
+ | Subpath | Contents |
98
+ |---|---|
99
+ | `@openclaw/fs-safe` | Common root, config, output, lock, native-mode, and error exports. |
100
+ | `@openclaw/fs-safe/root` | `root()`, `Root`, `RootDefaults`, and root-walk types. |
101
+ | `@openclaw/fs-safe/config` | Process-global native helper and lock defaults. |
102
+ | `@openclaw/fs-safe/path` | `isPathInside`, `safeRealpathSync`, `isWithinDir`, error helpers. |
103
+ | `@openclaw/fs-safe/output` | Guarded staging/finalization for libraries that require an absolute output path. |
104
+ | `@openclaw/fs-safe/json` | `tryReadJson`, `readJson`, `readJsonIfExists`, `writeJson`, sync variants. |
105
+ | `@openclaw/fs-safe/store` | `fileStore()`, `fileStoreSync()`, and `jsonStore<T>()`. |
106
+ | `@openclaw/fs-safe/secret` | Secret file read/write helpers. |
107
+ | `@openclaw/fs-safe/atomic` | `replaceFileAtomic`, `writeTextAtomic`, `replaceDirectoryAtomic`, `movePathWithCopyFallback`. |
108
+ | `@openclaw/fs-safe/durability` | Pinned directories, strict sync, durable directory creation, exclusive publication, and streaming SHA-256. |
109
+ | `@openclaw/fs-safe/temp` | `tempWorkspace`, `withTempWorkspace`, sync variants, `resolveSecureTempRoot`. |
110
+ | `@openclaw/fs-safe/secure-file` | `readSecureFile` for pinned absolute file reads with permissions checks. |
111
+ | `@openclaw/fs-safe/file-lock` | `acquireFileLock`, `withFileLock`, `createFileLockManager`, and related lock types. |
112
+ | `@openclaw/fs-safe/permissions` | POSIX mode helpers, Windows ACL inspection/remediation, raw owner/ACE facts, and private-directory creation. |
113
+ | `@openclaw/fs-safe/walk` | `walkDirectory`, `walkDirectorySync`, related types. Budget-bounded, not root-bounded. |
114
+ | `@openclaw/fs-safe/archive` | `extractArchive`, `readArchiveEntry`, kind resolution, policy types, limits, and preflight helpers. |
115
+ | `@openclaw/fs-safe/advanced` | Lower-level composition helpers: path scopes, root-file open, install paths, local-root readers, temp-file targets, sibling-temp writes, regular-file helpers, `pathExists`, `withTimeout`, and related advanced types. This surface is less stable than the focused public subpaths. |
116
+ | `@openclaw/fs-safe/errors` | `FsSafeError`, `FsSafeErrorCode`. |
117
+ | `@openclaw/fs-safe/types` | Shared types: `DirEntry`, `PathStat`, `BasePathOptions`, … |
118
+ | `@openclaw/fs-safe/test-hooks` | Test-only hooks for injecting races. Active under `NODE_ENV=test`. |
119
+
120
+ ## Runtime dependencies
121
+
122
+ `@openclaw/fs-safe` bundles an import-free WASM build of its Rust TAR parser and zstd/bzip2 codecs for guarded [archive extraction and bounded entry reads](archive.md). Plain TAR, gzip, zstd, and bzip2 work in `off` and missing-native `auto`, including installs with all optional dependencies omitted; gzip uses Node's built-in decoder. These archive fallbacks need no runtime interpreter, download, or consumer compiler. ZIP fallback uses lazily loaded optional `jszip` and reports a missing-dependency error without it. Public subpaths remain safe to import with all optional dependencies omitted, but imports do not prove native availability. Native `require` remains strict, and an available native operation's failure never triggers a WASM retry.
123
+
124
+ There are no peer dependencies. Exact-version optional packages carry the seven
125
+ native targets and npm-compatible OS, CPU, and Linux libc filters install only
126
+ the matching binary. Consumers do not run a Rust build, download code at
127
+ runtime, or execute a postinstall step. Omitting optional dependencies keeps
128
+ fallback-capable operations working in `auto` or `off`. Native-only
129
+ features, including strict owned-tree temp cleanup, retained-directory staging,
130
+ and atomic `rename-noreplace` (including the default no-clobber `Root.move()`),
131
+ remain unavailable. Operations without a safe fallback fail with `helper-unavailable`
132
+ when the matching package is absent, incompatible, or disabled.
133
+
134
+ Upgrading an existing 0.5 consumer? Follow [Migrating to 0.6](migrating-to-0.6.md)
135
+ before deploying with native mode `require` or native-only features.
136
+
137
+ ### Windows security fallback
138
+
139
+ Windows raw owner/DACL inspection, private-directory creation, and secure-file
140
+ reads work without the addon in `auto` or `off` mode when system Windows
141
+ PowerShell and its .NET `Add-Type` compilation support are available. The package
142
+ ships a readable, fixed `.ps1` driver and adjacent `.cs` source and invokes the
143
+ driver with Windows PowerShell `-File`. Paths are passed as data. The fallback
144
+ does not generate helper scripts at runtime or use an encoded launcher.
145
+ The driver addresses built-in commands by module name and limits module
146
+ discovery to PowerShell's bundled system modules, avoiding broad command
147
+ discovery scans during each helper startup.
148
+
149
+ Normal PowerShell execution policy and Microsoft Defender policy must permit
150
+ the packaged scripts, including their use of `Add-Type`. The package does not
151
+ bypass restrictions, change policies, or add exclusions. Unsupported or
152
+ disallowed command execution fails closed.
153
+
154
+ The fallback preserves private DACLs at creation and inspects the same open
155
+ handle that supplies secure-file bytes. Each capability emits a path-free
156
+ `FS_SAFE_NATIVE_FALLBACK` warning once per process; each call adds PowerShell
157
+ startup and compilation overhead. Execution or compilation failure also fails
158
+ closed. Native `require` still rejects a missing binding or capability, and an
159
+ available native operation's error never triggers a command retry. See
160
+ [Permissions](permissions.md) and [Secure file reads](secure-file.md).
161
+
162
+ ## Native helper policy
163
+
164
+ The platform native binaries provide fd-relative open/link/mkdir primitives,
165
+ atomic no-replace rename, and file identity checks. The default is `auto`: use
166
+ the matching binary when it loads, otherwise use the guarded JavaScript path
167
+ where a safe fallback exists. Native-only operations fail with
168
+ `helper-unavailable`.
169
+
170
+ ```ts
171
+ import { configureFsSafeNative } from "@openclaw/fs-safe/config";
172
+
173
+ configureFsSafeNative({ mode: "auto" }); // default
174
+ configureFsSafeNative({ mode: "off" }); // disable the addon; reject native-only operations
175
+ configureFsSafeNative({ mode: "require" }); // fail closed if unavailable
176
+ ```
177
+
178
+ Environment variables are read at runtime:
179
+
180
+ ```bash
181
+ FS_SAFE_NATIVE_MODE=off # auto | off | require
182
+ ```
183
+
184
+ `OPENCLAW_FS_SAFE_NATIVE_MODE` is also accepted.
185
+
186
+ Disabling native loading keeps fallback-capable operations working through Node path
187
+ operations guarded by lexical and canonical checks plus identity verification.
188
+ Use `require` when native-backed operations must fail instead of falling back.
189
+ Temp workspaces retain compatible JavaScript quarantine cleanup in `auto` and
190
+ `off`. Set `cleanupSafety: "require-bounded"` to reject before child creation
191
+ unless native no-replace quarantine and descriptor-bounded tree removal are
192
+ available. See the [temp workspace contract](temp.md#private-temp-workspaces). The exact boundary
193
+ for other operations is documented in [native helper policy](native-helper.md).
194
+
195
+ ## Verify the install
196
+
197
+ ```ts
198
+ import { root, FsSafeError } from "@openclaw/fs-safe";
199
+ import os from "node:os";
200
+ import path from "node:path";
201
+
202
+ const dir = path.join(os.tmpdir(), "fs-safe-smoke");
203
+ await import("node:fs/promises").then((fs) => fs.mkdir(dir, { recursive: true }));
204
+
205
+ const fs = await root(dir);
206
+ await fs.write("hello.txt", "ok\n");
207
+ console.log(await fs.readText("hello.txt"));
208
+
209
+ try {
210
+ await fs.write("../escape.txt", "x");
211
+ } catch (err) {
212
+ if (err instanceof FsSafeError) console.log("blocked:", err.code);
213
+ }
214
+ ```
215
+
216
+ If the script prints `ok` followed by `blocked: outside-workspace`, your install is healthy.
217
+
218
+ ## Next
219
+
220
+ - [Quickstart](quickstart.md) — write, read, atomic, temp.
221
+ - [Security model](security-model.md) — what the boundary defends against.
222
+ - [Errors](errors.md) — the closed code union you'll be catching.
@@ -0,0 +1,240 @@
1
+ # JSON store
2
+
3
+ `jsonStore` is exported from `@openclaw/fs-safe/store`. It is the single-path
4
+ convenience wrapper for `fileStore(...).json(...)`: a small read-modify-write
5
+ handle around a single JSON file. It bakes in atomic writes, explicit fallback
6
+ reads, and optional cross-process locking via
7
+ [`acquireFileLock`](sidecar-lock.md).
8
+
9
+ ```ts
10
+ import { jsonStore } from "@openclaw/fs-safe/store";
11
+
12
+ const settings = jsonStore<{ theme: "light" | "dark"; volume: number }>({
13
+ filePath: "/var/lib/app/settings.json",
14
+ });
15
+
16
+ const current = await settings.readOr({ theme: "dark", volume: 0.7 });
17
+ await settings.write({ ...current, volume: 1 });
18
+ await settings.updateOr({ theme: "dark", volume: 0.7 }, (prev) => ({ ...prev, theme: "light" }));
19
+ ```
20
+
21
+ If you already have a store/root context, prefer binding the JSON file from that
22
+ store:
23
+
24
+ ```ts
25
+ import { fileStore } from "@openclaw/fs-safe/store";
26
+
27
+ const files = fileStore({ rootDir: "/var/lib/app", private: true });
28
+ const settings = files.json<Settings>("settings.json", { lock: true });
29
+ ```
30
+
31
+ ## When to reach for it
32
+
33
+ - You have a single JSON state file and want `read / readOr / readRequired / write / update` semantics.
34
+ - You want every write atomic at file mode `0o600` and parents at `0o700` by default.
35
+ - You want optional cross-process locking with one boolean.
36
+
37
+ For ad-hoc read/write of multiple JSON files, use the standalone helpers in
38
+ [`json`](json.md). For object-style storage of many files at known modes, use
39
+ [`fileStore`](file-store.md) and bind JSON files with `store.json(rel)`.
40
+
41
+ ## Factory: `jsonStore<T>(options)`
42
+
43
+ ```ts
44
+ type JsonStoreOptions<T> = {
45
+ filePath: string;
46
+ dirMode?: number; // default 0o700
47
+ mode?: number; // default 0o600
48
+ durable?: boolean; // default true
49
+ trailingNewline?: boolean; // default true
50
+ lock?: boolean | JsonStoreLockOptions; // false / undefined = no lock
51
+ };
52
+
53
+ type JsonStoreLockOptions = {
54
+ staleMs?: number; // default 30_000
55
+ timeoutMs?: number; // default 30_000
56
+ retry?: FileLockRetryOptions;
57
+ staleRecovery?: "fail-closed" | "remove-if-unchanged";
58
+ managerKey?: string; // default `fs-safe.json-store:<filePath>`
59
+ };
60
+
61
+ type JsonStore<T> = {
62
+ readonly filePath: string;
63
+ read(): Promise<T | undefined>;
64
+ readOr(fallback: T): Promise<T>;
65
+ readRequired(): Promise<T>;
66
+ write(value: T): Promise<void>;
67
+ update(run: (current: T | undefined) => T | Promise<T>): Promise<T>;
68
+ updateOr(fallback: T, run: (current: T) => T | Promise<T>): Promise<T>;
69
+ };
70
+ ```
71
+
72
+ `jsonStore({ filePath })` resolves `rootDir = dirname(filePath)` and calls
73
+ `fileStore({ rootDir, private: true }).json(basename(filePath), options)`.
74
+ On Windows, the factory rejects NTFS alternate-stream and directory-index
75
+ namespace spellings before preparing its private parent. An ordinary
76
+ drive-relative path is anchored at entry and `store.filePath` exposes the
77
+ resulting absolute path; ordinary colon-bearing POSIX paths remain valid.
78
+
79
+ `durable: false` keeps sibling-temp replace/rename behavior but skips the
80
+ temp-file and parent-directory `fsync` calls. Use it only for reconstructible
81
+ metadata where lower latency matters more than crash-durability. The default
82
+ is `true`, subject to platform sync support. This store-level policy applies
83
+ to `write`, `update`, and `updateOr`; these methods have no per-call options.
84
+ For `fileStore(...).json(rel, options)`, `options.durable` overrides the parent
85
+ file store's durability, while omission or `undefined` inherits it. Modes,
86
+ identity checks, mutation serialization, and sidecar locking are unchanged.
87
+
88
+ Each `write`, `update`, or `updateOr` invocation captures the retained options'
89
+ `durable` and `trailingNewline` values before queueing, locking, reading, or
90
+ calling the updater. Changes to those options affect later invocations only,
91
+ including when a mutation is waiting behind another operation.
92
+
93
+ The store does **not** validate the parsed value against `T` at runtime — the cast is unchecked. Wrap with a schema (zod/valibot) if the file might be hand-edited or written by another process you don't control.
94
+
95
+ ## `read()`
96
+
97
+ Returns the parsed contents, or `undefined` if the file does not exist. Invalid JSON throws (via [`readJsonIfExists`](json.md)).
98
+
99
+ ```ts
100
+ const state = await store.read();
101
+ ```
102
+
103
+ ## `readOr(fallback)`
104
+
105
+ Returns the parsed contents or the per-call fallback. Object fallbacks are cloned so callers can safely mutate the returned value:
106
+
107
+ ```ts
108
+ const state = await store.readOr(defaultState);
109
+ ```
110
+
111
+ ## `readRequired()`
112
+
113
+ Strict disk read. Throws when the file is missing or invalid:
114
+
115
+ ```ts
116
+ const state = await store.readRequired();
117
+ ```
118
+
119
+ ## `write(value)`
120
+
121
+ Atomic JSON write at `mode` (default `0o600`), creating parent dirs at `dirMode` (default `0o700`) if needed. When `lock: true` is set, takes the sidecar lock for the duration of the write.
122
+
123
+ ```ts
124
+ await store.write({ ...state, lastSeen: Date.now() });
125
+ ```
126
+
127
+ ## `update(run)`
128
+
129
+ Read, transform, write — under the lock if locking is enabled. Returns the new value:
130
+
131
+ ```ts
132
+ const next = await store.update((prev) => ({ count: (prev?.count ?? 0) + 1 }));
133
+ ```
134
+
135
+ `run` is async-friendly. The whole `read → run → write` sequence is serialized
136
+ by canonical file path inside the process. With locking enabled, the sidecar
137
+ lock is acquired inside that queue, so concurrent updaters from different
138
+ processes serialize cleanly too.
139
+
140
+ Do not call `write()`, `update()`, or `updateOr()` for the same file from inside
141
+ an update callback. That nested mutation cannot run until the outer update
142
+ finishes, so `jsonStore` rejects it immediately with
143
+ `FsSafeError("store-reentrant-update")`. Return the complete next value from the
144
+ outer callback instead. The check follows Node async context, including promise
145
+ and `queueMicrotask` boundaries.
146
+
147
+ Use `update(run)` when missing state is part of your model. Use `updateOr(fallback, run)` when the missing-file case should start from a concrete value and you want to merge into defaults:
148
+
149
+ ```ts
150
+ const next = await store.updateOr({ count: 0 }, (prev) => ({ count: prev.count + 1 }));
151
+ ```
152
+
153
+ ## Locking
154
+
155
+ Set `lock: true` for default behavior, or pass an options object to tune:
156
+
157
+ ```ts
158
+ const counter = jsonStore<{ count: number }>({
159
+ filePath: "/var/lib/app/counter.json",
160
+ lock: {
161
+ staleMs: 60_000,
162
+ timeoutMs: 10_000,
163
+ staleRecovery: "fail-closed",
164
+ retry: { retries: 30, minTimeout: 100, maxTimeout: 5_000, randomize: true },
165
+ },
166
+ });
167
+ ```
168
+
169
+ When `lock` is falsy, writes and updates still serialize inside this process by
170
+ canonical file path, including across separate `jsonStore` handles. They offer
171
+ no concurrency guarantees if another process also writes to the file.
172
+
173
+ Process-wide lock defaults from `configureFsSafeLocks()` apply only after locking is explicitly enabled. They do not make JSON stores lock by default.
174
+
175
+ JSON store locks fail closed on stale sidecars by default. Opt-in `staleRecovery: "remove-if-unchanged"` requires caller approval and uses the same exclusive reclaim guard as the low-level sidecar-lock API.
176
+
177
+ The default `managerKey` namespaces the `FileLockManager` per absolute file
178
+ path. The JSON-store queue is independent of the manager key, so separate
179
+ handles and custom lock-manager namespaces still cannot overlap mutations of
180
+ the same canonical file path inside one process.
181
+
182
+ ## Common patterns
183
+
184
+ ### Per-feature settings file
185
+
186
+ ```ts
187
+ type Settings = { theme: "light" | "dark"; muted: boolean };
188
+
189
+ const settings = jsonStore<Settings>({
190
+ filePath: path.join(homedir(), ".myapp/settings.json"),
191
+ });
192
+
193
+ // Read on boot
194
+ applySettings(await settings.readOr({ theme: "dark", muted: false }));
195
+
196
+ // Toggle on UI action
197
+ await settings.update((prev) => {
198
+ const current = prev ?? { theme: "dark", muted: false };
199
+ return { ...current, muted: !current.muted };
200
+ });
201
+ ```
202
+
203
+ ### Cross-process counter
204
+
205
+ ```ts
206
+ const counter = jsonStore<{ count: number }>({
207
+ filePath: "/var/lib/app/counter.json",
208
+ lock: true,
209
+ });
210
+
211
+ const { count } = await counter.updateOr({ count: 0 }, (prev) => ({ count: prev.count + 1 }));
212
+ console.log("now at", count);
213
+ ```
214
+
215
+ ### Migration on boot
216
+
217
+ ```ts
218
+ const config = jsonStore<Config>({ filePath });
219
+ const current = await config.readOr(defaultConfig);
220
+ if (current.version !== CURRENT_VERSION) {
221
+ await config.write(migrate(current));
222
+ }
223
+ ```
224
+
225
+ ## Difference from raw `writeJson` / `readJsonIfExists`
226
+
227
+ | `jsonStore` | Raw helpers |
228
+ |---|---|
229
+ | Read-modify-write in one call (`update`). | Compose `readJsonIfExists` + `writeJson` yourself. |
230
+ | Optional cross-process lock with one flag. | Manage `withFileLock` yourself. |
231
+ | Explicit `readOr` / `updateOr` fallbacks. | Caller handles `null` and clones. |
232
+ | Mode/dirMode locked per store. | Per-call. |
233
+
234
+ `jsonStore` is the right shape when one file owns one piece of state and many call sites read or update it. For one-off writes, the raw helpers are leaner.
235
+
236
+ ## See also
237
+
238
+ - [JSON files](json.md) — the standalone helpers `jsonStore` is built on.
239
+ - [File lock](sidecar-lock.md) — the cross-process lock used when `lock: true`.
240
+ - [File store](file-store.md) — the multi-file equivalent of this surface.
@@ -0,0 +1,225 @@
1
+ # JSON files
2
+
3
+ `@openclaw/fs-safe/json` is the standalone JSON surface: strict and lenient read variants plus atomic JSON writes.
4
+
5
+ ```ts
6
+ import {
7
+ tryReadJson,
8
+ readJson,
9
+ readJsonIfExists,
10
+ readJsonSync,
11
+ tryReadJsonSync,
12
+ readRootJsonSync,
13
+ readRootJsonObjectSync,
14
+ readRootStructuredFileSync,
15
+ writeJson,
16
+ writeJsonSync,
17
+ JsonFileReadError,
18
+ } from "@openclaw/fs-safe/json";
19
+ ```
20
+
21
+ ## Three reads, three failure shapes
22
+
23
+ Same input, three distinct contracts — pick the one whose error story matches your call site:
24
+
25
+ ```ts
26
+ await readJson<T>("./manifest.json"); // throws JsonFileReadError on missing or invalid
27
+ await readJsonIfExists<T>("./cache.json"); // returns null on missing; throws on invalid
28
+ await tryReadJson<T>("./optional.json"); // returns null on missing or invalid
29
+ ```
30
+
31
+ | Helper | Missing file | Invalid JSON |
32
+ |---|---|---|
33
+ | `readJson` | throws | throws |
34
+ | `readJsonIfExists` | `null` | throws |
35
+ | `tryReadJson` | `null` | `null` |
36
+
37
+ Use `readJson` when missing-or-malformed is a programmer error you want to surface immediately. Use `readJsonIfExists` when "file not there" is normal but malformed bytes should still page someone. Use `tryReadJson` when neither outcome should crash the caller.
38
+
39
+ `JsonFileReadError` carries `cause` so you can inspect whether the underlying failure was an `ENOENT`, a `SyntaxError`, or something else.
40
+
41
+ On Windows, filesystem path inputs reject NTFS alternate-stream and
42
+ directory-index namespace spellings such as `file:stream` and
43
+ `dir::$INDEX_ALLOCATION`; ordinary colon-bearing POSIX names remain valid.
44
+ Standalone JSON writers preserve their released support for an ordinary
45
+ drive-relative destination by anchoring its leading drive designator at entry
46
+ without normalizing the remaining suffix. Any additional colon is still
47
+ rejected before filesystem access.
48
+ Strict standalone readers retain `JsonFileReadError` and expose the
49
+ `invalid-path` rejection as its cause, lenient `tryReadJson*` calls return
50
+ `null`, and root-bounded readers report an `open`/`validation` failure.
51
+
52
+ ## Reading
53
+
54
+ ### `readJson<T>(filePath, options?)`
55
+
56
+ Async strict reader. Throws `JsonFileReadError` on missing or invalid input. The cast is unchecked — validate the shape with your own schema (zod, valibot, …) if it came from an untrusted source.
57
+
58
+ ```ts
59
+ const manifest = await readJson<Manifest>("./manifest.json");
60
+ const smallManifest = await readJson<Manifest>("./manifest.json", {
61
+ maxBytes: 256 * 1024,
62
+ });
63
+ ```
64
+
65
+ All standalone readers accept `{ maxBytes?: number }`. When set, the read is
66
+ incremental and consumes no more than `maxBytes + 1` bytes before rejecting, so
67
+ file growth after the initial stat cannot cause an unbounded allocation.
68
+
69
+ ### `readJsonIfExists<T>(filePath, options?)`
70
+
71
+ Async semi-lenient reader. Returns `null` if the file is missing; throws `JsonFileReadError` if the file exists but cannot be parsed.
72
+
73
+ ```ts
74
+ const cache = (await readJsonIfExists<Cache>("./cache.json")) ?? freshCache();
75
+ ```
76
+
77
+ ### `tryReadJson<T>(filePath, options?)`
78
+
79
+ Async lenient reader. Returns `null` for any failure (missing, unreadable, invalid). The "no fuss" sibling.
80
+
81
+ ```ts
82
+ const optional = (await tryReadJson<Settings>("./settings.json")) ?? defaults;
83
+ ```
84
+
85
+ ### `readJsonSync<T>(filePath, options?)`
86
+
87
+ Synchronous strict reader. Throws `JsonFileReadError` on missing or invalid input, matching the async `readJson` contract.
88
+
89
+ ### `tryReadJsonSync<T>(pathname, options?)`
90
+
91
+ Synchronous, generic, lenient. Returns `T | null`. Useful in boot paths where you want a typed result without async.
92
+
93
+ ## Root-bounded structured reads
94
+
95
+ Use the root-bounded readers when you already have a trusted root directory and
96
+ a caller-controlled relative path, but you only need one synchronous structured
97
+ read instead of a full `root()` handle.
98
+
99
+ ```ts
100
+ const result = readRootJsonObjectSync({
101
+ rootDir: "/safe/workspace",
102
+ relativePath: "plugin/openclaw.plugin.json",
103
+ boundaryLabel: "plugin manifest",
104
+ maxBytes: 256 * 1024,
105
+ });
106
+
107
+ if (!result.ok) {
108
+ // reason is "open", "parse", or "invalid"
109
+ throw new Error(result.reason);
110
+ }
111
+
112
+ console.log(result.value);
113
+ ```
114
+
115
+ `readRootJsonSync()` parses any JSON value. `readRootJsonObjectSync()` only
116
+ accepts objects. `readRootStructuredFileSync()` accepts a custom parser and
117
+ validator so callers can layer JSON5, TOML, YAML, or domain-specific validation
118
+ without making `fs-safe` depend on those formats.
119
+
120
+ ## Writing
121
+
122
+ ### `writeJson(filePath, value, options?)`
123
+
124
+ Async atomic JSON write. `JSON.stringify(value, null, 2)` + sibling-temp + rename. Defaults to file mode `0o600`.
125
+
126
+ ```ts
127
+ await writeJson("./state.json", state, { trailingNewline: true });
128
+ ```
129
+
130
+ Options:
131
+
132
+ ```ts
133
+ type WriteJsonOptions = {
134
+ mode?: number; // file mode (default 0o600)
135
+ dirMode?: number; // mode for parent dirs created on demand
136
+ trailingNewline?: boolean; // append "\n" if missing (default false)
137
+ durable?: boolean; // default true; false skips temp/parent fsync
138
+ };
139
+ ```
140
+
141
+ `durable: false` preserves atomic temp-file replacement but skips the temp-file
142
+ and parent-directory `fsync` calls. Use it only for reconstructible JSON state
143
+ where lower latency matters more than crash-durability.
144
+
145
+ ### `writeJsonSync(pathname, data)`
146
+
147
+ Synchronous variant. It pretty-prints with two spaces, appends a newline,
148
+ creates parents at `0o700`, writes at `0o600`, and synchronizes the parent
149
+ directory best-effort. A retained staging descriptor carries the exact bigint
150
+ identity through rename and file-mode tightening. Publication and cleanup never
151
+ adopt a substituted temporary file: a changed identity, type or link count rejects
152
+ the write and leaves the replacement untouched. A swap detected after publication
153
+ also rejects without deleting or changing the replacement. It has no options bag. On `EPERM`/`EEXIST`, its legacy
154
+ compatibility path removes the existing destination and retries the staged-file
155
+ rename, so that fallback is temporarily non-atomic while retaining the staged
156
+ file's `0600` mode; use the async `writeJson()`/`replaceFileAtomic()` surfaces
157
+ when fallback policy must be explicit.
158
+
159
+ Its private sibling temporary name is independent of the destination basename,
160
+ so staging does not lengthen a valid destination filename.
161
+
162
+ ```ts
163
+ writeJsonSync("./prefs.json", { theme: "dark" });
164
+ ```
165
+
166
+ For atomic text writes, use [`writeTextAtomic`](atomic.md) from `@openclaw/fs-safe/atomic`. For in-process serialization, use `createAsyncLock` from the advanced surface, or prefer [`jsonStore`](json-store.md) when you want a JSON-specific read-modify-write helper.
167
+
168
+ ## Common patterns
169
+
170
+ ### Read-modify-write
171
+
172
+ ```ts
173
+ const state = (await readJsonIfExists<State>("./state.json")) ?? initialState();
174
+ state.lastRun = Date.now();
175
+ await writeJson("./state.json", state, { mode: 0o600, dirMode: 0o700 });
176
+ ```
177
+
178
+ ### Atomic with secure mode
179
+
180
+ For credentials or other sensitive JSON, write at mode `0o600`:
181
+
182
+ ```ts
183
+ await writeJson("./auth.json", token, { mode: 0o600, dirMode: 0o700 });
184
+ ```
185
+
186
+ For higher-assurance secrets, prefer the dedicated [secret-file helpers](secret-file.md) — they create the parent directory at `0o700` if missing.
187
+
188
+ ### Strict load on boot
189
+
190
+ ```ts
191
+ let manifest: Manifest;
192
+ try {
193
+ manifest = await readJson<Manifest>("./manifest.json");
194
+ } catch (err) {
195
+ if (err instanceof JsonFileReadError) {
196
+ console.error("manifest unreadable:", err.cause);
197
+ process.exit(1);
198
+ }
199
+ throw err;
200
+ }
201
+ ```
202
+
203
+ ### Concurrent readers, single writer
204
+
205
+ ```ts
206
+ const state = await readJsonIfExists<State>("./state.json");
207
+ // missing returns null; malformed JSON still throws
208
+ ```
209
+
210
+ ## Error reference
211
+
212
+ | Throw / return | When |
213
+ |---|---|
214
+ | `null` from `tryReadJson` / `tryReadJsonSync` | Any read or parse failure. |
215
+ | `null` from `readJsonIfExists` | File is missing; invalid or unreadable input still throws. |
216
+ | `JsonFileReadError` | `readJson` or `readJsonIfExists` saw unreadable or invalid input. Inspect `cause`. |
217
+ | Native `NodeJS.ErrnoException` | Lower-level fs errors not wrapped. |
218
+
219
+ ## See also
220
+
221
+ - [JSON store](json-store.md) — a single-file state wrapper with explicit per-call fallback (`readOr` / `updateOr`) and optional sidecar locking.
222
+ - [Atomic writes](atomic.md) — lower-level sibling-temp replacement helpers.
223
+ - [Secret files](secret-file.md) — JSON-or-text writes with mode 0600 in mode 0700 dirs.
224
+ - [Private file-store mode](private-file-store.md) — root-bounded JSON+text state stores.
225
+ - [File lock](sidecar-lock.md) — cross-process coordination.