@openclaw/openshell-sandbox 2026.9.3 → 2026.9.5

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 (1109) hide show
  1. package/assets/activity.svg +3 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/index.js +32 -26
  4. package/node_modules/@openclaw/fs-safe/CHANGELOG.md +285 -0
  5. package/node_modules/@openclaw/fs-safe/LICENSE +1 -0
  6. package/node_modules/@openclaw/fs-safe/README.md +65 -10
  7. package/node_modules/@openclaw/fs-safe/dist/absolute-path.d.ts.map +1 -1
  8. package/node_modules/@openclaw/fs-safe/dist/absolute-path.js +33 -11
  9. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +8 -1
  10. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts.map +1 -1
  11. package/node_modules/@openclaw/fs-safe/dist/advanced.js +8 -1
  12. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.d.ts.map +1 -1
  13. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.js +6 -1
  14. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.d.ts.map +1 -1
  15. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.js +3 -4
  16. package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts +24 -0
  17. package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts.map +1 -0
  18. package/node_modules/@openclaw/fs-safe/dist/archive-durability.js +180 -0
  19. package/node_modules/@openclaw/fs-safe/dist/archive-entry.d.ts.map +1 -1
  20. package/node_modules/@openclaw/fs-safe/dist/archive-entry.js +8 -8
  21. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts +3 -0
  22. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts.map +1 -1
  23. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.js +33 -8
  24. package/node_modules/@openclaw/fs-safe/dist/archive-input.d.ts.map +1 -1
  25. package/node_modules/@openclaw/fs-safe/dist/archive-input.js +14 -8
  26. package/node_modules/@openclaw/fs-safe/dist/archive-kind.d.ts.map +1 -1
  27. package/node_modules/@openclaw/fs-safe/dist/archive-kind.js +3 -2
  28. package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts +6 -1
  29. package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts.map +1 -1
  30. package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +68 -19
  31. package/node_modules/@openclaw/fs-safe/dist/archive-native.d.ts +1 -0
  32. package/node_modules/@openclaw/fs-safe/dist/archive-native.d.ts.map +1 -1
  33. package/node_modules/@openclaw/fs-safe/dist/archive-native.js +15 -25
  34. package/node_modules/@openclaw/fs-safe/dist/archive-options.d.ts +2 -0
  35. package/node_modules/@openclaw/fs-safe/dist/archive-options.d.ts.map +1 -1
  36. package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
  37. package/node_modules/@openclaw/fs-safe/dist/archive-plan.js +1 -1
  38. package/node_modules/@openclaw/fs-safe/dist/archive-read.d.ts.map +1 -1
  39. package/node_modules/@openclaw/fs-safe/dist/archive-read.js +128 -109
  40. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +6 -3
  41. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts.map +1 -1
  42. package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +100 -42
  43. package/node_modules/@openclaw/fs-safe/dist/archive-tar-inspect.d.ts.map +1 -1
  44. package/node_modules/@openclaw/fs-safe/dist/archive-tar-inspect.js +4 -1
  45. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts +11 -4
  46. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts.map +1 -1
  47. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.js +23 -10
  48. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.d.ts.map +1 -1
  49. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.js +18 -14
  50. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts +2 -2
  51. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts.map +1 -1
  52. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.js +50 -14
  53. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts +3 -0
  54. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts.map +1 -1
  55. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.js +13 -2
  56. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts +7 -0
  57. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts.map +1 -0
  58. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.js +64 -0
  59. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts +5 -0
  60. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts.map +1 -0
  61. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.js +22 -0
  62. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts +6 -1
  63. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts.map +1 -1
  64. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.js +56 -18
  65. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts +2 -3
  66. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts.map +1 -1
  67. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.js +4 -35
  68. package/node_modules/@openclaw/fs-safe/dist/archive.d.ts.map +1 -1
  69. package/node_modules/@openclaw/fs-safe/dist/archive.js +25 -13
  70. package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts +12 -0
  71. package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts.map +1 -1
  72. package/node_modules/@openclaw/fs-safe/dist/bounded-read.js +83 -46
  73. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts +19 -0
  74. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts.map +1 -0
  75. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.js +32 -0
  76. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts +22 -0
  77. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts.map +1 -0
  78. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.js +71 -0
  79. package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts +3 -0
  80. package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts.map +1 -0
  81. package/node_modules/@openclaw/fs-safe/dist/copy-policy.js +8 -0
  82. package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts +15 -0
  83. package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts.map +1 -0
  84. package/node_modules/@openclaw/fs-safe/dist/copy-publication.js +30 -0
  85. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts +9 -0
  86. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts.map +1 -0
  87. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.js +222 -0
  88. package/node_modules/@openclaw/fs-safe/dist/copy.d.ts +16 -0
  89. package/node_modules/@openclaw/fs-safe/dist/copy.d.ts.map +1 -0
  90. package/node_modules/@openclaw/fs-safe/dist/copy.js +125 -0
  91. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.d.ts +4 -0
  92. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.d.ts.map +1 -0
  93. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.js +24 -0
  94. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.d.ts.map +1 -1
  95. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.js +8 -2
  96. package/node_modules/@openclaw/fs-safe/dist/device-path.d.ts.map +1 -1
  97. package/node_modules/@openclaw/fs-safe/dist/device-path.js +5 -3
  98. package/node_modules/@openclaw/fs-safe/dist/directory-durability.d.ts.map +1 -1
  99. package/node_modules/@openclaw/fs-safe/dist/directory-durability.js +68 -23
  100. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts +3 -0
  101. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts.map +1 -0
  102. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.js +21 -0
  103. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts +27 -1
  104. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts.map +1 -1
  105. package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +145 -17
  106. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts +12 -0
  107. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts.map +1 -1
  108. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.js +106 -8
  109. package/node_modules/@openclaw/fs-safe/dist/durability.d.ts +1 -1
  110. package/node_modules/@openclaw/fs-safe/dist/durability.d.ts.map +1 -1
  111. package/node_modules/@openclaw/fs-safe/dist/durability.js +1 -1
  112. package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts +2 -0
  113. package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts.map +1 -0
  114. package/node_modules/@openclaw/fs-safe/dist/effective-uid.js +25 -0
  115. package/node_modules/@openclaw/fs-safe/dist/error-detail.d.ts.map +1 -1
  116. package/node_modules/@openclaw/fs-safe/dist/error-detail.js +4 -1
  117. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts +14 -0
  118. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts.map +1 -0
  119. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.js +135 -0
  120. package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts +9 -2
  121. package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts.map +1 -1
  122. package/node_modules/@openclaw/fs-safe/dist/file-hash.js +147 -40
  123. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.d.ts.map +1 -1
  124. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +44 -10
  125. package/node_modules/@openclaw/fs-safe/dist/file-lock.d.ts.map +1 -1
  126. package/node_modules/@openclaw/fs-safe/dist/file-lock.js +29 -9
  127. package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts +1 -1
  128. package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts.map +1 -1
  129. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts +6 -2
  130. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts.map +1 -1
  131. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.js +22 -65
  132. package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.d.ts +5 -0
  133. package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.d.ts.map +1 -0
  134. package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.js +31 -0
  135. package/node_modules/@openclaw/fs-safe/dist/file-store-path.d.ts +3 -0
  136. package/node_modules/@openclaw/fs-safe/dist/file-store-path.d.ts.map +1 -0
  137. package/node_modules/@openclaw/fs-safe/dist/file-store-path.js +30 -0
  138. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.d.ts.map +1 -1
  139. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.js +15 -5
  140. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts +16 -0
  141. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts.map +1 -0
  142. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.js +349 -0
  143. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts +1 -0
  144. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts.map +1 -1
  145. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.js +63 -48
  146. package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts +4 -0
  147. package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts.map +1 -1
  148. package/node_modules/@openclaw/fs-safe/dist/file-store.js +23 -47
  149. package/node_modules/@openclaw/fs-safe/dist/filename.d.ts +1 -0
  150. package/node_modules/@openclaw/fs-safe/dist/filename.d.ts.map +1 -1
  151. package/node_modules/@openclaw/fs-safe/dist/filename.js +89 -36
  152. package/node_modules/@openclaw/fs-safe/dist/fs.js +3 -3
  153. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts +11 -0
  154. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts.map +1 -1
  155. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.js +218 -32
  156. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts +2 -0
  157. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts.map +1 -1
  158. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.js +9 -5
  159. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts +2 -0
  160. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts.map +1 -0
  161. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.js +117 -0
  162. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts +4 -0
  163. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts.map +1 -0
  164. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +135 -0
  165. package/node_modules/@openclaw/fs-safe/dist/guest.d.ts +9 -0
  166. package/node_modules/@openclaw/fs-safe/dist/guest.d.ts.map +1 -0
  167. package/node_modules/@openclaw/fs-safe/dist/guest.js +424 -0
  168. package/node_modules/@openclaw/fs-safe/dist/home-dir.d.ts.map +1 -1
  169. package/node_modules/@openclaw/fs-safe/dist/home-dir.js +81 -16
  170. package/node_modules/@openclaw/fs-safe/dist/index.d.ts +1 -1
  171. package/node_modules/@openclaw/fs-safe/dist/index.d.ts.map +1 -1
  172. package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts +6 -0
  173. package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts.map +1 -1
  174. package/node_modules/@openclaw/fs-safe/dist/install-path.js +71 -26
  175. package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts +3 -0
  176. package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts.map +1 -1
  177. package/node_modules/@openclaw/fs-safe/dist/json-document-store.js +1 -0
  178. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.js +3 -3
  179. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts +8 -0
  180. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts.map +1 -1
  181. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.js +137 -45
  182. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.d.ts +11 -0
  183. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.d.ts.map +1 -0
  184. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.js +42 -0
  185. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts +6 -0
  186. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts.map +1 -0
  187. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.js +61 -0
  188. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts +1 -1
  189. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts.map +1 -1
  190. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.js +107 -152
  191. package/node_modules/@openclaw/fs-safe/dist/json-store.d.ts.map +1 -1
  192. package/node_modules/@openclaw/fs-safe/dist/json-store.js +5 -1
  193. package/node_modules/@openclaw/fs-safe/dist/json.d.ts.map +1 -1
  194. package/node_modules/@openclaw/fs-safe/dist/json.js +55 -22
  195. package/node_modules/@openclaw/fs-safe/dist/local-file-access.d.ts.map +1 -1
  196. package/node_modules/@openclaw/fs-safe/dist/local-file-access.js +4 -0
  197. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts +17 -0
  198. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts.map +1 -0
  199. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.js +84 -0
  200. package/node_modules/@openclaw/fs-safe/dist/local-roots.d.ts.map +1 -1
  201. package/node_modules/@openclaw/fs-safe/dist/local-roots.js +54 -27
  202. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts +2 -0
  203. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts.map +1 -1
  204. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.js +47 -20
  205. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts +8 -0
  206. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts.map +1 -0
  207. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.js +56 -0
  208. package/node_modules/@openclaw/fs-safe/dist/move-path.d.ts.map +1 -1
  209. package/node_modules/@openclaw/fs-safe/dist/move-path.js +84 -50
  210. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts +9 -0
  211. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts.map +1 -0
  212. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.js +36 -0
  213. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +53 -1
  214. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts.map +1 -1
  215. package/node_modules/@openclaw/fs-safe/dist/native-binding.js +8 -1
  216. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts +17 -0
  217. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts.map +1 -0
  218. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.js +37 -0
  219. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts +1 -1
  220. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts.map +1 -1
  221. package/node_modules/@openclaw/fs-safe/dist/native-operations.js +17 -9
  222. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts +32 -0
  223. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts.map +1 -0
  224. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.js +127 -0
  225. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts +0 -1
  226. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts.map +1 -1
  227. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.js +27 -16
  228. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.d.ts.map +1 -1
  229. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +315 -41
  230. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts +5 -5
  231. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts.map +1 -1
  232. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +52 -15
  233. package/node_modules/@openclaw/fs-safe/dist/native.d.ts +1 -1
  234. package/node_modules/@openclaw/fs-safe/dist/native.d.ts.map +1 -1
  235. package/node_modules/@openclaw/fs-safe/dist/native.js +7 -2
  236. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts +1 -1
  237. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts.map +1 -1
  238. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.js +3 -2
  239. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.d.ts.map +1 -1
  240. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.js +5 -4
  241. package/node_modules/@openclaw/fs-safe/dist/output.d.ts +2 -0
  242. package/node_modules/@openclaw/fs-safe/dist/output.d.ts.map +1 -1
  243. package/node_modules/@openclaw/fs-safe/dist/output.js +16 -4
  244. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts +8 -0
  245. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts.map +1 -0
  246. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.js +46 -0
  247. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.d.ts.map +1 -1
  248. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.js +2 -0
  249. package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts +7 -0
  250. package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts.map +1 -0
  251. package/node_modules/@openclaw/fs-safe/dist/path-case.js +136 -0
  252. package/node_modules/@openclaw/fs-safe/dist/path-policy.d.ts.map +1 -1
  253. package/node_modules/@openclaw/fs-safe/dist/path-policy.js +7 -2
  254. package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts +7 -0
  255. package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts.map +1 -0
  256. package/node_modules/@openclaw/fs-safe/dist/path-prefix.js +82 -0
  257. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts +14 -0
  258. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts.map +1 -0
  259. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.js +37 -0
  260. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts +7 -0
  261. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts.map +1 -0
  262. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.js +24 -0
  263. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts +10 -0
  264. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts.map +1 -0
  265. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.js +386 -0
  266. package/node_modules/@openclaw/fs-safe/dist/path.d.ts.map +1 -1
  267. package/node_modules/@openclaw/fs-safe/dist/path.js +39 -7
  268. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts +1 -1
  269. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts.map +1 -1
  270. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.js +99 -56
  271. package/node_modules/@openclaw/fs-safe/dist/permissions.d.ts.map +1 -1
  272. package/node_modules/@openclaw/fs-safe/dist/permissions.js +39 -10
  273. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts +25 -0
  274. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts.map +1 -0
  275. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.js +425 -0
  276. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts +34 -0
  277. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts.map +1 -0
  278. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.js +142 -0
  279. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts +24 -0
  280. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts.map +1 -0
  281. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.js +70 -0
  282. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts +6 -0
  283. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts.map +1 -1
  284. package/node_modules/@openclaw/fs-safe/dist/pinned-open.js +29 -9
  285. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.js +1 -1
  286. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts +75 -0
  287. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts.map +1 -0
  288. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.js +1 -0
  289. package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts +7 -29
  290. package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts.map +1 -1
  291. package/node_modules/@openclaw/fs-safe/dist/pinned-write.js +203 -47
  292. package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts +9 -0
  293. package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts.map +1 -0
  294. package/node_modules/@openclaw/fs-safe/dist/positional-read.js +36 -0
  295. package/node_modules/@openclaw/fs-safe/dist/private-directory.d.ts.map +1 -1
  296. package/node_modules/@openclaw/fs-safe/dist/private-directory.js +2 -0
  297. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts +16 -0
  298. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts.map +1 -0
  299. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.js +272 -0
  300. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts +2 -39
  301. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts.map +1 -1
  302. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.js +183 -69
  303. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts +13 -0
  304. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts.map +1 -0
  305. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +47 -0
  306. package/node_modules/@openclaw/fs-safe/dist/publish-file.d.ts.map +1 -1
  307. package/node_modules/@openclaw/fs-safe/dist/publish-file.js +63 -56
  308. package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts +4 -0
  309. package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts.map +1 -0
  310. package/node_modules/@openclaw/fs-safe/dist/realpath.js +43 -0
  311. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts +3 -0
  312. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts.map +1 -0
  313. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.js +8 -0
  314. package/node_modules/@openclaw/fs-safe/dist/regular-file.d.ts.map +1 -1
  315. package/node_modules/@openclaw/fs-safe/dist/regular-file.js +56 -45
  316. package/node_modules/@openclaw/fs-safe/dist/replace-directory.d.ts.map +1 -1
  317. package/node_modules/@openclaw/fs-safe/dist/replace-directory.js +14 -6
  318. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts.map +1 -1
  319. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +52 -47
  320. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.d.ts.map +1 -1
  321. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.js +17 -17
  322. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts +3 -0
  323. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts.map +1 -0
  324. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.js +10 -0
  325. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts +1 -0
  326. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts.map +1 -1
  327. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.js +18 -3
  328. package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts +1 -0
  329. package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts.map +1 -1
  330. package/node_modules/@openclaw/fs-safe/dist/replace-file.js +43 -32
  331. package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts +29 -0
  332. package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts.map +1 -0
  333. package/node_modules/@openclaw/fs-safe/dist/root-boundary.js +182 -0
  334. package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts +15 -1
  335. package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts.map +1 -1
  336. package/node_modules/@openclaw/fs-safe/dist/root-context.js +131 -33
  337. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts +10 -0
  338. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts.map +1 -0
  339. package/node_modules/@openclaw/fs-safe/dist/root-create-input.js +80 -0
  340. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts +13 -0
  341. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts.map +1 -0
  342. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.js +212 -0
  343. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +38 -0
  344. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts.map +1 -0
  345. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +368 -0
  346. package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts +23 -0
  347. package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts.map +1 -0
  348. package/node_modules/@openclaw/fs-safe/dist/root-directory.js +141 -0
  349. package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts +11 -0
  350. package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts.map +1 -0
  351. package/node_modules/@openclaw/fs-safe/dist/root-entries.js +61 -0
  352. package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts +6 -5
  353. package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts.map +1 -1
  354. package/node_modules/@openclaw/fs-safe/dist/root-errors.js +28 -13
  355. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts +21 -0
  356. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts.map +1 -0
  357. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.js +83 -0
  358. package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts +2 -0
  359. package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts.map +1 -1
  360. package/node_modules/@openclaw/fs-safe/dist/root-file.js +111 -24
  361. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts +18 -51
  362. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts.map +1 -1
  363. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +639 -510
  364. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +14 -0
  365. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts.map +1 -0
  366. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +202 -0
  367. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts +8 -0
  368. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts.map +1 -0
  369. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.js +16 -0
  370. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts +9 -0
  371. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts.map +1 -0
  372. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.js +95 -0
  373. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts +77 -0
  374. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts.map +1 -0
  375. package/node_modules/@openclaw/fs-safe/dist/root-options.js +18 -0
  376. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts +12 -0
  377. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts.map +1 -0
  378. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.js +13 -0
  379. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts +7 -0
  380. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts.map +1 -1
  381. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.js +111 -14
  382. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts +63 -0
  383. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts.map +1 -0
  384. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.js +180 -0
  385. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts +5 -0
  386. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts.map +1 -0
  387. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.js +101 -0
  388. package/node_modules/@openclaw/fs-safe/dist/root-path-symlink.d.ts.map +1 -1
  389. package/node_modules/@openclaw/fs-safe/dist/root-path-symlink.js +24 -4
  390. package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts +14 -0
  391. package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts.map +1 -1
  392. package/node_modules/@openclaw/fs-safe/dist/root-path.js +322 -220
  393. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts +9 -0
  394. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts.map +1 -0
  395. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.js +22 -0
  396. package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts +3 -29
  397. package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts.map +1 -1
  398. package/node_modules/@openclaw/fs-safe/dist/root-paths.js +89 -174
  399. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts +26 -0
  400. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts.map +1 -0
  401. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.js +94 -0
  402. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts +15 -0
  403. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts.map +1 -0
  404. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.js +89 -0
  405. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts +17 -0
  406. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts.map +1 -0
  407. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.js +37 -0
  408. package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts +6 -0
  409. package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts.map +1 -0
  410. package/node_modules/@openclaw/fs-safe/dist/root-remove.js +448 -0
  411. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts +14 -0
  412. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts.map +1 -0
  413. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.js +34 -0
  414. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts +5 -4
  415. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts.map +1 -1
  416. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +100 -50
  417. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts +68 -0
  418. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts.map +1 -0
  419. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +322 -0
  420. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts +13 -0
  421. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts.map +1 -0
  422. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.js +74 -0
  423. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts +42 -0
  424. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts.map +1 -0
  425. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.js +195 -0
  426. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts +2 -0
  427. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts.map +1 -1
  428. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.js +22 -11
  429. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts +24 -0
  430. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts.map +1 -0
  431. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.js +85 -0
  432. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.d.ts.map +1 -1
  433. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.js +18 -7
  434. package/node_modules/@openclaw/fs-safe/dist/root.d.ts +4 -1
  435. package/node_modules/@openclaw/fs-safe/dist/root.d.ts.map +1 -1
  436. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts.map +1 -1
  437. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.js +3 -1
  438. package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts +1 -0
  439. package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts.map +1 -1
  440. package/node_modules/@openclaw/fs-safe/dist/secret-file.js +65 -25
  441. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.d.ts.map +1 -1
  442. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.js +22 -16
  443. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.d.ts.map +1 -1
  444. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.js +5 -1
  445. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts +10 -0
  446. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts.map +1 -0
  447. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.js +186 -0
  448. package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts +1 -1
  449. package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts.map +1 -1
  450. package/node_modules/@openclaw/fs-safe/dist/secure-file.js +137 -22
  451. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts +6 -3
  452. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts.map +1 -1
  453. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.js +122 -101
  454. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts +35 -0
  455. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts.map +1 -0
  456. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.js +106 -0
  457. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts +4 -1
  458. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts.map +1 -1
  459. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.js +210 -45
  460. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts +2 -0
  461. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts.map +1 -1
  462. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.js +43 -17
  463. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts +1 -1
  464. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts.map +1 -1
  465. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +64 -21
  466. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts +2 -0
  467. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts.map +1 -1
  468. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.js +22 -3
  469. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts.map +1 -1
  470. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +16 -4
  471. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.d.ts.map +1 -1
  472. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.js +4 -2
  473. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.d.ts.map +1 -1
  474. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +4 -4
  475. package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts +14 -5
  476. package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts.map +1 -1
  477. package/node_modules/@openclaw/fs-safe/dist/staged-directory.js +58 -6
  478. package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.d.ts +2 -0
  479. package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.d.ts.map +1 -0
  480. package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.js +6 -0
  481. package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts +11 -0
  482. package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts.map +1 -0
  483. package/node_modules/@openclaw/fs-safe/dist/stat-observation.js +64 -0
  484. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.d.ts.map +1 -1
  485. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.js +39 -2
  486. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.d.ts.map +1 -1
  487. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.js +7 -2
  488. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.d.ts.map +1 -1
  489. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.js +3 -2
  490. package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts +16 -12
  491. package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts.map +1 -1
  492. package/node_modules/@openclaw/fs-safe/dist/temp-target.js +154 -14
  493. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts +22 -0
  494. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts.map +1 -0
  495. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +374 -0
  496. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +13 -0
  497. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts.map +1 -0
  498. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +95 -0
  499. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts +48 -0
  500. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts.map +1 -0
  501. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +363 -0
  502. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.d.ts +15 -0
  503. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.d.ts.map +1 -0
  504. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.js +41 -0
  505. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts +7 -6
  506. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts.map +1 -1
  507. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +121 -61
  508. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.d.ts +4 -0
  509. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.d.ts.map +1 -0
  510. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.js +32 -0
  511. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts +40 -0
  512. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts.map +1 -0
  513. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.js +1 -0
  514. package/node_modules/@openclaw/fs-safe/dist/temp.d.ts +1 -1
  515. package/node_modules/@openclaw/fs-safe/dist/temp.d.ts.map +1 -1
  516. package/node_modules/@openclaw/fs-safe/dist/temp.js +1 -1
  517. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts +7 -0
  518. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts.map +1 -1
  519. package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts.map +1 -1
  520. package/node_modules/@openclaw/fs-safe/dist/text-atomic.js +3 -1
  521. package/node_modules/@openclaw/fs-safe/dist/timing.d.ts +1 -0
  522. package/node_modules/@openclaw/fs-safe/dist/timing.d.ts.map +1 -1
  523. package/node_modules/@openclaw/fs-safe/dist/timing.js +25 -6
  524. package/node_modules/@openclaw/fs-safe/dist/trash.d.ts.map +1 -1
  525. package/node_modules/@openclaw/fs-safe/dist/trash.js +61 -13
  526. package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts +3 -0
  527. package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts.map +1 -0
  528. package/node_modules/@openclaw/fs-safe/dist/unicode-path.js +13 -0
  529. package/node_modules/@openclaw/fs-safe/dist/walk.d.ts.map +1 -1
  530. package/node_modules/@openclaw/fs-safe/dist/walk.js +25 -40
  531. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts +9 -12
  532. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts.map +1 -1
  533. package/node_modules/@openclaw/fs-safe/dist/windows-owner.js +29 -58
  534. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts +39 -0
  535. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts.map +1 -0
  536. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.js +153 -0
  537. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts +7 -0
  538. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts.map +1 -0
  539. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.js +26 -0
  540. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.d.ts.map +1 -1
  541. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.js +1 -2
  542. package/node_modules/@openclaw/fs-safe/docs/advanced.md +50 -5
  543. package/node_modules/@openclaw/fs-safe/docs/archive.md +107 -12
  544. package/node_modules/@openclaw/fs-safe/docs/atomic.md +77 -5
  545. package/node_modules/@openclaw/fs-safe/docs/config.md +1 -0
  546. package/node_modules/@openclaw/fs-safe/docs/contributing.md +40 -2
  547. package/node_modules/@openclaw/fs-safe/docs/copy.md +158 -0
  548. package/node_modules/@openclaw/fs-safe/docs/directory-identity.md +85 -0
  549. package/node_modules/@openclaw/fs-safe/docs/durability.md +71 -5
  550. package/node_modules/@openclaw/fs-safe/docs/entries.md +109 -0
  551. package/node_modules/@openclaw/fs-safe/docs/errors.md +18 -10
  552. package/node_modules/@openclaw/fs-safe/docs/file-store.md +93 -6
  553. package/node_modules/@openclaw/fs-safe/docs/filename.md +21 -7
  554. package/node_modules/@openclaw/fs-safe/docs/guest.md +146 -0
  555. package/node_modules/@openclaw/fs-safe/docs/in-place-write.md +81 -0
  556. package/node_modules/@openclaw/fs-safe/docs/index.md +2 -0
  557. package/node_modules/@openclaw/fs-safe/docs/install-path.md +61 -15
  558. package/node_modules/@openclaw/fs-safe/docs/install.md +42 -7
  559. package/node_modules/@openclaw/fs-safe/docs/json-store.md +15 -1
  560. package/node_modules/@openclaw/fs-safe/docs/json.md +11 -0
  561. package/node_modules/@openclaw/fs-safe/docs/local-roots.md +8 -1
  562. package/node_modules/@openclaw/fs-safe/docs/mutation-policy-proof.md +65 -0
  563. package/node_modules/@openclaw/fs-safe/docs/native-helper.md +51 -12
  564. package/node_modules/@openclaw/fs-safe/docs/native.md +63 -10
  565. package/node_modules/@openclaw/fs-safe/docs/output.md +55 -7
  566. package/node_modules/@openclaw/fs-safe/docs/path-case.md +64 -0
  567. package/node_modules/@openclaw/fs-safe/docs/path-prefix.md +64 -0
  568. package/node_modules/@openclaw/fs-safe/docs/path-scope.md +1 -1
  569. package/node_modules/@openclaw/fs-safe/docs/path-suffix-aliases.md +159 -0
  570. package/node_modules/@openclaw/fs-safe/docs/path.md +12 -1
  571. package/node_modules/@openclaw/fs-safe/docs/permissions.md +55 -11
  572. package/node_modules/@openclaw/fs-safe/docs/positional-read.md +63 -0
  573. package/node_modules/@openclaw/fs-safe/docs/private-file-store.md +14 -0
  574. package/node_modules/@openclaw/fs-safe/docs/public-api.md +45 -2
  575. package/node_modules/@openclaw/fs-safe/docs/quickstart.md +1 -1
  576. package/node_modules/@openclaw/fs-safe/docs/reading.md +14 -1
  577. package/node_modules/@openclaw/fs-safe/docs/root.md +219 -12
  578. package/node_modules/@openclaw/fs-safe/docs/secret-file.md +9 -0
  579. package/node_modules/@openclaw/fs-safe/docs/secure-file.md +23 -16
  580. package/node_modules/@openclaw/fs-safe/docs/security-model.md +90 -9
  581. package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +42 -4
  582. package/node_modules/@openclaw/fs-safe/docs/store.md +27 -2
  583. package/node_modules/@openclaw/fs-safe/docs/temp.md +283 -26
  584. package/node_modules/@openclaw/fs-safe/docs/test-hooks.md +14 -0
  585. package/node_modules/@openclaw/fs-safe/docs/timing.md +2 -0
  586. package/node_modules/@openclaw/fs-safe/docs/types.md +19 -12
  587. package/node_modules/@openclaw/fs-safe/docs/walk.md +54 -5
  588. package/node_modules/@openclaw/fs-safe/docs/writing.md +211 -11
  589. package/node_modules/@openclaw/fs-safe/package.json +24 -13
  590. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  591. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +1 -1
  592. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  593. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +1 -1
  594. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  595. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +1 -1
  596. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  597. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +1 -1
  598. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  599. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +1 -1
  600. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  601. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +1 -1
  602. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  603. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +1 -1
  604. package/node_modules/jszip/.github/FUNDING.yml +1 -0
  605. package/node_modules/jszip/.github/actions/setup/action.yml +23 -0
  606. package/node_modules/jszip/.github/workflows/benchmark.yml +38 -0
  607. package/node_modules/jszip/.github/workflows/main.yml +55 -0
  608. package/node_modules/jszip/CHANGES.md +6 -0
  609. package/node_modules/jszip/dist/jszip.js +28 -19
  610. package/node_modules/jszip/dist/jszip.min.js +2 -2
  611. package/node_modules/jszip/index.d.ts +14 -0
  612. package/node_modules/jszip/lib/index.js +1 -1
  613. package/node_modules/jszip/lib/utils.js +26 -17
  614. package/node_modules/jszip/package.json +2 -2
  615. package/node_modules/p-limit/index.d.ts +1 -1
  616. package/node_modules/p-limit/index.js +6 -1
  617. package/node_modules/p-limit/package.json +1 -1
  618. package/node_modules/p-limit/readme.md +8 -0
  619. package/node_modules/zod/README.md +27 -0
  620. package/node_modules/zod/compile.cjs +77 -0
  621. package/node_modules/zod/compile.d.cts +1 -0
  622. package/node_modules/zod/compile.d.ts +1 -0
  623. package/node_modules/zod/compile.js +52 -0
  624. package/node_modules/zod/index.cjs +2 -2
  625. package/node_modules/zod/index.d.cts +1 -2
  626. package/node_modules/zod/index.d.ts +1 -2
  627. package/node_modules/zod/index.js +5 -2
  628. package/node_modules/zod/package.json +13 -2
  629. package/node_modules/zod/src/compile.ts +56 -0
  630. package/node_modules/zod/src/index.ts +5 -2
  631. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  632. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  633. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  634. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  635. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  636. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  637. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  638. package/node_modules/zod/src/v3/types.ts +5 -5
  639. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  640. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  641. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  642. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  643. package/node_modules/zod/src/v4/classic/external.ts +12 -9
  644. package/node_modules/zod/src/v4/classic/from-json-schema.ts +140 -78
  645. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  646. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  647. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  648. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  649. package/node_modules/zod/src/v4/classic/schemas.ts +452 -262
  650. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  651. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  652. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +135 -0
  653. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +30 -1
  654. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  655. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  656. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  657. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  658. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  659. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +720 -0
  660. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  661. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  662. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  663. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  664. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  665. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  666. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +155 -13
  667. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +11 -0
  668. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  669. package/node_modules/zod/src/v4/classic/tests/error.test.ts +274 -6
  670. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +425 -10
  671. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  672. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  673. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  674. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  675. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  676. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +281 -0
  677. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +47 -0
  678. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  679. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +183 -0
  680. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  681. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  682. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  683. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  684. package/node_modules/zod/src/v4/classic/tests/number.test.ts +46 -9
  685. package/node_modules/zod/src/v4/classic/tests/object.test.ts +245 -12
  686. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +234 -0
  687. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  688. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  689. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  690. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  691. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  692. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +33 -2
  693. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  694. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  695. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  696. package/node_modules/zod/src/v4/classic/tests/string.test.ts +127 -5
  697. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  698. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +11 -2
  699. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1585 -173
  700. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  701. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  702. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +76 -0
  703. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  704. package/node_modules/zod/src/v4/core/api.ts +48 -12
  705. package/node_modules/zod/src/v4/core/checks.ts +57 -44
  706. package/node_modules/zod/src/v4/core/compile.ts +2188 -0
  707. package/node_modules/zod/src/v4/core/core.ts +98 -19
  708. package/node_modules/zod/src/v4/core/doc.ts +11 -7
  709. package/node_modules/zod/src/v4/core/errors.ts +115 -24
  710. package/node_modules/zod/src/v4/core/index.ts +3 -0
  711. package/node_modules/zod/src/v4/core/json-schema-generator.ts +6 -1
  712. package/node_modules/zod/src/v4/core/json-schema-processors.ts +257 -93
  713. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  714. package/node_modules/zod/src/v4/core/memoizer.ts +284 -0
  715. package/node_modules/zod/src/v4/core/parse.ts +131 -38
  716. package/node_modules/zod/src/v4/core/regexes.ts +30 -13
  717. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  718. package/node_modules/zod/src/v4/core/schemas.ts +759 -461
  719. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +969 -0
  720. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  721. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  722. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  723. package/node_modules/zod/src/v4/core/tests/compile.test.ts +1639 -0
  724. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  725. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  726. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  727. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  728. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  729. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  730. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +31 -0
  731. package/node_modules/zod/src/v4/core/to-json-schema.ts +275 -42
  732. package/node_modules/zod/src/v4/core/util.ts +268 -42
  733. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  734. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  735. package/node_modules/zod/src/v4/index.ts +3 -3
  736. package/node_modules/zod/src/v4/locales/ar.ts +3 -0
  737. package/node_modules/zod/src/v4/locales/az.ts +3 -0
  738. package/node_modules/zod/src/v4/locales/be.ts +10 -0
  739. package/node_modules/zod/src/v4/locales/bg.ts +3 -0
  740. package/node_modules/zod/src/v4/locales/bn.ts +121 -0
  741. package/node_modules/zod/src/v4/locales/ca.ts +3 -0
  742. package/node_modules/zod/src/v4/locales/ckb.ts +138 -0
  743. package/node_modules/zod/src/v4/locales/cs.ts +3 -0
  744. package/node_modules/zod/src/v4/locales/da.ts +5 -2
  745. package/node_modules/zod/src/v4/locales/de.ts +3 -0
  746. package/node_modules/zod/src/v4/locales/el.ts +1 -0
  747. package/node_modules/zod/src/v4/locales/en.ts +15 -4
  748. package/node_modules/zod/src/v4/locales/eo.ts +3 -0
  749. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  750. package/node_modules/zod/src/v4/locales/fa.ts +3 -0
  751. package/node_modules/zod/src/v4/locales/fi.ts +3 -0
  752. package/node_modules/zod/src/v4/locales/fr-CA.ts +3 -0
  753. package/node_modules/zod/src/v4/locales/fr.ts +19 -14
  754. package/node_modules/zod/src/v4/locales/gu.ts +121 -0
  755. package/node_modules/zod/src/v4/locales/he.ts +6 -1
  756. package/node_modules/zod/src/v4/locales/hi.ts +124 -0
  757. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  758. package/node_modules/zod/src/v4/locales/hu.ts +3 -0
  759. package/node_modules/zod/src/v4/locales/hy.ts +9 -0
  760. package/node_modules/zod/src/v4/locales/id.ts +3 -0
  761. package/node_modules/zod/src/v4/locales/index.ts +10 -0
  762. package/node_modules/zod/src/v4/locales/is.ts +3 -0
  763. package/node_modules/zod/src/v4/locales/it.ts +3 -0
  764. package/node_modules/zod/src/v4/locales/ja.ts +3 -0
  765. package/node_modules/zod/src/v4/locales/ka.ts +3 -0
  766. package/node_modules/zod/src/v4/locales/km.ts +3 -0
  767. package/node_modules/zod/src/v4/locales/kn.ts +124 -0
  768. package/node_modules/zod/src/v4/locales/ko.ts +3 -0
  769. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  770. package/node_modules/zod/src/v4/locales/mk.ts +3 -0
  771. package/node_modules/zod/src/v4/locales/ms.ts +3 -0
  772. package/node_modules/zod/src/v4/locales/ne.ts +126 -0
  773. package/node_modules/zod/src/v4/locales/nl.ts +3 -0
  774. package/node_modules/zod/src/v4/locales/nn.ts +119 -0
  775. package/node_modules/zod/src/v4/locales/no.ts +5 -2
  776. package/node_modules/zod/src/v4/locales/ota.ts +3 -0
  777. package/node_modules/zod/src/v4/locales/pl.ts +3 -0
  778. package/node_modules/zod/src/v4/locales/ps.ts +3 -0
  779. package/node_modules/zod/src/v4/locales/pt-BR.ts +159 -0
  780. package/node_modules/zod/src/v4/locales/pt.ts +99 -58
  781. package/node_modules/zod/src/v4/locales/ro.ts +1 -0
  782. package/node_modules/zod/src/v4/locales/ru.ts +10 -0
  783. package/node_modules/zod/src/v4/locales/sk.ts +121 -0
  784. package/node_modules/zod/src/v4/locales/sl.ts +3 -0
  785. package/node_modules/zod/src/v4/locales/sv.ts +5 -2
  786. package/node_modules/zod/src/v4/locales/ta.ts +3 -0
  787. package/node_modules/zod/src/v4/locales/th.ts +3 -0
  788. package/node_modules/zod/src/v4/locales/tk.ts +111 -0
  789. package/node_modules/zod/src/v4/locales/tr.ts +3 -0
  790. package/node_modules/zod/src/v4/locales/uk.ts +3 -0
  791. package/node_modules/zod/src/v4/locales/ur.ts +3 -0
  792. package/node_modules/zod/src/v4/locales/uz.ts +1 -0
  793. package/node_modules/zod/src/v4/locales/vi.ts +3 -0
  794. package/node_modules/zod/src/v4/locales/yo.ts +3 -0
  795. package/node_modules/zod/src/v4/locales/zh-CN.ts +3 -0
  796. package/node_modules/zod/src/v4/locales/zh-TW.ts +3 -0
  797. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  798. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  799. package/node_modules/zod/src/v4/mini/external.ts +10 -1
  800. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  801. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  802. package/node_modules/zod/src/v4/mini/schemas.ts +135 -56
  803. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  804. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  805. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  806. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  807. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  808. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  809. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  810. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  811. package/node_modules/zod/src/v4/mini/tests/index.test.ts +72 -5
  812. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  813. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  814. package/node_modules/zod/src/v4/mini/tests/string.test.ts +21 -0
  815. package/node_modules/zod/v3/ZodError.cjs +22 -12
  816. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  817. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  818. package/node_modules/zod/v3/ZodError.js +22 -12
  819. package/node_modules/zod/v3/types.cjs +7 -5
  820. package/node_modules/zod/v3/types.js +7 -5
  821. package/node_modules/zod/v4/classic/checks.cjs +2 -1
  822. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  823. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  824. package/node_modules/zod/v4/classic/checks.js +1 -1
  825. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  826. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  827. package/node_modules/zod/v4/classic/deep-partial.cjs +39 -0
  828. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  829. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  830. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  831. package/node_modules/zod/v4/classic/errors.cjs +43 -34
  832. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  833. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  834. package/node_modules/zod/v4/classic/errors.js +43 -34
  835. package/node_modules/zod/v4/classic/external.cjs +30 -27
  836. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  837. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  838. package/node_modules/zod/v4/classic/external.js +5 -8
  839. package/node_modules/zod/v4/classic/from-json-schema.cjs +136 -75
  840. package/node_modules/zod/v4/classic/from-json-schema.js +136 -75
  841. package/node_modules/zod/v4/classic/in-out.cjs +63 -0
  842. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  843. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  844. package/node_modules/zod/v4/classic/in-out.js +36 -0
  845. package/node_modules/zod/v4/classic/index.cjs +2 -2
  846. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  847. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  848. package/node_modules/zod/v4/classic/index.js +2 -2
  849. package/node_modules/zod/v4/classic/iso.cjs +11 -22
  850. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  851. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  852. package/node_modules/zod/v4/classic/iso.js +2 -17
  853. package/node_modules/zod/v4/classic/parse.cjs +4 -1
  854. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  855. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  856. package/node_modules/zod/v4/classic/parse.js +1 -0
  857. package/node_modules/zod/v4/classic/schemas.cjs +498 -398
  858. package/node_modules/zod/v4/classic/schemas.d.cts +53 -18
  859. package/node_modules/zod/v4/classic/schemas.d.ts +53 -18
  860. package/node_modules/zod/v4/classic/schemas.js +492 -396
  861. package/node_modules/zod/v4/core/api.cjs +23 -4
  862. package/node_modules/zod/v4/core/api.d.cts +13 -9
  863. package/node_modules/zod/v4/core/api.d.ts +13 -9
  864. package/node_modules/zod/v4/core/api.js +21 -4
  865. package/node_modules/zod/v4/core/checks.cjs +37 -31
  866. package/node_modules/zod/v4/core/checks.d.cts +13 -13
  867. package/node_modules/zod/v4/core/checks.d.ts +13 -13
  868. package/node_modules/zod/v4/core/checks.js +37 -31
  869. package/node_modules/zod/v4/core/compile.cjs +1813 -0
  870. package/node_modules/zod/v4/core/compile.d.cts +51 -0
  871. package/node_modules/zod/v4/core/compile.d.ts +51 -0
  872. package/node_modules/zod/v4/core/compile.js +1783 -0
  873. package/node_modules/zod/v4/core/core.cjs +81 -18
  874. package/node_modules/zod/v4/core/core.d.cts +16 -4
  875. package/node_modules/zod/v4/core/core.d.ts +16 -4
  876. package/node_modules/zod/v4/core/core.js +82 -19
  877. package/node_modules/zod/v4/core/doc.cjs +5 -7
  878. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  879. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  880. package/node_modules/zod/v4/core/doc.js +5 -7
  881. package/node_modules/zod/v4/core/errors.cjs +110 -25
  882. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  883. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  884. package/node_modules/zod/v4/core/errors.js +110 -25
  885. package/node_modules/zod/v4/core/index.cjs +5 -1
  886. package/node_modules/zod/v4/core/index.d.cts +3 -0
  887. package/node_modules/zod/v4/core/index.d.ts +3 -0
  888. package/node_modules/zod/v4/core/index.js +3 -0
  889. package/node_modules/zod/v4/core/json-schema-generator.cjs +4 -0
  890. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  891. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  892. package/node_modules/zod/v4/core/json-schema-generator.js +4 -0
  893. package/node_modules/zod/v4/core/json-schema-processors.cjs +264 -95
  894. package/node_modules/zod/v4/core/json-schema-processors.js +243 -97
  895. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  896. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  897. package/node_modules/zod/v4/core/memoizer.cjs +272 -0
  898. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  899. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  900. package/node_modules/zod/v4/core/memoizer.js +265 -0
  901. package/node_modules/zod/v4/core/parse.cjs +96 -34
  902. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  903. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  904. package/node_modules/zod/v4/core/parse.js +94 -33
  905. package/node_modules/zod/v4/core/regexes.cjs +27 -15
  906. package/node_modules/zod/v4/core/regexes.d.cts +2 -0
  907. package/node_modules/zod/v4/core/regexes.d.ts +2 -0
  908. package/node_modules/zod/v4/core/regexes.js +24 -13
  909. package/node_modules/zod/v4/core/registries.js +2 -2
  910. package/node_modules/zod/v4/core/schemas.cjs +537 -326
  911. package/node_modules/zod/v4/core/schemas.d.cts +100 -31
  912. package/node_modules/zod/v4/core/schemas.d.ts +100 -31
  913. package/node_modules/zod/v4/core/schemas.js +526 -325
  914. package/node_modules/zod/v4/core/to-json-schema.cjs +242 -39
  915. package/node_modules/zod/v4/core/to-json-schema.d.cts +42 -3
  916. package/node_modules/zod/v4/core/to-json-schema.d.ts +42 -3
  917. package/node_modules/zod/v4/core/to-json-schema.js +241 -39
  918. package/node_modules/zod/v4/core/util.cjs +212 -31
  919. package/node_modules/zod/v4/core/util.d.cts +58 -1
  920. package/node_modules/zod/v4/core/util.d.ts +58 -1
  921. package/node_modules/zod/v4/core/util.js +202 -30
  922. package/node_modules/zod/v4/core/versions.cjs +2 -2
  923. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  924. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  925. package/node_modules/zod/v4/core/versions.js +2 -2
  926. package/node_modules/zod/v4/core/visit.cjs +195 -0
  927. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  928. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  929. package/node_modules/zod/v4/core/visit.js +169 -0
  930. package/node_modules/zod/v4/index.cjs +15 -5
  931. package/node_modules/zod/v4/index.d.cts +2 -2
  932. package/node_modules/zod/v4/index.d.ts +2 -2
  933. package/node_modules/zod/v4/index.js +3 -2
  934. package/node_modules/zod/v4/locales/ar.cjs +3 -0
  935. package/node_modules/zod/v4/locales/ar.js +3 -0
  936. package/node_modules/zod/v4/locales/az.cjs +3 -0
  937. package/node_modules/zod/v4/locales/az.js +3 -0
  938. package/node_modules/zod/v4/locales/be.cjs +10 -0
  939. package/node_modules/zod/v4/locales/be.js +10 -0
  940. package/node_modules/zod/v4/locales/bg.cjs +3 -0
  941. package/node_modules/zod/v4/locales/bg.js +3 -0
  942. package/node_modules/zod/v4/locales/bn.cjs +138 -0
  943. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  944. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  945. package/node_modules/zod/v4/locales/bn.js +111 -0
  946. package/node_modules/zod/v4/locales/ca.cjs +3 -0
  947. package/node_modules/zod/v4/locales/ca.js +3 -0
  948. package/node_modules/zod/v4/locales/ckb.cjs +158 -0
  949. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  950. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  951. package/node_modules/zod/v4/locales/ckb.js +131 -0
  952. package/node_modules/zod/v4/locales/cs.cjs +3 -0
  953. package/node_modules/zod/v4/locales/cs.js +3 -0
  954. package/node_modules/zod/v4/locales/da.cjs +5 -2
  955. package/node_modules/zod/v4/locales/da.js +5 -2
  956. package/node_modules/zod/v4/locales/de.cjs +3 -0
  957. package/node_modules/zod/v4/locales/de.js +3 -0
  958. package/node_modules/zod/v4/locales/el.cjs +1 -0
  959. package/node_modules/zod/v4/locales/el.js +1 -0
  960. package/node_modules/zod/v4/locales/en.cjs +14 -4
  961. package/node_modules/zod/v4/locales/en.js +14 -4
  962. package/node_modules/zod/v4/locales/eo.cjs +3 -0
  963. package/node_modules/zod/v4/locales/eo.js +3 -0
  964. package/node_modules/zod/v4/locales/es.cjs +2 -0
  965. package/node_modules/zod/v4/locales/es.js +2 -0
  966. package/node_modules/zod/v4/locales/fa.cjs +3 -0
  967. package/node_modules/zod/v4/locales/fa.js +3 -0
  968. package/node_modules/zod/v4/locales/fi.cjs +3 -0
  969. package/node_modules/zod/v4/locales/fi.js +3 -0
  970. package/node_modules/zod/v4/locales/fr-CA.cjs +3 -0
  971. package/node_modules/zod/v4/locales/fr-CA.js +3 -0
  972. package/node_modules/zod/v4/locales/fr.cjs +16 -14
  973. package/node_modules/zod/v4/locales/fr.js +16 -14
  974. package/node_modules/zod/v4/locales/gu.cjs +138 -0
  975. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  976. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  977. package/node_modules/zod/v4/locales/gu.js +111 -0
  978. package/node_modules/zod/v4/locales/he.cjs +5 -0
  979. package/node_modules/zod/v4/locales/he.js +5 -0
  980. package/node_modules/zod/v4/locales/hi.cjs +136 -0
  981. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  982. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  983. package/node_modules/zod/v4/locales/hi.js +109 -0
  984. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  985. package/node_modules/zod/v4/locales/hr.js +2 -0
  986. package/node_modules/zod/v4/locales/hu.cjs +3 -0
  987. package/node_modules/zod/v4/locales/hu.js +3 -0
  988. package/node_modules/zod/v4/locales/hy.cjs +9 -0
  989. package/node_modules/zod/v4/locales/hy.js +9 -0
  990. package/node_modules/zod/v4/locales/id.cjs +3 -0
  991. package/node_modules/zod/v4/locales/id.js +3 -0
  992. package/node_modules/zod/v4/locales/index.cjs +22 -2
  993. package/node_modules/zod/v4/locales/index.d.cts +10 -0
  994. package/node_modules/zod/v4/locales/index.d.ts +10 -0
  995. package/node_modules/zod/v4/locales/index.js +10 -0
  996. package/node_modules/zod/v4/locales/is.cjs +3 -0
  997. package/node_modules/zod/v4/locales/is.js +3 -0
  998. package/node_modules/zod/v4/locales/it.cjs +3 -0
  999. package/node_modules/zod/v4/locales/it.js +3 -0
  1000. package/node_modules/zod/v4/locales/ja.cjs +3 -0
  1001. package/node_modules/zod/v4/locales/ja.js +3 -0
  1002. package/node_modules/zod/v4/locales/ka.cjs +3 -0
  1003. package/node_modules/zod/v4/locales/ka.js +3 -0
  1004. package/node_modules/zod/v4/locales/km.cjs +3 -0
  1005. package/node_modules/zod/v4/locales/km.js +3 -0
  1006. package/node_modules/zod/v4/locales/kn.cjs +141 -0
  1007. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  1008. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  1009. package/node_modules/zod/v4/locales/kn.js +114 -0
  1010. package/node_modules/zod/v4/locales/ko.cjs +3 -0
  1011. package/node_modules/zod/v4/locales/ko.js +3 -0
  1012. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  1013. package/node_modules/zod/v4/locales/lt.js +2 -0
  1014. package/node_modules/zod/v4/locales/mk.cjs +3 -0
  1015. package/node_modules/zod/v4/locales/mk.js +3 -0
  1016. package/node_modules/zod/v4/locales/ms.cjs +3 -0
  1017. package/node_modules/zod/v4/locales/ms.js +3 -0
  1018. package/node_modules/zod/v4/locales/ne.cjs +136 -0
  1019. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  1020. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  1021. package/node_modules/zod/v4/locales/ne.js +109 -0
  1022. package/node_modules/zod/v4/locales/nl.cjs +3 -0
  1023. package/node_modules/zod/v4/locales/nl.js +3 -0
  1024. package/node_modules/zod/v4/locales/nn.cjs +138 -0
  1025. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  1026. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  1027. package/node_modules/zod/v4/locales/nn.js +111 -0
  1028. package/node_modules/zod/v4/locales/no.cjs +5 -2
  1029. package/node_modules/zod/v4/locales/no.js +5 -2
  1030. package/node_modules/zod/v4/locales/ota.cjs +3 -0
  1031. package/node_modules/zod/v4/locales/ota.js +3 -0
  1032. package/node_modules/zod/v4/locales/pl.cjs +3 -0
  1033. package/node_modules/zod/v4/locales/pl.js +3 -0
  1034. package/node_modules/zod/v4/locales/ps.cjs +3 -0
  1035. package/node_modules/zod/v4/locales/ps.js +3 -0
  1036. package/node_modules/zod/v4/locales/pt-BR.cjs +168 -0
  1037. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  1038. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  1039. package/node_modules/zod/v4/locales/pt-BR.js +141 -0
  1040. package/node_modules/zod/v4/locales/pt.cjs +87 -55
  1041. package/node_modules/zod/v4/locales/pt.js +87 -55
  1042. package/node_modules/zod/v4/locales/ro.cjs +1 -0
  1043. package/node_modules/zod/v4/locales/ro.js +1 -0
  1044. package/node_modules/zod/v4/locales/ru.cjs +10 -0
  1045. package/node_modules/zod/v4/locales/ru.js +10 -0
  1046. package/node_modules/zod/v4/locales/sk.cjs +141 -0
  1047. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  1048. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  1049. package/node_modules/zod/v4/locales/sk.js +114 -0
  1050. package/node_modules/zod/v4/locales/sl.cjs +3 -0
  1051. package/node_modules/zod/v4/locales/sl.js +3 -0
  1052. package/node_modules/zod/v4/locales/sv.cjs +5 -2
  1053. package/node_modules/zod/v4/locales/sv.js +5 -2
  1054. package/node_modules/zod/v4/locales/ta.cjs +3 -0
  1055. package/node_modules/zod/v4/locales/ta.js +3 -0
  1056. package/node_modules/zod/v4/locales/th.cjs +3 -0
  1057. package/node_modules/zod/v4/locales/th.js +3 -0
  1058. package/node_modules/zod/v4/locales/tk.cjs +132 -0
  1059. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  1060. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  1061. package/node_modules/zod/v4/locales/tk.js +105 -0
  1062. package/node_modules/zod/v4/locales/tr.cjs +3 -0
  1063. package/node_modules/zod/v4/locales/tr.js +3 -0
  1064. package/node_modules/zod/v4/locales/uk.cjs +3 -0
  1065. package/node_modules/zod/v4/locales/uk.js +3 -0
  1066. package/node_modules/zod/v4/locales/ur.cjs +3 -0
  1067. package/node_modules/zod/v4/locales/ur.js +3 -0
  1068. package/node_modules/zod/v4/locales/uz.cjs +1 -0
  1069. package/node_modules/zod/v4/locales/uz.js +1 -0
  1070. package/node_modules/zod/v4/locales/vi.cjs +3 -0
  1071. package/node_modules/zod/v4/locales/vi.js +3 -0
  1072. package/node_modules/zod/v4/locales/yo.cjs +3 -0
  1073. package/node_modules/zod/v4/locales/yo.js +3 -0
  1074. package/node_modules/zod/v4/locales/zh-CN.cjs +3 -0
  1075. package/node_modules/zod/v4/locales/zh-CN.js +3 -0
  1076. package/node_modules/zod/v4/locales/zh-TW.cjs +3 -0
  1077. package/node_modules/zod/v4/locales/zh-TW.js +3 -0
  1078. package/node_modules/zod/v4/mini/checks.cjs +2 -1
  1079. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  1080. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  1081. package/node_modules/zod/v4/mini/checks.js +1 -1
  1082. package/node_modules/zod/v4/mini/deep-partial.cjs +39 -0
  1083. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  1084. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  1085. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  1086. package/node_modules/zod/v4/mini/external.cjs +12 -1
  1087. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  1088. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  1089. package/node_modules/zod/v4/mini/external.js +3 -1
  1090. package/node_modules/zod/v4/mini/in-out.cjs +63 -0
  1091. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  1092. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  1093. package/node_modules/zod/v4/mini/in-out.js +36 -0
  1094. package/node_modules/zod/v4/mini/parse.cjs +3 -1
  1095. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  1096. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  1097. package/node_modules/zod/v4/mini/parse.js +1 -1
  1098. package/node_modules/zod/v4/mini/schemas.cjs +75 -47
  1099. package/node_modules/zod/v4/mini/schemas.d.cts +43 -13
  1100. package/node_modules/zod/v4/mini/schemas.d.ts +43 -13
  1101. package/node_modules/zod/v4/mini/schemas.js +71 -45
  1102. package/openclaw.plugin.json +21 -0
  1103. package/package.json +11 -8
  1104. package/node_modules/jszip/.github/workflows/pr.yaml +0 -58
  1105. package/node_modules/jszip/.jekyll-metadata +0 -0
  1106. package/node_modules/jszip/.travis.yml +0 -17
  1107. package/node_modules/jszip/deps.js +0 -37
  1108. package/node_modules/jszip/graph.svg +0 -601
  1109. package/node_modules/zod/src/v4/core/config.ts +0 -15
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
2
+ <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 4h16v16H4ZM7 8l3 3-3 3M12 16h5" />
3
+ </svg>
Binary file
package/dist/index.js CHANGED
@@ -370,16 +370,13 @@ var OpenShellFsBridge = class {
370
370
  if (!target.hostPath) throw new Error(`OpenShell mirror bridge requires a local host path: ${target.containerPath}`);
371
371
  return target.hostPath;
372
372
  }
373
- resolveTarget(params) {
373
+ containerMounts(readOnlyMounts = this.readOnlyMounts()) {
374
374
  const workspaceRoot = path.resolve(this.sandbox.workspaceDir);
375
375
  const agentRoot = path.resolve(this.sandbox.agentWorkspaceDir);
376
376
  const hasAgentMount = this.sandbox.workspaceAccess !== "none" && workspaceRoot !== agentRoot;
377
377
  const agentContainerRoot = (this.backend.remoteAgentWorkspaceDir || "/agent").replace(/\\/g, "/");
378
- const workspaceContainerRoot = this.sandbox.containerWorkdir.replace(/\\/g, "/");
379
- const input = params.filePath.trim();
380
- const readOnlyMounts = this.readOnlyMounts();
381
378
  const containerMounts = [{
382
- remote: workspaceContainerRoot,
379
+ remote: this.sandbox.containerWorkdir.replace(/\\/g, "/"),
383
380
  owner: "workspace",
384
381
  value: {
385
382
  hostRoot: workspaceRoot,
@@ -401,6 +398,23 @@ var OpenShellFsBridge = class {
401
398
  writable: false
402
399
  }
403
400
  })));
401
+ return containerMounts;
402
+ }
403
+ get pathMappings() {
404
+ return this.containerMounts().toSorted((a, b) => Number(a.owner === "agent") - Number(b.owner === "agent")).map((mount) => ({
405
+ hostRoot: mount.value.hostRoot,
406
+ containerRoot: mount.remote
407
+ }));
408
+ }
409
+ resolveTarget(params) {
410
+ const workspaceRoot = path.resolve(this.sandbox.workspaceDir);
411
+ const agentRoot = path.resolve(this.sandbox.agentWorkspaceDir);
412
+ const hasAgentMount = this.sandbox.workspaceAccess !== "none" && workspaceRoot !== agentRoot;
413
+ const agentContainerRoot = (this.backend.remoteAgentWorkspaceDir || "/agent").replace(/\\/g, "/");
414
+ const workspaceContainerRoot = this.sandbox.containerWorkdir.replace(/\\/g, "/");
415
+ const input = params.filePath.trim();
416
+ const readOnlyMounts = this.readOnlyMounts();
417
+ const containerMounts = this.containerMounts(readOnlyMounts);
404
418
  const resolveContainerTarget = (containerPath) => {
405
419
  const containerMount = resolveOpenShellWorkspaceRoot(containerMounts, containerPath);
406
420
  if (!containerMount) return;
@@ -454,32 +468,21 @@ async function removeLocalRootPath(params) {
454
468
  const relativePath = relativeToRoot(params.target, params.hostPath);
455
469
  try {
456
470
  if (params.force === false) await fsPromises.lstat(params.hostPath);
457
- if (params.recursive) {
458
- if ((await fsPromises.lstat(params.hostPath).catch((err) => {
459
- if (isNotFoundError(err)) return null;
460
- throw err;
461
- }))?.isSymbolicLink()) {
462
- await root$3.remove(relativePath);
463
- return;
464
- }
465
- await removeRootTree(root$3, relativePath);
466
- return;
467
- }
468
- await root$3.remove(relativePath);
471
+ const targets = params.recursive && !relativePath ? await root$3.list("") : [relativePath];
472
+ for (const target of targets) await root$3.remove(target, {
473
+ force: params.force !== false,
474
+ ...params.recursive ? {
475
+ recursive: true,
476
+ order: "sorted",
477
+ maxEntries: Infinity,
478
+ maxDepth: Infinity
479
+ } : {}
480
+ });
469
481
  } catch (err) {
470
482
  if (params.force !== false && isNotFoundError(err)) return;
471
483
  throw err;
472
484
  }
473
485
  }
474
- async function removeRootTree(root, relativePath, knownStats) {
475
- const stats = knownStats ?? await root.stat(relativePath);
476
- if (stats.isDirectory && !stats.isSymbolicLink) {
477
- const entries = await root.list(relativePath, { withFileTypes: true });
478
- for (const entry of entries) await removeRootTree(root, path.join(relativePath, entry.name), entry);
479
- if (!relativePath) return;
480
- }
481
- await root.remove(relativePath);
482
- }
483
486
  async function moveLocalRootPath(params) {
484
487
  const root$4 = await root(params.from.mountHostRoot);
485
488
  const fromRelativePath = relativeToRoot(params.from, params.fromHostPath);
@@ -927,6 +930,9 @@ var OpenShellSandboxBackendImpl = class {
927
930
  }
928
931
  });
929
932
  return {
933
+ get pathMappings() {
934
+ return bridge.pathMappings;
935
+ },
930
936
  resolvePath: (params) => bridge.resolvePath(params),
931
937
  readFile: (params) => this.runWorkspaceOperation(() => bridge.readFile(params), params.signal),
932
938
  readDirectory: (params) => this.runWorkspaceOperation(() => bridge.readDirectory(params), params.signal),
@@ -2,6 +2,291 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.13.1 - 2026-09-16
6
+
7
+ ### Highlights
8
+
9
+ - **Correct native cleanup in Node workers:** guarded writes, moves, and staged-file cleanup close native-created descriptors through their originating binding, eliminating unmanaged-descriptor warnings while preserving Node's own descriptor tracking. ([#438](https://github.com/openclaw/fs-safe/pull/438))
10
+
11
+ ### Fixes and compatibility
12
+
13
+ - Retain the correct closer through errors and native-mode changes, including staged files whose parent directory was opened by Node. Borrowed handles keep their caller-owned lifetime.
14
+ - On Windows, close exported descriptors through the same host runtime's libuv table that opened them. Descriptor-producing operations require complete native close support before allocation; stale helpers are treated as unavailable under the existing native-mode policy.
15
+ - Add real Worker coverage on Node 22/24 and verify that Windows native close releases both file and directory descriptors. Forced `Worker.terminate()` reclamation remains a [documented limitation](https://github.com/openclaw/fs-safe/blob/v0.13.1/docs/native-helper.md); callers should close retained resources and finish in-flight work before termination.
16
+
17
+ ## 0.13.0 - 2026-09-16
18
+
19
+ ### Highlights
20
+
21
+ - **Stronger protection against filesystem replacement races:** bind Root reads, metadata, writes, moves, and cleanup to exact file and directory identities; use atomic native rename for no-clobber moves.
22
+ - **Less overhead in guarded writes and archives:** avoid repeated path and mutation-policy work on eligible routes, reuse validated archive paths, and size native result buffers to bounded member sizes.
23
+ - **Safer Windows paths and writes:** reject NTFS stream and directory-index aliases before filesystem access, and retain destination handles through compatibility writes and verification.
24
+ - **New tools for prospective paths:** add `resolvePathPrefixSync()` and `probePathSuffixAliasesSync()` for existing-prefix traversal and bounded observations of missing suffix aliases.
25
+ - **Opt-in bounded temporary-file cleanup:** add retained-directory cleanup ownership to `tempFile()` and strengthen temporary-workspace admission and permission repair.
26
+
27
+ ### Compatibility and upgrade notes
28
+
29
+ - **No-clobber `Root.move()` now requires usable native support.** With `overwrite` omitted or `false`, native-off mode, missing bindings, or unavailable safe parent/rename support fail with `helper-unavailable`; there is no JavaScript check-and-replace fallback. Keep the matching native package installed for these moves. Directory moves still require `overwrite: true`, which retains guarded JavaScript support; use it only when replacement is intended. Post-operation verification can report an error after a rename has completed.
30
+ - Windows alternate-data-stream and directory-index aliases now reject across guarded APIs before I/O. Supported rooted and extended-drive paths retain their handling, as do released drive-relative forms in trusted-path atomic, store/queue, move, publication, and lock APIs. Existing Root destination restrictions remain distinct; ordinary colon-bearing POSIX names keep their established rules.
31
+ - POSIX secure-file ownership checks now use the process's effective user ID and fail closed when required identity facts are unavailable. Public `Stats` values remain numeric; exact writable-file verification uses private bigint receipts.
32
+ - `tempFile({ cleanupSafety: "require-bounded" })` is opt-in and requires an existing supplied root plus supported retained-parent cleanup. Unsupported admission fails before child creation. `"compatible"` remains the default; cleanup callbacks and error-suppression behavior are preserved. Bounded cleanup retains the documented [POSIX final-entry unlink limitation](https://github.com/openclaw/fs-safe/blob/v0.13.0/docs/temp.md).
33
+ - The two new path helpers are observations, not permission to access a path. Prefix resolution is read-only but is not a pinned or consistent snapshot. Suffix probing can create and remove directories under an approved writable parent, returns `undefined` when unresolved, and may preserve artifacts whose ownership cannot be verified; its budgets limit work counts and path sizes, not elapsed time.
34
+
35
+ ### Root boundaries and mutation performance
36
+
37
+ - Fence Root content reads, metadata observations, directory entries, and low-level file opens with exact captured-root, parent, and final-path identities. Admit supported native Windows root spellings without relaxing symlink or replacement rejection.
38
+ - Apply `denyMutations` and mutation-symlink policy to the actual retained parent used by `Root.write`, `Root.create`, `Root.copyIn`, `Root.openWritable`, `Root.append`, and `Root.mkdir`, including Windows buffer fallbacks. Admit missing components before creating them, and re-authorize followed final-link destinations before open, truncation, staging, and publication.
39
+ - Reuse operation-local policy observations, canonical parent guards, post-create receipts, and immutable suffix offsets for eligible Node.js mutation paths. This avoids repeated resolver work and depth-quadratic segment copies; collisions, callbacks, aliases, ambiguous routes, incomplete identity observations, and final open/publication/cleanup checks retain full admission.
40
+ - Bound repeated resolver work during deep missing-parent creation on eligible Windows and POSIX JavaScript paths. Advance only through owned directory-creation receipts, and let `Root.mkdir` reuse an exact existing-parent proof for its single missing child.
41
+ - Reuse an already admitted parent guard for private producer Roots while preserving isolated handoff, including legacy Windows delete-pending and read-only restoration behavior.
42
+ - Bind nonrecursive removal to its admitted parent and revalidate native move endpoints and explicit parent-symlink rejection before dispatch. Recheck copied-directory identities after child cleanup so concurrent replacements are preserved.
43
+
44
+ ### Credentials, permissions, and temporary files
45
+
46
+ - Snapshot secure-read, secret-reader, traversal, and borrowed-transfer policies before asynchronous work, including size/link limits, trusted directories, and selected environment values. In-flight admission can no longer be relaxed by changing shared options.
47
+ - Preserve single-read pathname and authority accessors on Node.js 22, along with callback receivers, cancellation signals, and progress callbacks across JSON, durable directory/queue, sibling-staging, and borrowed-handle operations. Windows temp admission remains active with platform adapters, and canonical prefixes are checked before inspection.
48
+ - Bind secure temporary-directory and synchronous store-directory mode repairs to no-follow descriptors and exact current identities, including concurrent mode changes during the matching-mode fast path.
49
+ - Admit temporary-workspace roots and children before use, preserve existing permissions, and bind initialization and cleanup to retained identities. Opt-in bounded temporary-file admission closes descriptors on failure.
50
+ - Retain Windows destination descriptors through buffered compatibility-write locking, content verification, mode changes, sync, and final identity checks.
51
+ - Validate descriptor-bound macOS clone ACLs before admission and publication, including absent ACLs. Once payload bytes exist, normalization or security failures are terminal `EIO` errors rather than a reason to retry with an ordinary copy.
52
+
53
+ ### Archive safety and performance
54
+
55
+ - Bind physical ZIP entry names and file/directory kinds to decoder metadata before callbacks or member selection, rejecting ambiguous interpretations consistently.
56
+ - Stop zstd and bzip2 compressed-input refills after cancellation while preserving decoded-output limits and complete archive validation.
57
+ - Reuse canonical archive paths when no components are stripped and avoid temporary ZIP collision collections, retaining validation/filter order and checks of both raw and Unicode identities.
58
+ - Reserve native archive result capacity from bounded member-size hints so small ZIP and compressed TAR reads do not allocate the caller's larger byte budget.
59
+
60
+ ### Path helpers and reliability
61
+
62
+ - Add [`resolvePathPrefixSync()`](https://github.com/openclaw/fs-safe/blob/v0.13.0/docs/path-prefix.md) under `@openclaw/fs-safe/advanced` to traverse existing path prefixes while retaining the raw missing suffix, preserving dangling aliases and propagating ambiguous resolution failures.
63
+ - Add [`probePathSuffixAliasesSync()`](https://github.com/openclaw/fs-safe/blob/v0.13.0/docs/path-suffix-aliases.md) under `@openclaw/fs-safe/advanced`, with fixed path, depth, creation, and observation budgets and conservative identity-checked cleanup.
64
+ - Sanitize fallback filenames and validate completed sibling callback names before producers run, retaining length bounds and Windows device-name rejection. Reuse Windows namespace admission for unchanged ordinary rooted-drive paths while keeping full checks for relative, normalized, malformed, namespaced, and colon-bearing forms.
65
+ - Pin asynchronous relative sidecar-lock paths and roots to their entry-time working directory through acquisition, reclaim, verification, and release. Close synchronous lock descriptors after metadata inspection failures while preserving the original error and unverified sidecar; retry vanished admitted successors under the existing identity checks and budgets.
66
+ - Report actionable guarded-write errno diagnostics while preserving error codes, categories, original causes, and already-classified failures.
67
+ - Tolerate concurrent guest parent-directory creation only after descriptor-relative no-follow admission; file and symlink competitors remain rejected. Thanks @vincentkoc.
68
+ - Show only the moon icon in the docs light-theme picker and only the sun icon in dark mode.
69
+
70
+ ### Validation and tooling
71
+
72
+ - Strengthen exact-identity, rounded-inode, Windows recovery, mutation-policy, and package-consumer regressions, with explicit test-hook provenance and bounded fixture lifetimes. Queue stress fixtures retain and drain outstanding writers before cleanup.
73
+ - Separate manual method-audit harnesses from immutable candidate and baseline checkouts, validate dispatch inputs before fan-out, and support Node 22/24 plus rebuild and same-artifact controls. Versioned benchmark receipts bind source, harness, dependencies, artifacts, native addons, and runner metadata; they detect accidental drift and are not a sandbox for hostile code.
74
+ - Expand benchmark coverage for filename sanitizers, all 17 profiles, shared mutation admission, temporary-workspace modes, and existing/missing roots at depths 4/8/32. Keep Windows-specific rows and observed-preservation claims distinct from JavaScript operation counts.
75
+ - Isolate split-credential proof runners, authenticate official Node archives before checkout, and use private, identity-checked stages and tools. Fixtures remain traversable by both dropped identities while published receipts stay in a separately admitted container; the seven behavioral cases are unchanged.
76
+ - Update development tooling to `@napi-rs/cli` 3.9.1, fast-check 4.10.0, and Vite 8.3.0 with verified registry integrity.
77
+
78
+ ## 0.12.0 - 2026-09-15
79
+
80
+ ### Highlights
81
+
82
+ - **Faster archive workloads:** reuse validated ZIP names, batch native plain-TAR reads, and reduce gzip validation and payload-buffer allocations while preserving complete archive checks.
83
+ - **Less overhead in everyday filesystem work:** reduce repeated path resolution, directory-walk work, small-hash allocations, Linux copy buffers, and lock-manager setup.
84
+ - **Stronger Windows file boundaries:** verify secure-file permissions against the descriptor supplying the bytes, retain handles through private-directory creation and cleanup, and check directory identity when Root containment relies on case folding.
85
+ - **Safer queue recovery and cleanup:** prevent stale migrations from replacing newer queue entries, preserve files refreshed during expiry pruning, and keep existing destinations intact when guest symlink moves fail.
86
+ - **Versioned install identifiers:** add `safePathSegmentHashedV2`, which hashes every trimmed ID into a fixed lowercase directory segment and avoids the deterministic aliases of the legacy readable encoder.
87
+
88
+ ### Compatibility and upgrade notes
89
+
90
+ - Windows `readSecureFile()` now requires the matching current native package for descriptor-bound owner and DACL checks. Missing or stale helpers, remote handles, denied access, and unsupported or incomplete permission facts fail closed before reading; there is no pathname ACL-command fallback. Standalone permission-reporting APIs retain their documented fallbacks.
91
+ - Windows private-directory creation rejects explicit `.` and `..` components and components ending in spaces or periods before filesystem operations. Directory association requires the complete file identity; unsupported identity classes fail closed.
92
+ - Windows native descriptor operations require the host runtime's paired libuv descriptor bridge. Missing or partial bridges reject with `ENOTSUP` instead of interpreting descriptors as raw handles or using another runtime's descriptor table.
93
+ - `safePathSegmentHashedV2` is opt-in. Legacy encoder outputs and the default encoder remain unchanged. Switching to V2 changes existing paths: use a new base directory or explicitly migrate after verifying recorded IDs, and do not silently fall back to legacy paths.
94
+
95
+ ### Archive performance and reliability
96
+
97
+ - Reuse identical local and central ZIP name validation within one entry, including matching complete Unicode Path metadata. Differing fields and shared backing memory retain independent checks; CRC, traversal, collision, and interpretation validation remain intact.
98
+ - Reuse raw archive path segments during validation, preserving platform rules, normalized component limits, and error ordering.
99
+ - Speed up native plain-TAR inspection and extraction with bounded file read-ahead, retaining complete framing, payload, trailer, and cancellation checks at parser boundaries.
100
+ - Fill one owned result buffer when reading admitted gzip TAR payloads in JavaScript, reducing retained decoded buffers while preserving complete validation and independent returned bytes.
101
+ - Validate gzip container padding with bounded buffer comparisons and one lazily allocated reusable zero window, preserving complete suffix checks, short-read handling, and cancellation cadence.
102
+ - Destroy and join ZIP decoder sources before rejecting bounded member reads, preventing abandoned decoders and retained archive buffers after byte-limit failures while preserving error classifications on Node 22 and newer.
103
+
104
+ ### Paths, reads, and copying
105
+
106
+ - Reuse normalized absolute POSIX roots within bulk lexical path resolution and avoid per-segment drive-letter validation allocations, preserving path spellings, validation order, and errors.
107
+ - Reuse resolved Windows drive paths and descendant comparisons, with existing namespace, UNC, and colon-bearing component handling retained. Classify Windows device names without intermediate segment arrays.
108
+ - Reuse lexical directory prefixes while walking, preserving traversal order, followed-link spelling, budgets, callback behavior, and directory checks.
109
+ - Size small JavaScript SHA-256 scratch buffers to the file and byte budget, growing when size hints are stale while preserving complete reads, overflow detection, cancellation, and borrowed-descriptor ownership.
110
+ - Complete positive short reads from virtual files that report size zero instead of returning a truncated prefix. Byte-limit overflow detection and borrowed-descriptor cursor behavior remain intact.
111
+ - Confirm EOF when Linux `copy_file_range` reports zero after partial progress; resume guarded byte copying when readable data remains instead of publishing a truncated copy.
112
+ - Size Linux native byte-copy buffers from existing source-size hints, bounded between 4 KiB and 1 MiB, retaining read-to-EOF behavior, sparse output, and borrowed descriptors.
113
+
114
+ ### Windows security and generated names
115
+
116
+ - Bind secure-file owner and DACL verification to the open descriptor and compare its native volume serial and file-index projection with Node's bigint receipt before reading.
117
+ - Retain parent and created-directory handles through private-directory creation, protected-DACL validation, complete identity association, and failure cleanup, preserving concurrent pathname replacements.
118
+ - Require differently cased Root prefixes to match the Root directory's exact identity, then continue under its trusted spelling. Exact-case paths retain their lexical fast path.
119
+ - Prevent filename truncation and temp-file sanitization from producing Windows reserved-device aliases. Invalid completed sibling callback components reject before hooks or producers run.
120
+
121
+ ### Queues, locks, and cleanup
122
+
123
+ - Bind durable-queue migrations to their pinned processing generation, rejecting stale callbacks after acknowledgement, quarantine, or replacement. Release the verified read pin at Windows publication so migrations can replace their target.
124
+ - Resync resumed processing claims under the transfer lock so conditional migrations cannot bypass a failed publication sync on retry.
125
+ - Recheck current file type and modification time immediately before expiry pruning removes a file, preserving fresh replacements and timestamp refreshes without requiring read access.
126
+ - Stage guest cross-device symlink moves privately before atomic replacement, preserving the existing destination and source link when creation or publication fails.
127
+ - Avoid rescanning held locks during repeated lock-manager construction, and initialize legacy reference counts during acquisition and release so nested handles retain the outer lock.
128
+
129
+ ### Validation
130
+
131
+ - Expand representative method-audit coverage to 572 workloads across JavaScript/native modes on Linux, macOS, and Windows, including 1,000-entry walks, larger TAR inventories, and small synchronous hashes, with explicit platform exclusions.
132
+ - Allow focused method audits with explicit native mode and balanced A-B-B-A or B-A-A-B measurement ordering.
133
+ - Extend walker coverage for lexical aliases and callback mutation. Keep cancellation fixture setup outside the operation deadline and drain fixture writes before cleanup on slow or failing filesystems.
134
+ - Give the Windows slow physical-package-copy sidecar proof separate setup, operation, child, and teardown budgets with bounded failure diagnostics, preserving ordinary helper deadlines.
135
+
136
+ ## 0.11.0 - 2026-09-14
137
+
138
+ ### Highlights
139
+
140
+ - **Faster archive-heavy workloads:** reduce repeated ZIP admission, batch native ZIP metadata reads, and reuse TAR parser input and admitted payload ranges. Archive extraction and inspection also benefit from larger reusable staging and transfer buffers.
141
+ - **More capable filesystem roots:** iterate one directory with `Root.entries()`, remove trees with bounded or explicitly unlimited `Root.remove()`, and create complete files from async byte streams with `Root.create()`.
142
+ - **Reuse handles for copying, overwriting, and hashing:** add `copyFileHandle()`, `overwriteFileHandle()`, and `sha256FileSync()` while preserving caller-owned descriptors and file positions.
143
+ - **Faster Windows permissions and copying:** inspect inherited ACLs without PowerShell startup when the native binding is available, reduce copy allocations, and preserve large zero-filled ranges in empty destination files.
144
+ - **Safer publication and private files:** tighten hardlink, inode, permission, archive-destination, and lock validation; add private producer workspaces for callback writes and fix staging of long Unicode filenames.
145
+
146
+ ### Compatibility and upgrade notes
147
+
148
+ - `readSecureFile()` now rejects hardlinked inputs and rechecks the opened file after reading. Synchronous store publication rejects substituted or unverifiable file identities, including opaque Windows identities.
149
+ - Invalid lock stale thresholds and compromise-check intervals now reject before acquisition. Asynchronous compromise checks no longer overlap or turn overflowing timer values into rapid polling loops.
150
+ - Inherited atomic-replacement modes include only ordinary rwx bits from an existing non-symlink regular file. JavaScript raw sidecars are created with mode `0o600`, so a permissive umask cannot expose their payloads.
151
+ - Bun gains additional POSIX path support through the existing Rust binding, including with JIT disabled. Native-off policy remains explicit; addon-free limitations are documented. Node.js remains supported from version 22.
152
+
153
+ ### Directory and file workflows
154
+
155
+ - Add guarded, nonrecursive `Root.entries()` with child-symlink reporting, cancellation, entry limits, and bounded sorted-name collection. Traversal and link policy remain with the caller.
156
+ - Extend `Root.remove()` with recursive traversal, entry/depth budgets, sorted or filesystem order, cancellation, and missing-target handling. Callers may explicitly choose unlimited recursive-removal budgets; exact directory/leaf identity checks remain in place, and `force` continues sibling cleanup when a child directory disappears.
157
+ - Add a `Root.create()` overload for async byte iterables. Input consumption is bounded, cancellation settles pending work, and completed contents are published exclusively through the existing guarded writer.
158
+ - Add `copyFileHandle()` for bounded regular-file transfers and `overwriteFileHandle()` for in-place replacement with prefix-only rollback preparation, growth-before-overwrite ordering, and a once-only synchronous pre-write admission callback. Both preserve caller ownership and cursors.
159
+ - Add `sha256FileSync()` for bounded hashing of pathnames and borrowed descriptors, with exact pathname admission and no native-binding requirement.
160
+ - Add exact directory-identity observations and synchronous assertions for caller-owned staging and recovery, retaining bigint precision, optional canonical-path checks, and final-symlink rejection even with trailing separators.
161
+ - Add `probePathCaseInsensitiveSync()` for local ASCII-case observations, with a read-only option, owned temporary probes, and an explicit unknown result instead of operating-system guesses.
162
+ - Add opt-in `producerIsolation: "private-directory"` to sibling callback writes and external sibling outputs. Cleanup ownership is established before the producer runs, allowing partial failures to be cleaned without changing existing defaults or publication checks.
163
+
164
+ ### Archive and path performance
165
+
166
+ - Avoid repeating physical ZIP admission during JavaScript member reads. Reduce filename-validation allocations across both backends, and group native ZIP metadata reads into bounded buffers while retaining complete record, CRC, limit, and cancellation checks.
167
+ - Copy each JavaScript TAR WASM input window once across member events. Read selected plain-TAR payloads directly from the fully admitted private snapshot instead of parsing it a second time.
168
+ - Batch private archive-input staging through reusable buffers capped at 512 KiB. Match file-backed JavaScript gzip output to the 64 KiB WASM input window for faster extraction and TAR inspection; retain short-I/O handling, framing validation, bounded growth probes, and settled cancellation.
169
+ - Reduce repeated POSIX path-scoping and Root work, reuse checked store keys, and avoid redundant name normalization. Root exclusion, canonical spelling, Unicode byte limits, collision rules, home expansion, and live filesystem identity checks are preserved.
170
+ - Complete short gzip-header reads before classifying staged archives, preventing valid gzip files from being mistaken for TAR.
171
+ - Fit callback staging names using their original UTF-8 length as well as NFC/NFD lengths. Valid destination names whose normalization is shorter no longer fail with `ENAMETOOLONG` when a staging prefix is added; the final target spelling is preserved.
172
+
173
+ ### Copy performance and filesystem fidelity
174
+
175
+ - Batch large borrowed-handle and JavaScript Root transfers through reusable 512 KiB buffers, retaining byte limits, cancellation, and per-write authority checks. Small byte budgets also bound scratch allocation and the overflow probe.
176
+ - Batch atomic copy-fallback restore snapshots and synchronous source reads into reusable buffers, reducing reads and full-buffer copies while preserving restore budgets, short reads, identity checks, original modes, and rollback behavior.
177
+ - Share portable directory-copy workers across sibling directories, with bounded deferred completion, joined cancellation, and bottom-up timestamp restoration. Preserve fractional timestamps, including pre-1970 dates on Unix, to the precision supported by Node and the destination filesystem.
178
+ - Add Linux ZFS directory cloning through the bounded reflink traversal, with independent destinations, metadata preservation, and no byte-copy fallback when cloning is required. XFS clones now preserve user extended attributes on read-only files and directories, along with their modes and ACLs.
179
+ - Preserve large zero-filled ranges without allocating them during native Linux automatic directory byte copies and native Windows byte copies into empty files. Exact lengths, contents, cancellation settlement, and existing-target overwrite behavior remain intact.
180
+ - Confirm EOF when Linux copy offload initially reports zero bytes, so automatic copying reads available data instead of publishing an empty file.
181
+ - Size Windows native copy buffers to small inputs, reuse directory-enumeration buffers, and start ReFS workers as file jobs arrive. Report disk-full and sharing failures as `ENOSPC` and `EBUSY`; worker-start failures join admitted workers before returning instead of panicking across the native boundary.
182
+
183
+ ### Permissions, compatibility, and tooling
184
+
185
+ - Inspect complete inherited local Windows ACLs through the native descriptor reader when available, preserving SID classification, explicit test injections, .NET normalization, and structured fallback diagnostics. Classify canonical SID facts directly without a redundant account lookup, retaining fail-closed behavior when discovery is unavailable.
186
+ - Retain the admitted archive destination's exact bigint identity through publication, rejecting replacements introduced by entry filters or concurrent actors before files can be published into them.
187
+ - Support Bun POSIX resolution for restrictive permissions, literal backslashes, sockets, and symlink/parent traversal. Preserve raw path components in absolute recursive-mkdir inputs to fix relative publication and queue writes on Bun for Windows.
188
+ - Export the caller-launched Python guest filesystem program and shared no-replace rename fragment through `@openclaw/fs-safe/guest`. The Linux/macOS protocol validates basenames before filesystem operations and uses short independent staging names for long-basename writes and cross-device moves.
189
+ - Support standalone `@pnpm/exe` in consumer smoke and lifecycle tests while retaining the declared pnpm version and isolated consumer configuration. Strengthen exact-inode durability checks and batch independent native ACL test observations.
190
+ - Expand method benchmarks to 557 representative workloads across Linux, macOS, and Windows, with native/JavaScript modes, equal-concurrency copy comparisons, large collections, contention, and explicit platform exclusions. Verify returned data and digests, initialize private Windows fixture ACLs, apply synchronous iteration reductions consistently, and handle expected synchronous rejections during timed calls as well as warmup.
191
+
192
+ ## 0.10.0 - 2026-09-13
193
+
194
+ ### Highlights
195
+
196
+ - **Faster ZIP and TAR reads:** read archive members without temporary disk snapshots, reuse admitted native buffers, and reduce integrity-check and decompression overhead while retaining full validation.
197
+ - **Directory copies with native acceleration:** use `copyTree` to prefer or require APFS clones, Btrfs snapshots, or parallel ReFS/XFS reflinks, or choose portable byte copying for controlled, immutable templates and checkouts.
198
+ - **Guarded file copies:** copy from checked Root sources with exclusive publication, cancellation that waits for writes, and optional native cloning; copied data stays independent of its source.
199
+ - **Faster Windows byte copies:** reuse bounded buffers and parallelize directory copying, with native transfers between checked handles in automatic mode.
200
+ - **Reuse buffers for file reads:** new async and sync positional readers fill caller-owned buffers without changing the file's current offset; hashing gains byte limits and cancellation.
201
+ - **Walk large directories incrementally:** Root walks bound metadata work by the entry budget, with an opt-in filesystem-order stream for directories too wide to enumerate up front.
202
+ - **Recheck live access authority:** Root mutations can verify caller-owned leases or cancellation immediately before dispatch, and new symlink policies allow contained parent-directory aliases while rejecting final symlinks.
203
+
204
+ ### Compatibility and upgrade notes
205
+
206
+ - **Ambiguous paths may now reject.** Reads preserve actual symlink and parent traversal instead of normalizing it away; mutations reject ambiguous symlink/parent combinations. Use the new explicit parent-alias policies when that behavior is intended.
207
+ - **Mutation failures are reported more accurately.** Failed parent-directory checks after fallback moves and removals now reject instead of reporting success. Treat rejection after dispatch as a potentially completed mutation, not proof that nothing changed.
208
+ - **Windows fallback writes honor durability settings.** Root defaults and per-call overrides now apply to JavaScript write/create fallbacks. Use `durable: false` explicitly for reconstructible data when syncing is unnecessary.
209
+
210
+ ### Archive reads
211
+
212
+ - Retain admitted ZIP input buffers and parsed directories across native inspection and selected-member reads, removing disk staging and archive handoff copies. JavaScript ZIP reads also consume the admitted in-memory archive directly.
213
+ - Retain native TAR input and admitted member offsets. Plain TAR copies only the selected range after complete validation; gzip, zstd, and bzip2 replay bounded decompression with framing, trailer, padding, and limit checks intact. JavaScript TAR/gzip reads also avoid disk staging, with gzip output chunks matched to the WASM input window.
214
+ - Accelerate ZIP integrity checks with Node's native CRC32 on Node 22.2 and newer, retaining checksum validation and compatibility with earlier Node 22 versions. Reuse the strict UTF-8 decoder for TAR metadata without changing filename validation or BOM handling.
215
+ - Give each native archive pass its own abort signal so completed inspection cannot mask an extraction deadline.
216
+
217
+ ### File reads, hashing, and directory walks
218
+
219
+ - Add `readFileWindowFully()` and `readFileWindowFullySync()` to fill caller-owned buffers through short reads, stop at EOF, and preserve descriptor offsets and ownership. Async cancellation waits for the pending read to settle before the buffer can be reused.
220
+ - Bound speculative allocations for large or exhausted files and accelerate synchronous bounded reads of regular files up to 16 MiB without extra chunk copies; retain one-read async performance through the default Root byte budget.
221
+ - Add byte limits and cooperative cancellation to `sha256File`, preserving descriptor ownership and waiting for native work to stop before rejecting. Batch larger JavaScript hash reads in bounded buffers up to 256 KiB to reduce filesystem calls.
222
+ - Bound Root walk metadata batches by the global entry budget and stop batches at directories and symlinks before descent. Add `order: "filesystem"` for incremental directory streaming with bounded lookahead; sorted traversal remains the default, and unbounded sorted walks retain fast snapshots.
223
+ - Reduce walk overhead by sharing equivalent directory checks and synchronous entry classification, reusing joined paths, and avoiding an extra promise per async entry. Preserve both operation and close failures during disposal, and report a followed symlink target's size consistently in filters and returned metadata.
224
+ - Speed up POSIX containment and filename helpers while preserving traversal rejection, Unicode handling, reserved names, and collision-resistant install names.
225
+
226
+ ### File and directory copying
227
+
228
+ - Extend `Root.copyIn` with guarded Root sources, exclusive publication, settled cancellation, exact publication receipts, and optional native file cloning while keeping copied data independent. Share `clone: "auto" | "always" | "never"` with `copyTree`; Root keeps its `"never"` default, which uses ordinary reads and writes without clone or copy-offload calls.
229
+ - Add `copyTree` in `@openclaw/fs-safe/copy` with `clone: "auto"` (default), `"always"`, and `"never"` policies. Automatic copying prefers native cloning and falls back to byte copying only when the binding or filesystem capability is unavailable, or cloning cannot cross filesystems; strict cloning never falls back, and ordinary copying avoids clone and copy-offload calls. Destinations must be absent, and cancellation waits for admitted writes to settle.
230
+ - Speed up Windows directory byte copies with bounded parallelism, reusable 1 MiB buffers, and native transfers between checked handles in automatic mode. Honor copy concurrency across portable backends and settle admitted writes before reporting failures or cancellation.
231
+ - Support APFS directory clones, Btrfs subvolume preparation and snapshots, and parallel ReFS/XFS reflinks through `probeTreeClone` and `createCloneSource`. Preserve XFS file and directory extended attributes and ACLs, and restore directory timestamps after APFS bulk cloning.
232
+ - Add batched `readCloneFileMetadata` for APFS clone IDs and file metadata. These are point-in-time observations, not authorization or proof that later contents remain unchanged.
233
+ - Document metadata and filesystem limits: APFS directory cloning does not guarantee descendant ACL preservation or inheritance, Btrfs snapshots omit nested subvolume contents, and ReFS rejects unsupported reparse points and alternate data streams. Portable copying does not promise ownership, ACL, extended-attribute, alternate-stream, or sparse-layout preservation. Callers retain responsibility for source immutability, permission policy, and recovery after a failed or aborted copy.
234
+
235
+ ### Root policies and path safety
236
+
237
+ - Add composed Root `assertBeforeMutation` callbacks that recheck live caller authority immediately before mutation dispatch, including each buffered-write chunk and direct file removal. Root-level and per-call checks both apply; refusal errors and owned cleanup are preserved across native and JavaScript writers.
238
+ - Add `symlinks: "follow-parents-within-root"` for reads and opt-in `mutationSymlinks` policies, following contained directory aliases while rejecting final symlinks at absolute root entry, open, and publication boundaries.
239
+ - Preserve checked canonical and raw traversal in Root, absolute-path, local-root, and `openRootFile`/`openRootFileSync` reads, including home expansion and parent components that cancel a missing prefix. Validation can no longer normalize away a rejected link or select a different in-root file; local `requireFile` reads retain final-symlink rejection.
240
+ - Pin Root directory identities as bigint values, reject indistinguishable numeric inode replacements, and fail closed after bounded retries when Windows root identity remains unknown. Require a verified opened identity before inheriting an existing write target's mode.
241
+ - Preserve Linux native directory-only open flags so the kernel rejects non-directories before FIFO blocking or truncation, while removing the redundant post-open stat.
242
+ - Expand leading home-directory prefixes before resolving parent segments, so `~/../file` resolves against the home directory's parent; keep other tildes literal. Shorten only the home directory and its descendants in error messages, preserving similarly prefixed sibling paths.
243
+ - Resolve Windows ACL principal names such as `constructor` and `__proto__` as real dictionary keys, preserving SID lookup and translated entries.
244
+ - Preserve Unicode Windows paths during fallback permission inspection by reading structured SID and access-mask facts instead of localized command output.
245
+
246
+ ### Writes, moves, and cleanup
247
+
248
+ - Check the complete encoded newline before Root append, avoiding duplicated or missing separators in UTF-16LE files on Windows and other platforms.
249
+ - Preserve unowned staging replacements after Windows fallback write or sync failures, and retain exact parent-directory identities so owned partial-file cleanup works even when Windows directory indexes exceed numeric precision.
250
+ - Report failed post-operation parent checks after fallback moves and removals, including moved source parents, instead of silently reporting success.
251
+ - Close publication descriptors when initial inspection fails and relinquish descriptor numbers before potentially failing closes, preventing cleanup from closing a reused descriptor.
252
+ - Keep move-fallback publication and cleanup tied to the initially admitted staging identity, preserve substituted paths after copy failures, and reject writes that make no progress.
253
+ - Preserve recreated temporary paths after exit cleanup observes the original name missing; absence no longer authorizes removal of a later replacement.
254
+ - Allow explicitly authorized filesystem-root descendants in Trash moves and keep reservation-directory names bounded for long source filenames.
255
+
256
+ ### Locks and durable queues
257
+
258
+ - Honor finite timeouts and retry delays above Node's single-timer limit by rearming bounded timers instead of expiring after approximately 1 ms.
259
+ - Keep zero-delay lock retries finite when a large backoff factor overflows, preserving retry and timeout budgets.
260
+ - Skip invalid delivered-marker names during durable queue batch loading, preserving malformed files while continuing to load valid pending entries.
261
+ - Read durable queue entries through the shared bounded buffer and admitted file-size hint, reducing filesystem calls and chunk copies while retaining exact identity and byte-limit checks.
262
+
263
+ ### Validation and maintenance
264
+
265
+ - Add a method-by-method benchmark with callable API coverage checks, native/fallback reports, and fixture setup outside measurement.
266
+ - Give the full documentation-build smoke test a bounded longer runtime on slow Windows runners. Validate retained native archive buffers across concurrent reads and forced garbage collection; use efficient byte comparisons in large-buffer coverage tests without relaxing timeouts.
267
+
268
+ ## 0.9.0 - 2026-09-11
269
+
270
+ **Highlights:** Faster bulk extraction and configurable durability, with Windows filesystem fixes and reliable mixed-version lock cleanup.
271
+
272
+ - **Compatibility:** `extractArchive` skips file and directory fsync by default for faster bulk imports; pass `durable: true` to restore the previous durability behavior.
273
+ - Add store-level and per-call `durable` options to FileStore writes, streams, copies, and synchronous writes, plus JSON-store defaults, so reconstructible data can skip fsync while preserving guarded atomic publication.
274
+ - Add `Root.copyIn({ durable: false })`, with per-call, root-default, then `true` precedence, to skip file and parent-directory fsync for reconstructible data.
275
+ - Speed up archive extraction by omitting private staging syncs, deferring opted-in publication durability to one bounded file/directory pass, and sharing duplicate destination guards without weakening containment checks.
276
+ - Keep process-exit lock cleanup working when a legacy shared manager lacks reclaim-guard state, continuing through later managers while preserving retained locks; thanks @metahacker.
277
+ - Publish read-only modes such as `0o400` through the Windows JavaScript write fallback by retaining private `0o600` staging and applying the final mode through the retained handle after rename.
278
+ - Preserve Windows file identity across open-induced `ctime` changes during guarded move fallback, and recreate directory junctions without requiring symlink privileges; thanks @giodl73-repo.
279
+ - Extend synchronous metadata observations to archive, copy, publication, move, and directory-mode paths while keeping data and structural I/O asynchronous and preserving native canonical paths.
280
+ - Keep durable publication coverage reliable under filesystem contention by allowing bounded I/O time and draining unfinished operations before fixture cleanup.
281
+ - Refresh JSZip to 3.10.2, Node declarations to 26.5.1, emnapi runtime build tooling to 2.0.0-alpha.5, the Rust hybrid-array dependency to 0.4.15, and pinned CodeQL actions to 4.38.0.
282
+
283
+ ## 0.8.6 - 2026-09-07
284
+
285
+ **Highlights:** Clearer guidance for atomic writes on Windows exFAT, with a repeatable filesystem compatibility probe.
286
+
287
+ - Document the existing opt-in locked rename policy for Windows exFAT/FAT32 and add a built-package probe for identity drift, substitution handling, and temporary-prefix isolation; require a trusted, quiescent probe parent and verify its cleanup identity. Thanks @dongsheng123132.
288
+ - Refresh the native zstd decoder to 0.14.0 and compatible Rust and JavaScript development dependencies, and update the pnpm setup action to 6.1.0.
289
+
5
290
  ## 0.8.5 - 2026-09-07
6
291
 
7
292
  ### Highlights
@@ -1,6 +1,7 @@
1
1
  MIT License
2
2
 
3
3
  Copyright (c) 2026 openclaw
4
+ Copyright (c) 2026 OpenClaw Foundation (guest filesystem Python source)
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
7
  of this software and associated documentation files (the "Software"), to deal
@@ -57,7 +57,9 @@ This is a **library-level guardrail**, not OS-level isolation. It does not repla
57
57
  pnpm add @openclaw/fs-safe
58
58
  ```
59
59
 
60
- Node 22 or newer. Core root/path/json/temp helpers avoid framework dependencies. With all optional dependencies omitted, public subpaths remain safe to import and non-archive fallback-capable operations work in `auto` or `off`. Native-only features remain unavailable, and operations needing the binding in `require` mode fail with `helper-unavailable`. TAR/gzip fallback uses the bundled WASM build of the same Rust parser as native and works with optional dependencies omitted. ZIP fallback still needs optional `jszip`. See the [0.6 migration guide](docs/migrating-to-0.6.md).
60
+ Node 22 or newer. Core root/path/json/temp helpers avoid framework dependencies. With all optional dependencies omitted, public subpaths remain safe to import and fallback-capable operations work in `auto` or `off`. Native-only features, including no-clobber `Root.move()`, remain unavailable and fail with `helper-unavailable`. TAR/gzip fallback uses the bundled WASM build of the same Rust parser as native and works with optional dependencies omitted. ZIP fallback still needs optional `jszip`. See the [0.6 migration guide](docs/migrating-to-0.6.md).
61
+
62
+ Bun 1.4.2 is also supported with the [Bun runtime requirements](docs/install.md#bun-runtime), including the matching Rust addon on macOS and Linux. JIT-disabled Bun works too.
61
63
 
62
64
  The package installs one prebuilt native binding for the current supported target. It
63
65
  supplies fd-relative and atomic no-replace primitives that Node does not expose
@@ -131,8 +133,18 @@ await fs.move("notes/today.txt", "notes/archive/today.txt", { overwrite: true })
131
133
  await fs.remove("notes/archive/today.txt");
132
134
  ```
133
135
 
136
+ Use `remove(path, { recursive: true, maxEntries: 20_000, maxDepth: 32 })` for
137
+ bounded tree cleanup. It streams directory entries, checks mutation authority
138
+ before every removal, and supports cancellation. See [removal options and partial
139
+ failure semantics](docs/writing.md).
140
+
134
141
  `root()` takes the trusted directory; relative paths in subsequent calls are resolved against it. Defaults you pass to `root()` apply to every call below; per-call options override them.
135
142
 
143
+ `copyIn()` also accepts `{ root: sourceRoot, relativePath }`, `overwrite: false`,
144
+ and `clone: "auto"` for guarded, exclusive file copies with optional native
145
+ copy-on-write acceleration. Byte limits, cancellation, and publication receipts
146
+ are described in the [Root copy contract](docs/root.md#writes).
147
+
136
148
  When you need metadata or a `FileHandle`:
137
149
 
138
150
  ```ts
@@ -146,7 +158,24 @@ const opened = await fs.open("notes/today.txt");
146
158
  await fs.create("notes/README.md", "seed\n"); // throws if it already exists
147
159
  ```
148
160
 
149
- `write()` replaces file contents by default; pass `{ overwrite: false }` or use `create()` when an existing file should be an error. `move()` defaults to no clobber because it can otherwise delete an unrelated target while also consuming the source. Pass `{ overwrite: true }` when replacing the target is intended.
161
+ `create()` also accepts an `AsyncIterable<Uint8Array>` for large or incrementally
162
+ produced files. Streamed creates keep the destination absent until all chunks
163
+ are written, support `maxBytes` and `signal`, and recheck mutation authority
164
+ before writes and publication. See [streamed creation](docs/writing.md#streamed-creation)
165
+ for producer ownership and cancellation semantics.
166
+
167
+ `write()` replaces file contents by default; pass `{ overwrite: false }` or use `create()` when an existing file should be an error. `move()` defaults to no clobber because it can otherwise delete an unrelated target while also consuming the source. No-clobber moves require the native helper so the collision decision and rename are one descriptor-relative operation; they fail with `helper-unavailable` rather than falling back to a replacing rename. Pass `{ overwrite: true }` when replacing the target is intended.
168
+
169
+ Mutating methods accept `assertBeforeMutation: () => void` for live lease or
170
+ cancellation checks immediately before filesystem dispatch. Root defaults and
171
+ per-call checks compose; cleanup and already-dispatched work still settle.
172
+ See [live mutation authority](docs/root.md#live-mutation-authority) for the exact
173
+ scope, including raw writable handles and lock bookkeeping.
174
+ For workspaces with directory aliases, use `symlinks: "follow-parents-within-root"`
175
+ on reads and `mutationSymlinks: "follow-parents-within-root"` on mutations or root
176
+ defaults. Contained parent symlinks are resolved by the library, while a final
177
+ symlink is rejected. Read policy and mutation policy are separate; omitting
178
+ `mutationSymlinks` preserves the existing mutation behavior. See [root policies](docs/root.md#defaults-vs-per-call-options).
150
179
 
151
180
  Use `ensureRoot()` when a computed relative directory target resolves to the root itself (`""` or `"."`) and you want the operation to be accepted. `root()` still requires the trusted root directory to already exist.
152
181
 
@@ -204,7 +233,7 @@ const locked = await root("/srv/workspace", {
204
233
  await locked.write(".env", "token"); // FsSafeError code "denied-path"
205
234
  ```
206
235
 
207
- `stat()`, `exists()`, and `list()` are boundary-checked, but they cannot pin a later operation to the same filesystem object. Use `read()`, `open()`, `write()`, `create()`, `copyIn()`, `move()`, or `remove()` for operation-local identity checks, and inspect `containment` when the platform distinction matters.
236
+ `stat()`, `exists()`, `list()`, and `entries()` check the exact selected objects while collecting their advisory results, but they cannot pin a later operation to the same filesystem object. Use `read()`, `open()`, `write()`, `create()`, `copyIn()`, `move()`, or `remove()` for operation-local identity checks, and inspect `containment` when the platform distinction matters.
208
237
 
209
238
  ## Subpaths
210
239
 
@@ -223,17 +252,19 @@ contract. Low-level helpers that OpenClaw needs to compose higher-level APIs are
223
252
  | `@openclaw/fs-safe/store` | `fileStore`, `fileStoreSync`, and `jsonStore` |
224
253
  | `@openclaw/fs-safe/secret` | sync/async strict and try-style secret reads, atomic replace, and create-only secret writes |
225
254
  | `@openclaw/fs-safe/atomic` | `replaceFileAtomic`, `replaceFileAtomicSync`, `replaceDirectoryAtomic`, `movePathWithCopyFallback` |
226
- | `@openclaw/fs-safe/durability` | pinned directory identities, strict directory sync, durable nested-directory creation, exclusive publication, streaming SHA-256, provenance receipts, and sync-failure policy |
255
+ | `@openclaw/fs-safe/durability` | pinned directory identities, strict directory sync, durable nested-directory creation, exclusive publication, streaming and synchronous SHA-256, provenance receipts, and sync-failure policy |
227
256
  | `@openclaw/fs-safe/temp` | `tempWorkspace`, `tempWorkspaceSync`, `withTempWorkspace`, `resolveSecureTempRoot` |
228
257
  | `@openclaw/fs-safe/secure-file` | fd-pinned absolute file reads with owner, mode, ACL, trusted-dir, size, and timeout checks |
229
258
  | `@openclaw/fs-safe/file-lock` | async/sync sidecar locks, root-bounded sidecars, ownership verification, and stale policy |
230
259
  | `@openclaw/fs-safe/permissions` | POSIX mode and Windows ACL inspection, raw owner/ACE facts, private-directory creation, and remediation helpers |
231
260
  | `@openclaw/fs-safe/walk` | budget-bounded directory walking with symlink policy, filters, and truncation accounting; not root-bounded |
261
+ | `@openclaw/fs-safe/copy` | directory copying with `clone: "auto"`, `"always"`, or `"never"`; native APFS, Btrfs, ReFS, XFS, and ZFS cloning, portable byte copying, and clone metadata; see [directory copying](docs/copy.md) |
232
262
  | `@openclaw/fs-safe/archive` | policy-driven ZIP/TAR extraction, clamp/filter policy, metadata/path-depth limits, native gzip/zstd/bzip2, and bounded entry reads |
233
- | `@openclaw/fs-safe/advanced` | lower-level composition helpers such as path scopes, root-file open, bounded descriptor reads, install paths, filename sanitizing, temp-file targets, sibling-temp writes, local-root readers, regular-file helpers, `pathExists`, and `withTimeout`; less stable than focused public subpaths |
263
+ | `@openclaw/fs-safe/advanced` | lower-level composition helpers such as path scopes, root-file open, bounded descriptor reads, [borrowed-handle copying](docs/copy.md#borrowed-filehandle-transfers), [exact directory identity](docs/directory-identity.md), [case probing](docs/path-case.md), [suffix-alias probing](docs/path-suffix-aliases.md), [in-place writes](docs/in-place-write.md), [versioned install-ID encoding](docs/install-path.md#safepathsegmenthashedv2), filename sanitizing, temp-file targets, sibling-temp writes, local-root readers, regular-file helpers, `pathExists`, and `withTimeout`; less stable than focused public subpaths |
234
264
  | `@openclaw/fs-safe/errors` | `FsSafeError`, closed codes/categories, causes, and operation-specific details receipts |
235
265
  | `@openclaw/fs-safe/types` | shared types: `DirEntry`, `PathStat`, … |
236
266
  | `@openclaw/fs-safe/test-hooks` | hooks the test suite uses to inject races; registration requires `NODE_ENV=test` or `VITEST=true` |
267
+ | `@openclaw/fs-safe/guest` | Python source and exit constants for caller-launched filesystem operations in Linux/macOS guests without Node; see the [guest protocol and trust boundary](docs/guest.md) |
237
268
 
238
269
  ## Failure semantics in the name
239
270
 
@@ -294,7 +325,7 @@ original directory on Linux/macOS and requires native support for this operation
294
325
  It offers atomic replace/no-replace publication, not expected-inode replacement
295
326
  or a crash-durability promise; application checks and coordination remain yours.
296
327
 
297
- `replaceFileAtomic()` writes a sibling temp file, applies its exact mode through the still-open descriptor, optionally fsyncs it, and renames it over the destination. It never follows the published destination path to set file permissions. Mode preservation, pinned-destination hardlink rejection, rename retry / copy fallback on `EPERM`, bounded original-content restoration after a torn fallback, parent-directory fsync, and a `beforeRename` hook for backup or observer flows are all opt-in. `movePathWithCopyFallback()` stages cross-device moves before commit and removes only the copied source entries, so concurrent source additions or replacements are preserved. Its optional synchronous `assertBeforeMutation` hook rechecks caller authority before renames and each source removal; `onDestinationPublished` reports an exact bigint destination identity before later checks or cleanup can fail. See [mutation authority and publication receipts](docs/atomic.md#mutation-authority-and-publication-receipts).
328
+ `replaceFileAtomic()` writes a sibling temp file, applies its exact mode through the still-open descriptor, optionally fsyncs it, and renames it over the destination. It never follows the published destination path to set file permissions. Mode preservation inherits only rwx bits from an existing non-symlink regular file; special bits, ownership, ACLs, and extended attributes are not copied. Pinned-destination hardlink rejection, rename retry / copy fallback on `EPERM`, bounded original-content restoration after a torn fallback, parent-directory fsync, and a `beforeRename` hook for backup or observer flows are all opt-in. `movePathWithCopyFallback()` stages cross-device moves before commit and removes only the copied source entries, so concurrent source additions or replacements are preserved. Its optional synchronous `assertBeforeMutation` hook rechecks caller authority before renames and each source removal; `onDestinationPublished` reports an exact bigint destination identity before later checks or cleanup can fail. See [mutation authority and publication receipts](docs/atomic.md#mutation-authority-and-publication-receipts).
298
329
 
299
330
  ```ts
300
331
  import { replaceFileAtomic } from "@openclaw/fs-safe/atomic";
@@ -335,6 +366,12 @@ fsyncs the completed file, and atomically renames it over the target. Choose it
335
366
  when the destination directory is itself the writable boundary and atomic
336
367
  replacement matters.
337
368
 
369
+ For sibling producers that can leave partial output before throwing, opt in to
370
+ `producerIsolation: "private-directory"`. The callback writes inside an owned
371
+ private workspace on the target filesystem, allowing cleanup after producer
372
+ failure while preserving sibling publication behavior. See [external outputs](docs/output.md)
373
+ for the identity checks and cleanup limits.
374
+
338
375
  Use it when the final filename is known before the external writer runs. If the
339
376
  filename depends on sniffing the produced bytes, write to a private temp
340
377
  workspace first, then finalize through the normal root APIs after validation.
@@ -354,8 +391,8 @@ const store = files.json("settings.json", { lock: true });
354
391
  await store.updateOr({ enabled: false }, (current) => ({ ...current, enabled: true }));
355
392
  ```
356
393
 
357
- `jsonStore({ filePath })` is the absolute-path convenience wrapper for the same
358
- primitive.
394
+ `jsonStore({ filePath })` is the single-path convenience wrapper for the same
395
+ primitive and exposes its resolved absolute path.
359
396
 
360
397
  Use `update()` when missing state is part of your model; use `updateOr()` for
361
398
  the common merge-into-defaults case. Standalone helpers use options bags
@@ -392,7 +429,9 @@ await media.pruneExpired({ ttlMs: 10 * 60 * 1000, recursive: true });
392
429
  The `store` subpath also includes durable JSON queue helpers for the common
393
430
  "one JSON file per work item" pattern: atomic entry writes, pending-entry loads,
394
431
  acknowledgement via `.delivered` markers, failed-entry moves, and stale temp
395
- cleanup. Retry, dedupe, and transport semantics stay with the caller.
432
+ cleanup. On Windows, every independently supplied queue path rejects NTFS
433
+ alternate-stream and directory-index namespace spellings before reads, locks,
434
+ or mutations. Retry, dedupe, and transport semantics stay with the caller.
396
435
 
397
436
  `tempWorkspace()` exposes `write()`, `writeText()`, `writeJson()`, `copyIn()`, and `read()` for
398
437
  single-file scratch workflows without hand-rolled path joins, plus a `store: FileStore` view of
@@ -401,6 +440,9 @@ Compatible creation and cleanup remain available without native support.
401
440
  Set `cleanupSafety: "require-bounded"` to require collision-safe quarantine and
402
441
  descriptor-bounded recursive cleanup before creating a child. See the
403
442
  [temp workspace contract](docs/temp.md).
443
+ On POSIX, bounded cleanup requires owner read and search in the final `dirMode`
444
+ (`0o500`); restrictive modes select compatible fallback or reject `require-bounded`
445
+ before child creation.
404
446
  Linux bounded cleanup requires the exact `openat2`/`RESOLVE_NO_XDEV` capability
405
447
  at runtime; compatible mode falls back when unavailable, while `require-bounded`
406
448
  rejects before child creation.
@@ -423,7 +465,9 @@ Use `readSecureFile()` when the caller gives you an absolute credential path
423
465
  instead of a root-relative workspace path. It opens the file first, validates the
424
466
  same handle it will read from, checks trusted directories, owner, POSIX mode or
425
467
  Windows ACLs, hardlink count, size, and optional timeout, then reads through the
426
- pinned handle.
468
+ pinned handle. On Windows, both the bytes and the owner/DACL facts come from that
469
+ handle; secure reads require the matching current native package and do not fall
470
+ back to a pathname ACL command.
427
471
 
428
472
  ```ts
429
473
  import { readSecureFile } from "@openclaw/fs-safe/secure-file";
@@ -441,6 +485,17 @@ flows where a warning is preferable to refusing the file.
441
485
 
442
486
  ## Directory walking
443
487
 
488
+ [`Root.entries()`](docs/entries.md) observes one directory without descending or
489
+ following child symlinks. It streams in filesystem order by default and supports
490
+ cancellation, entry limits that throw on overflow, and bounded sorted-name
491
+ collection. Use it when the caller owns traversal or symlink validation:
492
+
493
+ ```ts
494
+ for await (const entry of fs.entries("plugins", { maxEntries: 1_000 })) {
495
+ console.log(entry.name, entry.isSymbolicLink);
496
+ }
497
+ ```
498
+
444
499
  `walkDirectory()` and `walkDirectorySync()` replace ad-hoc recursive
445
500
  `readdir()` loops with entry and depth budgets, a symlink policy, and stable
446
501
  relative paths.
@@ -1 +1 @@
1
- {"version":3,"file":"absolute-path.d.ts","sourceRoot":"","sources":["../src/absolute-path.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAIhE,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAU5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,GAAG;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,6BAA6B,GACrC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAmL7D,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWhE;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEnF;AAuBD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,6BAA6B,CAAC,CA+ExC;AAED,wBAAsB,iCAAiC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAazF;AAED,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,yBAAyB,CAAA;CAAO,GACrD,OAAO,CAAC,oBAAoB,CAAC,CAgB/B;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,yBAAyB,CAAA;CAAO,GACrD,OAAO,CAAC,4BAA4B,CAAC,CA2BvC"}
1
+ {"version":3,"file":"absolute-path.d.ts","sourceRoot":"","sources":["../src/absolute-path.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAUhE,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAU5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,GAAG;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,6BAA6B,GACrC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAmL7D,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAchE;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGnF;AA4BD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,6BAA6B,CAAC,CA+ExC;AAED,wBAAsB,iCAAiC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBzF;AAED,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,yBAAyB,CAAA;CAAO,GACrD,OAAO,CAAC,oBAAoB,CAAC,CAmB/B;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,yBAAyB,CAAA;CAAO,GACrD,OAAO,CAAC,4BAA4B,CAAC,CA2BvC"}