@openclaw/openshell-sandbox 2026.9.5 → 2026.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1123) hide show
  1. package/dist/index.js +17 -49
  2. package/node_modules/@openclaw/fs-safe/CHANGELOG.md +202 -0
  3. package/node_modules/@openclaw/fs-safe/README.md +45 -10
  4. package/node_modules/@openclaw/fs-safe/dist/absolute-path.d.ts +0 -1
  5. package/node_modules/@openclaw/fs-safe/dist/absolute-path.js +2 -8
  6. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +6 -3
  7. package/node_modules/@openclaw/fs-safe/dist/advanced.js +4 -1
  8. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.d.ts +0 -1
  9. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.d.ts +0 -1
  10. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.js +22 -23
  11. package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts +1 -2
  12. package/node_modules/@openclaw/fs-safe/dist/archive-entry.d.ts +0 -1
  13. package/node_modules/@openclaw/fs-safe/dist/archive-errors.d.ts +0 -1
  14. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts +0 -1
  15. package/node_modules/@openclaw/fs-safe/dist/archive-input.d.ts +0 -1
  16. package/node_modules/@openclaw/fs-safe/dist/archive-kind.d.ts +0 -2
  17. package/node_modules/@openclaw/fs-safe/dist/archive-kind.js +5 -17
  18. package/node_modules/@openclaw/fs-safe/dist/archive-limits.d.ts +0 -1
  19. package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts +3 -4
  20. package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +129 -52
  21. package/node_modules/@openclaw/fs-safe/dist/archive-parser-errors.d.ts +0 -1
  22. package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
  23. package/node_modules/@openclaw/fs-safe/dist/archive-plan.d.ts +72 -2
  24. package/node_modules/@openclaw/fs-safe/dist/archive-plan.js +86 -22
  25. package/node_modules/@openclaw/fs-safe/dist/archive-read.d.ts +0 -1
  26. package/node_modules/@openclaw/fs-safe/dist/archive-read.js +10 -11
  27. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +0 -1
  28. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts +3 -1
  29. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.js +56 -37
  30. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.d.ts +17 -6
  31. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.js +134 -34
  32. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts +0 -1
  33. package/node_modules/@openclaw/fs-safe/dist/archive-zip-count.d.ts +0 -1
  34. package/node_modules/@openclaw/fs-safe/dist/archive-zip-count.js +21 -1
  35. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts +5 -2
  36. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.js +25 -1
  37. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.d.ts +6 -3
  38. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.js +24 -9
  39. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.d.ts +0 -1
  40. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.js +3 -4
  41. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts +2 -1
  42. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.js +114 -31
  43. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts +0 -1
  44. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts +1 -1
  45. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.js +13 -2
  46. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts +0 -1
  47. package/node_modules/@openclaw/fs-safe/dist/archive.d.ts +8 -6
  48. package/node_modules/@openclaw/fs-safe/dist/archive.js +214 -172
  49. package/node_modules/@openclaw/fs-safe/dist/async-lock.d.ts +0 -1
  50. package/node_modules/@openclaw/fs-safe/dist/atomic.d.ts +3 -2
  51. package/node_modules/@openclaw/fs-safe/dist/bounded-read-stream.d.ts +0 -2
  52. package/node_modules/@openclaw/fs-safe/dist/bounded-read-stream.js +0 -6
  53. package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts +0 -1
  54. package/node_modules/@openclaw/fs-safe/dist/byte-budget.d.ts +0 -1
  55. package/node_modules/@openclaw/fs-safe/dist/byte-view.d.ts +2 -0
  56. package/node_modules/@openclaw/fs-safe/dist/byte-view.js +13 -0
  57. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts +1 -1
  58. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.js +6 -2
  59. package/node_modules/@openclaw/fs-safe/dist/config.d.ts +0 -1
  60. package/node_modules/@openclaw/fs-safe/dist/containment.d.ts +0 -1
  61. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts +0 -1
  62. package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts +0 -1
  63. package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts +7 -2
  64. package/node_modules/@openclaw/fs-safe/dist/copy-publication.js +3 -0
  65. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts +0 -1
  66. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.js +51 -28
  67. package/node_modules/@openclaw/fs-safe/dist/copy.d.ts +0 -1
  68. package/node_modules/@openclaw/fs-safe/dist/copy.js +34 -16
  69. package/node_modules/@openclaw/fs-safe/dist/create-owned-file.d.ts +7 -0
  70. package/node_modules/@openclaw/fs-safe/dist/create-owned-file.js +16 -0
  71. package/node_modules/@openclaw/fs-safe/dist/create.d.ts +17 -0
  72. package/node_modules/@openclaw/fs-safe/dist/create.js +388 -0
  73. package/node_modules/@openclaw/fs-safe/dist/creation-boundary.d.ts +60 -0
  74. package/node_modules/@openclaw/fs-safe/dist/creation-boundary.js +371 -0
  75. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.d.ts +2 -3
  76. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.js +55 -35
  77. package/node_modules/@openclaw/fs-safe/dist/device-path.d.ts +0 -1
  78. package/node_modules/@openclaw/fs-safe/dist/directory-durability.d.ts +7 -8
  79. package/node_modules/@openclaw/fs-safe/dist/directory-durability.js +22 -80
  80. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts +0 -1
  81. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts +5 -7
  82. package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +25 -56
  83. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts +2 -1
  84. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.js +20 -2
  85. package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.d.ts +0 -1
  86. package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.js +5 -5
  87. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.d.ts +23 -0
  88. package/node_modules/@openclaw/fs-safe/dist/directory-receipt.js +123 -0
  89. package/node_modules/@openclaw/fs-safe/dist/durability.d.ts +2 -2
  90. package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts +0 -1
  91. package/node_modules/@openclaw/fs-safe/dist/error-detail.d.ts +0 -1
  92. package/node_modules/@openclaw/fs-safe/dist/errors.d.ts +0 -1
  93. package/node_modules/@openclaw/fs-safe/dist/file-cleanup.d.ts +19 -0
  94. package/node_modules/@openclaw/fs-safe/dist/file-cleanup.js +81 -0
  95. package/node_modules/@openclaw/fs-safe/dist/file-contents.d.ts +5 -0
  96. package/node_modules/@openclaw/fs-safe/dist/file-contents.js +40 -0
  97. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts +2 -1
  98. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.js +57 -2
  99. package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts +0 -1
  100. package/node_modules/@openclaw/fs-safe/dist/file-hash.js +186 -70
  101. package/node_modules/@openclaw/fs-safe/dist/file-identity.d.ts +0 -1
  102. package/node_modules/@openclaw/fs-safe/dist/file-identity.js +18 -4
  103. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-acquisition.d.ts +22 -0
  104. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-acquisition.js +98 -0
  105. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.d.ts +17 -0
  106. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.js +54 -0
  107. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.d.ts +3 -0
  108. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-acquire.js +303 -0
  109. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.d.ts +17 -0
  110. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-arbitration.js +66 -0
  111. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.d.ts +32 -0
  112. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.js +395 -0
  113. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.d.ts +43 -0
  114. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.js +209 -0
  115. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-mutation.d.ts +16 -0
  116. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-mutation.js +275 -0
  117. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-options.d.ts +19 -0
  118. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-options.js +58 -0
  119. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-registration.d.ts +1 -0
  120. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-registration.js +90 -0
  121. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.d.ts +36 -0
  122. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.js +288 -0
  123. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-stale-admission.d.ts +19 -0
  124. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-stale-admission.js +199 -0
  125. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.d.ts +4 -22
  126. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +207 -249
  127. package/node_modules/@openclaw/fs-safe/dist/file-lock.d.ts +0 -1
  128. package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts +1 -2
  129. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts +9 -8
  130. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.js +67 -36
  131. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.d.ts +0 -1
  132. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.js +5 -1
  133. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts +0 -1
  134. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.js +197 -227
  135. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts +0 -1
  136. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.js +22 -36
  137. package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts +0 -1
  138. package/node_modules/@openclaw/fs-safe/dist/file-store.js +54 -25
  139. package/node_modules/@openclaw/fs-safe/dist/file-sync.d.ts +0 -1
  140. package/node_modules/@openclaw/fs-safe/dist/filename.d.ts +0 -1
  141. package/node_modules/@openclaw/fs-safe/dist/filename.js +1 -7
  142. package/node_modules/@openclaw/fs-safe/dist/fs.d.ts +0 -1
  143. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts +2 -2
  144. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.js +27 -19
  145. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts +0 -7
  146. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.js +6 -11
  147. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts +0 -1
  148. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.js +41 -90
  149. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts +0 -1
  150. package/node_modules/@openclaw/fs-safe/dist/guest.d.ts +0 -1
  151. package/node_modules/@openclaw/fs-safe/dist/home-dir.d.ts +0 -1
  152. package/node_modules/@openclaw/fs-safe/dist/index.d.ts +9 -7
  153. package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts +0 -1
  154. package/node_modules/@openclaw/fs-safe/dist/install-path.js +2 -5
  155. package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts +0 -1
  156. package/node_modules/@openclaw/fs-safe/dist/json-document-store.js +22 -15
  157. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.d.ts +13 -1
  158. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.js +134 -0
  159. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts +0 -2
  160. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.js +43 -72
  161. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts +0 -1
  162. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.js +13 -9
  163. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts +0 -1
  164. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.js +18 -141
  165. package/node_modules/@openclaw/fs-safe/dist/json-store.d.ts +0 -1
  166. package/node_modules/@openclaw/fs-safe/dist/json-store.js +1 -2
  167. package/node_modules/@openclaw/fs-safe/dist/json-stringify.d.ts +0 -1
  168. package/node_modules/@openclaw/fs-safe/dist/json.d.ts +0 -1
  169. package/node_modules/@openclaw/fs-safe/dist/json.js +39 -92
  170. package/node_modules/@openclaw/fs-safe/dist/local-file-access.d.ts +0 -1
  171. package/node_modules/@openclaw/fs-safe/dist/local-file-access.js +3 -10
  172. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts +0 -1
  173. package/node_modules/@openclaw/fs-safe/dist/local-roots.d.ts +0 -1
  174. package/node_modules/@openclaw/fs-safe/dist/local-roots.js +19 -21
  175. package/node_modules/@openclaw/fs-safe/dist/lock-config.d.ts +0 -1
  176. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts +5 -20
  177. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.js +57 -21
  178. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts +0 -1
  179. package/node_modules/@openclaw/fs-safe/dist/move-path.d.ts +0 -1
  180. package/node_modules/@openclaw/fs-safe/dist/move-path.js +64 -42
  181. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts +0 -1
  182. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +19 -2
  183. package/node_modules/@openclaw/fs-safe/dist/native-config.d.ts +0 -1
  184. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts +0 -1
  185. package/node_modules/@openclaw/fs-safe/dist/native-fallback-warning.d.ts +3 -0
  186. package/node_modules/@openclaw/fs-safe/dist/native-fallback-warning.js +11 -0
  187. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts +1 -7
  188. package/node_modules/@openclaw/fs-safe/dist/native-operations.js +2 -31
  189. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts +5 -3
  190. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.js +27 -7
  191. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts +2 -3
  192. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.js +174 -29
  193. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.d.ts +1 -2
  194. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +224 -187
  195. package/node_modules/@openclaw/fs-safe/dist/native-policy-directory-observation.d.ts +11 -0
  196. package/node_modules/@openclaw/fs-safe/dist/native-policy-directory-observation.js +61 -0
  197. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent-windows.d.ts +13 -0
  198. package/node_modules/@openclaw/fs-safe/dist/native-policy-parent-windows.js +209 -0
  199. package/node_modules/@openclaw/fs-safe/dist/native-rename-outcome.d.ts +3 -0
  200. package/node_modules/@openclaw/fs-safe/dist/native-rename-outcome.js +8 -0
  201. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts +20 -6
  202. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +149 -106
  203. package/node_modules/@openclaw/fs-safe/dist/native.d.ts +0 -1
  204. package/node_modules/@openclaw/fs-safe/dist/native.js +2 -2
  205. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts +0 -1
  206. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.d.ts +0 -1
  207. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.js +11 -2
  208. package/node_modules/@openclaw/fs-safe/dist/output.d.ts +0 -1
  209. package/node_modules/@openclaw/fs-safe/dist/output.js +12 -8
  210. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts +0 -1
  211. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.d.ts +0 -1
  212. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.js +10 -4
  213. package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts +0 -1
  214. package/node_modules/@openclaw/fs-safe/dist/path-policy.d.ts +0 -1
  215. package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts +0 -1
  216. package/node_modules/@openclaw/fs-safe/dist/path-prefix.js +30 -8
  217. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts +0 -1
  218. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts +0 -1
  219. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts +2 -1
  220. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.js +25 -17
  221. package/node_modules/@openclaw/fs-safe/dist/path.d.ts +0 -1
  222. package/node_modules/@openclaw/fs-safe/dist/path.js +2 -1
  223. package/node_modules/@openclaw/fs-safe/dist/permission-exec.d.ts +2 -1
  224. package/node_modules/@openclaw/fs-safe/dist/permission-exec.js +144 -21
  225. package/node_modules/@openclaw/fs-safe/dist/permissions-public.d.ts +0 -1
  226. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts +2 -10
  227. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.js +11 -31
  228. package/node_modules/@openclaw/fs-safe/dist/permissions.d.ts +0 -1
  229. package/node_modules/@openclaw/fs-safe/dist/permissions.js +11 -33
  230. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts +1 -2
  231. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.js +23 -29
  232. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts +7 -3
  233. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.js +81 -18
  234. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts +1 -1
  235. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.js +1 -1
  236. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts +1 -1
  237. package/node_modules/@openclaw/fs-safe/dist/pinned-open.js +7 -2
  238. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.d.ts +1 -2
  239. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.js +3 -16
  240. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.d.ts +3 -0
  241. package/node_modules/@openclaw/fs-safe/dist/pinned-write-input.js +35 -0
  242. package/node_modules/@openclaw/fs-safe/dist/pinned-write-mode.d.ts +4 -0
  243. package/node_modules/@openclaw/fs-safe/dist/pinned-write-mode.js +31 -0
  244. package/node_modules/@openclaw/fs-safe/dist/pinned-write-staged.d.ts +5 -0
  245. package/node_modules/@openclaw/fs-safe/dist/pinned-write-staged.js +185 -0
  246. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts +14 -21
  247. package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts +0 -2
  248. package/node_modules/@openclaw/fs-safe/dist/pinned-write.js +43 -151
  249. package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts +0 -1
  250. package/node_modules/@openclaw/fs-safe/dist/private-directory.d.ts +0 -1
  251. package/node_modules/@openclaw/fs-safe/dist/private-directory.js +18 -4
  252. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff-sync.d.ts +3 -0
  253. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff-sync.js +72 -0
  254. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts +42 -5
  255. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.js +166 -80
  256. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts +0 -1
  257. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.js +56 -128
  258. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts +3 -3
  259. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +16 -7
  260. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.d.ts +0 -1
  261. package/node_modules/@openclaw/fs-safe/dist/publish-file.d.ts +2 -4
  262. package/node_modules/@openclaw/fs-safe/dist/publish-file.js +59 -100
  263. package/node_modules/@openclaw/fs-safe/dist/read-open-flags.d.ts +0 -1
  264. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.d.ts +0 -1
  265. package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts +0 -1
  266. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts +0 -1
  267. package/node_modules/@openclaw/fs-safe/dist/regular-file.d.ts +0 -1
  268. package/node_modules/@openclaw/fs-safe/dist/regular-file.js +108 -193
  269. package/node_modules/@openclaw/fs-safe/dist/replace-directory.d.ts +0 -1
  270. package/node_modules/@openclaw/fs-safe/dist/replace-directory.js +257 -20
  271. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts +0 -1
  272. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +90 -85
  273. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.d.ts +0 -1
  274. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.js +27 -33
  275. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.d.ts +0 -1
  276. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.js +16 -17
  277. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts +0 -1
  278. package/node_modules/@openclaw/fs-safe/dist/replace-file-rename-policy.d.ts +1 -3
  279. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts +17 -22
  280. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.js +110 -145
  281. package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts +3 -4
  282. package/node_modules/@openclaw/fs-safe/dist/replace-file.js +16 -20
  283. package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.d.ts +25 -0
  284. package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.js +193 -0
  285. package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts +1 -1
  286. package/node_modules/@openclaw/fs-safe/dist/root-boundary.js +4 -0
  287. package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts +0 -9
  288. package/node_modules/@openclaw/fs-safe/dist/root-context.js +3 -10
  289. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts +9 -3
  290. package/node_modules/@openclaw/fs-safe/dist/root-create-input.js +17 -4
  291. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts +4 -5
  292. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.js +20 -7
  293. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +1 -1
  294. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +24 -10
  295. package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts +0 -1
  296. package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts +0 -1
  297. package/node_modules/@openclaw/fs-safe/dist/root-entries.js +2 -2
  298. package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts +4 -1
  299. package/node_modules/@openclaw/fs-safe/dist/root-errors.js +5 -3
  300. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts +1 -2
  301. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.js +5 -2
  302. package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts +0 -1
  303. package/node_modules/@openclaw/fs-safe/dist/root-file.js +3 -2
  304. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts +2 -15
  305. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +232 -148
  306. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +2 -1
  307. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +28 -25
  308. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts +0 -1
  309. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts +0 -1
  310. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.js +2 -4
  311. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts +13 -6
  312. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts +1 -1
  313. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.js +11 -2
  314. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts +3 -1
  315. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.js +45 -50
  316. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts +0 -1
  317. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts +0 -1
  318. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.js +61 -11
  319. package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts +0 -1
  320. package/node_modules/@openclaw/fs-safe/dist/root-path.js +60 -200
  321. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts +0 -1
  322. package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts +0 -1
  323. package/node_modules/@openclaw/fs-safe/dist/root-public-types.d.ts +11 -0
  324. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts +0 -1
  325. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.js +31 -39
  326. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts +0 -1
  327. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.js +2 -4
  328. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts +0 -1
  329. package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts +1 -1
  330. package/node_modules/@openclaw/fs-safe/dist/root-remove.js +21 -5
  331. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts +0 -1
  332. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts +1 -2
  333. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +17 -2
  334. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts +1 -4
  335. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +4 -22
  336. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts +1 -3
  337. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.js +17 -68
  338. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts +0 -1
  339. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.js +12 -27
  340. package/node_modules/@openclaw/fs-safe/dist/root-write-lock-binding.d.ts +14 -0
  341. package/node_modules/@openclaw/fs-safe/dist/root-write-lock-binding.js +162 -0
  342. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts +0 -1
  343. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts +0 -1
  344. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.js +1 -1
  345. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.d.ts +1 -2
  346. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.js +29 -42
  347. package/node_modules/@openclaw/fs-safe/dist/root.d.ts +2 -7
  348. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts +1 -2
  349. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.js +2 -5
  350. package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts +0 -1
  351. package/node_modules/@openclaw/fs-safe/dist/secret-file.js +10 -42
  352. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.d.ts +0 -1
  353. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.js +6 -27
  354. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.d.ts +6 -3
  355. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.js +26 -2
  356. package/node_modules/@openclaw/fs-safe/dist/secret.d.ts +0 -1
  357. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts +3 -3
  358. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.js +38 -136
  359. package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts +0 -1
  360. package/node_modules/@openclaw/fs-safe/dist/secure-file.js +11 -11
  361. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts +0 -1
  362. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts +0 -1
  363. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.js +5 -1
  364. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts +0 -1
  365. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.js +32 -39
  366. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts +0 -1
  367. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.js +23 -12
  368. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts +2 -29
  369. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +279 -216
  370. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-context.d.ts +18 -0
  371. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-context.js +60 -0
  372. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-parser.d.ts +42 -0
  373. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-parser.js +113 -0
  374. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission.d.ts +31 -0
  375. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission.js +1 -0
  376. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.d.ts +3 -1
  377. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.js +6 -0
  378. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts +4 -1
  379. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.js +23 -0
  380. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts +10 -6
  381. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +91 -33
  382. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-registration.d.ts +13 -0
  383. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-registration.js +47 -0
  384. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.d.ts +0 -1
  385. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.js +2 -1
  386. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-stale-admission.d.ts +38 -0
  387. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-stale-admission.js +228 -0
  388. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-target.d.ts +7 -0
  389. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-target.js +55 -0
  390. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-types.d.ts +22 -17
  391. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.d.ts +0 -1
  392. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +43 -28
  393. package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts +7 -5
  394. package/node_modules/@openclaw/fs-safe/dist/staged-directory.js +43 -7
  395. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.d.ts +16 -0
  396. package/node_modules/@openclaw/fs-safe/dist/staged-file-settlement.js +57 -0
  397. package/node_modules/@openclaw/fs-safe/dist/staged-file-types.d.ts +0 -1
  398. package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts +0 -1
  399. package/node_modules/@openclaw/fs-safe/dist/store.d.ts +0 -1
  400. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.d.ts +1 -2
  401. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.js +9 -9
  402. package/node_modules/@openclaw/fs-safe/dist/string-coerce.d.ts +0 -1
  403. package/node_modules/@openclaw/fs-safe/dist/suppressed-error.d.ts +0 -1
  404. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.d.ts +0 -1
  405. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.js +2 -27
  406. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.d.ts +0 -1
  407. package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts +0 -1
  408. package/node_modules/@openclaw/fs-safe/dist/temp-target.js +7 -46
  409. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts +0 -8
  410. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +29 -11
  411. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +16 -6
  412. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +71 -15
  413. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts +1 -7
  414. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +10 -31
  415. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts +1 -1
  416. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +49 -26
  417. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts +0 -1
  418. package/node_modules/@openclaw/fs-safe/dist/temp.d.ts +0 -1
  419. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts +0 -1
  420. package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts +0 -1
  421. package/node_modules/@openclaw/fs-safe/dist/text-atomic.js +1 -1
  422. package/node_modules/@openclaw/fs-safe/dist/timing.d.ts +0 -1
  423. package/node_modules/@openclaw/fs-safe/dist/trash.d.ts +0 -1
  424. package/node_modules/@openclaw/fs-safe/dist/types.d.ts +0 -1
  425. package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts +0 -1
  426. package/node_modules/@openclaw/fs-safe/dist/unicode-path.js +3 -0
  427. package/node_modules/@openclaw/fs-safe/dist/walk.d.ts +5 -2
  428. package/node_modules/@openclaw/fs-safe/dist/walk.js +23 -8
  429. package/node_modules/@openclaw/fs-safe/dist/windows-command.d.ts +0 -1
  430. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts +0 -1
  431. package/node_modules/@openclaw/fs-safe/dist/windows-owner.js +8 -4
  432. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts +1 -1
  433. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.js +12 -43
  434. package/node_modules/@openclaw/fs-safe/dist/windows-path-syntax.d.ts +5 -0
  435. package/node_modules/@openclaw/fs-safe/dist/windows-path-syntax.js +21 -0
  436. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.cs +336 -0
  437. package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.ps1 +15 -0
  438. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.d.ts +25 -0
  439. package/node_modules/@openclaw/fs-safe/dist/windows-security-command.js +363 -0
  440. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.d.ts +5 -0
  441. package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.js +108 -0
  442. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts +7 -1
  443. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.js +23 -0
  444. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.d.ts +0 -1
  445. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.js +1 -8
  446. package/node_modules/@openclaw/fs-safe/dist/write-queue.d.ts +0 -1
  447. package/node_modules/@openclaw/fs-safe/dist/write-queue.js +1 -4
  448. package/node_modules/@openclaw/fs-safe/docs/advanced.md +75 -4
  449. package/node_modules/@openclaw/fs-safe/docs/archive.md +138 -48
  450. package/node_modules/@openclaw/fs-safe/docs/atomic.md +125 -10
  451. package/node_modules/@openclaw/fs-safe/docs/config.md +6 -2
  452. package/node_modules/@openclaw/fs-safe/docs/contributing.md +48 -4
  453. package/node_modules/@openclaw/fs-safe/docs/copy.md +39 -0
  454. package/node_modules/@openclaw/fs-safe/docs/creation.md +132 -0
  455. package/node_modules/@openclaw/fs-safe/docs/durability.md +59 -0
  456. package/node_modules/@openclaw/fs-safe/docs/file-contents.md +68 -0
  457. package/node_modules/@openclaw/fs-safe/docs/file-store.md +19 -0
  458. package/node_modules/@openclaw/fs-safe/docs/guest.md +1 -1
  459. package/node_modules/@openclaw/fs-safe/docs/install.md +31 -7
  460. package/node_modules/@openclaw/fs-safe/docs/json-store.md +5 -0
  461. package/node_modules/@openclaw/fs-safe/docs/json.md +5 -4
  462. package/node_modules/@openclaw/fs-safe/docs/local-roots.md +2 -0
  463. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.5.md +15 -6
  464. package/node_modules/@openclaw/fs-safe/docs/migrating-to-0.6.md +9 -4
  465. package/node_modules/@openclaw/fs-safe/docs/mutation-policy-proof.md +11 -7
  466. package/node_modules/@openclaw/fs-safe/docs/native-helper.md +32 -12
  467. package/node_modules/@openclaw/fs-safe/docs/native.md +55 -15
  468. package/node_modules/@openclaw/fs-safe/docs/output.md +6 -0
  469. package/node_modules/@openclaw/fs-safe/docs/path-prefix.md +10 -0
  470. package/node_modules/@openclaw/fs-safe/docs/path-suffix-aliases.md +51 -6
  471. package/node_modules/@openclaw/fs-safe/docs/path.md +4 -4
  472. package/node_modules/@openclaw/fs-safe/docs/permissions.md +56 -14
  473. package/node_modules/@openclaw/fs-safe/docs/public-api.md +8 -2
  474. package/node_modules/@openclaw/fs-safe/docs/quickstart.md +1 -1
  475. package/node_modules/@openclaw/fs-safe/docs/reading.md +2 -2
  476. package/node_modules/@openclaw/fs-safe/docs/regular-file.md +3 -0
  477. package/node_modules/@openclaw/fs-safe/docs/root.md +75 -3
  478. package/node_modules/@openclaw/fs-safe/docs/secret-file.md +19 -2
  479. package/node_modules/@openclaw/fs-safe/docs/secure-file.md +9 -4
  480. package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +127 -9
  481. package/node_modules/@openclaw/fs-safe/docs/staged-file.md +16 -6
  482. package/node_modules/@openclaw/fs-safe/docs/store.md +9 -1
  483. package/node_modules/@openclaw/fs-safe/docs/temp.md +32 -5
  484. package/node_modules/@openclaw/fs-safe/docs/types.md +18 -2
  485. package/node_modules/@openclaw/fs-safe/docs/walk.md +74 -1
  486. package/node_modules/@openclaw/fs-safe/docs/writing.md +105 -11
  487. package/node_modules/@openclaw/fs-safe/package.json +19 -17
  488. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  489. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +1 -1
  490. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  491. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +1 -1
  492. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  493. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +1 -1
  494. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  495. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +1 -1
  496. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  497. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +1 -1
  498. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  499. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +1 -1
  500. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  501. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +1 -1
  502. package/node_modules/zod/README.md +2 -2
  503. package/node_modules/zod/compile.cjs +19 -0
  504. package/node_modules/zod/index.cjs +19 -0
  505. package/node_modules/zod/locales/index.cjs +19 -0
  506. package/node_modules/zod/mini/index.cjs +19 -0
  507. package/node_modules/zod/package.json +8 -7
  508. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  509. package/node_modules/zod/src/v4/classic/external.ts +2 -0
  510. package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
  511. package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
  512. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
  513. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
  514. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  515. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
  516. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
  517. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
  518. package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
  519. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
  520. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  521. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
  522. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
  523. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
  524. package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
  525. package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
  526. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
  527. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  528. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  529. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
  530. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  531. package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
  532. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
  533. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
  534. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
  535. package/node_modules/zod/src/v4/core/api.ts +44 -28
  536. package/node_modules/zod/src/v4/core/checks.ts +62 -102
  537. package/node_modules/zod/src/v4/core/compile.ts +218 -93
  538. package/node_modules/zod/src/v4/core/core.ts +1 -3
  539. package/node_modules/zod/src/v4/core/doc.ts +6 -2
  540. package/node_modules/zod/src/v4/core/errors.ts +3 -6
  541. package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
  542. package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
  543. package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
  544. package/node_modules/zod/src/v4/core/parse.ts +37 -16
  545. package/node_modules/zod/src/v4/core/regexes.ts +14 -4
  546. package/node_modules/zod/src/v4/core/schemas.ts +296 -132
  547. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  548. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
  549. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  550. package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
  551. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  552. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  553. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  554. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
  555. package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
  556. package/node_modules/zod/src/v4/core/util.ts +218 -147
  557. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  558. package/node_modules/zod/src/v4/locales/ar.ts +2 -0
  559. package/node_modules/zod/src/v4/locales/az.ts +2 -0
  560. package/node_modules/zod/src/v4/locales/be.ts +2 -0
  561. package/node_modules/zod/src/v4/locales/bg.ts +2 -0
  562. package/node_modules/zod/src/v4/locales/bn.ts +2 -0
  563. package/node_modules/zod/src/v4/locales/ca.ts +2 -0
  564. package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
  565. package/node_modules/zod/src/v4/locales/cs.ts +2 -0
  566. package/node_modules/zod/src/v4/locales/da.ts +2 -0
  567. package/node_modules/zod/src/v4/locales/de.ts +2 -0
  568. package/node_modules/zod/src/v4/locales/el.ts +2 -0
  569. package/node_modules/zod/src/v4/locales/en.ts +2 -0
  570. package/node_modules/zod/src/v4/locales/eo.ts +2 -0
  571. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  572. package/node_modules/zod/src/v4/locales/fa.ts +2 -0
  573. package/node_modules/zod/src/v4/locales/fi.ts +2 -0
  574. package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
  575. package/node_modules/zod/src/v4/locales/fr.ts +2 -0
  576. package/node_modules/zod/src/v4/locales/gu.ts +2 -0
  577. package/node_modules/zod/src/v4/locales/he.ts +2 -0
  578. package/node_modules/zod/src/v4/locales/hi.ts +2 -0
  579. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  580. package/node_modules/zod/src/v4/locales/hu.ts +2 -0
  581. package/node_modules/zod/src/v4/locales/hy.ts +2 -0
  582. package/node_modules/zod/src/v4/locales/id.ts +2 -0
  583. package/node_modules/zod/src/v4/locales/index.ts +1 -0
  584. package/node_modules/zod/src/v4/locales/is.ts +2 -0
  585. package/node_modules/zod/src/v4/locales/it.ts +2 -0
  586. package/node_modules/zod/src/v4/locales/ja.ts +2 -0
  587. package/node_modules/zod/src/v4/locales/ka.ts +2 -0
  588. package/node_modules/zod/src/v4/locales/km.ts +2 -0
  589. package/node_modules/zod/src/v4/locales/kn.ts +2 -0
  590. package/node_modules/zod/src/v4/locales/ko.ts +2 -0
  591. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  592. package/node_modules/zod/src/v4/locales/mk.ts +2 -0
  593. package/node_modules/zod/src/v4/locales/ms.ts +2 -0
  594. package/node_modules/zod/src/v4/locales/ne.ts +2 -0
  595. package/node_modules/zod/src/v4/locales/nl.ts +2 -0
  596. package/node_modules/zod/src/v4/locales/nn.ts +2 -0
  597. package/node_modules/zod/src/v4/locales/no.ts +2 -0
  598. package/node_modules/zod/src/v4/locales/ota.ts +2 -0
  599. package/node_modules/zod/src/v4/locales/pl.ts +2 -0
  600. package/node_modules/zod/src/v4/locales/ps.ts +2 -0
  601. package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
  602. package/node_modules/zod/src/v4/locales/pt.ts +2 -0
  603. package/node_modules/zod/src/v4/locales/ro.ts +2 -0
  604. package/node_modules/zod/src/v4/locales/ru.ts +2 -0
  605. package/node_modules/zod/src/v4/locales/sk.ts +2 -0
  606. package/node_modules/zod/src/v4/locales/sl.ts +2 -0
  607. package/node_modules/zod/src/v4/locales/sv.ts +2 -0
  608. package/node_modules/zod/src/v4/locales/ta.ts +2 -0
  609. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  610. package/node_modules/zod/src/v4/locales/th.ts +2 -0
  611. package/node_modules/zod/src/v4/locales/tk.ts +2 -0
  612. package/node_modules/zod/src/v4/locales/tr.ts +2 -0
  613. package/node_modules/zod/src/v4/locales/uk.ts +2 -0
  614. package/node_modules/zod/src/v4/locales/ur.ts +2 -0
  615. package/node_modules/zod/src/v4/locales/uz.ts +2 -0
  616. package/node_modules/zod/src/v4/locales/vi.ts +2 -0
  617. package/node_modules/zod/src/v4/locales/yo.ts +2 -0
  618. package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
  619. package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
  620. package/node_modules/zod/src/v4/mini/external.ts +2 -0
  621. package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
  622. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
  623. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  624. package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
  625. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  626. package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
  627. package/node_modules/zod/v3/ZodError.cjs +19 -0
  628. package/node_modules/zod/v3/errors.cjs +19 -0
  629. package/node_modules/zod/v3/external.cjs +19 -0
  630. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  631. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  632. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  633. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  634. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  635. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  636. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  637. package/node_modules/zod/v3/index.cjs +19 -0
  638. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  639. package/node_modules/zod/v3/types.cjs +19 -0
  640. package/node_modules/zod/v4/classic/checks.cjs +19 -0
  641. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  642. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  643. package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
  644. package/node_modules/zod/v4/classic/errors.cjs +19 -0
  645. package/node_modules/zod/v4/classic/external.cjs +22 -1
  646. package/node_modules/zod/v4/classic/external.d.cts +1 -1
  647. package/node_modules/zod/v4/classic/external.d.ts +1 -1
  648. package/node_modules/zod/v4/classic/external.js +1 -1
  649. package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
  650. package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
  651. package/node_modules/zod/v4/classic/in-out.cjs +19 -0
  652. package/node_modules/zod/v4/classic/index.cjs +19 -0
  653. package/node_modules/zod/v4/classic/iso.cjs +19 -0
  654. package/node_modules/zod/v4/classic/parse.cjs +19 -0
  655. package/node_modules/zod/v4/classic/schemas.cjs +100 -35
  656. package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
  657. package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
  658. package/node_modules/zod/v4/classic/schemas.js +77 -33
  659. package/node_modules/zod/v4/core/api.cjs +45 -22
  660. package/node_modules/zod/v4/core/api.d.cts +12 -6
  661. package/node_modules/zod/v4/core/api.d.ts +12 -6
  662. package/node_modules/zod/v4/core/api.js +25 -22
  663. package/node_modules/zod/v4/core/checks.cjs +51 -97
  664. package/node_modules/zod/v4/core/checks.d.cts +17 -1
  665. package/node_modules/zod/v4/core/checks.d.ts +17 -1
  666. package/node_modules/zod/v4/core/checks.js +31 -96
  667. package/node_modules/zod/v4/core/compile.cjs +173 -78
  668. package/node_modules/zod/v4/core/compile.d.cts +18 -4
  669. package/node_modules/zod/v4/core/compile.d.ts +18 -4
  670. package/node_modules/zod/v4/core/compile.js +154 -79
  671. package/node_modules/zod/v4/core/core.cjs +20 -1
  672. package/node_modules/zod/v4/core/core.js +1 -1
  673. package/node_modules/zod/v4/core/doc.cjs +26 -2
  674. package/node_modules/zod/v4/core/doc.js +7 -2
  675. package/node_modules/zod/v4/core/errors.cjs +21 -5
  676. package/node_modules/zod/v4/core/errors.js +2 -5
  677. package/node_modules/zod/v4/core/index.cjs +19 -0
  678. package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
  679. package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
  680. package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
  681. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  682. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  683. package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
  684. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  685. package/node_modules/zod/v4/core/memoizer.cjs +111 -23
  686. package/node_modules/zod/v4/core/memoizer.js +69 -23
  687. package/node_modules/zod/v4/core/parse.cjs +56 -16
  688. package/node_modules/zod/v4/core/parse.js +37 -16
  689. package/node_modules/zod/v4/core/regexes.cjs +31 -6
  690. package/node_modules/zod/v4/core/regexes.d.cts +3 -0
  691. package/node_modules/zod/v4/core/regexes.d.ts +3 -0
  692. package/node_modules/zod/v4/core/regexes.js +10 -4
  693. package/node_modules/zod/v4/core/registries.cjs +19 -0
  694. package/node_modules/zod/v4/core/schemas.cjs +302 -114
  695. package/node_modules/zod/v4/core/schemas.d.cts +28 -8
  696. package/node_modules/zod/v4/core/schemas.d.ts +28 -8
  697. package/node_modules/zod/v4/core/schemas.js +279 -113
  698. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  699. package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
  700. package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
  701. package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
  702. package/node_modules/zod/v4/core/to-json-schema.js +7 -6
  703. package/node_modules/zod/v4/core/util.cjs +177 -143
  704. package/node_modules/zod/v4/core/util.d.cts +25 -4
  705. package/node_modules/zod/v4/core/util.d.ts +25 -4
  706. package/node_modules/zod/v4/core/util.js +156 -143
  707. package/node_modules/zod/v4/core/versions.cjs +21 -2
  708. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  709. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  710. package/node_modules/zod/v4/core/versions.js +2 -2
  711. package/node_modules/zod/v4/core/visit.cjs +19 -0
  712. package/node_modules/zod/v4/index.cjs +19 -0
  713. package/node_modules/zod/v4/locales/ar.cjs +2 -0
  714. package/node_modules/zod/v4/locales/ar.js +2 -0
  715. package/node_modules/zod/v4/locales/az.cjs +2 -0
  716. package/node_modules/zod/v4/locales/az.js +2 -0
  717. package/node_modules/zod/v4/locales/be.cjs +2 -0
  718. package/node_modules/zod/v4/locales/be.js +2 -0
  719. package/node_modules/zod/v4/locales/bg.cjs +2 -0
  720. package/node_modules/zod/v4/locales/bg.js +2 -0
  721. package/node_modules/zod/v4/locales/bn.cjs +2 -0
  722. package/node_modules/zod/v4/locales/bn.js +2 -0
  723. package/node_modules/zod/v4/locales/ca.cjs +2 -0
  724. package/node_modules/zod/v4/locales/ca.js +2 -0
  725. package/node_modules/zod/v4/locales/ckb.cjs +2 -0
  726. package/node_modules/zod/v4/locales/ckb.js +2 -0
  727. package/node_modules/zod/v4/locales/cs.cjs +2 -0
  728. package/node_modules/zod/v4/locales/cs.js +2 -0
  729. package/node_modules/zod/v4/locales/da.cjs +2 -0
  730. package/node_modules/zod/v4/locales/da.js +2 -0
  731. package/node_modules/zod/v4/locales/de.cjs +2 -0
  732. package/node_modules/zod/v4/locales/de.js +2 -0
  733. package/node_modules/zod/v4/locales/el.cjs +2 -0
  734. package/node_modules/zod/v4/locales/el.js +2 -0
  735. package/node_modules/zod/v4/locales/en.cjs +2 -0
  736. package/node_modules/zod/v4/locales/en.js +2 -0
  737. package/node_modules/zod/v4/locales/eo.cjs +2 -0
  738. package/node_modules/zod/v4/locales/eo.js +2 -0
  739. package/node_modules/zod/v4/locales/es.cjs +2 -0
  740. package/node_modules/zod/v4/locales/es.js +2 -0
  741. package/node_modules/zod/v4/locales/fa.cjs +2 -0
  742. package/node_modules/zod/v4/locales/fa.js +2 -0
  743. package/node_modules/zod/v4/locales/fi.cjs +2 -0
  744. package/node_modules/zod/v4/locales/fi.js +2 -0
  745. package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
  746. package/node_modules/zod/v4/locales/fr-CA.js +2 -0
  747. package/node_modules/zod/v4/locales/fr.cjs +2 -0
  748. package/node_modules/zod/v4/locales/fr.js +2 -0
  749. package/node_modules/zod/v4/locales/gu.cjs +2 -0
  750. package/node_modules/zod/v4/locales/gu.js +2 -0
  751. package/node_modules/zod/v4/locales/he.cjs +2 -0
  752. package/node_modules/zod/v4/locales/he.js +2 -0
  753. package/node_modules/zod/v4/locales/hi.cjs +2 -0
  754. package/node_modules/zod/v4/locales/hi.js +2 -0
  755. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  756. package/node_modules/zod/v4/locales/hr.js +2 -0
  757. package/node_modules/zod/v4/locales/hu.cjs +2 -0
  758. package/node_modules/zod/v4/locales/hu.js +2 -0
  759. package/node_modules/zod/v4/locales/hy.cjs +2 -0
  760. package/node_modules/zod/v4/locales/hy.js +2 -0
  761. package/node_modules/zod/v4/locales/id.cjs +2 -0
  762. package/node_modules/zod/v4/locales/id.js +2 -0
  763. package/node_modules/zod/v4/locales/index.cjs +22 -1
  764. package/node_modules/zod/v4/locales/index.d.cts +1 -0
  765. package/node_modules/zod/v4/locales/index.d.ts +1 -0
  766. package/node_modules/zod/v4/locales/index.js +1 -0
  767. package/node_modules/zod/v4/locales/is.cjs +2 -0
  768. package/node_modules/zod/v4/locales/is.js +2 -0
  769. package/node_modules/zod/v4/locales/it.cjs +2 -0
  770. package/node_modules/zod/v4/locales/it.js +2 -0
  771. package/node_modules/zod/v4/locales/ja.cjs +2 -0
  772. package/node_modules/zod/v4/locales/ja.js +2 -0
  773. package/node_modules/zod/v4/locales/ka.cjs +2 -0
  774. package/node_modules/zod/v4/locales/ka.js +2 -0
  775. package/node_modules/zod/v4/locales/km.cjs +2 -0
  776. package/node_modules/zod/v4/locales/km.js +2 -0
  777. package/node_modules/zod/v4/locales/kn.cjs +2 -0
  778. package/node_modules/zod/v4/locales/kn.js +2 -0
  779. package/node_modules/zod/v4/locales/ko.cjs +2 -0
  780. package/node_modules/zod/v4/locales/ko.js +2 -0
  781. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  782. package/node_modules/zod/v4/locales/lt.js +2 -0
  783. package/node_modules/zod/v4/locales/mk.cjs +2 -0
  784. package/node_modules/zod/v4/locales/mk.js +2 -0
  785. package/node_modules/zod/v4/locales/ms.cjs +2 -0
  786. package/node_modules/zod/v4/locales/ms.js +2 -0
  787. package/node_modules/zod/v4/locales/ne.cjs +2 -0
  788. package/node_modules/zod/v4/locales/ne.js +2 -0
  789. package/node_modules/zod/v4/locales/nl.cjs +2 -0
  790. package/node_modules/zod/v4/locales/nl.js +2 -0
  791. package/node_modules/zod/v4/locales/nn.cjs +2 -0
  792. package/node_modules/zod/v4/locales/nn.js +2 -0
  793. package/node_modules/zod/v4/locales/no.cjs +2 -0
  794. package/node_modules/zod/v4/locales/no.js +2 -0
  795. package/node_modules/zod/v4/locales/ota.cjs +2 -0
  796. package/node_modules/zod/v4/locales/ota.js +2 -0
  797. package/node_modules/zod/v4/locales/pl.cjs +2 -0
  798. package/node_modules/zod/v4/locales/pl.js +2 -0
  799. package/node_modules/zod/v4/locales/ps.cjs +2 -0
  800. package/node_modules/zod/v4/locales/ps.js +2 -0
  801. package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
  802. package/node_modules/zod/v4/locales/pt-BR.js +2 -0
  803. package/node_modules/zod/v4/locales/pt.cjs +2 -0
  804. package/node_modules/zod/v4/locales/pt.js +2 -0
  805. package/node_modules/zod/v4/locales/ro.cjs +2 -0
  806. package/node_modules/zod/v4/locales/ro.js +2 -0
  807. package/node_modules/zod/v4/locales/ru.cjs +2 -0
  808. package/node_modules/zod/v4/locales/ru.js +2 -0
  809. package/node_modules/zod/v4/locales/sk.cjs +2 -0
  810. package/node_modules/zod/v4/locales/sk.js +2 -0
  811. package/node_modules/zod/v4/locales/sl.cjs +2 -0
  812. package/node_modules/zod/v4/locales/sl.js +2 -0
  813. package/node_modules/zod/v4/locales/sv.cjs +2 -0
  814. package/node_modules/zod/v4/locales/sv.js +2 -0
  815. package/node_modules/zod/v4/locales/ta.cjs +2 -0
  816. package/node_modules/zod/v4/locales/ta.js +2 -0
  817. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  818. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  819. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  820. package/node_modules/zod/v4/locales/tg.js +117 -0
  821. package/node_modules/zod/v4/locales/th.cjs +2 -0
  822. package/node_modules/zod/v4/locales/th.js +2 -0
  823. package/node_modules/zod/v4/locales/tk.cjs +2 -0
  824. package/node_modules/zod/v4/locales/tk.js +2 -0
  825. package/node_modules/zod/v4/locales/tr.cjs +2 -0
  826. package/node_modules/zod/v4/locales/tr.js +2 -0
  827. package/node_modules/zod/v4/locales/uk.cjs +2 -0
  828. package/node_modules/zod/v4/locales/uk.js +2 -0
  829. package/node_modules/zod/v4/locales/ur.cjs +2 -0
  830. package/node_modules/zod/v4/locales/ur.js +2 -0
  831. package/node_modules/zod/v4/locales/uz.cjs +2 -0
  832. package/node_modules/zod/v4/locales/uz.js +2 -0
  833. package/node_modules/zod/v4/locales/vi.cjs +2 -0
  834. package/node_modules/zod/v4/locales/vi.js +2 -0
  835. package/node_modules/zod/v4/locales/yo.cjs +2 -0
  836. package/node_modules/zod/v4/locales/yo.js +2 -0
  837. package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
  838. package/node_modules/zod/v4/locales/zh-CN.js +2 -0
  839. package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
  840. package/node_modules/zod/v4/locales/zh-TW.js +2 -0
  841. package/node_modules/zod/v4/mini/checks.cjs +19 -0
  842. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  843. package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
  844. package/node_modules/zod/v4/mini/external.cjs +22 -1
  845. package/node_modules/zod/v4/mini/external.d.cts +1 -1
  846. package/node_modules/zod/v4/mini/external.d.ts +1 -1
  847. package/node_modules/zod/v4/mini/external.js +1 -1
  848. package/node_modules/zod/v4/mini/in-out.cjs +19 -0
  849. package/node_modules/zod/v4/mini/index.cjs +19 -0
  850. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  851. package/node_modules/zod/v4/mini/parse.cjs +19 -0
  852. package/node_modules/zod/v4/mini/schemas.cjs +44 -8
  853. package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
  854. package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
  855. package/node_modules/zod/v4/mini/schemas.js +21 -6
  856. package/node_modules/zod/v4-mini/index.cjs +19 -0
  857. package/package.json +6 -6
  858. package/node_modules/@openclaw/fs-safe/dist/absolute-path.d.ts.map +0 -1
  859. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts.map +0 -1
  860. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.d.ts.map +0 -1
  861. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.d.ts.map +0 -1
  862. package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts.map +0 -1
  863. package/node_modules/@openclaw/fs-safe/dist/archive-entry.d.ts.map +0 -1
  864. package/node_modules/@openclaw/fs-safe/dist/archive-errors.d.ts.map +0 -1
  865. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts.map +0 -1
  866. package/node_modules/@openclaw/fs-safe/dist/archive-input.d.ts.map +0 -1
  867. package/node_modules/@openclaw/fs-safe/dist/archive-kind.d.ts.map +0 -1
  868. package/node_modules/@openclaw/fs-safe/dist/archive-limits.d.ts.map +0 -1
  869. package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts.map +0 -1
  870. package/node_modules/@openclaw/fs-safe/dist/archive-native.d.ts +0 -21
  871. package/node_modules/@openclaw/fs-safe/dist/archive-native.d.ts.map +0 -1
  872. package/node_modules/@openclaw/fs-safe/dist/archive-native.js +0 -97
  873. package/node_modules/@openclaw/fs-safe/dist/archive-options.d.ts +0 -23
  874. package/node_modules/@openclaw/fs-safe/dist/archive-options.d.ts.map +0 -1
  875. package/node_modules/@openclaw/fs-safe/dist/archive-parser-errors.d.ts.map +0 -1
  876. package/node_modules/@openclaw/fs-safe/dist/archive-plan.d.ts.map +0 -1
  877. package/node_modules/@openclaw/fs-safe/dist/archive-policy.d.ts +0 -22
  878. package/node_modules/@openclaw/fs-safe/dist/archive-policy.d.ts.map +0 -1
  879. package/node_modules/@openclaw/fs-safe/dist/archive-policy.js +0 -38
  880. package/node_modules/@openclaw/fs-safe/dist/archive-read.d.ts.map +0 -1
  881. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts.map +0 -1
  882. package/node_modules/@openclaw/fs-safe/dist/archive-tar-inspect.d.ts +0 -7
  883. package/node_modules/@openclaw/fs-safe/dist/archive-tar-inspect.d.ts.map +0 -1
  884. package/node_modules/@openclaw/fs-safe/dist/archive-tar-inspect.js +0 -62
  885. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts.map +0 -1
  886. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.d.ts.map +0 -1
  887. package/node_modules/@openclaw/fs-safe/dist/archive-tar.d.ts +0 -19
  888. package/node_modules/@openclaw/fs-safe/dist/archive-tar.d.ts.map +0 -1
  889. package/node_modules/@openclaw/fs-safe/dist/archive-tar.js +0 -21
  890. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts.map +0 -1
  891. package/node_modules/@openclaw/fs-safe/dist/archive-zip-count.d.ts.map +0 -1
  892. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts.map +0 -1
  893. package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.d.ts.map +0 -1
  894. package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.d.ts.map +0 -1
  895. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts.map +0 -1
  896. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts.map +0 -1
  897. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts.map +0 -1
  898. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts.map +0 -1
  899. package/node_modules/@openclaw/fs-safe/dist/archive.d.ts.map +0 -1
  900. package/node_modules/@openclaw/fs-safe/dist/async-lock.d.ts.map +0 -1
  901. package/node_modules/@openclaw/fs-safe/dist/atomic.d.ts.map +0 -1
  902. package/node_modules/@openclaw/fs-safe/dist/bounded-read-stream.d.ts.map +0 -1
  903. package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts.map +0 -1
  904. package/node_modules/@openclaw/fs-safe/dist/byte-budget.d.ts.map +0 -1
  905. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts.map +0 -1
  906. package/node_modules/@openclaw/fs-safe/dist/config.d.ts.map +0 -1
  907. package/node_modules/@openclaw/fs-safe/dist/containment.d.ts.map +0 -1
  908. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts.map +0 -1
  909. package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts.map +0 -1
  910. package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts.map +0 -1
  911. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts.map +0 -1
  912. package/node_modules/@openclaw/fs-safe/dist/copy.d.ts.map +0 -1
  913. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.d.ts +0 -4
  914. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.d.ts.map +0 -1
  915. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.js +0 -24
  916. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.d.ts.map +0 -1
  917. package/node_modules/@openclaw/fs-safe/dist/device-path.d.ts.map +0 -1
  918. package/node_modules/@openclaw/fs-safe/dist/directory-durability.d.ts.map +0 -1
  919. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts.map +0 -1
  920. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts.map +0 -1
  921. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts.map +0 -1
  922. package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.d.ts.map +0 -1
  923. package/node_modules/@openclaw/fs-safe/dist/durability.d.ts.map +0 -1
  924. package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts.map +0 -1
  925. package/node_modules/@openclaw/fs-safe/dist/error-detail.d.ts.map +0 -1
  926. package/node_modules/@openclaw/fs-safe/dist/errors.d.ts.map +0 -1
  927. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts.map +0 -1
  928. package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts.map +0 -1
  929. package/node_modules/@openclaw/fs-safe/dist/file-identity.d.ts.map +0 -1
  930. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.d.ts.map +0 -1
  931. package/node_modules/@openclaw/fs-safe/dist/file-lock.d.ts.map +0 -1
  932. package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts.map +0 -1
  933. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts.map +0 -1
  934. package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.d.ts +0 -5
  935. package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.d.ts.map +0 -1
  936. package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.js +0 -31
  937. package/node_modules/@openclaw/fs-safe/dist/file-store-limit.d.ts +0 -2
  938. package/node_modules/@openclaw/fs-safe/dist/file-store-limit.d.ts.map +0 -1
  939. package/node_modules/@openclaw/fs-safe/dist/file-store-limit.js +0 -8
  940. package/node_modules/@openclaw/fs-safe/dist/file-store-path.d.ts +0 -3
  941. package/node_modules/@openclaw/fs-safe/dist/file-store-path.d.ts.map +0 -1
  942. package/node_modules/@openclaw/fs-safe/dist/file-store-path.js +0 -30
  943. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.d.ts.map +0 -1
  944. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts.map +0 -1
  945. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts.map +0 -1
  946. package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts.map +0 -1
  947. package/node_modules/@openclaw/fs-safe/dist/file-sync.d.ts.map +0 -1
  948. package/node_modules/@openclaw/fs-safe/dist/filename.d.ts.map +0 -1
  949. package/node_modules/@openclaw/fs-safe/dist/fs.d.ts.map +0 -1
  950. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts.map +0 -1
  951. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts.map +0 -1
  952. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts.map +0 -1
  953. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts.map +0 -1
  954. package/node_modules/@openclaw/fs-safe/dist/guest.d.ts.map +0 -1
  955. package/node_modules/@openclaw/fs-safe/dist/home-dir.d.ts.map +0 -1
  956. package/node_modules/@openclaw/fs-safe/dist/index.d.ts.map +0 -1
  957. package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts.map +0 -1
  958. package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts.map +0 -1
  959. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.d.ts.map +0 -1
  960. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts.map +0 -1
  961. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.d.ts +0 -11
  962. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.d.ts.map +0 -1
  963. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.js +0 -42
  964. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts.map +0 -1
  965. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts.map +0 -1
  966. package/node_modules/@openclaw/fs-safe/dist/json-store.d.ts.map +0 -1
  967. package/node_modules/@openclaw/fs-safe/dist/json-stringify.d.ts.map +0 -1
  968. package/node_modules/@openclaw/fs-safe/dist/json.d.ts.map +0 -1
  969. package/node_modules/@openclaw/fs-safe/dist/local-file-access.d.ts.map +0 -1
  970. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts.map +0 -1
  971. package/node_modules/@openclaw/fs-safe/dist/local-roots.d.ts.map +0 -1
  972. package/node_modules/@openclaw/fs-safe/dist/lock-config.d.ts.map +0 -1
  973. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts.map +0 -1
  974. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts.map +0 -1
  975. package/node_modules/@openclaw/fs-safe/dist/move-path.d.ts.map +0 -1
  976. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts.map +0 -1
  977. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts.map +0 -1
  978. package/node_modules/@openclaw/fs-safe/dist/native-config.d.ts.map +0 -1
  979. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts.map +0 -1
  980. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts.map +0 -1
  981. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts.map +0 -1
  982. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts.map +0 -1
  983. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.d.ts.map +0 -1
  984. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts.map +0 -1
  985. package/node_modules/@openclaw/fs-safe/dist/native.d.ts.map +0 -1
  986. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts.map +0 -1
  987. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.d.ts.map +0 -1
  988. package/node_modules/@openclaw/fs-safe/dist/output.d.ts.map +0 -1
  989. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts.map +0 -1
  990. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.d.ts.map +0 -1
  991. package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts.map +0 -1
  992. package/node_modules/@openclaw/fs-safe/dist/path-policy.d.ts.map +0 -1
  993. package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts.map +0 -1
  994. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts.map +0 -1
  995. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts.map +0 -1
  996. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts.map +0 -1
  997. package/node_modules/@openclaw/fs-safe/dist/path.d.ts.map +0 -1
  998. package/node_modules/@openclaw/fs-safe/dist/permission-exec.d.ts.map +0 -1
  999. package/node_modules/@openclaw/fs-safe/dist/permissions-public.d.ts.map +0 -1
  1000. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts.map +0 -1
  1001. package/node_modules/@openclaw/fs-safe/dist/permissions.d.ts.map +0 -1
  1002. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts.map +0 -1
  1003. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts.map +0 -1
  1004. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts.map +0 -1
  1005. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts.map +0 -1
  1006. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.d.ts.map +0 -1
  1007. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts.map +0 -1
  1008. package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts.map +0 -1
  1009. package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts.map +0 -1
  1010. package/node_modules/@openclaw/fs-safe/dist/private-directory.d.ts.map +0 -1
  1011. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts.map +0 -1
  1012. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts.map +0 -1
  1013. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts.map +0 -1
  1014. package/node_modules/@openclaw/fs-safe/dist/publish-file-failure.d.ts.map +0 -1
  1015. package/node_modules/@openclaw/fs-safe/dist/publish-file.d.ts.map +0 -1
  1016. package/node_modules/@openclaw/fs-safe/dist/read-open-flags.d.ts.map +0 -1
  1017. package/node_modules/@openclaw/fs-safe/dist/read-opened-file.d.ts.map +0 -1
  1018. package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts.map +0 -1
  1019. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts.map +0 -1
  1020. package/node_modules/@openclaw/fs-safe/dist/regular-file.d.ts.map +0 -1
  1021. package/node_modules/@openclaw/fs-safe/dist/replace-directory.d.ts.map +0 -1
  1022. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts.map +0 -1
  1023. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.d.ts.map +0 -1
  1024. package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.d.ts.map +0 -1
  1025. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts.map +0 -1
  1026. package/node_modules/@openclaw/fs-safe/dist/replace-file-rename-policy.d.ts.map +0 -1
  1027. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts.map +0 -1
  1028. package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts.map +0 -1
  1029. package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts.map +0 -1
  1030. package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts.map +0 -1
  1031. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts.map +0 -1
  1032. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts.map +0 -1
  1033. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts.map +0 -1
  1034. package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts.map +0 -1
  1035. package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts.map +0 -1
  1036. package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts.map +0 -1
  1037. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts.map +0 -1
  1038. package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts.map +0 -1
  1039. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts.map +0 -1
  1040. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts.map +0 -1
  1041. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts.map +0 -1
  1042. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts.map +0 -1
  1043. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts.map +0 -1
  1044. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts.map +0 -1
  1045. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts.map +0 -1
  1046. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts.map +0 -1
  1047. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts.map +0 -1
  1048. package/node_modules/@openclaw/fs-safe/dist/root-path-symlink.d.ts +0 -7
  1049. package/node_modules/@openclaw/fs-safe/dist/root-path-symlink.d.ts.map +0 -1
  1050. package/node_modules/@openclaw/fs-safe/dist/root-path-symlink.js +0 -55
  1051. package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts.map +0 -1
  1052. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts.map +0 -1
  1053. package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts.map +0 -1
  1054. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts.map +0 -1
  1055. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts.map +0 -1
  1056. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts.map +0 -1
  1057. package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts.map +0 -1
  1058. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts.map +0 -1
  1059. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts.map +0 -1
  1060. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts.map +0 -1
  1061. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts.map +0 -1
  1062. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts.map +0 -1
  1063. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts.map +0 -1
  1064. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts.map +0 -1
  1065. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.d.ts.map +0 -1
  1066. package/node_modules/@openclaw/fs-safe/dist/root.d.ts.map +0 -1
  1067. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts.map +0 -1
  1068. package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts.map +0 -1
  1069. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.d.ts.map +0 -1
  1070. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.d.ts.map +0 -1
  1071. package/node_modules/@openclaw/fs-safe/dist/secret.d.ts.map +0 -1
  1072. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts.map +0 -1
  1073. package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts.map +0 -1
  1074. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts.map +0 -1
  1075. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts.map +0 -1
  1076. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts.map +0 -1
  1077. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts.map +0 -1
  1078. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts.map +0 -1
  1079. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.d.ts.map +0 -1
  1080. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts.map +0 -1
  1081. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts.map +0 -1
  1082. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.d.ts.map +0 -1
  1083. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-types.d.ts.map +0 -1
  1084. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.d.ts.map +0 -1
  1085. package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts.map +0 -1
  1086. package/node_modules/@openclaw/fs-safe/dist/staged-file-types.d.ts.map +0 -1
  1087. package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.d.ts +0 -2
  1088. package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.d.ts.map +0 -1
  1089. package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.js +0 -6
  1090. package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts.map +0 -1
  1091. package/node_modules/@openclaw/fs-safe/dist/store.d.ts.map +0 -1
  1092. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.d.ts.map +0 -1
  1093. package/node_modules/@openclaw/fs-safe/dist/string-coerce.d.ts.map +0 -1
  1094. package/node_modules/@openclaw/fs-safe/dist/suppressed-error.d.ts.map +0 -1
  1095. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.d.ts.map +0 -1
  1096. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.d.ts.map +0 -1
  1097. package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts.map +0 -1
  1098. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts.map +0 -1
  1099. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts.map +0 -1
  1100. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts.map +0 -1
  1101. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.d.ts +0 -15
  1102. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.d.ts.map +0 -1
  1103. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.js +0 -41
  1104. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts.map +0 -1
  1105. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.d.ts +0 -4
  1106. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.d.ts.map +0 -1
  1107. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.js +0 -32
  1108. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts.map +0 -1
  1109. package/node_modules/@openclaw/fs-safe/dist/temp.d.ts.map +0 -1
  1110. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts.map +0 -1
  1111. package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts.map +0 -1
  1112. package/node_modules/@openclaw/fs-safe/dist/timing.d.ts.map +0 -1
  1113. package/node_modules/@openclaw/fs-safe/dist/trash.d.ts.map +0 -1
  1114. package/node_modules/@openclaw/fs-safe/dist/types.d.ts.map +0 -1
  1115. package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts.map +0 -1
  1116. package/node_modules/@openclaw/fs-safe/dist/walk.d.ts.map +0 -1
  1117. package/node_modules/@openclaw/fs-safe/dist/windows-command.d.ts.map +0 -1
  1118. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts.map +0 -1
  1119. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts.map +0 -1
  1120. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts.map +0 -1
  1121. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.d.ts.map +0 -1
  1122. package/node_modules/@openclaw/fs-safe/dist/write-queue.d.ts.map +0 -1
  1123. /package/node_modules/@openclaw/fs-safe/dist/{archive-options.js → root-public-types.js} +0 -0
@@ -0,0 +1,68 @@
1
+ # Exact file comparison
2
+
3
+ `sameFileContentsSync()` compares the bytes of two already-open regular files,
4
+ starting at offset zero. It uses bounded buffers and completes positive short
5
+ reads independently on each descriptor. A `true` result requires matching bytes
6
+ and observed EOF on both inputs; a difference can return `false` immediately.
7
+
8
+ ```ts
9
+ import fs from "node:fs";
10
+ import { sameFileContentsSync } from "@openclaw/fs-safe/advanced";
11
+
12
+ const source = fs.openSync("/trusted/source.sqlite", "r");
13
+ try {
14
+ const copy = fs.openSync("/trusted/copy.sqlite", "r");
15
+ try {
16
+ console.log(sameFileContentsSync(source, copy, { maxBytes: 256 * 1024 * 1024 }));
17
+ } finally {
18
+ fs.closeSync(copy);
19
+ }
20
+ } finally {
21
+ fs.closeSync(source);
22
+ }
23
+ ```
24
+
25
+ ## Signature
26
+
27
+ ```ts
28
+ type SameFileContentsOptions = { maxBytes?: number };
29
+
30
+ function sameFileContentsSync(
31
+ leftFd: number,
32
+ rightFd: number,
33
+ options?: SameFileContentsOptions,
34
+ ): boolean;
35
+ ```
36
+
37
+ Both descriptors must be open regular files. Nonregular inputs throw
38
+ `FsSafeError("not-file")`; underlying filesystem errors propagate unchanged.
39
+ Passing the same descriptor twice is allowed, but does not bypass validation,
40
+ the byte limit, or reads. File sizes are checked against the limit, but are not
41
+ used as proof that contents match or that EOF has been reached.
42
+
43
+ ## Bounds and ownership
44
+
45
+ `maxBytes` is a limit for each file, not their combined size. It accepts a
46
+ non-negative safe integer or `Infinity`; omission imposes no caller-selected
47
+ limit. Invalid limits throw `RangeError` before filesystem work. Comparisons
48
+ cannot exceed `Number.MAX_SAFE_INTEGER` bytes because positions must remain
49
+ exactly representable.
50
+
51
+ A reported file size above the limit throws `FsSafeError("too-large")` before
52
+ reading. At the limit, the comparison reads at most one additional byte from
53
+ each input to prove EOF; any observed overflow throws the same error. A
54
+ matching prefix is never reported as complete equality. An early mismatch
55
+ does not scan the remaining bytes or promise to detect later errors or growth.
56
+ A zero-byte limit admits two empty files. Memory use is at most two 1 MiB
57
+ payload buffers, regardless of file size.
58
+
59
+ The operation neither changes the descriptors' current offsets nor closes
60
+ them, including on failure. It performs no writes, hashing, pathname lookup,
61
+ or identity comparison. Callers retain path admission, hardlink policy,
62
+ descriptor lifetime, and any before/after mutation-fingerprint checks. A
63
+ comparison is not a snapshot of concurrently modified files; applications
64
+ requiring stable contents must retain their existing coordination and checks.
65
+
66
+ Use [`readFileWindowFullySync()`](positional-read.md) for a selected byte
67
+ window and [bounded descriptor reads](advanced.md#files-and-identity) when the
68
+ caller needs the file contents in memory.
@@ -133,6 +133,13 @@ the published entry intact for caller-owned recovery. Ordinary write-only and
133
133
  mode-000 outputs do not require a readable descriptor when pathname metadata is
134
134
  available.
135
135
 
136
+ If a synchronous write operation and its final temp-descriptor close both fail,
137
+ the store reports them in operation-then-close order in an `AggregateError`.
138
+ This ordering and the original JavaScript thrown value are preserved even when
139
+ that value is `undefined` or otherwise falsy. An unsuccessful best-effort temp
140
+ unlink remains registered for identity-checked process-exit cleanup; it does not
141
+ prevent the close attempt or replace either reportable failure.
142
+
136
143
  If an opaque pathname cannot be reopened because of an ACL denial or sharing
137
144
  restriction, the synchronous writer intentionally rejects with `path-mismatch`:
138
145
  its exact publication identity cannot be verified. There is no equal-content
@@ -219,6 +226,14 @@ with the same precedence as `write`.
219
226
 
220
227
  Per-call overrides for the store-level defaults:
221
228
 
229
+ Writes capture byte limits, modes, and durability before asynchronous work or
230
+ stream consumption. JSON writes capture those fields and the trailing-newline
231
+ setting before serialization. Later mutation cannot change those captured values.
232
+ Accessors run on the original options object. Ordinary writes retain content
233
+ conversion and byte-limit validation before reading modes and durability.
234
+ The legacy non-private stream `tempPrefix` accessor still runs after staging;
235
+ it does not control the publication policy.
236
+
222
237
  ```ts
223
238
  type FileStoreWriteOptions = {
224
239
  durable?: boolean; // store default, otherwise true
@@ -283,6 +298,10 @@ refreshes are preserved; replacements that are themselves expired remain
283
298
  eligible. This does not require read permission. The existing best-effort
284
299
  external-process race window after dispatch still applies.
285
300
 
301
+ Empty-directory pruning likewise rechecks that the selected entry is still a
302
+ directory immediately before guarded removal. File and symlink replacements
303
+ are preserved, and a directory that becomes nonempty is left in place.
304
+
286
305
  ## Difference from `Root`
287
306
 
288
307
  | `FileStore` | `Root` |
@@ -80,7 +80,7 @@ disables. Do not omit required fields.
80
80
  | Rename | `rename srcRoot srcParent srcBasename dstRoot dstParent dstBasename mkdir` | Rename with cross-device copy/delete fallback. |
81
81
  | Remove | `remove root parent basename recursive force` | Removes the leaf, or recursively removes its tree. |
82
82
  | Make directories | `mkdirp root directory` | Creates missing relative directory components. |
83
- | List directory | `readdir root directory` | JSON array of `{ name, isDirectory }`; no sorting guarantee. |
83
+ | List directory | `readdir root directory` | JSON array of `{ name, isDirectory, isFile }`; both kind fields are false for symlinks and special entries; no sorting guarantee. |
84
84
 
85
85
  The complete program rejects empty, `.`, `..`, slash-containing, and NUL
86
86
  basenames before opening roots or creating parents. Both leaf operands of copy
@@ -119,22 +119,46 @@ Use the main entry for the common surface, or the focused subpaths when you want
119
119
 
120
120
  ## Runtime dependencies
121
121
 
122
- `@openclaw/fs-safe` bundles an import-free WASM build of its Rust TAR parser for guarded JavaScript TAR/gzip [archive extraction](archive.md), including installs with optional dependencies omitted. ZIP fallback uses lazily loaded optional `jszip` and reports a missing-dependency error without it. Public subpaths remain safe to import with all optional dependencies omitted, but imports do not prove native availability.
122
+ `@openclaw/fs-safe` bundles an import-free WASM build of its Rust TAR parser and zstd/bzip2 codecs for guarded [archive extraction and bounded entry reads](archive.md). Plain TAR, gzip, zstd, and bzip2 work in `off` and missing-native `auto`, including installs with all optional dependencies omitted; gzip uses Node's built-in decoder. These archive fallbacks need no runtime interpreter, download, or consumer compiler. ZIP fallback uses lazily loaded optional `jszip` and reports a missing-dependency error without it. Public subpaths remain safe to import with all optional dependencies omitted, but imports do not prove native availability. Native `require` remains strict, and an available native operation's failure never triggers a WASM retry.
123
123
 
124
124
  There are no peer dependencies. Exact-version optional packages carry the seven
125
125
  native targets and npm-compatible OS, CPU, and Linux libc filters install only
126
- the matching binary. Consumers do not run a native build, download code at
126
+ the matching binary. Consumers do not run a Rust build, download code at
127
127
  runtime, or execute a postinstall step. Omitting optional dependencies keeps
128
- non-archive fallback-capable operations working in `auto` or `off`. Native-only
128
+ fallback-capable operations working in `auto` or `off`. Native-only
129
129
  features, including strict owned-tree temp cleanup, retained-directory staging,
130
- atomic `rename-noreplace` (including the default no-clobber `Root.move()`),
131
- zstd/bzip2 TAR handling, and Windows private-directory creation, remain
132
- unavailable. Operations without a safe fallback fail with `helper-unavailable`
130
+ and atomic `rename-noreplace` (including the default no-clobber `Root.move()`),
131
+ remain unavailable. Operations without a safe fallback fail with `helper-unavailable`
133
132
  when the matching package is absent, incompatible, or disabled.
134
133
 
135
134
  Upgrading an existing 0.5 consumer? Follow [Migrating to 0.6](migrating-to-0.6.md)
136
135
  before deploying with native mode `require` or native-only features.
137
136
 
137
+ ### Windows security fallback
138
+
139
+ Windows raw owner/DACL inspection, private-directory creation, and secure-file
140
+ reads work without the addon in `auto` or `off` mode when system Windows
141
+ PowerShell and its .NET `Add-Type` compilation support are available. The package
142
+ ships a readable, fixed `.ps1` driver and adjacent `.cs` source and invokes the
143
+ driver with Windows PowerShell `-File`. Paths are passed as data. The fallback
144
+ does not generate helper scripts at runtime or use an encoded launcher.
145
+ The driver addresses built-in commands by module name and limits module
146
+ discovery to PowerShell's bundled system modules, avoiding broad command
147
+ discovery scans during each helper startup.
148
+
149
+ Normal PowerShell execution policy and Microsoft Defender policy must permit
150
+ the packaged scripts, including their use of `Add-Type`. The package does not
151
+ bypass restrictions, change policies, or add exclusions. Unsupported or
152
+ disallowed command execution fails closed.
153
+
154
+ The fallback preserves private DACLs at creation and inspects the same open
155
+ handle that supplies secure-file bytes. Each capability emits a path-free
156
+ `FS_SAFE_NATIVE_FALLBACK` warning once per process; each call adds PowerShell
157
+ startup and compilation overhead. Execution or compilation failure also fails
158
+ closed. Native `require` still rejects a missing binding or capability, and an
159
+ available native operation's error never triggers a command retry. See
160
+ [Permissions](permissions.md) and [Secure file reads](secure-file.md).
161
+
138
162
  ## Native helper policy
139
163
 
140
164
  The platform native binaries provide fd-relative open/link/mkdir primitives,
@@ -147,7 +171,7 @@ where a safe fallback exists. Native-only operations fail with
147
171
  import { configureFsSafeNative } from "@openclaw/fs-safe/config";
148
172
 
149
173
  configureFsSafeNative({ mode: "auto" }); // default
150
- configureFsSafeNative({ mode: "off" }); // guarded JavaScript; reject native-only operations
174
+ configureFsSafeNative({ mode: "off" }); // disable the addon; reject native-only operations
151
175
  configureFsSafeNative({ mode: "require" }); // fail closed if unavailable
152
176
  ```
153
177
 
@@ -85,6 +85,11 @@ For `fileStore(...).json(rel, options)`, `options.durable` overrides the parent
85
85
  file store's durability, while omission or `undefined` inherits it. Modes,
86
86
  identity checks, mutation serialization, and sidecar locking are unchanged.
87
87
 
88
+ Each `write`, `update`, or `updateOr` invocation captures the retained options'
89
+ `durable` and `trailingNewline` values before queueing, locking, reading, or
90
+ calling the updater. Changes to those options affect later invocations only,
91
+ including when a mutation is waiting behind another operation.
92
+
88
93
  The store does **not** validate the parsed value against `T` at runtime — the cast is unchecked. Wrap with a schema (zod/valibot) if the file might be hand-edited or written by another process you don't control.
89
94
 
90
95
  ## `read()`
@@ -146,10 +146,11 @@ where lower latency matters more than crash-durability.
146
146
 
147
147
  Synchronous variant. It pretty-prints with two spaces, appends a newline,
148
148
  creates parents at `0o700`, writes at `0o600`, and synchronizes the parent
149
- directory best-effort. File-mode tightening carries the staged bigint identity
150
- through rename and applies `fchmod` only when the reopened descriptor and current
151
- pathname still name that same single-link regular file; a swap is preserved and
152
- skips this best-effort step. It has no options bag. On `EPERM`/`EEXIST`, its legacy
149
+ directory best-effort. A retained staging descriptor carries the exact bigint
150
+ identity through rename and file-mode tightening. Publication and cleanup never
151
+ adopt a substituted temporary file: a changed identity, type or link count rejects
152
+ the write and leaves the replacement untouched. A swap detected after publication
153
+ also rejects without deleting or changing the replacement. It has no options bag. On `EPERM`/`EEXIST`, its legacy
153
154
  compatibility path removes the existing destination and retries the staged-file
154
155
  rename, so that fallback is temporarily non-atomic while retaining the staged
155
156
  file's `0600` mode; use the async `writeJson()`/`replaceFileAtomic()` surfaces
@@ -83,6 +83,8 @@ An existing non-directory component cannot be traversed further, including by
83
83
  The asynchronous helper opens the candidate through the matched [`Root`](root.md),
84
84
  so no-follow, identity, hardlink, device-path, and byte-limit checks happen at
85
85
  the read itself.
86
+ Link policies are captured once before root initialization and reused for every
87
+ candidate, so replacing options while a read is pending cannot weaken admission.
86
88
 
87
89
  ```ts
88
90
  type ReadLocalFileFromRootsOptions = LocalRootsInputOptions & {
@@ -88,8 +88,10 @@ await extractArchive({
88
88
  ```
89
89
 
90
90
  Returning `"skip"` rejects the archive unless `onFiltered: "skip-entry"` is
91
- explicit. Zstd and bzip2 TAR are native-only; ZIP, TAR, and gzip retain guarded
92
- JavaScript implementations. Catch `ArchiveLimitError` by its code, including
91
+ explicit. Zstd and bzip2 TAR required native support in version 0.5; current
92
+ versions also use bundled WASM codecs in `off` or missing-native `auto`, through
93
+ the same guarded TAR pipeline. ZIP fallback still requires optional JSZip.
94
+ Catch `ArchiveLimitError` by its code, including
93
95
  `archive-entry-path-components-exceeds-limit` for deep implicit-directory
94
96
  attacks. See [Archive extraction](archive.md).
95
97
 
@@ -167,10 +169,17 @@ See [File locks](sidecar-lock.md), [Secret files](secret-file.md), and
167
169
 
168
170
  ## 7. Gate native-only features
169
171
 
170
- `createPrivateDirectory()` is Windows-only and native-only because a pathname
171
- fallback cannot promise the same creation-time DACL. Zstd/bzip2 extraction and
172
- `strategy: "rename-noreplace"` are also native-only. Test the unavailable path
173
- instead of assuming installation always succeeds.
172
+ Version 0.5 required native support for `createPrivateDirectory()`. Current
173
+ releases also support a packaged PowerShell script in native `auto` and `off`
174
+ modes, retaining its creation-time protected DACL. Check the
175
+ [Windows security fallback prerequisites](install.md#windows-security-fallback)
176
+ before relying on this route. The API remains Windows-only, explicit native
177
+ `require` rejects a missing binding or capability, and native operation failures
178
+ remain terminal.
179
+ `strategy: "rename-noreplace"` remains native-only. Current zstd/bzip2 extraction
180
+ and bounded reads have bundled WASM fallbacks, while explicit native `require`
181
+ remains strict. Test unavailable native-only operations instead of assuming
182
+ installation always succeeds.
174
183
 
175
184
  ## 8. Run both behavior families in CI
176
185
 
@@ -24,10 +24,15 @@ uses native mode `require` or any native-only feature. Version 0.5 kept its
24
24
  binding in the root tarball; version 0.6 intentionally does not.
25
25
 
26
26
  Omitting optional dependencies remains supported for fallback-capable APIs in
27
- `auto` mode. It disables native-only features such as zstd/bzip2 TAR handling,
28
- retained-directory staging, atomic `rename-noreplace`, and Windows private
29
- directory creation. Native mode `require` reports `helper-unavailable` when the
30
- matching package is absent or incompatible.
27
+ `auto` mode. It disables native-only features such as retained-directory staging
28
+ and atomic `rename-noreplace`. Native mode `require`
29
+ reports `helper-unavailable` when the matching package is absent or incompatible.
30
+ Zstd/bzip2 TAR extraction and bounded reads required the binding in version 0.6;
31
+ current versions also support bundled WASM codecs in `auto` and `off` through the
32
+ same guarded TAR pipeline. ZIP fallback still requires optional JSZip.
33
+ Windows private-directory creation required the binding in version 0.6; current
34
+ releases also support [packaged Windows security scripts](install.md#windows-security-fallback)
35
+ in `auto` and `off` mode while preserving the creation-time protected DACL.
31
36
 
32
37
  ## Deployment checklist
33
38
 
@@ -39,14 +39,18 @@ sentinel. The same rejection object must escape, no callback may follow refusal,
39
39
  and the owned stage must be gone before fixture teardown.
40
40
 
41
41
  Windows workers exercise buffer `Root.write` through a stable final-file symlink,
42
- then refuse before staging a newly created placeholder, before publishing over a
43
- new placeholder, and before publishing to an existing symlink-selected destination.
44
- They verify alias binding, destination preservation, observed placeholder/stage
45
- states, and cleanup before fixture teardown. The default native-off and explicit
42
+ then refuse before stage creation for a missing destination, before publishing a
43
+ complete stage to that still-missing destination, and before publishing to an
44
+ existing symlink-selected destination. Missing destinations must remain absent at
45
+ every authority callback and after refusal. The workers verify alias binding,
46
+ destination preservation, complete single-link stages, and cleanup before fixture
47
+ teardown. The default native-off and explicit
46
48
  `verify-content-with-lock` native-require configurations both select the existing
47
- Windows JS buffer writer. The compatibility route is expected not to load the
48
- addon; the receipt does not mislabel this as native publication or evidence that
49
- content-verification fallback or lock contention was exercised.
49
+ Windows JS buffer writer. In native-require mode, the compatibility route loads
50
+ the addon to publish its retained sidecar lock through `Root.create`; the payload
51
+ writer remains JS. The receipt does not mislabel this as native payload
52
+ publication or evidence that content-verification fallback or lock contention
53
+ was exercised.
50
54
 
51
55
  ## Bounds and interpretation
52
56
 
@@ -15,7 +15,7 @@ consumer Rust build.
15
15
  import { configureFsSafeNative } from "@openclaw/fs-safe/config";
16
16
 
17
17
  configureFsSafeNative({ mode: "auto" }); // default
18
- configureFsSafeNative({ mode: "off" }); // guarded JavaScript; reject native-only operations
18
+ configureFsSafeNative({ mode: "off" }); // disable the addon; reject native-only operations
19
19
  configureFsSafeNative({ mode: "require" }); // fail closed when the binding is unavailable
20
20
  ```
21
21
 
@@ -25,14 +25,22 @@ The equivalent environment variables are `FS_SAFE_NATIVE_MODE` and `OPENCLAW_FS_
25
25
 
26
26
  | Mode | Behavior |
27
27
  |---|---|
28
- | `auto` | Prefer native primitives when the current platform package loads; otherwise use guarded JavaScript where a safe fallback exists and reject native-only operations. |
29
- | `off` | Do not load a native package. Use guarded JavaScript where safe and reject native-only operations deterministically. |
28
+ | `auto` | Prefer native primitives when the current platform package loads; otherwise use supported fallbacks and reject native-only operations. |
29
+ | `off` | Do not load a native package. Use supported fallbacks and reject native-only operations deterministically. |
30
30
  | `require` | Throw `FsSafeError("helper-unavailable")` instead of falling back when an operation needs the native binding and it cannot load. |
31
31
 
32
- TAR/gzip in the guarded JavaScript path uses a bundled, import-free WASM build
33
- of the same Rust parser used by native. `off` still disables the optional native
34
- filesystem helper; it does not disable this portable parser. ZIP fallback still requires
35
- optional `jszip`, and zstd/bzip2 remain native-only.
32
+ Plain TAR, gzip, zstd, and bzip2 extraction and bounded entry reads use a bundled,
33
+ import-free WASM build of the same Rust TAR parser when native support is absent
34
+ or disabled. Zstd/bzip2 codecs are bundled alongside the parser; gzip uses Node's
35
+ built-in decoder. These archive fallbacks require no runtime interpreter or
36
+ download. `off` disables the optional native filesystem helper, not the bundled
37
+ WASM. `auto` prefers native and does not retry a native operation failure through
38
+ WASM; `require` still rejects an unavailable native binding. ZIP fallback still
39
+ requires optional `jszip`. `inspectTarArchive()` remains limited to plain TAR
40
+ and gzip.
41
+
42
+ Windows security operations can use the package's readable PowerShell/C# scripts
43
+ in `auto` and `off`, subject to the [Windows security fallback prerequisites](install.md#windows-security-fallback).
36
44
 
37
45
  On Bun macOS/Linux, the [runtime path adapter](install.md#bun-runtime) uses the
38
46
  same Rust addon for system canonicalization in `auto` and `require`. No JIT is
@@ -95,15 +103,27 @@ clone/copy/hash workers, POSIX canonicalization, and Windows security descriptor
95
103
  layer owns policy, retries, filters, budgets, modes, cleanup, error
96
104
  normalization, and the decision to fall back.
97
105
 
98
- - Linux uses `openat2` with `RESOLVE_BENEATH | RESOLVE_NO_MAGICLINKS`, `renameat`, and `renameat2(RENAME_NOREPLACE)`. Owned-tree cleanup enumerates and unlinks through retained directory descriptors and rejects device crossings.
99
- - macOS 15.4 and newer prefer `O_RESOLVE_BENEATH`; older kernels resolve components with `O_NOFOLLOW` and restart in-root symlinks from the pinned root descriptor. Both routes use an `F_GETPATH` post-open escape detector and report `best-effort` because directory rename races are not atomic with that check. Publication uses `renameat` for replacement and `renameatx_np(RENAME_EXCL)` for no-replace; owned-tree cleanup uses descriptor-relative `openat`/`unlinkat`.
100
- - Windows uses handle-relative `NtCreateFile`, rejects reparse points during root-bounded traversal, uses `FileRenameInfoEx` with replacement selected explicitly by the TypeScript policy layer, and deletes owned trees through exact opened handles with `FileDispositionInfoEx`; symlink/reparse entries in owned trees are removed as leaves and never traversed. Descriptors crossing N-API are converted only by the host executable's paired `uv_get_osfhandle` and `uv_open_osfhandle` exports. A runtime without both exports is unsupported for these native operations; the binding never guesses a raw HANDLE or uses a foreign CRT descriptor table. Descriptor-producing operations also require that same host's synchronous libuv close and request-management APIs before exporting an owned descriptor.
106
+ - Linux uses `openat2` with `RESOLVE_BENEATH | RESOLVE_NO_MAGICLINKS`, `renameat`, and `renameat2(RENAME_NOREPLACE)`. Direct-child no-replace renames borrow already-retained parent descriptors; deeper relative paths retain the guarded reopen. Owned-tree cleanup enumerates and unlinks through retained directory descriptors and rejects device crossings.
107
+ - macOS 15.4 and newer prefer `O_RESOLVE_BENEATH`; older kernels resolve components with `O_NOFOLLOW` and restart in-root symlinks from the pinned root descriptor. Both routes use an `F_GETPATH` post-open escape detector and report `best-effort` because directory rename races are not atomic with that check. Direct-child no-replace renames borrow already-retained parents without another `F_GETPATH`; deeper paths retain the guarded reopen. Publication uses `renameat` for replacement and `renameatx_np(RENAME_EXCL)` for no-replace; owned-tree cleanup uses descriptor-relative `openat`/`unlinkat`.
108
+ - Windows uses handle-relative `NtCreateFile`, rejects reparse points during root-bounded traversal, and uses `FileRenameInfoEx` with replacement selected explicitly by the TypeScript policy layer. The dedicated retained-directory `renameNoReplaceWithIdentity` primitive compares its required exact source receipt with the handle opened for rename before mutation. Its internal mismatch status is normalized to public `path-mismatch`; the legacy four-argument `renameNoReplace` export and its other callers are unchanged. Owned trees are deleted through exact opened handles with `FileDispositionInfoEx`; symlink/reparse entries in owned trees are removed as leaves and never traversed. Descriptors crossing N-API are converted only by the host executable's paired `uv_get_osfhandle` and `uv_open_osfhandle` exports. A runtime without both exports is unsupported for these native operations; the binding never guesses a raw HANDLE or uses a foreign CRT descriptor table. Descriptor-producing operations also require that same host's synchronous libuv close and request-management APIs before exporting an owned descriptor.
109
+
110
+ `replaceDirectoryAtomic()` requires `renameNoReplaceWithIdentity` before it
111
+ creates a missing target parent. On POSIX the dedicated entry point keeps the
112
+ existing pre-dispatch exact receipt fence but dispatches direct-child names
113
+ through the retained parents without another receipt, duplicate, reopen, or
114
+ macOS `F_GETPATH`; the documented final source-name substitution window remains
115
+ there. Deeper names retain guarded parent traversal.
101
116
 
102
117
  Native primitives back create-only and replacing pinned writes, no-clobber
103
118
  `Root.move()`, async sidecar creation, guarded publication, archive acceleration,
104
119
  and direct Windows ACL operations. Windows secure-file reads require
105
- descriptor-bound owner/DACL facts from the current helper; they do not use the
106
- standalone pathname inspector's command fallback. No-clobber moves fail with
120
+ descriptor-bound owner/DACL facts. In native `auto` or `off` mode, a missing
121
+ binding or capability can use a packaged PowerShell script that inspects the
122
+ borrowed handle. Raw owner/DACL inspection and private-directory creation also support
123
+ this fallback, subject to the [Windows security fallback prerequisites](install.md#windows-security-fallback).
124
+ Each capability emits a path-free warning once per process and adds PowerShell
125
+ startup and compilation overhead per call. Native `require` rejects missing
126
+ capabilities, and native operation failures remain terminal. No-clobber moves fail with
107
127
  `helper-unavailable` when descriptor-relative parent admission or the atomic
108
128
  no-replace rename is unavailable; they never use a check followed by a replacing
109
129
  rename. Equivalent JavaScript paths remain available for documented
@@ -17,7 +17,7 @@ guarded JavaScript path. Native loading is lazy; installs do not compile Rust,
17
17
  run postinstall code, or fetch binaries at runtime. Seven exact-version optional
18
18
  packages are filtered by OS, CPU, and Linux libc, so an installation receives
19
19
  only its matching prebuilt binding.
20
- Native-only formats and creation-time Windows DACL guarantees fail explicitly
20
+ Native-only formats fail explicitly
21
21
  instead of substituting a weaker implementation.
22
22
 
23
23
  ## The beneath model
@@ -76,14 +76,14 @@ whether a path, archive entry, mode, owner, or cleanup policy is acceptable.
76
76
  or add-on CRT descriptor namespace.
77
77
 
78
78
  The internal macOS `inspectDarwinAcl(fd)` capability reports `absent`, `empty`,
79
- or `present` for the opened object's extended ACL. It synchronously owns a
80
- close-on-exec duplicate for inspection, leaves the caller's descriptor and file
81
- position alone, and never reopens a pathname. Darwin's `acl_get_entry` returns
79
+ or `present` for the opened object's extended ACL. It synchronously borrows the
80
+ caller's descriptor, preserving its file position and POSIX record locks, and
81
+ never reopens a pathname. Keep the descriptor open until inspection returns.
82
+ Darwin's `acl_get_entry` returns
82
83
  zero for an entry; end-of-list is accepted only for the first entry of a valid,
83
84
  privately owned empty ACL. Unsupported, malformed, and failed inspection is not
84
- reported as absence. These facts do not classify individual ACE permissions,
85
- prove volume ownership enforcement, or add ACL enforcement to private writers
86
- and secure readers outside the clone path.
85
+ reported as absence. These facts do not classify individual ACE permissions or
86
+ prove volume ownership enforcement; each caller applies its own security policy.
87
87
 
88
88
  ## Archives
89
89
 
@@ -115,6 +115,17 @@ the guarded Node staging/publication boundary. ZIP behavior is unchanged.
115
115
  `maxMetaEntryBytes` bounds bodies before allocation; unsupported global/old
116
116
  metadata and sparse forms fail closed. See [bounded local PAX support](archive.md#bounded-local-pax-support).
117
117
 
118
+ The bundled module also compiles the same zstd and bzip2 codec implementations
119
+ used by native. In `off` or missing-native `auto`, those decoders feed the shared
120
+ TAR parser through fixed 64 KiB windows in one import-free WASM session with a
121
+ 256 MiB linear-memory ceiling. Gzip retains Node's built-in decoder. Complete
122
+ container and TAR admission precedes policy evaluation and guarded publication;
123
+ concatenated compressed members and zstd skippable frames are consumed through
124
+ physical EOF. No runtime command, interpreter, download, or consumer compilation
125
+ is needed for these archive routes. `require` stays strict, and available native
126
+ operation failures do not retry through WASM. Public `inspectTarArchive()` still
127
+ accepts only plain TAR/gzip; ZIP fallback still requires optional JSZip.
128
+
118
129
  Every raw pass receives only TypeScript's resolved `maxEntries`,
119
130
  `maxMetaEntryBytes`, and `maxDecodedBytes`. Shared resolution caps metadata and
120
131
  decoded byte fields at JavaScript's safe-integer maximum and entry counts at
@@ -172,12 +183,26 @@ not bypass the byte limit.
172
183
  does not load the binding. Use asynchronous `sha256File()` for native hashing
173
184
  and cancellation that can respond while JavaScript callbacks run.
174
185
 
175
- Features without a safe JavaScript implementation, including no-clobber
176
- `Root.move()`, zstd/bzip2 TAR, Windows private-directory creation, and
186
+ Features without a safe fallback, including no-clobber
187
+ `Root.move()` and
177
188
  [retained-directory staging](staged-file.md), fail with `helper-unavailable`
178
189
  when native support is absent or off. Staging is currently Linux/macOS only and
179
190
  rejects Windows with `unsupported-platform`.
180
191
 
192
+ Windows raw owner/DACL inspection, private-directory creation, and secure-file
193
+ descriptor inspection can use a package-shipped, readable `.ps1` driver and
194
+ adjacent `.cs` source in `auto` or `off` mode when their binding or capability is
195
+ unavailable. System Windows PowerShell runs the fixed driver with `-File`;
196
+ paths remain data, with no runtime-generated helper script or encoded launcher.
197
+ The [Windows security fallback prerequisites](install.md#windows-security-fallback)
198
+ apply, and unsupported or disallowed command execution fails closed. This route
199
+ preserves raw ACL facts, private DACLs at creation, and descriptor-bound secure
200
+ reads, and emits a path-free `FS_SAFE_NATIVE_FALLBACK` warning once per capability
201
+ per process. Each call adds PowerShell startup and compilation overhead.
202
+ `require` rejects missing capabilities without a command, and an available native operation's
203
+ failure never triggers this fallback. See [Permissions](permissions.md) and
204
+ [Secure file reads](secure-file.md) for error and platform contracts.
205
+
181
206
  The staged-file owner also serves POSIX native pinned writes, including streaming.
182
207
  Unpublished files remain at `0600`; requested modes are applied through the
183
208
  owned file descriptor only after rename and published-entry identity validation.
@@ -206,20 +231,34 @@ that fallback does not apply to POSIX no-read modes.
206
231
 
207
232
  ## JavaScript fallback guarantees and delta
208
233
 
234
+ Policy-bound parent creation can refresh exact directory facts through the
235
+ retained POSIX descriptor. The optional native observer compares descriptor and
236
+ no-follow pathname metadata and verifies the descriptor's canonical path before
237
+ and after the observation. Ordinary paths can share that observation within one
238
+ synchronous admission phase; callbacks, mutations, and later phases require fresh
239
+ evidence. Unsupported helpers retain the guarded pathname checks. Policy and
240
+ denied-path decisions remain in TypeScript.
241
+
209
242
  Public policy does not change with the selected mechanism: traversal and link
210
243
  rejection, archive filters/limits/modes, exclusive target creation, source and
211
244
  target identity fencing, publication cleanup receipts, and secret/lock policy
212
245
  remain TypeScript-owned. What changes is the syscall strength or availability:
213
246
 
247
+ The table compares underlying mechanisms. On Node, public `Root.open()`,
248
+ `Root.read()`, and `Root.openWritable()` use guarded Node file opens and report
249
+ `containment: "best-effort"` in every native mode. `require` checks availability
250
+ when an operation requests native support; it does not upgrade those results.
251
+ See [Root containment guarantees](security-model.md#containment-guarantees-by-platform).
252
+
214
253
  | Capability | Native path | Guarded JavaScript path |
215
254
  |---|---|---|
216
- | Root-relative opens/mutations | Descriptor-relative beneath operations. Pinned writes create parents and publish both replacement and no-replace targets relative to open directory descriptors. No-clobber `Root.move()` admits both parents and uses the native no-replace rename. Linux reports `kernel-atomic`; macOS and Windows report `best-effort`. macOS uses `O_RESOLVE_BENEATH` when available plus an `F_GETPATH` detector, while Windows rejects reparse traversal in the object-manager call. | Reports `best-effort`: component-wise alias checks, no-follow opens where Node exposes them, private temp/rename, and post-operation identity verification. No-clobber `Root.move()` is unsupported because a check followed by a replacing rename is unsafe. A same-privilege peer can replace a writable parent after a guard assertion but before Node resolves another pathname mutation; the mutation may land outside the intended root before the post-check detects it. |
255
+ | Native beneath opens and Root mutations | Descriptor-relative beneath operations. Pinned writes create parents and publish both replacement and no-replace targets relative to open directory descriptors. No-clobber `Root.move()` admits both parents and uses the native no-replace rename. Native `openBeneath()` reports `kernel-atomic` on Linux and `best-effort` on macOS and Windows. macOS uses `O_RESOLVE_BENEATH` when available plus an `F_GETPATH` detector, while Windows rejects reparse traversal in the object-manager call. | Reports `best-effort`: component-wise alias checks, no-follow opens where Node exposes them, private temp/rename, and post-operation identity verification. No-clobber `Root.move()` is unsupported because a check followed by a replacing rename is unsafe. A same-privilege peer can replace a writable parent after a guard assertion but before Node resolves another pathname mutation; the mutation may land outside the intended root before the post-check detects it. |
217
256
  | ZIP/TAR/gzip | Rust streaming decode and fd-relative output creation. | Optional JSZip or bundled WASM TAR into guarded private staging, then the same guarded merge policy. |
218
- | Zstd/bzip2 TAR | Supported. | Unsupported; typed `helper-unavailable`. |
257
+ | Zstd/bzip2 TAR | Rust streaming decode and fd-relative output creation. | Bundled WASM codecs feed the shared Rust TAR parser, then guarded private staging and the same merge policy; no optional codec dependency. |
219
258
  | Publication copy | Clone, Linux `copy_file_range`, async native SHA-256. | Exclusive `wx` byte loop and Node SHA-256 with the same content/identity fences. |
220
259
  | `rename-noreplace` | Atomic platform no-replace rename. | Unsupported; no emulation by check-then-rename. |
221
- | Windows DACL read | Direct `GetSecurityInfo`; the public facts API exposes ordered basic allow/deny ACE SIDs, masks, and decoded flags without trust policy. Secure-file reads query the borrowed open descriptor and compare its 32-bit volume serial and 64-bit file-index projection with Node's bigint receipt. | Structured .NET owner/DACL inspection remains available to standalone pathname reporting. Secure-file reads fail closed without the descriptor capability. |
222
- | Windows private directory | Creation-time protected DACL. | Unsupported; no weaker pathname-only substitute. |
260
+ | Windows DACL read | Direct `GetSecurityInfo`; the public facts API exposes ordered basic allow/deny ACE SIDs, masks, and decoded flags without trust policy. Secure-file reads query the borrowed open descriptor and compare its 32-bit volume serial and 64-bit file-index projection with Node's bigint receipt. | The packaged PowerShell/C# bridge preserves raw facts and inspects the borrowed descriptor for secure reads, with the same Node identity comparison; its command failures reject. Structured .NET pathname reporting retains its separate compatibility query. |
261
+ | Windows private directory | Creation-time protected DACL. | The packaged PowerShell/C# bridge applies the protected DACL at creation and retains exact handles through identity validation and failure cleanup. Command failures reject. |
223
262
 
224
263
  Use `off` in CI to keep the fallback contract exercised. Use `require` when a
225
264
  deployment depends on the stronger mechanism or a native-only feature; do not
@@ -228,8 +267,9 @@ infer native loading from timing.
228
267
  ## Loader security
229
268
 
230
269
  Importing fs-safe never executes a child process. Linux libc selection uses
231
- the Node process report, conventional musl library filenames, and the ELF
232
- `PT_INTERP` field of `process.execPath`. If all probes are inconclusive, the
270
+ the Node process report, then the ELF `PT_INTERP` field of `process.execPath`,
271
+ then conventional musl library filenames. An installed compatibility loader
272
+ does not override the running executable's interpreter. If all probes are inconclusive, the
233
273
  loader conservatively attempts the glibc package and lets normal module loading
234
274
  fail into `auto` fallback. The loader requires only the package selected from
235
275
  the detected target; it never probes unrelated packages, downloads code, or
@@ -49,6 +49,12 @@ The requested `path` must name a file. Missing destination parents are created
49
49
  by the helper because the operation is "produce this output file under the
50
50
  root"; callers should choose the filename before calling this API.
51
51
 
52
+ The helper reads each option once before its first asynchronous operation.
53
+ Changing the options object after invocation does not change the selected
54
+ writer, staging mode, isolation, filename fallback, byte limit, or final mode
55
+ for that write. Workspace writers retain the original options object as their
56
+ callback receiver; sibling writers retain the internal staging receiver.
57
+
52
58
  `maxBytes` must be a non-negative safe integer or positive `Infinity`; zero is an active cap and `Infinity` disables it. Invalid values reject before the producer or filesystem staging runs.
53
59
 
54
60
  Use `maxBytes` when the external producer can create arbitrarily large files,
@@ -56,6 +56,16 @@ they are collapsed. Native realpath alone does not establish this permission
56
56
  on every platform. Empty components from repeated or trailing separators do
57
57
  not introduce a `.` lookup.
58
58
 
59
+ Raw component queues of at most 32 entries retain the legacy small-array
60
+ consumption path. After both the initial parse and every symlink expansion, a
61
+ longer queue uses forward cursor bookkeeping instead of moving the unprocessed
62
+ suffix for every component. The fixed small-queue bound limits repeated front
63
+ removal while retaining legacy shift-based consumption for shallow paths. This
64
+ asymptotic bound is not a platform performance result; performance acceptance
65
+ requires separate benchmark evidence. Callers should still apply their own
66
+ input-size limits: the helper is synchronous, retains the raw suffix, and
67
+ performs filesystem work for each non-empty existing component.
68
+
59
69
  This is a read-only path observation. It neither pins files nor creates a root
60
70
  boundary, authorizes access, or guarantees a consistent snapshot during
61
71
  concurrent changes. Results can become stale immediately. Use a guarded Root