@openclaw/openshell-sandbox 2026.9.4 → 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 -1
  1103. package/package.json +10 -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
@@ -1,22 +1,27 @@
1
1
  import { classifyArchiveParserError } from "./archive-parser-errors.js";
2
+ import fsSync from "node:fs";
2
3
  import fs from "node:fs/promises";
3
- import { Readable } from "node:stream";
4
- import { readFileHandleBounded } from "./bounded-read.js";
4
+ import { Readable, Writable } from "node:stream";
5
+ import { pipeline } from "node:stream/promises";
6
+ import { readBoundedAsync } from "./bounded-read.js";
5
7
  import { ArchiveFormatError, ArchiveSecurityError, isArchiveFormatErrorMessage, } from "./archive-errors.js";
6
8
  import { formatErrorDetail } from "./error-detail.js";
7
9
  import { stripArchivePath, validateArchiveEntryPath, } from "./archive-entry.js";
8
10
  import { assertPortableArchiveKind, resolveArchiveKind } from "./archive-kind.js";
9
11
  import { DEFAULT_MAX_ARCHIVE_BYTES_ZIP, ArchiveLimitError, ARCHIVE_LIMIT_ERROR_CODE, } from "./archive-limits.js";
12
+ import { isGzipBuffer } from "./archive-gzip-tail.js";
10
13
  import { inspectTar, replayTar } from "./archive-tar-stream.js";
11
- import { loadZipArchiveWithPreflight } from "./archive-zip-preflight.js";
14
+ import { loadAdmittedZipArchive } from "./archive-zip-loader.js";
12
15
  import { createZipIntegrityTransform, normalizeZipIntegrityError, } from "./archive-zip-integrity.js";
13
16
  import { FsSafeError } from "./errors.js";
14
17
  import { inspectFileIdentity } from "./strict-file-identity.js";
15
18
  import { resolveReadOpenFlags } from "./read-open-flags.js";
19
+ import { realpathSync } from "./realpath.js";
16
20
  import { getNativeBinding } from "./native.js";
17
21
  import { admitZipBuffer } from "./archive-zip-admission.js";
22
+ import { validateNativeZipManifest } from "./archive-zip-manifest.js";
18
23
  import { resolveExtractLimits, resolveTarMeterLimits } from "./archive-limits.js";
19
- import { tempFile } from "./temp-target.js";
24
+ import { assertNoWindowsPathAlias } from "./windows-path-alias.js";
20
25
  const ZIP_UNIX_FILE_TYPE_MASK = 0o170000;
21
26
  const ZIP_UNIX_SYMLINK_TYPE = 0o120000;
22
27
  function canonicalEntryPath(entryPath) {
@@ -30,69 +35,55 @@ function normalizedRequestedEntry(entryPath) {
30
35
  }
31
36
  return normalized;
32
37
  }
33
- async function readStreamBounded(stream, maxBytes) {
34
- if (!(Symbol.asyncIterator in Object(stream))) {
35
- return await new Promise((resolve, reject) => {
36
- const readable = stream;
37
- const chunks = [];
38
- let total = 0;
39
- readable.on("data", (chunk) => {
40
- const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
41
- total += buffer.length;
42
- if (total > maxBytes) {
43
- readable.pause();
44
- reject(new ArchiveLimitError(ARCHIVE_LIMIT_ERROR_CODE.ENTRY_EXTRACTED_SIZE_EXCEEDS_LIMIT));
45
- return;
46
- }
47
- chunks.push(buffer);
48
- });
49
- readable.once("end", () => resolve(Buffer.concat(chunks, total)));
50
- readable.once("error", reject);
51
- });
52
- }
53
- const chunks = [];
38
+ async function readAdmittedTarPayload(stream, size) {
39
+ // Complete admission has bounded this exact range. Copy as it arrives so
40
+ // decoder chunks can be released before the caller receives the owned result.
41
+ const result = Buffer.allocUnsafe(size);
54
42
  let total = 0;
55
43
  for await (const chunk of stream) {
56
- const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
57
- total += buffer.length;
58
- if (total > maxBytes) {
59
- throw new ArchiveLimitError(ARCHIVE_LIMIT_ERROR_CODE.ENTRY_EXTRACTED_SIZE_EXCEEDS_LIMIT);
44
+ if (chunk.length > size - total) {
45
+ throw new ArchiveFormatError("invalid admitted TAR payload size");
60
46
  }
61
- chunks.push(buffer);
47
+ chunk.copy(result, total);
48
+ total += chunk.length;
62
49
  }
63
- return Buffer.concat(chunks, total);
50
+ if (total !== size)
51
+ throw new ArchiveFormatError("truncated admitted TAR range");
52
+ return result;
64
53
  }
65
- async function stageArchiveInput(archivePath) {
66
- const resolved = await fs.realpath(archivePath);
54
+ async function readArchiveInput(archivePath) {
55
+ assertNoWindowsPathAlias(archivePath);
56
+ const resolved = realpathSync.native(archivePath);
57
+ assertNoWindowsPathAlias(resolved);
67
58
  const before = await inspectFileIdentity(async () => {
68
- const stat = await fs.lstat(archivePath, { bigint: true });
59
+ const stat = fsSync.lstatSync(archivePath, { bigint: true });
69
60
  if (stat.isSymbolicLink() || !stat.isFile()) {
70
61
  throw new Error(`archive is not a regular file: ${archivePath}`);
71
62
  }
72
63
  return stat;
73
64
  });
74
65
  const handle = await fs.open(resolved, resolveReadOpenFlags());
75
- let staged;
76
66
  try {
77
- staged = await tempFile({ prefix: "fs-safe-archive-read", fileName: "archive.bin" });
78
67
  const opened = await inspectFileIdentity(async () => {
79
- const stat = await handle.stat({ bigint: true });
68
+ const stat = fsSync.fstatSync(handle.fd, { bigint: true });
80
69
  if (!stat.isFile())
81
70
  throw new Error("archive changed during validation");
82
71
  return stat;
83
72
  }, before);
84
73
  await inspectFileIdentity(async () => {
85
- const stat = await fs.lstat(resolved, { bigint: true });
74
+ const stat = fsSync.lstatSync(resolved, { bigint: true });
86
75
  if (stat.isSymbolicLink() || !stat.isFile())
87
76
  throw new Error("archive changed during validation");
88
77
  return stat;
89
78
  }, opened);
90
- const buffer = await readFileHandleBounded(handle, DEFAULT_MAX_ARCHIVE_BYTES_ZIP);
91
- await fs.writeFile(staged.path, buffer, { flag: "wx", mode: 0o600 });
92
- return { path: staged.path, buffer, cleanup: staged.cleanup };
79
+ // Native archive workers borrow this private buffer. A pooled allocation could
80
+ // share its ArrayBuffer with unrelated JS buffers while the worker runs.
81
+ return await readBoundedAsync(DEFAULT_MAX_ARCHIVE_BYTES_ZIP, async (buffer, length) => (await handle.read(buffer, 0, length, null)).bytesRead, { unpooled: true, observeRegularFileSize: () => {
82
+ const size = fsSync.fstatSync(handle.fd).size;
83
+ return Number.isSafeInteger(size) && size >= 0 ? size : undefined;
84
+ } });
93
85
  }
94
86
  catch (error) {
95
- await staged?.cleanup().catch(() => undefined);
96
87
  if (error instanceof FsSafeError && error.code === "path-mismatch") {
97
88
  throw new FsSafeError("path-mismatch", "archive changed during validation", { cause: error });
98
89
  }
@@ -102,12 +93,8 @@ async function stageArchiveInput(archivePath) {
102
93
  await handle.close().catch(() => undefined);
103
94
  }
104
95
  }
105
- async function readZipEntry(buffer, entryPath, maxBytes) {
106
- const archive = await loadZipArchiveWithPreflight(buffer, {
107
- maxArchiveBytes: DEFAULT_MAX_ARCHIVE_BYTES_ZIP,
108
- maxEntryBytes: maxBytes,
109
- maxExtractedBytes: maxBytes,
110
- });
96
+ async function readZipEntry(buffer, entryPath, maxBytes, admitted) {
97
+ const archive = await loadAdmittedZipArchive(buffer, admitted);
111
98
  let entry;
112
99
  // JSZip keys retain some aliases and may use Unicode Path metadata. Scan the
113
100
  // effective entries once, after raw ZIP admission has rejected collisions.
@@ -126,18 +113,37 @@ async function readZipEntry(buffer, entryPath, maxBytes) {
126
113
  (entry.unixPermissions & ZIP_UNIX_FILE_TYPE_MASK) === ZIP_UNIX_SYMLINK_TYPE) {
127
114
  throw new Error(`archive entry is a link: ${formatErrorDetail(entryPath)}`);
128
115
  }
116
+ const integrity = createZipIntegrityTransform(entry);
129
117
  const stream = typeof entry.nodeStream === "function"
130
118
  ? entry.nodeStream()
131
119
  : Readable.from(await entry.async("nodebuffer"));
132
- const integrity = createZipIntegrityTransform(entry);
133
- stream.once("error", (error) => integrity.destroy(normalizeZipIntegrityError(error)));
134
- return await readStreamBounded(stream.pipe(integrity), maxBytes);
120
+ const chunks = [];
121
+ let total = 0;
122
+ const destination = new Writable({
123
+ write(chunk, _encoding, callback) {
124
+ total += chunk.length;
125
+ if (total > maxBytes) {
126
+ callback(new ArchiveLimitError(ARCHIVE_LIMIT_ERROR_CODE.ENTRY_EXTRACTED_SIZE_EXCEEDS_LIMIT));
127
+ return;
128
+ }
129
+ chunks.push(chunk);
130
+ callback();
131
+ },
132
+ });
133
+ try {
134
+ // Iterator teardown can mask limit errors on Node 22; keep them in stream callbacks.
135
+ await pipeline(stream, integrity, destination);
136
+ return Buffer.concat(chunks, total);
137
+ }
138
+ catch (error) {
139
+ throw normalizeZipIntegrityError(error);
140
+ }
135
141
  }
136
- async function readTarEntry(archivePath, entryPath, maxBytes) {
142
+ async function readTarEntry(archiveBuffer, entryPath, maxBytes) {
137
143
  const seenPaths = new Set();
138
144
  let selected;
139
145
  const limits = resolveTarMeterLimits();
140
- await inspectTar({ archivePath, limits, onMember(info) {
146
+ await inspectTar({ archiveBuffer, limits, onMember(info) {
141
147
  const normalized = canonicalEntryPath(info.path);
142
148
  if (seenPaths.has(normalized)) {
143
149
  throw new ArchiveSecurityError("entry-path", `archive contains duplicate entry path: ${formatErrorDetail(normalized)}`);
@@ -153,12 +159,68 @@ async function readTarEntry(archivePath, entryPath, maxBytes) {
153
159
  }
154
160
  if (selected.size > maxBytes)
155
161
  throw new ArchiveLimitError(ARCHIVE_LIMIT_ERROR_CODE.ENTRY_EXTRACTED_SIZE_EXCEEDS_LIMIT);
162
+ if (!isGzipBuffer(archiveBuffer)) {
163
+ // Complete admission already validated this private snapshot through EOF.
164
+ // Copy the admitted payload so the result cannot expose or mutate its input.
165
+ const end = selected.offset + selected.size;
166
+ if (!Number.isSafeInteger(selected.offset) || selected.offset < 0 ||
167
+ !Number.isSafeInteger(end) || end < selected.offset || end > archiveBuffer.length) {
168
+ throw new ArchiveFormatError("invalid admitted TAR range");
169
+ }
170
+ return Buffer.from(archiveBuffer.subarray(selected.offset, end));
171
+ }
156
172
  let result;
157
- await replayTar({ archivePath, limits, members: [selected], async consume(_member, payload) {
158
- result = await readStreamBounded(payload, maxBytes);
173
+ await replayTar({ archiveBuffer, limits, members: [selected], async consume(member, payload) {
174
+ result = await readAdmittedTarPayload(payload, member.size);
159
175
  } });
160
176
  return result;
161
177
  }
178
+ function selectNativeEntry(manifest, requested, displayPath) {
179
+ const seen = new Set();
180
+ let selected;
181
+ for (const entry of manifest) {
182
+ const normalized = canonicalEntryPath(entry.path);
183
+ if (seen.has(normalized)) {
184
+ throw new ArchiveSecurityError("entry-path", `archive contains duplicate entry path: ${formatErrorDetail(normalized)}`);
185
+ }
186
+ seen.add(normalized);
187
+ if (normalized === requested) {
188
+ if (entry.kind !== "file")
189
+ throw new Error(`archive entry is not a file: ${formatErrorDetail(displayPath)}`);
190
+ selected = entry;
191
+ }
192
+ }
193
+ if (!selected)
194
+ throw new Error(`archive entry not found: ${formatErrorDetail(displayPath)}`);
195
+ return selected;
196
+ }
197
+ function throwNativeReadError(error) {
198
+ if (error instanceof Error) {
199
+ const mapped = classifyArchiveParserError(error.message, { cause: error });
200
+ if (mapped)
201
+ throw mapped;
202
+ if (isArchiveFormatErrorMessage(error.message))
203
+ throw new ArchiveFormatError(error.message, { cause: error });
204
+ }
205
+ throw error;
206
+ }
207
+ async function readNativeBufferEntry(native, buffer, kind, requested, displayPath, maxBytes, zipEntries) {
208
+ try {
209
+ const signal = new AbortController().signal;
210
+ const limits = resolveTarMeterLimits();
211
+ const reader = kind === "zip"
212
+ ? await native.openZipBufferNative(buffer, limits, AbortSignal.any([signal]))
213
+ : await native.openTarBufferNative(buffer, kind, limits, AbortSignal.any([signal]));
214
+ const manifest = reader.entries;
215
+ if (kind === "zip")
216
+ validateNativeZipManifest(manifest, zipEntries);
217
+ const selected = selectNativeEntry(manifest, requested, displayPath);
218
+ return await reader.readEntry(selected.index, maxBytes, AbortSignal.any([signal]));
219
+ }
220
+ catch (error) {
221
+ throwNativeReadError(error);
222
+ }
223
+ }
162
224
  export async function readArchiveEntry(archivePath, entryPath, options) {
163
225
  if (!Number.isSafeInteger(options.maxBytes) || options.maxBytes < 0) {
164
226
  throw new RangeError("maxBytes must be a non-negative safe integer");
@@ -168,58 +230,15 @@ export async function readArchiveEntry(archivePath, entryPath, options) {
168
230
  throw new Error(`unsupported archive: ${archivePath}`);
169
231
  }
170
232
  const requestedEntry = normalizedRequestedEntry(entryPath);
171
- const staged = await stageArchiveInput(archivePath);
172
- try {
173
- const physicalCount = kind === "zip"
174
- ? admitZipBuffer(staged.buffer, resolveExtractLimits())
175
- : undefined;
176
- const native = getNativeBinding();
177
- if (native) {
178
- try {
179
- const signal = new AbortController().signal;
180
- const limits = resolveTarMeterLimits();
181
- const manifest = await native.inspectArchiveNative(staged.path, kind, limits, signal);
182
- let rawEntryPath;
183
- if (physicalCount !== undefined && manifest.length !== physicalCount) {
184
- throw new ArchiveSecurityError("entry-path", "zip decoder collapsed entry names");
185
- }
186
- const seenPaths = new Set();
187
- for (const entry of manifest) {
188
- const normalized = canonicalEntryPath(entry.path);
189
- if (seenPaths.has(normalized)) {
190
- throw new ArchiveSecurityError("entry-path", `archive contains duplicate entry path: ${formatErrorDetail(normalized)}`);
191
- }
192
- seenPaths.add(normalized);
193
- if (normalized === requestedEntry) {
194
- if (entry.kind !== "file") {
195
- throw new Error(`archive entry is not a file: ${formatErrorDetail(entryPath)}`);
196
- }
197
- rawEntryPath = entry.path;
198
- }
199
- }
200
- if (!rawEntryPath) {
201
- throw new Error(`archive entry not found: ${formatErrorDetail(entryPath)}`);
202
- }
203
- return await native.readArchiveEntryNative(staged.path, kind, rawEntryPath, options.maxBytes, limits, signal);
204
- }
205
- catch (error) {
206
- if (error instanceof Error) {
207
- const mapped = classifyArchiveParserError(error.message, { cause: error });
208
- if (mapped)
209
- throw mapped;
210
- }
211
- if (error instanceof Error && isArchiveFormatErrorMessage(error.message)) {
212
- throw new ArchiveFormatError(error.message, { cause: error });
213
- }
214
- throw error;
215
- }
216
- }
217
- assertPortableArchiveKind(kind);
218
- return kind === "zip"
219
- ? await readZipEntry(staged.buffer, requestedEntry, options.maxBytes)
220
- : await readTarEntry(staged.path, requestedEntry, options.maxBytes);
221
- }
222
- finally {
223
- await staged.cleanup();
224
- }
233
+ assertNoWindowsPathAlias(archivePath, "filesystem", "archive source uses a Windows filesystem namespace alias");
234
+ const buffer = await readArchiveInput(archivePath);
235
+ const zipEntries = [];
236
+ if (kind === "zip")
237
+ admitZipBuffer(buffer, resolveExtractLimits(), entry => { zipEntries.push(entry); });
238
+ const native = getNativeBinding();
239
+ if (native)
240
+ return await readNativeBufferEntry(native, buffer, kind, requestedEntry, entryPath, options.maxBytes, zipEntries);
241
+ assertPortableArchiveKind(kind);
242
+ return kind === "zip" ? await readZipEntry(buffer, requestedEntry, options.maxBytes, zipEntries)
243
+ : await readTarEntry(buffer, requestedEntry, options.maxBytes);
225
244
  }
@@ -1,9 +1,12 @@
1
+ import { type BigIntStats } from "node:fs";
1
2
  import { type AsyncDirectoryGuard } from "./directory-guard.js";
2
3
  import { type ExtractionDeadline } from "./archive-deadline.js";
3
4
  import { ArchiveSecurityError } from "./archive-errors.js";
5
+ export type ArchiveDirectoryGuard = AsyncDirectoryGuard<BigIntStats>;
4
6
  export { ArchiveSecurityError, type ArchiveSecurityErrorCode } from "./archive-errors.js";
5
- export declare function createDirectoryIdentityGuard(dir: string): Promise<AsyncDirectoryGuard>;
6
- export declare function assertDirectoryIdentityGuard(guard: AsyncDirectoryGuard): Promise<void>;
7
+ export declare function createDirectoryIdentityGuard(dir: string): Promise<ArchiveDirectoryGuard>;
8
+ export declare function assertDirectoryIdentityGuard(guard: ArchiveDirectoryGuard): Promise<void>;
9
+ export declare function prepareArchiveDestinationGuard(destDir: string): Promise<ArchiveDirectoryGuard>;
7
10
  export declare function prepareArchiveDestinationDir(destDir: string): Promise<string>;
8
11
  export declare function assertResolvedInsideDestination(params: {
9
12
  destinationRealDir: string;
@@ -20,7 +23,7 @@ type ArchiveOutputPathParams = {
20
23
  deadline?: ExtractionDeadline;
21
24
  };
22
25
  export declare function prepareArchiveOutputPath(params: ArchiveOutputPathParams): Promise<void>;
23
- export declare function preparePrivateArchiveOutputPath(params: ArchiveOutputPathParams, assertGuards?: () => Promise<void>): Promise<void>;
26
+ export declare function preparePrivateArchiveOutputPath(params: ArchiveOutputPathParams, assertGuards?: () => Promise<void>, destinationGuard?: ArchiveDirectoryGuard): Promise<void>;
24
27
  export declare function withStagedArchiveDestination<T>(params: {
25
28
  destinationRealDir: string;
26
29
  stagingDirPrefix?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"archive-staging.d.ts","sourceRoot":"","sources":["../src/archive-staging.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EAErB,MAAM,qBAAqB,CAAC;AAkB7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAS1F,wBAAsB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAS5F;AAED,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY5F;AAED,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BnF;AA0BD,wBAAsB,+BAA+B,CAAC,MAAM,EAAE;IAC5D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;AAiBD,KAAK,uBAAuB,GAAG;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;AAED,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,uBAAuB,EAAE,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAClE,OAAO,CAAC,IAAI,CAAC,CAEf;AA8GD,wBAAsB,4BAA4B,CAAC,CAAC,EAAE,MAAM,EAAE;IAC5D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CACzC,GAAG,OAAO,CAAC,CAAC,CAAC,CA6Bb;AAED,OAAO,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAC;AAEvE,wBAAgB,kCAAkC,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,CAE7F"}
1
+ {"version":3,"file":"archive-staging.d.ts","sourceRoot":"","sources":["../src/archive-staging.ts"],"names":[],"mappings":"AAAA,OAAe,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EAErB,MAAM,qBAAqB,CAAC;AAiB7B,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAMrE,OAAO,EAAE,oBAAoB,EAAE,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAS1F,wBAAsB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAY9F;AAED,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY9F;AAED,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA2CpG;AAED,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnF;AA0BD,wBAAsB,+BAA+B,CAAC,MAAM,EAAE;IAC5D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhB;AAiBD,KAAK,uBAAuB,GAAG;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAkBF,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;AAED,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,uBAAuB,EAAE,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACnE,gBAAgB,CAAC,EAAE,qBAAqB,GACvC,OAAO,CAAC,IAAI,CAAC,CAOf;AAkHD,wBAAsB,4BAA4B,CAAC,CAAC,EAAE,MAAM,EAAE;IAC5D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CACzC,GAAG,OAAO,CAAC,CAAC,CAAC,CAiCb;AAED,OAAO,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAC;AAEvE,wBAAgB,kCAAkC,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,CAE7F"}
@@ -1,3 +1,4 @@
1
+ import fsSync, {} from "node:fs";
1
2
  import fs from "node:fs/promises";
2
3
  import path from "node:path";
3
4
  import { assertAsyncDirectoryGuard, createAsyncDirectoryGuard, } from "./directory-guard.js";
@@ -12,6 +13,9 @@ import { getFsSafeTestHooks } from "./test-hooks.js";
12
13
  import { mkdirPathComponentsWithGuards } from "./guarded-mkdir.js";
13
14
  import { expandRelativePathWithHome } from "./root-context.js";
14
15
  import { resolveRootPath } from "./root-path.js";
16
+ import { inspectFileIdentitySync } from "./strict-file-identity.js";
17
+ import { assertNoWindowsPathAlias } from "./windows-path-alias.js";
18
+ import { realpathSync } from "./realpath.js";
15
19
  const ERROR_ARCHIVE_ENTRY_TRAVERSES_SYMLINK = "archive entry traverses symlink in destination";
16
20
  const ARCHIVE_STAGING_MODE = 0o700;
17
21
  function checkExtractionDeadline(deadline) {
@@ -22,8 +26,11 @@ function symlinkTraversalError(originalPath) {
22
26
  return new ArchiveSecurityError("destination-symlink-traversal", `${ERROR_ARCHIVE_ENTRY_TRAVERSES_SYMLINK}: ${formatErrorDetail(originalPath)}`);
23
27
  }
24
28
  export async function createDirectoryIdentityGuard(dir) {
29
+ assertNoWindowsPathAlias(dir);
25
30
  try {
26
- return await createAsyncDirectoryGuard(dir);
31
+ const guard = await createAsyncDirectoryGuard(dir, { bigint: true });
32
+ assertNoWindowsPathAlias(guard.realPath);
33
+ return guard;
27
34
  }
28
35
  catch (err) {
29
36
  if (err instanceof FsSafeError && err.code === "not-file") {
@@ -37,32 +44,52 @@ export async function assertDirectoryIdentityGuard(guard) {
37
44
  await assertAsyncDirectoryGuard(guard);
38
45
  }
39
46
  catch (err) {
47
+ if (err instanceof FsSafeError || isNotFoundPathError(err)) {
48
+ throw new ArchiveSecurityError("destination-symlink-traversal", "archive destination changed during extraction");
49
+ }
50
+ throw err;
51
+ }
52
+ }
53
+ export async function prepareArchiveDestinationGuard(destDir) {
54
+ assertNoWindowsPathAlias(destDir);
55
+ let stat;
56
+ try {
57
+ stat = inspectFileIdentitySync(() => {
58
+ const observed = fsSync.lstatSync(destDir, { bigint: true });
59
+ if (observed.isSymbolicLink()) {
60
+ throw new ArchiveSecurityError("destination-symlink", "archive destination is a symlink");
61
+ }
62
+ if (!observed.isDirectory()) {
63
+ throw new ArchiveSecurityError("destination-not-directory", "archive destination is not a directory");
64
+ }
65
+ return observed;
66
+ });
67
+ }
68
+ catch (err) {
69
+ if (err instanceof ArchiveSecurityError)
70
+ throw err;
40
71
  if (err instanceof FsSafeError) {
41
72
  throw new ArchiveSecurityError("destination-symlink-traversal", "archive destination changed during extraction");
42
73
  }
43
74
  throw err;
44
75
  }
76
+ const realPath = realpathSync.native(destDir);
77
+ assertNoWindowsPathAlias(realPath);
78
+ const guard = { dir: destDir, realPath, stat };
79
+ try {
80
+ inspectFileIdentitySync(() => fsSync.statSync(realPath, { bigint: true }), stat);
81
+ inspectFileIdentitySync(() => fsSync.lstatSync(destDir, { bigint: true }), stat);
82
+ }
83
+ catch (err) {
84
+ if (err instanceof FsSafeError) {
85
+ throw new ArchiveSecurityError("destination-symlink-traversal", "archive destination changed during extraction");
86
+ }
87
+ throw err;
88
+ }
89
+ return guard;
45
90
  }
46
91
  export async function prepareArchiveDestinationDir(destDir) {
47
- const stat = await fs.lstat(destDir);
48
- if (stat.isSymbolicLink()) {
49
- throw new ArchiveSecurityError("destination-symlink", "archive destination is a symlink");
50
- }
51
- if (!stat.isDirectory()) {
52
- throw new ArchiveSecurityError("destination-not-directory", "archive destination is not a directory");
53
- }
54
- const realPath = await fs.realpath(destDir);
55
- const realStat = await fs.stat(realPath);
56
- const postStat = await fs.lstat(destDir);
57
- if (realStat.dev !== stat.dev ||
58
- realStat.ino !== stat.ino ||
59
- postStat.isSymbolicLink() ||
60
- !postStat.isDirectory() ||
61
- postStat.dev !== stat.dev ||
62
- postStat.ino !== stat.ino) {
63
- throw new ArchiveSecurityError("destination-symlink-traversal", "archive destination changed during extraction");
64
- }
65
- return realPath;
92
+ return (await prepareArchiveDestinationGuard(destDir)).realPath;
66
93
  }
67
94
  async function assertNoSymlinkTraversal(params) {
68
95
  const parts = params.relPath.split(/[\\/]+/).filter(Boolean);
@@ -71,7 +98,7 @@ async function assertNoSymlinkTraversal(params) {
71
98
  current = path.join(current, part);
72
99
  let stat;
73
100
  try {
74
- stat = await fs.lstat(current);
101
+ stat = fsSync.lstatSync(current);
75
102
  }
76
103
  catch (err) {
77
104
  if (isNotFoundPathError(err)) {
@@ -85,9 +112,14 @@ async function assertNoSymlinkTraversal(params) {
85
112
  }
86
113
  }
87
114
  export async function assertResolvedInsideDestination(params) {
115
+ const destinationRealDir = params.destinationRealDir;
116
+ const targetPath = params.targetPath;
117
+ const originalPath = params.originalPath;
118
+ assertNoWindowsPathAlias(destinationRealDir);
119
+ assertNoWindowsPathAlias(targetPath);
88
120
  let resolved;
89
121
  try {
90
- resolved = await fs.realpath(params.targetPath);
122
+ resolved = realpathSync.native(targetPath);
91
123
  }
92
124
  catch (err) {
93
125
  if (isNotFoundPathError(err)) {
@@ -95,8 +127,9 @@ export async function assertResolvedInsideDestination(params) {
95
127
  }
96
128
  throw err;
97
129
  }
98
- if (!isPathInside(params.destinationRealDir, resolved)) {
99
- throw symlinkTraversalError(params.originalPath);
130
+ assertNoWindowsPathAlias(resolved);
131
+ if (!isPathInside(destinationRealDir, resolved)) {
132
+ throw symlinkTraversalError(originalPath);
100
133
  }
101
134
  }
102
135
  async function mkdirArchiveOutput(params) {
@@ -110,14 +143,28 @@ async function mkdirArchiveOutput(params) {
110
143
  throw error;
111
144
  }
112
145
  }
146
+ function ownArchiveOutputPathParams(params) {
147
+ const deadline = params.deadline;
148
+ checkExtractionDeadline(deadline);
149
+ const destinationDir = params.destinationDir;
150
+ const destinationRealDir = params.destinationRealDir;
151
+ const relPath = params.relPath;
152
+ const outPath = params.outPath;
153
+ const originalPath = params.originalPath;
154
+ const isDirectory = params.isDirectory;
155
+ assertNoWindowsPathAlias(destinationDir);
156
+ assertNoWindowsPathAlias(destinationRealDir);
157
+ assertNoWindowsPathAlias(relPath, "relative");
158
+ assertNoWindowsPathAlias(outPath);
159
+ return { destinationDir, destinationRealDir, relPath, outPath, originalPath, isDirectory, deadline };
160
+ }
113
161
  export async function prepareArchiveOutputPath(params) {
114
- await prepareOutputPath(params);
162
+ await prepareOutputPath(ownArchiveOutputPathParams(params));
115
163
  }
116
- export async function preparePrivateArchiveOutputPath(params, assertGuards) {
117
- await prepareOutputPath(params, assertGuards, true);
164
+ export async function preparePrivateArchiveOutputPath(params, assertGuards, destinationGuard) {
165
+ await prepareOutputPath(ownArchiveOutputPathParams(params), assertGuards, true, destinationGuard);
118
166
  }
119
- async function prepareOutputPath(params, assertGuards, privateWorkingMode = false) {
120
- checkExtractionDeadline(params.deadline);
167
+ async function prepareOutputPath(params, assertGuards, privateWorkingMode = false, existingDestinationGuard) {
121
168
  const targetRoot = privateWorkingMode ? {
122
169
  async mkdir(relativePath) {
123
170
  // Retain Root.mkdir's strict alias admission before the shared traversal,
@@ -136,16 +183,24 @@ async function prepareOutputPath(params, assertGuards, privateWorkingMode = fals
136
183
  mode: 0o700,
137
184
  rejectSymlinks: true,
138
185
  beforeComponent: async () => {
139
- await assertDirectoryIdentityGuard(destinationGuard);
140
- checkExtractionDeadline(params.deadline);
141
- await assertGuards?.();
186
+ await assertOutputGuards();
142
187
  checkExtractionDeadline(params.deadline);
143
188
  },
144
189
  });
145
190
  },
146
191
  } : await root(params.destinationRealDir);
147
192
  checkExtractionDeadline(params.deadline);
148
- const destinationGuard = await createDirectoryIdentityGuard(params.destinationRealDir);
193
+ const destinationGuard = existingDestinationGuard ?? await createDirectoryIdentityGuard(params.destinationRealDir);
194
+ const assertOutputGuards = async () => {
195
+ // The merge's callback verifies this same original destination guard.
196
+ if (existingDestinationGuard && assertGuards)
197
+ await assertGuards();
198
+ else {
199
+ await assertDirectoryIdentityGuard(destinationGuard);
200
+ checkExtractionDeadline(params.deadline);
201
+ await assertGuards?.();
202
+ }
203
+ };
149
204
  checkExtractionDeadline(params.deadline);
150
205
  const relPath = params.relPath.split(path.sep).join(path.posix.sep);
151
206
  await assertNoSymlinkTraversal({
@@ -158,9 +213,7 @@ async function prepareOutputPath(params, assertGuards, privateWorkingMode = fals
158
213
  await getFsSafeTestHooks()?.beforeArchiveOutputMutation?.("mkdir", params.outPath);
159
214
  checkExtractionDeadline(params.deadline);
160
215
  await ownExtractionDestinationMutation(params.deadline, async () => {
161
- await assertDirectoryIdentityGuard(destinationGuard);
162
- checkExtractionDeadline(params.deadline);
163
- await assertGuards?.();
216
+ await assertOutputGuards();
164
217
  checkExtractionDeadline(params.deadline);
165
218
  await mkdirArchiveOutput({
166
219
  targetRoot,
@@ -184,9 +237,7 @@ async function prepareOutputPath(params, assertGuards, privateWorkingMode = fals
184
237
  await getFsSafeTestHooks()?.beforeArchiveOutputMutation?.("mkdir", path.dirname(params.outPath));
185
238
  checkExtractionDeadline(params.deadline);
186
239
  await ownExtractionDestinationMutation(params.deadline, async () => {
187
- await assertDirectoryIdentityGuard(destinationGuard);
188
- checkExtractionDeadline(params.deadline);
189
- await assertGuards?.();
240
+ await assertOutputGuards();
190
241
  checkExtractionDeadline(params.deadline);
191
242
  await mkdirArchiveOutput({
192
243
  targetRoot,
@@ -206,6 +257,7 @@ async function prepareOutputPath(params, assertGuards, privateWorkingMode = fals
206
257
  checkExtractionDeadline(params.deadline);
207
258
  }
208
259
  function assertSafeArchiveStagingPrefix(prefix) {
260
+ assertNoWindowsPathAlias(prefix, "relative");
209
261
  if (!prefix ||
210
262
  prefix === "." ||
211
263
  prefix === ".." ||
@@ -217,16 +269,22 @@ function assertSafeArchiveStagingPrefix(prefix) {
217
269
  return prefix;
218
270
  }
219
271
  export async function withStagedArchiveDestination(params) {
272
+ const destinationRealDir = params.destinationRealDir;
273
+ assertNoWindowsPathAlias(destinationRealDir);
220
274
  const stagingRoot = resolveSecureTempRoot({
221
275
  fallbackPrefix: "fs-safe-archive",
222
276
  unsafeFallbackLabel: "archive staging temp dir",
223
277
  warn: () => undefined,
224
278
  });
225
- if (isPathInside(params.destinationRealDir, stagingRoot)) {
279
+ assertNoWindowsPathAlias(stagingRoot);
280
+ if (isPathInside(destinationRealDir, stagingRoot)) {
226
281
  throw new Error(`archive staging root must be outside destination: ${stagingRoot}`);
227
282
  }
228
- const stagingPrefix = assertSafeArchiveStagingPrefix(params.stagingDirPrefix ?? "fs-safe-archive-");
229
- const stagingDir = await fs.mkdtemp(path.join(stagingRoot, stagingPrefix));
283
+ const stagingDirPrefix = params.stagingDirPrefix;
284
+ const stagingPrefix = assertSafeArchiveStagingPrefix(stagingDirPrefix ?? "fs-safe-archive-");
285
+ const stagingPathPrefix = path.join(stagingRoot, stagingPrefix);
286
+ assertNoWindowsPathAlias(stagingPathPrefix);
287
+ const stagingDir = await fs.mkdtemp(stagingPathPrefix);
230
288
  const stagingGuard = await createDirectoryIdentityGuard(stagingDir);
231
289
  try {
232
290
  await fs.chmod(stagingDir, ARCHIVE_STAGING_MODE).catch(() => undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"archive-tar-inspect.d.ts","sourceRoot":"","sources":["../src/archive-tar-inspect.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAOrF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,qBAAqB,EAC/D,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AAE3F,2FAA2F;AAC3F,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CA2C/G"}
1
+ {"version":3,"file":"archive-tar-inspect.d.ts","sourceRoot":"","sources":["../src/archive-tar-inspect.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQrF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,qBAAqB,EAC/D,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AAE3F,2FAA2F;AAC3F,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CA6C/G"}
@@ -8,14 +8,17 @@ import { resolveArchiveFilteredEntryPolicy } from "./archive-policy.js";
8
8
  import { createTarEntryPlanner } from "./archive-tar.js";
9
9
  import { inspectTar } from "./archive-tar-stream.js";
10
10
  import { getNativeBinding } from "./native.js";
11
+ import { assertNoWindowsPathAlias } from "./windows-path-alias.js";
11
12
  /** Complete TAR/gzip admission and zero-strip extraction policy, without output writes. */
12
13
  export async function inspectTarArchive(params) {
14
+ const archivePath = params.archivePath;
13
15
  const onFiltered = resolveArchiveFilteredEntryPolicy(params.onFiltered);
14
16
  const limits = resolveExtractLimits(params.limits);
15
17
  const tarLimits = resolveTarMeterLimits(limits);
16
18
  const native = getNativeBinding();
19
+ assertNoWindowsPathAlias(archivePath, "filesystem", "archive source uses a Windows filesystem namespace alias");
17
20
  return await withExtractionDeadline(params.timeoutMs, "inspect tar", async (deadline) => {
18
- const staged = await stageArchiveFileForExtraction({ archivePath: params.archivePath, limits, deadline });
21
+ const staged = await stageArchiveFileForExtraction({ archivePath, limits, deadline });
19
22
  try {
20
23
  // Staging closes descriptors asynchronously; expiry there must not start a decoder.
21
24
  deadline.check();