@openclaw/openshell-sandbox 2026.9.3 → 2026.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1109) hide show
  1. package/assets/activity.svg +3 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/index.js +32 -26
  4. package/node_modules/@openclaw/fs-safe/CHANGELOG.md +285 -0
  5. package/node_modules/@openclaw/fs-safe/LICENSE +1 -0
  6. package/node_modules/@openclaw/fs-safe/README.md +65 -10
  7. package/node_modules/@openclaw/fs-safe/dist/absolute-path.d.ts.map +1 -1
  8. package/node_modules/@openclaw/fs-safe/dist/absolute-path.js +33 -11
  9. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +8 -1
  10. package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts.map +1 -1
  11. package/node_modules/@openclaw/fs-safe/dist/advanced.js +8 -1
  12. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.d.ts.map +1 -1
  13. package/node_modules/@openclaw/fs-safe/dist/archive-crc32.js +6 -1
  14. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.d.ts.map +1 -1
  15. package/node_modules/@openclaw/fs-safe/dist/archive-deadline.js +3 -4
  16. package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts +24 -0
  17. package/node_modules/@openclaw/fs-safe/dist/archive-durability.d.ts.map +1 -0
  18. package/node_modules/@openclaw/fs-safe/dist/archive-durability.js +180 -0
  19. package/node_modules/@openclaw/fs-safe/dist/archive-entry.d.ts.map +1 -1
  20. package/node_modules/@openclaw/fs-safe/dist/archive-entry.js +8 -8
  21. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts +3 -0
  22. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.d.ts.map +1 -1
  23. package/node_modules/@openclaw/fs-safe/dist/archive-gzip-tail.js +33 -8
  24. package/node_modules/@openclaw/fs-safe/dist/archive-input.d.ts.map +1 -1
  25. package/node_modules/@openclaw/fs-safe/dist/archive-input.js +14 -8
  26. package/node_modules/@openclaw/fs-safe/dist/archive-kind.d.ts.map +1 -1
  27. package/node_modules/@openclaw/fs-safe/dist/archive-kind.js +3 -2
  28. package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts +6 -1
  29. package/node_modules/@openclaw/fs-safe/dist/archive-merge.d.ts.map +1 -1
  30. package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +68 -19
  31. package/node_modules/@openclaw/fs-safe/dist/archive-native.d.ts +1 -0
  32. package/node_modules/@openclaw/fs-safe/dist/archive-native.d.ts.map +1 -1
  33. package/node_modules/@openclaw/fs-safe/dist/archive-native.js +15 -25
  34. package/node_modules/@openclaw/fs-safe/dist/archive-options.d.ts +2 -0
  35. package/node_modules/@openclaw/fs-safe/dist/archive-options.d.ts.map +1 -1
  36. package/node_modules/@openclaw/fs-safe/dist/archive-parser.wasm +0 -0
  37. package/node_modules/@openclaw/fs-safe/dist/archive-plan.js +1 -1
  38. package/node_modules/@openclaw/fs-safe/dist/archive-read.d.ts.map +1 -1
  39. package/node_modules/@openclaw/fs-safe/dist/archive-read.js +128 -109
  40. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +6 -3
  41. package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts.map +1 -1
  42. package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +100 -42
  43. package/node_modules/@openclaw/fs-safe/dist/archive-tar-inspect.d.ts.map +1 -1
  44. package/node_modules/@openclaw/fs-safe/dist/archive-tar-inspect.js +4 -1
  45. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts +11 -4
  46. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.d.ts.map +1 -1
  47. package/node_modules/@openclaw/fs-safe/dist/archive-tar-stream.js +23 -10
  48. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.d.ts.map +1 -1
  49. package/node_modules/@openclaw/fs-safe/dist/archive-tar-wasm.js +18 -14
  50. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts +2 -2
  51. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.d.ts.map +1 -1
  52. package/node_modules/@openclaw/fs-safe/dist/archive-zip-admission.js +50 -14
  53. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts +3 -0
  54. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.d.ts.map +1 -1
  55. package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.js +13 -2
  56. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts +7 -0
  57. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts.map +1 -0
  58. package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.js +64 -0
  59. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts +5 -0
  60. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.d.ts.map +1 -0
  61. package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.js +22 -0
  62. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts +6 -1
  63. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.d.ts.map +1 -1
  64. package/node_modules/@openclaw/fs-safe/dist/archive-zip-names.js +56 -18
  65. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts +2 -3
  66. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts.map +1 -1
  67. package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.js +4 -35
  68. package/node_modules/@openclaw/fs-safe/dist/archive.d.ts.map +1 -1
  69. package/node_modules/@openclaw/fs-safe/dist/archive.js +25 -13
  70. package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts +12 -0
  71. package/node_modules/@openclaw/fs-safe/dist/bounded-read.d.ts.map +1 -1
  72. package/node_modules/@openclaw/fs-safe/dist/bounded-read.js +83 -46
  73. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts +19 -0
  74. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.d.ts.map +1 -0
  75. package/node_modules/@openclaw/fs-safe/dist/clone-metadata.js +32 -0
  76. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts +22 -0
  77. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.d.ts.map +1 -0
  78. package/node_modules/@openclaw/fs-safe/dist/copy-file-input.js +71 -0
  79. package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts +3 -0
  80. package/node_modules/@openclaw/fs-safe/dist/copy-policy.d.ts.map +1 -0
  81. package/node_modules/@openclaw/fs-safe/dist/copy-policy.js +8 -0
  82. package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts +15 -0
  83. package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts.map +1 -0
  84. package/node_modules/@openclaw/fs-safe/dist/copy-publication.js +30 -0
  85. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts +9 -0
  86. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.d.ts.map +1 -0
  87. package/node_modules/@openclaw/fs-safe/dist/copy-tree-portable.js +222 -0
  88. package/node_modules/@openclaw/fs-safe/dist/copy.d.ts +16 -0
  89. package/node_modules/@openclaw/fs-safe/dist/copy.d.ts.map +1 -0
  90. package/node_modules/@openclaw/fs-safe/dist/copy.js +125 -0
  91. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.d.ts +4 -0
  92. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.d.ts.map +1 -0
  93. package/node_modules/@openclaw/fs-safe/dist/darwin-acl.js +24 -0
  94. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.d.ts.map +1 -1
  95. package/node_modules/@openclaw/fs-safe/dist/deny-mutations.js +8 -2
  96. package/node_modules/@openclaw/fs-safe/dist/device-path.d.ts.map +1 -1
  97. package/node_modules/@openclaw/fs-safe/dist/device-path.js +5 -3
  98. package/node_modules/@openclaw/fs-safe/dist/directory-durability.d.ts.map +1 -1
  99. package/node_modules/@openclaw/fs-safe/dist/directory-durability.js +68 -23
  100. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts +3 -0
  101. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.d.ts.map +1 -0
  102. package/node_modules/@openclaw/fs-safe/dist/directory-entry-path.js +21 -0
  103. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts +27 -1
  104. package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts.map +1 -1
  105. package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +145 -17
  106. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts +12 -0
  107. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts.map +1 -1
  108. package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.js +106 -8
  109. package/node_modules/@openclaw/fs-safe/dist/durability.d.ts +1 -1
  110. package/node_modules/@openclaw/fs-safe/dist/durability.d.ts.map +1 -1
  111. package/node_modules/@openclaw/fs-safe/dist/durability.js +1 -1
  112. package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts +2 -0
  113. package/node_modules/@openclaw/fs-safe/dist/effective-uid.d.ts.map +1 -0
  114. package/node_modules/@openclaw/fs-safe/dist/effective-uid.js +25 -0
  115. package/node_modules/@openclaw/fs-safe/dist/error-detail.d.ts.map +1 -1
  116. package/node_modules/@openclaw/fs-safe/dist/error-detail.js +4 -1
  117. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts +14 -0
  118. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.d.ts.map +1 -0
  119. package/node_modules/@openclaw/fs-safe/dist/file-handle-transfer.js +135 -0
  120. package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts +9 -2
  121. package/node_modules/@openclaw/fs-safe/dist/file-hash.d.ts.map +1 -1
  122. package/node_modules/@openclaw/fs-safe/dist/file-hash.js +147 -40
  123. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.d.ts.map +1 -1
  124. package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +44 -10
  125. package/node_modules/@openclaw/fs-safe/dist/file-lock.d.ts.map +1 -1
  126. package/node_modules/@openclaw/fs-safe/dist/file-lock.js +29 -9
  127. package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts +1 -1
  128. package/node_modules/@openclaw/fs-safe/dist/file-observation.d.ts.map +1 -1
  129. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts +6 -2
  130. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts.map +1 -1
  131. package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.js +22 -65
  132. package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.d.ts +5 -0
  133. package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.d.ts.map +1 -0
  134. package/node_modules/@openclaw/fs-safe/dist/file-store-copy-source.js +31 -0
  135. package/node_modules/@openclaw/fs-safe/dist/file-store-path.d.ts +3 -0
  136. package/node_modules/@openclaw/fs-safe/dist/file-store-path.d.ts.map +1 -0
  137. package/node_modules/@openclaw/fs-safe/dist/file-store-path.js +30 -0
  138. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.d.ts.map +1 -1
  139. package/node_modules/@openclaw/fs-safe/dist/file-store-prune.js +15 -5
  140. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts +16 -0
  141. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.d.ts.map +1 -0
  142. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-directory.js +349 -0
  143. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts +1 -0
  144. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.d.ts.map +1 -1
  145. package/node_modules/@openclaw/fs-safe/dist/file-store-sync-write.js +63 -48
  146. package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts +4 -0
  147. package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts.map +1 -1
  148. package/node_modules/@openclaw/fs-safe/dist/file-store.js +23 -47
  149. package/node_modules/@openclaw/fs-safe/dist/filename.d.ts +1 -0
  150. package/node_modules/@openclaw/fs-safe/dist/filename.d.ts.map +1 -1
  151. package/node_modules/@openclaw/fs-safe/dist/filename.js +89 -36
  152. package/node_modules/@openclaw/fs-safe/dist/fs.js +3 -3
  153. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts +11 -0
  154. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.d.ts.map +1 -1
  155. package/node_modules/@openclaw/fs-safe/dist/guarded-mkdir.js +218 -32
  156. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts +2 -0
  157. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.d.ts.map +1 -1
  158. package/node_modules/@openclaw/fs-safe/dist/guarded-mutation.js +9 -5
  159. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts +2 -0
  160. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.d.ts.map +1 -0
  161. package/node_modules/@openclaw/fs-safe/dist/guest-dispatch-python.js +117 -0
  162. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts +4 -0
  163. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.d.ts.map +1 -0
  164. package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +135 -0
  165. package/node_modules/@openclaw/fs-safe/dist/guest.d.ts +9 -0
  166. package/node_modules/@openclaw/fs-safe/dist/guest.d.ts.map +1 -0
  167. package/node_modules/@openclaw/fs-safe/dist/guest.js +424 -0
  168. package/node_modules/@openclaw/fs-safe/dist/home-dir.d.ts.map +1 -1
  169. package/node_modules/@openclaw/fs-safe/dist/home-dir.js +81 -16
  170. package/node_modules/@openclaw/fs-safe/dist/index.d.ts +1 -1
  171. package/node_modules/@openclaw/fs-safe/dist/index.d.ts.map +1 -1
  172. package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts +6 -0
  173. package/node_modules/@openclaw/fs-safe/dist/install-path.d.ts.map +1 -1
  174. package/node_modules/@openclaw/fs-safe/dist/install-path.js +71 -26
  175. package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts +3 -0
  176. package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts.map +1 -1
  177. package/node_modules/@openclaw/fs-safe/dist/json-document-store.js +1 -0
  178. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-directory.js +3 -3
  179. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts +8 -0
  180. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts.map +1 -1
  181. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.js +137 -45
  182. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.d.ts +11 -0
  183. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.d.ts.map +1 -0
  184. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-paths.js +42 -0
  185. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts +6 -0
  186. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.d.ts.map +1 -0
  187. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-read.js +61 -0
  188. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts +1 -1
  189. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts.map +1 -1
  190. package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.js +107 -152
  191. package/node_modules/@openclaw/fs-safe/dist/json-store.d.ts.map +1 -1
  192. package/node_modules/@openclaw/fs-safe/dist/json-store.js +5 -1
  193. package/node_modules/@openclaw/fs-safe/dist/json.d.ts.map +1 -1
  194. package/node_modules/@openclaw/fs-safe/dist/json.js +55 -22
  195. package/node_modules/@openclaw/fs-safe/dist/local-file-access.d.ts.map +1 -1
  196. package/node_modules/@openclaw/fs-safe/dist/local-file-access.js +4 -0
  197. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts +17 -0
  198. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts.map +1 -0
  199. package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.js +84 -0
  200. package/node_modules/@openclaw/fs-safe/dist/local-roots.d.ts.map +1 -1
  201. package/node_modules/@openclaw/fs-safe/dist/local-roots.js +54 -27
  202. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts +2 -0
  203. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.d.ts.map +1 -1
  204. package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.js +47 -20
  205. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts +8 -0
  206. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.d.ts.map +1 -0
  207. package/node_modules/@openclaw/fs-safe/dist/move-path-stage.js +56 -0
  208. package/node_modules/@openclaw/fs-safe/dist/move-path.d.ts.map +1 -1
  209. package/node_modules/@openclaw/fs-safe/dist/move-path.js +84 -50
  210. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts +9 -0
  211. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.d.ts.map +1 -0
  212. package/node_modules/@openclaw/fs-safe/dist/mutation-authority.js +36 -0
  213. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +53 -1
  214. package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts.map +1 -1
  215. package/node_modules/@openclaw/fs-safe/dist/native-binding.js +8 -1
  216. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts +17 -0
  217. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.d.ts.map +1 -0
  218. package/node_modules/@openclaw/fs-safe/dist/native-directory-observation.js +37 -0
  219. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts +1 -1
  220. package/node_modules/@openclaw/fs-safe/dist/native-operations.d.ts.map +1 -1
  221. package/node_modules/@openclaw/fs-safe/dist/native-operations.js +17 -9
  222. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts +32 -0
  223. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.d.ts.map +1 -0
  224. package/node_modules/@openclaw/fs-safe/dist/native-parent-admission.js +127 -0
  225. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts +0 -1
  226. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.d.ts.map +1 -1
  227. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write-windows.js +27 -16
  228. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.d.ts.map +1 -1
  229. package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +315 -41
  230. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts +5 -5
  231. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.d.ts.map +1 -1
  232. package/node_modules/@openclaw/fs-safe/dist/native-staged-file.js +52 -15
  233. package/node_modules/@openclaw/fs-safe/dist/native.d.ts +1 -1
  234. package/node_modules/@openclaw/fs-safe/dist/native.d.ts.map +1 -1
  235. package/node_modules/@openclaw/fs-safe/dist/native.js +7 -2
  236. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts +1 -1
  237. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.d.ts.map +1 -1
  238. package/node_modules/@openclaw/fs-safe/dist/opened-file-failure.js +3 -2
  239. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.d.ts.map +1 -1
  240. package/node_modules/@openclaw/fs-safe/dist/opened-realpath.js +5 -4
  241. package/node_modules/@openclaw/fs-safe/dist/output.d.ts +2 -0
  242. package/node_modules/@openclaw/fs-safe/dist/output.d.ts.map +1 -1
  243. package/node_modules/@openclaw/fs-safe/dist/output.js +16 -4
  244. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts +8 -0
  245. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.d.ts.map +1 -0
  246. package/node_modules/@openclaw/fs-safe/dist/overwrite-file-handle.js +46 -0
  247. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.d.ts.map +1 -1
  248. package/node_modules/@openclaw/fs-safe/dist/owner-dacl.js +2 -0
  249. package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts +7 -0
  250. package/node_modules/@openclaw/fs-safe/dist/path-case.d.ts.map +1 -0
  251. package/node_modules/@openclaw/fs-safe/dist/path-case.js +136 -0
  252. package/node_modules/@openclaw/fs-safe/dist/path-policy.d.ts.map +1 -1
  253. package/node_modules/@openclaw/fs-safe/dist/path-policy.js +7 -2
  254. package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts +7 -0
  255. package/node_modules/@openclaw/fs-safe/dist/path-prefix.d.ts.map +1 -0
  256. package/node_modules/@openclaw/fs-safe/dist/path-prefix.js +82 -0
  257. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts +14 -0
  258. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.d.ts.map +1 -0
  259. package/node_modules/@openclaw/fs-safe/dist/path-scope-lexical.js +37 -0
  260. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts +7 -0
  261. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.d.ts.map +1 -0
  262. package/node_modules/@openclaw/fs-safe/dist/path-segment-route.js +24 -0
  263. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts +10 -0
  264. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.d.ts.map +1 -0
  265. package/node_modules/@openclaw/fs-safe/dist/path-suffix-aliases.js +386 -0
  266. package/node_modules/@openclaw/fs-safe/dist/path.d.ts.map +1 -1
  267. package/node_modules/@openclaw/fs-safe/dist/path.js +39 -7
  268. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts +1 -1
  269. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts.map +1 -1
  270. package/node_modules/@openclaw/fs-safe/dist/permissions-windows.js +99 -56
  271. package/node_modules/@openclaw/fs-safe/dist/permissions.d.ts.map +1 -1
  272. package/node_modules/@openclaw/fs-safe/dist/permissions.js +39 -10
  273. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts +25 -0
  274. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts.map +1 -0
  275. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.js +425 -0
  276. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts +34 -0
  277. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.d.ts.map +1 -0
  278. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-observation.js +142 -0
  279. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts +24 -0
  280. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts.map +1 -0
  281. package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.js +70 -0
  282. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts +6 -0
  283. package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts.map +1 -1
  284. package/node_modules/@openclaw/fs-safe/dist/pinned-open.js +29 -9
  285. package/node_modules/@openclaw/fs-safe/dist/pinned-operation.js +1 -1
  286. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts +75 -0
  287. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.d.ts.map +1 -0
  288. package/node_modules/@openclaw/fs-safe/dist/pinned-write-types.js +1 -0
  289. package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts +7 -29
  290. package/node_modules/@openclaw/fs-safe/dist/pinned-write.d.ts.map +1 -1
  291. package/node_modules/@openclaw/fs-safe/dist/pinned-write.js +203 -47
  292. package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts +9 -0
  293. package/node_modules/@openclaw/fs-safe/dist/positional-read.d.ts.map +1 -0
  294. package/node_modules/@openclaw/fs-safe/dist/positional-read.js +36 -0
  295. package/node_modules/@openclaw/fs-safe/dist/private-directory.d.ts.map +1 -1
  296. package/node_modules/@openclaw/fs-safe/dist/private-directory.js +2 -0
  297. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts +16 -0
  298. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.d.ts.map +1 -0
  299. package/node_modules/@openclaw/fs-safe/dist/private-producer-handoff.js +272 -0
  300. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts +2 -39
  301. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.d.ts.map +1 -1
  302. package/node_modules/@openclaw/fs-safe/dist/private-temp-workspace.js +183 -69
  303. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts +13 -0
  304. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.d.ts.map +1 -0
  305. package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +47 -0
  306. package/node_modules/@openclaw/fs-safe/dist/publish-file.d.ts.map +1 -1
  307. package/node_modules/@openclaw/fs-safe/dist/publish-file.js +63 -56
  308. package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts +4 -0
  309. package/node_modules/@openclaw/fs-safe/dist/realpath.d.ts.map +1 -0
  310. package/node_modules/@openclaw/fs-safe/dist/realpath.js +43 -0
  311. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts +3 -0
  312. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.d.ts.map +1 -0
  313. package/node_modules/@openclaw/fs-safe/dist/recursive-mkdir-path.js +8 -0
  314. package/node_modules/@openclaw/fs-safe/dist/regular-file.d.ts.map +1 -1
  315. package/node_modules/@openclaw/fs-safe/dist/regular-file.js +56 -45
  316. package/node_modules/@openclaw/fs-safe/dist/replace-directory.d.ts.map +1 -1
  317. package/node_modules/@openclaw/fs-safe/dist/replace-directory.js +14 -6
  318. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts.map +1 -1
  319. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +52 -47
  320. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.d.ts.map +1 -1
  321. package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-source.js +17 -17
  322. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts +3 -0
  323. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.d.ts.map +1 -0
  324. package/node_modules/@openclaw/fs-safe/dist/replace-file-mode.js +10 -0
  325. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts +1 -0
  326. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts.map +1 -1
  327. package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.js +18 -3
  328. package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts +1 -0
  329. package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts.map +1 -1
  330. package/node_modules/@openclaw/fs-safe/dist/replace-file.js +43 -32
  331. package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts +29 -0
  332. package/node_modules/@openclaw/fs-safe/dist/root-boundary.d.ts.map +1 -0
  333. package/node_modules/@openclaw/fs-safe/dist/root-boundary.js +182 -0
  334. package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts +15 -1
  335. package/node_modules/@openclaw/fs-safe/dist/root-context.d.ts.map +1 -1
  336. package/node_modules/@openclaw/fs-safe/dist/root-context.js +131 -33
  337. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts +10 -0
  338. package/node_modules/@openclaw/fs-safe/dist/root-create-input.d.ts.map +1 -0
  339. package/node_modules/@openclaw/fs-safe/dist/root-create-input.js +80 -0
  340. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts +13 -0
  341. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.d.ts.map +1 -0
  342. package/node_modules/@openclaw/fs-safe/dist/root-directory-creation.js +212 -0
  343. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +38 -0
  344. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts.map +1 -0
  345. package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +368 -0
  346. package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts +23 -0
  347. package/node_modules/@openclaw/fs-safe/dist/root-directory.d.ts.map +1 -0
  348. package/node_modules/@openclaw/fs-safe/dist/root-directory.js +141 -0
  349. package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts +11 -0
  350. package/node_modules/@openclaw/fs-safe/dist/root-entries.d.ts.map +1 -0
  351. package/node_modules/@openclaw/fs-safe/dist/root-entries.js +61 -0
  352. package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts +6 -5
  353. package/node_modules/@openclaw/fs-safe/dist/root-errors.d.ts.map +1 -1
  354. package/node_modules/@openclaw/fs-safe/dist/root-errors.js +28 -13
  355. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts +21 -0
  356. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts.map +1 -0
  357. package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.js +83 -0
  358. package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts +2 -0
  359. package/node_modules/@openclaw/fs-safe/dist/root-file.d.ts.map +1 -1
  360. package/node_modules/@openclaw/fs-safe/dist/root-file.js +111 -24
  361. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts +18 -51
  362. package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts.map +1 -1
  363. package/node_modules/@openclaw/fs-safe/dist/root-impl.js +639 -510
  364. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +14 -0
  365. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts.map +1 -0
  366. package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +202 -0
  367. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts +8 -0
  368. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.d.ts.map +1 -0
  369. package/node_modules/@openclaw/fs-safe/dist/root-move-preflight.js +16 -0
  370. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts +9 -0
  371. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts.map +1 -0
  372. package/node_modules/@openclaw/fs-safe/dist/root-observed-path.js +95 -0
  373. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts +77 -0
  374. package/node_modules/@openclaw/fs-safe/dist/root-options.d.ts.map +1 -0
  375. package/node_modules/@openclaw/fs-safe/dist/root-options.js +18 -0
  376. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts +12 -0
  377. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.d.ts.map +1 -0
  378. package/node_modules/@openclaw/fs-safe/dist/root-path-errors.js +13 -0
  379. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts +7 -0
  380. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.d.ts.map +1 -1
  381. package/node_modules/@openclaw/fs-safe/dist/root-path-existing.js +111 -14
  382. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts +63 -0
  383. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts.map +1 -0
  384. package/node_modules/@openclaw/fs-safe/dist/root-path-observation.js +180 -0
  385. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts +5 -0
  386. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.d.ts.map +1 -0
  387. package/node_modules/@openclaw/fs-safe/dist/root-path-stat.js +101 -0
  388. package/node_modules/@openclaw/fs-safe/dist/root-path-symlink.d.ts.map +1 -1
  389. package/node_modules/@openclaw/fs-safe/dist/root-path-symlink.js +24 -4
  390. package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts +14 -0
  391. package/node_modules/@openclaw/fs-safe/dist/root-path.d.ts.map +1 -1
  392. package/node_modules/@openclaw/fs-safe/dist/root-path.js +322 -220
  393. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts +9 -0
  394. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.d.ts.map +1 -0
  395. package/node_modules/@openclaw/fs-safe/dist/root-paths-lexical.js +22 -0
  396. package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts +3 -29
  397. package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts.map +1 -1
  398. package/node_modules/@openclaw/fs-safe/dist/root-paths.js +89 -174
  399. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts +26 -0
  400. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.d.ts.map +1 -0
  401. package/node_modules/@openclaw/fs-safe/dist/root-read-admission.js +94 -0
  402. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts +15 -0
  403. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts.map +1 -0
  404. package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.js +89 -0
  405. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts +17 -0
  406. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.d.ts.map +1 -0
  407. package/node_modules/@openclaw/fs-safe/dist/root-remove-receipt.js +37 -0
  408. package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts +6 -0
  409. package/node_modules/@openclaw/fs-safe/dist/root-remove.d.ts.map +1 -0
  410. package/node_modules/@openclaw/fs-safe/dist/root-remove.js +448 -0
  411. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts +14 -0
  412. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.d.ts.map +1 -0
  413. package/node_modules/@openclaw/fs-safe/dist/root-symlink-policy.js +34 -0
  414. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts +5 -4
  415. package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts.map +1 -1
  416. package/node_modules/@openclaw/fs-safe/dist/root-walk.js +100 -50
  417. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts +68 -0
  418. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.d.ts.map +1 -0
  419. package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +322 -0
  420. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts +13 -0
  421. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.d.ts.map +1 -0
  422. package/node_modules/@openclaw/fs-safe/dist/root-write-compatibility.js +74 -0
  423. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts +42 -0
  424. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts.map +1 -0
  425. package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.js +195 -0
  426. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts +2 -0
  427. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.d.ts.map +1 -1
  428. package/node_modules/@openclaw/fs-safe/dist/root-write-mode.js +22 -11
  429. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts +24 -0
  430. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.d.ts.map +1 -0
  431. package/node_modules/@openclaw/fs-safe/dist/root-write-publication.js +85 -0
  432. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.d.ts.map +1 -1
  433. package/node_modules/@openclaw/fs-safe/dist/root-write-verification.js +18 -7
  434. package/node_modules/@openclaw/fs-safe/dist/root.d.ts +4 -1
  435. package/node_modules/@openclaw/fs-safe/dist/root.d.ts.map +1 -1
  436. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts.map +1 -1
  437. package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.js +3 -1
  438. package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts +1 -0
  439. package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts.map +1 -1
  440. package/node_modules/@openclaw/fs-safe/dist/secret-file.js +65 -25
  441. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.d.ts.map +1 -1
  442. package/node_modules/@openclaw/fs-safe/dist/secret-read-async.js +22 -16
  443. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.d.ts.map +1 -1
  444. package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.js +5 -1
  445. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts +10 -0
  446. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.d.ts.map +1 -0
  447. package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.js +186 -0
  448. package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts +1 -1
  449. package/node_modules/@openclaw/fs-safe/dist/secure-file.d.ts.map +1 -1
  450. package/node_modules/@openclaw/fs-safe/dist/secure-file.js +137 -22
  451. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts +6 -3
  452. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.d.ts.map +1 -1
  453. package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.js +122 -101
  454. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts +35 -0
  455. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.d.ts.map +1 -0
  456. package/node_modules/@openclaw/fs-safe/dist/secure-temp-repair.js +106 -0
  457. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts +4 -1
  458. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.d.ts.map +1 -1
  459. package/node_modules/@openclaw/fs-safe/dist/sibling-staged-file.js +210 -45
  460. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts +2 -0
  461. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.d.ts.map +1 -1
  462. package/node_modules/@openclaw/fs-safe/dist/sibling-temp.js +43 -17
  463. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts +1 -1
  464. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.d.ts.map +1 -1
  465. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +64 -21
  466. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts +2 -0
  467. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts.map +1 -1
  468. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.js +22 -3
  469. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts.map +1 -1
  470. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +16 -4
  471. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.d.ts.map +1 -1
  472. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-root.js +4 -2
  473. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.d.ts.map +1 -1
  474. package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +4 -4
  475. package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts +14 -5
  476. package/node_modules/@openclaw/fs-safe/dist/staged-directory.d.ts.map +1 -1
  477. package/node_modules/@openclaw/fs-safe/dist/staged-directory.js +58 -6
  478. package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.d.ts +2 -0
  479. package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.d.ts.map +1 -0
  480. package/node_modules/@openclaw/fs-safe/dist/standalone-publication-path.js +6 -0
  481. package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts +11 -0
  482. package/node_modules/@openclaw/fs-safe/dist/stat-observation.d.ts.map +1 -0
  483. package/node_modules/@openclaw/fs-safe/dist/stat-observation.js +64 -0
  484. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.d.ts.map +1 -1
  485. package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.js +39 -2
  486. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.d.ts.map +1 -1
  487. package/node_modules/@openclaw/fs-safe/dist/symlink-parents.js +7 -2
  488. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.d.ts.map +1 -1
  489. package/node_modules/@openclaw/fs-safe/dist/temp-cleanup.js +3 -2
  490. package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts +16 -12
  491. package/node_modules/@openclaw/fs-safe/dist/temp-target.d.ts.map +1 -1
  492. package/node_modules/@openclaw/fs-safe/dist/temp-target.js +154 -14
  493. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts +22 -0
  494. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.d.ts.map +1 -0
  495. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +374 -0
  496. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +13 -0
  497. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts.map +1 -0
  498. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +95 -0
  499. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts +48 -0
  500. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.d.ts.map +1 -0
  501. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +363 -0
  502. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.d.ts +15 -0
  503. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.d.ts.map +1 -0
  504. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-identity.js +41 -0
  505. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts +7 -6
  506. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.d.ts.map +1 -1
  507. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +121 -61
  508. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.d.ts +4 -0
  509. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.d.ts.map +1 -0
  510. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-permissions.js +32 -0
  511. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts +40 -0
  512. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.d.ts.map +1 -0
  513. package/node_modules/@openclaw/fs-safe/dist/temp-workspace-types.js +1 -0
  514. package/node_modules/@openclaw/fs-safe/dist/temp.d.ts +1 -1
  515. package/node_modules/@openclaw/fs-safe/dist/temp.d.ts.map +1 -1
  516. package/node_modules/@openclaw/fs-safe/dist/temp.js +1 -1
  517. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts +7 -0
  518. package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts.map +1 -1
  519. package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts.map +1 -1
  520. package/node_modules/@openclaw/fs-safe/dist/text-atomic.js +3 -1
  521. package/node_modules/@openclaw/fs-safe/dist/timing.d.ts +1 -0
  522. package/node_modules/@openclaw/fs-safe/dist/timing.d.ts.map +1 -1
  523. package/node_modules/@openclaw/fs-safe/dist/timing.js +25 -6
  524. package/node_modules/@openclaw/fs-safe/dist/trash.d.ts.map +1 -1
  525. package/node_modules/@openclaw/fs-safe/dist/trash.js +61 -13
  526. package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts +3 -0
  527. package/node_modules/@openclaw/fs-safe/dist/unicode-path.d.ts.map +1 -0
  528. package/node_modules/@openclaw/fs-safe/dist/unicode-path.js +13 -0
  529. package/node_modules/@openclaw/fs-safe/dist/walk.d.ts.map +1 -1
  530. package/node_modules/@openclaw/fs-safe/dist/walk.js +25 -40
  531. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts +9 -12
  532. package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts.map +1 -1
  533. package/node_modules/@openclaw/fs-safe/dist/windows-owner.js +29 -58
  534. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts +39 -0
  535. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.d.ts.map +1 -0
  536. package/node_modules/@openclaw/fs-safe/dist/windows-path-alias.js +153 -0
  537. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts +7 -0
  538. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.d.ts.map +1 -0
  539. package/node_modules/@openclaw/fs-safe/dist/write-file-handle.js +26 -0
  540. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.d.ts.map +1 -1
  541. package/node_modules/@openclaw/fs-safe/dist/write-open-flags.js +1 -2
  542. package/node_modules/@openclaw/fs-safe/docs/advanced.md +50 -5
  543. package/node_modules/@openclaw/fs-safe/docs/archive.md +107 -12
  544. package/node_modules/@openclaw/fs-safe/docs/atomic.md +77 -5
  545. package/node_modules/@openclaw/fs-safe/docs/config.md +1 -0
  546. package/node_modules/@openclaw/fs-safe/docs/contributing.md +40 -2
  547. package/node_modules/@openclaw/fs-safe/docs/copy.md +158 -0
  548. package/node_modules/@openclaw/fs-safe/docs/directory-identity.md +85 -0
  549. package/node_modules/@openclaw/fs-safe/docs/durability.md +71 -5
  550. package/node_modules/@openclaw/fs-safe/docs/entries.md +109 -0
  551. package/node_modules/@openclaw/fs-safe/docs/errors.md +18 -10
  552. package/node_modules/@openclaw/fs-safe/docs/file-store.md +93 -6
  553. package/node_modules/@openclaw/fs-safe/docs/filename.md +21 -7
  554. package/node_modules/@openclaw/fs-safe/docs/guest.md +146 -0
  555. package/node_modules/@openclaw/fs-safe/docs/in-place-write.md +81 -0
  556. package/node_modules/@openclaw/fs-safe/docs/index.md +2 -0
  557. package/node_modules/@openclaw/fs-safe/docs/install-path.md +61 -15
  558. package/node_modules/@openclaw/fs-safe/docs/install.md +42 -7
  559. package/node_modules/@openclaw/fs-safe/docs/json-store.md +15 -1
  560. package/node_modules/@openclaw/fs-safe/docs/json.md +11 -0
  561. package/node_modules/@openclaw/fs-safe/docs/local-roots.md +8 -1
  562. package/node_modules/@openclaw/fs-safe/docs/mutation-policy-proof.md +65 -0
  563. package/node_modules/@openclaw/fs-safe/docs/native-helper.md +51 -12
  564. package/node_modules/@openclaw/fs-safe/docs/native.md +63 -10
  565. package/node_modules/@openclaw/fs-safe/docs/output.md +55 -7
  566. package/node_modules/@openclaw/fs-safe/docs/path-case.md +64 -0
  567. package/node_modules/@openclaw/fs-safe/docs/path-prefix.md +64 -0
  568. package/node_modules/@openclaw/fs-safe/docs/path-scope.md +1 -1
  569. package/node_modules/@openclaw/fs-safe/docs/path-suffix-aliases.md +159 -0
  570. package/node_modules/@openclaw/fs-safe/docs/path.md +12 -1
  571. package/node_modules/@openclaw/fs-safe/docs/permissions.md +55 -11
  572. package/node_modules/@openclaw/fs-safe/docs/positional-read.md +63 -0
  573. package/node_modules/@openclaw/fs-safe/docs/private-file-store.md +14 -0
  574. package/node_modules/@openclaw/fs-safe/docs/public-api.md +45 -2
  575. package/node_modules/@openclaw/fs-safe/docs/quickstart.md +1 -1
  576. package/node_modules/@openclaw/fs-safe/docs/reading.md +14 -1
  577. package/node_modules/@openclaw/fs-safe/docs/root.md +219 -12
  578. package/node_modules/@openclaw/fs-safe/docs/secret-file.md +9 -0
  579. package/node_modules/@openclaw/fs-safe/docs/secure-file.md +23 -16
  580. package/node_modules/@openclaw/fs-safe/docs/security-model.md +90 -9
  581. package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +42 -4
  582. package/node_modules/@openclaw/fs-safe/docs/store.md +27 -2
  583. package/node_modules/@openclaw/fs-safe/docs/temp.md +283 -26
  584. package/node_modules/@openclaw/fs-safe/docs/test-hooks.md +14 -0
  585. package/node_modules/@openclaw/fs-safe/docs/timing.md +2 -0
  586. package/node_modules/@openclaw/fs-safe/docs/types.md +19 -12
  587. package/node_modules/@openclaw/fs-safe/docs/walk.md +54 -5
  588. package/node_modules/@openclaw/fs-safe/docs/writing.md +211 -11
  589. package/node_modules/@openclaw/fs-safe/package.json +24 -13
  590. package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
  591. package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +1 -1
  592. package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
  593. package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +1 -1
  594. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
  595. package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +1 -1
  596. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
  597. package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +1 -1
  598. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
  599. package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +1 -1
  600. package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
  601. package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +1 -1
  602. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
  603. package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +1 -1
  604. package/node_modules/jszip/.github/FUNDING.yml +1 -0
  605. package/node_modules/jszip/.github/actions/setup/action.yml +23 -0
  606. package/node_modules/jszip/.github/workflows/benchmark.yml +38 -0
  607. package/node_modules/jszip/.github/workflows/main.yml +55 -0
  608. package/node_modules/jszip/CHANGES.md +6 -0
  609. package/node_modules/jszip/dist/jszip.js +28 -19
  610. package/node_modules/jszip/dist/jszip.min.js +2 -2
  611. package/node_modules/jszip/index.d.ts +14 -0
  612. package/node_modules/jszip/lib/index.js +1 -1
  613. package/node_modules/jszip/lib/utils.js +26 -17
  614. package/node_modules/jszip/package.json +2 -2
  615. package/node_modules/p-limit/index.d.ts +1 -1
  616. package/node_modules/p-limit/index.js +6 -1
  617. package/node_modules/p-limit/package.json +1 -1
  618. package/node_modules/p-limit/readme.md +8 -0
  619. package/node_modules/zod/README.md +27 -0
  620. package/node_modules/zod/compile.cjs +77 -0
  621. package/node_modules/zod/compile.d.cts +1 -0
  622. package/node_modules/zod/compile.d.ts +1 -0
  623. package/node_modules/zod/compile.js +52 -0
  624. package/node_modules/zod/index.cjs +2 -2
  625. package/node_modules/zod/index.d.cts +1 -2
  626. package/node_modules/zod/index.d.ts +1 -2
  627. package/node_modules/zod/index.js +5 -2
  628. package/node_modules/zod/package.json +13 -2
  629. package/node_modules/zod/src/compile.ts +56 -0
  630. package/node_modules/zod/src/index.ts +5 -2
  631. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  632. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  633. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  634. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  635. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  636. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  637. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  638. package/node_modules/zod/src/v3/types.ts +5 -5
  639. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  640. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  641. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  642. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  643. package/node_modules/zod/src/v4/classic/external.ts +12 -9
  644. package/node_modules/zod/src/v4/classic/from-json-schema.ts +140 -78
  645. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  646. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  647. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  648. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  649. package/node_modules/zod/src/v4/classic/schemas.ts +452 -262
  650. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  651. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  652. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +135 -0
  653. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +30 -1
  654. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  655. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  656. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  657. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  658. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  659. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +720 -0
  660. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  661. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  662. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  663. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  664. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  665. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  666. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +155 -13
  667. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +11 -0
  668. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  669. package/node_modules/zod/src/v4/classic/tests/error.test.ts +274 -6
  670. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +425 -10
  671. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  672. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  673. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  674. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  675. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  676. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +281 -0
  677. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +47 -0
  678. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  679. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +183 -0
  680. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  681. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  682. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  683. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  684. package/node_modules/zod/src/v4/classic/tests/number.test.ts +46 -9
  685. package/node_modules/zod/src/v4/classic/tests/object.test.ts +245 -12
  686. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +234 -0
  687. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  688. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  689. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  690. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  691. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  692. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +33 -2
  693. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  694. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  695. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  696. package/node_modules/zod/src/v4/classic/tests/string.test.ts +127 -5
  697. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  698. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +11 -2
  699. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1585 -173
  700. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  701. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  702. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +76 -0
  703. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  704. package/node_modules/zod/src/v4/core/api.ts +48 -12
  705. package/node_modules/zod/src/v4/core/checks.ts +57 -44
  706. package/node_modules/zod/src/v4/core/compile.ts +2188 -0
  707. package/node_modules/zod/src/v4/core/core.ts +98 -19
  708. package/node_modules/zod/src/v4/core/doc.ts +11 -7
  709. package/node_modules/zod/src/v4/core/errors.ts +115 -24
  710. package/node_modules/zod/src/v4/core/index.ts +3 -0
  711. package/node_modules/zod/src/v4/core/json-schema-generator.ts +6 -1
  712. package/node_modules/zod/src/v4/core/json-schema-processors.ts +257 -93
  713. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  714. package/node_modules/zod/src/v4/core/memoizer.ts +284 -0
  715. package/node_modules/zod/src/v4/core/parse.ts +131 -38
  716. package/node_modules/zod/src/v4/core/regexes.ts +30 -13
  717. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  718. package/node_modules/zod/src/v4/core/schemas.ts +759 -461
  719. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +969 -0
  720. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  721. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  722. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  723. package/node_modules/zod/src/v4/core/tests/compile.test.ts +1639 -0
  724. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  725. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  726. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  727. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  728. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  729. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  730. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +31 -0
  731. package/node_modules/zod/src/v4/core/to-json-schema.ts +275 -42
  732. package/node_modules/zod/src/v4/core/util.ts +268 -42
  733. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  734. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  735. package/node_modules/zod/src/v4/index.ts +3 -3
  736. package/node_modules/zod/src/v4/locales/ar.ts +3 -0
  737. package/node_modules/zod/src/v4/locales/az.ts +3 -0
  738. package/node_modules/zod/src/v4/locales/be.ts +10 -0
  739. package/node_modules/zod/src/v4/locales/bg.ts +3 -0
  740. package/node_modules/zod/src/v4/locales/bn.ts +121 -0
  741. package/node_modules/zod/src/v4/locales/ca.ts +3 -0
  742. package/node_modules/zod/src/v4/locales/ckb.ts +138 -0
  743. package/node_modules/zod/src/v4/locales/cs.ts +3 -0
  744. package/node_modules/zod/src/v4/locales/da.ts +5 -2
  745. package/node_modules/zod/src/v4/locales/de.ts +3 -0
  746. package/node_modules/zod/src/v4/locales/el.ts +1 -0
  747. package/node_modules/zod/src/v4/locales/en.ts +15 -4
  748. package/node_modules/zod/src/v4/locales/eo.ts +3 -0
  749. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  750. package/node_modules/zod/src/v4/locales/fa.ts +3 -0
  751. package/node_modules/zod/src/v4/locales/fi.ts +3 -0
  752. package/node_modules/zod/src/v4/locales/fr-CA.ts +3 -0
  753. package/node_modules/zod/src/v4/locales/fr.ts +19 -14
  754. package/node_modules/zod/src/v4/locales/gu.ts +121 -0
  755. package/node_modules/zod/src/v4/locales/he.ts +6 -1
  756. package/node_modules/zod/src/v4/locales/hi.ts +124 -0
  757. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  758. package/node_modules/zod/src/v4/locales/hu.ts +3 -0
  759. package/node_modules/zod/src/v4/locales/hy.ts +9 -0
  760. package/node_modules/zod/src/v4/locales/id.ts +3 -0
  761. package/node_modules/zod/src/v4/locales/index.ts +10 -0
  762. package/node_modules/zod/src/v4/locales/is.ts +3 -0
  763. package/node_modules/zod/src/v4/locales/it.ts +3 -0
  764. package/node_modules/zod/src/v4/locales/ja.ts +3 -0
  765. package/node_modules/zod/src/v4/locales/ka.ts +3 -0
  766. package/node_modules/zod/src/v4/locales/km.ts +3 -0
  767. package/node_modules/zod/src/v4/locales/kn.ts +124 -0
  768. package/node_modules/zod/src/v4/locales/ko.ts +3 -0
  769. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  770. package/node_modules/zod/src/v4/locales/mk.ts +3 -0
  771. package/node_modules/zod/src/v4/locales/ms.ts +3 -0
  772. package/node_modules/zod/src/v4/locales/ne.ts +126 -0
  773. package/node_modules/zod/src/v4/locales/nl.ts +3 -0
  774. package/node_modules/zod/src/v4/locales/nn.ts +119 -0
  775. package/node_modules/zod/src/v4/locales/no.ts +5 -2
  776. package/node_modules/zod/src/v4/locales/ota.ts +3 -0
  777. package/node_modules/zod/src/v4/locales/pl.ts +3 -0
  778. package/node_modules/zod/src/v4/locales/ps.ts +3 -0
  779. package/node_modules/zod/src/v4/locales/pt-BR.ts +159 -0
  780. package/node_modules/zod/src/v4/locales/pt.ts +99 -58
  781. package/node_modules/zod/src/v4/locales/ro.ts +1 -0
  782. package/node_modules/zod/src/v4/locales/ru.ts +10 -0
  783. package/node_modules/zod/src/v4/locales/sk.ts +121 -0
  784. package/node_modules/zod/src/v4/locales/sl.ts +3 -0
  785. package/node_modules/zod/src/v4/locales/sv.ts +5 -2
  786. package/node_modules/zod/src/v4/locales/ta.ts +3 -0
  787. package/node_modules/zod/src/v4/locales/th.ts +3 -0
  788. package/node_modules/zod/src/v4/locales/tk.ts +111 -0
  789. package/node_modules/zod/src/v4/locales/tr.ts +3 -0
  790. package/node_modules/zod/src/v4/locales/uk.ts +3 -0
  791. package/node_modules/zod/src/v4/locales/ur.ts +3 -0
  792. package/node_modules/zod/src/v4/locales/uz.ts +1 -0
  793. package/node_modules/zod/src/v4/locales/vi.ts +3 -0
  794. package/node_modules/zod/src/v4/locales/yo.ts +3 -0
  795. package/node_modules/zod/src/v4/locales/zh-CN.ts +3 -0
  796. package/node_modules/zod/src/v4/locales/zh-TW.ts +3 -0
  797. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  798. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  799. package/node_modules/zod/src/v4/mini/external.ts +10 -1
  800. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  801. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  802. package/node_modules/zod/src/v4/mini/schemas.ts +135 -56
  803. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  804. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  805. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  806. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  807. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  808. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  809. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  810. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  811. package/node_modules/zod/src/v4/mini/tests/index.test.ts +72 -5
  812. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  813. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  814. package/node_modules/zod/src/v4/mini/tests/string.test.ts +21 -0
  815. package/node_modules/zod/v3/ZodError.cjs +22 -12
  816. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  817. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  818. package/node_modules/zod/v3/ZodError.js +22 -12
  819. package/node_modules/zod/v3/types.cjs +7 -5
  820. package/node_modules/zod/v3/types.js +7 -5
  821. package/node_modules/zod/v4/classic/checks.cjs +2 -1
  822. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  823. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  824. package/node_modules/zod/v4/classic/checks.js +1 -1
  825. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  826. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  827. package/node_modules/zod/v4/classic/deep-partial.cjs +39 -0
  828. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  829. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  830. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  831. package/node_modules/zod/v4/classic/errors.cjs +43 -34
  832. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  833. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  834. package/node_modules/zod/v4/classic/errors.js +43 -34
  835. package/node_modules/zod/v4/classic/external.cjs +30 -27
  836. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  837. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  838. package/node_modules/zod/v4/classic/external.js +5 -8
  839. package/node_modules/zod/v4/classic/from-json-schema.cjs +136 -75
  840. package/node_modules/zod/v4/classic/from-json-schema.js +136 -75
  841. package/node_modules/zod/v4/classic/in-out.cjs +63 -0
  842. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  843. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  844. package/node_modules/zod/v4/classic/in-out.js +36 -0
  845. package/node_modules/zod/v4/classic/index.cjs +2 -2
  846. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  847. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  848. package/node_modules/zod/v4/classic/index.js +2 -2
  849. package/node_modules/zod/v4/classic/iso.cjs +11 -22
  850. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  851. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  852. package/node_modules/zod/v4/classic/iso.js +2 -17
  853. package/node_modules/zod/v4/classic/parse.cjs +4 -1
  854. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  855. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  856. package/node_modules/zod/v4/classic/parse.js +1 -0
  857. package/node_modules/zod/v4/classic/schemas.cjs +498 -398
  858. package/node_modules/zod/v4/classic/schemas.d.cts +53 -18
  859. package/node_modules/zod/v4/classic/schemas.d.ts +53 -18
  860. package/node_modules/zod/v4/classic/schemas.js +492 -396
  861. package/node_modules/zod/v4/core/api.cjs +23 -4
  862. package/node_modules/zod/v4/core/api.d.cts +13 -9
  863. package/node_modules/zod/v4/core/api.d.ts +13 -9
  864. package/node_modules/zod/v4/core/api.js +21 -4
  865. package/node_modules/zod/v4/core/checks.cjs +37 -31
  866. package/node_modules/zod/v4/core/checks.d.cts +13 -13
  867. package/node_modules/zod/v4/core/checks.d.ts +13 -13
  868. package/node_modules/zod/v4/core/checks.js +37 -31
  869. package/node_modules/zod/v4/core/compile.cjs +1813 -0
  870. package/node_modules/zod/v4/core/compile.d.cts +51 -0
  871. package/node_modules/zod/v4/core/compile.d.ts +51 -0
  872. package/node_modules/zod/v4/core/compile.js +1783 -0
  873. package/node_modules/zod/v4/core/core.cjs +81 -18
  874. package/node_modules/zod/v4/core/core.d.cts +16 -4
  875. package/node_modules/zod/v4/core/core.d.ts +16 -4
  876. package/node_modules/zod/v4/core/core.js +82 -19
  877. package/node_modules/zod/v4/core/doc.cjs +5 -7
  878. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  879. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  880. package/node_modules/zod/v4/core/doc.js +5 -7
  881. package/node_modules/zod/v4/core/errors.cjs +110 -25
  882. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  883. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  884. package/node_modules/zod/v4/core/errors.js +110 -25
  885. package/node_modules/zod/v4/core/index.cjs +5 -1
  886. package/node_modules/zod/v4/core/index.d.cts +3 -0
  887. package/node_modules/zod/v4/core/index.d.ts +3 -0
  888. package/node_modules/zod/v4/core/index.js +3 -0
  889. package/node_modules/zod/v4/core/json-schema-generator.cjs +4 -0
  890. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  891. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  892. package/node_modules/zod/v4/core/json-schema-generator.js +4 -0
  893. package/node_modules/zod/v4/core/json-schema-processors.cjs +264 -95
  894. package/node_modules/zod/v4/core/json-schema-processors.js +243 -97
  895. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  896. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  897. package/node_modules/zod/v4/core/memoizer.cjs +272 -0
  898. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  899. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  900. package/node_modules/zod/v4/core/memoizer.js +265 -0
  901. package/node_modules/zod/v4/core/parse.cjs +96 -34
  902. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  903. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  904. package/node_modules/zod/v4/core/parse.js +94 -33
  905. package/node_modules/zod/v4/core/regexes.cjs +27 -15
  906. package/node_modules/zod/v4/core/regexes.d.cts +2 -0
  907. package/node_modules/zod/v4/core/regexes.d.ts +2 -0
  908. package/node_modules/zod/v4/core/regexes.js +24 -13
  909. package/node_modules/zod/v4/core/registries.js +2 -2
  910. package/node_modules/zod/v4/core/schemas.cjs +537 -326
  911. package/node_modules/zod/v4/core/schemas.d.cts +100 -31
  912. package/node_modules/zod/v4/core/schemas.d.ts +100 -31
  913. package/node_modules/zod/v4/core/schemas.js +526 -325
  914. package/node_modules/zod/v4/core/to-json-schema.cjs +242 -39
  915. package/node_modules/zod/v4/core/to-json-schema.d.cts +42 -3
  916. package/node_modules/zod/v4/core/to-json-schema.d.ts +42 -3
  917. package/node_modules/zod/v4/core/to-json-schema.js +241 -39
  918. package/node_modules/zod/v4/core/util.cjs +212 -31
  919. package/node_modules/zod/v4/core/util.d.cts +58 -1
  920. package/node_modules/zod/v4/core/util.d.ts +58 -1
  921. package/node_modules/zod/v4/core/util.js +202 -30
  922. package/node_modules/zod/v4/core/versions.cjs +2 -2
  923. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  924. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  925. package/node_modules/zod/v4/core/versions.js +2 -2
  926. package/node_modules/zod/v4/core/visit.cjs +195 -0
  927. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  928. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  929. package/node_modules/zod/v4/core/visit.js +169 -0
  930. package/node_modules/zod/v4/index.cjs +15 -5
  931. package/node_modules/zod/v4/index.d.cts +2 -2
  932. package/node_modules/zod/v4/index.d.ts +2 -2
  933. package/node_modules/zod/v4/index.js +3 -2
  934. package/node_modules/zod/v4/locales/ar.cjs +3 -0
  935. package/node_modules/zod/v4/locales/ar.js +3 -0
  936. package/node_modules/zod/v4/locales/az.cjs +3 -0
  937. package/node_modules/zod/v4/locales/az.js +3 -0
  938. package/node_modules/zod/v4/locales/be.cjs +10 -0
  939. package/node_modules/zod/v4/locales/be.js +10 -0
  940. package/node_modules/zod/v4/locales/bg.cjs +3 -0
  941. package/node_modules/zod/v4/locales/bg.js +3 -0
  942. package/node_modules/zod/v4/locales/bn.cjs +138 -0
  943. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  944. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  945. package/node_modules/zod/v4/locales/bn.js +111 -0
  946. package/node_modules/zod/v4/locales/ca.cjs +3 -0
  947. package/node_modules/zod/v4/locales/ca.js +3 -0
  948. package/node_modules/zod/v4/locales/ckb.cjs +158 -0
  949. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  950. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  951. package/node_modules/zod/v4/locales/ckb.js +131 -0
  952. package/node_modules/zod/v4/locales/cs.cjs +3 -0
  953. package/node_modules/zod/v4/locales/cs.js +3 -0
  954. package/node_modules/zod/v4/locales/da.cjs +5 -2
  955. package/node_modules/zod/v4/locales/da.js +5 -2
  956. package/node_modules/zod/v4/locales/de.cjs +3 -0
  957. package/node_modules/zod/v4/locales/de.js +3 -0
  958. package/node_modules/zod/v4/locales/el.cjs +1 -0
  959. package/node_modules/zod/v4/locales/el.js +1 -0
  960. package/node_modules/zod/v4/locales/en.cjs +14 -4
  961. package/node_modules/zod/v4/locales/en.js +14 -4
  962. package/node_modules/zod/v4/locales/eo.cjs +3 -0
  963. package/node_modules/zod/v4/locales/eo.js +3 -0
  964. package/node_modules/zod/v4/locales/es.cjs +2 -0
  965. package/node_modules/zod/v4/locales/es.js +2 -0
  966. package/node_modules/zod/v4/locales/fa.cjs +3 -0
  967. package/node_modules/zod/v4/locales/fa.js +3 -0
  968. package/node_modules/zod/v4/locales/fi.cjs +3 -0
  969. package/node_modules/zod/v4/locales/fi.js +3 -0
  970. package/node_modules/zod/v4/locales/fr-CA.cjs +3 -0
  971. package/node_modules/zod/v4/locales/fr-CA.js +3 -0
  972. package/node_modules/zod/v4/locales/fr.cjs +16 -14
  973. package/node_modules/zod/v4/locales/fr.js +16 -14
  974. package/node_modules/zod/v4/locales/gu.cjs +138 -0
  975. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  976. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  977. package/node_modules/zod/v4/locales/gu.js +111 -0
  978. package/node_modules/zod/v4/locales/he.cjs +5 -0
  979. package/node_modules/zod/v4/locales/he.js +5 -0
  980. package/node_modules/zod/v4/locales/hi.cjs +136 -0
  981. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  982. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  983. package/node_modules/zod/v4/locales/hi.js +109 -0
  984. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  985. package/node_modules/zod/v4/locales/hr.js +2 -0
  986. package/node_modules/zod/v4/locales/hu.cjs +3 -0
  987. package/node_modules/zod/v4/locales/hu.js +3 -0
  988. package/node_modules/zod/v4/locales/hy.cjs +9 -0
  989. package/node_modules/zod/v4/locales/hy.js +9 -0
  990. package/node_modules/zod/v4/locales/id.cjs +3 -0
  991. package/node_modules/zod/v4/locales/id.js +3 -0
  992. package/node_modules/zod/v4/locales/index.cjs +22 -2
  993. package/node_modules/zod/v4/locales/index.d.cts +10 -0
  994. package/node_modules/zod/v4/locales/index.d.ts +10 -0
  995. package/node_modules/zod/v4/locales/index.js +10 -0
  996. package/node_modules/zod/v4/locales/is.cjs +3 -0
  997. package/node_modules/zod/v4/locales/is.js +3 -0
  998. package/node_modules/zod/v4/locales/it.cjs +3 -0
  999. package/node_modules/zod/v4/locales/it.js +3 -0
  1000. package/node_modules/zod/v4/locales/ja.cjs +3 -0
  1001. package/node_modules/zod/v4/locales/ja.js +3 -0
  1002. package/node_modules/zod/v4/locales/ka.cjs +3 -0
  1003. package/node_modules/zod/v4/locales/ka.js +3 -0
  1004. package/node_modules/zod/v4/locales/km.cjs +3 -0
  1005. package/node_modules/zod/v4/locales/km.js +3 -0
  1006. package/node_modules/zod/v4/locales/kn.cjs +141 -0
  1007. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  1008. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  1009. package/node_modules/zod/v4/locales/kn.js +114 -0
  1010. package/node_modules/zod/v4/locales/ko.cjs +3 -0
  1011. package/node_modules/zod/v4/locales/ko.js +3 -0
  1012. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  1013. package/node_modules/zod/v4/locales/lt.js +2 -0
  1014. package/node_modules/zod/v4/locales/mk.cjs +3 -0
  1015. package/node_modules/zod/v4/locales/mk.js +3 -0
  1016. package/node_modules/zod/v4/locales/ms.cjs +3 -0
  1017. package/node_modules/zod/v4/locales/ms.js +3 -0
  1018. package/node_modules/zod/v4/locales/ne.cjs +136 -0
  1019. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  1020. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  1021. package/node_modules/zod/v4/locales/ne.js +109 -0
  1022. package/node_modules/zod/v4/locales/nl.cjs +3 -0
  1023. package/node_modules/zod/v4/locales/nl.js +3 -0
  1024. package/node_modules/zod/v4/locales/nn.cjs +138 -0
  1025. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  1026. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  1027. package/node_modules/zod/v4/locales/nn.js +111 -0
  1028. package/node_modules/zod/v4/locales/no.cjs +5 -2
  1029. package/node_modules/zod/v4/locales/no.js +5 -2
  1030. package/node_modules/zod/v4/locales/ota.cjs +3 -0
  1031. package/node_modules/zod/v4/locales/ota.js +3 -0
  1032. package/node_modules/zod/v4/locales/pl.cjs +3 -0
  1033. package/node_modules/zod/v4/locales/pl.js +3 -0
  1034. package/node_modules/zod/v4/locales/ps.cjs +3 -0
  1035. package/node_modules/zod/v4/locales/ps.js +3 -0
  1036. package/node_modules/zod/v4/locales/pt-BR.cjs +168 -0
  1037. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  1038. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  1039. package/node_modules/zod/v4/locales/pt-BR.js +141 -0
  1040. package/node_modules/zod/v4/locales/pt.cjs +87 -55
  1041. package/node_modules/zod/v4/locales/pt.js +87 -55
  1042. package/node_modules/zod/v4/locales/ro.cjs +1 -0
  1043. package/node_modules/zod/v4/locales/ro.js +1 -0
  1044. package/node_modules/zod/v4/locales/ru.cjs +10 -0
  1045. package/node_modules/zod/v4/locales/ru.js +10 -0
  1046. package/node_modules/zod/v4/locales/sk.cjs +141 -0
  1047. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  1048. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  1049. package/node_modules/zod/v4/locales/sk.js +114 -0
  1050. package/node_modules/zod/v4/locales/sl.cjs +3 -0
  1051. package/node_modules/zod/v4/locales/sl.js +3 -0
  1052. package/node_modules/zod/v4/locales/sv.cjs +5 -2
  1053. package/node_modules/zod/v4/locales/sv.js +5 -2
  1054. package/node_modules/zod/v4/locales/ta.cjs +3 -0
  1055. package/node_modules/zod/v4/locales/ta.js +3 -0
  1056. package/node_modules/zod/v4/locales/th.cjs +3 -0
  1057. package/node_modules/zod/v4/locales/th.js +3 -0
  1058. package/node_modules/zod/v4/locales/tk.cjs +132 -0
  1059. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  1060. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  1061. package/node_modules/zod/v4/locales/tk.js +105 -0
  1062. package/node_modules/zod/v4/locales/tr.cjs +3 -0
  1063. package/node_modules/zod/v4/locales/tr.js +3 -0
  1064. package/node_modules/zod/v4/locales/uk.cjs +3 -0
  1065. package/node_modules/zod/v4/locales/uk.js +3 -0
  1066. package/node_modules/zod/v4/locales/ur.cjs +3 -0
  1067. package/node_modules/zod/v4/locales/ur.js +3 -0
  1068. package/node_modules/zod/v4/locales/uz.cjs +1 -0
  1069. package/node_modules/zod/v4/locales/uz.js +1 -0
  1070. package/node_modules/zod/v4/locales/vi.cjs +3 -0
  1071. package/node_modules/zod/v4/locales/vi.js +3 -0
  1072. package/node_modules/zod/v4/locales/yo.cjs +3 -0
  1073. package/node_modules/zod/v4/locales/yo.js +3 -0
  1074. package/node_modules/zod/v4/locales/zh-CN.cjs +3 -0
  1075. package/node_modules/zod/v4/locales/zh-CN.js +3 -0
  1076. package/node_modules/zod/v4/locales/zh-TW.cjs +3 -0
  1077. package/node_modules/zod/v4/locales/zh-TW.js +3 -0
  1078. package/node_modules/zod/v4/mini/checks.cjs +2 -1
  1079. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  1080. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  1081. package/node_modules/zod/v4/mini/checks.js +1 -1
  1082. package/node_modules/zod/v4/mini/deep-partial.cjs +39 -0
  1083. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  1084. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  1085. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  1086. package/node_modules/zod/v4/mini/external.cjs +12 -1
  1087. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  1088. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  1089. package/node_modules/zod/v4/mini/external.js +3 -1
  1090. package/node_modules/zod/v4/mini/in-out.cjs +63 -0
  1091. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  1092. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  1093. package/node_modules/zod/v4/mini/in-out.js +36 -0
  1094. package/node_modules/zod/v4/mini/parse.cjs +3 -1
  1095. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  1096. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  1097. package/node_modules/zod/v4/mini/parse.js +1 -1
  1098. package/node_modules/zod/v4/mini/schemas.cjs +75 -47
  1099. package/node_modules/zod/v4/mini/schemas.d.cts +43 -13
  1100. package/node_modules/zod/v4/mini/schemas.d.ts +43 -13
  1101. package/node_modules/zod/v4/mini/schemas.js +71 -45
  1102. package/openclaw.plugin.json +21 -0
  1103. package/package.json +11 -8
  1104. package/node_modules/jszip/.github/workflows/pr.yaml +0 -58
  1105. package/node_modules/jszip/.jekyll-metadata +0 -0
  1106. package/node_modules/jszip/.travis.yml +0 -17
  1107. package/node_modules/jszip/deps.js +0 -37
  1108. package/node_modules/jszip/graph.svg +0 -601
  1109. package/node_modules/zod/src/v4/core/config.ts +0 -15
@@ -26,6 +26,11 @@ deprecated native-configuration bridge retains the `FsSafePythonConfig` type.
26
26
 
27
27
  ## `path` and `advanced`
28
28
 
29
+ `safePathSegmentHashedV2` encodes every trimmed install ID with domain-separated
30
+ SHA-256 into a fixed lowercase segment. The legacy `safePathSegmentHashed` keeps
31
+ its existing output but can alias distinct IDs. See [install paths](install-path.md)
32
+ for the exact encoding and migration contract.
33
+
29
34
  The lexical path surface additionally exports `isNodeError`,
30
35
  `isPathRelativeEscape`, `normalizeWindowsPathForComparison`,
31
36
  `resolveSafeRelativePath`, `splitSafeRelativePath`, and
@@ -38,6 +43,42 @@ The advanced root-file primitive exports `OpenRootFileParams`,
38
43
  `RootFileOpenFailureReason`. These are composition types for callers building
39
44
  their own pinned-open flow, not substitutes for the higher-level `Root` verbs.
40
45
 
46
+ `copyFileHandle` and `CopyFileHandleOptions` transfer bytes between already-open
47
+ regular files without taking over their cursors, lifetime, or publication.
48
+ See [borrowed-handle transfers](copy.md#borrowed-filehandle-transfers).
49
+
50
+ `readDirectoryIdentity`, `assertDirectoryIdentitySync`, and `DirectoryIdentity`
51
+ provide exact directory observations without owning a descriptor or a mutation.
52
+ The assertion accepts an observed path and optional expected canonical path;
53
+ see [directory identity](directory-identity.md).
54
+
55
+ `overwriteFileHandle` and `OverwriteFileHandleOptions` provide in-place byte
56
+ replacement through a borrowed regular-file handle. Its once-only `beforeWrite`
57
+ callback admits the complete write and any required best-effort rollback after
58
+ prefix preparation. See [in-place writes](in-place-write.md).
59
+
60
+ `probePathCaseInsensitiveSync` and `ProbePathCaseOptions` are advanced exports
61
+ for local ASCII-case observations. An unavailable answer remains `undefined`;
62
+ the caller selects any fallback. See [path case probing](path-case.md).
63
+
64
+ `resolvePathPrefixSync` and `ResolvedPathPrefix` separate a canonical existing
65
+ path prefix from its raw unresolved suffix after physical symlink traversal.
66
+ See [resolving path prefixes](path-prefix.md).
67
+
68
+ `probePathSuffixAliasesSync` and `ProbePathSuffixAliasesOptions` compare selected
69
+ missing relative suffixes beneath an existing directory using bounded temporary
70
+ directory probes. The caller owns Unicode-pair policy, caching, and the fallback
71
+ for `undefined`. See [path suffix alias probing](path-suffix-aliases.md).
72
+
73
+ ## Guest source
74
+
75
+ `@openclaw/fs-safe/guest` exports `GUEST_FILESYSTEM_PYTHON`,
76
+ `GUEST_FILESYSTEM_CREATE_EXISTS_EXIT_CODE`,
77
+ `GUEST_FILESYSTEM_READ_NOT_FOUND_EXIT_CODE`, and
78
+ `GUEST_FILESYSTEM_RENAME_NO_REPLACE_PYTHON`. These are source and protocol
79
+ constants; the caller launches the Python guest and owns authorization and
80
+ transport lifetime. See the [guest protocol](guest.md).
81
+
41
82
  ## `json` and `store`
42
83
 
43
84
  Standalone structured reads use `ReadJsonOptions`, `ReadRootJsonSyncOptions`,
@@ -89,8 +130,10 @@ The durability surface also exports the synchronous strict
89
130
  `EnsureDurableDirectoryOptions`, `PublishFileExclusiveResult`,
90
131
  `PublishFileExclusiveStrategy`, `PublishFileExclusiveCleanup`,
91
132
  `PublishFileExclusiveFailurePhase`,
92
- `PublishFileExclusiveDirectorySyncFailure`, `Sha256FileInput`, and
93
- `Sha256FileResult`.
133
+ `PublishFileExclusiveDirectorySyncFailure`, `Sha256FileInput`,
134
+ `Sha256FileSyncInput`, `Sha256FileOptions`, and `Sha256FileResult`.
135
+ `sha256FileSync()` provides synchronous pathname or borrowed-descriptor hashing
136
+ with the same byte-budget and digest-result contracts as `sha256File()`.
94
137
 
95
138
  ## Archives
96
139
 
@@ -60,7 +60,7 @@ await fs.move("notes/today.txt", "notes/archive/today.txt", { overwrite: true })
60
60
  await fs.remove("notes/archive/today.txt");
61
61
  ```
62
62
 
63
- `move()` defaults to no clobber. Pass `{ overwrite: true }` when replacing the target is intentional. `remove()` works on files and empty directories. For non-empty directories, list and remove children first or use [`replaceDirectoryAtomic`](atomic.md#replacedirectoryatomic).
63
+ `move()` defaults to no clobber. That mode requires the native helper so a concurrent target cannot be replaced between an absence check and the rename; without it, the call fails with `helper-unavailable`. Pass `{ overwrite: true }` when replacing the target is intentional. `remove()` works on files and empty directories. For non-empty directories, list and remove children first or use [`replaceDirectoryAtomic`](atomic.md#replacedirectoryatomic).
64
64
 
65
65
  ## 5. Inspect
66
66
 
@@ -14,6 +14,12 @@ const opened = await fs.open("large.log"); // FileHandle for strea
14
14
 
15
15
  Identity and containment checks use brief synchronous metadata calls, like Node's module resolution, while file data is read asynchronously. Canonical paths retain Node's native realpath spelling, including expansion of Windows short paths.
16
16
 
17
+ The same observation rule applies to archive extraction, copy, publication, move,
18
+ directory modes, and supporting lock, queue, and secret-file operations. Opens,
19
+ data transfers, durability syncs, filesystem mutations, and closes retain their
20
+ existing asynchronous behavior. Custom filesystem adapters retain their async
21
+ metadata interface.
22
+
17
23
  Regardless of shape, every read goes through the same boundary checks:
18
24
 
19
25
  1. Resolve the input lexically against the canonical real root.
@@ -21,10 +27,17 @@ Regardless of shape, every read goes through the same boundary checks:
21
27
  3. Resolve path components and reject anything that escapes the root (`outside-workspace`).
22
28
  4. Reject `..` traversal and absolute spellings when they resolve outside the root. In-root absolute spellings remain accepted; `readAbsolute` makes that intent explicit.
23
29
  5. Open with `O_NOFOLLOW` where available. Any remaining symlink in the path triggers `symlink` unless the call's `symlinks` policy is `follow-within-root`.
24
- 6. Compare the pre-open path identity, the open fd, and the post-open resolved path (`sameFileIdentity`). A swap mid-call triggers `path-mismatch`.
30
+ 6. Compare the pre-open bigint path identity with the open fd, then perform one best-effort final admission: check the captured root identity, compare the policy-aware pathname with the fd, freshly canonicalize and re-admit that target inside the captured root, compare its exact bigint identity without following a final symlink with the fd, and check the root again. Both final pathname observations run even when their spellings match. An observed swap triggers `path-mismatch` or `outside-workspace`; a missing final path triggers `not-found`.
25
31
  7. If `hardlinks: "reject"`, refuse files with `nlink > 1` (`hardlink`).
26
32
  8. If `maxBytes` is set, refuse reads larger than the cap (`too-large`).
27
33
 
34
+ The final fence closes a rejected descriptor before any Root read consumes bytes or
35
+ `open()` hands the descriptor to its caller. It is a sequence of filesystem
36
+ observations, not an atomic kernel pathname/open primitive, so a hostile peer can
37
+ still race the namespace after the last observation. Standalone absolute-file
38
+ helpers have no captured `Root` identity and do not claim this replacement-root
39
+ fence; use a `Root` for untrusted paths.
40
+
28
41
  ## Read shapes
29
42
 
30
43
  ### `fs.read(rel, options?)`
@@ -18,7 +18,8 @@ const fs = await root("/srv/workspace", {
18
18
  function root(rootDir: string, defaults?: RootDefaults): Promise<Root>;
19
19
 
20
20
  type RootDefaults = {
21
- durable?: boolean; // fsync write/create/writeJson/createJson/append; default true
21
+ assertBeforeMutation?: () => void; // synchronous caller authority check at mutation dispatch
22
+ durable?: boolean; // fsync write/create/writeJson/createJson/append/copyIn; default true
22
23
  hardlinks?: "reject" | "allow"; // refuse files with nlink > 1 on read; defaults to "reject"
23
24
  denyMutations?: DenyMutationPolicy; // absolute paths/prefixes mutation methods may not change
24
25
  maxBytes?: number; // refuse reads larger than this many bytes; defaults to 16 MiB
@@ -26,7 +27,8 @@ type RootDefaults = {
26
27
  mode?: number; // file mode applied to new writes; per-call override available
27
28
  nonBlockingRead?: boolean; // compatibility hint; safe opens are already nonblocking where supported
28
29
  renameIdentity?: "strict" | "verify-content-with-lock"; // default "strict"
29
- symlinks?: "reject" | "follow-within-root"; // policy when a path component is a symlink
30
+ symlinks?: "reject" | "follow-within-root" | "follow-parents-within-root"; // read policy
31
+ mutationSymlinks?: "reject" | "follow-parents-within-root"; // opt-in mutation policy
30
32
  };
31
33
 
32
34
  type DenyMutationPolicy = {
@@ -37,7 +39,9 @@ type DenyMutationPolicy = {
37
39
 
38
40
  `root()` resolves the directory through the real filesystem. A symlinked input becomes the canonical path; a non-existent root throws `FsSafeError` with code `not-found`, and malformed or non-directory roots throw `invalid-path`.
39
41
 
40
- `defaults` apply to every method on the returned handle. Per-call options on individual methods override the defaults for that call only, except `denyMutations`: root and per-call deny entries are merged so a call cannot clear a root-level deny.
42
+ The root directory is pinned with exact bigint device/inode identities. A changed root rejects subsequent operations; an unknown Windows identity that remains unverifiable after bounded reinspection rejects construction with `path-mismatch`.
43
+
44
+ `defaults` apply to every method on the returned handle. Per-call options on individual methods override the defaults for that call only, except `denyMutations` and `assertBeforeMutation`: deny entries are merged, and the root assertion runs before the per-call assertion. A call cannot clear either root-level restriction.
41
45
 
42
46
  Every `maxBytes` value must be a non-negative safe integer or positive `Infinity`. Zero is an active zero-byte cap; `Infinity` explicitly disables the cap. An omitted or explicitly `undefined` per-call value preserves the configured Root default instead of clearing it.
43
47
 
@@ -60,7 +64,12 @@ fs.walk(rel, options) // root-bounded AsyncIterable<{ relativePath, kin
60
64
 
61
65
  `walk()` is the incremental, root-bounded recursive scan. It supports entry and
62
66
  depth budgets, cancellation, and `symlinkPolicy: "skip" |
63
- "follow-within-root"`. Budget exhaustion yields a `"truncated"` marker by
67
+ "follow-within-root"`. With an entry budget, sorted walks prepare small metadata
68
+ batches within the remaining budget; unbounded sorted walks reuse the full
69
+ directory snapshot.
70
+ The default `order: "sorted"` enumerates and sorts each directory's names;
71
+ `order: "filesystem"` streams names in filesystem order for bounded work in
72
+ wide directories. Budget exhaustion yields a `"truncated"` marker by
64
73
  default or throws `FsSafeError("too-large")` with `limitBehavior: "throw"`.
65
74
  Use `entryFilter(entry)` to return `"include"`, `"skip"`, or
66
75
  `"skip-subtree"`. `"skip"` omits the current entry but still descends into a
@@ -91,7 +100,9 @@ The read methods also accept an absolute spelling that already resolves inside
91
100
  the root. `readAbsolute()` and `reader()` make that intent explicit and accept
92
101
  both the configured root spelling and its canonical real path when the Root was
93
102
  created through a directory symlink or Windows junction. An absolute path
94
- outside the root is still rejected.
103
+ outside the root is still rejected. On Windows, alternate casing is accepted
104
+ only when the differently cased Root prefix has the Root's exact directory
105
+ identity; the operation then continues under the trusted Root spelling.
95
106
 
96
107
  ### Writes
97
108
 
@@ -103,15 +114,27 @@ fs.createJson(rel, value, options?) // create() variant of writeJson
103
114
  fs.append(rel, data, options?) // append text/buffer; syncs before close by default
104
115
  fs.copyIn(rel, sourceAbsPath, options?) // copy from outside the root, atomically, with size cap
105
116
  fs.openWritable(rel, options?) // FileHandle for streaming writes; supports await using
106
- fs.move(from, to, options?) // rename within the root; defaults to no clobber
107
- fs.remove(rel, options?) // unlink file or rmdir empty directory
117
+ fs.move(from, to, options?) // rename within the root; native-backed no clobber by default
118
+ fs.remove(rel, options?) // unlink file, rmdir, or bounded recursive removal
108
119
  fs.mkdir(rel, options?) // mkdir -p (creates missing parents)
109
120
  fs.ensureRoot(options?) // accepts "" / "." as the root itself
110
121
  ```
111
122
 
112
123
  `write`, `create`, `append`, `writeJson`, and `createJson` accept `mode?: number`; use `0o600` for credentials and other private state. `writeJson` also accepts the same options as `JSON.stringify` plus `trailingNewline?: boolean` (defaults `true` so the file ends in `\n`).
113
124
 
114
- These five methods also accept `durable?: boolean`: the per-call value overrides
125
+ `create` also accepts `AsyncIterable<Uint8Array>` with `RootCreateStreamOptions`:
126
+ the same path, authority, mode, and durability options, plus `maxBytes` and
127
+ `signal`, without `encoding` or `renameIdentity`. It consumes one chunk at a
128
+ time and publishes the completed file exclusively. The byte cap inherits an
129
+ explicit `Root.defaults.maxBytes`; without either cap, consumption is unlimited.
130
+ See [streamed creation](writing.md#streamed-creation) for cancellation,
131
+ cleanup, and filesystem requirements.
132
+
133
+ `append` accepts `prependNewlineIfNeeded: true` to separate text from existing
134
+ content when neither side supplies a newline. String data uses its `encoding`
135
+ for the newline check, including UTF-16LE; Buffer data uses a single LF byte.
136
+
137
+ These five methods and `copyIn` also accept `durable?: boolean`: the per-call value overrides
115
138
  `Root.defaults.durable`, which defaults to `true` when omitted. An explicitly
116
139
  `undefined` per-call value preserves the root default. `durable: false` keeps
117
140
  the existing publication behavior, modes, and identity checks but skips file
@@ -119,7 +142,76 @@ and parent-directory fsync calls. Use it only for reconstructible data: a crash
119
142
  may lose the write or leave the previous file. See [Writing](writing.md#write-options)
120
143
  for platform details.
121
144
 
122
- `copyIn` is a one-shot ingest from a trusted absolute source path: it streams the source through the boundary, atomically renames into the root, and respects `maxBytes`.
145
+ `copyIn` accepts a `RootCopySource`: a trusted absolute source path or a file
146
+ within another Root. The guarded form supplies `root` with only its `open` and
147
+ `stat` read capabilities, plus `relativePath`:
148
+
149
+ ```ts
150
+ const source = await root("/srv/templates");
151
+ const destination = await root("/srv/workspace");
152
+ await destination.copyIn("config/settings.json", {
153
+ root: source,
154
+ relativePath: "config/settings.json",
155
+ }, {
156
+ overwrite: false,
157
+ clone: "auto",
158
+ mode: 0o600,
159
+ signal: AbortSignal.timeout(30_000),
160
+ });
161
+ ```
162
+
163
+ The source Root applies its read policies, including confinement and symlink
164
+ handling. `sourceHardlinks` overrides its hardlink policy only when supplied;
165
+ otherwise the source Root default is retained. The admitted source
166
+ descriptor stays open through copying and source-identity verification; copying
167
+ does not consume its current file position. Both forms enforce `maxBytes` while
168
+ reading, including when a file grows after admission, and use bounded buffers.
169
+ Copies have independent file data; changing either file cannot change the other.
170
+ Set `preserveSourceMode: true` to select the mode from the admitted source
171
+ descriptor. An explicit numeric `mode`, including `Root.defaults.mode`, takes
172
+ precedence. By default, copying retains the existing destination-mode rules.
173
+ The operation verifies source identity, not a coherent snapshot of concurrent
174
+ in-place edits. Keep the source unchanged when snapshot consistency is required.
175
+
176
+ `overwrite` defaults to `true`, preserving the existing replacement behavior.
177
+ With `overwrite: false`, an existing destination produces `already-exists` and
178
+ is never altered. Copying prepares a private sibling file before publishing its
179
+ completed contents. Native mode uses no-replace rename. The guarded JavaScript
180
+ fallback links the completed stage and removes its temporary name in the same
181
+ JavaScript turn; the filesystem must support hardlinks. Other processes can
182
+ briefly observe both names. The source is never hardlinked to the destination.
183
+
184
+ `clone` chooses the file-data transfer strategy through `CopyCloneMode`, shared
185
+ with [`copyTree`](copy.md#api). File copies default to `"never"`; tree copies
186
+ default to `"auto"`:
187
+
188
+ | Value | Behavior |
189
+ | --- | --- |
190
+ | `never` | Copy regular file bytes using reads and writes, without explicit cloning or copy offload. |
191
+ | `auto` | Try native file cloning, then copy offload or ordinary byte copying when cloning is unavailable. |
192
+ | `always` | Require native cloning; fail when the binding or filesystem cannot provide it. |
193
+
194
+ Native file cloning supports APFS and supported Linux filesystems. Windows
195
+ currently uses byte copying for `never` and `auto`; `always` fails. Clone choice
196
+ does not change modes, durability, root confinement, or source and publication
197
+ identity checks. The shared strategy does not replace Root's guarded regular-file
198
+ contract with `copyTree`'s caller-owned immutable-tree and metadata contract.
199
+
200
+ An already aborted `signal` prevents I/O. Cancellation during copying waits for
201
+ admitted reads and native work to settle, then cleans only the owned unpublished
202
+ stage. The final authority check runs before publication. Once publication has
203
+ occurred, later cancellation or verification failure preserves the destination.
204
+ The synchronous optional `onDestinationPublished` callback receives a frozen
205
+ `RootCopyPublicationReceipt` containing `{ path, dev, ino }`, with exact bigint identity immediately after
206
+ publication, before later checks can fail. Callback errors also preserve the
207
+ published file. This receipt records an outcome; it does not authorize removing
208
+ a file that another actor may have edited. Application recovery and cooperative
209
+ locking remain caller-owned.
210
+
211
+ Existing `copyIn` callers must account for completed destinations retained after
212
+ a post-publication source-verification failure, even without the new options.
213
+ Recovery must inspect current destination state rather than assume a rejected
214
+ copy left no file.
123
215
 
124
216
  Root operations that choose a new destination reject a leading Windows
125
217
  drive-relative spelling such as `C:name` on every platform. This applies to
@@ -129,10 +221,83 @@ source)` can reject a legal POSIX basename such as `c:photo.png`; callers that
129
221
  derive portable destination names from host files must sanitize or map that
130
222
  basename first.
131
223
 
132
- `openWritable` opens a writable file with options `mode?: number` and `writeMode?: "replace" | "append" | "update"`. `replace` truncates existing files and is the default; `update` keeps existing contents. Use it for streaming output. Prefer `await using` for cleanup.
224
+ On Windows, every Root pathname admission also rejects NTFS alternate-data-stream
225
+ and directory-index aliases: relative names containing `:`, or absolute names
226
+ with a colon beyond the single rooted drive designator, fail with
227
+ `invalid-path` before filesystem access. This includes spellings such as
228
+ `file:stream`, `dir::$INDEX_ALLOCATION`, and `dir:$I30:$INDEX_ALLOCATION`.
229
+ Rooted drive, UNC, and extended-drive paths keep their existing handling, and
230
+ the separate device/network policies remain in force. Ordinary colon-bearing
231
+ names remain valid on POSIX where the operation's existing drive-relative rule
232
+ does not otherwise reject them.
233
+
234
+ `openWritable` opens a writable file with options `mode?: number` and `writeMode?: "replace" | "append" | "update"`. `replace` truncates existing files and is the default; `update` keeps existing contents. Before truncation or handle return, descriptor and pathname identities are compared with lossless bigint metadata; persistently unknown Windows identities fail closed. The returned `stat` remains an ordinary numeric Node `Stats` object. Use it for streaming output. Prefer `await using` for cleanup.
235
+
236
+ `remove` leaves non-empty directories unchanged unless `recursive: true` is
237
+ provided. Recursive removal defaults to streaming entries in filesystem order;
238
+ `order: "sorted"` processes each directory's children lexicographically. The
239
+ `maxEntries` (100,000 by default) and `maxDepth` (64 by default) budgets accept
240
+ explicit `Infinity` when the caller needs unlimited traversal. It never
241
+ follows discovered symlinks; an explicit `mutationSymlinks` policy rejects them,
242
+ while the omitted policy unlinks them. `force: true` ignores missing targets,
243
+ and `signal` stops further work after admitted I/O and resource cleanup settle.
244
+ Removal is not transactional: a budget, cancellation, policy, or identity
245
+ failure can leave a partially removed tree. See [removal](writing.md)
246
+ for the full counting and failure contract.
247
+
248
+ ### Live mutation authority
249
+
250
+ All mutation methods accept `assertBeforeMutation?: () => void`. Use it when a
251
+ lease, operation owner, or cancellation state can expire while filesystem
252
+ preparation is awaiting I/O:
253
+
254
+ ```ts
255
+ const controller = new AbortController();
256
+ await fs.write("config.json", "{}\n", {
257
+ assertBeforeMutation: () => controller.signal.throwIfAborted(),
258
+ });
259
+ ```
260
+
261
+ The callback runs synchronously after awaited preparation, immediately before
262
+ each Root-owned mutation is dispatched: parent creation, file creation and
263
+ content writes (including private staging and streamed chunks), publication,
264
+ truncation, append, move, and removal. Buffered writes use bounded chunks and
265
+ recheck before every partial-write submission; file removal submits a direct
266
+ unlink request. Native calls that perform multiple filesystem steps are one
267
+ dispatch. No asynchronous wait separates the check
268
+ from that dispatch. A thrown value rejects the operation unchanged; an async
269
+ or thenable-returning callback rejects with `TypeError` before that mutation.
270
+ Synchronous return values are ignored. Callbacks can run multiple times and
271
+ must inspect current authority each time.
272
+
273
+ Already dispatched I/O cannot be revoked. Identity-checked cleanup, final
274
+ permissions, and durability finish under the existing operation owner even
275
+ after authority expires. Sidecar lock acquisition, recovery, and release for
276
+ `renameIdentity: "verify-content-with-lock"` are lock bookkeeping outside this
277
+ callback; content mutations still recheck after the lock is acquired. An
278
+ operation may leave already-created parent directories when a later check
279
+ rejects. A no-op such as `ensureRoot()` on the existing root does not require a
280
+ callback invocation. This is a dispatch fence, not a filesystem transaction or
281
+ a replacement for root confinement.
282
+
283
+ If cleanup also fails or cannot prove ownership of an entry, the existing
284
+ structured cleanup error takes precedence and retains the authority refusal
285
+ as its cause.
286
+
287
+ For `openWritable()`, the callback covers the library's parent creation,
288
+ exclusive creation, and truncation. The returned raw `FileHandle` belongs to
289
+ the caller, which must check authority before its own later writes.
133
290
 
134
291
  All mutation methods accept `denyMutations?: { paths?: string[]; prefixes?: string[] }`. Entries must be absolute paths. `paths` blocks those exact paths; `prefixes` blocks those paths and their descendants. fs-safe preserves path strings exactly and canonicalizes through existing ancestors before comparing, so a symlinked ancestor to a denied location is still denied. Denied mutations throw `FsSafeError` with code `denied-path`. Use this for caller-specific sensitive paths, not as a replacement for the root boundary, symlink, or hardlink checks.
135
292
 
293
+ All mutation methods also accept `mutationSymlinks`. `"reject"` rejects symlink
294
+ components; `"follow-parents-within-root"` resolves contained parent directory
295
+ aliases but rejects the final component if it is a symlink, including a dangling
296
+ link. Missing parent directories can still be created through a contained alias.
297
+ `move()` applies the policy to both source and destination. An omitted value
298
+ preserves existing behavior, including `remove()` unlinking a final symlink.
299
+ The read-only `symlinks` default does not change mutation behavior.
300
+
136
301
  ### Inspection (advisory)
137
302
 
138
303
  ```ts
@@ -140,14 +305,27 @@ fs.exists(rel) // boolean
140
305
  fs.stat(rel) // PathStat
141
306
  fs.list(rel) // string[]
142
307
  fs.list(rel, { withFileTypes }) // DirEntry[]
308
+ fs.entries(rel, options?) // nonrecursive AsyncIterable<DirEntry>, including symlinks
143
309
  fs.resolve(rel) // absolute path inside the root, after canonicalization
144
310
  ```
145
311
 
146
- These do not pin a later operation. They are safe to expose to UIs and decision points; for the actual read or write, use the verb methods so the operation pins identity at the point of use.
312
+ These do not pin a later operation. During `stat()`, the exact selected target and
313
+ parent are checked around metadata collection; `list()` checks one exact selected
314
+ directory around the complete name/metadata batch instead of repeating containment
315
+ work for every child. A detectable redirection rejects with `path-mismatch` rather
316
+ than returning names or metadata from the replacement. Results remain advisory
317
+ after the call returns, so use the verb methods for the actual read or write.
318
+
319
+ `entries()` streams immediate children in filesystem order by default. It
320
+ supports cancellation, a physical-entry limit that throws on overflow, and
321
+ bounded sorted-name collection. It reports child symlinks without following
322
+ them; its `symlinks` option applies only to the selected directory path.
323
+ See [Directory entries](entries.md) for ordering, identity, and partial-result
324
+ semantics.
147
325
 
148
326
  `resolve()` is the exception to the existing-object rule: because it selects a
149
327
  location for later use, it rejects a leading drive-relative spelling. Reads,
150
- `stat`, `exists`, `list`, `walk`, `remove`, and the source argument of `move`
328
+ `stat`, `exists`, `list`, `entries`, `walk`, `remove`, and the source argument of `move`
151
329
  accept an existing POSIX filename such as `c:notes.txt`. For `move`, only the
152
330
  new destination name is subject to the portable guard.
153
331
 
@@ -218,6 +396,35 @@ await fs.readText("config.toml");
218
396
  await fs.readText("links/current.log", { symlinks: "follow-within-root" });
219
397
  ```
220
398
 
399
+ With `follow-within-root`, parent components after a symlink are applied to the
400
+ symlink's resolved target. Reads use that checked canonical path, including
401
+ after home expansion and through `readAbsolute` and `reader`; the default policy still rejects a symlink
402
+ even when a later `..` would hide it in a purely lexical normalization.
403
+
404
+ Use `follow-parents-within-root` when directory aliases are allowed but a final
405
+ file symlink should fail. Set each policy at the root to share that contract
406
+ between reads and mutations:
407
+
408
+ ```ts
409
+ const workspace = await root("/srv/workspace", {
410
+ symlinks: "follow-parents-within-root",
411
+ mutationSymlinks: "follow-parents-within-root",
412
+ });
413
+ await workspace.readText("directory-alias/notes.txt");
414
+ await workspace.write("directory-alias/notes.txt", "updated\n");
415
+ ```
416
+
417
+ The library uses the resolved parent for the operation and checks the final
418
+ component again before publication or removal. These checks preserve the existing
419
+ [platform containment guarantees](security-model.md#symlinks-write-side);
420
+ they do not make check-and-rename atomic against another process. Callers do not
421
+ need a separate `realpath()` or final `lstat()` preflight.
422
+
423
+ For methods that accept absolute paths, the same final-component rule applies
424
+ when a path enters the root through an alias outside its lexical spelling. A directory alias may
425
+ lead to a regular file inside the root; an absolute final file or directory
426
+ symlink is rejected before its canonical target replaces the original path.
427
+
221
428
  Text helpers default to UTF-8. Pass `encoding` per call to `readText`, `readJson`, `write`, `create`, or `append` when you need another encoding.
222
429
 
223
430
  ## Common patterns
@@ -81,6 +81,9 @@ itself must not be an alias. Hardlinks are rejected by default so another
81
81
  in-tree name cannot alias the credential; pass `rejectHardlinks: false` only
82
82
  when you explicitly trust that layout.
83
83
 
84
+ Read options are captured when the call starts. Mutating a shared options
85
+ object while an asynchronous read is in flight cannot relax its link policy.
86
+
84
87
  These readers do not enforce ownership or mode bits on an existing file. Their
85
88
  read contract covers pinned identity, file type, link policy, and byte bounds;
86
89
  the `0o600` guarantee belongs to the write helpers below. Use
@@ -172,9 +175,15 @@ type WriteSecretFileParams = {
172
175
  content: string | Uint8Array;
173
176
  mode?: number; // file mode for the new file (default PRIVATE_SECRET_FILE_MODE = 0o600)
174
177
  dirMode?: number; // mode for the root and intermediate dirs (default PRIVATE_SECRET_DIR_MODE = 0o700)
178
+ durable?: boolean; // default true; false skips file and parent fsync
175
179
  };
176
180
  ```
177
181
 
182
+ `durable: false` preserves atomic publication, modes, and identity checks while
183
+ skipping file and parent-directory `fsync` calls. Use it only for reconstructible
184
+ data where lower latency matters more than crash-durability; private and JSON
185
+ stores forward their durability policy here.
186
+
178
187
  The full POSIX directory mode is asserted on each component along the path: `rootDir`, then any intermediate dirs, then the parent. Existing directories, including another creator's `EEXIST` winner, must already match `dirMode` exactly or the write fails with `insecure-permissions`; they are never chmod-repaired. An explicitly requested directory mode such as `0o2750` preserves its setgid bit. Audit and adjust existing secret directories yourself. The admitted directory guards are retained through traversal and the final writer/lock handoff; a fresh pathname lookup cannot silently authorize a replacement. The caller must still trust the selected root and its owners; matching permission bits alone do not establish that trust.
179
188
 
180
189
  Directory admission and its retained guards use lossless bigint identities, including through private locks and native writes. On Windows, an unknown zero device or inode gets one reinspection that retains known components; a definite mismatch or persistent ambiguity fails with `path-mismatch` rather than authorizing a replacement.
@@ -21,14 +21,17 @@ The helper:
21
21
  - rejects every non-regular preview and, by default, symlink paths
22
22
  - opens POSIX paths no-follow and nonblocking before reading, then verifies the opened fd still matches the path and realpath; a FIFO swap cannot block before `timeoutMs` owns the byte read
23
23
  - optionally requires the real path to live under one of `trust.trustedDirs`
24
+ - rejects hardlink aliases using descriptor, pathname, and realpath link counts, then rechecks the descriptor after reading before returning bytes
24
25
  - rejects hard-to-verify or unsafe permissions unless `permissions.allowInsecure` is set
25
26
  - rejects files owned by another POSIX uid
26
27
  - enforces `maxBytes` before and after reading
27
28
  - closes the handle on success, error, and timeout
28
29
 
29
- On POSIX, unsafe permissions mean group/world writable, and group/world readable unless `permissions.allowReadableByOthers` is true. On Windows, the helper uses the ACL inspection helpers from [`permissions`](permissions.md) and refuses the read if ACLs cannot be verified.
30
+ On POSIX, unsafe permissions mean group/world writable, and group/world readable unless `permissions.allowReadableByOthers` is true. On Windows, the helper queries owner, DACL, and locality from the same open descriptor that supplies the bytes. The native query returns the 32-bit volume serial and 64-bit file-index projection used by Node, which must equal Node's bigint descriptor receipt before its ACL facts are trusted. This avoids JavaScript number rounding but does not represent the full 128-bit file identity available on ReFS. Only the current user, LocalSystem, and built-in Administrators are trusted owner classes.
30
31
 
31
- Descriptor, pathname, and realpath identity checks use lossless bigint stats internally. The returned `stat` remains a normal Node `Stats` object with numeric fields. A zero Windows device or inode is unverified, never a match: the helper re-inspects that identity once using the same descriptor or pathname, then rejects persistent ambiguity with `path-mismatch`. A definite mismatch rejects immediately; retries retain known identity components and still enforce symlink policy.
32
+ Windows secure reads require the matching current optional native package. A missing or stale helper, fd-to-handle conversion failure, denied `READ_CONTROL`, remote handle, incomplete descriptor, or unsupported ACE form rejects with `permission-unverified` before content is read. A malformed or different handle identity rejects with `path-mismatch`. There is no pathname-command fallback for `readSecureFile()`; the standalone reporting APIs in [`permissions`](permissions.md) retain their documented fallbacks. `permissions.allowInsecure` remains the explicit escape hatch and bypasses the ACL query.
33
+
34
+ Descriptor, pathname, and realpath identity checks use bigint stats internally to avoid JavaScript number rounding. The returned `stat` remains a normal Node `Stats` object with numeric fields. A zero Windows device or inode is unverified, never a match: the helper re-inspects that identity once using the same descriptor or pathname, then rejects persistent ambiguity with `path-mismatch`. A definite mismatch rejects immediately; retries retain known identity components and still enforce symlink policy.
32
35
 
33
36
  ## Options
34
37
 
@@ -59,8 +62,14 @@ type SecureFileReadOptions = {
59
62
 
60
63
  `io.maxBytes` must be a non-negative safe integer or positive `Infinity`; zero is an active cap and `Infinity` disables the cap. Invalid limits reject before filesystem admission.
61
64
 
65
+ The helper synchronously snapshots the supplied options, including nested permission and I/O settings, the injection callback, and supplied injection environment values, before opening the file or reaching its first `await`. Mutating those objects after this snapshot does not change that read's policy. This is not an atomic snapshot at invocation entry: caller getters run during snapshot construction and can affect values or working directories that have not yet been captured. `trust.trustedDirs` must be an array with a valid length and an own string entry without null bytes at every index; malformed lengths or entries, including sparse entries filled by inherited properties, reject with `invalid-path` before filesystem admission. An omitted or empty array leaves the read unrestricted by directory.
66
+
67
+ Relative trusted directories (including an empty string) are resolved to absolute lexical paths during this synchronous snapshot using Node's `path.resolve()` semantics. Windows drive-relative entries retain their per-drive current-directory semantics, and extended-length drive roots retain their root separator. Raw alternate-stream and filesystem-namespace aliases reject before normalization. Working-directory changes after the snapshot cannot redirect this allowlist. The existing realpath check still follows trusted-directory symlinks when it runs and falls back to the captured lexical path if realpath lookup fails; the allowlist does not pin directory identities.
68
+
62
69
  `permissions.allowInsecure` is a migration escape hatch. Prefer fixing permissions and using [`formatPermissionRemediation`](permissions.md) to show the user what to run. `trust.allowNetworkPath` is off by default because UNC paths are remote authority, not local filesystem input. `inject` is for tests and platform adapters; production callers usually leave it unset.
63
70
 
71
+ On an actual Windows process with effective `platform: "win32"`, `inject.env` and `inject.exec` do not replace descriptor inspection. They remain available to simulated Windows checks on non-Windows hosts.
72
+
64
73
  `permissions.allowInsecure` bypasses only permission checks. Neither it nor `inject.platform` changes filesystem identity verification, which always uses the actual process platform. `trust.allowSymlink` permits an alias but still requires its target and realpath to match the opened descriptor.
65
74
 
66
75
  ## Errors
@@ -69,29 +78,27 @@ type SecureFileReadOptions = {
69
78
 
70
79
  | Code | Meaning |
71
80
  |---|---|
72
- | `invalid-path` | `filePath` was not a local absolute path. |
81
+ | `invalid-path` | `filePath` was not a local absolute path, `trust.trustedDirs` contained malformed paths, or a Windows file path/trusted directory used an alternate-stream or filesystem-namespace alias. |
73
82
  | `not-found` | The path could not be stat'd before open. |
74
83
  | `not-file` | The opened target is not a regular file. |
75
84
  | `symlink` | The path is a symlink and `trust.allowSymlink` is false. |
85
+ | `hardlink` | The descriptor, pathname, or realpath has more than one link. |
76
86
  | `path-mismatch` | The path or realpath changed between open and verification, or filesystem identity could not be verified after bounded re-inspection. |
77
87
  | `outside-workspace` | `realPath` is outside `trust.trustedDirs`. |
78
- | `permission-unverified` | Required mode/ACL checks could not be completed. |
88
+ | `permission-unverified` | Required mode/ACL checks could not be completed, including when descriptor-bound Windows inspection is unavailable. |
79
89
  | `insecure-permissions` | Mode bits or ACLs grant broader access than allowed. |
80
- | `not-owned` | POSIX owner uid is not the current process uid. |
90
+ | `not-owned` | POSIX owner uid is not the process's effective uid. |
81
91
  | `too-large` | File size or bytes read exceeded `maxBytes`. |
82
92
  | `timeout` | `timeoutMs` elapsed while reading. |
83
93
 
84
- Windows inspection failures remain operational `permission-unverified` errors
85
- and still refuse the read. Their message includes the underlying reason when
86
- available. `details` includes `ownerError` for owner-query failures and, when
87
- command diagnostics are available, `command`, `durationMs`, `timedOut`,
88
- `exitCode`, `signal`, and `stderr`. Reasons and stderr are control-character
89
- escaped and limited to 400 characters each (including a truncation marker).
90
- No stdout or target file contents are copied into these display diagnostics.
91
- The original inspection exception is retained as `cause`; built-in command
92
- errors also retain their original execFile exception in the cause chain.
93
- Treat causes as restricted local diagnostic data. No retries are performed,
94
- and verification order and rejection conditions are unchanged.
94
+ Windows descriptor-inspection failures are operational `permission-unverified`
95
+ errors and refuse the read. The original native exception is retained as
96
+ `cause`; treat causes as restricted local diagnostic data. No pathname or ACL
97
+ content is copied into the display message. Test adapters that simulate Windows
98
+ on another operating system retain the standalone pathname inspector's
99
+ structured command diagnostics (`ownerError`, `command`, `durationMs`,
100
+ `timedOut`, `exitCode`, `signal`, and bounded escaped `stderr`). Actual Windows
101
+ secure reads do not start those commands. No retries are performed.
95
102
 
96
103
  ## See also
97
104